@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkinningBounds.js","sourceRoot":"","sources":["../../../../packages/rendering/src/SkinningBounds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAC;AACpD,OAAO,EACL,iBAAiB,EACjB,gCAAgC,EAChC,gCAAgC,EAEjC,MAAM,eAAe,CAAC;AAOvB,MAAM,UAAU,4BAA4B,CAAC,QAAkB,EAAE,QAA2C;IAC1G,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;QACzL,OAAO,QAAQ,CAAC,MAAM,CAAC;IACzB,CAAC;IACD,MAAM,GAAG,GAA6B,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACrE,MAAM,GAAG,GAA6B,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;IACxE,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;QAC7E,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACtE,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC/D,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC,MAAM,CAAC;IACjF,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,uCAAuC,CACrD,QAAkB,EAClB,QAA2C,EAC3C,OAAgD,EAChD,OAAsC;IAEtC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzE,OAAO,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,gCAAgC,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,OAAO,4BAA4B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACzD,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uCAAuC,CACrD,QAAkB,EAClB,QAA2C,EAC3C,OAAgD;IAEhD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;QACzL,OAAO,gCAAgC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,GAAG,GAA6B,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACrE,MAAM,GAAG,GAA6B,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;IACxE,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;QAC7E,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACpE,MAAM,KAAK,GAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACnF,MAAM,KAAK,GAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACnF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/B,IAAI,KAAK,GAAG,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;gBACpC,IAAI,KAAK,GAAG,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;YACtC,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACtE,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC1E,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC,MAAM,CAAC;IACjF,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,SAAS,CAChB,QAA2B,EAC3B,MAAyB,EACzB,OAA0B,EAC1B,QAA+B;IAE/B,MAAM,KAAK,GAAsC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACxG,MAAM,MAAM,GAA6B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,MAAM,KAAK,CAAC;YAAE,SAAS;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5F,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;QACzE,MAAM,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QACrC,MAAM,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QACrC,MAAM,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QACrC,SAAS,IAAI,MAAM,CAAC;IACtB,CAAC;IACD,OAAO,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7C,CAAC;AAED,SAAS,cAAc,CAAC,QAA0C,EAAE,MAAc,EAAE,KAAwC;IAC1H,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACnB,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACnB,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACnB,OAAO;QACL,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,EAAE,CAAC;QAChI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,EAAE,CAAC;QAChI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,EAAE,CAAC;KAClI,CAAC;AACJ,CAAC;AAED,SAAS,GAAG,CAAC,QAA0C,EAAE,KAAa;IACpE,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,kBAAkB,CAAC,GAA6B,EAAE,GAA6B,EAAE,KAAwC;IAChI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC"}
|
|
1
|
+
{"version":3,"file":"SkinningBounds.js","sourceRoot":"","sources":["../../../../packages/rendering/src/SkinningBounds.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* D4 billboards, beams, flipbooks (muse3jsparity-PRD).
|
|
3
|
+
*
|
|
4
|
+
* Pure CPU-side math + builder descriptors for the effects games actually
|
|
5
|
+
* use: size-attenuated + axis-locked billboards, flipbook UVs for
|
|
6
|
+
* explosions/muzzle flashes, and thick screen-space beams/fences with
|
|
7
|
+
* additive blending. Pairs with `createSpriteQuadGeometry` (quad),
|
|
8
|
+
* `ScreenSpaceLineMaterial` (thick lines), and `Geometry.WideLineSegment`.
|
|
9
|
+
* Root reachability (`primitives`/`effects` family) needs the engine-bridge
|
|
10
|
+
* hunk reported alongside this change.
|
|
11
|
+
*/
|
|
12
|
+
export type BillboardMode = "spherical" | "axis-locked-y";
|
|
13
|
+
export interface BillboardOptions {
|
|
14
|
+
readonly mode?: BillboardMode;
|
|
15
|
+
/** World-space center of the sprite. */
|
|
16
|
+
readonly center: readonly [number, number, number];
|
|
17
|
+
/** World-space size (width, height) before distance attenuation. */
|
|
18
|
+
readonly size: readonly [number, number];
|
|
19
|
+
/** Camera world position. */
|
|
20
|
+
readonly cameraPosition: readonly [number, number, number];
|
|
21
|
+
/** Camera up vector (axis-locked mode keeps this axis fixed). */
|
|
22
|
+
readonly cameraUp?: readonly [number, number, number];
|
|
23
|
+
/** Perspective attenuation factor; 0 disables attenuation. */
|
|
24
|
+
readonly attenuation?: number;
|
|
25
|
+
}
|
|
26
|
+
export interface BillboardCorners {
|
|
27
|
+
readonly topLeft: readonly [number, number, number];
|
|
28
|
+
readonly topRight: readonly [number, number, number];
|
|
29
|
+
readonly bottomRight: readonly [number, number, number];
|
|
30
|
+
readonly bottomLeft: readonly [number, number, number];
|
|
31
|
+
readonly attenuatedSize: readonly [number, number];
|
|
32
|
+
}
|
|
33
|
+
/** Billboard corner computation: faces the camera (spherical) or rotates about Y only (axis-locked). */
|
|
34
|
+
export declare function resolveBillboardCorners(options: BillboardOptions): BillboardCorners;
|
|
35
|
+
export interface FlipbookFrame {
|
|
36
|
+
readonly frame: number;
|
|
37
|
+
readonly columns: number;
|
|
38
|
+
readonly rows: number;
|
|
39
|
+
/** UV rect [u0, v0, u1, v1] for this cell (v flipped for GL texture space). */
|
|
40
|
+
readonly uvRect: readonly [number, number, number, number];
|
|
41
|
+
}
|
|
42
|
+
/** Flipbook UVs for explosion/muzzle-flash sprite sheets. */
|
|
43
|
+
export declare function resolveFlipbookUv(frame: number, columns: number, rows: number): FlipbookFrame;
|
|
44
|
+
export interface BeamDescriptor {
|
|
45
|
+
readonly from: readonly [number, number, number];
|
|
46
|
+
readonly to: readonly [number, number, number];
|
|
47
|
+
readonly widthWorld: number;
|
|
48
|
+
readonly additive: true;
|
|
49
|
+
readonly length: number;
|
|
50
|
+
readonly segmentCount: number;
|
|
51
|
+
readonly diagnostic: string;
|
|
52
|
+
}
|
|
53
|
+
/** Beam/fence builder: additive-blended quad strip between two points. */
|
|
54
|
+
export declare function createBeamDescriptor(options: {
|
|
55
|
+
readonly from: readonly [number, number, number];
|
|
56
|
+
readonly to: readonly [number, number, number];
|
|
57
|
+
readonly widthWorld?: number;
|
|
58
|
+
readonly segmentCount?: number;
|
|
59
|
+
}): BeamDescriptor;
|
|
60
|
+
//# sourceMappingURL=SpriteFlipbook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpriteFlipbook.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/SpriteFlipbook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,eAAe,CAAC;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC;IAC9B,wCAAwC;IACxC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,6BAA6B;IAC7B,QAAQ,CAAC,cAAc,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3D,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,8DAA8D;IAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrD,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACxD,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD,QAAQ,CAAC,cAAc,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpD;AAED,wGAAwG;AACxG,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,CAkDnF;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5D;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAc7F;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,0EAA0E;AAC1E,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC,GAAG,cAAc,CA2BjB"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* D4 billboards, beams, flipbooks (muse3jsparity-PRD).
|
|
3
|
+
*
|
|
4
|
+
* Pure CPU-side math + builder descriptors for the effects games actually
|
|
5
|
+
* use: size-attenuated + axis-locked billboards, flipbook UVs for
|
|
6
|
+
* explosions/muzzle flashes, and thick screen-space beams/fences with
|
|
7
|
+
* additive blending. Pairs with `createSpriteQuadGeometry` (quad),
|
|
8
|
+
* `ScreenSpaceLineMaterial` (thick lines), and `Geometry.WideLineSegment`.
|
|
9
|
+
* Root reachability (`primitives`/`effects` family) needs the engine-bridge
|
|
10
|
+
* hunk reported alongside this change.
|
|
11
|
+
*/
|
|
12
|
+
/** Billboard corner computation: faces the camera (spherical) or rotates about Y only (axis-locked). */
|
|
13
|
+
export function resolveBillboardCorners(options) {
|
|
14
|
+
if (options.center.length !== 3 || options.center.some((c) => !Number.isFinite(c))) {
|
|
15
|
+
throw new RangeError("Billboard center must contain three finite values.");
|
|
16
|
+
}
|
|
17
|
+
if (options.size.length !== 2 || options.size.some((c) => !Number.isFinite(c) || c <= 0)) {
|
|
18
|
+
throw new RangeError("Billboard size must contain two finite positive values.");
|
|
19
|
+
}
|
|
20
|
+
if (options.cameraPosition.length !== 3 || options.cameraPosition.some((c) => !Number.isFinite(c))) {
|
|
21
|
+
throw new RangeError("Billboard cameraPosition must contain three finite values.");
|
|
22
|
+
}
|
|
23
|
+
const mode = options.mode ?? "spherical";
|
|
24
|
+
const attenuation = options.attenuation ?? 1;
|
|
25
|
+
if (!Number.isFinite(attenuation) || attenuation < 0)
|
|
26
|
+
throw new RangeError("Billboard attenuation must be finite and non-negative.");
|
|
27
|
+
const toCamera = [
|
|
28
|
+
options.cameraPosition[0] - options.center[0],
|
|
29
|
+
options.cameraPosition[1] - options.center[1],
|
|
30
|
+
options.cameraPosition[2] - options.center[2],
|
|
31
|
+
];
|
|
32
|
+
const distance = Math.hypot(toCamera[0], toCamera[1], toCamera[2]);
|
|
33
|
+
if (distance <= 1e-9)
|
|
34
|
+
throw new RangeError("Billboard camera must not coincide with the sprite center.");
|
|
35
|
+
const scale = attenuation === 0 ? 1 : attenuation / distance;
|
|
36
|
+
const halfW = (options.size[0] * scale) / 2;
|
|
37
|
+
const halfH = (options.size[1] * scale) / 2;
|
|
38
|
+
let right;
|
|
39
|
+
let up;
|
|
40
|
+
if (mode === "spherical") {
|
|
41
|
+
const forward = [toCamera[0] / distance, toCamera[1] / distance, toCamera[2] / distance];
|
|
42
|
+
const worldUp = options.cameraUp ?? [0, 1, 0];
|
|
43
|
+
right = normalize3(cross3(worldUp, forward));
|
|
44
|
+
up = cross3(forward, right);
|
|
45
|
+
}
|
|
46
|
+
else if (mode === "axis-locked-y") {
|
|
47
|
+
const flat = normalize3([toCamera[0], 0, toCamera[2]]);
|
|
48
|
+
right = [flat[2], 0, -flat[0]];
|
|
49
|
+
up = [0, 1, 0];
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
throw new RangeError(`Unsupported billboard mode: ${String(mode)}`);
|
|
53
|
+
}
|
|
54
|
+
const [cx, cy, cz] = options.center;
|
|
55
|
+
const corner = (sx, sy) => [
|
|
56
|
+
cx + right[0] * sx * halfW + up[0] * sy * halfH,
|
|
57
|
+
cy + right[1] * sx * halfW + up[1] * sy * halfH,
|
|
58
|
+
cz + right[2] * sx * halfW + up[2] * sy * halfH,
|
|
59
|
+
];
|
|
60
|
+
return {
|
|
61
|
+
topLeft: corner(-1, 1),
|
|
62
|
+
topRight: corner(1, 1),
|
|
63
|
+
bottomRight: corner(1, -1),
|
|
64
|
+
bottomLeft: corner(-1, -1),
|
|
65
|
+
attenuatedSize: [halfW * 2, halfH * 2],
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/** Flipbook UVs for explosion/muzzle-flash sprite sheets. */
|
|
69
|
+
export function resolveFlipbookUv(frame, columns, rows) {
|
|
70
|
+
if (!Number.isInteger(frame) || frame < 0)
|
|
71
|
+
throw new RangeError("Flipbook frame must be a non-negative integer.");
|
|
72
|
+
if (!Number.isInteger(columns) || columns <= 0)
|
|
73
|
+
throw new RangeError("Flipbook columns must be a positive integer.");
|
|
74
|
+
if (!Number.isInteger(rows) || rows <= 0)
|
|
75
|
+
throw new RangeError("Flipbook rows must be a positive integer.");
|
|
76
|
+
const cellCount = columns * rows;
|
|
77
|
+
if (frame >= cellCount)
|
|
78
|
+
throw new RangeError(`Flipbook frame ${frame} exceeds sheet capacity ${cellCount}.`);
|
|
79
|
+
const column = frame % columns;
|
|
80
|
+
const row = Math.floor(frame / columns);
|
|
81
|
+
const u0 = column / columns;
|
|
82
|
+
const u1 = (column + 1) / columns;
|
|
83
|
+
// GL texture space has v=0 at the bottom; sheet row 0 is the top row.
|
|
84
|
+
const v1 = 1 - row / rows;
|
|
85
|
+
const v0 = 1 - (row + 1) / rows;
|
|
86
|
+
return { frame, columns, rows, uvRect: [u0, v0, u1, v1] };
|
|
87
|
+
}
|
|
88
|
+
/** Beam/fence builder: additive-blended quad strip between two points. */
|
|
89
|
+
export function createBeamDescriptor(options) {
|
|
90
|
+
for (const [label, p] of [["from", options.from], ["to", options.to]]) {
|
|
91
|
+
if (p.length !== 3 || p.some((c) => !Number.isFinite(c))) {
|
|
92
|
+
throw new RangeError(`Beam ${label} must contain three finite values.`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const widthWorld = options.widthWorld ?? 0.15;
|
|
96
|
+
const segmentCount = options.segmentCount ?? 8;
|
|
97
|
+
if (!Number.isFinite(widthWorld) || widthWorld <= 0)
|
|
98
|
+
throw new RangeError("Beam widthWorld must be finite and positive.");
|
|
99
|
+
if (!Number.isInteger(segmentCount) || segmentCount < 1 || segmentCount > 64) {
|
|
100
|
+
throw new RangeError("Beam segmentCount must be an integer in [1, 64].");
|
|
101
|
+
}
|
|
102
|
+
const length = Math.hypot(options.to[0] - options.from[0], options.to[1] - options.from[1], options.to[2] - options.from[2]);
|
|
103
|
+
if (length <= 1e-9)
|
|
104
|
+
throw new RangeError("Beam endpoints must not coincide.");
|
|
105
|
+
return {
|
|
106
|
+
from: options.from,
|
|
107
|
+
to: options.to,
|
|
108
|
+
widthWorld,
|
|
109
|
+
additive: true,
|
|
110
|
+
length: Number(length.toFixed(6)),
|
|
111
|
+
segmentCount,
|
|
112
|
+
diagnostic: "Additive beam strip; pairs with ScreenSpaceLineMaterial for thick screen-space strokes.",
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function cross3(a, b) {
|
|
116
|
+
return [
|
|
117
|
+
a[1] * b[2] - a[2] * b[1],
|
|
118
|
+
a[2] * b[0] - a[0] * b[2],
|
|
119
|
+
a[0] * b[1] - a[1] * b[0],
|
|
120
|
+
];
|
|
121
|
+
}
|
|
122
|
+
function normalize3(v) {
|
|
123
|
+
const length = Math.hypot(v[0], v[1], v[2]);
|
|
124
|
+
if (length <= 1e-9)
|
|
125
|
+
throw new RangeError("Billboard basis vector is degenerate (camera looking straight down the lock axis).");
|
|
126
|
+
return [v[0] / length, v[1] / length, v[2] / length];
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=SpriteFlipbook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpriteFlipbook.js","sourceRoot":"","sources":["../../../../packages/rendering/src/SpriteFlipbook.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type RenderItem } from "./ForwardPass.js";
|
|
2
|
+
import { type RenderDevice, type RenderTarget } from "./RenderDevice.js";
|
|
3
|
+
export interface TemporalFrameOptions {
|
|
4
|
+
readonly sceneKey?: string;
|
|
5
|
+
readonly reset?: boolean;
|
|
6
|
+
readonly jitter?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/** GPU-only bindings. RG velocity is current UV minus previous UV; BA are current/previous depth. */
|
|
9
|
+
export interface TemporalGpuBindings {
|
|
10
|
+
readonly velocity: RenderTarget;
|
|
11
|
+
readonly history: RenderTarget;
|
|
12
|
+
readonly historyOutput: RenderTarget;
|
|
13
|
+
readonly historyValid: boolean;
|
|
14
|
+
readonly historyFrames?: number;
|
|
15
|
+
}
|
|
16
|
+
/** Renderer-lifetime owner; histories only advance after successful presentation. */
|
|
17
|
+
export declare class TemporalHistory {
|
|
18
|
+
private targets;
|
|
19
|
+
private previous;
|
|
20
|
+
private pending;
|
|
21
|
+
private valid;
|
|
22
|
+
private sceneKey;
|
|
23
|
+
private frame;
|
|
24
|
+
private jitterEnabled;
|
|
25
|
+
private readonly library;
|
|
26
|
+
private pass;
|
|
27
|
+
renderItems: readonly RenderItem[];
|
|
28
|
+
private materials;
|
|
29
|
+
constructor();
|
|
30
|
+
reset(): void;
|
|
31
|
+
dispose(): void;
|
|
32
|
+
/** Aperiodic pixel quadrature; deliberately zero for the seed frame. */
|
|
33
|
+
jitter(width: number, height: number): readonly [number, number];
|
|
34
|
+
prepare(device: RenderDevice, width: number, height: number, items: readonly RenderItem[], viewProjection: Float32Array | readonly number[] | undefined, options: TemporalFrameOptions): TemporalGpuBindings;
|
|
35
|
+
commit(): void;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=TemporalHistory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemporalHistory.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/TemporalHistory.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAG7D,OAAO,EAAqB,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGzF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qGAAqG;AACrG,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,qFAAqF;AACrF,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAyD;IACxE,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,IAAI,CAA0B;IACtC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAM;IACxC,OAAO,CAAC,SAAS,CAAkB;;IAGnC,KAAK,IAAI,IAAI;IACb,OAAO,IAAI,IAAI;IASf,wEAAwE;IACxE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IAQhE,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,UAAU,EAAE,EAAE,cAAc,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,oBAAoB,GAAG,mBAAmB;IAuC5M,MAAM,IAAI,IAAI;CAKf"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { identityMat4, multiplyMat4 } from "@aura3d/scene";
|
|
2
|
+
import { ForwardPass } from "./ForwardPass.js";
|
|
3
|
+
import { Material } from "./Material.js";
|
|
4
|
+
import { MaterialInstance } from "./MaterialInstance.js";
|
|
5
|
+
import { RenderDeviceError } from "./RenderDevice.js";
|
|
6
|
+
import { ShaderLibrary } from "./ShaderLibraryCore.js";
|
|
7
|
+
/** Renderer-lifetime owner; histories only advance after successful presentation. */
|
|
8
|
+
export class TemporalHistory {
|
|
9
|
+
targets;
|
|
10
|
+
previous = new Map();
|
|
11
|
+
pending = new Map();
|
|
12
|
+
valid = false;
|
|
13
|
+
sceneKey;
|
|
14
|
+
frame = 0;
|
|
15
|
+
jitterEnabled = false;
|
|
16
|
+
library = new ShaderLibrary();
|
|
17
|
+
pass;
|
|
18
|
+
renderItems = [];
|
|
19
|
+
materials = [];
|
|
20
|
+
constructor() { this.library.register(velocityShader); }
|
|
21
|
+
reset() { this.valid = false; this.previous.clear(); this.pending.clear(); this.frame = 0; }
|
|
22
|
+
dispose() {
|
|
23
|
+
this.pass = undefined;
|
|
24
|
+
for (const material of this.materials)
|
|
25
|
+
material.dispose();
|
|
26
|
+
this.materials = [];
|
|
27
|
+
for (const target of this.targets ?? [])
|
|
28
|
+
target.dispose();
|
|
29
|
+
this.targets = undefined;
|
|
30
|
+
this.reset();
|
|
31
|
+
}
|
|
32
|
+
/** Aperiodic pixel quadrature; deliberately zero for the seed frame. */
|
|
33
|
+
jitter(width, height) {
|
|
34
|
+
// Base-2 Halton's even/odd samples occupy opposite half-pixels. A
|
|
35
|
+
// short repeated sequence therefore aliases two-frame authored motion.
|
|
36
|
+
// Incommensurate irrational increments distribute both parity subsequences over the
|
|
37
|
+
// whole pixel instead of locking coverage to an object's motion phase.
|
|
38
|
+
return this.valid ? [(((.5 + this.frame * ((Math.sqrt(5) - 1) / 2)) % 1) - .5) * 2 / width, (((.5 + this.frame * (Math.sqrt(2) - 1)) % 1) - .5) * 2 / height] : [0, 0];
|
|
39
|
+
}
|
|
40
|
+
prepare(device, width, height, items, viewProjection, options) {
|
|
41
|
+
if (Boolean(options.jitter) !== this.jitterEnabled) {
|
|
42
|
+
this.reset();
|
|
43
|
+
this.jitterEnabled = Boolean(options.jitter);
|
|
44
|
+
}
|
|
45
|
+
if (options.reset || options.sceneKey !== this.sceneKey) {
|
|
46
|
+
this.reset();
|
|
47
|
+
this.sceneKey = options.sceneKey;
|
|
48
|
+
}
|
|
49
|
+
if (!this.targets || this.targets.some(target => target.disposed || target.width !== width || target.height !== height)) {
|
|
50
|
+
this.dispose();
|
|
51
|
+
const made = [];
|
|
52
|
+
try {
|
|
53
|
+
for (const label of ["velocity", "history-a", "history-b"])
|
|
54
|
+
made.push(device.createRenderTarget({ width, height, format: "rgba16f", depth: label === "velocity", sampleCount: 1, label: `renderer-temporal-${label}` }));
|
|
55
|
+
this.targets = made;
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
for (const target of made)
|
|
59
|
+
target.dispose();
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
for (const material of this.materials)
|
|
64
|
+
material.dispose();
|
|
65
|
+
this.materials = [];
|
|
66
|
+
this.pending.clear();
|
|
67
|
+
const velocityItems = items.map(item => {
|
|
68
|
+
const base = item.material instanceof MaterialInstance ? item.material.baseMaterial : item.material;
|
|
69
|
+
if (!item.label || this.pending.has(item.label) || item.skinning || item.morphTargets?.length || item.instanceTransforms?.length || item.geometry.topology !== "triangles" || base?.renderState.blend) {
|
|
70
|
+
throw new RenderDeviceError("Temporal rendering requires stable unique labels and opaque rigid noninstanced geometry; skinning, morphing and transparency require separate velocity support.", "TEMPORAL_UNSUPPORTED_GEOMETRY", { label: item.label });
|
|
71
|
+
}
|
|
72
|
+
const current = new Float32Array(item.modelViewProjectionMatrix ?? multiplyMat4(Array.from(viewProjection ?? identityMat4()), Array.from(item.modelMatrix ?? identityMat4())));
|
|
73
|
+
if (current.length !== 16 || !current.every(Number.isFinite))
|
|
74
|
+
throw new RenderDeviceError("Temporal transform must be finite mat4", "TEMPORAL_INVALID_MATRIX");
|
|
75
|
+
// Jitter changes coverage, not physical motion. Reprojecting history by
|
|
76
|
+
// sampling offsets makes the accumulated image follow the sampling pattern.
|
|
77
|
+
const unjittered = new Float32Array(current);
|
|
78
|
+
if (options.jitter) {
|
|
79
|
+
const [x, y] = this.jitter(width, height);
|
|
80
|
+
for (let col = 0; col < 4; col++) {
|
|
81
|
+
current[col * 4] += x * current[col * 4 + 3];
|
|
82
|
+
current[col * 4 + 1] += y * current[col * 4 + 3];
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const previous = this.valid ? this.previous.get(item.label) ?? unjittered : unjittered;
|
|
86
|
+
this.pending.set(item.label, unjittered);
|
|
87
|
+
const material = new Material({ shaderKey: velocityShader.name, requiredAttributes: ["a_position"], parameters: { u_modelViewProjection: current, u_previousViewProjection: previous, u_unjitteredViewProjection: unjittered }, uniformSchema: [{ name: "u_modelViewProjection", kind: "mat4" }, { name: "u_previousViewProjection", kind: "mat4" }, { name: "u_unjitteredViewProjection", kind: "mat4" }], renderState: { cullMode: base?.renderState.cullMode ?? "back" } });
|
|
88
|
+
this.materials.push(material);
|
|
89
|
+
return { ...item, material, modelViewProjectionMatrix: current };
|
|
90
|
+
});
|
|
91
|
+
this.renderItems = items.map((item, index) => ({ ...item, modelViewProjectionMatrix: velocityItems[index].modelViewProjectionMatrix }));
|
|
92
|
+
device.setRenderTarget(this.targets[0]);
|
|
93
|
+
device.clear([0, 0, 1, 1]);
|
|
94
|
+
this.pass = new ForwardPass({ items: velocityItems, shaderLibrary: this.library });
|
|
95
|
+
this.pass.execute({ device, width, height });
|
|
96
|
+
return { velocity: this.targets[0], history: this.targets[1], historyOutput: this.targets[2], historyValid: this.valid, historyFrames: this.valid ? this.frame : 0 };
|
|
97
|
+
}
|
|
98
|
+
commit() {
|
|
99
|
+
if (!this.targets)
|
|
100
|
+
return;
|
|
101
|
+
[this.targets[1], this.targets[2]] = [this.targets[2], this.targets[1]];
|
|
102
|
+
this.previous = new Map(this.pending);
|
|
103
|
+
this.valid = true;
|
|
104
|
+
this.frame++;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
const velocityShader = {
|
|
108
|
+
name: "renderer-temporal-velocity", marker: "AURA_TEMPORAL_VELOCITY",
|
|
109
|
+
vertex: `#version 300 es
|
|
110
|
+
// AURA_TEMPORAL_VELOCITY
|
|
111
|
+
precision highp float;
|
|
112
|
+
in vec3 a_position;
|
|
113
|
+
uniform mat4 u_modelViewProjection;
|
|
114
|
+
uniform mat4 u_previousViewProjection;
|
|
115
|
+
uniform mat4 u_unjitteredViewProjection;
|
|
116
|
+
out vec4 v_current;
|
|
117
|
+
out vec4 v_previous;
|
|
118
|
+
void main(){ v_current=u_unjitteredViewProjection*vec4(a_position,1.0); v_previous=u_previousViewProjection*vec4(a_position,1.0); gl_Position=u_modelViewProjection*vec4(a_position,1.0); }`,
|
|
119
|
+
fragment: `#version 300 es
|
|
120
|
+
// AURA_TEMPORAL_VELOCITY
|
|
121
|
+
precision highp float;
|
|
122
|
+
in vec4 v_current; in vec4 v_previous; out vec4 outColor;
|
|
123
|
+
void main(){ vec3 c=v_current.xyz/max(v_current.w,0.00001)*0.5+0.5; vec3 p=v_previous.xyz/max(v_previous.w,0.00001)*0.5+0.5; outColor=vec4(clamp(c.xy-p.xy,vec2(-0.25),vec2(0.25)),c.z,p.z); }`,
|
|
124
|
+
portableBindings: [{ name: "u_modelViewProjection", kind: "mat4" }, { name: "u_previousViewProjection", kind: "mat4" }, { name: "u_unjitteredViewProjection", kind: "mat4" }],
|
|
125
|
+
webgpu: {
|
|
126
|
+
vertex: `// AURA_TEMPORAL_VELOCITY
|
|
127
|
+
/* @aura3d-bindings */
|
|
128
|
+
struct Out { @builtin(position) position: vec4<f32>, @location(0) current: vec4<f32>, @location(1) previous: vec4<f32> };
|
|
129
|
+
@vertex fn main(@location(0) position: vec3<f32>) -> Out { var out: Out; out.current=aura.u_unjitteredViewProjection*vec4<f32>(position,1); out.previous=aura.u_previousViewProjection*vec4<f32>(position,1); let clip=aura.u_modelViewProjection*vec4<f32>(position,1); out.position=vec4<f32>(clip.xy,(clip.z+clip.w)*0.5,clip.w); return out; }`,
|
|
130
|
+
fragment: `// AURA_TEMPORAL_VELOCITY
|
|
131
|
+
/* @aura3d-bindings */
|
|
132
|
+
@fragment fn main(@location(0) current: vec4<f32>, @location(1) previous: vec4<f32>) -> @location(0) vec4<f32> { let c=current.xyz/max(current.w,0.00001)*0.5+0.5; let p=previous.xyz/max(previous.w,0.00001)*0.5+0.5; return vec4<f32>(clamp((c.xy-p.xy)*vec2<f32>(1,-1),vec2<f32>(-.25),vec2<f32>(.25)),c.z,p.z); }`
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
//# sourceMappingURL=TemporalHistory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemporalHistory.js","sourceRoot":"","sources":["../../../../packages/rendering/src/TemporalHistory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemporalMath.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/TemporalMath.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAIxF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Seed frames contribute equally until the requested history weight is reached. */
|
|
2
|
+
export function temporalAccumulationWeight(blend, historyFrames) {
|
|
3
|
+
if (historyFrames === undefined)
|
|
4
|
+
return blend;
|
|
5
|
+
if (!Number.isSafeInteger(historyFrames) || historyFrames < 0)
|
|
6
|
+
throw new RangeError("Temporal history frame count must be a nonnegative integer");
|
|
7
|
+
return Math.min(blend, historyFrames / (historyFrames + 1));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=TemporalMath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemporalMath.js","sourceRoot":"","sources":["../../../../packages/rendering/src/TemporalMath.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,MAAM,UAAU,0BAA0B,CAAC,KAAa,EAAE,aAAsB;IAC9E,IAAI,aAAa,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC9C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,4DAA4D,CAAC,CAAC;IAClJ,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { type TerrainHeightfieldFixture } from "./TerrainHeightfield.js";
|
|
2
|
+
/**
|
|
3
|
+
* D2 dense open worlds (muse3jsparity-PRD).
|
|
4
|
+
*
|
|
5
|
+
* Builds the missing RENDERED systems on top of the deterministic fixture
|
|
6
|
+
* math: LOD-morphed heightfield tiles with holes + slope-based material
|
|
7
|
+
* blend, a collision height query shared with physics (`SurfaceQuery`
|
|
8
|
+
* shape matches the heightfield collider descriptor), GPU-instanced scatter
|
|
9
|
+
* planning with density/wind/cull parameters, voxel meshing-budget
|
|
10
|
+
* telemetry, frame-budget LOD enforcement, and a render-order + layers
|
|
11
|
+
* audit against r185 semantics. Fixture files stay as deterministic oracles.
|
|
12
|
+
*/
|
|
13
|
+
export interface TerrainTileKey {
|
|
14
|
+
readonly tileX: number;
|
|
15
|
+
readonly tileZ: number;
|
|
16
|
+
readonly lod: number;
|
|
17
|
+
}
|
|
18
|
+
export interface TerrainTilePlan {
|
|
19
|
+
readonly key: TerrainTileKey;
|
|
20
|
+
readonly worldMinX: number;
|
|
21
|
+
readonly worldMinZ: number;
|
|
22
|
+
readonly worldSize: number;
|
|
23
|
+
readonly resolution: number;
|
|
24
|
+
/** 0 = full detail .. 1 = fully morphed to the parent LOD skirt. */
|
|
25
|
+
readonly morphFactor: number;
|
|
26
|
+
readonly hasHoles: boolean;
|
|
27
|
+
readonly holeCellCount: number;
|
|
28
|
+
readonly diagnostic: string;
|
|
29
|
+
}
|
|
30
|
+
export interface TerrainTileGridOptions {
|
|
31
|
+
readonly tileCountX?: number;
|
|
32
|
+
readonly tileCountZ?: number;
|
|
33
|
+
readonly tileWorldSize?: number;
|
|
34
|
+
readonly baseResolution?: number;
|
|
35
|
+
readonly lodLevels?: number;
|
|
36
|
+
/** Camera distance at which LOD increases by one level. */
|
|
37
|
+
readonly lodDistance?: number;
|
|
38
|
+
readonly cameraX?: number;
|
|
39
|
+
readonly cameraZ?: number;
|
|
40
|
+
readonly holeMask?: (tileX: number, tileZ: number, cellX: number, cellZ: number) => boolean;
|
|
41
|
+
}
|
|
42
|
+
export declare function createTerrainTileGrid(options?: TerrainTileGridOptions): readonly TerrainTilePlan[];
|
|
43
|
+
export type TerrainBlendLayer = "rock" | "grass" | "sand" | "snow";
|
|
44
|
+
/** Slope-based material blend weights; steep slopes expose rock, flats take grass/sand. */
|
|
45
|
+
export declare function resolveTerrainSlopeBlend(slopeDegrees: number, height: number, snowline: number): Record<TerrainBlendLayer, number>;
|
|
46
|
+
/**
|
|
47
|
+
* Collision height query over the fixture heightfield, shared with physics
|
|
48
|
+
* (`SurfaceQuery`): bilinear sample in fixture UV space.
|
|
49
|
+
*/
|
|
50
|
+
export declare function queryTerrainHeight(fixture: TerrainHeightfieldFixture, worldX: number, worldZ: number, worldSizeX: number, worldSizeZ: number): number;
|
|
51
|
+
export interface ScatterPlanOptions {
|
|
52
|
+
readonly instanceBudget: number;
|
|
53
|
+
readonly densityMapMean: number;
|
|
54
|
+
readonly windStrength?: number;
|
|
55
|
+
readonly cullDistance?: number;
|
|
56
|
+
readonly shadowCasterFraction?: number;
|
|
57
|
+
/**
|
|
58
|
+
* Candidate instances before distance/budget culling (e.g. every
|
|
59
|
+
* density-admitted placement inside the scatter field). Defaults to
|
|
60
|
+
* `round(instanceBudget * 1.2)`; pass the real candidate count so
|
|
61
|
+
* `culledInstances` measures actual shedding, not a constant.
|
|
62
|
+
*/
|
|
63
|
+
readonly candidateInstances?: number;
|
|
64
|
+
}
|
|
65
|
+
export interface ScatterPlan {
|
|
66
|
+
readonly admittedInstances: number;
|
|
67
|
+
readonly culledInstances: number;
|
|
68
|
+
readonly meshInstances: number;
|
|
69
|
+
readonly impostorInstances: number;
|
|
70
|
+
readonly shadowCasters: number;
|
|
71
|
+
readonly windStrength: number;
|
|
72
|
+
readonly withinBudget: boolean;
|
|
73
|
+
readonly diagnostic: string;
|
|
74
|
+
}
|
|
75
|
+
/** GPU-instanced scatter plan: density admits, distance culls, wind sways. */
|
|
76
|
+
export declare function planScatterInstances(options: ScatterPlanOptions): ScatterPlan;
|
|
77
|
+
export interface ScatterWindOffset {
|
|
78
|
+
readonly x: number;
|
|
79
|
+
readonly z: number;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Per-instance wind sway for GPU-instanced scatter (D2 browser proof).
|
|
83
|
+
*
|
|
84
|
+
* Pure gust + turbulence displacement in world units, evaluated per frame
|
|
85
|
+
* from the instance base position: the 50k-instance scene applies this to
|
|
86
|
+
* its instance offsets and screenshots with/without it as the wind proof.
|
|
87
|
+
* `response` scales per-layer stiffness (grass 1.0, shrubs 0.7, trees 0.45 —
|
|
88
|
+
* the same bands as the vegetation fixture oracle). `amplitude` scales the
|
|
89
|
+
* fixture gust field to vegetation height (default 1 = fixture units, tip
|
|
90
|
+
* sway of a few cm); the browser scene passes per-layer amplitudes so tip
|
|
91
|
+
* sway lands at 5-10% of layer height. Gust frequencies/phases never change.
|
|
92
|
+
*/
|
|
93
|
+
export declare function scatterWindOffset(x: number, z: number, timeSeconds: number, windStrength: number, response?: number, amplitude?: number): ScatterWindOffset;
|
|
94
|
+
export interface FrameBudgetInput {
|
|
95
|
+
readonly draws: number;
|
|
96
|
+
readonly triangles: number;
|
|
97
|
+
readonly textures: number;
|
|
98
|
+
readonly maxDraws: number;
|
|
99
|
+
readonly maxTriangles: number;
|
|
100
|
+
readonly maxTextures: number;
|
|
101
|
+
}
|
|
102
|
+
export interface FrameBudgetDecision {
|
|
103
|
+
/** 0 = full quality .. 1 = minimum quality; applied as LOD bias. */
|
|
104
|
+
readonly lodBias: number;
|
|
105
|
+
readonly overBudget: boolean;
|
|
106
|
+
readonly shedDraws: number;
|
|
107
|
+
readonly diagnostic: string;
|
|
108
|
+
}
|
|
109
|
+
/** Frame budget enforcer: degrades LOD bias before dropping frames. */
|
|
110
|
+
export declare function enforceFrameBudget(input: FrameBudgetInput): FrameBudgetDecision;
|
|
111
|
+
export interface RenderOrderAuditEntry {
|
|
112
|
+
readonly rule: string;
|
|
113
|
+
readonly auraBehavior: string;
|
|
114
|
+
readonly threeR185Behavior: string;
|
|
115
|
+
readonly delta: "none" | "bounded";
|
|
116
|
+
readonly notes: string;
|
|
117
|
+
}
|
|
118
|
+
/** Render order + layers audit vs r185 semantics (D2 task 5). */
|
|
119
|
+
export declare function auditRenderOrder(): readonly RenderOrderAuditEntry[];
|
|
120
|
+
//# sourceMappingURL=TerrainTiles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TerrainTiles.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/TerrainTiles.ts"],"names":[],"mappings":"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"}
|