@codexo/exojs 0.9.0 → 0.11.0

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 (242) hide show
  1. package/CHANGELOG.md +127 -0
  2. package/README.md +14 -14
  3. package/dist/esm/core/Application.d.ts +25 -6
  4. package/dist/esm/core/Application.js +42 -8
  5. package/dist/esm/core/Application.js.map +1 -1
  6. package/dist/esm/core/Perf.d.ts +23 -0
  7. package/dist/esm/core/Perf.js +49 -0
  8. package/dist/esm/core/Perf.js.map +1 -0
  9. package/dist/esm/core/Scene.d.ts +8 -8
  10. package/dist/esm/core/Scene.js +7 -7
  11. package/dist/esm/core/Scene.js.map +1 -1
  12. package/dist/esm/core/SceneManager.js +2 -2
  13. package/dist/esm/core/SceneManager.js.map +1 -1
  14. package/dist/esm/core/SceneNode.d.ts +0 -3
  15. package/dist/esm/core/SceneNode.js +0 -9
  16. package/dist/esm/core/SceneNode.js.map +1 -1
  17. package/dist/esm/core/capabilities.d.ts +2 -0
  18. package/dist/esm/core/capabilities.js +15 -0
  19. package/dist/esm/core/capabilities.js.map +1 -1
  20. package/dist/esm/core/dev.d.ts +21 -0
  21. package/dist/esm/core/dev.js +18 -0
  22. package/dist/esm/core/dev.js.map +1 -0
  23. package/dist/esm/core/index.d.ts +1 -0
  24. package/dist/esm/core/types.d.ts +1 -1
  25. package/dist/esm/core/utils.d.ts +12 -0
  26. package/dist/esm/core/utils.js +18 -1
  27. package/dist/esm/core/utils.js.map +1 -1
  28. package/dist/esm/index.js +14 -3
  29. package/dist/esm/index.js.map +1 -1
  30. package/dist/esm/particles/ParticleSystem.d.ts +8 -5
  31. package/dist/esm/particles/ParticleSystem.js +9 -5
  32. package/dist/esm/particles/ParticleSystem.js.map +1 -1
  33. package/dist/esm/particles/distributions/{Gradient.d.ts → ColorGradient.d.ts} +5 -5
  34. package/dist/esm/particles/distributions/{Gradient.js → ColorGradient.js} +5 -5
  35. package/dist/esm/particles/distributions/ColorGradient.js.map +1 -0
  36. package/dist/esm/particles/distributions/Distribution.d.ts +2 -2
  37. package/dist/esm/particles/distributions/index.d.ts +2 -2
  38. package/dist/esm/particles/gpu/ParticleGpuState.js +1 -1
  39. package/dist/esm/particles/modules/AlphaFadeOverLifetime.d.ts +2 -2
  40. package/dist/esm/particles/modules/AlphaFadeOverLifetime.js +5 -1
  41. package/dist/esm/particles/modules/AlphaFadeOverLifetime.js.map +1 -1
  42. package/dist/esm/particles/modules/ColorOverLifetime.d.ts +3 -3
  43. package/dist/esm/particles/modules/ColorOverLifetime.js.map +1 -1
  44. package/dist/esm/particles/modules/ColorOverSpeed.d.ts +3 -3
  45. package/dist/esm/particles/modules/ColorOverSpeed.js.map +1 -1
  46. package/dist/esm/particles/modules/UpdateModule.d.ts +2 -2
  47. package/dist/esm/particles/modules/UpdateModule.js +1 -1
  48. package/dist/esm/particles/modules/WgslContribution.d.ts +2 -2
  49. package/dist/esm/rendering/Camera.d.ts +33 -0
  50. package/dist/esm/rendering/Camera.js +38 -0
  51. package/dist/esm/rendering/Camera.js.map +1 -0
  52. package/dist/esm/rendering/Container.d.ts +5 -24
  53. package/dist/esm/rendering/Container.js +8 -71
  54. package/dist/esm/rendering/Container.js.map +1 -1
  55. package/dist/esm/rendering/Drawable.d.ts +8 -10
  56. package/dist/esm/rendering/Drawable.js +12 -20
  57. package/dist/esm/rendering/Drawable.js.map +1 -1
  58. package/dist/esm/rendering/RenderBackend.d.ts +18 -0
  59. package/dist/esm/rendering/RenderNode.d.ts +81 -8
  60. package/dist/esm/rendering/RenderNode.js +121 -144
  61. package/dist/esm/rendering/RenderNode.js.map +1 -1
  62. package/dist/esm/rendering/RenderTarget.d.ts +13 -0
  63. package/dist/esm/rendering/RenderTarget.js +13 -0
  64. package/dist/esm/rendering/RenderTarget.js.map +1 -1
  65. package/dist/esm/rendering/RenderTargetPass.js +17 -0
  66. package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
  67. package/dist/esm/rendering/RenderingContext.d.ts +87 -0
  68. package/dist/esm/rendering/RenderingContext.js +157 -0
  69. package/dist/esm/rendering/RenderingContext.js.map +1 -0
  70. package/dist/esm/rendering/TransformBuffer.d.ts +82 -0
  71. package/dist/esm/rendering/TransformBuffer.js +180 -0
  72. package/dist/esm/rendering/TransformBuffer.js.map +1 -0
  73. package/dist/esm/rendering/filters/WebGpuShaderFilter.js +5 -12
  74. package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
  75. package/dist/esm/rendering/geometry/Geometry.d.ts +40 -0
  76. package/dist/esm/rendering/geometry/Geometry.js +228 -0
  77. package/dist/esm/rendering/geometry/Geometry.js.map +1 -0
  78. package/dist/esm/rendering/geometry/GeometryAttribute.d.ts +32 -0
  79. package/dist/esm/rendering/geometry/QuadGeometry.d.ts +5 -0
  80. package/dist/esm/rendering/gradient/Gradient.d.ts +67 -0
  81. package/dist/esm/rendering/gradient/Gradient.js +160 -0
  82. package/dist/esm/rendering/gradient/Gradient.js.map +1 -0
  83. package/dist/esm/rendering/gradient/LinearGradient.d.ts +18 -0
  84. package/dist/esm/rendering/gradient/LinearGradient.js +49 -0
  85. package/dist/esm/rendering/gradient/LinearGradient.js.map +1 -0
  86. package/dist/esm/rendering/gradient/RadialGradient.d.ts +18 -0
  87. package/dist/esm/rendering/gradient/RadialGradient.js +44 -0
  88. package/dist/esm/rendering/gradient/RadialGradient.js.map +1 -0
  89. package/dist/esm/rendering/index.d.ts +16 -2
  90. package/dist/esm/rendering/material/Material.d.ts +114 -0
  91. package/dist/esm/rendering/material/Material.js +111 -0
  92. package/dist/esm/rendering/material/Material.js.map +1 -0
  93. package/dist/esm/rendering/material/MaterialKey.d.ts +18 -0
  94. package/dist/esm/rendering/material/MaterialKey.js +82 -0
  95. package/dist/esm/rendering/material/MaterialKey.js.map +1 -0
  96. package/dist/esm/rendering/material/MeshMaterial.d.ts +16 -0
  97. package/dist/esm/rendering/material/MeshMaterial.js +21 -0
  98. package/dist/esm/rendering/material/MeshMaterial.js.map +1 -0
  99. package/dist/esm/rendering/{mesh/MeshShader.d.ts → material/ShaderSource.d.ts} +29 -62
  100. package/dist/esm/rendering/{mesh/MeshShader.js → material/ShaderSource.js} +35 -62
  101. package/dist/esm/rendering/material/ShaderSource.js.map +1 -0
  102. package/dist/esm/rendering/material/SpriteMaterial.d.ts +15 -0
  103. package/dist/esm/rendering/material/SpriteMaterial.js +20 -0
  104. package/dist/esm/rendering/material/SpriteMaterial.js.map +1 -0
  105. package/dist/esm/rendering/mesh/Mesh.d.ts +29 -12
  106. package/dist/esm/rendering/mesh/Mesh.js +122 -3
  107. package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
  108. package/dist/esm/rendering/pass/RenderPassCoordinator.d.ts +63 -0
  109. package/dist/esm/rendering/pass/RenderPassDescriptor.d.ts +48 -0
  110. package/dist/esm/rendering/pass/RenderPassDescriptor.js +16 -0
  111. package/dist/esm/rendering/pass/RenderPassDescriptor.js.map +1 -0
  112. package/dist/esm/rendering/plan/RenderCommand.d.ts +86 -0
  113. package/dist/esm/rendering/plan/RenderCommand.js +127 -0
  114. package/dist/esm/rendering/plan/RenderCommand.js.map +1 -0
  115. package/dist/esm/rendering/plan/RenderEffectExecutor.d.ts +10 -0
  116. package/dist/esm/rendering/plan/RenderEffectExecutor.js +159 -0
  117. package/dist/esm/rendering/plan/RenderEffectExecutor.js.map +1 -0
  118. package/dist/esm/rendering/plan/RenderInstruction.d.ts +51 -0
  119. package/dist/esm/rendering/plan/RenderInstruction.js +45 -0
  120. package/dist/esm/rendering/plan/RenderInstruction.js.map +1 -0
  121. package/dist/esm/rendering/plan/RenderPlan.d.ts +23 -0
  122. package/dist/esm/rendering/plan/RenderPlan.js +12 -0
  123. package/dist/esm/rendering/plan/RenderPlan.js.map +1 -0
  124. package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts +31 -0
  125. package/dist/esm/rendering/plan/RenderPlanBuilder.js +242 -0
  126. package/dist/esm/rendering/plan/RenderPlanBuilder.js.map +1 -0
  127. package/dist/esm/rendering/plan/RenderPlanOptimizer.d.ts +10 -0
  128. package/dist/esm/rendering/plan/RenderPlanOptimizer.js +180 -0
  129. package/dist/esm/rendering/plan/RenderPlanOptimizer.js.map +1 -0
  130. package/dist/esm/rendering/plan/RenderPlanPlayer.d.ts +13 -0
  131. package/dist/esm/rendering/plan/RenderPlanPlayer.js +107 -0
  132. package/dist/esm/rendering/plan/RenderPlanPlayer.js.map +1 -0
  133. package/dist/esm/rendering/plan/RenderScope.d.ts +70 -0
  134. package/dist/esm/rendering/plan/RenderScope.js +16 -0
  135. package/dist/esm/rendering/plan/RenderScope.js.map +1 -0
  136. package/dist/esm/rendering/plan/playRenderTree.d.ts +4 -0
  137. package/dist/esm/rendering/plan/playRenderTree.js +19 -0
  138. package/dist/esm/rendering/plan/playRenderTree.js.map +1 -0
  139. package/dist/esm/rendering/primitives/Graphics.d.ts +70 -5
  140. package/dist/esm/rendering/primitives/Graphics.js +172 -14
  141. package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
  142. package/dist/esm/rendering/sprite/Sprite.d.ts +22 -1
  143. package/dist/esm/rendering/sprite/Sprite.js +33 -2
  144. package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
  145. package/dist/esm/rendering/sprite/spriteMaterialSources.d.ts +41 -0
  146. package/dist/esm/rendering/sprite/spriteMaterialSources.js +149 -0
  147. package/dist/esm/rendering/sprite/spriteMaterialSources.js.map +1 -0
  148. package/dist/esm/rendering/text/BitmapText.d.ts +2 -0
  149. package/dist/esm/rendering/text/BitmapText.js +8 -1
  150. package/dist/esm/rendering/text/BitmapText.js.map +1 -1
  151. package/dist/esm/rendering/text/BmFont.js +3 -0
  152. package/dist/esm/rendering/text/BmFont.js.map +1 -1
  153. package/dist/esm/rendering/text/GlyphSdf.d.ts +14 -0
  154. package/dist/esm/rendering/text/GlyphSdf.js +41 -11
  155. package/dist/esm/rendering/text/GlyphSdf.js.map +1 -1
  156. package/dist/esm/rendering/text/TextStyle.d.ts +6 -1
  157. package/dist/esm/rendering/text/TextStyle.js +1 -1
  158. package/dist/esm/rendering/text/TextStyle.js.map +1 -1
  159. package/dist/esm/rendering/texture/DataTexture.d.ts +5 -0
  160. package/dist/esm/rendering/texture/DataTexture.js +7 -0
  161. package/dist/esm/rendering/texture/DataTexture.js.map +1 -1
  162. package/dist/esm/rendering/texture/RenderTexture.js.map +1 -1
  163. package/dist/esm/rendering/video/Video.d.ts +3 -7
  164. package/dist/esm/rendering/video/Video.js +3 -8
  165. package/dist/esm/rendering/video/Video.js.map +1 -1
  166. package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +62 -0
  167. package/dist/esm/rendering/webgl2/WebGl2Backend.js +352 -21
  168. package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
  169. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts +22 -2
  170. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js +404 -112
  171. package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js.map +1 -1
  172. package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.d.ts +8 -0
  173. package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js +8 -0
  174. package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js.map +1 -1
  175. package/dist/esm/rendering/webgl2/WebGl2PassCoordinator.d.ts +57 -0
  176. package/dist/esm/rendering/webgl2/WebGl2PassCoordinator.js +79 -0
  177. package/dist/esm/rendering/webgl2/WebGl2PassCoordinator.js.map +1 -0
  178. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts +14 -0
  179. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +257 -78
  180. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
  181. package/dist/esm/rendering/webgl2/WebGl2StencilClipper.d.ts +34 -0
  182. package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js +169 -0
  183. package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js.map +1 -0
  184. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.d.ts +7 -0
  185. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js +11 -0
  186. package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js.map +1 -1
  187. package/dist/esm/rendering/webgl2/glsl/mesh.frag.js +1 -1
  188. package/dist/esm/rendering/webgl2/glsl/mesh.vert.js +1 -1
  189. package/dist/esm/rendering/webgl2/glsl/sprite.vert.js +1 -1
  190. package/dist/esm/rendering/webgl2/glsl/stencil-clip.frag.js +4 -0
  191. package/dist/esm/rendering/webgl2/glsl/stencil-clip.frag.js.map +1 -0
  192. package/dist/esm/rendering/webgl2/glsl/stencil-clip.vert.js +4 -0
  193. package/dist/esm/rendering/webgl2/glsl/stencil-clip.vert.js.map +1 -0
  194. package/dist/esm/rendering/webgl2/glsl/text-color.frag.js +1 -1
  195. package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +63 -0
  196. package/dist/esm/rendering/webgpu/WebGpuBackend.js +180 -19
  197. package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
  198. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +22 -17
  199. package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -1
  200. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +24 -0
  201. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +524 -98
  202. package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
  203. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.d.ts +7 -0
  204. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js +24 -22
  205. package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js.map +1 -1
  206. package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.d.ts +141 -0
  207. package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js +270 -0
  208. package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js.map +1 -0
  209. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +25 -1
  210. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +430 -76
  211. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
  212. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts +57 -0
  213. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js +257 -0
  214. package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js.map +1 -0
  215. package/dist/esm/rendering/webgpu/WebGpuStencilState.d.ts +14 -0
  216. package/dist/esm/rendering/webgpu/WebGpuStencilState.js +36 -0
  217. package/dist/esm/rendering/webgpu/WebGpuStencilState.js.map +1 -0
  218. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts +7 -0
  219. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js +30 -19
  220. package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js.map +1 -1
  221. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts +48 -0
  222. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js +103 -0
  223. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js.map +1 -0
  224. package/dist/esm/resources/JsonStore.d.ts +18 -0
  225. package/dist/esm/resources/JsonStore.js +62 -0
  226. package/dist/esm/resources/JsonStore.js.map +1 -0
  227. package/dist/esm/resources/Loader.js +1 -1
  228. package/dist/esm/resources/Loader.js.map +1 -1
  229. package/dist/esm/resources/factories/ImageFactory.d.ts +14 -8
  230. package/dist/esm/resources/factories/ImageFactory.js +13 -6
  231. package/dist/esm/resources/factories/ImageFactory.js.map +1 -1
  232. package/dist/esm/resources/factories/TextureFactory.d.ts +4 -4
  233. package/dist/esm/resources/factories/TextureFactory.js +8 -4
  234. package/dist/esm/resources/factories/TextureFactory.js.map +1 -1
  235. package/dist/esm/resources/index.d.ts +1 -0
  236. package/dist/exo.esm.js +6326 -2350
  237. package/dist/exo.esm.js.map +1 -1
  238. package/package.json +34 -24
  239. package/dist/esm/particles/distributions/Gradient.js.map +0 -1
  240. package/dist/esm/rendering/mesh/MeshShader.js.map +0 -1
  241. package/dist/esm/vendor/webgl-debug.js +0 -1160
  242. package/dist/esm/vendor/webgl-debug.js.map +0 -1
