@babylonjs/core 8.1.1 → 8.2.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/Actions/abstractActionManager.d.ts +4 -4
- package/Actions/action.d.ts +9 -9
- package/Actions/actionEvent.d.ts +5 -5
- package/Actions/actionManager.d.ts +6 -6
- package/Actions/condition.d.ts +1 -1
- package/Actions/directActions.d.ts +3 -3
- package/Actions/directAudioActions.d.ts +3 -3
- package/Actions/index.d.ts +8 -8
- package/Actions/interpolateValueAction.d.ts +3 -3
- package/Animations/animatable.core.d.ts +2 -2
- package/Animations/animatable.d.ts +8 -8
- package/Animations/animatable.interface.d.ts +2 -2
- package/Animations/animation.d.ts +13 -13
- package/Animations/animationGroup.d.ts +8 -8
- package/Animations/animationKey.d.ts +1 -1
- package/Animations/index.d.ts +12 -12
- package/Animations/pathCursor.d.ts +2 -2
- package/Animations/runtimeAnimation.d.ts +4 -4
- package/Audio/Interfaces/IAudioEngine.d.ts +4 -4
- package/Audio/analyser.d.ts +2 -2
- package/Audio/audioEngine.d.ts +4 -4
- package/Audio/audioSceneComponent.d.ts +8 -8
- package/Audio/index.d.ts +8 -8
- package/Audio/sound.d.ts +6 -6
- package/Audio/soundTrack.d.ts +4 -4
- package/Audio/weightedsound.d.ts +1 -1
- package/AudioV2/abstractAudio/abstractAudioBus.d.ts +5 -5
- package/AudioV2/abstractAudio/abstractAudioNode.d.ts +2 -2
- package/AudioV2/abstractAudio/abstractSound.d.ts +12 -12
- package/AudioV2/abstractAudio/abstractSound.js +1 -1
- package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
- package/AudioV2/abstractAudio/abstractSoundInstance.d.ts +4 -4
- package/AudioV2/abstractAudio/audioBus.d.ts +7 -7
- package/AudioV2/abstractAudio/audioEngineV2.d.ts +8 -8
- package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.d.ts +5 -5
- package/AudioV2/abstractAudio/index.d.ts +10 -10
- package/AudioV2/abstractAudio/mainAudioBus.d.ts +3 -3
- package/AudioV2/abstractAudio/mainAudioOut.d.ts +2 -2
- package/AudioV2/abstractAudio/staticSound.d.ts +5 -5
- package/AudioV2/abstractAudio/staticSoundBuffer.d.ts +1 -1
- package/AudioV2/abstractAudio/staticSoundInstance.d.ts +3 -3
- package/AudioV2/abstractAudio/streamingSound.d.ts +4 -4
- package/AudioV2/abstractAudio/streamingSoundInstance.d.ts +4 -4
- package/AudioV2/abstractAudio/subNodes/abstractAudioSubGraph.d.ts +3 -3
- package/AudioV2/abstractAudio/subNodes/abstractAudioSubNode.d.ts +2 -2
- package/AudioV2/abstractAudio/subNodes/audioAnalyzerSubNode.d.ts +6 -6
- package/AudioV2/abstractAudio/subNodes/spatialAudioSubNode.d.ts +9 -9
- package/AudioV2/abstractAudio/subNodes/stereoAudioSubNode.d.ts +6 -6
- package/AudioV2/abstractAudio/subNodes/volumeAudioSubNode.d.ts +4 -4
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.d.ts +4 -4
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.d.ts +4 -4
- package/AudioV2/abstractAudio/subProperties/audioAnalyzer.d.ts +3 -3
- package/AudioV2/abstractAudio/subProperties/index.d.ts +4 -4
- package/AudioV2/abstractAudio/subProperties/spatialAudio.d.ts +6 -6
- package/AudioV2/abstractAudio/subProperties/spatialAudioListener.d.ts +6 -6
- package/AudioV2/abstractAudio/subProperties/stereoAudio.d.ts +2 -2
- package/AudioV2/index.d.ts +4 -4
- package/AudioV2/webAudio/index.d.ts +5 -5
- package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.d.ts +4 -4
- package/AudioV2/webAudio/subNodes/stereoWebAudioSubNode.d.ts +3 -3
- package/AudioV2/webAudio/subNodes/volumeWebAudioSubNode.d.ts +3 -3
- package/AudioV2/webAudio/subNodes/webAudioAnalyzerSubNode.d.ts +4 -4
- package/AudioV2/webAudio/subNodes/webAudioBaseSubGraph.d.ts +7 -7
- package/AudioV2/webAudio/subNodes/webAudioBusAndSoundSubGraph.d.ts +7 -7
- package/AudioV2/webAudio/subProperties/spatialWebAudio.d.ts +2 -2
- package/AudioV2/webAudio/subProperties/spatialWebAudioListener.d.ts +2 -2
- package/AudioV2/webAudio/webAudioBus.d.ts +7 -7
- package/AudioV2/webAudio/webAudioEngine.d.ts +11 -11
- package/AudioV2/webAudio/webAudioMainBus.d.ts +6 -6
- package/AudioV2/webAudio/webAudioMainOut.d.ts +3 -3
- package/AudioV2/webAudio/webAudioNode.d.ts +4 -4
- package/AudioV2/webAudio/webAudioStaticSound.d.ts +13 -13
- package/AudioV2/webAudio/webAudioStreamingSound.d.ts +10 -10
- package/AudioV2/webAudio/webAudioUnmuteUI.d.ts +1 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +5 -5
- package/BakedVertexAnimation/index.d.ts +2 -2
- package/BakedVertexAnimation/vertexAnimationBaker.d.ts +4 -4
- package/Behaviors/Cameras/autoRotationBehavior.d.ts +3 -3
- package/Behaviors/Cameras/bouncingBehavior.d.ts +3 -3
- package/Behaviors/Cameras/framingBehavior.d.ts +7 -7
- package/Behaviors/Cameras/index.d.ts +3 -3
- package/Behaviors/Meshes/attachToBoxBehavior.d.ts +3 -3
- package/Behaviors/Meshes/baseSixDofDragBehavior.d.ts +9 -9
- package/Behaviors/Meshes/fadeInOutBehavior.d.ts +2 -2
- package/Behaviors/Meshes/followBehavior.d.ts +4 -4
- package/Behaviors/Meshes/handConstraintBehavior.d.ts +4 -4
- package/Behaviors/Meshes/index.d.ts +9 -9
- package/Behaviors/Meshes/multiPointerScaleBehavior.d.ts +2 -2
- package/Behaviors/Meshes/pointerDragBehavior.d.ts +8 -8
- package/Behaviors/Meshes/sixDofDragBehavior.d.ts +4 -4
- package/Behaviors/Meshes/surfaceMagnetismBehavior.d.ts +5 -5
- package/Behaviors/behavior.d.ts +1 -1
- package/Behaviors/index.d.ts +3 -3
- package/Bones/bone.d.ts +8 -8
- package/Bones/boneIKController.d.ts +4 -4
- package/Bones/boneLookController.d.ts +4 -4
- package/Bones/index.d.ts +4 -4
- package/Bones/skeleton.d.ts +13 -13
- package/Buffers/buffer.align.d.ts +2 -2
- package/Buffers/buffer.d.ts +3 -3
- package/Buffers/buffer.nonFloatVertexBuffers.d.ts +3 -3
- package/Buffers/bufferUtils.d.ts +1 -1
- package/Buffers/index.d.ts +5 -5
- package/Buffers/storageBuffer.d.ts +2 -2
- package/Cameras/Inputs/BaseCameraMouseWheelInput.d.ts +3 -3
- package/Cameras/Inputs/BaseCameraPointersInput.d.ts +5 -5
- package/Cameras/Inputs/arcRotateCameraGamepadInput.d.ts +4 -4
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.d.ts +2 -2
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.d.ts +4 -4
- package/Cameras/Inputs/arcRotateCameraPointersInput.d.ts +5 -5
- package/Cameras/Inputs/arcRotateCameraVRDeviceOrientationInput.d.ts +3 -3
- package/Cameras/Inputs/flyCameraKeyboardInput.d.ts +2 -2
- package/Cameras/Inputs/flyCameraMouseInput.d.ts +2 -2
- package/Cameras/Inputs/followCameraKeyboardMoveInput.d.ts +2 -2
- package/Cameras/Inputs/followCameraMouseWheelInput.d.ts +2 -2
- package/Cameras/Inputs/followCameraPointersInput.d.ts +4 -4
- package/Cameras/Inputs/freeCameraDeviceOrientationInput.d.ts +5 -5
- package/Cameras/Inputs/freeCameraGamepadInput.d.ts +4 -4
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.d.ts +2 -2
- package/Cameras/Inputs/freeCameraMouseInput.d.ts +3 -3
- package/Cameras/Inputs/freeCameraMouseWheelInput.d.ts +4 -4
- package/Cameras/Inputs/freeCameraTouchInput.d.ts +2 -2
- package/Cameras/Inputs/freeCameraVirtualJoystickInput.d.ts +4 -4
- package/Cameras/Inputs/index.d.ts +19 -19
- package/Cameras/RigModes/index.d.ts +3 -3
- package/Cameras/RigModes/stereoscopicAnaglyphRigMode.d.ts +1 -1
- package/Cameras/RigModes/stereoscopicRigMode.d.ts +1 -1
- package/Cameras/RigModes/vrRigMode.d.ts +1 -1
- package/Cameras/Stereoscopic/anaglyphArcRotateCamera.d.ts +3 -3
- package/Cameras/Stereoscopic/anaglyphFreeCamera.d.ts +3 -3
- package/Cameras/Stereoscopic/anaglyphGamepadCamera.d.ts +3 -3
- package/Cameras/Stereoscopic/anaglyphUniversalCamera.d.ts +3 -3
- package/Cameras/Stereoscopic/index.d.ts +9 -9
- package/Cameras/Stereoscopic/stereoscopicArcRotateCamera.d.ts +3 -3
- package/Cameras/Stereoscopic/stereoscopicFreeCamera.d.ts +3 -3
- package/Cameras/Stereoscopic/stereoscopicGamepadCamera.d.ts +3 -3
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.d.ts +5 -5
- package/Cameras/Stereoscopic/stereoscopicUniversalCamera.d.ts +3 -3
- package/Cameras/VR/index.d.ts +5 -5
- package/Cameras/VR/vrCameraMetrics.d.ts +1 -1
- package/Cameras/VR/vrDeviceOrientationArcRotateCamera.d.ts +5 -5
- package/Cameras/VR/vrDeviceOrientationFreeCamera.d.ts +4 -4
- package/Cameras/VR/vrDeviceOrientationGamepadCamera.d.ts +5 -5
- package/Cameras/VR/vrExperienceHelper.d.ts +15 -15
- package/Cameras/arcRotateCamera.d.ts +12 -12
- package/Cameras/arcRotateCameraInputsManager.d.ts +2 -2
- package/Cameras/camera.d.ts +16 -16
- package/Cameras/cameraInputsManager.d.ts +2 -2
- package/Cameras/deviceOrientationCamera.d.ts +5 -5
- package/Cameras/flyCamera.d.ts +6 -6
- package/Cameras/flyCameraInputsManager.d.ts +2 -2
- package/Cameras/followCamera.d.ts +6 -6
- package/Cameras/followCameraInputsManager.d.ts +2 -2
- package/Cameras/freeCamera.d.ts +5 -5
- package/Cameras/freeCameraInputsManager.d.ts +5 -5
- package/Cameras/gamepadCamera.d.ts +3 -3
- package/Cameras/index.d.ts +20 -20
- package/Cameras/targetCamera.d.ts +4 -4
- package/Cameras/touchCamera.d.ts +3 -3
- package/Cameras/universalCamera.d.ts +4 -4
- package/Cameras/virtualJoysticksCamera.d.ts +4 -4
- package/Collisions/collider.d.ts +4 -4
- package/Collisions/collisionCoordinator.d.ts +5 -5
- package/Collisions/index.d.ts +10 -10
- package/Collisions/intersectionInfo.d.ts +1 -1
- package/Collisions/meshCollisionData.d.ts +5 -5
- package/Collisions/pickingInfo.d.ts +6 -6
- package/Compat/index.d.ts +1 -1
- package/Compute/computeEffect.d.ts +4 -4
- package/Compute/computeShader.d.ts +8 -8
- package/Compute/index.d.ts +2 -2
- package/Culling/Helper/computeShaderBoundingHelper.d.ts +2 -2
- package/Culling/Helper/transformFeedbackBoundingHelper.d.ts +3 -3
- package/Culling/Octrees/index.d.ts +3 -3
- package/Culling/Octrees/octree.d.ts +7 -7
- package/Culling/Octrees/octreeBlock.d.ts +4 -4
- package/Culling/Octrees/octreeSceneComponent.d.ts +9 -9
- package/Culling/boundingBox.d.ts +6 -6
- package/Culling/boundingInfo.d.ts +7 -7
- package/Culling/boundingSphere.d.ts +3 -3
- package/Culling/index.d.ts +8 -8
- package/Culling/ray.core.d.ts +4 -4
- package/Culling/ray.core.js +1 -1
- package/Culling/ray.core.js.map +1 -1
- package/Culling/ray.d.ts +1 -1
- package/Debug/ISkeletonViewer.d.ts +2 -2
- package/Debug/axesViewer.d.ts +4 -4
- package/Debug/boneAxesViewer.d.ts +6 -6
- package/Debug/debugLayer.d.ts +4 -4
- package/Debug/debugLayer.js +8 -1
- package/Debug/debugLayer.js.map +1 -1
- package/Debug/directionalLightFrustumViewer.d.ts +3 -3
- package/Debug/index.d.ts +8 -8
- package/Debug/physicsViewer.d.ts +11 -11
- package/Debug/rayHelper.d.ts +6 -6
- package/Debug/skeletonViewer.d.ts +9 -9
- package/Decorators/nodeDecorator.d.ts +2 -2
- package/DeviceInput/InputDevices/deviceSource.d.ts +5 -5
- package/DeviceInput/InputDevices/deviceSourceManager.d.ts +8 -8
- package/DeviceInput/InputDevices/deviceTypes.d.ts +1 -1
- package/DeviceInput/eventFactory.d.ts +4 -4
- package/DeviceInput/index.d.ts +4 -4
- package/DeviceInput/inputInterfaces.d.ts +2 -2
- package/DeviceInput/internalDeviceSourceManager.d.ts +8 -8
- package/DeviceInput/nativeDeviceInputSystem.d.ts +3 -3
- package/DeviceInput/webDeviceInputSystem.d.ts +4 -4
- package/Engines/AbstractEngine/abstractEngine.alpha.d.ts +1 -1
- package/Engines/AbstractEngine/abstractEngine.cubeTexture.d.ts +4 -4
- package/Engines/AbstractEngine/abstractEngine.dom.d.ts +3 -3
- package/Engines/AbstractEngine/abstractEngine.loadingScreen.d.ts +2 -2
- package/Engines/AbstractEngine/abstractEngine.query.d.ts +3 -3
- package/Engines/AbstractEngine/abstractEngine.renderPass.d.ts +1 -1
- package/Engines/AbstractEngine/abstractEngine.states.d.ts +3 -3
- package/Engines/AbstractEngine/abstractEngine.texture.d.ts +4 -4
- package/Engines/AbstractEngine/abstractEngine.timeQuery.d.ts +3 -3
- package/Engines/AbstractEngine/abstractEngine.views.d.ts +4 -4
- package/Engines/AbstractEngine/index.d.ts +10 -10
- package/Engines/Extensions/engine.alpha.d.ts +1 -1
- package/Engines/Extensions/engine.computeShader.d.ts +7 -7
- package/Engines/Extensions/engine.cubeTexture.d.ts +5 -5
- package/Engines/Extensions/engine.debugging.d.ts +1 -1
- package/Engines/Extensions/engine.dynamicBuffer.d.ts +3 -3
- package/Engines/Extensions/engine.dynamicTexture.d.ts +4 -4
- package/Engines/Extensions/engine.multiRender.d.ts +5 -5
- package/Engines/Extensions/engine.multiview.d.ts +9 -9
- package/Engines/Extensions/engine.prefilteredCubeTexture.d.ts +4 -4
- package/Engines/Extensions/engine.query.d.ts +7 -7
- package/Engines/Extensions/engine.rawTexture.d.ts +4 -4
- package/Engines/Extensions/engine.readTexture.d.ts +4 -4
- package/Engines/Extensions/engine.renderTarget.d.ts +6 -6
- package/Engines/Extensions/engine.renderTargetCube.d.ts +3 -3
- package/Engines/Extensions/engine.renderTargetTexture.d.ts +3 -3
- package/Engines/Extensions/engine.textureSelector.d.ts +2 -2
- package/Engines/Extensions/engine.transformFeedback.d.ts +3 -3
- package/Engines/Extensions/engine.uniformBuffer.d.ts +4 -4
- package/Engines/Extensions/engine.videoTexture.d.ts +4 -4
- package/Engines/Extensions/engine.views.d.ts +1 -1
- package/Engines/Extensions/index.d.ts +20 -20
- package/Engines/IPipelineContext.d.ts +4 -4
- package/Engines/Native/index.d.ts +2 -2
- package/Engines/Native/nativeDataStream.d.ts +1 -1
- package/Engines/Native/nativeHardwareTexture.d.ts +3 -3
- package/Engines/Native/nativeInterfaces.d.ts +6 -6
- package/Engines/Native/nativePipelineContext.d.ts +8 -8
- package/Engines/Native/nativeRenderTargetWrapper.d.ts +5 -5
- package/Engines/Native/nativeShaderProcessingContext.d.ts +1 -1
- package/Engines/Native/nativeShaderProcessors.d.ts +4 -4
- package/Engines/Native/validatedNativeDataStream.d.ts +2 -2
- package/Engines/Processors/Expressions/Operators/index.d.ts +4 -4
- package/Engines/Processors/Expressions/Operators/shaderDefineAndOperator.d.ts +1 -1
- package/Engines/Processors/Expressions/Operators/shaderDefineArithmeticOperator.d.ts +1 -1
- package/Engines/Processors/Expressions/Operators/shaderDefineArithmeticOperator.js +2 -6
- package/Engines/Processors/Expressions/Operators/shaderDefineArithmeticOperator.js.map +1 -1
- package/Engines/Processors/Expressions/Operators/shaderDefineIsDefinedOperator.d.ts +1 -1
- package/Engines/Processors/Expressions/Operators/shaderDefineOrOperator.d.ts +1 -1
- package/Engines/Processors/Expressions/index.d.ts +2 -2
- package/Engines/Processors/iShaderProcessor.d.ts +8 -4
- package/Engines/Processors/iShaderProcessor.js.map +1 -1
- package/Engines/Processors/index.d.ts +9 -9
- package/Engines/Processors/shaderCodeConditionNode.d.ts +5 -3
- package/Engines/Processors/shaderCodeConditionNode.js +2 -2
- package/Engines/Processors/shaderCodeConditionNode.js.map +1 -1
- package/Engines/Processors/shaderCodeNode.d.ts +4 -2
- package/Engines/Processors/shaderCodeNode.js +3 -2
- package/Engines/Processors/shaderCodeNode.js.map +1 -1
- package/Engines/Processors/shaderCodeTestNode.d.ts +2 -2
- package/Engines/Processors/shaderProcessingOptions.d.ts +2 -2
- package/Engines/Processors/shaderProcessor.d.ts +6 -6
- package/Engines/Processors/shaderProcessor.js +16 -14
- package/Engines/Processors/shaderProcessor.js.map +1 -1
- package/Engines/WebGL/webGL2ShaderProcessors.d.ts +2 -2
- package/Engines/WebGL/webGLHardwareTexture.d.ts +2 -2
- package/Engines/WebGL/webGLPipelineContext.d.ts +6 -6
- package/Engines/WebGL/webGLRenderTargetWrapper.d.ts +5 -5
- package/Engines/WebGL/webGLShaderProcessors.d.ts +4 -4
- package/Engines/WebGPU/Extensions/engine.alpha.d.ts +2 -2
- package/Engines/WebGPU/Extensions/engine.computeShader.d.ts +7 -7
- package/Engines/WebGPU/Extensions/engine.cubeTexture.d.ts +5 -5
- package/Engines/WebGPU/Extensions/engine.dynamicTexture.d.ts +4 -4
- package/Engines/WebGPU/Extensions/engine.multiRender.d.ts +5 -5
- package/Engines/WebGPU/Extensions/engine.query.d.ts +1 -1
- package/Engines/WebGPU/Extensions/engine.rawTexture.d.ts +4 -4
- package/Engines/WebGPU/Extensions/engine.readTexture.d.ts +3 -3
- package/Engines/WebGPU/Extensions/engine.renderTarget.d.ts +6 -6
- package/Engines/WebGPU/Extensions/engine.renderTargetCube.d.ts +3 -3
- package/Engines/WebGPU/Extensions/engine.renderTargetTexture.d.ts +3 -3
- package/Engines/WebGPU/Extensions/engine.videoTexture.d.ts +4 -4
- package/Engines/WebGPU/Extensions/index.d.ts +13 -13
- package/Engines/WebGPU/webgpuBufferManager.d.ts +4 -4
- package/Engines/WebGPU/webgpuBundleList.d.ts +1 -1
- package/Engines/WebGPU/webgpuCacheBindGroups.d.ts +5 -5
- package/Engines/WebGPU/webgpuCacheRenderPipeline.d.ts +5 -5
- package/Engines/WebGPU/webgpuCacheRenderPipelineString.d.ts +2 -2
- package/Engines/WebGPU/webgpuCacheRenderPipelineTree.d.ts +2 -2
- package/Engines/WebGPU/webgpuCacheSampler.d.ts +2 -2
- package/Engines/WebGPU/webgpuClearQuad.d.ts +7 -7
- package/Engines/WebGPU/webgpuComputeContext.d.ts +3 -3
- package/Engines/WebGPU/webgpuComputePipelineContext.d.ts +3 -3
- package/Engines/WebGPU/webgpuDepthCullingState.d.ts +3 -3
- package/Engines/WebGPU/webgpuDrawContext.d.ts +4 -4
- package/Engines/WebGPU/webgpuExternalTexture.d.ts +1 -1
- package/Engines/WebGPU/webgpuHardwareTexture.d.ts +3 -3
- package/Engines/WebGPU/webgpuMaterialContext.d.ts +5 -5
- package/Engines/WebGPU/webgpuOcclusionQuery.d.ts +2 -2
- package/Engines/WebGPU/webgpuPerfCounter.d.ts +1 -1
- package/Engines/WebGPU/webgpuPipelineContext.d.ts +8 -8
- package/Engines/WebGPU/webgpuQuerySet.d.ts +3 -3
- package/Engines/WebGPU/webgpuRenderTargetWrapper.d.ts +4 -4
- package/Engines/WebGPU/webgpuShaderProcessingContext.d.ts +2 -2
- package/Engines/WebGPU/webgpuShaderProcessor.d.ts +4 -4
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.d.ts +5 -5
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.d.ts +22 -18
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +64 -21
- package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
- package/Engines/WebGPU/webgpuSnapshotRendering.d.ts +2 -2
- package/Engines/WebGPU/webgpuStencilStateComposer.d.ts +2 -2
- package/Engines/WebGPU/webgpuTextureHelper.d.ts +2 -2
- package/Engines/WebGPU/webgpuTextureManager.d.ts +6 -6
- package/Engines/WebGPU/webgpuTimestampQuery.d.ts +4 -4
- package/Engines/abstractEngine.d.ts +41 -41
- package/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.js.map +1 -1
- package/Engines/engine.common.d.ts +3 -3
- package/Engines/engine.d.ts +30 -30
- package/Engines/engineFactory.d.ts +1 -1
- package/Engines/engineStore.d.ts +4 -4
- package/Engines/index.d.ts +39 -39
- package/Engines/nativeEngine.d.ts +27 -27
- package/Engines/nullEngine.d.ts +13 -13
- package/Engines/renderTargetWrapper.d.ts +4 -4
- package/Engines/shaderStore.d.ts +1 -1
- package/Engines/thinEngine.d.ts +27 -27
- package/Engines/thinEngine.functions.d.ts +5 -5
- package/Engines/thinWebGPUEngine.d.ts +8 -8
- package/Engines/webgpuEngine.d.ts +48 -48
- package/Events/deviceInputEvents.d.ts +1 -1
- package/Events/index.d.ts +4 -4
- package/Events/keyboardEvents.d.ts +1 -1
- package/Events/pointerEvents.d.ts +6 -6
- package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.d.ts +12 -7
- package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.js +26 -7
- package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.js.map +1 -1
- package/FlowGraph/Blocks/Data/Math/flowGraphMathCombineExtractBlocks.d.ts +1 -1
- package/FlowGraph/Blocks/Data/Math/flowGraphMatrixMathBlocks.d.ts +2 -2
- package/FlowGraph/Blocks/Data/Math/flowGraphVectorMathBlocks.d.ts +3 -3
- package/FlowGraph/Blocks/Data/Math/index.d.ts +4 -4
- package/FlowGraph/Blocks/Data/Transformers/flowGraphJsonPointerParserBlock.d.ts +1 -1
- package/FlowGraph/Blocks/Data/Transformers/flowGraphTypeToTypeBlocks.d.ts +1 -1
- package/FlowGraph/Blocks/Data/Transformers/index.d.ts +2 -2
- package/FlowGraph/Blocks/Data/Utils/index.d.ts +5 -5
- package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.d.ts +5 -5
- package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.d.ts +5 -5
- package/FlowGraph/Blocks/Data/flowGraphConditionalDataBlock.d.ts +4 -4
- package/FlowGraph/Blocks/Data/flowGraphConstantBlock.d.ts +1 -1
- package/FlowGraph/Blocks/Data/flowGraphConstantOperationBlock.d.ts +4 -4
- package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.d.ts +1 -1
- package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.d.ts +4 -4
- package/FlowGraph/Blocks/Data/flowGraphTernaryOperationBlock.d.ts +5 -5
- package/FlowGraph/Blocks/Data/flowGraphTransformCoordinatesSystemBlock.d.ts +6 -6
- package/FlowGraph/Blocks/Data/flowGraphUnaryOperationBlock.d.ts +5 -5
- package/FlowGraph/Blocks/Data/index.d.ts +12 -12
- package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.d.ts +6 -6
- package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.d.ts +1 -1
- package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.d.ts +1 -1
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.d.ts +4 -4
- package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.d.ts +2 -2
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.d.ts +1 -1
- package/FlowGraph/Blocks/Event/flowGraphSendCustomEventBlock.d.ts +3 -3
- package/FlowGraph/Blocks/Event/index.d.ts +7 -7
- package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.d.ts +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.js +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphInterpolationBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPauseAnimationBlock.d.ts +4 -4
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.d.ts +4 -4
- package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.d.ts +3 -3
- package/FlowGraph/Blocks/Execution/Animation/index.d.ts +6 -6
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphBranchBlock.d.ts +5 -5
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.d.ts +5 -5
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.d.ts +5 -5
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.d.ts +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.d.ts +6 -6
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphFlipFlopBlock.d.ts +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.d.ts +4 -4
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphMultiGateBlock.d.ts +5 -5
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSequenceBlock.d.ts +4 -4
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSetDelayBlock.d.ts +5 -5
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSwitchBlock.d.ts +5 -5
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.d.ts +5 -5
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.d.ts +4 -4
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.d.ts +5 -5
- package/FlowGraph/Blocks/Execution/ControlFlow/index.d.ts +14 -14
- package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.d.ts +4 -4
- package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.d.ts +4 -4
- package/FlowGraph/Blocks/Execution/index.d.ts +3 -3
- package/FlowGraph/Blocks/flowGraphBlockFactory.d.ts +2 -2
- package/FlowGraph/Blocks/index.d.ts +5 -5
- package/FlowGraph/CustomTypes/index.d.ts +2 -2
- package/FlowGraph/flowGraph.d.ts +9 -9
- package/FlowGraph/flowGraphAsyncExecutionBlock.d.ts +4 -4
- package/FlowGraph/flowGraphBlock.d.ts +7 -7
- package/FlowGraph/flowGraphContext.d.ts +10 -10
- package/FlowGraph/flowGraphCoordinator.d.ts +4 -4
- package/FlowGraph/flowGraphDataConnection.d.ts +4 -4
- package/FlowGraph/flowGraphEventBlock.d.ts +3 -3
- package/FlowGraph/flowGraphExecutionBlock.d.ts +4 -4
- package/FlowGraph/flowGraphExecutionBlockWithOutSignal.d.ts +3 -3
- package/FlowGraph/flowGraphParser.d.ts +10 -10
- package/FlowGraph/flowGraphPathConverter.d.ts +3 -3
- package/FlowGraph/flowGraphPathConverterComponent.d.ts +6 -6
- package/FlowGraph/flowGraphPathConverterComponent.js +1 -1
- package/FlowGraph/flowGraphPathConverterComponent.js.map +1 -1
- package/FlowGraph/flowGraphRichTypes.d.ts +4 -4
- package/FlowGraph/flowGraphSceneEventCoordinator.d.ts +1 -1
- package/FlowGraph/flowGraphSignalConnection.d.ts +3 -3
- package/FlowGraph/index.d.ts +18 -18
- package/FlowGraph/serialization.d.ts +2 -2
- package/FlowGraph/typeDefinitions.d.ts +1 -1
- package/FlowGraph/utils.d.ts +3 -3
- package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.d.ts +1 -1
- package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.d.ts +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/anaglyphPostProcessBlock.d.ts +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.d.ts +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.d.ts +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.d.ts +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.d.ts +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.d.ts +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.d.ts +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.d.ts +71 -0
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.js +246 -0
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/passPostProcessBlock.d.ts +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.d.ts +3 -3
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +4 -4
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.d.ts +1 -1
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.d.ts +1 -1
- package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.d.ts +1 -1
- package/FrameGraph/Node/Blocks/Rendering/taaObjectRendererBlock.d.ts +1 -1
- package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/Teleport/teleportInBlock.d.ts +1 -1
- package/FrameGraph/Node/Blocks/Teleport/teleportOutBlock.d.ts +1 -1
- package/FrameGraph/Node/Blocks/Textures/clearBlock.d.ts +3 -3
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/Textures/generateMipmapsBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/cullObjectsBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/elbowBlock.d.ts +1 -1
- package/FrameGraph/Node/Blocks/executeBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/index.d.ts +30 -29
- package/FrameGraph/Node/Blocks/index.js +1 -0
- package/FrameGraph/Node/Blocks/index.js.map +1 -1
- package/FrameGraph/Node/Blocks/inputBlock.d.ts +3 -3
- package/FrameGraph/Node/Blocks/outputBlock.d.ts +2 -2
- package/FrameGraph/Node/Blocks/resourceContainerBlock.d.ts +1 -1
- package/FrameGraph/Node/nodeRenderGraph.d.ts +4 -4
- package/FrameGraph/Node/nodeRenderGraphBlock.d.ts +3 -3
- package/FrameGraph/Node/nodeRenderGraphBlockConnectionPoint.d.ts +2 -2
- package/FrameGraph/Node/nodeRenderGraphConnectionPointCustomObject.d.ts +2 -2
- package/FrameGraph/Passes/cullPass.d.ts +1 -1
- package/FrameGraph/Passes/renderPass.d.ts +1 -1
- package/FrameGraph/Tasks/Layers/baseLayerTask.d.ts +6 -6
- package/FrameGraph/Tasks/Layers/glowLayerTask.d.ts +1 -1
- package/FrameGraph/Tasks/Layers/highlightLayerTask.d.ts +1 -1
- package/FrameGraph/Tasks/Misc/cullObjectsTask.d.ts +1 -1
- package/FrameGraph/Tasks/Misc/executeTask.d.ts +1 -1
- package/FrameGraph/Tasks/PostProcesses/anaglyphTask.d.ts +1 -1
- package/FrameGraph/Tasks/PostProcesses/blackAndWhiteTask.d.ts +1 -1
- package/FrameGraph/Tasks/PostProcesses/bloomMergeTask.d.ts +1 -1
- package/FrameGraph/Tasks/PostProcesses/bloomTask.d.ts +1 -1
- package/FrameGraph/Tasks/PostProcesses/blurTask.d.ts +1 -1
- package/FrameGraph/Tasks/PostProcesses/chromaticAberrationTask.d.ts +1 -1
- package/FrameGraph/Tasks/PostProcesses/circleOfConfusionTask.d.ts +1 -1
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.d.ts +1 -1
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.d.ts +1 -1
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.d.ts +1 -1
- package/FrameGraph/Tasks/PostProcesses/extractHighlightsTask.d.ts +1 -1
- package/FrameGraph/Tasks/PostProcesses/imageProcessingTask.d.ts +17 -0
- package/FrameGraph/Tasks/PostProcesses/imageProcessingTask.js +23 -0
- package/FrameGraph/Tasks/PostProcesses/imageProcessingTask.js.map +1 -0
- package/FrameGraph/Tasks/PostProcesses/passTask.d.ts +1 -1
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.d.ts +1 -1
- package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.d.ts +1 -1
- package/FrameGraph/Tasks/PostProcesses/ssrRenderingPipelineTask.d.ts +1 -1
- package/FrameGraph/Tasks/PostProcesses/ssrTask.d.ts +1 -1
- package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.d.ts +2 -2
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +2 -2
- package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +5 -4
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js +5 -4
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.d.ts +2 -2
- package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.d.ts +1 -1
- package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js +1 -1
- package/FrameGraph/Tasks/Rendering/taaObjectRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/utilityLayerRendererTask.d.ts +1 -1
- package/FrameGraph/Tasks/Texture/clearTextureTask.d.ts +2 -2
- package/FrameGraph/Tasks/Texture/copyToBackbufferColorTask.d.ts +1 -1
- package/FrameGraph/Tasks/Texture/copyToTextureTask.d.ts +1 -1
- package/FrameGraph/Tasks/Texture/generateMipMapsTask.d.ts +1 -1
- package/FrameGraph/frameGraph.d.ts +5 -5
- package/FrameGraph/frameGraphRenderContext.d.ts +1 -1
- package/FrameGraph/frameGraphTextureManager.d.ts +2 -2
- package/FrameGraph/index.d.ts +43 -42
- package/FrameGraph/index.js +1 -0
- package/FrameGraph/index.js.map +1 -1
- package/Gamepads/dualShockGamepad.d.ts +2 -2
- package/Gamepads/gamepad.d.ts +1 -1
- package/Gamepads/gamepadManager.d.ts +4 -4
- package/Gamepads/gamepadSceneComponent.d.ts +7 -7
- package/Gamepads/index.d.ts +5 -5
- package/Gamepads/xboxGamepad.d.ts +2 -2
- package/Gizmos/axisDragGizmo.d.ts +16 -16
- package/Gizmos/axisScaleGizmo.d.ts +15 -15
- package/Gizmos/boundingBoxGizmo.d.ts +15 -15
- package/Gizmos/cameraGizmo.d.ts +11 -11
- package/Gizmos/gizmo.d.ts +12 -12
- package/Gizmos/gizmoManager.d.ts +18 -18
- package/Gizmos/index.d.ts +12 -12
- package/Gizmos/lightGizmo.d.ts +13 -13
- package/Gizmos/planeDragGizmo.d.ts +15 -15
- package/Gizmos/planeRotationGizmo.d.ts +17 -17
- package/Gizmos/positionGizmo.d.ts +15 -15
- package/Gizmos/rotationGizmo.d.ts +15 -15
- package/Gizmos/scaleGizmo.d.ts +16 -16
- package/Helpers/environmentHelper.d.ts +10 -10
- package/Helpers/index.d.ts +5 -5
- package/Helpers/photoDome.d.ts +3 -3
- package/Helpers/sceneHelpers.d.ts +13 -13
- package/Helpers/textureDome.d.ts +7 -7
- package/Helpers/videoDome.d.ts +3 -3
- package/IAssetContainer.d.ts +23 -23
- package/Inputs/pointerPickingConfiguration.d.ts +1 -1
- package/Inputs/scene.inputManager.d.ts +8 -8
- package/Instrumentation/engineInstrumentation.d.ts +4 -4
- package/Instrumentation/index.d.ts +3 -3
- package/Instrumentation/sceneInstrumentation.d.ts +2 -2
- package/Instrumentation/timeToken.d.ts +1 -1
- package/Layers/effectLayer.d.ts +16 -16
- package/Layers/effectLayerSceneComponent.d.ts +4 -4
- package/Layers/glowLayer.d.ts +13 -13
- package/Layers/highlightLayer.d.ts +14 -14
- package/Layers/index.d.ts +23 -23
- package/Layers/layer.d.ts +7 -7
- package/Layers/layerSceneComponent.d.ts +2 -2
- package/Layers/thinEffectLayer.d.ts +13 -13
- package/Layers/thinGlowLayer.d.ts +10 -10
- package/Layers/thinHighlightLayer.d.ts +3 -3
- package/LensFlares/index.d.ts +7 -7
- package/LensFlares/lensFlare.d.ts +5 -5
- package/LensFlares/lensFlareSystem.d.ts +5 -5
- package/LensFlares/lensFlareSystemSceneComponent.d.ts +5 -5
- package/Lights/Shadows/cascadedShadowGenerator.d.ts +10 -10
- package/Lights/Shadows/index.d.ts +11 -11
- package/Lights/Shadows/shadowGenerator.d.ts +16 -16
- package/Lights/Shadows/shadowGeneratorSceneComponent.d.ts +2 -2
- package/Lights/areaLight.d.ts +1 -1
- package/Lights/directionalLight.d.ts +8 -8
- package/Lights/hemisphericLight.d.ts +7 -7
- package/Lights/index.d.ts +10 -10
- package/Lights/light.d.ts +12 -12
- package/Lights/pointLight.d.ts +5 -5
- package/Lights/rectAreaLight.d.ts +2 -2
- package/Lights/shadowLight.d.ts +5 -5
- package/Lights/spotLight.d.ts +9 -9
- package/Loading/Plugins/index.d.ts +2 -2
- package/Loading/index.d.ts +4 -4
- package/Loading/sceneLoader.d.ts +16 -16
- package/Materials/Background/backgroundMaterial.d.ts +13 -13
- package/Materials/Background/index.d.ts +5 -5
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.d.ts +19 -11
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.js +28 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.js.map +1 -1
- package/Materials/GreasedLine/greasedLineMaterialDefaults.d.ts +3 -3
- package/Materials/GreasedLine/greasedLineMaterialInterfaces.d.ts +4 -4
- package/Materials/GreasedLine/greasedLinePluginMaterial.d.ts +14 -14
- package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.d.ts +1 -1
- package/Materials/GreasedLine/greasedLinePluginMaterialShadersWGSL.d.ts +1 -1
- package/Materials/GreasedLine/greasedLineSimpleMaterial.d.ts +8 -8
- package/Materials/Node/Blocks/Dual/clipPlanesBlock.d.ts +8 -8
- package/Materials/Node/Blocks/Dual/currentScreenBlock.d.ts +9 -9
- package/Materials/Node/Blocks/Dual/fogBlock.d.ts +7 -7
- package/Materials/Node/Blocks/Dual/imageSourceBlock.d.ts +7 -7
- package/Materials/Node/Blocks/Dual/index.d.ts +37 -37
- package/Materials/Node/Blocks/Dual/lightBlock.d.ts +10 -10
- package/Materials/Node/Blocks/Dual/lightBlock.js +6 -3
- package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.d.ts +12 -12
- package/Materials/Node/Blocks/Dual/reflectionTextureBlock.d.ts +5 -5
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.d.ts +7 -7
- package/Materials/Node/Blocks/Dual/textureBlock.d.ts +12 -12
- package/Materials/Node/Blocks/Fragment/TBNBlock.d.ts +6 -6
- package/Materials/Node/Blocks/Fragment/derivativeBlock.d.ts +3 -3
- package/Materials/Node/Blocks/Fragment/discardBlock.d.ts +3 -3
- package/Materials/Node/Blocks/Fragment/fragCoordBlock.d.ts +3 -3
- package/Materials/Node/Blocks/Fragment/fragDepthBlock.d.ts +3 -3
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.d.ts +8 -8
- package/Materials/Node/Blocks/Fragment/frontFacingBlock.d.ts +3 -3
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.d.ts +4 -4
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.d.ts +8 -8
- package/Materials/Node/Blocks/Fragment/index.d.ts +33 -33
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.d.ts +8 -8
- package/Materials/Node/Blocks/Fragment/prePassOutputBlock.d.ts +3 -3
- package/Materials/Node/Blocks/Fragment/screenSizeBlock.d.ts +4 -4
- package/Materials/Node/Blocks/Fragment/screenSpaceBlock.d.ts +4 -4
- package/Materials/Node/Blocks/Fragment/shadowMapBlock.d.ts +3 -3
- package/Materials/Node/Blocks/Fragment/twirlBlock.d.ts +3 -3
- package/Materials/Node/Blocks/GaussianSplatting/gaussianBlock.d.ts +3 -3
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.d.ts +3 -3
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.js +3 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.js.map +1 -1
- package/Materials/Node/Blocks/GaussianSplatting/index.d.ts +5 -5
- package/Materials/Node/Blocks/GaussianSplatting/splatReaderBlock.d.ts +4 -4
- package/Materials/Node/Blocks/Input/index.d.ts +3 -3
- package/Materials/Node/Blocks/Input/inputBlock.d.ts +13 -13
- package/Materials/Node/Blocks/Input/prePassTextureBlock.d.ts +6 -6
- package/Materials/Node/Blocks/PBR/anisotropyBlock.d.ts +7 -7
- package/Materials/Node/Blocks/PBR/clearCoatBlock.d.ts +10 -10
- package/Materials/Node/Blocks/PBR/index.d.ts +8 -8
- package/Materials/Node/Blocks/PBR/iridescenceBlock.d.ts +7 -7
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.d.ts +10 -10
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +7 -3
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.d.ts +11 -11
- package/Materials/Node/Blocks/PBR/refractionBlock.d.ts +10 -10
- package/Materials/Node/Blocks/PBR/sheenBlock.d.ts +8 -8
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.d.ts +7 -7
- package/Materials/Node/Blocks/Particle/index.d.ts +3 -3
- package/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock.d.ts +3 -3
- package/Materials/Node/Blocks/Particle/particleRampGradientBlock.d.ts +3 -3
- package/Materials/Node/Blocks/Particle/particleTextureBlock.d.ts +8 -8
- package/Materials/Node/Blocks/Teleport/index.d.ts +2 -2
- package/Materials/Node/Blocks/Teleport/teleportInBlock.d.ts +4 -4
- package/Materials/Node/Blocks/Teleport/teleportOutBlock.d.ts +7 -7
- package/Materials/Node/Blocks/Vertex/bonesBlock.d.ts +8 -8
- package/Materials/Node/Blocks/Vertex/index.d.ts +17 -17
- package/Materials/Node/Blocks/Vertex/instancesBlock.d.ts +6 -6
- package/Materials/Node/Blocks/Vertex/lightInformationBlock.d.ts +10 -10
- package/Materials/Node/Blocks/Vertex/morphTargetsBlock.d.ts +7 -7
- package/Materials/Node/Blocks/Vertex/vertexOutputBlock.d.ts +3 -3
- package/Materials/Node/Blocks/addBlock.d.ts +2 -2
- package/Materials/Node/Blocks/arcTan2Block.d.ts +3 -3
- package/Materials/Node/Blocks/baseMathBlock.d.ts +2 -2
- package/Materials/Node/Blocks/biPlanarBlock.d.ts +2 -2
- package/Materials/Node/Blocks/clampBlock.d.ts +4 -4
- package/Materials/Node/Blocks/cloudBlock.d.ts +4 -4
- package/Materials/Node/Blocks/colorConverterBlock.d.ts +3 -3
- package/Materials/Node/Blocks/colorMergerBlock.d.ts +4 -4
- package/Materials/Node/Blocks/colorSplitterBlock.d.ts +3 -3
- package/Materials/Node/Blocks/conditionalBlock.d.ts +5 -5
- package/Materials/Node/Blocks/crossBlock.d.ts +3 -3
- package/Materials/Node/Blocks/curveBlock.d.ts +4 -4
- package/Materials/Node/Blocks/customBlock.d.ts +3 -3
- package/Materials/Node/Blocks/debugBlock.d.ts +3 -3
- package/Materials/Node/Blocks/desaturateBlock.d.ts +3 -3
- package/Materials/Node/Blocks/distanceBlock.d.ts +3 -3
- package/Materials/Node/Blocks/divideBlock.d.ts +2 -2
- package/Materials/Node/Blocks/dotBlock.d.ts +3 -3
- package/Materials/Node/Blocks/elbowBlock.d.ts +4 -4
- package/Materials/Node/Blocks/fresnelBlock.d.ts +5 -5
- package/Materials/Node/Blocks/gradientBlock.d.ts +6 -6
- package/Materials/Node/Blocks/index.d.ts +70 -70
- package/Materials/Node/Blocks/lengthBlock.d.ts +3 -3
- package/Materials/Node/Blocks/lerpBlock.d.ts +3 -3
- package/Materials/Node/Blocks/loopBlock.d.ts +3 -3
- package/Materials/Node/Blocks/matrixBuilderBlock.d.ts +3 -3
- package/Materials/Node/Blocks/matrixDeterminantBlock.d.ts +3 -3
- package/Materials/Node/Blocks/matrixSplitterBlock.d.ts +3 -3
- package/Materials/Node/Blocks/matrixTransposeBlock.d.ts +3 -3
- package/Materials/Node/Blocks/maxBlock.d.ts +3 -3
- package/Materials/Node/Blocks/meshAttributeExistsBlock.d.ts +3 -3
- package/Materials/Node/Blocks/minBlock.d.ts +3 -3
- package/Materials/Node/Blocks/modBlock.d.ts +3 -3
- package/Materials/Node/Blocks/multiplyBlock.d.ts +2 -2
- package/Materials/Node/Blocks/nLerpBlock.d.ts +3 -3
- package/Materials/Node/Blocks/negateBlock.d.ts +3 -3
- package/Materials/Node/Blocks/normalBlendBlock.d.ts +3 -3
- package/Materials/Node/Blocks/normalizeBlock.d.ts +3 -3
- package/Materials/Node/Blocks/oneMinusBlock.d.ts +3 -3
- package/Materials/Node/Blocks/posterizeBlock.d.ts +3 -3
- package/Materials/Node/Blocks/powBlock.d.ts +3 -3
- package/Materials/Node/Blocks/randomNumberBlock.d.ts +4 -4
- package/Materials/Node/Blocks/reciprocalBlock.d.ts +3 -3
- package/Materials/Node/Blocks/reflectBlock.d.ts +3 -3
- package/Materials/Node/Blocks/refractBlock.d.ts +3 -3
- package/Materials/Node/Blocks/remapBlock.d.ts +5 -5
- package/Materials/Node/Blocks/replaceColorBlock.d.ts +3 -3
- package/Materials/Node/Blocks/rotate2dBlock.d.ts +3 -3
- package/Materials/Node/Blocks/scaleBlock.d.ts +3 -3
- package/Materials/Node/Blocks/simplexPerlin3DBlock.d.ts +3 -3
- package/Materials/Node/Blocks/smoothStepBlock.d.ts +3 -3
- package/Materials/Node/Blocks/stepBlock.d.ts +3 -3
- package/Materials/Node/Blocks/storageReadBlock.d.ts +3 -3
- package/Materials/Node/Blocks/storageWriteBlock.d.ts +3 -3
- package/Materials/Node/Blocks/subtractBlock.d.ts +2 -2
- package/Materials/Node/Blocks/transformBlock.d.ts +6 -6
- package/Materials/Node/Blocks/triPlanarBlock.d.ts +12 -12
- package/Materials/Node/Blocks/trigonometryBlock.d.ts +4 -4
- package/Materials/Node/Blocks/vectorMergerBlock.d.ts +4 -4
- package/Materials/Node/Blocks/vectorSplitterBlock.d.ts +3 -3
- package/Materials/Node/Blocks/viewDirectionBlock.d.ts +4 -4
- package/Materials/Node/Blocks/voronoiNoiseBlock.d.ts +3 -3
- package/Materials/Node/Blocks/waveBlock.d.ts +4 -4
- package/Materials/Node/Blocks/worleyNoise3DBlock.d.ts +4 -4
- package/Materials/Node/Enums/index.d.ts +5 -5
- package/Materials/Node/Optimizers/index.d.ts +1 -1
- package/Materials/Node/Optimizers/nodeMaterialOptimizer.d.ts +1 -1
- package/Materials/Node/index.d.ts +9 -9
- package/Materials/Node/nodeMaterial.d.ts +36 -36
- package/Materials/Node/nodeMaterialBlock.d.ts +12 -12
- package/Materials/Node/nodeMaterialBlockConnectionPoint.d.ts +6 -6
- package/Materials/Node/nodeMaterialBuildState.d.ts +6 -6
- package/Materials/Node/nodeMaterialBuildStateSharedData.d.ts +6 -6
- package/Materials/Node/nodeMaterialConnectionPointCustomObject.d.ts +4 -4
- package/Materials/Node/nodeMaterialDefault.d.ts +1 -1
- package/Materials/Occlusion/index.d.ts +1 -1
- package/Materials/Occlusion/occlusionMaterial.d.ts +4 -4
- package/Materials/PBR/index.d.ts +15 -15
- package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +11 -11
- package/Materials/PBR/pbrBRDFConfiguration.d.ts +3 -3
- package/Materials/PBR/pbrBaseMaterial.d.ts +24 -24
- package/Materials/PBR/pbrBaseMaterial.js +2 -1
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +5 -5
- package/Materials/PBR/pbrClearCoatConfiguration.d.ts +12 -12
- package/Materials/PBR/pbrIridescenceConfiguration.d.ts +9 -9
- package/Materials/PBR/pbrMaterial.d.ts +7 -7
- package/Materials/PBR/pbrMaterial.decalMap.d.ts +2 -2
- package/Materials/PBR/pbrMetallicRoughnessMaterial.d.ts +5 -5
- package/Materials/PBR/pbrSheenConfiguration.d.ts +12 -12
- package/Materials/PBR/pbrSpecularGlossinessMaterial.d.ts +5 -5
- package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +27 -14
- package/Materials/PBR/pbrSubSurfaceConfiguration.js +17 -0
- package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
- package/Materials/Textures/Filtering/hdrFiltering.d.ts +2 -2
- package/Materials/Textures/Filtering/hdrIrradianceFiltering.d.ts +2 -2
- package/Materials/Textures/Loaders/EXR/exrLoader.compression.d.ts +1 -1
- package/Materials/Textures/Loaders/EXR/exrLoader.compression.huf.d.ts +1 -1
- package/Materials/Textures/Loaders/EXR/exrLoader.decoder.d.ts +3 -3
- package/Materials/Textures/Loaders/EXR/exrLoader.header.d.ts +2 -2
- package/Materials/Textures/Loaders/EXR/exrLoader.interfaces.d.ts +1 -1
- package/Materials/Textures/Loaders/EXR/index.d.ts +7 -7
- package/Materials/Textures/Loaders/basisTextureLoader.d.ts +3 -3
- package/Materials/Textures/Loaders/ddsTextureLoader.d.ts +3 -3
- package/Materials/Textures/Loaders/envTextureLoader.d.ts +3 -3
- package/Materials/Textures/Loaders/exrTextureLoader.d.ts +2 -2
- package/Materials/Textures/Loaders/hdrTextureLoader.d.ts +2 -2
- package/Materials/Textures/Loaders/iesTextureLoader.d.ts +2 -2
- package/Materials/Textures/Loaders/index.d.ts +11 -11
- package/Materials/Textures/Loaders/internalTextureLoader.d.ts +2 -2
- package/Materials/Textures/Loaders/ktxTextureLoader.d.ts +3 -3
- package/Materials/Textures/Loaders/textureLoaderManager.d.ts +2 -2
- package/Materials/Textures/Loaders/tgaTextureLoader.d.ts +2 -2
- package/Materials/Textures/MultiviewRenderTarget.d.ts +2 -2
- package/Materials/Textures/Packer/frame.d.ts +1 -1
- package/Materials/Textures/Packer/index.d.ts +2 -2
- package/Materials/Textures/Packer/packer.d.ts +5 -5
- package/Materials/Textures/Procedurals/customProceduralTexture.d.ts +5 -5
- package/Materials/Textures/Procedurals/index.d.ts +4 -4
- package/Materials/Textures/Procedurals/noiseProceduralTexture.d.ts +5 -5
- package/Materials/Textures/Procedurals/proceduralTexture.d.ts +10 -10
- package/Materials/Textures/Procedurals/proceduralTextureSceneComponent.d.ts +2 -2
- package/Materials/Textures/baseTexture.d.ts +10 -10
- package/Materials/Textures/baseTexture.polynomial.d.ts +3 -3
- package/Materials/Textures/colorGradingTexture.d.ts +5 -5
- package/Materials/Textures/cubeTexture.d.ts +7 -7
- package/Materials/Textures/dynamicTexture.d.ts +6 -6
- package/Materials/Textures/equiRectangularCubeTexture.d.ts +3 -3
- package/Materials/Textures/externalTexture.d.ts +1 -1
- package/Materials/Textures/hdrCubeTexture.d.ts +7 -7
- package/Materials/Textures/htmlElementTexture.d.ts +8 -8
- package/Materials/Textures/index.d.ts +39 -39
- package/Materials/Textures/internalTexture.d.ts +8 -8
- package/Materials/Textures/mirrorTexture.d.ts +3 -3
- package/Materials/Textures/multiRenderTarget.d.ts +6 -6
- package/Materials/Textures/prePassRenderTarget.d.ts +8 -8
- package/Materials/Textures/rawCubeTexture.d.ts +4 -4
- package/Materials/Textures/rawTexture.d.ts +4 -4
- package/Materials/Textures/rawTexture2DArray.d.ts +3 -3
- package/Materials/Textures/rawTexture3D.d.ts +3 -3
- package/Materials/Textures/refractionTexture.d.ts +3 -3
- package/Materials/Textures/renderTargetTexture.d.ts +21 -20
- package/Materials/Textures/renderTargetTexture.js +6 -5
- package/Materials/Textures/renderTargetTexture.js.map +1 -1
- package/Materials/Textures/texture.d.ts +12 -12
- package/Materials/Textures/texture.js +3 -2
- package/Materials/Textures/texture.js.map +1 -1
- package/Materials/Textures/textureCreationOptions.d.ts +1 -1
- package/Materials/Textures/textureSampler.d.ts +1 -1
- package/Materials/Textures/thinRenderTargetTexture.d.ts +6 -6
- package/Materials/Textures/thinTexture.d.ts +4 -4
- package/Materials/Textures/videoTexture.d.ts +7 -7
- package/Materials/clipPlaneMaterialHelper.d.ts +2 -2
- package/Materials/colorCurves.d.ts +1 -1
- package/Materials/drawWrapper.d.ts +6 -6
- package/Materials/drawWrapper.functions.d.ts +2 -2
- package/Materials/effect.d.ts +14 -14
- package/Materials/effect.functions.d.ts +2 -2
- package/Materials/effect.webgl.functions.d.ts +1 -1
- package/Materials/effectFallbacks.d.ts +3 -3
- package/Materials/effectRenderer.d.ts +10 -10
- package/Materials/fresnelParameters.d.ts +2 -2
- package/Materials/iEffectFallbacks.d.ts +1 -1
- package/Materials/imageProcessingConfiguration.d.ts +15 -7
- package/Materials/imageProcessingConfiguration.defines.d.ts +1 -1
- package/Materials/imageProcessingConfiguration.functions.d.ts +1 -1
- package/Materials/imageProcessingConfiguration.js +16 -2
- package/Materials/imageProcessingConfiguration.js.map +1 -1
- package/Materials/index.d.ts +49 -49
- package/Materials/material.d.ts +26 -26
- package/Materials/material.decalMap.d.ts +3 -3
- package/Materials/material.decalMapConfiguration.d.ts +5 -5
- package/Materials/material.detailMapConfiguration.d.ts +9 -9
- package/Materials/materialHelper.d.ts +12 -12
- package/Materials/materialHelper.functions.d.ts +12 -12
- package/Materials/materialPluginBase.d.ts +15 -15
- package/Materials/materialPluginEvent.d.ts +10 -10
- package/Materials/materialPluginFactoryExport.d.ts +3 -3
- package/Materials/materialPluginManager.d.ts +8 -8
- package/Materials/materialStencilState.d.ts +2 -2
- package/Materials/meshDebugPluginMaterial.d.ts +8 -8
- package/Materials/multiMaterial.d.ts +6 -6
- package/Materials/prePassConfiguration.d.ts +4 -4
- package/Materials/pushMaterial.d.ts +8 -8
- package/Materials/shaderMaterial.d.ts +15 -15
- package/Materials/shadowDepthWrapper.d.ts +6 -6
- package/Materials/standardMaterial.d.ts +19 -19
- package/Materials/standardMaterial.decalMap.d.ts +2 -2
- package/Materials/uniformBuffer.d.ts +6 -6
- package/Materials/uniformBufferEffectCommonAccessor.d.ts +3 -3
- package/Maths/index.d.ts +8 -8
- package/Maths/math.axis.d.ts +1 -1
- package/Maths/math.color.d.ts +3 -3
- package/Maths/math.d.ts +10 -10
- package/Maths/math.frustum.d.ts +3 -3
- package/Maths/math.functions.d.ts +3 -3
- package/Maths/math.isovector.d.ts +1 -1
- package/Maths/math.like.d.ts +1 -1
- package/Maths/math.path.d.ts +3 -3
- package/Maths/math.plane.d.ts +3 -3
- package/Maths/math.polar.d.ts +2 -2
- package/Maths/math.vector.d.ts +6 -6
- package/Maths/math.vector.functions.d.ts +1 -1
- package/Maths/math.vertexFormat.d.ts +1 -1
- package/Maths/math.viewport.d.ts +1 -1
- package/Maths/sphericalPolynomial.d.ts +2 -2
- package/Maths/tensor.d.ts +1 -1
- package/Meshes/Builders/boxBuilder.d.ts +6 -6
- package/Meshes/Builders/capsuleBuilder.d.ts +5 -5
- package/Meshes/Builders/cylinderBuilder.d.ts +6 -6
- package/Meshes/Builders/decalBuilder.d.ts +3 -3
- package/Meshes/Builders/discBuilder.d.ts +5 -5
- package/Meshes/Builders/geodesicBuilder.d.ts +5 -5
- package/Meshes/Builders/goldbergBuilder.d.ts +5 -5
- package/Meshes/Builders/greasedLineBuilder.d.ts +11 -11
- package/Meshes/Builders/groundBuilder.d.ts +6 -6
- package/Meshes/Builders/hemisphereBuilder.d.ts +2 -2
- package/Meshes/Builders/icoSphereBuilder.d.ts +5 -5
- package/Meshes/Builders/index.d.ts +25 -25
- package/Meshes/Builders/latheBuilder.d.ts +5 -5
- package/Meshes/Builders/linesBuilder.d.ts +7 -7
- package/Meshes/Builders/planeBuilder.d.ts +6 -6
- package/Meshes/Builders/polygonBuilder.d.ts +7 -7
- package/Meshes/Builders/polyhedronBuilder.d.ts +6 -6
- package/Meshes/Builders/ribbonBuilder.d.ts +6 -6
- package/Meshes/Builders/shapeBuilder.d.ts +5 -5
- package/Meshes/Builders/sphereBuilder.d.ts +5 -5
- package/Meshes/Builders/textBuilder.d.ts +6 -6
- package/Meshes/Builders/tiledBoxBuilder.d.ts +6 -6
- package/Meshes/Builders/tiledPlaneBuilder.d.ts +5 -5
- package/Meshes/Builders/torusBuilder.d.ts +4 -4
- package/Meshes/Builders/torusKnotBuilder.d.ts +4 -4
- package/Meshes/Builders/tubeBuilder.d.ts +5 -5
- package/Meshes/Compression/dracoCodec.d.ts +2 -2
- package/Meshes/Compression/dracoCompression.d.ts +6 -6
- package/Meshes/Compression/dracoCompressionWorker.d.ts +1 -1
- package/Meshes/Compression/dracoDecoder.d.ts +6 -6
- package/Meshes/Compression/dracoEncoder.d.ts +5 -5
- package/Meshes/Compression/index.d.ts +4 -4
- package/Meshes/Compression/meshoptCompression.d.ts +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +3 -3
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +15 -6
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
- package/Meshes/GreasedLine/greasedLineBaseMesh.d.ts +8 -8
- package/Meshes/GreasedLine/greasedLineMesh.d.ts +11 -11
- package/Meshes/GreasedLine/greasedLineRibbonMesh.d.ts +11 -11
- package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.d.ts +5 -5
- package/Meshes/Node/Blocks/Instances/instantiateBlock.d.ts +4 -4
- package/Meshes/Node/Blocks/Instances/instantiateLinearBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.d.ts +6 -6
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.d.ts +5 -5
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.d.ts +6 -6
- package/Meshes/Node/Blocks/Instances/instantiateRadialBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/Matrices/alignBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/Matrices/rotationXBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/Matrices/rotationYBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/Matrices/rotationZBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/Matrices/scalingBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/Matrices/translationBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/Set/aggregatorBlock.d.ts +4 -4
- package/Meshes/Node/Blocks/Set/latticeBlock.d.ts +5 -5
- package/Meshes/Node/Blocks/Set/setColorsBlock.d.ts +4 -4
- package/Meshes/Node/Blocks/Set/setMaterialIDBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/Set/setNormalsBlock.d.ts +4 -4
- package/Meshes/Node/Blocks/Set/setPositionsBlock.d.ts +4 -4
- package/Meshes/Node/Blocks/Set/setTangentsBlock.d.ts +4 -4
- package/Meshes/Node/Blocks/Set/setUVsBlock.d.ts +4 -4
- package/Meshes/Node/Blocks/Sources/boxBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/Sources/capsuleBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/Sources/cylinderBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/Sources/discBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/Sources/gridBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/Sources/icoSphereBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/Sources/meshBlock.d.ts +4 -4
- package/Meshes/Node/Blocks/Sources/nullBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/Sources/planeBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/Sources/pointListBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/Sources/sphereBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/Sources/torusBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/Teleport/teleportInBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/Teleport/teleportOutBlock.d.ts +5 -5
- package/Meshes/Node/Blocks/Textures/geometryTextureBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/booleanGeometryBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/boundingBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/cleanGeometryBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/computeNormalsBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/conditionBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/debugBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/geometryArcTan2Block.d.ts +2 -2
- package/Meshes/Node/Blocks/geometryClampBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/geometryCollectionBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/geometryCrossBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/geometryCurveBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/geometryDesaturateBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/geometryDistanceBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/geometryDotBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/geometryEaseBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/geometryElbowBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/geometryInfoBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/geometryInputBlock.d.ts +6 -6
- package/Meshes/Node/Blocks/geometryInterceptorBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/geometryLengthBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/geometryLerpBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/geometryModBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/geometryNLerpBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/geometryOptimizeBlock.d.ts +4 -4
- package/Meshes/Node/Blocks/geometryOutputBlock.d.ts +4 -4
- package/Meshes/Node/Blocks/geometryPosterizeBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/geometryPowBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/geometryReplaceColorBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/geometryRotate2dBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/geometrySmoothStepBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/geometryStepBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/geometryTransformBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/geometryTrigonometryBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/intFloatConverterBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/mapRangeBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/mappingBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/mathBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/matrixComposeBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/mergeGeometryBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/noiseBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/normalizeVectorBlock.d.ts +3 -3
- package/Meshes/Node/Blocks/randomBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/subdivideBlock.d.ts +2 -2
- package/Meshes/Node/Blocks/vectorConverterBlock.d.ts +3 -3
- package/Meshes/Node/index.d.ts +87 -87
- package/Meshes/Node/nodeGeometry.d.ts +9 -9
- package/Meshes/Node/nodeGeometryBlock.d.ts +6 -6
- package/Meshes/Node/nodeGeometryBlockConnectionPoint.d.ts +5 -5
- package/Meshes/Node/nodeGeometryBuildState.d.ts +8 -8
- package/Meshes/WebGL/webGLDataBuffer.d.ts +1 -1
- package/Meshes/WebGPU/webgpuDataBuffer.d.ts +2 -2
- package/Meshes/abstractMesh.d.ts +37 -32
- package/Meshes/abstractMesh.decalMap.d.ts +3 -3
- package/Meshes/abstractMesh.hotSpot.d.ts +1 -1
- package/Meshes/abstractMesh.js +1 -1
- package/Meshes/abstractMesh.js.map +1 -1
- package/Meshes/buffer.d.ts +1 -1
- package/Meshes/csg.d.ts +7 -7
- package/Meshes/csg2.d.ts +2 -2
- package/Meshes/geodesicMesh.d.ts +2 -2
- package/Meshes/geometry.d.ts +12 -12
- package/Meshes/goldbergMesh.d.ts +5 -5
- package/Meshes/groundMesh.d.ts +3 -3
- package/Meshes/index.d.ts +55 -55
- package/Meshes/instancedMesh.d.ts +16 -16
- package/Meshes/instancedMesh.js.map +1 -1
- package/Meshes/lattice.d.ts +1 -1
- package/Meshes/lattice.material.d.ts +1 -1
- package/Meshes/linesMesh.d.ts +9 -9
- package/Meshes/mesh.d.ts +30 -30
- package/Meshes/mesh.js +1 -1
- package/Meshes/mesh.js.map +1 -1
- package/Meshes/mesh.vertexData.d.ts +9 -9
- package/Meshes/mesh.vertexData.subdivide.d.ts +1 -1
- package/Meshes/meshBuilder.d.ts +23 -23
- package/Meshes/meshLODLevel.d.ts +2 -2
- package/Meshes/meshSimplification.d.ts +1 -1
- package/Meshes/meshSimplificationSceneComponent.d.ts +6 -6
- package/Meshes/meshUVSpaceRenderer.d.ts +2 -2
- package/Meshes/meshUtils.d.ts +4 -4
- package/Meshes/polygonMesh.d.ts +5 -5
- package/Meshes/subMesh.d.ts +17 -17
- package/Meshes/subMesh.project.d.ts +3 -3
- package/Meshes/thinInstanceMesh.d.ts +4 -4
- package/Meshes/trailMesh.d.ts +3 -3
- package/Meshes/transformNode.d.ts +9 -9
- package/Misc/HighDynamicRange/cubemapToSphericalPolynomial.d.ts +4 -4
- package/Misc/HighDynamicRange/hdr.d.ts +1 -1
- package/Misc/HighDynamicRange/index.d.ts +3 -3
- package/Misc/HighDynamicRange/panoramaToCubemap.d.ts +1 -1
- package/Misc/PerformanceViewer/index.d.ts +4 -4
- package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.d.ts +1 -1
- package/Misc/PerformanceViewer/performanceViewerCollector.d.ts +4 -4
- package/Misc/arrayTools.d.ts +1 -1
- package/Misc/assetsManager.d.ts +15 -15
- package/Misc/basis.d.ts +1 -1
- package/Misc/brdfTextureTools.d.ts +2 -2
- package/Misc/copyTextureToTexture.d.ts +3 -3
- package/Misc/copyTools.d.ts +3 -3
- package/Misc/dds.d.ts +4 -4
- package/Misc/decorators.d.ts +1 -1
- package/Misc/decorators.serialization.d.ts +7 -7
- package/Misc/depthReducer.d.ts +5 -5
- package/Misc/dumpTools.d.ts +1 -1
- package/Misc/environmentTextureTools.d.ts +5 -5
- package/Misc/equirectangularCapture.d.ts +5 -5
- package/Misc/fileRequest.d.ts +1 -1
- package/Misc/fileTools.d.ts +12 -6
- package/Misc/fileTools.js +30 -0
- package/Misc/fileTools.js.map +1 -1
- package/Misc/filesInput.d.ts +4 -4
- package/Misc/gradients.d.ts +2 -2
- package/Misc/greasedLineTools.d.ts +8 -8
- package/Misc/index.d.ts +82 -82
- package/Misc/interfaces/iClipPlanesHolder.d.ts +2 -2
- package/Misc/interfaces/iPerfViewer.d.ts +1 -1
- package/Misc/khronosTextureContainer.d.ts +1 -1
- package/Misc/khronosTextureContainer2.d.ts +5 -5
- package/Misc/meshExploder.d.ts +1 -1
- package/Misc/minMaxReducer.d.ts +9 -9
- package/Misc/observable.d.ts +1 -1
- package/Misc/observable.extensions.d.ts +3 -3
- package/Misc/observableCoroutine.d.ts +2 -2
- package/Misc/pivotTools.d.ts +1 -1
- package/Misc/pressureObserverWrapper.d.ts +1 -1
- package/Misc/reflector.d.ts +1 -1
- package/Misc/retryStrategy.d.ts +1 -1
- package/Misc/rgbdTextureTools.d.ts +3 -3
- package/Misc/sceneOptimizer.d.ts +2 -2
- package/Misc/sceneRecorder.d.ts +1 -1
- package/Misc/sceneSerializer.d.ts +1 -1
- package/Misc/screenshotTools.d.ts +4 -4
- package/Misc/stringDictionary.d.ts +1 -1
- package/Misc/textureTools.d.ts +3 -3
- package/Misc/tga.d.ts +1 -1
- package/Misc/timer.d.ts +4 -4
- package/Misc/tools.d.ts +10 -10
- package/Misc/trajectoryClassifier.d.ts +2 -2
- package/Misc/videoRecorder.d.ts +2 -2
- package/Misc/virtualJoystick.d.ts +2 -2
- package/Misc/webRequest.d.ts +2 -2
- package/Misc/workerPool.d.ts +1 -1
- package/Morph/index.d.ts +2 -2
- package/Morph/morphTarget.d.ts +7 -7
- package/Morph/morphTargetManager.d.ts +5 -5
- package/Navigation/INavigationEngine.d.ts +4 -4
- package/Navigation/Plugins/index.d.ts +1 -1
- package/Navigation/Plugins/recastJSPlugin.d.ts +6 -6
- package/Navigation/index.d.ts +2 -2
- package/ObjectModel/index.d.ts +1 -1
- package/Offline/database.d.ts +1 -1
- package/Offline/index.d.ts +2 -2
- package/Particles/EmitterTypes/IParticleEmitterType.d.ts +6 -6
- package/Particles/EmitterTypes/boxParticleEmitter.d.ts +6 -6
- package/Particles/EmitterTypes/coneParticleEmitter.d.ts +6 -6
- package/Particles/EmitterTypes/customParticleEmitter.d.ts +7 -7
- package/Particles/EmitterTypes/cylinderParticleEmitter.d.ts +6 -6
- package/Particles/EmitterTypes/hemisphericParticleEmitter.d.ts +6 -6
- package/Particles/EmitterTypes/index.d.ts +9 -9
- package/Particles/EmitterTypes/meshParticleEmitter.d.ts +9 -9
- package/Particles/EmitterTypes/pointParticleEmitter.d.ts +6 -6
- package/Particles/EmitterTypes/sphereParticleEmitter.d.ts +6 -6
- package/Particles/IGPUParticleSystemPlatform.d.ts +5 -5
- package/Particles/IParticleSystem.d.ts +13 -13
- package/Particles/baseParticleSystem.d.ts +23 -23
- package/Particles/cloudPoint.d.ts +6 -6
- package/Particles/computeShaderParticleSystem.d.ts +9 -9
- package/Particles/gpuParticleSystem.d.ts +25 -25
- package/Particles/index.d.ts +21 -21
- package/Particles/particle.d.ts +6 -6
- package/Particles/particleHelper.d.ts +6 -6
- package/Particles/particleSystem.d.ts +13 -13
- package/Particles/particleSystem.functions.d.ts +5 -5
- package/Particles/particleSystemComponent.d.ts +5 -5
- package/Particles/particleSystemSet.d.ts +6 -6
- package/Particles/pointsCloudSystem.d.ts +5 -5
- package/Particles/solidParticle.d.ts +9 -9
- package/Particles/solidParticleSystem.d.ts +11 -11
- package/Particles/subEmitter.d.ts +3 -3
- package/Particles/thinParticleSystem.d.ts +16 -16
- package/Particles/webgl2ParticleSystem.d.ts +10 -10
- package/Physics/IPhysicsEngine.d.ts +4 -4
- package/Physics/Plugins/ammoJSPlugin.d.ts +1 -1
- package/Physics/Plugins/cannonJSPlugin.d.ts +1 -1
- package/Physics/Plugins/oimoJSPlugin.d.ts +1 -1
- package/Physics/castingResult.d.ts +3 -3
- package/Physics/index.d.ts +10 -10
- package/Physics/joinedPhysicsEngineComponent.d.ts +9 -9
- package/Physics/physicsEngine.d.ts +1 -1
- package/Physics/physicsEngineComponent.d.ts +3 -3
- package/Physics/physicsHelper.d.ts +6 -6
- package/Physics/physicsImpostor.d.ts +1 -1
- package/Physics/physicsJoint.d.ts +1 -1
- package/Physics/physicsPointProximityQuery.d.ts +3 -3
- package/Physics/physicsRaycastResult.d.ts +2 -2
- package/Physics/physicsShapeCastQuery.d.ts +3 -3
- package/Physics/physicsShapeProximityCastQuery.d.ts +3 -3
- package/Physics/proximityCastResult.d.ts +1 -1
- package/Physics/shapeCastResult.d.ts +1 -1
- package/Physics/v1/IPhysicsEnginePlugin.d.ts +6 -6
- package/Physics/v1/Plugins/ammoJSPlugin.d.ts +7 -7
- package/Physics/v1/Plugins/cannonJSPlugin.d.ts +8 -8
- package/Physics/v1/Plugins/index.d.ts +3 -3
- package/Physics/v1/Plugins/oimoJSPlugin.d.ts +8 -8
- package/Physics/v1/index.d.ts +6 -6
- package/Physics/v1/physicsEngine.d.ts +7 -7
- package/Physics/v1/physicsEngineComponent.d.ts +7 -7
- package/Physics/v1/physicsImpostor.d.ts +11 -11
- package/Physics/v1/physicsJoint.d.ts +2 -2
- package/Physics/v2/IPhysicsEnginePlugin.d.ts +12 -12
- package/Physics/v2/Plugins/havokPlugin.d.ts +18 -18
- package/Physics/v2/Plugins/index.d.ts +1 -1
- package/Physics/v2/characterController.d.ts +10 -5
- package/Physics/v2/characterController.js +7 -0
- package/Physics/v2/characterController.js.map +1 -1
- package/Physics/v2/index.d.ts +10 -10
- package/Physics/v2/physicsAggregate.d.ts +8 -8
- package/Physics/v2/physicsBody.d.ts +9 -9
- package/Physics/v2/physicsConstraint.d.ts +5 -5
- package/Physics/v2/physicsEngine.d.ts +7 -7
- package/Physics/v2/physicsEngineComponent.d.ts +7 -7
- package/Physics/v2/physicsShape.d.ts +10 -10
- package/Physics/v2/ragdoll.d.ts +7 -7
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.d.ts +15 -15
- package/PostProcesses/RenderPipeline/Pipelines/index.d.ts +19 -19
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.d.ts +7 -7
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.d.ts +4 -4
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.d.ts +6 -6
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.d.ts +8 -8
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.d.ts +15 -15
- package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.d.ts +4 -4
- package/PostProcesses/RenderPipeline/index.d.ts +5 -5
- package/PostProcesses/RenderPipeline/postProcessRenderEffect.d.ts +4 -4
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.d.ts +6 -6
- package/PostProcesses/RenderPipeline/postProcessRenderPipelineManager.d.ts +2 -2
- package/PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent.d.ts +4 -4
- package/PostProcesses/anaglyphPostProcess.d.ts +3 -3
- package/PostProcesses/blackAndWhitePostProcess.d.ts +7 -7
- package/PostProcesses/bloomEffect.d.ts +6 -6
- package/PostProcesses/bloomMergePostProcess.d.ts +6 -6
- package/PostProcesses/blurPostProcess.d.ts +8 -8
- package/PostProcesses/chromaticAberrationPostProcess.d.ts +8 -8
- package/PostProcesses/circleOfConfusionPostProcess.d.ts +7 -7
- package/PostProcesses/colorCorrectionPostProcess.d.ts +6 -6
- package/PostProcesses/convolutionPostProcess.d.ts +6 -6
- package/PostProcesses/depthOfFieldBlurPostProcess.d.ts +6 -6
- package/PostProcesses/depthOfFieldBlurPostProcess.js +9 -3
- package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldEffect.d.ts +7 -7
- package/PostProcesses/depthOfFieldMergePostProcess.d.ts +5 -5
- package/PostProcesses/displayPassPostProcess.d.ts +6 -6
- package/PostProcesses/extractHighlightsPostProcess.d.ts +6 -6
- package/PostProcesses/filterPostProcess.d.ts +7 -7
- package/PostProcesses/fxaaPostProcess.d.ts +6 -6
- package/PostProcesses/grainPostProcess.d.ts +6 -6
- package/PostProcesses/highlightsPostProcess.d.ts +4 -4
- package/PostProcesses/imageProcessingPostProcess.d.ts +12 -29
- package/PostProcesses/imageProcessingPostProcess.js +27 -138
- package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/index.d.ts +93 -92
- package/PostProcesses/index.js +1 -0
- package/PostProcesses/index.js.map +1 -1
- package/PostProcesses/motionBlurPostProcess.d.ts +9 -9
- package/PostProcesses/passPostProcess.d.ts +7 -7
- package/PostProcesses/postProcess.d.ts +21 -21
- package/PostProcesses/postProcessManager.d.ts +6 -6
- package/PostProcesses/refractionPostProcess.d.ts +9 -9
- package/PostProcesses/screenSpaceCurvaturePostProcess.d.ts +8 -8
- package/PostProcesses/screenSpaceReflectionPostProcess.d.ts +7 -7
- package/PostProcesses/sharpenPostProcess.d.ts +7 -7
- package/PostProcesses/stereoscopicInterlacePostProcess.d.ts +3 -3
- package/PostProcesses/subSurfaceScatteringPostProcess.d.ts +12 -12
- package/PostProcesses/thinAnaglyphPostProcess.d.ts +1 -1
- package/PostProcesses/thinBlackAndWhitePostProcess.d.ts +1 -1
- package/PostProcesses/thinBloomEffect.d.ts +3 -3
- package/PostProcesses/thinBloomMergePostProcess.d.ts +1 -1
- package/PostProcesses/thinBlurPostProcess.d.ts +1 -1
- package/PostProcesses/thinBlurPostProcess.js +1 -0
- package/PostProcesses/thinBlurPostProcess.js.map +1 -1
- package/PostProcesses/thinChromaticAberrationPostProcess.d.ts +4 -4
- package/PostProcesses/thinChromaticAberrationPostProcess.js.map +1 -1
- package/PostProcesses/thinCircleOfConfusionPostProcess.d.ts +1 -1
- package/PostProcesses/thinDepthOfFieldBlurPostProcess.d.ts +1 -1
- package/PostProcesses/thinDepthOfFieldEffect.d.ts +5 -5
- package/PostProcesses/thinDepthOfFieldEffect.js +3 -3
- package/PostProcesses/thinDepthOfFieldEffect.js.map +1 -1
- package/PostProcesses/thinDepthOfFieldMergePostProcess.d.ts +1 -1
- package/PostProcesses/thinExtractHighlightsPostProcess.d.ts +1 -1
- package/PostProcesses/thinImageProcessingPostProcess.d.ts +258 -0
- package/PostProcesses/thinImageProcessingPostProcess.js +462 -0
- package/PostProcesses/thinImageProcessingPostProcess.js.map +1 -0
- package/PostProcesses/thinSSRBlurCombinerPostProcess.d.ts +1 -1
- package/PostProcesses/thinSSRBlurPostProcess.d.ts +2 -2
- package/PostProcesses/thinTAAPostProcess.d.ts +1 -1
- package/PostProcesses/tonemapPostProcess.d.ts +3 -3
- package/PostProcesses/volumetricLightScatteringPostProcess.d.ts +13 -13
- package/PostProcesses/vrDistortionCorrectionPostProcess.d.ts +4 -4
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.d.ts +5 -5
- package/Probes/index.d.ts +1 -1
- package/Probes/reflectionProbe.d.ts +6 -6
- package/Rendering/GlobalIllumination/giRSM.d.ts +1 -1
- package/Rendering/GlobalIllumination/giRSMManager.d.ts +1 -1
- package/Rendering/GlobalIllumination/index.d.ts +10 -10
- package/Rendering/IBLShadows/iblShadowsAccumulationPass.d.ts +4 -4
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.d.ts +6 -6
- package/Rendering/IBLShadows/iblShadowsSpatialBlurPass.d.ts +3 -3
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.d.ts +8 -8
- package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.d.ts +4 -4
- package/Rendering/boundingBoxRenderer.d.ts +11 -11
- package/Rendering/depthPeelingRenderer.d.ts +7 -7
- package/Rendering/depthPeelingSceneComponent.d.ts +5 -5
- package/Rendering/depthRenderer.d.ts +10 -10
- package/Rendering/depthRendererSceneComponent.d.ts +6 -6
- package/Rendering/edgesRenderer.d.ts +14 -14
- package/Rendering/fluidRenderer/fluidRenderer.d.ts +3 -3
- package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.d.ts +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.d.ts +1 -1
- package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.d.ts +2 -2
- package/Rendering/fluidRenderer/index.d.ts +23 -23
- package/Rendering/geometryBufferRenderer.d.ts +11 -11
- package/Rendering/geometryBufferRendererSceneComponent.d.ts +5 -5
- package/Rendering/iblCdfGenerator.d.ts +7 -7
- package/Rendering/iblCdfGeneratorSceneComponent.d.ts +5 -5
- package/Rendering/index.d.ts +86 -86
- package/Rendering/motionBlurConfiguration.d.ts +1 -1
- package/Rendering/objectRenderer.d.ts +7 -7
- package/Rendering/objectRenderer.js +11 -11
- package/Rendering/objectRenderer.js.map +1 -1
- package/Rendering/outlineRenderer.d.ts +6 -6
- package/Rendering/prePassEffectConfiguration.d.ts +1 -1
- package/Rendering/prePassRenderer.d.ts +11 -11
- package/Rendering/prePassRendererSceneComponent.d.ts +7 -7
- package/Rendering/renderingGroup.d.ts +9 -9
- package/Rendering/renderingManager.d.ts +10 -10
- package/Rendering/screenSpaceReflections2Configuration.d.ts +1 -1
- package/Rendering/screenSpaceReflectionsConfiguration.d.ts +1 -1
- package/Rendering/ssao2Configuration.d.ts +1 -1
- package/Rendering/subSurfaceConfiguration.d.ts +4 -4
- package/Rendering/subSurfaceSceneComponent.d.ts +5 -5
- package/Rendering/utilityLayerRenderer.d.ts +7 -7
- package/Shaders/ShadersInclude/backgroundUboDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/bumpFragmentFunctions.d.ts +1 -1
- package/Shaders/ShadersInclude/defaultFragmentDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/defaultUboDeclaration.d.ts +2 -2
- package/Shaders/ShadersInclude/defaultVertexDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/gaussianSplatting.js +9 -1
- package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
- package/Shaders/ShadersInclude/gaussianSplattingFragmentDeclaration.d.ts +2 -2
- package/Shaders/ShadersInclude/gaussianSplattingUboDeclaration.d.ts +2 -2
- package/Shaders/ShadersInclude/geometryUboDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/lightFragment.js +10 -7
- package/Shaders/ShadersInclude/lightFragment.js.map +1 -1
- package/Shaders/ShadersInclude/lightsFragmentFunctions.d.ts +1 -1
- package/Shaders/ShadersInclude/lineUboDeclaration.d.ts +2 -2
- package/Shaders/ShadersInclude/pbrBRDFFunctions.js +5 -1
- package/Shaders/ShadersInclude/pbrBRDFFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrBlockDirectLighting.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockDirectLighting.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockFinalUnlitComponents.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockFinalUnlitComponents.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectance.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectance.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflectivity.js +2 -2
- package/Shaders/ShadersInclude/pbrBlockReflectivity.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +16 -4
- package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingSetupFunctions.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrFragmentDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrFragmentExtraDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/pbrFragmentSamplersDeclaration.d.ts +2 -2
- package/Shaders/ShadersInclude/pbrUboDeclaration.d.ts +2 -2
- package/Shaders/ShadersInclude/pbrVertexDeclaration.d.ts +1 -1
- package/Shaders/ShadersInclude/shadowMapFragmentExtraDeclaration.d.ts +2 -2
- package/Shaders/ShadersInclude/shadowMapUboDeclaration.d.ts +2 -2
- package/Shaders/ShadersInclude/shadowMapVertexDeclaration.d.ts +2 -2
- package/Shaders/background.fragment.d.ts +18 -18
- package/Shaders/background.vertex.d.ts +18 -18
- package/Shaders/boundingBoxRenderer.fragment.d.ts +2 -2
- package/Shaders/boundingBoxRenderer.vertex.d.ts +2 -2
- package/Shaders/color.fragment.d.ts +4 -4
- package/Shaders/color.vertex.d.ts +11 -11
- package/Shaders/copyTextureToTexture.fragment.d.ts +1 -1
- package/Shaders/default.fragment.d.ts +28 -28
- package/Shaders/default.vertex.d.ts +33 -33
- package/Shaders/depth.fragment.d.ts +3 -3
- package/Shaders/depth.vertex.d.ts +14 -14
- package/Shaders/extractHighlights.fragment.d.ts +1 -1
- package/Shaders/gaussianSplatting.fragment.d.ts +5 -5
- package/Shaders/gaussianSplatting.vertex.d.ts +10 -10
- package/Shaders/gaussianSplatting.vertex.js +2 -2
- package/Shaders/gaussianSplatting.vertex.js.map +1 -1
- package/Shaders/geometry.fragment.d.ts +7 -7
- package/Shaders/geometry.vertex.d.ts +15 -15
- package/Shaders/glowMapGeneration.fragment.d.ts +3 -3
- package/Shaders/glowMapGeneration.vertex.d.ts +12 -12
- package/Shaders/gpuRenderParticles.fragment.d.ts +9 -9
- package/Shaders/gpuRenderParticles.vertex.d.ts +6 -6
- package/Shaders/gpuTransform.vertex.d.ts +8 -8
- package/Shaders/grain.fragment.d.ts +1 -1
- package/Shaders/greasedLine.vertex.d.ts +2 -2
- package/Shaders/hdrFiltering.fragment.d.ts +4 -4
- package/Shaders/hdrIrradianceFiltering.fragment.d.ts +4 -4
- package/Shaders/iblCdfy.fragment.d.ts +1 -1
- package/Shaders/iblIcdf.fragment.d.ts +1 -1
- package/Shaders/iblScaledLuminance.fragment.d.ts +1 -1
- package/Shaders/iblVoxelGrid.vertex.d.ts +10 -10
- package/Shaders/imageProcessing.fragment.d.ts +3 -3
- package/Shaders/kernelBlur.fragment.d.ts +4 -4
- package/Shaders/kernelBlur.vertex.d.ts +2 -2
- package/Shaders/layer.fragment.d.ts +1 -1
- package/Shaders/line.fragment.d.ts +4 -4
- package/Shaders/line.vertex.d.ts +8 -8
- package/Shaders/meshUVSpaceRenderer.vertex.d.ts +10 -10
- package/Shaders/outline.fragment.d.ts +4 -4
- package/Shaders/outline.vertex.d.ts +14 -14
- package/Shaders/particles.fragment.d.ts +9 -9
- package/Shaders/particles.vertex.d.ts +6 -6
- package/Shaders/pbr.fragment.d.ts +58 -58
- package/Shaders/pbr.vertex.d.ts +33 -33
- package/Shaders/picking.vertex.d.ts +10 -10
- package/Shaders/rgbdDecode.fragment.d.ts +1 -1
- package/Shaders/rgbdEncode.fragment.d.ts +1 -1
- package/Shaders/screenSpaceReflection2.fragment.d.ts +3 -3
- package/Shaders/screenSpaceReflection2BlurCombiner.fragment.d.ts +3 -3
- package/Shaders/shadowMap.fragment.d.ts +4 -4
- package/Shaders/shadowMap.vertex.d.ts +17 -17
- package/Shaders/spriteMap.fragment.d.ts +4 -4
- package/Shaders/spriteMap.vertex.d.ts +3 -3
- package/Shaders/sprites.fragment.d.ts +5 -5
- package/Shaders/sprites.vertex.d.ts +3 -3
- package/Shaders/standard.fragment.d.ts +1 -1
- package/Shaders/subSurfaceScattering.fragment.d.ts +4 -4
- package/Shaders/velocity.vertex.d.ts +2 -2
- package/Shaders/volumetricLightScatteringPass.vertex.d.ts +10 -10
- package/ShadersWGSL/ShadersInclude/backgroundUboDeclaration.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/bumpFragmentFunctions.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/defaultUboDeclaration.d.ts +2 -2
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +11 -2
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/gaussianSplattingFragmentDeclaration.d.ts +2 -2
- package/ShadersWGSL/ShadersInclude/gaussianSplattingUboDeclaration.d.ts +2 -2
- package/ShadersWGSL/ShadersInclude/lightFragment.js +10 -7
- package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/lightsFragmentFunctions.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js +5 -1
- package/ShadersWGSL/ShadersInclude/pbrBRDFFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBlockAlbedoOpacity.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBlockDirectLighting.js +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBlockDirectLighting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBlockFinalUnlitComponents.js +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBlockFinalUnlitComponents.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBlockReflectance.js +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBlockReflectance.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBlockReflectivity.js +2 -2
- package/ShadersWGSL/ShadersInclude/pbrBlockReflectivity.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +24 -8
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingSetupFunctions.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/pbrFragmentExtraDeclaration.d.ts +1 -1
- package/ShadersWGSL/ShadersInclude/pbrFragmentSamplersDeclaration.d.ts +2 -2
- package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.d.ts +2 -2
- package/ShadersWGSL/ShadersInclude/shadowMapFragmentExtraDeclaration.d.ts +2 -2
- package/ShadersWGSL/background.fragment.d.ts +16 -16
- package/ShadersWGSL/background.vertex.d.ts +16 -16
- package/ShadersWGSL/color.fragment.d.ts +4 -4
- package/ShadersWGSL/color.vertex.d.ts +11 -11
- package/ShadersWGSL/copyTextureToTexture.fragment.d.ts +1 -1
- package/ShadersWGSL/default.fragment.d.ts +26 -26
- package/ShadersWGSL/default.vertex.d.ts +31 -31
- package/ShadersWGSL/depth.fragment.d.ts +3 -3
- package/ShadersWGSL/depth.vertex.d.ts +12 -12
- package/ShadersWGSL/extractHighlights.fragment.d.ts +1 -1
- package/ShadersWGSL/gaussianSplatting.fragment.d.ts +5 -5
- package/ShadersWGSL/gaussianSplatting.vertex.d.ts +10 -9
- package/ShadersWGSL/gaussianSplatting.vertex.js +6 -3
- package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
- package/ShadersWGSL/geometry.fragment.d.ts +6 -6
- package/ShadersWGSL/geometry.vertex.d.ts +14 -14
- package/ShadersWGSL/glowMapGeneration.fragment.d.ts +3 -3
- package/ShadersWGSL/glowMapGeneration.vertex.d.ts +12 -12
- package/ShadersWGSL/grain.fragment.d.ts +1 -1
- package/ShadersWGSL/greasedLine.vertex.d.ts +4 -4
- package/ShadersWGSL/hdrFiltering.fragment.d.ts +4 -4
- package/ShadersWGSL/hdrIrradianceFiltering.fragment.d.ts +4 -4
- package/ShadersWGSL/iblIcdf.fragment.d.ts +1 -1
- package/ShadersWGSL/iblScaledLuminance.fragment.d.ts +1 -1
- package/ShadersWGSL/iblVoxelGrid.vertex.d.ts +10 -10
- package/ShadersWGSL/imageProcessing.fragment.d.ts +3 -3
- package/ShadersWGSL/kernelBlur.fragment.d.ts +4 -4
- package/ShadersWGSL/kernelBlur.vertex.d.ts +2 -2
- package/ShadersWGSL/layer.fragment.d.ts +1 -1
- package/ShadersWGSL/line.fragment.d.ts +4 -4
- package/ShadersWGSL/line.vertex.d.ts +8 -8
- package/ShadersWGSL/meshUVSpaceRenderer.vertex.d.ts +10 -10
- package/ShadersWGSL/outline.fragment.d.ts +4 -4
- package/ShadersWGSL/outline.vertex.d.ts +14 -14
- package/ShadersWGSL/particles.fragment.d.ts +9 -9
- package/ShadersWGSL/particles.vertex.d.ts +6 -6
- package/ShadersWGSL/pbr.fragment.d.ts +56 -56
- package/ShadersWGSL/pbr.vertex.d.ts +31 -31
- package/ShadersWGSL/picking.vertex.d.ts +10 -10
- package/ShadersWGSL/rgbdDecode.fragment.d.ts +1 -1
- package/ShadersWGSL/rgbdEncode.fragment.d.ts +1 -1
- package/ShadersWGSL/screenSpaceReflection2.fragment.d.ts +3 -3
- package/ShadersWGSL/screenSpaceReflection2BlurCombiner.fragment.d.ts +3 -3
- package/ShadersWGSL/shadowMap.fragment.d.ts +4 -4
- package/ShadersWGSL/shadowMap.vertex.d.ts +17 -17
- package/ShadersWGSL/sprites.fragment.d.ts +5 -5
- package/ShadersWGSL/sprites.vertex.d.ts +3 -3
- package/ShadersWGSL/subSurfaceScattering.fragment.d.ts +4 -4
- package/Sprites/index.d.ts +10 -10
- package/Sprites/sprite.d.ts +9 -9
- package/Sprites/spriteManager.d.ts +9 -9
- package/Sprites/spriteMap.d.ts +7 -7
- package/Sprites/spritePackedManager.d.ts +3 -3
- package/Sprites/spriteRenderer.d.ts +8 -8
- package/Sprites/spriteSceneComponent.d.ts +10 -10
- package/Sprites/thinSprite.d.ts +2 -2
- package/States/alphaCullingState.d.ts +1 -1
- package/States/depthCullingState.d.ts +1 -1
- package/States/index.d.ts +4 -4
- package/States/stencilState.d.ts +1 -1
- package/States/stencilStateComposer.d.ts +1 -1
- package/XR/features/Layers/WebXRProjectionLayer.d.ts +1 -1
- package/XR/features/WebXRAbstractFeature.d.ts +4 -4
- package/XR/features/WebXRAnchorSystem.d.ts +6 -6
- package/XR/features/WebXRBackgroundRemover.d.ts +4 -4
- package/XR/features/WebXRControllerMovement.d.ts +9 -9
- package/XR/features/WebXRControllerPhysics.d.ts +6 -6
- package/XR/features/WebXRControllerPointerSelection.d.ts +10 -10
- package/XR/features/WebXRControllerTeleportation.d.ts +12 -12
- package/XR/features/WebXRDOMOverlay.d.ts +3 -3
- package/XR/features/WebXRDepthSensing.d.ts +6 -6
- package/XR/features/WebXREyeTracking.d.ts +5 -5
- package/XR/features/WebXRFeaturePointSystem.d.ts +4 -4
- package/XR/features/WebXRHandTracking.d.ts +11 -11
- package/XR/features/WebXRHitTest.d.ts +5 -5
- package/XR/features/WebXRHitTestLegacy.d.ts +6 -6
- package/XR/features/WebXRImageTracking.d.ts +5 -5
- package/XR/features/WebXRLayers.d.ts +8 -8
- package/XR/features/WebXRLightEstimation.d.ts +9 -9
- package/XR/features/WebXRMeshDetector.d.ts +6 -6
- package/XR/features/WebXRNearInteraction.d.ts +13 -13
- package/XR/features/WebXRPlaneDetector.d.ts +5 -5
- package/XR/features/WebXRRawCameraAccess.d.ts +4 -4
- package/XR/features/WebXRSpaceWarp.d.ts +10 -10
- package/XR/features/WebXRWalkingLocomotion.d.ts +4 -4
- package/XR/features/index.d.ts +23 -23
- package/XR/index.d.ts +14 -14
- package/XR/motionController/index.d.ts +9 -9
- package/XR/motionController/webXRAbstractMotionController.d.ts +5 -5
- package/XR/motionController/webXRControllerComponent.d.ts +3 -3
- package/XR/motionController/webXRGenericHandController.d.ts +4 -4
- package/XR/motionController/webXRGenericMotionController.d.ts +4 -4
- package/XR/motionController/webXRHTCViveMotionController.d.ts +4 -4
- package/XR/motionController/webXRMicrosoftMixedRealityController.d.ts +4 -4
- package/XR/motionController/webXRMotionControllerManager.d.ts +2 -2
- package/XR/motionController/webXROculusTouchMotionController.d.ts +4 -4
- package/XR/motionController/webXRProfiledMotionController.d.ts +4 -4
- package/XR/native/index.d.ts +2 -2
- package/XR/native/nativeXRRenderTarget.d.ts +7 -7
- package/XR/webXRCamera.d.ts +7 -7
- package/XR/webXRDefaultExperience.d.ts +16 -16
- package/XR/webXREnterExitUI.d.ts +5 -5
- package/XR/webXRExperienceHelper.d.ts +7 -7
- package/XR/webXRFeaturesManager.d.ts +2 -2
- package/XR/webXRInput.d.ts +6 -6
- package/XR/webXRInputSource.d.ts +7 -7
- package/XR/webXRLayerWrapper.d.ts +3 -3
- package/XR/webXRManagedOutputCanvas.d.ts +5 -5
- package/XR/webXRRenderTargetTextureProvider.d.ts +5 -5
- package/XR/webXRSessionManager.d.ts +9 -9
- package/XR/webXRTypes.d.ts +2 -2
- package/XR/webXRWebGLLayer.d.ts +6 -6
- package/assetContainer.d.ts +27 -27
- package/index.d.ts +49 -49
- package/node.d.ts +15 -15
- package/package.json +1 -1
- package/scene.d.ts +62 -62
- package/sceneComponent.d.ts +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gaussianSplattingMesh.js","sourceRoot":"","sources":["../../../../../dev/core/src/Meshes/GaussianSplatting/gaussianSplattingMesh.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Scene } from \"core/scene\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport { SubMesh } from \"../subMesh\";\r\nimport type { AbstractMesh } from \"../abstractMesh\";\r\nimport { Mesh } from \"../mesh\";\r\nimport { VertexData } from \"../mesh.vertexData\";\r\nimport { Matrix, TmpVectors, Vector2, Vector3 } from \"core/Maths/math.vector\";\r\nimport type { Quaternion } from \"core/Maths/math.vector\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { GaussianSplattingMaterial } from \"core/Materials/GaussianSplatting/gaussianSplattingMaterial\";\r\nimport { RawTexture } from \"core/Materials/Textures/rawTexture\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { Tools } from \"core/Misc/tools\";\r\nimport \"core/Meshes/thinInstanceMesh\";\r\nimport type { ThinEngine } from \"core/Engines/thinEngine\";\r\nimport { ToHalfFloat } from \"core/Misc/textureTools\";\r\nimport type { Material } from \"core/Materials/material\";\r\nimport { Scalar } from \"core/Maths/math.scalar\";\r\nimport { runCoroutineSync, runCoroutineAsync, createYieldingScheduler, type Coroutine } from \"core/Misc/coroutine\";\r\nimport { EngineStore } from \"core/Engines/engineStore\";\r\n\r\ninterface DelayedTextureUpdate {\r\n covA: Uint16Array;\r\n covB: Uint16Array;\r\n colors: Uint8Array;\r\n centers: Float32Array;\r\n sh?: Uint8Array[];\r\n}\r\n\r\n// @internal\r\nconst unpackUnorm = (value: number, bits: number) => {\r\n const t = (1 << bits) - 1;\r\n return (value & t) / t;\r\n};\r\n\r\n// @internal\r\nconst unpack111011 = (value: number, result: Vector3) => {\r\n result.x = unpackUnorm(value >>> 21, 11);\r\n result.y = unpackUnorm(value >>> 11, 10);\r\n result.z = unpackUnorm(value, 11);\r\n};\r\n\r\n// @internal\r\nconst unpack8888 = (value: number, result: Uint8ClampedArray) => {\r\n result[0] = unpackUnorm(value >>> 24, 8) * 255;\r\n result[1] = unpackUnorm(value >>> 16, 8) * 255;\r\n result[2] = unpackUnorm(value >>> 8, 8) * 255;\r\n result[3] = unpackUnorm(value, 8) * 255;\r\n};\r\n\r\n// @internal\r\n// unpack quaternion with 2,10,10,10 format (largest element, 3x10bit element)\r\nconst unpackRot = (value: number, result: Quaternion) => {\r\n const norm = 1.0 / (Math.sqrt(2) * 0.5);\r\n const a = (unpackUnorm(value >>> 20, 10) - 0.5) * norm;\r\n const b = (unpackUnorm(value >>> 10, 10) - 0.5) * norm;\r\n const c = (unpackUnorm(value, 10) - 0.5) * norm;\r\n const m = Math.sqrt(1.0 - (a * a + b * b + c * c));\r\n\r\n switch (value >>> 30) {\r\n case 0:\r\n result.set(m, a, b, c);\r\n break;\r\n case 1:\r\n result.set(a, m, b, c);\r\n break;\r\n case 2:\r\n result.set(a, b, m, c);\r\n break;\r\n case 3:\r\n result.set(a, b, c, m);\r\n break;\r\n }\r\n};\r\n\r\n// @internal\r\ninterface CompressedPLYChunk {\r\n min: Vector3;\r\n max: Vector3;\r\n minScale: Vector3;\r\n maxScale: Vector3;\r\n minColor: Vector3;\r\n maxColor: Vector3;\r\n}\r\n\r\n// @internal\r\ninterface PLYConversionBuffers {\r\n buffer: ArrayBuffer;\r\n sh?: [];\r\n}\r\n/**\r\n * Representation of the types\r\n */\r\nconst enum PLYType {\r\n FLOAT,\r\n INT,\r\n UINT,\r\n DOUBLE,\r\n UCHAR,\r\n UNDEFINED,\r\n}\r\n\r\n/**\r\n * Usage types of the PLY values\r\n */\r\nconst enum PLYValue {\r\n MIN_X,\r\n MIN_Y,\r\n MIN_Z,\r\n MAX_X,\r\n MAX_Y,\r\n MAX_Z,\r\n\r\n MIN_SCALE_X,\r\n MIN_SCALE_Y,\r\n MIN_SCALE_Z,\r\n\r\n MAX_SCALE_X,\r\n MAX_SCALE_Y,\r\n MAX_SCALE_Z,\r\n\r\n PACKED_POSITION,\r\n PACKED_ROTATION,\r\n PACKED_SCALE,\r\n PACKED_COLOR,\r\n X,\r\n Y,\r\n Z,\r\n SCALE_0,\r\n SCALE_1,\r\n SCALE_2,\r\n\r\n DIFFUSE_RED,\r\n DIFFUSE_GREEN,\r\n DIFFUSE_BLUE,\r\n OPACITY,\r\n\r\n F_DC_0,\r\n F_DC_1,\r\n F_DC_2,\r\n F_DC_3,\r\n\r\n ROT_0,\r\n ROT_1,\r\n ROT_2,\r\n ROT_3,\r\n\r\n MIN_COLOR_R,\r\n MIN_COLOR_G,\r\n MIN_COLOR_B,\r\n\r\n MAX_COLOR_R,\r\n MAX_COLOR_G,\r\n MAX_COLOR_B,\r\n\r\n SH_0,\r\n SH_1,\r\n SH_2,\r\n SH_3,\r\n SH_4,\r\n SH_5,\r\n SH_6,\r\n SH_7,\r\n SH_8,\r\n SH_9,\r\n SH_10,\r\n SH_11,\r\n SH_12,\r\n SH_13,\r\n SH_14,\r\n SH_15,\r\n SH_16,\r\n SH_17,\r\n SH_18,\r\n SH_19,\r\n SH_20,\r\n SH_21,\r\n SH_22,\r\n SH_23,\r\n SH_24,\r\n SH_25,\r\n SH_26,\r\n SH_27,\r\n SH_28,\r\n SH_29,\r\n SH_30,\r\n SH_31,\r\n SH_32,\r\n SH_33,\r\n SH_34,\r\n SH_35,\r\n SH_36,\r\n SH_37,\r\n SH_38,\r\n SH_39,\r\n SH_40,\r\n SH_41,\r\n SH_42,\r\n SH_43,\r\n SH_44,\r\n\r\n UNDEFINED,\r\n}\r\n\r\n/**\r\n * Property field found in PLY header\r\n */\r\nexport type PlyProperty = {\r\n /**\r\n * Value usage\r\n */\r\n value: PLYValue;\r\n /**\r\n * Value type\r\n */\r\n type: PLYType;\r\n /**\r\n * offset in byte from te beginning of the splat\r\n */\r\n offset: number;\r\n};\r\n\r\n/**\r\n * meta info on Splat file\r\n */\r\nexport interface PLYHeader {\r\n /**\r\n * number of splats\r\n */\r\n vertexCount: number;\r\n /**\r\n * number of spatial chunks for compressed ply\r\n */\r\n chunkCount: number;\r\n /**\r\n * length in bytes of the vertex info\r\n */\r\n rowVertexLength: number;\r\n /**\r\n * length in bytes of the chunk\r\n */\r\n rowChunkLength: number;\r\n /**\r\n * array listing properties per vertex\r\n */\r\n vertexProperties: PlyProperty[];\r\n /**\r\n * array listing properties per chunk\r\n */\r\n chunkProperties: PlyProperty[];\r\n /**\r\n * data view for parsing chunks and vertices\r\n */\r\n dataView: DataView;\r\n /**\r\n * buffer for the data view\r\n */\r\n buffer: ArrayBuffer;\r\n /**\r\n * degree of SH coefficients\r\n */\r\n shDegree: number;\r\n /**\r\n * number of coefficient per splat\r\n */\r\n shCoefficientCount: number;\r\n /**\r\n * buffer for SH coefficients\r\n */\r\n shBuffer: ArrayBuffer | null;\r\n}\r\n/**\r\n * Class used to render a gaussian splatting mesh\r\n */\r\nexport class GaussianSplattingMesh extends Mesh {\r\n private _vertexCount = 0;\r\n private _worker: Nullable<Worker> = null;\r\n private _frameIdLastUpdate = -1;\r\n private _modelViewMatrix = Matrix.Identity();\r\n private _depthMix: BigInt64Array;\r\n private _canPostToWorker = true;\r\n private _readyToDisplay = false;\r\n private _covariancesATexture: Nullable<BaseTexture> = null;\r\n private _covariancesBTexture: Nullable<BaseTexture> = null;\r\n private _centersTexture: Nullable<BaseTexture> = null;\r\n private _colorsTexture: Nullable<BaseTexture> = null;\r\n private _splatPositions: Nullable<Float32Array> = null;\r\n private _splatIndex: Nullable<Float32Array> = null;\r\n private _shTextures: Nullable<BaseTexture[]> = null;\r\n private _splatsData: Nullable<ArrayBuffer> = null;\r\n private _sh: Nullable<Uint8Array[]> = null;\r\n private readonly _keepInRam: boolean = false;\r\n\r\n private _delayedTextureUpdate: Nullable<DelayedTextureUpdate> = null;\r\n private _oldDirection = new Vector3();\r\n private _useRGBACovariants = false;\r\n private _material: Nullable<Material> = null;\r\n\r\n private _tmpCovariances = [0, 0, 0, 0, 0, 0];\r\n private _sortIsDirty = false;\r\n\r\n private static _RowOutputLength = 3 * 4 + 3 * 4 + 4 + 4; // Vector3 position, Vector3 scale, 1 u8 quaternion, 1 color with alpha\r\n private static _SH_C0 = 0.28209479177387814;\r\n // batch size between 2 yield calls. This value is a tradeoff between updates overhead and framerate hiccups\r\n // This step is faster the PLY conversion. So batch size can be bigger\r\n private static _SplatBatchSize = 327680;\r\n // batch size between 2 yield calls during the PLY to splat conversion.\r\n private static _PlyConversionBatchSize = 32768;\r\n private _shDegree = 0;\r\n\r\n /**\r\n * SH degree. 0 = no sh (default). 1 = 3 parameters. 2 = 8 parameters. 3 = 15 parameters.\r\n */\r\n public get shDegree() {\r\n return this._shDegree;\r\n }\r\n\r\n /**\r\n * returns the splats data array buffer that contains in order : postions (3 floats), size (3 floats), color (4 bytes), orientation quaternion (4 bytes)\r\n */\r\n public get splatsData() {\r\n return this._splatsData;\r\n }\r\n\r\n /**\r\n * Set the number of batch (a batch is 16384 splats) after which a display update is performed\r\n * A value of 0 (default) means display update will not happens before splat is ready.\r\n */\r\n public static ProgressiveUpdateAmount = 0;\r\n\r\n /**\r\n * Gets the covariancesA texture\r\n */\r\n public get covariancesATexture() {\r\n return this._covariancesATexture;\r\n }\r\n\r\n /**\r\n * Gets the covariancesB texture\r\n */\r\n public get covariancesBTexture() {\r\n return this._covariancesBTexture;\r\n }\r\n\r\n /**\r\n * Gets the centers texture\r\n */\r\n public get centersTexture() {\r\n return this._centersTexture;\r\n }\r\n\r\n /**\r\n * Gets the colors texture\r\n */\r\n public get colorsTexture() {\r\n return this._colorsTexture;\r\n }\r\n\r\n /**\r\n * Gets the SH textures\r\n */\r\n public get shTextures() {\r\n return this._shTextures;\r\n }\r\n\r\n /**\r\n * set rendering material\r\n */\r\n public override set material(value: Material) {\r\n this._material = value;\r\n this._material.backFaceCulling = true;\r\n this._material.cullBackFaces = false;\r\n value.resetDrawCache();\r\n }\r\n\r\n /**\r\n * get rendering material\r\n */\r\n public override get material(): Nullable<Material> {\r\n return this._material;\r\n }\r\n\r\n /**\r\n * Creates a new gaussian splatting mesh\r\n * @param name defines the name of the mesh\r\n * @param url defines the url to load from (optional)\r\n * @param scene defines the hosting scene (optional)\r\n * @param keepInRam keep datas in ram for editing purpose\r\n */\r\n constructor(name: string, url: Nullable<string> = null, scene: Nullable<Scene> = null, keepInRam: boolean = false) {\r\n super(name, scene);\r\n\r\n const vertexData = new VertexData();\r\n\r\n // Use an intanced quad or triangle. Triangle might be a bit faster because of less shader invocation but I didn't see any difference.\r\n // Keeping both and use triangle for now.\r\n // for quad, use following lines\r\n //vertexData.positions = [-2, -2, 0, 2, -2, 0, 2, 2, 0, -2, 2, 0];\r\n //vertexData.indices = [0, 1, 2, 0, 2, 3];\r\n vertexData.positions = [-3, -2, 0, 3, -2, 0, 0, 4, 0];\r\n vertexData.indices = [0, 1, 2];\r\n vertexData.applyToMesh(this);\r\n\r\n this.subMeshes = [];\r\n // for quad, use following line\r\n //new SubMesh(0, 0, 4, 0, 6, this);\r\n new SubMesh(0, 0, 3, 0, 3, this);\r\n\r\n this.setEnabled(false);\r\n // webGL2 and webGPU support for RG texture with float16 is fine. not webGL1\r\n this._useRGBACovariants = !this.getEngine().isWebGPU && this.getEngine().version === 1.0;\r\n\r\n this._keepInRam = keepInRam;\r\n if (url) {\r\n this.loadFileAsync(url);\r\n }\r\n this._material = new GaussianSplattingMaterial(this.name + \"_material\", this._scene);\r\n }\r\n\r\n /**\r\n * Returns the class name\r\n * @returns \"GaussianSplattingMesh\"\r\n */\r\n public override getClassName(): string {\r\n return \"GaussianSplattingMesh\";\r\n }\r\n\r\n /**\r\n * Returns the total number of vertices (splats) within the mesh\r\n * @returns the total number of vertices\r\n */\r\n public override getTotalVertices(): number {\r\n return this._vertexCount;\r\n }\r\n\r\n /**\r\n * Is this node ready to be used/rendered\r\n * @param completeCheck defines if a complete check (including materials and lights) has to be done (false by default)\r\n * @returns true when ready\r\n */\r\n public override isReady(completeCheck = false): boolean {\r\n if (!super.isReady(completeCheck, true)) {\r\n return false;\r\n }\r\n\r\n if (!this._readyToDisplay) {\r\n // mesh is ready when worker has done at least 1 sorting\r\n this._postToWorker(true);\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /** @internal */\r\n public _postToWorker(forced = false): void {\r\n const frameId = this.getScene().getFrameId();\r\n if ((forced || frameId !== this._frameIdLastUpdate) && this._worker && this._scene.activeCamera && this._canPostToWorker) {\r\n const cameraMatrix = this._scene.activeCamera.getViewMatrix();\r\n this.getWorldMatrix().multiplyToRef(cameraMatrix, this._modelViewMatrix);\r\n cameraMatrix.invertToRef(TmpVectors.Matrix[0]);\r\n this.getWorldMatrix().multiplyToRef(TmpVectors.Matrix[0], TmpVectors.Matrix[1]);\r\n Vector3.TransformNormalToRef(Vector3.Forward(this._scene.useRightHandedSystem), TmpVectors.Matrix[1], TmpVectors.Vector3[2]);\r\n TmpVectors.Vector3[2].normalize();\r\n\r\n const dot = Vector3.Dot(TmpVectors.Vector3[2], this._oldDirection);\r\n if (forced || Math.abs(dot - 1) >= 0.01) {\r\n this._oldDirection.copyFrom(TmpVectors.Vector3[2]);\r\n this._frameIdLastUpdate = frameId;\r\n this._canPostToWorker = false;\r\n this._worker.postMessage({ view: this._modelViewMatrix.m, depthMix: this._depthMix, useRightHandedSystem: this._scene.useRightHandedSystem }, [\r\n this._depthMix.buffer,\r\n ]);\r\n }\r\n }\r\n }\r\n /**\r\n * Triggers the draw call for the mesh. Usually, you don't need to call this method by your own because the mesh rendering is handled by the scene rendering manager\r\n * @param subMesh defines the subMesh to render\r\n * @param enableAlphaMode defines if alpha mode can be changed\r\n * @param effectiveMeshReplacement defines an optional mesh used to provide info for the rendering\r\n * @returns the current mesh\r\n */\r\n public override render(subMesh: SubMesh, enableAlphaMode: boolean, effectiveMeshReplacement?: AbstractMesh): Mesh {\r\n this._postToWorker();\r\n return super.render(subMesh, enableAlphaMode, effectiveMeshReplacement);\r\n }\r\n\r\n private static _TypeNameToEnum(name: string): PLYType {\r\n switch (name) {\r\n case \"float\":\r\n return PLYType.FLOAT;\r\n case \"int\":\r\n return PLYType.INT;\r\n break;\r\n case \"uint\":\r\n return PLYType.UINT;\r\n case \"double\":\r\n return PLYType.DOUBLE;\r\n case \"uchar\":\r\n return PLYType.UCHAR;\r\n }\r\n return PLYType.UNDEFINED;\r\n }\r\n\r\n private static _ValueNameToEnum(name: string): PLYValue {\r\n switch (name) {\r\n case \"min_x\":\r\n return PLYValue.MIN_X;\r\n case \"min_y\":\r\n return PLYValue.MIN_Y;\r\n case \"min_z\":\r\n return PLYValue.MIN_Z;\r\n case \"max_x\":\r\n return PLYValue.MAX_X;\r\n case \"max_y\":\r\n return PLYValue.MAX_Y;\r\n case \"max_z\":\r\n return PLYValue.MAX_Z;\r\n case \"min_scale_x\":\r\n return PLYValue.MIN_SCALE_X;\r\n case \"min_scale_y\":\r\n return PLYValue.MIN_SCALE_Y;\r\n case \"min_scale_z\":\r\n return PLYValue.MIN_SCALE_Z;\r\n case \"max_scale_x\":\r\n return PLYValue.MAX_SCALE_X;\r\n case \"max_scale_y\":\r\n return PLYValue.MAX_SCALE_Y;\r\n case \"max_scale_z\":\r\n return PLYValue.MAX_SCALE_Z;\r\n case \"packed_position\":\r\n return PLYValue.PACKED_POSITION;\r\n case \"packed_rotation\":\r\n return PLYValue.PACKED_ROTATION;\r\n case \"packed_scale\":\r\n return PLYValue.PACKED_SCALE;\r\n case \"packed_color\":\r\n return PLYValue.PACKED_COLOR;\r\n case \"x\":\r\n return PLYValue.X;\r\n case \"y\":\r\n return PLYValue.Y;\r\n case \"z\":\r\n return PLYValue.Z;\r\n case \"scale_0\":\r\n return PLYValue.SCALE_0;\r\n case \"scale_1\":\r\n return PLYValue.SCALE_1;\r\n case \"scale_2\":\r\n return PLYValue.SCALE_2;\r\n case \"diffuse_red\":\r\n case \"red\":\r\n return PLYValue.DIFFUSE_RED;\r\n case \"diffuse_green\":\r\n case \"green\":\r\n return PLYValue.DIFFUSE_GREEN;\r\n case \"diffuse_blue\":\r\n case \"blue\":\r\n return PLYValue.DIFFUSE_BLUE;\r\n case \"f_dc_0\":\r\n return PLYValue.F_DC_0;\r\n case \"f_dc_1\":\r\n return PLYValue.F_DC_1;\r\n case \"f_dc_2\":\r\n return PLYValue.F_DC_2;\r\n case \"f_dc_3\":\r\n return PLYValue.F_DC_3;\r\n case \"opacity\":\r\n return PLYValue.OPACITY;\r\n case \"rot_0\":\r\n return PLYValue.ROT_0;\r\n case \"rot_1\":\r\n return PLYValue.ROT_1;\r\n case \"rot_2\":\r\n return PLYValue.ROT_2;\r\n case \"rot_3\":\r\n return PLYValue.ROT_3;\r\n case \"min_r\":\r\n return PLYValue.MIN_COLOR_R;\r\n case \"min_g\":\r\n return PLYValue.MIN_COLOR_G;\r\n case \"min_b\":\r\n return PLYValue.MIN_COLOR_B;\r\n case \"max_r\":\r\n return PLYValue.MAX_COLOR_R;\r\n case \"max_g\":\r\n return PLYValue.MAX_COLOR_G;\r\n case \"max_b\":\r\n return PLYValue.MAX_COLOR_B;\r\n case \"f_rest_0\":\r\n return PLYValue.SH_0;\r\n case \"f_rest_1\":\r\n return PLYValue.SH_1;\r\n case \"f_rest_2\":\r\n return PLYValue.SH_2;\r\n case \"f_rest_3\":\r\n return PLYValue.SH_3;\r\n case \"f_rest_4\":\r\n return PLYValue.SH_4;\r\n case \"f_rest_5\":\r\n return PLYValue.SH_5;\r\n case \"f_rest_6\":\r\n return PLYValue.SH_6;\r\n case \"f_rest_7\":\r\n return PLYValue.SH_7;\r\n case \"f_rest_8\":\r\n return PLYValue.SH_8;\r\n case \"f_rest_9\":\r\n return PLYValue.SH_9;\r\n case \"f_rest_10\":\r\n return PLYValue.SH_10;\r\n case \"f_rest_11\":\r\n return PLYValue.SH_11;\r\n case \"f_rest_12\":\r\n return PLYValue.SH_12;\r\n case \"f_rest_13\":\r\n return PLYValue.SH_13;\r\n case \"f_rest_14\":\r\n return PLYValue.SH_14;\r\n case \"f_rest_15\":\r\n return PLYValue.SH_15;\r\n case \"f_rest_16\":\r\n return PLYValue.SH_16;\r\n case \"f_rest_17\":\r\n return PLYValue.SH_17;\r\n case \"f_rest_18\":\r\n return PLYValue.SH_18;\r\n case \"f_rest_19\":\r\n return PLYValue.SH_19;\r\n case \"f_rest_20\":\r\n return PLYValue.SH_20;\r\n case \"f_rest_21\":\r\n return PLYValue.SH_21;\r\n case \"f_rest_22\":\r\n return PLYValue.SH_22;\r\n case \"f_rest_23\":\r\n return PLYValue.SH_23;\r\n case \"f_rest_24\":\r\n return PLYValue.SH_24;\r\n case \"f_rest_25\":\r\n return PLYValue.SH_25;\r\n case \"f_rest_26\":\r\n return PLYValue.SH_26;\r\n case \"f_rest_27\":\r\n return PLYValue.SH_27;\r\n case \"f_rest_28\":\r\n return PLYValue.SH_28;\r\n case \"f_rest_29\":\r\n return PLYValue.SH_29;\r\n case \"f_rest_30\":\r\n return PLYValue.SH_30;\r\n case \"f_rest_31\":\r\n return PLYValue.SH_31;\r\n case \"f_rest_32\":\r\n return PLYValue.SH_32;\r\n case \"f_rest_33\":\r\n return PLYValue.SH_33;\r\n case \"f_rest_34\":\r\n return PLYValue.SH_34;\r\n case \"f_rest_35\":\r\n return PLYValue.SH_35;\r\n case \"f_rest_36\":\r\n return PLYValue.SH_36;\r\n case \"f_rest_37\":\r\n return PLYValue.SH_37;\r\n case \"f_rest_38\":\r\n return PLYValue.SH_38;\r\n case \"f_rest_39\":\r\n return PLYValue.SH_39;\r\n case \"f_rest_40\":\r\n return PLYValue.SH_40;\r\n case \"f_rest_41\":\r\n return PLYValue.SH_41;\r\n case \"f_rest_42\":\r\n return PLYValue.SH_42;\r\n case \"f_rest_43\":\r\n return PLYValue.SH_43;\r\n case \"f_rest_44\":\r\n return PLYValue.SH_44;\r\n }\r\n\r\n return PLYValue.UNDEFINED;\r\n }\r\n /**\r\n * Parse a PLY file header and returns metas infos on splats and chunks\r\n * @param data the loaded buffer\r\n * @returns a PLYHeader\r\n */\r\n static ParseHeader(data: ArrayBuffer): PLYHeader | null {\r\n const ubuf = new Uint8Array(data);\r\n const header = new TextDecoder().decode(ubuf.slice(0, 1024 * 10));\r\n const headerEnd = \"end_header\\n\";\r\n const headerEndIndex = header.indexOf(headerEnd);\r\n if (headerEndIndex < 0 || !header) {\r\n // standard splat\r\n return null;\r\n }\r\n const vertexCount = parseInt(/element vertex (\\d+)\\n/.exec(header)![1]);\r\n const chunkElement = /element chunk (\\d+)\\n/.exec(header);\r\n let chunkCount = 0;\r\n if (chunkElement) {\r\n chunkCount = parseInt(chunkElement[1]);\r\n }\r\n let rowVertexOffset = 0;\r\n let rowChunkOffset = 0;\r\n const offsets: Record<string, number> = {\r\n double: 8,\r\n int: 4,\r\n uint: 4,\r\n float: 4,\r\n short: 2,\r\n ushort: 2,\r\n uchar: 1,\r\n list: 0,\r\n };\r\n\r\n const enum ElementMode {\r\n Vertex = 0,\r\n Chunk = 1,\r\n }\r\n let chunkMode = ElementMode.Chunk;\r\n const vertexProperties: PlyProperty[] = [];\r\n const chunkProperties: PlyProperty[] = [];\r\n const filtered = header.slice(0, headerEndIndex).split(\"\\n\");\r\n let shDegree = 0;\r\n for (const prop of filtered) {\r\n if (prop.startsWith(\"property \")) {\r\n const [, typeName, name] = prop.split(\" \");\r\n\r\n const value = GaussianSplattingMesh._ValueNameToEnum(name);\r\n // SH degree 1,2 or 3 for 9, 24 or 45 values\r\n if (value >= PLYValue.SH_44) {\r\n shDegree = 3;\r\n } else if (value >= PLYValue.SH_24) {\r\n shDegree = 2;\r\n } else if (value >= PLYValue.SH_8) {\r\n shDegree = 1;\r\n }\r\n const type = GaussianSplattingMesh._TypeNameToEnum(typeName);\r\n if (chunkMode == ElementMode.Chunk) {\r\n chunkProperties.push({ value, type, offset: rowChunkOffset });\r\n rowChunkOffset += offsets[typeName];\r\n } else if (chunkMode == ElementMode.Vertex) {\r\n vertexProperties.push({ value, type, offset: rowVertexOffset });\r\n rowVertexOffset += offsets[typeName];\r\n }\r\n\r\n if (!offsets[typeName]) {\r\n Logger.Warn(`Unsupported property type: ${typeName}.`);\r\n }\r\n } else if (prop.startsWith(\"element \")) {\r\n const [, type] = prop.split(\" \");\r\n if (type == \"chunk\") {\r\n chunkMode = ElementMode.Chunk;\r\n } else if (type == \"vertex\") {\r\n chunkMode = ElementMode.Vertex;\r\n }\r\n }\r\n }\r\n\r\n const dataView = new DataView(data, headerEndIndex + headerEnd.length);\r\n const buffer = new ArrayBuffer(GaussianSplattingMesh._RowOutputLength * vertexCount);\r\n\r\n let shBuffer = null;\r\n let shCoefficientCount = 0;\r\n if (shDegree) {\r\n const shVectorCount = (shDegree + 1) * (shDegree + 1) - 1;\r\n shCoefficientCount = shVectorCount * 3;\r\n shBuffer = new ArrayBuffer(shCoefficientCount * vertexCount);\r\n }\r\n\r\n return {\r\n vertexCount: vertexCount,\r\n chunkCount: chunkCount,\r\n rowVertexLength: rowVertexOffset,\r\n rowChunkLength: rowChunkOffset,\r\n vertexProperties: vertexProperties,\r\n chunkProperties: chunkProperties,\r\n dataView: dataView,\r\n buffer: buffer,\r\n shDegree: shDegree,\r\n shCoefficientCount: shCoefficientCount,\r\n shBuffer: shBuffer,\r\n };\r\n }\r\n private static _GetCompressedChunks(header: PLYHeader, offset: { value: number }): Array<CompressedPLYChunk> | null {\r\n if (!header.chunkCount) {\r\n return null;\r\n }\r\n const dataView = header.dataView;\r\n const compressedChunks = new Array<CompressedPLYChunk>(header.chunkCount);\r\n for (let i = 0; i < header.chunkCount; i++) {\r\n const currentChunk = {\r\n min: new Vector3(),\r\n max: new Vector3(),\r\n minScale: new Vector3(),\r\n maxScale: new Vector3(),\r\n minColor: new Vector3(0, 0, 0),\r\n maxColor: new Vector3(1, 1, 1),\r\n };\r\n compressedChunks[i] = currentChunk;\r\n for (let propertyIndex = 0; propertyIndex < header.chunkProperties.length; propertyIndex++) {\r\n const property = header.chunkProperties[propertyIndex];\r\n let value;\r\n switch (property.type) {\r\n case PLYType.FLOAT:\r\n value = dataView.getFloat32(property.offset + offset.value, true);\r\n break;\r\n default:\r\n continue;\r\n }\r\n\r\n switch (property.value) {\r\n case PLYValue.MIN_X:\r\n currentChunk.min.x = value;\r\n break;\r\n case PLYValue.MIN_Y:\r\n currentChunk.min.y = value;\r\n break;\r\n case PLYValue.MIN_Z:\r\n currentChunk.min.z = value;\r\n break;\r\n case PLYValue.MAX_X:\r\n currentChunk.max.x = value;\r\n break;\r\n case PLYValue.MAX_Y:\r\n currentChunk.max.y = value;\r\n break;\r\n case PLYValue.MAX_Z:\r\n currentChunk.max.z = value;\r\n break;\r\n case PLYValue.MIN_SCALE_X:\r\n currentChunk.minScale.x = value;\r\n break;\r\n case PLYValue.MIN_SCALE_Y:\r\n currentChunk.minScale.y = value;\r\n break;\r\n case PLYValue.MIN_SCALE_Z:\r\n currentChunk.minScale.z = value;\r\n break;\r\n case PLYValue.MAX_SCALE_X:\r\n currentChunk.maxScale.x = value;\r\n break;\r\n case PLYValue.MAX_SCALE_Y:\r\n currentChunk.maxScale.y = value;\r\n break;\r\n case PLYValue.MAX_SCALE_Z:\r\n currentChunk.maxScale.z = value;\r\n break;\r\n case PLYValue.MIN_COLOR_R:\r\n currentChunk.minColor.x = value;\r\n break;\r\n case PLYValue.MIN_COLOR_G:\r\n currentChunk.minColor.y = value;\r\n break;\r\n case PLYValue.MIN_COLOR_B:\r\n currentChunk.minColor.z = value;\r\n break;\r\n case PLYValue.MAX_COLOR_R:\r\n currentChunk.maxColor.x = value;\r\n break;\r\n case PLYValue.MAX_COLOR_G:\r\n currentChunk.maxColor.y = value;\r\n break;\r\n case PLYValue.MAX_COLOR_B:\r\n currentChunk.maxColor.z = value;\r\n break;\r\n }\r\n }\r\n offset.value += header.rowChunkLength;\r\n }\r\n return compressedChunks;\r\n }\r\n\r\n private static _GetSplat(header: PLYHeader, index: number, compressedChunks: Array<CompressedPLYChunk> | null, offset: { value: number }): void {\r\n const q = TmpVectors.Quaternion[0];\r\n const temp3 = TmpVectors.Vector3[0];\r\n\r\n const rowOutputLength = GaussianSplattingMesh._RowOutputLength;\r\n const buffer = header.buffer;\r\n const dataView = header.dataView;\r\n const position = new Float32Array(buffer, index * rowOutputLength, 3);\r\n const scale = new Float32Array(buffer, index * rowOutputLength + 12, 3);\r\n const rgba = new Uint8ClampedArray(buffer, index * rowOutputLength + 24, 4);\r\n const rot = new Uint8ClampedArray(buffer, index * rowOutputLength + 28, 4);\r\n let sh = null;\r\n if (header.shBuffer) {\r\n sh = new Uint8ClampedArray(header.shBuffer, index * header.shCoefficientCount, header.shCoefficientCount);\r\n }\r\n const chunkIndex = index >> 8;\r\n let r0: number = 255;\r\n let r1: number = 0;\r\n let r2: number = 0;\r\n let r3: number = 0;\r\n\r\n for (let propertyIndex = 0; propertyIndex < header.vertexProperties.length; propertyIndex++) {\r\n const property = header.vertexProperties[propertyIndex];\r\n let value;\r\n switch (property.type) {\r\n case PLYType.FLOAT:\r\n value = dataView.getFloat32(offset.value + property.offset, true);\r\n break;\r\n case PLYType.INT:\r\n value = dataView.getInt32(offset.value + property.offset, true);\r\n break;\r\n case PLYType.UINT:\r\n value = dataView.getUint32(offset.value + property.offset, true);\r\n break;\r\n case PLYType.DOUBLE:\r\n value = dataView.getFloat64(offset.value + property.offset, true);\r\n break;\r\n case PLYType.UCHAR:\r\n value = dataView.getUint8(offset.value + property.offset);\r\n break;\r\n default:\r\n continue;\r\n }\r\n\r\n switch (property.value) {\r\n case PLYValue.PACKED_POSITION:\r\n {\r\n const compressedChunk = compressedChunks![chunkIndex];\r\n unpack111011(value, temp3);\r\n position[0] = Scalar.Lerp(compressedChunk.min.x, compressedChunk.max.x, temp3.x);\r\n position[1] = Scalar.Lerp(compressedChunk.min.y, compressedChunk.max.y, temp3.y);\r\n position[2] = Scalar.Lerp(compressedChunk.min.z, compressedChunk.max.z, temp3.z);\r\n }\r\n break;\r\n case PLYValue.PACKED_ROTATION:\r\n {\r\n unpackRot(value, q);\r\n r0 = q.w;\r\n r1 = -q.z;\r\n r2 = q.y;\r\n r3 = -q.x;\r\n }\r\n break;\r\n case PLYValue.PACKED_SCALE:\r\n {\r\n const compressedChunk = compressedChunks![chunkIndex];\r\n unpack111011(value, temp3);\r\n scale[0] = Math.exp(Scalar.Lerp(compressedChunk.minScale.x, compressedChunk.maxScale.x, temp3.x));\r\n scale[1] = Math.exp(Scalar.Lerp(compressedChunk.minScale.y, compressedChunk.maxScale.y, temp3.y));\r\n scale[2] = Math.exp(Scalar.Lerp(compressedChunk.minScale.z, compressedChunk.maxScale.z, temp3.z));\r\n }\r\n break;\r\n case PLYValue.PACKED_COLOR:\r\n {\r\n const compressedChunk = compressedChunks![chunkIndex];\r\n unpack8888(value, rgba);\r\n rgba[0] = Scalar.Lerp(compressedChunk.minColor.x, compressedChunk.maxColor.x, rgba[0] / 255) * 255;\r\n rgba[1] = Scalar.Lerp(compressedChunk.minColor.y, compressedChunk.maxColor.y, rgba[1] / 255) * 255;\r\n rgba[2] = Scalar.Lerp(compressedChunk.minColor.z, compressedChunk.maxColor.z, rgba[2] / 255) * 255;\r\n }\r\n break;\r\n case PLYValue.X:\r\n position[0] = value;\r\n break;\r\n case PLYValue.Y:\r\n position[1] = value;\r\n break;\r\n case PLYValue.Z:\r\n position[2] = value;\r\n break;\r\n case PLYValue.SCALE_0:\r\n scale[0] = Math.exp(value);\r\n break;\r\n case PLYValue.SCALE_1:\r\n scale[1] = Math.exp(value);\r\n break;\r\n case PLYValue.SCALE_2:\r\n scale[2] = Math.exp(value);\r\n break;\r\n case PLYValue.DIFFUSE_RED:\r\n rgba[0] = value;\r\n break;\r\n case PLYValue.DIFFUSE_GREEN:\r\n rgba[1] = value;\r\n break;\r\n case PLYValue.DIFFUSE_BLUE:\r\n rgba[2] = value;\r\n break;\r\n case PLYValue.F_DC_0:\r\n rgba[0] = (0.5 + GaussianSplattingMesh._SH_C0 * value) * 255;\r\n break;\r\n case PLYValue.F_DC_1:\r\n rgba[1] = (0.5 + GaussianSplattingMesh._SH_C0 * value) * 255;\r\n break;\r\n case PLYValue.F_DC_2:\r\n rgba[2] = (0.5 + GaussianSplattingMesh._SH_C0 * value) * 255;\r\n break;\r\n case PLYValue.F_DC_3:\r\n rgba[3] = (0.5 + GaussianSplattingMesh._SH_C0 * value) * 255;\r\n break;\r\n case PLYValue.OPACITY:\r\n rgba[3] = (1 / (1 + Math.exp(-value))) * 255;\r\n break;\r\n case PLYValue.ROT_0:\r\n r0 = value;\r\n break;\r\n case PLYValue.ROT_1:\r\n r1 = value;\r\n break;\r\n case PLYValue.ROT_2:\r\n r2 = value;\r\n break;\r\n case PLYValue.ROT_3:\r\n r3 = value;\r\n break;\r\n }\r\n if (sh && property.value >= PLYValue.SH_0 && property.value <= PLYValue.SH_44) {\r\n const clampedValue = Scalar.Clamp(value * 127.5 + 127.5, 0, 255);\r\n const shIndex = property.value - PLYValue.SH_0;\r\n sh[shIndex] = clampedValue;\r\n }\r\n }\r\n\r\n q.set(r1, r2, r3, r0);\r\n q.normalize();\r\n rot[0] = q.w * 128 + 128;\r\n rot[1] = q.x * 128 + 128;\r\n rot[2] = q.y * 128 + 128;\r\n rot[3] = q.z * 128 + 128;\r\n offset.value += header.rowVertexLength;\r\n }\r\n\r\n /**\r\n * Converts a .ply data with SH coefficients splat\r\n * if data array buffer is not ply, returns the original buffer\r\n * @param data the .ply data to load\r\n * @param useCoroutine use coroutine and yield\r\n * @returns the loaded splat buffer and optional array of sh coefficients\r\n */\r\n public static *ConvertPLYWithSHToSplat(data: ArrayBuffer, useCoroutine = false) {\r\n const header = GaussianSplattingMesh.ParseHeader(data);\r\n if (!header) {\r\n return { buffer: data };\r\n }\r\n\r\n const offset = { value: 0 };\r\n const compressedChunks = GaussianSplattingMesh._GetCompressedChunks(header, offset);\r\n\r\n for (let i = 0; i < header.vertexCount; i++) {\r\n GaussianSplattingMesh._GetSplat(header, i, compressedChunks, offset);\r\n if (i % GaussianSplattingMesh._PlyConversionBatchSize === 0 && useCoroutine) {\r\n yield;\r\n }\r\n }\r\n\r\n let sh = null;\r\n // make SH texture buffers\r\n if (header.shDegree && header.shBuffer) {\r\n const textureCount = Math.ceil(header.shCoefficientCount / 16); // 4 components can be stored per texture, 4 sh per component\r\n let shIndexRead = 0;\r\n const ubuf = new Uint8Array(header.shBuffer);\r\n\r\n // sh is an array of uint8array that will be used to create sh textures\r\n sh = [];\r\n\r\n const splatCount = header.vertexCount;\r\n const engine = EngineStore.LastCreatedEngine;\r\n if (engine) {\r\n const width = engine.getCaps().maxTextureSize;\r\n const height = Math.ceil(splatCount / width);\r\n // create array for the number of textures needed.\r\n for (let textureIndex = 0; textureIndex < textureCount; textureIndex++) {\r\n const texture = new Uint8Array(height * width * 4 * 4); // 4 components per texture, 4 sh per component\r\n sh.push(texture);\r\n }\r\n\r\n for (let i = 0; i < splatCount; i++) {\r\n for (let shIndexWrite = 0; shIndexWrite < header.shCoefficientCount; shIndexWrite++) {\r\n const shValue = ubuf[shIndexRead++];\r\n\r\n const textureIndex = Math.floor(shIndexWrite / 16);\r\n const shArray = sh[textureIndex];\r\n\r\n const byteIndexInTexture = shIndexWrite % 16; // [0..15]\r\n const offsetPerSplat = i * 16; // 16 sh values per texture per splat.\r\n shArray[byteIndexInTexture + offsetPerSplat] = shValue;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return { buffer: header.buffer, sh: sh };\r\n }\r\n\r\n /**\r\n * Converts a .ply data array buffer to splat\r\n * if data array buffer is not ply, returns the original buffer\r\n * @param data the .ply data to load\r\n * @param useCoroutine use coroutine and yield\r\n * @returns the loaded splat buffer without SH coefficient, whether ply contains or not SH.\r\n */\r\n public static *ConvertPLYToSplat(data: ArrayBuffer, useCoroutine = false) {\r\n const header = GaussianSplattingMesh.ParseHeader(data);\r\n if (!header) {\r\n return data;\r\n }\r\n\r\n const offset = { value: 0 };\r\n const compressedChunks = GaussianSplattingMesh._GetCompressedChunks(header, offset);\r\n\r\n for (let i = 0; i < header.vertexCount; i++) {\r\n GaussianSplattingMesh._GetSplat(header, i, compressedChunks, offset);\r\n if (i % GaussianSplattingMesh._PlyConversionBatchSize === 0 && useCoroutine) {\r\n yield;\r\n }\r\n }\r\n\r\n return header.buffer;\r\n }\r\n\r\n /**\r\n * Converts a .ply data array buffer to splat\r\n * if data array buffer is not ply, returns the original buffer\r\n * @param data the .ply data to load\r\n * @returns the loaded splat buffer\r\n */\r\n public static async ConvertPLYToSplatAsync(data: ArrayBuffer) {\r\n return runCoroutineAsync(GaussianSplattingMesh.ConvertPLYToSplat(data, true), createYieldingScheduler());\r\n }\r\n\r\n /**\r\n * Converts a .ply with SH data array buffer to splat\r\n * if data array buffer is not ply, returns the original buffer\r\n * @param data the .ply data to load\r\n * @returns the loaded splat buffer with SH\r\n */\r\n public static async ConvertPLYWithSHToSplatAsync(data: ArrayBuffer) {\r\n return runCoroutineAsync(GaussianSplattingMesh.ConvertPLYWithSHToSplat(data, true), createYieldingScheduler());\r\n }\r\n /**\r\n * Loads a .splat Gaussian Splatting array buffer asynchronously\r\n * @param data arraybuffer containing splat file\r\n * @returns a promise that resolves when the operation is complete\r\n */\r\n\r\n public loadDataAsync(data: ArrayBuffer): Promise<void> {\r\n return this.updateDataAsync(data);\r\n }\r\n\r\n /**\r\n * Loads a .splat Gaussian or .ply Splatting file asynchronously\r\n * @param url path to the splat file to load\r\n * @returns a promise that resolves when the operation is complete\r\n * @deprecated Please use SceneLoader.ImportMeshAsync instead\r\n */\r\n public loadFileAsync(url: string): Promise<void> {\r\n return Tools.LoadFileAsync(url, true).then(async (plyBuffer) => {\r\n (GaussianSplattingMesh.ConvertPLYWithSHToSplatAsync(plyBuffer) as any).then((splatsData: PLYConversionBuffers) => {\r\n this.updateDataAsync(splatsData.buffer, splatsData.sh);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Releases resources associated with this mesh.\r\n * @param doNotRecurse Set to true to not recurse into each children (recurse into each children by default)\r\n */\r\n public override dispose(doNotRecurse?: boolean): void {\r\n this._covariancesATexture?.dispose();\r\n this._covariancesBTexture?.dispose();\r\n this._centersTexture?.dispose();\r\n this._colorsTexture?.dispose();\r\n if (this._shTextures) {\r\n this._shTextures.forEach((shTexture) => {\r\n shTexture.dispose();\r\n });\r\n }\r\n\r\n this._covariancesATexture = null;\r\n this._covariancesBTexture = null;\r\n this._centersTexture = null;\r\n this._colorsTexture = null;\r\n this._shTextures = null;\r\n\r\n this._worker?.terminate();\r\n this._worker = null;\r\n\r\n super.dispose(doNotRecurse, true);\r\n }\r\n\r\n private _copyTextures(source: GaussianSplattingMesh): void {\r\n this._covariancesATexture = source.covariancesATexture?.clone()!;\r\n this._covariancesBTexture = source.covariancesBTexture?.clone()!;\r\n this._centersTexture = source.centersTexture?.clone()!;\r\n this._colorsTexture = source.colorsTexture?.clone()!;\r\n if (source._shTextures) {\r\n this._shTextures = [];\r\n this._shTextures.forEach((shTexture) => {\r\n this._shTextures?.push(shTexture.clone()!);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Returns a new Mesh object generated from the current mesh properties.\r\n * @param name is a string, the name given to the new mesh\r\n * @returns a new Gaussian Splatting Mesh\r\n */\r\n public override clone(name: string = \"\"): GaussianSplattingMesh {\r\n const newGS = new GaussianSplattingMesh(name, undefined, this.getScene());\r\n newGS._copySource(this);\r\n newGS.makeGeometryUnique();\r\n newGS._vertexCount = this._vertexCount;\r\n newGS._copyTextures(this);\r\n newGS._modelViewMatrix = Matrix.Identity();\r\n newGS._splatPositions = this._splatPositions;\r\n newGS._readyToDisplay = false;\r\n newGS._instanciateWorker();\r\n\r\n const binfo = this.getBoundingInfo();\r\n newGS.getBoundingInfo().reConstruct(binfo.minimum, binfo.maximum, this.getWorldMatrix());\r\n\r\n newGS.forcedInstanceCount = newGS._vertexCount;\r\n newGS.setEnabled(true);\r\n return newGS;\r\n }\r\n\r\n private static _CreateWorker = function (self: Worker) {\r\n let vertexCount = 0;\r\n let positions: Float32Array;\r\n let depthMix: BigInt64Array;\r\n let indices: Uint32Array;\r\n let floatMix: Float32Array;\r\n\r\n self.onmessage = (e: any) => {\r\n // updated on init\r\n if (e.data.positions) {\r\n positions = e.data.positions;\r\n vertexCount = e.data.vertexCount;\r\n }\r\n // udpate on view changed\r\n else {\r\n const viewProj = e.data.view;\r\n if (!positions || !viewProj) {\r\n // Sanity check, it shouldn't happen!\r\n throw new Error(\"positions or view is not defined!\");\r\n }\r\n\r\n depthMix = e.data.depthMix;\r\n indices = new Uint32Array(depthMix.buffer);\r\n floatMix = new Float32Array(depthMix.buffer);\r\n\r\n // Sort\r\n for (let j = 0; j < vertexCount; j++) {\r\n indices[2 * j] = j;\r\n }\r\n\r\n let depthFactor = -1;\r\n if (e.data.useRightHandedSystem) {\r\n depthFactor = 1;\r\n }\r\n\r\n for (let j = 0; j < vertexCount; j++) {\r\n floatMix[2 * j + 1] = 10000 + (viewProj[2] * positions[4 * j + 0] + viewProj[6] * positions[4 * j + 1] + viewProj[10] * positions[4 * j + 2]) * depthFactor;\r\n }\r\n\r\n depthMix.sort();\r\n\r\n self.postMessage({ depthMix }, [depthMix.buffer]);\r\n }\r\n };\r\n };\r\n\r\n private _makeSplat(\r\n index: number,\r\n fBuffer: Float32Array,\r\n uBuffer: Uint8Array,\r\n covA: Uint16Array,\r\n covB: Uint16Array,\r\n colorArray: Uint8Array,\r\n minimum: Vector3,\r\n maximum: Vector3\r\n ): void {\r\n const matrixRotation = TmpVectors.Matrix[0];\r\n const matrixScale = TmpVectors.Matrix[1];\r\n const quaternion = TmpVectors.Quaternion[0];\r\n const covBSItemSize = this._useRGBACovariants ? 4 : 2;\r\n\r\n const x = fBuffer[8 * index + 0];\r\n const y = -fBuffer[8 * index + 1];\r\n const z = fBuffer[8 * index + 2];\r\n\r\n this._splatPositions![4 * index + 0] = x;\r\n this._splatPositions![4 * index + 1] = y;\r\n this._splatPositions![4 * index + 2] = z;\r\n\r\n minimum.minimizeInPlaceFromFloats(x, y, z);\r\n maximum.maximizeInPlaceFromFloats(x, y, z);\r\n\r\n quaternion.set(\r\n (uBuffer[32 * index + 28 + 1] - 127.5) / 127.5,\r\n (uBuffer[32 * index + 28 + 2] - 127.5) / 127.5,\r\n (uBuffer[32 * index + 28 + 3] - 127.5) / 127.5,\r\n -(uBuffer[32 * index + 28 + 0] - 127.5) / 127.5\r\n );\r\n quaternion.toRotationMatrix(matrixRotation);\r\n\r\n Matrix.ScalingToRef(fBuffer[8 * index + 3 + 0] * 2, fBuffer[8 * index + 3 + 1] * 2, fBuffer[8 * index + 3 + 2] * 2, matrixScale);\r\n\r\n const M = matrixRotation.multiplyToRef(matrixScale, TmpVectors.Matrix[0]).m;\r\n\r\n const covariances = this._tmpCovariances;\r\n covariances[0] = M[0] * M[0] + M[1] * M[1] + M[2] * M[2];\r\n covariances[1] = M[0] * M[4] + M[1] * M[5] + M[2] * M[6];\r\n covariances[2] = M[0] * M[8] + M[1] * M[9] + M[2] * M[10];\r\n covariances[3] = M[4] * M[4] + M[5] * M[5] + M[6] * M[6];\r\n covariances[4] = M[4] * M[8] + M[5] * M[9] + M[6] * M[10];\r\n covariances[5] = M[8] * M[8] + M[9] * M[9] + M[10] * M[10];\r\n\r\n // normalize covA, covB\r\n let factor = -10000;\r\n for (let covIndex = 0; covIndex < 6; covIndex++) {\r\n factor = Math.max(factor, Math.abs(covariances[covIndex]));\r\n }\r\n\r\n this._splatPositions![4 * index + 3] = factor;\r\n const transform = factor;\r\n\r\n covA[index * 4 + 0] = ToHalfFloat(covariances[0] / transform);\r\n covA[index * 4 + 1] = ToHalfFloat(covariances[1] / transform);\r\n covA[index * 4 + 2] = ToHalfFloat(covariances[2] / transform);\r\n covA[index * 4 + 3] = ToHalfFloat(covariances[3] / transform);\r\n covB[index * covBSItemSize + 0] = ToHalfFloat(covariances[4] / transform);\r\n covB[index * covBSItemSize + 1] = ToHalfFloat(covariances[5] / transform);\r\n\r\n // colors\r\n colorArray[index * 4 + 0] = uBuffer[32 * index + 24 + 0];\r\n colorArray[index * 4 + 1] = uBuffer[32 * index + 24 + 1];\r\n colorArray[index * 4 + 2] = uBuffer[32 * index + 24 + 2];\r\n colorArray[index * 4 + 3] = uBuffer[32 * index + 24 + 3];\r\n }\r\n\r\n private _updateTextures(covA: Uint16Array, covB: Uint16Array, colorArray: Uint8Array, sh?: Uint8Array[]): void {\r\n const textureSize = this._getTextureSize(this._vertexCount);\r\n // Update the textures\r\n const createTextureFromData = (data: Float32Array, width: number, height: number, format: number) => {\r\n return new RawTexture(data, width, height, format, this._scene, false, false, Constants.TEXTURE_BILINEAR_SAMPLINGMODE, Constants.TEXTURETYPE_FLOAT);\r\n };\r\n\r\n const createTextureFromDataU8 = (data: Uint8Array, width: number, height: number, format: number) => {\r\n return new RawTexture(data, width, height, format, this._scene, false, false, Constants.TEXTURE_BILINEAR_SAMPLINGMODE, Constants.TEXTURETYPE_UNSIGNED_BYTE);\r\n };\r\n\r\n const createTextureFromDataU32 = (data: Uint32Array, width: number, height: number, format: number) => {\r\n return new RawTexture(data, width, height, format, this._scene, false, false, Constants.TEXTURE_NEAREST_SAMPLINGMODE, Constants.TEXTURETYPE_UNSIGNED_INTEGER);\r\n };\r\n\r\n const createTextureFromDataF16 = (data: Uint16Array, width: number, height: number, format: number) => {\r\n return new RawTexture(data, width, height, format, this._scene, false, false, Constants.TEXTURE_BILINEAR_SAMPLINGMODE, Constants.TEXTURETYPE_HALF_FLOAT);\r\n };\r\n\r\n if (this._covariancesATexture) {\r\n this._delayedTextureUpdate = { covA: covA, covB: covB, colors: colorArray, centers: this._splatPositions!, sh: sh };\r\n const positions = Float32Array.from(this._splatPositions!);\r\n const vertexCount = this._vertexCount;\r\n this._worker!.postMessage({ positions, vertexCount }, [positions.buffer]);\r\n\r\n this._postToWorker(true);\r\n } else {\r\n this._covariancesATexture = createTextureFromDataF16(covA, textureSize.x, textureSize.y, Constants.TEXTUREFORMAT_RGBA);\r\n this._covariancesBTexture = createTextureFromDataF16(\r\n covB,\r\n textureSize.x,\r\n textureSize.y,\r\n this._useRGBACovariants ? Constants.TEXTUREFORMAT_RGBA : Constants.TEXTUREFORMAT_RG\r\n );\r\n this._centersTexture = createTextureFromData(this._splatPositions!, textureSize.x, textureSize.y, Constants.TEXTUREFORMAT_RGBA);\r\n this._colorsTexture = createTextureFromDataU8(colorArray, textureSize.x, textureSize.y, Constants.TEXTUREFORMAT_RGBA);\r\n if (sh) {\r\n this._shTextures = [];\r\n sh.forEach((shData) => {\r\n const buffer = new Uint32Array(shData.buffer);\r\n const shTexture = createTextureFromDataU32(buffer, textureSize.x, textureSize.y, Constants.TEXTUREFORMAT_RGBA_INTEGER);\r\n shTexture.wrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n shTexture.wrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n this._shTextures!.push(shTexture);\r\n });\r\n }\r\n this._instanciateWorker();\r\n }\r\n }\r\n\r\n private *_updateData(data: ArrayBuffer, isAsync: boolean, sh?: Uint8Array[]): Coroutine<void> {\r\n // if a covariance texture is present, then it's not a creation but an update\r\n if (!this._covariancesATexture) {\r\n this._readyToDisplay = false;\r\n }\r\n\r\n // Parse the data\r\n const uBuffer = new Uint8Array(data);\r\n const fBuffer = new Float32Array(uBuffer.buffer);\r\n\r\n if (this._keepInRam) {\r\n this._splatsData = data;\r\n if (sh) {\r\n this._sh = sh;\r\n }\r\n }\r\n\r\n const vertexCount = uBuffer.length / GaussianSplattingMesh._RowOutputLength;\r\n if (vertexCount != this._vertexCount) {\r\n this._updateSplatIndexBuffer(vertexCount);\r\n }\r\n this._vertexCount = vertexCount;\r\n // degree == 1 for 1 texture (3 terms), 2 for 2 textures(8 terms) and 3 for 3 textures (15 terms)\r\n this._shDegree = sh ? sh.length : 0;\r\n\r\n const textureSize = this._getTextureSize(vertexCount);\r\n const textureLength = textureSize.x * textureSize.y;\r\n const lineCountUpdate = GaussianSplattingMesh.ProgressiveUpdateAmount ?? textureSize.y;\r\n const textureLengthPerUpdate = textureSize.x * lineCountUpdate;\r\n\r\n this._splatPositions = new Float32Array(4 * textureLength);\r\n const covA = new Uint16Array(textureLength * 4);\r\n const covB = new Uint16Array((this._useRGBACovariants ? 4 : 2) * textureLength);\r\n const colorArray = new Uint8Array(textureLength * 4);\r\n\r\n const minimum = new Vector3(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\r\n const maximum = new Vector3(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);\r\n\r\n if (GaussianSplattingMesh.ProgressiveUpdateAmount) {\r\n // create textures with not filled-yet array, then update directly portions of it\r\n this._updateTextures(covA, covB, colorArray, sh);\r\n this.setEnabled(true);\r\n\r\n const partCount = Math.ceil(textureSize.y / lineCountUpdate);\r\n for (let partIndex = 0; partIndex < partCount; partIndex++) {\r\n const updateLine = partIndex * lineCountUpdate;\r\n const splatIndexBase = updateLine * textureSize.x;\r\n for (let i = 0; i < textureLengthPerUpdate; i++) {\r\n this._makeSplat(splatIndexBase + i, fBuffer, uBuffer, covA, covB, colorArray, minimum, maximum);\r\n }\r\n this._updateSubTextures(this._splatPositions, covA, covB, colorArray, updateLine, Math.min(lineCountUpdate, textureSize.y - updateLine));\r\n // Update the binfo\r\n this.getBoundingInfo().reConstruct(minimum, maximum, this.getWorldMatrix());\r\n if (isAsync) {\r\n yield;\r\n }\r\n }\r\n\r\n // sort will be dirty here as just finished filled positions will not be sorted\r\n const positions = Float32Array.from(this._splatPositions!);\r\n const vertexCount = this._vertexCount;\r\n this._worker!.postMessage({ positions, vertexCount }, [positions.buffer]);\r\n this._sortIsDirty = true;\r\n } else {\r\n for (let i = 0; i < vertexCount; i++) {\r\n this._makeSplat(i, fBuffer, uBuffer, covA, covB, colorArray, minimum, maximum);\r\n if (isAsync && i % GaussianSplattingMesh._SplatBatchSize === 0) {\r\n yield;\r\n }\r\n }\r\n // textures\r\n this._updateTextures(covA, covB, colorArray, sh);\r\n // Update the binfo\r\n this.getBoundingInfo().reConstruct(minimum, maximum, this.getWorldMatrix());\r\n this.setEnabled(true);\r\n }\r\n this._postToWorker(true);\r\n }\r\n\r\n /**\r\n * Update asynchronously the buffer\r\n * @param data array buffer containing center, color, orientation and scale of splats\r\n * @param sh optional array of uint8 array for SH data\r\n * @returns a promise\r\n */\r\n public async updateDataAsync(data: ArrayBuffer, sh?: Uint8Array[]): Promise<void> {\r\n return runCoroutineAsync(this._updateData(data, true, sh), createYieldingScheduler());\r\n }\r\n\r\n /**\r\n * @experimental\r\n * Update data from GS (position, orientation, color, scaling)\r\n * @param data array that contain all the datas\r\n * @param sh optional array of uint8 array for SH data\r\n */\r\n public updateData(data: ArrayBuffer, sh?: Uint8Array[]): void {\r\n runCoroutineSync(this._updateData(data, false, sh));\r\n }\r\n\r\n /**\r\n * Refreshes the bounding info, taking into account all the thin instances defined\r\n * @returns the current Gaussian Splatting\r\n */\r\n public override refreshBoundingInfo(): Mesh {\r\n this.thinInstanceRefreshBoundingInfo(false);\r\n return this;\r\n }\r\n\r\n // in case size is different\r\n private _updateSplatIndexBuffer(vertexCount: number): void {\r\n if (!this._splatIndex || vertexCount > this._splatIndex.length) {\r\n this._splatIndex = new Float32Array(vertexCount);\r\n\r\n this.thinInstanceSetBuffer(\"splatIndex\", this._splatIndex, 1, false);\r\n }\r\n this.forcedInstanceCount = vertexCount;\r\n }\r\n\r\n private _updateSubTextures(centers: Float32Array, covA: Uint16Array, covB: Uint16Array, colors: Uint8Array, lineStart: number, lineCount: number, sh?: Uint8Array[]): void {\r\n const updateTextureFromData = (texture: BaseTexture, data: ArrayBufferView, width: number, lineStart: number, lineCount: number) => {\r\n (this.getEngine() as ThinEngine).updateTextureData(texture.getInternalTexture()!, data, 0, lineStart, width, lineCount, 0, 0, false);\r\n };\r\n\r\n const textureSize = this._getTextureSize(this._vertexCount);\r\n const covBSItemSize = this._useRGBACovariants ? 4 : 2;\r\n const texelStart = lineStart * textureSize.x;\r\n const texelCount = lineCount * textureSize.x;\r\n const covAView = new Uint16Array(covA.buffer, texelStart * 4 * Uint16Array.BYTES_PER_ELEMENT, texelCount * 4);\r\n const covBView = new Uint16Array(covB.buffer, texelStart * covBSItemSize * Uint16Array.BYTES_PER_ELEMENT, texelCount * covBSItemSize);\r\n const colorsView = new Uint8Array(colors.buffer, texelStart * 4, texelCount * 4);\r\n const centersView = new Float32Array(centers.buffer, texelStart * 4 * Float32Array.BYTES_PER_ELEMENT, texelCount * 4);\r\n updateTextureFromData(this._covariancesATexture!, covAView, textureSize.x, lineStart, lineCount);\r\n updateTextureFromData(this._covariancesBTexture!, covBView, textureSize.x, lineStart, lineCount);\r\n updateTextureFromData(this._centersTexture!, centersView, textureSize.x, lineStart, lineCount);\r\n updateTextureFromData(this._colorsTexture!, colorsView, textureSize.x, lineStart, lineCount);\r\n if (sh) {\r\n for (let i = 0; i < sh.length; i++) {\r\n const componentCount = 4;\r\n const shView = new Uint8Array(this._sh![i].buffer, texelStart * componentCount, texelCount * componentCount);\r\n updateTextureFromData(this._shTextures![i], shView, textureSize.x, lineStart, lineCount);\r\n }\r\n }\r\n }\r\n private _instanciateWorker(): void {\r\n if (!this._vertexCount) {\r\n return;\r\n }\r\n this._updateSplatIndexBuffer(this._vertexCount);\r\n\r\n // Start the worker thread\r\n this._worker?.terminate();\r\n this._worker = new Worker(\r\n URL.createObjectURL(\r\n new Blob([\"(\", GaussianSplattingMesh._CreateWorker.toString(), \")(self)\"], {\r\n type: \"application/javascript\",\r\n })\r\n )\r\n );\r\n\r\n this._depthMix = new BigInt64Array(this._vertexCount);\r\n const positions = Float32Array.from(this._splatPositions!);\r\n const vertexCount = this._vertexCount;\r\n\r\n this._worker.postMessage({ positions, vertexCount }, [positions.buffer]);\r\n\r\n this._worker.onmessage = (e) => {\r\n this._depthMix = e.data.depthMix;\r\n const indexMix = new Uint32Array(e.data.depthMix.buffer);\r\n if (this._splatIndex) {\r\n for (let j = 0; j < this._vertexCount; j++) {\r\n this._splatIndex[j] = indexMix[2 * j];\r\n }\r\n }\r\n if (this._delayedTextureUpdate) {\r\n const textureSize = this._getTextureSize(vertexCount);\r\n this._updateSubTextures(\r\n this._delayedTextureUpdate.centers,\r\n this._delayedTextureUpdate.covA,\r\n this._delayedTextureUpdate.covB,\r\n this._delayedTextureUpdate.colors,\r\n 0,\r\n textureSize.y,\r\n this._delayedTextureUpdate.sh\r\n );\r\n this._delayedTextureUpdate = null;\r\n }\r\n this.thinInstanceBufferUpdated(\"splatIndex\");\r\n this._canPostToWorker = true;\r\n this._readyToDisplay = true;\r\n // sort is dirty when GS is visible for progressive update with a this message arriving but positions were partially filled\r\n // another update needs to be kicked. The kick can't happen just when the position buffer is ready because _canPostToWorker might be false.\r\n if (this._sortIsDirty) {\r\n this._postToWorker(true);\r\n this._sortIsDirty = false;\r\n }\r\n };\r\n }\r\n\r\n private _getTextureSize(length: number): Vector2 {\r\n const engine = this._scene.getEngine();\r\n const width = engine.getCaps().maxTextureSize;\r\n\r\n let height = 1;\r\n\r\n if (engine.version === 1 && !engine.isWebGPU) {\r\n while (width * height < length) {\r\n height *= 2;\r\n }\r\n } else {\r\n height = Math.ceil(length / width);\r\n }\r\n\r\n if (height > width) {\r\n Logger.Error(\"GaussianSplatting texture size: (\" + width + \", \" + height + \"), maxTextureSize: \" + width);\r\n height = width;\r\n }\r\n\r\n return new Vector2(width, height);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"gaussianSplattingMesh.js","sourceRoot":"","sources":["../../../../../dev/core/src/Meshes/GaussianSplatting/gaussianSplattingMesh.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Scene } from \"core/scene\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport { SubMesh } from \"../subMesh\";\r\nimport type { AbstractMesh } from \"../abstractMesh\";\r\nimport { Mesh } from \"../mesh\";\r\nimport { VertexData } from \"../mesh.vertexData\";\r\nimport { Matrix, TmpVectors, Vector2, Vector3 } from \"core/Maths/math.vector\";\r\nimport type { Quaternion } from \"core/Maths/math.vector\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { GaussianSplattingMaterial } from \"core/Materials/GaussianSplatting/gaussianSplattingMaterial\";\r\nimport { RawTexture } from \"core/Materials/Textures/rawTexture\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { Tools } from \"core/Misc/tools\";\r\nimport \"core/Meshes/thinInstanceMesh\";\r\nimport type { ThinEngine } from \"core/Engines/thinEngine\";\r\nimport { ToHalfFloat } from \"core/Misc/textureTools\";\r\nimport type { Material } from \"core/Materials/material\";\r\nimport { Scalar } from \"core/Maths/math.scalar\";\r\nimport { runCoroutineSync, runCoroutineAsync, createYieldingScheduler, type Coroutine } from \"core/Misc/coroutine\";\r\nimport { EngineStore } from \"core/Engines/engineStore\";\r\n\r\ninterface DelayedTextureUpdate {\r\n covA: Uint16Array;\r\n covB: Uint16Array;\r\n colors: Uint8Array;\r\n centers: Float32Array;\r\n sh?: Uint8Array[];\r\n}\r\n\r\n// @internal\r\nconst unpackUnorm = (value: number, bits: number) => {\r\n const t = (1 << bits) - 1;\r\n return (value & t) / t;\r\n};\r\n\r\n// @internal\r\nconst unpack111011 = (value: number, result: Vector3) => {\r\n result.x = unpackUnorm(value >>> 21, 11);\r\n result.y = unpackUnorm(value >>> 11, 10);\r\n result.z = unpackUnorm(value, 11);\r\n};\r\n\r\n// @internal\r\nconst unpack8888 = (value: number, result: Uint8ClampedArray) => {\r\n result[0] = unpackUnorm(value >>> 24, 8) * 255;\r\n result[1] = unpackUnorm(value >>> 16, 8) * 255;\r\n result[2] = unpackUnorm(value >>> 8, 8) * 255;\r\n result[3] = unpackUnorm(value, 8) * 255;\r\n};\r\n\r\n// @internal\r\n// unpack quaternion with 2,10,10,10 format (largest element, 3x10bit element)\r\nconst unpackRot = (value: number, result: Quaternion) => {\r\n const norm = 1.0 / (Math.sqrt(2) * 0.5);\r\n const a = (unpackUnorm(value >>> 20, 10) - 0.5) * norm;\r\n const b = (unpackUnorm(value >>> 10, 10) - 0.5) * norm;\r\n const c = (unpackUnorm(value, 10) - 0.5) * norm;\r\n const m = Math.sqrt(1.0 - (a * a + b * b + c * c));\r\n\r\n switch (value >>> 30) {\r\n case 0:\r\n result.set(m, a, b, c);\r\n break;\r\n case 1:\r\n result.set(a, m, b, c);\r\n break;\r\n case 2:\r\n result.set(a, b, m, c);\r\n break;\r\n case 3:\r\n result.set(a, b, c, m);\r\n break;\r\n }\r\n};\r\n\r\n// @internal\r\ninterface CompressedPLYChunk {\r\n min: Vector3;\r\n max: Vector3;\r\n minScale: Vector3;\r\n maxScale: Vector3;\r\n minColor: Vector3;\r\n maxColor: Vector3;\r\n}\r\n\r\n// @internal\r\ninterface PLYConversionBuffers {\r\n buffer: ArrayBuffer;\r\n sh?: [];\r\n}\r\n/**\r\n * Representation of the types\r\n */\r\nconst enum PLYType {\r\n FLOAT,\r\n INT,\r\n UINT,\r\n DOUBLE,\r\n UCHAR,\r\n UNDEFINED,\r\n}\r\n\r\n/**\r\n * Usage types of the PLY values\r\n */\r\nconst enum PLYValue {\r\n MIN_X,\r\n MIN_Y,\r\n MIN_Z,\r\n MAX_X,\r\n MAX_Y,\r\n MAX_Z,\r\n\r\n MIN_SCALE_X,\r\n MIN_SCALE_Y,\r\n MIN_SCALE_Z,\r\n\r\n MAX_SCALE_X,\r\n MAX_SCALE_Y,\r\n MAX_SCALE_Z,\r\n\r\n PACKED_POSITION,\r\n PACKED_ROTATION,\r\n PACKED_SCALE,\r\n PACKED_COLOR,\r\n X,\r\n Y,\r\n Z,\r\n SCALE_0,\r\n SCALE_1,\r\n SCALE_2,\r\n\r\n DIFFUSE_RED,\r\n DIFFUSE_GREEN,\r\n DIFFUSE_BLUE,\r\n OPACITY,\r\n\r\n F_DC_0,\r\n F_DC_1,\r\n F_DC_2,\r\n F_DC_3,\r\n\r\n ROT_0,\r\n ROT_1,\r\n ROT_2,\r\n ROT_3,\r\n\r\n MIN_COLOR_R,\r\n MIN_COLOR_G,\r\n MIN_COLOR_B,\r\n\r\n MAX_COLOR_R,\r\n MAX_COLOR_G,\r\n MAX_COLOR_B,\r\n\r\n SH_0,\r\n SH_1,\r\n SH_2,\r\n SH_3,\r\n SH_4,\r\n SH_5,\r\n SH_6,\r\n SH_7,\r\n SH_8,\r\n SH_9,\r\n SH_10,\r\n SH_11,\r\n SH_12,\r\n SH_13,\r\n SH_14,\r\n SH_15,\r\n SH_16,\r\n SH_17,\r\n SH_18,\r\n SH_19,\r\n SH_20,\r\n SH_21,\r\n SH_22,\r\n SH_23,\r\n SH_24,\r\n SH_25,\r\n SH_26,\r\n SH_27,\r\n SH_28,\r\n SH_29,\r\n SH_30,\r\n SH_31,\r\n SH_32,\r\n SH_33,\r\n SH_34,\r\n SH_35,\r\n SH_36,\r\n SH_37,\r\n SH_38,\r\n SH_39,\r\n SH_40,\r\n SH_41,\r\n SH_42,\r\n SH_43,\r\n SH_44,\r\n\r\n UNDEFINED,\r\n}\r\n\r\n/**\r\n * Property field found in PLY header\r\n */\r\nexport type PlyProperty = {\r\n /**\r\n * Value usage\r\n */\r\n value: PLYValue;\r\n /**\r\n * Value type\r\n */\r\n type: PLYType;\r\n /**\r\n * offset in byte from te beginning of the splat\r\n */\r\n offset: number;\r\n};\r\n\r\n/**\r\n * meta info on Splat file\r\n */\r\nexport interface PLYHeader {\r\n /**\r\n * number of splats\r\n */\r\n vertexCount: number;\r\n /**\r\n * number of spatial chunks for compressed ply\r\n */\r\n chunkCount: number;\r\n /**\r\n * length in bytes of the vertex info\r\n */\r\n rowVertexLength: number;\r\n /**\r\n * length in bytes of the chunk\r\n */\r\n rowChunkLength: number;\r\n /**\r\n * array listing properties per vertex\r\n */\r\n vertexProperties: PlyProperty[];\r\n /**\r\n * array listing properties per chunk\r\n */\r\n chunkProperties: PlyProperty[];\r\n /**\r\n * data view for parsing chunks and vertices\r\n */\r\n dataView: DataView;\r\n /**\r\n * buffer for the data view\r\n */\r\n buffer: ArrayBuffer;\r\n /**\r\n * degree of SH coefficients\r\n */\r\n shDegree: number;\r\n /**\r\n * number of coefficient per splat\r\n */\r\n shCoefficientCount: number;\r\n /**\r\n * buffer for SH coefficients\r\n */\r\n shBuffer: ArrayBuffer | null;\r\n}\r\n/**\r\n * Class used to render a gaussian splatting mesh\r\n */\r\nexport class GaussianSplattingMesh extends Mesh {\r\n private _vertexCount = 0;\r\n private _worker: Nullable<Worker> = null;\r\n private _frameIdLastUpdate = -1;\r\n private _modelViewMatrix = Matrix.Identity();\r\n private _depthMix: BigInt64Array;\r\n private _canPostToWorker = true;\r\n private _readyToDisplay = false;\r\n private _covariancesATexture: Nullable<BaseTexture> = null;\r\n private _covariancesBTexture: Nullable<BaseTexture> = null;\r\n private _centersTexture: Nullable<BaseTexture> = null;\r\n private _colorsTexture: Nullable<BaseTexture> = null;\r\n private _splatPositions: Nullable<Float32Array> = null;\r\n private _splatIndex: Nullable<Float32Array> = null;\r\n private _shTextures: Nullable<BaseTexture[]> = null;\r\n private _splatsData: Nullable<ArrayBuffer> = null;\r\n private _sh: Nullable<Uint8Array[]> = null;\r\n private readonly _keepInRam: boolean = false;\r\n\r\n private _delayedTextureUpdate: Nullable<DelayedTextureUpdate> = null;\r\n private _oldDirection = new Vector3();\r\n private _useRGBACovariants = false;\r\n private _material: Nullable<Material> = null;\r\n\r\n private _tmpCovariances = [0, 0, 0, 0, 0, 0];\r\n private _sortIsDirty = false;\r\n\r\n private static _RowOutputLength = 3 * 4 + 3 * 4 + 4 + 4; // Vector3 position, Vector3 scale, 1 u8 quaternion, 1 color with alpha\r\n private static _SH_C0 = 0.28209479177387814;\r\n // batch size between 2 yield calls. This value is a tradeoff between updates overhead and framerate hiccups\r\n // This step is faster the PLY conversion. So batch size can be bigger\r\n private static _SplatBatchSize = 327680;\r\n // batch size between 2 yield calls during the PLY to splat conversion.\r\n private static _PlyConversionBatchSize = 32768;\r\n private _shDegree = 0;\r\n\r\n /**\r\n * SH degree. 0 = no sh (default). 1 = 3 parameters. 2 = 8 parameters. 3 = 15 parameters.\r\n */\r\n public get shDegree() {\r\n return this._shDegree;\r\n }\r\n\r\n /**\r\n * returns the splats data array buffer that contains in order : postions (3 floats), size (3 floats), color (4 bytes), orientation quaternion (4 bytes)\r\n */\r\n public get splatsData() {\r\n return this._splatsData;\r\n }\r\n\r\n /**\r\n * Set the number of batch (a batch is 16384 splats) after which a display update is performed\r\n * A value of 0 (default) means display update will not happens before splat is ready.\r\n */\r\n public static ProgressiveUpdateAmount = 0;\r\n\r\n /**\r\n * Gets the covariancesA texture\r\n */\r\n public get covariancesATexture() {\r\n return this._covariancesATexture;\r\n }\r\n\r\n /**\r\n * Gets the covariancesB texture\r\n */\r\n public get covariancesBTexture() {\r\n return this._covariancesBTexture;\r\n }\r\n\r\n /**\r\n * Gets the centers texture\r\n */\r\n public get centersTexture() {\r\n return this._centersTexture;\r\n }\r\n\r\n /**\r\n * Gets the colors texture\r\n */\r\n public get colorsTexture() {\r\n return this._colorsTexture;\r\n }\r\n\r\n /**\r\n * Gets the SH textures\r\n */\r\n public get shTextures() {\r\n return this._shTextures;\r\n }\r\n\r\n /**\r\n * set rendering material\r\n */\r\n public override set material(value: Material) {\r\n this._material = value;\r\n this._material.backFaceCulling = true;\r\n this._material.cullBackFaces = false;\r\n value.resetDrawCache();\r\n }\r\n\r\n /**\r\n * get rendering material\r\n */\r\n public override get material(): Nullable<Material> {\r\n return this._material;\r\n }\r\n\r\n /**\r\n * Creates a new gaussian splatting mesh\r\n * @param name defines the name of the mesh\r\n * @param url defines the url to load from (optional)\r\n * @param scene defines the hosting scene (optional)\r\n * @param keepInRam keep datas in ram for editing purpose\r\n */\r\n constructor(name: string, url: Nullable<string> = null, scene: Nullable<Scene> = null, keepInRam: boolean = false) {\r\n super(name, scene);\r\n\r\n const vertexData = new VertexData();\r\n\r\n // Use an intanced quad or triangle. Triangle might be a bit faster because of less shader invocation but I didn't see any difference.\r\n // Keeping both and use triangle for now.\r\n // for quad, use following lines\r\n //vertexData.positions = [-2, -2, 0, 2, -2, 0, 2, 2, 0, -2, 2, 0];\r\n //vertexData.indices = [0, 1, 2, 0, 2, 3];\r\n vertexData.positions = [-3, -2, 0, 3, -2, 0, 0, 4, 0];\r\n vertexData.indices = [0, 1, 2];\r\n vertexData.applyToMesh(this);\r\n\r\n this.subMeshes = [];\r\n // for quad, use following line\r\n //new SubMesh(0, 0, 4, 0, 6, this);\r\n new SubMesh(0, 0, 3, 0, 3, this);\r\n\r\n this.setEnabled(false);\r\n // webGL2 and webGPU support for RG texture with float16 is fine. not webGL1\r\n this._useRGBACovariants = !this.getEngine().isWebGPU && this.getEngine().version === 1.0;\r\n\r\n this._keepInRam = keepInRam;\r\n if (url) {\r\n this.loadFileAsync(url);\r\n }\r\n this._material = new GaussianSplattingMaterial(this.name + \"_material\", this._scene);\r\n }\r\n\r\n /**\r\n * Returns the class name\r\n * @returns \"GaussianSplattingMesh\"\r\n */\r\n public override getClassName(): string {\r\n return \"GaussianSplattingMesh\";\r\n }\r\n\r\n /**\r\n * Returns the total number of vertices (splats) within the mesh\r\n * @returns the total number of vertices\r\n */\r\n public override getTotalVertices(): number {\r\n return this._vertexCount;\r\n }\r\n\r\n /**\r\n * Is this node ready to be used/rendered\r\n * @param completeCheck defines if a complete check (including materials and lights) has to be done (false by default)\r\n * @returns true when ready\r\n */\r\n public override isReady(completeCheck = false): boolean {\r\n if (!super.isReady(completeCheck, true)) {\r\n return false;\r\n }\r\n\r\n if (!this._readyToDisplay) {\r\n // mesh is ready when worker has done at least 1 sorting\r\n this._postToWorker(true);\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /** @internal */\r\n public _postToWorker(forced = false): void {\r\n const frameId = this.getScene().getFrameId();\r\n if ((forced || frameId !== this._frameIdLastUpdate) && this._worker && this._scene.activeCamera && this._canPostToWorker) {\r\n const cameraMatrix = this._scene.activeCamera.getViewMatrix();\r\n this.getWorldMatrix().multiplyToRef(cameraMatrix, this._modelViewMatrix);\r\n cameraMatrix.invertToRef(TmpVectors.Matrix[0]);\r\n this.getWorldMatrix().multiplyToRef(TmpVectors.Matrix[0], TmpVectors.Matrix[1]);\r\n Vector3.TransformNormalToRef(Vector3.Forward(this._scene.useRightHandedSystem), TmpVectors.Matrix[1], TmpVectors.Vector3[2]);\r\n TmpVectors.Vector3[2].normalize();\r\n\r\n const dot = Vector3.Dot(TmpVectors.Vector3[2], this._oldDirection);\r\n if (forced || Math.abs(dot - 1) >= 0.01) {\r\n this._oldDirection.copyFrom(TmpVectors.Vector3[2]);\r\n this._frameIdLastUpdate = frameId;\r\n this._canPostToWorker = false;\r\n this._worker.postMessage({ view: this._modelViewMatrix.m, depthMix: this._depthMix, useRightHandedSystem: this._scene.useRightHandedSystem }, [\r\n this._depthMix.buffer,\r\n ]);\r\n }\r\n }\r\n }\r\n /**\r\n * Triggers the draw call for the mesh. Usually, you don't need to call this method by your own because the mesh rendering is handled by the scene rendering manager\r\n * @param subMesh defines the subMesh to render\r\n * @param enableAlphaMode defines if alpha mode can be changed\r\n * @param effectiveMeshReplacement defines an optional mesh used to provide info for the rendering\r\n * @returns the current mesh\r\n */\r\n public override render(subMesh: SubMesh, enableAlphaMode: boolean, effectiveMeshReplacement?: AbstractMesh): Mesh {\r\n this._postToWorker();\r\n return super.render(subMesh, enableAlphaMode, effectiveMeshReplacement);\r\n }\r\n\r\n private static _TypeNameToEnum(name: string): PLYType {\r\n switch (name) {\r\n case \"float\":\r\n return PLYType.FLOAT;\r\n case \"int\":\r\n return PLYType.INT;\r\n break;\r\n case \"uint\":\r\n return PLYType.UINT;\r\n case \"double\":\r\n return PLYType.DOUBLE;\r\n case \"uchar\":\r\n return PLYType.UCHAR;\r\n }\r\n return PLYType.UNDEFINED;\r\n }\r\n\r\n private static _ValueNameToEnum(name: string): PLYValue {\r\n switch (name) {\r\n case \"min_x\":\r\n return PLYValue.MIN_X;\r\n case \"min_y\":\r\n return PLYValue.MIN_Y;\r\n case \"min_z\":\r\n return PLYValue.MIN_Z;\r\n case \"max_x\":\r\n return PLYValue.MAX_X;\r\n case \"max_y\":\r\n return PLYValue.MAX_Y;\r\n case \"max_z\":\r\n return PLYValue.MAX_Z;\r\n case \"min_scale_x\":\r\n return PLYValue.MIN_SCALE_X;\r\n case \"min_scale_y\":\r\n return PLYValue.MIN_SCALE_Y;\r\n case \"min_scale_z\":\r\n return PLYValue.MIN_SCALE_Z;\r\n case \"max_scale_x\":\r\n return PLYValue.MAX_SCALE_X;\r\n case \"max_scale_y\":\r\n return PLYValue.MAX_SCALE_Y;\r\n case \"max_scale_z\":\r\n return PLYValue.MAX_SCALE_Z;\r\n case \"packed_position\":\r\n return PLYValue.PACKED_POSITION;\r\n case \"packed_rotation\":\r\n return PLYValue.PACKED_ROTATION;\r\n case \"packed_scale\":\r\n return PLYValue.PACKED_SCALE;\r\n case \"packed_color\":\r\n return PLYValue.PACKED_COLOR;\r\n case \"x\":\r\n return PLYValue.X;\r\n case \"y\":\r\n return PLYValue.Y;\r\n case \"z\":\r\n return PLYValue.Z;\r\n case \"scale_0\":\r\n return PLYValue.SCALE_0;\r\n case \"scale_1\":\r\n return PLYValue.SCALE_1;\r\n case \"scale_2\":\r\n return PLYValue.SCALE_2;\r\n case \"diffuse_red\":\r\n case \"red\":\r\n return PLYValue.DIFFUSE_RED;\r\n case \"diffuse_green\":\r\n case \"green\":\r\n return PLYValue.DIFFUSE_GREEN;\r\n case \"diffuse_blue\":\r\n case \"blue\":\r\n return PLYValue.DIFFUSE_BLUE;\r\n case \"f_dc_0\":\r\n return PLYValue.F_DC_0;\r\n case \"f_dc_1\":\r\n return PLYValue.F_DC_1;\r\n case \"f_dc_2\":\r\n return PLYValue.F_DC_2;\r\n case \"f_dc_3\":\r\n return PLYValue.F_DC_3;\r\n case \"opacity\":\r\n return PLYValue.OPACITY;\r\n case \"rot_0\":\r\n return PLYValue.ROT_0;\r\n case \"rot_1\":\r\n return PLYValue.ROT_1;\r\n case \"rot_2\":\r\n return PLYValue.ROT_2;\r\n case \"rot_3\":\r\n return PLYValue.ROT_3;\r\n case \"min_r\":\r\n return PLYValue.MIN_COLOR_R;\r\n case \"min_g\":\r\n return PLYValue.MIN_COLOR_G;\r\n case \"min_b\":\r\n return PLYValue.MIN_COLOR_B;\r\n case \"max_r\":\r\n return PLYValue.MAX_COLOR_R;\r\n case \"max_g\":\r\n return PLYValue.MAX_COLOR_G;\r\n case \"max_b\":\r\n return PLYValue.MAX_COLOR_B;\r\n case \"f_rest_0\":\r\n return PLYValue.SH_0;\r\n case \"f_rest_1\":\r\n return PLYValue.SH_1;\r\n case \"f_rest_2\":\r\n return PLYValue.SH_2;\r\n case \"f_rest_3\":\r\n return PLYValue.SH_3;\r\n case \"f_rest_4\":\r\n return PLYValue.SH_4;\r\n case \"f_rest_5\":\r\n return PLYValue.SH_5;\r\n case \"f_rest_6\":\r\n return PLYValue.SH_6;\r\n case \"f_rest_7\":\r\n return PLYValue.SH_7;\r\n case \"f_rest_8\":\r\n return PLYValue.SH_8;\r\n case \"f_rest_9\":\r\n return PLYValue.SH_9;\r\n case \"f_rest_10\":\r\n return PLYValue.SH_10;\r\n case \"f_rest_11\":\r\n return PLYValue.SH_11;\r\n case \"f_rest_12\":\r\n return PLYValue.SH_12;\r\n case \"f_rest_13\":\r\n return PLYValue.SH_13;\r\n case \"f_rest_14\":\r\n return PLYValue.SH_14;\r\n case \"f_rest_15\":\r\n return PLYValue.SH_15;\r\n case \"f_rest_16\":\r\n return PLYValue.SH_16;\r\n case \"f_rest_17\":\r\n return PLYValue.SH_17;\r\n case \"f_rest_18\":\r\n return PLYValue.SH_18;\r\n case \"f_rest_19\":\r\n return PLYValue.SH_19;\r\n case \"f_rest_20\":\r\n return PLYValue.SH_20;\r\n case \"f_rest_21\":\r\n return PLYValue.SH_21;\r\n case \"f_rest_22\":\r\n return PLYValue.SH_22;\r\n case \"f_rest_23\":\r\n return PLYValue.SH_23;\r\n case \"f_rest_24\":\r\n return PLYValue.SH_24;\r\n case \"f_rest_25\":\r\n return PLYValue.SH_25;\r\n case \"f_rest_26\":\r\n return PLYValue.SH_26;\r\n case \"f_rest_27\":\r\n return PLYValue.SH_27;\r\n case \"f_rest_28\":\r\n return PLYValue.SH_28;\r\n case \"f_rest_29\":\r\n return PLYValue.SH_29;\r\n case \"f_rest_30\":\r\n return PLYValue.SH_30;\r\n case \"f_rest_31\":\r\n return PLYValue.SH_31;\r\n case \"f_rest_32\":\r\n return PLYValue.SH_32;\r\n case \"f_rest_33\":\r\n return PLYValue.SH_33;\r\n case \"f_rest_34\":\r\n return PLYValue.SH_34;\r\n case \"f_rest_35\":\r\n return PLYValue.SH_35;\r\n case \"f_rest_36\":\r\n return PLYValue.SH_36;\r\n case \"f_rest_37\":\r\n return PLYValue.SH_37;\r\n case \"f_rest_38\":\r\n return PLYValue.SH_38;\r\n case \"f_rest_39\":\r\n return PLYValue.SH_39;\r\n case \"f_rest_40\":\r\n return PLYValue.SH_40;\r\n case \"f_rest_41\":\r\n return PLYValue.SH_41;\r\n case \"f_rest_42\":\r\n return PLYValue.SH_42;\r\n case \"f_rest_43\":\r\n return PLYValue.SH_43;\r\n case \"f_rest_44\":\r\n return PLYValue.SH_44;\r\n }\r\n\r\n return PLYValue.UNDEFINED;\r\n }\r\n /**\r\n * Parse a PLY file header and returns metas infos on splats and chunks\r\n * @param data the loaded buffer\r\n * @returns a PLYHeader\r\n */\r\n static ParseHeader(data: ArrayBuffer): PLYHeader | null {\r\n const ubuf = new Uint8Array(data);\r\n const header = new TextDecoder().decode(ubuf.slice(0, 1024 * 10));\r\n const headerEnd = \"end_header\\n\";\r\n const headerEndIndex = header.indexOf(headerEnd);\r\n if (headerEndIndex < 0 || !header) {\r\n // standard splat\r\n return null;\r\n }\r\n const vertexCount = parseInt(/element vertex (\\d+)\\n/.exec(header)![1]);\r\n const chunkElement = /element chunk (\\d+)\\n/.exec(header);\r\n let chunkCount = 0;\r\n if (chunkElement) {\r\n chunkCount = parseInt(chunkElement[1]);\r\n }\r\n let rowVertexOffset = 0;\r\n let rowChunkOffset = 0;\r\n const offsets: Record<string, number> = {\r\n double: 8,\r\n int: 4,\r\n uint: 4,\r\n float: 4,\r\n short: 2,\r\n ushort: 2,\r\n uchar: 1,\r\n list: 0,\r\n };\r\n\r\n const enum ElementMode {\r\n Vertex = 0,\r\n Chunk = 1,\r\n }\r\n let chunkMode = ElementMode.Chunk;\r\n const vertexProperties: PlyProperty[] = [];\r\n const chunkProperties: PlyProperty[] = [];\r\n const filtered = header.slice(0, headerEndIndex).split(\"\\n\");\r\n let shDegree = 0;\r\n for (const prop of filtered) {\r\n if (prop.startsWith(\"property \")) {\r\n const [, typeName, name] = prop.split(\" \");\r\n\r\n const value = GaussianSplattingMesh._ValueNameToEnum(name);\r\n // SH degree 1,2 or 3 for 9, 24 or 45 values\r\n if (value >= PLYValue.SH_44) {\r\n shDegree = 3;\r\n } else if (value >= PLYValue.SH_24) {\r\n shDegree = 2;\r\n } else if (value >= PLYValue.SH_8) {\r\n shDegree = 1;\r\n }\r\n const type = GaussianSplattingMesh._TypeNameToEnum(typeName);\r\n if (chunkMode == ElementMode.Chunk) {\r\n chunkProperties.push({ value, type, offset: rowChunkOffset });\r\n rowChunkOffset += offsets[typeName];\r\n } else if (chunkMode == ElementMode.Vertex) {\r\n vertexProperties.push({ value, type, offset: rowVertexOffset });\r\n rowVertexOffset += offsets[typeName];\r\n }\r\n\r\n if (!offsets[typeName]) {\r\n Logger.Warn(`Unsupported property type: ${typeName}.`);\r\n }\r\n } else if (prop.startsWith(\"element \")) {\r\n const [, type] = prop.split(\" \");\r\n if (type == \"chunk\") {\r\n chunkMode = ElementMode.Chunk;\r\n } else if (type == \"vertex\") {\r\n chunkMode = ElementMode.Vertex;\r\n }\r\n }\r\n }\r\n\r\n const dataView = new DataView(data, headerEndIndex + headerEnd.length);\r\n const buffer = new ArrayBuffer(GaussianSplattingMesh._RowOutputLength * vertexCount);\r\n\r\n let shBuffer = null;\r\n let shCoefficientCount = 0;\r\n if (shDegree) {\r\n const shVectorCount = (shDegree + 1) * (shDegree + 1) - 1;\r\n shCoefficientCount = shVectorCount * 3;\r\n shBuffer = new ArrayBuffer(shCoefficientCount * vertexCount);\r\n }\r\n\r\n return {\r\n vertexCount: vertexCount,\r\n chunkCount: chunkCount,\r\n rowVertexLength: rowVertexOffset,\r\n rowChunkLength: rowChunkOffset,\r\n vertexProperties: vertexProperties,\r\n chunkProperties: chunkProperties,\r\n dataView: dataView,\r\n buffer: buffer,\r\n shDegree: shDegree,\r\n shCoefficientCount: shCoefficientCount,\r\n shBuffer: shBuffer,\r\n };\r\n }\r\n private static _GetCompressedChunks(header: PLYHeader, offset: { value: number }): Array<CompressedPLYChunk> | null {\r\n if (!header.chunkCount) {\r\n return null;\r\n }\r\n const dataView = header.dataView;\r\n const compressedChunks = new Array<CompressedPLYChunk>(header.chunkCount);\r\n for (let i = 0; i < header.chunkCount; i++) {\r\n const currentChunk = {\r\n min: new Vector3(),\r\n max: new Vector3(),\r\n minScale: new Vector3(),\r\n maxScale: new Vector3(),\r\n minColor: new Vector3(0, 0, 0),\r\n maxColor: new Vector3(1, 1, 1),\r\n };\r\n compressedChunks[i] = currentChunk;\r\n for (let propertyIndex = 0; propertyIndex < header.chunkProperties.length; propertyIndex++) {\r\n const property = header.chunkProperties[propertyIndex];\r\n let value;\r\n switch (property.type) {\r\n case PLYType.FLOAT:\r\n value = dataView.getFloat32(property.offset + offset.value, true);\r\n break;\r\n default:\r\n continue;\r\n }\r\n\r\n switch (property.value) {\r\n case PLYValue.MIN_X:\r\n currentChunk.min.x = value;\r\n break;\r\n case PLYValue.MIN_Y:\r\n currentChunk.min.y = value;\r\n break;\r\n case PLYValue.MIN_Z:\r\n currentChunk.min.z = value;\r\n break;\r\n case PLYValue.MAX_X:\r\n currentChunk.max.x = value;\r\n break;\r\n case PLYValue.MAX_Y:\r\n currentChunk.max.y = value;\r\n break;\r\n case PLYValue.MAX_Z:\r\n currentChunk.max.z = value;\r\n break;\r\n case PLYValue.MIN_SCALE_X:\r\n currentChunk.minScale.x = value;\r\n break;\r\n case PLYValue.MIN_SCALE_Y:\r\n currentChunk.minScale.y = value;\r\n break;\r\n case PLYValue.MIN_SCALE_Z:\r\n currentChunk.minScale.z = value;\r\n break;\r\n case PLYValue.MAX_SCALE_X:\r\n currentChunk.maxScale.x = value;\r\n break;\r\n case PLYValue.MAX_SCALE_Y:\r\n currentChunk.maxScale.y = value;\r\n break;\r\n case PLYValue.MAX_SCALE_Z:\r\n currentChunk.maxScale.z = value;\r\n break;\r\n case PLYValue.MIN_COLOR_R:\r\n currentChunk.minColor.x = value;\r\n break;\r\n case PLYValue.MIN_COLOR_G:\r\n currentChunk.minColor.y = value;\r\n break;\r\n case PLYValue.MIN_COLOR_B:\r\n currentChunk.minColor.z = value;\r\n break;\r\n case PLYValue.MAX_COLOR_R:\r\n currentChunk.maxColor.x = value;\r\n break;\r\n case PLYValue.MAX_COLOR_G:\r\n currentChunk.maxColor.y = value;\r\n break;\r\n case PLYValue.MAX_COLOR_B:\r\n currentChunk.maxColor.z = value;\r\n break;\r\n }\r\n }\r\n offset.value += header.rowChunkLength;\r\n }\r\n return compressedChunks;\r\n }\r\n\r\n private static _GetSplat(header: PLYHeader, index: number, compressedChunks: Array<CompressedPLYChunk> | null, offset: { value: number }): void {\r\n const q = TmpVectors.Quaternion[0];\r\n const temp3 = TmpVectors.Vector3[0];\r\n\r\n const rowOutputLength = GaussianSplattingMesh._RowOutputLength;\r\n const buffer = header.buffer;\r\n const dataView = header.dataView;\r\n const position = new Float32Array(buffer, index * rowOutputLength, 3);\r\n const scale = new Float32Array(buffer, index * rowOutputLength + 12, 3);\r\n const rgba = new Uint8ClampedArray(buffer, index * rowOutputLength + 24, 4);\r\n const rot = new Uint8ClampedArray(buffer, index * rowOutputLength + 28, 4);\r\n let sh = null;\r\n if (header.shBuffer) {\r\n sh = new Uint8ClampedArray(header.shBuffer, index * header.shCoefficientCount, header.shCoefficientCount);\r\n }\r\n const chunkIndex = index >> 8;\r\n let r0: number = 255;\r\n let r1: number = 0;\r\n let r2: number = 0;\r\n let r3: number = 0;\r\n\r\n const plySH = [];\r\n\r\n for (let propertyIndex = 0; propertyIndex < header.vertexProperties.length; propertyIndex++) {\r\n const property = header.vertexProperties[propertyIndex];\r\n let value;\r\n switch (property.type) {\r\n case PLYType.FLOAT:\r\n value = dataView.getFloat32(offset.value + property.offset, true);\r\n break;\r\n case PLYType.INT:\r\n value = dataView.getInt32(offset.value + property.offset, true);\r\n break;\r\n case PLYType.UINT:\r\n value = dataView.getUint32(offset.value + property.offset, true);\r\n break;\r\n case PLYType.DOUBLE:\r\n value = dataView.getFloat64(offset.value + property.offset, true);\r\n break;\r\n case PLYType.UCHAR:\r\n value = dataView.getUint8(offset.value + property.offset);\r\n break;\r\n default:\r\n continue;\r\n }\r\n\r\n switch (property.value) {\r\n case PLYValue.PACKED_POSITION:\r\n {\r\n const compressedChunk = compressedChunks![chunkIndex];\r\n unpack111011(value, temp3);\r\n position[0] = Scalar.Lerp(compressedChunk.min.x, compressedChunk.max.x, temp3.x);\r\n position[1] = -Scalar.Lerp(compressedChunk.min.y, compressedChunk.max.y, temp3.y);\r\n position[2] = Scalar.Lerp(compressedChunk.min.z, compressedChunk.max.z, temp3.z);\r\n }\r\n break;\r\n case PLYValue.PACKED_ROTATION:\r\n {\r\n unpackRot(value, q);\r\n r0 = q.w;\r\n r1 = q.z;\r\n r2 = q.y;\r\n r3 = q.x;\r\n }\r\n break;\r\n case PLYValue.PACKED_SCALE:\r\n {\r\n const compressedChunk = compressedChunks![chunkIndex];\r\n unpack111011(value, temp3);\r\n scale[0] = Math.exp(Scalar.Lerp(compressedChunk.minScale.x, compressedChunk.maxScale.x, temp3.x));\r\n scale[1] = Math.exp(Scalar.Lerp(compressedChunk.minScale.y, compressedChunk.maxScale.y, temp3.y));\r\n scale[2] = Math.exp(Scalar.Lerp(compressedChunk.minScale.z, compressedChunk.maxScale.z, temp3.z));\r\n }\r\n break;\r\n case PLYValue.PACKED_COLOR:\r\n {\r\n const compressedChunk = compressedChunks![chunkIndex];\r\n unpack8888(value, rgba);\r\n rgba[0] = Scalar.Lerp(compressedChunk.minColor.x, compressedChunk.maxColor.x, rgba[0] / 255) * 255;\r\n rgba[1] = Scalar.Lerp(compressedChunk.minColor.y, compressedChunk.maxColor.y, rgba[1] / 255) * 255;\r\n rgba[2] = Scalar.Lerp(compressedChunk.minColor.z, compressedChunk.maxColor.z, rgba[2] / 255) * 255;\r\n }\r\n break;\r\n case PLYValue.X:\r\n position[0] = value;\r\n break;\r\n case PLYValue.Y:\r\n position[1] = -value;\r\n break;\r\n case PLYValue.Z:\r\n position[2] = -value;\r\n break;\r\n case PLYValue.SCALE_0:\r\n scale[0] = Math.exp(value);\r\n break;\r\n case PLYValue.SCALE_1:\r\n scale[1] = Math.exp(value);\r\n break;\r\n case PLYValue.SCALE_2:\r\n scale[2] = Math.exp(value);\r\n break;\r\n case PLYValue.DIFFUSE_RED:\r\n rgba[0] = value;\r\n break;\r\n case PLYValue.DIFFUSE_GREEN:\r\n rgba[1] = value;\r\n break;\r\n case PLYValue.DIFFUSE_BLUE:\r\n rgba[2] = value;\r\n break;\r\n case PLYValue.F_DC_0:\r\n rgba[0] = (0.5 + GaussianSplattingMesh._SH_C0 * value) * 255;\r\n break;\r\n case PLYValue.F_DC_1:\r\n rgba[1] = (0.5 + GaussianSplattingMesh._SH_C0 * value) * 255;\r\n break;\r\n case PLYValue.F_DC_2:\r\n rgba[2] = (0.5 + GaussianSplattingMesh._SH_C0 * value) * 255;\r\n break;\r\n case PLYValue.F_DC_3:\r\n rgba[3] = (0.5 + GaussianSplattingMesh._SH_C0 * value) * 255;\r\n break;\r\n case PLYValue.OPACITY:\r\n rgba[3] = (1 / (1 + Math.exp(-value))) * 255;\r\n break;\r\n case PLYValue.ROT_0:\r\n r0 = value;\r\n break;\r\n case PLYValue.ROT_1:\r\n r1 = value;\r\n break;\r\n case PLYValue.ROT_2:\r\n r2 = value;\r\n break;\r\n case PLYValue.ROT_3:\r\n r3 = value;\r\n break;\r\n }\r\n if (sh && property.value >= PLYValue.SH_0 && property.value <= PLYValue.SH_44) {\r\n const clampedValue = Scalar.Clamp(value * 127.5 + 127.5, 0, 255);\r\n const shIndex = property.value - PLYValue.SH_0;\r\n plySH[shIndex] = clampedValue;\r\n }\r\n }\r\n\r\n if (sh) {\r\n const shDim = header.shDegree == 1 ? 3 : header.shDegree == 2 ? 8 : 15;\r\n for (let j = 0; j < shDim; j++) {\r\n sh[j * 3 + 0] = plySH[j];\r\n sh[j * 3 + 1] = plySH[j + shDim];\r\n sh[j * 3 + 2] = plySH[j + shDim * 2];\r\n }\r\n }\r\n\r\n q.set(r1, r2, r3, r0);\r\n q.normalize();\r\n rot[0] = q.w * 128 + 128;\r\n rot[1] = q.x * 128 + 128;\r\n rot[2] = q.y * 128 + 128;\r\n rot[3] = q.z * 128 + 128;\r\n offset.value += header.rowVertexLength;\r\n }\r\n\r\n /**\r\n * Converts a .ply data with SH coefficients splat\r\n * if data array buffer is not ply, returns the original buffer\r\n * @param data the .ply data to load\r\n * @param useCoroutine use coroutine and yield\r\n * @returns the loaded splat buffer and optional array of sh coefficients\r\n */\r\n public static *ConvertPLYWithSHToSplat(data: ArrayBuffer, useCoroutine = false) {\r\n const header = GaussianSplattingMesh.ParseHeader(data);\r\n if (!header) {\r\n return { buffer: data };\r\n }\r\n\r\n const offset = { value: 0 };\r\n const compressedChunks = GaussianSplattingMesh._GetCompressedChunks(header, offset);\r\n\r\n for (let i = 0; i < header.vertexCount; i++) {\r\n GaussianSplattingMesh._GetSplat(header, i, compressedChunks, offset);\r\n if (i % GaussianSplattingMesh._PlyConversionBatchSize === 0 && useCoroutine) {\r\n yield;\r\n }\r\n }\r\n\r\n let sh = null;\r\n // make SH texture buffers\r\n if (header.shDegree && header.shBuffer) {\r\n const textureCount = Math.ceil(header.shCoefficientCount / 16); // 4 components can be stored per texture, 4 sh per component\r\n let shIndexRead = 0;\r\n const ubuf = new Uint8Array(header.shBuffer);\r\n\r\n // sh is an array of uint8array that will be used to create sh textures\r\n sh = [];\r\n\r\n const splatCount = header.vertexCount;\r\n const engine = EngineStore.LastCreatedEngine;\r\n if (engine) {\r\n const width = engine.getCaps().maxTextureSize;\r\n const height = Math.ceil(splatCount / width);\r\n // create array for the number of textures needed.\r\n for (let textureIndex = 0; textureIndex < textureCount; textureIndex++) {\r\n const texture = new Uint8Array(height * width * 4 * 4); // 4 components per texture, 4 sh per component\r\n sh.push(texture);\r\n }\r\n\r\n for (let i = 0; i < splatCount; i++) {\r\n for (let shIndexWrite = 0; shIndexWrite < header.shCoefficientCount; shIndexWrite++) {\r\n const shValue = ubuf[shIndexRead++];\r\n\r\n const textureIndex = Math.floor(shIndexWrite / 16);\r\n const shArray = sh[textureIndex];\r\n\r\n const byteIndexInTexture = shIndexWrite % 16; // [0..15]\r\n const offsetPerSplat = i * 16; // 16 sh values per texture per splat.\r\n shArray[byteIndexInTexture + offsetPerSplat] = shValue;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return { buffer: header.buffer, sh: sh };\r\n }\r\n\r\n /**\r\n * Converts a .ply data array buffer to splat\r\n * if data array buffer is not ply, returns the original buffer\r\n * @param data the .ply data to load\r\n * @param useCoroutine use coroutine and yield\r\n * @returns the loaded splat buffer without SH coefficient, whether ply contains or not SH.\r\n */\r\n public static *ConvertPLYToSplat(data: ArrayBuffer, useCoroutine = false) {\r\n const header = GaussianSplattingMesh.ParseHeader(data);\r\n if (!header) {\r\n return data;\r\n }\r\n\r\n const offset = { value: 0 };\r\n const compressedChunks = GaussianSplattingMesh._GetCompressedChunks(header, offset);\r\n\r\n for (let i = 0; i < header.vertexCount; i++) {\r\n GaussianSplattingMesh._GetSplat(header, i, compressedChunks, offset);\r\n if (i % GaussianSplattingMesh._PlyConversionBatchSize === 0 && useCoroutine) {\r\n yield;\r\n }\r\n }\r\n\r\n return header.buffer;\r\n }\r\n\r\n /**\r\n * Converts a .ply data array buffer to splat\r\n * if data array buffer is not ply, returns the original buffer\r\n * @param data the .ply data to load\r\n * @returns the loaded splat buffer\r\n */\r\n public static async ConvertPLYToSplatAsync(data: ArrayBuffer) {\r\n return runCoroutineAsync(GaussianSplattingMesh.ConvertPLYToSplat(data, true), createYieldingScheduler());\r\n }\r\n\r\n /**\r\n * Converts a .ply with SH data array buffer to splat\r\n * if data array buffer is not ply, returns the original buffer\r\n * @param data the .ply data to load\r\n * @returns the loaded splat buffer with SH\r\n */\r\n public static async ConvertPLYWithSHToSplatAsync(data: ArrayBuffer) {\r\n return runCoroutineAsync(GaussianSplattingMesh.ConvertPLYWithSHToSplat(data, true), createYieldingScheduler());\r\n }\r\n /**\r\n * Loads a .splat Gaussian Splatting array buffer asynchronously\r\n * @param data arraybuffer containing splat file\r\n * @returns a promise that resolves when the operation is complete\r\n */\r\n\r\n public loadDataAsync(data: ArrayBuffer): Promise<void> {\r\n return this.updateDataAsync(data);\r\n }\r\n\r\n /**\r\n * Loads a .splat Gaussian or .ply Splatting file asynchronously\r\n * @param url path to the splat file to load\r\n * @returns a promise that resolves when the operation is complete\r\n * @deprecated Please use SceneLoader.ImportMeshAsync instead\r\n */\r\n public loadFileAsync(url: string): Promise<void> {\r\n return Tools.LoadFileAsync(url, true).then(async (plyBuffer) => {\r\n (GaussianSplattingMesh.ConvertPLYWithSHToSplatAsync(plyBuffer) as any).then((splatsData: PLYConversionBuffers) => {\r\n this.updateDataAsync(splatsData.buffer, splatsData.sh);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Releases resources associated with this mesh.\r\n * @param doNotRecurse Set to true to not recurse into each children (recurse into each children by default)\r\n */\r\n public override dispose(doNotRecurse?: boolean): void {\r\n this._covariancesATexture?.dispose();\r\n this._covariancesBTexture?.dispose();\r\n this._centersTexture?.dispose();\r\n this._colorsTexture?.dispose();\r\n if (this._shTextures) {\r\n this._shTextures.forEach((shTexture) => {\r\n shTexture.dispose();\r\n });\r\n }\r\n\r\n this._covariancesATexture = null;\r\n this._covariancesBTexture = null;\r\n this._centersTexture = null;\r\n this._colorsTexture = null;\r\n this._shTextures = null;\r\n\r\n this._worker?.terminate();\r\n this._worker = null;\r\n\r\n super.dispose(doNotRecurse, true);\r\n }\r\n\r\n private _copyTextures(source: GaussianSplattingMesh): void {\r\n this._covariancesATexture = source.covariancesATexture?.clone()!;\r\n this._covariancesBTexture = source.covariancesBTexture?.clone()!;\r\n this._centersTexture = source.centersTexture?.clone()!;\r\n this._colorsTexture = source.colorsTexture?.clone()!;\r\n if (source._shTextures) {\r\n this._shTextures = [];\r\n this._shTextures.forEach((shTexture) => {\r\n this._shTextures?.push(shTexture.clone()!);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Returns a new Mesh object generated from the current mesh properties.\r\n * @param name is a string, the name given to the new mesh\r\n * @returns a new Gaussian Splatting Mesh\r\n */\r\n public override clone(name: string = \"\"): GaussianSplattingMesh {\r\n const newGS = new GaussianSplattingMesh(name, undefined, this.getScene());\r\n newGS._copySource(this);\r\n newGS.makeGeometryUnique();\r\n newGS._vertexCount = this._vertexCount;\r\n newGS._copyTextures(this);\r\n newGS._modelViewMatrix = Matrix.Identity();\r\n newGS._splatPositions = this._splatPositions;\r\n newGS._readyToDisplay = false;\r\n newGS._instanciateWorker();\r\n\r\n const binfo = this.getBoundingInfo();\r\n newGS.getBoundingInfo().reConstruct(binfo.minimum, binfo.maximum, this.getWorldMatrix());\r\n\r\n newGS.forcedInstanceCount = newGS._vertexCount;\r\n newGS.setEnabled(true);\r\n return newGS;\r\n }\r\n\r\n private static _CreateWorker = function (self: Worker) {\r\n let vertexCount = 0;\r\n let positions: Float32Array;\r\n let depthMix: BigInt64Array;\r\n let indices: Uint32Array;\r\n let floatMix: Float32Array;\r\n\r\n self.onmessage = (e: any) => {\r\n // updated on init\r\n if (e.data.positions) {\r\n positions = e.data.positions;\r\n vertexCount = e.data.vertexCount;\r\n }\r\n // udpate on view changed\r\n else {\r\n const viewProj = e.data.view;\r\n if (!positions || !viewProj) {\r\n // Sanity check, it shouldn't happen!\r\n throw new Error(\"positions or view is not defined!\");\r\n }\r\n\r\n depthMix = e.data.depthMix;\r\n indices = new Uint32Array(depthMix.buffer);\r\n floatMix = new Float32Array(depthMix.buffer);\r\n\r\n // Sort\r\n for (let j = 0; j < vertexCount; j++) {\r\n indices[2 * j] = j;\r\n }\r\n\r\n let depthFactor = -1;\r\n if (e.data.useRightHandedSystem) {\r\n depthFactor = 1;\r\n }\r\n\r\n for (let j = 0; j < vertexCount; j++) {\r\n floatMix[2 * j + 1] = 10000 + (viewProj[2] * positions[4 * j + 0] + viewProj[6] * positions[4 * j + 1] + viewProj[10] * positions[4 * j + 2]) * depthFactor;\r\n }\r\n\r\n depthMix.sort();\r\n\r\n self.postMessage({ depthMix }, [depthMix.buffer]);\r\n }\r\n };\r\n };\r\n\r\n private _makeSplat(\r\n index: number,\r\n fBuffer: Float32Array,\r\n uBuffer: Uint8Array,\r\n covA: Uint16Array,\r\n covB: Uint16Array,\r\n colorArray: Uint8Array,\r\n minimum: Vector3,\r\n maximum: Vector3\r\n ): void {\r\n const matrixRotation = TmpVectors.Matrix[0];\r\n const matrixScale = TmpVectors.Matrix[1];\r\n const quaternion = TmpVectors.Quaternion[0];\r\n const covBSItemSize = this._useRGBACovariants ? 4 : 2;\r\n\r\n const x = fBuffer[8 * index + 0];\r\n const y = -fBuffer[8 * index + 1];\r\n const z = fBuffer[8 * index + 2];\r\n\r\n this._splatPositions![4 * index + 0] = x;\r\n this._splatPositions![4 * index + 1] = y;\r\n this._splatPositions![4 * index + 2] = z;\r\n\r\n minimum.minimizeInPlaceFromFloats(x, y, z);\r\n maximum.maximizeInPlaceFromFloats(x, y, z);\r\n\r\n quaternion.set(\r\n (uBuffer[32 * index + 28 + 1] - 127.5) / 127.5,\r\n (uBuffer[32 * index + 28 + 2] - 127.5) / 127.5,\r\n (uBuffer[32 * index + 28 + 3] - 127.5) / 127.5,\r\n -(uBuffer[32 * index + 28 + 0] - 127.5) / 127.5\r\n );\r\n quaternion.toRotationMatrix(matrixRotation);\r\n\r\n Matrix.ScalingToRef(fBuffer[8 * index + 3 + 0] * 2, fBuffer[8 * index + 3 + 1] * 2, fBuffer[8 * index + 3 + 2] * 2, matrixScale);\r\n\r\n const M = matrixRotation.multiplyToRef(matrixScale, TmpVectors.Matrix[0]).m;\r\n\r\n const covariances = this._tmpCovariances;\r\n covariances[0] = M[0] * M[0] + M[1] * M[1] + M[2] * M[2];\r\n covariances[1] = M[0] * M[4] + M[1] * M[5] + M[2] * M[6];\r\n covariances[2] = M[0] * M[8] + M[1] * M[9] + M[2] * M[10];\r\n covariances[3] = M[4] * M[4] + M[5] * M[5] + M[6] * M[6];\r\n covariances[4] = M[4] * M[8] + M[5] * M[9] + M[6] * M[10];\r\n covariances[5] = M[8] * M[8] + M[9] * M[9] + M[10] * M[10];\r\n\r\n // normalize covA, covB\r\n let factor = -10000;\r\n for (let covIndex = 0; covIndex < 6; covIndex++) {\r\n factor = Math.max(factor, Math.abs(covariances[covIndex]));\r\n }\r\n\r\n this._splatPositions![4 * index + 3] = factor;\r\n const transform = factor;\r\n\r\n covA[index * 4 + 0] = ToHalfFloat(covariances[0] / transform);\r\n covA[index * 4 + 1] = ToHalfFloat(covariances[1] / transform);\r\n covA[index * 4 + 2] = ToHalfFloat(covariances[2] / transform);\r\n covA[index * 4 + 3] = ToHalfFloat(covariances[3] / transform);\r\n covB[index * covBSItemSize + 0] = ToHalfFloat(covariances[4] / transform);\r\n covB[index * covBSItemSize + 1] = ToHalfFloat(covariances[5] / transform);\r\n\r\n // colors\r\n colorArray[index * 4 + 0] = uBuffer[32 * index + 24 + 0];\r\n colorArray[index * 4 + 1] = uBuffer[32 * index + 24 + 1];\r\n colorArray[index * 4 + 2] = uBuffer[32 * index + 24 + 2];\r\n colorArray[index * 4 + 3] = uBuffer[32 * index + 24 + 3];\r\n }\r\n\r\n private _updateTextures(covA: Uint16Array, covB: Uint16Array, colorArray: Uint8Array, sh?: Uint8Array[]): void {\r\n const textureSize = this._getTextureSize(this._vertexCount);\r\n // Update the textures\r\n const createTextureFromData = (data: Float32Array, width: number, height: number, format: number) => {\r\n return new RawTexture(data, width, height, format, this._scene, false, false, Constants.TEXTURE_BILINEAR_SAMPLINGMODE, Constants.TEXTURETYPE_FLOAT);\r\n };\r\n\r\n const createTextureFromDataU8 = (data: Uint8Array, width: number, height: number, format: number) => {\r\n return new RawTexture(data, width, height, format, this._scene, false, false, Constants.TEXTURE_BILINEAR_SAMPLINGMODE, Constants.TEXTURETYPE_UNSIGNED_BYTE);\r\n };\r\n\r\n const createTextureFromDataU32 = (data: Uint32Array, width: number, height: number, format: number) => {\r\n return new RawTexture(data, width, height, format, this._scene, false, false, Constants.TEXTURE_NEAREST_SAMPLINGMODE, Constants.TEXTURETYPE_UNSIGNED_INTEGER);\r\n };\r\n\r\n const createTextureFromDataF16 = (data: Uint16Array, width: number, height: number, format: number) => {\r\n return new RawTexture(data, width, height, format, this._scene, false, false, Constants.TEXTURE_BILINEAR_SAMPLINGMODE, Constants.TEXTURETYPE_HALF_FLOAT);\r\n };\r\n\r\n if (this._covariancesATexture) {\r\n this._delayedTextureUpdate = { covA: covA, covB: covB, colors: colorArray, centers: this._splatPositions!, sh: sh };\r\n const positions = Float32Array.from(this._splatPositions!);\r\n const vertexCount = this._vertexCount;\r\n this._worker!.postMessage({ positions, vertexCount }, [positions.buffer]);\r\n\r\n this._postToWorker(true);\r\n } else {\r\n this._covariancesATexture = createTextureFromDataF16(covA, textureSize.x, textureSize.y, Constants.TEXTUREFORMAT_RGBA);\r\n this._covariancesBTexture = createTextureFromDataF16(\r\n covB,\r\n textureSize.x,\r\n textureSize.y,\r\n this._useRGBACovariants ? Constants.TEXTUREFORMAT_RGBA : Constants.TEXTUREFORMAT_RG\r\n );\r\n this._centersTexture = createTextureFromData(this._splatPositions!, textureSize.x, textureSize.y, Constants.TEXTUREFORMAT_RGBA);\r\n this._colorsTexture = createTextureFromDataU8(colorArray, textureSize.x, textureSize.y, Constants.TEXTUREFORMAT_RGBA);\r\n if (sh) {\r\n this._shTextures = [];\r\n sh.forEach((shData) => {\r\n const buffer = new Uint32Array(shData.buffer);\r\n const shTexture = createTextureFromDataU32(buffer, textureSize.x, textureSize.y, Constants.TEXTUREFORMAT_RGBA_INTEGER);\r\n shTexture.wrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n shTexture.wrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n this._shTextures!.push(shTexture);\r\n });\r\n }\r\n this._instanciateWorker();\r\n }\r\n }\r\n\r\n private *_updateData(data: ArrayBuffer, isAsync: boolean, sh?: Uint8Array[]): Coroutine<void> {\r\n // if a covariance texture is present, then it's not a creation but an update\r\n if (!this._covariancesATexture) {\r\n this._readyToDisplay = false;\r\n }\r\n\r\n // Parse the data\r\n const uBuffer = new Uint8Array(data);\r\n const fBuffer = new Float32Array(uBuffer.buffer);\r\n\r\n if (this._keepInRam) {\r\n this._splatsData = data;\r\n if (sh) {\r\n this._sh = sh;\r\n }\r\n }\r\n\r\n const vertexCount = uBuffer.length / GaussianSplattingMesh._RowOutputLength;\r\n if (vertexCount != this._vertexCount) {\r\n this._updateSplatIndexBuffer(vertexCount);\r\n }\r\n this._vertexCount = vertexCount;\r\n // degree == 1 for 1 texture (3 terms), 2 for 2 textures(8 terms) and 3 for 3 textures (15 terms)\r\n this._shDegree = sh ? sh.length : 0;\r\n\r\n const textureSize = this._getTextureSize(vertexCount);\r\n const textureLength = textureSize.x * textureSize.y;\r\n const lineCountUpdate = GaussianSplattingMesh.ProgressiveUpdateAmount ?? textureSize.y;\r\n const textureLengthPerUpdate = textureSize.x * lineCountUpdate;\r\n\r\n this._splatPositions = new Float32Array(4 * textureLength);\r\n const covA = new Uint16Array(textureLength * 4);\r\n const covB = new Uint16Array((this._useRGBACovariants ? 4 : 2) * textureLength);\r\n const colorArray = new Uint8Array(textureLength * 4);\r\n\r\n const minimum = new Vector3(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\r\n const maximum = new Vector3(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);\r\n\r\n if (GaussianSplattingMesh.ProgressiveUpdateAmount) {\r\n // create textures with not filled-yet array, then update directly portions of it\r\n this._updateTextures(covA, covB, colorArray, sh);\r\n this.setEnabled(true);\r\n\r\n const partCount = Math.ceil(textureSize.y / lineCountUpdate);\r\n for (let partIndex = 0; partIndex < partCount; partIndex++) {\r\n const updateLine = partIndex * lineCountUpdate;\r\n const splatIndexBase = updateLine * textureSize.x;\r\n for (let i = 0; i < textureLengthPerUpdate; i++) {\r\n this._makeSplat(splatIndexBase + i, fBuffer, uBuffer, covA, covB, colorArray, minimum, maximum);\r\n }\r\n this._updateSubTextures(this._splatPositions, covA, covB, colorArray, updateLine, Math.min(lineCountUpdate, textureSize.y - updateLine));\r\n // Update the binfo\r\n this.getBoundingInfo().reConstruct(minimum, maximum, this.getWorldMatrix());\r\n if (isAsync) {\r\n yield;\r\n }\r\n }\r\n\r\n // sort will be dirty here as just finished filled positions will not be sorted\r\n const positions = Float32Array.from(this._splatPositions!);\r\n const vertexCount = this._vertexCount;\r\n this._worker!.postMessage({ positions, vertexCount }, [positions.buffer]);\r\n this._sortIsDirty = true;\r\n } else {\r\n for (let i = 0; i < vertexCount; i++) {\r\n this._makeSplat(i, fBuffer, uBuffer, covA, covB, colorArray, minimum, maximum);\r\n if (isAsync && i % GaussianSplattingMesh._SplatBatchSize === 0) {\r\n yield;\r\n }\r\n }\r\n // textures\r\n this._updateTextures(covA, covB, colorArray, sh);\r\n // Update the binfo\r\n this.getBoundingInfo().reConstruct(minimum, maximum, this.getWorldMatrix());\r\n this.setEnabled(true);\r\n }\r\n this._postToWorker(true);\r\n }\r\n\r\n /**\r\n * Update asynchronously the buffer\r\n * @param data array buffer containing center, color, orientation and scale of splats\r\n * @param sh optional array of uint8 array for SH data\r\n * @returns a promise\r\n */\r\n public async updateDataAsync(data: ArrayBuffer, sh?: Uint8Array[]): Promise<void> {\r\n return runCoroutineAsync(this._updateData(data, true, sh), createYieldingScheduler());\r\n }\r\n\r\n /**\r\n * @experimental\r\n * Update data from GS (position, orientation, color, scaling)\r\n * @param data array that contain all the datas\r\n * @param sh optional array of uint8 array for SH data\r\n */\r\n public updateData(data: ArrayBuffer, sh?: Uint8Array[]): void {\r\n runCoroutineSync(this._updateData(data, false, sh));\r\n }\r\n\r\n /**\r\n * Refreshes the bounding info, taking into account all the thin instances defined\r\n * @returns the current Gaussian Splatting\r\n */\r\n public override refreshBoundingInfo(): Mesh {\r\n this.thinInstanceRefreshBoundingInfo(false);\r\n return this;\r\n }\r\n\r\n // in case size is different\r\n private _updateSplatIndexBuffer(vertexCount: number): void {\r\n if (!this._splatIndex || vertexCount > this._splatIndex.length) {\r\n this._splatIndex = new Float32Array(vertexCount);\r\n\r\n this.thinInstanceSetBuffer(\"splatIndex\", this._splatIndex, 1, false);\r\n }\r\n this.forcedInstanceCount = vertexCount;\r\n }\r\n\r\n private _updateSubTextures(centers: Float32Array, covA: Uint16Array, covB: Uint16Array, colors: Uint8Array, lineStart: number, lineCount: number, sh?: Uint8Array[]): void {\r\n const updateTextureFromData = (texture: BaseTexture, data: ArrayBufferView, width: number, lineStart: number, lineCount: number) => {\r\n (this.getEngine() as ThinEngine).updateTextureData(texture.getInternalTexture()!, data, 0, lineStart, width, lineCount, 0, 0, false);\r\n };\r\n\r\n const textureSize = this._getTextureSize(this._vertexCount);\r\n const covBSItemSize = this._useRGBACovariants ? 4 : 2;\r\n const texelStart = lineStart * textureSize.x;\r\n const texelCount = lineCount * textureSize.x;\r\n const covAView = new Uint16Array(covA.buffer, texelStart * 4 * Uint16Array.BYTES_PER_ELEMENT, texelCount * 4);\r\n const covBView = new Uint16Array(covB.buffer, texelStart * covBSItemSize * Uint16Array.BYTES_PER_ELEMENT, texelCount * covBSItemSize);\r\n const colorsView = new Uint8Array(colors.buffer, texelStart * 4, texelCount * 4);\r\n const centersView = new Float32Array(centers.buffer, texelStart * 4 * Float32Array.BYTES_PER_ELEMENT, texelCount * 4);\r\n updateTextureFromData(this._covariancesATexture!, covAView, textureSize.x, lineStart, lineCount);\r\n updateTextureFromData(this._covariancesBTexture!, covBView, textureSize.x, lineStart, lineCount);\r\n updateTextureFromData(this._centersTexture!, centersView, textureSize.x, lineStart, lineCount);\r\n updateTextureFromData(this._colorsTexture!, colorsView, textureSize.x, lineStart, lineCount);\r\n if (sh) {\r\n for (let i = 0; i < sh.length; i++) {\r\n const componentCount = 4;\r\n const shView = new Uint8Array(this._sh![i].buffer, texelStart * componentCount, texelCount * componentCount);\r\n updateTextureFromData(this._shTextures![i], shView, textureSize.x, lineStart, lineCount);\r\n }\r\n }\r\n }\r\n private _instanciateWorker(): void {\r\n if (!this._vertexCount) {\r\n return;\r\n }\r\n this._updateSplatIndexBuffer(this._vertexCount);\r\n\r\n // Start the worker thread\r\n this._worker?.terminate();\r\n this._worker = new Worker(\r\n URL.createObjectURL(\r\n new Blob([\"(\", GaussianSplattingMesh._CreateWorker.toString(), \")(self)\"], {\r\n type: \"application/javascript\",\r\n })\r\n )\r\n );\r\n\r\n this._depthMix = new BigInt64Array(this._vertexCount);\r\n const positions = Float32Array.from(this._splatPositions!);\r\n const vertexCount = this._vertexCount;\r\n\r\n this._worker.postMessage({ positions, vertexCount }, [positions.buffer]);\r\n\r\n this._worker.onmessage = (e) => {\r\n this._depthMix = e.data.depthMix;\r\n const indexMix = new Uint32Array(e.data.depthMix.buffer);\r\n if (this._splatIndex) {\r\n for (let j = 0; j < this._vertexCount; j++) {\r\n this._splatIndex[j] = indexMix[2 * j];\r\n }\r\n }\r\n if (this._delayedTextureUpdate) {\r\n const textureSize = this._getTextureSize(vertexCount);\r\n this._updateSubTextures(\r\n this._delayedTextureUpdate.centers,\r\n this._delayedTextureUpdate.covA,\r\n this._delayedTextureUpdate.covB,\r\n this._delayedTextureUpdate.colors,\r\n 0,\r\n textureSize.y,\r\n this._delayedTextureUpdate.sh\r\n );\r\n this._delayedTextureUpdate = null;\r\n }\r\n this.thinInstanceBufferUpdated(\"splatIndex\");\r\n this._canPostToWorker = true;\r\n this._readyToDisplay = true;\r\n // sort is dirty when GS is visible for progressive update with a this message arriving but positions were partially filled\r\n // another update needs to be kicked. The kick can't happen just when the position buffer is ready because _canPostToWorker might be false.\r\n if (this._sortIsDirty) {\r\n this._postToWorker(true);\r\n this._sortIsDirty = false;\r\n }\r\n };\r\n }\r\n\r\n private _getTextureSize(length: number): Vector2 {\r\n const engine = this._scene.getEngine();\r\n const width = engine.getCaps().maxTextureSize;\r\n\r\n let height = 1;\r\n\r\n if (engine.version === 1 && !engine.isWebGPU) {\r\n while (width * height < length) {\r\n height *= 2;\r\n }\r\n } else {\r\n height = Math.ceil(length / width);\r\n }\r\n\r\n if (height > width) {\r\n Logger.Error(\"GaussianSplatting texture size: (\" + width + \", \" + height + \"), maxTextureSize: \" + width);\r\n height = width;\r\n }\r\n\r\n return new Vector2(width, height);\r\n }\r\n}\r\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { Scene } from "../../scene";
|
|
2
|
-
import type { IGreasedLineMaterial } from "../../Materials/GreasedLine/greasedLineMaterialInterfaces";
|
|
3
|
-
import { Mesh } from "../mesh";
|
|
4
|
-
import { Buffer } from "../../Buffers/buffer";
|
|
5
|
-
import type { Vector3 } from "../../Maths/math.vector";
|
|
6
|
-
import { VertexData } from "../mesh.vertexData";
|
|
7
|
-
import type { AbstractEngine } from "../../Engines/abstractEngine";
|
|
8
|
-
import type { FloatArray, IndicesArray } from "../../types";
|
|
1
|
+
import type { Scene } from "../../scene.js";
|
|
2
|
+
import type { IGreasedLineMaterial } from "../../Materials/GreasedLine/greasedLineMaterialInterfaces.js";
|
|
3
|
+
import { Mesh } from "../mesh.js";
|
|
4
|
+
import { Buffer } from "../../Buffers/buffer.js";
|
|
5
|
+
import type { Vector3 } from "../../Maths/math.vector.js";
|
|
6
|
+
import { VertexData } from "../mesh.vertexData.js";
|
|
7
|
+
import type { AbstractEngine } from "../../Engines/abstractEngine.js";
|
|
8
|
+
import type { FloatArray, IndicesArray } from "../../types.js";
|
|
9
9
|
/**
|
|
10
10
|
* In POINTS_MODE_POINTS every array of points will become the center (backbone) of the ribbon. The ribbon will be expanded by `width / 2` to `+direction` and `-direction` as well.
|
|
11
11
|
* In POINTS_MODE_PATHS every array of points specifies an edge. These will be used to build one ribbon.
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import type { Scene } from "../../scene";
|
|
2
|
-
import type { Matrix } from "../../Maths/math.vector";
|
|
3
|
-
import { Vector3 } from "../../Maths/math.vector";
|
|
4
|
-
import { Mesh } from "../mesh";
|
|
5
|
-
import type { Ray, TrianglePickingPredicate } from "../../Culling/ray";
|
|
6
|
-
import { PickingInfo } from "../../Collisions/pickingInfo";
|
|
7
|
-
import type { Nullable } from "../../types";
|
|
8
|
-
import type { Node } from "../../node";
|
|
9
|
-
import type { GreasedLineMeshOptions } from "./greasedLineBaseMesh";
|
|
10
|
-
import { GreasedLineBaseMesh } from "./greasedLineBaseMesh";
|
|
11
|
-
import type { VertexData } from "../mesh.vertexData";
|
|
1
|
+
import type { Scene } from "../../scene.js";
|
|
2
|
+
import type { Matrix } from "../../Maths/math.vector.js";
|
|
3
|
+
import { Vector3 } from "../../Maths/math.vector.js";
|
|
4
|
+
import { Mesh } from "../mesh.js";
|
|
5
|
+
import type { Ray, TrianglePickingPredicate } from "../../Culling/ray.js";
|
|
6
|
+
import { PickingInfo } from "../../Collisions/pickingInfo.js";
|
|
7
|
+
import type { Nullable } from "../../types.js";
|
|
8
|
+
import type { Node } from "../../node.js";
|
|
9
|
+
import type { GreasedLineMeshOptions } from "./greasedLineBaseMesh.js";
|
|
10
|
+
import { GreasedLineBaseMesh } from "./greasedLineBaseMesh.js";
|
|
11
|
+
import type { VertexData } from "../mesh.vertexData.js";
|
|
12
12
|
/**
|
|
13
13
|
* GreasedLineMesh
|
|
14
14
|
* Use the GreasedLineBuilder.CreateGreasedLine function to create an instance of this class.
|