From 99b43fadb9a65882960375fe29dd94ed4adf8d05 Mon Sep 17 00:00:00 2001 From: danchitnis Date: Sat, 2 Jan 2021 20:15:32 +0000 Subject: [PATCH 1/2] log10 --- benchmark/bench1.js | 2 +- dist/webglplot.d.ts | 10 ++++++++++ dist/webglplot.d.ts.map | 2 +- dist/webglplot.esm.js | 11 ++++++++++- dist/webglplot.js | 11 ++++++++++- dist/webglplot.js.map | 2 +- dist/webglplot.umd.js | 11 ++++++++++- src/webglplot.ts | 24 +++++++++++++++++++++++- 8 files changed, 66 insertions(+), 7 deletions(-) diff --git a/benchmark/bench1.js b/benchmark/bench1.js index 46df319..8babe5b 100644 --- a/benchmark/bench1.js +++ b/benchmark/bench1.js @@ -57,7 +57,7 @@ function update() { } //console.log(yFinal); - wglp.lines.forEach((line) => { + wglp.linesData.forEach((line) => { for (let i = 0; i < yFinal.length; i++) { line.setY(i, yFinal[i]); } diff --git a/dist/webglplot.d.ts b/dist/webglplot.d.ts index f43cf7c..d92f099 100644 --- a/dist/webglplot.d.ts +++ b/dist/webglplot.d.ts @@ -52,6 +52,16 @@ export default class WebGLPlot { * @default = 0 */ gOffsetY: number; + /** + * Global log10 of x-axis + * @default = false + */ + gLog10X: boolean; + /** + * Global log10 of y-axis + * @default = false + */ + gLog10Y: boolean; /** * collection of data lines in the plot */ diff --git a/dist/webglplot.d.ts.map b/dist/webglplot.d.ts.map index e611dc9..2ba2263 100644 --- a/dist/webglplot.d.ts.map +++ b/dist/webglplot.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"webglplot.d.ts","sourceRoot":"","sources":["../src/webglplot.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAEvD,aAAK,eAAe,GAAG;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,SAAS,GAAG,kBAAkB,GAAG,WAAW,CAAC;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS;IAC5B;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAE9C;;;OAGG;IACI,OAAO,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACI,OAAO,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACI,QAAQ,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACI,QAAQ,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACI,QAAQ,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,OAAO,CAAC,UAAU,CAAkB;IAEpC;;OAEG;IACH,OAAO,CAAC,SAAS,CAAkB;IAEnC,IAAI,SAAS,IAAI,aAAa,EAAE,CAE/B;IAED,IAAI,QAAQ,IAAI,aAAa,EAAE,CAE9B;IAED,OAAO,CAAC,YAAY,CAAe;IAEnC;;OAEG;IACI,KAAK,UAAS;IAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;gBACS,MAAM,EAAE,iBAAiB,GAAG,eAAe,EAAE,OAAO,CAAC,EAAE,eAAe;IA0ClF;;OAEG;IACH,OAAO,CAAC,WAAW;IAmCZ,MAAM,IAAI,IAAI;IAKd,KAAK,IAAI,IAAI;IAMpB;;;;;;;;;OASG;IACH,OAAO,CAAC,QAAQ;IAaT,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,IAAI;IAK3D,OAAO,SALW,SAAS,GAAG,SAAS,GAAG,UAAU,KAAG,IAAI,CAKhC;IAE3B,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,IAAI;IAKjE,OAAO,CAAC,mBAAmB;IAmC3B;;OAEG;IACI,WAAW,IAAI,IAAI;IAI1B;;OAEG;IACI,cAAc,IAAI,IAAI;IAK7B;;OAEG;IACI,eAAe,IAAI,IAAI;IAI9B;;OAEG;IACI,cAAc,IAAI,IAAI;IAI7B;;;;;;OAMG;IACI,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAIjE,OAAO,CAAC,GAAG;CAKZ"} \ No newline at end of file +{"version":3,"file":"webglplot.d.ts","sourceRoot":"","sources":["../src/webglplot.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAEvD,aAAK,eAAe,GAAG;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,SAAS,GAAG,kBAAkB,GAAG,WAAW,CAAC;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS;IAC5B;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAE9C;;;OAGG;IACI,OAAO,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACI,OAAO,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACI,QAAQ,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACI,QAAQ,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACI,QAAQ,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACI,OAAO,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACI,OAAO,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,OAAO,CAAC,UAAU,CAAkB;IAEpC;;OAEG;IACH,OAAO,CAAC,SAAS,CAAkB;IAEnC,IAAI,SAAS,IAAI,aAAa,EAAE,CAE/B;IAED,IAAI,QAAQ,IAAI,aAAa,EAAE,CAE9B;IAED,OAAO,CAAC,YAAY,CAAe;IAEnC;;OAEG;IACI,KAAK,UAAS;IAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;gBACS,MAAM,EAAE,iBAAiB,GAAG,eAAe,EAAE,OAAO,CAAC,EAAE,eAAe;IA4ClF;;OAEG;IACH,OAAO,CAAC,WAAW;IAsCZ,MAAM,IAAI,IAAI;IAKd,KAAK,IAAI,IAAI;IAMpB;;;;;;;;;OASG;IACH,OAAO,CAAC,QAAQ;IAaT,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,IAAI;IAK3D,OAAO,SALW,SAAS,GAAG,SAAS,GAAG,UAAU,KAAG,IAAI,CAKhC;IAE3B,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,IAAI;IAKjE,OAAO,CAAC,mBAAmB;IAwC3B;;OAEG;IACI,WAAW,IAAI,IAAI;IAI1B;;OAEG;IACI,cAAc,IAAI,IAAI;IAK7B;;OAEG;IACI,eAAe,IAAI,IAAI;IAI9B;;OAEG;IACI,cAAc,IAAI,IAAI;IAI7B;;;;;;OAMG;IACI,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAIjE,OAAO,CAAC,GAAG;CAKZ"} \ No newline at end of file diff --git a/dist/webglplot.esm.js b/dist/webglplot.esm.js index f7954e8..e494560 100644 --- a/dist/webglplot.esm.js +++ b/dist/webglplot.esm.js @@ -353,6 +353,8 @@ class WebGLPlot { this.gXYratio = 1; this.gOffsetX = 0; this.gOffsetY = 0; + this.gLog10X = false; + this.gLog10Y = false; // Clear the color this.webgl.clear(this.webgl.COLOR_BUFFER_BIT); // Set the view port @@ -383,6 +385,8 @@ class WebGLPlot { ])); const uoffset = webgl.getUniformLocation(this.progThinLine, "uoffset"); webgl.uniform2fv(uoffset, new Float32Array([line.offsetX + this.gOffsetX, line.offsetY + this.gOffsetY])); + const isLog = webgl.getUniformLocation(this.progThinLine, "is_log"); + webgl.uniform2iv(isLog, new Int32Array([this.gLog10X ? 1 : 0, this.gLog10Y ? 1 : 0])); const uColor = webgl.getUniformLocation(this.progThinLine, "uColor"); webgl.uniform4fv(uColor, [line.color.r, line.color.g, line.color.b, line.color.a]); webgl.bufferData(webgl.ARRAY_BUFFER, line.xy, webgl.STREAM_DRAW); @@ -432,8 +436,13 @@ class WebGLPlot { attribute vec2 coordinates; uniform mat2 uscale; uniform vec2 uoffset; + uniform ivec2 is_log; + void main(void) { - gl_Position = vec4(uscale*coordinates + uoffset, 0.0, 1.0); + float x = (is_log[0]==1) ? log(coordinates.x) : coordinates.x; + float y = (is_log[1]==1) ? log(coordinates.y) : coordinates.y; + vec2 line = vec2(x, y); + gl_Position = vec4(uscale*line + uoffset, 0.0, 1.0); }`; // Create a vertex shader object const vertShader = this.webgl.createShader(this.webgl.VERTEX_SHADER); diff --git a/dist/webglplot.js b/dist/webglplot.js index 54f10ee..fc8c441 100644 --- a/dist/webglplot.js +++ b/dist/webglplot.js @@ -84,6 +84,8 @@ export default class WebGLPlot { this.gXYratio = 1; this.gOffsetX = 0; this.gOffsetY = 0; + this.gLog10X = false; + this.gLog10Y = false; // Clear the color this.webgl.clear(this.webgl.COLOR_BUFFER_BIT); // Set the view port @@ -114,6 +116,8 @@ export default class WebGLPlot { ])); const uoffset = webgl.getUniformLocation(this.progThinLine, "uoffset"); webgl.uniform2fv(uoffset, new Float32Array([line.offsetX + this.gOffsetX, line.offsetY + this.gOffsetY])); + const isLog = webgl.getUniformLocation(this.progThinLine, "is_log"); + webgl.uniform2iv(isLog, new Int32Array([this.gLog10X ? 1 : 0, this.gLog10Y ? 1 : 0])); const uColor = webgl.getUniformLocation(this.progThinLine, "uColor"); webgl.uniform4fv(uColor, [line.color.r, line.color.g, line.color.b, line.color.a]); webgl.bufferData(webgl.ARRAY_BUFFER, line.xy, webgl.STREAM_DRAW); @@ -163,8 +167,13 @@ export default class WebGLPlot { attribute vec2 coordinates; uniform mat2 uscale; uniform vec2 uoffset; + uniform ivec2 is_log; + void main(void) { - gl_Position = vec4(uscale*coordinates + uoffset, 0.0, 1.0); + float x = (is_log[0]==1) ? log(coordinates.x) : coordinates.x; + float y = (is_log[1]==1) ? log(coordinates.y) : coordinates.y; + vec2 line = vec2(x, y); + gl_Position = vec4(uscale*line + uoffset, 0.0, 1.0); }`; // Create a vertex shader object const vertShader = this.webgl.createShader(this.webgl.VERTEX_SHADER); diff --git a/dist/webglplot.js.map b/dist/webglplot.js.map index fa15128..c0c7e8f 100644 --- a/dist/webglplot.js.map +++ b/dist/webglplot.js.map @@ -1 +1 @@ -{"version":3,"file":"webglplot.js","sourceRoot":"","sources":["../src/webglplot.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"webglplot.js","sourceRoot":"","sources":["../src/webglplot.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/webglplot.umd.js b/dist/webglplot.umd.js index a3550c7..135dde1 100644 --- a/dist/webglplot.umd.js +++ b/dist/webglplot.umd.js @@ -359,6 +359,8 @@ this.gXYratio = 1; this.gOffsetX = 0; this.gOffsetY = 0; + this.gLog10X = false; + this.gLog10Y = false; // Clear the color this.webgl.clear(this.webgl.COLOR_BUFFER_BIT); // Set the view port @@ -389,6 +391,8 @@ ])); const uoffset = webgl.getUniformLocation(this.progThinLine, "uoffset"); webgl.uniform2fv(uoffset, new Float32Array([line.offsetX + this.gOffsetX, line.offsetY + this.gOffsetY])); + const isLog = webgl.getUniformLocation(this.progThinLine, "is_log"); + webgl.uniform2iv(isLog, new Int32Array([this.gLog10X ? 1 : 0, this.gLog10Y ? 1 : 0])); const uColor = webgl.getUniformLocation(this.progThinLine, "uColor"); webgl.uniform4fv(uColor, [line.color.r, line.color.g, line.color.b, line.color.a]); webgl.bufferData(webgl.ARRAY_BUFFER, line.xy, webgl.STREAM_DRAW); @@ -438,8 +442,13 @@ attribute vec2 coordinates; uniform mat2 uscale; uniform vec2 uoffset; + uniform ivec2 is_log; + void main(void) { - gl_Position = vec4(uscale*coordinates + uoffset, 0.0, 1.0); + float x = (is_log[0]==1) ? log(coordinates.x) : coordinates.x; + float y = (is_log[1]==1) ? log(coordinates.y) : coordinates.y; + vec2 line = vec2(x, y); + gl_Position = vec4(uscale*line + uoffset, 0.0, 1.0); }`; // Create a vertex shader object const vertShader = this.webgl.createShader(this.webgl.VERTEX_SHADER); diff --git a/src/webglplot.ts b/src/webglplot.ts index 8215152..0b1b563 100644 --- a/src/webglplot.ts +++ b/src/webglplot.ts @@ -62,6 +62,18 @@ export default class WebGLPlot { */ public gOffsetY: number; + /** + * Global log10 of x-axis + * @default = false + */ + public gLog10X: boolean; + + /** + * Global log10 of y-axis + * @default = false + */ + public gLog10Y: boolean; + /** * collection of data lines in the plot */ @@ -155,6 +167,8 @@ export default class WebGLPlot { this.gXYratio = 1; this.gOffsetX = 0; this.gOffsetY = 0; + this.gLog10X = false; + this.gLog10Y = false; // Clear the color this.webgl.clear(this.webgl.COLOR_BUFFER_BIT); @@ -195,6 +209,9 @@ export default class WebGLPlot { new Float32Array([line.offsetX + this.gOffsetX, line.offsetY + this.gOffsetY]) ); + const isLog = webgl.getUniformLocation(this.progThinLine, "is_log"); + webgl.uniform2iv(isLog, new Int32Array([this.gLog10X ? 1 : 0, this.gLog10Y ? 1 : 0])); + const uColor = webgl.getUniformLocation(this.progThinLine, "uColor"); webgl.uniform4fv(uColor, [line.color.r, line.color.g, line.color.b, line.color.a]); @@ -256,8 +273,13 @@ export default class WebGLPlot { attribute vec2 coordinates; uniform mat2 uscale; uniform vec2 uoffset; + uniform ivec2 is_log; + void main(void) { - gl_Position = vec4(uscale*coordinates + uoffset, 0.0, 1.0); + float x = (is_log[0]==1) ? log(coordinates.x) : coordinates.x; + float y = (is_log[1]==1) ? log(coordinates.y) : coordinates.y; + vec2 line = vec2(x, y); + gl_Position = vec4(uscale*line + uoffset, 0.0, 1.0); }`; // Create a vertex shader object From f4037f7742786a4fdef330f3356e69e647d96a27 Mon Sep 17 00:00:00 2001 From: danchitnis Date: Sat, 2 Jan 2021 22:39:46 +0000 Subject: [PATCH 2/2] log10 scale fix --- src/webglplot.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/webglplot.ts b/src/webglplot.ts index 0b1b563..e2e70d6 100644 --- a/src/webglplot.ts +++ b/src/webglplot.ts @@ -196,10 +196,10 @@ export default class WebGLPlot { uscale, false, new Float32Array([ - line.scaleX * this.gScaleX, + line.scaleX * this.gScaleX * (this.gLog10X ? 1 / Math.log(10) : 1), 0, 0, - line.scaleY * this.gScaleY * this.gXYratio, + line.scaleY * this.gScaleY * this.gXYratio * (this.gLog10Y ? 1 / Math.log(10) : 1), ]) );