@lightningjs/renderer 3.0.0-beta12 → 3.0.0-beta14

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 (216) hide show
  1. package/README.md +4 -0
  2. package/dist/src/core/CoreNode.d.ts +2 -18
  3. package/dist/src/core/CoreNode.js +20 -20
  4. package/dist/src/core/CoreNode.js.map +1 -1
  5. package/dist/src/core/CoreTextNode.js +1 -1
  6. package/dist/src/core/CoreTextNode.js.map +1 -1
  7. package/dist/src/core/Stage.d.ts +0 -1
  8. package/dist/src/core/Stage.js +1 -6
  9. package/dist/src/core/Stage.js.map +1 -1
  10. package/dist/src/core/lib/WebGlContextWrapper.d.ts +1 -1
  11. package/dist/src/core/lib/WebGlContextWrapper.js +2 -2
  12. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  13. package/dist/src/core/renderers/webgl/WebGlRenderer.js +1 -2
  14. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  15. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +1 -1
  16. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +4 -5
  17. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  18. package/dist/src/core/text-rendering/sdf/Utils.js +2 -2
  19. package/dist/src/core/text-rendering/sdf/Utils.js.map +1 -1
  20. package/dist/src/main-api/Renderer.d.ts +0 -10
  21. package/dist/src/main-api/Renderer.js +0 -2
  22. package/dist/src/main-api/Renderer.js.map +1 -1
  23. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  24. package/package.json +1 -1
  25. package/src/core/CoreNode.test.ts +3 -2
  26. package/src/core/CoreNode.ts +24 -41
  27. package/src/core/CoreTextNode.ts +1 -1
  28. package/src/core/Stage.ts +1 -6
  29. package/src/core/lib/WebGlContextWrapper.ts +4 -3
  30. package/src/core/renderers/webgl/WebGlRenderer.ts +1 -2
  31. package/src/core/renderers/webgl/WebGlShaderProgram.ts +5 -6
  32. package/src/core/text-rendering/sdf/Utils.ts +2 -2
  33. package/src/main-api/Renderer.ts +0 -13
  34. package/dist/src/core/platform.d.ts +0 -10
  35. package/dist/src/core/platform.js +0 -81
  36. package/dist/src/core/platform.js.map +0 -1
  37. package/dist/src/core/renderers/CoreShader.d.ts +0 -9
  38. package/dist/src/core/renderers/CoreShader.js +0 -28
  39. package/dist/src/core/renderers/CoreShader.js.map +0 -1
  40. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -33
  41. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +0 -250
  42. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +0 -1
  43. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -16
  44. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +0 -124
  45. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +0 -1
  46. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -14
  47. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +0 -138
  48. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +0 -1
  49. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -19
  50. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -58
  51. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +0 -1
  52. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +0 -10
  53. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +0 -43
  54. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +0 -1
  55. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +0 -12
  56. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +0 -58
  57. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +0 -1
  58. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +0 -9
  59. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +0 -38
  60. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +0 -1
  61. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -56
  62. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +0 -239
  63. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +0 -1
  64. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +0 -34
  65. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +0 -114
  66. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +0 -1
  67. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -133
  68. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +0 -616
  69. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +0 -1
  70. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +0 -83
  71. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -233
  72. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +0 -1
  73. package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +0 -9
  74. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +0 -87
  75. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +0 -1
  76. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +0 -10
  77. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -119
  78. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +0 -1
  79. package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +0 -29
  80. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +0 -413
  81. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +0 -1
  82. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +0 -28
  83. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +0 -131
  84. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +0 -1
  85. package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +0 -47
  86. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -160
  87. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +0 -1
  88. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +0 -31
  89. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +0 -71
  90. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +0 -1
  91. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +0 -30
  92. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +0 -58
  93. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +0 -1
  94. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +0 -31
  95. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +0 -71
  96. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +0 -1
  97. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +0 -31
  98. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +0 -71
  99. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +0 -1
  100. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +0 -31
  101. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +0 -71
  102. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +0 -1
  103. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +0 -9
  104. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +0 -136
  105. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +0 -1
  106. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +0 -36
  107. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +0 -85
  108. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +0 -1
  109. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +0 -45
  110. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +0 -104
  111. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +0 -1
  112. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +0 -22
  113. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +0 -45
  114. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +0 -1
  115. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +0 -58
  116. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +0 -80
  117. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +0 -1
  118. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -35
  119. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +0 -129
  120. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +0 -1
  121. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -39
  122. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +0 -116
  123. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +0 -1
  124. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +0 -61
  125. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +0 -127
  126. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +0 -1
  127. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +0 -40
  128. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +0 -71
  129. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +0 -1
  130. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +0 -115
  131. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +0 -61
  132. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +0 -1
  133. package/dist/src/core/shaders/templates/shaderUtils.d.ts +0 -5
  134. package/dist/src/core/shaders/templates/shaderUtils.js +0 -41
  135. package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
  136. package/dist/src/core/shaders/webgl/Spinner.d.ts +0 -1
  137. package/dist/src/core/shaders/webgl/Spinner.js +0 -2
  138. package/dist/src/core/shaders/webgl/Spinner.js.map +0 -1
  139. package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +0 -12
  140. package/dist/src/core/text-rendering/TextRenderingUtils.js +0 -14
  141. package/dist/src/core/text-rendering/TextRenderingUtils.js.map +0 -1
  142. package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +0 -72
  143. package/dist/src/core/text-rendering/TextTextureRendererUtils.js +0 -217
  144. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +0 -1
  145. package/dist/src/core/text-rendering/TrFontManager.d.ts +0 -26
  146. package/dist/src/core/text-rendering/TrFontManager.js +0 -131
  147. package/dist/src/core/text-rendering/TrFontManager.js.map +0 -1
  148. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +0 -39
  149. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +0 -125
  150. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +0 -1
  151. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +0 -103
  152. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +0 -21
  153. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +0 -1
  154. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +0 -62
  155. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +0 -88
  156. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +0 -1
  157. package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +0 -118
  158. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +0 -63
  159. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +0 -1
  160. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +0 -14
  161. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +0 -66
  162. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +0 -1
  163. package/dist/src/core/text-rendering/font-face-types/utils.d.ts +0 -1
  164. package/dist/src/core/text-rendering/font-face-types/utils.js +0 -38
  165. package/dist/src/core/text-rendering/font-face-types/utils.js.map +0 -1
  166. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +0 -59
  167. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +0 -397
  168. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +0 -1
  169. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -120
  170. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +0 -551
  171. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +0 -1
  172. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +0 -92
  173. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -607
  174. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +0 -1
  175. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +0 -12
  176. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +0 -61
  177. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +0 -1
  178. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +0 -33
  179. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +0 -52
  180. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +0 -1
  181. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +0 -13
  182. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +0 -32
  183. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +0 -1
  184. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +0 -23
  185. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +0 -84
  186. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +0 -1
  187. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +0 -4
  188. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +0 -34
  189. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +0 -1
  190. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +0 -20
  191. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +0 -308
  192. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +0 -1
  193. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +0 -10
  194. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +0 -40
  195. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +0 -1
  196. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +0 -26
  197. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +0 -70
  198. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +0 -1
  199. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +0 -16
  200. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js +0 -39
  201. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +0 -1
  202. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +0 -373
  203. package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -178
  204. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +0 -1
  205. package/dist/src/core/text-rendering/sdf/PeekableGenerator.d.ts +0 -12
  206. package/dist/src/core/text-rendering/sdf/PeekableGenerator.js +0 -61
  207. package/dist/src/core/text-rendering/sdf/PeekableGenerator.js.map +0 -1
  208. package/dist/src/core/text-rendering/sdf/SimpleFontShaper.d.ts +0 -45
  209. package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js +0 -69
  210. package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js.map +0 -1
  211. package/dist/src/main-api/DynamicShaderController.d.ts +0 -29
  212. package/dist/src/main-api/DynamicShaderController.js +0 -58
  213. package/dist/src/main-api/DynamicShaderController.js.map +0 -1
  214. package/dist/src/main-api/ShaderController.d.ts +0 -31
  215. package/dist/src/main-api/ShaderController.js +0 -37
  216. package/dist/src/main-api/ShaderController.js.map +0 -1
