@lightningjs/renderer 0.7.2 → 0.7.3

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.
Files changed (188) hide show
  1. package/COPYING +1 -0
  2. package/LICENSE +202 -202
  3. package/NOTICE +3 -3
  4. package/README.md +221 -221
  5. package/dist/src/common/CommonTypes.d.ts +7 -0
  6. package/dist/src/core/Stage.d.ts +2 -1
  7. package/dist/src/core/Stage.js +4 -0
  8. package/dist/src/core/Stage.js.map +1 -1
  9. package/dist/src/core/animations/CoreAnimation.js +3 -0
  10. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  11. package/dist/src/core/animations/CoreAnimationController.d.ts +8 -0
  12. package/dist/src/core/animations/CoreAnimationController.js +26 -0
  13. package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
  14. package/dist/src/core/lib/ImageWorker.js +21 -21
  15. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +47 -47
  16. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +61 -61
  17. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +93 -93
  18. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +63 -63
  19. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +49 -49
  20. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +15 -15
  21. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +5 -5
  22. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +15 -15
  23. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +15 -15
  24. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +15 -15
  25. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +42 -42
  26. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +44 -44
  27. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +3 -3
  28. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +31 -31
  29. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +13 -13
  30. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +37 -37
  31. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +19 -19
  32. package/dist/src/main-api/ICoreDriver.d.ts +2 -1
  33. package/dist/src/main-api/Inspector.d.ts +6 -0
  34. package/dist/src/main-api/Inspector.js +105 -19
  35. package/dist/src/main-api/Inspector.js.map +1 -1
  36. package/dist/src/main-api/RendererMain.d.ts +12 -0
  37. package/dist/src/main-api/RendererMain.js +19 -1
  38. package/dist/src/main-api/RendererMain.js.map +1 -1
  39. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +2 -1
  40. package/dist/src/render-drivers/main/MainCoreDriver.js +7 -1
  41. package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -1
  42. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +2 -1
  43. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +7 -0
  44. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -1
  45. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +9 -1
  46. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +1 -1
  47. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  48. package/exports/core-api.ts +102 -102
  49. package/exports/main-api.ts +60 -60
  50. package/exports/utils.ts +41 -41
  51. package/package.json +5 -3
  52. package/scripts/please-use-pnpm.js +13 -0
  53. package/src/common/CommonTypes.ts +113 -105
  54. package/src/common/EventEmitter.ts +77 -77
  55. package/src/common/IAnimationController.ts +29 -29
  56. package/src/core/CoreExtension.ts +32 -32
  57. package/src/core/CoreNode.ts +926 -926
  58. package/src/core/CoreShaderManager.ts +243 -243
  59. package/src/core/CoreTextNode.ts +391 -391
  60. package/src/core/CoreTextureManager.ts +326 -326
  61. package/src/core/Stage.ts +354 -342
  62. package/src/core/animations/AnimationManager.ts +38 -38
  63. package/src/core/animations/CoreAnimation.ts +181 -177
  64. package/src/core/animations/CoreAnimationController.ts +148 -117
  65. package/src/core/lib/ContextSpy.ts +41 -41
  66. package/src/core/lib/ImageWorker.ts +124 -124
  67. package/src/core/lib/Matrix3d.ts +290 -290
  68. package/src/core/lib/WebGlContextWrapper.ts +992 -992
  69. package/src/core/lib/textureCompression.ts +152 -152
  70. package/src/core/lib/utils.ts +241 -241
  71. package/src/core/platform.ts +46 -46
  72. package/src/core/renderers/CoreContextTexture.ts +30 -30
  73. package/src/core/renderers/CoreRenderOp.ts +22 -22
  74. package/src/core/renderers/CoreRenderer.ts +63 -63
  75. package/src/core/renderers/CoreShader.ts +41 -41
  76. package/src/core/renderers/webgl/WebGlCoreCtxSubTexture.ts +37 -37
  77. package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +231 -231
  78. package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +107 -107
  79. package/src/core/renderers/webgl/WebGlCoreRenderer.ts +520 -520
  80. package/src/core/renderers/webgl/WebGlCoreShader.ts +337 -337
  81. package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
  82. package/src/core/renderers/webgl/internal/RendererUtils.ts +131 -131
  83. package/src/core/renderers/webgl/internal/ShaderUtils.ts +136 -136
  84. package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
  85. package/src/core/renderers/webgl/shaders/DefaultShader.ts +95 -95
  86. package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +132 -132
  87. package/src/core/renderers/webgl/shaders/DynamicShader.ts +474 -474
  88. package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +161 -161
  89. package/src/core/renderers/webgl/shaders/SdfShader.ts +174 -174
  90. package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +101 -101
  91. package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +86 -86
  92. package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +101 -101
  93. package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +101 -101
  94. package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +101 -101
  95. package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +33 -33
  96. package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +135 -135
  97. package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +145 -145
  98. package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +67 -67
  99. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +176 -176
  100. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +159 -159
  101. package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +186 -186
  102. package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +121 -121
  103. package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +114 -114
  104. package/src/core/text-rendering/TextTextureRendererUtils.ts +189 -189
  105. package/src/core/text-rendering/TrFontManager.ts +96 -96
  106. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +141 -141
  107. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +139 -139
  108. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +173 -173
  109. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +169 -169
  110. package/src/core/text-rendering/font-face-types/TrFontFace.ts +105 -105
  111. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +77 -77
  112. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +751 -751
  113. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +741 -741
  114. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +775 -775
  115. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +48 -48
  116. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +66 -66
  117. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +52 -52
  118. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +32 -32
  119. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +84 -84
  120. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +133 -133
  121. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +38 -38
  122. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +393 -393
  123. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +49 -49
  124. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +51 -51
  125. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +205 -205
  126. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +93 -93
  127. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +40 -40
  128. package/src/core/text-rendering/renderers/TextRenderer.ts +504 -504
  129. package/src/core/textures/ColorTexture.ts +86 -86
  130. package/src/core/textures/ImageTexture.ts +133 -133
  131. package/src/core/textures/NoiseTexture.ts +96 -96
  132. package/src/core/textures/SubTexture.ts +143 -143
  133. package/src/core/textures/Texture.ts +218 -218
  134. package/src/core/utils.ts +224 -224
  135. package/src/env.d.ts +7 -7
  136. package/src/main-api/ICoreDriver.ts +66 -61
  137. package/src/main-api/INode.ts +470 -470
  138. package/src/main-api/Inspector.ts +432 -0
  139. package/src/main-api/RendererMain.ts +649 -610
  140. package/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.ts +45 -45
  141. package/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.ts +154 -154
  142. package/src/main-api/texture-usage-trackers/TextureUsageTracker.ts +54 -54
  143. package/src/render-drivers/main/MainCoreDriver.ts +148 -133
  144. package/src/render-drivers/main/MainOnlyNode.ts +453 -453
  145. package/src/render-drivers/main/MainOnlyTextNode.ts +261 -261
  146. package/src/render-drivers/threadx/NodeStruct.ts +300 -300
  147. package/src/render-drivers/threadx/SharedNode.ts +97 -97
  148. package/src/render-drivers/threadx/TextNodeStruct.ts +211 -211
  149. package/src/render-drivers/threadx/ThreadXCoreDriver.ts +285 -273
  150. package/src/render-drivers/threadx/ThreadXMainAnimationController.ts +99 -99
  151. package/src/render-drivers/threadx/ThreadXMainNode.ts +178 -178
  152. package/src/render-drivers/threadx/ThreadXMainTextNode.ts +85 -85
  153. package/src/render-drivers/threadx/ThreadXRendererMessage.ts +110 -97
  154. package/src/render-drivers/threadx/worker/ThreadXRendererNode.ts +238 -238
  155. package/src/render-drivers/threadx/worker/ThreadXRendererTextNode.ts +149 -149
  156. package/src/render-drivers/threadx/worker/renderer.ts +151 -151
  157. package/src/render-drivers/utils.ts +57 -57
  158. package/src/utils.ts +207 -207
  159. package/dist/src/core/lib/WebGlContext.d.ts +0 -414
  160. package/dist/src/core/lib/WebGlContext.js +0 -640
  161. package/dist/src/core/lib/WebGlContext.js.map +0 -1
  162. package/dist/src/core/scene/Scene.d.ts +0 -59
  163. package/dist/src/core/scene/Scene.js +0 -106
  164. package/dist/src/core/scene/Scene.js.map +0 -1
  165. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/findNearestMultiple.d.ts +0 -8
  166. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/findNearestMultiple.js +0 -29
  167. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/findNearestMultiple.js.map +0 -1
  168. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/SdfBufferHelper.d.ts +0 -19
  169. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/SdfBufferHelper.js +0 -84
  170. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/SdfBufferHelper.js.map +0 -1
  171. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutLine.d.ts +0 -8
  172. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutLine.js +0 -40
  173. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutLine.js.map +0 -1
  174. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutText2.d.ts +0 -2
  175. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutText2.js +0 -41
  176. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutText2.js.map +0 -1
  177. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/utils.d.ts +0 -1
  178. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/utils.js +0 -4
  179. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/utils.js.map +0 -1
  180. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2.d.ts +0 -1
  181. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2.js +0 -2
  182. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2.js.map +0 -1
  183. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +0 -20
  184. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +0 -55
  185. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +0 -1
  186. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/roundUpToMultiple.d.ts +0 -9
  187. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/roundUpToMultiple.js +0 -32
  188. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/roundUpToMultiple.js.map +0 -1