@@ -5,8 +5,7 @@ import { RenderNode } from './RenderNode.js';
5
5
  /**
6
6
  * Base class for every renderable scene object.
7
7
  *
8
- * Extends {@link RenderNode} with a per-object tint colour and blend mode,
9
- * and implements the default view-frustum culling logic in {@link render}.
8
+ * Extends {@link RenderNode} with a per-object tint colour and blend mode.
10
9
  * Concrete drawable types (sprites, meshes, text, etc.) extend this class
11
10
  * and are paired with a matching {@link Renderer} via {@link RendererRegistry}.
12
11
  */
@@ -47,24 +46,17 @@ class Drawable extends RenderNode {
47
46
  }
48
47
  return this;
49
48
  }
50
- /**
51
- * Submit this drawable for rendering.
52
- * Skips invisible nodes and increments the cull counter for nodes that fall
53
- * outside the current view. Visible, in-view nodes are drawn via the backend
54
- * using the current blend mode.
55
- */
56
- render(backend) {
57
- if (!this.visible) {
58
- return this;
59
- }
60
- if (!this.inView(backend.view)) {
61
- backend.stats.culledNodes++;
62
- return this;
63
- }
64
- this.renderVisualContent(backend, () => {
65
- backend.draw(this);
66
- }, this._blendMode);
67
- return this;
49
+ /** @internal */
50
+ _collectContent(builder) {
51
+ builder.emitDraw(this);
52
+ }
53
+ /** @internal */
54
+ _isDrawableForRenderPlan() {
55
+ return true;
56
+ }
57
+ /** @internal */
58
+ _renderPlanGetBlendMode() {
59
+ return this._blendMode;
68
60
  }
69
61
  destroy() {
70
62
  super.destroy();
@@ -1 +1 @@
1
- {"version":3,"file":"Drawable.js","sources":["../../../../src/rendering/Drawable.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAMA;;;;;;;AAOG;AACG,MAAO,QAAS,SAAQ,UAAU,CAAA;AAC9B,IAAA,KAAK,GAAU,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AAClC,IAAA,UAAU,GAAe,UAAU,CAAC,MAAM;AAElD,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,KAAK;IACnB;IAEA,IAAW,IAAI,CAAC,IAAW,EAAA;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IACpB;AAEA,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU;IACxB;IAEA,IAAW,SAAS,CAAC,SAAqB,EAAA;AACxC,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;IAC9B;AAEA;;;AAGG;AACI,IAAA,OAAO,CAAC,KAAY,EAAA;QACzB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACtB,IAAI,CAAC,eAAe,EAAE;QACxB;AAEA,QAAA,OAAO,IAAI;IACb;AAEA;;;AAGG;AACI,IAAA,YAAY,CAAC,SAAqB,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;AACjC,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;YAC3B,IAAI,CAAC,eAAe,EAAE;QACxB;AAEA,QAAA,OAAO,IAAI;IACb;AAEA;;;;;AAKG;AACa,IAAA,MAAM,CAAC,OAAsB,EAAA;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC9B,YAAA,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE;AAE3B,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,CAAC,mBAAmB,CACtB,OAAO,EACP,MAAK;AACH,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACpB,QAAA,CAAC,EACD,IAAI,CAAC,UAAU,CAChB;AAED,QAAA,OAAO,IAAI;IACb;IAEgB,OAAO,GAAA;QACrB,KAAK,CAAC,OAAO,EAAE;AAEf,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;IACtB;AACD;;;;"}
1
+ {"version":3,"file":"Drawable.js","sources":["../../../../src/rendering/Drawable.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAMA;;;;;;AAMG;AACG,MAAO,QAAS,SAAQ,UAAU,CAAA;AAC9B,IAAA,KAAK,GAAU,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;AAClC,IAAA,UAAU,GAAe,UAAU,CAAC,MAAM;AAElD,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,KAAK;IACnB;IAEA,IAAW,IAAI,CAAC,IAAW,EAAA;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IACpB;AAEA,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU;IACxB;IAEA,IAAW,SAAS,CAAC,SAAqB,EAAA;AACxC,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;IAC9B;AAEA;;;AAGG;AACI,IAAA,OAAO,CAAC,KAAY,EAAA;QACzB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACtB,IAAI,CAAC,eAAe,EAAE;QACxB;AAEA,QAAA,OAAO,IAAI;IACb;AAEA;;;AAGG;AACI,IAAA,YAAY,CAAC,SAAqB,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;AACjC,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;YAC3B,IAAI,CAAC,eAAe,EAAE;QACxB;AAEA,QAAA,OAAO,IAAI;IACb;;AAGmB,IAAA,eAAe,CAAC,OAA0B,EAAA;AAC3D,QAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IACxB;;IAGgB,wBAAwB,GAAA;AACtC,QAAA,OAAO,IAAI;IACb;;IAGgB,uBAAuB,GAAA;QACrC,OAAO,IAAI,CAAC,UAAU;IACxB;IAEgB,OAAO,GAAA;QACrB,KAAK,CAAC,OAAO,EAAE;AAEf,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;IACtB;AACD;;;;"}
@@ -1,6 +1,8 @@
1
1
  import type { Color } from '@/core/Color';
2
+ import type { Matrix } from '@/math/Matrix';
2
3
  import type { Rectangle } from '@/math/Rectangle';
3
4
  import type { Drawable } from './Drawable';
5
+ import type { Geometry } from './geometry/Geometry';
4
6
  import type { RenderBackendType } from './RenderBackendType';
5
7
  import type { RenderPass } from './RenderPass';
6
8
  import type { RenderStats } from './RenderStats';
@@ -44,6 +46,22 @@ export interface RenderBackend {
44
46
  * Pop the most recently pushed scissor rectangle.
45
47
  */
46
48
  popScissorRect(): this;
49
+ /**
50
+ * Push a geometric stencil clip. The `shape` silhouette (transformed by
51
+ * `transform`, the clipping node's global transform) is written into the
52
+ * stencil buffer; subsequent draws are restricted to fragments inside the
53
+ * shape. Nested clips intersect (ref-incremented). Used internally by the
54
+ * `Geometry` `clipShape` path on {@link RenderNode.clip}.
55
+ *
56
+ * Composes freely with the scissor stack. Backends without stencil support
57
+ * (currently WebGPU) throw a clear error rather than rendering incorrectly.
58
+ */
59
+ pushStencilClip(shape: Geometry, transform: Matrix): this;
60
+ /**
61
+ * Pop the most recently pushed stencil clip, restoring the previous nesting
62
+ * level (or disabling the stencil test at the outermost level).
63
+ */
64
+ popStencilClip(): this;
47
65
  acquireRenderTexture(width: number, height: number): RenderTexture;
48
66
  releaseRenderTexture(texture: RenderTexture): this;
49
67
  /**
@@ -4,6 +4,8 @@ import { Signal } from '@/core/Signal';
4
4
  import type { InteractionEvent } from '@/input/InteractionEvent';
5
5
  import { Rectangle } from '@/math/Rectangle';
6
6
  import type { Filter } from '@/rendering/filters/Filter';
7
+ import type { Geometry } from '@/rendering/geometry/Geometry';
8
+ import { type RenderPlanBuilder } from '@/rendering/plan/RenderPlanBuilder';
7
9
  import type { RenderBackend } from '@/rendering/RenderBackend';
8
10
  import { RenderTexture } from '@/rendering/texture/RenderTexture';
9
11
  import type { Texture } from '@/rendering/texture/Texture';
@@ -52,10 +54,9 @@ export type MaskSource = Rectangle | Texture | RenderTexture | RenderNode | null
52
54
  * (`cacheAsBitmap`), and the interaction surface
53
55
  * (`interactive`, `draggable`, all the pointer Signals).
54
56
  *
55
- * `RenderNode.render(backend)` is the per-frame visual entry point each
56
- * subclass implements. The base provides `renderVisualContent()` a
57
- * helper that wraps the subclass's draw work with cache / mask / filter /
58
- * tint orchestration so subclasses focus on their own geometry.
57
+ * `RenderNode.render(backend)` is the per-frame visual entry point. The
58
+ * base implementation collects a render plan, optimizes local ordering,
59
+ * and plays it through the active backend.
59
60
  *
60
61
  * Subclasses of note: {@link Container} (children), {@link Sprite} (textured
61
62
  * quad), {@link Mesh} (custom geometry), {@link Graphics} (immediate-mode
@@ -77,6 +78,45 @@ export declare abstract class RenderNode extends SceneNode {
77
78
  * node will never receive `pointerdown` and therefore cannot start a drag.
78
79
  */
79
80
  draggable: boolean;
81
+ /**
82
+ * When `true`, material-aware overlap reordering is disabled for this
83
+ * node's draw-order scope. Draw commands are submitted in exact document
84
+ * order (after scope-local z-sorting), preserving the painter's guarantee
85
+ * irrespective of material compatibility or AABB safety analysis.
86
+ *
87
+ * Adjacency coalescing of consecutive same-material draws still applies;
88
+ * it does not change visual output order.
89
+ *
90
+ * @default false
91
+ */
92
+ preserveDrawOrder: boolean;
93
+ /**
94
+ * When `true`, descendants are geometrically clipped to {@link clipShape}.
95
+ * Unlike {@link mask} (which is alpha/visibility masking), `clip` is a hard
96
+ * geometric boundary:
97
+ *
98
+ * - `clipShape === null` — clip to this node's world-space bounds
99
+ * ({@link getBounds}), using the GPU scissor fast path.
100
+ * - `clipShape` is a `Rectangle` — clip to that world-space rectangle via
101
+ * scissor.
102
+ * - `clipShape` is a `Geometry` — clip to the geometry's silhouette via the
103
+ * stencil buffer (WebGL2). Only fragments inside the shape survive.
104
+ *
105
+ * Clipping wraps the node's final (filtered/masked) output and acts as a
106
+ * render barrier: draw commands are never reordered or batched across the
107
+ * clip boundary.
108
+ *
109
+ * @default false
110
+ */
111
+ clip: boolean;
112
+ /**
113
+ * Clip region used when {@link clip} is `true`. A `Rectangle` (or `null` for
114
+ * the node's bounds) maps to the scissor fast path; a `Geometry` maps to the
115
+ * stencil path. Has no effect while `clip` is `false`.
116
+ *
117
+ * @default null
118
+ */
119
+ clipShape: Rectangle | Geometry | null;
80
120
  readonly onPointerDown: Signal<[InteractionEvent]>;
81
121
  readonly onPointerUp: Signal<[InteractionEvent]>;
82
122
  readonly onPointerMove: Signal<[InteractionEvent]>;
@@ -109,7 +149,23 @@ export declare abstract class RenderNode extends SceneNode {
109
149
  */
110
150
  get mask(): MaskSource;
111
151
  set mask(mask: MaskSource);
112
- abstract render(backend: RenderBackend): this;
152
+ /**
153
+ * Raw rendering entry point. Direct backend access — bypasses the
154
+ * RenderPlan pipeline machinery. Prefer the high-level
155
+ * {@link RenderingContext.render} path via the owning
156
+ * `RenderingContext` wherever possible.
157
+ *
158
+ * @advanced
159
+ */
160
+ render(backend: RenderBackend): this;
161
+ /** @internal */
162
+ _collect(builder: RenderPlanBuilder, seq?: number): void;
163
+ /** @internal */
164
+ _collectForRenderPlan(builder: RenderPlanBuilder): void;
165
+ /** @internal */
166
+ _isDrawableForRenderPlan(): boolean;
167
+ /** @internal */
168
+ protected _collectContent(_builder: RenderPlanBuilder): void;
113
169
  get cacheAsBitmap(): boolean;
114
170
  set cacheAsBitmap(cacheAsBitmap: boolean);
115
171
  addFilter(filter: Filter): this;
@@ -117,10 +173,27 @@ export declare abstract class RenderNode extends SceneNode {
117
173
  static setInternalSpriteFactory(factory: (() => RenderNodeSpriteLike) | null): void;
118
174
  clearFilters(): this;
119
175
  invalidateCache(): this;
120
- protected renderVisualContent(backend: RenderBackend, renderContent: () => void, blendMode?: BlendModes): void;
176
+ /** @internal */
177
+ _renderPlanHasBarrierEffects(): boolean;
178
+ /** @internal */
179
+ _renderPlanGetMaskSource(): MaskSource;
180
+ /** @internal */
181
+ _renderPlanGetFilters(): readonly Filter[];
182
+ /** @internal */
183
+ _renderPlanGetBlendMode(): BlendModes;
184
+ /** @internal */
185
+ _renderPlanCanReuseBitmapCache(left: number, top: number, width: number, height: number): boolean;
186
+ /** @internal */
187
+ _renderPlanGetCacheTexture(): RenderTexture | null;
188
+ /** @internal */
189
+ _renderPlanEnsureCacheTexture(width: number, height: number): RenderTexture;
190
+ /** @internal */
191
+ _renderPlanStoreCacheTexture(texture: RenderTexture, left: number, top: number, width: number, height: number): void;
192
+ /** @internal */
193
+ _renderPlanRenderToTexture(backend: RenderBackend, target: RenderTexture, left: number, top: number, width: number, height: number, renderContent: () => void): void;
194
+ /** @internal */
195
+ _renderPlanDrawTexture(backend: RenderBackend, texture: RenderTexture, x: number, y: number, width: number, height: number, blendMode: BlendModes): void;
121
196
  destroy(): void;
122
- private _withMask;
123
- private _resolveMaskTexture;
124
197
  private _renderContentToTexture;
125
198
  private _drawTexture;
126
199
  private _ensureCacheTexture;
@@ -3,6 +3,9 @@ import { SceneNode } from '../core/SceneNode.js';
3
3
  import { Signal } from '../core/Signal.js';
4
4
  import { getActiveInteractionManager } from '../input/internal/interactionManagerRegistry.js';
5
5
  import { Rectangle } from '../math/Rectangle.js';
6
+ import { playRenderTree } from './plan/playRenderTree.js';
7
+ import './plan/RenderCommand.js';
8
+ import './plan/RenderScope.js';
6
9
  import { RenderTargetPass } from './RenderTargetPass.js';
7
10
  import { RenderTexture } from './texture/RenderTexture.js';
8
11
  import { BlendModes } from './types.js';
@@ -17,10 +20,9 @@ const isDestroyableFilter = (filter) => 'destroy' in filter && typeof filter.des
17
20
  * (`cacheAsBitmap`), and the interaction surface
18
21
  * (`interactive`, `draggable`, all the pointer Signals).
19
22
  *
20
- * `RenderNode.render(backend)` is the per-frame visual entry point each
21
- * subclass implements. The base provides `renderVisualContent()` a
22
- * helper that wraps the subclass's draw work with cache / mask / filter /
23
- * tint orchestration so subclasses focus on their own geometry.
23
+ * `RenderNode.render(backend)` is the per-frame visual entry point. The
24
+ * base implementation collects a render plan, optimizes local ordering,
25
+ * and plays it through the active backend.
24
26
  *
25
27
  * Subclasses of note: {@link Container} (children), {@link Sprite} (textured
26
28
  * quad), {@link Mesh} (custom geometry), {@link Graphics} (immediate-mode
@@ -50,6 +52,45 @@ class RenderNode extends SceneNode {
50
52
  * node will never receive `pointerdown` and therefore cannot start a drag.
51
53
  */
52
54
  draggable = false;
55
+ /**
56
+ * When `true`, material-aware overlap reordering is disabled for this
57
+ * node's draw-order scope. Draw commands are submitted in exact document
58
+ * order (after scope-local z-sorting), preserving the painter's guarantee
59
+ * irrespective of material compatibility or AABB safety analysis.
60
+ *
61
+ * Adjacency coalescing of consecutive same-material draws still applies;
62
+ * it does not change visual output order.
63
+ *
64
+ * @default false
65
+ */
66
+ preserveDrawOrder = false;
67
+ /**
68
+ * When `true`, descendants are geometrically clipped to {@link clipShape}.
69
+ * Unlike {@link mask} (which is alpha/visibility masking), `clip` is a hard
70
+ * geometric boundary:
71
+ *
72
+ * - `clipShape === null` — clip to this node's world-space bounds
73
+ * ({@link getBounds}), using the GPU scissor fast path.
74
+ * - `clipShape` is a `Rectangle` — clip to that world-space rectangle via
75
+ * scissor.
76
+ * - `clipShape` is a `Geometry` — clip to the geometry's silhouette via the
77
+ * stencil buffer (WebGL2). Only fragments inside the shape survive.
78
+ *
79
+ * Clipping wraps the node's final (filtered/masked) output and acts as a
80
+ * render barrier: draw commands are never reordered or batched across the
81
+ * clip boundary.
82
+ *
83
+ * @default false
84
+ */
85
+ clip = false;
86
+ /**
87
+ * Clip region used when {@link clip} is `true`. A `Rectangle` (or `null` for
88
+ * the node's bounds) maps to the scissor fast path; a `Geometry` maps to the
89
+ * stencil path. Has no effect while `clip` is `false`.
90
+ *
91
+ * @default null
92
+ */
93
+ clipShape = null;
53
94
  onPointerDown = new Signal();
54
95
  onPointerUp = new Signal();
55
96
  onPointerMove = new Signal();
@@ -98,6 +139,41 @@ class RenderNode extends SceneNode {
98
139
  this.invalidateCache();
99
140
  }
100
141
  }
142
+ /**
143
+ * Raw rendering entry point. Direct backend access — bypasses the
144
+ * RenderPlan pipeline machinery. Prefer the high-level
145
+ * {@link RenderingContext.render} path via the owning
146
+ * `RenderingContext` wherever possible.
147
+ *
148
+ * @advanced
149
+ */
150
+ render(backend) {
151
+ playRenderTree(this, backend);
152
+ return this;
153
+ }
154
+ /** @internal */
155
+ _collect(builder, seq) {
156
+ if (!this.visible) {
157
+ return;
158
+ }
159
+ if (!this.inView(builder.view)) {
160
+ builder.backend.stats.culledNodes++;
161
+ return;
162
+ }
163
+ builder.emitNode(this, seq);
164
+ }
165
+ /** @internal */
166
+ _collectForRenderPlan(builder) {
167
+ this._collectContent(builder);
168
+ }
169
+ /** @internal */
170
+ _isDrawableForRenderPlan() {
171
+ return false;
172
+ }
173
+ /** @internal */
174
+ _collectContent(_builder) {
175
+ // Overridden by Drawable/Container.
176
+ }
101
177
  get cacheAsBitmap() {
102
178
  return this._cacheAsBitmap;
103
179
  }
@@ -136,75 +212,47 @@ class RenderNode extends SceneNode {
136
212
  this._cacheDirty = true;
137
213
  return this;
138
214
  }
139
- renderVisualContent(backend, renderContent, blendMode = BlendModes.Normal) {
140
- const hasFilters = this._filters.length > 0;
141
- const needsBitmapCache = this._cacheAsBitmap;
142
- if (!hasFilters && !needsBitmapCache) {
143
- this._withMask(backend, renderContent, blendMode);
144
- return;
145
- }
146
- const rawBounds = this.getBounds();
147
- if (rawBounds.width <= 0 || rawBounds.height <= 0) {
148
- return;
149
- }
150
- const left = Math.floor(rawBounds.left);
151
- const top = Math.floor(rawBounds.top);
152
- const width = Math.max(1, Math.ceil(rawBounds.width));
153
- const height = Math.max(1, Math.ceil(rawBounds.height));
154
- const cacheBoundsChanged = !this._cacheBounds.equals({ x: left, y: top, width, height });
155
- const shouldRefreshCache = needsBitmapCache && (this._cacheDirty || this._cacheTexture === null || cacheBoundsChanged);
156
- if (needsBitmapCache && !shouldRefreshCache && this._cacheTexture !== null) {
157
- this._withMask(backend, () => {
158
- this._drawTexture(backend, this._cacheTexture, left, top, width, height, blendMode);
159
- }, blendMode);
160
- return;
161
- }
162
- // Ping-pong filter chain: at most one pool-owned RT is held at any time
163
- // outside the brief `filter.apply()` call (where input + output coexist).
164
- // Previously we accumulated every step's RT and released them all in
165
- // `finally`, which kept N+1 RTs alive for an N-filter chain. Now we
166
- // release the previous step's RT immediately after each `filter.apply()`
167
- // and let the pool hand the same memory back for the next step.
168
- const cacheTexture = needsBitmapCache ? this._ensureCacheTexture(width, height) : null;
169
- let pooledTexture = null;
170
- try {
171
- const sourceTexture = needsBitmapCache && !hasFilters ? cacheTexture : backend.acquireRenderTexture(width, height);
172
- if (sourceTexture !== cacheTexture) {
173
- pooledTexture = sourceTexture;
174
- }
175
- this._renderContentToTexture(backend, sourceTexture, left, top, width, height, renderContent);
176
- let finalTexture = sourceTexture;
177
- if (hasFilters) {
178
- for (let index = 0; index < this._filters.length; index++) {
179
- const isLast = index === this._filters.length - 1;
180
- const output = isLast && needsBitmapCache ? cacheTexture : backend.acquireRenderTexture(width, height);
181
- this._filters[index].apply(backend, finalTexture, output);
182
- // Release the previous step's RT now that `apply` has consumed it.
183
- // The cache texture is owned by the node, never pool-owned.
184
- if (pooledTexture !== null) {
185
- backend.releaseRenderTexture(pooledTexture);
186
- pooledTexture = null;
187
- }
188
- finalTexture = output;
189
- if (output !== cacheTexture) {
190
- pooledTexture = output;
191
- }
192
- }
193
- }
194
- if (needsBitmapCache) {
195
- this._cacheTexture = cacheTexture;
196
- this._cacheBounds.set(left, top, width, height);
197
- this._cacheDirty = false;
198
- }
199
- this._withMask(backend, () => {
200
- this._drawTexture(backend, finalTexture, left, top, width, height, blendMode);
201
- }, blendMode);
202
- }
203
- finally {
204
- if (pooledTexture !== null) {
205
- backend.releaseRenderTexture(pooledTexture);
206
- }
207
- }
215
+ /** @internal */
216
+ _renderPlanHasBarrierEffects() {
217
+ return this._filters.length > 0 || this._mask !== null || this._cacheAsBitmap || this.clip;
218
+ }
219
+ /** @internal */
220
+ _renderPlanGetMaskSource() {
221
+ return this._mask;
222
+ }
223
+ /** @internal */
224
+ _renderPlanGetFilters() {
225
+ return this._filters;
226
+ }
227
+ /** @internal */
228
+ _renderPlanGetBlendMode() {
229
+ return BlendModes.Normal;
230
+ }
231
+ /** @internal */
232
+ _renderPlanCanReuseBitmapCache(left, top, width, height) {
233
+ return this._cacheAsBitmap && !this._cacheDirty && this._cacheTexture !== null && this._cacheBounds.equals({ x: left, y: top, width, height });
234
+ }
235
+ /** @internal */
236
+ _renderPlanGetCacheTexture() {
237
+ return this._cacheTexture;
238
+ }
239
+ /** @internal */
240
+ _renderPlanEnsureCacheTexture(width, height) {
241
+ return this._ensureCacheTexture(width, height);
242
+ }
243
+ /** @internal */
244
+ _renderPlanStoreCacheTexture(texture, left, top, width, height) {
245
+ this._cacheTexture = texture;
246
+ this._cacheBounds.set(left, top, width, height);
247
+ this._cacheDirty = false;
248
+ }
249
+ /** @internal */
250
+ _renderPlanRenderToTexture(backend, target, left, top, width, height, renderContent) {
251
+ this._renderContentToTexture(backend, target, left, top, width, height, renderContent);
252
+ }
253
+ /** @internal */
254
+ _renderPlanDrawTexture(backend, texture, x, y, width, height, blendMode) {
255
+ this._drawTexture(backend, texture, x, y, width, height, blendMode);
208
256
  }
209
257
  destroy() {
210
258
  super.destroy();
@@ -231,77 +279,6 @@ class RenderNode extends SceneNode {
231
279
  this.onDrag.destroy();
232
280
  this.onDragEnd.destroy();
233
281
  }
234
- _withMask(backend, callback, blendMode = BlendModes.Normal) {
235
- const mask = this._mask;
236
- if (mask === null) {
237
- callback();
238
- return;
239
- }
240
- // Fast path: rectangle mask uses GPU scissor.
241
- if (mask instanceof Rectangle) {
242
- if (mask.width <= 0 || mask.height <= 0) {
243
- return;
244
- }
245
- backend.pushScissorRect(mask);
246
- try {
247
- callback();
248
- }
249
- finally {
250
- backend.popScissorRect();
251
- }
252
- return;
253
- }
254
- // Alpha-mask paths: Texture, RenderTexture, or RenderNode source.
255
- // Strategy:
256
- // 1. Render `callback` (the masked content) into an intermediate
257
- // contentTexture.
258
- // 2. Resolve the mask into a texture: Texture/RenderTexture used
259
- // directly; RenderNode rendered into a maskTexture first.
260
- // 3. Compose contentTexture * mask.alpha into the active target at the
261
- // content's world-space position.
262
- // 4. Release intermediates.
263
- const contentBounds = this.getBounds();
264
- if (contentBounds.width <= 0 || contentBounds.height <= 0) {
265
- return;
266
- }
267
- const left = Math.floor(contentBounds.left);
268
- const top = Math.floor(contentBounds.top);
269
- const width = Math.max(1, Math.ceil(contentBounds.width));
270
- const height = Math.max(1, Math.ceil(contentBounds.height));
271
- const contentTexture = backend.acquireRenderTexture(width, height);
272
- const releasePool = [contentTexture];
273
- try {
274
- this._renderContentToTexture(backend, contentTexture, left, top, width, height, callback);
275
- const maskTexture = this._resolveMaskTexture(backend, mask, width, height, releasePool);
276
- backend.composeWithAlphaMask(contentTexture, maskTexture, left, top, width, height, blendMode);
277
- }
278
- finally {
279
- for (const texture of releasePool) {
280
- backend.releaseRenderTexture(texture);
281
- }
282
- }
283
- }
284
- _resolveMaskTexture(backend, mask, width, height, releasePool) {
285
- if (mask instanceof RenderNode) {
286
- // Render the mask node's full visual output into an
287
- // intermediate render texture sized to match the masked
288
- // content. The mask node renders with its own transform; the
289
- // intermediate is positioned over the masked content's
290
- // world-space bounds so the resulting texture uses the
291
- // masked content's local UV space.
292
- const maskTexture = backend.acquireRenderTexture(width, height);
293
- releasePool.push(maskTexture);
294
- const contentBounds = this.getBounds();
295
- const left = Math.floor(contentBounds.left);
296
- const top = Math.floor(contentBounds.top);
297
- this._renderContentToTexture(backend, maskTexture, left, top, width, height, () => {
298
- mask.render(backend);
299
- });
300
- return maskTexture;
301
- }
302
- // mask is Texture or RenderTexture — use directly.
303
- return mask;
304
- }
305
282
  _renderContentToTexture(backend, target, left, top, width, height, renderContent) {
306
283
  if (this._captureView === null) {
307
284
  this._captureView = new View(left + width / 2, top + height / 2, width, height);
@@ -1 +1 @@
1
- {"version":3,"file":"RenderNode.js","sources":["../../../../src/rendering/RenderNode.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RenderNode.js","sources":["../../../../src/rendering/RenderNode.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -13,6 +13,19 @@ import { View } from './View';
13
13
  * the underlying canvas / texture dimensions change.
14
14
  */
15
15
  export declare class RenderTarget {
16
+ /**
17
+ * Whether this target needs a stencil attachment for geometric stencil
18
+ * clipping ({@link RenderNode.clip} with a `Geometry` `clipShape`). Set by the
19
+ * WebGL2 backend when such a clip is rendered into an offscreen
20
+ * {@link RenderTexture}, so its framebuffer gets a depth/stencil renderbuffer;
21
+ * the WebGL2 on-screen root uses the default framebuffer's stencil (requested
22
+ * at context creation), so the flag only affects offscreen WebGL2 targets.
23
+ *
24
+ * The WebGPU backend does not consult this flag: it allocates a separate
25
+ * `depth24plus-stencil8` attachment per clipped target (root included) on
26
+ * demand, sized to the colour attachment's physical pixels.
27
+ */
28
+ needsStencil: boolean;
16
29
  private readonly _root;
17
30
  private readonly _destroyListeners;
18
31
  private _version;
@@ -14,6 +14,19 @@ import { View } from './View.js';
14
14
  * the underlying canvas / texture dimensions change.
15
15
  */
16
16
  class RenderTarget {
17
+ /**
18
+ * Whether this target needs a stencil attachment for geometric stencil
19
+ * clipping ({@link RenderNode.clip} with a `Geometry` `clipShape`). Set by the
20
+ * WebGL2 backend when such a clip is rendered into an offscreen
21
+ * {@link RenderTexture}, so its framebuffer gets a depth/stencil renderbuffer;
22
+ * the WebGL2 on-screen root uses the default framebuffer's stencil (requested
23
+ * at context creation), so the flag only affects offscreen WebGL2 targets.
24
+ *
25
+ * The WebGPU backend does not consult this flag: it allocates a separate
26
+ * `depth24plus-stencil8` attachment per clipped target (root included) on
27
+ * demand, sized to the colour attachment's physical pixels.
28
+ */
29
+ needsStencil = false;
17
30
  _root;
18
31
  _destroyListeners = new Set();
19
32
  _version = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"RenderTarget.js","sources":["../../../../src/rendering/RenderTarget.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RenderTarget.js","sources":["../../../../src/rendering/RenderTarget.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import { StencilAttachmentMode } from './pass/RenderPassDescriptor.js';
2
+
1
3
  /**
2
4
  * A {@link RenderPass} that redirects rendering into an off-screen {@link RenderTarget}.
3
5
  *
@@ -17,6 +19,21 @@ class RenderTargetPass {
17
19
  this._clearColor = options.clearColor ?? null;
18
20
  }
19
21
  execute(backend) {
22
+ const coordinator = backend._passCoordinator;
23
+ if (coordinator) {
24
+ coordinator.withChildPass({
25
+ target: this._target,
26
+ view: this._view,
27
+ load: this._clearColor !== null ? 'clear' : 'load',
28
+ clearColor: this._clearColor,
29
+ stencil: StencilAttachmentMode.None,
30
+ }, () => {
31
+ this._callback(backend);
32
+ });
33
+ return;
34
+ }
35
+ // Legacy fallback for backends without a pass coordinator (e.g. test stubs):
36
+ // save the target/view, run the callback, then restore — even if it throws.
20
37
  const previousTarget = backend.renderTarget;
21
38
  const previousView = backend.view;
22
39
  backend.setRenderTarget(this._target);