@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.
- package/CHANGELOG.md +127 -0
- package/README.md +14 -14
- package/dist/esm/core/Application.d.ts +25 -6
- package/dist/esm/core/Application.js +42 -8
- package/dist/esm/core/Application.js.map +1 -1
- package/dist/esm/core/Perf.d.ts +23 -0
- package/dist/esm/core/Perf.js +49 -0
- package/dist/esm/core/Perf.js.map +1 -0
- package/dist/esm/core/Scene.d.ts +8 -8
- package/dist/esm/core/Scene.js +7 -7
- package/dist/esm/core/Scene.js.map +1 -1
- package/dist/esm/core/SceneManager.js +2 -2
- package/dist/esm/core/SceneManager.js.map +1 -1
- package/dist/esm/core/SceneNode.d.ts +0 -3
- package/dist/esm/core/SceneNode.js +0 -9
- package/dist/esm/core/SceneNode.js.map +1 -1
- package/dist/esm/core/capabilities.d.ts +2 -0
- package/dist/esm/core/capabilities.js +15 -0
- package/dist/esm/core/capabilities.js.map +1 -1
- package/dist/esm/core/dev.d.ts +21 -0
- package/dist/esm/core/dev.js +18 -0
- package/dist/esm/core/dev.js.map +1 -0
- package/dist/esm/core/index.d.ts +1 -0
- package/dist/esm/core/types.d.ts +1 -1
- package/dist/esm/core/utils.d.ts +12 -0
- package/dist/esm/core/utils.js +18 -1
- package/dist/esm/core/utils.js.map +1 -1
- package/dist/esm/index.js +14 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/particles/ParticleSystem.d.ts +8 -5
- package/dist/esm/particles/ParticleSystem.js +9 -5
- package/dist/esm/particles/ParticleSystem.js.map +1 -1
- package/dist/esm/particles/distributions/{Gradient.d.ts → ColorGradient.d.ts} +5 -5
- package/dist/esm/particles/distributions/{Gradient.js → ColorGradient.js} +5 -5
- package/dist/esm/particles/distributions/ColorGradient.js.map +1 -0
- package/dist/esm/particles/distributions/Distribution.d.ts +2 -2
- package/dist/esm/particles/distributions/index.d.ts +2 -2
- package/dist/esm/particles/gpu/ParticleGpuState.js +1 -1
- package/dist/esm/particles/modules/AlphaFadeOverLifetime.d.ts +2 -2
- package/dist/esm/particles/modules/AlphaFadeOverLifetime.js +5 -1
- package/dist/esm/particles/modules/AlphaFadeOverLifetime.js.map +1 -1
- package/dist/esm/particles/modules/ColorOverLifetime.d.ts +3 -3
- package/dist/esm/particles/modules/ColorOverLifetime.js.map +1 -1
- package/dist/esm/particles/modules/ColorOverSpeed.d.ts +3 -3
- package/dist/esm/particles/modules/ColorOverSpeed.js.map +1 -1
- package/dist/esm/particles/modules/UpdateModule.d.ts +2 -2
- package/dist/esm/particles/modules/UpdateModule.js +1 -1
- package/dist/esm/particles/modules/WgslContribution.d.ts +2 -2
- package/dist/esm/rendering/Camera.d.ts +33 -0
- package/dist/esm/rendering/Camera.js +38 -0
- package/dist/esm/rendering/Camera.js.map +1 -0
- package/dist/esm/rendering/Container.d.ts +5 -24
- package/dist/esm/rendering/Container.js +8 -71
- package/dist/esm/rendering/Container.js.map +1 -1
- package/dist/esm/rendering/Drawable.d.ts +8 -10
- package/dist/esm/rendering/Drawable.js +12 -20
- package/dist/esm/rendering/Drawable.js.map +1 -1
- package/dist/esm/rendering/RenderBackend.d.ts +18 -0
- package/dist/esm/rendering/RenderNode.d.ts +81 -8
- package/dist/esm/rendering/RenderNode.js +121 -144
- package/dist/esm/rendering/RenderNode.js.map +1 -1
- package/dist/esm/rendering/RenderTarget.d.ts +13 -0
- package/dist/esm/rendering/RenderTarget.js +13 -0
- package/dist/esm/rendering/RenderTarget.js.map +1 -1
- package/dist/esm/rendering/RenderTargetPass.js +17 -0
- package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
- package/dist/esm/rendering/RenderingContext.d.ts +87 -0
- package/dist/esm/rendering/RenderingContext.js +157 -0
- package/dist/esm/rendering/RenderingContext.js.map +1 -0
- package/dist/esm/rendering/TransformBuffer.d.ts +82 -0
- package/dist/esm/rendering/TransformBuffer.js +180 -0
- package/dist/esm/rendering/TransformBuffer.js.map +1 -0
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js +5 -12
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
- package/dist/esm/rendering/geometry/Geometry.d.ts +40 -0
- package/dist/esm/rendering/geometry/Geometry.js +228 -0
- package/dist/esm/rendering/geometry/Geometry.js.map +1 -0
- package/dist/esm/rendering/geometry/GeometryAttribute.d.ts +32 -0
- package/dist/esm/rendering/geometry/QuadGeometry.d.ts +5 -0
- package/dist/esm/rendering/gradient/Gradient.d.ts +67 -0
- package/dist/esm/rendering/gradient/Gradient.js +160 -0
- package/dist/esm/rendering/gradient/Gradient.js.map +1 -0
- package/dist/esm/rendering/gradient/LinearGradient.d.ts +18 -0
- package/dist/esm/rendering/gradient/LinearGradient.js +49 -0
- package/dist/esm/rendering/gradient/LinearGradient.js.map +1 -0
- package/dist/esm/rendering/gradient/RadialGradient.d.ts +18 -0
- package/dist/esm/rendering/gradient/RadialGradient.js +44 -0
- package/dist/esm/rendering/gradient/RadialGradient.js.map +1 -0
- package/dist/esm/rendering/index.d.ts +16 -2
- package/dist/esm/rendering/material/Material.d.ts +114 -0
- package/dist/esm/rendering/material/Material.js +111 -0
- package/dist/esm/rendering/material/Material.js.map +1 -0
- package/dist/esm/rendering/material/MaterialKey.d.ts +18 -0
- package/dist/esm/rendering/material/MaterialKey.js +82 -0
- package/dist/esm/rendering/material/MaterialKey.js.map +1 -0
- package/dist/esm/rendering/material/MeshMaterial.d.ts +16 -0
- package/dist/esm/rendering/material/MeshMaterial.js +21 -0
- package/dist/esm/rendering/material/MeshMaterial.js.map +1 -0
- package/dist/esm/rendering/{mesh/MeshShader.d.ts → material/ShaderSource.d.ts} +29 -62
- package/dist/esm/rendering/{mesh/MeshShader.js → material/ShaderSource.js} +35 -62
- package/dist/esm/rendering/material/ShaderSource.js.map +1 -0
- package/dist/esm/rendering/material/SpriteMaterial.d.ts +15 -0
- package/dist/esm/rendering/material/SpriteMaterial.js +20 -0
- package/dist/esm/rendering/material/SpriteMaterial.js.map +1 -0
- package/dist/esm/rendering/mesh/Mesh.d.ts +29 -12
- package/dist/esm/rendering/mesh/Mesh.js +122 -3
- package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
- package/dist/esm/rendering/pass/RenderPassCoordinator.d.ts +63 -0
- package/dist/esm/rendering/pass/RenderPassDescriptor.d.ts +48 -0
- package/dist/esm/rendering/pass/RenderPassDescriptor.js +16 -0
- package/dist/esm/rendering/pass/RenderPassDescriptor.js.map +1 -0
- package/dist/esm/rendering/plan/RenderCommand.d.ts +86 -0
- package/dist/esm/rendering/plan/RenderCommand.js +127 -0
- package/dist/esm/rendering/plan/RenderCommand.js.map +1 -0
- package/dist/esm/rendering/plan/RenderEffectExecutor.d.ts +10 -0
- package/dist/esm/rendering/plan/RenderEffectExecutor.js +159 -0
- package/dist/esm/rendering/plan/RenderEffectExecutor.js.map +1 -0
- package/dist/esm/rendering/plan/RenderInstruction.d.ts +51 -0
- package/dist/esm/rendering/plan/RenderInstruction.js +45 -0
- package/dist/esm/rendering/plan/RenderInstruction.js.map +1 -0
- package/dist/esm/rendering/plan/RenderPlan.d.ts +23 -0
- package/dist/esm/rendering/plan/RenderPlan.js +12 -0
- package/dist/esm/rendering/plan/RenderPlan.js.map +1 -0
- package/dist/esm/rendering/plan/RenderPlanBuilder.d.ts +31 -0
- package/dist/esm/rendering/plan/RenderPlanBuilder.js +242 -0
- package/dist/esm/rendering/plan/RenderPlanBuilder.js.map +1 -0
- package/dist/esm/rendering/plan/RenderPlanOptimizer.d.ts +10 -0
- package/dist/esm/rendering/plan/RenderPlanOptimizer.js +180 -0
- package/dist/esm/rendering/plan/RenderPlanOptimizer.js.map +1 -0
- package/dist/esm/rendering/plan/RenderPlanPlayer.d.ts +13 -0
- package/dist/esm/rendering/plan/RenderPlanPlayer.js +107 -0
- package/dist/esm/rendering/plan/RenderPlanPlayer.js.map +1 -0
- package/dist/esm/rendering/plan/RenderScope.d.ts +70 -0
- package/dist/esm/rendering/plan/RenderScope.js +16 -0
- package/dist/esm/rendering/plan/RenderScope.js.map +1 -0
- package/dist/esm/rendering/plan/playRenderTree.d.ts +4 -0
- package/dist/esm/rendering/plan/playRenderTree.js +19 -0
- package/dist/esm/rendering/plan/playRenderTree.js.map +1 -0
- package/dist/esm/rendering/primitives/Graphics.d.ts +70 -5
- package/dist/esm/rendering/primitives/Graphics.js +172 -14
- package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
- package/dist/esm/rendering/sprite/Sprite.d.ts +22 -1
- package/dist/esm/rendering/sprite/Sprite.js +33 -2
- package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
- package/dist/esm/rendering/sprite/spriteMaterialSources.d.ts +41 -0
- package/dist/esm/rendering/sprite/spriteMaterialSources.js +149 -0
- package/dist/esm/rendering/sprite/spriteMaterialSources.js.map +1 -0
- package/dist/esm/rendering/text/BitmapText.d.ts +2 -0
- package/dist/esm/rendering/text/BitmapText.js +8 -1
- package/dist/esm/rendering/text/BitmapText.js.map +1 -1
- package/dist/esm/rendering/text/BmFont.js +3 -0
- package/dist/esm/rendering/text/BmFont.js.map +1 -1
- package/dist/esm/rendering/text/GlyphSdf.d.ts +14 -0
- package/dist/esm/rendering/text/GlyphSdf.js +41 -11
- package/dist/esm/rendering/text/GlyphSdf.js.map +1 -1
- package/dist/esm/rendering/text/TextStyle.d.ts +6 -1
- package/dist/esm/rendering/text/TextStyle.js +1 -1
- package/dist/esm/rendering/text/TextStyle.js.map +1 -1
- package/dist/esm/rendering/texture/DataTexture.d.ts +5 -0
- package/dist/esm/rendering/texture/DataTexture.js +7 -0
- package/dist/esm/rendering/texture/DataTexture.js.map +1 -1
- package/dist/esm/rendering/texture/RenderTexture.js.map +1 -1
- package/dist/esm/rendering/video/Video.d.ts +3 -7
- package/dist/esm/rendering/video/Video.js +3 -8
- package/dist/esm/rendering/video/Video.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +62 -0
- package/dist/esm/rendering/webgl2/WebGl2Backend.js +352 -21
- package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.d.ts +22 -2
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js +404 -112
- package/dist/esm/rendering/webgl2/WebGl2MeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.d.ts +8 -0
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js +8 -0
- package/dist/esm/rendering/webgl2/WebGl2ParticleRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2PassCoordinator.d.ts +57 -0
- package/dist/esm/rendering/webgl2/WebGl2PassCoordinator.js +79 -0
- package/dist/esm/rendering/webgl2/WebGl2PassCoordinator.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts +14 -0
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +257 -78
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.d.ts +34 -0
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js +169 -0
- package/dist/esm/rendering/webgl2/WebGl2StencilClipper.js.map +1 -0
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.d.ts +7 -0
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js +11 -0
- package/dist/esm/rendering/webgl2/WebGl2TextRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/glsl/mesh.frag.js +1 -1
- package/dist/esm/rendering/webgl2/glsl/mesh.vert.js +1 -1
- package/dist/esm/rendering/webgl2/glsl/sprite.vert.js +1 -1
- package/dist/esm/rendering/webgl2/glsl/stencil-clip.frag.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/stencil-clip.frag.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/stencil-clip.vert.js +4 -0
- package/dist/esm/rendering/webgl2/glsl/stencil-clip.vert.js.map +1 -0
- package/dist/esm/rendering/webgl2/glsl/text-color.frag.js +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +63 -0
- package/dist/esm/rendering/webgpu/WebGpuBackend.js +180 -19
- package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js +22 -17
- package/dist/esm/rendering/webgpu/WebGpuMaskCompositor.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.d.ts +24 -0
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js +524 -98
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.d.ts +7 -0
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js +24 -22
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.d.ts +141 -0
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js +270 -0
- package/dist/esm/rendering/webgpu/WebGpuPassCoordinator.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +25 -1
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +430 -76
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.d.ts +57 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js +257 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilClipper.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilState.d.ts +14 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilState.js +36 -0
- package/dist/esm/rendering/webgpu/WebGpuStencilState.js.map +1 -0
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.d.ts +7 -0
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js +30 -19
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts +48 -0
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js +103 -0
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js.map +1 -0
- package/dist/esm/resources/JsonStore.d.ts +18 -0
- package/dist/esm/resources/JsonStore.js +62 -0
- package/dist/esm/resources/JsonStore.js.map +1 -0
- package/dist/esm/resources/Loader.js +1 -1
- package/dist/esm/resources/Loader.js.map +1 -1
- package/dist/esm/resources/factories/ImageFactory.d.ts +14 -8
- package/dist/esm/resources/factories/ImageFactory.js +13 -6
- package/dist/esm/resources/factories/ImageFactory.js.map +1 -1
- package/dist/esm/resources/factories/TextureFactory.d.ts +4 -4
- package/dist/esm/resources/factories/TextureFactory.js +8 -4
- package/dist/esm/resources/factories/TextureFactory.js.map +1 -1
- package/dist/esm/resources/index.d.ts +1 -0
- package/dist/exo.esm.js +6326 -2350
- package/dist/exo.esm.js.map +1 -1
- package/package.json +34 -24
- package/dist/esm/particles/distributions/Gradient.js.map +0 -1
- package/dist/esm/rendering/mesh/MeshShader.js.map +0 -1
- package/dist/esm/vendor/webgl-debug.js +0 -1160
- 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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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
|
|
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
|
|
56
|
-
*
|
|
57
|
-
*
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
21
|
-
*
|
|
22
|
-
*
|
|
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
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
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":";;;;;AAMA;;;;;;;;;AASG;MACU,YAAY,CAAA;
|
|
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);
|