@@ -49,27 +49,27 @@ export class ImageWorkerManager {
49
49
  }
50
50
  }
51
51
  createWorkers(numWorkers = 1) {
52
- const workerCode = `
53
- async function getImage(src, premultiplyAlpha) {
54
- const response = await fetch(src);
55
- const blob = await response.blob();
56
- return await createImageBitmap(blob, {
57
- premultiplyAlpha: premultiplyAlpha ? 'premultiply' : 'none',
58
- colorSpaceConversion: 'none',
59
- imageOrientation: 'none',
60
- });
61
- }
62
-
63
- self.onmessage = async (event) => {
64
- const { src, premultiplyAlpha } = event.data;
65
-
66
- try {
67
- const data = await getImage(src, premultiplyAlpha);
68
- self.postMessage({ src, data }, [data]);
69
- } catch (error) {
70
- self.postMessage({ src, error: error.message });
71
- }
72
- };
52
+ const workerCode = `
53
+ async function getImage(src, premultiplyAlpha) {
54
+ const response = await fetch(src);
55
+ const blob = await response.blob();
56
+ return await createImageBitmap(blob, {
57
+ premultiplyAlpha: premultiplyAlpha ? 'premultiply' : 'none',
58
+ colorSpaceConversion: 'none',
59
+ imageOrientation: 'none',
60
+ });
61
+ }
62
+
63
+ self.onmessage = async (event) => {
64
+ const { src, premultiplyAlpha } = event.data;
65
+
66
+ try {
67
+ const data = await getImage(src, premultiplyAlpha);
68
+ self.postMessage({ src, data }, [data]);
69
+ } catch (error) {
70
+ self.postMessage({ src, error: error.message });
71
+ }
72
+ };
73
73
  `;
74
74
  const blob = new Blob([workerCode.replace('"use strict";', '')], {
75
75
  type: 'application/javascript',
@@ -35,54 +35,54 @@ export class DefaultShader extends WebGlCoreShader {
35
35
  glw.bindTexture(textures[0].ctxTexture);
36
36
  }
37
37
  static shaderSources = {
38
- vertex: `
39
- # ifdef GL_FRAGMENT_PRESICISON_HIGH
40
- precision highp float;
41
- # else
42
- precision mediump float;
43
- # endif
44
-
45
- attribute vec2 a_position;
46
- attribute vec2 a_textureCoordinate;
47
- attribute vec4 a_color;
48
-
49
- uniform vec2 u_resolution;
50
- uniform float u_pixelRatio;
51
-
52
-
53
- varying vec4 v_color;
54
- varying vec2 v_textureCoordinate;
55
-
56
- void main() {
57
- vec2 normalized = a_position * u_pixelRatio / u_resolution;
58
- vec2 zero_two = normalized * 2.0;
59
- vec2 clip_space = zero_two - 1.0;
60
-
61
- // pass to fragment
62
- v_color = a_color;
63
- v_textureCoordinate = a_textureCoordinate;
64
-
65
- // flip y
66
- gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);
67
- }
38
+ vertex: `
39
+ # ifdef GL_FRAGMENT_PRESICISON_HIGH
40
+ precision highp float;
41
+ # else
42
+ precision mediump float;
43
+ # endif
44
+
45
+ attribute vec2 a_position;
46
+ attribute vec2 a_textureCoordinate;
47
+ attribute vec4 a_color;
48
+
49
+ uniform vec2 u_resolution;
50
+ uniform float u_pixelRatio;
51
+
52
+
53
+ varying vec4 v_color;
54
+ varying vec2 v_textureCoordinate;
55
+
56
+ void main() {
57
+ vec2 normalized = a_position * u_pixelRatio / u_resolution;
58
+ vec2 zero_two = normalized * 2.0;
59
+ vec2 clip_space = zero_two - 1.0;
60
+
61
+ // pass to fragment
62
+ v_color = a_color;
63
+ v_textureCoordinate = a_textureCoordinate;
64
+
65
+ // flip y
66
+ gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);
67
+ }
68
68
  `,
