@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebGPUPostProcess.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/webgpu/WebGPUPostProcess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"WebGPUPostProcess.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/webgpu/WebGPUPostProcess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAE9E,OAAO,EACL,yBAAyB,EACzB,gCAAgC,EAChC,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,kBAAkB,EAClB,2BAA2B,EAC3B,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* muse3jsparity-PRD J2 — native WebGPU post-process WGSL sources.
|
|
3
|
+
*
|
|
4
|
+
* Fullscreen-triangle passes that run on the real WebGPU device
|
|
5
|
+
* (WebGPUDevice.executeWebGPUBloom / executeWebGPUColorGrade /
|
|
6
|
+
* executeWebGPUFxaa). Backend-agnostic image work: bright-extract with a
|
|
7
|
+
* soft-knee threshold, a separable-Gaussian mip pyramid, energy-weighted
|
|
8
|
+
* composite, exposure/contrast/saturation color grade, and an FXAA
|
|
9
|
+
* luma-edge pass. TAA is deliberately NOT here: it needs velocity +
|
|
10
|
+
* history inputs that do not exist on the WebGPU path (same withheld
|
|
11
|
+
* doctrine as the root A3 motion-blur/TAA nodes).
|
|
12
|
+
*/
|
|
13
|
+
export declare const WEBGPU_POST_VERTEX_WGSL = "struct PostVertexOutput {\n @builtin(position) position: vec4<f32>,\n @location(0) uv: vec2<f32>,\n};\n\n@vertex\nfn vs_post(@builtin(vertex_index) index: u32) -> PostVertexOutput {\n var output: PostVertexOutput;\n let corners = array<vec2<f32>, 3>(\n vec2<f32>(-1.0, -1.0),\n vec2<f32>(3.0, -1.0),\n vec2<f32>(-1.0, 3.0)\n );\n let corner = corners[index];\n output.position = vec4<f32>(corner, 0.0, 1.0);\n output.uv = vec2<f32>((corner.x + 1.0) * 0.5, 1.0 - (corner.y + 1.0) * 0.5);\n return output;\n}\n";
|
|
14
|
+
export declare function webgpuBrightExtractFragment(): string;
|
|
15
|
+
export declare function webgpuBlurFragment(): string;
|
|
16
|
+
export interface WebGPUCompositeParams {
|
|
17
|
+
/** Per-mip weights, index 0 = finest. Energy-preserving when they sum to 1. */
|
|
18
|
+
readonly weights: readonly number[];
|
|
19
|
+
/** Global gain (bloom strength). */
|
|
20
|
+
readonly strength: number;
|
|
21
|
+
}
|
|
22
|
+
export declare const WEBGPU_BLOOM_MAX_MIPS = 5;
|
|
23
|
+
export declare function webgpuBloomCompositeFragment(params: WebGPUCompositeParams): string;
|
|
24
|
+
/** Default per-mip weights: 0.5^i falloff normalized to sum 1 (energy-preserving). */
|
|
25
|
+
export declare function defaultWebGPUBloomWeights(mipCount: number): number[];
|
|
26
|
+
export type WebGPUBloomQuality = "performance" | "balanced" | "cinematic";
|
|
27
|
+
export interface WebGPUBloomOptions {
|
|
28
|
+
readonly threshold?: number;
|
|
29
|
+
readonly knee?: number;
|
|
30
|
+
readonly strength?: number;
|
|
31
|
+
readonly quality?: WebGPUBloomQuality;
|
|
32
|
+
readonly mipCount?: number;
|
|
33
|
+
}
|
|
34
|
+
export interface NormalizedWebGPUBloom {
|
|
35
|
+
readonly threshold: number;
|
|
36
|
+
readonly knee: number;
|
|
37
|
+
readonly strength: number;
|
|
38
|
+
readonly quality: WebGPUBloomQuality;
|
|
39
|
+
readonly mipCount: number;
|
|
40
|
+
readonly halfFloat: boolean;
|
|
41
|
+
}
|
|
42
|
+
export declare const WEBGPU_BLOOM_QUALITY_TABLE: Readonly<Record<WebGPUBloomQuality, {
|
|
43
|
+
readonly mipCount: number;
|
|
44
|
+
readonly halfFloat: boolean;
|
|
45
|
+
}>>;
|
|
46
|
+
export declare function normalizeWebGPUBloomQuality(quality: WebGPUBloomQuality | undefined): {
|
|
47
|
+
readonly quality: WebGPUBloomQuality;
|
|
48
|
+
readonly mipCount: number;
|
|
49
|
+
readonly halfFloat: boolean;
|
|
50
|
+
};
|
|
51
|
+
export declare function normalizeWebGPUBloomOptions(options?: WebGPUBloomOptions): NormalizedWebGPUBloom;
|
|
52
|
+
export interface WebGPUBloomDiagnostics {
|
|
53
|
+
readonly mipCount: number;
|
|
54
|
+
readonly halfFloat: boolean;
|
|
55
|
+
readonly targetBytes: number;
|
|
56
|
+
readonly compositeGain: number;
|
|
57
|
+
readonly passes: number;
|
|
58
|
+
readonly executionMode: "webgpu-native-post";
|
|
59
|
+
}
|
|
60
|
+
export interface WebGPUColorGradeOptions {
|
|
61
|
+
readonly exposure?: number;
|
|
62
|
+
readonly contrast?: number;
|
|
63
|
+
readonly saturation?: number;
|
|
64
|
+
}
|
|
65
|
+
export interface NormalizedWebGPUColorGrade {
|
|
66
|
+
readonly exposure: number;
|
|
67
|
+
readonly contrast: number;
|
|
68
|
+
readonly saturation: number;
|
|
69
|
+
}
|
|
70
|
+
export declare function normalizeWebGPUColorGradeOptions(options?: WebGPUColorGradeOptions): NormalizedWebGPUColorGrade;
|
|
71
|
+
export interface WebGPUFxaaOptions {
|
|
72
|
+
readonly enabled?: boolean;
|
|
73
|
+
}
|
|
74
|
+
/** CPU mirror of the WGSL soft-knee gate (unit oracle, never the shader output). */
|
|
75
|
+
export declare function webgpuSoftKneeWeight(luma: number, threshold: number, knee: number): number;
|
|
76
|
+
export declare function webgpuColorGradeFragment(): string;
|
|
77
|
+
export declare function webgpuFxaaFragment(): string;
|
|
78
|
+
//# sourceMappingURL=WebGPUPostShaders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebGPUPostShaders.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/webgpu/WebGPUPostShaders.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* muse3jsparity-PRD J2 — native WebGPU post-process WGSL sources.
|
|
3
|
+
*
|
|
4
|
+
* Fullscreen-triangle passes that run on the real WebGPU device
|
|
5
|
+
* (WebGPUDevice.executeWebGPUBloom / executeWebGPUColorGrade /
|
|
6
|
+
* executeWebGPUFxaa). Backend-agnostic image work: bright-extract with a
|
|
7
|
+
* soft-knee threshold, a separable-Gaussian mip pyramid, energy-weighted
|
|
8
|
+
* composite, exposure/contrast/saturation color grade, and an FXAA
|
|
9
|
+
* luma-edge pass. TAA is deliberately NOT here: it needs velocity +
|
|
10
|
+
* history inputs that do not exist on the WebGPU path (same withheld
|
|
11
|
+
* doctrine as the root A3 motion-blur/TAA nodes).
|
|
12
|
+
*/
|
|
13
|
+
export const WEBGPU_POST_VERTEX_WGSL = `struct PostVertexOutput {
|
|
14
|
+
@builtin(position) position: vec4<f32>,
|
|
15
|
+
@location(0) uv: vec2<f32>,
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
@vertex
|
|
19
|
+
fn vs_post(@builtin(vertex_index) index: u32) -> PostVertexOutput {
|
|
20
|
+
var output: PostVertexOutput;
|
|
21
|
+
let corners = array<vec2<f32>, 3>(
|
|
22
|
+
vec2<f32>(-1.0, -1.0),
|
|
23
|
+
vec2<f32>(3.0, -1.0),
|
|
24
|
+
vec2<f32>(-1.0, 3.0)
|
|
25
|
+
);
|
|
26
|
+
let corner = corners[index];
|
|
27
|
+
output.position = vec4<f32>(corner, 0.0, 1.0);
|
|
28
|
+
output.uv = vec2<f32>((corner.x + 1.0) * 0.5, 1.0 - (corner.y + 1.0) * 0.5);
|
|
29
|
+
return output;
|
|
30
|
+
}
|
|
31
|
+
`;
|
|
32
|
+
export function webgpuBrightExtractFragment() {
|
|
33
|
+
return `struct BloomUniforms {
|
|
34
|
+
threshold: f32,
|
|
35
|
+
knee: f32,
|
|
36
|
+
strength: f32,
|
|
37
|
+
_pad: f32,
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
@group(0) @binding(0) var<uniform> u_bloom: BloomUniforms;
|
|
41
|
+
@group(0) @binding(1) var u_sampler: sampler;
|
|
42
|
+
@group(0) @binding(2) var u_source: texture_2d<f32>;
|
|
43
|
+
|
|
44
|
+
@fragment
|
|
45
|
+
fn fs_bright(@location(0) uv: vec2<f32>) -> @location(0) vec4<f32> {
|
|
46
|
+
let color = textureSample(u_source, u_sampler, uv);
|
|
47
|
+
let luma = dot(color.rgb, vec3<f32>(0.2126, 0.7152, 0.0722));
|
|
48
|
+
// Soft-knee gate: smoothstep over [threshold - knee, threshold + knee].
|
|
49
|
+
// knee = 0 collapses to a hard step (matches the native WebGL2 path).
|
|
50
|
+
// NOTE: threshold/knee MUST be read from u_bloom (not baked): an
|
|
51
|
+
// unreferenced uniform is stripped, which invalidates bind-group entry 0.
|
|
52
|
+
let lo = u_bloom.threshold - u_bloom.knee;
|
|
53
|
+
let hi = u_bloom.threshold + u_bloom.knee;
|
|
54
|
+
let weight = smoothstep(lo, hi, luma);
|
|
55
|
+
return vec4<f32>(color.rgb * weight, 1.0);
|
|
56
|
+
}
|
|
57
|
+
`;
|
|
58
|
+
}
|
|
59
|
+
export function webgpuBlurFragment() {
|
|
60
|
+
return `struct BlurUniforms {
|
|
61
|
+
direction: vec2<f32>,
|
|
62
|
+
texel: vec2<f32>,
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
@group(0) @binding(0) var<uniform> u_blur: BlurUniforms;
|
|
66
|
+
@group(0) @binding(1) var u_sampler: sampler;
|
|
67
|
+
@group(0) @binding(2) var u_source: texture_2d<f32>;
|
|
68
|
+
|
|
69
|
+
@fragment
|
|
70
|
+
fn fs_blur(@location(0) uv: vec2<f32>) -> @location(0) vec4<f32> {
|
|
71
|
+
// 9-tap separable Gaussian (sigma ~1.35): weights sum to exactly 1.0 so
|
|
72
|
+
// the pyramid preserves energy before the composite gain stage.
|
|
73
|
+
// NOTE: direction/texel MUST be read from u_blur (not baked): an
|
|
74
|
+
// unreferenced uniform is stripped, which invalidates bind-group entry 0.
|
|
75
|
+
let step = u_blur.direction * u_blur.texel;
|
|
76
|
+
var acc = textureSample(u_source, u_sampler, uv) * 0.2270270270;
|
|
77
|
+
acc = acc + textureSample(u_source, u_sampler, uv + step * 1.3846153846) * 0.3162162162;
|
|
78
|
+
acc = acc + textureSample(u_source, u_sampler, uv - step * 1.3846153846) * 0.3162162162;
|
|
79
|
+
acc = acc + textureSample(u_source, u_sampler, uv + step * 3.2307692308) * 0.0702702703;
|
|
80
|
+
acc = acc + textureSample(u_source, u_sampler, uv - step * 3.2307692308) * 0.0702702703;
|
|
81
|
+
return vec4<f32>(acc.rgb, 1.0);
|
|
82
|
+
}
|
|
83
|
+
`;
|
|
84
|
+
}
|
|
85
|
+
export const WEBGPU_BLOOM_MAX_MIPS = 5;
|
|
86
|
+
export function webgpuBloomCompositeFragment(params) {
|
|
87
|
+
const lines = params.weights
|
|
88
|
+
.map((weight, index) => ` bloom = bloom + textureSample(u_mip${index}, u_sampler, uv).rgb * ${weight.toFixed(5)};`)
|
|
89
|
+
.join("\n");
|
|
90
|
+
const bindings = params.weights
|
|
91
|
+
.map((_, index) => `@group(0) @binding(${index + 3}) var u_mip${index}: texture_2d<f32>;`)
|
|
92
|
+
.join("\n");
|
|
93
|
+
return `struct CompositeUniforms {
|
|
94
|
+
strength: f32,
|
|
95
|
+
_pad0: f32,
|
|
96
|
+
_pad1: f32,
|
|
97
|
+
_pad2: f32,
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
@group(0) @binding(0) var<uniform> u_composite: CompositeUniforms;
|
|
101
|
+
@group(0) @binding(1) var u_sampler: sampler;
|
|
102
|
+
@group(0) @binding(2) var u_scene: texture_2d<f32>;
|
|
103
|
+
${bindings}
|
|
104
|
+
|
|
105
|
+
@fragment
|
|
106
|
+
fn fs_composite(@location(0) uv: vec2<f32>) -> @location(0) vec4<f32> {
|
|
107
|
+
let scene = textureSample(u_scene, u_sampler, uv);
|
|
108
|
+
var bloom = vec3<f32>(0.0, 0.0, 0.0);
|
|
109
|
+
${lines}
|
|
110
|
+
return vec4<f32>(scene.rgb + bloom * u_composite.strength, scene.a);
|
|
111
|
+
}
|
|
112
|
+
`;
|
|
113
|
+
}
|
|
114
|
+
/** Default per-mip weights: 0.5^i falloff normalized to sum 1 (energy-preserving). */
|
|
115
|
+
export function defaultWebGPUBloomWeights(mipCount) {
|
|
116
|
+
const raw = Array.from({ length: mipCount }, (_, index) => Math.pow(0.5, index));
|
|
117
|
+
const total = raw.reduce((sum, value) => sum + value, 0);
|
|
118
|
+
return raw.map((value) => value / total);
|
|
119
|
+
}
|
|
120
|
+
export const WEBGPU_BLOOM_QUALITY_TABLE = {
|
|
121
|
+
// performance keeps the single-target legacy shape; balanced/cinematic run
|
|
122
|
+
// the full pyramid with half-float mip targets (mirrors the WebGL2 tiers).
|
|
123
|
+
performance: { mipCount: 1, halfFloat: false },
|
|
124
|
+
balanced: { mipCount: 3, halfFloat: true },
|
|
125
|
+
cinematic: { mipCount: 5, halfFloat: true }
|
|
126
|
+
};
|
|
127
|
+
export function normalizeWebGPUBloomQuality(quality) {
|
|
128
|
+
const resolved = quality ?? "balanced";
|
|
129
|
+
const table = WEBGPU_BLOOM_QUALITY_TABLE[resolved];
|
|
130
|
+
if (!table)
|
|
131
|
+
throw new RangeError(`Unknown WebGPU bloom quality "${String(quality)}" (expected performance|balanced|cinematic).`);
|
|
132
|
+
return { quality: resolved, mipCount: table.mipCount, halfFloat: table.halfFloat };
|
|
133
|
+
}
|
|
134
|
+
export function normalizeWebGPUBloomOptions(options = {}) {
|
|
135
|
+
const { quality, mipCount, halfFloat } = normalizeWebGPUBloomQuality(options.quality);
|
|
136
|
+
const threshold = options.threshold ?? 0.85;
|
|
137
|
+
const knee = options.knee ?? 0.15;
|
|
138
|
+
const strength = options.strength ?? 0.6;
|
|
139
|
+
if (!Number.isFinite(threshold) || threshold < 0)
|
|
140
|
+
throw new RangeError("WebGPU bloom threshold must be a finite number >= 0.");
|
|
141
|
+
if (!Number.isFinite(knee) || knee < 0)
|
|
142
|
+
throw new RangeError("WebGPU bloom knee must be a finite number >= 0.");
|
|
143
|
+
if (!Number.isFinite(strength) || strength < 0)
|
|
144
|
+
throw new RangeError("WebGPU bloom strength must be a finite number >= 0.");
|
|
145
|
+
if (options.mipCount !== undefined) {
|
|
146
|
+
if (!Number.isInteger(options.mipCount) || options.mipCount < 1 || options.mipCount > WEBGPU_BLOOM_MAX_MIPS) {
|
|
147
|
+
throw new RangeError(`WebGPU bloom mipCount must be an integer in [1, ${WEBGPU_BLOOM_MAX_MIPS}].`);
|
|
148
|
+
}
|
|
149
|
+
return { threshold, knee, strength, quality, mipCount: options.mipCount, halfFloat };
|
|
150
|
+
}
|
|
151
|
+
return { threshold, knee, strength, quality, mipCount, halfFloat };
|
|
152
|
+
}
|
|
153
|
+
export function normalizeWebGPUColorGradeOptions(options = {}) {
|
|
154
|
+
const exposure = options.exposure ?? 0;
|
|
155
|
+
const contrast = options.contrast ?? 1;
|
|
156
|
+
const saturation = options.saturation ?? 1;
|
|
157
|
+
if (!Number.isFinite(exposure))
|
|
158
|
+
throw new RangeError("WebGPU color-grade exposure must be finite.");
|
|
159
|
+
if (!Number.isFinite(contrast) || contrast < 0)
|
|
160
|
+
throw new RangeError("WebGPU color-grade contrast must be finite and >= 0.");
|
|
161
|
+
if (!Number.isFinite(saturation) || saturation < 0)
|
|
162
|
+
throw new RangeError("WebGPU color-grade saturation must be finite and >= 0.");
|
|
163
|
+
return { exposure, contrast, saturation };
|
|
164
|
+
}
|
|
165
|
+
/** CPU mirror of the WGSL soft-knee gate (unit oracle, never the shader output). */
|
|
166
|
+
export function webgpuSoftKneeWeight(luma, threshold, knee) {
|
|
167
|
+
if (knee <= 0)
|
|
168
|
+
return luma >= threshold ? 1 : 0;
|
|
169
|
+
const lo = threshold - knee;
|
|
170
|
+
const hi = threshold + knee;
|
|
171
|
+
if (luma <= lo)
|
|
172
|
+
return 0;
|
|
173
|
+
if (luma >= hi)
|
|
174
|
+
return 1;
|
|
175
|
+
const t = (luma - lo) / (hi - lo);
|
|
176
|
+
return t * t * (3 - 2 * t);
|
|
177
|
+
}
|
|
178
|
+
export function webgpuColorGradeFragment() {
|
|
179
|
+
return `struct GradeUniforms {
|
|
180
|
+
exposure: f32,
|
|
181
|
+
contrast: f32,
|
|
182
|
+
saturation: f32,
|
|
183
|
+
_pad: f32,
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
@group(0) @binding(0) var<uniform> u_grade: GradeUniforms;
|
|
187
|
+
@group(0) @binding(1) var u_sampler: sampler;
|
|
188
|
+
@group(0) @binding(2) var u_source: texture_2d<f32>;
|
|
189
|
+
|
|
190
|
+
@fragment
|
|
191
|
+
fn fs_grade(@location(0) uv: vec2<f32>) -> @location(0) vec4<f32> {
|
|
192
|
+
var color = textureSample(u_source, u_sampler, uv).rgb;
|
|
193
|
+
// Exposure first (stops simulate the root colorGrade node), then
|
|
194
|
+
// saturation around luma, then contrast around middle gray.
|
|
195
|
+
// NOTE: all three MUST be read from u_grade (not baked): an unreferenced
|
|
196
|
+
// uniform is stripped, which invalidates bind-group entry 0.
|
|
197
|
+
color = color * exp2(u_grade.exposure);
|
|
198
|
+
let luma = dot(color, vec3<f32>(0.2126, 0.7152, 0.0722));
|
|
199
|
+
color = mix(vec3<f32>(luma), color, u_grade.saturation);
|
|
200
|
+
color = (color - vec3<f32>(0.5)) * u_grade.contrast + vec3<f32>(0.5);
|
|
201
|
+
return vec4<f32>(color, 1.0);
|
|
202
|
+
}
|
|
203
|
+
`;
|
|
204
|
+
}
|
|
205
|
+
export function webgpuFxaaFragment() {
|
|
206
|
+
return `struct FxaaUniforms {
|
|
207
|
+
texel: vec2<f32>,
|
|
208
|
+
_pad0: f32,
|
|
209
|
+
_pad1: f32,
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
@group(0) @binding(0) var<uniform> u_fxaa: FxaaUniforms;
|
|
213
|
+
@group(0) @binding(1) var u_sampler: sampler;
|
|
214
|
+
@group(0) @binding(2) var u_source: texture_2d<f32>;
|
|
215
|
+
|
|
216
|
+
fn fxaaLuma(uv: vec2<f32>) -> f32 {
|
|
217
|
+
let color = textureSample(u_source, u_sampler, uv).rgb;
|
|
218
|
+
return dot(color, vec3<f32>(0.299, 0.587, 0.114));
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
@fragment
|
|
222
|
+
fn fs_fxaa(@location(0) uv: vec2<f32>) -> @location(0) vec4<f32> {
|
|
223
|
+
// Compact FXAA 3.11 console core: luma neighborhood, edge direction from
|
|
224
|
+
// the diagonal/axis contrast, one perpendicular blend tap pair.
|
|
225
|
+
// NOTE: texel MUST be read from u_fxaa (not baked): an unreferenced
|
|
226
|
+
// uniform is stripped, which invalidates bind-group entry 0.
|
|
227
|
+
let texel = u_fxaa.texel;
|
|
228
|
+
// All taps up front: textureSample needs uniform control flow, so no
|
|
229
|
+
// sampling may happen after the flat-neighborhood early-out below —
|
|
230
|
+
// including the early-out's own return value.
|
|
231
|
+
let center = textureSample(u_source, u_sampler, uv).rgb;
|
|
232
|
+
let lumaM = fxaaLuma(uv);
|
|
233
|
+
let lumaN = fxaaLuma(uv + vec2<f32>(0.0, -texel.y));
|
|
234
|
+
let lumaS = fxaaLuma(uv + vec2<f32>(0.0, texel.y));
|
|
235
|
+
let lumaW = fxaaLuma(uv + vec2<f32>(-texel.x, 0.0));
|
|
236
|
+
let lumaE = fxaaLuma(uv + vec2<f32>(texel.x, 0.0));
|
|
237
|
+
let rangeMin = min(lumaM, min(min(lumaN, lumaS), min(lumaW, lumaE)));
|
|
238
|
+
let rangeMax = max(lumaM, max(max(lumaN, lumaS), max(lumaW, lumaE)));
|
|
239
|
+
let range = rangeMax - rangeMin;
|
|
240
|
+
// Flat neighborhoods pass through untouched (no blur where nothing edges).
|
|
241
|
+
if (range < max(0.0312, rangeMax * 0.125)) {
|
|
242
|
+
return vec4<f32>(center, 1.0);
|
|
243
|
+
}
|
|
244
|
+
// Canonical FXAA 3.11 console edge terms (first-order axis contrast):
|
|
245
|
+
// edgeHorz measures the N-S gradient, so a dominant edgeHorz means the
|
|
246
|
+
// edge spans horizontally and the blend taps go vertical, and vice versa.
|
|
247
|
+
// (Second-order-only terms vanish on ideal steps and pick no direction.)
|
|
248
|
+
let edgeHorz = abs((-2.0 * lumaM) + lumaN + lumaS);
|
|
249
|
+
let edgeVert = abs((-2.0 * lumaM) + lumaW + lumaE);
|
|
250
|
+
let horzSpan = edgeHorz >= edgeVert;
|
|
251
|
+
// WGSL has no ternary operator: select(falseValue, trueValue, condition).
|
|
252
|
+
// textureSampleLevel (explicit LOD) is used for the blend taps because they
|
|
253
|
+
// sit after the early-out branch: implicit-derivative sampling is illegal
|
|
254
|
+
// in non-uniform control flow.
|
|
255
|
+
let blend = select(vec2<f32>(texel.x * 0.5, 0.0), vec2<f32>(0.0, texel.y * 0.5), horzSpan);
|
|
256
|
+
let tapA = textureSampleLevel(u_source, u_sampler, uv - blend, 0.0).rgb;
|
|
257
|
+
let tapB = textureSampleLevel(u_source, u_sampler, uv + blend, 0.0).rgb;
|
|
258
|
+
return vec4<f32>((tapA + tapB) * 0.5, 1.0);
|
|
259
|
+
}
|
|
260
|
+
`;
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=WebGPUPostShaders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebGPUPostShaders.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/webgpu/WebGPUPostShaders.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aura3d/rendering",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
"main": "./dist/index.js",
|
|
20
20
|
"types": "./dist/index.d.ts",
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@aura3d/math": "
|
|
23
|
-
"@aura3d/scene": "
|
|
22
|
+
"@aura3d/math": "3.0.0",
|
|
23
|
+
"@aura3d/scene": "3.0.0"
|
|
24
24
|
},
|
|
25
25
|
"sideEffects": false,
|
|
26
26
|
"description": "Render-device abstraction, WebGL2/mock backends, buffers, textures, shader modules, materials, render graphs, lighting, shadows, and particle rendering for Aura3D.",
|