@lightningjs/renderer 3.0.0-beta18 → 3.0.0-beta19
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/src/core/Autosizer.d.ts +29 -0
- package/dist/src/core/Autosizer.js +178 -0
- package/dist/src/core/Autosizer.js.map +1 -0
- package/dist/src/core/CoreNode.d.ts +44 -26
- package/dist/src/core/CoreNode.js +253 -150
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +1 -0
- package/dist/src/core/CoreTextNode.js +8 -4
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +16 -2
- package/dist/src/core/CoreTextureManager.js +38 -51
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +18 -2
- package/dist/src/core/Stage.js +44 -14
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.d.ts +2 -4
- package/dist/src/core/TextureMemoryManager.js +80 -95
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +11 -0
- package/dist/src/core/lib/WebGlContextWrapper.js +34 -0
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/textureCompression.d.ts +14 -2
- package/dist/src/core/lib/textureCompression.js +320 -67
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/platforms/web/WebPlatform.js +2 -2
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -1
- package/dist/src/core/renderers/CoreContextTexture.d.ts +1 -0
- package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +3 -1
- package/dist/src/core/renderers/CoreRenderer.js +1 -0
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +6 -0
- package/dist/src/core/renderers/CoreShaderNode.js +2 -0
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +1 -0
- package/dist/src/core/renderers/canvas/CanvasTexture.js +4 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +2 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +6 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +11 -0
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +51 -14
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +2 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +2 -0
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +57 -61
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +1 -0
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +12 -0
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/shaders/webgl/Rounded.js +3 -1
- package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +3 -2
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +3 -2
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +2 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/text-rendering/SdfFontHandler.js +1 -1
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -1
- package/dist/src/core/textures/ColorTexture.d.ts +1 -1
- package/dist/src/core/textures/ColorTexture.js +2 -3
- package/dist/src/core/textures/ColorTexture.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +7 -1
- package/dist/src/core/textures/ImageTexture.js +20 -36
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/NoiseTexture.d.ts +1 -1
- package/dist/src/core/textures/NoiseTexture.js +2 -2
- package/dist/src/core/textures/NoiseTexture.js.map +1 -1
- package/dist/src/core/textures/RenderTexture.d.ts +1 -1
- package/dist/src/core/textures/RenderTexture.js +2 -2
- package/dist/src/core/textures/RenderTexture.js.map +1 -1
- package/dist/src/core/textures/SubTexture.d.ts +2 -4
- package/dist/src/core/textures/SubTexture.js +13 -31
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +67 -8
- package/dist/src/core/textures/Texture.js +127 -15
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +15 -2
- package/dist/src/main-api/Renderer.js +19 -12
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/core/CoreNode.test.ts +0 -1
- package/src/core/CoreNode.ts +296 -177
- package/src/core/CoreTextNode.ts +9 -4
- package/src/core/CoreTextureManager.ts +69 -57
- package/src/core/Stage.ts +51 -17
- package/src/core/TextureError.ts +46 -0
- package/src/core/TextureMemoryManager.ts +95 -122
- package/src/core/lib/WebGlContextWrapper.ts +40 -0
- package/src/core/lib/collectionUtils.ts +118 -0
- package/src/core/lib/textureCompression.ts +433 -77
- package/src/core/platforms/web/WebPlatform.ts +2 -2
- package/src/core/renderers/CoreContextTexture.ts +1 -0
- package/src/core/renderers/CoreRenderer.ts +3 -2
- package/src/core/renderers/CoreShaderNode.ts +7 -0
- package/src/core/renderers/canvas/CanvasTexture.ts +5 -1
- package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +8 -0
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +58 -15
- package/src/core/renderers/webgl/WebGlRenderOp.ts +4 -1
- package/src/core/renderers/webgl/WebGlRenderer.ts +66 -68
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +16 -0
- package/src/core/shaders/webgl/Rounded.ts +3 -1
- package/src/core/shaders/webgl/RoundedWithBorder.ts +3 -2
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +3 -2
- package/src/core/shaders/webgl/RoundedWithShadow.ts +2 -1
- package/src/core/text-rendering/SdfFontHandler.ts +1 -1
- package/src/core/textures/ColorTexture.ts +6 -4
- package/src/core/textures/ImageTexture.ts +35 -42
- package/src/core/textures/NoiseTexture.ts +6 -4
- package/src/core/textures/RenderTexture.ts +6 -4
- package/src/core/textures/SubTexture.ts +17 -38
- package/src/core/textures/Texture.ts +159 -20
- package/src/main-api/Renderer.ts +36 -14
- package/dist/src/core/AutosizeManager.d.ts +0 -29
- package/dist/src/core/AutosizeManager.js +0 -171
- package/dist/src/core/AutosizeManager.js.map +0 -1
- package/dist/src/core/animations/Animation.d.ts +0 -16
- package/dist/src/core/animations/Animation.js +0 -111
- package/dist/src/core/animations/Animation.js.map +0 -1
- package/dist/src/core/animations/CoreTransition.d.ts +0 -24
- package/dist/src/core/animations/CoreTransition.js +0 -63
- package/dist/src/core/animations/CoreTransition.js.map +0 -1
- package/dist/src/core/animations/Playback.d.ts +0 -62
- package/dist/src/core/animations/Playback.js +0 -155
- package/dist/src/core/animations/Playback.js.map +0 -1
- package/dist/src/core/animations/Transition.d.ts +0 -25
- package/dist/src/core/animations/Transition.js +0 -63
- package/dist/src/core/animations/Transition.js.map +0 -1
- package/dist/src/core/animations/utils.d.ts +0 -2
- package/dist/src/core/animations/utils.js +0 -137
- package/dist/src/core/animations/utils.js.map +0 -1
- package/dist/src/core/platform.d.ts +0 -10
- package/dist/src/core/platform.js +0 -81
- package/dist/src/core/platform.js.map +0 -1
- package/dist/src/core/renderers/CoreShader.d.ts +0 -9
- package/dist/src/core/renderers/CoreShader.js +0 -28
- package/dist/src/core/renderers/CoreShader.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -33
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +0 -250
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -17
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +0 -125
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -14
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +0 -138
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -19
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -58
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +0 -1
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +0 -10
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +0 -43
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +0 -12
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +0 -58
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +0 -9
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +0 -38
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -69
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +0 -272
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +0 -34
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +0 -114
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -133
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +0 -645
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +0 -78
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -202
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +0 -9
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +0 -84
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +0 -10
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -108
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +0 -29
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +0 -408
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +0 -28
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +0 -126
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +0 -47
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -148
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +0 -30
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +0 -58
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +0 -9
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +0 -136
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +0 -36
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +0 -85
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +0 -45
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +0 -104
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +0 -22
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +0 -45
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +0 -58
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +0 -80
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -35
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +0 -134
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -40
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +0 -143
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +0 -61
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +0 -127
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +0 -40
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +0 -115
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +0 -61
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +0 -1
- package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +0 -12
- package/dist/src/core/text-rendering/TextRenderingUtils.js +0 -14
- package/dist/src/core/text-rendering/TextRenderingUtils.js.map +0 -1
- package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +0 -72
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js +0 -217
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +0 -1
- package/dist/src/core/text-rendering/TrFontManager.d.ts +0 -26
- package/dist/src/core/text-rendering/TrFontManager.js +0 -131
- package/dist/src/core/text-rendering/TrFontManager.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +0 -39
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +0 -125
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +0 -103
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +0 -21
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +0 -62
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +0 -88
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +0 -118
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +0 -63
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +0 -14
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +0 -66
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/utils.d.ts +0 -1
- package/dist/src/core/text-rendering/font-face-types/utils.js +0 -38
- package/dist/src/core/text-rendering/font-face-types/utils.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +0 -59
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +0 -397
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -120
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +0 -551
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +0 -92
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -607
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +0 -12
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +0 -61
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +0 -33
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +0 -52
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +0 -13
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +0 -32
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +0 -23
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +0 -84
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +0 -4
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +0 -34
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +0 -20
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +0 -308
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +0 -10
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +0 -40
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +0 -26
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +0 -70
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +0 -16
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js +0 -39
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +0 -373
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -178
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +0 -1
- package/dist/src/main-api/DynamicShaderController.d.ts +0 -29
- package/dist/src/main-api/DynamicShaderController.js +0 -58
- package/dist/src/main-api/DynamicShaderController.js.map +0 -1
- package/dist/src/main-api/ShaderController.d.ts +0 -31
- package/dist/src/main-api/ShaderController.js +0 -37
- package/dist/src/main-api/ShaderController.js.map +0 -1
|
@@ -21,8 +21,10 @@ import type { Dimensions } from '../../../common/CommonTypes.js';
|
|
|
21
21
|
import type { TextureMemoryManager } from '../../TextureMemoryManager.js';
|
|
22
22
|
import type { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';
|
|
23
23
|
import type { Texture } from '../../textures/Texture.js';
|
|
24
|
+
import { uploadCompressedTexture } from '../../lib/textureCompression.js';
|
|
24
25
|
import { CoreContextTexture } from '../CoreContextTexture.js';
|
|
25
26
|
import { isHTMLImageElement } from './internal/RendererUtils.js';
|
|
27
|
+
import type { Bound } from '../../lib/utils.js';
|
|
26
28
|
|
|
27
29
|
const TRANSPARENT_TEXTURE_DATA = new Uint8Array([0, 0, 0, 0]);
|
|
28
30
|
|
|
@@ -42,6 +44,13 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
42
44
|
private _w = 0;
|
|
43
45
|
private _h = 0;
|
|
44
46
|
|
|
47
|
+
txCoords: Bound = {
|
|
48
|
+
x1: 0,
|
|
49
|
+
y1: 0,
|
|
50
|
+
x2: 1,
|
|
51
|
+
y2: 1,
|
|
52
|
+
};
|
|
53
|
+
|
|
45
54
|
constructor(
|
|
46
55
|
protected glw: WebGlContextWrapper,
|
|
47
56
|
memManager: TextureMemoryManager,
|
|
@@ -50,6 +59,25 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
50
59
|
super(memManager, textureSource);
|
|
51
60
|
}
|
|
52
61
|
|
|
62
|
+
/**
|
|
63
|
+
* GL error check with direct state marking
|
|
64
|
+
* Uses cached error result to minimize function calls
|
|
65
|
+
*/
|
|
66
|
+
private checkGLError(): boolean {
|
|
67
|
+
// Skip if already failed to prevent double-processing
|
|
68
|
+
if (this.state === 'failed') {
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const error = this.glw.getError();
|
|
73
|
+
if (error !== 0) {
|
|
74
|
+
this.state = 'failed';
|
|
75
|
+
this.textureSource.setState('failed', new Error(`WebGL Error: ${error}`));
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
|
|
53
81
|
get ctxTexture(): WebGLTexture | null {
|
|
54
82
|
if (this.state === 'freed') {
|
|
55
83
|
this.load();
|
|
@@ -117,9 +145,7 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
117
145
|
// to the GL context before freeing the source data.
|
|
118
146
|
// This is important to avoid issues with the texture data being
|
|
119
147
|
// freed while the texture is still being loaded or used.
|
|
120
|
-
|
|
121
|
-
this.textureSource.freeTextureData();
|
|
122
|
-
});
|
|
148
|
+
this.textureSource.freeTextureData();
|
|
123
149
|
} catch (err: unknown) {
|
|
124
150
|
// If the texture has been freed while loading, return early.
|
|
125
151
|
// Type assertion needed because state could change during async operations
|
|
@@ -180,6 +206,11 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
180
206
|
|
|
181
207
|
glw.texImage2D(0, format, format, glw.UNSIGNED_BYTE, tdata);
|
|
182
208
|
|
|
209
|
+
// Check for errors after compressed texture operations
|
|
210
|
+
if (this.checkGLError() === true) {
|
|
211
|
+
return { w: 0, h: 0 };
|
|
212
|
+
}
|
|
213
|
+
|
|
183
214
|
this.setTextureMemUse(h * w * formatBytes * memoryPadding);
|
|
184
215
|
} else if (tdata === null) {
|
|
185
216
|
w = 0;
|
|
@@ -199,21 +230,21 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
199
230
|
);
|
|
200
231
|
this.setTextureMemUse(TRANSPARENT_TEXTURE_DATA.byteLength);
|
|
201
232
|
} else if ('mipmaps' in tdata && tdata.mipmaps) {
|
|
202
|
-
const { mipmaps,
|
|
203
|
-
|
|
204
|
-
type === 'ktx'
|
|
205
|
-
? new DataView(mipmaps[0] ?? new ArrayBuffer(0))
|
|
206
|
-
: (mipmaps[0] as unknown as ArrayBufferView);
|
|
233
|
+
const { mipmaps, type, blockInfo } = tdata;
|
|
234
|
+
uploadCompressedTexture[type]!(glw, this._nativeCtxTexture, tdata);
|
|
207
235
|
|
|
208
|
-
|
|
236
|
+
// Check for errors after compressed texture operations
|
|
237
|
+
if (this.checkGLError() === true) {
|
|
238
|
+
return { w: 0, h: 0 };
|
|
239
|
+
}
|
|
209
240
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
241
|
+
w = tdata.w;
|
|
242
|
+
h = tdata.h;
|
|
243
|
+
this.txCoords.x2 = w / (Math.ceil(w / blockInfo.width) * blockInfo.width);
|
|
244
|
+
this.txCoords.y2 =
|
|
245
|
+
h / (Math.ceil(h / blockInfo.height) * blockInfo.height);
|
|
215
246
|
|
|
216
|
-
this.setTextureMemUse(
|
|
247
|
+
this.setTextureMemUse(mipmaps[0]?.byteLength ?? 0);
|
|
217
248
|
} else if (tdata && tdata instanceof Uint8Array) {
|
|
218
249
|
// Color Texture
|
|
219
250
|
w = 1;
|
|
@@ -227,6 +258,11 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
227
258
|
|
|
228
259
|
glw.texImage2D(0, format, w, h, 0, format, glw.UNSIGNED_BYTE, tdata);
|
|
229
260
|
|
|
261
|
+
// Check for errors after compressed texture operations
|
|
262
|
+
if (this.checkGLError() === true) {
|
|
263
|
+
return { w: 0, h: 0 };
|
|
264
|
+
}
|
|
265
|
+
|
|
230
266
|
this.setTextureMemUse(w * h * formatBytes);
|
|
231
267
|
} else {
|
|
232
268
|
console.error(
|
|
@@ -253,6 +289,13 @@ export class WebGlCtxTexture extends CoreContextTexture {
|
|
|
253
289
|
|
|
254
290
|
this.state = 'freed';
|
|
255
291
|
this.textureSource.setState('freed');
|
|
292
|
+
this.release();
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* Release the WebGLTexture from the GPU without changing state
|
|
297
|
+
*/
|
|
298
|
+
release(): void {
|
|
256
299
|
this._w = 0;
|
|
257
300
|
this._h = 0;
|
|
258
301
|
|
|
@@ -34,7 +34,8 @@ type ReqQuad =
|
|
|
34
34
|
| 'rtt'
|
|
35
35
|
| 'clippingRect'
|
|
36
36
|
| 'height'
|
|
37
|
-
| 'width'
|
|
37
|
+
| 'width'
|
|
38
|
+
| 'time';
|
|
38
39
|
type RenderOpQuadOptions = Pick<QuadOptions, ReqQuad> &
|
|
39
40
|
Partial<Omit<QuadOptions, ReqQuad>> & {
|
|
40
41
|
sdfShaderProps?: Record<string, unknown>;
|
|
@@ -65,6 +66,7 @@ export class WebGlRenderOp extends CoreRenderOp {
|
|
|
65
66
|
readonly framebufferDimensions?: Dimensions | null;
|
|
66
67
|
readonly alpha: number;
|
|
67
68
|
readonly pixelRatio: number;
|
|
69
|
+
readonly time?: number | null;
|
|
68
70
|
|
|
69
71
|
constructor(
|
|
70
72
|
readonly renderer: WebGlRenderer,
|
|
@@ -83,6 +85,7 @@ export class WebGlRenderOp extends CoreRenderOp {
|
|
|
83
85
|
this.alpha = quad.alpha;
|
|
84
86
|
this.pixelRatio =
|
|
85
87
|
this.parentHasRenderTexture === true ? 1 : renderer.stage.pixelRatio;
|
|
88
|
+
this.time = quad.time;
|
|
86
89
|
|
|
87
90
|
/**
|
|
88
91
|
* related to line 51
|
|
@@ -52,6 +52,7 @@ import { WebGlCtxRenderTexture } from './WebGlCtxRenderTexture.js';
|
|
|
52
52
|
import { Default } from '../../shaders/webgl/Default.js';
|
|
53
53
|
import type { WebGlShaderType } from './WebGlShaderNode.js';
|
|
54
54
|
import { WebGlShaderNode } from './WebGlShaderNode.js';
|
|
55
|
+
import type { Dimensions } from '../../../common/CommonTypes.js';
|
|
55
56
|
|
|
56
57
|
export type WebGlRendererOptions = CoreRendererOptions;
|
|
57
58
|
|
|
@@ -77,7 +78,7 @@ export class WebGlRenderer extends CoreRenderer {
|
|
|
77
78
|
override rttNodes: CoreNode[] = [];
|
|
78
79
|
activeRttNode: CoreNode | null = null;
|
|
79
80
|
|
|
80
|
-
defaultTextureCoords: TextureCoords = {
|
|
81
|
+
override defaultTextureCoords: TextureCoords = {
|
|
81
82
|
x1: 0,
|
|
82
83
|
y1: 0,
|
|
83
84
|
x2: 1,
|
|
@@ -640,85 +641,82 @@ export class WebGlRenderer extends CoreRenderer {
|
|
|
640
641
|
return this.defaultShaderNode;
|
|
641
642
|
}
|
|
642
643
|
|
|
643
|
-
override getTextureCoords(node: CoreNode): TextureCoords {
|
|
644
|
+
override getTextureCoords(node: CoreNode): TextureCoords | undefined {
|
|
644
645
|
const texture = node.texture;
|
|
645
646
|
if (texture === null) {
|
|
646
|
-
return
|
|
647
|
+
return undefined;
|
|
647
648
|
}
|
|
648
649
|
|
|
649
|
-
|
|
650
|
+
//this stuff needs to be properly moved to CtxSubTexture at some point in the future.
|
|
651
|
+
const ctxTexture =
|
|
652
|
+
(texture as SubTexture).parentTexture !== undefined
|
|
653
|
+
? (texture as SubTexture).parentTexture.ctxTexture
|
|
654
|
+
: texture.ctxTexture;
|
|
655
|
+
if (ctxTexture === undefined) {
|
|
656
|
+
return undefined;
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
const textureOptions = node.props.textureOptions;
|
|
660
|
+
|
|
661
|
+
//early exit for textures with no options unless its a subtexture
|
|
650
662
|
if (
|
|
651
|
-
texture.type
|
|
652
|
-
|
|
653
|
-
texture.type === TextureType.renderToTexture ||
|
|
654
|
-
textureOptions !== null
|
|
663
|
+
texture.type !== TextureType.subTexture &&
|
|
664
|
+
textureOptions === undefined
|
|
655
665
|
) {
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
y1: 0,
|
|
659
|
-
x2: 1,
|
|
660
|
-
y2: 1,
|
|
661
|
-
};
|
|
662
|
-
|
|
663
|
-
if (texture.type === TextureType.subTexture) {
|
|
664
|
-
const props = (texture as SubTexture).props;
|
|
665
|
-
const { w: parentW = 0, h: parentH = 0 } = (texture as SubTexture)
|
|
666
|
-
.parentTexture.dimensions || { w: 0, h: 0 };
|
|
667
|
-
result.x1 = props.x / parentW;
|
|
668
|
-
result.x2 = result.x1 + props.w / parentW;
|
|
669
|
-
result.y1 = props.y / parentH;
|
|
670
|
-
result.y2 = result.y1 + props.h / parentH;
|
|
671
|
-
}
|
|
672
|
-
|
|
673
|
-
if (
|
|
674
|
-
texture.type === TextureType.image &&
|
|
675
|
-
textureOptions !== null &&
|
|
676
|
-
textureOptions.resizeMode !== undefined &&
|
|
677
|
-
texture.dimensions !== null
|
|
678
|
-
) {
|
|
679
|
-
const resizeMode = textureOptions.resizeMode;
|
|
680
|
-
const dimensions = texture.dimensions;
|
|
681
|
-
if (resizeMode.type === 'cover') {
|
|
682
|
-
const scaleX = node.props.w / dimensions.w;
|
|
683
|
-
const scaleY = node.props.h / dimensions.h;
|
|
684
|
-
const scale = Math.max(scaleX, scaleY);
|
|
685
|
-
const precision = 1 / scale;
|
|
686
|
-
// Determine based on width
|
|
687
|
-
if (scaleX < scale) {
|
|
688
|
-
const desiredSize = precision * node.props.w;
|
|
689
|
-
result.x1 =
|
|
690
|
-
(1 - desiredSize / dimensions.w) * (resizeMode.clipX ?? 0.5);
|
|
691
|
-
result.x2 = result.x1 + desiredSize / dimensions.w;
|
|
692
|
-
}
|
|
693
|
-
// Determine based on height
|
|
694
|
-
if (scaleY < scale) {
|
|
695
|
-
const desiredSize = precision * node.props.h;
|
|
696
|
-
result.y1 =
|
|
697
|
-
(1 - desiredSize / dimensions.h) * (resizeMode.clipY ?? 0.5);
|
|
698
|
-
result.y2 = result.y1 + desiredSize / dimensions.h;
|
|
699
|
-
}
|
|
700
|
-
}
|
|
701
|
-
}
|
|
666
|
+
return (ctxTexture as WebGlCtxTexture).txCoords;
|
|
667
|
+
}
|
|
702
668
|
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
669
|
+
let { x1, x2, y1, y2 } = (ctxTexture as WebGlCtxTexture).txCoords;
|
|
670
|
+
if (texture.type === TextureType.subTexture) {
|
|
671
|
+
const { w: parentW, h: parentH } = (texture as SubTexture).parentTexture
|
|
672
|
+
.dimensions!;
|
|
673
|
+
const { x, y, w, h } = (texture as SubTexture).props;
|
|
674
|
+
x1 = x / parentW;
|
|
675
|
+
y1 = y / parentH;
|
|
676
|
+
x2 = x1 + w / parentW;
|
|
677
|
+
y2 = y1 + h / parentH;
|
|
678
|
+
}
|
|
709
679
|
|
|
710
|
-
|
|
711
|
-
|
|
680
|
+
const resizeMode = textureOptions.resizeMode;
|
|
681
|
+
if (
|
|
682
|
+
resizeMode !== undefined &&
|
|
683
|
+
resizeMode.type === 'cover' &&
|
|
684
|
+
texture.dimensions !== null
|
|
685
|
+
) {
|
|
686
|
+
const dimensions = texture.dimensions as Dimensions;
|
|
687
|
+
const w = node.props.w;
|
|
688
|
+
const h = node.props.h;
|
|
689
|
+
const scaleX = w / dimensions.w;
|
|
690
|
+
const scaleY = h / dimensions.h;
|
|
691
|
+
const scale = Math.max(scaleX, scaleY);
|
|
692
|
+
const precision = 1 / scale;
|
|
693
|
+
|
|
694
|
+
// Determine based on width
|
|
695
|
+
if (scaleX < scale) {
|
|
696
|
+
const desiredSize = precision * node.props.w;
|
|
697
|
+
x1 = (1 - desiredSize / dimensions.w) * (resizeMode.clipX ?? 0.5);
|
|
698
|
+
x2 = x1 + desiredSize / dimensions.w;
|
|
712
699
|
}
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
700
|
+
// Determine based on height
|
|
701
|
+
if (scaleY < scale) {
|
|
702
|
+
const desiredSize = precision * node.props.h;
|
|
703
|
+
y1 = (1 - desiredSize / dimensions.h) * (resizeMode.clipY ?? 0.5);
|
|
704
|
+
y2 = y1 + desiredSize / dimensions.h;
|
|
717
705
|
}
|
|
718
|
-
return result as TextureCoords;
|
|
719
706
|
}
|
|
720
707
|
|
|
721
|
-
|
|
708
|
+
if (textureOptions.flipX === true) {
|
|
709
|
+
[x1, x2] = [x2, x1];
|
|
710
|
+
}
|
|
711
|
+
if (textureOptions.flipY === true) {
|
|
712
|
+
[y1, y2] = [y2, y1];
|
|
713
|
+
}
|
|
714
|
+
return {
|
|
715
|
+
x1,
|
|
716
|
+
y1,
|
|
717
|
+
x2,
|
|
718
|
+
y2,
|
|
719
|
+
};
|
|
722
720
|
}
|
|
723
721
|
|
|
724
722
|
/**
|
|
@@ -50,6 +50,7 @@ export class WebGlShaderProgram implements CoreShaderProgram {
|
|
|
50
50
|
protected lifecycle: Pick<WebGlShaderType, 'update' | 'canBatch'>;
|
|
51
51
|
protected useSystemAlpha = false;
|
|
52
52
|
protected useSystemDimensions = false;
|
|
53
|
+
protected useTimeValue = false;
|
|
53
54
|
public isDestroyed = false;
|
|
54
55
|
supportsIndexedTextures = false;
|
|
55
56
|
|
|
@@ -123,6 +124,10 @@ export class WebGlShaderProgram implements CoreShaderProgram {
|
|
|
123
124
|
this.useSystemAlpha = uniLocs['u_alpha'] !== undefined;
|
|
124
125
|
this.useSystemDimensions = uniLocs['u_dimensions'] !== undefined;
|
|
125
126
|
|
|
127
|
+
this.useTimeValue =
|
|
128
|
+
this.glw.getUniformLocation(program, 'u_dimensions') !== null &&
|
|
129
|
+
config.time !== undefined;
|
|
130
|
+
|
|
126
131
|
this.lifecycle = {
|
|
127
132
|
update: config.update,
|
|
128
133
|
canBatch: config.canBatch,
|
|
@@ -149,6 +154,12 @@ export class WebGlShaderProgram implements CoreShaderProgram {
|
|
|
149
154
|
return this.lifecycle.canBatch(incomingQuad, currentRenderOp);
|
|
150
155
|
}
|
|
151
156
|
|
|
157
|
+
if (this.useTimeValue === true) {
|
|
158
|
+
if (incomingQuad.time !== currentRenderOp.time) {
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
152
163
|
if (this.useSystemAlpha === true) {
|
|
153
164
|
if (incomingQuad.alpha !== currentRenderOp.alpha) {
|
|
154
165
|
return false;
|
|
@@ -169,6 +180,7 @@ export class WebGlShaderProgram implements CoreShaderProgram {
|
|
|
169
180
|
if (incomingQuad.shader !== null) {
|
|
170
181
|
shaderPropsA = incomingQuad.shader.resolvedProps;
|
|
171
182
|
}
|
|
183
|
+
|
|
172
184
|
if (currentRenderOp.shader !== null) {
|
|
173
185
|
shaderPropsB = currentRenderOp.shader.resolvedProps;
|
|
174
186
|
}
|
|
@@ -221,6 +233,10 @@ export class WebGlShaderProgram implements CoreShaderProgram {
|
|
|
221
233
|
);
|
|
222
234
|
}
|
|
223
235
|
|
|
236
|
+
if (this.useTimeValue === true) {
|
|
237
|
+
this.glw.uniform1f('u_time', renderOp.time as number);
|
|
238
|
+
}
|
|
239
|
+
|
|
224
240
|
if (this.useSystemAlpha === true) {
|
|
225
241
|
this.glw.uniform1f('u_alpha', renderOp.alpha);
|
|
226
242
|
}
|
|
@@ -80,6 +80,7 @@ export const Rounded: WebGlShaderType<RoundedProps> = {
|
|
|
80
80
|
uniform vec2 u_resolution;
|
|
81
81
|
uniform vec2 u_dimensions;
|
|
82
82
|
uniform float u_alpha;
|
|
83
|
+
uniform float u_pixelRatio;
|
|
83
84
|
uniform sampler2D u_texture;
|
|
84
85
|
|
|
85
86
|
//custom uniforms
|
|
@@ -103,7 +104,8 @@ export const Rounded: WebGlShaderType<RoundedProps> = {
|
|
|
103
104
|
vec2 boxUv = v_nodeCoords.xy * u_dimensions - halfDimensions;
|
|
104
105
|
float boxDist = roundedBox(boxUv, halfDimensions, u_radius);
|
|
105
106
|
|
|
106
|
-
float
|
|
107
|
+
float edgeWidth = 1.0 / u_pixelRatio;
|
|
108
|
+
float roundedAlpha = 1.0 - smoothstep(-0.5 * edgeWidth, 0.5 * edgeWidth, boxDist);
|
|
107
109
|
|
|
108
110
|
vec4 resColor = vec4(0.0);
|
|
109
111
|
resColor = mix(resColor, color, roundedAlpha);
|
|
@@ -130,7 +130,8 @@ export const RoundedWithBorder: WebGlShaderType<RoundedWithBorderProps> = {
|
|
|
130
130
|
vec2 boxUv = v_nodeCoords.xy * u_dimensions - v_halfDimensions;
|
|
131
131
|
float outerDist = roundedBox(boxUv, v_halfDimensions, u_radius);
|
|
132
132
|
|
|
133
|
-
float
|
|
133
|
+
float edgeWidth = 1.0 / u_pixelRatio;
|
|
134
|
+
float outerAlpha = 1.0 - smoothstep(-0.5 * edgeWidth, 0.5 * edgeWidth, outerDist);
|
|
134
135
|
|
|
135
136
|
if(v_borderZero == 1.0) {
|
|
136
137
|
gl_FragColor = mix(vec4(0.0), color, outerAlpha) * u_alpha;
|
|
@@ -141,7 +142,7 @@ export const RoundedWithBorder: WebGlShaderType<RoundedWithBorderProps> = {
|
|
|
141
142
|
boxUv.y += u_borderWidth.z > u_borderWidth.x ? ((u_borderWidth.z - u_borderWidth.x) * 0.5 + 0.5) : -(u_borderWidth.x - u_borderWidth.z) * 0.5;
|
|
142
143
|
|
|
143
144
|
float innerDist = roundedBox(boxUv, v_innerSize, v_innerRadius);
|
|
144
|
-
float innerAlpha = 1.0 - smoothstep(0.
|
|
145
|
+
float innerAlpha = 1.0 - smoothstep(-0.5 * edgeWidth, 0.5 * edgeWidth, innerDist);
|
|
145
146
|
|
|
146
147
|
vec4 resColor = mix(u_borderColor, color, innerAlpha);
|
|
147
148
|
resColor = mix(vec4(0.0), resColor, outerAlpha);
|
|
@@ -151,7 +151,8 @@ export const RoundedWithBorderAndShadow: WebGlShaderType<RoundedWithBorderAndSha
|
|
|
151
151
|
vec2 boxUv = v_nodeCoords.xy * u_dimensions - v_halfDimensions;
|
|
152
152
|
float outerDist = roundedBox(boxUv, v_halfDimensions - 1.0, u_radius);
|
|
153
153
|
|
|
154
|
-
float
|
|
154
|
+
float edgeWidth = 1.0 / u_pixelRatio;
|
|
155
|
+
float outerAlpha = 1.0 - smoothstep(-0.5 * edgeWidth, 0.5 * edgeWidth, outerDist);
|
|
155
156
|
|
|
156
157
|
float shadowAlpha = shadowBox(boxUv - u_shadow.xy, v_halfDimensions + u_shadow.w, u_radius + u_shadow.z);
|
|
157
158
|
vec4 shadow = mix(vec4(0.0), u_shadowColor, shadowAlpha);
|
|
@@ -165,7 +166,7 @@ export const RoundedWithBorderAndShadow: WebGlShaderType<RoundedWithBorderAndSha
|
|
|
165
166
|
boxUv.y += u_borderWidth.z > u_borderWidth.x ? ((u_borderWidth.z - u_borderWidth.x) * 0.5 + 0.5) : -(u_borderWidth.x - u_borderWidth.z) * 0.5;
|
|
166
167
|
|
|
167
168
|
float innerDist = roundedBox(boxUv, v_innerSize, v_innerRadius);
|
|
168
|
-
float innerAlpha = 1.0 - smoothstep(0.
|
|
169
|
+
float innerAlpha = 1.0 - smoothstep(-0.5 * edgeWidth, 0.5 * edgeWidth, innerDist);
|
|
169
170
|
|
|
170
171
|
vec4 resColor = mix(u_borderColor, color, innerAlpha);
|
|
171
172
|
resColor = mix(shadow, resColor, outerAlpha);
|
|
@@ -81,7 +81,8 @@ export const RoundedWithShadow: WebGlShaderType<RoundedWithShadowProps> = {
|
|
|
81
81
|
vec2 boxUv = v_nodeCoords.xy * u_dimensions - halfDimensions;
|
|
82
82
|
float boxDist = roundedBox(boxUv, halfDimensions, u_radius);
|
|
83
83
|
|
|
84
|
-
float
|
|
84
|
+
float edgeWidth = 1.0 / u_pixelRatio;
|
|
85
|
+
float roundedAlpha = 1.0 - smoothstep(-0.5 * edgeWidth, 0.5 * edgeWidth, boxDist);
|
|
85
86
|
|
|
86
87
|
float shadowAlpha = shadowBox(boxUv - u_shadow.xy, halfDimensions + u_shadow.w, u_radius + u_shadow.z);
|
|
87
88
|
|
|
@@ -326,7 +326,7 @@ export const loadFont = async (
|
|
|
326
326
|
premultiplyAlpha: false,
|
|
327
327
|
});
|
|
328
328
|
|
|
329
|
-
atlasTexture.setRenderableOwner(
|
|
329
|
+
atlasTexture.setRenderableOwner(fontFamily, true);
|
|
330
330
|
atlasTexture.preventCleanup = true; // Prevent automatic cleanup
|
|
331
331
|
|
|
332
332
|
if (atlasTexture.state === 'loaded') {
|
|
@@ -49,9 +49,12 @@ export class ColorTexture extends Texture {
|
|
|
49
49
|
|
|
50
50
|
props: Required<ColorTextureProps>;
|
|
51
51
|
|
|
52
|
-
constructor(
|
|
52
|
+
constructor(
|
|
53
|
+
txManager: CoreTextureManager,
|
|
54
|
+
props: Required<ColorTextureProps>,
|
|
55
|
+
) {
|
|
53
56
|
super(txManager);
|
|
54
|
-
this.props =
|
|
57
|
+
this.props = props;
|
|
55
58
|
}
|
|
56
59
|
|
|
57
60
|
get color() {
|
|
@@ -86,8 +89,7 @@ export class ColorTexture extends Texture {
|
|
|
86
89
|
}
|
|
87
90
|
|
|
88
91
|
static override makeCacheKey(props: ColorTextureProps): string {
|
|
89
|
-
|
|
90
|
-
return `ColorTexture,${resolvedProps.color}`;
|
|
92
|
+
return `ColorTexture,${props.color}`;
|
|
91
93
|
}
|
|
92
94
|
|
|
93
95
|
static override resolveDefaults(
|
|
@@ -109,6 +109,12 @@ export interface ImageTextureProps {
|
|
|
109
109
|
* @default null
|
|
110
110
|
*/
|
|
111
111
|
sy?: number | null;
|
|
112
|
+
/**
|
|
113
|
+
* Maximum number of times to retry loading the image if it fails.
|
|
114
|
+
*
|
|
115
|
+
* @default 5
|
|
116
|
+
*/
|
|
117
|
+
maxRetryCount?: number;
|
|
112
118
|
}
|
|
113
119
|
|
|
114
120
|
/**
|
|
@@ -131,11 +137,15 @@ export class ImageTexture extends Texture {
|
|
|
131
137
|
public props: Required<ImageTextureProps>;
|
|
132
138
|
public override type: TextureType = TextureType.image;
|
|
133
139
|
|
|
134
|
-
constructor(
|
|
140
|
+
constructor(
|
|
141
|
+
txManager: CoreTextureManager,
|
|
142
|
+
props: Required<ImageTextureProps>,
|
|
143
|
+
) {
|
|
135
144
|
super(txManager);
|
|
136
145
|
|
|
137
146
|
this.platform = txManager.platform;
|
|
138
|
-
this.props =
|
|
147
|
+
this.props = props;
|
|
148
|
+
this.maxRetryCount = props.maxRetryCount as number;
|
|
139
149
|
}
|
|
140
150
|
|
|
141
151
|
hasAlphaChannel(mimeType: string) {
|
|
@@ -152,14 +162,19 @@ export class ImageTexture extends Texture {
|
|
|
152
162
|
return new Promise<{
|
|
153
163
|
data: HTMLImageElement | null;
|
|
154
164
|
premultiplyAlpha: boolean;
|
|
155
|
-
}>((resolve) => {
|
|
165
|
+
}>((resolve, reject) => {
|
|
156
166
|
img.onload = () => {
|
|
157
167
|
resolve({ data: img, premultiplyAlpha: hasAlpha });
|
|
158
168
|
};
|
|
159
169
|
|
|
160
|
-
img.onerror = () => {
|
|
161
|
-
|
|
162
|
-
|
|
170
|
+
img.onerror = (err) => {
|
|
171
|
+
const errorMessage =
|
|
172
|
+
err instanceof Error
|
|
173
|
+
? err.message
|
|
174
|
+
: err instanceof Event
|
|
175
|
+
? `Image loading failed for ${img.src}`
|
|
176
|
+
: 'Unknown image loading error';
|
|
177
|
+
reject(new Error(`Image loading failed: ${errorMessage}`));
|
|
163
178
|
};
|
|
164
179
|
|
|
165
180
|
if (src instanceof Blob) {
|
|
@@ -253,17 +268,12 @@ export class ImageTexture extends Texture {
|
|
|
253
268
|
}
|
|
254
269
|
|
|
255
270
|
override async getTextureSource(): Promise<TextureData> {
|
|
256
|
-
let resp;
|
|
271
|
+
let resp: TextureData;
|
|
257
272
|
try {
|
|
258
273
|
resp = await this.determineImageTypeAndLoadImage();
|
|
259
274
|
} catch (e) {
|
|
260
275
|
this.setState('failed', e as Error);
|
|
261
276
|
|
|
262
|
-
// log error only in development
|
|
263
|
-
if (isProductionEnvironment === false) {
|
|
264
|
-
console.error('ImageTexture:', e);
|
|
265
|
-
}
|
|
266
|
-
|
|
267
277
|
return {
|
|
268
278
|
data: null,
|
|
269
279
|
};
|
|
@@ -276,23 +286,6 @@ export class ImageTexture extends Texture {
|
|
|
276
286
|
};
|
|
277
287
|
}
|
|
278
288
|
|
|
279
|
-
let w, h;
|
|
280
|
-
// check if resp.data is typeof Uint8ClampedArray else
|
|
281
|
-
// use resp.data.width and resp.data.height
|
|
282
|
-
if (resp.data instanceof Uint8Array) {
|
|
283
|
-
w = this.props.w ?? 0;
|
|
284
|
-
h = this.props.h ?? 0;
|
|
285
|
-
} else {
|
|
286
|
-
w = resp.data?.width ?? (this.props.w || 0);
|
|
287
|
-
h = resp.data?.height ?? (this.props.h || 0);
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
// we're loaded!
|
|
291
|
-
this.setState('fetched', {
|
|
292
|
-
w,
|
|
293
|
-
h,
|
|
294
|
-
});
|
|
295
|
-
|
|
296
289
|
return {
|
|
297
290
|
data: resp.data,
|
|
298
291
|
premultiplyAlpha: this.props.premultiplyAlpha ?? true,
|
|
@@ -375,26 +368,25 @@ export class ImageTexture extends Texture {
|
|
|
375
368
|
* @returns The cache key as a string, or `false` if the key cannot be generated.
|
|
376
369
|
*/
|
|
377
370
|
static override makeCacheKey(props: ImageTextureProps): string | false {
|
|
378
|
-
const resolvedProps = ImageTexture.resolveDefaults(props);
|
|
379
371
|
// Only cache key-able textures; prioritise key
|
|
380
|
-
const key =
|
|
372
|
+
const key = props.key || props.src;
|
|
381
373
|
if (typeof key !== 'string') {
|
|
382
374
|
return false;
|
|
383
375
|
}
|
|
384
376
|
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
377
|
+
let cacheKey = `ImageTexture,${key},${props.premultiplyAlpha ?? 'true'},${
|
|
378
|
+
props.maxRetryCount
|
|
379
|
+
}`;
|
|
380
|
+
|
|
381
|
+
if (props.sh !== null && props.sw !== null) {
|
|
382
|
+
cacheKey += ',';
|
|
383
|
+
cacheKey += props.sx ?? '';
|
|
384
|
+
cacheKey += props.sy ?? '';
|
|
385
|
+
cacheKey += props.sw || '';
|
|
386
|
+
cacheKey += props.sh || '';
|
|
393
387
|
}
|
|
394
388
|
|
|
395
|
-
return
|
|
396
|
-
resolvedProps.premultiplyAlpha ?? 'true'
|
|
397
|
-
}${dimensionProps}`;
|
|
389
|
+
return cacheKey;
|
|
398
390
|
}
|
|
399
391
|
|
|
400
392
|
static override resolveDefaults(
|
|
@@ -411,6 +403,7 @@ export class ImageTexture extends Texture {
|
|
|
411
403
|
sy: props.sy ?? null,
|
|
412
404
|
sw: props.sw ?? null,
|
|
413
405
|
sh: props.sh ?? null,
|
|
406
|
+
maxRetryCount: props.maxRetryCount ?? 5,
|
|
414
407
|
};
|
|
415
408
|
}
|
|
416
409
|
|
|
@@ -58,9 +58,12 @@ export class NoiseTexture extends Texture {
|
|
|
58
58
|
|
|
59
59
|
public override type: TextureType = TextureType.noise;
|
|
60
60
|
|
|
61
|
-
constructor(
|
|
61
|
+
constructor(
|
|
62
|
+
txManager: CoreTextureManager,
|
|
63
|
+
props: Required<NoiseTextureProps>,
|
|
64
|
+
) {
|
|
62
65
|
super(txManager);
|
|
63
|
-
this.props =
|
|
66
|
+
this.props = props;
|
|
64
67
|
}
|
|
65
68
|
|
|
66
69
|
override async getTextureSource(): Promise<TextureData> {
|
|
@@ -75,8 +78,7 @@ export class NoiseTexture extends Texture {
|
|
|
75
78
|
pixelData8[i + 3] = 255;
|
|
76
79
|
}
|
|
77
80
|
|
|
78
|
-
|
|
79
|
-
|
|
81
|
+
// Noise Texture data ready - dimensions will be set during upload
|
|
80
82
|
return {
|
|
81
83
|
data: new ImageData(pixelData8, w, h),
|
|
82
84
|
};
|
|
@@ -42,9 +42,12 @@ export class RenderTexture extends Texture {
|
|
|
42
42
|
|
|
43
43
|
public override type: TextureType = TextureType.renderToTexture;
|
|
44
44
|
|
|
45
|
-
constructor(
|
|
45
|
+
constructor(
|
|
46
|
+
txManager: CoreTextureManager,
|
|
47
|
+
props: Required<RenderTextureProps>,
|
|
48
|
+
) {
|
|
46
49
|
super(txManager);
|
|
47
|
-
this.props =
|
|
50
|
+
this.props = props;
|
|
48
51
|
}
|
|
49
52
|
|
|
50
53
|
get w() {
|
|
@@ -64,8 +67,7 @@ export class RenderTexture extends Texture {
|
|
|
64
67
|
}
|
|
65
68
|
|
|
66
69
|
override async getTextureSource(): Promise<TextureData> {
|
|
67
|
-
|
|
68
|
-
|
|
70
|
+
// Render texture data ready - dimensions will be set during upload
|
|
69
71
|
return {
|
|
70
72
|
data: null,
|
|
71
73
|
premultiplyAlpha: null,
|