@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
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Geometric clip kind for a {@link RenderNode}'s `clip`/`clipShape`. Distinct
|
|
3
|
+
* from `maskSource` (alpha/visibility masking): `Rect` uses the GPU scissor
|
|
4
|
+
* fast path, `Stencil` writes a {@link Geometry} silhouette into the stencil
|
|
5
|
+
* buffer. `maskSource` continues to drive the separate alpha-mask machinery.
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
var ClipKind;
|
|
9
|
+
(function (ClipKind) {
|
|
10
|
+
ClipKind[ClipKind["None"] = 0] = "None";
|
|
11
|
+
ClipKind[ClipKind["Rect"] = 1] = "Rect";
|
|
12
|
+
ClipKind[ClipKind["Stencil"] = 2] = "Stencil";
|
|
13
|
+
})(ClipKind || (ClipKind = {}));
|
|
14
|
+
|
|
15
|
+
export { ClipKind };
|
|
16
|
+
//# sourceMappingURL=RenderScope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RenderScope.js","sources":["../../../../../src/rendering/plan/RenderScope.ts"],"sourcesContent":[null],"names":[],"mappings":"AAQA;;;;;;AAMG;IACe;AAAlB,CAAA,UAAkB,QAAQ,EAAA;AACxB,IAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,QAAA,CAAA,QAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACT,CAAC,EAJiB,QAAQ,KAAR,QAAQ,GAAA,EAAA,CAAA,CAAA;;;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { RenderBackend } from '@/rendering/RenderBackend';
|
|
2
|
+
import type { RenderNode } from '@/rendering/RenderNode';
|
|
3
|
+
/** @internal — single source of truth for plan build→optimize→play. */
|
|
4
|
+
export declare function playRenderTree(node: RenderNode, backend: RenderBackend): void;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { RenderPlanBuilder } from './RenderPlanBuilder.js';
|
|
2
|
+
import { RenderPlanOptimizer } from './RenderPlanOptimizer.js';
|
|
3
|
+
import { RenderPlanPlayer } from './RenderPlanPlayer.js';
|
|
4
|
+
|
|
5
|
+
/** @internal — single source of truth for plan build→optimize→play. */
|
|
6
|
+
function playRenderTree(node, backend) {
|
|
7
|
+
const builder = RenderPlanBuilder.acquire();
|
|
8
|
+
try {
|
|
9
|
+
const plan = builder.build(node, backend);
|
|
10
|
+
RenderPlanOptimizer.optimize(plan);
|
|
11
|
+
RenderPlanPlayer.play(plan, backend);
|
|
12
|
+
}
|
|
13
|
+
finally {
|
|
14
|
+
RenderPlanBuilder.release(builder);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { playRenderTree };
|
|
19
|
+
//# sourceMappingURL=playRenderTree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playRenderTree.js","sources":["../../../../../src/rendering/plan/playRenderTree.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAOA;AACM,SAAU,cAAc,CAAC,IAAgB,EAAE,OAAsB,EAAA;AACrE,IAAA,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,EAAE;AAE3C,IAAA,IAAI;QACF,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC;AAEzC,QAAA,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC;AAClC,QAAA,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;IACtC;YAAU;AACR,QAAA,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC;IACpC;AACF;;;;"}
|
|
@@ -1,32 +1,79 @@
|
|
|
1
1
|
import { Color } from '@/core/Color';
|
|
2
2
|
import { Vector } from '@/math/Vector';
|
|
3
3
|
import { Container } from '@/rendering/Container';
|
|
4
|
+
import type { Gradient } from '@/rendering/gradient/Gradient';
|
|
4
5
|
import { Mesh } from '@/rendering/mesh/Mesh';
|
|
5
6
|
import type { RenderNode } from '@/rendering/RenderNode';
|
|
6
7
|
/**
|
|
7
8
|
* Immediate-mode 2D shape API backed by {@link Mesh} children.
|
|
8
9
|
*
|
|
9
10
|
* Each draw call (e.g. `drawCircle`, `drawRectangle`, `drawLine`) appends a
|
|
10
|
-
* new {@link Mesh} child
|
|
11
|
+
* new {@link Mesh} child painted with the active fill or stroke style. A style
|
|
12
|
+
* is either a solid {@link Color} or a {@link Gradient}, assigned through
|
|
13
|
+
* {@link fillStyle} / {@link strokeStyle}. The {@link fillColor} /
|
|
14
|
+
* {@link lineColor} accessors are color-only conveniences over those styles.
|
|
11
15
|
* The active `lineWidth` controls stroke thickness for path and outline draws.
|
|
12
16
|
* Path commands (`moveTo`, `lineTo`, `quadraticCurveTo`, etc.) track a cursor
|
|
13
17
|
* point and flush a Mesh on each segment.
|
|
14
18
|
*
|
|
19
|
+
* Gradient styles are rasterized once to a {@link DataTexture} via
|
|
20
|
+
* {@link Gradient.toTexture} and sampled across each shape's local bounding
|
|
21
|
+
* box, so {@link LinearGradient} and {@link RadialGradient} render through the
|
|
22
|
+
* same texture path as a textured Mesh. The textures are owned by the Graphics
|
|
23
|
+
* and released on {@link clear} / {@link destroy}.
|
|
24
|
+
*
|
|
15
25
|
* Call {@link clear} to remove all child meshes and reset pen state. Because
|
|
16
26
|
* each shape is a separate Mesh, `Graphics` inherits full filter, blend,
|
|
17
27
|
* tint, and mask support from {@link Container}.
|
|
18
28
|
*/
|
|
19
29
|
export declare class Graphics extends Container {
|
|
20
30
|
private _lineWidth;
|
|
21
|
-
private
|
|
22
|
-
private
|
|
31
|
+
private readonly _fillColor;
|
|
32
|
+
private readonly _lineColor;
|
|
33
|
+
private _fillStyle;
|
|
34
|
+
private _strokeStyle;
|
|
35
|
+
private _fillStyleTexture;
|
|
36
|
+
private _strokeStyleTexture;
|
|
37
|
+
private readonly _ownedTextures;
|
|
23
38
|
private _currentPoint;
|
|
24
39
|
get lineWidth(): number;
|
|
25
40
|
set lineWidth(lineWidth: number);
|
|
41
|
+
/** Solid stroke color slot: the last solid color assigned to the stroke. */
|
|
26
42
|
get lineColor(): Color;
|
|
43
|
+
/**
|
|
44
|
+
* Convenience solid-color setter for the stroke. Copies `lineColor` into the
|
|
45
|
+
* color slot and makes it the active {@link strokeStyle}, replacing any
|
|
46
|
+
* gradient stroke style.
|
|
47
|
+
*/
|
|
27
48
|
set lineColor(lineColor: Color);
|
|
49
|
+
/** Solid fill color slot: the last solid color assigned to the fill. */
|
|
28
50
|
get fillColor(): Color;
|
|
51
|
+
/**
|
|
52
|
+
* Convenience solid-color setter for the fill. Copies `fillColor` into the
|
|
53
|
+
* color slot and makes it the active {@link fillStyle}, replacing any
|
|
54
|
+
* gradient fill style.
|
|
55
|
+
*/
|
|
29
56
|
set fillColor(fillColor: Color);
|
|
57
|
+
/** Active fill style: a solid {@link Color} or a {@link Gradient}. */
|
|
58
|
+
get fillStyle(): Color | Gradient;
|
|
59
|
+
/**
|
|
60
|
+
* Set the fill style. Accepts a solid {@link Color}, a {@link Gradient}
|
|
61
|
+
* (cloned on assignment and rasterized lazily on first fill), or `null` to
|
|
62
|
+
* revert to the solid color held by {@link fillColor}. A {@link Color} value
|
|
63
|
+
* is copied into the {@link fillColor} slot; the most recently assigned style
|
|
64
|
+
* wins.
|
|
65
|
+
*/
|
|
66
|
+
set fillStyle(style: Color | Gradient | null);
|
|
67
|
+
/** Active stroke style: a solid {@link Color} or a {@link Gradient}. */
|
|
68
|
+
get strokeStyle(): Color | Gradient;
|
|
69
|
+
/**
|
|
70
|
+
* Set the stroke style. Accepts a solid {@link Color}, a {@link Gradient}
|
|
71
|
+
* (cloned on assignment and rasterized lazily on first stroke), or `null` to
|
|
72
|
+
* revert to the solid color held by {@link lineColor}. A {@link Color} value
|
|
73
|
+
* is copied into the {@link lineColor} slot; the most recently assigned style
|
|
74
|
+
* wins.
|
|
75
|
+
*/
|
|
76
|
+
set strokeStyle(style: Color | Gradient | null);
|
|
30
77
|
get currentPoint(): Vector;
|
|
31
78
|
getChildAt(index: number): Mesh;
|
|
32
79
|
addChild(child: RenderNode): this;
|
|
@@ -64,8 +111,26 @@ export declare class Graphics extends Container {
|
|
|
64
111
|
* `innerRadius` defaults to half of `radius`.
|
|
65
112
|
*/
|
|
66
113
|
drawStar(centerX: number, centerY: number, points: number, radius: number, innerRadius?: number, rotation?: number): this;
|
|
67
|
-
/** Remove all child meshes and reset pen state (position,
|
|
114
|
+
/** Remove all child meshes and reset pen state (position, fill/stroke styles, line width). */
|
|
68
115
|
clear(): this;
|
|
69
116
|
destroy(): void;
|
|
70
|
-
|
|
117
|
+
/**
|
|
118
|
+
* Resolve an assigned style into the stored paint. A {@link Color} is copied
|
|
119
|
+
* into the solid `colorSlot` (keeping the {@link fillColor} / {@link lineColor}
|
|
120
|
+
* convenience getters in sync) and that slot is returned; `null` reverts to
|
|
121
|
+
* the slot; a {@link Gradient} is cloned so later external mutation cannot
|
|
122
|
+
* change the stored paint.
|
|
123
|
+
*/
|
|
124
|
+
private _resolveStyle;
|
|
125
|
+
private _createFillMesh;
|
|
126
|
+
private _createStrokeMesh;
|
|
127
|
+
private _createSolidMesh;
|
|
128
|
+
/**
|
|
129
|
+
* Build a textured mesh whose UVs span the shape's local bounding box, so the
|
|
130
|
+
* gradient texture samples across the filled/stroked geometry. The default
|
|
131
|
+
* white tint and vertex color leave the sampled gradient color unmodulated.
|
|
132
|
+
*/
|
|
133
|
+
private _createGradientMesh;
|
|
134
|
+
private _rasterizeGradient;
|
|
135
|
+
private _destroyOwnedTextures;
|
|
71
136
|
}
|
|
@@ -4,24 +4,45 @@ import { quadraticCurveTo, bezierCurveTo, tau, clamp } from '../../math/utils.js
|
|
|
4
4
|
import { Vector } from '../../math/Vector.js';
|
|
5
5
|
import { Container } from '../Container.js';
|
|
6
6
|
import { Mesh } from '../mesh/Mesh.js';
|
|
7
|
+
import { ScaleModes } from '../types.js';
|
|
7
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Edge length of the square gradient texture rasterized for gradient paints.
|
|
11
|
+
* The full 2D UV field is baked so both linear and radial gradients map across
|
|
12
|
+
* the filled shape's bounding box without per-axis special-casing.
|
|
13
|
+
*/
|
|
14
|
+
const gradientTextureSize = 256;
|
|
8
15
|
/**
|
|
9
16
|
* Immediate-mode 2D shape API backed by {@link Mesh} children.
|
|
10
17
|
*
|
|
11
18
|
* Each draw call (e.g. `drawCircle`, `drawRectangle`, `drawLine`) appends a
|
|
12
|
-
* new {@link Mesh} child
|
|
19
|
+
* new {@link Mesh} child painted with the active fill or stroke style. A style
|
|
20
|
+
* is either a solid {@link Color} or a {@link Gradient}, assigned through
|
|
21
|
+
* {@link fillStyle} / {@link strokeStyle}. The {@link fillColor} /
|
|
22
|
+
* {@link lineColor} accessors are color-only conveniences over those styles.
|
|
13
23
|
* The active `lineWidth` controls stroke thickness for path and outline draws.
|
|
14
24
|
* Path commands (`moveTo`, `lineTo`, `quadraticCurveTo`, etc.) track a cursor
|
|
15
25
|
* point and flush a Mesh on each segment.
|
|
16
26
|
*
|
|
27
|
+
* Gradient styles are rasterized once to a {@link DataTexture} via
|
|
28
|
+
* {@link Gradient.toTexture} and sampled across each shape's local bounding
|
|
29
|
+
* box, so {@link LinearGradient} and {@link RadialGradient} render through the
|
|
30
|
+
* same texture path as a textured Mesh. The textures are owned by the Graphics
|
|
31
|
+
* and released on {@link clear} / {@link destroy}.
|
|
32
|
+
*
|
|
17
33
|
* Call {@link clear} to remove all child meshes and reset pen state. Because
|
|
18
34
|
* each shape is a separate Mesh, `Graphics` inherits full filter, blend,
|
|
19
35
|
* tint, and mask support from {@link Container}.
|
|
20
36
|
*/
|
|
21
37
|
class Graphics extends Container {
|
|
22
38
|
_lineWidth = 0;
|
|
23
|
-
_lineColor = new Color();
|
|
24
39
|
_fillColor = new Color();
|
|
40
|
+
_lineColor = new Color();
|
|
41
|
+
_fillStyle = this._fillColor;
|
|
42
|
+
_strokeStyle = this._lineColor;
|
|
43
|
+
_fillStyleTexture = null;
|
|
44
|
+
_strokeStyleTexture = null;
|
|
45
|
+
_ownedTextures = new Set();
|
|
25
46
|
_currentPoint = new Vector(0, 0);
|
|
26
47
|
get lineWidth() {
|
|
27
48
|
return this._lineWidth;
|
|
@@ -29,17 +50,59 @@ class Graphics extends Container {
|
|
|
29
50
|
set lineWidth(lineWidth) {
|
|
30
51
|
this._lineWidth = lineWidth;
|
|
31
52
|
}
|
|
53
|
+
/** Solid stroke color slot: the last solid color assigned to the stroke. */
|
|
32
54
|
get lineColor() {
|
|
33
55
|
return this._lineColor;
|
|
34
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Convenience solid-color setter for the stroke. Copies `lineColor` into the
|
|
59
|
+
* color slot and makes it the active {@link strokeStyle}, replacing any
|
|
60
|
+
* gradient stroke style.
|
|
61
|
+
*/
|
|
35
62
|
set lineColor(lineColor) {
|
|
36
|
-
this.
|
|
63
|
+
this.strokeStyle = lineColor;
|
|
37
64
|
}
|
|
65
|
+
/** Solid fill color slot: the last solid color assigned to the fill. */
|
|
38
66
|
get fillColor() {
|
|
39
67
|
return this._fillColor;
|
|
40
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Convenience solid-color setter for the fill. Copies `fillColor` into the
|
|
71
|
+
* color slot and makes it the active {@link fillStyle}, replacing any
|
|
72
|
+
* gradient fill style.
|
|
73
|
+
*/
|
|
41
74
|
set fillColor(fillColor) {
|
|
42
|
-
this.
|
|
75
|
+
this.fillStyle = fillColor;
|
|
76
|
+
}
|
|
77
|
+
/** Active fill style: a solid {@link Color} or a {@link Gradient}. */
|
|
78
|
+
get fillStyle() {
|
|
79
|
+
return this._fillStyle;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Set the fill style. Accepts a solid {@link Color}, a {@link Gradient}
|
|
83
|
+
* (cloned on assignment and rasterized lazily on first fill), or `null` to
|
|
84
|
+
* revert to the solid color held by {@link fillColor}. A {@link Color} value
|
|
85
|
+
* is copied into the {@link fillColor} slot; the most recently assigned style
|
|
86
|
+
* wins.
|
|
87
|
+
*/
|
|
88
|
+
set fillStyle(style) {
|
|
89
|
+
this._fillStyle = this._resolveStyle(style, this._fillColor);
|
|
90
|
+
this._fillStyleTexture = null;
|
|
91
|
+
}
|
|
92
|
+
/** Active stroke style: a solid {@link Color} or a {@link Gradient}. */
|
|
93
|
+
get strokeStyle() {
|
|
94
|
+
return this._strokeStyle;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Set the stroke style. Accepts a solid {@link Color}, a {@link Gradient}
|
|
98
|
+
* (cloned on assignment and rasterized lazily on first stroke), or `null` to
|
|
99
|
+
* revert to the solid color held by {@link lineColor}. A {@link Color} value
|
|
100
|
+
* is copied into the {@link lineColor} slot; the most recently assigned style
|
|
101
|
+
* wins.
|
|
102
|
+
*/
|
|
103
|
+
set strokeStyle(style) {
|
|
104
|
+
this._strokeStyle = this._resolveStyle(style, this._lineColor);
|
|
105
|
+
this._strokeStyleTexture = null;
|
|
43
106
|
}
|
|
44
107
|
get currentPoint() {
|
|
45
108
|
return this._currentPoint;
|
|
@@ -163,19 +226,19 @@ class Graphics extends Container {
|
|
|
163
226
|
/** Draw a stroked line between two explicit points, independent of the current pen position. */
|
|
164
227
|
drawLine(startX, startY, endX, endY) {
|
|
165
228
|
const data = buildLine(startX, startY, endX, endY, this._lineWidth);
|
|
166
|
-
this.addChild(this.
|
|
229
|
+
this.addChild(this._createStrokeMesh(data));
|
|
167
230
|
return this;
|
|
168
231
|
}
|
|
169
232
|
/** Draw a stroked polyline from a flat `[x0,y0, x1,y1, ...]` coordinate array. */
|
|
170
233
|
drawPath(path) {
|
|
171
234
|
const data = buildPath(path, this._lineWidth);
|
|
172
|
-
this.addChild(this.
|
|
235
|
+
this.addChild(this._createStrokeMesh(data));
|
|
173
236
|
return this;
|
|
174
237
|
}
|
|
175
238
|
/** Fill a closed polygon defined by `[x0,y0, x1,y1, ...]` and optionally stroke its outline. */
|
|
176
239
|
drawPolygon(path) {
|
|
177
240
|
const data = buildPolygon(path);
|
|
178
|
-
this.addChild(this.
|
|
241
|
+
this.addChild(this._createFillMesh(data));
|
|
179
242
|
if (this._lineWidth > 0) {
|
|
180
243
|
this.drawPath(data.points);
|
|
181
244
|
}
|
|
@@ -184,7 +247,7 @@ class Graphics extends Container {
|
|
|
184
247
|
/** Fill a circle and optionally stroke its outline if `lineWidth > 0`. */
|
|
185
248
|
drawCircle(centerX, centerY, radius) {
|
|
186
249
|
const data = buildCircle(centerX, centerY, radius);
|
|
187
|
-
this.addChild(this.
|
|
250
|
+
this.addChild(this._createFillMesh(data));
|
|
188
251
|
if (this._lineWidth > 0) {
|
|
189
252
|
this.drawPath(data.points);
|
|
190
253
|
}
|
|
@@ -193,7 +256,7 @@ class Graphics extends Container {
|
|
|
193
256
|
/** Fill an ellipse and optionally stroke its outline if `lineWidth > 0`. */
|
|
194
257
|
drawEllipse(centerX, centerY, radiusX, radiusY) {
|
|
195
258
|
const data = buildEllipse(centerX, centerY, radiusX, radiusY);
|
|
196
|
-
this.addChild(this.
|
|
259
|
+
this.addChild(this._createFillMesh(data));
|
|
197
260
|
if (this._lineWidth > 0) {
|
|
198
261
|
this.drawPath(data.points);
|
|
199
262
|
}
|
|
@@ -202,7 +265,7 @@ class Graphics extends Container {
|
|
|
202
265
|
/** Fill a rectangle and optionally stroke its outline if `lineWidth > 0`. */
|
|
203
266
|
drawRectangle(x, y, width, height) {
|
|
204
267
|
const data = buildRectangle(x, y, width, height);
|
|
205
|
-
this.addChild(this.
|
|
268
|
+
this.addChild(this._createFillMesh(data));
|
|
206
269
|
if (this._lineWidth > 0) {
|
|
207
270
|
this.drawPath(data.points);
|
|
208
271
|
}
|
|
@@ -214,18 +277,23 @@ class Graphics extends Container {
|
|
|
214
277
|
*/
|
|
215
278
|
drawStar(centerX, centerY, points, radius, innerRadius = radius / 2, rotation = 0) {
|
|
216
279
|
const data = buildStar(centerX, centerY, points, radius, innerRadius, rotation);
|
|
217
|
-
this.addChild(this.
|
|
280
|
+
this.addChild(this._createFillMesh(data));
|
|
218
281
|
if (this._lineWidth > 0) {
|
|
219
282
|
this.drawPath(data.points);
|
|
220
283
|
}
|
|
221
284
|
return this;
|
|
222
285
|
}
|
|
223
|
-
/** Remove all child meshes and reset pen state (position,
|
|
286
|
+
/** Remove all child meshes and reset pen state (position, fill/stroke styles, line width). */
|
|
224
287
|
clear() {
|
|
225
288
|
this.removeChildren();
|
|
226
289
|
this._lineWidth = 0;
|
|
227
|
-
this._lineColor.copy(Color.black);
|
|
228
290
|
this._fillColor.copy(Color.black);
|
|
291
|
+
this._lineColor.copy(Color.black);
|
|
292
|
+
this._fillStyle = this._fillColor;
|
|
293
|
+
this._strokeStyle = this._lineColor;
|
|
294
|
+
this._fillStyleTexture = null;
|
|
295
|
+
this._strokeStyleTexture = null;
|
|
296
|
+
this._destroyOwnedTextures();
|
|
229
297
|
this._currentPoint.set(0, 0);
|
|
230
298
|
return this;
|
|
231
299
|
}
|
|
@@ -236,7 +304,38 @@ class Graphics extends Container {
|
|
|
236
304
|
this._fillColor.destroy();
|
|
237
305
|
this._currentPoint.destroy();
|
|
238
306
|
}
|
|
239
|
-
|
|
307
|
+
/**
|
|
308
|
+
* Resolve an assigned style into the stored paint. A {@link Color} is copied
|
|
309
|
+
* into the solid `colorSlot` (keeping the {@link fillColor} / {@link lineColor}
|
|
310
|
+
* convenience getters in sync) and that slot is returned; `null` reverts to
|
|
311
|
+
* the slot; a {@link Gradient} is cloned so later external mutation cannot
|
|
312
|
+
* change the stored paint.
|
|
313
|
+
*/
|
|
314
|
+
_resolveStyle(style, colorSlot) {
|
|
315
|
+
if (style === null) {
|
|
316
|
+
return colorSlot;
|
|
317
|
+
}
|
|
318
|
+
if (style instanceof Color) {
|
|
319
|
+
colorSlot.copy(style);
|
|
320
|
+
return colorSlot;
|
|
321
|
+
}
|
|
322
|
+
return style.clone();
|
|
323
|
+
}
|
|
324
|
+
_createFillMesh(data) {
|
|
325
|
+
if (this._fillStyle instanceof Color) {
|
|
326
|
+
return this._createSolidMesh(data, this._fillStyle);
|
|
327
|
+
}
|
|
328
|
+
this._fillStyleTexture ??= this._rasterizeGradient(this._fillStyle);
|
|
329
|
+
return this._createGradientMesh(data, this._fillStyleTexture);
|
|
330
|
+
}
|
|
331
|
+
_createStrokeMesh(data) {
|
|
332
|
+
if (this._strokeStyle instanceof Color) {
|
|
333
|
+
return this._createSolidMesh(data, this._strokeStyle);
|
|
334
|
+
}
|
|
335
|
+
this._strokeStyleTexture ??= this._rasterizeGradient(this._strokeStyle);
|
|
336
|
+
return this._createGradientMesh(data, this._strokeStyleTexture);
|
|
337
|
+
}
|
|
338
|
+
_createSolidMesh(data, color) {
|
|
240
339
|
const mesh = new Mesh({
|
|
241
340
|
vertices: data.vertices,
|
|
242
341
|
indices: data.indices,
|
|
@@ -244,7 +343,66 @@ class Graphics extends Container {
|
|
|
244
343
|
mesh.tint = color;
|
|
245
344
|
return mesh;
|
|
246
345
|
}
|
|
346
|
+
/**
|
|
347
|
+
* Build a textured mesh whose UVs span the shape's local bounding box, so the
|
|
348
|
+
* gradient texture samples across the filled/stroked geometry. The default
|
|
349
|
+
* white tint and vertex color leave the sampled gradient color unmodulated.
|
|
350
|
+
*/
|
|
351
|
+
_createGradientMesh(data, texture) {
|
|
352
|
+
return new Mesh({
|
|
353
|
+
vertices: data.vertices,
|
|
354
|
+
indices: data.indices,
|
|
355
|
+
uvs: computeBoundsUvs(data.vertices),
|
|
356
|
+
texture,
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
_rasterizeGradient(gradient) {
|
|
360
|
+
const texture = gradient.toTexture(gradientTextureSize, gradientTextureSize, {
|
|
361
|
+
samplerOptions: { scaleMode: ScaleModes.Linear },
|
|
362
|
+
});
|
|
363
|
+
this._ownedTextures.add(texture);
|
|
364
|
+
return texture;
|
|
365
|
+
}
|
|
366
|
+
_destroyOwnedTextures() {
|
|
367
|
+
for (const texture of this._ownedTextures) {
|
|
368
|
+
texture.destroy();
|
|
369
|
+
}
|
|
370
|
+
this._ownedTextures.clear();
|
|
371
|
+
}
|
|
247
372
|
}
|
|
373
|
+
/**
|
|
374
|
+
* Normalize each `(x, y)` vertex into `0..1` UV space relative to the flat
|
|
375
|
+
* vertex array's axis-aligned bounding box. Degenerate (zero-width/height)
|
|
376
|
+
* spans collapse to `0` to avoid division by zero.
|
|
377
|
+
*/
|
|
378
|
+
const computeBoundsUvs = (vertices) => {
|
|
379
|
+
let minX = Infinity;
|
|
380
|
+
let minY = Infinity;
|
|
381
|
+
let maxX = -Infinity;
|
|
382
|
+
let maxY = -Infinity;
|
|
383
|
+
for (let i = 0; i < vertices.length; i += 2) {
|
|
384
|
+
const x = vertices[i];
|
|
385
|
+
const y = vertices[i + 1];
|
|
386
|
+
if (x < minX)
|
|
387
|
+
minX = x;
|
|
388
|
+
if (x > maxX)
|
|
389
|
+
maxX = x;
|
|
390
|
+
if (y < minY)
|
|
391
|
+
minY = y;
|
|
392
|
+
if (y > maxY)
|
|
393
|
+
maxY = y;
|
|
394
|
+
}
|
|
395
|
+
const spanX = maxX - minX;
|
|
396
|
+
const spanY = maxY - minY;
|
|
397
|
+
const invX = spanX > 0 ? 1 / spanX : 0;
|
|
398
|
+
const invY = spanY > 0 ? 1 / spanY : 0;
|
|
399
|
+
const uvs = new Float32Array(vertices.length);
|
|
400
|
+
for (let i = 0; i < vertices.length; i += 2) {
|
|
401
|
+
uvs[i] = (vertices[i] - minX) * invX;
|
|
402
|
+
uvs[i + 1] = (vertices[i + 1] - minY) * invY;
|
|
403
|
+
}
|
|
404
|
+
return uvs;
|
|
405
|
+
};
|
|
248
406
|
|
|
249
407
|
export { Graphics };
|
|
250
408
|
//# sourceMappingURL=Graphics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Graphics.js","sources":["../../../../../src/rendering/primitives/Graphics.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Graphics.js","sources":["../../../../../src/rendering/primitives/Graphics.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { Interval } from '@/math/Interval';
|
|
|
2
2
|
import { Rectangle } from '@/math/Rectangle';
|
|
3
3
|
import { Vector } from '@/math/Vector';
|
|
4
4
|
import { Drawable } from '@/rendering/Drawable';
|
|
5
|
+
import type { SpriteMaterial } from '@/rendering/material/SpriteMaterial';
|
|
5
6
|
import type { RenderTexture } from '@/rendering/texture/RenderTexture';
|
|
6
7
|
import type { Texture } from '@/rendering/texture/Texture';
|
|
7
8
|
/**
|
|
@@ -42,6 +43,7 @@ export declare enum SpriteFlags {
|
|
|
42
43
|
export declare class Sprite extends Drawable {
|
|
43
44
|
private _texture;
|
|
44
45
|
private _textureFrame;
|
|
46
|
+
private _material;
|
|
45
47
|
private _vertices;
|
|
46
48
|
private _texCoords;
|
|
47
49
|
private readonly _normals;
|
|
@@ -50,6 +52,16 @@ export declare class Sprite extends Drawable {
|
|
|
50
52
|
set texture(texture: Texture | RenderTexture | null);
|
|
51
53
|
get textureFrame(): Rectangle;
|
|
52
54
|
set textureFrame(frame: Rectangle);
|
|
55
|
+
/**
|
|
56
|
+
* Custom material giving this sprite its own fragment program, uniforms, and
|
|
57
|
+
* extra texture bindings, or `null` for the default multi-texture sprite path.
|
|
58
|
+
*
|
|
59
|
+
* Sprites that share the same material instance and base texture still batch
|
|
60
|
+
* into a single instanced draw call; the base texture stays on the sprite and
|
|
61
|
+
* is bound per batch. Assigning a non-sprite material throws.
|
|
62
|
+
*/
|
|
63
|
+
get material(): SpriteMaterial | null;
|
|
64
|
+
set material(material: SpriteMaterial | null);
|
|
53
65
|
get width(): number;
|
|
54
66
|
set width(value: number);
|
|
55
67
|
get height(): number;
|
|
@@ -67,7 +79,16 @@ export declare class Sprite extends Drawable {
|
|
|
67
79
|
* texture is assigned.
|
|
68
80
|
*/
|
|
69
81
|
get texCoords(): Uint32Array;
|
|
70
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
* Assign a new texture, refreshing the texture frame to the full texture dimensions.
|
|
84
|
+
*
|
|
85
|
+
* Does **not** bump the texture's version. That signal means "the source data
|
|
86
|
+
* has been mutated"; replacing the sprite's texture reference is not that.
|
|
87
|
+
* Bumping it here would force the backend to re-allocate the GPU texture on
|
|
88
|
+
* the next bind — destroying any FBO content already rendered into a
|
|
89
|
+
* {@link RenderTexture} (the cacheAsBitmap and filter capture pipelines).
|
|
90
|
+
* Call {@link updateTexture} explicitly when you mutate the source.
|
|
91
|
+
*/
|
|
71
92
|
setTexture(texture: Texture | RenderTexture | null): this;
|
|
72
93
|
/** Signal the GPU backend that the underlying texture source has changed and reset the frame to full dimensions. */
|
|
73
94
|
updateTexture(): this;
|
|
@@ -43,6 +43,7 @@ var SpriteFlags;
|
|
|
43
43
|
class Sprite extends Drawable {
|
|
44
44
|
_texture = null;
|
|
45
45
|
_textureFrame = new Rectangle();
|
|
46
|
+
_material = null;
|
|
46
47
|
_vertices = new Float32Array(8);
|
|
47
48
|
_texCoords = new Uint32Array(4);
|
|
48
49
|
_normals = [new Vector(), new Vector(), new Vector(), new Vector()];
|
|
@@ -66,6 +67,24 @@ class Sprite extends Drawable {
|
|
|
66
67
|
set textureFrame(frame) {
|
|
67
68
|
this.setTextureFrame(frame);
|
|
68
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Custom material giving this sprite its own fragment program, uniforms, and
|
|
72
|
+
* extra texture bindings, or `null` for the default multi-texture sprite path.
|
|
73
|
+
*
|
|
74
|
+
* Sprites that share the same material instance and base texture still batch
|
|
75
|
+
* into a single instanced draw call; the base texture stays on the sprite and
|
|
76
|
+
* is bound per batch. Assigning a non-sprite material throws.
|
|
77
|
+
*/
|
|
78
|
+
get material() {
|
|
79
|
+
return this._material;
|
|
80
|
+
}
|
|
81
|
+
set material(material) {
|
|
82
|
+
if (material !== null && material.target !== 'sprite') {
|
|
83
|
+
throw new Error(`Sprite requires a SpriteMaterial (got a ${material.target} material).`);
|
|
84
|
+
}
|
|
85
|
+
this._material = material;
|
|
86
|
+
this.invalidateCache();
|
|
87
|
+
}
|
|
69
88
|
get width() {
|
|
70
89
|
return Math.abs(this.scale.x) * this._textureFrame.width;
|
|
71
90
|
}
|
|
@@ -131,11 +150,22 @@ class Sprite extends Drawable {
|
|
|
131
150
|
}
|
|
132
151
|
return this._texCoords;
|
|
133
152
|
}
|
|
134
|
-
/**
|
|
153
|
+
/**
|
|
154
|
+
* Assign a new texture, refreshing the texture frame to the full texture dimensions.
|
|
155
|
+
*
|
|
156
|
+
* Does **not** bump the texture's version. That signal means "the source data
|
|
157
|
+
* has been mutated"; replacing the sprite's texture reference is not that.
|
|
158
|
+
* Bumping it here would force the backend to re-allocate the GPU texture on
|
|
159
|
+
* the next bind — destroying any FBO content already rendered into a
|
|
160
|
+
* {@link RenderTexture} (the cacheAsBitmap and filter capture pipelines).
|
|
161
|
+
* Call {@link updateTexture} explicitly when you mutate the source.
|
|
162
|
+
*/
|
|
135
163
|
setTexture(texture) {
|
|
136
164
|
if (this._texture !== texture) {
|
|
137
165
|
this._texture = texture;
|
|
138
|
-
|
|
166
|
+
if (texture !== null) {
|
|
167
|
+
this.resetTextureFrame();
|
|
168
|
+
}
|
|
139
169
|
this.invalidateCache();
|
|
140
170
|
}
|
|
141
171
|
return this;
|
|
@@ -257,6 +287,7 @@ class Sprite extends Drawable {
|
|
|
257
287
|
}
|
|
258
288
|
this._textureFrame.destroy();
|
|
259
289
|
this._texture = null;
|
|
290
|
+
this._material = null;
|
|
260
291
|
}
|
|
261
292
|
}
|
|
262
293
|
RenderNode.setInternalSpriteFactory(() => new Sprite(null));
|