WIP: optimizations

This commit is contained in:
Patrick Walton 2018-11-26 18:51:52 -08:00
parent eda11577c6
commit 7c4f817d96
3 changed files with 44 additions and 38 deletions

View File

@ -8,7 +8,7 @@
"integrity": "sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==", "integrity": "sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==",
"dev": true, "dev": true,
"requires": { "requires": {
"commander": "2.19.0" "commander": "^2.15.1"
} }
}, },
"@types/webgl2": { "@types/webgl2": {
@ -45,9 +45,9 @@
"integrity": "sha1-3RqswsF/yyvT/DJBHGYz0Ne2D9Q=", "integrity": "sha1-3RqswsF/yyvT/DJBHGYz0Ne2D9Q=",
"dev": true, "dev": true,
"requires": { "requires": {
"glsl-token-inject-block": "1.1.0", "glsl-token-inject-block": "^1.0.0",
"glsl-token-string": "1.0.1", "glsl-token-string": "^1.0.1",
"glsl-tokenizer": "2.1.5" "glsl-tokenizer": "^2.0.2"
} }
}, },
"glsl-resolve": { "glsl-resolve": {
@ -56,8 +56,8 @@
"integrity": "sha1-iUvvc5ENeSyBtRQxgANdCnivdtM=", "integrity": "sha1-iUvvc5ENeSyBtRQxgANdCnivdtM=",
"dev": true, "dev": true,
"requires": { "requires": {
"resolve": "0.6.3", "resolve": "^0.6.1",
"xtend": "2.2.0" "xtend": "^2.1.2"
}, },
"dependencies": { "dependencies": {
"resolve": { "resolve": {
@ -80,7 +80,7 @@
"integrity": "sha1-y4kqqVmTYjFyhHDU90AySJaX+p0=", "integrity": "sha1-y4kqqVmTYjFyhHDU90AySJaX+p0=",
"dev": true, "dev": true,
"requires": { "requires": {
"glsl-tokenizer": "2.1.5" "glsl-tokenizer": "^2.0.0"
} }
}, },
"glsl-token-depth": { "glsl-token-depth": {
@ -95,10 +95,10 @@
"integrity": "sha1-D8kKsyYYa4L1l7LnfcniHvzTIHY=", "integrity": "sha1-D8kKsyYYa4L1l7LnfcniHvzTIHY=",
"dev": true, "dev": true,
"requires": { "requires": {
"glsl-token-assignments": "2.0.2", "glsl-token-assignments": "^2.0.0",
"glsl-token-depth": "1.1.2", "glsl-token-depth": "^1.1.0",
"glsl-token-properties": "1.0.1", "glsl-token-properties": "^1.0.0",
"glsl-token-scope": "1.1.2" "glsl-token-scope": "^1.1.0"
} }
}, },
"glsl-token-inject-block": { "glsl-token-inject-block": {
@ -137,7 +137,7 @@
"integrity": "sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==", "integrity": "sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==",
"dev": true, "dev": true,
"requires": { "requires": {
"through2": "0.6.5" "through2": "^0.6.3"
} }
}, },
"glslify-bundle": { "glslify-bundle": {
@ -146,15 +146,15 @@
"integrity": "sha512-plaAOQPv62M1r3OsWf2UbjN0hUYAB7Aph5bfH58VxJZJhloRNbxOL9tl/7H71K7OLJoSJ2ZqWOKk3ttQ6wy24A==", "integrity": "sha512-plaAOQPv62M1r3OsWf2UbjN0hUYAB7Aph5bfH58VxJZJhloRNbxOL9tl/7H71K7OLJoSJ2ZqWOKk3ttQ6wy24A==",
"dev": true, "dev": true,
"requires": { "requires": {
"glsl-inject-defines": "1.0.3", "glsl-inject-defines": "^1.0.1",
"glsl-token-defines": "1.0.0", "glsl-token-defines": "^1.0.0",
"glsl-token-depth": "1.1.2", "glsl-token-depth": "^1.1.1",
"glsl-token-descope": "1.0.2", "glsl-token-descope": "^1.0.2",
"glsl-token-scope": "1.1.2", "glsl-token-scope": "^1.1.1",
"glsl-token-string": "1.0.1", "glsl-token-string": "^1.0.1",
"glsl-token-whitespace-trim": "1.0.0", "glsl-token-whitespace-trim": "^1.0.0",
"glsl-tokenizer": "2.1.5", "glsl-tokenizer": "^2.0.2",
"murmurhash-js": "1.0.0", "murmurhash-js": "^1.0.0",
"shallow-copy": "0.0.1" "shallow-copy": "0.0.1"
} }
}, },
@ -164,14 +164,14 @@
"integrity": "sha512-Ogm179MCazwIRyEqs3g3EOY4Y3XIAa0yl8J5RE9rJC6QH1w8weVOp2RZu0mvnYy/2xIas1w166YR2eZdDkWQxg==", "integrity": "sha512-Ogm179MCazwIRyEqs3g3EOY4Y3XIAa0yl8J5RE9rJC6QH1w8weVOp2RZu0mvnYy/2xIas1w166YR2eZdDkWQxg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@choojs/findup": "0.2.1", "@choojs/findup": "^0.2.0",
"events": "1.1.1", "events": "^1.0.2",
"glsl-resolve": "0.0.1", "glsl-resolve": "0.0.1",
"glsl-tokenizer": "2.1.5", "glsl-tokenizer": "^2.0.0",
"graceful-fs": "4.1.15", "graceful-fs": "^4.1.2",
"inherits": "2.0.3", "inherits": "^2.0.1",
"map-limit": "0.0.1", "map-limit": "0.0.1",
"resolve": "1.8.1" "resolve": "^1.0.0"
} }
}, },
"graceful-fs": { "graceful-fs": {
@ -198,7 +198,7 @@
"integrity": "sha1-63lhAxwPDo0AG/LVb6toXViCLzg=", "integrity": "sha1-63lhAxwPDo0AG/LVb6toXViCLzg=",
"dev": true, "dev": true,
"requires": { "requires": {
"once": "1.3.3" "once": "~1.3.0"
} }
}, },
"murmurhash-js": { "murmurhash-js": {
@ -213,7 +213,7 @@
"integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=",
"dev": true, "dev": true,
"requires": { "requires": {
"wrappy": "1.0.2" "wrappy": "1"
} }
}, },
"parse-color": { "parse-color": {
@ -221,7 +221,7 @@
"resolved": "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz", "resolved": "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz",
"integrity": "sha1-e3SLlag/A/FqlPU15S1/PZRlhhk=", "integrity": "sha1-e3SLlag/A/FqlPU15S1/PZRlhhk=",
"requires": { "requires": {
"color-convert": "0.5.3" "color-convert": "~0.5.0"
} }
}, },
"path-parse": { "path-parse": {
@ -236,10 +236,10 @@
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"dev": true, "dev": true,
"requires": { "requires": {
"core-util-is": "1.0.2", "core-util-is": "~1.0.0",
"inherits": "2.0.3", "inherits": "~2.0.1",
"isarray": "0.0.1", "isarray": "0.0.1",
"string_decoder": "0.10.31" "string_decoder": "~0.10.x"
} }
}, },
"resolve": { "resolve": {
@ -248,7 +248,7 @@
"integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
"dev": true, "dev": true,
"requires": { "requires": {
"path-parse": "1.0.6" "path-parse": "^1.0.5"
} }
}, },
"shallow-copy": { "shallow-copy": {
@ -274,8 +274,8 @@
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
"dev": true, "dev": true,
"requires": { "requires": {
"readable-stream": "1.0.34", "readable-stream": ">=1.0.33-1 <1.1.0-0",
"xtend": "4.0.1" "xtend": ">=4.0.0 <4.1.0-0"
}, },
"dependencies": { "dependencies": {
"xtend": { "xtend": {

View File

@ -246,6 +246,7 @@ class App {
gl.drawArraysInstanced(gl.TRIANGLE_FAN, 0, 4, unwrapNull(this.primitiveCount)); gl.drawArraysInstanced(gl.TRIANGLE_FAN, 0, 4, unwrapNull(this.primitiveCount));
gl.disable(gl.BLEND); gl.disable(gl.BLEND);
/*
// Read back stencil and dump it. // Read back stencil and dump it.
const totalStencilFramebufferSize = STENCIL_FRAMEBUFFER_SIZE.width * const totalStencilFramebufferSize = STENCIL_FRAMEBUFFER_SIZE.width *
STENCIL_FRAMEBUFFER_SIZE.height * 4; STENCIL_FRAMEBUFFER_SIZE.height * 4;
@ -272,6 +273,7 @@ class App {
stencilDumpCanvasContext.putImageData(stencilDumpImageData, 0, 0); stencilDumpCanvasContext.putImageData(stencilDumpImageData, 0, 0);
document.body.appendChild(stencilDumpCanvas); document.body.appendChild(stencilDumpCanvas);
//console.log(stencilData); //console.log(stencilData);
*/
// Cover. // Cover.
gl.bindFramebuffer(gl.FRAMEBUFFER, null); gl.bindFramebuffer(gl.FRAMEBUFFER, null);

View File

@ -37,7 +37,8 @@ void main() {
vec2 from = aFrom, ctrl = aCtrl, to = aTo; vec2 from = aFrom, ctrl = aCtrl, to = aTo;
vec2 dilation, position; 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) { if (aTessCoord.x < 0.5) {
position.x = min(min(from.x, to.x), ctrl.x); position.x = min(min(from.x, to.x), ctrl.x);
dilation.x = zeroArea ? 0.0 : -0.5; dilation.x = zeroArea ? 0.0 : -0.5;
@ -58,5 +59,8 @@ void main() {
vCtrl = ctrl - position; vCtrl = ctrl - position;
vTo = to - 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);
} }