@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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Color } from '@/core/Color';
|
|
2
2
|
import type { LifetimeFunction } from './Distribution';
|
|
3
|
-
/** A keyframe in a {@link
|
|
4
|
-
export interface
|
|
3
|
+
/** A keyframe in a {@link ColorGradient}: color at lifetime ratio `t` in `[0, 1]`. */
|
|
4
|
+
export interface ColorGradientKey {
|
|
5
5
|
t: number;
|
|
6
6
|
color: Color;
|
|
7
7
|
}
|
|
@@ -18,18 +18,18 @@ export interface GradientKey {
|
|
|
18
18
|
* that write into a `Uint32Array` instance buffer.
|
|
19
19
|
*
|
|
20
20
|
* @example
|
|
21
|
-
* const fire = new
|
|
21
|
+
* const fire = new ColorGradient([
|
|
22
22
|
* { t: 0, color: new Color(1, 1, 1, 1) }, // white
|
|
23
23
|
* { t: 0.3, color: new Color(1, 0.7, 0.1, 1) }, // orange
|
|
24
24
|
* { t: 0.7, color: new Color(0.4, 0.1, 0, 0.6) },
|
|
25
25
|
* { t: 1, color: new Color(0, 0, 0, 0) }, // transparent black
|
|
26
26
|
* ]);
|
|
27
27
|
*/
|
|
28
|
-
export declare class
|
|
28
|
+
export declare class ColorGradient implements LifetimeFunction<Color> {
|
|
29
29
|
private readonly _keys;
|
|
30
30
|
private readonly _scratch;
|
|
31
31
|
private _lastSegment;
|
|
32
|
-
constructor(keys: readonly
|
|
32
|
+
constructor(keys: readonly ColorGradientKey[]);
|
|
33
33
|
evaluate(t: number, out?: Color): Color;
|
|
34
34
|
/**
|
|
35
35
|
* Returns the gradient sample at `t` packed into a single 32-bit RGBA
|
|
@@ -14,20 +14,20 @@ const compareT = (a, b) => a.t - b.t;
|
|
|
14
14
|
* that write into a `Uint32Array` instance buffer.
|
|
15
15
|
*
|
|
16
16
|
* @example
|
|
17
|
-
* const fire = new
|
|
17
|
+
* const fire = new ColorGradient([
|
|
18
18
|
* { t: 0, color: new Color(1, 1, 1, 1) }, // white
|
|
19
19
|
* { t: 0.3, color: new Color(1, 0.7, 0.1, 1) }, // orange
|
|
20
20
|
* { t: 0.7, color: new Color(0.4, 0.1, 0, 0.6) },
|
|
21
21
|
* { t: 1, color: new Color(0, 0, 0, 0) }, // transparent black
|
|
22
22
|
* ]);
|
|
23
23
|
*/
|
|
24
|
-
class
|
|
24
|
+
class ColorGradient {
|
|
25
25
|
_keys;
|
|
26
26
|
_scratch = new Color();
|
|
27
27
|
_lastSegment = 0;
|
|
28
28
|
constructor(keys) {
|
|
29
29
|
if (keys.length === 0) {
|
|
30
|
-
throw new Error('
|
|
30
|
+
throw new Error('ColorGradient requires at least one keyframe.');
|
|
31
31
|
}
|
|
32
32
|
this._keys = [...keys].map(k => ({ t: k.t, color: k.color.clone() })).sort(compareT);
|
|
33
33
|
}
|
|
@@ -68,5 +68,5 @@ class Gradient {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
export {
|
|
72
|
-
//# sourceMappingURL=
|
|
71
|
+
export { ColorGradient };
|
|
72
|
+
//# sourceMappingURL=ColorGradient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColorGradient.js","sources":["../../../../../src/particles/distributions/ColorGradient.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* @example
|
|
17
17
|
* const lifetime = new Range(0.5, 1.5); // seconds, uniform
|
|
18
18
|
* const velocity = new VectorRange(-50, 50, -200, -100);
|
|
19
|
-
* const tint = new
|
|
19
|
+
* const tint = new ColorGradient([
|
|
20
20
|
* { t: 0, color: Color.white },
|
|
21
21
|
* { t: 0.7, color: Color.yellow },
|
|
22
22
|
* { t: 1, color: Color.transparent },
|
|
@@ -34,7 +34,7 @@ export interface Distribution<T> {
|
|
|
34
34
|
/**
|
|
35
35
|
* Lifetime-parameterised function that produces a deterministic `T` for a
|
|
36
36
|
* given lifetime ratio `t` in `[0, 1]`. Used by per-frame update modules
|
|
37
|
-
* that interpolate over particle lifetime — `ColorOverLifetime` (
|
|
37
|
+
* that interpolate over particle lifetime — `ColorOverLifetime` (ColorGradient),
|
|
38
38
|
* `ScaleOverLifetime` (Curve), etc.
|
|
39
39
|
*
|
|
40
40
|
* Mutable-target rule: same as {@link Distribution} — pass your own scratch
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export { BoxArea } from './BoxArea';
|
|
2
2
|
export { CircleArea } from './CircleArea';
|
|
3
|
+
export type { ColorGradientKey } from './ColorGradient';
|
|
4
|
+
export { ColorGradient } from './ColorGradient';
|
|
3
5
|
export { ConeDirection } from './ConeDirection';
|
|
4
6
|
export { Constant } from './Constant';
|
|
5
7
|
export type { CurveKey } from './Curve';
|
|
6
8
|
export { Curve } from './Curve';
|
|
7
9
|
export type { Distribution, LifetimeFunction } from './Distribution';
|
|
8
|
-
export type { GradientKey } from './Gradient';
|
|
9
|
-
export { Gradient } from './Gradient';
|
|
10
10
|
export { LineSegment } from './LineSegment';
|
|
11
11
|
export { Range } from './Range';
|
|
12
12
|
export { VectorRange } from './VectorRange';
|
|
@@ -14,7 +14,7 @@ import { wgslUniformByteSize } from '../modules/WgslContribution.js';
|
|
|
14
14
|
* - **One uniform buffer** for frame UVs — `array<vec4<f32>, N>` where N
|
|
15
15
|
* is the system's frame count (or 1 when no atlas is declared). Each
|
|
16
16
|
* vec4 is `(uvMinX, uvMinY, uvMaxX, uvMaxY)` already flipY-adjusted.
|
|
17
|
-
* - **N 1D textures** for modules that use lookup tables (Curve /
|
|
17
|
+
* - **N 1D textures** for modules that use lookup tables (Curve / ColorGradient).
|
|
18
18
|
* - **Composite compute pipeline** built once at construction by
|
|
19
19
|
* concatenating the integration step + every registered module body +
|
|
20
20
|
* the pack-instances step into a single shader.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Curve } from '@/particles/distributions/Curve';
|
|
2
2
|
import type { ParticleSystem } from '@/particles/ParticleSystem';
|
|
3
3
|
import { UpdateModule } from './UpdateModule';
|
|
4
4
|
import type { WgslContribution } from './WgslContribution';
|
|
@@ -17,7 +17,7 @@ import type { WgslContribution } from './WgslContribution';
|
|
|
17
17
|
*/
|
|
18
18
|
export declare class AlphaFadeOverLifetime extends UpdateModule {
|
|
19
19
|
curve: Curve;
|
|
20
|
-
constructor(curve
|
|
20
|
+
constructor(curve?: Curve);
|
|
21
21
|
apply(system: ParticleSystem, _dt: number): void;
|
|
22
22
|
wgsl(): WgslContribution;
|
|
23
23
|
uploadTextures(device: GPUDevice, textures: ReadonlyMap<string, GPUTexture>): void;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Curve } from '../distributions/Curve.js';
|
|
1
2
|
import { UpdateModule } from './UpdateModule.js';
|
|
2
3
|
|
|
3
4
|
/// <reference types="@webgpu/types" />
|
|
@@ -17,7 +18,10 @@ const lookupSize = 256;
|
|
|
17
18
|
*/
|
|
18
19
|
class AlphaFadeOverLifetime extends UpdateModule {
|
|
19
20
|
curve;
|
|
20
|
-
constructor(curve
|
|
21
|
+
constructor(curve = new Curve([
|
|
22
|
+
{ t: 0, v: 1 },
|
|
23
|
+
{ t: 1, v: 0 },
|
|
24
|
+
])) {
|
|
21
25
|
super();
|
|
22
26
|
this.curve = curve;
|
|
23
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlphaFadeOverLifetime.js","sources":["../../../../../src/particles/modules/AlphaFadeOverLifetime.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AlphaFadeOverLifetime.js","sources":["../../../../../src/particles/modules/AlphaFadeOverLifetime.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;AAQA,MAAM,UAAU,GAAG,GAAG;AAEtB;;;;;;;;;;;;AAYG;AACG,MAAO,qBAAsB,SAAQ,YAAY,CAAA;AAC9C,IAAA,KAAK;IAEZ,WAAA,CACE,KAAA,GAAe,IAAI,KAAK,CAAC;AACvB,QAAA,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACd,QAAA,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;KACf,CAAC,EAAA;AAEF,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;IAEgB,KAAK,CAAC,MAAsB,EAAE,GAAW,EAAA;QACvD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM;AACtD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AAExB,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;YAClC,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC3B,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG;AAE3D,YAAA,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,KAAK,SAAS,IAAI,EAAE,CAAC;QACxD;IACF;IAEgB,IAAI,GAAA;QAClB,OAAO;AACL,YAAA,GAAG,EAAE,uBAAuB;YAC5B,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AACjD,YAAA,IAAI,EAAE;;;;;AAKC,YAAA,CAAA;SACR;IACH;IAEgB,cAAc,CAAC,MAAiB,EAAE,QAAyC,EAAA;QACzF,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAErC,QAAA,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC;AAEzC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;AACnC,YAAA,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;QACrD;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';
|
|
@@ -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":";;;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,QAAuB,EAAE,QAAgB,EAAE,QAAgB,EAAA;AAC5E,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAC1B;IAEgB,KAAK,CAAC,MAAsB,EAAE,GAAW,EAAA;QACvD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM;AAC/C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAC9B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ;AACzB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAE1D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC;YAExD,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;QACrC;IACF;IAEgB,IAAI,GAAA;QAClB,OAAO;AACL,YAAA,GAAG,EAAE,gBAAgB;AACrB,YAAA,QAAQ,EAAE;AACR,gBAAA,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE;AACjC,gBAAA,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE;AACjC,aAAA;YACD,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;AACtD,YAAA,IAAI,EAAE;;;;;;;;;AASC,YAAA,CAAA;SACR;IACH;IAEgB,aAAa,CAAC,IAAc,EAAE,MAAc,EAAA;AAC1D,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAE1D,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;AAChD,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC;IAC7C;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;;;;"}
|
|
@@ -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
|
}
|