@lightningjs/renderer 2.1.1 → 2.2.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/README.md +1 -4
- package/dist/exports/core-api.d.ts +74 -0
- package/dist/exports/core-api.js +96 -0
- package/dist/exports/core-api.js.map +1 -0
- package/dist/exports/index.d.ts +1 -0
- package/dist/exports/index.js +1 -0
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/main-api.d.ts +30 -0
- package/dist/exports/main-api.js +45 -0
- package/dist/exports/main-api.js.map +1 -0
- package/dist/src/core/CoreExtension.d.ts +12 -0
- package/dist/src/core/CoreExtension.js +29 -0
- package/dist/src/core/CoreExtension.js.map +1 -0
- package/dist/src/core/CoreNode.d.ts +2 -2
- package/dist/src/core/CoreNode.js +57 -47
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.js +1 -0
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/Matrix2DContext.d.ts +15 -0
- package/dist/src/core/Matrix2DContext.js +45 -0
- package/dist/src/core/Matrix2DContext.js.map +1 -0
- package/dist/src/core/lib/SpatialHash.d.ts +38 -0
- package/dist/src/core/lib/SpatialHash.js +93 -0
- package/dist/src/core/lib/SpatialHash.js.map +1 -0
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +144 -2
- package/dist/src/core/lib/WebGlContextWrapper.js +211 -20
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/glm/common.d.ts +162 -0
- package/dist/src/core/lib/glm/common.js +81 -0
- package/dist/src/core/lib/glm/common.js.map +1 -0
- package/dist/src/core/lib/glm/index.d.ts +11 -0
- package/dist/src/core/lib/glm/index.js +30 -0
- package/dist/src/core/lib/glm/index.js.map +1 -0
- package/dist/src/core/lib/glm/mat2.d.ts +219 -0
- package/dist/src/core/lib/glm/mat2.js +396 -0
- package/dist/src/core/lib/glm/mat2.js.map +1 -0
- package/dist/src/core/lib/glm/mat2d.d.ts +237 -0
- package/dist/src/core/lib/glm/mat2d.js +442 -0
- package/dist/src/core/lib/glm/mat2d.js.map +1 -0
- package/dist/src/core/lib/glm/mat3.d.ts +283 -0
- package/dist/src/core/lib/glm/mat3.js +680 -0
- package/dist/src/core/lib/glm/mat3.js.map +1 -0
- package/dist/src/core/lib/glm/mat4.d.ts +550 -0
- package/dist/src/core/lib/glm/mat4.js +1802 -0
- package/dist/src/core/lib/glm/mat4.js.map +1 -0
- package/dist/src/core/lib/glm/quat.d.ts +363 -0
- package/dist/src/core/lib/glm/quat.js +693 -0
- package/dist/src/core/lib/glm/quat.js.map +1 -0
- package/dist/src/core/lib/glm/quat2.d.ts +356 -0
- package/dist/src/core/lib/glm/quat2.js +754 -0
- package/dist/src/core/lib/glm/quat2.js.map +1 -0
- package/dist/src/core/lib/glm/vec2.d.ts +365 -0
- package/dist/src/core/lib/glm/vec2.js +569 -0
- package/dist/src/core/lib/glm/vec2.js.map +1 -0
- package/dist/src/core/lib/glm/vec3.d.ts +406 -0
- package/dist/src/core/lib/glm/vec3.js +720 -0
- package/dist/src/core/lib/glm/vec3.js.map +1 -0
- package/dist/src/core/lib/glm/vec4.d.ts +330 -0
- package/dist/src/core/lib/glm/vec4.js +608 -0
- package/dist/src/core/lib/glm/vec4.js.map +1 -0
- package/dist/src/core/lib/renderToTexture.d.ts +1 -0
- package/dist/src/core/lib/renderToTexture.js +2 -0
- package/dist/src/core/lib/renderToTexture.js.map +1 -0
- package/dist/src/core/lib/textcompression-utils.d.ts +1 -0
- package/dist/src/core/lib/textcompression-utils.js +2 -0
- package/dist/src/core/lib/textcompression-utils.js.map +1 -0
- package/dist/src/core/lib/txcompression-utils.d.ts +1 -0
- package/dist/src/core/lib/txcompression-utils.js +2 -0
- package/dist/src/core/lib/txcompression-utils.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +3 -2
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +8 -9
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderTexture.d.ts +29 -0
- package/dist/src/core/renderers/webgl/WebGlRenderTexture.js +86 -0
- package/dist/src/core/renderers/webgl/WebGlRenderTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DistortShader.d.ts +44 -0
- package/dist/src/core/renderers/webgl/shaders/DistortShader.js +172 -0
- package/dist/src/core/renderers/webgl/shaders/DistortShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +2 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +55 -2
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/RefractionShader.d.ts +78 -0
- package/dist/src/core/renderers/webgl/shaders/RefractionShader.js +172 -0
- package/dist/src/core/renderers/webgl/shaders/RefractionShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +6 -6
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +2 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +1 -1
- package/dist/src/core/scene/Scene.d.ts +59 -0
- package/dist/src/core/scene/Scene.js +106 -0
- package/dist/src/core/scene/Scene.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +20 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +55 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +12 -9
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
- package/dist/src/main-api/ICoreDriver.d.ts +24 -0
- package/dist/src/main-api/ICoreDriver.js +20 -0
- package/dist/src/main-api/ICoreDriver.js.map +1 -0
- package/dist/src/main-api/IRenderDriver.d.ts +20 -0
- package/dist/src/main-api/IRenderDriver.js +20 -0
- package/dist/src/main-api/IRenderDriver.js.map +1 -0
- package/dist/src/main-api/IShaderController.d.ts +14 -0
- package/dist/src/main-api/IShaderController.js +30 -0
- package/dist/src/main-api/IShaderController.js.map +1 -0
- package/dist/src/main-api/RendererMain.d.ts +378 -0
- package/dist/src/main-api/RendererMain.js +367 -0
- package/dist/src/main-api/RendererMain.js.map +1 -0
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +9 -0
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +38 -0
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +1 -0
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +56 -0
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +101 -0
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +1 -0
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +32 -0
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +28 -0
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +1 -0
- package/dist/src/render-drivers/main/MainCoreDriver.d.ts +21 -0
- package/dist/src/render-drivers/main/MainCoreDriver.js +115 -0
- package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -0
- package/dist/src/render-drivers/main/MainOnlyNode.d.ts +101 -0
- package/dist/src/render-drivers/main/MainOnlyNode.js +425 -0
- package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -0
- package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +6 -0
- package/dist/src/render-drivers/main/MainOnlyShaderController.js +15 -0
- package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +1 -0
- package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +47 -0
- package/dist/src/render-drivers/main/MainOnlyTextNode.js +204 -0
- package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -0
- package/dist/src/render-drivers/main/MainRenderDriver.d.ts +17 -0
- package/dist/src/render-drivers/main/MainRenderDriver.js +88 -0
- package/dist/src/render-drivers/main/MainRenderDriver.js.map +1 -0
- package/dist/src/render-drivers/threadx/NodeStruct.d.ts +93 -0
- package/dist/src/render-drivers/threadx/NodeStruct.js +290 -0
- package/dist/src/render-drivers/threadx/NodeStruct.js.map +1 -0
- package/dist/src/render-drivers/threadx/SharedNode.d.ts +40 -0
- package/dist/src/render-drivers/threadx/SharedNode.js +61 -0
- package/dist/src/render-drivers/threadx/SharedNode.js.map +1 -0
- package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +44 -0
- package/dist/src/render-drivers/threadx/TextNodeStruct.js +203 -0
- package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +25 -0
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +232 -0
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +20 -0
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +84 -0
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +46 -0
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js +160 -0
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +6 -0
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +15 -0
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +28 -0
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +55 -0
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +21 -0
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +198 -0
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +70 -0
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +32 -0
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +1 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +19 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +178 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +27 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +109 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -0
- package/dist/src/render-drivers/threadx/worker/renderer.d.ts +1 -0
- package/dist/src/render-drivers/threadx/worker/renderer.js +147 -0
- package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -0
- package/dist/src/render-drivers/utils.d.ts +12 -0
- package/dist/src/render-drivers/utils.js +69 -0
- package/dist/src/render-drivers/utils.js.map +1 -0
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/exports/index.ts +1 -0
- package/package.json +1 -1
- package/src/core/CoreNode.ts +69 -54
- package/src/core/CoreShaderManager.ts +1 -0
- package/src/core/lib/WebGlContextWrapper.ts +288 -26
- package/src/core/renderers/webgl/WebGlCoreRenderer.ts +3 -2
- package/src/core/renderers/webgl/WebGlCoreShader.ts +21 -17
- package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +1 -1
- package/src/core/renderers/webgl/shaders/DynamicShader.ts +75 -3
- package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +4 -1
- package/src/core/renderers/webgl/shaders/SdfShader.ts +21 -6
- package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +3 -0
- package/src/core/text-rendering/renderers/TextRenderer.ts +18 -18
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
type DimensionsShaderProp,
|
|
23
23
|
type AlphaShaderProp,
|
|
24
24
|
} from '../WebGlCoreShader.js';
|
|
25
|
-
import type
|
|
25
|
+
import { type UniformInfo } from '../internal/ShaderUtils.js';
|
|
26
26
|
import type { WebGlCoreCtxTexture } from '../WebGlCoreCtxTexture.js';
|
|
27
27
|
import {
|
|
28
28
|
ShaderEffect,
|
|
@@ -33,6 +33,7 @@ import {
|
|
|
33
33
|
} from './effects/ShaderEffect.js';
|
|
34
34
|
import type { EffectMap } from '../../../CoreShaderManager.js';
|
|
35
35
|
import { assertTruthy } from '../../../../utils.js';
|
|
36
|
+
import type { UniformMethodMap } from '../../../lib/WebGlContextWrapper.js';
|
|
36
37
|
|
|
37
38
|
export interface DynamicShaderProps
|
|
38
39
|
extends DimensionsShaderProp,
|
|
@@ -74,6 +75,7 @@ const getResolvedEffect = (
|
|
|
74
75
|
const result: ShaderEffectValueMap = {
|
|
75
76
|
value: defaultPropValues[key] as ShaderEffectUniform['value'],
|
|
76
77
|
programValue: undefined,
|
|
78
|
+
method: uniform.method,
|
|
77
79
|
updateOnBind: uniform.updateOnBind || false,
|
|
78
80
|
hasValidator: uniform.validator !== undefined,
|
|
79
81
|
hasProgramValueUpdater: uniform.updateProgramValue !== undefined,
|
|
@@ -142,13 +144,82 @@ export class DynamicShader extends WebGlCoreShader {
|
|
|
142
144
|
glw.bindTexture(textures[0]!.ctxTexture);
|
|
143
145
|
}
|
|
144
146
|
|
|
147
|
+
bindUniformMethods(props: DynamicShaderProps): void {
|
|
148
|
+
const glw = this.glw;
|
|
149
|
+
const effects = props.effects;
|
|
150
|
+
const effectsL = effects!.length;
|
|
151
|
+
for (let i = 0; i < effectsL; i++) {
|
|
152
|
+
const uniformInfo = this.effects[i]!.uniformInfo;
|
|
153
|
+
const effect = effects![i]! as Record<string, any>;
|
|
154
|
+
const propKeys = Object.keys(effect.props);
|
|
155
|
+
const propsLength = propKeys.length;
|
|
156
|
+
for (let j = 0; j < propsLength; j++) {
|
|
157
|
+
const key = propKeys[j]!;
|
|
158
|
+
const method = effect.props[key].method as keyof UniformMethodMap;
|
|
159
|
+
const location = this.getUniformLocation(uniformInfo[key]!.name);
|
|
160
|
+
|
|
161
|
+
if (
|
|
162
|
+
method === 'uniform2fv' ||
|
|
163
|
+
method === 'uniform2iv' ||
|
|
164
|
+
//uniform === 'uniform3fv ' || <--- check why this isnt recognized
|
|
165
|
+
method === 'uniform3iv' ||
|
|
166
|
+
method === 'uniform4fv' ||
|
|
167
|
+
method === 'uniform4iv' ||
|
|
168
|
+
method === 'uniformMatrix2fv' ||
|
|
169
|
+
method === 'uniformMatrix3fv' ||
|
|
170
|
+
method === 'uniformMatrix4fv' ||
|
|
171
|
+
method === 'uniform1f' ||
|
|
172
|
+
method === 'uniform1fv' ||
|
|
173
|
+
method === 'uniform1i' ||
|
|
174
|
+
method === 'uniform1iv'
|
|
175
|
+
) {
|
|
176
|
+
effect.props[key].setUniformValue = function () {
|
|
177
|
+
glw[method](location, this.programValue);
|
|
178
|
+
};
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
if (method === 'uniform2f' || method === 'uniform2i') {
|
|
183
|
+
effect.props[key].setUniformValue = function () {
|
|
184
|
+
glw[method](location, this.programValue[0]!, this.programValue[1]!);
|
|
185
|
+
};
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
if (method === 'uniform3f' || method === 'uniform3i') {
|
|
190
|
+
effect.props[key].setUniformValue = function () {
|
|
191
|
+
glw[method](
|
|
192
|
+
location,
|
|
193
|
+
this.programValue[0]!,
|
|
194
|
+
this.programValue[1]!,
|
|
195
|
+
this.programValue[2]!,
|
|
196
|
+
);
|
|
197
|
+
};
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
if (method === 'uniform4f' || method === 'uniform4i') {
|
|
202
|
+
effect.props[key].setUniformValue = function () {
|
|
203
|
+
glw[method](
|
|
204
|
+
location,
|
|
205
|
+
this.programValue[0]!,
|
|
206
|
+
this.programValue[1]!,
|
|
207
|
+
this.programValue[2]!,
|
|
208
|
+
this.programValue[3]!,
|
|
209
|
+
);
|
|
210
|
+
};
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
145
217
|
protected override bindProps(props: Required<DynamicShaderProps>): void {
|
|
146
218
|
const effects = props.effects;
|
|
147
219
|
const effectsL = effects.length;
|
|
148
220
|
let i = 0;
|
|
149
221
|
for (; i < effectsL; i++) {
|
|
150
222
|
const effect = effects[i]! as Record<string, any>;
|
|
151
|
-
const uniformInfo = this.effects[i]!.uniformInfo;
|
|
152
223
|
const propKeys = Object.keys(effect.props);
|
|
153
224
|
const propsLength = propKeys.length;
|
|
154
225
|
let j = 0;
|
|
@@ -162,7 +233,8 @@ export class DynamicShader extends WebGlCoreShader {
|
|
|
162
233
|
]?.uniforms[key];
|
|
163
234
|
uniform?.updateProgramValue!(effect.props[key], props);
|
|
164
235
|
}
|
|
165
|
-
|
|
236
|
+
|
|
237
|
+
prop.setUniformValue();
|
|
166
238
|
}
|
|
167
239
|
}
|
|
168
240
|
}
|
|
@@ -80,7 +80,10 @@ export class RoundedRectangle extends WebGlCoreShader {
|
|
|
80
80
|
const radiusFactor =
|
|
81
81
|
Math.min(props.$dimensions.width, props.$dimensions.height) /
|
|
82
82
|
(2.0 * props.radius);
|
|
83
|
-
this.
|
|
83
|
+
this.glw.uniform1f(
|
|
84
|
+
this.getUniformLocation('u_radius'),
|
|
85
|
+
props.radius * Math.min(radiusFactor, 1),
|
|
86
|
+
);
|
|
84
87
|
}
|
|
85
88
|
|
|
86
89
|
override canBatchShaderProps(
|
|
@@ -89,18 +89,33 @@ export class SdfShader extends WebGlCoreShader {
|
|
|
89
89
|
const resolvedProps = SdfShader.resolveDefaults(props);
|
|
90
90
|
for (const key in resolvedProps) {
|
|
91
91
|
if (key === 'transform') {
|
|
92
|
-
this.
|
|
92
|
+
this.glw.uniformMatrix3fv(
|
|
93
|
+
this.getUniformLocation('u_transform'),
|
|
94
|
+
resolvedProps[key],
|
|
95
|
+
);
|
|
93
96
|
} else if (key === 'scrollY') {
|
|
94
|
-
this.
|
|
97
|
+
this.glw.uniform1f(
|
|
98
|
+
this.getUniformLocation('u_scrollY'),
|
|
99
|
+
resolvedProps[key],
|
|
100
|
+
);
|
|
95
101
|
} else if (key === 'color') {
|
|
96
102
|
const components = getNormalizedRgbaComponents(resolvedProps.color);
|
|
97
|
-
this.
|
|
103
|
+
this.glw.uniform4fv(this.getUniformLocation('u_color'), components);
|
|
98
104
|
} else if (key === 'size') {
|
|
99
|
-
this.
|
|
105
|
+
this.glw.uniform1f(
|
|
106
|
+
this.getUniformLocation('u_size'),
|
|
107
|
+
resolvedProps[key],
|
|
108
|
+
);
|
|
100
109
|
} else if (key === 'distanceRange') {
|
|
101
|
-
this.
|
|
110
|
+
this.glw.uniform1f(
|
|
111
|
+
this.getUniformLocation('u_distanceRange'),
|
|
112
|
+
resolvedProps[key],
|
|
113
|
+
);
|
|
102
114
|
} else if (key === 'debug') {
|
|
103
|
-
this.
|
|
115
|
+
this.glw.uniform1i(
|
|
116
|
+
this.getUniformLocation('u_debug'),
|
|
117
|
+
resolvedProps[key] ? 1 : 0,
|
|
118
|
+
);
|
|
104
119
|
}
|
|
105
120
|
}
|
|
106
121
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { EffectMap } from '../../../../CoreShaderManager.js';
|
|
2
2
|
import type { ExtractProps } from '../../../../CoreTextureManager.js';
|
|
3
|
+
import type { WebGlContextWrapper } from '../../../../lib/WebGlContextWrapper.js';
|
|
3
4
|
import type {
|
|
4
5
|
AlphaShaderProp,
|
|
5
6
|
DimensionsShaderProp,
|
|
@@ -89,6 +90,8 @@ export interface ShaderEffectValueMap
|
|
|
89
90
|
AlphaShaderProp {
|
|
90
91
|
value: ShaderEffectUniform['value'];
|
|
91
92
|
programValue: number | Float32Array | undefined;
|
|
93
|
+
method: keyof UniformMethodMap;
|
|
94
|
+
setUniformValue?: () => void | null;
|
|
92
95
|
hasValidator: boolean;
|
|
93
96
|
hasProgramValueUpdater: boolean;
|
|
94
97
|
updateOnBind: boolean;
|
|
@@ -431,24 +431,24 @@ export abstract class TextRenderer<
|
|
|
431
431
|
};
|
|
432
432
|
// For each prop setter add a wrapper method that checks if the prop is
|
|
433
433
|
// different before calling the setter
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
434
|
+
const propSet = {};
|
|
435
|
+
Object.keys(propSetters).forEach((key) => {
|
|
436
|
+
Object.defineProperty(propSet, key, {
|
|
437
|
+
value: (state: StateT, value: TrProps[keyof TrProps]) => {
|
|
438
|
+
// Check if the current prop value is different before calling the setter
|
|
439
|
+
if (state.props[key as keyof TrProps] !== value) {
|
|
440
|
+
propSetters[key as keyof TrPropSetters](state, value as never);
|
|
441
|
+
|
|
442
|
+
// Assume any prop change will require a render
|
|
443
|
+
// This ensures that renders are triggered appropriately even with RAF paused
|
|
444
|
+
this.stage.requestRender();
|
|
445
|
+
}
|
|
446
|
+
},
|
|
447
|
+
writable: false, // Prevents property from being changed
|
|
448
|
+
configurable: false, // Prevents property from being deleted
|
|
449
|
+
});
|
|
450
|
+
});
|
|
451
|
+
this.set = propSet as Readonly<TrPropSetters<StateT>>;
|
|
452
452
|
}
|
|
453
453
|
|
|
454
454
|
setStatus(state: StateT, status: StateT['status'], error?: Error) {
|