@lightningjs/renderer 3.0.0-beta7 → 3.0.0-beta8
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.d.ts +24 -49
- package/dist/src/core/CoreNode.js +251 -255
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +1 -1
- package/dist/src/core/CoreTextNode.js +14 -15
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.js +5 -4
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +12 -27
- package/dist/src/core/Stage.js +50 -37
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.d.ts +9 -0
- package/dist/src/core/TextureMemoryManager.js +78 -48
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/CoreAnimation.js +5 -0
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/animations/CoreAnimationController.d.ts +1 -0
- package/dist/src/core/animations/CoreAnimationController.js +7 -1
- package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +1 -0
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +1 -0
- package/dist/src/core/renderers/CoreShaderNode.js +9 -0
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +1 -0
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +3 -0
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +1 -4
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +0 -3
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +1 -0
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +56 -54
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js +1 -4
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
- package/dist/src/core/shaders/canvas/LinearGradient.js +5 -3
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RadialGradient.js +13 -11
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +7 -5
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +10 -8
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +7 -5
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.js +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.js +1 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.js +1 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/{templates/shaderUtils.d.ts → utils.d.ts} +1 -1
- package/dist/src/core/shaders/{templates/shaderUtils.js → utils.js} +2 -2
- package/dist/src/core/shaders/utils.js.map +1 -0
- package/dist/src/core/shaders/webgl/HolePunch.js +4 -3
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +5 -4
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +6 -5
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +18 -7
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +30 -17
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -50
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +1 -1
- package/dist/src/core/textures/ImageTexture.js +1 -1
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +8 -0
- package/dist/src/core/textures/Texture.js +13 -0
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/core/utils.d.ts +1 -1
- package/dist/src/main-api/Inspector.d.ts +6 -1
- package/dist/src/main-api/Inspector.js +42 -4
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +62 -43
- package/dist/src/main-api/Renderer.js +119 -31
- package/dist/src/main-api/Renderer.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 +301 -313
- package/src/core/CoreTextNode.ts +23 -20
- package/src/core/CoreTextureManager.ts +5 -4
- package/src/core/Stage.ts +68 -65
- package/src/core/TextureMemoryManager.ts +104 -63
- package/src/core/animations/CoreAnimation.ts +7 -0
- package/src/core/animations/CoreAnimationController.ts +8 -1
- package/src/core/renderers/CoreRenderer.ts +1 -0
- package/src/core/renderers/CoreShaderNode.ts +10 -0
- package/src/core/renderers/canvas/CanvasRenderer.ts +4 -0
- package/src/core/renderers/canvas/CanvasShaderNode.ts +1 -4
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +0 -3
- package/src/core/renderers/webgl/WebGlRenderer.ts +64 -65
- package/src/core/renderers/webgl/WebGlShaderNode.ts +2 -4
- package/src/core/shaders/canvas/LinearGradient.ts +8 -6
- package/src/core/shaders/canvas/RadialGradient.ts +22 -36
- package/src/core/shaders/canvas/RoundedWithBorder.ts +10 -8
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +14 -12
- package/src/core/shaders/canvas/RoundedWithShadow.ts +8 -7
- package/src/core/shaders/templates/BorderTemplate.ts +1 -1
- package/src/core/shaders/templates/HolePunchTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +1 -1
- package/src/core/shaders/templates/ShadowTemplate.ts +1 -1
- package/src/core/shaders/{templates/shaderUtils.ts → utils.ts} +2 -3
- package/src/core/shaders/webgl/HolePunch.ts +4 -7
- package/src/core/shaders/webgl/LinearGradient.ts +5 -4
- package/src/core/shaders/webgl/RadialGradient.ts +7 -6
- package/src/core/shaders/webgl/RoundedWithBorder.ts +18 -7
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +30 -21
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +2 -58
- package/src/core/textures/ImageTexture.ts +17 -16
- package/src/core/textures/Texture.ts +14 -0
- package/src/main-api/Inspector.ts +52 -5
- package/src/main-api/Renderer.ts +222 -77
- package/dist/src/core/platform.d.ts +0 -10
- package/dist/src/core/platform.js +0 -56
- package/dist/src/core/platform.js.map +0 -1
- package/dist/src/core/renderers/CoreShader.d.ts +0 -9
- package/dist/src/core/renderers/CoreShader.js +0 -28
- package/dist/src/core/renderers/CoreShader.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -33
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +0 -250
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -16
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +0 -123
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +0 -1
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +0 -10
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +0 -43
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +0 -12
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +0 -55
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +0 -9
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +0 -38
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -57
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +0 -227
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +0 -34
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +0 -114
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -133
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +0 -613
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +0 -83
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -231
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +0 -9
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +0 -87
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +0 -10
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -119
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +0 -29
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +0 -413
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +0 -28
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +0 -131
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +0 -47
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -160
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +0 -30
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +0 -58
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +0 -9
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +0 -136
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +0 -36
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +0 -85
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +0 -45
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +0 -104
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +0 -22
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +0 -45
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +0 -58
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +0 -80
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -35
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +0 -129
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -39
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +0 -116
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +0 -61
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +0 -127
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +0 -40
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +0 -115
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +0 -61
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +0 -1
- package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
- package/dist/src/core/temp.d.ts +0 -1
- package/dist/src/core/temp.js +0 -77
- package/dist/src/core/temp.js.map +0 -1
- package/dist/src/main-api/DynamicShaderController.d.ts +0 -29
- package/dist/src/main-api/DynamicShaderController.js +0 -58
- package/dist/src/main-api/DynamicShaderController.js.map +0 -1
- package/dist/src/main-api/ShaderController.d.ts +0 -31
- package/dist/src/main-api/ShaderController.js +0 -37
- package/dist/src/main-api/ShaderController.js.map +0 -1
|
@@ -150,6 +150,16 @@ export class CoreShaderNode<Props extends object = Record<string, unknown>> {
|
|
|
150
150
|
this.node = node;
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
+
createValueKey() {
|
|
154
|
+
let valueKey = '';
|
|
155
|
+
for (const key in this.resolvedProps) {
|
|
156
|
+
valueKey += `${key}:${this.resolvedProps[key]!};`;
|
|
157
|
+
}
|
|
158
|
+
valueKey += `node-width:${this.node!.width}`;
|
|
159
|
+
valueKey += `node-height:${this.node!.height}`;
|
|
160
|
+
return valueKey;
|
|
161
|
+
}
|
|
162
|
+
|
|
153
163
|
get props(): Props | undefined {
|
|
154
164
|
return this.definedProps;
|
|
155
165
|
}
|
|
@@ -67,10 +67,7 @@ export class CanvasShaderNode<
|
|
|
67
67
|
|
|
68
68
|
this.update = () => {
|
|
69
69
|
const prevKey = this.valueKey;
|
|
70
|
-
this.valueKey =
|
|
71
|
-
for (const key in this.resolvedProps) {
|
|
72
|
-
this.valueKey += `${key}:${this.resolvedProps[key]!};`;
|
|
73
|
-
}
|
|
70
|
+
this.valueKey = this.createValueKey();
|
|
74
71
|
|
|
75
72
|
if (prevKey === this.valueKey) {
|
|
76
73
|
return;
|
|
@@ -18,11 +18,9 @@
|
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
20
|
import type { Dimensions } from '../../../common/CommonTypes.js';
|
|
21
|
-
import { assertTruthy } from '../../../utils.js';
|
|
22
21
|
import type { TextureMemoryManager } from '../../TextureMemoryManager.js';
|
|
23
22
|
import type { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';
|
|
24
23
|
import type { Texture } from '../../textures/Texture.js';
|
|
25
|
-
import { isPowerOfTwo } from '../../utils.js';
|
|
26
24
|
import { CoreContextTexture } from '../CoreContextTexture.js';
|
|
27
25
|
import { isHTMLImageElement } from './internal/RendererUtils.js';
|
|
28
26
|
|
|
@@ -57,7 +55,6 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
57
55
|
this.load();
|
|
58
56
|
return null;
|
|
59
57
|
}
|
|
60
|
-
assertTruthy(this._nativeCtxTexture);
|
|
61
58
|
return this._nativeCtxTexture;
|
|
62
59
|
}
|
|
63
60
|
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* limitations under the License.
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
|
-
import {
|
|
20
|
+
import { createWebGLContext } from '../../../utils.js';
|
|
21
21
|
import {
|
|
22
22
|
CoreRenderer,
|
|
23
23
|
type BufferInfo,
|
|
@@ -53,9 +53,6 @@ import { Default } from '../../shaders/webgl/Default.js';
|
|
|
53
53
|
import type { WebGlShaderType } from './WebGlShaderNode.js';
|
|
54
54
|
import { WebGlShaderNode } from './WebGlShaderNode.js';
|
|
55
55
|
|
|
56
|
-
const WORDS_PER_QUAD = 32;
|
|
57
|
-
// const BYTES_PER_QUAD = WORDS_PER_QUAD * 4;
|
|
58
|
-
|
|
59
56
|
export type WebGlRendererOptions = CoreRendererOptions;
|
|
60
57
|
|
|
61
58
|
interface CoreWebGlSystem {
|
|
@@ -136,11 +133,10 @@ export class WebGlRenderer extends CoreRenderer {
|
|
|
136
133
|
extensions: getWebGlExtensions(this.glw),
|
|
137
134
|
};
|
|
138
135
|
const quadBuffer = glw.createBuffer();
|
|
139
|
-
assertTruthy(quadBuffer);
|
|
140
136
|
const stride = 8 * Float32Array.BYTES_PER_ELEMENT;
|
|
141
137
|
this.quadBufferCollection = new BufferCollection([
|
|
142
138
|
{
|
|
143
|
-
buffer: quadBuffer
|
|
139
|
+
buffer: quadBuffer!,
|
|
144
140
|
attributes: {
|
|
145
141
|
a_position: {
|
|
146
142
|
name: 'a_position',
|
|
@@ -257,71 +253,74 @@ export class WebGlRenderer extends CoreRenderer {
|
|
|
257
253
|
* The function updates the length and number of quads in the current render operation, and updates the current buffer index.
|
|
258
254
|
*/
|
|
259
255
|
addQuad(params: QuadOptions) {
|
|
260
|
-
const
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
this.
|
|
256
|
+
const f = this.fQuadBuffer;
|
|
257
|
+
const u = this.uiQuadBuffer;
|
|
258
|
+
let i = this.curBufferIdx;
|
|
259
|
+
|
|
260
|
+
let ro = this.curRenderOp!;
|
|
261
|
+
const reuse = this.reuseRenderOp(params) === false;
|
|
262
|
+
if (reuse) {
|
|
263
|
+
this.newRenderOp(params, i);
|
|
264
|
+
ro = this.curRenderOp!;
|
|
269
265
|
}
|
|
270
266
|
|
|
271
|
-
|
|
272
|
-
|
|
267
|
+
let tx = params.texture!;
|
|
268
|
+
if (tx.type === TextureType.subTexture) {
|
|
269
|
+
tx = (tx as SubTexture).parentTexture;
|
|
273
270
|
}
|
|
274
271
|
|
|
275
|
-
|
|
276
|
-
const textureIdx = this.addTexture(texture.ctxTexture, bufferIdx);
|
|
272
|
+
const tidx = this.addTexture(tx.ctxTexture as WebGlCtxTexture, i);
|
|
277
273
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
274
|
+
const rc = params.renderCoords!;
|
|
275
|
+
const tc = params.textureCoords!;
|
|
276
|
+
|
|
277
|
+
const cTl = params.colorTl;
|
|
278
|
+
const cTr = params.colorTr;
|
|
279
|
+
const cBl = params.colorBl;
|
|
280
|
+
const cBr = params.colorBr;
|
|
281
281
|
|
|
282
282
|
// Upper-Left
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
283
|
+
f[i] = rc.x1;
|
|
284
|
+
f[i + 1] = rc.y1;
|
|
285
|
+
f[i + 2] = tc.x1;
|
|
286
|
+
f[i + 3] = tc.y1;
|
|
287
|
+
u[i + 4] = cTl;
|
|
288
|
+
f[i + 5] = tidx;
|
|
289
|
+
f[i + 6] = 0;
|
|
290
|
+
f[i + 7] = 0;
|
|
291
291
|
|
|
292
292
|
// Upper-Right
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
293
|
+
f[i + 8] = rc.x2;
|
|
294
|
+
f[i + 9] = rc.y2;
|
|
295
|
+
f[i + 10] = tc.x2;
|
|
296
|
+
f[i + 11] = tc.y1;
|
|
297
|
+
u[i + 12] = cTr;
|
|
298
|
+
f[i + 13] = tidx;
|
|
299
|
+
f[i + 14] = 1;
|
|
300
|
+
f[i + 15] = 0;
|
|
301
301
|
|
|
302
302
|
// Lower-Left
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
303
|
+
f[i + 16] = rc.x4;
|
|
304
|
+
f[i + 17] = rc.y4;
|
|
305
|
+
f[i + 18] = tc.x1;
|
|
306
|
+
f[i + 19] = tc.y2;
|
|
307
|
+
u[i + 20] = cBl;
|
|
308
|
+
f[i + 21] = tidx;
|
|
309
|
+
f[i + 22] = 0;
|
|
310
|
+
f[i + 23] = 1;
|
|
311
311
|
|
|
312
312
|
// Lower-Right
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
this.
|
|
324
|
-
this.curBufferIdx = bufferIdx;
|
|
313
|
+
f[i + 24] = rc.x3;
|
|
314
|
+
f[i + 25] = rc.y3;
|
|
315
|
+
f[i + 26] = tc.x2;
|
|
316
|
+
f[i + 27] = tc.y2;
|
|
317
|
+
u[i + 28] = cBr;
|
|
318
|
+
f[i + 29] = tidx;
|
|
319
|
+
f[i + 30] = 1;
|
|
320
|
+
f[i + 31] = 1;
|
|
321
|
+
|
|
322
|
+
ro.numQuads++;
|
|
323
|
+
this.curBufferIdx = i + 32;
|
|
325
324
|
}
|
|
326
325
|
|
|
327
326
|
/**
|
|
@@ -354,14 +353,13 @@ export class WebGlRenderer extends CoreRenderer {
|
|
|
354
353
|
bufferIdx: number,
|
|
355
354
|
recursive?: boolean,
|
|
356
355
|
): number {
|
|
357
|
-
|
|
358
|
-
const textureIdx = this.curRenderOp.addTexture(texture);
|
|
356
|
+
const textureIdx = this.curRenderOp!.addTexture(texture);
|
|
359
357
|
// TODO: Refactor to be more DRY
|
|
360
358
|
if (textureIdx === 0xffffffff) {
|
|
361
359
|
if (recursive) {
|
|
362
360
|
throw new Error('Unable to add texture to render op');
|
|
363
361
|
}
|
|
364
|
-
this.newRenderOp(this.curRenderOp
|
|
362
|
+
this.newRenderOp(this.curRenderOp!, bufferIdx);
|
|
365
363
|
return this.addTexture(texture, bufferIdx, true);
|
|
366
364
|
}
|
|
367
365
|
return textureIdx;
|
|
@@ -570,10 +568,7 @@ export class WebGlRenderer extends CoreRenderer {
|
|
|
570
568
|
// Set the active RTT node to the current node
|
|
571
569
|
// So we can prevent rendering children of nested RTT nodes
|
|
572
570
|
this.activeRttNode = node;
|
|
573
|
-
|
|
574
|
-
assertTruthy(node.texture !== null, 'RTT node missing texture');
|
|
575
|
-
const ctxTexture = node.texture.ctxTexture;
|
|
576
|
-
assertTruthy(ctxTexture instanceof WebGlCtxRenderTexture);
|
|
571
|
+
const ctxTexture = node.texture.ctxTexture as WebGlCtxRenderTexture;
|
|
577
572
|
this.renderToTextureActive = true;
|
|
578
573
|
|
|
579
574
|
// Bind the the texture's framebuffer
|
|
@@ -615,6 +610,10 @@ export class WebGlRenderer extends CoreRenderer {
|
|
|
615
610
|
this.renderToTextureActive = false;
|
|
616
611
|
}
|
|
617
612
|
|
|
613
|
+
updateViewport(): void {
|
|
614
|
+
this.glw.viewport(0, 0, this.glw.canvas.width, this.glw.canvas.height);
|
|
615
|
+
}
|
|
616
|
+
|
|
618
617
|
removeRTTNode(node: CoreNode) {
|
|
619
618
|
const index = this.rttNodes.indexOf(node);
|
|
620
619
|
if (index === -1) {
|
|
@@ -90,11 +90,9 @@ export class WebGlShaderNode<
|
|
|
90
90
|
this.updater!(this.node as CoreNode, this.props);
|
|
91
91
|
return;
|
|
92
92
|
}
|
|
93
|
+
|
|
93
94
|
const prevKey = this.valueKey;
|
|
94
|
-
this.valueKey =
|
|
95
|
-
for (const key in this.resolvedProps) {
|
|
96
|
-
this.valueKey += `${key}:${this.resolvedProps[key]!};`;
|
|
97
|
-
}
|
|
95
|
+
this.valueKey = this.createValueKey();
|
|
98
96
|
|
|
99
97
|
if (prevKey === this.valueKey) {
|
|
100
98
|
return;
|
|
@@ -53,15 +53,17 @@ export const LinearGradient: CanvasShaderType<
|
|
|
53
53
|
},
|
|
54
54
|
render(ctx, quad, renderContext) {
|
|
55
55
|
renderContext();
|
|
56
|
+
const computed = this.computed as ComputedLinearGradientValues;
|
|
56
57
|
const gradient = ctx.createLinearGradient(
|
|
57
|
-
quad.tx +
|
|
58
|
-
quad.ty +
|
|
59
|
-
quad.tx +
|
|
60
|
-
quad.ty +
|
|
58
|
+
quad.tx + computed.x0,
|
|
59
|
+
quad.ty + computed.y0,
|
|
60
|
+
quad.tx + computed.x1,
|
|
61
|
+
quad.ty + computed.y1,
|
|
61
62
|
);
|
|
62
|
-
const colors =
|
|
63
|
+
const colors = computed.colors;
|
|
64
|
+
const stops = this.props!.stops;
|
|
63
65
|
for (let i = 0; i < colors.length; i++) {
|
|
64
|
-
gradient.addColorStop(
|
|
66
|
+
gradient.addColorStop(stops[i]!, colors[i]!);
|
|
65
67
|
}
|
|
66
68
|
ctx.fillStyle = gradient;
|
|
67
69
|
ctx.fillRect(quad.tx, quad.ty, quad.width, quad.height);
|
|
@@ -38,9 +38,9 @@ export const RadialGradient: CanvasShaderType<
|
|
|
38
38
|
update(node) {
|
|
39
39
|
let scaleX = 1;
|
|
40
40
|
let scaleY = 1;
|
|
41
|
-
|
|
42
|
-
const pWidth =
|
|
43
|
-
const pHeight =
|
|
41
|
+
const props = this.props as RadialGradientProps;
|
|
42
|
+
const pWidth = props.width;
|
|
43
|
+
const pHeight = props.height;
|
|
44
44
|
if (pWidth > pHeight) {
|
|
45
45
|
scaleX = pWidth / pHeight;
|
|
46
46
|
} else if (pHeight > pWidth) {
|
|
@@ -48,34 +48,27 @@ export const RadialGradient: CanvasShaderType<
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
this.computed = {
|
|
51
|
-
pivotX:
|
|
52
|
-
pivotY:
|
|
51
|
+
pivotX: props.pivot[0] * node.width,
|
|
52
|
+
pivotY: props.pivot[1] * node.height,
|
|
53
53
|
scaleX,
|
|
54
54
|
scaleY,
|
|
55
55
|
size: Math.min(pWidth, pHeight) * 0.5,
|
|
56
|
-
colors:
|
|
56
|
+
colors: props.colors.map((value) => this.toColorString(value)),
|
|
57
57
|
};
|
|
58
58
|
},
|
|
59
59
|
render(ctx, quad, renderContext) {
|
|
60
60
|
renderContext();
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
let
|
|
65
|
-
|
|
61
|
+
const { scaleX, scaleY, pivotX, pivotY, colors, size } = this
|
|
62
|
+
.computed as ComputedRadialGradientValues;
|
|
63
|
+
let x = quad.tx + pivotX;
|
|
64
|
+
let y = quad.ty + pivotY;
|
|
65
|
+
const stops = this.props!.stops;
|
|
66
66
|
|
|
67
67
|
if (scaleX === scaleY) {
|
|
68
|
-
const gradient = ctx.createRadialGradient(
|
|
69
|
-
x,
|
|
70
|
-
y,
|
|
71
|
-
0,
|
|
72
|
-
x,
|
|
73
|
-
y,
|
|
74
|
-
this.computed.size!,
|
|
75
|
-
);
|
|
68
|
+
const gradient = ctx.createRadialGradient(x, y, 0, x, y, size);
|
|
76
69
|
|
|
77
70
|
for (let i = 0; i < colors.length; i++) {
|
|
78
|
-
gradient.addColorStop(
|
|
71
|
+
gradient.addColorStop(stops[i]!, colors[i]!);
|
|
79
72
|
}
|
|
80
73
|
|
|
81
74
|
ctx.fillStyle = gradient;
|
|
@@ -84,28 +77,21 @@ export const RadialGradient: CanvasShaderType<
|
|
|
84
77
|
}
|
|
85
78
|
|
|
86
79
|
ctx.save();
|
|
87
|
-
ctx.scale(scaleX
|
|
88
|
-
x = x / scaleX
|
|
89
|
-
y = y / scaleY
|
|
90
|
-
const gradient = ctx.createRadialGradient(
|
|
91
|
-
x,
|
|
92
|
-
y,
|
|
93
|
-
0,
|
|
94
|
-
x,
|
|
95
|
-
y,
|
|
96
|
-
this.computed.size!,
|
|
97
|
-
);
|
|
80
|
+
ctx.scale(scaleX, scaleY);
|
|
81
|
+
x = x / scaleX;
|
|
82
|
+
y = y / scaleY;
|
|
83
|
+
const gradient = ctx.createRadialGradient(x, y, 0, x, y, size);
|
|
98
84
|
|
|
99
85
|
for (let i = 0; i < colors.length; i++) {
|
|
100
|
-
gradient.addColorStop(
|
|
86
|
+
gradient.addColorStop(stops[i]!, colors[i]!);
|
|
101
87
|
}
|
|
102
88
|
|
|
103
89
|
ctx.fillStyle = gradient;
|
|
104
90
|
ctx.fillRect(
|
|
105
|
-
quad.tx / scaleX
|
|
106
|
-
quad.ty / scaleY
|
|
107
|
-
quad.width / scaleX
|
|
108
|
-
quad.height / scaleY
|
|
91
|
+
quad.tx / scaleX,
|
|
92
|
+
quad.ty / scaleY,
|
|
93
|
+
quad.width / scaleX,
|
|
94
|
+
quad.height / scaleY,
|
|
109
95
|
);
|
|
110
96
|
|
|
111
97
|
ctx.restore();
|
|
@@ -35,18 +35,19 @@ export const RoundedWithBorder: CanvasShaderType<
|
|
|
35
35
|
props: RoundedWithBorderTemplate.props,
|
|
36
36
|
saveAndRestore: true,
|
|
37
37
|
update(node) {
|
|
38
|
+
const props = this.props!;
|
|
38
39
|
const radius = calcFactoredRadiusArray(
|
|
39
|
-
|
|
40
|
+
props.radius as Vec4,
|
|
40
41
|
node.width,
|
|
41
42
|
node.height,
|
|
42
43
|
);
|
|
43
44
|
this.computed.radius = radius;
|
|
44
|
-
this.computed.borderColor = this.toColorString(
|
|
45
|
+
this.computed.borderColor = this.toColorString(props['border-color']);
|
|
45
46
|
this.computed.borderAsym = !valuesAreEqual(
|
|
46
|
-
|
|
47
|
+
props['border-width'] as number[],
|
|
47
48
|
);
|
|
48
49
|
//following vec4 convention 0, 1, 2, 3 => x, y, z, w;
|
|
49
|
-
const [x, y, z, w] =
|
|
50
|
+
const [x, y, z, w] = props['border-width'] as Vec4;
|
|
50
51
|
this.computed.borderRadius = [
|
|
51
52
|
Math.max(0.0, radius[0] - Math.max(x, w) * 0.5),
|
|
52
53
|
Math.max(0.0, radius[1] - Math.max(x, y) * 0.5),
|
|
@@ -55,17 +56,18 @@ export const RoundedWithBorder: CanvasShaderType<
|
|
|
55
56
|
];
|
|
56
57
|
},
|
|
57
58
|
render(ctx, quad, renderContext) {
|
|
59
|
+
const computed = this.computed as ComputedValues;
|
|
58
60
|
roundedRectWithBorder(
|
|
59
61
|
ctx,
|
|
60
62
|
quad.tx,
|
|
61
63
|
quad.ty,
|
|
62
64
|
quad.width,
|
|
63
65
|
quad.height,
|
|
64
|
-
|
|
66
|
+
computed.radius,
|
|
65
67
|
this.props!['border-width'] as Vec4,
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
68
|
+
computed.borderRadius,
|
|
69
|
+
computed.borderColor,
|
|
70
|
+
computed.borderAsym,
|
|
69
71
|
renderContext,
|
|
70
72
|
);
|
|
71
73
|
},
|
|
@@ -38,37 +38,39 @@ export const RoundedWithBorderAndShadow: CanvasShaderType<
|
|
|
38
38
|
props: RoundedWithBorderAndShadowTemplate.props,
|
|
39
39
|
saveAndRestore: true,
|
|
40
40
|
update(node) {
|
|
41
|
+
const props = this.props!;
|
|
41
42
|
const radius = calcFactoredRadiusArray(
|
|
42
|
-
|
|
43
|
+
props.radius as Vec4,
|
|
43
44
|
node.width,
|
|
44
45
|
node.height,
|
|
45
46
|
);
|
|
46
47
|
this.computed.radius = radius;
|
|
47
|
-
this.computed.borderColor = this.toColorString(
|
|
48
|
+
this.computed.borderColor = this.toColorString(props['border-color']);
|
|
48
49
|
this.computed.borderAsym = !valuesAreEqual(
|
|
49
|
-
|
|
50
|
+
props['border-width'] as number[],
|
|
50
51
|
);
|
|
51
|
-
const borderWidth =
|
|
52
|
+
const borderWidth = props['border-width'] as Vec4;
|
|
52
53
|
this.computed.borderRadius = radius.map((value, index) =>
|
|
53
54
|
Math.max(0, value - borderWidth[index]! * 0.5),
|
|
54
55
|
) as Vec4;
|
|
55
56
|
|
|
56
|
-
this.computed.shadowColor = this.toColorString(
|
|
57
|
+
this.computed.shadowColor = this.toColorString(props['shadow-color']);
|
|
57
58
|
this.computed.shadowRadius = radius.map(
|
|
58
|
-
(value) => value +
|
|
59
|
+
(value) => value + props['shadow-blur'],
|
|
59
60
|
) as Vec4;
|
|
60
61
|
},
|
|
61
62
|
render(ctx, quad, renderContext) {
|
|
62
63
|
const { tx, ty, width, height } = quad;
|
|
64
|
+
const computed = this.computed as ComputedValues;
|
|
63
65
|
render.shadow(
|
|
64
66
|
ctx,
|
|
65
67
|
tx,
|
|
66
68
|
ty,
|
|
67
69
|
height,
|
|
68
70
|
width,
|
|
69
|
-
|
|
71
|
+
computed.shadowColor,
|
|
70
72
|
this.props!['shadow-projection'],
|
|
71
|
-
|
|
73
|
+
computed.shadowRadius,
|
|
72
74
|
this.stage.pixelRatio,
|
|
73
75
|
);
|
|
74
76
|
render.roundedRectWithBorder(
|
|
@@ -77,11 +79,11 @@ export const RoundedWithBorderAndShadow: CanvasShaderType<
|
|
|
77
79
|
quad.ty,
|
|
78
80
|
quad.width,
|
|
79
81
|
quad.height,
|
|
80
|
-
|
|
82
|
+
computed.radius,
|
|
81
83
|
this.props!['border-width'] as Vec4,
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
84
|
+
computed.borderRadius,
|
|
85
|
+
computed.borderColor,
|
|
86
|
+
computed.borderAsym,
|
|
85
87
|
renderContext,
|
|
86
88
|
);
|
|
87
89
|
},
|
|
@@ -35,34 +35,35 @@ export const RoundedWithShadow: CanvasShaderType<
|
|
|
35
35
|
props: RoundedWithShadowTemplate.props,
|
|
36
36
|
saveAndRestore: true,
|
|
37
37
|
update(node) {
|
|
38
|
+
const props = this.props!;
|
|
38
39
|
const radius = calcFactoredRadiusArray(
|
|
39
|
-
|
|
40
|
+
props.radius as Vec4,
|
|
40
41
|
node.width,
|
|
41
42
|
node.height,
|
|
42
43
|
);
|
|
43
44
|
this.computed.radius = radius;
|
|
44
|
-
this.computed.shadowColor = this.toColorString(
|
|
45
|
+
this.computed.shadowColor = this.toColorString(props['shadow-color']);
|
|
45
46
|
this.computed.shadowRadius = radius.map(
|
|
46
|
-
(value) => value +
|
|
47
|
+
(value) => value + props['shadow-blur'],
|
|
47
48
|
) as Vec4;
|
|
48
49
|
},
|
|
49
50
|
render(ctx, quad, renderContext) {
|
|
50
51
|
const { tx, ty, width, height } = quad;
|
|
51
|
-
|
|
52
|
+
const computed = this.computed as ComputedValues;
|
|
52
53
|
render.shadow(
|
|
53
54
|
ctx,
|
|
54
55
|
tx,
|
|
55
56
|
ty,
|
|
56
57
|
width,
|
|
57
58
|
height,
|
|
58
|
-
|
|
59
|
+
computed.shadowColor,
|
|
59
60
|
this.props!['shadow-projection'],
|
|
60
|
-
|
|
61
|
+
computed.shadowRadius,
|
|
61
62
|
this.stage.pixelRatio,
|
|
62
63
|
);
|
|
63
64
|
|
|
64
65
|
const path = new Path2D();
|
|
65
|
-
render.roundRect(path, tx, ty, width, height,
|
|
66
|
+
render.roundRect(path, tx, ty, width, height, computed.radius);
|
|
66
67
|
ctx.clip(path);
|
|
67
68
|
renderContext();
|
|
68
69
|
},
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
import type { CoreShaderType } from '../../renderers/CoreShaderNode.js';
|
|
19
19
|
import type { Vec4 } from '../../renderers/webgl/internal/ShaderUtils.js';
|
|
20
|
-
import { validateArrayLength4, type PrefixedType } from '
|
|
20
|
+
import { validateArrayLength4, type PrefixedType } from '../utils.js';
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* Properties of the {@link Border} shader
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
import type { CoreShaderType } from '../../renderers/CoreShaderNode.js';
|
|
19
19
|
import type { Vec4 } from '../../renderers/webgl/internal/ShaderUtils.js';
|
|
20
|
-
import { validateArrayLength4 } from '
|
|
20
|
+
import { validateArrayLength4 } from '../utils.js';
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* Properties of the {@link RoundedRectangle} shader
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
import type { CoreShaderType } from '../../renderers/CoreShaderNode.js';
|
|
19
19
|
import { getBorderProps, type BorderProps } from './BorderTemplate.js';
|
|
20
20
|
import { RoundedTemplate, type RoundedProps } from './RoundedTemplate.js';
|
|
21
|
-
import type { PrefixedType } from '
|
|
21
|
+
import type { PrefixedType } from '../utils.js';
|
|
22
22
|
import { getShadowProps, type ShadowProps } from './ShadowTemplate.js';
|
|
23
23
|
|
|
24
24
|
export type RoundedWithBorderAndShadowProps = RoundedProps &
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
import type { CoreShaderType } from '../../renderers/CoreShaderNode.js';
|
|
19
19
|
import { getBorderProps, type BorderProps } from './BorderTemplate.js';
|
|
20
20
|
import { RoundedTemplate, type RoundedProps } from './RoundedTemplate.js';
|
|
21
|
-
import type { PrefixedType } from '
|
|
21
|
+
import type { PrefixedType } from '../utils.js';
|
|
22
22
|
|
|
23
23
|
export type RoundedWithBorderProps = RoundedProps &
|
|
24
24
|
PrefixedType<BorderProps, 'border'>;
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
import type { CoreShaderType } from '../../renderers/CoreShaderNode.js';
|
|
19
19
|
import { RoundedTemplate, type RoundedProps } from './RoundedTemplate.js';
|
|
20
|
-
import type { PrefixedType } from '
|
|
20
|
+
import type { PrefixedType } from '../utils.js';
|
|
21
21
|
import { getShadowProps, type ShadowProps } from './ShadowTemplate.js';
|
|
22
22
|
|
|
23
23
|
export type RoundedWithShadowProps = RoundedProps &
|
|
@@ -14,9 +14,8 @@
|
|
|
14
14
|
*
|
|
15
15
|
* SPDX-License-Identifier: Apache-2.0
|
|
16
16
|
*/
|
|
17
|
-
|
|
18
|
-
import {
|
|
19
|
-
import type { Vec4 } from '../../renderers/webgl/internal/ShaderUtils.js';
|
|
17
|
+
import { assertTruthy } from '../../utils.js';
|
|
18
|
+
import type { Vec4 } from '../renderers/webgl/internal/ShaderUtils.js';
|
|
20
19
|
|
|
21
20
|
export const validateArrayLength4 = (value: number | number[]): Vec4 => {
|
|
22
21
|
if (!Array.isArray(value)) {
|
|
@@ -26,17 +26,14 @@ import type { WebGlShaderType } from '../../renderers/webgl/WebGlShaderNode.js';
|
|
|
26
26
|
export const HolePunch: WebGlShaderType<HolePunchProps> = {
|
|
27
27
|
props: HolePunchTemplate.props,
|
|
28
28
|
update() {
|
|
29
|
-
|
|
29
|
+
const props = this.props!;
|
|
30
|
+
this.uniform2f('u_pos', props.x, props.y);
|
|
30
31
|
//precalculate to halfSize once instead of for every pixel
|
|
31
|
-
this.uniform2f('u_size',
|
|
32
|
+
this.uniform2f('u_size', props.width * 0.5, props.height * 0.5);
|
|
32
33
|
|
|
33
34
|
this.uniform4fa(
|
|
34
35
|
'u_radius',
|
|
35
|
-
calcFactoredRadiusArray(
|
|
36
|
-
this.props!.radius as Vec4,
|
|
37
|
-
this.props!.width,
|
|
38
|
-
this.props!.height,
|
|
39
|
-
),
|
|
36
|
+
calcFactoredRadiusArray(props.radius as Vec4, props.width, props.height),
|
|
40
37
|
);
|
|
41
38
|
},
|
|
42
39
|
getCacheMarkers(props: HolePunchProps) {
|