@onerjs/core 8.56.4 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Animations/animatable.core.js +36 -0
- package/Animations/animatable.core.js.map +1 -1
- package/Animations/animationGroup.pure.d.ts +61 -1
- package/Animations/animationGroup.pure.js +191 -2
- package/Animations/animationGroup.pure.js.map +1 -1
- package/Animations/index.d.ts +1 -0
- package/Animations/index.js +1 -0
- package/Animations/index.js.map +1 -1
- package/Animations/pure.d.ts +1 -0
- package/Animations/pure.js +1 -0
- package/Animations/pure.js.map +1 -1
- package/Animations/rootMotion.d.ts +560 -0
- package/Animations/rootMotion.js +1709 -0
- package/Animations/rootMotion.js.map +1 -0
- package/Animations/runtimeAnimation.d.ts +57 -0
- package/Animations/runtimeAnimation.js +127 -3
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Cameras/arcRotateCamera.pure.d.ts +2 -0
- package/Cameras/arcRotateCamera.pure.js +2 -0
- package/Cameras/arcRotateCamera.pure.js.map +1 -1
- package/Cameras/targetCamera.pure.d.ts +2 -0
- package/Cameras/targetCamera.pure.js +7 -1
- package/Cameras/targetCamera.pure.js.map +1 -1
- package/Collisions/gpuPicker.js +5 -5
- package/Collisions/gpuPicker.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.query.pure.js +4 -2
- package/Engines/AbstractEngine/abstractEngine.query.pure.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.query.types.d.ts +11 -2
- package/Engines/AbstractEngine/abstractEngine.query.types.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.renderPass.pure.js +1 -0
- package/Engines/AbstractEngine/abstractEngine.renderPass.pure.js.map +1 -1
- package/Engines/Extensions/engine.multiRender.pure.js +63 -0
- package/Engines/Extensions/engine.multiRender.pure.js.map +1 -1
- package/Engines/Extensions/engine.multiRender.types.d.ts +13 -0
- package/Engines/Extensions/engine.multiRender.types.js.map +1 -1
- package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js +2 -2
- package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js.map +1 -1
- package/Engines/Extensions/engine.prefilteredCubeTexture.types.d.ts +2 -1
- package/Engines/Extensions/engine.prefilteredCubeTexture.types.js.map +1 -1
- package/Engines/Extensions/index.d.ts +1 -0
- package/Engines/Extensions/index.js +1 -0
- package/Engines/Extensions/index.js.map +1 -1
- package/Engines/Extensions/pure.d.ts +1 -1
- package/Engines/Extensions/pure.js +1 -1
- package/Engines/Extensions/pure.js.map +1 -1
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js +88 -39
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js.map +1 -1
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.types.d.ts +20 -2
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.types.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.pure.js +4 -0
- package/Engines/WebGPU/Extensions/engine.multiRender.pure.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.types.d.ts +13 -0
- package/Engines/WebGPU/Extensions/engine.multiRender.types.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.query.pure.js +11 -3
- package/Engines/WebGPU/Extensions/engine.query.pure.js.map +1 -1
- package/Engines/WebGPU/Extensions/index.d.ts +1 -0
- package/Engines/WebGPU/Extensions/index.js +1 -0
- package/Engines/WebGPU/Extensions/index.js.map +1 -1
- package/Engines/WebGPU/Extensions/pure.d.ts +1 -1
- package/Engines/WebGPU/Extensions/pure.js +1 -1
- package/Engines/WebGPU/Extensions/pure.js.map +1 -1
- package/Engines/WebGPU/webgpuBundleList.d.ts +2 -0
- package/Engines/WebGPU/webgpuBundleList.js +4 -0
- package/Engines/WebGPU/webgpuBundleList.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js +5 -2
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
- package/Engines/WebGPU/webgpuHardwareTexture.js +3 -1
- package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.js +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
- package/Engines/WebGPU/webgpuSnapshotRendering.d.ts +4 -0
- package/Engines/WebGPU/webgpuSnapshotRendering.js +40 -7
- package/Engines/WebGPU/webgpuSnapshotRendering.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.d.ts +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.js +2 -2
- package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureManager.d.ts +2 -0
- package/Engines/WebGPU/webgpuTextureManager.js +286 -13
- package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
- package/Engines/abstractEngine.pure.d.ts +2 -0
- package/Engines/abstractEngine.pure.js +7 -3
- package/Engines/abstractEngine.pure.js.map +1 -1
- package/Engines/constants.d.ts +4 -0
- package/Engines/constants.js +4 -0
- package/Engines/constants.js.map +1 -1
- package/Engines/thinEngine.pure.d.ts +14 -0
- package/Engines/thinEngine.pure.js +48 -12
- package/Engines/thinEngine.pure.js.map +1 -1
- package/Engines/thinNativeEngine.pure.d.ts +1 -0
- package/Engines/thinNativeEngine.pure.js +7 -1
- package/Engines/thinNativeEngine.pure.js.map +1 -1
- package/Engines/thinWebGPUEngine.d.ts +4 -0
- package/Engines/thinWebGPUEngine.js +10 -1
- package/Engines/thinWebGPUEngine.js.map +1 -1
- package/Engines/webgpuEngine.pure.d.ts +5 -2
- package/Engines/webgpuEngine.pure.js +48 -13
- package/Engines/webgpuEngine.pure.js.map +1 -1
- package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js +2 -2
- package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js.map +1 -1
- package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.d.ts +11 -2
- package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js +1 -1
- package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.d.ts +9 -1
- package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.js +6 -8
- package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.d.ts +2 -0
- package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.js +5 -1
- package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.d.ts +2 -0
- package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.js +5 -1
- package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.d.ts +9 -0
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js +34 -9
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.d.ts +2 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js +4 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.d.ts +2 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js +4 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphSendCustomEventBlock.pure.js +19 -7
- package/FlowGraph/Blocks/Event/flowGraphSendCustomEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.d.ts +20 -2
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js +53 -10
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.d.ts +16 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js +64 -14
- package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.pure.js +64 -16
- package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.pure.js.map +1 -1
- package/FlowGraph/flowGraph.d.ts +4 -0
- package/FlowGraph/flowGraph.js +38 -7
- package/FlowGraph/flowGraph.js.map +1 -1
- package/FlowGraph/flowGraphBlock.js +3 -0
- package/FlowGraph/flowGraphBlock.js.map +1 -1
- package/FlowGraph/flowGraphConnection.d.ts +7 -0
- package/FlowGraph/flowGraphConnection.js +7 -0
- package/FlowGraph/flowGraphConnection.js.map +1 -1
- package/FlowGraph/flowGraphContext.d.ts +2 -1
- package/FlowGraph/flowGraphContext.js +4 -3
- package/FlowGraph/flowGraphContext.js.map +1 -1
- package/FlowGraph/flowGraphCoordinator.d.ts +15 -1
- package/FlowGraph/flowGraphCoordinator.js +47 -16
- package/FlowGraph/flowGraphCoordinator.js.map +1 -1
- package/FlowGraph/flowGraphEventBlock.d.ts +5 -0
- package/FlowGraph/flowGraphEventBlock.js +7 -0
- package/FlowGraph/flowGraphEventBlock.js.map +1 -1
- package/FlowGraph/flowGraphHostResolver.d.ts +2 -1
- package/FlowGraph/flowGraphHostResolver.js.map +1 -1
- package/FlowGraph/flowGraphParser.js +60 -2
- package/FlowGraph/flowGraphParser.js.map +1 -1
- package/FlowGraph/serialization.d.ts +2 -0
- package/FlowGraph/serialization.js +10 -22
- package/FlowGraph/serialization.js.map +1 -1
- package/FlowGraph/typeDefinitions.d.ts +8 -0
- package/FlowGraph/typeDefinitions.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.d.ts +5 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.js +8 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.d.ts +87 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.js +295 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.js.map +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/pure.d.ts +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/pure.js +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +4 -4
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.d.ts +5 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js +13 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/allBlocks.pure.js +2 -0
- package/FrameGraph/Node/Blocks/allBlocks.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/index.d.ts +1 -0
- package/FrameGraph/Node/Blocks/index.js +1 -0
- package/FrameGraph/Node/Blocks/index.js.map +1 -1
- package/FrameGraph/Node/Blocks/inputBlock.pure.js +20 -1
- package/FrameGraph/Node/Blocks/inputBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/pure.d.ts +1 -0
- package/FrameGraph/Node/Blocks/pure.js +1 -0
- package/FrameGraph/Node/Blocks/pure.js.map +1 -1
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.d.ts +4 -2
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.js +4 -2
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
- package/FrameGraph/Tasks/Layers/selectionOutlineTask.js +1 -0
- package/FrameGraph/Tasks/Layers/selectionOutlineTask.js.map +1 -1
- package/FrameGraph/Tasks/Misc/cullObjectsTask.js +5 -1
- package/FrameGraph/Tasks/Misc/cullObjectsTask.js.map +1 -1
- package/FrameGraph/Tasks/Misc/lightingVolumeTask.js +1 -0
- package/FrameGraph/Tasks/Misc/lightingVolumeTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.d.ts +69 -0
- package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.js +223 -0
- package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.js.map +1 -0
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +25 -3
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +69 -33
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js +3 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
- package/FrameGraph/frameGraphObjectList.d.ts +6 -1
- package/FrameGraph/frameGraphObjectList.js.map +1 -1
- package/FrameGraph/frameGraphRenderContext.d.ts +3 -1
- package/FrameGraph/frameGraphRenderContext.js +5 -5
- package/FrameGraph/frameGraphRenderContext.js.map +1 -1
- package/FrameGraph/index.d.ts +1 -0
- package/FrameGraph/index.js +1 -0
- package/FrameGraph/index.js.map +1 -1
- package/FrameGraph/pure.d.ts +1 -0
- package/FrameGraph/pure.js +1 -0
- package/FrameGraph/pure.js.map +1 -1
- package/Inputs/scene.inputManager.d.ts +4 -0
- package/Inputs/scene.inputManager.js +50 -8
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js +5 -5
- package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +5 -5
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +26 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +151 -47
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js +5 -5
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js +11 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js +17 -2
- package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +2 -2
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
- package/Materials/Node/nodeMaterial.pure.d.ts +4 -0
- package/Materials/Node/nodeMaterial.pure.js +4 -0
- package/Materials/Node/nodeMaterial.pure.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.d.ts +1 -1
- package/Materials/Node/nodeMaterialBuildState.js +25 -3
- package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
- package/Materials/PBR/openpbrMaterial.pure.d.ts +2 -0
- package/Materials/PBR/pbrBaseMaterial.pure.d.ts +2 -0
- package/Materials/Textures/Procedurals/proceduralTexture.pure.d.ts +13 -14
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js +6 -6
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
- package/Materials/Textures/baseTexture.pure.js +3 -0
- package/Materials/Textures/baseTexture.pure.js.map +1 -1
- package/Materials/Textures/cubeTexture.pure.js +1 -1
- package/Materials/Textures/cubeTexture.pure.js.map +1 -1
- package/Materials/Textures/internalTexture.d.ts +8 -1
- package/Materials/Textures/internalTexture.js +9 -2
- package/Materials/Textures/internalTexture.js.map +1 -1
- package/Materials/Textures/rawTexture2DArray.functions.d.ts +3 -3
- package/Materials/Textures/rawTexture2DArray.functions.js.map +1 -1
- package/Materials/Textures/rawTexture3D.d.ts +1 -1
- package/Materials/Textures/rawTexture3D.js +1 -1
- package/Materials/Textures/rawTexture3D.js.map +1 -1
- package/Materials/Textures/textureHelper.functions.d.ts +14 -0
- package/Materials/Textures/textureHelper.functions.js +24 -0
- package/Materials/Textures/textureHelper.functions.js.map +1 -1
- package/Materials/ditheredTileFadeMaterialPlugin.d.ts +210 -0
- package/Materials/ditheredTileFadeMaterialPlugin.js +509 -0
- package/Materials/ditheredTileFadeMaterialPlugin.js.map +1 -0
- package/Materials/index.d.ts +1 -0
- package/Materials/index.js +1 -0
- package/Materials/index.js.map +1 -1
- package/Materials/materialHelper.geometryrendering.d.ts +46 -1
- package/Materials/materialHelper.geometryrendering.js +105 -8
- package/Materials/materialHelper.geometryrendering.js.map +1 -1
- package/Materials/prepass.defines.d.ts +2 -0
- package/Materials/prepass.defines.js +2 -0
- package/Materials/prepass.defines.js.map +1 -1
- package/Materials/pure.d.ts +1 -0
- package/Materials/pure.js +1 -0
- package/Materials/pure.js.map +1 -1
- package/Materials/standardMaterial.pure.d.ts +2 -0
- package/Materials/standardMaterial.pure.js +6 -3
- package/Materials/standardMaterial.pure.js.map +1 -1
- package/Meshes/Builders/polygonBuilder.pure.d.ts +4 -0
- package/Meshes/Builders/polygonBuilder.pure.js +4 -1
- package/Meshes/Builders/polygonBuilder.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplatting.functions.d.ts +19 -0
- package/Meshes/GaussianSplatting/gaussianSplatting.functions.js +23 -0
- package/Meshes/GaussianSplatting/gaussianSplatting.functions.js.map +1 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +3 -14
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +20 -24
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +2 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +11 -4
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
- package/Meshes/abstractMesh.pure.d.ts +18 -0
- package/Meshes/abstractMesh.pure.js +22 -0
- package/Meshes/abstractMesh.pure.js.map +1 -1
- package/Meshes/index.d.ts +1 -0
- package/Meshes/index.js +1 -0
- package/Meshes/index.js.map +1 -1
- package/Meshes/instancedMesh.pure.d.ts +5 -0
- package/Meshes/instancedMesh.pure.js +12 -0
- package/Meshes/instancedMesh.pure.js.map +1 -1
- package/Meshes/mesh.pure.js +23 -8
- package/Meshes/mesh.pure.js.map +1 -1
- package/Meshes/meshBlendingTag.d.ts +47 -0
- package/Meshes/meshBlendingTag.js +64 -0
- package/Meshes/meshBlendingTag.js.map +1 -0
- package/Meshes/polygonMesh.js +2 -2
- package/Meshes/polygonMesh.js.map +1 -1
- package/Meshes/pure.d.ts +1 -0
- package/Meshes/pure.js +1 -0
- package/Meshes/pure.js.map +1 -1
- package/Misc/fileTools.pure.js +21 -0
- package/Misc/fileTools.pure.js.map +1 -1
- package/Misc/snapshotRenderingHelper.js +2 -2
- package/Misc/snapshotRenderingHelper.js.map +1 -1
- package/Misc/tools.pure.js +1 -1
- package/Misc/tools.pure.js.map +1 -1
- package/Particles/gpuParticleSystem.pure.d.ts +2 -0
- package/Particles/gpuParticleSystem.pure.js +89 -28
- package/Particles/gpuParticleSystem.pure.js.map +1 -1
- package/Particles/thinParticleSystem.pure.d.ts +2 -0
- package/Particles/thinParticleSystem.pure.js +84 -19
- package/Particles/thinParticleSystem.pure.js.map +1 -1
- package/Particles/webgl2ParticleSystem.pure.d.ts +1 -0
- package/Particles/webgl2ParticleSystem.pure.js +12 -4
- package/Particles/webgl2ParticleSystem.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js +7 -0
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/index.d.ts +2 -0
- package/PostProcesses/index.js +2 -0
- package/PostProcesses/index.js.map +1 -1
- package/PostProcesses/meshBlendingBlueNoise.d.ts +15 -0
- package/PostProcesses/meshBlendingBlueNoise.js +77 -0
- package/PostProcesses/meshBlendingBlueNoise.js.map +1 -0
- package/PostProcesses/meshBlendingPostProcess.d.ts +131 -0
- package/PostProcesses/meshBlendingPostProcess.js +315 -0
- package/PostProcesses/meshBlendingPostProcess.js.map +1 -0
- package/PostProcesses/pure.d.ts +2 -0
- package/PostProcesses/pure.js +2 -0
- package/PostProcesses/pure.js.map +1 -1
- package/PostProcesses/thinMeshBlendingPostProcess.d.ts +339 -0
- package/PostProcesses/thinMeshBlendingPostProcess.js +771 -0
- package/PostProcesses/thinMeshBlendingPostProcess.js.map +1 -0
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +6 -6
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +8 -8
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
- package/Rendering/boundingBoxRenderer.pure.js +2 -1
- package/Rendering/boundingBoxRenderer.pure.js.map +1 -1
- package/Rendering/depthRenderer.pure.js +3 -4
- package/Rendering/depthRenderer.pure.js.map +1 -1
- package/Rendering/edgesRenderer.pure.d.ts +4 -2
- package/Rendering/edgesRenderer.pure.js +11 -2
- package/Rendering/edgesRenderer.pure.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +10 -0
- package/Rendering/fluidRenderer/fluidRenderingObject.js +20 -0
- package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.d.ts +9 -3
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +14 -9
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
- package/Rendering/geometryBufferRenderer.pure.d.ts +38 -4
- package/Rendering/geometryBufferRenderer.pure.js +126 -17
- package/Rendering/geometryBufferRenderer.pure.js.map +1 -1
- package/Rendering/objectRenderer.d.ts +7 -1
- package/Rendering/objectRenderer.js +45 -7
- package/Rendering/objectRenderer.js.map +1 -1
- package/Rendering/outlineRenderer.pure.js +6 -2
- package/Rendering/outlineRenderer.pure.js.map +1 -1
- package/Rendering/renderingManager.d.ts +1 -1
- package/Rendering/renderingManager.js +5 -4
- package/Rendering/renderingManager.js.map +1 -1
- package/Shaders/ShadersInclude/defaultFragmentAlpha.d.ts +5 -0
- package/Shaders/ShadersInclude/defaultFragmentAlpha.js +34 -0
- package/Shaders/ShadersInclude/defaultFragmentAlpha.js.map +1 -0
- package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js +5 -1
- package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/geometryRenderingFragment.d.ts +5 -0
- package/Shaders/ShadersInclude/geometryRenderingFragment.js +74 -0
- package/Shaders/ShadersInclude/geometryRenderingFragment.js.map +1 -0
- package/Shaders/ShadersInclude/mrtFragmentDeclaration.js +89 -0
- package/Shaders/ShadersInclude/mrtFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrBlockPrePass.js +24 -17
- package/Shaders/ShadersInclude/openpbrBlockPrePass.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockPrePass.js +27 -20
- package/Shaders/ShadersInclude/pbrBlockPrePass.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDebug.js +6 -2
- package/Shaders/ShadersInclude/pbrDebug.js.map +1 -1
- package/Shaders/ShadersInclude/prePassDeclaration.js +95 -2
- package/Shaders/ShadersInclude/prePassDeclaration.js.map +1 -1
- package/Shaders/default.fragment.js +31 -40
- package/Shaders/default.fragment.js.map +1 -1
- package/Shaders/depthOfField.fragment.js +13 -9
- package/Shaders/depthOfField.fragment.js.map +1 -1
- package/Shaders/fluidRenderingParticleDepth.vertex.js +16 -1
- package/Shaders/fluidRenderingParticleDepth.vertex.js.map +1 -1
- package/Shaders/fluidRenderingParticleThickness.vertex.js +16 -1
- package/Shaders/fluidRenderingParticleThickness.vertex.js.map +1 -1
- package/Shaders/gaussianSplatting.fragment.js +63 -3
- package/Shaders/gaussianSplatting.fragment.js.map +1 -1
- package/Shaders/gaussianSplatting.vertex.js +80 -0
- package/Shaders/gaussianSplatting.vertex.js.map +1 -1
- package/Shaders/geometry.fragment.js +17 -11
- package/Shaders/geometry.fragment.js.map +1 -1
- package/Shaders/gpuRenderParticles.fragment.js +43 -1
- package/Shaders/gpuRenderParticles.fragment.js.map +1 -1
- package/Shaders/gpuRenderParticles.vertex.js +96 -16
- package/Shaders/gpuRenderParticles.vertex.js.map +1 -1
- package/Shaders/meshBlending.fragment.d.ts +5 -0
- package/Shaders/meshBlending.fragment.js +519 -0
- package/Shaders/meshBlending.fragment.js.map +1 -0
- package/Shaders/particles.fragment.js +43 -1
- package/Shaders/particles.fragment.js.map +1 -1
- package/Shaders/particles.vertex.js +84 -3
- package/Shaders/particles.vertex.js.map +1 -1
- package/Shaders/sprites.fragment.js +52 -2
- package/Shaders/sprites.fragment.js.map +1 -1
- package/Shaders/sprites.vertex.js +62 -1
- package/Shaders/sprites.vertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.js +33 -0
- package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.d.ts +6 -0
- package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.js +76 -0
- package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/lightFragment.js +1 -1
- package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.js +18 -0
- package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.d.ts +1 -0
- package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.js +11 -25
- package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.d.ts +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js +11 -25
- package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrDebug.js +5 -1
- package/ShadersWGSL/ShadersInclude/pbrDebug.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/prePassDeclaration.js +6 -1
- package/ShadersWGSL/ShadersInclude/prePassDeclaration.js.map +1 -1
- package/ShadersWGSL/default.fragment.js +17 -48
- package/ShadersWGSL/default.fragment.js.map +1 -1
- package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js +15 -2
- package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js.map +1 -1
- package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js +15 -2
- package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.fragment.js +63 -2
- package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.vertex.js +80 -0
- package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
- package/ShadersWGSL/geometry.fragment.js +37 -2
- package/ShadersWGSL/geometry.fragment.js.map +1 -1
- package/ShadersWGSL/gpuRenderParticles.fragment.js +47 -2
- package/ShadersWGSL/gpuRenderParticles.fragment.js.map +1 -1
- package/ShadersWGSL/gpuRenderParticles.vertex.js +110 -7
- package/ShadersWGSL/gpuRenderParticles.vertex.js.map +1 -1
- package/ShadersWGSL/meshBlending.fragment.d.ts +5 -0
- package/ShadersWGSL/meshBlending.fragment.js +576 -0
- package/ShadersWGSL/meshBlending.fragment.js.map +1 -0
- package/ShadersWGSL/openpbr.fragment.js +2 -1
- package/ShadersWGSL/openpbr.fragment.js.map +1 -1
- package/ShadersWGSL/particles.fragment.js +45 -1
- package/ShadersWGSL/particles.fragment.js.map +1 -1
- package/ShadersWGSL/particles.vertex.js +86 -4
- package/ShadersWGSL/particles.vertex.js.map +1 -1
- package/ShadersWGSL/pbr.fragment.js +2 -1
- package/ShadersWGSL/pbr.fragment.js.map +1 -1
- package/ShadersWGSL/sprites.fragment.js +56 -2
- package/ShadersWGSL/sprites.fragment.js.map +1 -1
- package/ShadersWGSL/sprites.vertex.js +62 -1
- package/ShadersWGSL/sprites.vertex.js.map +1 -1
- package/Sprites/spriteManager.d.ts +13 -0
- package/Sprites/spriteManager.js +15 -0
- package/Sprites/spriteManager.js.map +1 -1
- package/Sprites/spriteRenderer.d.ts +24 -1
- package/Sprites/spriteRenderer.js +368 -50
- package/Sprites/spriteRenderer.js.map +1 -1
- package/Sprites/thinSprite.d.ts +4 -0
- package/Sprites/thinSprite.js +4 -0
- package/Sprites/thinSprite.js.map +1 -1
- package/States/alphaCullingState.d.ts +3 -1
- package/States/alphaCullingState.js +18 -3
- package/States/alphaCullingState.js.map +1 -1
- package/XR/webXRDefaultExperience.d.ts +5 -1
- package/XR/webXRDefaultExperience.js.map +1 -1
- package/XR/webXREnterExitUI.d.ts +2 -1
- package/XR/webXREnterExitUI.js.map +1 -1
- package/package.json +1 -1
- package/scene.pure.d.ts +23 -0
- package/scene.pure.js +35 -0
- package/scene.pure.js.map +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/** This file must only contain pure code and pure imports */
|
|
2
|
+
import { Matrix } from "../../Maths/math.vector.pure.js";
|
|
2
3
|
import { SerializationHelper } from "../../Misc/decorators.serialization.js";
|
|
3
4
|
import { Logger } from "../../Misc/logger.js";
|
|
4
5
|
import { VertexBuffer } from "../../Buffers/buffer.pure.js";
|
|
@@ -12,6 +13,9 @@ import { Material } from "../material.pure.js";
|
|
|
12
13
|
import { BindFogParameters, BindLogDepth, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareDefinesForFrameBoundValues, PrepareDefinesForMisc, PrepareUniformsAndSamplersList, } from "../materialHelper.functions.js";
|
|
13
14
|
import { Engine } from "../../Engines/engine.pure.js";
|
|
14
15
|
import { RegisterClass } from "../../Misc/typeStore.js";
|
|
16
|
+
import { PrepassDefinesMixin } from "../prepass.defines.js";
|
|
17
|
+
import { MaterialHelperGeometryRendering } from "../materialHelper.geometryrendering.js";
|
|
18
|
+
import { Observable } from "../../Misc/observable.pure.js";
|
|
15
19
|
/**
|
|
16
20
|
* Computes the maximum number of Gaussian Splatting compound parts supported by the given engine.
|
|
17
21
|
* The limit is derived from the engine's maximum vertex uniform vectors capability.
|
|
@@ -33,10 +37,35 @@ export function GetGaussianSplattingMaxPartCount(engine) {
|
|
|
33
37
|
* @deprecated Use {@link GetGaussianSplattingMaxPartCount} with an engine instance instead.
|
|
34
38
|
*/
|
|
35
39
|
export const GaussianSplattingMaxPartCount = 128;
|
|
40
|
+
/**
|
|
41
|
+
* Returns an include-guarded declaration of the `vPartIndex` varying shared by the Gaussian
|
|
42
|
+
* Splatting material plugins (debug, solid-color, GPU picking). More than one of these plugins can
|
|
43
|
+
* be attached to the same material at once; each needs `vPartIndex` to carry `splat.partIndex` from
|
|
44
|
+
* the vertex to the fragment stage. Without a guard each plugin injects its own `varying vPartIndex`,
|
|
45
|
+
* which is a duplicate declaration — fatal under WGSL ("redefinition of 'vPartIndex'"). The guard
|
|
46
|
+
* makes the declaration idempotent so exactly one survives regardless of how many plugins inject it.
|
|
47
|
+
* Inject the result at a CUSTOM_VERTEX_DEFINITIONS / CUSTOM_FRAGMENT_DEFINITIONS point.
|
|
48
|
+
* @param shaderLanguage - The shader language the host material is compiling.
|
|
49
|
+
* @returns The guarded `vPartIndex` varying declaration.
|
|
50
|
+
*/
|
|
51
|
+
export function GetPartIndexVaryingDeclaration(shaderLanguage) {
|
|
52
|
+
const decl = shaderLanguage === 1 /* ShaderLanguage.WGSL */ ? "varying vPartIndex: f32;" : "varying float vPartIndex;";
|
|
53
|
+
return `
|
|
54
|
+
#if !defined(VPARTINDEX_VARYING_DECLARED)
|
|
55
|
+
#define VPARTINDEX_VARYING_DECLARED
|
|
56
|
+
${decl}
|
|
57
|
+
#endif
|
|
58
|
+
`;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* @internal
|
|
62
|
+
*/
|
|
63
|
+
class GaussianSplattingMaterialDefinesBase extends PrepassDefinesMixin(MaterialDefines) {
|
|
64
|
+
}
|
|
36
65
|
/**
|
|
37
66
|
* @internal
|
|
38
67
|
*/
|
|
39
|
-
class GaussianSplattingMaterialDefines extends
|
|
68
|
+
class GaussianSplattingMaterialDefines extends GaussianSplattingMaterialDefinesBase {
|
|
40
69
|
/**
|
|
41
70
|
* Constructor of the defines.
|
|
42
71
|
* @param externalProperties External properties (e.g. from material plugins) to add to the defines.
|
|
@@ -108,6 +137,10 @@ export class GaussianSplattingMaterial extends PushMaterial {
|
|
|
108
137
|
// set to true when material defines are dirty
|
|
109
138
|
this._isDirty = false;
|
|
110
139
|
this._sourceMesh = null;
|
|
140
|
+
this._inverseProjection = Matrix.Identity();
|
|
141
|
+
this._geometryProjectionUpdateFlag = -1;
|
|
142
|
+
this._partMotionHistory = new Map();
|
|
143
|
+
this._renderPassObserver = null;
|
|
111
144
|
this._voxelMissingTextureWarned = new Set();
|
|
112
145
|
this._voxelPartWorldData = new Float32Array(0);
|
|
113
146
|
this._voxelPartVisibilityData = [];
|
|
@@ -147,6 +180,16 @@ export class GaussianSplattingMaterial extends PushMaterial {
|
|
|
147
180
|
needAlphaBlending() {
|
|
148
181
|
return true;
|
|
149
182
|
}
|
|
183
|
+
static _BindViewportAndFocal(effect, camera, renderWidth, renderHeight, invViewportWidth = renderWidth) {
|
|
184
|
+
effect.setFloat2("invViewport", 1 / invViewportWidth, 1 / renderHeight);
|
|
185
|
+
if (camera) {
|
|
186
|
+
const projection = camera.getProjectionMatrix();
|
|
187
|
+
effect.setFloat2("focal", (renderWidth * projection.m[0]) / 2, (renderHeight * projection.m[5]) / 2);
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
effect.setFloat2("focal", 1000, 1000);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
150
193
|
/**
|
|
151
194
|
* Checks whether the material is ready to be rendered for a given mesh.
|
|
152
195
|
* @param mesh The mesh to render
|
|
@@ -190,6 +233,7 @@ export class GaussianSplattingMaterial extends PushMaterial {
|
|
|
190
233
|
}
|
|
191
234
|
const engine = scene.getEngine();
|
|
192
235
|
const gsMesh = this._sourceMesh;
|
|
236
|
+
MaterialHelperGeometryRendering.PrepareDefines(engine.currentRenderPassId, gsMesh, defines);
|
|
193
237
|
// Misc.
|
|
194
238
|
PrepareDefinesForMisc(mesh, scene, this._useLogarithmicDepth, this.pointsCloud, this.fogEnabled, false, defines, undefined, undefined, undefined, this._isVertexOutputInvariant);
|
|
195
239
|
// Values that need to be evaluated on every frame
|
|
@@ -208,6 +252,13 @@ export class GaussianSplattingMaterial extends PushMaterial {
|
|
|
208
252
|
}
|
|
209
253
|
defines["IS_COMPOUND"] = gsMesh.isCompound;
|
|
210
254
|
defines["MAX_PART_COUNT"] = GetGaussianSplattingMaxPartCount(engine);
|
|
255
|
+
if (gsMesh.isCompound && (defines.PREPASS_VELOCITY || defines.PREPASS_VELOCITY_LINEAR)) {
|
|
256
|
+
// Reserve the regular 40 vectors plus projection/history matrices and the depth range.
|
|
257
|
+
defines.MAX_PART_COUNT = Math.min(defines.MAX_PART_COUNT, Math.max(1, Math.floor((engine.getCaps().maxVertexUniformVectors - 53) / 9)));
|
|
258
|
+
if (gsMesh.partCount > defines.MAX_PART_COUNT) {
|
|
259
|
+
throw new Error(`GaussianSplattingMaterial "${this.name}": geometry velocity supports at most ${defines.MAX_PART_COUNT} compound parts on this engine`);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
211
262
|
defines["USE_SOG"] = gsMesh.useSog;
|
|
212
263
|
defines["USE_SOG_V2"] = gsMesh.useSog && gsMesh.sogParams?.version === 2;
|
|
213
264
|
// Compensation
|
|
@@ -223,6 +274,7 @@ export class GaussianSplattingMaterial extends PushMaterial {
|
|
|
223
274
|
const uniforms = GaussianSplattingMaterial._Uniforms.slice();
|
|
224
275
|
const samplers = GaussianSplattingMaterial._Samplers.slice();
|
|
225
276
|
const uniformBuffers = GaussianSplattingMaterial._UniformBuffers.slice();
|
|
277
|
+
MaterialHelperGeometryRendering.AddUniformsAndSamplers(uniforms, samplers);
|
|
226
278
|
PrepareUniformsAndSamplersList({
|
|
227
279
|
uniformsNames: uniforms,
|
|
228
280
|
uniformBuffersNames: uniformBuffers,
|
|
@@ -253,8 +305,9 @@ export class GaussianSplattingMaterial extends PushMaterial {
|
|
|
253
305
|
defines: join,
|
|
254
306
|
onCompiled: this.onCompiled,
|
|
255
307
|
onError: this.onError,
|
|
256
|
-
indexParameters: {},
|
|
308
|
+
indexParameters: { SCENE_MRT_COUNT: defines.SCENE_MRT_COUNT },
|
|
257
309
|
processCodeAfterIncludes: this._eventInfo.customCode,
|
|
310
|
+
multiTarget: defines.PREPASS,
|
|
258
311
|
shaderLanguage: this._shaderLanguage,
|
|
259
312
|
extraInitializationsAsync: async () => {
|
|
260
313
|
if (this._shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
|
|
@@ -281,6 +334,9 @@ export class GaussianSplattingMaterial extends PushMaterial {
|
|
|
281
334
|
* @param mesh mesh this material belongs to
|
|
282
335
|
*/
|
|
283
336
|
setSourceMesh(mesh) {
|
|
337
|
+
if (this._sourceMesh !== mesh) {
|
|
338
|
+
this._partMotionHistory.clear();
|
|
339
|
+
}
|
|
284
340
|
this._sourceMesh = mesh;
|
|
285
341
|
}
|
|
286
342
|
/**
|
|
@@ -299,37 +355,20 @@ export class GaussianSplattingMaterial extends PushMaterial {
|
|
|
299
355
|
static BindEffect(mesh, effect, scene) {
|
|
300
356
|
const engine = scene.getEngine();
|
|
301
357
|
const camera = scene.activeCamera;
|
|
302
|
-
const renderWidth = engine.getRenderWidth() * camera
|
|
303
|
-
const renderHeight = engine.getRenderHeight() * camera
|
|
304
|
-
const
|
|
305
|
-
|
|
358
|
+
const renderWidth = engine.getRenderWidth() * (camera?.viewport.width ?? 1);
|
|
359
|
+
const renderHeight = engine.getRenderHeight() * (camera?.viewport.height ?? 1);
|
|
360
|
+
const material = mesh.material;
|
|
361
|
+
const gsMaterial = material instanceof GaussianSplattingMaterial ? material : null;
|
|
362
|
+
const gsMesh = gsMaterial?._sourceMesh ?? mesh.reservedDataStore?._gaussianSplattingSourceMesh;
|
|
363
|
+
if (!gsMesh) {
|
|
306
364
|
return;
|
|
307
365
|
}
|
|
308
|
-
const gsMesh = gsMaterial._sourceMesh;
|
|
309
366
|
// check if rigcamera, get number of rigs
|
|
310
367
|
const numberOfRigs = camera?.rigParent?.rigCameras.length || 1;
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
if (camera) {
|
|
314
|
-
/*
|
|
315
|
-
more explicit version:
|
|
316
|
-
const t = camera.getProjectionMatrix().m[5];
|
|
317
|
-
const FovY = Math.atan(1.0 / t) * 2.0;
|
|
318
|
-
focal = renderHeight / 2.0 / Math.tan(FovY / 2.0);
|
|
319
|
-
Using a shorter version here to not have tan(atan) and 2.0 factor
|
|
320
|
-
*/
|
|
321
|
-
const t = camera.getProjectionMatrix().m[5];
|
|
322
|
-
if (camera.fovMode == Camera.FOVMODE_VERTICAL_FIXED) {
|
|
323
|
-
focal = (renderHeight * t) / 2.0;
|
|
324
|
-
}
|
|
325
|
-
else {
|
|
326
|
-
focal = (renderWidth * t) / 2.0;
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
effect.setFloat2("focal", focal, focal);
|
|
330
|
-
effect.setFloat("kernelSize", gsMaterial && gsMaterial.kernelSize ? gsMaterial.kernelSize : GaussianSplattingMaterial.KernelSize);
|
|
368
|
+
GaussianSplattingMaterial._BindViewportAndFocal(effect, camera, renderWidth, renderHeight, renderWidth / numberOfRigs);
|
|
369
|
+
effect.setFloat("kernelSize", gsMaterial?.kernelSize || GaussianSplattingMaterial.KernelSize);
|
|
331
370
|
effect.setFloat("minPixelSize", gsMaterial ? gsMaterial.minPixelSize : GaussianSplattingMaterial.MinPixelSize);
|
|
332
|
-
effect.setFloat("alpha",
|
|
371
|
+
effect.setFloat("alpha", material?.alpha ?? 1);
|
|
333
372
|
scene.bindEyePosition(effect, "eyePosition", true);
|
|
334
373
|
if (gsMesh.covariancesATexture) {
|
|
335
374
|
const textureSize = gsMesh.covariancesATexture.getSize();
|
|
@@ -350,6 +389,84 @@ export class GaussianSplattingMaterial extends PushMaterial {
|
|
|
350
389
|
gsMesh.bindExtraEffectUniforms(effect);
|
|
351
390
|
}
|
|
352
391
|
}
|
|
392
|
+
_bindGeometryRendering(effect, defines, mustRebind) {
|
|
393
|
+
const sourceMesh = this._sourceMesh;
|
|
394
|
+
if (!sourceMesh || !defines.PREPASS) {
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
397
|
+
const scene = this.getScene();
|
|
398
|
+
const engine = scene.getEngine();
|
|
399
|
+
const renderPassId = engine.currentRenderPassId;
|
|
400
|
+
const configuration = MaterialHelperGeometryRendering.GetConfiguration(renderPassId);
|
|
401
|
+
if (!configuration) {
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
404
|
+
MaterialHelperGeometryRendering.Bind(renderPassId, effect, sourceMesh, sourceMesh.getWorldMatrix(), this);
|
|
405
|
+
MaterialHelperGeometryRendering._BindZeroAlphaDiscard(engine, effect);
|
|
406
|
+
const camera = scene.activeCamera;
|
|
407
|
+
if (camera) {
|
|
408
|
+
if (defines.PREPASS_POSITION || defines.PREPASS_LOCAL_POSITION || defines.PREPASS_VELOCITY || defines.PREPASS_VELOCITY_LINEAR) {
|
|
409
|
+
const projection = camera.getProjectionMatrix();
|
|
410
|
+
if (projection.updateFlag !== this._geometryProjectionUpdateFlag) {
|
|
411
|
+
projection.invertToRef(this._inverseProjection);
|
|
412
|
+
this._geometryProjectionUpdateFlag = projection.updateFlag;
|
|
413
|
+
}
|
|
414
|
+
effect.setMatrix("inverseProjection", this._inverseProjection);
|
|
415
|
+
}
|
|
416
|
+
if (defines.PREPASS_NORMALIZED_VIEW_DEPTH) {
|
|
417
|
+
effect.setFloat2("geometryDepthRange", camera.minZ, camera.maxZ);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
if (!mustRebind) {
|
|
421
|
+
sourceMesh.bindExtraEffectUniforms(effect);
|
|
422
|
+
}
|
|
423
|
+
if (!sourceMesh.isCompound || (!defines.PREPASS_VELOCITY && !defines.PREPASS_VELOCITY_LINEAR)) {
|
|
424
|
+
return;
|
|
425
|
+
}
|
|
426
|
+
const partCount = sourceMesh.partCount;
|
|
427
|
+
let history = this._partMotionHistory.get(renderPassId);
|
|
428
|
+
if (!history || history.configuration !== configuration || history.currentPartWorldMatrices.length !== partCount) {
|
|
429
|
+
if (partCount > defines.MAX_PART_COUNT) {
|
|
430
|
+
throw new Error(`GaussianSplattingMaterial "${this.name}": geometry velocity supports at most ${defines.MAX_PART_COUNT} compound parts on this engine`);
|
|
431
|
+
}
|
|
432
|
+
const currentPartWorldMatrices = new Array(partCount);
|
|
433
|
+
for (let i = 0; i < partCount; i++) {
|
|
434
|
+
currentPartWorldMatrices[i] = sourceMesh.getWorldMatrixForPart(i).clone();
|
|
435
|
+
}
|
|
436
|
+
history = {
|
|
437
|
+
configuration,
|
|
438
|
+
currentPartWorldMatrices,
|
|
439
|
+
previousPartWorldData: new Float32Array(partCount * 16),
|
|
440
|
+
lastUpdateFrameId: -1,
|
|
441
|
+
};
|
|
442
|
+
this._partMotionHistory.set(renderPassId, history);
|
|
443
|
+
this._renderPassObserver ?? (this._renderPassObserver = (engine._onReleaseRenderPassObservable ?? (engine._onReleaseRenderPassObservable = new Observable())).add((id) => this._partMotionHistory.delete(id)));
|
|
444
|
+
}
|
|
445
|
+
if (history.lastUpdateFrameId !== engine.frameId) {
|
|
446
|
+
const consecutiveFrame = history.lastUpdateFrameId === engine.frameId - 1;
|
|
447
|
+
for (let i = 0; i < partCount; i++) {
|
|
448
|
+
const previous = consecutiveFrame ? history.currentPartWorldMatrices[i] : sourceMesh.getWorldMatrixForPart(i);
|
|
449
|
+
previous.toArray(history.previousPartWorldData, i * 16);
|
|
450
|
+
}
|
|
451
|
+
history.lastUpdateFrameId = engine.frameId;
|
|
452
|
+
}
|
|
453
|
+
effect.setMatrices("previousPartWorld", history.previousPartWorldData);
|
|
454
|
+
for (let i = 0; i < partCount; i++) {
|
|
455
|
+
history.currentPartWorldMatrices[i].copyFrom(sourceMesh.getWorldMatrixForPart(i));
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Releases the material and its render-pass motion histories.
|
|
460
|
+
* @param forceDisposeEffect whether associated effects should be disposed
|
|
461
|
+
* @param forceDisposeTextures whether associated textures should be disposed
|
|
462
|
+
* @param notBoundToMesh whether mesh references can be left unchanged
|
|
463
|
+
*/
|
|
464
|
+
dispose(forceDisposeEffect, forceDisposeTextures, notBoundToMesh) {
|
|
465
|
+
this.getScene().getEngine()._onReleaseRenderPassObservable?.remove(this._renderPassObserver);
|
|
466
|
+
this._renderPassObserver = null;
|
|
467
|
+
this._partMotionHistory.clear();
|
|
468
|
+
super.dispose(forceDisposeEffect, forceDisposeTextures, notBoundToMesh);
|
|
469
|
+
}
|
|
353
470
|
/**
|
|
354
471
|
* Bind SOG dequantization uniforms + raw textures.
|
|
355
472
|
* @internal
|
|
@@ -413,6 +530,7 @@ export class GaussianSplattingMaterial extends PushMaterial {
|
|
|
413
530
|
else if (scene.getEngine()._features.needToAlwaysBindUniformBuffers) {
|
|
414
531
|
this._needToBindSceneUbo = true;
|
|
415
532
|
}
|
|
533
|
+
this._bindGeometryRendering(effect, defines, mustRebind);
|
|
416
534
|
// Fog
|
|
417
535
|
BindFogParameters(scene, mesh, effect);
|
|
418
536
|
// Log. depth
|
|
@@ -436,25 +554,7 @@ export class GaussianSplattingMaterial extends PushMaterial {
|
|
|
436
554
|
shaderMaterial.bindViewProjection(effect);
|
|
437
555
|
const renderWidth = engine.getRenderWidth() * camera.viewport.width;
|
|
438
556
|
const renderHeight = engine.getRenderHeight() * camera.viewport.height;
|
|
439
|
-
|
|
440
|
-
let focal = 1000;
|
|
441
|
-
if (camera) {
|
|
442
|
-
/*
|
|
443
|
-
more explicit version:
|
|
444
|
-
const t = camera.getProjectionMatrix().m[5];
|
|
445
|
-
const FovY = Math.atan(1.0 / t) * 2.0;
|
|
446
|
-
focal = renderHeight / 2.0 / Math.tan(FovY / 2.0);
|
|
447
|
-
Using a shorter version here to not have tan(atan) and 2.0 factor
|
|
448
|
-
*/
|
|
449
|
-
const t = camera.getProjectionMatrix().m[5];
|
|
450
|
-
if (camera.fovMode == Camera.FOVMODE_VERTICAL_FIXED) {
|
|
451
|
-
focal = (renderHeight * t) / 2.0;
|
|
452
|
-
}
|
|
453
|
-
else {
|
|
454
|
-
focal = (renderWidth * t) / 2.0;
|
|
455
|
-
}
|
|
456
|
-
}
|
|
457
|
-
effect.setFloat2("focal", focal, focal);
|
|
557
|
+
GaussianSplattingMaterial._BindViewportAndFocal(effect, camera, renderWidth, renderHeight);
|
|
458
558
|
effect.setFloat("kernelSize", gsMaterial && gsMaterial.kernelSize ? gsMaterial.kernelSize : GaussianSplattingMaterial.KernelSize);
|
|
459
559
|
effect.setFloat("minPixelSize", gsMaterial ? gsMaterial.minPixelSize : GaussianSplattingMaterial.MinPixelSize);
|
|
460
560
|
effect.setFloat("alpha", gsMaterial.alpha);
|
|
@@ -731,6 +831,7 @@ GaussianSplattingMaterial._Uniforms = [
|
|
|
731
831
|
"world",
|
|
732
832
|
"view",
|
|
733
833
|
"projection",
|
|
834
|
+
"inverseProjection",
|
|
734
835
|
"vFogInfos",
|
|
735
836
|
"vFogColor",
|
|
736
837
|
"logarithmicDepthConstant",
|
|
@@ -742,7 +843,10 @@ GaussianSplattingMaterial._Uniforms = [
|
|
|
742
843
|
"minPixelSize",
|
|
743
844
|
"alpha",
|
|
744
845
|
"depthValues",
|
|
846
|
+
"geometryDepthRange",
|
|
847
|
+
"geometryZeroAlphaDiscard",
|
|
745
848
|
"partWorld",
|
|
849
|
+
"previousPartWorld",
|
|
746
850
|
"partVisibility",
|
|
747
851
|
"sogMeansMin",
|
|
748
852
|
"sogMeansMax",
|