@@ -1,239 +0,0 @@
1
- /*
2
- * If not stated otherwise in this file or this component's LICENSE file the
3
- * following copyright and licenses apply:
4
- *
5
- * Copyright 2023 Comcast Cable Communications Management, LLC.
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the License);
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- */
19
- import { assertTruthy } from '../../../utils.js';
20
- import { isPowerOfTwo } from '../../utils.js';
21
- import { CoreContextTexture } from '../CoreContextTexture.js';
22
- import { isHTMLImageElement } from './internal/RendererUtils.js';
23
- const TRANSPARENT_TEXTURE_DATA = new Uint8Array([0, 0, 0, 0]);
24
- /**
25
- * A wrapper around a WebGLTexture that handles loading the texture data
26
- * from a Texture source and uploading it to the GPU as well as freeing
27
- * the uploaded texture.
28
- *
29
- * @remarks
30
- * When accessing the ctxTexture property, the texture will be loaded if
31
- * it hasn't been already. ctxTexture will always return a valid WebGLTexture
32
- * and trigger the loading/uploading of the texture's data if it hasn't been
33
- * loaded yet.
34
- */
35
- export class WebGlCoreCtxTexture extends CoreContextTexture {
36
- glw;
37
- _nativeCtxTexture = null;
38
- _w = 0;
39
- _h = 0;
40
- constructor(glw, memManager, textureSource) {
41
- super(memManager, textureSource);
42
- this.glw = glw;
43
- }
44
- get ctxTexture() {
45
- if (this.state === 'freed') {
46
- this.load();
47
- return null;
48
- }
49
- assertTruthy(this._nativeCtxTexture);
50
- return this._nativeCtxTexture;
51
- }
52
- get w() {
53
- return this._w;
54
- }
55
- get h() {
56
- return this._h;
57
- }
58
- /**
59
- * Load the texture data from the Texture source and upload it to the GPU
60
- *
61
- * @remarks
62
- * This method is called automatically when accessing the ctxTexture property
63
- * if the texture hasn't been loaded yet. But it can also be called manually
64
- * to force the texture to be pre-loaded prior to accessing the ctxTexture
65
- * property.
66
- */
67
- async load() {
68
- // If the texture is already loading or loaded, return resolved promise
69
- if (this.state === 'loading' || this.state === 'loaded') {
70
- return Promise.resolve();
71
- }
72
- this.state = 'loading';
73
- this.textureSource.setState('loading');
74
- // Await the native texture creation to ensure GPU buffer is fully allocated
75
- this._nativeCtxTexture = this.createNativeCtxTexture();
76
- if (this._nativeCtxTexture === null) {
77
- this.state = 'failed';
78
- const error = new Error('Could not create WebGL Texture');
79
- this.textureSource.setState('failed', error);
80
- console.error('Could not create WebGL Texture');
81
- throw error;
82
- }
83
- try {
84
- const { width, height } = await this.onLoadRequest();
85
- // If the texture has been freed while loading, return early.
86
- // Type assertion needed because state could change during async operations
87
- if (this.state === 'freed') {
88
- return;
89
- }
90
- this.state = 'loaded';
91
- this._w = width;
92
- this._h = height;
93
- // Update the texture source's width and height so that it can be used
94
- // for rendering.
95
- this.textureSource.setState('loaded', { width, height });
96
- // cleanup source texture data next tick
97
- // This is done using queueMicrotask to ensure it runs after the current
98
- // event loop tick, allowing the texture to be fully loaded and bound
99
- // to the GL context before freeing the source data.
100
- // This is important to avoid issues with the texture data being
101
- // freed while the texture is still being loaded or used.
102
- queueMicrotask(() => {
103
- this.textureSource.freeTextureData();
104
- });
105
- }
106
- catch (err) {
107
- // If the texture has been freed while loading, return early.
108
- // Type assertion needed because state could change during async operations
109
- if (this.state === 'freed') {
110
- return;
111
- }
112
- this.state = 'failed';
113
- const error = err instanceof Error ? err : new Error(String(err));
114
- this.textureSource.setState('failed', error);
115
- this.textureSource.freeTextureData();
116
- console.error(err);
117
- throw error; // Re-throw to propagate the error
118
- }
119
- }
120
- /**
121
- * Called when the texture data needs to be loaded and uploaded to a texture
122
- */
123
- async onLoadRequest() {
124
- const { glw } = this;
125
- const textureData = this.textureSource.textureData;
126
- if (textureData === null || this._nativeCtxTexture === null) {
127
- throw new Error('Texture data or native texture is null ' + this.textureSource.type);
128
- }
129
- // Set to a 1x1 transparent texture
130
- glw.texImage2D(0, glw.RGBA, 1, 1, 0, glw.RGBA, glw.UNSIGNED_BYTE, null);
131
- this.setTextureMemUse(TRANSPARENT_TEXTURE_DATA.byteLength);
132
- let width = 0;
133
- let height = 0;
134
- glw.activeTexture(0);
135
- const tdata = textureData.data;
136
- const format = glw.RGBA;
137
- const formatBytes = 4;
138
- const memoryPadding = 1.1; // Add padding to account for GPU Padding
139
- // If textureData is null, the texture is empty (0, 0) and we don't need to
140
- // upload any data to the GPU.
141
- if ((typeof ImageBitmap !== 'undefined' && tdata instanceof ImageBitmap) ||
142
- tdata instanceof ImageData ||
143
- // not using typeof HTMLImageElement due to web worker
144
- isHTMLImageElement(tdata)) {
145
- width = tdata.width;
146
- height = tdata.height;
147
- glw.bindTexture(this._nativeCtxTexture);
148
- glw.pixelStorei(glw.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !!textureData.premultiplyAlpha);
149
- glw.texImage2D(0, format, format, glw.UNSIGNED_BYTE, tdata);
150
- this.setTextureMemUse(height * width * formatBytes * memoryPadding);
151
- }
152
- else if (tdata === null) {
153
- width = 0;
154
- height = 0;
155
- // Reset to a 1x1 transparent texture
156
- glw.bindTexture(this._nativeCtxTexture);
157
- glw.texImage2D(0, format, 1, 1, 0, format, glw.UNSIGNED_BYTE, TRANSPARENT_TEXTURE_DATA);
158
- this.setTextureMemUse(TRANSPARENT_TEXTURE_DATA.byteLength);
159
- }
160
- else if ('mipmaps' in tdata && tdata.mipmaps) {
161
- const { mipmaps, width = 0, height = 0, type, glInternalFormat } = tdata;
162
- const view = type === 'ktx'
163
- ? new DataView(mipmaps[0] ?? new ArrayBuffer(0))
164
- : mipmaps[0];
165
- glw.bindTexture(this._nativeCtxTexture);
166
- glw.compressedTexImage2D(0, glInternalFormat, width, height, 0, view);
167
- glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE);
168
- glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE);
169
- glw.texParameteri(glw.TEXTURE_MAG_FILTER, glw.LINEAR);
170
- glw.texParameteri(glw.TEXTURE_MIN_FILTER, glw.LINEAR);
171
- this.setTextureMemUse(view.byteLength);
172
- }
173
- else if (tdata && tdata instanceof Uint8Array) {
174
- // Color Texture
175
- width = 1;
176
- height = 1;
177
- glw.bindTexture(this._nativeCtxTexture);
178
- glw.pixelStorei(glw.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !!textureData.premultiplyAlpha);
179
- glw.texImage2D(0, format, width, height, 0, format, glw.UNSIGNED_BYTE, tdata);
180
- this.setTextureMemUse(width * height * formatBytes);
181
- }
182
- else {
183
- console.error(`WebGlCoreCtxTexture.onLoadRequest: Unexpected textureData returned`, textureData);
184
- }
185
- return {
186
- width,
187
- height,
188
- };
189
- }
190
- /**
191
- * Free the WebGLTexture from the GPU
192
- *
193
- * @returns
194
- */
195
- free() {
196
- if (this.state === 'freed') {
197
- return;
198
- }
199
- this.state = 'freed';
200
- this.textureSource.setState('freed');
201
- this._w = 0;
202
- this._h = 0;
203
- if (this._nativeCtxTexture !== null) {
204
- this.glw.deleteTexture(this._nativeCtxTexture);
205
- this.setTextureMemUse(0);
206
- this._nativeCtxTexture = null;
207
- }
208
- // if the texture still has source data, free it
209
- this.textureSource.freeTextureData();
210
- }
211
- /**
212
- * Create native context texture asynchronously
213
- *
214
- * @remarks
215
- * When this method resolves, the returned texture will be bound to the GL context state
216
- * and fully ready for use. This ensures proper GPU resource allocation timing.
217
- *
218
- * @returns Promise that resolves to the native WebGL texture or null on failure
219
- */
220
- createNativeCtxTexture() {
221
- const { glw } = this;
222
- const nativeTexture = glw.createTexture();
223
- if (!nativeTexture) {
224
- return null;
225
- }
226
- // On initial load request, create a 1x1 transparent texture to use until
227
- // the texture data is finally loaded.
228
- glw.activeTexture(0);
229
- glw.bindTexture(nativeTexture);
230
- // linear texture filtering
231
- glw.texParameteri(glw.TEXTURE_MAG_FILTER, glw.LINEAR);
232
- glw.texParameteri(glw.TEXTURE_MIN_FILTER, glw.LINEAR);
233
- // texture wrapping method
234
- glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE);
235
- glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE);
236
- return nativeTexture;
237
- }
238
- }
239
- //# sourceMappingURL=WebGlCoreCtxTexture.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebGlCoreCtxTexture.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlCoreCtxTexture.ts"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- import { CoreRenderOp } from '../CoreRenderOp.js';
2
- import { WebGlCoreShader } from './WebGlCoreShader.js';
3
- import type { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';
4
- import type { WebGlCoreRendererOptions } from './WebGlCoreRenderer.js';
5
- import type { BufferCollection } from './internal/BufferCollection.js';
6
- import type { Dimensions } from '../../../common/CommonTypes.js';
7
- import type { RectWithValid } from '../../lib/utils.js';
8
- import type { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';
9
- /**
10
- * Can render multiple quads with multiple textures (up to vertex shader texture limit)
11
- *
12
- */
13
- export declare class WebGlCoreRenderOp extends CoreRenderOp {
14
- readonly glw: WebGlContextWrapper;
15
- readonly options: WebGlCoreRendererOptions;
16
- readonly buffers: BufferCollection;
17
- readonly shader: WebGlCoreShader;
18
- readonly shaderProps: Record<string, unknown>;
19
- readonly alpha: number;
20
- readonly clippingRect: RectWithValid;
21
- readonly dimensions: Dimensions;
22
- readonly bufferIdx: number;
23
- readonly zIndex: number;
24
- readonly renderToTexture: boolean | undefined;
25
- readonly parentHasRenderTexture: boolean | undefined;
26
- readonly framebufferDimensions: Dimensions | undefined;
27
- length: number;
28
- numQuads: number;
29
- textures: WebGlCoreCtxTexture[];
30
- readonly maxTextures: number;
31
- constructor(glw: WebGlContextWrapper, options: WebGlCoreRendererOptions, buffers: BufferCollection, shader: WebGlCoreShader, shaderProps: Record<string, unknown>, alpha: number, clippingRect: RectWithValid, dimensions: Dimensions, bufferIdx: number, zIndex: number, renderToTexture: boolean | undefined, parentHasRenderTexture: boolean | undefined, framebufferDimensions: Dimensions | undefined);
32
- addTexture(texture: WebGlCoreCtxTexture): number;
33
- draw(): void;
34
- }
@@ -1,114 +0,0 @@
1
- /*
2
- * If not stated otherwise in this file or this component's LICENSE file the
3
- * following copyright and licenses apply:
4
- *
5
- * Copyright 2023 Comcast Cable Communications Management, LLC.
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the License);
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- */
19
- import { CoreRenderOp } from '../CoreRenderOp.js';
20
- import { WebGlCoreShader } from './WebGlCoreShader.js';
21
- /**
22
- * Can render multiple quads with multiple textures (up to vertex shader texture limit)
23
- *
24
- */
25
- export class WebGlCoreRenderOp extends CoreRenderOp {
26
- glw;
27
- options;
28
- buffers;
29
- shader;
30
- shaderProps;
31
- alpha;
32
- clippingRect;
33
- dimensions;
34
- bufferIdx;
35
- zIndex;
36
- renderToTexture;
37
- parentHasRenderTexture;
38
- framebufferDimensions;
39
- length = 0;
40
- numQuads = 0;
41
- textures = [];
42
- maxTextures;
43
- constructor(glw, options, buffers, shader, shaderProps, alpha, clippingRect, dimensions, bufferIdx, zIndex, renderToTexture, parentHasRenderTexture, framebufferDimensions) {
44
- super();
45
- this.glw = glw;
46
- this.options = options;
47
- this.buffers = buffers;
48
- this.shader = shader;
49
- this.shaderProps = shaderProps;
50
- this.alpha = alpha;
51
- this.clippingRect = clippingRect;
52
- this.dimensions = dimensions;
53
- this.bufferIdx = bufferIdx;
54
- this.zIndex = zIndex;
55
- this.renderToTexture = renderToTexture;
56
- this.parentHasRenderTexture = parentHasRenderTexture;
57
- this.framebufferDimensions = framebufferDimensions;
58
- this.maxTextures = shader.supportsIndexedTextures
59
- ? glw.getParameter(glw.MAX_VERTEX_TEXTURE_IMAGE_UNITS)
60
- : 1;
61
- }
62
- addTexture(texture) {
63
- const { textures, maxTextures } = this;
64
- let existingIdx = -1;
65
- const texturesLength = textures.length;
66
- for (let i = 0; i < texturesLength; i++) {
67
- const t = textures[i];
68
- if (t === texture) {
69
- existingIdx = i;
70
- break;
71
- }
72
- }
73
- if (existingIdx !== -1) {
74
- return existingIdx;
75
- }
76
- if (texturesLength >= maxTextures) {
77
- return 0xffffffff;
78
- }
79
- this.textures.push(texture);
80
- return texturesLength;
81
- }
82
- draw() {
83
- const { glw, shader, shaderProps, options } = this;
84
- const { shManager } = options;
85
- shManager.useShader(shader);
86
- shader.bindRenderOp(this, shaderProps);
87
- // TODO: Reduce calculations required
88
- const quadIdx = (this.bufferIdx / 24) * 6 * 2;
89
- // Clipping
90
- if (this.clippingRect.valid) {
91
- const { x, y, width, height } = this.clippingRect;
92
- const pixelRatio = this.parentHasRenderTexture ? 1 : options.pixelRatio;
93
- const canvasHeight = options.canvas.height;
94
- const clipX = Math.round(x * pixelRatio);
95
- const clipWidth = Math.round(width * pixelRatio);
96
- const clipHeight = Math.round(height * pixelRatio);
97
- let clipY = Math.round(canvasHeight - clipHeight - y * pixelRatio);
98
- // if parent has render texture, we need to adjust the scissor rect
99
- // to be relative to the parent's framebuffer
100
- if (this.parentHasRenderTexture) {
101
- clipY = this.framebufferDimensions
102
- ? this.framebufferDimensions.height - this.dimensions.height
103
- : 0;
104
- }
105
- glw.setScissorTest(true);
106
- glw.scissor(clipX, clipY, clipWidth, clipHeight);
107
- }
108
- else {
109
- glw.setScissorTest(false);
110
- }
111
- glw.drawElements(glw.TRIANGLES, 6 * this.numQuads, glw.UNSIGNED_SHORT, quadIdx);
112
- }
113
- }
114
- //# sourceMappingURL=WebGlCoreRenderOp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebGlCoreRenderOp.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlCoreRenderOp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAQvD;;;GAGG;AACH,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IAOtC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAlBX,MAAM,GAAG,CAAC,CAAC;IACX,QAAQ,GAAG,CAAC,CAAC;IACb,QAAQ,GAA0B,EAAE,CAAC;IAC5B,WAAW,CAAS;IAE7B,YACW,GAAwB,EACxB,OAAiC,EACjC,OAAyB,EACzB,MAAuB,EACvB,WAAoC,EACpC,KAAa,EACb,YAA2B,EAC3B,UAAsB,EACtB,SAAiB,EACjB,MAAc,EACd,eAAoC,EACpC,sBAA2C,EAC3C,qBAA6C;QAEtD,KAAK,EAAE,CAAC;QAdC,QAAG,GAAH,GAAG,CAAqB;QACxB,YAAO,GAAP,OAAO,CAA0B;QACjC,YAAO,GAAP,OAAO,CAAkB;QACzB,WAAM,GAAN,MAAM,CAAiB;QACvB,gBAAW,GAAX,WAAW,CAAyB;QACpC,UAAK,GAAL,KAAK,CAAQ;QACb,iBAAY,GAAZ,YAAY,CAAe;QAC3B,eAAU,GAAV,UAAU,CAAY;QACtB,cAAS,GAAT,SAAS,CAAQ;QACjB,WAAM,GAAN,MAAM,CAAQ;QACd,oBAAe,GAAf,eAAe,CAAqB;QACpC,2BAAsB,GAAtB,sBAAsB,CAAqB;QAC3C,0BAAqB,GAArB,qBAAqB,CAAwB;QAGtD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,uBAAuB;YAC/C,CAAC,CAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,8BAA8B,CAAY;YAClE,CAAC,CAAC,CAAC,CAAC;IACR,CAAC;IAED,UAAU,CAAC,OAA4B;QACrC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QACvC,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;QACrB,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;gBAClB,WAAW,GAAG,CAAC,CAAC;gBAChB,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;YACvB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,IAAI,cAAc,IAAI,WAAW,EAAE,CAAC;YAClC,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,IAAI;QACF,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACnD,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAE9B,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC5B,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAEvC,qCAAqC;QACrC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE9C,WAAW;QACX,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YAC5B,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;YAClD,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;YACxE,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;YAE3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC;YACjD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;YACnD,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,UAAU,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;YAEnE,mEAAmE;YACnE,6CAA6C;YAC7C,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAChC,KAAK,GAAG,IAAI,CAAC,qBAAqB;oBAChC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM;oBAC5D,CAAC,CAAC,CAAC,CAAC;YACR,CAAC;YAED,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACzB,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QAED,GAAG,CAAC,YAAY,CACd,GAAG,CAAC,SAAS,EACb,CAAC,GAAG,IAAI,CAAC,QAAQ,EACjB,GAAG,CAAC,cAAc,EAClB,OAAO,CACR,CAAC;IACJ,CAAC;CACF"}
@@ -1,133 +0,0 @@
1
- import { CoreRenderer, type BufferInfo, type CoreRendererOptions, type QuadOptions } from '../CoreRenderer.js';
2
- import { WebGlCoreRenderOp } from './WebGlCoreRenderOp.js';
3
- import type { CoreContextTexture } from '../CoreContextTexture.js';
4
- import { type CoreWebGlParameters, type CoreWebGlExtensions, type WebGlColor } from './internal/RendererUtils.js';
5
- import { Texture } from '../../textures/Texture.js';
6
- import { CoreShaderManager } from '../../CoreShaderManager.js';
7
- import { BufferCollection } from './internal/BufferCollection.js';
8
- import { WebGlCoreShader } from './WebGlCoreShader.js';
9
- import { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';
10
- import { type CoreNode } from '../../CoreNode.js';
11
- import type { BaseShaderController } from '../../../main-api/ShaderController.js';
12
- export type WebGlCoreRendererOptions = CoreRendererOptions;
13
- interface CoreWebGlSystem {
14
- parameters: CoreWebGlParameters;
15
- extensions: CoreWebGlExtensions;
16
- }
17
- export declare class WebGlCoreRenderer extends CoreRenderer {
18
- glw: WebGlContextWrapper;
19
- system: CoreWebGlSystem;
20
- quadBuffer: ArrayBuffer;
21
- fQuadBuffer: Float32Array;
22
- uiQuadBuffer: Uint32Array;
23
- renderOps: WebGlCoreRenderOp[];
24
- curBufferIdx: number;
25
- curRenderOp: WebGlCoreRenderOp | null;
26
- rttNodes: CoreNode[];
27
- activeRttNode: CoreNode | null;
28
- defShaderCtrl: BaseShaderController;
29
- defaultShader: WebGlCoreShader;
30
- quadBufferCollection: BufferCollection;
31
- clearColor: WebGlColor;
32
- /**
33
- * White pixel texture used by default when no texture is specified.
34
- */
35
- quadBufferUsage: number;
36
- numQuadsRendered: number;
37
- /**
38
- * Whether the renderer is currently rendering to a texture.
39
- */
40
- renderToTextureActive: boolean;
41
- constructor(options: WebGlCoreRendererOptions);
42
- reset(): void;
43
- getShaderManager(): CoreShaderManager;
44
- createCtxTexture(textureSource: Texture): CoreContextTexture;
45
- /**
46
- * This function adds a quad (a rectangle composed of two triangles) to the WebGL rendering pipeline.
47
- *
48
- * It takes a set of options that define the quad's properties, such as its dimensions, colors, texture, shader, and transformation matrix.
49
- * The function first updates the shader properties with the current dimensions if necessary, then sets the default texture if none is provided.
50
- * It then checks if a new render operation is needed, based on the current shader and clipping rectangle.
51
- * If a new render operation is needed, it creates one and updates the current render operation.
52
- * The function then adjusts the texture coordinates based on the texture options and adds the texture to the texture manager.
53
- *
54
- * Finally, it calculates the vertices for the quad, taking into account any transformations, and adds them to the quad buffer.
55
- * The function updates the length and number of quads in the current render operation, and updates the current buffer index.
56
- */
57
- addQuad(params: QuadOptions): void;
58
- /**
59
- * Replace the existing RenderOp with a new one that uses the specified Shader
60
- * and starts at the specified buffer index.
61
- *
62
- * @param shader
63
- * @param bufferIdx
64
- */
65
- private newRenderOp;
66
- /**
67
- * Add a texture to the current RenderOp. If the texture cannot be added to the
68
- * current RenderOp, a new RenderOp will be created and the texture will be added
69
- * to that one.
70
- *
71
- * If the texture cannot be added to the new RenderOp, an error will be thrown.
72
- *
73
- * @param texture
74
- * @param bufferIdx
75
- * @param recursive
76
- * @returns Assigned Texture Index of the texture in the render op
77
- */
78
- private addTexture;
79
- /**
80
- * Test if the current Render operation can be reused for the specified parameters.
81
- * @param params
82
- * @returns
83
- */
84
- reuseRenderOp(params: QuadOptions): boolean;
85
- /**
86
- * add RenderOp to the render pipeline
87
- */
88
- addRenderOp(renderable: WebGlCoreRenderOp): void;
89
- /**
90
- * Render the current set of RenderOps to render to the specified surface.
91
- *
92
- * TODO: 'screen' is the only supported surface at the moment.
93
- *
94
- * @param surface
95
- */
96
- render(surface?: 'screen' | CoreContextTexture): void;
97
- getQuadCount(): number;
98
- renderToTexture(node: CoreNode): void;
99
- /**
100
- * Inserts an RTT node into `this.rttNodes` while maintaining the correct rendering order based on hierarchy.
101
- *
102
- * Rendering order for RTT nodes is critical when nested RTT nodes exist in a parent-child relationship.
103
- * Specifically:
104
- * - Child RTT nodes must be rendered before their RTT-enabled parents to ensure proper texture composition.
105
- * - If an RTT node is added and it has existing RTT children, it should be rendered after those children.
106
- *
107
- * This function addresses both cases by:
108
- * 1. **Checking Upwards**: It traverses the node's hierarchy upwards to identify any RTT parent
109
- * already in `rttNodes`. If an RTT parent is found, the new node is placed before this parent.
110
- * 2. **Checking Downwards**: It traverses the node’s children recursively to find any RTT-enabled
111
- * children that are already in `rttNodes`. If such children are found, the new node is inserted
112
- * after the last (highest index) RTT child node.
113
- *
114
- * The final calculated insertion index ensures the new node is positioned in `rttNodes` to respect
115
- * both parent-before-child and child-before-parent rendering rules, preserving the correct order
116
- * for the WebGL renderer.
117
- *
118
- * @param node - The RTT-enabled CoreNode to be added to `rttNodes` in the appropriate hierarchical position.
119
- */
120
- private insertRTTNodeInOrder;
121
- private findMaxChildRTTIndex;
122
- renderRTTNodes(): void;
123
- removeRTTNode(node: CoreNode): void;
124
- getBufferInfo(): BufferInfo | null;
125
- getDefShaderCtr(): BaseShaderController;
126
- /**
127
- * Updates the WebGL context's clear color and clears the color buffer.
128
- *
129
- * @param color - The color to set as the clear color, represented as a 32-bit integer.
130
- */
131
- updateClearColor(color: number): void;
132
- }
133
- export {};