From 7c4f817d96c9e8efbaacddc113c51b207d777d51 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Mon, 26 Nov 2018 18:51:52 -0800 Subject: [PATCH] WIP: optimizations --- demo2/package-lock.json | 72 ++++++++++++++++++++--------------------- demo2/pathfinder.ts | 2 ++ demo2/stencil.vs.glsl | 8 +++-- 3 files changed, 44 insertions(+), 38 deletions(-) diff --git a/demo2/package-lock.json b/demo2/package-lock.json index e87f2e10..bc1fd1f7 100644 --- a/demo2/package-lock.json +++ b/demo2/package-lock.json @@ -8,7 +8,7 @@ "integrity": "sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==", "dev": true, "requires": { - "commander": "2.19.0" + "commander": "^2.15.1" } }, "@types/webgl2": { @@ -45,9 +45,9 @@ "integrity": "sha1-3RqswsF/yyvT/DJBHGYz0Ne2D9Q=", "dev": true, "requires": { - "glsl-token-inject-block": "1.1.0", - "glsl-token-string": "1.0.1", - "glsl-tokenizer": "2.1.5" + "glsl-token-inject-block": "^1.0.0", + "glsl-token-string": "^1.0.1", + "glsl-tokenizer": "^2.0.2" } }, "glsl-resolve": { @@ -56,8 +56,8 @@ "integrity": "sha1-iUvvc5ENeSyBtRQxgANdCnivdtM=", "dev": true, "requires": { - "resolve": "0.6.3", - "xtend": "2.2.0" + "resolve": "^0.6.1", + "xtend": "^2.1.2" }, "dependencies": { "resolve": { @@ -80,7 +80,7 @@ "integrity": "sha1-y4kqqVmTYjFyhHDU90AySJaX+p0=", "dev": true, "requires": { - "glsl-tokenizer": "2.1.5" + "glsl-tokenizer": "^2.0.0" } }, "glsl-token-depth": { @@ -95,10 +95,10 @@ "integrity": "sha1-D8kKsyYYa4L1l7LnfcniHvzTIHY=", "dev": true, "requires": { - "glsl-token-assignments": "2.0.2", - "glsl-token-depth": "1.1.2", - "glsl-token-properties": "1.0.1", - "glsl-token-scope": "1.1.2" + "glsl-token-assignments": "^2.0.0", + "glsl-token-depth": "^1.1.0", + "glsl-token-properties": "^1.0.0", + "glsl-token-scope": "^1.1.0" } }, "glsl-token-inject-block": { @@ -137,7 +137,7 @@ "integrity": "sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==", "dev": true, "requires": { - "through2": "0.6.5" + "through2": "^0.6.3" } }, "glslify-bundle": { @@ -146,15 +146,15 @@ "integrity": "sha512-plaAOQPv62M1r3OsWf2UbjN0hUYAB7Aph5bfH58VxJZJhloRNbxOL9tl/7H71K7OLJoSJ2ZqWOKk3ttQ6wy24A==", "dev": true, "requires": { - "glsl-inject-defines": "1.0.3", - "glsl-token-defines": "1.0.0", - "glsl-token-depth": "1.1.2", - "glsl-token-descope": "1.0.2", - "glsl-token-scope": "1.1.2", - "glsl-token-string": "1.0.1", - "glsl-token-whitespace-trim": "1.0.0", - "glsl-tokenizer": "2.1.5", - "murmurhash-js": "1.0.0", + "glsl-inject-defines": "^1.0.1", + "glsl-token-defines": "^1.0.0", + "glsl-token-depth": "^1.1.1", + "glsl-token-descope": "^1.0.2", + "glsl-token-scope": "^1.1.1", + "glsl-token-string": "^1.0.1", + "glsl-token-whitespace-trim": "^1.0.0", + "glsl-tokenizer": "^2.0.2", + "murmurhash-js": "^1.0.0", "shallow-copy": "0.0.1" } }, @@ -164,14 +164,14 @@ "integrity": "sha512-Ogm179MCazwIRyEqs3g3EOY4Y3XIAa0yl8J5RE9rJC6QH1w8weVOp2RZu0mvnYy/2xIas1w166YR2eZdDkWQxg==", "dev": true, "requires": { - "@choojs/findup": "0.2.1", - "events": "1.1.1", + "@choojs/findup": "^0.2.0", + "events": "^1.0.2", "glsl-resolve": "0.0.1", - "glsl-tokenizer": "2.1.5", - "graceful-fs": "4.1.15", - "inherits": "2.0.3", + "glsl-tokenizer": "^2.0.0", + "graceful-fs": "^4.1.2", + "inherits": "^2.0.1", "map-limit": "0.0.1", - "resolve": "1.8.1" + "resolve": "^1.0.0" } }, "graceful-fs": { @@ -198,7 +198,7 @@ "integrity": "sha1-63lhAxwPDo0AG/LVb6toXViCLzg=", "dev": true, "requires": { - "once": "1.3.3" + "once": "~1.3.0" } }, "murmurhash-js": { @@ -213,7 +213,7 @@ "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "parse-color": { @@ -221,7 +221,7 @@ "resolved": "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz", "integrity": "sha1-e3SLlag/A/FqlPU15S1/PZRlhhk=", "requires": { - "color-convert": "0.5.3" + "color-convert": "~0.5.0" } }, "path-parse": { @@ -236,10 +236,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "resolve": { @@ -248,7 +248,7 @@ "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", "dev": true, "requires": { - "path-parse": "1.0.6" + "path-parse": "^1.0.5" } }, "shallow-copy": { @@ -274,8 +274,8 @@ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" }, "dependencies": { "xtend": { diff --git a/demo2/pathfinder.ts b/demo2/pathfinder.ts index c7645b0a..e9eb65aa 100644 --- a/demo2/pathfinder.ts +++ b/demo2/pathfinder.ts @@ -246,6 +246,7 @@ class App { gl.drawArraysInstanced(gl.TRIANGLE_FAN, 0, 4, unwrapNull(this.primitiveCount)); gl.disable(gl.BLEND); + /* // Read back stencil and dump it. const totalStencilFramebufferSize = STENCIL_FRAMEBUFFER_SIZE.width * STENCIL_FRAMEBUFFER_SIZE.height * 4; @@ -272,6 +273,7 @@ class App { stencilDumpCanvasContext.putImageData(stencilDumpImageData, 0, 0); document.body.appendChild(stencilDumpCanvas); //console.log(stencilData); + */ // Cover. gl.bindFramebuffer(gl.FRAMEBUFFER, null); diff --git a/demo2/stencil.vs.glsl b/demo2/stencil.vs.glsl index b4bcf727..a494476d 100644 --- a/demo2/stencil.vs.glsl +++ b/demo2/stencil.vs.glsl @@ -37,7 +37,8 @@ void main() { vec2 from = aFrom, ctrl = aCtrl, to = aTo; vec2 dilation, position; - bool zeroArea = abs(from.x - to.x) < 0.01; + bool zeroArea = abs(from.x - to.x) < 0.1 || + abs(uTileSize.y - min(min(from.y, to.y), ctrl.y)) < 0.1; if (aTessCoord.x < 0.5) { position.x = min(min(from.x, to.x), ctrl.x); dilation.x = zeroArea ? 0.0 : -0.5; @@ -58,5 +59,8 @@ void main() { vCtrl = ctrl - position; vTo = to - position; - gl_Position = vec4((tileOrigin + position) / uFramebufferSize * 2.0 - 1.0, 0.0, 1.0); + if (zeroArea) + gl_Position = vec4(0.0); + else + gl_Position = vec4((tileOrigin + position) / uFramebufferSize * 2.0 - 1.0, 0.0, 1.0); }