@lightningjs/renderer 2.19.0 → 2.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/exports/utils.d.ts +2 -1
- package/dist/exports/utils.js +2 -1
- package/dist/exports/utils.js.map +1 -1
- package/dist/src/core/CoreNode.js +11 -11
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.js +1 -1
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +14 -0
- package/dist/src/core/lib/WebGlContextWrapper.js +35 -0
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/textureCompression.d.ts +14 -2
- package/dist/src/core/lib/textureCompression.js +301 -65
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +2 -2
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +4 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +14 -11
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +49 -20
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +2 -7
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +18 -49
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +0 -2
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +3 -6
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -11
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +5 -10
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +5 -10
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -12
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +5 -5
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +5 -5
- package/dist/src/core/textures/Texture.d.ts +12 -5
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/main-api/Inspector.js +10 -6
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.js +1 -1
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/utils.d.ts +1 -6
- package/dist/src/utils.js +2 -9
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/exports/utils.ts +7 -1
- package/package.json +1 -1
- package/src/core/CoreNode.ts +12 -14
- package/src/core/TextureMemoryManager.ts +1 -1
- package/src/core/lib/WebGlContextWrapper.ts +49 -0
- package/src/core/lib/textureCompression.ts +416 -75
- package/src/core/renderers/CoreRenderer.ts +2 -2
- package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +16 -14
- package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +1 -1
- package/src/core/renderers/webgl/WebGlCoreRenderer.ts +53 -32
- package/src/core/renderers/webgl/WebGlCoreShader.ts +27 -75
- package/src/core/renderers/webgl/internal/ShaderUtils.ts +0 -2
- package/src/core/renderers/webgl/shaders/DefaultShader.ts +3 -6
- package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +0 -11
- package/src/core/renderers/webgl/shaders/DynamicShader.ts +5 -10
- package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +5 -10
- package/src/core/renderers/webgl/shaders/SdfShader.ts +0 -12
- package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +1 -1
- package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +1 -1
- package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +1 -1
- package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +1 -1
- package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +5 -5
- package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +1 -1
- package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +1 -1
- package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +1 -1
- package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +1 -1
- package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +5 -5
- package/src/core/textures/Texture.ts +13 -6
- package/src/main-api/Inspector.ts +10 -6
- package/src/main-api/Renderer.ts +1 -1
- package/src/utils.ts +4 -4
- package/dist/exports/canvas-shaders.d.ts +0 -10
- package/dist/exports/canvas-shaders.js +0 -27
- package/dist/exports/canvas-shaders.js.map +0 -1
- package/dist/exports/webgl-shaders.d.ts +0 -11
- package/dist/exports/webgl-shaders.js +0 -28
- package/dist/exports/webgl-shaders.js.map +0 -1
- package/dist/src/core/lib/colorCache.d.ts +0 -1
- package/dist/src/core/lib/colorCache.js +0 -19
- package/dist/src/core/lib/colorCache.js.map +0 -1
- package/dist/src/core/lib/colorParser.d.ts +0 -21
- package/dist/src/core/lib/colorParser.js +0 -72
- package/dist/src/core/lib/colorParser.js.map +0 -1
- package/dist/src/core/platforms/Platform.d.ts +0 -37
- package/dist/src/core/platforms/Platform.js +0 -22
- package/dist/src/core/platforms/Platform.js.map +0 -1
- package/dist/src/core/platforms/web/WebPlatform.d.ts +0 -9
- package/dist/src/core/platforms/web/WebPlatform.js +0 -84
- package/dist/src/core/platforms/web/WebPlatform.js.map +0 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +0 -59
- package/dist/src/core/renderers/CoreShaderNode.js +0 -113
- package/dist/src/core/renderers/CoreShaderNode.js.map +0 -1
- package/dist/src/core/renderers/CoreShaderProgram.d.ts +0 -4
- package/dist/src/core/renderers/CoreShaderProgram.js +0 -20
- package/dist/src/core/renderers/CoreShaderProgram.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +0 -35
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +0 -201
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +0 -21
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +0 -58
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +0 -16
- package/dist/src/core/renderers/canvas/CanvasTexture.js +0 -125
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +0 -12
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +0 -57
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +0 -22
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +0 -67
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +0 -56
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +0 -236
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +0 -44
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +0 -125
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +0 -136
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +0 -573
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +0 -222
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js +0 -331
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +0 -37
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +0 -218
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +0 -1
- package/dist/src/core/shaders/canvas/Border.d.ts +0 -9
- package/dist/src/core/shaders/canvas/Border.js +0 -57
- package/dist/src/core/shaders/canvas/Border.js.map +0 -1
- package/dist/src/core/shaders/canvas/HolePunch.d.ts +0 -7
- package/dist/src/core/shaders/canvas/HolePunch.js +0 -38
- package/dist/src/core/shaders/canvas/HolePunch.js.map +0 -1
- package/dist/src/core/shaders/canvas/LinearGradient.d.ts +0 -10
- package/dist/src/core/shaders/canvas/LinearGradient.js +0 -48
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +0 -1
- package/dist/src/core/shaders/canvas/RadialGradient.d.ts +0 -11
- package/dist/src/core/shaders/canvas/RadialGradient.js +0 -70
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +0 -1
- package/dist/src/core/shaders/canvas/Rounded.d.ts +0 -7
- package/dist/src/core/shaders/canvas/Rounded.js +0 -33
- package/dist/src/core/shaders/canvas/Rounded.js.map +0 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +0 -7
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +0 -43
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +0 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +0 -8
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +0 -41
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +0 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.d.ts +0 -7
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +0 -40
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +0 -1
- package/dist/src/core/shaders/canvas/Shadow.d.ts +0 -8
- package/dist/src/core/shaders/canvas/Shadow.js +0 -31
- package/dist/src/core/shaders/canvas/Shadow.js.map +0 -1
- package/dist/src/core/shaders/canvas/utils/render.d.ts +0 -5
- package/dist/src/core/shaders/canvas/utils/render.js +0 -84
- package/dist/src/core/shaders/canvas/utils/render.js.map +0 -1
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +0 -37
- package/dist/src/core/shaders/templates/BorderTemplate.js +0 -73
- package/dist/src/core/shaders/templates/BorderTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +0 -46
- package/dist/src/core/shaders/templates/HolePunchTemplate.js +0 -35
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/LinearGradientTemplate.d.ts +0 -23
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js +0 -47
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +0 -31
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js +0 -49
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.d.ts +0 -29
- package/dist/src/core/shaders/templates/RoundedTemplate.js +0 -67
- package/dist/src/core/shaders/templates/RoundedTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +0 -7
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +0 -24
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +0 -6
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +0 -23
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +0 -6
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +0 -23
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +0 -1
- package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +0 -34
- package/dist/src/core/shaders/templates/ShadowTemplate.js +0 -66
- package/dist/src/core/shaders/templates/ShadowTemplate.js.map +0 -1
- package/dist/src/core/shaders/utils.d.ts +0 -5
- package/dist/src/core/shaders/utils.js +0 -41
- package/dist/src/core/shaders/utils.js.map +0 -1
- package/dist/src/core/shaders/webgl/Border.d.ts +0 -3
- package/dist/src/core/shaders/webgl/Border.js +0 -110
- package/dist/src/core/shaders/webgl/Border.js.map +0 -1
- package/dist/src/core/shaders/webgl/Default.d.ts +0 -2
- package/dist/src/core/shaders/webgl/Default.js +0 -86
- package/dist/src/core/shaders/webgl/Default.js.map +0 -1
- package/dist/src/core/shaders/webgl/DefaultBatched.d.ts +0 -2
- package/dist/src/core/shaders/webgl/DefaultBatched.js +0 -104
- package/dist/src/core/shaders/webgl/DefaultBatched.js.map +0 -1
- package/dist/src/core/shaders/webgl/HolePunch.d.ts +0 -3
- package/dist/src/core/shaders/webgl/HolePunch.js +0 -65
- package/dist/src/core/shaders/webgl/HolePunch.js.map +0 -1
- package/dist/src/core/shaders/webgl/LinearGradient.d.ts +0 -3
- package/dist/src/core/shaders/webgl/LinearGradient.js +0 -99
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +0 -1
- package/dist/src/core/shaders/webgl/RadialGradient.d.ts +0 -3
- package/dist/src/core/shaders/webgl/RadialGradient.js +0 -96
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +0 -1
- package/dist/src/core/shaders/webgl/Rounded.d.ts +0 -7
- package/dist/src/core/shaders/webgl/Rounded.js +0 -86
- package/dist/src/core/shaders/webgl/Rounded.js.map +0 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.d.ts +0 -3
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +0 -140
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +0 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.d.ts +0 -3
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +0 -162
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +0 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.d.ts +0 -3
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +0 -84
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +0 -1
- package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -30
- package/dist/src/core/shaders/webgl/SdfShader.js +0 -107
- package/dist/src/core/shaders/webgl/SdfShader.js.map +0 -1
- package/dist/src/core/shaders/webgl/Shadow.d.ts +0 -3
- package/dist/src/core/shaders/webgl/Shadow.js +0 -110
- package/dist/src/core/shaders/webgl/Shadow.js.map +0 -1
- package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +0 -59
- package/dist/src/core/text-rendering/CanvasFontHandler.js +0 -221
- package/dist/src/core/text-rendering/CanvasFontHandler.js.map +0 -1
- package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +0 -17
- package/dist/src/core/text-rendering/CanvasTextRenderer.js +0 -157
- package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +0 -182
- package/dist/src/core/text-rendering/SdfFontHandler.js +0 -388
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +0 -1
- package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +0 -17
- package/dist/src/core/text-rendering/SdfTextRenderer.js +0 -311
- package/dist/src/core/text-rendering/SdfTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +0 -19
- package/dist/src/core/text-rendering/TextLayoutEngine.js +0 -324
- package/dist/src/core/text-rendering/TextLayoutEngine.js.map +0 -1
- package/dist/src/core/text-rendering/TextRenderer.d.ts +0 -368
- package/dist/src/core/text-rendering/TextRenderer.js +0 -20
- package/dist/src/core/text-rendering/TextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/Utils.d.ts +0 -30
- package/dist/src/core/text-rendering/Utils.js +0 -84
- package/dist/src/core/text-rendering/Utils.js.map +0 -1
|
@@ -136,7 +136,7 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
136
136
|
this.defaultShader = this.defShaderCtrl.shader as WebGlCoreShader;
|
|
137
137
|
const quadBuffer = glw.createBuffer();
|
|
138
138
|
assertTruthy(quadBuffer);
|
|
139
|
-
const stride =
|
|
139
|
+
const stride = 8 * Float32Array.BYTES_PER_ELEMENT;
|
|
140
140
|
this.quadBufferCollection = new BufferCollection([
|
|
141
141
|
{
|
|
142
142
|
buffer: quadBuffer,
|
|
@@ -173,6 +173,14 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
173
173
|
stride,
|
|
174
174
|
offset: 5 * Float32Array.BYTES_PER_ELEMENT,
|
|
175
175
|
},
|
|
176
|
+
a_nodeCoordinate: {
|
|
177
|
+
name: 'a_nodeCoordinate',
|
|
178
|
+
size: 2,
|
|
179
|
+
type: glw.FLOAT,
|
|
180
|
+
normalized: false,
|
|
181
|
+
stride,
|
|
182
|
+
offset: 6 * Float32Array.BYTES_PER_ELEMENT,
|
|
183
|
+
},
|
|
176
184
|
},
|
|
177
185
|
},
|
|
178
186
|
]);
|
|
@@ -230,7 +238,7 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
230
238
|
* If the shader props contain any automatic properties, update it with the
|
|
231
239
|
* current dimensions and or alpha that will be used to render the quad.
|
|
232
240
|
*/
|
|
233
|
-
if (params.
|
|
241
|
+
if (params.shader !== this.defaultShader) {
|
|
234
242
|
if (hasOwn(params.shaderProps, '$dimensions') == true) {
|
|
235
243
|
const dimensions = params.shaderProps.$dimensions as Dimensions;
|
|
236
244
|
dimensions.width = params.width;
|
|
@@ -243,20 +251,11 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
243
251
|
}
|
|
244
252
|
|
|
245
253
|
let { curBufferIdx: bufferIdx, curRenderOp } = this;
|
|
246
|
-
const targetDims = { width:
|
|
247
|
-
targetDims.width = params.width;
|
|
248
|
-
targetDims.height = params.height;
|
|
249
|
-
|
|
250
|
-
const targetShader =
|
|
251
|
-
(params.shader as WebGlCoreShader) || this.defaultShader;
|
|
252
|
-
assertTruthy(
|
|
253
|
-
targetShader.getUniformLocation !== undefined,
|
|
254
|
-
'Invalid WebGL shader',
|
|
255
|
-
);
|
|
254
|
+
const targetDims = { width: params.width, height: params.height };
|
|
256
255
|
|
|
257
256
|
if (this.reuseRenderOp(params) === false) {
|
|
258
257
|
this.newRenderOp(
|
|
259
|
-
|
|
258
|
+
params.shader as WebGlCoreShader,
|
|
260
259
|
params.shaderProps as Record<string, unknown>,
|
|
261
260
|
params.alpha,
|
|
262
261
|
targetDims,
|
|
@@ -270,6 +269,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
270
269
|
assertTruthy(curRenderOp);
|
|
271
270
|
}
|
|
272
271
|
|
|
272
|
+
let ctxTexture = undefined;
|
|
273
|
+
|
|
273
274
|
let texCoordX1 = 0;
|
|
274
275
|
let texCoordY1 = 0;
|
|
275
276
|
let texCoordX2 = 1;
|
|
@@ -290,6 +291,13 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
290
291
|
texCoordY1 = ty / parentH;
|
|
291
292
|
texCoordY2 = texCoordY1 + th / parentH;
|
|
292
293
|
texture = (texture as SubTexture).parentTexture;
|
|
294
|
+
ctxTexture = texture.ctxTexture as WebGlCoreCtxTexture;
|
|
295
|
+
} else {
|
|
296
|
+
ctxTexture = texture.ctxTexture as WebGlCoreCtxTexture;
|
|
297
|
+
texCoordX1 = ctxTexture.txCoordX1;
|
|
298
|
+
texCoordY1 = ctxTexture.txCoordY1;
|
|
299
|
+
texCoordX2 = ctxTexture.txCoordX2;
|
|
300
|
+
texCoordY2 = ctxTexture.txCoordY2;
|
|
293
301
|
}
|
|
294
302
|
|
|
295
303
|
if (
|
|
@@ -336,14 +344,6 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
336
344
|
[texCoordY1, texCoordY2] = [texCoordY2, texCoordY1];
|
|
337
345
|
}
|
|
338
346
|
|
|
339
|
-
let ctxTexture = texture.ctxTexture as WebGlCoreCtxTexture;
|
|
340
|
-
if (ctxTexture === undefined) {
|
|
341
|
-
ctxTexture = this.stage.defaultTexture?.ctxTexture as WebGlCoreCtxTexture;
|
|
342
|
-
console.warn(
|
|
343
|
-
'WebGL Renderer: Texture does not have a ctxTexture, using default texture instead',
|
|
344
|
-
);
|
|
345
|
-
}
|
|
346
|
-
|
|
347
347
|
const textureIdx = this.addTexture(ctxTexture, bufferIdx);
|
|
348
348
|
|
|
349
349
|
assertTruthy(this.curRenderOp !== null);
|
|
@@ -355,6 +355,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
355
355
|
fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY
|
|
356
356
|
uiQuadBuffer[bufferIdx++] = params.colorTl; // color
|
|
357
357
|
fQuadBuffer[bufferIdx++] = textureIdx; // texIndex
|
|
358
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
359
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
358
360
|
|
|
359
361
|
// Upper-Right
|
|
360
362
|
fQuadBuffer[bufferIdx++] = params.renderCoords.x2;
|
|
@@ -363,6 +365,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
363
365
|
fQuadBuffer[bufferIdx++] = texCoordY1;
|
|
364
366
|
uiQuadBuffer[bufferIdx++] = params.colorTr;
|
|
365
367
|
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
368
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
369
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
366
370
|
|
|
367
371
|
// Lower-Left
|
|
368
372
|
fQuadBuffer[bufferIdx++] = params.renderCoords.x4;
|
|
@@ -371,6 +375,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
371
375
|
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
372
376
|
uiQuadBuffer[bufferIdx++] = params.colorBl;
|
|
373
377
|
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
378
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
379
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
374
380
|
|
|
375
381
|
// Lower-Right
|
|
376
382
|
fQuadBuffer[bufferIdx++] = params.renderCoords.x3;
|
|
@@ -379,6 +385,9 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
379
385
|
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
380
386
|
uiQuadBuffer[bufferIdx++] = params.colorBr;
|
|
381
387
|
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
388
|
+
|
|
389
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
390
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
382
391
|
} else if (params.tb !== 0 || params.tc !== 0) {
|
|
383
392
|
// Upper-Left
|
|
384
393
|
fQuadBuffer[bufferIdx++] = params.tx; // vertexX
|
|
@@ -387,6 +396,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
387
396
|
fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY
|
|
388
397
|
uiQuadBuffer[bufferIdx++] = params.colorTl; // color
|
|
389
398
|
fQuadBuffer[bufferIdx++] = textureIdx; // texIndex
|
|
399
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
400
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
390
401
|
|
|
391
402
|
// Upper-Right
|
|
392
403
|
fQuadBuffer[bufferIdx++] = params.tx + params.width * params.ta;
|
|
@@ -395,6 +406,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
395
406
|
fQuadBuffer[bufferIdx++] = texCoordY1;
|
|
396
407
|
uiQuadBuffer[bufferIdx++] = params.colorTr;
|
|
397
408
|
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
409
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
410
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
398
411
|
|
|
399
412
|
// Lower-Left
|
|
400
413
|
fQuadBuffer[bufferIdx++] = params.tx + params.height * params.tb;
|
|
@@ -403,6 +416,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
403
416
|
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
404
417
|
uiQuadBuffer[bufferIdx++] = params.colorBl;
|
|
405
418
|
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
419
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
420
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
406
421
|
|
|
407
422
|
// Lower-Right
|
|
408
423
|
fQuadBuffer[bufferIdx++] =
|
|
@@ -413,6 +428,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
413
428
|
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
414
429
|
uiQuadBuffer[bufferIdx++] = params.colorBr;
|
|
415
430
|
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
431
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
432
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
416
433
|
} else {
|
|
417
434
|
// Calculate the right corner of the quad
|
|
418
435
|
// multiplied by the scale
|
|
@@ -426,6 +443,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
426
443
|
fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY
|
|
427
444
|
uiQuadBuffer[bufferIdx++] = params.colorTl; // color
|
|
428
445
|
fQuadBuffer[bufferIdx++] = textureIdx; // texIndex
|
|
446
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
447
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
429
448
|
|
|
430
449
|
// Upper-Right
|
|
431
450
|
fQuadBuffer[bufferIdx++] = rightCornerX;
|
|
@@ -434,6 +453,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
434
453
|
fQuadBuffer[bufferIdx++] = texCoordY1;
|
|
435
454
|
uiQuadBuffer[bufferIdx++] = params.colorTr;
|
|
436
455
|
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
456
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
457
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
437
458
|
|
|
438
459
|
// Lower-Left
|
|
439
460
|
fQuadBuffer[bufferIdx++] = params.tx;
|
|
@@ -442,6 +463,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
442
463
|
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
443
464
|
uiQuadBuffer[bufferIdx++] = params.colorBl;
|
|
444
465
|
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
466
|
+
fQuadBuffer[bufferIdx++] = 0;
|
|
467
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
445
468
|
|
|
446
469
|
// Lower-Right
|
|
447
470
|
fQuadBuffer[bufferIdx++] = rightCornerX;
|
|
@@ -450,9 +473,10 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
450
473
|
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
451
474
|
uiQuadBuffer[bufferIdx++] = params.colorBr;
|
|
452
475
|
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
476
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
477
|
+
fQuadBuffer[bufferIdx++] = 1;
|
|
453
478
|
}
|
|
454
479
|
// Update the length of the current render op
|
|
455
|
-
this.curRenderOp.length += WORDS_PER_QUAD;
|
|
456
480
|
this.curRenderOp.numQuads++;
|
|
457
481
|
this.curBufferIdx = bufferIdx;
|
|
458
482
|
}
|
|
@@ -542,10 +566,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
542
566
|
const { shader, shaderProps, parentHasRenderTexture, rtt, clippingRect } =
|
|
543
567
|
params;
|
|
544
568
|
|
|
545
|
-
const targetShader = shader || this.defaultShader;
|
|
546
|
-
|
|
547
569
|
// Switching shader program will require a new render operation
|
|
548
|
-
if (this.curRenderOp?.shader !==
|
|
570
|
+
if (this.curRenderOp?.shader !== shader) {
|
|
549
571
|
return false;
|
|
550
572
|
}
|
|
551
573
|
|
|
@@ -557,18 +579,17 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
557
579
|
// Force new render operation if rendering to texture
|
|
558
580
|
// @todo: This needs to be improved, render operations could also be reused
|
|
559
581
|
// for rendering to texture
|
|
560
|
-
if (parentHasRenderTexture
|
|
582
|
+
if (parentHasRenderTexture === true || rtt === true) {
|
|
561
583
|
return false;
|
|
562
584
|
}
|
|
563
585
|
|
|
564
586
|
// Check if the shader can batch the shader properties
|
|
565
587
|
if (
|
|
566
588
|
this.curRenderOp.shader !== this.defaultShader &&
|
|
567
|
-
(
|
|
568
|
-
this.curRenderOp.
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
) === false)
|
|
589
|
+
this.curRenderOp.shader.canBatchShaderProps(
|
|
590
|
+
this.curRenderOp.shaderProps,
|
|
591
|
+
shaderProps,
|
|
592
|
+
) === false
|
|
572
593
|
) {
|
|
573
594
|
return false;
|
|
574
595
|
}
|
|
@@ -607,7 +628,7 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
607
628
|
this.quadBufferUsage = this.curBufferIdx * arr.BYTES_PER_ELEMENT;
|
|
608
629
|
|
|
609
630
|
// Calculate the size of each quad in bytes (4 vertices per quad) times the size of each vertex in bytes
|
|
610
|
-
const QUAD_SIZE_IN_BYTES = 4 * (
|
|
631
|
+
const QUAD_SIZE_IN_BYTES = 4 * (8 * arr.BYTES_PER_ELEMENT); // 8 attributes per vertex
|
|
611
632
|
this.numQuadsRendered = this.quadBufferUsage / QUAD_SIZE_IN_BYTES;
|
|
612
633
|
}
|
|
613
634
|
|
|
@@ -65,7 +65,6 @@ export interface AlphaShaderProp {
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
export abstract class WebGlCoreShader extends CoreShader {
|
|
68
|
-
protected boundBufferCollection: BufferCollection | null = null;
|
|
69
68
|
protected buffersBound = false;
|
|
70
69
|
protected program: WebGLProgram;
|
|
71
70
|
/**
|
|
@@ -77,11 +76,8 @@ export abstract class WebGlCoreShader extends CoreShader {
|
|
|
77
76
|
protected vao: WebGLVertexArrayObject | undefined;
|
|
78
77
|
protected renderer: WebGlCoreRenderer;
|
|
79
78
|
protected glw: WebGlContextWrapper;
|
|
80
|
-
protected
|
|
81
|
-
protected attributeLocations: Record<string, number>;
|
|
82
|
-
protected attributeNames: string[];
|
|
79
|
+
protected attributeLocations: string[];
|
|
83
80
|
protected uniformLocations: Record<string, WebGLUniformLocation>;
|
|
84
|
-
protected uniformTypes: Record<string, keyof UniformMethodMap>;
|
|
85
81
|
readonly supportsIndexedTextures: boolean;
|
|
86
82
|
|
|
87
83
|
constructor(options: ShaderOptions) {
|
|
@@ -160,61 +156,8 @@ export abstract class WebGlCoreShader extends CoreShader {
|
|
|
160
156
|
}
|
|
161
157
|
this.program = program;
|
|
162
158
|
|
|
163
|
-
this.attributeLocations =
|
|
164
|
-
this.
|
|
165
|
-
this.attributeNames = [];
|
|
166
|
-
|
|
167
|
-
[...options.attributes].forEach((attributeName) => {
|
|
168
|
-
const location = glw.getAttribLocation(this.program, attributeName);
|
|
169
|
-
if (location < 0) {
|
|
170
|
-
throw new Error(
|
|
171
|
-
`${this.constructor.name}: Vertex shader must have an attribute "${attributeName}"!`,
|
|
172
|
-
);
|
|
173
|
-
}
|
|
174
|
-
const buffer = glw.createBuffer();
|
|
175
|
-
if (!buffer) {
|
|
176
|
-
throw new Error(
|
|
177
|
-
`${this.constructor.name}: Could not create buffer for attribute "${attributeName}"`,
|
|
178
|
-
);
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
this.attributeLocations[attributeName] = location;
|
|
182
|
-
this.attributeBuffers[attributeName] = buffer;
|
|
183
|
-
this.attributeNames.push(attributeName);
|
|
184
|
-
});
|
|
185
|
-
|
|
186
|
-
this.uniformLocations = {} as Record<string, WebGLRenderingContext>;
|
|
187
|
-
this.uniformTypes = {} as Record<string, keyof UniformMethodMap>;
|
|
188
|
-
options.uniforms.forEach((uniform: UniformInfo) => {
|
|
189
|
-
const location = glw.getUniformLocation(this.program, uniform.name);
|
|
190
|
-
this.uniformTypes[uniform.name] = uniform.uniform;
|
|
191
|
-
if (!location) {
|
|
192
|
-
console.warn(
|
|
193
|
-
`Shader "${this.constructor.name}" could not get uniform location for "${uniform.name}"`,
|
|
194
|
-
);
|
|
195
|
-
return;
|
|
196
|
-
}
|
|
197
|
-
this.uniformLocations[uniform.name] = location;
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
private bindBufferAttribute(
|
|
202
|
-
location: number,
|
|
203
|
-
buffer: WebGLBuffer,
|
|
204
|
-
attribute: AttributeInfo,
|
|
205
|
-
) {
|
|
206
|
-
const { glw } = this;
|
|
207
|
-
glw.enableVertexAttribArray(location);
|
|
208
|
-
|
|
209
|
-
glw.vertexAttribPointer(
|
|
210
|
-
buffer,
|
|
211
|
-
location,
|
|
212
|
-
attribute.size,
|
|
213
|
-
attribute.type,
|
|
214
|
-
attribute.normalized,
|
|
215
|
-
attribute.stride,
|
|
216
|
-
attribute.offset,
|
|
217
|
-
);
|
|
159
|
+
this.attributeLocations = glw.getAttributeLocations(this.program);
|
|
160
|
+
this.uniformLocations = glw.getUniformLocations(this.program);
|
|
218
161
|
}
|
|
219
162
|
|
|
220
163
|
disableAttribute(location: number) {
|
|
@@ -222,10 +165,11 @@ export abstract class WebGlCoreShader extends CoreShader {
|
|
|
222
165
|
}
|
|
223
166
|
|
|
224
167
|
disableAttributes() {
|
|
225
|
-
|
|
226
|
-
|
|
168
|
+
const glw = this.glw;
|
|
169
|
+
const attribLen = this.attributeLocations.length;
|
|
170
|
+
for (let i = 0; i < attribLen; i++) {
|
|
171
|
+
glw.disableVertexAttribArray(i);
|
|
227
172
|
}
|
|
228
|
-
this.boundBufferCollection = null;
|
|
229
173
|
}
|
|
230
174
|
|
|
231
175
|
/**
|
|
@@ -325,21 +269,29 @@ export abstract class WebGlCoreShader extends CoreShader {
|
|
|
325
269
|
}
|
|
326
270
|
|
|
327
271
|
bindBufferCollection(buffer: BufferCollection) {
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
const
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
272
|
+
const { glw } = this;
|
|
273
|
+
const attribs = this.attributeLocations;
|
|
274
|
+
const attribLen = attribs.length;
|
|
275
|
+
|
|
276
|
+
for (let i = 0; i < attribLen; i++) {
|
|
277
|
+
const name = attribs[i]!;
|
|
278
|
+
|
|
279
|
+
const resolvedBuffer = buffer.getBuffer(name);
|
|
280
|
+
const resolvedInfo = buffer.getAttributeInfo(name);
|
|
281
|
+
if (resolvedBuffer === undefined || resolvedInfo === undefined) {
|
|
282
|
+
continue;
|
|
283
|
+
}
|
|
284
|
+
glw.enableVertexAttribArray(i);
|
|
285
|
+
glw.vertexAttribPointer(
|
|
338
286
|
resolvedBuffer,
|
|
339
|
-
|
|
287
|
+
i,
|
|
288
|
+
resolvedInfo.size,
|
|
289
|
+
resolvedInfo.type,
|
|
290
|
+
resolvedInfo.normalized,
|
|
291
|
+
resolvedInfo.stride,
|
|
292
|
+
resolvedInfo.offset,
|
|
340
293
|
);
|
|
341
294
|
}
|
|
342
|
-
this.boundBufferCollection = buffer;
|
|
343
295
|
}
|
|
344
296
|
|
|
345
297
|
protected override bindProps(props: Record<string, unknown>) {
|
|
@@ -37,8 +37,6 @@ export interface UniformInfo {
|
|
|
37
37
|
|
|
38
38
|
export interface ShaderOptions {
|
|
39
39
|
renderer: WebGlCoreRenderer;
|
|
40
|
-
attributes: string[];
|
|
41
|
-
uniforms: UniformInfo[];
|
|
42
40
|
shaderSources?: ShaderProgramSources;
|
|
43
41
|
supportsIndexedTextures?: boolean;
|
|
44
42
|
webgl1Extensions?: string[];
|
|
@@ -26,12 +26,6 @@ export class DefaultShader extends WebGlCoreShader {
|
|
|
26
26
|
constructor(renderer: WebGlCoreRenderer) {
|
|
27
27
|
super({
|
|
28
28
|
renderer,
|
|
29
|
-
attributes: ['a_position', 'a_textureCoordinate', 'a_color'],
|
|
30
|
-
uniforms: [
|
|
31
|
-
{ name: 'u_resolution', uniform: 'uniform2fv' },
|
|
32
|
-
{ name: 'u_pixelRatio', uniform: 'uniform1f' },
|
|
33
|
-
{ name: 'u_texture', uniform: 'uniform2fv' },
|
|
34
|
-
],
|
|
35
29
|
});
|
|
36
30
|
}
|
|
37
31
|
|
|
@@ -51,6 +45,7 @@ export class DefaultShader extends WebGlCoreShader {
|
|
|
51
45
|
|
|
52
46
|
attribute vec2 a_position;
|
|
53
47
|
attribute vec2 a_textureCoordinate;
|
|
48
|
+
attribute vec2 a_nodeCoordinate;
|
|
54
49
|
attribute vec4 a_color;
|
|
55
50
|
|
|
56
51
|
uniform vec2 u_resolution;
|
|
@@ -59,6 +54,7 @@ export class DefaultShader extends WebGlCoreShader {
|
|
|
59
54
|
|
|
60
55
|
varying vec4 v_color;
|
|
61
56
|
varying vec2 v_textureCoordinate;
|
|
57
|
+
varying vec2 v_nodeCoordinate;
|
|
62
58
|
|
|
63
59
|
void main() {
|
|
64
60
|
vec2 normalized = a_position * u_pixelRatio;
|
|
@@ -66,6 +62,7 @@ export class DefaultShader extends WebGlCoreShader {
|
|
|
66
62
|
|
|
67
63
|
v_color = a_color;
|
|
68
64
|
v_textureCoordinate = a_textureCoordinate;
|
|
65
|
+
v_nodeCoordinate = a_nodeCoordinate;
|
|
69
66
|
|
|
70
67
|
gl_Position = vec4(normalized.x * screenSpace.x - 1.0, normalized.y * -abs(screenSpace.y) + 1.0, 0.0, 1.0);
|
|
71
68
|
gl_Position.y = -sign(screenSpace.y) * gl_Position.y;
|
|
@@ -29,17 +29,6 @@ export class DefaultShaderBatched extends WebGlCoreShader {
|
|
|
29
29
|
constructor(renderer: WebGlCoreRenderer) {
|
|
30
30
|
super({
|
|
31
31
|
renderer,
|
|
32
|
-
attributes: [
|
|
33
|
-
'a_position',
|
|
34
|
-
'a_textureCoordinate',
|
|
35
|
-
'a_color',
|
|
36
|
-
'a_textureIndex',
|
|
37
|
-
],
|
|
38
|
-
uniforms: [
|
|
39
|
-
{ name: 'u_resolution', uniform: 'uniform2fv' },
|
|
40
|
-
{ name: 'u_pixelRatio', uniform: 'uniform1f' },
|
|
41
|
-
{ name: 'u_textures[0]', uniform: 'uniform1iv' },
|
|
42
|
-
],
|
|
43
32
|
});
|
|
44
33
|
}
|
|
45
34
|
|
|
@@ -118,15 +118,6 @@ export class DynamicShader extends WebGlCoreShader {
|
|
|
118
118
|
const shader = DynamicShader.createShader(props, effectContructors);
|
|
119
119
|
super({
|
|
120
120
|
renderer,
|
|
121
|
-
attributes: ['a_position', 'a_textureCoordinate', 'a_color'],
|
|
122
|
-
uniforms: [
|
|
123
|
-
{ name: 'u_resolution', uniform: 'uniform2fv' },
|
|
124
|
-
{ name: 'u_pixelRatio', uniform: 'uniform1f' },
|
|
125
|
-
{ name: 'u_texture', uniform: 'uniform2fv' },
|
|
126
|
-
{ name: 'u_dimensions', uniform: 'uniform2fv' },
|
|
127
|
-
{ name: 'u_alpha', uniform: 'uniform1f' },
|
|
128
|
-
...shader.uniforms,
|
|
129
|
-
],
|
|
130
121
|
shaderSources: {
|
|
131
122
|
vertex: shader.vertex,
|
|
132
123
|
fragment: shader.fragment,
|
|
@@ -504,6 +495,7 @@ export class DynamicShader extends WebGlCoreShader {
|
|
|
504
495
|
# endif
|
|
505
496
|
|
|
506
497
|
attribute vec2 a_textureCoordinate;
|
|
498
|
+
attribute vec2 a_nodeCoordinate;
|
|
507
499
|
attribute vec2 a_position;
|
|
508
500
|
attribute vec4 a_color;
|
|
509
501
|
attribute float a_textureIndex;
|
|
@@ -514,6 +506,7 @@ export class DynamicShader extends WebGlCoreShader {
|
|
|
514
506
|
varying vec4 v_color;
|
|
515
507
|
varying vec2 v_textureCoordinate;
|
|
516
508
|
varying float v_textureIndex;
|
|
509
|
+
varying vec2 v_nodeCoordinate;
|
|
517
510
|
|
|
518
511
|
void main(){
|
|
519
512
|
vec2 normalized = a_position * u_pixelRatio / u_resolution;
|
|
@@ -524,6 +517,7 @@ export class DynamicShader extends WebGlCoreShader {
|
|
|
524
517
|
v_color = a_color;
|
|
525
518
|
v_textureCoordinate = a_textureCoordinate;
|
|
526
519
|
v_textureIndex = a_textureIndex;
|
|
520
|
+
v_nodeCoordinate = a_nodeCoordinate;
|
|
527
521
|
|
|
528
522
|
// flip y
|
|
529
523
|
gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);
|
|
@@ -555,13 +549,14 @@ export class DynamicShader extends WebGlCoreShader {
|
|
|
555
549
|
|
|
556
550
|
varying vec4 v_color;
|
|
557
551
|
varying vec2 v_textureCoordinate;
|
|
552
|
+
varying vec2 v_nodeCoordinate;
|
|
558
553
|
|
|
559
554
|
${methods}
|
|
560
555
|
|
|
561
556
|
${effectMethods}
|
|
562
557
|
|
|
563
558
|
void main() {
|
|
564
|
-
vec2 p =
|
|
559
|
+
vec2 p = v_nodeCoordinate.xy * u_dimensions - u_dimensions * 0.5;
|
|
565
560
|
vec2 d = abs(p) - (u_dimensions) * 0.5;
|
|
566
561
|
float lng_DefaultMask = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));
|
|
567
562
|
|
|
@@ -45,14 +45,6 @@ export class RoundedRectangle extends WebGlCoreShader {
|
|
|
45
45
|
constructor(renderer: WebGlCoreRenderer) {
|
|
46
46
|
super({
|
|
47
47
|
renderer,
|
|
48
|
-
attributes: ['a_position', 'a_textureCoordinate', 'a_color'],
|
|
49
|
-
uniforms: [
|
|
50
|
-
{ name: 'u_resolution', uniform: 'uniform2fv' },
|
|
51
|
-
{ name: 'u_pixelRatio', uniform: 'uniform1f' },
|
|
52
|
-
{ name: 'u_texture', uniform: 'uniform2f' },
|
|
53
|
-
{ name: 'u_dimensions', uniform: 'uniform2fv' },
|
|
54
|
-
{ name: 'u_radius', uniform: 'uniform1f' },
|
|
55
|
-
],
|
|
56
48
|
});
|
|
57
49
|
}
|
|
58
50
|
|
|
@@ -109,13 +101,14 @@ export class RoundedRectangle extends WebGlCoreShader {
|
|
|
109
101
|
attribute vec2 a_textureCoordinate;
|
|
110
102
|
attribute vec4 a_color;
|
|
111
103
|
attribute float a_textureIndex;
|
|
112
|
-
attribute
|
|
104
|
+
attribute vec2 a_nodeCoordinate;
|
|
113
105
|
|
|
114
106
|
uniform vec2 u_resolution;
|
|
115
107
|
uniform float u_pixelRatio;
|
|
116
108
|
|
|
117
109
|
varying vec4 v_color;
|
|
118
110
|
varying vec2 v_textureCoordinate;
|
|
111
|
+
varying vec2 v_nodeCoordinate;
|
|
119
112
|
|
|
120
113
|
void main() {
|
|
121
114
|
vec2 normalized = a_position * u_pixelRatio / u_resolution;
|
|
@@ -125,6 +118,7 @@ export class RoundedRectangle extends WebGlCoreShader {
|
|
|
125
118
|
// pass to fragment
|
|
126
119
|
v_color = a_color;
|
|
127
120
|
v_textureCoordinate = a_textureCoordinate;
|
|
121
|
+
v_nodeCoordinate = a_nodeCoordinate;
|
|
128
122
|
|
|
129
123
|
// flip y
|
|
130
124
|
gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);
|
|
@@ -144,6 +138,7 @@ export class RoundedRectangle extends WebGlCoreShader {
|
|
|
144
138
|
|
|
145
139
|
varying vec4 v_color;
|
|
146
140
|
varying vec2 v_textureCoordinate;
|
|
141
|
+
varying vec2 v_nodeCoordinate;
|
|
147
142
|
|
|
148
143
|
float boxDist(vec2 p, vec2 size, float radius){
|
|
149
144
|
size -= vec2(radius);
|
|
@@ -159,7 +154,7 @@ export class RoundedRectangle extends WebGlCoreShader {
|
|
|
159
154
|
vec4 color = texture2D(u_texture, v_textureCoordinate) * v_color;
|
|
160
155
|
vec2 halfDimensions = u_dimensions * 0.5;
|
|
161
156
|
|
|
162
|
-
float d = boxDist(
|
|
157
|
+
float d = boxDist(v_nodeCoordinate.xy * u_dimensions - halfDimensions, halfDimensions + 0.5, u_radius);
|
|
163
158
|
gl_FragColor = mix(vec4(0.0), color, fillMask(d));
|
|
164
159
|
}
|
|
165
160
|
`,
|
|
@@ -64,18 +64,6 @@ export class SdfShader extends WebGlCoreShader {
|
|
|
64
64
|
constructor(renderer: WebGlCoreRenderer) {
|
|
65
65
|
super({
|
|
66
66
|
renderer,
|
|
67
|
-
attributes: ['a_position', 'a_textureCoordinate'],
|
|
68
|
-
uniforms: [
|
|
69
|
-
{ name: 'u_resolution', uniform: 'uniform2fv' },
|
|
70
|
-
{ name: 'u_transform', uniform: 'uniformMatrix3fv' },
|
|
71
|
-
{ name: 'u_scrollY', uniform: 'uniform1f' },
|
|
72
|
-
{ name: 'u_pixelRatio', uniform: 'uniform1f' },
|
|
73
|
-
{ name: 'u_texture', uniform: 'uniform2f' },
|
|
74
|
-
{ name: 'u_color', uniform: 'uniform4fv' },
|
|
75
|
-
{ name: 'u_size', uniform: 'uniform1f' },
|
|
76
|
-
{ name: 'u_distanceRange', uniform: 'uniform1f' },
|
|
77
|
-
{ name: 'u_debug', uniform: 'uniform1i' },
|
|
78
|
-
],
|
|
79
67
|
});
|
|
80
68
|
}
|
|
81
69
|
|
|
@@ -91,7 +91,7 @@ export class BorderBottomEffect extends ShaderEffect {
|
|
|
91
91
|
|
|
92
92
|
static override onEffectMask = `
|
|
93
93
|
vec2 pos = vec2(0.0, u_dimensions.y - width * 0.5);
|
|
94
|
-
float mask = $rectDist(
|
|
94
|
+
float mask = $rectDist(v_nodeCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5));
|
|
95
95
|
return mix(shaderColor, maskColor, $fillMask(mask));
|
|
96
96
|
`;
|
|
97
97
|
|
|
@@ -91,7 +91,7 @@ export class BorderLeftEffect extends ShaderEffect {
|
|
|
91
91
|
|
|
92
92
|
static override onEffectMask = `
|
|
93
93
|
vec2 pos = vec2(width * 0.5, 0.0);
|
|
94
|
-
float mask = $rectDist(
|
|
94
|
+
float mask = $rectDist(v_nodeCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));
|
|
95
95
|
return mix(shaderColor, maskColor, $fillMask(mask));
|
|
96
96
|
`;
|
|
97
97
|
|
|
@@ -91,7 +91,7 @@ export class BorderRightEffect extends ShaderEffect {
|
|
|
91
91
|
|
|
92
92
|
static override onEffectMask = `
|
|
93
93
|
vec2 pos = vec2(u_dimensions.x - width * 0.5, 0.0);
|
|
94
|
-
float mask = $rectDist(
|
|
94
|
+
float mask = $rectDist(v_nodeCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));
|
|
95
95
|
return mix(shaderColor, maskColor, $fillMask(mask));
|
|
96
96
|
`;
|
|
97
97
|
|
|
@@ -91,7 +91,7 @@ export class BorderTopEffect extends ShaderEffect {
|
|
|
91
91
|
|
|
92
92
|
static override onEffectMask = `
|
|
93
93
|
vec2 pos = vec2(0.0, width * 0.5);
|
|
94
|
-
float mask = $rectDist(
|
|
94
|
+
float mask = $rectDist(v_nodeCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5));
|
|
95
95
|
return mix(shaderColor, maskColor, $fillMask(mask));
|
|
96
96
|
`;
|
|
97
97
|
|
|
@@ -82,7 +82,7 @@ export class FadeOutEffect extends ShaderEffect {
|
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
static override onColorize = `
|
|
85
|
-
vec2 point =
|
|
85
|
+
vec2 point = v_nodeCoordinate.xy * u_dimensions.xy;
|
|
86
86
|
vec2 pos1;
|
|
87
87
|
vec2 pos2;
|
|
88
88
|
vec2 d;
|
|
@@ -99,16 +99,16 @@ export class FadeOutEffect extends ShaderEffect {
|
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
if(fade[1] > 0.0) {
|
|
102
|
-
pos1 = vec2(point.x - u_dimensions.x - fade[1],
|
|
103
|
-
pos2 = vec2(point.x - u_dimensions.x,
|
|
102
|
+
pos1 = vec2(point.x - u_dimensions.x - fade[1], v_nodeCoordinate.y);
|
|
103
|
+
pos2 = vec2(point.x - u_dimensions.x, v_nodeCoordinate.y);
|
|
104
104
|
d = pos1 - pos2;
|
|
105
105
|
c = dot(pos2, d) / dot(d, d);
|
|
106
106
|
result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
if(fade[2] > 0.0) {
|
|
110
|
-
pos1 = vec2(
|
|
111
|
-
pos2 = vec2(
|
|
110
|
+
pos1 = vec2(v_nodeCoordinate.x, point.y - u_dimensions.y - fade[2]);
|
|
111
|
+
pos2 = vec2(v_nodeCoordinate.x, point.y - u_dimensions.y);
|
|
112
112
|
d = pos1 - pos2;
|
|
113
113
|
c = dot(pos2, d) / dot(d, d);
|
|
114
114
|
result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));
|
|
@@ -142,7 +142,7 @@ export class HolePunchEffect extends ShaderEffect {
|
|
|
142
142
|
static override onShaderMask = `
|
|
143
143
|
vec2 halfDimensions = u_dimensions * 0.5;
|
|
144
144
|
vec2 size = vec2(width, height) * 0.5;
|
|
145
|
-
vec2 basePos =
|
|
145
|
+
vec2 basePos = v_nodeCoordinate.xy * u_dimensions.xy - vec2(x, y);
|
|
146
146
|
vec2 pos = basePos - size;
|
|
147
147
|
float r = radius[0] * step(pos.x, 0.5) * step(pos.y, 0.5);
|
|
148
148
|
r = r + radius[1] * step(0.5, pos.x) * step(pos.y, 0.5);
|
|
@@ -146,7 +146,7 @@ export class LinearGradientEffect extends ShaderEffect {
|
|
|
146
146
|
vec2 f = $calcPoint(lineDist * 0.5, a);
|
|
147
147
|
vec2 t = $calcPoint(lineDist * 0.5, a + PI);
|
|
148
148
|
vec2 gradVec = t - f;
|
|
149
|
-
float dist = dot(
|
|
149
|
+
float dist = dot(v_nodeCoordinate.xy * u_dimensions - f, gradVec) / dot(gradVec, gradVec);
|
|
150
150
|
|
|
151
151
|
//return early if dist is lower or equal to first stop
|
|
152
152
|
if(dist <= stops[0]) {
|