@lightningjs/renderer 2.1.2 → 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 +1 -1
- package/dist/src/core/CoreNode.js +42 -44
- 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 +52 -50
- 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
package/package.json
CHANGED
package/src/core/CoreNode.ts
CHANGED
|
@@ -192,7 +192,7 @@ export enum UpdateType {
|
|
|
192
192
|
/**
|
|
193
193
|
* All
|
|
194
194
|
*/
|
|
195
|
-
All =
|
|
195
|
+
All = 14335,
|
|
196
196
|
}
|
|
197
197
|
|
|
198
198
|
/**
|
|
@@ -852,10 +852,15 @@ export class CoreNode extends EventEmitter {
|
|
|
852
852
|
if (parent !== null && !(parent.updateType & UpdateType.Children)) {
|
|
853
853
|
parent.setUpdateType(UpdateType.Children);
|
|
854
854
|
}
|
|
855
|
+
|
|
855
856
|
// If node is part of RTT texture
|
|
856
857
|
// Flag that we need to update
|
|
857
858
|
if (this.parentHasRenderTexture) {
|
|
858
859
|
this.setRTTUpdates(type);
|
|
860
|
+
|
|
861
|
+
if (parent !== null) {
|
|
862
|
+
parent.setUpdateType(UpdateType.RenderTexture);
|
|
863
|
+
}
|
|
859
864
|
}
|
|
860
865
|
}
|
|
861
866
|
|
|
@@ -976,9 +981,9 @@ export class CoreNode extends EventEmitter {
|
|
|
976
981
|
this.updateType ^ UpdateType.All &&
|
|
977
982
|
this.updateType & UpdateType.RenderTexture
|
|
978
983
|
) {
|
|
979
|
-
this.children.
|
|
980
|
-
|
|
981
|
-
}
|
|
984
|
+
for (let i = 0, length = this.children.length; i < length; i++) {
|
|
985
|
+
this.children[i]?.setUpdateType(UpdateType.All);
|
|
986
|
+
}
|
|
982
987
|
}
|
|
983
988
|
|
|
984
989
|
if (this.updateType & UpdateType.Global) {
|
|
@@ -1027,6 +1032,20 @@ export class CoreNode extends EventEmitter {
|
|
|
1027
1032
|
}
|
|
1028
1033
|
}
|
|
1029
1034
|
|
|
1035
|
+
if (this.updateType & UpdateType.WorldAlpha) {
|
|
1036
|
+
if (parent) {
|
|
1037
|
+
this.worldAlpha = parent.worldAlpha * this.props.alpha;
|
|
1038
|
+
} else {
|
|
1039
|
+
this.worldAlpha = this.props.alpha;
|
|
1040
|
+
}
|
|
1041
|
+
this.setUpdateType(
|
|
1042
|
+
UpdateType.Children |
|
|
1043
|
+
UpdateType.PremultipliedColors |
|
|
1044
|
+
UpdateType.IsRenderable,
|
|
1045
|
+
);
|
|
1046
|
+
this.childUpdateType |= UpdateType.WorldAlpha;
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1030
1049
|
if (this.updateType & UpdateType.IsRenderable) {
|
|
1031
1050
|
this.updateIsRenderable();
|
|
1032
1051
|
}
|
|
@@ -1043,20 +1062,6 @@ export class CoreNode extends EventEmitter {
|
|
|
1043
1062
|
this.childUpdateType |= UpdateType.RenderBounds;
|
|
1044
1063
|
}
|
|
1045
1064
|
|
|
1046
|
-
if (this.updateType & UpdateType.WorldAlpha) {
|
|
1047
|
-
if (parent) {
|
|
1048
|
-
this.worldAlpha = parent.worldAlpha * this.props.alpha;
|
|
1049
|
-
} else {
|
|
1050
|
-
this.worldAlpha = this.props.alpha;
|
|
1051
|
-
}
|
|
1052
|
-
this.setUpdateType(
|
|
1053
|
-
UpdateType.Children |
|
|
1054
|
-
UpdateType.PremultipliedColors |
|
|
1055
|
-
UpdateType.IsRenderable,
|
|
1056
|
-
);
|
|
1057
|
-
this.childUpdateType |= UpdateType.WorldAlpha;
|
|
1058
|
-
}
|
|
1059
|
-
|
|
1060
1065
|
if (this.updateType & UpdateType.PremultipliedColors) {
|
|
1061
1066
|
this.premultipliedColorTl = mergeColorAlphaPremultiplied(
|
|
1062
1067
|
this.props.colorTl,
|
|
@@ -1105,11 +1110,8 @@ export class CoreNode extends EventEmitter {
|
|
|
1105
1110
|
this.children.length > 0 &&
|
|
1106
1111
|
this.rtt === false
|
|
1107
1112
|
) {
|
|
1108
|
-
for (let i = 0
|
|
1109
|
-
const child = this.children[i];
|
|
1110
|
-
if (child === undefined) {
|
|
1111
|
-
continue;
|
|
1112
|
-
}
|
|
1113
|
+
for (let i = 0, length = this.children.length; i < length; i++) {
|
|
1114
|
+
const child = this.children[i] as CoreNode;
|
|
1113
1115
|
|
|
1114
1116
|
child.setUpdateType(this.childUpdateType);
|
|
1115
1117
|
|
|
@@ -1234,7 +1236,6 @@ export class CoreNode extends EventEmitter {
|
|
|
1234
1236
|
strictBound.y1 - renderM[0],
|
|
1235
1237
|
strictBound.x2 + renderM[1],
|
|
1236
1238
|
strictBound.y2 + renderM[2],
|
|
1237
|
-
this.preloadBound,
|
|
1238
1239
|
);
|
|
1239
1240
|
}
|
|
1240
1241
|
|
|
@@ -1264,16 +1265,19 @@ export class CoreNode extends EventEmitter {
|
|
|
1264
1265
|
|
|
1265
1266
|
// no clipping, use parent's bounds
|
|
1266
1267
|
if (this.clipping === false) {
|
|
1267
|
-
if (this.parent !== null) {
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
this.parent.
|
|
1274
|
-
|
|
1268
|
+
if (this.parent !== null && this.parent.strictBound !== undefined) {
|
|
1269
|
+
// we have a parent with a valid bound, copy it
|
|
1270
|
+
this.strictBound = createBound(
|
|
1271
|
+
this.parent.strictBound.x1,
|
|
1272
|
+
this.parent.strictBound.y1,
|
|
1273
|
+
this.parent.strictBound.x2,
|
|
1274
|
+
this.parent.strictBound.y2,
|
|
1275
|
+
);
|
|
1276
|
+
|
|
1277
|
+
this.preloadBound = this.createPreloadBounds(this.strictBound);
|
|
1275
1278
|
return;
|
|
1276
1279
|
} else {
|
|
1280
|
+
// no parent or parent does not have a bound, take the stage dimensions
|
|
1277
1281
|
this.strictBound = createBound(
|
|
1278
1282
|
0,
|
|
1279
1283
|
0,
|
|
@@ -1452,8 +1456,7 @@ export class CoreNode extends EventEmitter {
|
|
|
1452
1456
|
this.props.shader = this.stage.defShaderCtr;
|
|
1453
1457
|
|
|
1454
1458
|
const children = [...this.children];
|
|
1455
|
-
for (let i = 0; i <
|
|
1456
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
1459
|
+
for (let i = 0, length = children.length; i < length; i++) {
|
|
1457
1460
|
children[i]!.destroy();
|
|
1458
1461
|
}
|
|
1459
1462
|
// This very action will also remove the node from the parent's children array
|
|
@@ -1743,9 +1746,10 @@ export class CoreNode extends EventEmitter {
|
|
|
1743
1746
|
this.setUpdateType(
|
|
1744
1747
|
UpdateType.PremultipliedColors |
|
|
1745
1748
|
UpdateType.WorldAlpha |
|
|
1746
|
-
UpdateType.Children
|
|
1749
|
+
UpdateType.Children |
|
|
1750
|
+
UpdateType.IsRenderable,
|
|
1747
1751
|
);
|
|
1748
|
-
this.childUpdateType |= UpdateType.
|
|
1752
|
+
this.childUpdateType |= UpdateType.WorldAlpha;
|
|
1749
1753
|
}
|
|
1750
1754
|
|
|
1751
1755
|
get autosize(): boolean {
|
|
@@ -1879,9 +1883,9 @@ export class CoreNode extends EventEmitter {
|
|
|
1879
1883
|
set zIndexLocked(value: number) {
|
|
1880
1884
|
this.props.zIndexLocked = value;
|
|
1881
1885
|
this.setUpdateType(UpdateType.CalculatedZIndex | UpdateType.Children);
|
|
1882
|
-
this.children.
|
|
1883
|
-
|
|
1884
|
-
}
|
|
1886
|
+
for (let i = 0, length = this.children.length; i < length; i++) {
|
|
1887
|
+
this.children[i]!.setUpdateType(UpdateType.CalculatedZIndex);
|
|
1888
|
+
}
|
|
1885
1889
|
}
|
|
1886
1890
|
|
|
1887
1891
|
get zIndex(): number {
|
|
@@ -1891,9 +1895,9 @@ export class CoreNode extends EventEmitter {
|
|
|
1891
1895
|
set zIndex(value: number) {
|
|
1892
1896
|
this.props.zIndex = value;
|
|
1893
1897
|
this.setUpdateType(UpdateType.CalculatedZIndex | UpdateType.Children);
|
|
1894
|
-
this.children.
|
|
1895
|
-
|
|
1896
|
-
}
|
|
1898
|
+
for (let i = 0, length = this.children.length; i < length; i++) {
|
|
1899
|
+
this.children[i]!.setUpdateType(UpdateType.CalculatedZIndex);
|
|
1900
|
+
}
|
|
1897
1901
|
}
|
|
1898
1902
|
|
|
1899
1903
|
get parent(): CoreNode | null {
|
|
@@ -1956,11 +1960,9 @@ export class CoreNode extends EventEmitter {
|
|
|
1956
1960
|
if (value === false && this.texture !== null) {
|
|
1957
1961
|
this.unloadTexture();
|
|
1958
1962
|
this.setUpdateType(UpdateType.All);
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
});
|
|
1963
|
-
|
|
1963
|
+
for (let i = 0, length = this.children.length; i < length; i++) {
|
|
1964
|
+
this.children[i]!.parentHasRenderTexture = false;
|
|
1965
|
+
}
|
|
1964
1966
|
this.stage.renderer?.removeRTTNode(this);
|
|
1965
1967
|
return;
|
|
1966
1968
|
}
|
|
@@ -1982,9 +1984,9 @@ export class CoreNode extends EventEmitter {
|
|
|
1982
1984
|
this.hasRTTupdates = true;
|
|
1983
1985
|
this.setUpdateType(UpdateType.All);
|
|
1984
1986
|
|
|
1985
|
-
this.children.
|
|
1986
|
-
|
|
1987
|
-
}
|
|
1987
|
+
for (let i = 0, length = this.children.length; i < length; i++) {
|
|
1988
|
+
this.children[i]!.setUpdateType(UpdateType.All);
|
|
1989
|
+
}
|
|
1988
1990
|
|
|
1989
1991
|
// Store RTT nodes in a separate list
|
|
1990
1992
|
this.stage.renderer?.renderToTexture(this);
|
|
@@ -275,6 +275,7 @@ export class CoreShaderManager {
|
|
|
275
275
|
shader: InstanceType<ShaderMap['DynamicShader']>,
|
|
276
276
|
props: ExtractProps<ShaderMap['DynamicShader']>,
|
|
277
277
|
): DynamicShaderController<T> {
|
|
278
|
+
shader.bindUniformMethods(props);
|
|
278
279
|
return new DynamicShaderController(shader, props, this);
|
|
279
280
|
}
|
|
280
281
|
|
|
@@ -45,10 +45,6 @@ export class WebGlContextWrapper {
|
|
|
45
45
|
private boundArrayBuffer: WebGLBuffer | null;
|
|
46
46
|
private boundElementArrayBuffer: WebGLBuffer | null;
|
|
47
47
|
private curProgram: WebGLProgram | null;
|
|
48
|
-
private programUniforms: WeakMap<
|
|
49
|
-
WebGLProgram,
|
|
50
|
-
Map<WebGLUniformLocation, any[]>
|
|
51
|
-
> = new WeakMap();
|
|
52
48
|
//#endregion Cached WebGL State
|
|
53
49
|
|
|
54
50
|
//#region Canvas
|
|
@@ -708,22 +704,279 @@ export class WebGlContextWrapper {
|
|
|
708
704
|
this.curProgram = program;
|
|
709
705
|
}
|
|
710
706
|
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
707
|
+
/**
|
|
708
|
+
* Sets the value of a single float uniform variable.
|
|
709
|
+
*
|
|
710
|
+
* @param location - The location of the uniform variable.
|
|
711
|
+
* @param v0 - The value to set.
|
|
712
|
+
*/
|
|
713
|
+
uniform1f(location: WebGLUniformLocation | null, v0: number) {
|
|
714
|
+
const { gl } = this;
|
|
715
|
+
gl.uniform1f(location, v0);
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
/**
|
|
719
|
+
* Sets the value of a float array uniform variable.
|
|
720
|
+
*
|
|
721
|
+
* @param location - The location of the uniform variable.
|
|
722
|
+
* @param value - The array of values to set.
|
|
723
|
+
*/
|
|
724
|
+
uniform1fv(
|
|
725
|
+
location: WebGLUniformLocation | null,
|
|
726
|
+
value: Float32Array | number[],
|
|
715
727
|
) {
|
|
716
|
-
const { gl
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
728
|
+
const { gl } = this;
|
|
729
|
+
gl.uniform1fv(location, value);
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
/**
|
|
733
|
+
* Sets the value of a single integer uniform variable.
|
|
734
|
+
*
|
|
735
|
+
* @param location - The location of the uniform variable.
|
|
736
|
+
* @param v0 - The value to set.
|
|
737
|
+
*/
|
|
738
|
+
uniform1i(location: WebGLUniformLocation | null, v0: number) {
|
|
739
|
+
const { gl } = this;
|
|
740
|
+
gl.uniform1i(location, v0);
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
/**
|
|
744
|
+
* Sets the value of an integer array uniform variable.
|
|
745
|
+
*
|
|
746
|
+
* @param location - The location of the uniform variable.
|
|
747
|
+
* @param value - The array of values to set.
|
|
748
|
+
*/
|
|
749
|
+
uniform1iv(
|
|
750
|
+
location: WebGLUniformLocation | null,
|
|
751
|
+
value: Int32Array | number[],
|
|
752
|
+
) {
|
|
753
|
+
const { gl } = this;
|
|
754
|
+
gl.uniform1iv(location, value);
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
/**
|
|
758
|
+
* Sets the value of a vec2 uniform variable.
|
|
759
|
+
*
|
|
760
|
+
* @param location - The location of the uniform variable.
|
|
761
|
+
* @param v0 - The first component of the vector.
|
|
762
|
+
* @param v1 - The second component of the vector.
|
|
763
|
+
*/
|
|
764
|
+
uniform2f(location: WebGLUniformLocation | null, v0: number, v1: number) {
|
|
765
|
+
const { gl } = this;
|
|
766
|
+
gl.uniform2f(location, v0, v1);
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
/**
|
|
770
|
+
* Sets the value of a vec2 array uniform variable.
|
|
771
|
+
*
|
|
772
|
+
* @param location - The location of the uniform variable.
|
|
773
|
+
* @param value - The array of vec2 values to set.
|
|
774
|
+
*/
|
|
775
|
+
uniform2fv(
|
|
776
|
+
location: WebGLUniformLocation | null,
|
|
777
|
+
value: Float32Array | number[],
|
|
778
|
+
) {
|
|
779
|
+
const { gl } = this;
|
|
780
|
+
gl.uniform2fv(location, value);
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
/**
|
|
784
|
+
* Sets the value of a ivec2 uniform variable.
|
|
785
|
+
*
|
|
786
|
+
* @param location - The location of the uniform variable.
|
|
787
|
+
* @param v0 - The first component of the vector.
|
|
788
|
+
* @param v1 - The second component of the vector.
|
|
789
|
+
*/
|
|
790
|
+
uniform2i(location: WebGLUniformLocation | null, v0: number, v1: number) {
|
|
791
|
+
const { gl } = this;
|
|
792
|
+
gl.uniform2i(location, v0, v1);
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
/**
|
|
796
|
+
* Sets the value of an ivec2 array uniform variable.
|
|
797
|
+
*
|
|
798
|
+
* @param location - The location of the uniform variable.
|
|
799
|
+
* @param value - The array of ivec2 values to set.
|
|
800
|
+
*/
|
|
801
|
+
uniform2iv(
|
|
802
|
+
location: WebGLUniformLocation | null,
|
|
803
|
+
value: Int32Array | number[],
|
|
804
|
+
) {
|
|
805
|
+
const { gl } = this;
|
|
806
|
+
gl.uniform2iv(location, value);
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
/**
|
|
810
|
+
* Sets the value of a vec3 uniform variable.
|
|
811
|
+
*
|
|
812
|
+
* @param location - The location of the uniform variable.
|
|
813
|
+
* @param v0 - The first component of the vector.
|
|
814
|
+
* @param v1 - The second component of the vector.
|
|
815
|
+
* @param v2 - The third component of the vector.
|
|
816
|
+
*/
|
|
817
|
+
uniform3f(
|
|
818
|
+
location: WebGLUniformLocation | null,
|
|
819
|
+
v0: number,
|
|
820
|
+
v1: number,
|
|
821
|
+
v2: number,
|
|
822
|
+
) {
|
|
823
|
+
const { gl } = this;
|
|
824
|
+
gl.uniform3f(location, v0, v1, v2);
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
/**
|
|
828
|
+
* Sets the value of a vec3 array uniform variable.
|
|
829
|
+
*
|
|
830
|
+
* @param location - The location of the uniform variable.
|
|
831
|
+
* @param value - The array of vec3 values to set.
|
|
832
|
+
*/
|
|
833
|
+
uniform3fv(
|
|
834
|
+
location: WebGLUniformLocation | null,
|
|
835
|
+
value: Float32Array | number[],
|
|
836
|
+
) {
|
|
837
|
+
const { gl } = this;
|
|
838
|
+
gl.uniform3fv(location, value);
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
/**
|
|
842
|
+
* Sets the value of a ivec3 uniform variable.
|
|
843
|
+
*
|
|
844
|
+
* @param location - The location of the uniform variable.
|
|
845
|
+
* @param v0 - The first component of the vector.
|
|
846
|
+
* @param v1 - The second component of the vector.
|
|
847
|
+
* @param v2 - The third component of the vector.
|
|
848
|
+
*/
|
|
849
|
+
uniform3i(
|
|
850
|
+
location: WebGLUniformLocation | null,
|
|
851
|
+
v0: number,
|
|
852
|
+
v1: number,
|
|
853
|
+
v2: number,
|
|
854
|
+
) {
|
|
855
|
+
const { gl } = this;
|
|
856
|
+
gl.uniform3i(location, v0, v1, v2);
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
/**
|
|
860
|
+
* Sets the value of an ivec3 array uniform variable.
|
|
861
|
+
*
|
|
862
|
+
* @param location - The location of the uniform variable.
|
|
863
|
+
* @param value - The array of ivec3 values to set.
|
|
864
|
+
*/
|
|
865
|
+
uniform3iv(
|
|
866
|
+
location: WebGLUniformLocation | null,
|
|
867
|
+
value: Int32Array | number[],
|
|
868
|
+
) {
|
|
869
|
+
const { gl } = this;
|
|
870
|
+
gl.uniform3iv(location, value);
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
/**
|
|
874
|
+
* Sets the value of a vec4 uniform variable.
|
|
875
|
+
*
|
|
876
|
+
* @param location - The location of the uniform variable.
|
|
877
|
+
* @param v0 - The first component of the vector.
|
|
878
|
+
* @param v1 - The second component of the vector.
|
|
879
|
+
* @param v2 - The third component of the vector.
|
|
880
|
+
* @param v3 - The fourth component of the vector.
|
|
881
|
+
*/
|
|
882
|
+
uniform4f(
|
|
883
|
+
location: WebGLUniformLocation | null,
|
|
884
|
+
v0: number,
|
|
885
|
+
v1: number,
|
|
886
|
+
v2: number,
|
|
887
|
+
v3: number,
|
|
888
|
+
) {
|
|
889
|
+
const { gl } = this;
|
|
890
|
+
gl.uniform4f(location, v0, v1, v2, v3);
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
/**
|
|
894
|
+
* Sets the value of a vec4 array uniform variable.
|
|
895
|
+
*
|
|
896
|
+
* @param location - The location of the uniform variable.
|
|
897
|
+
* @param value - The array of vec4 values to set.
|
|
898
|
+
*/
|
|
899
|
+
uniform4fv(
|
|
900
|
+
location: WebGLUniformLocation | null,
|
|
901
|
+
value: Float32Array | number[],
|
|
902
|
+
) {
|
|
903
|
+
const { gl } = this;
|
|
904
|
+
gl.uniform4fv(location, value);
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
/**
|
|
908
|
+
* Sets the value of a ivec4 uniform variable.
|
|
909
|
+
*
|
|
910
|
+
* @param location - The location of the uniform variable.
|
|
911
|
+
* @param v0 - The first component of the vector.
|
|
912
|
+
* @param v1 - The second component of the vector.
|
|
913
|
+
* @param v2 - The third component of the vector.
|
|
914
|
+
* @param v3 - The fourth component of the vector.
|
|
915
|
+
*/
|
|
916
|
+
uniform4i(
|
|
917
|
+
location: WebGLUniformLocation | null,
|
|
918
|
+
v0: number,
|
|
919
|
+
v1: number,
|
|
920
|
+
v2: number,
|
|
921
|
+
v3: number,
|
|
922
|
+
) {
|
|
923
|
+
const { gl } = this;
|
|
924
|
+
gl.uniform4i(location, v0, v1, v2, v3);
|
|
925
|
+
}
|
|
926
|
+
|
|
927
|
+
/**
|
|
928
|
+
* Sets the value of an ivec4 array uniform variable.
|
|
929
|
+
*
|
|
930
|
+
* @param location - The location of the uniform variable.
|
|
931
|
+
* @param value - The array of ivec4 values to set.
|
|
932
|
+
*/
|
|
933
|
+
uniform4iv(
|
|
934
|
+
location: WebGLUniformLocation | null,
|
|
935
|
+
value: Int32Array | number[],
|
|
936
|
+
) {
|
|
937
|
+
const { gl } = this;
|
|
938
|
+
gl.uniform4iv(location, value);
|
|
939
|
+
}
|
|
940
|
+
|
|
941
|
+
/**
|
|
942
|
+
* Sets the value of a mat2 uniform variable.
|
|
943
|
+
*
|
|
944
|
+
* @param location - The location of the uniform variable.
|
|
945
|
+
* @param transpose - Whether to transpose the matrix.
|
|
946
|
+
* @param value - The array of mat2 values to set.
|
|
947
|
+
*/
|
|
948
|
+
uniformMatrix2fv(
|
|
949
|
+
location: WebGLUniformLocation | null,
|
|
950
|
+
value: Float32Array | number[],
|
|
951
|
+
) {
|
|
952
|
+
const { gl } = this;
|
|
953
|
+
gl.uniformMatrix2fv(location, false, value);
|
|
954
|
+
}
|
|
955
|
+
|
|
956
|
+
/**
|
|
957
|
+
* Sets the value of a mat2 uniform variable.
|
|
958
|
+
* @param location - The location of the uniform variable.
|
|
959
|
+
* @param value - The array of mat2 values to set.
|
|
960
|
+
*/
|
|
961
|
+
uniformMatrix3fv(
|
|
962
|
+
location: WebGLUniformLocation | null,
|
|
963
|
+
value: Float32Array | number[],
|
|
964
|
+
) {
|
|
965
|
+
const { gl } = this;
|
|
966
|
+
gl.uniformMatrix3fv(location, false, value);
|
|
967
|
+
}
|
|
968
|
+
|
|
969
|
+
/**
|
|
970
|
+
* Sets the value of a mat4 uniform variable.
|
|
971
|
+
* @param location - The location of the uniform variable.
|
|
972
|
+
* @param value - The array of mat4 values to set.
|
|
973
|
+
*/
|
|
974
|
+
uniformMatrix4fv(
|
|
975
|
+
location: WebGLUniformLocation | null,
|
|
976
|
+
value: Float32Array | number[],
|
|
977
|
+
) {
|
|
978
|
+
const { gl } = this;
|
|
979
|
+
gl.uniformMatrix4fv(location, false, value);
|
|
727
980
|
}
|
|
728
981
|
|
|
729
982
|
/**
|
|
@@ -1031,12 +1284,21 @@ export function compareArrays<T>(a: T[], b: T[]): boolean {
|
|
|
1031
1284
|
if (a.length !== b.length) {
|
|
1032
1285
|
return false;
|
|
1033
1286
|
}
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1287
|
+
|
|
1288
|
+
let result = false;
|
|
1289
|
+
for (let i = 0; i < a.length; i++) {
|
|
1290
|
+
if (Array.isArray(a[i]) || a[i] instanceof Float32Array) {
|
|
1291
|
+
result = false;
|
|
1292
|
+
break;
|
|
1040
1293
|
}
|
|
1041
|
-
|
|
1294
|
+
|
|
1295
|
+
if (a[i] !== b[i]) {
|
|
1296
|
+
result = false;
|
|
1297
|
+
break;
|
|
1298
|
+
}
|
|
1299
|
+
|
|
1300
|
+
result = true;
|
|
1301
|
+
}
|
|
1302
|
+
|
|
1303
|
+
return result;
|
|
1042
1304
|
}
|
|
@@ -619,12 +619,13 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
619
619
|
console.log('renderOps', this.renderOps.length);
|
|
620
620
|
}
|
|
621
621
|
|
|
622
|
-
this.renderOps.
|
|
622
|
+
for (let i = 0, length = this.renderOps.length; i < length; i++) {
|
|
623
|
+
const renderOp = this.renderOps[i] as WebGlCoreRenderOp;
|
|
623
624
|
if (doLog) {
|
|
624
625
|
console.log('Quads per operation', renderOp.numQuads);
|
|
625
626
|
}
|
|
626
627
|
renderOp.draw();
|
|
627
|
-
}
|
|
628
|
+
}
|
|
628
629
|
this.quadBufferUsage = this.curBufferIdx * arr.BYTES_PER_ELEMENT;
|
|
629
630
|
}
|
|
630
631
|
|
|
@@ -274,18 +274,23 @@ export abstract class WebGlCoreShader extends CoreShader {
|
|
|
274
274
|
const { width, height } = renderOp.framebufferDimensions || {};
|
|
275
275
|
// Force pixel ratio to 1.0 for render textures since they are always 1:1
|
|
276
276
|
// the final render texture will be rendered to the screen with the correct pixel ratio
|
|
277
|
-
this.
|
|
277
|
+
glw.uniform1f(this.getUniformLocation('u_pixelRatio'), 1.0);
|
|
278
278
|
|
|
279
279
|
// Set resolution to the framebuffer dimensions
|
|
280
|
-
|
|
281
|
-
'u_resolution',
|
|
282
|
-
|
|
280
|
+
glw.uniform2f(
|
|
281
|
+
this.getUniformLocation('u_resolution'),
|
|
282
|
+
width ?? 0,
|
|
283
|
+
height ?? 0,
|
|
283
284
|
);
|
|
284
285
|
} else {
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
286
|
+
glw.uniform1f(
|
|
287
|
+
this.getUniformLocation('u_pixelRatio'),
|
|
288
|
+
renderOp.options.pixelRatio,
|
|
289
|
+
);
|
|
290
|
+
glw.uniform2f(
|
|
291
|
+
this.getUniformLocation('u_resolution'),
|
|
292
|
+
glw.canvas.width,
|
|
293
|
+
glw.canvas.height,
|
|
289
294
|
);
|
|
290
295
|
}
|
|
291
296
|
|
|
@@ -297,26 +302,25 @@ export abstract class WebGlCoreShader extends CoreShader {
|
|
|
297
302
|
if (!dimensions) {
|
|
298
303
|
dimensions = renderOp.dimensions;
|
|
299
304
|
}
|
|
300
|
-
|
|
305
|
+
glw.uniform2f(
|
|
306
|
+
this.getUniformLocation('u_dimensions'),
|
|
307
|
+
dimensions.width,
|
|
308
|
+
dimensions.height,
|
|
309
|
+
);
|
|
301
310
|
}
|
|
302
311
|
if (hasOwn(props, '$alpha')) {
|
|
303
312
|
let alpha = props.$alpha as number | null;
|
|
304
313
|
if (!alpha) {
|
|
305
314
|
alpha = renderOp.alpha;
|
|
306
315
|
}
|
|
307
|
-
this.
|
|
316
|
+
glw.uniform1f(this.getUniformLocation('u_alpha'), alpha);
|
|
308
317
|
}
|
|
309
318
|
this.bindProps(props);
|
|
310
319
|
}
|
|
311
320
|
}
|
|
312
321
|
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
this.glw.setUniform(
|
|
316
|
-
this.uniformTypes[name]!,
|
|
317
|
-
this.uniformLocations[name]!,
|
|
318
|
-
...(value as any),
|
|
319
|
-
);
|
|
322
|
+
getUniformLocation(name: string): WebGLUniformLocation | null {
|
|
323
|
+
return this.uniformLocations[name] || null;
|
|
320
324
|
}
|
|
321
325
|
|
|
322
326
|
bindBufferCollection(buffer: BufferCollection) {
|
|
@@ -57,7 +57,7 @@ export class DefaultShaderBatched extends WebGlCoreShader {
|
|
|
57
57
|
glw.bindTexture(t.ctxTexture);
|
|
58
58
|
});
|
|
59
59
|
const samplers = Array.from(Array(texture.length).keys());
|
|
60
|
-
this.
|
|
60
|
+
this.glw.uniform1iv(this.getUniformLocation('u_textures[0]'), samplers);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
static override shaderSources: ShaderProgramSources = {
|