@aura3d/rendering 2.0.4 → 3.0.1
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/CascadedShadowMaps.d.ts.map +1 -1
- package/dist/CascadedShadowMaps.js +3 -1
- package/dist/CascadedShadowMaps.js.map +1 -1
- 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/ExtensionScalarAtlas.d.ts +18 -0
- package/dist/ExtensionScalarAtlas.d.ts.map +1 -0
- package/dist/ExtensionScalarAtlas.js +107 -0
- package/dist/ExtensionScalarAtlas.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/LeanWebGL2Device.d.ts +265 -0
- package/dist/LeanWebGL2Device.d.ts.map +1 -0
- package/dist/LeanWebGL2Device.js +4001 -0
- package/dist/LeanWebGL2Device.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/MaterialBinding.js +1 -1
- package/dist/MaterialBinding.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 +32 -0
- package/dist/PostProcessPass.d.ts.map +1 -1
- package/dist/PostProcessPass.js +79 -36
- package/dist/PostProcessPass.js.map +1 -1
- package/dist/ProjectionMath.d.ts +3 -0
- package/dist/ProjectionMath.d.ts.map +1 -0
- package/dist/ProjectionMath.js +26 -0
- package/dist/ProjectionMath.js.map +1 -0
- package/dist/ReflectionSurfaces.d.ts +17 -0
- package/dist/ReflectionSurfaces.d.ts.map +1 -1
- package/dist/ReflectionSurfaces.js +103 -1
- package/dist/ReflectionSurfaces.js.map +1 -1
- package/dist/RenderDevice.d.ts +92 -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.d.ts +9 -0
- package/dist/Renderer.d.ts.map +1 -1
- package/dist/Renderer.js +97 -9
- package/dist/Renderer.js.map +1 -1
- package/dist/RendererPostprocessPlan.d.ts +64 -3
- package/dist/RendererPostprocessPlan.d.ts.map +1 -1
- package/dist/RendererPostprocessPlan.js +116 -12
- 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/ScreenSpaceReflectionPass.d.ts +43 -0
- package/dist/ScreenSpaceReflectionPass.d.ts.map +1 -0
- package/dist/ScreenSpaceReflectionPass.js +58 -0
- package/dist/ScreenSpaceReflectionPass.js.map +1 -0
- 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 +601 -186
- package/dist/ShaderLibrary.js.map +1 -1
- package/dist/ShaderLibraryCore.d.ts +3 -0
- package/dist/ShaderLibraryCore.d.ts.map +1 -1
- package/dist/ShaderLibraryCore.js +73 -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/TemporalHistory.d.ts +37 -0
- package/dist/TemporalHistory.d.ts.map +1 -0
- package/dist/TemporalHistory.js +135 -0
- package/dist/TemporalHistory.js.map +1 -0
- package/dist/TemporalMath.d.ts +3 -0
- package/dist/TemporalMath.d.ts.map +1 -0
- package/dist/TemporalMath.js +9 -0
- package/dist/TemporalMath.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 +4 -0
- package/dist/TexturedPBRMaterial.d.ts.map +1 -1
- package/dist/TexturedPBRMaterial.js +88 -5
- 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 +73 -0
- package/dist/WebGL2Device.d.ts.map +1 -1
- package/dist/WebGL2Device.js +836 -79
- package/dist/WebGL2Device.js.map +1 -1
- package/dist/WebGPUDevice.d.ts +62 -1
- package/dist/WebGPUDevice.d.ts.map +1 -1
- package/dist/WebGPUDevice.js +844 -51
- package/dist/WebGPUDevice.js.map +1 -1
- package/dist/WebGPUExtensionAtlas.d.ts +6 -0
- package/dist/WebGPUExtensionAtlas.d.ts.map +1 -0
- package/dist/WebGPUExtensionAtlas.js +225 -0
- package/dist/WebGPUExtensionAtlas.js.map +1 -0
- 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 +188 -0
- package/dist/effects/GPUParticleBackend.d.ts.map +1 -1
- package/dist/effects/GPUParticleBackend.js +710 -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/ResidentGPUParticleRenderer.d.ts +158 -0
- package/dist/effects/ResidentGPUParticleRenderer.d.ts.map +1 -0
- package/dist/effects/ResidentGPUParticleRenderer.js +576 -0
- package/dist/effects/ResidentGPUParticleRenderer.js.map +1 -0
- 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/extension-scalar-atlas.d.ts +3 -0
- package/dist/extension-scalar-atlas.d.ts.map +1 -0
- package/dist/extension-scalar-atlas.js +2 -0
- package/dist/extension-scalar-atlas.js.map +1 -0
- package/dist/index.d.ts +58 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -10
- package/dist/index.js.map +1 -1
- package/dist/lean/LeanProductionRenderer.d.ts.map +1 -1
- package/dist/lean/LeanProductionRenderer.js +2 -2
- package/dist/lean/LeanProductionRenderer.js.map +1 -1
- package/dist/lean-core-runtime.d.ts +13 -0
- package/dist/lean-core-runtime.d.ts.map +1 -0
- package/dist/lean-core-runtime.js +10 -0
- package/dist/lean-core-runtime.js.map +1 -0
- package/dist/materials/MaterialExtensions.js +3 -3
- package/dist/materials/MaterialExtensions.js.map +1 -1
- package/dist/postprocess/NativeBloomPyramid.d.ts +44 -0
- package/dist/postprocess/NativeBloomPyramid.d.ts.map +1 -0
- package/dist/postprocess/NativeBloomPyramid.js +84 -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/ProductionRendererTypes.d.ts +1 -0
- package/dist/production-runtime/ProductionRendererTypes.d.ts.map +1 -1
- package/dist/production-runtime/ProductionRendererTypes.js.map +1 -1
- package/dist/production-runtime/ProductionRuntimeRenderer.d.ts +3 -0
- package/dist/production-runtime/ProductionRuntimeRenderer.d.ts.map +1 -1
- package/dist/production-runtime/ProductionRuntimeRenderer.js +8 -1
- package/dist/production-runtime/ProductionRuntimeRenderer.js.map +1 -1
- package/dist/production-runtime/ProductionWebGL2Renderer.d.ts +4 -0
- package/dist/production-runtime/ProductionWebGL2Renderer.d.ts.map +1 -1
- package/dist/production-runtime/ProductionWebGL2Renderer.js +15 -0
- package/dist/production-runtime/ProductionWebGL2Renderer.js.map +1 -1
- package/dist/production-runtime/ProductionWebGPURenderer.d.ts +58 -0
- package/dist/production-runtime/ProductionWebGPURenderer.d.ts.map +1 -1
- package/dist/production-runtime/ProductionWebGPURenderer.js +127 -0
- package/dist/production-runtime/ProductionWebGPURenderer.js.map +1 -1
- package/dist/production-runtime/framegraph/FrameGraph.d.ts +4 -2
- package/dist/production-runtime/framegraph/FrameGraph.d.ts.map +1 -1
- package/dist/production-runtime/framegraph/FrameGraph.js +62 -4
- package/dist/production-runtime/framegraph/FrameGraph.js.map +1 -1
- package/dist/production-runtime/framegraph/NativeFrameGraphBindings.d.ts +32 -0
- package/dist/production-runtime/framegraph/NativeFrameGraphBindings.d.ts.map +1 -0
- package/dist/production-runtime/framegraph/NativeFrameGraphBindings.js +111 -0
- package/dist/production-runtime/framegraph/NativeFrameGraphBindings.js.map +1 -0
- package/dist/production-runtime/framegraph/RenderPass.d.ts +23 -0
- package/dist/production-runtime/framegraph/RenderPass.d.ts.map +1 -1
- package/dist/production-runtime/framegraph/RenderPass.js +87 -1
- package/dist/production-runtime/framegraph/RenderPass.js.map +1 -1
- package/dist/production-runtime/index.d.ts +7 -4
- package/dist/production-runtime/index.d.ts.map +1 -1
- package/dist/production-runtime/index.js +4 -2
- package/dist/production-runtime/index.js.map +1 -1
- package/dist/production-runtime/passes/DepthPrepass.d.ts +18 -1
- package/dist/production-runtime/passes/DepthPrepass.d.ts.map +1 -1
- package/dist/production-runtime/passes/DepthPrepass.js +41 -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 +19 -1
- package/dist/production-runtime/passes/OpaquePass.d.ts.map +1 -1
- package/dist/production-runtime/passes/OpaquePass.js +43 -2
- package/dist/production-runtime/passes/OpaquePass.js.map +1 -1
- package/dist/production-runtime/passes/ShadowPass.d.ts +19 -1
- package/dist/production-runtime/passes/ShadowPass.d.ts.map +1 -1
- package/dist/production-runtime/passes/ShadowPass.js +45 -2
- package/dist/production-runtime/passes/ShadowPass.js.map +1 -1
- package/dist/production-runtime/passes/SkyboxPass.d.ts +17 -1
- package/dist/production-runtime/passes/SkyboxPass.d.ts.map +1 -1
- package/dist/production-runtime/passes/SkyboxPass.js +41 -2
- package/dist/production-runtime/passes/SkyboxPass.js.map +1 -1
- package/dist/production-runtime/passes/ToneMappingPass.d.ts +26 -1
- package/dist/production-runtime/passes/ToneMappingPass.d.ts.map +1 -1
- package/dist/production-runtime/passes/ToneMappingPass.js +62 -2
- package/dist/production-runtime/passes/ToneMappingPass.js.map +1 -1
- package/dist/production-runtime/passes/TransparentPass.d.ts +19 -1
- package/dist/production-runtime/passes/TransparentPass.d.ts.map +1 -1
- package/dist/production-runtime/passes/TransparentPass.js +47 -2
- package/dist/production-runtime/passes/TransparentPass.js.map +1 -1
- package/dist/reflection-surfaces.d.ts +5 -0
- package/dist/reflection-surfaces.d.ts.map +1 -0
- package/dist/reflection-surfaces.js +3 -0
- package/dist/reflection-surfaces.js.map +1 -0
- 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 +77 -0
- package/dist/webgpu/WebGPUPostShaders.d.ts.map +1 -0
- package/dist/webgpu/WebGPUPostShaders.js +261 -0
- package/dist/webgpu/WebGPUPostShaders.js.map +1 -0
- package/dist/webgpu/WebGPUTemporal.d.ts +17 -0
- package/dist/webgpu/WebGPUTemporal.d.ts.map +1 -0
- package/dist/webgpu/WebGPUTemporal.js +64 -0
- package/dist/webgpu/WebGPUTemporal.js.map +1 -0
- package/dist/webgpu.d.ts +6 -0
- package/dist/webgpu.d.ts.map +1 -1
- package/dist/webgpu.js +4 -0
- package/dist/webgpu.js.map +1 -1
- package/package.json +15 -3
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* D3 day/night sky descriptor (PRD D3 box 1).
|
|
3
|
+
*
|
|
4
|
+
* Pure deterministic descriptor for a time-of-day sky: gradient keyframes
|
|
5
|
+
* (zenith/horizon hex), a sun disc, a moon disc with phase, a seeded star
|
|
6
|
+
* field, and 2D value-noise cloud cells.
|
|
7
|
+
*
|
|
8
|
+
* Claim boundary: this is a color-gradient dome with sprite/disc overlays.
|
|
9
|
+
* There is no scattering simulation here — Rayleigh/Mie models are excluded
|
|
10
|
+
* and must not be claimed from this module.
|
|
11
|
+
*/
|
|
12
|
+
export const DAY_NIGHT_SKY_CLAIM_BOUNDARY = "Time-of-day gradient dome with sun/moon discs, seeded stars, and 2D-noise clouds. " +
|
|
13
|
+
"Scattering-simulation claims are excluded: no Rayleigh/Mie model is implemented or implied.";
|
|
14
|
+
const skyKeyframes = [
|
|
15
|
+
{ hour: 0, dayFactor: 0, zenith: [0x02, 0x06, 0x17], horizon: [0x0a, 0x14, 0x33] },
|
|
16
|
+
{ hour: 5, dayFactor: 0, zenith: [0x02, 0x06, 0x17], horizon: [0x0a, 0x14, 0x33] },
|
|
17
|
+
{ hour: 6.5, dayFactor: 0.35, zenith: [0x2b, 0x4a, 0x7a], horizon: [0xf5, 0x9e, 0x5c] },
|
|
18
|
+
{ hour: 8, dayFactor: 0.8, zenith: [0x3f, 0x7d, 0xd6], horizon: [0xbf, 0xe2, 0xff] },
|
|
19
|
+
{ hour: 12, dayFactor: 1, zenith: [0x1f, 0x5f, 0xc4], horizon: [0x8f, 0xc9, 0xff] },
|
|
20
|
+
{ hour: 16, dayFactor: 0.8, zenith: [0x3f, 0x7d, 0xd6], horizon: [0xbf, 0xe2, 0xff] },
|
|
21
|
+
{ hour: 17.5, dayFactor: 0.35, zenith: [0x2b, 0x4a, 0x7a], horizon: [0xf5, 0x9e, 0x5c] },
|
|
22
|
+
{ hour: 19, dayFactor: 0, zenith: [0x02, 0x06, 0x17], horizon: [0x0a, 0x14, 0x33] },
|
|
23
|
+
{ hour: 24, dayFactor: 0, zenith: [0x02, 0x06, 0x17], horizon: [0x0a, 0x14, 0x33] }
|
|
24
|
+
];
|
|
25
|
+
export function createDayNightSky(options = {}) {
|
|
26
|
+
const hour = options.hour ?? 12;
|
|
27
|
+
if (!Number.isFinite(hour) || hour < 0 || hour >= 24) {
|
|
28
|
+
throw new RangeError("Day/night sky hour must be in [0, 24).");
|
|
29
|
+
}
|
|
30
|
+
const seed = Math.floor(options.seed ?? 0xd3a7);
|
|
31
|
+
if (!Number.isInteger(seed))
|
|
32
|
+
throw new RangeError("Day/night sky seed must be an integer.");
|
|
33
|
+
const starCount = rangeInt(options.starCount ?? 90, 0, 400, "starCount");
|
|
34
|
+
const cloudCellCount = rangeInt(options.cloudCellCount ?? 14, 0, 64, "cloudCellCount");
|
|
35
|
+
const lower = [...skyKeyframes].reverse().find((key) => key.hour <= hour) ?? skyKeyframes[0];
|
|
36
|
+
const upper = skyKeyframes.find((key) => key.hour > hour) ?? skyKeyframes[skyKeyframes.length - 1];
|
|
37
|
+
const span = Math.max(1e-6, upper.hour - lower.hour);
|
|
38
|
+
const t = (hour - lower.hour) / span;
|
|
39
|
+
const dayFactor = lower.dayFactor + (upper.dayFactor - lower.dayFactor) * t;
|
|
40
|
+
const nightFactor = 1 - dayFactor;
|
|
41
|
+
const zenith = lerpRgb(lower.zenith, upper.zenith, t);
|
|
42
|
+
const horizon = lerpRgb(lower.horizon, upper.horizon, t);
|
|
43
|
+
const sunAngle = ((hour - 6) / 12) * Math.PI;
|
|
44
|
+
const sun = {
|
|
45
|
+
azimuthRadians: round4(sunAngle),
|
|
46
|
+
elevationRadians: round4(Math.sin(sunAngle) * 1.1),
|
|
47
|
+
angularRadius: 0.055,
|
|
48
|
+
color: dayFactor > 0.25 ? "#fff7d6" : "#ff9e5c",
|
|
49
|
+
intensity: round4(0.25 + dayFactor * 0.75)
|
|
50
|
+
};
|
|
51
|
+
const moonAngle = sunAngle + Math.PI;
|
|
52
|
+
const phase = (seeded01(seed ^ 0x9e37) * 0.9 + 0.1);
|
|
53
|
+
const moon = {
|
|
54
|
+
azimuthRadians: round4(moonAngle),
|
|
55
|
+
elevationRadians: round4(Math.sin(moonAngle) * 1.1),
|
|
56
|
+
angularRadius: 0.042,
|
|
57
|
+
color: "#dbeafe",
|
|
58
|
+
intensity: round4(0.2 + nightFactor * 0.8),
|
|
59
|
+
phase: round4(phase)
|
|
60
|
+
};
|
|
61
|
+
const stars = Array.from({ length: starCount }, (_, index) => ({
|
|
62
|
+
x: round4(seeded01(seed + index * 101) * 2 - 1),
|
|
63
|
+
y: round4(seeded01(seed + index * 331) * 1.4 - 0.15),
|
|
64
|
+
size: round4(0.004 + seeded01(seed + index * 557) * 0.01),
|
|
65
|
+
brightness: round4((0.35 + seeded01(seed + index * 733) * 0.65) * nightFactor)
|
|
66
|
+
}));
|
|
67
|
+
const visibleStarCount = stars.filter((star) => star.brightness > 0.05 && star.y > 0).length;
|
|
68
|
+
const clouds = Array.from({ length: cloudCellCount }, (_, index) => {
|
|
69
|
+
const x = seeded01(seed + index * 37) * 2 - 1;
|
|
70
|
+
const y = 0.12 + seeded01(seed + index * 71) * 0.62;
|
|
71
|
+
const coverage = sampleCloudNoise(x, y, seed);
|
|
72
|
+
return {
|
|
73
|
+
x: round4(x),
|
|
74
|
+
y: round4(y),
|
|
75
|
+
radius: round4(0.1 + seeded01(seed + index * 113) * 0.22),
|
|
76
|
+
coverage: round4(coverage),
|
|
77
|
+
alpha: round4(coverage * (0.25 + dayFactor * 0.55))
|
|
78
|
+
};
|
|
79
|
+
});
|
|
80
|
+
const averageCloudCoverage = clouds.length === 0
|
|
81
|
+
? 0
|
|
82
|
+
: round4(clouds.reduce((sum, cell) => sum + cell.coverage, 0) / clouds.length);
|
|
83
|
+
const hash = hashValues([
|
|
84
|
+
hour, dayFactor, zenith[0], zenith[1], zenith[2], horizon[0], horizon[1], horizon[2],
|
|
85
|
+
sun.elevationRadians, moon.elevationRadians, visibleStarCount, averageCloudCoverage,
|
|
86
|
+
stars.length, clouds.length
|
|
87
|
+
]);
|
|
88
|
+
return {
|
|
89
|
+
hour,
|
|
90
|
+
seed,
|
|
91
|
+
dayFactor: round4(dayFactor),
|
|
92
|
+
nightFactor: round4(nightFactor),
|
|
93
|
+
zenithColor: rgbToHex(zenith),
|
|
94
|
+
horizonColor: rgbToHex(horizon),
|
|
95
|
+
sun,
|
|
96
|
+
moon,
|
|
97
|
+
stars,
|
|
98
|
+
visibleStarCount,
|
|
99
|
+
clouds,
|
|
100
|
+
averageCloudCoverage,
|
|
101
|
+
claimBoundary: DAY_NIGHT_SKY_CLAIM_BOUNDARY,
|
|
102
|
+
hash
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/** Seeded 2D value-noise cloud density in [0, 1]. Exported for route builders. */
|
|
106
|
+
export function sampleCloudNoise(x, y, seed) {
|
|
107
|
+
const xi = Math.floor(x * 4);
|
|
108
|
+
const yi = Math.floor(y * 4);
|
|
109
|
+
const xf = x * 4 - xi;
|
|
110
|
+
const yf = y * 4 - yi;
|
|
111
|
+
const smooth = (v) => v * v * (3 - 2 * v);
|
|
112
|
+
const corner = (dx, dy) => seeded01((seed ^ (xi + dx) * 374761393 ^ (yi + dy) * 668265263) >>> 0);
|
|
113
|
+
const top = corner(0, 0) + (corner(1, 0) - corner(0, 0)) * smooth(xf);
|
|
114
|
+
const bottom = corner(0, 1) + (corner(1, 1) - corner(0, 1)) * smooth(xf);
|
|
115
|
+
const value = top + (bottom - top) * smooth(yf);
|
|
116
|
+
return Math.max(0, Math.min(1, (value - 0.32) / 0.36));
|
|
117
|
+
}
|
|
118
|
+
function lerpRgb(a, b, t) {
|
|
119
|
+
return [
|
|
120
|
+
Math.round(a[0] + (b[0] - a[0]) * t),
|
|
121
|
+
Math.round(a[1] + (b[1] - a[1]) * t),
|
|
122
|
+
Math.round(a[2] + (b[2] - a[2]) * t)
|
|
123
|
+
];
|
|
124
|
+
}
|
|
125
|
+
function rgbToHex(rgb) {
|
|
126
|
+
const toHex = (v) => Math.max(0, Math.min(255, Math.round(v))).toString(16).padStart(2, "0");
|
|
127
|
+
return `#${toHex(rgb[0])}${toHex(rgb[1])}${toHex(rgb[2])}`;
|
|
128
|
+
}
|
|
129
|
+
function seeded01(seed) {
|
|
130
|
+
let value = seed >>> 0;
|
|
131
|
+
value ^= value << 13;
|
|
132
|
+
value ^= value >>> 17;
|
|
133
|
+
value ^= value << 5;
|
|
134
|
+
return ((value >>> 0) % 10_000) / 10_000;
|
|
135
|
+
}
|
|
136
|
+
function rangeInt(value, min, max, label) {
|
|
137
|
+
if (!Number.isInteger(value) || value < min || value > max) {
|
|
138
|
+
throw new RangeError(`Day/night sky ${label} must be an integer in [${min}, ${max}].`);
|
|
139
|
+
}
|
|
140
|
+
return value;
|
|
141
|
+
}
|
|
142
|
+
function round4(value) {
|
|
143
|
+
return Number(value.toFixed(4));
|
|
144
|
+
}
|
|
145
|
+
function hashValues(values) {
|
|
146
|
+
let hash = 0x811c9dc5;
|
|
147
|
+
for (const value of values) {
|
|
148
|
+
const scaled = Math.round(value * 10_000);
|
|
149
|
+
hash ^= scaled & 0xff;
|
|
150
|
+
hash = Math.imul(hash, 0x01000193) >>> 0;
|
|
151
|
+
hash ^= (scaled >>> 8) & 0xff;
|
|
152
|
+
hash = Math.imul(hash, 0x01000193) >>> 0;
|
|
153
|
+
}
|
|
154
|
+
return hash.toString(16).padStart(8, "0");
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=DayNightSky.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DayNightSky.js","sourceRoot":"","sources":["../../../../packages/rendering/src/DayNightSky.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ExternalParityEnvironmentPreset } from "./ExternalParityRenderPreset.js";
|
|
2
|
+
export type EnvironmentPresetPackSlot = "indoor" | "outdoor" | "night";
|
|
3
|
+
export interface EnvironmentPresetPackEntry {
|
|
4
|
+
readonly slot: EnvironmentPresetPackSlot;
|
|
5
|
+
readonly basePreset: ExternalParityEnvironmentPreset;
|
|
6
|
+
/**
|
|
7
|
+
* Measured exposure gain applied to the generated HDR source so every
|
|
8
|
+
* slot's mean linear luma matches the pack target (outdoor daylight).
|
|
9
|
+
* Measured 2026-09-03 from 64x32 generated sources, not guessed.
|
|
10
|
+
*/
|
|
11
|
+
readonly exposureFactor: number;
|
|
12
|
+
readonly evidence: string;
|
|
13
|
+
}
|
|
14
|
+
export interface EnvironmentPresetPack {
|
|
15
|
+
/** Pack-wide mean-luma target: the measured outdoor daylight source mean. */
|
|
16
|
+
readonly targetMeanLuma: number;
|
|
17
|
+
readonly entries: readonly EnvironmentPresetPackEntry[];
|
|
18
|
+
/** Frozen-reference SSIM floor for exposure-normalized PMREM rows. */
|
|
19
|
+
readonly pmremRowSsimFloor: 0.975;
|
|
20
|
+
}
|
|
21
|
+
export declare const AURA_INDOOR_OUTDOOR_NIGHT_PRESET_PACK: EnvironmentPresetPack;
|
|
22
|
+
/**
|
|
23
|
+
* Applies a pack entry's measured exposure gain to generated HDR float
|
|
24
|
+
* data (pure linear gain: structure-preserving by construction, which is
|
|
25
|
+
* what lets the frozen-reference SSIM gate isolate pipeline regressions
|
|
26
|
+
* from exposure intent).
|
|
27
|
+
*/
|
|
28
|
+
export declare function applyPresetPackExposure(data: Float32Array, exposureFactor: number): Float32Array;
|
|
29
|
+
export declare function meanLinearLuma(data: Float32Array, pixelCount: number): number;
|
|
30
|
+
//# sourceMappingURL=EnvironmentPresetPack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnvironmentPresetPack.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/EnvironmentPresetPack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAEpF,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAEvE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,+BAA+B,CAAC;IACrD;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,6EAA6E;IAC7E,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,0BAA0B,EAAE,CAAC;IACxD,sEAAsE;IACtE,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC;CACnC;AAED,eAAO,MAAM,qCAAqC,EAAE,qBAuBnD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,YAAY,EAClB,cAAc,EAAE,MAAM,GACrB,YAAY,CASd;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAO7E"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export const AURA_INDOOR_OUTDOOR_NIGHT_PRESET_PACK = {
|
|
2
|
+
targetMeanLuma: 0.60698,
|
|
3
|
+
entries: [
|
|
4
|
+
{
|
|
5
|
+
slot: "indoor",
|
|
6
|
+
basePreset: "softbox",
|
|
7
|
+
exposureFactor: 0.866755,
|
|
8
|
+
evidence: "softbox interior source mean 0.70029 normalized to the daylight target 0.60698"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
slot: "outdoor",
|
|
12
|
+
basePreset: "daylight",
|
|
13
|
+
exposureFactor: 1,
|
|
14
|
+
evidence: "daylight source mean 0.60698 defines the pack target; identity gain"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
slot: "night",
|
|
18
|
+
basePreset: "evening",
|
|
19
|
+
exposureFactor: 2.114618,
|
|
20
|
+
evidence: "evening source mean 0.28704 normalized to the daylight target 0.60698"
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
pmremRowSsimFloor: 0.975
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Applies a pack entry's measured exposure gain to generated HDR float
|
|
27
|
+
* data (pure linear gain: structure-preserving by construction, which is
|
|
28
|
+
* what lets the frozen-reference SSIM gate isolate pipeline regressions
|
|
29
|
+
* from exposure intent).
|
|
30
|
+
*/
|
|
31
|
+
export function applyPresetPackExposure(data, exposureFactor) {
|
|
32
|
+
if (!Number.isFinite(exposureFactor) || exposureFactor <= 0) {
|
|
33
|
+
throw new RangeError(`Preset pack exposure factor must be finite and positive, got ${exposureFactor}.`);
|
|
34
|
+
}
|
|
35
|
+
const out = new Float32Array(data.length);
|
|
36
|
+
for (let index = 0; index < data.length; index += 1) {
|
|
37
|
+
out[index] = data[index] * exposureFactor;
|
|
38
|
+
}
|
|
39
|
+
return out;
|
|
40
|
+
}
|
|
41
|
+
export function meanLinearLuma(data, pixelCount) {
|
|
42
|
+
let sum = 0;
|
|
43
|
+
for (let pixel = 0; pixel < pixelCount; pixel += 1) {
|
|
44
|
+
const base = pixel * 4;
|
|
45
|
+
sum += 0.2126 * data[base] + 0.7152 * data[base + 1] + 0.0722 * data[base + 2];
|
|
46
|
+
}
|
|
47
|
+
return sum / Math.max(1, pixelCount);
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=EnvironmentPresetPack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnvironmentPresetPack.js","sourceRoot":"","sources":["../../../../packages/rendering/src/EnvironmentPresetPack.ts"],"names":[],"mappings":"AAwBA,MAAM,CAAC,MAAM,qCAAqC,GAA0B;IAC1E,cAAc,EAAE,OAAO;IACvB,OAAO,EAAE;QACP;YACE,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,SAAS;YACrB,cAAc,EAAE,QAAQ;YACxB,QAAQ,EAAE,gFAAgF;SAC3F;QACD;YACE,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,UAAU;YACtB,cAAc,EAAE,CAAC;YACjB,QAAQ,EAAE,qEAAqE;SAChF;QACD;YACE,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,SAAS;YACrB,cAAc,EAAE,QAAQ;YACxB,QAAQ,EAAE,uEAAuE;SAClF;KACF;IACD,iBAAiB,EAAE,KAAK;CACzB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAkB,EAClB,cAAsB;IAEtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,UAAU,CAAC,gEAAgE,cAAc,GAAG,CAAC,CAAC;IAC1G,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAE,GAAG,cAAc,CAAC;IAC7C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAkB,EAAE,UAAkB;IACnE,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;QACvB,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAE,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAE,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAE,CAAC;IACpF,CAAC;IACD,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Texture } from "./Texture.js";
|
|
2
|
+
export declare const EXTENSION_SCALAR_ATLAS_SLOTS: readonly ["clearcoat", "clearcoatRoughness", "sheenRoughness", "iridescence", "iridescenceThickness"];
|
|
3
|
+
export type ExtensionScalarAtlasSlot = typeof EXTENSION_SCALAR_ATLAS_SLOTS[number];
|
|
4
|
+
export interface ExtensionScalarPixels {
|
|
5
|
+
readonly width: number;
|
|
6
|
+
readonly height: number;
|
|
7
|
+
readonly data: Uint8Array | Uint8ClampedArray;
|
|
8
|
+
}
|
|
9
|
+
export type ExtensionScalarAtlas = {
|
|
10
|
+
readonly texture: Texture;
|
|
11
|
+
readonly originsY?: Readonly<Record<ExtensionScalarAtlasSlot, number>>;
|
|
12
|
+
} & Readonly<Record<ExtensionScalarAtlasSlot, readonly [number, number, number, number]>>;
|
|
13
|
+
/** Each map keeps its own dimensions and complete mip chain in an isolated column.
|
|
14
|
+
* Shader texelFetch performs filtering inside the selected map/level, so adjacent
|
|
15
|
+
* columns and mip levels cannot bleed, including repeat and negative UVs.
|
|
16
|
+
*/
|
|
17
|
+
export declare function createExtensionScalarAtlas(inputs: Readonly<Partial<Record<ExtensionScalarAtlasSlot, ExtensionScalarPixels>>>, maxTextureSize?: number): ExtensionScalarAtlas;
|
|
18
|
+
//# sourceMappingURL=ExtensionScalarAtlas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExtensionScalarAtlas.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/ExtensionScalarAtlas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,eAAO,MAAM,4BAA4B,uGAAwG,CAAC;AAClJ,MAAM,MAAM,wBAAwB,GAAG,OAAO,4BAA4B,CAAC,MAAM,CAAC,CAAC;AACnF,MAAM,WAAW,qBAAqB;IAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,iBAAiB,CAAC;CAAE;AAC1I,MAAM,MAAM,oBAAoB,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC,CAAA;CAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAEjO;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,wBAAwB,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE,cAAc,SAAQ,GAAG,oBAAoB,CAsE3K"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { Texture } from "./Texture.js";
|
|
2
|
+
export const EXTENSION_SCALAR_ATLAS_SLOTS = ["clearcoat", "clearcoatRoughness", "sheenRoughness", "iridescence", "iridescenceThickness"];
|
|
3
|
+
/** Each map keeps its own dimensions and complete mip chain in an isolated column.
|
|
4
|
+
* Shader texelFetch performs filtering inside the selected map/level, so adjacent
|
|
5
|
+
* columns and mip levels cannot bleed, including repeat and negative UVs.
|
|
6
|
+
*/
|
|
7
|
+
export function createExtensionScalarAtlas(inputs, maxTextureSize = 16384) {
|
|
8
|
+
if (!Number.isSafeInteger(maxTextureSize) || maxTextureSize < 1)
|
|
9
|
+
throw new Error("Invalid atlas maximum texture size");
|
|
10
|
+
// Validate the complete layout before copying source pixels or allocating mip chains.
|
|
11
|
+
const bounds = EXTENSION_SCALAR_ATLAS_SLOTS.map((slot) => {
|
|
12
|
+
const source = inputs[slot];
|
|
13
|
+
const width = source?.width ?? 1, height = source?.height ?? 1;
|
|
14
|
+
if (!Number.isSafeInteger(width) || width < 1 || !Number.isSafeInteger(height) || height < 1 || (source && source.data.length !== width * height * 4))
|
|
15
|
+
throw new Error(`Invalid extension atlas pixels for ${slot}`);
|
|
16
|
+
let stripHeight = height, mipWidth = width, mipHeight = height;
|
|
17
|
+
while (mipWidth > 1 || mipHeight > 1) {
|
|
18
|
+
mipWidth = Math.max(1, Math.floor(mipWidth / 2));
|
|
19
|
+
mipHeight = Math.max(1, Math.floor(mipHeight / 2));
|
|
20
|
+
stripHeight += mipHeight;
|
|
21
|
+
}
|
|
22
|
+
if (width > maxTextureSize || stripHeight > maxTextureSize)
|
|
23
|
+
throw new Error(`Extension atlas source ${slot} exceeds maximum texture size ${maxTextureSize}`);
|
|
24
|
+
return { width, height, stripHeight };
|
|
25
|
+
}).sort((a, b) => b.height - a.height);
|
|
26
|
+
let preflightX = 0, preflightY = 0, preflightRow = 0;
|
|
27
|
+
for (const bound of bounds) {
|
|
28
|
+
if (preflightX + bound.width > maxTextureSize) {
|
|
29
|
+
preflightY += preflightRow;
|
|
30
|
+
preflightX = 0;
|
|
31
|
+
preflightRow = 0;
|
|
32
|
+
}
|
|
33
|
+
if (preflightY + bound.stripHeight > maxTextureSize)
|
|
34
|
+
throw new Error(`Extension atlas cannot fit within ${maxTextureSize} square pixels`);
|
|
35
|
+
preflightX += bound.width;
|
|
36
|
+
preflightRow = Math.max(preflightRow, bound.stripHeight);
|
|
37
|
+
}
|
|
38
|
+
const chains = EXTENSION_SCALAR_ATLAS_SLOTS.map((slot) => {
|
|
39
|
+
const input = inputs[slot] ?? { width: 1, height: 1, data: new Uint8Array([255, 255, 255, 255]) };
|
|
40
|
+
if (!Number.isSafeInteger(input.width) || input.width < 1 || !Number.isSafeInteger(input.height) || input.height < 1 || input.data.length !== input.width * input.height * 4)
|
|
41
|
+
throw new Error(`Invalid extension atlas pixels for ${slot}`);
|
|
42
|
+
if (input.width > maxTextureSize || input.height > maxTextureSize)
|
|
43
|
+
throw new Error(`Extension atlas source ${slot} exceeds maximum texture size ${maxTextureSize}`);
|
|
44
|
+
const levels = [{ ...input, data: new Uint8Array(input.data) }];
|
|
45
|
+
while (levels.at(-1).width > 1 || levels.at(-1).height > 1) {
|
|
46
|
+
const source = levels.at(-1);
|
|
47
|
+
const width = Math.max(1, Math.floor(source.width / 2));
|
|
48
|
+
const height = Math.max(1, Math.floor(source.height / 2));
|
|
49
|
+
const data = new Uint8Array(width * height * 4);
|
|
50
|
+
// Area-weighted reduction retains the final odd row/column for NPOT maps.
|
|
51
|
+
for (let y = 0; y < height; y++)
|
|
52
|
+
for (let x = 0; x < width; x++) {
|
|
53
|
+
const left = x * source.width / width, right = (x + 1) * source.width / width;
|
|
54
|
+
const top = y * source.height / height, bottom = (y + 1) * source.height / height;
|
|
55
|
+
const sums = [0, 0, 0, 0];
|
|
56
|
+
let weight = 0;
|
|
57
|
+
for (let sy = Math.floor(top); sy < Math.ceil(bottom); sy++)
|
|
58
|
+
for (let sx = Math.floor(left); sx < Math.ceil(right); sx++) {
|
|
59
|
+
const area = (Math.min(right, sx + 1) - Math.max(left, sx)) * (Math.min(bottom, sy + 1) - Math.max(top, sy));
|
|
60
|
+
weight += area;
|
|
61
|
+
for (let channel = 0; channel < 4; channel++)
|
|
62
|
+
sums[channel] = sums[channel] + source.data[(sy * source.width + sx) * 4 + channel] * area;
|
|
63
|
+
}
|
|
64
|
+
for (let channel = 0; channel < 4; channel++)
|
|
65
|
+
data[(y * width + x) * 4 + channel] = Math.round(sums[channel] / weight);
|
|
66
|
+
}
|
|
67
|
+
levels.push({ width, height, data });
|
|
68
|
+
}
|
|
69
|
+
return { slot, levels };
|
|
70
|
+
});
|
|
71
|
+
const placements = new Map();
|
|
72
|
+
let cursorX = 0, cursorY = 0, rowHeight = 0, width = 0;
|
|
73
|
+
for (const { slot, levels } of [...chains].sort((a, b) => b.levels[0].height - a.levels[0].height)) {
|
|
74
|
+
const stripWidth = levels[0].width, stripHeight = levels.reduce((sum, level) => sum + level.height, 0);
|
|
75
|
+
if (stripHeight > maxTextureSize)
|
|
76
|
+
throw new Error(`Extension atlas mip strip ${slot} exceeds maximum texture size ${maxTextureSize}`);
|
|
77
|
+
if (cursorX + stripWidth > maxTextureSize) {
|
|
78
|
+
cursorY += rowHeight;
|
|
79
|
+
cursorX = 0;
|
|
80
|
+
rowHeight = 0;
|
|
81
|
+
}
|
|
82
|
+
if (cursorY + stripHeight > maxTextureSize)
|
|
83
|
+
throw new Error(`Extension atlas cannot fit within ${maxTextureSize} square pixels`);
|
|
84
|
+
placements.set(slot, { x: cursorX, y: cursorY });
|
|
85
|
+
cursorX += stripWidth;
|
|
86
|
+
rowHeight = Math.max(rowHeight, stripHeight);
|
|
87
|
+
width = Math.max(width, cursorX);
|
|
88
|
+
}
|
|
89
|
+
const height = cursorY + rowHeight;
|
|
90
|
+
const data = new Uint8Array(width * height * 4);
|
|
91
|
+
const metadata = {};
|
|
92
|
+
const originsY = {};
|
|
93
|
+
for (const { slot, levels } of chains) {
|
|
94
|
+
const base = levels[0];
|
|
95
|
+
const { x, y: originY } = placements.get(slot);
|
|
96
|
+
originsY[slot] = originY;
|
|
97
|
+
metadata[slot] = [x, base.width, base.height, levels.length - 1];
|
|
98
|
+
let y = originY;
|
|
99
|
+
for (const level of levels) {
|
|
100
|
+
for (let row = 0; row < level.height; row++)
|
|
101
|
+
data.set(level.data.subarray(row * level.width * 4, (row + 1) * level.width * 4), ((y + row) * width + x) * 4);
|
|
102
|
+
y += level.height;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return { texture: new Texture({ width, height, data, colorSpace: "linear", label: "extension-scalar-atlas" }), originsY, ...metadata };
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=ExtensionScalarAtlas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExtensionScalarAtlas.js","sourceRoot":"","sources":["../../../../packages/rendering/src/ExtensionScalarAtlas.ts"],"names":[],"mappings":"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"}
|
package/dist/ForwardPass.d.ts
CHANGED
|
@@ -3,9 +3,12 @@ import { type CollectedLight } from "./LightCollector.js";
|
|
|
3
3
|
import { Material } from "./Material.js";
|
|
4
4
|
import { MaterialInstance } from "./MaterialInstance.js";
|
|
5
5
|
import { type MorphTargetDelta } from "./MorphTarget.js";
|
|
6
|
+
import { type RenderShaderProgram, type UniformValue } from "./RenderDevice.js";
|
|
6
7
|
import { BaseRenderPass, type RenderPassContext } from "./RenderPass.js";
|
|
8
|
+
import { type SkinningCpuFallbackReason } from "./WebGPUSkinningLimits.js";
|
|
7
9
|
import { type ShaderLibrary } from "./ShaderLibraryCore.js";
|
|
8
10
|
import { type ShadowFilterKernel } from "./ShadowMap.js";
|
|
11
|
+
import type { ForwardSpotShadowMapOptions } from "./shadows/SpotShadowMaps.js";
|
|
9
12
|
import { TextureBinding } from "./TextureBinding.js";
|
|
10
13
|
export interface RenderItem {
|
|
11
14
|
readonly geometry: Geometry;
|
|
@@ -19,6 +22,12 @@ export interface RenderItem {
|
|
|
19
22
|
readonly skinning?: SkinningPaletteBinding;
|
|
20
23
|
readonly morphTargets?: readonly MorphTargetDelta[];
|
|
21
24
|
readonly morphWeights?: readonly number[];
|
|
25
|
+
/**
|
|
26
|
+
* Wrinkle-detail intensity resolved engine-side from live morph weights
|
|
27
|
+
* (`resolveWrinkleMapStrength`). Shaders that declare `u_wrinkleStrength` modulate
|
|
28
|
+
* procedural normal detail by it; absent (or zero) leaves rendering bit-identical.
|
|
29
|
+
*/
|
|
30
|
+
readonly wrinkleStrength?: number;
|
|
22
31
|
readonly instanceTransforms?: Float32Array | readonly number[];
|
|
23
32
|
readonly instanceColors?: Float32Array | readonly number[];
|
|
24
33
|
readonly instanceAttributes?: readonly RenderItemInstanceAttribute[];
|
|
@@ -57,7 +66,23 @@ export interface SkinningPaletteDiagnostics {
|
|
|
57
66
|
readonly uniformArraySubmissions: number;
|
|
58
67
|
readonly dataTextureSubmissions: number;
|
|
59
68
|
readonly eightInfluenceSubmissions: number;
|
|
69
|
+
readonly cpuFallbackCount: number;
|
|
60
70
|
readonly maxUniformJoints: number;
|
|
71
|
+
/**
|
|
72
|
+
* Per-mesh palette decision (bounded: the first 64 submissions; overflow counted in
|
|
73
|
+
* `decisionOverflow`). Each entry carries the CPU-fallback reason code so a claim about
|
|
74
|
+
* which path carried a rig rests on observed decisions, not inference.
|
|
75
|
+
*/
|
|
76
|
+
readonly decisions: readonly SkinningPaletteDecisionRecord[];
|
|
77
|
+
readonly decisionOverflow: number;
|
|
78
|
+
}
|
|
79
|
+
/** One observed joint-palette decision for a submitted skinned mesh. */
|
|
80
|
+
export interface SkinningPaletteDecisionRecord {
|
|
81
|
+
readonly label: string;
|
|
82
|
+
readonly jointCount: number;
|
|
83
|
+
readonly path: SkinningPalettePath | "cpu";
|
|
84
|
+
readonly reason: SkinningCpuFallbackReason;
|
|
85
|
+
readonly cpuFallback: boolean;
|
|
61
86
|
}
|
|
62
87
|
/** Joints addressable through the uniform-array palette. Re-exported for shaders. */
|
|
63
88
|
export declare const MAX_UNIFORM_SKINNING_JOINTS = 96;
|
|
@@ -115,6 +140,16 @@ export interface ForwardEnvironmentFogOptions {
|
|
|
115
140
|
readonly heightFalloff?: number;
|
|
116
141
|
readonly heightReference?: number;
|
|
117
142
|
readonly maxOpacity?: number;
|
|
143
|
+
/**
|
|
144
|
+
* A5 volumetric inscatter (muse3jsparity-PRD). 0/absent reproduces the
|
|
145
|
+
* legacy fog path exactly; the forward pass binds these only when the
|
|
146
|
+
* program declares them.
|
|
147
|
+
*/
|
|
148
|
+
readonly volumetricIntensity?: number;
|
|
149
|
+
/** World-space direction TOWARD the dominant volumetric light. */
|
|
150
|
+
readonly volumetricLightDirection?: readonly [number, number, number];
|
|
151
|
+
/** Linear RGB of the dominant volumetric light. */
|
|
152
|
+
readonly volumetricLightColor?: readonly [number, number, number];
|
|
118
153
|
}
|
|
119
154
|
export interface ForwardShadowMapOptions {
|
|
120
155
|
readonly texture: TextureBinding;
|
|
@@ -125,6 +160,12 @@ export interface ForwardShadowMapOptions {
|
|
|
125
160
|
readonly texelSize?: readonly [number, number];
|
|
126
161
|
readonly filterKernel?: ShadowFilterKernel;
|
|
127
162
|
readonly pointLight?: ForwardPointShadowMapOptions;
|
|
163
|
+
/**
|
|
164
|
+
* B1 spot shadow path (muse3jsparity-PRD): perspective spot shadow uniforms.
|
|
165
|
+
* Bound only when the program declares the `u_spotShadow*` uniforms, so
|
|
166
|
+
* existing programs render exactly as before.
|
|
167
|
+
*/
|
|
168
|
+
readonly spotLight?: ForwardSpotShadowMapOptions;
|
|
128
169
|
readonly cascades?: readonly ForwardShadowCascadeOptions[];
|
|
129
170
|
}
|
|
130
171
|
export interface ForwardShadowCascadeOptions {
|
|
@@ -158,5 +199,29 @@ export declare class ForwardPass extends BaseRenderPass {
|
|
|
158
199
|
private applyLightUniforms;
|
|
159
200
|
private getShader;
|
|
160
201
|
}
|
|
202
|
+
export declare class SkinningPaletteUploadManager {
|
|
203
|
+
private static readonly validatedGeometryJointCounts;
|
|
204
|
+
private static readonly maxRecordedDecisions;
|
|
205
|
+
private submissions;
|
|
206
|
+
private jointsUploaded;
|
|
207
|
+
private maxJointCount;
|
|
208
|
+
private uniformArraySubmissions;
|
|
209
|
+
private dataTextureSubmissions;
|
|
210
|
+
private eightInfluenceSubmissions;
|
|
211
|
+
private cpuFallbackCount;
|
|
212
|
+
private decisions;
|
|
213
|
+
private decisionOverflow;
|
|
214
|
+
beginFrame(): void;
|
|
215
|
+
/**
|
|
216
|
+
* Which palette paths this frame actually used. Published rather than inferred so a
|
|
217
|
+
* claim about data-texture or eight-influence skinning rests on observed submissions.
|
|
218
|
+
* Each submission also records its `decideSkinningPalettePath` decision (same inputs the
|
|
219
|
+
* upload path used) so the CPU-fallback reason code travels with the diagnostics.
|
|
220
|
+
*/
|
|
221
|
+
diagnostics(): SkinningPaletteDiagnostics;
|
|
222
|
+
bind(item: RenderItem, skinning: SkinningPaletteBinding, material: Material, shader: RenderShaderProgram, uniforms: Map<string, UniformValue>): void;
|
|
223
|
+
private recordDecision;
|
|
224
|
+
}
|
|
161
225
|
export declare function selectForwardShadowMap(shadowMap: ForwardShadowMapOptions | undefined, item: RenderItem, cameraViewMatrix?: Float32Array | readonly number[], cameraPosition?: readonly [number, number, number]): ForwardShadowMapOptions | undefined;
|
|
226
|
+
export declare function applyForwardSpotShadowMapUniforms(spotShadowMap: ForwardSpotShadowMapOptions | undefined, item: RenderItem, shader: RenderShaderProgram, uniforms: Map<string, UniformValue>): void;
|
|
162
227
|
//# sourceMappingURL=ForwardPass.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ForwardPass.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/ForwardPass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"ForwardPass.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/ForwardPass.ts"],"names":[],"mappings":"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"}
|