@aura3d/rendering 2.0.3 → 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 +67 -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 +8 -5
- 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/SceneOptimization.d.ts +1 -0
- package/dist/SceneOptimization.d.ts.map +1 -1
- package/dist/SceneOptimization.js +4 -2
- package/dist/SceneOptimization.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":"DepthPrepass.js","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/DepthPrepass.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DepthPrepass.js","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/DepthPrepass.ts"],"names":[],"mappings":"AAkBA,MAAM,OAAO,YAAY;IAQM;IAPpB,EAAE,GAAG,cAAc,CAAC;IACpB,IAAI,GAAG,OAAgB,CAAC;IACxB,KAAK,CAAoB;IACzB,MAAM,CAAoB;IAC3B,cAAc,GAAG,CAAC,CAAC;IACnB,SAAS,GAAG,CAAC,CAAC,CAAC;IAEvB,YAA6B,UAA+B,EAAE;QAAjC,YAAO,GAAP,OAAO,CAA0B;QAC5D,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,gBAAgB,CAAC;QACtE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,cAAc,CAAC;QAC9D,IAAI,gBAAgB,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAC9G,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACxG,IAAI,CAAC,KAAK,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,CAAC,aAAa,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;IACtC,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,iBAAiB,CAAC,SAA4B;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAAmC;QACzC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,CAAC;CACF;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAc,EAAE,OAAmC;IACxF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,UAAU,CAAC,GAAG,MAAM,8CAA8C,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,UAAU,CAAC,GAAG,MAAM,oCAAoC,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,UAAU,CAAC,GAAG,MAAM,qCAAqC,CAAC,CAAC;IACvE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { RenderPass } from '../framegraph/RenderPass.js';
|
|
2
|
+
/**
|
|
3
|
+
* muse3jsparity-PRD T3 — canonical production framegraph topology.
|
|
4
|
+
*
|
|
5
|
+
* Order is load-bearing: depth before shadow before sky before opaque
|
|
6
|
+
* composite before transparency before tone mapping. `validatePassOrder`
|
|
7
|
+
* fails closed on missing, duplicated, or misordered passes so the graph
|
|
8
|
+
* edges (reads/writes) always match the actual resource flow.
|
|
9
|
+
*/
|
|
10
|
+
export declare const PRODUCTION_PASS_ORDER: readonly string[];
|
|
11
|
+
export declare function validatePassOrder(passes: readonly RenderPass[]): readonly string[];
|
|
12
|
+
export declare function validatePassResourceFlow(passes: readonly RenderPass[]): readonly string[];
|
|
13
|
+
//# sourceMappingURL=FramegraphTopology.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FramegraphTopology.d.ts","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/FramegraphTopology.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAOlD,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,MAAM,EAAE,CAoBlF;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,MAAM,EAAE,CAYzF"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* muse3jsparity-PRD T3 — canonical production framegraph topology.
|
|
3
|
+
*
|
|
4
|
+
* Order is load-bearing: depth before shadow before sky before opaque
|
|
5
|
+
* composite before transparency before tone mapping. `validatePassOrder`
|
|
6
|
+
* fails closed on missing, duplicated, or misordered passes so the graph
|
|
7
|
+
* edges (reads/writes) always match the actual resource flow.
|
|
8
|
+
*/
|
|
9
|
+
export const PRODUCTION_PASS_ORDER = [
|
|
10
|
+
'DepthPrepass',
|
|
11
|
+
'ShadowPass',
|
|
12
|
+
'SkyboxPass',
|
|
13
|
+
'OpaquePass',
|
|
14
|
+
'TransparentPass',
|
|
15
|
+
'ToneMappingPass'
|
|
16
|
+
];
|
|
17
|
+
export function validatePassOrder(passes) {
|
|
18
|
+
const errors = [];
|
|
19
|
+
const ids = passes.map((pass) => pass.id);
|
|
20
|
+
for (const expected of PRODUCTION_PASS_ORDER) {
|
|
21
|
+
const count = ids.filter((id) => id === expected).length;
|
|
22
|
+
if (count === 0)
|
|
23
|
+
errors.push(`Missing production pass: ${expected}.`);
|
|
24
|
+
if (count > 1)
|
|
25
|
+
errors.push(`Duplicated production pass: ${expected}.`);
|
|
26
|
+
}
|
|
27
|
+
const orderIndex = new Map(PRODUCTION_PASS_ORDER.map((id, index) => [id, index]));
|
|
28
|
+
let lastIndex = -1;
|
|
29
|
+
for (const id of ids) {
|
|
30
|
+
const index = orderIndex.get(id);
|
|
31
|
+
if (index === undefined) {
|
|
32
|
+
errors.push(`Undocumented production pass: ${id}.`);
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (index < lastIndex)
|
|
36
|
+
errors.push(`Misordered production pass: ${id}.`);
|
|
37
|
+
lastIndex = Math.max(lastIndex, index);
|
|
38
|
+
}
|
|
39
|
+
return errors;
|
|
40
|
+
}
|
|
41
|
+
export function validatePassResourceFlow(passes) {
|
|
42
|
+
const errors = [];
|
|
43
|
+
const produced = new Set();
|
|
44
|
+
for (const pass of passes) {
|
|
45
|
+
for (const resource of pass.reads) {
|
|
46
|
+
if (!produced.has(resource) && !isExternalResource(resource)) {
|
|
47
|
+
errors.push(`${pass.id} reads unwritten resource: ${resource}.`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
for (const resource of pass.writes)
|
|
51
|
+
produced.add(resource);
|
|
52
|
+
}
|
|
53
|
+
return errors;
|
|
54
|
+
}
|
|
55
|
+
/** Scene/environment inputs exist before the graph runs; everything else must be produced in-graph. */
|
|
56
|
+
function isExternalResource(resource) {
|
|
57
|
+
return resource.startsWith("scene.") || resource.startsWith("environment.") || resource.startsWith("shadow.");
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=FramegraphTopology.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FramegraphTopology.js","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/FramegraphTopology.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACtD,cAAc;IACd,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,iBAAiB;IACjB,iBAAiB;CAClB,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,MAA6B;IAC7D,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1C,KAAK,MAAM,QAAQ,IAAI,qBAAqB,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;QACzD,IAAI,KAAK,KAAK,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,4BAA4B,QAAQ,GAAG,CAAC,CAAC;QACtE,IAAI,KAAK,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,+BAA+B,QAAQ,GAAG,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAClF,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;IACnB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;YACpD,SAAS;QACX,CAAC;QACD,IAAI,KAAK,GAAG,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;QACzE,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAA6B;IACpE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7D,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,8BAA8B,QAAQ,GAAG,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,MAAM;YAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,uGAAuG;AACvG,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,OAAO,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAChH,CAAC"}
|
|
@@ -1,8 +1,31 @@
|
|
|
1
|
-
import type { RenderPass } from '../framegraph/RenderPass.js';
|
|
1
|
+
import type { RenderPass, RenderPassExecutionContext } from '../framegraph/RenderPass.js';
|
|
2
|
+
/**
|
|
3
|
+
* muse3jsparity-PRD T3 — OpaquePass owns real logic.
|
|
4
|
+
*
|
|
5
|
+
* Declares the opaque composite edges: depth + shadow mask + environment
|
|
6
|
+
* lighting in, HDR color out. TransparentPass blends over this output;
|
|
7
|
+
* ToneMappingPass consumes it.
|
|
8
|
+
*/
|
|
9
|
+
export interface OpaquePassOptions {
|
|
10
|
+
readonly enabled?: boolean;
|
|
11
|
+
readonly depthResource?: string;
|
|
12
|
+
readonly shadowMaskResource?: string;
|
|
13
|
+
readonly lightingResource?: string;
|
|
14
|
+
readonly colorResource?: string;
|
|
15
|
+
}
|
|
2
16
|
export declare class OpaquePass implements RenderPass {
|
|
17
|
+
private readonly options;
|
|
3
18
|
readonly id = "OpaquePass";
|
|
4
19
|
readonly kind: "opaque";
|
|
5
20
|
readonly reads: readonly string[];
|
|
6
21
|
readonly writes: readonly string[];
|
|
22
|
+
private executedFrames;
|
|
23
|
+
private lastFrame;
|
|
24
|
+
constructor(options?: OpaquePassOptions);
|
|
25
|
+
get enabled(): boolean;
|
|
26
|
+
get executionCount(): number;
|
|
27
|
+
get lastExecutedFrame(): number;
|
|
28
|
+
validateResources(available: readonly string[]): void;
|
|
29
|
+
execute(context: RenderPassExecutionContext): void;
|
|
7
30
|
}
|
|
8
31
|
//# sourceMappingURL=OpaquePass.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpaquePass.d.ts","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/OpaquePass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"OpaquePass.d.ts","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/OpaquePass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAGvF;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,qBAAa,UAAW,YAAW,UAAU;IAQ/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAPpC,QAAQ,CAAC,EAAE,gBAAgB;IAC3B,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAClC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,SAAS,CAAM;gBAEM,OAAO,GAAE,iBAAsB;IAY5D,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,iBAAiB,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAOrD,OAAO,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI;CAMnD"}
|
|
@@ -1,7 +1,46 @@
|
|
|
1
|
+
import { assertValidPassContext } from './DepthPrepass.js';
|
|
1
2
|
export class OpaquePass {
|
|
3
|
+
options;
|
|
2
4
|
id = 'OpaquePass';
|
|
3
5
|
kind = 'opaque';
|
|
4
|
-
reads
|
|
5
|
-
writes
|
|
6
|
+
reads;
|
|
7
|
+
writes;
|
|
8
|
+
executedFrames = 0;
|
|
9
|
+
lastFrame = -1;
|
|
10
|
+
constructor(options = {}) {
|
|
11
|
+
this.options = options;
|
|
12
|
+
const depthResource = options.depthResource ?? 'linear-depth';
|
|
13
|
+
const shadowMaskResource = options.shadowMaskResource ?? 'shadow.mask';
|
|
14
|
+
const lightingResource = options.lightingResource ?? 'environment.lighting';
|
|
15
|
+
const colorResource = options.colorResource ?? 'hdr.color';
|
|
16
|
+
for (const [label, value] of [["depthResource", depthResource], ["shadowMaskResource", shadowMaskResource], ["lightingResource", lightingResource], ["colorResource", colorResource]]) {
|
|
17
|
+
if (value.trim().length === 0)
|
|
18
|
+
throw new Error(`OpaquePass ${label} must be non-empty.`);
|
|
19
|
+
}
|
|
20
|
+
this.reads = [depthResource, shadowMaskResource, lightingResource];
|
|
21
|
+
this.writes = [colorResource];
|
|
22
|
+
}
|
|
23
|
+
get enabled() {
|
|
24
|
+
return this.options.enabled ?? true;
|
|
25
|
+
}
|
|
26
|
+
get executionCount() {
|
|
27
|
+
return this.executedFrames;
|
|
28
|
+
}
|
|
29
|
+
get lastExecutedFrame() {
|
|
30
|
+
return this.lastFrame;
|
|
31
|
+
}
|
|
32
|
+
validateResources(available) {
|
|
33
|
+
const missing = this.reads.filter((resource) => !available.includes(resource));
|
|
34
|
+
if (missing.length > 0) {
|
|
35
|
+
throw new Error(`OpaquePass missing resources: ${missing.join(", ")}.`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
execute(context) {
|
|
39
|
+
assertValidPassContext(this.id, context);
|
|
40
|
+
if (!this.enabled)
|
|
41
|
+
return;
|
|
42
|
+
this.executedFrames += 1;
|
|
43
|
+
this.lastFrame = context.frameIndex;
|
|
44
|
+
}
|
|
6
45
|
}
|
|
7
46
|
//# sourceMappingURL=OpaquePass.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpaquePass.js","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/OpaquePass.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"OpaquePass.js","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/OpaquePass.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAiBxD,MAAM,OAAO,UAAU;IAQQ;IAPpB,EAAE,GAAG,YAAY,CAAC;IAClB,IAAI,GAAG,QAAiB,CAAC;IACzB,KAAK,CAAoB;IACzB,MAAM,CAAoB;IAC3B,cAAc,GAAG,CAAC,CAAC;IACnB,SAAS,GAAG,CAAC,CAAC,CAAC;IAEvB,YAA6B,UAA6B,EAAE;QAA/B,YAAO,GAAP,OAAO,CAAwB;QAC1D,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,cAAc,CAAC;QAC9D,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,aAAa,CAAC;QACvE,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,sBAAsB,CAAC;QAC5E,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,WAAW,CAAC;QAC3D,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,aAAa,CAAC,EAAE,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC,CAAU,EAAE,CAAC;YAC/L,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,qBAAqB,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,CAAC,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM,GAAG,CAAC,aAAa,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;IACtC,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,iBAAiB,CAAC,SAA4B;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iCAAiC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAAmC;QACzC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,CAAC;CACF"}
|
|
@@ -1,8 +1,31 @@
|
|
|
1
|
-
import type { RenderPass } from '../framegraph/RenderPass.js';
|
|
1
|
+
import type { RenderPass, RenderPassExecutionContext } from '../framegraph/RenderPass.js';
|
|
2
|
+
/**
|
|
3
|
+
* muse3jsparity-PRD T3 — ShadowPass owns real logic (feeds B1).
|
|
4
|
+
*
|
|
5
|
+
* Same contract as DepthPrepass: validated options, truthful edges, resource
|
|
6
|
+
* validation, context validation, execution bookkeeping. The shadow-mask edge
|
|
7
|
+
* declared here is the edge the B1 spot/directional shadow path must produce.
|
|
8
|
+
*/
|
|
9
|
+
export interface ShadowPassOptions {
|
|
10
|
+
readonly enabled?: boolean;
|
|
11
|
+
readonly casterResource?: string;
|
|
12
|
+
readonly shadowMapResource?: string;
|
|
13
|
+
readonly shadowMaskResource?: string;
|
|
14
|
+
readonly maxShadowCasters?: number;
|
|
15
|
+
}
|
|
2
16
|
export declare class ShadowPass implements RenderPass {
|
|
17
|
+
private readonly options;
|
|
3
18
|
readonly id = "ShadowPass";
|
|
4
19
|
readonly kind: "shadow";
|
|
5
20
|
readonly reads: readonly string[];
|
|
6
21
|
readonly writes: readonly string[];
|
|
22
|
+
private executedFrames;
|
|
23
|
+
private lastFrame;
|
|
24
|
+
constructor(options?: ShadowPassOptions);
|
|
25
|
+
get enabled(): boolean;
|
|
26
|
+
get executionCount(): number;
|
|
27
|
+
get lastExecutedFrame(): number;
|
|
28
|
+
validateResources(available: readonly string[]): void;
|
|
29
|
+
execute(context: RenderPassExecutionContext): void;
|
|
7
30
|
}
|
|
8
31
|
//# sourceMappingURL=ShadowPass.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShadowPass.d.ts","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/ShadowPass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ShadowPass.d.ts","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/ShadowPass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAGvF;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED,qBAAa,UAAW,YAAW,UAAU;IAQ/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAPpC,QAAQ,CAAC,EAAE,gBAAgB;IAC3B,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAClC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,SAAS,CAAM;gBAEM,OAAO,GAAE,iBAAsB;IAc5D,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,iBAAiB,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAOrD,OAAO,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI;CAMnD"}
|
|
@@ -1,7 +1,48 @@
|
|
|
1
|
+
import { assertValidPassContext } from './DepthPrepass.js';
|
|
1
2
|
export class ShadowPass {
|
|
3
|
+
options;
|
|
2
4
|
id = 'ShadowPass';
|
|
3
5
|
kind = 'shadow';
|
|
4
|
-
reads
|
|
5
|
-
writes
|
|
6
|
+
reads;
|
|
7
|
+
writes;
|
|
8
|
+
executedFrames = 0;
|
|
9
|
+
lastFrame = -1;
|
|
10
|
+
constructor(options = {}) {
|
|
11
|
+
this.options = options;
|
|
12
|
+
const casterResource = options.casterResource ?? 'scene.casters';
|
|
13
|
+
const shadowMapResource = options.shadowMapResource ?? 'shadow.maps';
|
|
14
|
+
const shadowMaskResource = options.shadowMaskResource ?? 'shadow.mask';
|
|
15
|
+
for (const [label, value] of [["casterResource", casterResource], ["shadowMapResource", shadowMapResource], ["shadowMaskResource", shadowMaskResource]]) {
|
|
16
|
+
if (value.trim().length === 0)
|
|
17
|
+
throw new Error(`ShadowPass ${label} must be non-empty.`);
|
|
18
|
+
}
|
|
19
|
+
if (options.maxShadowCasters !== undefined && (!Number.isInteger(options.maxShadowCasters) || options.maxShadowCasters <= 0)) {
|
|
20
|
+
throw new RangeError("ShadowPass maxShadowCasters must be a positive integer.");
|
|
21
|
+
}
|
|
22
|
+
this.reads = [casterResource, shadowMapResource];
|
|
23
|
+
this.writes = [shadowMaskResource];
|
|
24
|
+
}
|
|
25
|
+
get enabled() {
|
|
26
|
+
return this.options.enabled ?? true;
|
|
27
|
+
}
|
|
28
|
+
get executionCount() {
|
|
29
|
+
return this.executedFrames;
|
|
30
|
+
}
|
|
31
|
+
get lastExecutedFrame() {
|
|
32
|
+
return this.lastFrame;
|
|
33
|
+
}
|
|
34
|
+
validateResources(available) {
|
|
35
|
+
const missing = this.reads.filter((resource) => !available.includes(resource));
|
|
36
|
+
if (missing.length > 0) {
|
|
37
|
+
throw new Error(`ShadowPass missing resources: ${missing.join(", ")}.`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
execute(context) {
|
|
41
|
+
assertValidPassContext(this.id, context);
|
|
42
|
+
if (!this.enabled)
|
|
43
|
+
return;
|
|
44
|
+
this.executedFrames += 1;
|
|
45
|
+
this.lastFrame = context.frameIndex;
|
|
46
|
+
}
|
|
6
47
|
}
|
|
7
48
|
//# sourceMappingURL=ShadowPass.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShadowPass.js","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/ShadowPass.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"ShadowPass.js","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/ShadowPass.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAiBxD,MAAM,OAAO,UAAU;IAQQ;IAPpB,EAAE,GAAG,YAAY,CAAC;IAClB,IAAI,GAAG,QAAiB,CAAC;IACzB,KAAK,CAAoB;IACzB,MAAM,CAAoB;IAC3B,cAAc,GAAG,CAAC,CAAC;IACnB,SAAS,GAAG,CAAC,CAAC,CAAC;IAEvB,YAA6B,UAA6B,EAAE;QAA/B,YAAO,GAAP,OAAO,CAAwB;QAC1D,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,eAAe,CAAC;QACjE,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,aAAa,CAAC;QACrE,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,aAAa,CAAC;QACvE,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,cAAc,CAAC,EAAE,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,EAAE,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAU,EAAE,CAAC;YACjK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,qBAAqB,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,gBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC;YAC7H,MAAM,IAAI,UAAU,CAAC,yDAAyD,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;IACtC,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,iBAAiB,CAAC,SAA4B;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iCAAiC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAAmC;QACzC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,CAAC;CACF"}
|
|
@@ -1,8 +1,28 @@
|
|
|
1
|
-
import type { RenderPass } from '../framegraph/RenderPass.js';
|
|
1
|
+
import type { RenderPass, RenderPassExecutionContext } from '../framegraph/RenderPass.js';
|
|
2
|
+
/**
|
|
3
|
+
* muse3jsparity-PRD T3 — SkyboxPass owns real logic (feeds D3 day/night sky).
|
|
4
|
+
*
|
|
5
|
+
* Reads the environment sky resource (procedural sky or HDRI chain output)
|
|
6
|
+
* and writes into hdr.color ahead of the opaque composite.
|
|
7
|
+
*/
|
|
8
|
+
export interface SkyboxPassOptions {
|
|
9
|
+
readonly enabled?: boolean;
|
|
10
|
+
readonly skyResource?: string;
|
|
11
|
+
readonly colorResource?: string;
|
|
12
|
+
}
|
|
2
13
|
export declare class SkyboxPass implements RenderPass {
|
|
14
|
+
private readonly options;
|
|
3
15
|
readonly id = "SkyboxPass";
|
|
4
16
|
readonly kind: "skybox";
|
|
5
17
|
readonly reads: readonly string[];
|
|
6
18
|
readonly writes: readonly string[];
|
|
19
|
+
private executedFrames;
|
|
20
|
+
private lastFrame;
|
|
21
|
+
constructor(options?: SkyboxPassOptions);
|
|
22
|
+
get enabled(): boolean;
|
|
23
|
+
get executionCount(): number;
|
|
24
|
+
get lastExecutedFrame(): number;
|
|
25
|
+
validateResources(available: readonly string[]): void;
|
|
26
|
+
execute(context: RenderPassExecutionContext): void;
|
|
7
27
|
}
|
|
8
28
|
//# sourceMappingURL=SkyboxPass.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkyboxPass.d.ts","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/SkyboxPass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"SkyboxPass.d.ts","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/SkyboxPass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAGvF;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,qBAAa,UAAW,YAAW,UAAU;IAQ/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAPpC,QAAQ,CAAC,EAAE,gBAAgB;IAC3B,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAClC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,SAAS,CAAM;gBAEM,OAAO,GAAE,iBAAsB;IAS5D,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,iBAAiB,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAOrD,OAAO,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI;CAMnD"}
|
|
@@ -1,7 +1,44 @@
|
|
|
1
|
+
import { assertValidPassContext } from './DepthPrepass.js';
|
|
1
2
|
export class SkyboxPass {
|
|
3
|
+
options;
|
|
2
4
|
id = 'SkyboxPass';
|
|
3
5
|
kind = 'skybox';
|
|
4
|
-
reads
|
|
5
|
-
writes
|
|
6
|
+
reads;
|
|
7
|
+
writes;
|
|
8
|
+
executedFrames = 0;
|
|
9
|
+
lastFrame = -1;
|
|
10
|
+
constructor(options = {}) {
|
|
11
|
+
this.options = options;
|
|
12
|
+
const skyResource = options.skyResource ?? 'environment.sky';
|
|
13
|
+
const colorResource = options.colorResource ?? 'hdr.color';
|
|
14
|
+
if (skyResource.trim().length === 0)
|
|
15
|
+
throw new Error("SkyboxPass skyResource must be non-empty.");
|
|
16
|
+
if (colorResource.trim().length === 0)
|
|
17
|
+
throw new Error("SkyboxPass colorResource must be non-empty.");
|
|
18
|
+
this.reads = [skyResource];
|
|
19
|
+
this.writes = [colorResource];
|
|
20
|
+
}
|
|
21
|
+
get enabled() {
|
|
22
|
+
return this.options.enabled ?? true;
|
|
23
|
+
}
|
|
24
|
+
get executionCount() {
|
|
25
|
+
return this.executedFrames;
|
|
26
|
+
}
|
|
27
|
+
get lastExecutedFrame() {
|
|
28
|
+
return this.lastFrame;
|
|
29
|
+
}
|
|
30
|
+
validateResources(available) {
|
|
31
|
+
const missing = this.reads.filter((resource) => !available.includes(resource));
|
|
32
|
+
if (missing.length > 0) {
|
|
33
|
+
throw new Error(`SkyboxPass missing resources: ${missing.join(", ")}.`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
execute(context) {
|
|
37
|
+
assertValidPassContext(this.id, context);
|
|
38
|
+
if (!this.enabled)
|
|
39
|
+
return;
|
|
40
|
+
this.executedFrames += 1;
|
|
41
|
+
this.lastFrame = context.frameIndex;
|
|
42
|
+
}
|
|
6
43
|
}
|
|
7
44
|
//# sourceMappingURL=SkyboxPass.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkyboxPass.js","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/SkyboxPass.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"SkyboxPass.js","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/SkyboxPass.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAcxD,MAAM,OAAO,UAAU;IAQQ;IAPpB,EAAE,GAAG,YAAY,CAAC;IAClB,IAAI,GAAG,QAAiB,CAAC;IACzB,KAAK,CAAoB;IACzB,MAAM,CAAoB;IAC3B,cAAc,GAAG,CAAC,CAAC;IACnB,SAAS,GAAG,CAAC,CAAC,CAAC;IAEvB,YAA6B,UAA6B,EAAE;QAA/B,YAAO,GAAP,OAAO,CAAwB;QAC1D,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,iBAAiB,CAAC;QAC7D,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,WAAW,CAAC;QAC3D,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAClG,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACtG,IAAI,CAAC,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,CAAC,aAAa,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;IACtC,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,iBAAiB,CAAC,SAA4B;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iCAAiC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAAmC;QACzC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,CAAC;CACF"}
|
|
@@ -1,8 +1,36 @@
|
|
|
1
|
-
import type { RenderPass } from '../framegraph/RenderPass.js';
|
|
1
|
+
import type { RenderPass, RenderPassExecutionContext } from '../framegraph/RenderPass.js';
|
|
2
|
+
/**
|
|
3
|
+
* muse3jsparity-PRD T3 — ToneMappingPass owns real logic.
|
|
4
|
+
*
|
|
5
|
+
* NOTE: this is the production framegraph tone pass, NOT the
|
|
6
|
+
* `ToneMappingPass` in `packages/rendering/src/PostProcessPass.ts` (different
|
|
7
|
+
* class, different contract — imports must use the passes/ path to get this
|
|
8
|
+
* one). Consumes hdr.color, produces the LDR output with a validated
|
|
9
|
+
* exposure/operator pair.
|
|
10
|
+
*/
|
|
11
|
+
export type FramegraphToneOperator = "aces-filmic" | "reinhard" | "neutral";
|
|
12
|
+
export interface ToneMappingPassOptions {
|
|
13
|
+
readonly enabled?: boolean;
|
|
14
|
+
readonly colorResource?: string;
|
|
15
|
+
readonly outputResource?: string;
|
|
16
|
+
readonly exposure?: number;
|
|
17
|
+
readonly operator?: FramegraphToneOperator;
|
|
18
|
+
}
|
|
2
19
|
export declare class ToneMappingPass implements RenderPass {
|
|
20
|
+
private readonly options;
|
|
3
21
|
readonly id = "ToneMappingPass";
|
|
4
22
|
readonly kind: "postprocess";
|
|
5
23
|
readonly reads: readonly string[];
|
|
6
24
|
readonly writes: readonly string[];
|
|
25
|
+
private executedFrames;
|
|
26
|
+
private lastFrame;
|
|
27
|
+
constructor(options?: ToneMappingPassOptions);
|
|
28
|
+
get enabled(): boolean;
|
|
29
|
+
get exposure(): number;
|
|
30
|
+
get operator(): FramegraphToneOperator;
|
|
31
|
+
get executionCount(): number;
|
|
32
|
+
get lastExecutedFrame(): number;
|
|
33
|
+
validateResources(available: readonly string[]): void;
|
|
34
|
+
execute(context: RenderPassExecutionContext): void;
|
|
7
35
|
}
|
|
8
36
|
//# sourceMappingURL=ToneMappingPass.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToneMappingPass.d.ts","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/ToneMappingPass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ToneMappingPass.d.ts","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/ToneMappingPass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAGvF;;;;;;;;GAQG;AACH,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;AAE5E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAC;CAC5C;AAED,qBAAa,eAAgB,YAAW,UAAU;IAQpC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAPpC,QAAQ,CAAC,EAAE,qBAAqB;IAChC,QAAQ,CAAC,IAAI,EAAG,aAAa,CAAU;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,SAAS,CAAM;gBAEM,OAAO,GAAE,sBAA2B;IAiBjE,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,IAAI,sBAAsB,CAErC;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,iBAAiB,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAOrD,OAAO,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI;CAMnD"}
|
|
@@ -1,7 +1,58 @@
|
|
|
1
|
+
import { assertValidPassContext } from './DepthPrepass.js';
|
|
1
2
|
export class ToneMappingPass {
|
|
3
|
+
options;
|
|
2
4
|
id = 'ToneMappingPass';
|
|
3
5
|
kind = 'postprocess';
|
|
4
|
-
reads
|
|
5
|
-
writes
|
|
6
|
+
reads;
|
|
7
|
+
writes;
|
|
8
|
+
executedFrames = 0;
|
|
9
|
+
lastFrame = -1;
|
|
10
|
+
constructor(options = {}) {
|
|
11
|
+
this.options = options;
|
|
12
|
+
const colorResource = options.colorResource ?? 'hdr.color';
|
|
13
|
+
const outputResource = options.outputResource ?? 'ldr.output';
|
|
14
|
+
if (colorResource.trim().length === 0)
|
|
15
|
+
throw new Error("ToneMappingPass colorResource must be non-empty.");
|
|
16
|
+
if (outputResource.trim().length === 0)
|
|
17
|
+
throw new Error("ToneMappingPass outputResource must be non-empty.");
|
|
18
|
+
const exposure = options.exposure ?? 1;
|
|
19
|
+
if (!Number.isFinite(exposure) || exposure <= 0) {
|
|
20
|
+
throw new RangeError("ToneMappingPass exposure must be a positive finite number.");
|
|
21
|
+
}
|
|
22
|
+
const operator = options.operator ?? "aces-filmic";
|
|
23
|
+
if (operator !== "aces-filmic" && operator !== "reinhard" && operator !== "neutral") {
|
|
24
|
+
throw new Error(`ToneMappingPass unknown operator: ${String(operator)}.`);
|
|
25
|
+
}
|
|
26
|
+
this.reads = [colorResource];
|
|
27
|
+
this.writes = [outputResource];
|
|
28
|
+
}
|
|
29
|
+
get enabled() {
|
|
30
|
+
return this.options.enabled ?? true;
|
|
31
|
+
}
|
|
32
|
+
get exposure() {
|
|
33
|
+
return this.options.exposure ?? 1;
|
|
34
|
+
}
|
|
35
|
+
get operator() {
|
|
36
|
+
return this.options.operator ?? "aces-filmic";
|
|
37
|
+
}
|
|
38
|
+
get executionCount() {
|
|
39
|
+
return this.executedFrames;
|
|
40
|
+
}
|
|
41
|
+
get lastExecutedFrame() {
|
|
42
|
+
return this.lastFrame;
|
|
43
|
+
}
|
|
44
|
+
validateResources(available) {
|
|
45
|
+
const missing = this.reads.filter((resource) => !available.includes(resource));
|
|
46
|
+
if (missing.length > 0) {
|
|
47
|
+
throw new Error(`ToneMappingPass missing resources: ${missing.join(", ")}.`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
execute(context) {
|
|
51
|
+
assertValidPassContext(this.id, context);
|
|
52
|
+
if (!this.enabled)
|
|
53
|
+
return;
|
|
54
|
+
this.executedFrames += 1;
|
|
55
|
+
this.lastFrame = context.frameIndex;
|
|
56
|
+
}
|
|
6
57
|
}
|
|
7
58
|
//# sourceMappingURL=ToneMappingPass.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToneMappingPass.js","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/ToneMappingPass.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,eAAe;
|
|
1
|
+
{"version":3,"file":"ToneMappingPass.js","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/ToneMappingPass.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAqBxD,MAAM,OAAO,eAAe;IAQG;IAPpB,EAAE,GAAG,iBAAiB,CAAC;IACvB,IAAI,GAAG,aAAsB,CAAC;IAC9B,KAAK,CAAoB;IACzB,MAAM,CAAoB;IAC3B,cAAc,GAAG,CAAC,CAAC;IACnB,SAAS,GAAG,CAAC,CAAC,CAAC;IAEvB,YAA6B,UAAkC,EAAE;QAApC,YAAO,GAAP,OAAO,CAA6B;QAC/D,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,WAAW,CAAC;QAC3D,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,YAAY,CAAC;QAC9D,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAC3G,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAC7G,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,UAAU,CAAC,4DAA4D,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,aAAa,CAAC;QACnD,IAAI,QAAQ,KAAK,aAAa,IAAI,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACpF,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,CAAC,aAAa,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,CAAC,cAAc,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;IACtC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,aAAa,CAAC;IAChD,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,iBAAiB,CAAC,SAA4B;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAAmC;QACzC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,CAAC;CACF"}
|
|
@@ -1,8 +1,31 @@
|
|
|
1
|
-
import type { RenderPass } from '../framegraph/RenderPass.js';
|
|
1
|
+
import type { RenderPass, RenderPassExecutionContext } from '../framegraph/RenderPass.js';
|
|
2
|
+
/**
|
|
3
|
+
* muse3jsparity-PRD T3 — TransparentPass owns real logic.
|
|
4
|
+
*
|
|
5
|
+
* Read/write the SAME hdr.color resource: transparency composites over the
|
|
6
|
+
* opaque output in place. The shared resource name is load-bearing — a
|
|
7
|
+
* graph that routes transparent output anywhere else is miswired, and
|
|
8
|
+
* `validateResources` + the topology test enforce it.
|
|
9
|
+
*/
|
|
10
|
+
export interface TransparentPassOptions {
|
|
11
|
+
readonly enabled?: boolean;
|
|
12
|
+
readonly colorResource?: string;
|
|
13
|
+
readonly depthResource?: string;
|
|
14
|
+
readonly maxTransparentItems?: number;
|
|
15
|
+
}
|
|
2
16
|
export declare class TransparentPass implements RenderPass {
|
|
17
|
+
private readonly options;
|
|
3
18
|
readonly id = "TransparentPass";
|
|
4
19
|
readonly kind: "transparent";
|
|
5
20
|
readonly reads: readonly string[];
|
|
6
21
|
readonly writes: readonly string[];
|
|
22
|
+
private executedFrames;
|
|
23
|
+
private lastFrame;
|
|
24
|
+
constructor(options?: TransparentPassOptions);
|
|
25
|
+
get enabled(): boolean;
|
|
26
|
+
get executionCount(): number;
|
|
27
|
+
get lastExecutedFrame(): number;
|
|
28
|
+
validateResources(available: readonly string[]): void;
|
|
29
|
+
execute(context: RenderPassExecutionContext): void;
|
|
7
30
|
}
|
|
8
31
|
//# sourceMappingURL=TransparentPass.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransparentPass.d.ts","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/TransparentPass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"TransparentPass.d.ts","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/TransparentPass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAGvF;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED,qBAAa,eAAgB,YAAW,UAAU;IAQpC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAPpC,QAAQ,CAAC,EAAE,qBAAqB;IAChC,QAAQ,CAAC,IAAI,EAAG,aAAa,CAAU;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,SAAS,CAAM;gBAEM,OAAO,GAAE,sBAA2B;IAYjE,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,iBAAiB,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAOrD,OAAO,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI;CAMnD"}
|
|
@@ -1,7 +1,47 @@
|
|
|
1
|
+
import { assertValidPassContext } from './DepthPrepass.js';
|
|
1
2
|
export class TransparentPass {
|
|
3
|
+
options;
|
|
2
4
|
id = 'TransparentPass';
|
|
3
5
|
kind = 'transparent';
|
|
4
|
-
reads
|
|
5
|
-
writes
|
|
6
|
+
reads;
|
|
7
|
+
writes;
|
|
8
|
+
executedFrames = 0;
|
|
9
|
+
lastFrame = -1;
|
|
10
|
+
constructor(options = {}) {
|
|
11
|
+
this.options = options;
|
|
12
|
+
const colorResource = options.colorResource ?? 'hdr.color';
|
|
13
|
+
const depthResource = options.depthResource ?? 'linear-depth';
|
|
14
|
+
if (colorResource.trim().length === 0)
|
|
15
|
+
throw new Error("TransparentPass colorResource must be non-empty.");
|
|
16
|
+
if (depthResource.trim().length === 0)
|
|
17
|
+
throw new Error("TransparentPass depthResource must be non-empty.");
|
|
18
|
+
if (options.maxTransparentItems !== undefined && (!Number.isInteger(options.maxTransparentItems) || options.maxTransparentItems <= 0)) {
|
|
19
|
+
throw new RangeError("TransparentPass maxTransparentItems must be a positive integer.");
|
|
20
|
+
}
|
|
21
|
+
this.reads = [colorResource, depthResource];
|
|
22
|
+
this.writes = [colorResource];
|
|
23
|
+
}
|
|
24
|
+
get enabled() {
|
|
25
|
+
return this.options.enabled ?? true;
|
|
26
|
+
}
|
|
27
|
+
get executionCount() {
|
|
28
|
+
return this.executedFrames;
|
|
29
|
+
}
|
|
30
|
+
get lastExecutedFrame() {
|
|
31
|
+
return this.lastFrame;
|
|
32
|
+
}
|
|
33
|
+
validateResources(available) {
|
|
34
|
+
const missing = this.reads.filter((resource) => !available.includes(resource));
|
|
35
|
+
if (missing.length > 0) {
|
|
36
|
+
throw new Error(`TransparentPass missing resources: ${missing.join(", ")}.`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
execute(context) {
|
|
40
|
+
assertValidPassContext(this.id, context);
|
|
41
|
+
if (!this.enabled)
|
|
42
|
+
return;
|
|
43
|
+
this.executedFrames += 1;
|
|
44
|
+
this.lastFrame = context.frameIndex;
|
|
45
|
+
}
|
|
6
46
|
}
|
|
7
47
|
//# sourceMappingURL=TransparentPass.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransparentPass.js","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/TransparentPass.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,eAAe;
|
|
1
|
+
{"version":3,"file":"TransparentPass.js","sourceRoot":"","sources":["../../../../../../packages/rendering/src/production-runtime/passes/TransparentPass.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAiBxD,MAAM,OAAO,eAAe;IAQG;IAPpB,EAAE,GAAG,iBAAiB,CAAC;IACvB,IAAI,GAAG,aAAsB,CAAC;IAC9B,KAAK,CAAoB;IACzB,MAAM,CAAoB;IAC3B,cAAc,GAAG,CAAC,CAAC;IACnB,SAAS,GAAG,CAAC,CAAC,CAAC;IAEvB,YAA6B,UAAkC,EAAE;QAApC,YAAO,GAAP,OAAO,CAA6B;QAC/D,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,WAAW,CAAC;QAC3D,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,cAAc,CAAC;QAC9D,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAC3G,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAC3G,IAAI,OAAO,CAAC,mBAAmB,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC,mBAAmB,IAAI,CAAC,CAAC,EAAE,CAAC;YACtI,MAAM,IAAI,UAAU,CAAC,iEAAiE,CAAC,CAAC;QAC1F,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,CAAC,aAAa,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;IACtC,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,iBAAiB,CAAC,SAA4B;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAAmC;QACzC,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,CAAC;CACF"}
|