@lightningjs/renderer 2.12.1 → 3.0.0-beta1
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 +19 -5
- package/dist/src/core/CoreNode.js +117 -24
- 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/CoreTextNode.js +1 -1
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +13 -7
- package/dist/src/core/CoreTextureManager.js +92 -105
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +15 -16
- package/dist/src/core/Stage.js +45 -32
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.d.ts +16 -6
- package/dist/src/core/TextureMemoryManager.js +75 -17
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- 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/ImageWorker.d.ts +1 -1
- package/dist/src/core/lib/ImageWorker.js +13 -11
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +67 -54
- package/dist/src/core/lib/WebGlContextWrapper.js +126 -157
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- 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 +4 -0
- package/dist/src/core/lib/utils.js +26 -0
- package/dist/src/core/lib/utils.js.map +1 -1
- package/dist/src/core/lib/validateImageBitmap.d.ts +6 -0
- package/dist/src/core/lib/validateImageBitmap.js +68 -0
- package/dist/src/core/lib/validateImageBitmap.js.map +1 -0
- package/dist/src/core/platform.js +4 -3
- 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/CoreShaderNode.d.ts +59 -0
- package/dist/src/core/renderers/CoreShaderNode.js +107 -0
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -0
- package/dist/src/core/renderers/CoreShaderProgram.d.ts +4 -0
- package/{src/core/renderers/CoreShader.ts → dist/src/core/renderers/CoreShaderProgram.js} +2 -23
- 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 +123 -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/WebGlCoreCtxTexture.js +7 -12
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
- 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 +36 -0
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +107 -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 +546 -0
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +221 -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 +195 -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/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 -30
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- 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/ImageTexture.js +10 -16
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +1 -1
- package/dist/src/main-api/INode.d.ts +9 -9
- package/dist/src/main-api/Inspector.js +16 -2
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +35 -92
- package/dist/src/main-api/Renderer.js +11 -57
- package/dist/src/main-api/Renderer.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 +157 -153
- package/src/core/CoreNode.ts +173 -38
- package/src/core/CoreShaderManager.ts +127 -226
- package/src/core/CoreTextNode.ts +1 -8
- package/src/core/CoreTextureManager.ts +127 -126
- package/src/core/Stage.ts +62 -44
- package/src/core/TextureMemoryManager.ts +108 -27
- package/src/core/animations/CoreAnimation.ts +8 -64
- package/src/core/lib/ImageWorker.ts +20 -12
- package/src/core/lib/WebGlContextWrapper.ts +228 -236
- package/src/core/lib/textureCompression.ts +3 -3
- package/src/core/lib/utils.ts +51 -0
- package/src/core/lib/validateImageBitmap.ts +76 -0
- package/src/core/platform.ts +6 -3
- package/src/core/renderers/CoreRenderer.ts +19 -27
- package/src/core/renderers/CoreShaderNode.ts +171 -0
- package/src/core/renderers/{canvas/shaders/UnsupportedShader.ts → CoreShaderProgram.ts} +3 -28
- package/src/core/renderers/canvas/CanvasRenderer.ts +299 -0
- package/src/core/renderers/canvas/CanvasShaderNode.ts +99 -0
- package/src/core/renderers/canvas/{CanvasCoreTexture.ts → CanvasTexture.ts} +1 -1
- 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} +12 -14
- package/src/core/renderers/webgl/{WebGlCoreRenderOp.ts → WebGlRenderOp.ts} +56 -36
- package/src/core/renderers/webgl/{WebGlCoreRenderer.ts → WebGlRenderer.ts} +143 -243
- package/src/core/renderers/webgl/WebGlShaderNode.ts +433 -0
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +310 -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 +137 -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 -56
- package/src/core/text-rendering/renderers/TextRenderer.ts +2 -9
- package/src/core/textures/ImageTexture.ts +11 -17
- package/src/core/textures/Texture.ts +1 -1
- package/src/main-api/INode.ts +11 -13
- package/src/main-api/Inspector.ts +19 -2
- package/src/main-api/Renderer.ts +59 -130
- package/src/utils.ts +19 -0
- package/src/core/renderers/canvas/CanvasCoreRenderer.ts +0 -375
- 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
53
|
const WORDS_PER_QUAD = 24;
|
|
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);
|
|
192
194
|
}
|
|
193
195
|
|
|
194
|
-
|
|
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
|
+
);
|
|
209
|
+
}
|
|
210
|
+
|
|
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,46 +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
255
|
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
|
-
);
|
|
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
|
-
);
|
|
258
|
+
this.newRenderOp(params, bufferIdx);
|
|
269
259
|
curRenderOp = this.curRenderOp;
|
|
270
260
|
assertTruthy(curRenderOp);
|
|
271
261
|
}
|
|
@@ -336,115 +326,53 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
336
326
|
[texCoordY1, texCoordY2] = [texCoordY2, texCoordY1];
|
|
337
327
|
}
|
|
338
328
|
|
|
339
|
-
const ctxTexture = texture.ctxTexture as
|
|
340
|
-
assertTruthy(ctxTexture instanceof
|
|
329
|
+
const ctxTexture = texture.ctxTexture as WebGlCtxTexture;
|
|
330
|
+
assertTruthy(ctxTexture instanceof WebGlCtxTexture);
|
|
341
331
|
const textureIdx = this.addTexture(ctxTexture, bufferIdx);
|
|
342
332
|
|
|
343
333
|
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
|
-
}
|
|
334
|
+
assertTruthy(params.renderCoords);
|
|
335
|
+
|
|
336
|
+
// Upper-Left
|
|
337
|
+
fQuadBuffer[bufferIdx++] = params.renderCoords.x1; // vertexX
|
|
338
|
+
fQuadBuffer[bufferIdx++] = params.renderCoords.y1; // vertexY
|
|
339
|
+
fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX
|
|
340
|
+
fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY
|
|
341
|
+
uiQuadBuffer[bufferIdx++] = params.colorTl; // color
|
|
342
|
+
fQuadBuffer[bufferIdx++] = textureIdx; // texIndex
|
|
343
|
+
fQuadBuffer[bufferIdx++] = 0; //node X coord
|
|
344
|
+
fQuadBuffer[bufferIdx++] = 0; //node y coord
|
|
345
|
+
|
|
346
|
+
// Upper-Right
|
|
347
|
+
fQuadBuffer[bufferIdx++] = params.renderCoords.x2;
|
|
348
|
+
fQuadBuffer[bufferIdx++] = params.renderCoords.y2;
|
|
349
|
+
fQuadBuffer[bufferIdx++] = texCoordX2;
|
|
350
|
+
fQuadBuffer[bufferIdx++] = texCoordY1;
|
|
351
|
+
uiQuadBuffer[bufferIdx++] = params.colorTr;
|
|
352
|
+
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
353
|
+
fQuadBuffer[bufferIdx++] = 1; //node X coord
|
|
354
|
+
fQuadBuffer[bufferIdx++] = 0; //node y coord
|
|
355
|
+
|
|
356
|
+
// Lower-Left
|
|
357
|
+
fQuadBuffer[bufferIdx++] = params.renderCoords.x4;
|
|
358
|
+
fQuadBuffer[bufferIdx++] = params.renderCoords.y4;
|
|
359
|
+
fQuadBuffer[bufferIdx++] = texCoordX1;
|
|
360
|
+
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
361
|
+
uiQuadBuffer[bufferIdx++] = params.colorBl;
|
|
362
|
+
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
363
|
+
fQuadBuffer[bufferIdx++] = 0; //node X coord
|
|
364
|
+
fQuadBuffer[bufferIdx++] = 1; //node y coord
|
|
365
|
+
|
|
366
|
+
// Lower-Right
|
|
367
|
+
fQuadBuffer[bufferIdx++] = params.renderCoords.x3;
|
|
368
|
+
fQuadBuffer[bufferIdx++] = params.renderCoords.y3;
|
|
369
|
+
fQuadBuffer[bufferIdx++] = texCoordX2;
|
|
370
|
+
fQuadBuffer[bufferIdx++] = texCoordY2;
|
|
371
|
+
uiQuadBuffer[bufferIdx++] = params.colorBr;
|
|
372
|
+
fQuadBuffer[bufferIdx++] = textureIdx;
|
|
373
|
+
fQuadBuffer[bufferIdx++] = 1; //node X coord
|
|
374
|
+
fQuadBuffer[bufferIdx++] = 1; //node y coord
|
|
375
|
+
|
|
448
376
|
// Update the length of the current render op
|
|
449
377
|
this.curRenderOp.length += WORDS_PER_QUAD;
|
|
450
378
|
this.curRenderOp.numQuads++;
|
|
@@ -458,32 +386,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
458
386
|
* @param shader
|
|
459
387
|
* @param bufferIdx
|
|
460
388
|
*/
|
|
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
|
-
);
|
|
389
|
+
private newRenderOp(quad: QuadOptions, bufferIdx: number) {
|
|
390
|
+
const curRenderOp = new WebGlRenderOp(this, quad, bufferIdx);
|
|
487
391
|
this.curRenderOp = curRenderOp;
|
|
488
392
|
this.renderOps.push(curRenderOp);
|
|
489
393
|
}
|
|
@@ -501,27 +405,18 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
501
405
|
* @returns Assigned Texture Index of the texture in the render op
|
|
502
406
|
*/
|
|
503
407
|
private addTexture(
|
|
504
|
-
texture:
|
|
408
|
+
texture: WebGlCtxTexture,
|
|
505
409
|
bufferIdx: number,
|
|
506
410
|
recursive?: boolean,
|
|
507
411
|
): number {
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
const textureIdx = curRenderOp.addTexture(texture);
|
|
412
|
+
assertTruthy(this.curRenderOp);
|
|
413
|
+
const textureIdx = this.curRenderOp.addTexture(texture);
|
|
511
414
|
// TODO: Refactor to be more DRY
|
|
512
415
|
if (textureIdx === 0xffffffff) {
|
|
513
416
|
if (recursive) {
|
|
514
417
|
throw new Error('Unable to add texture to render op');
|
|
515
418
|
}
|
|
516
|
-
|
|
517
|
-
this.newRenderOp(
|
|
518
|
-
curRenderOp.shader,
|
|
519
|
-
curRenderOp.shaderProps,
|
|
520
|
-
curRenderOp.alpha,
|
|
521
|
-
curRenderOp.dimensions,
|
|
522
|
-
curRenderOp.clippingRect,
|
|
523
|
-
bufferIdx,
|
|
524
|
-
);
|
|
419
|
+
this.newRenderOp(this.curRenderOp.quad as QuadOptions, bufferIdx);
|
|
525
420
|
return this.addTexture(texture, bufferIdx, true);
|
|
526
421
|
}
|
|
527
422
|
return textureIdx;
|
|
@@ -533,18 +428,20 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
533
428
|
* @returns
|
|
534
429
|
*/
|
|
535
430
|
reuseRenderOp(params: QuadOptions): boolean {
|
|
536
|
-
const { shader,
|
|
537
|
-
params;
|
|
538
|
-
|
|
539
|
-
const targetShader = shader || this.defaultShader;
|
|
431
|
+
const { shader, parentHasRenderTexture, rtt, clippingRect } = params;
|
|
540
432
|
|
|
541
433
|
// Switching shader program will require a new render operation
|
|
542
|
-
if (
|
|
434
|
+
if (
|
|
435
|
+
this.curRenderOp?.shader.shaderKey !==
|
|
436
|
+
(shader as WebGlShaderNode).shaderKey
|
|
437
|
+
) {
|
|
543
438
|
return false;
|
|
544
439
|
}
|
|
545
440
|
|
|
546
441
|
// Switching clipping rect will require a new render operation
|
|
547
|
-
if (
|
|
442
|
+
if (
|
|
443
|
+
compareRect(this.curRenderOp.quad.clippingRect, clippingRect) === false
|
|
444
|
+
) {
|
|
548
445
|
return false;
|
|
549
446
|
}
|
|
550
447
|
|
|
@@ -557,12 +454,10 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
557
454
|
|
|
558
455
|
// Check if the shader can batch the shader properties
|
|
559
456
|
if (
|
|
560
|
-
this.curRenderOp.shader
|
|
561
|
-
|
|
562
|
-
this.curRenderOp.
|
|
563
|
-
|
|
564
|
-
shaderProps,
|
|
565
|
-
) === false)
|
|
457
|
+
!this.curRenderOp.shader.program.reuseRenderOp(
|
|
458
|
+
params,
|
|
459
|
+
this.curRenderOp.quad as QuadOptions,
|
|
460
|
+
)
|
|
566
461
|
) {
|
|
567
462
|
return false;
|
|
568
463
|
}
|
|
@@ -574,7 +469,7 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
574
469
|
/**
|
|
575
470
|
* add RenderOp to the render pipeline
|
|
576
471
|
*/
|
|
577
|
-
addRenderOp(renderable:
|
|
472
|
+
addRenderOp(renderable: WebGlRenderOp) {
|
|
578
473
|
this.renderOps.push(renderable);
|
|
579
474
|
this.curRenderOp = null;
|
|
580
475
|
}
|
|
@@ -601,7 +496,7 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
601
496
|
this.quadBufferUsage = this.curBufferIdx * arr.BYTES_PER_ELEMENT;
|
|
602
497
|
|
|
603
498
|
// 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 * (
|
|
499
|
+
const QUAD_SIZE_IN_BYTES = 4 * (8 * arr.BYTES_PER_ELEMENT); // 8 attributes per vertex
|
|
605
500
|
this.numQuadsRendered = this.quadBufferUsage / QUAD_SIZE_IN_BYTES;
|
|
606
501
|
}
|
|
607
502
|
|
|
@@ -696,8 +591,6 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
696
591
|
|
|
697
592
|
renderRTTNodes() {
|
|
698
593
|
const { glw } = this;
|
|
699
|
-
const { txManager } = this.stage;
|
|
700
|
-
|
|
701
594
|
// Render all associated RTT nodes to their textures
|
|
702
595
|
for (let i = 0; i < this.rttNodes.length; i++) {
|
|
703
596
|
const node = this.rttNodes[i];
|
|
@@ -725,9 +618,9 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
725
618
|
// So we can prevent rendering children of nested RTT nodes
|
|
726
619
|
this.activeRttNode = node;
|
|
727
620
|
|
|
728
|
-
assertTruthy(node.texture, 'RTT node missing texture');
|
|
621
|
+
assertTruthy(node.texture !== null, 'RTT node missing texture');
|
|
729
622
|
const ctxTexture = node.texture.ctxTexture;
|
|
730
|
-
assertTruthy(ctxTexture instanceof
|
|
623
|
+
assertTruthy(ctxTexture instanceof WebGlCtxRenderTexture);
|
|
731
624
|
this.renderToTextureActive = true;
|
|
732
625
|
|
|
733
626
|
// Bind the the texture's framebuffer
|
|
@@ -785,8 +678,15 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
785
678
|
return bufferInfo;
|
|
786
679
|
}
|
|
787
680
|
|
|
788
|
-
|
|
789
|
-
|
|
681
|
+
getDefaultShaderNode(): WebGlShaderNode {
|
|
682
|
+
if (this.defaultShaderNode !== null) {
|
|
683
|
+
return this.defaultShaderNode as WebGlShaderNode;
|
|
684
|
+
}
|
|
685
|
+
this.stage.shManager.registerShaderType('Default', Default);
|
|
686
|
+
this.defaultShaderNode = this.stage.shManager.createShader(
|
|
687
|
+
'Default',
|
|
688
|
+
) as WebGlShaderNode;
|
|
689
|
+
return this.defaultShaderNode;
|
|
790
690
|
}
|
|
791
691
|
|
|
792
692
|
/**
|