69
- fragment: `
70
- # ifdef GL_FRAGMENT_PRESICISON_HIGH
71
- precision highp float;
72
- # else
73
- precision mediump float;
74
- # endif
75
-
76
- uniform vec2 u_resolution;
77
- uniform sampler2D u_texture;
78
-
79
- varying vec4 v_color;
80
- varying vec2 v_textureCoordinate;
81
-
82
- void main() {
83
- vec4 color = texture2D(u_texture, v_textureCoordinate);
84
- gl_FragColor = vec4(v_color) * texture2D(u_texture, v_textureCoordinate);
85
- }
69
+ fragment: `
70
+ # ifdef GL_FRAGMENT_PRESICISON_HIGH
71
+ precision highp float;
72
+ # else
73
+ precision mediump float;
74
+ # endif
75
+
76
+ uniform vec2 u_resolution;
77
+ uniform sampler2D u_texture;
78
+
79
+ varying vec4 v_color;
80
+ varying vec2 v_textureCoordinate;
81
+
82
+ void main() {
83
+ vec4 color = texture2D(u_texture, v_textureCoordinate);
84
+ gl_FragColor = vec4(v_color) * texture2D(u_texture, v_textureCoordinate);
85
+ }
86
86
  `,
87
87
  };
88
88
  }
@@ -49,70 +49,70 @@ export class DefaultShaderBatched extends WebGlCoreShader {
49
49
  this.setUniform('u_textures[0]', samplers);
50
50
  }
51
51
  static shaderSources = {
52
- vertex: `
53
- # ifdef GL_FRAGMENT_PRESICISON_HIGH
54
- precision highp float;
55
- # else
56
- precision mediump float;
57
- # endif
58
-
59
- attribute vec2 a_textureCoordinate;
60
- attribute vec2 a_position;
61
- attribute vec4 a_color;
62
- attribute float a_textureIndex;
63
- attribute float a_depth;
64
-
65
- uniform vec2 u_resolution;
66
- uniform float u_pixelRatio;
67
-
68
- varying vec4 v_color;
69
- varying vec2 v_textureCoordinate;
70
- varying float v_textureIndex;
71
-
72
- void main(){
73
- vec2 normalized = a_position * u_pixelRatio / u_resolution;
74
- vec2 zero_two = normalized * 2.0;
75
- vec2 clip_space = zero_two - 1.0;
76
-
77
- // pass to fragment
78
- v_color = a_color;
79
- v_textureCoordinate = a_textureCoordinate;
80
- v_textureIndex = a_textureIndex;
81
-
82
- // flip y
83
- gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);
84
- }
52
+ vertex: `
53
+ # ifdef GL_FRAGMENT_PRESICISON_HIGH
54
+ precision highp float;
55
+ # else
56
+ precision mediump float;
57
+ # endif
58
+
59
+ attribute vec2 a_textureCoordinate;
60
+ attribute vec2 a_position;
61
+ attribute vec4 a_color;
62
+ attribute float a_textureIndex;
63
+ attribute float a_depth;
64
+
65
+ uniform vec2 u_resolution;
66
+ uniform float u_pixelRatio;
67
+
68
+ varying vec4 v_color;
69
+ varying vec2 v_textureCoordinate;
70
+ varying float v_textureIndex;
71
+
72
+ void main(){
73
+ vec2 normalized = a_position * u_pixelRatio / u_resolution;
74
+ vec2 zero_two = normalized * 2.0;
75
+ vec2 clip_space = zero_two - 1.0;
76
+
77
+ // pass to fragment
78
+ v_color = a_color;
79
+ v_textureCoordinate = a_textureCoordinate;
80
+ v_textureIndex = a_textureIndex;
81
+
82
+ // flip y
83
+ gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);
84
+ }
85
85
  `,
