@lightningjs/renderer 2.13.1 → 3.0.0-beta2
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/canvas-shaders.d.ts +10 -0
- package/dist/exports/canvas-shaders.js +27 -0
- package/dist/exports/canvas-shaders.js.map +1 -0
- package/dist/exports/canvas.d.ts +7 -1
- package/dist/exports/canvas.js +7 -1
- package/dist/exports/canvas.js.map +1 -1
- package/dist/exports/index.d.ts +15 -8
- package/dist/exports/index.js +7 -4
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/webgl-shaders.d.ts +11 -0
- package/dist/exports/webgl-shaders.js +28 -0
- package/dist/exports/webgl-shaders.js.map +1 -0
- package/dist/exports/webgl.d.ts +9 -1
- package/dist/exports/webgl.js +9 -1
- package/dist/exports/webgl.js.map +1 -1
- package/dist/src/core/CoreNode.d.ts +10 -5
- package/dist/src/core/CoreNode.js +34 -13
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.d.ts +29 -71
- package/dist/src/core/CoreShaderManager.js +110 -97
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/CoreStuff.d.ts +1 -0
- package/dist/src/core/CoreStuff.js +138 -0
- package/dist/src/core/CoreStuff.js.map +1 -0
- package/dist/src/core/CoreTextNode.js +1 -8
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTexturizer.d.ts +14 -0
- package/dist/src/core/CoreTexturizer.js +47 -0
- package/dist/src/core/CoreTexturizer.js.map +1 -0
- package/dist/src/core/LngNode.d.ts +736 -0
- package/dist/src/core/LngNode.js +1174 -0
- package/dist/src/core/LngNode.js.map +1 -0
- 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/ShaderNode.d.ts +10 -0
- package/dist/src/core/ShaderNode.js +30 -0
- package/dist/src/core/ShaderNode.js.map +1 -0
- package/dist/src/core/Stage.d.ts +11 -14
- package/dist/src/core/Stage.js +24 -29
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextNode.d.ts +103 -0
- package/dist/src/core/TextNode.js +331 -0
- package/dist/src/core/TextNode.js.map +1 -0
- package/dist/src/core/animations/CoreAnimation.d.ts +0 -1
- package/dist/src/core/animations/CoreAnimation.js +6 -52
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/lib/Coords.d.ts +14 -0
- package/dist/src/core/lib/Coords.js +55 -0
- package/dist/src/core/lib/Coords.js.map +1 -0
- package/dist/src/core/lib/RenderCoords.d.ts +9 -10
- package/dist/src/core/lib/RenderCoords.js +43 -55
- package/dist/src/core/lib/RenderCoords.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +89 -54
- package/dist/src/core/lib/WebGlContextWrapper.js +153 -157
- 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/{src/core/renderers/CoreShader.ts → dist/src/core/lib/glm/index.js} +12 -23
- 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/textureCompression.js +0 -1
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/lib/utils.d.ts +2 -1
- package/dist/src/core/lib/utils.js.map +1 -1
- package/dist/src/core/platform.js +1 -0
- package/dist/src/core/platform.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +11 -21
- package/dist/src/core/renderers/CoreRenderer.js +0 -6
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderManager.d.ts +19 -0
- package/dist/src/core/renderers/CoreShaderManager.js +33 -0
- package/dist/src/core/renderers/CoreShaderManager.js.map +1 -0
- package/dist/src/core/renderers/CoreShaderNode.d.ts +58 -0
- package/dist/src/core/renderers/CoreShaderNode.js +104 -0
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -0
- package/dist/src/core/renderers/CoreShaderProgram.d.ts +4 -0
- package/dist/src/core/renderers/CoreShaderProgram.js +20 -0
- package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -0
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +36 -0
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +212 -0
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -0
- package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +21 -0
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +60 -0
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -0
- package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +16 -0
- package/dist/src/core/renderers/canvas/CanvasTexture.js +124 -0
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -0
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -13
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +192 -113
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +2 -0
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js +14 -0
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +27 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +82 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +11 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +34 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +12 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +55 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +9 -0
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +38 -0
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +57 -0
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +227 -0
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +44 -0
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +118 -0
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +134 -0
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +547 -0
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +222 -0
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js +334 -0
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +35 -0
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +201 -0
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -0
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +32 -5
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +50 -0
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.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/shaders/canvas/Border.d.ts +9 -0
- package/dist/src/core/shaders/canvas/Border.js +57 -0
- package/dist/src/core/shaders/canvas/Border.js.map +1 -0
- package/dist/src/core/shaders/canvas/HolePunch.d.ts +7 -0
- package/dist/src/core/shaders/canvas/HolePunch.js +38 -0
- package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -0
- package/dist/src/core/shaders/canvas/LinearGradient.d.ts +10 -0
- package/dist/src/core/shaders/canvas/LinearGradient.js +46 -0
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -0
- package/dist/src/core/shaders/canvas/RadialGradient.d.ts +11 -0
- package/dist/src/core/shaders/canvas/RadialGradient.js +68 -0
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -0
- package/dist/src/core/shaders/canvas/Rounded.d.ts +7 -0
- package/dist/src/core/shaders/canvas/Rounded.js +33 -0
- package/dist/src/core/shaders/canvas/Rounded.js.map +1 -0
- package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +7 -0
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +35 -0
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -0
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +8 -0
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +39 -0
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -0
- package/dist/src/core/shaders/canvas/RoundedWithShadow.d.ts +7 -0
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +38 -0
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -0
- package/dist/src/core/shaders/canvas/Shadow.d.ts +8 -0
- package/dist/src/core/shaders/canvas/Shadow.js +31 -0
- package/dist/src/core/shaders/canvas/Shadow.js.map +1 -0
- package/dist/src/core/shaders/canvas/utils/render.d.ts +5 -0
- package/dist/src/core/shaders/canvas/utils/render.js +84 -0
- package/dist/src/core/shaders/canvas/utils/render.js.map +1 -0
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +37 -0
- package/dist/src/core/shaders/templates/BorderTemplate.js +73 -0
- package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +46 -0
- package/dist/src/core/shaders/templates/HolePunchTemplate.js +35 -0
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/LinearGradientTemplate.d.ts +23 -0
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js +47 -0
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +31 -0
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js +49 -0
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/RoundedTemplate.d.ts +29 -0
- package/dist/src/core/shaders/templates/RoundedTemplate.js +67 -0
- package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +7 -0
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +24 -0
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +6 -0
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +23 -0
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +6 -0
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +23 -0
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +34 -0
- package/dist/src/core/shaders/templates/ShadowTemplate.js +66 -0
- package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -0
- package/dist/src/core/shaders/templates/shaderUtils.d.ts +5 -0
- package/dist/src/core/shaders/templates/shaderUtils.js +41 -0
- package/dist/src/core/shaders/templates/shaderUtils.js.map +1 -0
- package/dist/src/core/shaders/webgl/Border.d.ts +3 -0
- package/dist/src/core/shaders/webgl/Border.js +87 -0
- package/dist/src/core/shaders/webgl/Border.js.map +1 -0
- package/dist/src/core/shaders/webgl/Default.d.ts +2 -0
- package/dist/src/core/shaders/webgl/Default.js +86 -0
- package/dist/src/core/shaders/webgl/Default.js.map +1 -0
- package/dist/src/core/shaders/webgl/DefaultBatched.d.ts +2 -0
- package/dist/src/core/shaders/webgl/DefaultBatched.js +104 -0
- package/dist/src/core/shaders/webgl/DefaultBatched.js.map +1 -0
- package/dist/src/core/shaders/webgl/HolePunch.d.ts +3 -0
- package/dist/src/core/shaders/webgl/HolePunch.js +64 -0
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -0
- package/dist/src/core/shaders/webgl/LinearGradient.d.ts +3 -0
- package/dist/src/core/shaders/webgl/LinearGradient.js +75 -0
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -0
- package/dist/src/core/shaders/webgl/RadialGradient.d.ts +3 -0
- package/dist/src/core/shaders/webgl/RadialGradient.js +73 -0
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -0
- package/dist/src/core/shaders/webgl/Rounded.d.ts +7 -0
- package/dist/src/core/shaders/webgl/Rounded.js +86 -0
- package/dist/src/core/shaders/webgl/Rounded.js.map +1 -0
- package/dist/src/core/shaders/webgl/RoundedWithBorder.d.ts +3 -0
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +97 -0
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -0
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.d.ts +3 -0
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +112 -0
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -0
- package/dist/src/core/shaders/webgl/RoundedWithShadow.d.ts +3 -0
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +84 -0
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -0
- package/dist/src/core/shaders/webgl/SdfShader.d.ts +32 -0
- package/dist/src/core/shaders/webgl/SdfShader.js +116 -0
- package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -0
- package/dist/src/core/shaders/webgl/Shadow.d.ts +3 -0
- package/dist/src/core/shaders/webgl/Shadow.js +110 -0
- package/dist/src/core/shaders/webgl/Shadow.js.map +1 -0
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +6 -0
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +2 -3
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +34 -31
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- 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.d.ts +1 -4
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +1 -1
- package/dist/src/main-api/ICoreDriver.d.ts +4 -1
- package/dist/src/main-api/INode.d.ts +9 -9
- 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/IShaderNode.d.ts +17 -0
- package/dist/src/main-api/IShaderNode.js +19 -0
- package/dist/src/main-api/IShaderNode.js.map +1 -0
- package/dist/src/main-api/Renderer.d.ts +8 -91
- package/dist/src/main-api/Renderer.js +3 -54
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/main-api/RendererMain.d.ts +2 -5
- package/dist/src/main-api/RendererMain.js +4 -6
- package/dist/src/main-api/RendererMain.js.map +1 -1
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +1 -1
- package/dist/src/render-drivers/main/MainCoreDriver.d.ts +4 -1
- package/dist/src/render-drivers/main/MainCoreDriver.js +4 -1
- package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -1
- package/dist/src/render-drivers/main/MainOnlyNode.d.ts +6 -8
- package/dist/src/render-drivers/main/MainOnlyNode.js +1 -30
- package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -1
- 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/MainOnlyShaderNode.d.ts +7 -0
- package/dist/src/render-drivers/main/MainOnlyShaderNode.js +34 -0
- package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +1 -0
- package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +1 -1
- package/dist/src/render-drivers/main/MainOnlyTextNode.js +3 -2
- package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -1
- 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 +0 -3
- package/dist/src/render-drivers/threadx/NodeStruct.js +0 -9
- package/dist/src/render-drivers/threadx/NodeStruct.js.map +1 -1
- package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -1
- package/dist/src/render-drivers/threadx/SharedNode.js +0 -1
- package/dist/src/render-drivers/threadx/SharedNode.js.map +1 -1
- package/dist/src/render-drivers/threadx/TextNodeStruct.js +1 -3
- package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +1 -1
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +4 -1
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +4 -2
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -1
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +4 -8
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +24 -53
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +1 -1
- package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +5 -7
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js +2 -8
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -1
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +6 -0
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +16 -0
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +7 -0
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +15 -0
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +1 -1
- 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/worker/ThreadXRendererNode.js +0 -7
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -1
- package/dist/src/render-drivers/threadx/worker/renderer.js +0 -2
- package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -1
- package/dist/src/render-drivers/utils.js +1 -6
- package/dist/src/render-drivers/utils.js.map +1 -1
- package/dist/src/utils.d.ts +6 -0
- package/dist/src/utils.js +18 -0
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/exports/canvas-shaders.ts +28 -0
- package/exports/canvas.ts +7 -1
- package/exports/index.ts +17 -17
- package/exports/webgl-shaders.ts +28 -0
- package/exports/webgl.ts +13 -1
- package/package.json +3 -1
- package/src/core/CoreNode.test.ts +3 -2
- package/src/core/CoreNode.ts +50 -19
- package/src/core/CoreShaderManager.ts +127 -226
- package/src/core/CoreTextNode.ts +1 -17
- package/src/core/Stage.ts +36 -41
- package/src/core/animations/CoreAnimation.ts +8 -64
- package/src/core/lib/RenderCoords.ts +52 -67
- package/src/core/lib/WebGlContextWrapper.ts +278 -236
- package/src/core/lib/textureCompression.ts +3 -3
- package/src/core/lib/utils.ts +3 -1
- package/src/core/platform.ts +1 -0
- package/src/core/renderers/CoreRenderer.ts +19 -27
- package/src/core/renderers/CoreShaderNode.ts +167 -0
- package/src/core/renderers/{canvas/shaders/UnsupportedShader.ts → CoreShaderProgram.ts} +3 -28
- package/src/core/renderers/canvas/CanvasRenderer.ts +298 -0
- package/src/core/renderers/canvas/CanvasShaderNode.ts +99 -0
- package/src/core/renderers/canvas/{CanvasCoreTexture.ts → CanvasTexture.ts} +6 -3
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +2 -13
- package/src/core/renderers/canvas/internal/ColorUtils.ts +16 -0
- package/src/core/renderers/webgl/{WebGlCoreCtxRenderTexture.ts → WebGlCtxRenderTexture.ts} +2 -2
- package/src/core/renderers/webgl/{WebGlCoreCtxSubTexture.ts → WebGlCtxSubTexture.ts} +2 -2
- package/src/core/renderers/webgl/{WebGlCoreCtxTexture.ts → WebGlCtxTexture.ts} +1 -1
- package/src/core/renderers/webgl/WebGlRenderOp.ts +161 -0
- package/src/core/renderers/webgl/{WebGlCoreRenderer.ts → WebGlRenderer.ts} +155 -250
- package/src/core/renderers/webgl/WebGlShaderNode.ts +437 -0
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +318 -0
- package/src/core/renderers/webgl/internal/ShaderUtils.ts +143 -5
- package/src/core/shaders/canvas/Border.ts +78 -0
- package/src/core/shaders/canvas/HolePunch.ts +62 -0
- package/src/core/shaders/canvas/LinearGradient.ts +69 -0
- package/src/core/shaders/canvas/RadialGradient.ts +113 -0
- package/src/core/shaders/canvas/Rounded.ts +55 -0
- package/src/core/shaders/canvas/RoundedWithBorder.ts +68 -0
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +88 -0
- package/src/core/shaders/canvas/RoundedWithShadow.ts +69 -0
- package/src/core/shaders/canvas/Shadow.ts +52 -0
- package/src/core/shaders/canvas/utils/render.ts +151 -0
- package/src/core/shaders/templates/BorderTemplate.ts +115 -0
- package/src/core/shaders/templates/HolePunchTemplate.ts +82 -0
- package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -0
- package/src/core/shaders/templates/RadialGradientTemplate.ts +81 -0
- package/src/core/shaders/templates/RoundedTemplate.ts +98 -0
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -0
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -0
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -0
- package/src/core/shaders/templates/ShadowTemplate.ts +106 -0
- package/src/core/shaders/templates/shaderUtils.ts +47 -0
- package/src/core/shaders/webgl/Border.ts +96 -0
- package/src/core/shaders/webgl/Default.ts +89 -0
- package/src/core/shaders/webgl/DefaultBatched.ts +129 -0
- package/src/core/shaders/webgl/HolePunch.ts +78 -0
- package/src/core/shaders/webgl/LinearGradient.ts +81 -0
- package/src/core/shaders/webgl/RadialGradient.ts +84 -0
- package/src/core/shaders/webgl/Rounded.ts +117 -0
- package/src/core/shaders/webgl/RoundedWithBorder.ts +114 -0
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +133 -0
- package/src/core/shaders/webgl/RoundedWithShadow.ts +98 -0
- package/src/core/shaders/webgl/SdfShader.ts +134 -0
- package/src/core/shaders/webgl/Shadow.ts +115 -0
- package/src/core/text-rendering/TextTextureRendererUtils.ts +1 -1
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +2 -2
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +12 -5
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +44 -57
- package/src/core/text-rendering/renderers/TextRenderer.ts +2 -9
- package/src/core/textures/Texture.ts +1 -1
- package/src/main-api/INode.ts +11 -13
- package/src/main-api/Renderer.ts +25 -127
- package/src/utils.ts +19 -0
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/src/core/renderers/canvas/CanvasCoreRenderer.ts +0 -375
- package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +0 -125
- package/src/core/renderers/webgl/WebGlCoreShader.ts +0 -362
- package/src/core/renderers/webgl/shaders/DefaultShader.ts +0 -93
- package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +0 -132
- package/src/core/renderers/webgl/shaders/DynamicShader.ts +0 -580
- package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +0 -167
- package/src/core/renderers/webgl/shaders/SdfShader.ts +0 -204
- package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +0 -101
- package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +0 -87
- package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +0 -101
- package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +0 -101
- package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +0 -101
- package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +0 -159
- package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +0 -127
- package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +0 -148
- package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +0 -67
- package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +0 -157
- package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +0 -171
- package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +0 -168
- package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +0 -187
- package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +0 -110
- package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +0 -196
- package/src/main-api/DynamicShaderController.ts +0 -104
- package/src/main-api/ShaderController.ts +0 -80
|
@@ -17,14 +17,14 @@
|
|
|
17
17
|
* limitations under the License.
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
|
-
import { assertTruthy, createWebGLContext
|
|
20
|
+
import { assertTruthy, createWebGLContext } from '../../../utils.js';
|
|
21
21
|
import {
|
|
22
22
|
CoreRenderer,
|
|
23
23
|
type BufferInfo,
|
|
24
24
|
type CoreRendererOptions,
|
|
25
25
|
type QuadOptions,
|
|
26
26
|
} from '../CoreRenderer.js';
|
|
27
|
-
import {
|
|
27
|
+
import { WebGlRenderOp } from './WebGlRenderOp.js';
|
|
28
28
|
import type { CoreContextTexture } from '../CoreContextTexture.js';
|
|
29
29
|
import {
|
|
30
30
|
createIndexBuffer,
|
|
@@ -34,36 +34,33 @@ import {
|
|
|
34
34
|
getWebGlExtensions,
|
|
35
35
|
type WebGlColor,
|
|
36
36
|
} from './internal/RendererUtils.js';
|
|
37
|
-
import {
|
|
37
|
+
import { WebGlCtxTexture } from './WebGlCtxTexture.js';
|
|
38
38
|
import { Texture, TextureType } from '../../textures/Texture.js';
|
|
39
39
|
import { SubTexture } from '../../textures/SubTexture.js';
|
|
40
|
-
import {
|
|
41
|
-
import { CoreShaderManager } from '../../CoreShaderManager.js';
|
|
40
|
+
import { WebGlCtxSubTexture } from './WebGlCtxSubTexture.js';
|
|
42
41
|
import { BufferCollection } from './internal/BufferCollection.js';
|
|
43
|
-
import {
|
|
44
|
-
|
|
45
|
-
getNormalizedRgbaComponents,
|
|
46
|
-
type RectWithValid,
|
|
47
|
-
} from '../../lib/utils.js';
|
|
48
|
-
import type { Dimensions } from '../../../common/CommonTypes.js';
|
|
49
|
-
import { WebGlCoreShader } from './WebGlCoreShader.js';
|
|
42
|
+
import { compareRect, getNormalizedRgbaComponents } from '../../lib/utils.js';
|
|
43
|
+
import { WebGlShaderProgram } from './WebGlShaderProgram.js';
|
|
50
44
|
import { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';
|
|
51
45
|
import { RenderTexture } from '../../textures/RenderTexture.js';
|
|
52
46
|
import { CoreNodeRenderState, type CoreNode } from '../../CoreNode.js';
|
|
53
|
-
import {
|
|
54
|
-
import
|
|
47
|
+
import { WebGlCtxRenderTexture } from './WebGlCtxRenderTexture.js';
|
|
48
|
+
import { Default } from '../../shaders/webgl/Default.js';
|
|
49
|
+
import type { WebGlShaderType } from './WebGlShaderNode.js';
|
|
50
|
+
import { WebGlShaderNode } from './WebGlShaderNode.js';
|
|
51
|
+
import type { CoreShaderType } from '../CoreShaderNode.js';
|
|
55
52
|
|
|
56
|
-
const WORDS_PER_QUAD =
|
|
53
|
+
const WORDS_PER_QUAD = 32;
|
|
57
54
|
// const BYTES_PER_QUAD = WORDS_PER_QUAD * 4;
|
|
58
55
|
|
|
59
|
-
export type
|
|
56
|
+
export type WebGlRendererOptions = CoreRendererOptions;
|
|
60
57
|
|
|
61
58
|
interface CoreWebGlSystem {
|
|
62
59
|
parameters: CoreWebGlParameters;
|
|
63
60
|
extensions: CoreWebGlExtensions;
|
|
64
61
|
}
|
|
65
62
|
|
|
66
|
-
export class
|
|
63
|
+
export class WebGlRenderer extends CoreRenderer {
|
|
67
64
|
//// WebGL Native Context and Data
|
|
68
65
|
glw: WebGlContextWrapper;
|
|
69
66
|
system: CoreWebGlSystem;
|
|
@@ -72,17 +69,16 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
72
69
|
quadBuffer: ArrayBuffer;
|
|
73
70
|
fQuadBuffer: Float32Array;
|
|
74
71
|
uiQuadBuffer: Uint32Array;
|
|
75
|
-
renderOps:
|
|
72
|
+
renderOps: WebGlRenderOp[] = [];
|
|
76
73
|
|
|
77
74
|
//// Render Op / Buffer Filling State
|
|
78
75
|
curBufferIdx = 0;
|
|
79
|
-
curRenderOp:
|
|
76
|
+
curRenderOp: WebGlRenderOp | null = null;
|
|
80
77
|
override rttNodes: CoreNode[] = [];
|
|
81
78
|
activeRttNode: CoreNode | null = null;
|
|
82
79
|
|
|
83
80
|
//// Default Shader
|
|
84
|
-
|
|
85
|
-
defaultShader: WebGlCoreShader;
|
|
81
|
+
defaultShaderNode: WebGlShaderNode | null = null;
|
|
86
82
|
quadBufferCollection: BufferCollection;
|
|
87
83
|
|
|
88
84
|
clearColor: WebGlColor = {
|
|
@@ -101,7 +97,7 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
101
97
|
*/
|
|
102
98
|
public renderToTextureActive = false;
|
|
103
99
|
|
|
104
|
-
constructor(options:
|
|
100
|
+
constructor(options: WebGlRendererOptions) {
|
|
105
101
|
super(options);
|
|
106
102
|
|
|
107
103
|
this.quadBuffer = new ArrayBuffer(this.stage.options.quadBufferSize);
|
|
@@ -110,33 +106,28 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
110
106
|
|
|
111
107
|
this.mode = 'webgl';
|
|
112
108
|
|
|
113
|
-
const { canvas, clearColor, bufferMemory } = options;
|
|
114
|
-
|
|
115
109
|
const gl = createWebGLContext(
|
|
116
|
-
canvas,
|
|
110
|
+
options.canvas,
|
|
117
111
|
options.forceWebGL2,
|
|
118
112
|
options.contextSpy,
|
|
119
113
|
);
|
|
120
114
|
const glw = (this.glw = new WebGlContextWrapper(gl));
|
|
121
|
-
glw.viewport(0, 0, canvas.width, canvas.height);
|
|
115
|
+
glw.viewport(0, 0, options.canvas.width, options.canvas.height);
|
|
122
116
|
|
|
123
|
-
this.updateClearColor(clearColor);
|
|
117
|
+
this.updateClearColor(this.stage.clearColor);
|
|
124
118
|
|
|
125
119
|
glw.setBlend(true);
|
|
126
120
|
glw.blendFunc(glw.ONE, glw.ONE_MINUS_SRC_ALPHA);
|
|
127
121
|
|
|
128
|
-
createIndexBuffer(glw, bufferMemory);
|
|
122
|
+
createIndexBuffer(glw, this.stage.bufferMemory);
|
|
129
123
|
|
|
130
124
|
this.system = {
|
|
131
125
|
parameters: getWebGlParameters(this.glw),
|
|
132
126
|
extensions: getWebGlExtensions(this.glw),
|
|
133
127
|
};
|
|
134
|
-
this.shManager.renderer = this;
|
|
135
|
-
this.defShaderCtrl = this.shManager.loadShader('DefaultShader');
|
|
136
|
-
this.defaultShader = this.defShaderCtrl.shader as WebGlCoreShader;
|
|
137
128
|
const quadBuffer = glw.createBuffer();
|
|
138
129
|
assertTruthy(quadBuffer);
|
|
139
|
-
const stride =
|
|
130
|
+
const stride = 8 * Float32Array.BYTES_PER_ELEMENT;
|
|
140
131
|
this.quadBufferCollection = new BufferCollection([
|
|
141
132
|
{
|
|
142
133
|
buffer: quadBuffer,
|
|
@@ -149,8 +140,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
149
140
|
stride, // 0 = move forward size * sizeof(type) each iteration to get the next position
|
|
150
141
|
offset: 0, // start at the beginning of the buffer
|
|
151
142
|
},
|
|
152
|
-
|
|
153
|
-
name: '
|
|
143
|
+
a_textureCoords: {
|
|
144
|
+
name: 'a_textureCoords',
|
|
154
145
|
size: 2,
|
|
155
146
|
type: glw.FLOAT,
|
|
156
147
|
normalized: false,
|
|
@@ -173,6 +164,14 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
173
164
|
stride,
|
|
174
165
|
offset: 5 * Float32Array.BYTES_PER_ELEMENT,
|
|
175
166
|
},
|
|
167
|
+
a_nodeCoords: {
|
|
168
|
+
name: 'a_nodeCoords',
|
|
169
|
+
size: 2,
|
|
170
|
+
type: glw.FLOAT,
|
|
171
|
+
normalized: false,
|
|
172
|
+
stride,
|
|
173
|
+
offset: 6 * Float32Array.BYTES_PER_ELEMENT,
|
|
174
|
+
},
|
|
176
175
|
},
|
|
177
176
|
},
|
|
178
177
|
]);
|
|
@@ -187,25 +186,52 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
187
186
|
glw.clear();
|
|
188
187
|
}
|
|
189
188
|
|
|
190
|
-
|
|
191
|
-
|
|
189
|
+
createShaderProgram(
|
|
190
|
+
shaderType: WebGlShaderType,
|
|
191
|
+
props: Record<string, unknown>,
|
|
192
|
+
): WebGlShaderProgram {
|
|
193
|
+
return new WebGlShaderProgram(this, shaderType, props);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
createShaderNode(
|
|
197
|
+
shaderKey: string,
|
|
198
|
+
shaderType: WebGlShaderType,
|
|
199
|
+
props?: Record<string, unknown>,
|
|
200
|
+
program?: WebGlShaderProgram,
|
|
201
|
+
) {
|
|
202
|
+
return new WebGlShaderNode(
|
|
203
|
+
shaderKey,
|
|
204
|
+
shaderType,
|
|
205
|
+
program!,
|
|
206
|
+
this.stage,
|
|
207
|
+
props,
|
|
208
|
+
);
|
|
192
209
|
}
|
|
193
210
|
|
|
194
|
-
override
|
|
211
|
+
override supportsShaderType(shaderType: Readonly<WebGlShaderType>): boolean {
|
|
212
|
+
//if shadertype doesnt have a fragment source we cant use it
|
|
213
|
+
return shaderType.fragment !== undefined;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
createCtxTexture(textureSource: Texture): CoreContextTexture {
|
|
195
217
|
if (textureSource instanceof SubTexture) {
|
|
196
|
-
return new
|
|
218
|
+
return new WebGlCtxSubTexture(
|
|
197
219
|
this.glw,
|
|
198
|
-
this.txMemManager,
|
|
220
|
+
this.stage.txMemManager,
|
|
199
221
|
textureSource,
|
|
200
222
|
);
|
|
201
223
|
} else if (textureSource instanceof RenderTexture) {
|
|
202
|
-
return new
|
|
224
|
+
return new WebGlCtxRenderTexture(
|
|
203
225
|
this.glw,
|
|
204
|
-
this.txMemManager,
|
|
226
|
+
this.stage.txMemManager,
|
|
205
227
|
textureSource,
|
|
206
228
|
);
|
|
207
229
|
}
|
|
208
|
-
return new
|
|
230
|
+
return new WebGlCtxTexture(
|
|
231
|
+
this.glw,
|
|
232
|
+
this.stage.txMemManager,
|
|
233
|
+
textureSource,
|
|
234
|
+
);
|
|
209
235
|
}
|
|
210
236
|
|
|
211
237
|
/**
|
|
@@ -226,48 +252,10 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
226
252
|
|
|
227
253
|
assertTruthy(texture !== null, 'Texture is required');
|
|
228
254
|
|
|
229
|
-
|
|
230
|
-
* If the shader props contain any automatic properties, update it with the
|
|
231
|
-
* current dimensions and or alpha that will be used to render the quad.
|
|
232
|
-
*/
|
|
233
|
-
if (params.shaderProps !== null) {
|
|
234
|
-
if (hasOwn(params.shaderProps, '$dimensions') == true) {
|
|
235
|
-
const dimensions = params.shaderProps.$dimensions as Dimensions;
|
|
236
|
-
dimensions.width = params.width;
|
|
237
|
-
dimensions.height = params.height;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
if (hasOwn(params.shaderProps, '$alpha') === true) {
|
|
241
|
-
params.shaderProps.$alpha = params.alpha;
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
let { curBufferIdx: bufferIdx, curRenderOp } = this;
|
|
246
|
-
const targetDims = { width: -1, height: -1 };
|
|
247
|
-
targetDims.width = params.width;
|
|
248
|
-
targetDims.height = params.height;
|
|
249
|
-
|
|
250
|
-
const targetShader =
|
|
251
|
-
(params.shader as WebGlCoreShader) || this.defaultShader;
|
|
252
|
-
assertTruthy(
|
|
253
|
-
targetShader.getUniformLocation !== undefined,
|
|
254
|
-
'Invalid WebGL shader',
|
|
255
|
-
);
|
|
255
|
+
let { curBufferIdx: bufferIdx } = this;
|
|
256
256
|
|
|
257
257
|
if (this.reuseRenderOp(params) === false) {
|
|
258
|
-
this.newRenderOp(
|
|
259
|
-
targetShader,
|
|
260
|
-
params.shaderProps as Record<string, unknown>,
|
|
261
|
-
params.alpha,
|
|
262
|
-
targetDims,
|
|
263
|
-
params.clippingRect,
|
|
264
|
-
bufferIdx,
|
|
265
|
-
params.rtt,
|
|
266
|
-
params.parentHasRenderTexture,
|
|
267
|
-
params.framebufferDimensions,
|
|
268
|
-
);
|
|
269
|
-
curRenderOp = this.curRenderOp;
|
|
270
|
-
assertTruthy(curRenderOp);
|
|
258
|
+
this.newRenderOp(params, bufferIdx);
|
|
271
259
|
}
|
|
272
260
|
|
|
273
261
|
let texCoordX1 = 0;
|
|
@@ -336,117 +324,54 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
336
324
|
[texCoordY1, texCoordY2] = [texCoordY2, texCoordY1];
|
|
337
325
|
}
|
|
338
326
|
|
|
339
|
-
const ctxTexture = texture.ctxTexture as
|
|
340
|
-
assertTruthy(ctxTexture instanceof
|
|
327
|
+
const ctxTexture = texture.ctxTexture as WebGlCtxTexture;
|
|
328
|
+
assertTruthy(ctxTexture instanceof WebGlCtxTexture);
|
|
341
329
|
const textureIdx = this.addTexture(ctxTexture, bufferIdx);
|
|
342
330
|
|
|
343
331
|
assertTruthy(this.curRenderOp !== null);
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
fQuadBuffer[bufferIdx++] = params.tx + params.width * params.ta;
|
|
387
|
-
fQuadBuffer[bufferIdx++] = params.ty + params.width * params.tc;
|
|
388
|
-
fQuadBuffer[bufferIdx++] = texCoordX2;
|
|
389
|
-
fQuadBuffer[bufferIdx++] = texCoordY1;
|
|
390
|
-
uiQuadBuffer[bufferIdx++] = params.colorTr;
|
|
391
|
-
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
392
|
-
|
|
393
|
-
// Lower-Left
|
|
394
|
-
fQuadBuffer[bufferIdx++] = params.tx + params.height * params.tb;
|
|
395
|
-
fQuadBuffer[bufferIdx++] = params.ty + params.height * params.td;
|
|
396
|
-
fQuadBuffer[bufferIdx++] = texCoordX1;
|
|
397
|
-
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
398
|
-
uiQuadBuffer[bufferIdx++] = params.colorBl;
|
|
399
|
-
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
400
|
-
|
|
401
|
-
// Lower-Right
|
|
402
|
-
fQuadBuffer[bufferIdx++] =
|
|
403
|
-
params.tx + params.width * params.ta + params.height * params.tb;
|
|
404
|
-
fQuadBuffer[bufferIdx++] =
|
|
405
|
-
params.ty + params.width * params.tc + params.height * params.td;
|
|
406
|
-
fQuadBuffer[bufferIdx++] = texCoordX2;
|
|
407
|
-
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
408
|
-
uiQuadBuffer[bufferIdx++] = params.colorBr;
|
|
409
|
-
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
410
|
-
} else {
|
|
411
|
-
// Calculate the right corner of the quad
|
|
412
|
-
// multiplied by the scale
|
|
413
|
-
const rightCornerX = params.tx + params.width * params.ta;
|
|
414
|
-
const rightCornerY = params.ty + params.height * params.td;
|
|
415
|
-
|
|
416
|
-
// Upper-Left
|
|
417
|
-
fQuadBuffer[bufferIdx++] = params.tx; // vertexX
|
|
418
|
-
fQuadBuffer[bufferIdx++] = params.ty; // vertexY
|
|
419
|
-
fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX
|
|
420
|
-
fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY
|
|
421
|
-
uiQuadBuffer[bufferIdx++] = params.colorTl; // color
|
|
422
|
-
fQuadBuffer[bufferIdx++] = textureIdx; // texIndex
|
|
423
|
-
|
|
424
|
-
// Upper-Right
|
|
425
|
-
fQuadBuffer[bufferIdx++] = rightCornerX;
|
|
426
|
-
fQuadBuffer[bufferIdx++] = params.ty;
|
|
427
|
-
fQuadBuffer[bufferIdx++] = texCoordX2;
|
|
428
|
-
fQuadBuffer[bufferIdx++] = texCoordY1;
|
|
429
|
-
uiQuadBuffer[bufferIdx++] = params.colorTr;
|
|
430
|
-
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
431
|
-
|
|
432
|
-
// Lower-Left
|
|
433
|
-
fQuadBuffer[bufferIdx++] = params.tx;
|
|
434
|
-
fQuadBuffer[bufferIdx++] = rightCornerY;
|
|
435
|
-
fQuadBuffer[bufferIdx++] = texCoordX1;
|
|
436
|
-
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
437
|
-
uiQuadBuffer[bufferIdx++] = params.colorBl;
|
|
438
|
-
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
439
|
-
|
|
440
|
-
// Lower-Right
|
|
441
|
-
fQuadBuffer[bufferIdx++] = rightCornerX;
|
|
442
|
-
fQuadBuffer[bufferIdx++] = rightCornerY;
|
|
443
|
-
fQuadBuffer[bufferIdx++] = texCoordX2;
|
|
444
|
-
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
445
|
-
uiQuadBuffer[bufferIdx++] = params.colorBr;
|
|
446
|
-
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
447
|
-
}
|
|
332
|
+
assertTruthy(params.renderCoords);
|
|
333
|
+
|
|
334
|
+
// Upper-Left
|
|
335
|
+
fQuadBuffer[bufferIdx++] = params.renderCoords.x1; // vertexX
|
|
336
|
+
fQuadBuffer[bufferIdx++] = params.renderCoords.y1; // vertexY
|
|
337
|
+
fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX
|
|
338
|
+
fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY
|
|
339
|
+
uiQuadBuffer[bufferIdx++] = params.colorTl; // color
|
|
340
|
+
fQuadBuffer[bufferIdx++] = textureIdx; // texIndex
|
|
341
|
+
fQuadBuffer[bufferIdx++] = 0; //node X coord
|
|
342
|
+
fQuadBuffer[bufferIdx++] = 0; //node y coord
|
|
343
|
+
|
|
344
|
+
// Upper-Right
|
|
345
|
+
fQuadBuffer[bufferIdx++] = params.renderCoords.x2;
|
|
346
|
+
fQuadBuffer[bufferIdx++] = params.renderCoords.y2;
|
|
347
|
+
fQuadBuffer[bufferIdx++] = texCoordX2;
|
|
348
|
+
fQuadBuffer[bufferIdx++] = texCoordY1;
|
|
349
|
+
uiQuadBuffer[bufferIdx++] = params.colorTr;
|
|
350
|
+
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
351
|
+
fQuadBuffer[bufferIdx++] = 1; //node X coord
|
|
352
|
+
fQuadBuffer[bufferIdx++] = 0; //node y coord
|
|
353
|
+
|
|
354
|
+
// Lower-Left
|
|
355
|
+
fQuadBuffer[bufferIdx++] = params.renderCoords.x4;
|
|
356
|
+
fQuadBuffer[bufferIdx++] = params.renderCoords.y4;
|
|
357
|
+
fQuadBuffer[bufferIdx++] = texCoordX1;
|
|
358
|
+
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
359
|
+
uiQuadBuffer[bufferIdx++] = params.colorBl;
|
|
360
|
+
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
361
|
+
fQuadBuffer[bufferIdx++] = 0; //node X coord
|
|
362
|
+
fQuadBuffer[bufferIdx++] = 1; //node y coord
|
|
363
|
+
|
|
364
|
+
// Lower-Right
|
|
365
|
+
fQuadBuffer[bufferIdx++] = params.renderCoords.x3;
|
|
366
|
+
fQuadBuffer[bufferIdx++] = params.renderCoords.y3;
|
|
367
|
+
fQuadBuffer[bufferIdx++] = texCoordX2;
|
|
368
|
+
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
369
|
+
uiQuadBuffer[bufferIdx++] = params.colorBr;
|
|
370
|
+
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
371
|
+
fQuadBuffer[bufferIdx++] = 1; //node X coord
|
|
372
|
+
fQuadBuffer[bufferIdx++] = 1; //node y coord
|
|
373
|
+
|
|
448
374
|
// Update the length of the current render op
|
|
449
|
-
this.curRenderOp.length += WORDS_PER_QUAD;
|
|
450
375
|
this.curRenderOp.numQuads++;
|
|
451
376
|
this.curBufferIdx = bufferIdx;
|
|
452
377
|
}
|
|
@@ -458,32 +383,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
458
383
|
* @param shader
|
|
459
384
|
* @param bufferIdx
|
|
460
385
|
*/
|
|
461
|
-
private newRenderOp(
|
|
462
|
-
|
|
463
|
-
shaderProps: Record<string, unknown>,
|
|
464
|
-
alpha: number,
|
|
465
|
-
dimensions: Dimensions,
|
|
466
|
-
clippingRect: RectWithValid,
|
|
467
|
-
bufferIdx: number,
|
|
468
|
-
renderToTexture?: boolean,
|
|
469
|
-
parentHasRenderTexture?: boolean,
|
|
470
|
-
framebufferDimensions?: Dimensions,
|
|
471
|
-
) {
|
|
472
|
-
const curRenderOp = new WebGlCoreRenderOp(
|
|
473
|
-
this.glw,
|
|
474
|
-
this.options,
|
|
475
|
-
this.quadBufferCollection,
|
|
476
|
-
shader,
|
|
477
|
-
shaderProps,
|
|
478
|
-
alpha,
|
|
479
|
-
clippingRect,
|
|
480
|
-
dimensions,
|
|
481
|
-
bufferIdx,
|
|
482
|
-
0, // Z-Index is only used for explictly added Render Ops
|
|
483
|
-
renderToTexture,
|
|
484
|
-
parentHasRenderTexture,
|
|
485
|
-
framebufferDimensions,
|
|
486
|
-
);
|
|
386
|
+
private newRenderOp(quad: QuadOptions | WebGlRenderOp, bufferIdx: number) {
|
|
387
|
+
const curRenderOp = new WebGlRenderOp(this, quad, bufferIdx);
|
|
487
388
|
this.curRenderOp = curRenderOp;
|
|
488
389
|
this.renderOps.push(curRenderOp);
|
|
489
390
|
}
|
|
@@ -501,27 +402,18 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
501
402
|
* @returns Assigned Texture Index of the texture in the render op
|
|
502
403
|
*/
|
|
503
404
|
private addTexture(
|
|
504
|
-
texture:
|
|
405
|
+
texture: WebGlCtxTexture,
|
|
505
406
|
bufferIdx: number,
|
|
506
407
|
recursive?: boolean,
|
|
507
408
|
): number {
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
const textureIdx = curRenderOp.addTexture(texture);
|
|
409
|
+
assertTruthy(this.curRenderOp);
|
|
410
|
+
const textureIdx = this.curRenderOp.addTexture(texture);
|
|
511
411
|
// TODO: Refactor to be more DRY
|
|
512
412
|
if (textureIdx === 0xffffffff) {
|
|
513
413
|
if (recursive) {
|
|
514
414
|
throw new Error('Unable to add texture to render op');
|
|
515
415
|
}
|
|
516
|
-
|
|
517
|
-
this.newRenderOp(
|
|
518
|
-
curRenderOp.shader,
|
|
519
|
-
curRenderOp.shaderProps,
|
|
520
|
-
curRenderOp.alpha,
|
|
521
|
-
curRenderOp.dimensions,
|
|
522
|
-
curRenderOp.clippingRect,
|
|
523
|
-
bufferIdx,
|
|
524
|
-
);
|
|
416
|
+
this.newRenderOp(this.curRenderOp, bufferIdx);
|
|
525
417
|
return this.addTexture(texture, bufferIdx, true);
|
|
526
418
|
}
|
|
527
419
|
return textureIdx;
|
|
@@ -533,36 +425,44 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
533
425
|
* @returns
|
|
534
426
|
*/
|
|
535
427
|
reuseRenderOp(params: QuadOptions): boolean {
|
|
536
|
-
const { shader, shaderProps, parentHasRenderTexture, rtt, clippingRect } =
|
|
537
|
-
params;
|
|
538
|
-
|
|
539
|
-
const targetShader = shader || this.defaultShader;
|
|
540
|
-
|
|
541
428
|
// Switching shader program will require a new render operation
|
|
542
|
-
if (
|
|
429
|
+
if (
|
|
430
|
+
this.curRenderOp?.shader.shaderKey !==
|
|
431
|
+
(params.shader as WebGlShaderNode).shaderKey
|
|
432
|
+
) {
|
|
543
433
|
return false;
|
|
544
434
|
}
|
|
545
435
|
|
|
546
436
|
// Switching clipping rect will require a new render operation
|
|
547
|
-
if (
|
|
437
|
+
if (
|
|
438
|
+
compareRect(this.curRenderOp.clippingRect, params.clippingRect) === false
|
|
439
|
+
) {
|
|
548
440
|
return false;
|
|
549
441
|
}
|
|
550
442
|
|
|
551
443
|
// Force new render operation if rendering to texture
|
|
552
444
|
// @todo: This needs to be improved, render operations could also be reused
|
|
553
445
|
// for rendering to texture
|
|
554
|
-
if (
|
|
446
|
+
if (
|
|
447
|
+
params.parentHasRenderTexture !== undefined ||
|
|
448
|
+
params.rtt !== undefined
|
|
449
|
+
) {
|
|
555
450
|
return false;
|
|
556
451
|
}
|
|
557
452
|
|
|
453
|
+
if (
|
|
454
|
+
this.curRenderOp.shader.shaderKey === 'default' &&
|
|
455
|
+
params.shader?.shaderKey === 'default'
|
|
456
|
+
) {
|
|
457
|
+
return true;
|
|
458
|
+
}
|
|
459
|
+
|
|
558
460
|
// Check if the shader can batch the shader properties
|
|
559
461
|
if (
|
|
560
|
-
this.curRenderOp.shader
|
|
561
|
-
|
|
562
|
-
this.curRenderOp
|
|
563
|
-
|
|
564
|
-
shaderProps,
|
|
565
|
-
) === false)
|
|
462
|
+
this.curRenderOp.shader.program.reuseRenderOp(
|
|
463
|
+
params,
|
|
464
|
+
this.curRenderOp,
|
|
465
|
+
) === false
|
|
566
466
|
) {
|
|
567
467
|
return false;
|
|
568
468
|
}
|
|
@@ -574,7 +474,7 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
574
474
|
/**
|
|
575
475
|
* add RenderOp to the render pipeline
|
|
576
476
|
*/
|
|
577
|
-
addRenderOp(renderable:
|
|
477
|
+
addRenderOp(renderable: WebGlRenderOp) {
|
|
578
478
|
this.renderOps.push(renderable);
|
|
579
479
|
this.curRenderOp = null;
|
|
580
480
|
}
|
|
@@ -601,7 +501,7 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
601
501
|
this.quadBufferUsage = this.curBufferIdx * arr.BYTES_PER_ELEMENT;
|
|
602
502
|
|
|
603
503
|
// Calculate the size of each quad in bytes (4 vertices per quad) times the size of each vertex in bytes
|
|
604
|
-
const QUAD_SIZE_IN_BYTES = 4 * (
|
|
504
|
+
const QUAD_SIZE_IN_BYTES = 4 * (8 * arr.BYTES_PER_ELEMENT); // 8 attributes per vertex
|
|
605
505
|
this.numQuadsRendered = this.quadBufferUsage / QUAD_SIZE_IN_BYTES;
|
|
606
506
|
}
|
|
607
507
|
|
|
@@ -696,8 +596,6 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
696
596
|
|
|
697
597
|
renderRTTNodes() {
|
|
698
598
|
const { glw } = this;
|
|
699
|
-
const { txManager } = this.stage;
|
|
700
|
-
|
|
701
599
|
// Render all associated RTT nodes to their textures
|
|
702
600
|
for (let i = 0; i < this.rttNodes.length; i++) {
|
|
703
601
|
const node = this.rttNodes[i];
|
|
@@ -725,9 +623,9 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
725
623
|
// So we can prevent rendering children of nested RTT nodes
|
|
726
624
|
this.activeRttNode = node;
|
|
727
625
|
|
|
728
|
-
assertTruthy(node.texture, 'RTT node missing texture');
|
|
626
|
+
assertTruthy(node.texture !== null, 'RTT node missing texture');
|
|
729
627
|
const ctxTexture = node.texture.ctxTexture;
|
|
730
|
-
assertTruthy(ctxTexture instanceof
|
|
628
|
+
assertTruthy(ctxTexture instanceof WebGlCtxRenderTexture);
|
|
731
629
|
this.renderToTextureActive = true;
|
|
732
630
|
|
|
733
631
|
// Bind the the texture's framebuffer
|
|
@@ -785,8 +683,15 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
785
683
|
return bufferInfo;
|
|
786
684
|
}
|
|
787
685
|
|
|
788
|
-
|
|
789
|
-
|
|
686
|
+
getDefaultShaderNode(): WebGlShaderNode {
|
|
687
|
+
if (this.defaultShaderNode !== null) {
|
|
688
|
+
return this.defaultShaderNode as WebGlShaderNode;
|
|
689
|
+
}
|
|
690
|
+
this.stage.shManager.registerShaderType('default', Default);
|
|
691
|
+
this.defaultShaderNode = this.stage.shManager.createShader(
|
|
692
|
+
'default',
|
|
693
|
+
) as WebGlShaderNode;
|
|
694
|
+
return this.defaultShaderNode;
|
|
790
695
|
}
|
|
791
696
|
|
|
792
697
|
/**
|