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==",
"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": {

View File

@ -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);

View File

@ -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);
}