@codexo/exojs 0.9.0 → 0.10.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 +44 -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/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/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 +38 -0
- package/dist/esm/rendering/TransformBuffer.js +116 -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 +34 -0
- package/dist/esm/rendering/gradient/Gradient.js +114 -0
- package/dist/esm/rendering/gradient/Gradient.js.map +1 -0
- package/dist/esm/rendering/gradient/LinearGradient.d.ts +10 -0
- package/dist/esm/rendering/gradient/LinearGradient.js +26 -0
- package/dist/esm/rendering/gradient/LinearGradient.js.map +1 -0
- package/dist/esm/rendering/gradient/RadialGradient.d.ts +10 -0
- package/dist/esm/rendering/gradient/RadialGradient.js +25 -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 +67 -0
- package/dist/esm/rendering/plan/RenderCommand.js +94 -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/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 +9 -0
- package/dist/esm/rendering/plan/RenderPlanPlayer.js +56 -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/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 +36 -0
- package/dist/esm/rendering/sprite/spriteMaterialSources.js +128 -0
- package/dist/esm/rendering/sprite/spriteMaterialSources.js.map +1 -0
- package/dist/esm/rendering/text/TextStyle.d.ts +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/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 +40 -0
- package/dist/esm/rendering/webgl2/WebGl2Backend.js +303 -22
- 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/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 +12 -0
- package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +214 -58
- 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.js +4 -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/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/webgpu/WebGpuBackend.d.ts +50 -0
- package/dist/esm/rendering/webgpu/WebGpuBackend.js +135 -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 +488 -74
- package/dist/esm/rendering/webgpu/WebGpuMeshRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuParticleRenderer.js +13 -17
- 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 +16 -0
- package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +335 -26
- 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.js +14 -12
- package/dist/esm/rendering/webgpu/WebGpuTextRenderer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts +16 -0
- package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js +57 -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/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 +5424 -2205
- package/dist/exo.esm.js.map +1 -1
- package/package.json +30 -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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ColorGradient } from '@/particles/distributions/ColorGradient';
|
|
2
2
|
import type { ParticleSystem } from '@/particles/ParticleSystem';
|
|
3
3
|
import { UpdateModule } from './UpdateModule';
|
|
4
4
|
import type { WgslContribution } from './WgslContribution';
|
|
@@ -12,8 +12,8 @@ import type { WgslContribution } from './WgslContribution';
|
|
|
12
12
|
* and sampled with linear filtering on the GPU.
|
|
13
13
|
*/
|
|
14
14
|
export declare class ColorOverLifetime extends UpdateModule {
|
|
15
|
-
gradient:
|
|
16
|
-
constructor(gradient:
|
|
15
|
+
gradient: ColorGradient;
|
|
16
|
+
constructor(gradient: ColorGradient);
|
|
17
17
|
apply(system: ParticleSystem, _dt: number): void;
|
|
18
18
|
wgsl(): WgslContribution;
|
|
19
19
|
uploadTextures(device: GPUDevice, textures: ReadonlyMap<string, GPUTexture>): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorOverLifetime.js","sources":["../../../../../src/particles/modules/ColorOverLifetime.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;AASA,MAAM,UAAU,GAAG,GAAG;AAEtB;;;;;;;;AAQG;AACG,MAAO,iBAAkB,SAAQ,YAAY,CAAA;AAC1C,IAAA,QAAQ;AAEf,IAAA,WAAA,CAAmB,
|
|
1
|
+
{"version":3,"file":"ColorOverLifetime.js","sources":["../../../../../src/particles/modules/ColorOverLifetime.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;AASA,MAAM,UAAU,GAAG,GAAG;AAEtB;;;;;;;;AAQG;AACG,MAAO,iBAAkB,SAAQ,YAAY,CAAA;AAC1C,IAAA,QAAQ;AAEf,IAAA,WAAA,CAAmB,QAAuB,EAAA;AACxC,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAC1B;IAEgB,KAAK,CAAC,MAAsB,EAAE,GAAW,EAAA;QACvD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM;AACtD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAE9B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;YAElC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;QACrC;IACF;IAEgB,IAAI,GAAA;QAClB,OAAO;AACL,YAAA,GAAG,EAAE,mBAAmB;YACxB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;AACtD,YAAA,IAAI,EAAE;;;;;;;;AAQC,YAAA,CAAA;SACR;IACH;IAEgB,cAAc,CAAC,MAAiB,EAAE,QAAyC,EAAA;QACzF,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;AAExC,QAAA,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB;QACF;QAEA,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC;AAC3C,QAAA,MAAM,OAAO,GAAG,IAAI,KAAK,EAAE;AAE3B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,CAAC,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC;YAE9B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;AAElC,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YAEf,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,GAAG;YAC7B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,GAAG;YAC7B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,GAAG;AAC7B,YAAA,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG;QAC7C;AAEA,QAAA,MAAM,CAAC,KAAK,CAAC,YAAY,CACvB,EAAE,OAAO,EAAE,EACX,IAAI,CAAC,MAAM,EACX,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,GAAG,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAC3D,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,CACxD;IACH;AACD;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ColorGradient } from '@/particles/distributions/ColorGradient';
|
|
2
2
|
import type { ParticleSystem } from '@/particles/ParticleSystem';
|
|
3
3
|
import { UpdateModule } from './UpdateModule';
|
|
4
4
|
import type { WgslContribution } from './WgslContribution';
|
|
@@ -16,10 +16,10 @@ import type { WgslContribution } from './WgslContribution';
|
|
|
16
16
|
* keep alpha controlled by lifetime.
|
|
17
17
|
*/
|
|
18
18
|
export declare class ColorOverSpeed extends UpdateModule {
|
|
19
|
-
gradient:
|
|
19
|
+
gradient: ColorGradient;
|
|
20
20
|
minSpeed: number;
|
|
21
21
|
maxSpeed: number;
|
|
22
|
-
constructor(gradient:
|
|
22
|
+
constructor(gradient: ColorGradient, minSpeed: number, maxSpeed: number);
|
|
23
23
|
apply(system: ParticleSystem, _dt: number): void;
|
|
24
24
|
wgsl(): WgslContribution;
|
|
25
25
|
writeUniforms(view: DataView, offset: number): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorOverSpeed.js","sources":["../../../../../src/particles/modules/ColorOverSpeed.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;AASA,MAAM,UAAU,GAAG,GAAG;AAEtB;;;;;;;;;;;;AAYG;AACG,MAAO,cAAe,SAAQ,YAAY,CAAA;AACvC,IAAA,QAAQ;AACR,IAAA,QAAQ;AACR,IAAA,QAAQ;AAEf,IAAA,WAAA,CAAmB,
|
|
1
|
+
{"version":3,"file":"ColorOverSpeed.js","sources":["../../../../../src/particles/modules/ColorOverSpeed.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import type { WgslContribution } from './WgslContribution';
|
|
|
10
10
|
* WebGPU backends), additionally implement {@link wgsl} and
|
|
11
11
|
* {@link writeUniforms}. Modules that declare a {@link WgslContribution}
|
|
12
12
|
* may also opt to declare a 1D texture binding via the `textures` field
|
|
13
|
-
* (used by `Curve` / `
|
|
13
|
+
* (used by `Curve` / `ColorGradient`-driven modules) — in which case
|
|
14
14
|
* {@link uploadTextures} runs once at compile time to upload the data.
|
|
15
15
|
*
|
|
16
16
|
* Implementation pattern (CPU-only module):
|
|
@@ -82,7 +82,7 @@ export declare abstract class UpdateModule {
|
|
|
82
82
|
*/
|
|
83
83
|
writeUniforms?(view: DataView, byteOffset: number, dt: number): void;
|
|
84
84
|
/**
|
|
85
|
-
* Upload texture data (Curve/
|
|
85
|
+
* Upload texture data (Curve/ColorGradient lookup tables) to the GPU at
|
|
86
86
|
* compile time. Receives the GPUDevice and a map of texture bindings
|
|
87
87
|
* keyed by the `name` in {@link WgslContribution.textures}. Called once
|
|
88
88
|
* after pipeline creation.
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* WebGPU backends), additionally implement {@link wgsl} and
|
|
9
9
|
* {@link writeUniforms}. Modules that declare a {@link WgslContribution}
|
|
10
10
|
* may also opt to declare a 1D texture binding via the `textures` field
|
|
11
|
-
* (used by `Curve` / `
|
|
11
|
+
* (used by `Curve` / `ColorGradient`-driven modules) — in which case
|
|
12
12
|
* {@link uploadTextures} runs once at compile time to upload the data.
|
|
13
13
|
*
|
|
14
14
|
* Implementation pattern (CPU-only module):
|
|
@@ -17,11 +17,11 @@ export interface WgslUniformField {
|
|
|
17
17
|
name: string;
|
|
18
18
|
type: WgslPrimitive;
|
|
19
19
|
}
|
|
20
|
-
/** A 1D texture binding (used by Curve /
|
|
20
|
+
/** A 1D texture binding (used by Curve / ColorGradient lookups). */
|
|
21
21
|
export interface WgslTextureBinding {
|
|
22
22
|
/** Field name within the module — referenced in WGSL as `u_${moduleKey}_${name}`. */
|
|
23
23
|
name: string;
|
|
24
|
-
/** WGSL texture format. `r32float` for Curve, `rgba8unorm` for
|
|
24
|
+
/** WGSL texture format. `r32float` for Curve, `rgba8unorm` for ColorGradient. */
|
|
25
25
|
format: 'r32float' | 'rgba8unorm';
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Rectangle } from '@/math/Rectangle';
|
|
2
|
+
import { View } from '@/rendering/View';
|
|
3
|
+
export interface CameraOptions {
|
|
4
|
+
center?: {
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
};
|
|
8
|
+
size?: {
|
|
9
|
+
width: number;
|
|
10
|
+
height: number;
|
|
11
|
+
};
|
|
12
|
+
viewport?: Rectangle;
|
|
13
|
+
rotation?: number;
|
|
14
|
+
zoom?: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* User-facing camera abstraction. Extends {@link View} with ergonomic
|
|
18
|
+
* construction defaults. Use as the default camera owned by
|
|
19
|
+
* {@link RenderingContext} or pass custom instances to
|
|
20
|
+
* `context.render(node, { view: myCamera })`.
|
|
21
|
+
*
|
|
22
|
+
* ```ts
|
|
23
|
+
* const cam = new Camera({ center: { x: 50, y: 50 }, size: { width: 800, height: 600 } });
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* Defaults: center `(0, 0)`, size `{ width: 0, height: 0 }`, full viewport
|
|
27
|
+
* `(0, 0, 1, 1)`, rotation `0`, zoom `1`.
|
|
28
|
+
*
|
|
29
|
+
* @stable
|
|
30
|
+
*/
|
|
31
|
+
export declare class Camera extends View {
|
|
32
|
+
constructor(options?: CameraOptions);
|
|
33
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { View } from './View.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* User-facing camera abstraction. Extends {@link View} with ergonomic
|
|
5
|
+
* construction defaults. Use as the default camera owned by
|
|
6
|
+
* {@link RenderingContext} or pass custom instances to
|
|
7
|
+
* `context.render(node, { view: myCamera })`.
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* const cam = new Camera({ center: { x: 50, y: 50 }, size: { width: 800, height: 600 } });
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* Defaults: center `(0, 0)`, size `{ width: 0, height: 0 }`, full viewport
|
|
14
|
+
* `(0, 0, 1, 1)`, rotation `0`, zoom `1`.
|
|
15
|
+
*
|
|
16
|
+
* @stable
|
|
17
|
+
*/
|
|
18
|
+
class Camera extends View {
|
|
19
|
+
constructor(options = {}) {
|
|
20
|
+
const centerX = options.center?.x ?? 0;
|
|
21
|
+
const centerY = options.center?.y ?? 0;
|
|
22
|
+
const width = options.size?.width ?? 0;
|
|
23
|
+
const height = options.size?.height ?? 0;
|
|
24
|
+
super(centerX, centerY, width, height);
|
|
25
|
+
if (options.viewport) {
|
|
26
|
+
this.viewport = options.viewport;
|
|
27
|
+
}
|
|
28
|
+
if (options.rotation && options.rotation !== 0) {
|
|
29
|
+
this.rotation = options.rotation;
|
|
30
|
+
}
|
|
31
|
+
if (options.zoom !== undefined && options.zoom !== 1) {
|
|
32
|
+
this.setZoom(options.zoom);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export { Camera };
|
|
38
|
+
//# sourceMappingURL=Camera.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Camera.js","sources":["../../../../src/rendering/Camera.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAWA;;;;;;;;;;;;;;AAcG;AACG,MAAO,MAAO,SAAQ,IAAI,CAAA;AAC9B,IAAA,WAAA,CAAmB,UAAyB,EAAE,EAAA;QAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;QACtC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;QACtC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;QAExC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC;AAEtC,QAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ;QAClC;QAEA,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ;QAClC;AAEA,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE;AACpD,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QAC5B;IACF;AACD;;;;"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { RenderPlanBuilder } from './plan/RenderPlanBuilder';
|
|
2
2
|
import { RenderNode } from './RenderNode';
|
|
3
3
|
/**
|
|
4
4
|
* Scene-graph node that owns child {@link RenderNode}s. Renders its
|
|
5
|
-
* subtree in document order
|
|
6
|
-
*
|
|
7
|
-
* enabled.
|
|
5
|
+
* subtree in document order with local `zIndex` ordering resolved inside
|
|
6
|
+
* the internal render plan at playback time.
|
|
8
7
|
*
|
|
9
8
|
* Bounds aggregate the local bounds + every visible child's bounds, so
|
|
10
9
|
* `container.getBounds()` always returns the smallest axis-aligned rectangle
|
|
@@ -21,18 +20,7 @@ import { RenderNode } from './RenderNode';
|
|
|
21
20
|
*/
|
|
22
21
|
export declare class Container extends RenderNode {
|
|
23
22
|
private readonly _children;
|
|
24
|
-
private _sortableChildren;
|
|
25
|
-
private _sortDirty;
|
|
26
|
-
private _nextChildOrder;
|
|
27
23
|
get children(): RenderNode[];
|
|
28
|
-
/**
|
|
29
|
-
* When `true`, children are re-sorted by `zIndex` (ascending; ties
|
|
30
|
-
* broken by add-order) before each render. Disabled by default to
|
|
31
|
-
* avoid the per-frame sort cost; enable on the few containers where
|
|
32
|
-
* z-ordering matters.
|
|
33
|
-
*/
|
|
34
|
-
get sortableChildren(): boolean;
|
|
35
|
-
set sortableChildren(sortableChildren: boolean);
|
|
36
24
|
get width(): number;
|
|
37
25
|
set width(value: number);
|
|
38
26
|
get height(): number;
|
|
@@ -64,17 +52,10 @@ export declare class Container extends RenderNode {
|
|
|
64
52
|
* the entire child list. Throws if the range is invalid.
|
|
65
53
|
*/
|
|
66
54
|
removeChildren(begin?: number, end?: number): this;
|
|
67
|
-
|
|
55
|
+
/** @internal */
|
|
56
|
+
protected _collectContent(builder: RenderPlanBuilder): void;
|
|
68
57
|
contains(x: number, y: number): boolean;
|
|
69
58
|
protected _invalidateChildrenTransform(): void;
|
|
70
59
|
updateBounds(): this;
|
|
71
60
|
destroy(): void;
|
|
72
|
-
/**
|
|
73
|
-
* Flag the child list as needing a re-sort before next render. Called
|
|
74
|
-
* automatically by `addChild*`, `removeChild*`, `swapChildren`, and
|
|
75
|
-
* `setChildIndex`; expose for callers that mutate `zIndex` directly.
|
|
76
|
-
*/
|
|
77
|
-
markSortDirty(): this;
|
|
78
|
-
sortChildren(): this;
|
|
79
|
-
private _sortChildrenIfNeeded;
|
|
80
61
|
}
|
|
@@ -4,9 +4,8 @@ import { RenderNode } from './RenderNode.js';
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Scene-graph node that owns child {@link RenderNode}s. Renders its
|
|
7
|
-
* subtree in document order
|
|
8
|
-
*
|
|
9
|
-
* enabled.
|
|
7
|
+
* subtree in document order with local `zIndex` ordering resolved inside
|
|
8
|
+
* the internal render plan at playback time.
|
|
10
9
|
*
|
|
11
10
|
* Bounds aggregate the local bounds + every visible child's bounds, so
|
|
12
11
|
* `container.getBounds()` always returns the smallest axis-aligned rectangle
|
|
@@ -23,27 +22,9 @@ import { RenderNode } from './RenderNode.js';
|
|
|
23
22
|
*/
|
|
24
23
|
class Container extends RenderNode {
|
|
25
24
|
_children = [];
|
|
26
|
-
_sortableChildren = false;
|
|
27
|
-
_sortDirty = false;
|
|
28
|
-
_nextChildOrder = 0;
|
|
29
25
|
get children() {
|
|
30
26
|
return this._children;
|
|
31
27
|
}
|
|
32
|
-
/**
|
|
33
|
-
* When `true`, children are re-sorted by `zIndex` (ascending; ties
|
|
34
|
-
* broken by add-order) before each render. Disabled by default to
|
|
35
|
-
* avoid the per-frame sort cost; enable on the few containers where
|
|
36
|
-
* z-ordering matters.
|
|
37
|
-
*/
|
|
38
|
-
get sortableChildren() {
|
|
39
|
-
return this._sortableChildren;
|
|
40
|
-
}
|
|
41
|
-
set sortableChildren(sortableChildren) {
|
|
42
|
-
if (this._sortableChildren !== sortableChildren) {
|
|
43
|
-
this._sortableChildren = sortableChildren;
|
|
44
|
-
this._sortDirty = sortableChildren;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
28
|
get width() {
|
|
48
29
|
return Math.abs(this.scale.x) * this.getBounds().width;
|
|
49
30
|
}
|
|
@@ -94,9 +75,7 @@ class Container extends RenderNode {
|
|
|
94
75
|
child.parent.removeChild(child);
|
|
95
76
|
}
|
|
96
77
|
child.parent = this;
|
|
97
|
-
child.setChildOrder(this._nextChildOrder++);
|
|
98
78
|
this._children.splice(index, 0, child);
|
|
99
|
-
this.markSortDirty();
|
|
100
79
|
this.invalidateCache();
|
|
101
80
|
child._invalidateSubtreeTransform();
|
|
102
81
|
this._invalidateBoundsCascade();
|
|
@@ -109,7 +88,6 @@ class Container extends RenderNode {
|
|
|
109
88
|
const secondIndex = this.getChildIndex(secondChild);
|
|
110
89
|
this._children[firstIndex] = secondChild;
|
|
111
90
|
this._children[secondIndex] = firstChild;
|
|
112
|
-
this.markSortDirty();
|
|
113
91
|
this.invalidateCache();
|
|
114
92
|
}
|
|
115
93
|
return this;
|
|
@@ -127,7 +105,6 @@ class Container extends RenderNode {
|
|
|
127
105
|
}
|
|
128
106
|
removeArrayItems(this._children, this.getChildIndex(child), 1);
|
|
129
107
|
this._children.splice(index, 0, child);
|
|
130
|
-
this.markSortDirty();
|
|
131
108
|
this.invalidateCache();
|
|
132
109
|
return this;
|
|
133
110
|
}
|
|
@@ -155,7 +132,6 @@ class Container extends RenderNode {
|
|
|
155
132
|
child._invalidateSubtreeTransform();
|
|
156
133
|
getActiveInteractionManager()?._notifyNodeRemoved(child);
|
|
157
134
|
}
|
|
158
|
-
this.markSortDirty();
|
|
159
135
|
this.invalidateCache();
|
|
160
136
|
return this;
|
|
161
137
|
}
|
|
@@ -181,25 +157,17 @@ class Container extends RenderNode {
|
|
|
181
157
|
}
|
|
182
158
|
}
|
|
183
159
|
removeArrayItems(this._children, begin, range);
|
|
184
|
-
this.markSortDirty();
|
|
185
160
|
this.invalidateCache();
|
|
186
161
|
return this;
|
|
187
162
|
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
163
|
+
/** @internal */
|
|
164
|
+
_collectContent(builder) {
|
|
165
|
+
if (this._children.length === 0) {
|
|
166
|
+
return;
|
|
191
167
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
return this;
|
|
168
|
+
for (let index = 0; index < this._children.length; index++) {
|
|
169
|
+
this._children[index]._collect(builder, index);
|
|
195
170
|
}
|
|
196
|
-
this.renderVisualContent(backend, () => {
|
|
197
|
-
this._sortChildrenIfNeeded();
|
|
198
|
-
for (const child of this._children) {
|
|
199
|
-
child.render(backend);
|
|
200
|
-
}
|
|
201
|
-
});
|
|
202
|
-
return this;
|
|
203
171
|
}
|
|
204
172
|
contains(x, y) {
|
|
205
173
|
return this._children.some(child => child.contains(x, y));
|
|
@@ -222,37 +190,6 @@ class Container extends RenderNode {
|
|
|
222
190
|
this.removeChildren();
|
|
223
191
|
super.destroy();
|
|
224
192
|
}
|
|
225
|
-
/**
|
|
226
|
-
* Flag the child list as needing a re-sort before next render. Called
|
|
227
|
-
* automatically by `addChild*`, `removeChild*`, `swapChildren`, and
|
|
228
|
-
* `setChildIndex`; expose for callers that mutate `zIndex` directly.
|
|
229
|
-
*/
|
|
230
|
-
markSortDirty() {
|
|
231
|
-
if (this._sortableChildren) {
|
|
232
|
-
this._sortDirty = true;
|
|
233
|
-
}
|
|
234
|
-
return this;
|
|
235
|
-
}
|
|
236
|
-
sortChildren() {
|
|
237
|
-
if (!this._sortableChildren || !this._sortDirty || this._children.length <= 1) {
|
|
238
|
-
this._sortDirty = false;
|
|
239
|
-
return this;
|
|
240
|
-
}
|
|
241
|
-
this._children.sort((left, right) => {
|
|
242
|
-
if (left.zIndex === right.zIndex) {
|
|
243
|
-
return left.childOrder - right.childOrder;
|
|
244
|
-
}
|
|
245
|
-
return left.zIndex - right.zIndex;
|
|
246
|
-
});
|
|
247
|
-
this._sortDirty = false;
|
|
248
|
-
this.invalidateCache();
|
|
249
|
-
return this;
|
|
250
|
-
}
|
|
251
|
-
_sortChildrenIfNeeded() {
|
|
252
|
-
if (this._sortableChildren && this._sortDirty) {
|
|
253
|
-
this.sortChildren();
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
193
|
}
|
|
257
194
|
|
|
258
195
|
export { Container };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Container.js","sources":["../../../../src/rendering/Container.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAMA
|
|
1
|
+
{"version":3,"file":"Container.js","sources":["../../../../src/rendering/Container.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { Color } from '@/core/Color';
|
|
2
2
|
import { BlendModes } from '@/rendering/types';
|
|
3
|
-
import type {
|
|
3
|
+
import type { RenderPlanBuilder } from './plan/RenderPlanBuilder';
|
|
4
4
|
import { RenderNode } from './RenderNode';
|
|
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
|
*/
|
|
@@ -27,12 +26,11 @@ export declare class Drawable extends RenderNode {
|
|
|
27
26
|
* Invalidates the render cache when the blend mode actually changes.
|
|
28
27
|
*/
|
|
29
28
|
setBlendMode(blendMode: BlendModes): this;
|
|
30
|
-
/**
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
render(backend: RenderBackend): this;
|
|
29
|
+
/** @internal */
|
|
30
|
+
protected _collectContent(builder: RenderPlanBuilder): void;
|
|
31
|
+
/** @internal */
|
|
32
|
+
_isDrawableForRenderPlan(): boolean;
|
|
33
|
+
/** @internal */
|
|
34
|
+
_renderPlanGetBlendMode(): BlendModes;
|
|
37
35
|
destroy(): void;
|
|
38
36
|
}
|
|
@@ -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
|
/**
|