@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,221 @@
|
|
|
1
|
+
import { sampleTerrainHeightfield } from "./TerrainHeightfield.js";
|
|
2
|
+
export function createTerrainTileGrid(options = {}) {
|
|
3
|
+
const tileCountX = options.tileCountX ?? 4;
|
|
4
|
+
const tileCountZ = options.tileCountZ ?? 4;
|
|
5
|
+
const tileWorldSize = options.tileWorldSize ?? 32;
|
|
6
|
+
const baseResolution = options.baseResolution ?? 17;
|
|
7
|
+
const lodLevels = options.lodLevels ?? 3;
|
|
8
|
+
const lodDistance = options.lodDistance ?? 60;
|
|
9
|
+
if (!Number.isInteger(tileCountX) || tileCountX <= 0)
|
|
10
|
+
throw new RangeError("Terrain tileCountX must be a positive integer.");
|
|
11
|
+
if (!Number.isInteger(tileCountZ) || tileCountZ <= 0)
|
|
12
|
+
throw new RangeError("Terrain tileCountZ must be a positive integer.");
|
|
13
|
+
if (!Number.isFinite(tileWorldSize) || tileWorldSize <= 0)
|
|
14
|
+
throw new RangeError("Terrain tileWorldSize must be finite and positive.");
|
|
15
|
+
if (!Number.isInteger(baseResolution) || baseResolution < 5)
|
|
16
|
+
throw new RangeError("Terrain baseResolution must be an integer >= 5.");
|
|
17
|
+
if (!Number.isInteger(lodLevels) || lodLevels <= 0 || lodLevels > 6)
|
|
18
|
+
throw new RangeError("Terrain lodLevels must be an integer in [1, 6].");
|
|
19
|
+
if (!Number.isFinite(lodDistance) || lodDistance <= 0)
|
|
20
|
+
throw new RangeError("Terrain lodDistance must be finite and positive.");
|
|
21
|
+
const cameraX = options.cameraX ?? 0;
|
|
22
|
+
const cameraZ = options.cameraZ ?? 0;
|
|
23
|
+
const plans = [];
|
|
24
|
+
for (let tileX = 0; tileX < tileCountX; tileX += 1) {
|
|
25
|
+
for (let tileZ = 0; tileZ < tileCountZ; tileZ += 1) {
|
|
26
|
+
const worldMinX = tileX * tileWorldSize;
|
|
27
|
+
const worldMinZ = tileZ * tileWorldSize;
|
|
28
|
+
const centerX = worldMinX + tileWorldSize / 2;
|
|
29
|
+
const centerZ = worldMinZ + tileWorldSize / 2;
|
|
30
|
+
const distance = Math.hypot(centerX - cameraX, centerZ - cameraZ);
|
|
31
|
+
const lod = Math.min(lodLevels - 1, Math.floor(distance / lodDistance));
|
|
32
|
+
const lodSpan = lodDistance;
|
|
33
|
+
const morphFactor = Number(Math.min(1, Math.max(0, (distance - lod * lodSpan) / lodSpan)).toFixed(4));
|
|
34
|
+
const resolution = Math.max(5, Math.ceil(baseResolution / Math.pow(2, lod)));
|
|
35
|
+
let holeCellCount = 0;
|
|
36
|
+
if (options.holeMask) {
|
|
37
|
+
for (let cellX = 0; cellX < resolution - 1; cellX += 1) {
|
|
38
|
+
for (let cellZ = 0; cellZ < resolution - 1; cellZ += 1) {
|
|
39
|
+
if (options.holeMask(tileX, tileZ, cellX, cellZ))
|
|
40
|
+
holeCellCount += 1;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
plans.push({
|
|
45
|
+
key: { tileX, tileZ, lod },
|
|
46
|
+
worldMinX,
|
|
47
|
+
worldMinZ,
|
|
48
|
+
worldSize: tileWorldSize,
|
|
49
|
+
resolution,
|
|
50
|
+
morphFactor,
|
|
51
|
+
hasHoles: holeCellCount > 0,
|
|
52
|
+
holeCellCount,
|
|
53
|
+
diagnostic: `Tile (${tileX},${tileZ}) LOD${lod} ${resolution}x${resolution}, morph ${morphFactor}, holes ${holeCellCount}.`,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return plans;
|
|
58
|
+
}
|
|
59
|
+
/** Slope-based material blend weights; steep slopes expose rock, flats take grass/sand. */
|
|
60
|
+
export function resolveTerrainSlopeBlend(slopeDegrees, height, snowline) {
|
|
61
|
+
if (!Number.isFinite(slopeDegrees) || slopeDegrees < 0 || slopeDegrees > 90) {
|
|
62
|
+
throw new RangeError("Terrain slope must be in [0, 90] degrees.");
|
|
63
|
+
}
|
|
64
|
+
if (!Number.isFinite(height))
|
|
65
|
+
throw new RangeError("Terrain height must be finite.");
|
|
66
|
+
if (!Number.isFinite(snowline))
|
|
67
|
+
throw new RangeError("Terrain snowline must be finite.");
|
|
68
|
+
const steep = Math.min(1, slopeDegrees / 45);
|
|
69
|
+
const rock = Number((steep * steep).toFixed(4));
|
|
70
|
+
const snow = height >= snowline ? Number(Math.min(1, (height - snowline) / 10 + 0.5).toFixed(4)) : 0;
|
|
71
|
+
const remaining = Math.max(0, 1 - rock - snow);
|
|
72
|
+
const sand = Number((remaining * 0.3).toFixed(4));
|
|
73
|
+
const grass = Number(Math.max(0, remaining - sand).toFixed(4));
|
|
74
|
+
return { rock, grass, sand, snow };
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Collision height query over the fixture heightfield, shared with physics
|
|
78
|
+
* (`SurfaceQuery`): bilinear sample in fixture UV space.
|
|
79
|
+
*/
|
|
80
|
+
export function queryTerrainHeight(fixture, worldX, worldZ, worldSizeX, worldSizeZ) {
|
|
81
|
+
if (!Number.isFinite(worldX) || !Number.isFinite(worldZ))
|
|
82
|
+
throw new RangeError("Terrain query position must be finite.");
|
|
83
|
+
if (!Number.isFinite(worldSizeX) || worldSizeX <= 0)
|
|
84
|
+
throw new RangeError("Terrain worldSizeX must be finite and positive.");
|
|
85
|
+
if (!Number.isFinite(worldSizeZ) || worldSizeZ <= 0)
|
|
86
|
+
throw new RangeError("Terrain worldSizeZ must be finite and positive.");
|
|
87
|
+
const u = Math.min(1, Math.max(0, worldX / worldSizeX));
|
|
88
|
+
const v = Math.min(1, Math.max(0, worldZ / worldSizeZ));
|
|
89
|
+
return sampleTerrainHeightfield(fixture, u, v).height;
|
|
90
|
+
}
|
|
91
|
+
/** GPU-instanced scatter plan: density admits, distance culls, wind sways. */
|
|
92
|
+
export function planScatterInstances(options) {
|
|
93
|
+
if (!Number.isInteger(options.instanceBudget) || options.instanceBudget <= 0) {
|
|
94
|
+
throw new RangeError("Scatter instanceBudget must be a positive integer.");
|
|
95
|
+
}
|
|
96
|
+
if (!Number.isFinite(options.densityMapMean) || options.densityMapMean < 0 || options.densityMapMean > 1) {
|
|
97
|
+
throw new RangeError("Scatter densityMapMean must be in [0, 1].");
|
|
98
|
+
}
|
|
99
|
+
const windStrength = options.windStrength ?? 0.35;
|
|
100
|
+
const cullDistance = options.cullDistance ?? 120;
|
|
101
|
+
const shadowCasterFraction = options.shadowCasterFraction ?? 0.25;
|
|
102
|
+
if (!Number.isFinite(windStrength) || windStrength < 0 || windStrength > 1)
|
|
103
|
+
throw new RangeError("Scatter windStrength must be in [0, 1].");
|
|
104
|
+
if (!Number.isFinite(cullDistance) || cullDistance <= 0)
|
|
105
|
+
throw new RangeError("Scatter cullDistance must be finite and positive.");
|
|
106
|
+
if (!Number.isFinite(shadowCasterFraction) || shadowCasterFraction < 0 || shadowCasterFraction > 1) {
|
|
107
|
+
throw new RangeError("Scatter shadowCasterFraction must be in [0, 1].");
|
|
108
|
+
}
|
|
109
|
+
const requested = options.candidateInstances ?? Math.round(options.instanceBudget * 1.2);
|
|
110
|
+
if (!Number.isInteger(requested) || requested <= 0) {
|
|
111
|
+
throw new RangeError("Scatter candidateInstances must be a positive integer.");
|
|
112
|
+
}
|
|
113
|
+
const admitted = Math.min(requested, options.instanceBudget);
|
|
114
|
+
const culled = requested - admitted;
|
|
115
|
+
const meshInstances = Math.round(admitted * 0.4);
|
|
116
|
+
const impostorInstances = admitted - meshInstances;
|
|
117
|
+
return {
|
|
118
|
+
admittedInstances: admitted,
|
|
119
|
+
culledInstances: culled,
|
|
120
|
+
meshInstances,
|
|
121
|
+
impostorInstances,
|
|
122
|
+
shadowCasters: Math.round(meshInstances * shadowCasterFraction),
|
|
123
|
+
windStrength,
|
|
124
|
+
withinBudget: admitted <= options.instanceBudget,
|
|
125
|
+
diagnostic: `Scatter admits ${admitted}/${requested} instances ` +
|
|
126
|
+
`(${meshInstances} mesh + ${impostorInstances} impostor, wind ${windStrength}, cull ${cullDistance}m).`,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Per-instance wind sway for GPU-instanced scatter (D2 browser proof).
|
|
131
|
+
*
|
|
132
|
+
* Pure gust + turbulence displacement in world units, evaluated per frame
|
|
133
|
+
* from the instance base position: the 50k-instance scene applies this to
|
|
134
|
+
* its instance offsets and screenshots with/without it as the wind proof.
|
|
135
|
+
* `response` scales per-layer stiffness (grass 1.0, shrubs 0.7, trees 0.45 —
|
|
136
|
+
* the same bands as the vegetation fixture oracle). `amplitude` scales the
|
|
137
|
+
* fixture gust field to vegetation height (default 1 = fixture units, tip
|
|
138
|
+
* sway of a few cm); the browser scene passes per-layer amplitudes so tip
|
|
139
|
+
* sway lands at 5-10% of layer height. Gust frequencies/phases never change.
|
|
140
|
+
*/
|
|
141
|
+
export function scatterWindOffset(x, z, timeSeconds, windStrength, response = 1, amplitude = 1) {
|
|
142
|
+
if (!Number.isFinite(x) || !Number.isFinite(z))
|
|
143
|
+
throw new RangeError("Scatter wind position must be finite.");
|
|
144
|
+
if (!Number.isFinite(timeSeconds) || timeSeconds < 0)
|
|
145
|
+
throw new RangeError("Scatter wind time must be finite and non-negative.");
|
|
146
|
+
if (!Number.isFinite(windStrength) || windStrength < 0 || windStrength > 1) {
|
|
147
|
+
throw new RangeError("Scatter windStrength must be in [0, 1].");
|
|
148
|
+
}
|
|
149
|
+
if (!Number.isFinite(response) || response < 0 || response > 1)
|
|
150
|
+
throw new RangeError("Scatter wind response must be in [0, 1].");
|
|
151
|
+
if (!Number.isFinite(amplitude) || amplitude < 0)
|
|
152
|
+
throw new RangeError("Scatter wind amplitude must be finite and non-negative.");
|
|
153
|
+
const gust = Math.sin(timeSeconds * 1.8 + x * 2.1 + z * 1.3);
|
|
154
|
+
const turbulence = Math.sin(timeSeconds * 3.2 + x * 4.4 - z * 2.7);
|
|
155
|
+
const scale = windStrength * response * amplitude;
|
|
156
|
+
return {
|
|
157
|
+
x: Number(((gust * 0.018 + turbulence * 0.006) * scale).toFixed(5)),
|
|
158
|
+
z: Number((Math.cos(timeSeconds * 1.3 + z * 3.1) * 0.01 * scale).toFixed(5)),
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/** Frame budget enforcer: degrades LOD bias before dropping frames. */
|
|
162
|
+
export function enforceFrameBudget(input) {
|
|
163
|
+
for (const [label, value] of [["draws", input.draws], ["triangles", input.triangles], ["textures", input.textures]]) {
|
|
164
|
+
if (!Number.isFinite(value) || value < 0)
|
|
165
|
+
throw new RangeError(`Frame budget ${label} must be finite and non-negative.`);
|
|
166
|
+
}
|
|
167
|
+
const drawLoad = input.draws / Math.max(1, input.maxDraws);
|
|
168
|
+
const triLoad = input.triangles / Math.max(1, input.maxTriangles);
|
|
169
|
+
const texLoad = input.textures / Math.max(1, input.maxTextures);
|
|
170
|
+
const load = Math.max(drawLoad, triLoad, texLoad);
|
|
171
|
+
const lodBias = load <= 1 ? 0 : Number(Math.min(1, (load - 1) / 2).toFixed(4));
|
|
172
|
+
return {
|
|
173
|
+
lodBias,
|
|
174
|
+
overBudget: load > 1,
|
|
175
|
+
shedDraws: load > 1 ? Math.ceil(input.draws * (1 - 1 / load)) : 0,
|
|
176
|
+
diagnostic: load > 1
|
|
177
|
+
? `Over budget (load ${load.toFixed(2)}): LOD bias ${lodBias} applied before frame drops.`
|
|
178
|
+
: `Within budget (load ${load.toFixed(2)}): full quality.`,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
/** Render order + layers audit vs r185 semantics (D2 task 5). */
|
|
182
|
+
export function auditRenderOrder() {
|
|
183
|
+
return [
|
|
184
|
+
{
|
|
185
|
+
rule: "opaque-sorting",
|
|
186
|
+
auraBehavior: "sortForwardRenderItems front-to-back by depth",
|
|
187
|
+
threeR185Behavior: "opaque list sorted front-to-back (painter's optimization)",
|
|
188
|
+
delta: "none",
|
|
189
|
+
notes: "Same policy; no delta.",
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
rule: "transparent-sorting",
|
|
193
|
+
auraBehavior: "transparent items sorted back-to-front after opaque",
|
|
194
|
+
threeR185Behavior: "transparent list sorted back-to-front (z-depth reverse)",
|
|
195
|
+
delta: "none",
|
|
196
|
+
notes: "Same policy; no delta.",
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
rule: "render-order-override",
|
|
200
|
+
auraBehavior: "Generic queue supports renderOrder, but sortForwardRenderItems does not forward it (bucket + depth only)",
|
|
201
|
+
threeR185Behavior: "Object3D.renderOrder overrides list ordering",
|
|
202
|
+
delta: "bounded",
|
|
203
|
+
notes: "Bounded delta: routes needing explicit ordering must encode it via separate passes or buckets until ForwardPass forwards renderOrder.",
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
rule: "layer-masking",
|
|
207
|
+
auraBehavior: "CollectedLight.layerMask + Renderable.layerMask gate light/receiver pairing",
|
|
208
|
+
threeR185Behavior: "Camera.layers gate whole-object visibility per camera",
|
|
209
|
+
delta: "bounded",
|
|
210
|
+
notes: "Bounded delta: Aura3D layers gate lighting, not camera visibility. Camera-side layer masking is not claimed.",
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
rule: "frustum-culling",
|
|
214
|
+
auraBehavior: "static-bounds frustum culling via SceneOptimization BVH",
|
|
215
|
+
threeR185Behavior: "per-object frustum culling against camera",
|
|
216
|
+
delta: "none",
|
|
217
|
+
notes: "Same outcome (static bounds); dynamic per-object culling inherits the same bounds path.",
|
|
218
|
+
},
|
|
219
|
+
];
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=TerrainTiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TerrainTiles.js","sourceRoot":"","sources":["../../../../packages/rendering/src/TerrainTiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
import type { ExtensionScalarAtlas } from "./ExtensionScalarAtlas.js";
|
|
1
2
|
import { Material, type RenderState } from "./Material.js";
|
|
2
3
|
import { Sampler } from "./Sampler.js";
|
|
3
4
|
import { Texture } from "./Texture.js";
|
|
4
5
|
import { TextureBinding } from "./TextureBinding.js";
|
|
5
6
|
export type TexturedPBRTextureSlot = "baseColor" | "normal" | "metallicRoughness" | "occlusion" | "emissive" | "clearcoat" | "clearcoatRoughness" | "clearcoatNormal" | "transmission" | "diffuseTransmission" | "diffuseTransmissionColor" | "volumeThickness" | "specular" | "specularColor" | "sheenColor" | "sheenRoughness" | "anisotropy" | "iridescence" | "iridescenceThickness";
|
|
7
|
+
export type ExtensionScalarAtlasBinding = ExtensionScalarAtlas;
|
|
6
8
|
export interface TexturedPBRMaterialOptions {
|
|
9
|
+
readonly extensionScalarAtlas?: ExtensionScalarAtlasBinding;
|
|
7
10
|
readonly name?: string;
|
|
8
11
|
readonly baseColor?: readonly [number, number, number, number];
|
|
9
12
|
readonly renderState?: Partial<RenderState>;
|
|
@@ -11,6 +14,7 @@ export interface TexturedPBRMaterialOptions {
|
|
|
11
14
|
readonly roughness?: number;
|
|
12
15
|
readonly environmentColor?: readonly [number, number, number];
|
|
13
16
|
readonly environmentIntensity?: number;
|
|
17
|
+
readonly envMapIntensity?: number;
|
|
14
18
|
readonly proceduralEnvironmentMap?: TexturedPBRProceduralEnvironmentMapOptions;
|
|
15
19
|
readonly environmentMapTexture?: TextureBinding;
|
|
16
20
|
readonly environmentMapIntensity?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TexturedPBRMaterial.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/TexturedPBRMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkC,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAExF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"TexturedPBRMaterial.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/TexturedPBRMaterial.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Material } from "./Material.js";
|
|
2
2
|
import { DEFAULT_PBR_ENVIRONMENT_INTENSITY, DEFAULT_PBR_PROCEDURAL_ENVIRONMENT_MAP } from "./PBRLightingDefaults.js";
|
|
3
3
|
import { Sampler } from "./Sampler.js";
|
|
4
|
-
import { DEFAULT_TEXTURED_PBR_CLEARCOAT_SPECULAR_TEXTURES_VARIANT, DEFAULT_TEXTURED_PBR_CLEARCOAT_TEXTURES_VARIANT, DEFAULT_TEXTURED_PBR_CLEARCOAT_TRANSMISSION_VOLUME_TEXTURES_VARIANT, DEFAULT_TEXTURED_PBR_IRIDESCENCE_TEXTURES_VARIANT, DEFAULT_TEXTURED_PBR_SHADER_NAME, DEFAULT_TEXTURED_PBR_SPECULAR_SHEEN_ANISOTROPY_IRIDESCENCE_TEXTURES_VARIANT, DEFAULT_TEXTURED_PBR_SPECULAR_SHEEN_ANISOTROPY_TEXTURES_VARIANT, DEFAULT_TEXTURED_PBR_TRANSMISSION_VOLUME_TEXTURES_VARIANT } from "./ShaderLibraryCore.js";
|
|
4
|
+
import { DEFAULT_TEXTURED_PBR_CLEARCOAT_SHEEN_ANISOTROPY_TEXTURES_VARIANT, DEFAULT_TEXTURED_PBR_CLEARCOAT_IRIDESCENCE_TEXTURES_VARIANT, DEFAULT_TEXTURED_PBR_EXTENSION_ATLAS_VARIANT, DEFAULT_TEXTURED_PBR_CLEARCOAT_SPECULAR_TEXTURES_VARIANT, DEFAULT_TEXTURED_PBR_CLEARCOAT_TEXTURES_VARIANT, DEFAULT_TEXTURED_PBR_CLEARCOAT_TRANSMISSION_VOLUME_TEXTURES_VARIANT, DEFAULT_TEXTURED_PBR_IRIDESCENCE_TEXTURES_VARIANT, DEFAULT_TEXTURED_PBR_SHADER_NAME, DEFAULT_TEXTURED_PBR_SPECULAR_SHEEN_ANISOTROPY_IRIDESCENCE_TEXTURES_VARIANT, DEFAULT_TEXTURED_PBR_SPECULAR_SHEEN_ANISOTROPY_TEXTURES_VARIANT, DEFAULT_TEXTURED_PBR_TRANSMISSION_VOLUME_TEXTURES_VARIANT } from "./ShaderLibraryCore.js";
|
|
5
5
|
import { Texture } from "./Texture.js";
|
|
6
6
|
import { TextureBinding } from "./TextureBinding.js";
|
|
7
7
|
const BASE_TEXTURED_PBR_SHADER_TEXTURE_SLOTS = [
|
|
@@ -37,7 +37,11 @@ const IRIDESCENCE_TEXTURE_SLOTS = [
|
|
|
37
37
|
];
|
|
38
38
|
export function texturedPbrShaderActiveTextureSlots(shaderVariant) {
|
|
39
39
|
const slots = new Set(BASE_TEXTURED_PBR_SHADER_TEXTURE_SLOTS);
|
|
40
|
-
if (shaderVariant ===
|
|
40
|
+
if (shaderVariant === DEFAULT_TEXTURED_PBR_EXTENSION_ATLAS_VARIANT)
|
|
41
|
+
return [...slots, ...CLEARCOAT_TEXTURE_SLOTS, ...SHEEN_ANISOTROPY_TEXTURE_SLOTS, ...IRIDESCENCE_TEXTURE_SLOTS];
|
|
42
|
+
if (shaderVariant === DEFAULT_TEXTURED_PBR_CLEARCOAT_SHEEN_ANISOTROPY_TEXTURES_VARIANT ||
|
|
43
|
+
shaderVariant === DEFAULT_TEXTURED_PBR_CLEARCOAT_IRIDESCENCE_TEXTURES_VARIANT ||
|
|
44
|
+
shaderVariant === DEFAULT_TEXTURED_PBR_CLEARCOAT_TEXTURES_VARIANT ||
|
|
41
45
|
shaderVariant === DEFAULT_TEXTURED_PBR_CLEARCOAT_TRANSMISSION_VOLUME_TEXTURES_VARIANT ||
|
|
42
46
|
shaderVariant === DEFAULT_TEXTURED_PBR_CLEARCOAT_SPECULAR_TEXTURES_VARIANT) {
|
|
43
47
|
for (const slot of CLEARCOAT_TEXTURE_SLOTS)
|
|
@@ -55,11 +59,13 @@ export function texturedPbrShaderActiveTextureSlots(shaderVariant) {
|
|
|
55
59
|
slots.add(slot);
|
|
56
60
|
}
|
|
57
61
|
if (shaderVariant === DEFAULT_TEXTURED_PBR_SPECULAR_SHEEN_ANISOTROPY_TEXTURES_VARIANT ||
|
|
62
|
+
shaderVariant === DEFAULT_TEXTURED_PBR_CLEARCOAT_SHEEN_ANISOTROPY_TEXTURES_VARIANT ||
|
|
58
63
|
shaderVariant === DEFAULT_TEXTURED_PBR_SPECULAR_SHEEN_ANISOTROPY_IRIDESCENCE_TEXTURES_VARIANT) {
|
|
59
64
|
for (const slot of SHEEN_ANISOTROPY_TEXTURE_SLOTS)
|
|
60
65
|
slots.add(slot);
|
|
61
66
|
}
|
|
62
67
|
if (shaderVariant === DEFAULT_TEXTURED_PBR_IRIDESCENCE_TEXTURES_VARIANT ||
|
|
68
|
+
shaderVariant === DEFAULT_TEXTURED_PBR_CLEARCOAT_IRIDESCENCE_TEXTURES_VARIANT ||
|
|
63
69
|
shaderVariant === DEFAULT_TEXTURED_PBR_SPECULAR_SHEEN_ANISOTROPY_IRIDESCENCE_TEXTURES_VARIANT) {
|
|
64
70
|
for (const slot of IRIDESCENCE_TEXTURE_SLOTS)
|
|
65
71
|
slots.add(slot);
|
|
@@ -99,6 +105,7 @@ export class TexturedPBRMaterial extends Material {
|
|
|
99
105
|
validateColor3(environmentColor, "environmentColor");
|
|
100
106
|
validateProceduralEnvironmentMap(proceduralEnvironmentMap);
|
|
101
107
|
validateNonNegative(options.environmentMapIntensity ?? 0, "environmentMapIntensity");
|
|
108
|
+
validateNonNegative(options.envMapIntensity ?? 1, "envMapIntensity");
|
|
102
109
|
validateNonNegative(options.environmentMapSpecularIntensity ?? 0, "environmentMapSpecularIntensity");
|
|
103
110
|
validateFinite(options.environmentMapRotation ?? 0, "environmentMapRotation");
|
|
104
111
|
validateMipCount(options.environmentMapMipCount ?? 1, "environmentMapMipCount");
|
|
@@ -162,11 +169,30 @@ export class TexturedPBRMaterial extends Material {
|
|
|
162
169
|
shaderVariant,
|
|
163
170
|
renderState: options.renderState,
|
|
164
171
|
parameters: {
|
|
172
|
+
...(options.extensionScalarAtlas ? {
|
|
173
|
+
u_extensionScalarAtlas: new TextureBinding({ name: "u_extensionScalarAtlas", texture: options.extensionScalarAtlas.texture }),
|
|
174
|
+
u_clearcoatAtlasRect: options.extensionScalarAtlas.clearcoat,
|
|
175
|
+
u_clearcoatAtlasY: options.extensionScalarAtlas.originsY?.clearcoat ?? 0,
|
|
176
|
+
u_clearcoatAtlasFilter: extensionAtlasFilter(options.clearcoatSampler),
|
|
177
|
+
u_clearcoatRoughnessAtlasRect: options.extensionScalarAtlas.clearcoatRoughness,
|
|
178
|
+
u_clearcoatRoughnessAtlasY: options.extensionScalarAtlas.originsY?.clearcoatRoughness ?? 0,
|
|
179
|
+
u_clearcoatRoughnessAtlasFilter: extensionAtlasFilter(options.clearcoatRoughnessSampler),
|
|
180
|
+
u_sheenRoughnessAtlasRect: options.extensionScalarAtlas.sheenRoughness,
|
|
181
|
+
u_sheenRoughnessAtlasY: options.extensionScalarAtlas.originsY?.sheenRoughness ?? 0,
|
|
182
|
+
u_sheenRoughnessAtlasFilter: extensionAtlasFilter(options.sheenRoughnessSampler),
|
|
183
|
+
u_iridescenceAtlasRect: options.extensionScalarAtlas.iridescence,
|
|
184
|
+
u_iridescenceAtlasY: options.extensionScalarAtlas.originsY?.iridescence ?? 0,
|
|
185
|
+
u_iridescenceAtlasFilter: extensionAtlasFilter(options.iridescenceSampler),
|
|
186
|
+
u_iridescenceThicknessAtlasRect: options.extensionScalarAtlas.iridescenceThickness,
|
|
187
|
+
u_iridescenceThicknessAtlasY: options.extensionScalarAtlas.originsY?.iridescenceThickness ?? 0,
|
|
188
|
+
u_iridescenceThicknessAtlasFilter: extensionAtlasFilter(options.iridescenceThicknessSampler),
|
|
189
|
+
} : {}),
|
|
165
190
|
u_baseColor: baseColor,
|
|
166
191
|
u_metallic: options.metallic ?? 0,
|
|
167
192
|
u_roughness: options.roughness ?? 0.5,
|
|
168
193
|
u_environmentColor: environmentColor,
|
|
169
194
|
u_environmentIntensity: options.environmentIntensity ?? DEFAULT_PBR_ENVIRONMENT_INTENSITY,
|
|
195
|
+
u_materialEnvironmentIntensity: options.envMapIntensity ?? 1,
|
|
170
196
|
u_environmentSkyColor: proceduralEnvironmentMap.skyColor,
|
|
171
197
|
u_environmentHorizonColor: proceduralEnvironmentMap.horizonColor,
|
|
172
198
|
u_environmentGroundColor: proceduralEnvironmentMap.groundColor,
|
|
@@ -489,7 +515,13 @@ export class TexturedPBRMaterial extends Material {
|
|
|
489
515
|
u_iridescenceThicknessTextureTexCoord: textureTexCoord(options.textureTexCoords, "iridescenceThickness"),
|
|
490
516
|
u_iridescenceThicknessTextureWrap: samplerWrapMode(options.iridescenceThicknessSampler),
|
|
491
517
|
u_modelViewProjection: identityMatrix(),
|
|
492
|
-
u_normalMatrix: identityMatrix()
|
|
518
|
+
u_normalMatrix: identityMatrix(),
|
|
519
|
+
// P2 instanced-GLB path (muse3jsparity-PRD): zero instances by
|
|
520
|
+
// default so non-instanced draws keep the legacy shader branch
|
|
521
|
+
// bit-exact; applyInstanceBinding stamps real counts per item.
|
|
522
|
+
u_instanceMatrices: defaultTexturedPbrInstanceMatrices(),
|
|
523
|
+
u_instanceCount: 0,
|
|
524
|
+
u_instanceAttributeMode: 0
|
|
493
525
|
},
|
|
494
526
|
requiredAttributes: [
|
|
495
527
|
"a_position",
|
|
@@ -499,11 +531,28 @@ export class TexturedPBRMaterial extends Material {
|
|
|
499
531
|
...(usesSecondaryTexCoord(options.textureTexCoords) ? ["a_uv1"] : [])
|
|
500
532
|
],
|
|
501
533
|
uniformSchema: [
|
|
534
|
+
{ name: "u_extensionScalarAtlas", kind: "texture2d", required: false },
|
|
535
|
+
{ name: "u_clearcoatAtlasRect", kind: "vec4", required: false },
|
|
536
|
+
{ name: "u_clearcoatAtlasY", kind: "float", required: false },
|
|
537
|
+
{ name: "u_clearcoatAtlasFilter", kind: "vec4", required: false },
|
|
538
|
+
{ name: "u_clearcoatRoughnessAtlasRect", kind: "vec4", required: false },
|
|
539
|
+
{ name: "u_clearcoatRoughnessAtlasY", kind: "float", required: false },
|
|
540
|
+
{ name: "u_clearcoatRoughnessAtlasFilter", kind: "vec4", required: false },
|
|
541
|
+
{ name: "u_sheenRoughnessAtlasRect", kind: "vec4", required: false },
|
|
542
|
+
{ name: "u_sheenRoughnessAtlasY", kind: "float", required: false },
|
|
543
|
+
{ name: "u_sheenRoughnessAtlasFilter", kind: "vec4", required: false },
|
|
544
|
+
{ name: "u_iridescenceAtlasRect", kind: "vec4", required: false },
|
|
545
|
+
{ name: "u_iridescenceAtlasY", kind: "float", required: false },
|
|
546
|
+
{ name: "u_iridescenceAtlasFilter", kind: "vec4", required: false },
|
|
547
|
+
{ name: "u_iridescenceThicknessAtlasRect", kind: "vec4", required: false },
|
|
548
|
+
{ name: "u_iridescenceThicknessAtlasY", kind: "float", required: false },
|
|
549
|
+
{ name: "u_iridescenceThicknessAtlasFilter", kind: "vec4", required: false },
|
|
502
550
|
{ name: "u_baseColor", kind: "vec4" },
|
|
503
551
|
{ name: "u_metallic", kind: "float" },
|
|
504
552
|
{ name: "u_roughness", kind: "float" },
|
|
505
553
|
{ name: "u_environmentColor", kind: "vec3" },
|
|
506
554
|
{ name: "u_environmentIntensity", kind: "float" },
|
|
555
|
+
{ name: "u_materialEnvironmentIntensity", kind: "float" },
|
|
507
556
|
{ name: "u_environmentSkyColor", kind: "vec3" },
|
|
508
557
|
{ name: "u_environmentHorizonColor", kind: "vec3" },
|
|
509
558
|
{ name: "u_environmentGroundColor", kind: "vec3" },
|
|
@@ -546,7 +595,9 @@ export class TexturedPBRMaterial extends Material {
|
|
|
546
595
|
{ name: "u_anisotropyRotation", kind: "float" },
|
|
547
596
|
{ name: "u_iridescenceFactor", kind: "float" },
|
|
548
597
|
{ name: "u_iridescenceIor", kind: "float" },
|
|
549
|
-
|
|
598
|
+
// The minimum participates only when the variant samples a thickness map.
|
|
599
|
+
// Scalar film uses maximum thickness; WebGL legitimately removes this uniform.
|
|
600
|
+
{ name: "u_iridescenceThicknessMinimum", kind: "float", required: isTexturedPbrTextureSlotShaderActive("iridescenceThickness", shaderVariant) },
|
|
550
601
|
{ name: "u_iridescenceThicknessMaximum", kind: "float" },
|
|
551
602
|
{ name: "u_dispersion", kind: "float" },
|
|
552
603
|
{ name: "u_lightCount", kind: "float" },
|
|
@@ -688,11 +739,23 @@ export class TexturedPBRMaterial extends Material {
|
|
|
688
739
|
{ name: "u_iridescenceThicknessTextureTexCoord", kind: "float", required: false },
|
|
689
740
|
{ name: "u_iridescenceThicknessTextureWrap", kind: "vec2", required: false },
|
|
690
741
|
{ name: "u_modelViewProjection", kind: "mat4" },
|
|
691
|
-
{ name: "u_normalMatrix", kind: "mat4" }
|
|
742
|
+
{ name: "u_normalMatrix", kind: "mat4" },
|
|
743
|
+
{ name: "u_instanceMatrices", kind: "any" },
|
|
744
|
+
{ name: "u_instanceCount", kind: "float" },
|
|
745
|
+
{ name: "u_instanceAttributeMode", kind: "float" }
|
|
692
746
|
]
|
|
693
747
|
});
|
|
694
748
|
}
|
|
695
749
|
}
|
|
750
|
+
/** 64 identity matrices: the uniform-path instance ceiling (mirrors ForwardPass MAX_GPU_INSTANCES). */
|
|
751
|
+
function defaultTexturedPbrInstanceMatrices() {
|
|
752
|
+
const matrices = new Float32Array(64 * 16);
|
|
753
|
+
matrices[0] = 1;
|
|
754
|
+
matrices[5] = 1;
|
|
755
|
+
matrices[10] = 1;
|
|
756
|
+
matrices[15] = 1;
|
|
757
|
+
return matrices;
|
|
758
|
+
}
|
|
696
759
|
function validateNonNegative(value, label) {
|
|
697
760
|
if (!Number.isFinite(value) || value < 0) {
|
|
698
761
|
throw new RangeError(`TexturedPBRMaterial ${label} must be finite and non-negative`);
|
|
@@ -722,6 +785,8 @@ function addressModeCode(mode) {
|
|
|
722
785
|
return 0;
|
|
723
786
|
}
|
|
724
787
|
function texturedPbrShaderVariant(options) {
|
|
788
|
+
if (options.extensionScalarAtlas)
|
|
789
|
+
return DEFAULT_TEXTURED_PBR_EXTENSION_ATLAS_VARIANT;
|
|
725
790
|
const hasClearcoatTextures = Boolean(options.clearcoatTexture || options.clearcoatRoughnessTexture || options.clearcoatNormalTexture);
|
|
726
791
|
const hasTransmissionVolumeTextures = Boolean(options.transmissionTexture ||
|
|
727
792
|
options.diffuseTransmissionTexture ||
|
|
@@ -733,6 +798,16 @@ function texturedPbrShaderVariant(options) {
|
|
|
733
798
|
options.anisotropyTexture);
|
|
734
799
|
const hasSpecularSheenAnisotropyTextures = hasSpecularTextures || hasSheenAnisotropyTextures;
|
|
735
800
|
const hasIridescenceTextures = Boolean(options.iridescenceTexture || options.iridescenceThicknessTexture);
|
|
801
|
+
// Fixed environment/base/shadow samplers leave at most six extension units
|
|
802
|
+
// on WebGL2's guaranteed 16-unit fragment stage. Never silently drop a map.
|
|
803
|
+
if (hasClearcoatTextures && (hasSheenAnisotropyTextures || hasIridescenceTextures)) {
|
|
804
|
+
if (hasTransmissionVolumeTextures || hasSpecularTextures || (hasSheenAnisotropyTextures && hasIridescenceTextures)) {
|
|
805
|
+
throw new Error("TexturedPBRMaterial mixed clearcoat extension textures exceed the supported 16-sampler variant budget");
|
|
806
|
+
}
|
|
807
|
+
return hasSheenAnisotropyTextures
|
|
808
|
+
? DEFAULT_TEXTURED_PBR_CLEARCOAT_SHEEN_ANISOTROPY_TEXTURES_VARIANT
|
|
809
|
+
: DEFAULT_TEXTURED_PBR_CLEARCOAT_IRIDESCENCE_TEXTURES_VARIANT;
|
|
810
|
+
}
|
|
736
811
|
if (hasClearcoatTextures && hasSpecularTextures && !hasTransmissionVolumeTextures) {
|
|
737
812
|
return DEFAULT_TEXTURED_PBR_CLEARCOAT_SPECULAR_TEXTURES_VARIANT;
|
|
738
813
|
}
|
|
@@ -839,4 +914,12 @@ function identityMatrix() {
|
|
|
839
914
|
0, 0, 0, 1
|
|
840
915
|
]);
|
|
841
916
|
}
|
|
917
|
+
function extensionAtlasFilter(sampler) {
|
|
918
|
+
const min = sampler?.minFilter ?? "linear";
|
|
919
|
+
const anisotropy = sampler?.maxAnisotropy ?? 1;
|
|
920
|
+
if (anisotropy > 16)
|
|
921
|
+
throw new RangeError("Extension scalar atlas supports at most 16 anisotropic taps");
|
|
922
|
+
return [sampler?.magFilter === "nearest" ? 1 : 0, min.startsWith("nearest") ? 1 : 0,
|
|
923
|
+
min.endsWith("mipmap-linear") ? 2 : min.endsWith("mipmap-nearest") ? 1 : 0, anisotropy];
|
|
924
|
+
}
|
|
842
925
|
//# sourceMappingURL=TexturedPBRMaterial.js.map
|