86
- fragment: (textureUnits) => `
87
- #define txUnits ${textureUnits}
88
- # ifdef GL_FRAGMENT_PRESICISON_HIGH
89
- precision highp float;
90
- # else
91
- precision mediump float;
92
- # endif
93
-
94
- uniform vec2 u_resolution;
95
- uniform sampler2D u_image;
96
- uniform sampler2D u_textures[txUnits];
97
-
98
- varying vec4 v_color;
99
- varying vec2 v_textureCoordinate;
100
- varying float v_textureIndex;
101
-
102
- vec4 sampleFromTexture(sampler2D textures[${textureUnits}], int idx, vec2 uv) {
86
+ fragment: (textureUnits) => `
87
+ #define txUnits ${textureUnits}
88
+ # ifdef GL_FRAGMENT_PRESICISON_HIGH
89
+ precision highp float;
90
+ # else
91
+ precision mediump float;
92
+ # endif
93
+
94
+ uniform vec2 u_resolution;
95
+ uniform sampler2D u_image;
96
+ uniform sampler2D u_textures[txUnits];
97
+
98
+ varying vec4 v_color;
99
+ varying vec2 v_textureCoordinate;
100
+ varying float v_textureIndex;
101
+
102
+ vec4 sampleFromTexture(sampler2D textures[${textureUnits}], int idx, vec2 uv) {
103
103
  ${Array.from(Array(textureUnits).keys())
104
- .map((idx) => `
105
- ${idx !== 0 ? 'else ' : ''}if (idx == ${idx}) {
106
- return texture2D(textures[${idx}], uv);
107
- }
104
+ .map((idx) => `
105
+ ${idx !== 0 ? 'else ' : ''}if (idx == ${idx}) {
106
+ return texture2D(textures[${idx}], uv);
107
+ }
108
108
  `)
109
- .join('')}
110
- return texture2D(textures[0], uv);
111
- }
112
-
113
- void main(){
114
- gl_FragColor = vec4(v_color) * sampleFromTexture(u_textures, int(v_textureIndex), v_textureCoordinate);
115
- }
109
+ .join('')}
110
+ return texture2D(textures[0], uv);
111
+ }
112
+
113
+ void main(){
114
+ gl_FragColor = vec4(v_color) * sampleFromTexture(u_textures, int(v_textureIndex), v_textureCoordinate);
115
+ }
116
116
  `,
117
117
  };
118
118
  }
@@ -135,24 +135,24 @@ export class DynamicShader extends WebGlCoreShader {
135
135
  const methodParameters = fxClass.getMethodParameters(fxClass.uniforms, fxProps);
136
136
  const pm = methodParameters.length > 0 ? `, ${methodParameters}` : '';
137
137
  if (onShaderMask) {
138
- effectMethods += `
139
- float fx_${fx.key}_onShaderMask(float shaderMask ${pm}) {
140
- ${onShaderMask}
141
- }
138
+ effectMethods += `
139
+ float fx_${fx.key}_onShaderMask(float shaderMask ${pm}) {
140
+ ${onShaderMask}
141
+ }
142
142
  `;
143
143
  }
144
144
  if (onColorize) {
145
- effectMethods += `
146
- vec4 fx_${fx.key}_onColorize(float shaderMask, vec4 maskColor, vec4 shaderColor${pm}) {
147
- ${onColorize}
148
- }
145
+ effectMethods += `
146
+ vec4 fx_${fx.key}_onColorize(float shaderMask, vec4 maskColor, vec4 shaderColor${pm}) {
147
+ ${onColorize}
148
+ }
149
149
  `;
150
150
  }
151
151
  if (onEffectMask) {
152
- effectMethods += `
153
- vec4 fx_${fx.key}_onEffectMask(float shaderMask, vec4 maskColor, vec4 shaderColor${pm}) {
154
- ${onEffectMask}
155
- }
152
+ effectMethods += `
153
+ vec4 fx_${fx.key}_onEffectMask(float shaderMask, vec4 maskColor, vec4 shaderColor${pm}) {
154
+ ${onEffectMask}
155
+ }
156
156
  `;
157
157
  }
158
158
  });
@@ -162,21 +162,21 @@ export class DynamicShader extends WebGlCoreShader {
162
162
  }
163
163
  //fill main functions
164
164
  let currentMask = `mix(shaderColor, maskColor, clamp(-(lng_DefaultMask), 0.0, 1.0))`;
165
- let drawEffects = `
166
-
165
+ let drawEffects = `
166
+
167
167
  `;
168
168
  for (let i = 0; i < effects.length; i++) {
169
169
  const current = effects[i];
170
170
  const pm = current.passParameters.length > 0 ? `, ${current.passParameters}` : '';
171
171
  const currentClass = effectContructors[current.name];
172
172
  if (currentClass.onShaderMask) {
173
- drawEffects += `
174
- shaderMask = fx_${current.target}_onShaderMask(shaderMask ${pm});
173
+ drawEffects += `
174
+ shaderMask = fx_${current.target}_onShaderMask(shaderMask ${pm});
175
175
  `;
176
176
  }
177
177
  if (currentClass.onColorize) {
178
- drawEffects += `
179
- maskColor = fx_${current.target}_onColorize(shaderMask, maskColor, shaderColor${pm});
178
+ drawEffects += `
179
+ maskColor = fx_${current.target}_onColorize(shaderMask, maskColor, shaderColor${pm});
180
180
  `;
181
181
  }
182
182
  if (currentClass.onEffectMask) {
@@ -185,8 +185,8 @@ export class DynamicShader extends WebGlCoreShader {
185
185
  const next = effects[i + 1];
186
186
  if (next === undefined ||
187
187
  effectContructors[next.name].onEffectMask) {
188
- drawEffects += `
189
- shaderColor = ${currentMask};
188
+ drawEffects += `
189
+ shaderColor = ${currentMask};
190
190
  `;
191
191
  }
192
192
  }
@@ -224,80 +224,80 @@ export class DynamicShader extends WebGlCoreShader {
224
224
  return `DynamicShader${fx}`;
225
225
  }
226
226
  static z$__type__Props;
227
- static vertex = () => `
228
- # ifdef GL_FRAGMENT_PRESICISON_HIGH
229
- precision highp float;
230
- # else
231
- precision mediump float;
232
- # endif
233
-
234
- attribute vec2 a_textureCoordinate;
235
- attribute vec2 a_position;
236
- attribute vec4 a_color;
237
- attribute float a_textureIndex;
238
-
239
- uniform vec2 u_resolution;
240
- uniform float u_pixelRatio;
241
-
242
- varying vec4 v_color;
243
- varying vec2 v_textureCoordinate;
244
- varying float v_textureIndex;
245
-
246
- void main(){
247
- vec2 normalized = a_position * u_pixelRatio / u_resolution;
248
- vec2 zero_two = normalized * 2.0;
249
- vec2 clip_space = zero_two - 1.0;
250
-
251
- // pass to fragment
252
- v_color = a_color;
253
- v_textureCoordinate = a_textureCoordinate;
254
- v_textureIndex = a_textureIndex;
255
-
256
- // flip y
257
- gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);
258
- }
227
+ static vertex = () => `
228
+ # ifdef GL_FRAGMENT_PRESICISON_HIGH
229
+ precision highp float;
230
+ # else
231
+ precision mediump float;
232
+ # endif
233
+
234
+ attribute vec2 a_textureCoordinate;
235
+ attribute vec2 a_position;
236
+ attribute vec4 a_color;
237
+ attribute float a_textureIndex;
238
+
239
+ uniform vec2 u_resolution;
240
+ uniform float u_pixelRatio;
241
+
242
+ varying vec4 v_color;
243
+ varying vec2 v_textureCoordinate;
244
+ varying float v_textureIndex;
245
+
246
+ void main(){
247
+ vec2 normalized = a_position * u_pixelRatio / u_resolution;
248
+ vec2 zero_two = normalized * 2.0;
249
+ vec2 clip_space = zero_two - 1.0;
250
+
251
+ // pass to fragment
252
+ v_color = a_color;
253
+ v_textureCoordinate = a_textureCoordinate;
254
+ v_textureIndex = a_textureIndex;
255
+
256
+ // flip y
257
+ gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);
258
+ }
259
259
  `;
260
- static fragment = (uniforms, methods, effectMethods, drawEffects) => `
261
- # ifdef GL_FRAGMENT_PRESICISON_HIGH
262
- precision highp float;
263
- # else
264
- precision mediump float;
265
- # endif
266
-
267
- #define PI 3.14159265359
268
-
269
- uniform vec2 u_resolution;
270
- uniform vec2 u_dimensions;
271
- uniform float u_alpha;
272
- uniform float u_radius;
273
- uniform sampler2D u_texture;
274
- uniform float u_pixelRatio;
275
-
276
- ${uniforms}
277
-
278
- varying vec4 v_color;
279
- varying vec2 v_textureCoordinate;
280
-
281
- ${methods}
282
-
283
- ${effectMethods}
284
-
285
- void main() {
286
- vec2 p = v_textureCoordinate.xy * u_dimensions - u_dimensions * 0.5;
287
- vec2 d = abs(p) - (u_dimensions) * 0.5;
288
- float lng_DefaultMask = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));
289
-
290
- vec4 shaderColor = vec4(0.0);
291
- float shaderMask = lng_DefaultMask;
292
-
293
- vec4 maskColor = texture2D(u_texture, v_textureCoordinate) * v_color;
294
-
295
- shaderColor = mix(shaderColor, maskColor, clamp(-(lng_DefaultMask + 0.5), 0.0, 1.0));
296
-
297
- ${drawEffects}
298
-
299
- gl_FragColor = shaderColor * u_alpha;
300
- }
260
+ static fragment = (uniforms, methods, effectMethods, drawEffects) => `
261
+ # ifdef GL_FRAGMENT_PRESICISON_HIGH
262
+ precision highp float;
263
+ # else
264
+ precision mediump float;
265
+ # endif
266
+
267
+ #define PI 3.14159265359
268
+
269
+ uniform vec2 u_resolution;
270
+ uniform vec2 u_dimensions;
271
+ uniform float u_alpha;
272
+ uniform float u_radius;
273
+ uniform sampler2D u_texture;
274
+ uniform float u_pixelRatio;
275
+
276
+ ${uniforms}
277
+
278
+ varying vec4 v_color;
279
+ varying vec2 v_textureCoordinate;
280
+
281
+ ${methods}
282
+
283
+ ${effectMethods}
284
+
285
+ void main() {
286
+ vec2 p = v_textureCoordinate.xy * u_dimensions - u_dimensions * 0.5;
287
+ vec2 d = abs(p) - (u_dimensions) * 0.5;
288
+ float lng_DefaultMask = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));
289
+
290
+ vec4 shaderColor = vec4(0.0);
291
+ float shaderMask = lng_DefaultMask;
292
+
293
+ vec4 maskColor = texture2D(u_texture, v_textureCoordinate) * v_color;
294
+
295
+ shaderColor = mix(shaderColor, maskColor, clamp(-(lng_DefaultMask + 0.5), 0.0, 1.0));
296
+
297
+ ${drawEffects}
298
+
299
+ gl_FragColor = shaderColor * u_alpha;
300
+ }
301
301
  `;
302
302
  }
303
303
  //# sourceMappingURL=DynamicShader.js.map
@@ -59,70 +59,70 @@ export class RoundedRectangle extends WebGlCoreShader {
59
59
  propsA.$dimensions.height === propsB.$dimensions.height);
60
60
  }
61
61
  static shaderSources = {
62
- vertex: `
63
- # ifdef GL_FRAGMENT_PRESICISON_HIGH
64
- precision highp float;
65
- # else
66
- precision mediump float;
67
- # endif
68
-
69
- attribute vec2 a_position;
70
- attribute vec2 a_textureCoordinate;
71
- attribute vec4 a_color;
72
- attribute float a_textureIndex;
73
- attribute float a_depth;
74
-
75
- uniform vec2 u_resolution;
76
- uniform float u_pixelRatio;
77
-
78
- varying vec4 v_color;
79
- varying vec2 v_textureCoordinate;
80
-
81
- void main() {
82
- vec2 normalized = a_position * u_pixelRatio / u_resolution;
83
- vec2 zero_two = normalized * 2.0;
84
- vec2 clip_space = zero_two - 1.0;
85
-
86
- // pass to fragment
87
- v_color = a_color;
88
- v_textureCoordinate = a_textureCoordinate;
89
-
90
- // flip y
91
- gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);
92
- }
62
+ vertex: `
63
+ # ifdef GL_FRAGMENT_PRESICISON_HIGH
64
+ precision highp float;
65
+ # else
66
+ precision mediump float;
67
+ # endif
68
+
69
+ attribute vec2 a_position;
70
+ attribute vec2 a_textureCoordinate;
71
+ attribute vec4 a_color;
72
+ attribute float a_textureIndex;
73
+ attribute float a_depth;
74
+
75
+ uniform vec2 u_resolution;
76
+ uniform float u_pixelRatio;
77
+
78
+ varying vec4 v_color;
79
+ varying vec2 v_textureCoordinate;
80
+
81
+ void main() {
82
+ vec2 normalized = a_position * u_pixelRatio / u_resolution;
83
+ vec2 zero_two = normalized * 2.0;
84
+ vec2 clip_space = zero_two - 1.0;
85
+
86
+ // pass to fragment
87
+ v_color = a_color;
88
+ v_textureCoordinate = a_textureCoordinate;
89
+
90
+ // flip y
91
+ gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);
92
+ }
93
93
  `,
94
- fragment: `
95
- # ifdef GL_FRAGMENT_PRESICISON_HIGH
96
- precision highp float;
97
- # else
98
- precision mediump float;
99
- # endif
100
-
101
- uniform vec2 u_resolution;
102
- uniform vec2 u_dimensions;
103
- uniform float u_radius;
104
- uniform sampler2D u_texture;
105
-
106
- varying vec4 v_color;
107
- varying vec2 v_textureCoordinate;
108
-
109
- float boxDist(vec2 p, vec2 size, float radius){
110
- size -= vec2(radius);
111
- vec2 d = abs(p) - size;
112
- return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;
113
- }
114
-
115
- float fillMask(float dist) {
116
- return clamp(-dist, 0.0, 1.0);
117
- }
118
-
119
- void main() {
120
- vec4 color = texture2D(u_texture, v_textureCoordinate) * v_color;
121
- vec2 halfDimensions = u_dimensions * 0.5;
122
-
123
- float d = boxDist(v_textureCoordinate.xy * u_dimensions - halfDimensions, halfDimensions + 0.5, u_radius);
124
- gl_FragColor = mix(vec4(0.0), color, fillMask(d));
125
- }
94
+ fragment: `
95
+ # ifdef GL_FRAGMENT_PRESICISON_HIGH
96
+ precision highp float;
97
+ # else
98
+ precision mediump float;
99
+ # endif
100
+
101
+ uniform vec2 u_resolution;
102
+ uniform vec2 u_dimensions;
103
+ uniform float u_radius;
104
+ uniform sampler2D u_texture;
105
+
106
+ varying vec4 v_color;
107
+ varying vec2 v_textureCoordinate;
108
+
109
+ float boxDist(vec2 p, vec2 size, float radius){
110
+ size -= vec2(radius);
111
+ vec2 d = abs(p) - size;
112
+ return min(max(d.x, d.y), 0.0) + length(max(d, 0.0)) - radius;
113
+ }
114
+
115
+ float fillMask(float dist) {
116
+ return clamp(-dist, 0.0, 1.0);
117
+ }
118
+
119
+ void main() {
120
+ vec4 color = texture2D(u_texture, v_textureCoordinate) * v_color;
121
+ vec2 halfDimensions = u_dimensions * 0.5;
122
+
123
+ float d = boxDist(v_textureCoordinate.xy * u_dimensions - halfDimensions, halfDimensions + 0.5, u_radius);
124
+ gl_FragColor = mix(vec4(0.0), color, fillMask(d));
125
+ }
126
126
  `,
127
127
  };
128
128
  }