@aura3d/rendering 2.0.4 → 3.0.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/dist/AtmosphereWetness.d.ts +61 -0
- package/dist/AtmosphereWetness.d.ts.map +1 -0
- package/dist/AtmosphereWetness.js +99 -0
- package/dist/AtmosphereWetness.js.map +1 -0
- package/dist/ClusteredForwardLighting.d.ts +25 -1
- package/dist/ClusteredForwardLighting.d.ts.map +1 -1
- package/dist/ClusteredForwardLighting.js +80 -3
- package/dist/ClusteredForwardLighting.js.map +1 -1
- package/dist/DayNightSky.d.ts +63 -0
- package/dist/DayNightSky.d.ts.map +1 -0
- package/dist/DayNightSky.js +156 -0
- package/dist/DayNightSky.js.map +1 -0
- package/dist/EnvironmentPresetPack.d.ts +30 -0
- package/dist/EnvironmentPresetPack.d.ts.map +1 -0
- package/dist/EnvironmentPresetPack.js +49 -0
- package/dist/EnvironmentPresetPack.js.map +1 -0
- package/dist/ForwardPass.d.ts +65 -0
- package/dist/ForwardPass.d.ts.map +1 -1
- package/dist/ForwardPass.js +196 -2
- package/dist/ForwardPass.js.map +1 -1
- package/dist/InstancedPBRMaterial.d.ts +1 -0
- package/dist/InstancedPBRMaterial.d.ts.map +1 -1
- package/dist/InstancedPBRMaterial.js +3 -0
- package/dist/InstancedPBRMaterial.js.map +1 -1
- package/dist/InstancingDiagnostics.d.ts +69 -0
- package/dist/InstancingDiagnostics.d.ts.map +1 -0
- package/dist/InstancingDiagnostics.js +98 -0
- package/dist/InstancingDiagnostics.js.map +1 -0
- package/dist/LightingRig.d.ts +19 -1
- package/dist/LightingRig.d.ts.map +1 -1
- package/dist/LightingRig.js +61 -1
- package/dist/LightingRig.js.map +1 -1
- package/dist/MeshConsolidation.d.ts +12 -0
- package/dist/MeshConsolidation.d.ts.map +1 -1
- package/dist/MeshConsolidation.js +28 -0
- package/dist/MeshConsolidation.js.map +1 -1
- package/dist/MorphTargetPlan.d.ts +29 -2
- package/dist/MorphTargetPlan.d.ts.map +1 -1
- package/dist/MorphTargetPlan.js +23 -4
- package/dist/MorphTargetPlan.js.map +1 -1
- package/dist/NormalMappedPBRMaterial.d.ts.map +1 -1
- package/dist/NormalMappedPBRMaterial.js +22 -2
- package/dist/NormalMappedPBRMaterial.js.map +1 -1
- package/dist/OceanSurface.d.ts +75 -0
- package/dist/OceanSurface.d.ts.map +1 -1
- package/dist/OceanSurface.js +211 -0
- package/dist/OceanSurface.js.map +1 -1
- package/dist/PBRMaterial.d.ts +1 -0
- package/dist/PBRMaterial.d.ts.map +1 -1
- package/dist/PBRMaterial.js +23 -2
- package/dist/PBRMaterial.js.map +1 -1
- package/dist/PbrReference.d.ts +48 -0
- package/dist/PbrReference.d.ts.map +1 -1
- package/dist/PbrReference.js +126 -0
- package/dist/PbrReference.js.map +1 -1
- package/dist/PlanarReflection.d.ts +221 -0
- package/dist/PlanarReflection.d.ts.map +1 -0
- package/dist/PlanarReflection.js +541 -0
- package/dist/PlanarReflection.js.map +1 -0
- package/dist/PostProcessPass.d.ts +13 -0
- package/dist/PostProcessPass.d.ts.map +1 -1
- package/dist/PostProcessPass.js +15 -4
- package/dist/PostProcessPass.js.map +1 -1
- package/dist/ReflectionSurfaces.d.ts +14 -0
- package/dist/ReflectionSurfaces.d.ts.map +1 -1
- package/dist/ReflectionSurfaces.js +93 -0
- package/dist/ReflectionSurfaces.js.map +1 -1
- package/dist/RenderDevice.d.ts +87 -0
- package/dist/RenderDevice.d.ts.map +1 -1
- package/dist/RenderDevice.js +85 -0
- package/dist/RenderDevice.js.map +1 -1
- package/dist/Renderer.js +3 -1
- package/dist/Renderer.js.map +1 -1
- package/dist/RendererPostprocessPlan.d.ts +48 -0
- package/dist/RendererPostprocessPlan.d.ts.map +1 -1
- package/dist/RendererPostprocessPlan.js +101 -11
- package/dist/RendererPostprocessPlan.js.map +1 -1
- package/dist/RendererVisualPipelineReport.d.ts.map +1 -1
- package/dist/RendererVisualPipelineReport.js +3 -1
- package/dist/RendererVisualPipelineReport.js.map +1 -1
- package/dist/Sampler.d.ts +29 -0
- package/dist/Sampler.d.ts.map +1 -1
- package/dist/Sampler.js +47 -0
- package/dist/Sampler.js.map +1 -1
- package/dist/SdfText.d.ts +250 -0
- package/dist/SdfText.d.ts.map +1 -0
- package/dist/SdfText.js +551 -0
- package/dist/SdfText.js.map +1 -0
- package/dist/ShaderChunks.d.ts.map +1 -1
- package/dist/ShaderChunks.js +30 -12
- package/dist/ShaderChunks.js.map +1 -1
- package/dist/ShaderLibrary.d.ts.map +1 -1
- package/dist/ShaderLibrary.js +478 -34
- package/dist/ShaderLibrary.js.map +1 -1
- package/dist/ShaderLibraryCore.d.ts.map +1 -1
- package/dist/ShaderLibraryCore.js +70 -12
- package/dist/ShaderLibraryCore.js.map +1 -1
- package/dist/ShadowMap.d.ts +24 -0
- package/dist/ShadowMap.d.ts.map +1 -1
- package/dist/ShadowMap.js +43 -0
- package/dist/ShadowMap.js.map +1 -1
- package/dist/SkinnedLitMaterial.d.ts.map +1 -1
- package/dist/SkinnedLitMaterial.js +2 -0
- package/dist/SkinnedLitMaterial.js.map +1 -1
- package/dist/SkinningBounds.d.ts +10 -0
- package/dist/SkinningBounds.d.ts.map +1 -1
- package/dist/SkinningBounds.js +27 -0
- package/dist/SkinningBounds.js.map +1 -1
- package/dist/SpriteFlipbook.d.ts +60 -0
- package/dist/SpriteFlipbook.d.ts.map +1 -0
- package/dist/SpriteFlipbook.js +128 -0
- package/dist/SpriteFlipbook.js.map +1 -0
- package/dist/TerrainTiles.d.ts +120 -0
- package/dist/TerrainTiles.d.ts.map +1 -0
- package/dist/TerrainTiles.js +221 -0
- package/dist/TerrainTiles.js.map +1 -0
- package/dist/TexturedPBRMaterial.d.ts +1 -0
- package/dist/TexturedPBRMaterial.d.ts.map +1 -1
- package/dist/TexturedPBRMaterial.js +23 -2
- package/dist/TexturedPBRMaterial.js.map +1 -1
- package/dist/TexturedUnlitMaterial.d.ts.map +1 -1
- package/dist/TexturedUnlitMaterial.js +20 -2
- package/dist/TexturedUnlitMaterial.js.map +1 -1
- package/dist/UnlitMaterial.d.ts.map +1 -1
- package/dist/UnlitMaterial.js +20 -2
- package/dist/UnlitMaterial.js.map +1 -1
- package/dist/VertexFormat.d.ts +6 -0
- package/dist/VertexFormat.d.ts.map +1 -1
- package/dist/VertexFormat.js +12 -0
- package/dist/VertexFormat.js.map +1 -1
- package/dist/VolumetricFog.d.ts +55 -0
- package/dist/VolumetricFog.d.ts.map +1 -0
- package/dist/VolumetricFog.js +91 -0
- package/dist/VolumetricFog.js.map +1 -0
- package/dist/WaterSurface.d.ts +77 -0
- package/dist/WaterSurface.d.ts.map +1 -0
- package/dist/WaterSurface.js +133 -0
- package/dist/WaterSurface.js.map +1 -0
- package/dist/WebGL2Device.d.ts +58 -0
- package/dist/WebGL2Device.d.ts.map +1 -1
- package/dist/WebGL2Device.js +536 -17
- package/dist/WebGL2Device.js.map +1 -1
- package/dist/WebGPUDevice.d.ts +50 -0
- package/dist/WebGPUDevice.d.ts.map +1 -1
- package/dist/WebGPUDevice.js +504 -10
- package/dist/WebGPUDevice.js.map +1 -1
- package/dist/WebGPUSkinningLimits.d.ts +40 -0
- package/dist/WebGPUSkinningLimits.d.ts.map +1 -1
- package/dist/WebGPUSkinningLimits.js +32 -0
- package/dist/WebGPUSkinningLimits.js.map +1 -1
- package/dist/effects/CollisionModule.d.ts +9 -0
- package/dist/effects/CollisionModule.d.ts.map +1 -1
- package/dist/effects/CollisionModule.js +10 -0
- package/dist/effects/CollisionModule.js.map +1 -1
- package/dist/effects/ColorModule.d.ts +7 -0
- package/dist/effects/ColorModule.d.ts.map +1 -1
- package/dist/effects/ColorModule.js +23 -0
- package/dist/effects/ColorModule.js.map +1 -1
- package/dist/effects/ForceModule.d.ts +35 -0
- package/dist/effects/ForceModule.d.ts.map +1 -1
- package/dist/effects/ForceModule.js +49 -0
- package/dist/effects/ForceModule.js.map +1 -1
- package/dist/effects/GPUParticleBackend.d.ts +186 -0
- package/dist/effects/GPUParticleBackend.d.ts.map +1 -1
- package/dist/effects/GPUParticleBackend.js +692 -1
- package/dist/effects/GPUParticleBackend.js.map +1 -1
- package/dist/effects/HeightfieldModule.d.ts +58 -0
- package/dist/effects/HeightfieldModule.d.ts.map +1 -0
- package/dist/effects/HeightfieldModule.js +129 -0
- package/dist/effects/HeightfieldModule.js.map +1 -0
- package/dist/effects/LightingModule.d.ts +34 -0
- package/dist/effects/LightingModule.d.ts.map +1 -0
- package/dist/effects/LightingModule.js +54 -0
- package/dist/effects/LightingModule.js.map +1 -0
- package/dist/effects/ParticleDiagnostics.d.ts +8 -0
- package/dist/effects/ParticleDiagnostics.d.ts.map +1 -1
- package/dist/effects/ParticleDiagnostics.js +3 -0
- package/dist/effects/ParticleDiagnostics.js.map +1 -1
- package/dist/effects/ParticleModule.d.ts +8 -0
- package/dist/effects/ParticleModule.d.ts.map +1 -1
- package/dist/effects/ParticleModule.js.map +1 -1
- package/dist/effects/ParticleRenderer.d.ts +20 -0
- package/dist/effects/ParticleRenderer.d.ts.map +1 -1
- package/dist/effects/ParticleRenderer.js +57 -7
- package/dist/effects/ParticleRenderer.js.map +1 -1
- package/dist/effects/ParticleSystem.d.ts +45 -1
- package/dist/effects/ParticleSystem.d.ts.map +1 -1
- package/dist/effects/ParticleSystem.js +373 -4
- package/dist/effects/ParticleSystem.js.map +1 -1
- package/dist/effects/SizeModule.d.ts +4 -0
- package/dist/effects/SizeModule.d.ts.map +1 -1
- package/dist/effects/SizeModule.js +16 -0
- package/dist/effects/SizeModule.js.map +1 -1
- package/dist/effects/SubEmitterModule.d.ts +61 -0
- package/dist/effects/SubEmitterModule.d.ts.map +1 -0
- package/dist/effects/SubEmitterModule.js +119 -0
- package/dist/effects/SubEmitterModule.js.map +1 -0
- package/dist/effects/TrailModule.d.ts +38 -0
- package/dist/effects/TrailModule.d.ts.map +1 -1
- package/dist/effects/TrailModule.js +95 -2
- package/dist/effects/TrailModule.js.map +1 -1
- package/dist/effects/TurbulenceModule.d.ts +43 -0
- package/dist/effects/TurbulenceModule.d.ts.map +1 -0
- package/dist/effects/TurbulenceModule.js +130 -0
- package/dist/effects/TurbulenceModule.js.map +1 -0
- package/dist/effects/index.d.ts +4 -0
- package/dist/effects/index.d.ts.map +1 -1
- package/dist/effects/index.js +4 -0
- package/dist/effects/index.js.map +1 -1
- package/dist/index.d.ts +57 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -10
- package/dist/index.js.map +1 -1
- package/dist/materials/MaterialExtensions.js +3 -3
- package/dist/materials/MaterialExtensions.js.map +1 -1
- package/dist/postprocess/NativeBloomPyramid.d.ts +28 -0
- package/dist/postprocess/NativeBloomPyramid.d.ts.map +1 -0
- package/dist/postprocess/NativeBloomPyramid.js +54 -0
- package/dist/postprocess/NativeBloomPyramid.js.map +1 -0
- package/dist/postprocess/NativeLdrEffectLuts.d.ts +10 -1
- package/dist/postprocess/NativeLdrEffectLuts.d.ts.map +1 -1
- package/dist/postprocess/NativeLdrEffectLuts.js +19 -2
- package/dist/postprocess/NativeLdrEffectLuts.js.map +1 -1
- package/dist/postprocess/index.d.ts +2 -0
- package/dist/postprocess/index.d.ts.map +1 -1
- package/dist/postprocess/index.js +1 -0
- package/dist/postprocess/index.js.map +1 -1
- package/dist/production-runtime/PBRHDRPipeline.d.ts +22 -0
- package/dist/production-runtime/PBRHDRPipeline.d.ts.map +1 -1
- package/dist/production-runtime/PBRHDRPipeline.js +125 -0
- package/dist/production-runtime/PBRHDRPipeline.js.map +1 -1
- package/dist/production-runtime/ProductionWebGPURenderer.d.ts +52 -0
- package/dist/production-runtime/ProductionWebGPURenderer.d.ts.map +1 -1
- package/dist/production-runtime/ProductionWebGPURenderer.js +101 -0
- package/dist/production-runtime/ProductionWebGPURenderer.js.map +1 -1
- package/dist/production-runtime/index.d.ts +5 -4
- package/dist/production-runtime/index.d.ts.map +1 -1
- package/dist/production-runtime/index.js +3 -2
- package/dist/production-runtime/index.js.map +1 -1
- package/dist/production-runtime/passes/DepthPrepass.d.ts +26 -1
- package/dist/production-runtime/passes/DepthPrepass.d.ts.map +1 -1
- package/dist/production-runtime/passes/DepthPrepass.js +49 -2
- package/dist/production-runtime/passes/DepthPrepass.js.map +1 -1
- package/dist/production-runtime/passes/FramegraphTopology.d.ts +13 -0
- package/dist/production-runtime/passes/FramegraphTopology.d.ts.map +1 -0
- package/dist/production-runtime/passes/FramegraphTopology.js +59 -0
- package/dist/production-runtime/passes/FramegraphTopology.js.map +1 -0
- package/dist/production-runtime/passes/OpaquePass.d.ts +24 -1
- package/dist/production-runtime/passes/OpaquePass.d.ts.map +1 -1
- package/dist/production-runtime/passes/OpaquePass.js +41 -2
- package/dist/production-runtime/passes/OpaquePass.js.map +1 -1
- package/dist/production-runtime/passes/ShadowPass.d.ts +24 -1
- package/dist/production-runtime/passes/ShadowPass.d.ts.map +1 -1
- package/dist/production-runtime/passes/ShadowPass.js +43 -2
- package/dist/production-runtime/passes/ShadowPass.js.map +1 -1
- package/dist/production-runtime/passes/SkyboxPass.d.ts +21 -1
- package/dist/production-runtime/passes/SkyboxPass.d.ts.map +1 -1
- package/dist/production-runtime/passes/SkyboxPass.js +39 -2
- package/dist/production-runtime/passes/SkyboxPass.js.map +1 -1
- package/dist/production-runtime/passes/ToneMappingPass.d.ts +29 -1
- package/dist/production-runtime/passes/ToneMappingPass.d.ts.map +1 -1
- package/dist/production-runtime/passes/ToneMappingPass.js +53 -2
- package/dist/production-runtime/passes/ToneMappingPass.js.map +1 -1
- package/dist/production-runtime/passes/TransparentPass.d.ts +24 -1
- package/dist/production-runtime/passes/TransparentPass.d.ts.map +1 -1
- package/dist/production-runtime/passes/TransparentPass.js +42 -2
- package/dist/production-runtime/passes/TransparentPass.js.map +1 -1
- package/dist/shadows/CascadeHysteresis.d.ts +67 -0
- package/dist/shadows/CascadeHysteresis.d.ts.map +1 -0
- package/dist/shadows/CascadeHysteresis.js +104 -0
- package/dist/shadows/CascadeHysteresis.js.map +1 -0
- package/dist/shadows/ContactShadows.d.ts +52 -0
- package/dist/shadows/ContactShadows.d.ts.map +1 -1
- package/dist/shadows/ContactShadows.js +122 -0
- package/dist/shadows/ContactShadows.js.map +1 -1
- package/dist/shadows/SpotShadowMaps.d.ts +77 -0
- package/dist/shadows/SpotShadowMaps.d.ts.map +1 -0
- package/dist/shadows/SpotShadowMaps.js +106 -0
- package/dist/shadows/SpotShadowMaps.js.map +1 -0
- package/dist/webgpu/WebGPUPostProcess.d.ts +2 -0
- package/dist/webgpu/WebGPUPostProcess.d.ts.map +1 -1
- package/dist/webgpu/WebGPUPostProcess.js +1 -0
- package/dist/webgpu/WebGPUPostProcess.js.map +1 -1
- package/dist/webgpu/WebGPUPostShaders.d.ts +78 -0
- package/dist/webgpu/WebGPUPostShaders.d.ts.map +1 -0
- package/dist/webgpu/WebGPUPostShaders.js +262 -0
- package/dist/webgpu/WebGPUPostShaders.js.map +1 -0
- package/package.json +3 -3
|
@@ -11,4 +11,44 @@
|
|
|
11
11
|
*/
|
|
12
12
|
/** Joint-palette capacity of the WebGPU skinning path — parity with the WebGL2 `u_jointMatrices[96]`. */
|
|
13
13
|
export declare const MAX_WEBGPU_SKINNING_JOINTS = 96;
|
|
14
|
+
/**
|
|
15
|
+
* Machine-readable reason a skinned mesh takes (or avoids) the CPU skinning fallback.
|
|
16
|
+
* Reported in diagnostics so gates can distinguish "too many joints" from "no GPU path
|
|
17
|
+
* available" instead of lumping every fallback together.
|
|
18
|
+
*/
|
|
19
|
+
export type SkinningCpuFallbackReason =
|
|
20
|
+
/** Joint count fits the uniform array; no fallback involved. */
|
|
21
|
+
"none-uniform-array"
|
|
22
|
+
/** Joint count exceeds the uniform array but fits the data-texture palette path. */
|
|
23
|
+
| "none-data-texture"
|
|
24
|
+
/** Joint count exceeds even the data-texture ceiling — CPU skinning is the only option. */
|
|
25
|
+
| "joint-count-exceeds-data-texture-limit"
|
|
26
|
+
/** The shader has no data-texture palette uniforms, so palettes above the uniform cap fall back. */
|
|
27
|
+
| "shader-lacks-data-texture-palette"
|
|
28
|
+
/** No joint-palette uniforms at all on this shader — CPU skinning is the only option. */
|
|
29
|
+
| "shader-lacks-skinning-uniforms";
|
|
30
|
+
export interface SkinningPaletteDecision {
|
|
31
|
+
readonly jointCount: number;
|
|
32
|
+
/** `"uniform-array"` | `"data-texture"` — the GPU upload path, or `"cpu"` when neither fits. */
|
|
33
|
+
readonly path: "uniform-array" | "data-texture" | "cpu";
|
|
34
|
+
readonly reason: SkinningCpuFallbackReason;
|
|
35
|
+
/** True when the mesh must be skinned on the CPU for this shader/capability set. */
|
|
36
|
+
readonly cpuFallback: boolean;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Decide the joint-palette upload path for a skinned mesh without touching the GPU.
|
|
40
|
+
* Pure and deterministic: same inputs always produce the same decision, so diagnostics
|
|
41
|
+
* and gates can assert on it in unit tests.
|
|
42
|
+
*
|
|
43
|
+
* Mirrors the runtime rule in the forward pass (uniform array up to the uniform cap,
|
|
44
|
+
* data-texture palette above it when the shader declares the uniforms, CPU otherwise)
|
|
45
|
+
* without importing renderer internals.
|
|
46
|
+
*/
|
|
47
|
+
export declare function decideSkinningPalettePath(options: {
|
|
48
|
+
readonly jointCount: number;
|
|
49
|
+
readonly maxUniformJoints?: number;
|
|
50
|
+
readonly maxDataTextureJoints?: number;
|
|
51
|
+
readonly shaderHasDataTexturePalette?: boolean;
|
|
52
|
+
readonly shaderHasSkinningUniforms?: boolean;
|
|
53
|
+
}): SkinningPaletteDecision;
|
|
14
54
|
//# sourceMappingURL=WebGPUSkinningLimits.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebGPUSkinningLimits.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/WebGPUSkinningLimits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,yGAAyG;AACzG,eAAO,MAAM,0BAA0B,KAAK,CAAC"}
|
|
1
|
+
{"version":3,"file":"WebGPUSkinningLimits.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/WebGPUSkinningLimits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,yGAAyG;AACzG,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C;;;;GAIG;AACH,MAAM,MAAM,yBAAyB;AACnC,gEAAgE;AAC9D,oBAAoB;AACtB,oFAAoF;GAClF,mBAAmB;AACrB,2FAA2F;GACzF,wCAAwC;AAC1C,oGAAoG;GAClG,mCAAmC;AACrC,yFAAyF;GACvF,gCAAgC,CAAC;AAErC,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,gGAAgG;IAChG,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,cAAc,GAAG,KAAK,CAAC;IACxD,QAAQ,CAAC,MAAM,EAAE,yBAAyB,CAAC;IAC3C,oFAAoF;IACpF,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IAC/C,QAAQ,CAAC,yBAAyB,CAAC,EAAE,OAAO,CAAC;CAC9C,GAAG,uBAAuB,CAsB1B"}
|
|
@@ -11,4 +11,36 @@
|
|
|
11
11
|
*/
|
|
12
12
|
/** Joint-palette capacity of the WebGPU skinning path — parity with the WebGL2 `u_jointMatrices[96]`. */
|
|
13
13
|
export const MAX_WEBGPU_SKINNING_JOINTS = 96;
|
|
14
|
+
/**
|
|
15
|
+
* Decide the joint-palette upload path for a skinned mesh without touching the GPU.
|
|
16
|
+
* Pure and deterministic: same inputs always produce the same decision, so diagnostics
|
|
17
|
+
* and gates can assert on it in unit tests.
|
|
18
|
+
*
|
|
19
|
+
* Mirrors the runtime rule in the forward pass (uniform array up to the uniform cap,
|
|
20
|
+
* data-texture palette above it when the shader declares the uniforms, CPU otherwise)
|
|
21
|
+
* without importing renderer internals.
|
|
22
|
+
*/
|
|
23
|
+
export function decideSkinningPalettePath(options) {
|
|
24
|
+
const jointCount = options.jointCount;
|
|
25
|
+
if (!Number.isInteger(jointCount) || jointCount < 0) {
|
|
26
|
+
throw new Error("decideSkinningPalettePath jointCount must be a non-negative integer.");
|
|
27
|
+
}
|
|
28
|
+
const maxUniformJoints = options.maxUniformJoints ?? MAX_WEBGPU_SKINNING_JOINTS;
|
|
29
|
+
const maxDataTextureJoints = options.maxDataTextureJoints ?? MAX_WEBGPU_SKINNING_JOINTS;
|
|
30
|
+
const shaderHasSkinningUniforms = options.shaderHasSkinningUniforms ?? true;
|
|
31
|
+
const shaderHasDataTexturePalette = options.shaderHasDataTexturePalette ?? true;
|
|
32
|
+
if (jointCount <= maxUniformJoints && shaderHasSkinningUniforms) {
|
|
33
|
+
return { jointCount, path: "uniform-array", reason: "none-uniform-array", cpuFallback: false };
|
|
34
|
+
}
|
|
35
|
+
if (!shaderHasSkinningUniforms) {
|
|
36
|
+
return { jointCount, path: "cpu", reason: "shader-lacks-skinning-uniforms", cpuFallback: true };
|
|
37
|
+
}
|
|
38
|
+
if (jointCount <= maxDataTextureJoints && shaderHasDataTexturePalette) {
|
|
39
|
+
return { jointCount, path: "data-texture", reason: "none-data-texture", cpuFallback: false };
|
|
40
|
+
}
|
|
41
|
+
if (!shaderHasDataTexturePalette) {
|
|
42
|
+
return { jointCount, path: "cpu", reason: "shader-lacks-data-texture-palette", cpuFallback: true };
|
|
43
|
+
}
|
|
44
|
+
return { jointCount, path: "cpu", reason: "joint-count-exceeds-data-texture-limit", cpuFallback: true };
|
|
45
|
+
}
|
|
14
46
|
//# sourceMappingURL=WebGPUSkinningLimits.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebGPUSkinningLimits.js","sourceRoot":"","sources":["../../../../packages/rendering/src/WebGPUSkinningLimits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,yGAAyG;AACzG,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"WebGPUSkinningLimits.js","sourceRoot":"","sources":["../../../../packages/rendering/src/WebGPUSkinningLimits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,yGAAyG;AACzG,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AA4B7C;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAMzC;IACC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC;IACD,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,0BAA0B,CAAC;IAChF,MAAM,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,IAAI,0BAA0B,CAAC;IACxF,MAAM,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,IAAI,IAAI,CAAC;IAC5E,MAAM,2BAA2B,GAAG,OAAO,CAAC,2BAA2B,IAAI,IAAI,CAAC;IAChF,IAAI,UAAU,IAAI,gBAAgB,IAAI,yBAAyB,EAAE,CAAC;QAChE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,oBAAoB,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACjG,CAAC;IACD,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAC/B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,gCAAgC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAClG,CAAC;IACD,IAAI,UAAU,IAAI,oBAAoB,IAAI,2BAA2B,EAAE,CAAC;QACtE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAC/F,CAAC;IACD,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACjC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,mCAAmC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACrG,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,wCAAwC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAC1G,CAAC"}
|
|
@@ -6,10 +6,19 @@ export interface CollisionPlane {
|
|
|
6
6
|
restitution?: number;
|
|
7
7
|
mode?: "bounce" | "kill";
|
|
8
8
|
}
|
|
9
|
+
export interface GPUCollisionPlane {
|
|
10
|
+
readonly normal: Vector3Like;
|
|
11
|
+
readonly constant: number;
|
|
12
|
+
readonly restitution: number;
|
|
13
|
+
readonly killOnContact: boolean;
|
|
14
|
+
}
|
|
9
15
|
export declare class CollisionModule implements ParticleModule {
|
|
10
16
|
readonly name = "CollisionModule";
|
|
17
|
+
readonly supportsGPU = true;
|
|
11
18
|
readonly plane: Required<CollisionPlane>;
|
|
12
19
|
constructor(plane: CollisionPlane);
|
|
20
|
+
/** Encode this plane for the WGSL compute kernel (analytic-plane slot). */
|
|
21
|
+
toGPUPlane(): GPUCollisionPlane;
|
|
13
22
|
afterIntegrate(particle: Particle, _context: ParticleUpdateContext): void;
|
|
14
23
|
}
|
|
15
24
|
//# sourceMappingURL=CollisionModule.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollisionModule.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/effects/CollisionModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC1B;AAeD,qBAAa,eAAgB,YAAW,cAAc;IACpD,QAAQ,CAAC,IAAI,qBAAqB;IAClC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;gBAE7B,KAAK,EAAE,cAAc;IAajC,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,qBAAqB,GAAG,IAAI;CAuB1E"}
|
|
1
|
+
{"version":3,"file":"CollisionModule.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/effects/CollisionModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC1B;AAeD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED,qBAAa,eAAgB,YAAW,cAAc;IACpD,QAAQ,CAAC,IAAI,qBAAqB;IAClC,QAAQ,CAAC,WAAW,QAAQ;IAC5B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;gBAE7B,KAAK,EAAE,cAAc;IAajC,2EAA2E;IAC3E,UAAU,IAAI,iBAAiB;IAS/B,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,qBAAqB,GAAG,IAAI;CAuB1E"}
|
|
@@ -10,6 +10,7 @@ function normalize(value) {
|
|
|
10
10
|
}
|
|
11
11
|
export class CollisionModule {
|
|
12
12
|
name = "CollisionModule";
|
|
13
|
+
supportsGPU = true;
|
|
13
14
|
plane;
|
|
14
15
|
constructor(plane) {
|
|
15
16
|
this.plane = {
|
|
@@ -22,6 +23,15 @@ export class CollisionModule {
|
|
|
22
23
|
throw new RangeError("Collision plane constant and restitution must be finite numbers.");
|
|
23
24
|
}
|
|
24
25
|
}
|
|
26
|
+
/** Encode this plane for the WGSL compute kernel (analytic-plane slot). */
|
|
27
|
+
toGPUPlane() {
|
|
28
|
+
return {
|
|
29
|
+
normal: { ...this.plane.normal },
|
|
30
|
+
constant: this.plane.constant,
|
|
31
|
+
restitution: this.plane.restitution,
|
|
32
|
+
killOnContact: this.plane.mode === "kill",
|
|
33
|
+
};
|
|
34
|
+
}
|
|
25
35
|
afterIntegrate(particle, _context) {
|
|
26
36
|
const distance = dot(this.plane.normal, particle.position) + this.plane.constant;
|
|
27
37
|
if (distance >= 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollisionModule.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/effects/CollisionModule.ts"],"names":[],"mappings":"AAUA,SAAS,GAAG,CAAC,IAAiB,EAAE,KAAkB;IAChD,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,SAAS,CAAC,KAAkB;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACrD,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,MAAM,IAAI,UAAU,CAAC,+CAA+C,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC;AAC3E,CAAC;
|
|
1
|
+
{"version":3,"file":"CollisionModule.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/effects/CollisionModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,10 +6,17 @@ export interface ColorKeyframe {
|
|
|
6
6
|
color: ColorLike;
|
|
7
7
|
}
|
|
8
8
|
export declare function sampleColorGradient(keyframes: readonly ColorKeyframe[], time: number): ColorLike;
|
|
9
|
+
/**
|
|
10
|
+
* Pack a color/alpha-over-life gradient into a fixed-stop RGBA LUT for the
|
|
11
|
+
* compute kernel. Alpha-over-life travels in the fourth channel.
|
|
12
|
+
*/
|
|
13
|
+
export declare function encodeColorGradientLUT(keyframes: readonly ColorKeyframe[], stops?: number): Float32Array;
|
|
9
14
|
export declare class ColorModule implements ParticleModule {
|
|
10
15
|
readonly name = "ColorModule";
|
|
16
|
+
readonly supportsGPU = true;
|
|
11
17
|
readonly gradient: readonly ColorKeyframe[];
|
|
12
18
|
constructor(gradient: readonly ColorKeyframe[]);
|
|
13
19
|
update(particle: Particle, context: ParticleUpdateContext): void;
|
|
20
|
+
toGPUColorGradient(stops?: number): Float32Array;
|
|
14
21
|
}
|
|
15
22
|
//# sourceMappingURL=ColorModule.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorModule.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/effects/ColorModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;CAClB;AAgBD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAsBhG;AAED,qBAAa,WAAY,YAAW,cAAc;IAChD,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;gBAEhC,QAAQ,EAAE,SAAS,aAAa,EAAE;IAK9C,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"ColorModule.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/effects/ColorModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;CAClB;AAgBD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAsBhG;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,EAAE,KAAK,SAAK,GAAG,YAAY,CAcpG;AAED,qBAAa,WAAY,YAAW,cAAc;IAChD,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,WAAW,QAAQ;IAC5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;gBAEhC,QAAQ,EAAE,SAAS,aAAa,EAAE;IAK9C,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,GAAG,IAAI;IAIhE,kBAAkB,CAAC,KAAK,SAAK,GAAG,YAAY;CAG7C"}
|
|
@@ -31,8 +31,28 @@ export function sampleColorGradient(keyframes, time) {
|
|
|
31
31
|
}
|
|
32
32
|
return { ...keyframes[keyframes.length - 1].color };
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Pack a color/alpha-over-life gradient into a fixed-stop RGBA LUT for the
|
|
36
|
+
* compute kernel. Alpha-over-life travels in the fourth channel.
|
|
37
|
+
*/
|
|
38
|
+
export function encodeColorGradientLUT(keyframes, stops = 16) {
|
|
39
|
+
validateGradient(keyframes);
|
|
40
|
+
if (!Number.isInteger(stops) || stops < 2 || stops > 64) {
|
|
41
|
+
throw new RangeError("Color gradient LUT stops must be an integer in [2, 64].");
|
|
42
|
+
}
|
|
43
|
+
const lut = new Float32Array(stops * 4);
|
|
44
|
+
for (let index = 0; index < stops; index += 1) {
|
|
45
|
+
const color = sampleColorGradient(keyframes, stops === 1 ? 0 : index / (stops - 1));
|
|
46
|
+
lut[index * 4] = color.r;
|
|
47
|
+
lut[index * 4 + 1] = color.g;
|
|
48
|
+
lut[index * 4 + 2] = color.b;
|
|
49
|
+
lut[index * 4 + 3] = color.a;
|
|
50
|
+
}
|
|
51
|
+
return lut;
|
|
52
|
+
}
|
|
34
53
|
export class ColorModule {
|
|
35
54
|
name = "ColorModule";
|
|
55
|
+
supportsGPU = true;
|
|
36
56
|
gradient;
|
|
37
57
|
constructor(gradient) {
|
|
38
58
|
this.gradient = gradient;
|
|
@@ -41,5 +61,8 @@ export class ColorModule {
|
|
|
41
61
|
update(particle, context) {
|
|
42
62
|
particle.color = sampleColorGradient(this.gradient, context.normalizedAge);
|
|
43
63
|
}
|
|
64
|
+
toGPUColorGradient(stops = 16) {
|
|
65
|
+
return encodeColorGradientLUT(this.gradient, stops);
|
|
66
|
+
}
|
|
44
67
|
}
|
|
45
68
|
//# sourceMappingURL=ColorModule.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorModule.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/effects/ColorModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,MAAM,eAAe,CAAC;AAS/C,SAAS,gBAAgB,CAAC,SAAmC;IAC3D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,UAAU,CAAC,mDAAmD,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,QAAQ,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC;IACzC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,GAAG,QAAQ,EAAE,CAAC;YACvE,MAAM,IAAI,UAAU,CAAC,2EAA2E,CAAC,CAAC;QACpG,CAAC;QACD,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,SAAmC,EAAE,IAAY;IACnF,IAAI,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YAE5C,OAAO;gBACL,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK;gBAC/D,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK;gBAC/D,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK;gBAC/D,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK;aAChE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,OAAO,WAAW;IACb,IAAI,GAAG,aAAa,CAAC;IACrB,QAAQ,CAA2B;IAE5C,YAAY,QAAkC;QAC5C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,QAAkB,EAAE,OAA8B;QACvD,QAAQ,CAAC,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7E,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"ColorModule.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/effects/ColorModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,4 +8,39 @@ export declare class ForceModule implements ParticleModule {
|
|
|
8
8
|
update(particle: Particle, context: ParticleUpdateContext): void;
|
|
9
9
|
}
|
|
10
10
|
export declare function gravityForce(gravity?: number): ForceModule;
|
|
11
|
+
export interface WindModuleOptions {
|
|
12
|
+
readonly direction: Vector3Like;
|
|
13
|
+
readonly strength?: number;
|
|
14
|
+
/** Gust amplitude as a fraction of strength (0 = steady wind). */
|
|
15
|
+
readonly gustAmplitude?: number;
|
|
16
|
+
readonly gustDirection?: Vector3Like;
|
|
17
|
+
readonly gustFrequency?: number;
|
|
18
|
+
readonly gustSpeed?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface GPUWindParams {
|
|
21
|
+
readonly direction: Vector3Like;
|
|
22
|
+
readonly strength: number;
|
|
23
|
+
readonly gustAmplitude: number;
|
|
24
|
+
readonly gustDirection: Vector3Like;
|
|
25
|
+
readonly gustFrequency: number;
|
|
26
|
+
readonly gustSpeed: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Analytic wind field with a traveling sinusoidal gust. The CPU fallback
|
|
30
|
+
* evaluates the same closed form the WGSL kernel implements, so the wind
|
|
31
|
+
* costs zero CPU per-particle work on the GPU path.
|
|
32
|
+
*/
|
|
33
|
+
export declare class WindModule implements ParticleModule {
|
|
34
|
+
readonly name = "WindModule";
|
|
35
|
+
readonly supportsGPU = true;
|
|
36
|
+
readonly direction: Vector3Like;
|
|
37
|
+
readonly strength: number;
|
|
38
|
+
readonly gustAmplitude: number;
|
|
39
|
+
readonly gustDirection: Vector3Like;
|
|
40
|
+
readonly gustFrequency: number;
|
|
41
|
+
readonly gustSpeed: number;
|
|
42
|
+
constructor(options: WindModuleOptions);
|
|
43
|
+
update(particle: Particle, context: ParticleUpdateContext): void;
|
|
44
|
+
toGPUWind(): GPUWindParams;
|
|
45
|
+
}
|
|
11
46
|
//# sourceMappingURL=ForceModule.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ForceModule.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/effects/ForceModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjF,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,KAAK,WAAW,CAAC,CAAC;AAE/G,qBAAa,WAAY,YAAW,cAAc;IAChD,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;gBAEjB,KAAK,EAAE,YAAY;IAI/B,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,GAAG,IAAI;CAOjE;AAED,wBAAgB,YAAY,CAAC,OAAO,SAAQ,GAAG,WAAW,CAEzD"}
|
|
1
|
+
{"version":3,"file":"ForceModule.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/effects/ForceModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjF,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,KAAK,WAAW,CAAC,CAAC;AAE/G,qBAAa,WAAY,YAAW,cAAc;IAChD,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;gBAEjB,KAAK,EAAE,YAAY;IAI/B,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,GAAG,IAAI;CAOjE;AAED,wBAAgB,YAAY,CAAC,OAAO,SAAQ,GAAG,WAAW,CAEzD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,kEAAkE;IAClE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;GAIG;AACH,qBAAa,UAAW,YAAW,cAAc;IAC/C,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,WAAW,QAAQ;IAC5B,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,OAAO,EAAE,iBAAiB;IAgBtC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,GAAG,IAAI;IAahE,SAAS,IAAI,aAAa;CAU3B"}
|
|
@@ -14,4 +14,53 @@ export class ForceModule {
|
|
|
14
14
|
export function gravityForce(gravity = -9.81) {
|
|
15
15
|
return new ForceModule({ x: 0, y: gravity, z: 0 });
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Analytic wind field with a traveling sinusoidal gust. The CPU fallback
|
|
19
|
+
* evaluates the same closed form the WGSL kernel implements, so the wind
|
|
20
|
+
* costs zero CPU per-particle work on the GPU path.
|
|
21
|
+
*/
|
|
22
|
+
export class WindModule {
|
|
23
|
+
name = "WindModule";
|
|
24
|
+
supportsGPU = true;
|
|
25
|
+
direction;
|
|
26
|
+
strength;
|
|
27
|
+
gustAmplitude;
|
|
28
|
+
gustDirection;
|
|
29
|
+
gustFrequency;
|
|
30
|
+
gustSpeed;
|
|
31
|
+
constructor(options) {
|
|
32
|
+
this.direction = { ...options.direction };
|
|
33
|
+
this.strength = options.strength ?? 1;
|
|
34
|
+
this.gustAmplitude = options.gustAmplitude ?? 0;
|
|
35
|
+
this.gustDirection = { ...(options.gustDirection ?? { x: 1, y: 0, z: 0 }) };
|
|
36
|
+
this.gustFrequency = options.gustFrequency ?? 0.5;
|
|
37
|
+
this.gustSpeed = options.gustSpeed ?? 0.8;
|
|
38
|
+
if (!Number.isFinite(this.strength) || !Number.isFinite(this.gustAmplitude) ||
|
|
39
|
+
!Number.isFinite(this.gustFrequency) || !Number.isFinite(this.gustSpeed)) {
|
|
40
|
+
throw new RangeError("WindModule strength and gust parameters must be finite numbers.");
|
|
41
|
+
}
|
|
42
|
+
if (this.gustAmplitude < 0) {
|
|
43
|
+
throw new RangeError("WindModule gustAmplitude must be non-negative.");
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
update(particle, context) {
|
|
47
|
+
const alongWind = particle.position.x * this.gustDirection.x +
|
|
48
|
+
particle.position.y * this.gustDirection.y +
|
|
49
|
+
particle.position.z * this.gustDirection.z;
|
|
50
|
+
const gust = 1 + this.gustAmplitude * Math.sin(alongWind * this.gustFrequency + context.elapsedTime * this.gustSpeed);
|
|
51
|
+
particle.velocity.x += this.direction.x * this.strength * gust * context.deltaTime;
|
|
52
|
+
particle.velocity.y += this.direction.y * this.strength * gust * context.deltaTime;
|
|
53
|
+
particle.velocity.z += this.direction.z * this.strength * gust * context.deltaTime;
|
|
54
|
+
}
|
|
55
|
+
toGPUWind() {
|
|
56
|
+
return {
|
|
57
|
+
direction: { ...this.direction },
|
|
58
|
+
strength: this.strength,
|
|
59
|
+
gustAmplitude: this.gustAmplitude,
|
|
60
|
+
gustDirection: { ...this.gustDirection },
|
|
61
|
+
gustFrequency: this.gustFrequency,
|
|
62
|
+
gustSpeed: this.gustSpeed,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
}
|
|
17
66
|
//# sourceMappingURL=ForceModule.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ForceModule.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/effects/ForceModule.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,WAAW;IACb,IAAI,GAAG,aAAa,CAAC;IACrB,KAAK,CAAe;IAE7B,YAAY,KAAmB;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,QAAkB,EAAE,OAA8B;QACvD,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAE5F,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;QACnD,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;QACnD,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IACrD,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAAC,OAAO,GAAG,CAAC,IAAI;IAC1C,OAAO,IAAI,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACrD,CAAC"}
|
|
1
|
+
{"version":3,"file":"ForceModule.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/effects/ForceModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,29 @@ export interface GPUParticleUpdateInput {
|
|
|
10
10
|
accelerations?: Float32Array;
|
|
11
11
|
deltaTime: number;
|
|
12
12
|
count: number;
|
|
13
|
+
/**
|
|
14
|
+
* Optional A4 effect set (wind, curl turbulence, analytic planes,
|
|
15
|
+
* heightfield ground, sub-emitters, life curves, lighting, trails).
|
|
16
|
+
* Absent = the proven legacy advection path, bit-identical to before.
|
|
17
|
+
* Honor the velocities.w contract: when effects.lifeCurves is set, the w
|
|
18
|
+
* component of each velocity vec4 carries that particle's lifetime so the
|
|
19
|
+
* kernel can evaluate normalized age on GPU.
|
|
20
|
+
*/
|
|
21
|
+
effects?: GPUParticleEffectsInput;
|
|
22
|
+
/**
|
|
23
|
+
* Current per-particle color/size snapshot (count * 8 floats: rgba, then
|
|
24
|
+
* size in the fifth lane) uploaded as the lighting/curve base when
|
|
25
|
+
* effects request life curves or lighting. Omit when effects is absent.
|
|
26
|
+
*/
|
|
27
|
+
baseAttributes?: Float32Array;
|
|
28
|
+
/**
|
|
29
|
+
* Previous trail ring (count * depth * 4 floats, newest-first with ages)
|
|
30
|
+
* used to seed the ring so history accumulates across calls. Omit (or pass
|
|
31
|
+
* a short buffer) to start fresh: slot 0 takes the live position/age and
|
|
32
|
+
* older slots start expired. ParticleSystem feeds back the previous
|
|
33
|
+
* result's trailPositions row-per-particle-id for this.
|
|
34
|
+
*/
|
|
35
|
+
trailHistory?: Float32Array;
|
|
13
36
|
}
|
|
14
37
|
export interface GPUParticleUpdateResult {
|
|
15
38
|
backend: "webgpu";
|
|
@@ -17,6 +40,113 @@ export interface GPUParticleUpdateResult {
|
|
|
17
40
|
workgroups: number;
|
|
18
41
|
positions: Float32Array;
|
|
19
42
|
velocities: Float32Array;
|
|
43
|
+
/** Per-particle child-spawn counts; present only when effects requested sub-emitters. */
|
|
44
|
+
spawnRequests?: Uint32Array;
|
|
45
|
+
/**
|
|
46
|
+
* GPU-evaluated size/color-over-life: count * 2 vec4 entries
|
|
47
|
+
* (rgba, then size in x). Present only when effects requested life
|
|
48
|
+
* curves or lighting. A compute kill is signaled as positions w = -1.
|
|
49
|
+
*/
|
|
50
|
+
attributes?: Float32Array;
|
|
51
|
+
/** GPU trail ring: count * depth vec4 entries (xyz, age), newest first. */
|
|
52
|
+
trailPositions?: Float32Array;
|
|
53
|
+
}
|
|
54
|
+
/** Effect flag bits for the extended compute uniform. */
|
|
55
|
+
export declare const GPU_PARTICLE_EFFECT_WIND = 1;
|
|
56
|
+
export declare const GPU_PARTICLE_EFFECT_TURBULENCE = 2;
|
|
57
|
+
export declare const GPU_PARTICLE_EFFECT_PLANES = 4;
|
|
58
|
+
export declare const GPU_PARTICLE_EFFECT_HEIGHTFIELD = 8;
|
|
59
|
+
export declare const GPU_PARTICLE_EFFECT_SUB_EMITTERS = 16;
|
|
60
|
+
export declare const GPU_PARTICLE_EFFECT_LIFE_CURVES = 32;
|
|
61
|
+
export declare const GPU_PARTICLE_EFFECT_LIGHTING = 64;
|
|
62
|
+
export declare const GPU_PARTICLE_EFFECT_TRAILS = 128;
|
|
63
|
+
export declare const GPU_PARTICLE_EFFECT_SIZE_CURVES = 256;
|
|
64
|
+
export declare const GPU_PARTICLE_MAX_PLANES = 3;
|
|
65
|
+
export declare const GPU_PARTICLE_MAX_SUB_EMITTERS = 2;
|
|
66
|
+
export declare const GPU_PARTICLE_CURVE_STOPS = 16;
|
|
67
|
+
export declare const GPU_PARTICLE_UNIFORM_BYTE_LENGTH = 272;
|
|
68
|
+
export interface GPUParticleWindEffect {
|
|
69
|
+
readonly direction: {
|
|
70
|
+
readonly x: number;
|
|
71
|
+
readonly y: number;
|
|
72
|
+
readonly z: number;
|
|
73
|
+
};
|
|
74
|
+
readonly strength: number;
|
|
75
|
+
readonly gustAmplitude: number;
|
|
76
|
+
readonly gustDirection: {
|
|
77
|
+
readonly x: number;
|
|
78
|
+
readonly y: number;
|
|
79
|
+
readonly z: number;
|
|
80
|
+
};
|
|
81
|
+
readonly gustFrequency: number;
|
|
82
|
+
readonly gustSpeed: number;
|
|
83
|
+
}
|
|
84
|
+
export interface GPUParticleTurbulenceEffect {
|
|
85
|
+
readonly strength: number;
|
|
86
|
+
readonly scale: number;
|
|
87
|
+
readonly flowSpeed: number;
|
|
88
|
+
/** Packed curl-noise LUT, resolution^3 vec4 entries. GPU requires resolution 8. */
|
|
89
|
+
readonly lut: Float32Array;
|
|
90
|
+
readonly lutResolution: number;
|
|
91
|
+
}
|
|
92
|
+
export interface GPUParticlePlaneEffect {
|
|
93
|
+
readonly normal: {
|
|
94
|
+
readonly x: number;
|
|
95
|
+
readonly y: number;
|
|
96
|
+
readonly z: number;
|
|
97
|
+
};
|
|
98
|
+
readonly constant: number;
|
|
99
|
+
readonly restitution: number;
|
|
100
|
+
readonly killOnContact: boolean;
|
|
101
|
+
}
|
|
102
|
+
export interface GPUParticleHeightfieldEffect {
|
|
103
|
+
readonly originX: number;
|
|
104
|
+
readonly originZ: number;
|
|
105
|
+
readonly cellSize: number;
|
|
106
|
+
readonly columns: number;
|
|
107
|
+
readonly rows: number;
|
|
108
|
+
readonly heights: Float32Array;
|
|
109
|
+
readonly restitution: number;
|
|
110
|
+
readonly killOnContact: boolean;
|
|
111
|
+
}
|
|
112
|
+
export interface GPUParticleSubEmitterEffect {
|
|
113
|
+
readonly triggerAge: number;
|
|
114
|
+
readonly chance: number;
|
|
115
|
+
readonly childCount: number;
|
|
116
|
+
}
|
|
117
|
+
export interface GPUParticleLifeCurvesEffect {
|
|
118
|
+
/**
|
|
119
|
+
* stops RGBA entries (stops * 4 floats). Present when a ColorModule is
|
|
120
|
+
* covered; absent sides are never sampled by the kernel.
|
|
121
|
+
*/
|
|
122
|
+
readonly colors?: Float32Array;
|
|
123
|
+
/** stops size entries. Present when a SizeModule is covered. */
|
|
124
|
+
readonly sizes?: Float32Array;
|
|
125
|
+
readonly stops: number;
|
|
126
|
+
}
|
|
127
|
+
export interface GPUParticleLightingEffect {
|
|
128
|
+
readonly ambient: readonly [number, number, number];
|
|
129
|
+
readonly keyDirection: {
|
|
130
|
+
readonly x: number;
|
|
131
|
+
readonly y: number;
|
|
132
|
+
readonly z: number;
|
|
133
|
+
};
|
|
134
|
+
readonly diffuseStrength: number;
|
|
135
|
+
}
|
|
136
|
+
export interface GPUParticleEffectsInput {
|
|
137
|
+
readonly time?: number;
|
|
138
|
+
readonly seed?: number;
|
|
139
|
+
readonly wind?: GPUParticleWindEffect;
|
|
140
|
+
readonly turbulence?: GPUParticleTurbulenceEffect;
|
|
141
|
+
/** Analytic collision planes, applied in order. Max 3. */
|
|
142
|
+
readonly planes?: readonly GPUParticlePlaneEffect[];
|
|
143
|
+
readonly heightfield?: GPUParticleHeightfieldEffect;
|
|
144
|
+
/** Sub-emitter triggers. Max 2. */
|
|
145
|
+
readonly subEmitters?: readonly GPUParticleSubEmitterEffect[];
|
|
146
|
+
readonly lifeCurves?: GPUParticleLifeCurvesEffect;
|
|
147
|
+
readonly lighting?: GPUParticleLightingEffect;
|
|
148
|
+
/** Trail history depth per particle (1..8). Enables the GPU trail ring. */
|
|
149
|
+
readonly trailPointsPerParticle?: number;
|
|
20
150
|
}
|
|
21
151
|
export interface GPUParticleSpawnInput {
|
|
22
152
|
positions: Float32Array;
|
|
@@ -34,6 +164,12 @@ export interface GPUParticleSpawnResult {
|
|
|
34
164
|
}
|
|
35
165
|
export interface GPUParticleBackend {
|
|
36
166
|
readonly capabilities: GPUParticleBackendCapabilities;
|
|
167
|
+
/**
|
|
168
|
+
* True when update() honors GPUParticleUpdateInput.effects (the A4
|
|
169
|
+
* extended compute path). Backends without this flag ignore effects, and
|
|
170
|
+
* ParticleSystem keeps their CPU module hooks running instead.
|
|
171
|
+
*/
|
|
172
|
+
readonly supportsEffects?: boolean;
|
|
37
173
|
initialize(): Promise<void>;
|
|
38
174
|
spawn?(input: GPUParticleSpawnInput): Promise<GPUParticleSpawnResult>;
|
|
39
175
|
update(input: GPUParticleUpdateInput): Promise<GPUParticleUpdateResult>;
|
|
@@ -121,6 +257,7 @@ interface WebGPUComputePassEncoderLike {
|
|
|
121
257
|
export interface WebGPUParticleBackendOptions {
|
|
122
258
|
gpu?: WebGPULike;
|
|
123
259
|
shaderSource?: string;
|
|
260
|
+
effectsShaderSource?: string;
|
|
124
261
|
}
|
|
125
262
|
export declare function detectGPUParticleBackend(globalScope?: Pick<typeof globalThis, "navigator">): GPUParticleBackendCapabilities;
|
|
126
263
|
export declare function queryGPUParticleBackendCapabilities(globalScope?: Pick<typeof globalThis, "navigator">): Promise<GPUParticleBackendCapabilities>;
|
|
@@ -134,20 +271,69 @@ export declare class UnsupportedGPUParticleBackend implements GPUParticleBackend
|
|
|
134
271
|
}
|
|
135
272
|
export declare class WebGPUParticleBackend implements GPUParticleBackend {
|
|
136
273
|
readonly capabilities: GPUParticleBackendCapabilities;
|
|
274
|
+
readonly supportsEffects = true;
|
|
137
275
|
private readonly gpu;
|
|
138
276
|
private readonly shaderSource;
|
|
277
|
+
private readonly effectsShaderSource;
|
|
139
278
|
private adapter;
|
|
140
279
|
private device;
|
|
141
280
|
private updatePipeline;
|
|
142
281
|
private spawnPipeline;
|
|
282
|
+
private effectsPipeline;
|
|
143
283
|
constructor(options?: WebGPUParticleBackendOptions);
|
|
144
284
|
initialize(): Promise<void>;
|
|
145
285
|
spawn(input: GPUParticleSpawnInput): Promise<GPUParticleSpawnResult>;
|
|
146
286
|
update(input: GPUParticleUpdateInput): Promise<GPUParticleUpdateResult>;
|
|
287
|
+
private updateWithEffects;
|
|
147
288
|
dispose(): void;
|
|
148
289
|
private requireDevice;
|
|
149
290
|
private requireUpdatePipeline;
|
|
150
291
|
private requireSpawnPipeline;
|
|
292
|
+
private requireEffectsPipeline;
|
|
293
|
+
}
|
|
294
|
+
export interface EncodedGPUParticleEffects {
|
|
295
|
+
readonly uniform: ArrayBuffer;
|
|
296
|
+
readonly flags: number;
|
|
297
|
+
readonly trailDepth: number;
|
|
298
|
+
readonly captureSpawnRequests: boolean;
|
|
299
|
+
readonly captureAttributes: boolean;
|
|
300
|
+
readonly captureTrails: boolean;
|
|
301
|
+
/**
|
|
302
|
+
* Single read-only field buffer (f32 words) shared by binding 4 so the
|
|
303
|
+
* kernel fits the default maxStorageBuffersPerShaderStage limit of 8:
|
|
304
|
+
* [curl LUT (2048 words when TURB, else 4 zero words),
|
|
305
|
+
* heights (columns*rows when HEIGHT, else 1 zero word),
|
|
306
|
+
* life curves (128 words: slots 0..15 color RGBA, 16..31 size in x)].
|
|
307
|
+
*/
|
|
308
|
+
readonly fieldData: Float32Array;
|
|
151
309
|
}
|
|
310
|
+
/**
|
|
311
|
+
* Pure encoder for the extended compute uniform. The 272-byte layout is:
|
|
312
|
+
* header (deltaTime f32 @0, count u32 @4, time f32 @8, flags u32 @12),
|
|
313
|
+
* then 16 vec4 slots: wind, windGust, windTurb, fxCounts, 3x(plane, planeMisc),
|
|
314
|
+
* sub0, sub1, height0, height1, light0, light1. Unit-tested byte-for-byte, and
|
|
315
|
+
* mirrored by the fake devices in tests plus the WGSL kernel below.
|
|
316
|
+
*/
|
|
317
|
+
export declare function encodeGPUParticleEffects(effects: GPUParticleEffectsInput, deltaTime: number, count: number): EncodedGPUParticleEffects;
|
|
318
|
+
/**
|
|
319
|
+
* Snapshot helper for the base-attributes buffer. Missing lanes default to
|
|
320
|
+
* opaque white / size 1 so lighting without a color module stays sane.
|
|
321
|
+
*/
|
|
322
|
+
export declare function createBaseAttributeSnapshot(baseAttributes: Float32Array | undefined, count: number): Float32Array;
|
|
323
|
+
/**
|
|
324
|
+
* Seed the GPU trail ring from the caller's previous result so history
|
|
325
|
+
* accumulates across calls. A missing or short history starts fresh: slot 0
|
|
326
|
+
* takes the live position/age and older slots carry +Infinity age so
|
|
327
|
+
* decoders drop them until real history exists.
|
|
328
|
+
*/
|
|
329
|
+
export declare function snapshotTrailHistory(trailHistory: Float32Array | undefined, positions: Float32Array, count: number, depth: number): Float32Array;
|
|
330
|
+
export declare function createTrailRingInit(positions: Float32Array, count: number, depth: number): Float32Array;
|
|
331
|
+
/**
|
|
332
|
+
* Extended A4 compute kernel. Header offsets mirror encodeGPUParticleEffects:
|
|
333
|
+
* deltaTime f32 @0, count u32 @4, time f32 @8, flags u32 @12, then 16 vec4
|
|
334
|
+
* slots (wind, windGust, windTurb, fxCounts, 3x plane pairs, sub0, sub1,
|
|
335
|
+
* height0, height1, light0, light1). Kill signaling: positions w = -1.
|
|
336
|
+
*/
|
|
337
|
+
export declare function createEffectsParticleComputeShader(): string;
|
|
152
338
|
export {};
|
|
153
339
|
//# sourceMappingURL=GPUParticleBackend.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GPUParticleBackend.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/effects/GPUParticleBackend.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,YAAY,CAAC;IACxB,UAAU,EAAE,YAAY,CAAC;IACzB,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"GPUParticleBackend.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/effects/GPUParticleBackend.ts"],"names":[],"mappings":"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"}
|