@onerjs/core 8.56.3 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Animations/animatable.core.js +36 -0
- package/Animations/animatable.core.js.map +1 -1
- package/Animations/animationGroup.pure.d.ts +61 -1
- package/Animations/animationGroup.pure.js +191 -2
- package/Animations/animationGroup.pure.js.map +1 -1
- package/Animations/index.d.ts +1 -0
- package/Animations/index.js +1 -0
- package/Animations/index.js.map +1 -1
- package/Animations/pure.d.ts +1 -0
- package/Animations/pure.js +1 -0
- package/Animations/pure.js.map +1 -1
- package/Animations/rootMotion.d.ts +560 -0
- package/Animations/rootMotion.js +1709 -0
- package/Animations/rootMotion.js.map +1 -0
- package/Animations/runtimeAnimation.d.ts +57 -0
- package/Animations/runtimeAnimation.js +127 -3
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Cameras/arcRotateCamera.pure.d.ts +2 -0
- package/Cameras/arcRotateCamera.pure.js +2 -0
- package/Cameras/arcRotateCamera.pure.js.map +1 -1
- package/Cameras/camera.pure.js +4 -0
- package/Cameras/camera.pure.js.map +1 -1
- package/Cameras/targetCamera.pure.d.ts +2 -0
- package/Cameras/targetCamera.pure.js +7 -1
- package/Cameras/targetCamera.pure.js.map +1 -1
- package/Collisions/gpuPicker.js +5 -5
- package/Collisions/gpuPicker.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.query.pure.js +4 -2
- package/Engines/AbstractEngine/abstractEngine.query.pure.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.query.types.d.ts +11 -2
- package/Engines/AbstractEngine/abstractEngine.query.types.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.renderPass.pure.js +1 -0
- package/Engines/AbstractEngine/abstractEngine.renderPass.pure.js.map +1 -1
- package/Engines/Extensions/engine.multiRender.pure.js +63 -0
- package/Engines/Extensions/engine.multiRender.pure.js.map +1 -1
- package/Engines/Extensions/engine.multiRender.types.d.ts +13 -0
- package/Engines/Extensions/engine.multiRender.types.js.map +1 -1
- package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js +2 -2
- package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js.map +1 -1
- package/Engines/Extensions/engine.prefilteredCubeTexture.types.d.ts +2 -1
- package/Engines/Extensions/engine.prefilteredCubeTexture.types.js.map +1 -1
- package/Engines/Extensions/index.d.ts +1 -0
- package/Engines/Extensions/index.js +1 -0
- package/Engines/Extensions/index.js.map +1 -1
- package/Engines/Extensions/pure.d.ts +1 -1
- package/Engines/Extensions/pure.js +1 -1
- package/Engines/Extensions/pure.js.map +1 -1
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js +88 -39
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js.map +1 -1
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.types.d.ts +20 -2
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.types.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.pure.js +4 -0
- package/Engines/WebGPU/Extensions/engine.multiRender.pure.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.types.d.ts +13 -0
- package/Engines/WebGPU/Extensions/engine.multiRender.types.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.query.pure.js +11 -3
- package/Engines/WebGPU/Extensions/engine.query.pure.js.map +1 -1
- package/Engines/WebGPU/Extensions/index.d.ts +1 -0
- package/Engines/WebGPU/Extensions/index.js +1 -0
- package/Engines/WebGPU/Extensions/index.js.map +1 -1
- package/Engines/WebGPU/Extensions/pure.d.ts +1 -1
- package/Engines/WebGPU/Extensions/pure.js +1 -1
- package/Engines/WebGPU/Extensions/pure.js.map +1 -1
- package/Engines/WebGPU/webgpuBundleList.d.ts +2 -0
- package/Engines/WebGPU/webgpuBundleList.js +4 -0
- package/Engines/WebGPU/webgpuBundleList.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js +5 -2
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
- package/Engines/WebGPU/webgpuHardwareTexture.js +3 -1
- package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.js +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
- package/Engines/WebGPU/webgpuSnapshotRendering.d.ts +4 -0
- package/Engines/WebGPU/webgpuSnapshotRendering.js +40 -7
- package/Engines/WebGPU/webgpuSnapshotRendering.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.d.ts +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.js +2 -2
- package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureManager.d.ts +2 -0
- package/Engines/WebGPU/webgpuTextureManager.js +286 -13
- package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
- package/Engines/abstractEngine.pure.d.ts +2 -0
- package/Engines/abstractEngine.pure.js +7 -3
- package/Engines/abstractEngine.pure.js.map +1 -1
- package/Engines/constants.d.ts +4 -0
- package/Engines/constants.js +4 -0
- package/Engines/constants.js.map +1 -1
- package/Engines/thinEngine.pure.d.ts +14 -0
- package/Engines/thinEngine.pure.js +48 -12
- package/Engines/thinEngine.pure.js.map +1 -1
- package/Engines/thinNativeEngine.pure.d.ts +1 -0
- package/Engines/thinNativeEngine.pure.js +7 -1
- package/Engines/thinNativeEngine.pure.js.map +1 -1
- package/Engines/thinWebGPUEngine.d.ts +4 -0
- package/Engines/thinWebGPUEngine.js +10 -1
- package/Engines/thinWebGPUEngine.js.map +1 -1
- package/Engines/webgpuEngine.pure.d.ts +5 -2
- package/Engines/webgpuEngine.pure.js +48 -13
- package/Engines/webgpuEngine.pure.js.map +1 -1
- package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js +2 -2
- package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js.map +1 -1
- package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.d.ts +11 -2
- package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js +1 -1
- package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.d.ts +9 -1
- package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.js +6 -8
- package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.d.ts +2 -0
- package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.js +5 -1
- package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.d.ts +2 -0
- package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.js +5 -1
- package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.d.ts +9 -0
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js +34 -9
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.d.ts +2 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js +4 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.d.ts +2 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js +4 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphSendCustomEventBlock.pure.js +19 -7
- package/FlowGraph/Blocks/Event/flowGraphSendCustomEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.d.ts +20 -2
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js +53 -10
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.d.ts +16 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js +64 -14
- package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.pure.js +64 -16
- package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.pure.js.map +1 -1
- package/FlowGraph/flowGraph.d.ts +4 -0
- package/FlowGraph/flowGraph.js +38 -7
- package/FlowGraph/flowGraph.js.map +1 -1
- package/FlowGraph/flowGraphBlock.js +3 -0
- package/FlowGraph/flowGraphBlock.js.map +1 -1
- package/FlowGraph/flowGraphConnection.d.ts +7 -0
- package/FlowGraph/flowGraphConnection.js +7 -0
- package/FlowGraph/flowGraphConnection.js.map +1 -1
- package/FlowGraph/flowGraphContext.d.ts +2 -1
- package/FlowGraph/flowGraphContext.js +4 -3
- package/FlowGraph/flowGraphContext.js.map +1 -1
- package/FlowGraph/flowGraphCoordinator.d.ts +15 -1
- package/FlowGraph/flowGraphCoordinator.js +47 -16
- package/FlowGraph/flowGraphCoordinator.js.map +1 -1
- package/FlowGraph/flowGraphEventBlock.d.ts +5 -0
- package/FlowGraph/flowGraphEventBlock.js +7 -0
- package/FlowGraph/flowGraphEventBlock.js.map +1 -1
- package/FlowGraph/flowGraphHostResolver.d.ts +2 -1
- package/FlowGraph/flowGraphHostResolver.js.map +1 -1
- package/FlowGraph/flowGraphParser.js +60 -2
- package/FlowGraph/flowGraphParser.js.map +1 -1
- package/FlowGraph/serialization.d.ts +2 -0
- package/FlowGraph/serialization.js +10 -22
- package/FlowGraph/serialization.js.map +1 -1
- package/FlowGraph/typeDefinitions.d.ts +8 -0
- package/FlowGraph/typeDefinitions.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.d.ts +5 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.js +8 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.d.ts +87 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.js +295 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.js.map +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/pure.d.ts +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/pure.js +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +4 -4
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.d.ts +5 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js +13 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/allBlocks.pure.js +2 -0
- package/FrameGraph/Node/Blocks/allBlocks.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/index.d.ts +1 -0
- package/FrameGraph/Node/Blocks/index.js +1 -0
- package/FrameGraph/Node/Blocks/index.js.map +1 -1
- package/FrameGraph/Node/Blocks/inputBlock.pure.js +20 -1
- package/FrameGraph/Node/Blocks/inputBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/pure.d.ts +1 -0
- package/FrameGraph/Node/Blocks/pure.js +1 -0
- package/FrameGraph/Node/Blocks/pure.js.map +1 -1
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.d.ts +4 -2
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.js +4 -2
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
- package/FrameGraph/Tasks/Layers/selectionOutlineTask.js +1 -0
- package/FrameGraph/Tasks/Layers/selectionOutlineTask.js.map +1 -1
- package/FrameGraph/Tasks/Misc/cullObjectsTask.js +5 -1
- package/FrameGraph/Tasks/Misc/cullObjectsTask.js.map +1 -1
- package/FrameGraph/Tasks/Misc/lightingVolumeTask.js +1 -0
- package/FrameGraph/Tasks/Misc/lightingVolumeTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.d.ts +69 -0
- package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.js +223 -0
- package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.js.map +1 -0
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +25 -3
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +69 -33
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js +3 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
- package/FrameGraph/frameGraphObjectList.d.ts +6 -1
- package/FrameGraph/frameGraphObjectList.js.map +1 -1
- package/FrameGraph/frameGraphRenderContext.d.ts +3 -1
- package/FrameGraph/frameGraphRenderContext.js +5 -5
- package/FrameGraph/frameGraphRenderContext.js.map +1 -1
- package/FrameGraph/index.d.ts +1 -0
- package/FrameGraph/index.js +1 -0
- package/FrameGraph/index.js.map +1 -1
- package/FrameGraph/pure.d.ts +1 -0
- package/FrameGraph/pure.js +1 -0
- package/FrameGraph/pure.js.map +1 -1
- package/Inputs/scene.inputManager.d.ts +4 -0
- package/Inputs/scene.inputManager.js +50 -8
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js +5 -5
- package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +5 -5
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +26 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +151 -47
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js +5 -5
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js +11 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js +17 -2
- package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +2 -2
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
- package/Materials/Node/nodeMaterial.pure.d.ts +4 -0
- package/Materials/Node/nodeMaterial.pure.js +4 -0
- package/Materials/Node/nodeMaterial.pure.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.d.ts +1 -1
- package/Materials/Node/nodeMaterialBuildState.js +25 -3
- package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
- package/Materials/PBR/openpbrMaterial.pure.d.ts +2 -0
- package/Materials/PBR/pbrBaseMaterial.pure.d.ts +2 -0
- package/Materials/Textures/Procedurals/proceduralTexture.pure.d.ts +13 -14
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js +6 -6
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
- package/Materials/Textures/baseTexture.pure.js +3 -0
- package/Materials/Textures/baseTexture.pure.js.map +1 -1
- package/Materials/Textures/cubeTexture.pure.js +1 -1
- package/Materials/Textures/cubeTexture.pure.js.map +1 -1
- package/Materials/Textures/internalTexture.d.ts +8 -1
- package/Materials/Textures/internalTexture.js +9 -2
- package/Materials/Textures/internalTexture.js.map +1 -1
- package/Materials/Textures/rawTexture2DArray.functions.d.ts +3 -3
- package/Materials/Textures/rawTexture2DArray.functions.js.map +1 -1
- package/Materials/Textures/rawTexture3D.d.ts +1 -1
- package/Materials/Textures/rawTexture3D.js +1 -1
- package/Materials/Textures/rawTexture3D.js.map +1 -1
- package/Materials/Textures/textureHelper.functions.d.ts +14 -0
- package/Materials/Textures/textureHelper.functions.js +24 -0
- package/Materials/Textures/textureHelper.functions.js.map +1 -1
- package/Materials/ditheredTileFadeMaterialPlugin.d.ts +210 -0
- package/Materials/ditheredTileFadeMaterialPlugin.js +509 -0
- package/Materials/ditheredTileFadeMaterialPlugin.js.map +1 -0
- package/Materials/index.d.ts +1 -0
- package/Materials/index.js +1 -0
- package/Materials/index.js.map +1 -1
- package/Materials/materialHelper.geometryrendering.d.ts +46 -1
- package/Materials/materialHelper.geometryrendering.js +105 -8
- package/Materials/materialHelper.geometryrendering.js.map +1 -1
- package/Materials/prepass.defines.d.ts +2 -0
- package/Materials/prepass.defines.js +2 -0
- package/Materials/prepass.defines.js.map +1 -1
- package/Materials/pure.d.ts +1 -0
- package/Materials/pure.js +1 -0
- package/Materials/pure.js.map +1 -1
- package/Materials/standardMaterial.pure.d.ts +2 -0
- package/Materials/standardMaterial.pure.js +6 -3
- package/Materials/standardMaterial.pure.js.map +1 -1
- package/Meshes/Builders/polygonBuilder.pure.d.ts +4 -0
- package/Meshes/Builders/polygonBuilder.pure.js +4 -1
- package/Meshes/Builders/polygonBuilder.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplatting.functions.d.ts +19 -0
- package/Meshes/GaussianSplatting/gaussianSplatting.functions.js +23 -0
- package/Meshes/GaussianSplatting/gaussianSplatting.functions.js.map +1 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +3 -14
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +20 -24
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +2 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +11 -4
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
- package/Meshes/abstractMesh.pure.d.ts +18 -0
- package/Meshes/abstractMesh.pure.js +22 -0
- package/Meshes/abstractMesh.pure.js.map +1 -1
- package/Meshes/index.d.ts +1 -0
- package/Meshes/index.js +1 -0
- package/Meshes/index.js.map +1 -1
- package/Meshes/instancedMesh.pure.d.ts +5 -0
- package/Meshes/instancedMesh.pure.js +12 -0
- package/Meshes/instancedMesh.pure.js.map +1 -1
- package/Meshes/mesh.pure.js +23 -8
- package/Meshes/mesh.pure.js.map +1 -1
- package/Meshes/meshBlendingTag.d.ts +47 -0
- package/Meshes/meshBlendingTag.js +64 -0
- package/Meshes/meshBlendingTag.js.map +1 -0
- package/Meshes/polygonMesh.js +2 -2
- package/Meshes/polygonMesh.js.map +1 -1
- package/Meshes/pure.d.ts +1 -0
- package/Meshes/pure.js +1 -0
- package/Meshes/pure.js.map +1 -1
- package/Misc/fileTools.pure.js +21 -0
- package/Misc/fileTools.pure.js.map +1 -1
- package/Misc/snapshotRenderingHelper.js +2 -2
- package/Misc/snapshotRenderingHelper.js.map +1 -1
- package/Misc/tools.pure.js +1 -1
- package/Misc/tools.pure.js.map +1 -1
- package/Particles/gpuParticleSystem.pure.d.ts +2 -0
- package/Particles/gpuParticleSystem.pure.js +89 -28
- package/Particles/gpuParticleSystem.pure.js.map +1 -1
- package/Particles/thinParticleSystem.pure.d.ts +2 -0
- package/Particles/thinParticleSystem.pure.js +84 -19
- package/Particles/thinParticleSystem.pure.js.map +1 -1
- package/Particles/webgl2ParticleSystem.pure.d.ts +1 -0
- package/Particles/webgl2ParticleSystem.pure.js +12 -4
- package/Particles/webgl2ParticleSystem.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js +7 -0
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/index.d.ts +2 -0
- package/PostProcesses/index.js +2 -0
- package/PostProcesses/index.js.map +1 -1
- package/PostProcesses/meshBlendingBlueNoise.d.ts +15 -0
- package/PostProcesses/meshBlendingBlueNoise.js +77 -0
- package/PostProcesses/meshBlendingBlueNoise.js.map +1 -0
- package/PostProcesses/meshBlendingPostProcess.d.ts +131 -0
- package/PostProcesses/meshBlendingPostProcess.js +315 -0
- package/PostProcesses/meshBlendingPostProcess.js.map +1 -0
- package/PostProcesses/pure.d.ts +2 -0
- package/PostProcesses/pure.js +2 -0
- package/PostProcesses/pure.js.map +1 -1
- package/PostProcesses/thinMeshBlendingPostProcess.d.ts +339 -0
- package/PostProcesses/thinMeshBlendingPostProcess.js +771 -0
- package/PostProcesses/thinMeshBlendingPostProcess.js.map +1 -0
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +6 -6
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +8 -8
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
- package/Rendering/boundingBoxRenderer.pure.js +2 -1
- package/Rendering/boundingBoxRenderer.pure.js.map +1 -1
- package/Rendering/depthRenderer.pure.js +3 -4
- package/Rendering/depthRenderer.pure.js.map +1 -1
- package/Rendering/edgesRenderer.pure.d.ts +4 -2
- package/Rendering/edgesRenderer.pure.js +11 -2
- package/Rendering/edgesRenderer.pure.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +10 -0
- package/Rendering/fluidRenderer/fluidRenderingObject.js +20 -0
- package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.d.ts +9 -3
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +14 -9
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
- package/Rendering/geometryBufferRenderer.pure.d.ts +38 -4
- package/Rendering/geometryBufferRenderer.pure.js +126 -17
- package/Rendering/geometryBufferRenderer.pure.js.map +1 -1
- package/Rendering/objectRenderer.d.ts +7 -1
- package/Rendering/objectRenderer.js +45 -7
- package/Rendering/objectRenderer.js.map +1 -1
- package/Rendering/outlineRenderer.pure.js +6 -2
- package/Rendering/outlineRenderer.pure.js.map +1 -1
- package/Rendering/renderingManager.d.ts +1 -1
- package/Rendering/renderingManager.js +5 -4
- package/Rendering/renderingManager.js.map +1 -1
- package/Shaders/ShadersInclude/defaultFragmentAlpha.d.ts +5 -0
- package/Shaders/ShadersInclude/defaultFragmentAlpha.js +34 -0
- package/Shaders/ShadersInclude/defaultFragmentAlpha.js.map +1 -0
- package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js +5 -1
- package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/geometryRenderingFragment.d.ts +5 -0
- package/Shaders/ShadersInclude/geometryRenderingFragment.js +74 -0
- package/Shaders/ShadersInclude/geometryRenderingFragment.js.map +1 -0
- package/Shaders/ShadersInclude/mrtFragmentDeclaration.js +89 -0
- package/Shaders/ShadersInclude/mrtFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrBlockPrePass.js +24 -17
- package/Shaders/ShadersInclude/openpbrBlockPrePass.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockPrePass.js +27 -20
- package/Shaders/ShadersInclude/pbrBlockPrePass.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDebug.js +6 -2
- package/Shaders/ShadersInclude/pbrDebug.js.map +1 -1
- package/Shaders/ShadersInclude/prePassDeclaration.js +95 -2
- package/Shaders/ShadersInclude/prePassDeclaration.js.map +1 -1
- package/Shaders/default.fragment.js +31 -40
- package/Shaders/default.fragment.js.map +1 -1
- package/Shaders/depthOfField.fragment.js +13 -9
- package/Shaders/depthOfField.fragment.js.map +1 -1
- package/Shaders/fluidRenderingParticleDepth.vertex.js +16 -1
- package/Shaders/fluidRenderingParticleDepth.vertex.js.map +1 -1
- package/Shaders/fluidRenderingParticleThickness.vertex.js +16 -1
- package/Shaders/fluidRenderingParticleThickness.vertex.js.map +1 -1
- package/Shaders/gaussianSplatting.fragment.js +63 -3
- package/Shaders/gaussianSplatting.fragment.js.map +1 -1
- package/Shaders/gaussianSplatting.vertex.js +80 -0
- package/Shaders/gaussianSplatting.vertex.js.map +1 -1
- package/Shaders/geometry.fragment.js +17 -11
- package/Shaders/geometry.fragment.js.map +1 -1
- package/Shaders/gpuRenderParticles.fragment.js +43 -1
- package/Shaders/gpuRenderParticles.fragment.js.map +1 -1
- package/Shaders/gpuRenderParticles.vertex.js +96 -16
- package/Shaders/gpuRenderParticles.vertex.js.map +1 -1
- package/Shaders/meshBlending.fragment.d.ts +5 -0
- package/Shaders/meshBlending.fragment.js +519 -0
- package/Shaders/meshBlending.fragment.js.map +1 -0
- package/Shaders/particles.fragment.js +43 -1
- package/Shaders/particles.fragment.js.map +1 -1
- package/Shaders/particles.vertex.js +84 -3
- package/Shaders/particles.vertex.js.map +1 -1
- package/Shaders/sprites.fragment.js +52 -2
- package/Shaders/sprites.fragment.js.map +1 -1
- package/Shaders/sprites.vertex.js +62 -1
- package/Shaders/sprites.vertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.js +33 -0
- package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.d.ts +6 -0
- package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.js +76 -0
- package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/lightFragment.js +1 -1
- package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.js +18 -0
- package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.d.ts +1 -0
- package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.js +11 -25
- package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.d.ts +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js +11 -25
- package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrDebug.js +5 -1
- package/ShadersWGSL/ShadersInclude/pbrDebug.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/prePassDeclaration.js +6 -1
- package/ShadersWGSL/ShadersInclude/prePassDeclaration.js.map +1 -1
- package/ShadersWGSL/default.fragment.js +17 -48
- package/ShadersWGSL/default.fragment.js.map +1 -1
- package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js +15 -2
- package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js.map +1 -1
- package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js +15 -2
- package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.fragment.js +63 -2
- package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.vertex.js +80 -0
- package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
- package/ShadersWGSL/geometry.fragment.js +37 -2
- package/ShadersWGSL/geometry.fragment.js.map +1 -1
- package/ShadersWGSL/gpuRenderParticles.fragment.js +47 -2
- package/ShadersWGSL/gpuRenderParticles.fragment.js.map +1 -1
- package/ShadersWGSL/gpuRenderParticles.vertex.js +110 -7
- package/ShadersWGSL/gpuRenderParticles.vertex.js.map +1 -1
- package/ShadersWGSL/meshBlending.fragment.d.ts +5 -0
- package/ShadersWGSL/meshBlending.fragment.js +576 -0
- package/ShadersWGSL/meshBlending.fragment.js.map +1 -0
- package/ShadersWGSL/openpbr.fragment.js +2 -1
- package/ShadersWGSL/openpbr.fragment.js.map +1 -1
- package/ShadersWGSL/particles.fragment.js +45 -1
- package/ShadersWGSL/particles.fragment.js.map +1 -1
- package/ShadersWGSL/particles.vertex.js +86 -4
- package/ShadersWGSL/particles.vertex.js.map +1 -1
- package/ShadersWGSL/pbr.fragment.js +2 -1
- package/ShadersWGSL/pbr.fragment.js.map +1 -1
- package/ShadersWGSL/sprites.fragment.js +56 -2
- package/ShadersWGSL/sprites.fragment.js.map +1 -1
- package/ShadersWGSL/sprites.vertex.js +62 -1
- package/ShadersWGSL/sprites.vertex.js.map +1 -1
- package/Sprites/spriteManager.d.ts +13 -0
- package/Sprites/spriteManager.js +15 -0
- package/Sprites/spriteManager.js.map +1 -1
- package/Sprites/spriteRenderer.d.ts +24 -1
- package/Sprites/spriteRenderer.js +368 -50
- package/Sprites/spriteRenderer.js.map +1 -1
- package/Sprites/thinSprite.d.ts +4 -0
- package/Sprites/thinSprite.js +4 -0
- package/Sprites/thinSprite.js.map +1 -1
- package/States/alphaCullingState.d.ts +3 -1
- package/States/alphaCullingState.js +18 -3
- package/States/alphaCullingState.js.map +1 -1
- package/XR/webXRDefaultExperience.d.ts +5 -1
- package/XR/webXRDefaultExperience.js.map +1 -1
- package/XR/webXREnterExitUI.d.ts +2 -1
- package/XR/webXREnterExitUI.js.map +1 -1
- package/package.json +1 -1
- package/scene.pure.d.ts +23 -0
- package/scene.pure.js +35 -0
- package/scene.pure.js.map +1 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
import { Logger } from "../../Misc/logger.js";
|
|
3
2
|
import { FluidRenderingObject } from "./fluidRenderingObject.js";
|
|
4
3
|
/**
|
|
5
4
|
* Defines a rendering object based on a particle system
|
|
@@ -72,15 +71,21 @@ export class FluidRenderingObjectParticleSystem extends FluidRenderingObject {
|
|
|
72
71
|
this.useTrueRenderingForDiffuseTexture = false;
|
|
73
72
|
}
|
|
74
73
|
/**
|
|
75
|
-
* GPUParticleSystem
|
|
76
|
-
* @returns
|
|
74
|
+
* GPUParticleSystem stores "size" as (baseSize, scaleX, scaleY); ParticleSystem as (width, height).
|
|
75
|
+
* @returns the number of components of the "size" attribute
|
|
77
76
|
*/
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
77
|
+
_getPerParticleSizeAttributeSize() {
|
|
78
|
+
return this._isGPUParticleSystem ? 3 : 2;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* GPUParticleSystem's "offset" quad is centered ([-0.5, 0.5]); ParticleSystem's is in [0, 1].
|
|
82
|
+
* @returns true if the "offset" attribute is centered
|
|
83
|
+
*/
|
|
84
|
+
_usesCenteredOffsetAttribute() {
|
|
85
|
+
return this._isGPUParticleSystem;
|
|
86
|
+
}
|
|
87
|
+
get _isGPUParticleSystem() {
|
|
88
|
+
return this._particleSystem.getClassName() === "GPUParticleSystem";
|
|
84
89
|
}
|
|
85
90
|
/**
|
|
86
91
|
* Indicates if the object is ready to be rendered
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fluidRenderingObjectParticleSystem.js","sourceRoot":"","sources":["../../../../../dev/core/src/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"fluidRenderingObjectParticleSystem.js","sourceRoot":"","sources":["../../../../../dev/core/src/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.ts"],"names":[],"mappings":"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","sourcesContent":["import { type VertexBuffer } from \"core/Buffers/buffer\";\r\nimport { type DataBuffer } from \"core/Buffers/dataBuffer\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { type Effect } from \"core/Materials/effect\";\r\nimport { type Observer } from \"core/Misc/observable\";\r\nimport { type IParticleSystem } from \"core/Particles/IParticleSystem\";\r\nimport { type Scene } from \"core/scene\";\r\nimport { type Nullable } from \"core/types\";\r\n\r\nimport { FluidRenderingObject } from \"./fluidRenderingObject\";\r\nimport { type ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\n/**\r\n * Defines a rendering object based on a particle system\r\n */\r\nexport class FluidRenderingObjectParticleSystem extends FluidRenderingObject {\r\n private _particleSystem: IParticleSystem;\r\n private _originalRender: () => number;\r\n private _blendMode: number;\r\n private _onBeforeDrawParticleObserver: Nullable<Observer<Nullable<Effect>>>;\r\n private _updateInAnimate: boolean;\r\n\r\n /** Gets the particle system */\r\n public get particleSystem() {\r\n return this._particleSystem;\r\n }\r\n\r\n /**\r\n * @returns the name of the class\r\n */\r\n public override getClassName(): string {\r\n return \"FluidRenderingObjectParticleSystem\";\r\n }\r\n\r\n private _useTrueRenderingForDiffuseTexture = true;\r\n\r\n /**\r\n * Gets or sets a boolean indicating that the diffuse texture should be generated based on the regular rendering of the particle system (default: true).\r\n * Sometimes, generating the diffuse texture this way may be sub-optimal. In that case, you can disable this property, in which case the particle system will be\r\n * rendered using a ALPHA_COMBINE mode instead of the one used by the particle system.\r\n */\r\n public get useTrueRenderingForDiffuseTexture() {\r\n return this._useTrueRenderingForDiffuseTexture;\r\n }\r\n\r\n public set useTrueRenderingForDiffuseTexture(use: boolean) {\r\n if (this._useTrueRenderingForDiffuseTexture === use) {\r\n return;\r\n }\r\n\r\n this._useTrueRenderingForDiffuseTexture = use;\r\n\r\n if (use) {\r\n this._particleSystem.blendMode = this._blendMode;\r\n this._particleSystem.onBeforeDrawParticlesObservable.remove(this._onBeforeDrawParticleObserver);\r\n this._onBeforeDrawParticleObserver = null;\r\n } else {\r\n this._particleSystem.blendMode = -1;\r\n this._onBeforeDrawParticleObserver = this._particleSystem.onBeforeDrawParticlesObservable.add(() => {\r\n this._engine.setAlphaMode(Constants.ALPHA_COMBINE);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Gets the vertex buffers\r\n */\r\n public get vertexBuffers(): { [key: string]: VertexBuffer } {\r\n return this._particleSystem.vertexBuffers as { [key: string]: VertexBuffer };\r\n }\r\n\r\n /**\r\n * Gets the index buffer (or null if the object is using instancing)\r\n */\r\n public override get indexBuffer(): Nullable<DataBuffer> {\r\n return this._particleSystem.indexBuffer;\r\n }\r\n\r\n /**\r\n * Creates a new instance of the class\r\n * @param scene The scene the particle system is part of\r\n * @param ps The particle system\r\n * @param shaderLanguage The shader language to use\r\n */\r\n constructor(scene: Scene, ps: IParticleSystem, shaderLanguage?: ShaderLanguage) {\r\n super(scene, shaderLanguage);\r\n\r\n this._particleSystem = ps;\r\n\r\n this._originalRender = ps.render.bind(ps);\r\n this._blendMode = ps.blendMode;\r\n this._onBeforeDrawParticleObserver = null;\r\n this._updateInAnimate = this._particleSystem.updateInAnimate;\r\n this._particleSystem.updateInAnimate = true;\r\n this._particleSystem.render = () => 0;\r\n\r\n this.particleSize = (ps.minSize + ps.maxSize) / 2;\r\n\r\n this.useTrueRenderingForDiffuseTexture = false;\r\n }\r\n\r\n /**\r\n * GPUParticleSystem stores \"size\" as (baseSize, scaleX, scaleY); ParticleSystem as (width, height).\r\n * @returns the number of components of the \"size\" attribute\r\n */\r\n protected override _getPerParticleSizeAttributeSize(): number {\r\n return this._isGPUParticleSystem ? 3 : 2;\r\n }\r\n\r\n /**\r\n * GPUParticleSystem's \"offset\" quad is centered ([-0.5, 0.5]); ParticleSystem's is in [0, 1].\r\n * @returns true if the \"offset\" attribute is centered\r\n */\r\n protected override _usesCenteredOffsetAttribute(): boolean {\r\n return this._isGPUParticleSystem;\r\n }\r\n\r\n private get _isGPUParticleSystem(): boolean {\r\n return this._particleSystem.getClassName() === \"GPUParticleSystem\";\r\n }\r\n\r\n /**\r\n * Indicates if the object is ready to be rendered\r\n * @returns True if everything is ready for the object to be rendered, otherwise false\r\n */\r\n public override isReady(): boolean {\r\n return super.isReady() && this._particleSystem.isReady();\r\n }\r\n\r\n /**\r\n * Gets the number of particles in this particle system\r\n * @returns The number of particles\r\n */\r\n public get numParticles(): number {\r\n return this._particleSystem.getActiveCount();\r\n }\r\n\r\n /**\r\n * Render the diffuse texture for this object\r\n */\r\n public override renderDiffuseTexture(): void {\r\n this._originalRender();\r\n }\r\n\r\n /**\r\n * Releases the resources used by the class\r\n */\r\n public override dispose() {\r\n super.dispose();\r\n\r\n this._particleSystem.onBeforeDrawParticlesObservable.remove(this._onBeforeDrawParticleObserver);\r\n this._onBeforeDrawParticleObserver = null;\r\n this._particleSystem.render = this._originalRender;\r\n this._particleSystem.blendMode = this._blendMode;\r\n this._particleSystem.updateInAnimate = this._updateInAnimate;\r\n }\r\n}\r\n"]}
|
|
@@ -8,7 +8,7 @@ import { type Scene } from "../scene.pure.js";
|
|
|
8
8
|
import { type AbstractMesh } from "../Meshes/abstractMesh.pure.js";
|
|
9
9
|
import { type Nullable } from "../types.js";
|
|
10
10
|
import { ShaderLanguage } from "../Materials/shaderLanguage.js";
|
|
11
|
-
import { type GeometryRenderingObjectIdProvider } from "../Materials/materialHelper.geometryrendering.js";
|
|
11
|
+
import { type GeometryRenderingMeshBlendTagProvider, type GeometryRenderingObjectIdProvider } from "../Materials/materialHelper.geometryrendering.js";
|
|
12
12
|
/** @internal */
|
|
13
13
|
interface ISavedTransformationMatrix {
|
|
14
14
|
world: Matrix;
|
|
@@ -82,6 +82,10 @@ export declare class GeometryBufferRenderer {
|
|
|
82
82
|
* Object IDs are stored as 24-bit unsigned integers encoded in the RGB channels.
|
|
83
83
|
*/
|
|
84
84
|
static readonly OBJECT_ID_TEXTURE_TYPE = 8;
|
|
85
|
+
/**
|
|
86
|
+
* Constant used to retrieve the packed mesh-blending tag texture index in the G-Buffer textures array.
|
|
87
|
+
*/
|
|
88
|
+
static readonly MESH_BLEND_TAG_TEXTURE_TYPE = 9;
|
|
85
89
|
/**
|
|
86
90
|
* Dictionary used to store the previous transformation matrices of each rendered mesh
|
|
87
91
|
* in order to compute objects velocities when enableVelocity is set to "true"
|
|
@@ -103,8 +107,10 @@ export declare class GeometryBufferRenderer {
|
|
|
103
107
|
* Avoids computing bones velocities and computes only mesh's velocity itself (position, rotation, scaling).
|
|
104
108
|
*/
|
|
105
109
|
excludedSkinnedMeshesFromVelocity: AbstractMesh[];
|
|
110
|
+
private _renderTransparentMeshes;
|
|
106
111
|
/** Gets or sets a boolean indicating if transparent meshes should be rendered */
|
|
107
|
-
renderTransparentMeshes: boolean;
|
|
112
|
+
get renderTransparentMeshes(): boolean;
|
|
113
|
+
set renderTransparentMeshes(value: boolean);
|
|
108
114
|
/**
|
|
109
115
|
* Provides the object ID written for each rendered mesh.
|
|
110
116
|
*
|
|
@@ -112,9 +118,18 @@ export declare class GeometryBufferRenderer {
|
|
|
112
118
|
* Instances use the ID of their source mesh. The default is the mesh unique ID.
|
|
113
119
|
* Default IDs are only stable for the lifetime of the current scene and should not be persisted.
|
|
114
120
|
* The provider runs in the render hot path and may be called multiple times for the same mesh in a frame.
|
|
115
|
-
* @see https://playground.babylonjs.com
|
|
121
|
+
* @see https://playground.babylonjs.com/?version=preview#SQXZ3X#1
|
|
116
122
|
*/
|
|
117
123
|
objectIdProvider?: GeometryRenderingObjectIdProvider;
|
|
124
|
+
/**
|
|
125
|
+
* Provides the packed mesh-blending tag written for each rendered mesh.
|
|
126
|
+
*
|
|
127
|
+
* Tags must be 0 or contain a group ID between 1 and 63 in their low six bits. Tag 0 disables mesh blending.
|
|
128
|
+
* By default, meshes use their `meshBlendingTag` property. Instances and thin instances use the source mesh tag.
|
|
129
|
+
* The provider runs in the render hot path and receives the source mesh for instanced draws.
|
|
130
|
+
* It should avoid allocations and return a consistent value for a mesh during a render.
|
|
131
|
+
*/
|
|
132
|
+
meshBlendTagProvider?: GeometryRenderingMeshBlendTagProvider;
|
|
118
133
|
/**
|
|
119
134
|
* Gets or sets a boolean indicating if normals should be generated in world space (default: false, meaning normals are generated in view space)
|
|
120
135
|
*/
|
|
@@ -138,6 +153,7 @@ export declare class GeometryBufferRenderer {
|
|
|
138
153
|
private _enableScreenspaceDepth;
|
|
139
154
|
private _enableIrradiance;
|
|
140
155
|
private _enableObjectId;
|
|
156
|
+
private _enableMeshBlendTag;
|
|
141
157
|
private _depthFormat;
|
|
142
158
|
private _clearColor;
|
|
143
159
|
private _clearDepthColor;
|
|
@@ -150,6 +166,7 @@ export declare class GeometryBufferRenderer {
|
|
|
150
166
|
private _screenspaceDepthIndex;
|
|
151
167
|
private _irradianceIndex;
|
|
152
168
|
private _objectIdIndex;
|
|
169
|
+
private _meshBlendTagIndex;
|
|
153
170
|
private _linkedWithPrePass;
|
|
154
171
|
private _prePassRenderer;
|
|
155
172
|
private _attachmentsFromPrePass;
|
|
@@ -283,9 +300,25 @@ export declare class GeometryBufferRenderer {
|
|
|
283
300
|
*
|
|
284
301
|
* Object ID rendering currently requires a single-sample G buffer.
|
|
285
302
|
* Object ID rendering is not supported when the G buffer is linked to the PrePassRenderer.
|
|
286
|
-
* @see https://playground.babylonjs.com
|
|
303
|
+
* @see https://playground.babylonjs.com/?version=preview#SQXZ3X#1
|
|
287
304
|
*/
|
|
288
305
|
set enableObjectId(enable: boolean);
|
|
306
|
+
/**
|
|
307
|
+
* Gets whether packed mesh-blending tags are enabled for the G buffer.
|
|
308
|
+
*/
|
|
309
|
+
get enableMeshBlendingTag(): boolean;
|
|
310
|
+
/**
|
|
311
|
+
* Sets whether packed mesh-blending tags are enabled for the G buffer.
|
|
312
|
+
*
|
|
313
|
+
* Mesh-blending tags use a single-sample R8UI color attachment and are supported on WebGL2 and WebGPU.
|
|
314
|
+
* Transparent rendering remains controlled by renderTransparentMeshes. Applications are responsible for
|
|
315
|
+
* ensuring that transparent draws do not invalidate the SceneColor and geometry-input correspondence required
|
|
316
|
+
* by the mesh-blending pass. On WebGL2, transparent rendering with this output requires per-target blend parameters.
|
|
317
|
+
*
|
|
318
|
+
* Enabling or disabling this output rebuilds the renderer's targets. The application retains ownership
|
|
319
|
+
* of the GeometryBufferRenderer and of every post process that consumes the output.
|
|
320
|
+
*/
|
|
321
|
+
set enableMeshBlendingTag(enable: boolean);
|
|
289
322
|
/**
|
|
290
323
|
* This will store a mask in the alpha channel of the irradiance texture to indicate which pixels have
|
|
291
324
|
* scattering and should be taken into account when applying image-based lighting.
|
|
@@ -357,6 +390,7 @@ export declare class GeometryBufferRenderer {
|
|
|
357
390
|
dispose(): void;
|
|
358
391
|
private _assignRenderTargetIndices;
|
|
359
392
|
protected _createRenderTargets(): void;
|
|
393
|
+
private _getRenderTargetDimensions;
|
|
360
394
|
private _copyBonesTransformationMatrices;
|
|
361
395
|
}
|
|
362
396
|
/**
|
|
@@ -11,8 +11,9 @@ import { MaterialFlags } from "../Materials/materialFlags.js";
|
|
|
11
11
|
import { BindClipPlane, PrepareStringDefinesForClipPlanes, AddClipPlaneUniforms } from "../Materials/clipPlaneMaterialHelper.js";
|
|
12
12
|
import { BindMorphTargetParameters, BindSceneUniformBuffer, PrepareDefinesAndAttributesForMorphTargets, PushAttributesForInstances, PrepareDefinesForIBL, PrepareUniformsAndSamplersForIBL, } from "../Materials/materialHelper.functions.js";
|
|
13
13
|
import { RegisterGeometryBufferRendererSceneComponent } from "./geometryBufferRendererSceneComponent.pure.js";
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
14
|
+
import { _IsGaussianSplattingMesh } from "../Meshes/GaussianSplatting/gaussianSplatting.functions.js";
|
|
15
|
+
import { _IsMeshBlendingSupported } from "../Meshes/meshBlendingTag.js";
|
|
16
|
+
import { _GetGeometryRenderingMeshBlendTag, _GetGeometryRenderingObjectId, } from "../Materials/materialHelper.geometryrendering.js";
|
|
16
17
|
export const Samplers = [
|
|
17
18
|
"diffuseSampler",
|
|
18
19
|
"bumpSampler",
|
|
@@ -30,6 +31,7 @@ export const Uniforms = [
|
|
|
30
31
|
"mBones",
|
|
31
32
|
"viewProjection",
|
|
32
33
|
"diffuseMatrix",
|
|
34
|
+
"alphaCutOff",
|
|
33
35
|
"view",
|
|
34
36
|
"previousWorld",
|
|
35
37
|
"previousViewProjection",
|
|
@@ -56,11 +58,22 @@ export const Uniforms = [
|
|
|
56
58
|
"morphTargetTextureIndices",
|
|
57
59
|
"boneTextureInfo",
|
|
58
60
|
"objectId",
|
|
61
|
+
"meshBlendTag",
|
|
59
62
|
];
|
|
60
63
|
/**
|
|
61
64
|
* This renderer is helpful to fill one of the render target with a geometry buffer.
|
|
62
65
|
*/
|
|
63
66
|
export class GeometryBufferRenderer {
|
|
67
|
+
/** Gets or sets a boolean indicating if transparent meshes should be rendered */
|
|
68
|
+
get renderTransparentMeshes() {
|
|
69
|
+
return this._renderTransparentMeshes;
|
|
70
|
+
}
|
|
71
|
+
set renderTransparentMeshes(value) {
|
|
72
|
+
if (value && this._enableMeshBlendTag && !this._scene.getEngine().getCaps().blendParametersPerTarget) {
|
|
73
|
+
throw new Error("GeometryBufferRenderer: transparent mesh-blending tags require per-target blend parameters");
|
|
74
|
+
}
|
|
75
|
+
this._renderTransparentMeshes = value;
|
|
76
|
+
}
|
|
64
77
|
/**
|
|
65
78
|
* Gets a boolean indicating if normals are encoded in the [0,1] range in the render target. If true, you should do `normal = normal_rt * 2.0 - 1.0` to get the right normal
|
|
66
79
|
*/
|
|
@@ -73,6 +86,9 @@ export class GeometryBufferRenderer {
|
|
|
73
86
|
* This method should only be called by the PrePassRenderer itself
|
|
74
87
|
*/
|
|
75
88
|
_linkPrePassRenderer(prePassRenderer) {
|
|
89
|
+
if (this._enableObjectId || this._enableMeshBlendTag) {
|
|
90
|
+
throw new Error("GeometryBufferRenderer: object ID and mesh-blending tag textures are not supported when linked to the PrePassRenderer");
|
|
91
|
+
}
|
|
76
92
|
this._linkedWithPrePass = true;
|
|
77
93
|
this._prePassRenderer = prePassRenderer;
|
|
78
94
|
if (this._multiRenderTarget) {
|
|
@@ -106,6 +122,7 @@ export class GeometryBufferRenderer {
|
|
|
106
122
|
this._enableScreenspaceDepth = false;
|
|
107
123
|
this._enableIrradiance = false;
|
|
108
124
|
this._enableObjectId = false;
|
|
125
|
+
this._enableMeshBlendTag = false;
|
|
109
126
|
this._attachmentsFromPrePass = [];
|
|
110
127
|
}
|
|
111
128
|
/**
|
|
@@ -150,6 +167,10 @@ export class GeometryBufferRenderer {
|
|
|
150
167
|
this._objectIdIndex = index;
|
|
151
168
|
this._enableObjectId = true;
|
|
152
169
|
}
|
|
170
|
+
else if (geometryBufferType === GeometryBufferRenderer.MESH_BLEND_TAG_TEXTURE_TYPE) {
|
|
171
|
+
this._meshBlendTagIndex = index;
|
|
172
|
+
this._enableMeshBlendTag = true;
|
|
173
|
+
}
|
|
153
174
|
}
|
|
154
175
|
/**
|
|
155
176
|
* @internal
|
|
@@ -211,6 +232,8 @@ export class GeometryBufferRenderer {
|
|
|
211
232
|
return this._irradianceIndex;
|
|
212
233
|
case GeometryBufferRenderer.OBJECT_ID_TEXTURE_TYPE:
|
|
213
234
|
return this._objectIdIndex;
|
|
235
|
+
case GeometryBufferRenderer.MESH_BLEND_TAG_TEXTURE_TYPE:
|
|
236
|
+
return this._meshBlendTagIndex;
|
|
214
237
|
default:
|
|
215
238
|
return -1;
|
|
216
239
|
}
|
|
@@ -360,7 +383,7 @@ export class GeometryBufferRenderer {
|
|
|
360
383
|
*
|
|
361
384
|
* Object ID rendering currently requires a single-sample G buffer.
|
|
362
385
|
* Object ID rendering is not supported when the G buffer is linked to the PrePassRenderer.
|
|
363
|
-
* @see https://playground.babylonjs.com
|
|
386
|
+
* @see https://playground.babylonjs.com/?version=preview#SQXZ3X#1
|
|
364
387
|
*/
|
|
365
388
|
set enableObjectId(enable) {
|
|
366
389
|
if (enable && this._linkedWithPrePass) {
|
|
@@ -386,6 +409,58 @@ export class GeometryBufferRenderer {
|
|
|
386
409
|
this._createRenderTargets();
|
|
387
410
|
}
|
|
388
411
|
}
|
|
412
|
+
/**
|
|
413
|
+
* Gets whether packed mesh-blending tags are enabled for the G buffer.
|
|
414
|
+
*/
|
|
415
|
+
get enableMeshBlendingTag() {
|
|
416
|
+
return this._enableMeshBlendTag;
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Sets whether packed mesh-blending tags are enabled for the G buffer.
|
|
420
|
+
*
|
|
421
|
+
* Mesh-blending tags use a single-sample R8UI color attachment and are supported on WebGL2 and WebGPU.
|
|
422
|
+
* Transparent rendering remains controlled by renderTransparentMeshes. Applications are responsible for
|
|
423
|
+
* ensuring that transparent draws do not invalidate the SceneColor and geometry-input correspondence required
|
|
424
|
+
* by the mesh-blending pass. On WebGL2, transparent rendering with this output requires per-target blend parameters.
|
|
425
|
+
*
|
|
426
|
+
* Enabling or disabling this output rebuilds the renderer's targets. The application retains ownership
|
|
427
|
+
* of the GeometryBufferRenderer and of every post process that consumes the output.
|
|
428
|
+
*/
|
|
429
|
+
set enableMeshBlendingTag(enable) {
|
|
430
|
+
if (this._enableMeshBlendTag === enable) {
|
|
431
|
+
return;
|
|
432
|
+
}
|
|
433
|
+
if (enable) {
|
|
434
|
+
const engine = this._scene.getEngine();
|
|
435
|
+
if (!_IsMeshBlendingSupported(engine)) {
|
|
436
|
+
throw new Error("GeometryBufferRenderer: mesh-blending tag textures require WebGL2 or WebGPU");
|
|
437
|
+
}
|
|
438
|
+
if (this.renderTransparentMeshes && !engine.isWebGPU && !engine.getCaps().blendParametersPerTarget) {
|
|
439
|
+
throw new Error("GeometryBufferRenderer: transparent mesh-blending tags require per-target blend parameters");
|
|
440
|
+
}
|
|
441
|
+
if (this._linkedWithPrePass) {
|
|
442
|
+
throw new Error("GeometryBufferRenderer: mesh-blending tag textures are not supported when linked to the PrePassRenderer");
|
|
443
|
+
}
|
|
444
|
+
if (this.samples !== 1) {
|
|
445
|
+
throw new Error("GeometryBufferRenderer: mesh-blending tag textures require samples to be 1");
|
|
446
|
+
}
|
|
447
|
+
if (!this._enableMeshBlendTag) {
|
|
448
|
+
const maxDrawBuffers = Math.min(engine.getCaps().maxDrawBuffers ?? 1, 8);
|
|
449
|
+
const attachmentCount = this._assignRenderTargetIndices()[0] + 1;
|
|
450
|
+
if (engine.getCaps().drawBuffersExtension && attachmentCount > maxDrawBuffers) {
|
|
451
|
+
throw new Error(`GeometryBufferRenderer: ${attachmentCount} color attachments were requested, but this engine supports at most ${maxDrawBuffers}`);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
this._enableMeshBlendTag = enable;
|
|
456
|
+
if (!enable) {
|
|
457
|
+
this._meshBlendTagIndex = -1;
|
|
458
|
+
}
|
|
459
|
+
if (!this._linkedWithPrePass) {
|
|
460
|
+
this.dispose();
|
|
461
|
+
this._createRenderTargets();
|
|
462
|
+
}
|
|
463
|
+
}
|
|
389
464
|
/**
|
|
390
465
|
* Gets the scene associated with the buffer.
|
|
391
466
|
*/
|
|
@@ -431,8 +506,7 @@ export class GeometryBufferRenderer {
|
|
|
431
506
|
* Avoids computing bones velocities and computes only mesh's velocity itself (position, rotation, scaling).
|
|
432
507
|
*/
|
|
433
508
|
this.excludedSkinnedMeshesFromVelocity = [];
|
|
434
|
-
|
|
435
|
-
this.renderTransparentMeshes = true;
|
|
509
|
+
this._renderTransparentMeshes = true;
|
|
436
510
|
/**
|
|
437
511
|
* Gets or sets a boolean indicating if normals should be generated in world space (default: false, meaning normals are generated in view space)
|
|
438
512
|
*/
|
|
@@ -448,6 +522,7 @@ export class GeometryBufferRenderer {
|
|
|
448
522
|
this._enableScreenspaceDepth = false;
|
|
449
523
|
this._enableIrradiance = false;
|
|
450
524
|
this._enableObjectId = false;
|
|
525
|
+
this._enableMeshBlendTag = false;
|
|
451
526
|
this._clearColor = new Color4(0, 0, 0, 0);
|
|
452
527
|
this._clearDepthColor = new Color4(0, 0, 0, 1); // sets an invalid value by default - depth in the depth texture is view.z, so 0 is not possible because view.z can't be less than camera.minZ
|
|
453
528
|
this._positionIndex = -1;
|
|
@@ -459,6 +534,7 @@ export class GeometryBufferRenderer {
|
|
|
459
534
|
this._screenspaceDepthIndex = -1;
|
|
460
535
|
this._irradianceIndex = -1;
|
|
461
536
|
this._objectIdIndex = -1;
|
|
537
|
+
this._meshBlendTagIndex = -1;
|
|
462
538
|
this._linkedWithPrePass = false;
|
|
463
539
|
/**
|
|
464
540
|
* This will store a mask in the alpha channel of the irradiance texture to indicate which pixels have
|
|
@@ -514,7 +590,7 @@ export class GeometryBufferRenderer {
|
|
|
514
590
|
// The generic geometry.vertex shader misreads this as world coordinates, producing
|
|
515
591
|
// garbage positions and normals, and thus they should be excluded from the G-buffer
|
|
516
592
|
// rendering.
|
|
517
|
-
if (
|
|
593
|
+
if (_IsGaussianSplattingMesh(subMesh.getMesh())) {
|
|
518
594
|
return false;
|
|
519
595
|
}
|
|
520
596
|
const defines = [];
|
|
@@ -816,6 +892,10 @@ export class GeometryBufferRenderer {
|
|
|
816
892
|
defines.push("#define OBJECT_ID");
|
|
817
893
|
defines.push("#define OBJECT_ID_INDEX " + this._objectIdIndex);
|
|
818
894
|
}
|
|
895
|
+
if (this._enableMeshBlendTag) {
|
|
896
|
+
defines.push("#define MESH_BLEND_TAG");
|
|
897
|
+
defines.push("#define MESH_BLEND_TAG_INDEX " + this._meshBlendTagIndex);
|
|
898
|
+
}
|
|
819
899
|
if (this.generateNormalsInWorldSpace) {
|
|
820
900
|
defines.push("#define NORMAL_WORLDSPACE");
|
|
821
901
|
}
|
|
@@ -906,6 +986,9 @@ export class GeometryBufferRenderer {
|
|
|
906
986
|
if (this._enableObjectId && value !== 1) {
|
|
907
987
|
throw new Error("GeometryBufferRenderer: object ID textures currently require samples to be 1");
|
|
908
988
|
}
|
|
989
|
+
if (this._enableMeshBlendTag && value !== 1) {
|
|
990
|
+
throw new Error("GeometryBufferRenderer: mesh-blending tag textures require samples to be 1");
|
|
991
|
+
}
|
|
909
992
|
this._multiRenderTarget.samples = value;
|
|
910
993
|
}
|
|
911
994
|
/**
|
|
@@ -984,6 +1067,16 @@ export class GeometryBufferRenderer {
|
|
|
984
1067
|
samplingMode: 1,
|
|
985
1068
|
});
|
|
986
1069
|
}
|
|
1070
|
+
if (this._enableMeshBlendTag) {
|
|
1071
|
+
this._meshBlendTagIndex = count;
|
|
1072
|
+
count++;
|
|
1073
|
+
textureNames.push("gBuffer_MeshBlendTag");
|
|
1074
|
+
textureTypesAndFormats.push({
|
|
1075
|
+
textureType: 0,
|
|
1076
|
+
textureFormat: 8,
|
|
1077
|
+
samplingMode: 1,
|
|
1078
|
+
});
|
|
1079
|
+
}
|
|
987
1080
|
return [count, textureNames, textureTypesAndFormats];
|
|
988
1081
|
}
|
|
989
1082
|
_createRenderTargets() {
|
|
@@ -1000,9 +1093,7 @@ export class GeometryBufferRenderer {
|
|
|
1000
1093
|
else if (engine._caps.textureHalfFloat && engine._caps.textureHalfFloatLinearFiltering) {
|
|
1001
1094
|
type = 2;
|
|
1002
1095
|
}
|
|
1003
|
-
const dimensions = this.
|
|
1004
|
-
? this._ratioOrDimensions
|
|
1005
|
-
: { width: engine.getRenderWidth() * this._ratioOrDimensions, height: engine.getRenderHeight() * this._ratioOrDimensions };
|
|
1096
|
+
const dimensions = this._getRenderTargetDimensions();
|
|
1006
1097
|
const textureTypes = [];
|
|
1007
1098
|
const textureFormats = [];
|
|
1008
1099
|
const samplingModes = [];
|
|
@@ -1043,20 +1134,16 @@ export class GeometryBufferRenderer {
|
|
|
1043
1134
|
const attachmentsAllButDepth = engine.buildTextureLayout(layoutAttachmentsAllButDepth);
|
|
1044
1135
|
const attachmentsDepthOnly = engine.buildTextureLayout(layoutAttachmentsDepthOnly);
|
|
1045
1136
|
this._multiRenderTarget.onClearObservable.add((engine) => {
|
|
1046
|
-
|
|
1047
|
-
engine.
|
|
1137
|
+
const colorAttachments = this.useSpecificClearForDepthTexture ? attachmentsAllButDepth : attachmentsAll;
|
|
1138
|
+
engine.clearAttachments(this._clearColor, colorAttachments, true, true, true);
|
|
1048
1139
|
if (this.useSpecificClearForDepthTexture) {
|
|
1049
|
-
engine.
|
|
1050
|
-
engine.clear(this._clearDepthColor, true, true, true);
|
|
1140
|
+
engine.clearAttachments(this._clearDepthColor, attachmentsDepthOnly, true, false, false);
|
|
1051
1141
|
}
|
|
1052
1142
|
engine.bindAttachments(attachmentsAll);
|
|
1053
1143
|
});
|
|
1054
1144
|
this._resizeObserver = engine.onResizeObservable.add(() => {
|
|
1055
1145
|
if (this._multiRenderTarget) {
|
|
1056
|
-
|
|
1057
|
-
? this._ratioOrDimensions
|
|
1058
|
-
: { width: engine.getRenderWidth() * this._ratioOrDimensions, height: engine.getRenderHeight() * this._ratioOrDimensions };
|
|
1059
|
-
this._multiRenderTarget.resize(dimensions);
|
|
1146
|
+
this._multiRenderTarget.resize(this._getRenderTargetDimensions());
|
|
1060
1147
|
}
|
|
1061
1148
|
});
|
|
1062
1149
|
// Custom render function
|
|
@@ -1126,6 +1213,7 @@ export class GeometryBufferRenderer {
|
|
|
1126
1213
|
if (alphaTexture) {
|
|
1127
1214
|
effect.setTexture("diffuseSampler", alphaTexture);
|
|
1128
1215
|
effect.setMatrix("diffuseMatrix", alphaTexture.getTextureMatrix());
|
|
1216
|
+
effect.setFloat("alphaCutOff", material.alphaCutOff ?? 0.4);
|
|
1129
1217
|
}
|
|
1130
1218
|
}
|
|
1131
1219
|
// Bump
|
|
@@ -1353,6 +1441,10 @@ export class GeometryBufferRenderer {
|
|
|
1353
1441
|
}
|
|
1354
1442
|
effect.setFloat("objectId", objectId);
|
|
1355
1443
|
}
|
|
1444
|
+
if (this._enableMeshBlendTag) {
|
|
1445
|
+
const meshBlendTag = this.meshBlendTagProvider ? _GetGeometryRenderingMeshBlendTag(renderingMesh, this.meshBlendTagProvider) : renderingMesh.meshBlendingTag;
|
|
1446
|
+
effect.setInt("meshBlendTag", meshBlendTag);
|
|
1447
|
+
}
|
|
1356
1448
|
if (hardwareInstancedRendering && renderingMesh.hasThinInstances) {
|
|
1357
1449
|
effect.setMatrix("world", world);
|
|
1358
1450
|
}
|
|
@@ -1420,6 +1512,19 @@ export class GeometryBufferRenderer {
|
|
|
1420
1512
|
engine.setDepthWrite(true);
|
|
1421
1513
|
};
|
|
1422
1514
|
}
|
|
1515
|
+
_getRenderTargetDimensions() {
|
|
1516
|
+
if (typeof this._ratioOrDimensions === "object") {
|
|
1517
|
+
return {
|
|
1518
|
+
width: Math.max(1, Math.floor(this._ratioOrDimensions.width)),
|
|
1519
|
+
height: Math.max(1, Math.floor(this._ratioOrDimensions.height)),
|
|
1520
|
+
};
|
|
1521
|
+
}
|
|
1522
|
+
const engine = this._scene.getEngine();
|
|
1523
|
+
return {
|
|
1524
|
+
width: Math.max(1, Math.floor(engine.getRenderWidth() * this._ratioOrDimensions)),
|
|
1525
|
+
height: Math.max(1, Math.floor(engine.getRenderHeight() * this._ratioOrDimensions)),
|
|
1526
|
+
};
|
|
1527
|
+
}
|
|
1423
1528
|
// Copies the bones transformation matrices into the target array and returns the target's reference
|
|
1424
1529
|
_copyBonesTransformationMatrices(source, target) {
|
|
1425
1530
|
for (let i = 0; i < source.length; i++) {
|
|
@@ -1478,6 +1583,10 @@ GeometryBufferRenderer.IRRADIANCE_TEXTURE_TYPE = 7;
|
|
|
1478
1583
|
* Object IDs are stored as 24-bit unsigned integers encoded in the RGB channels.
|
|
1479
1584
|
*/
|
|
1480
1585
|
GeometryBufferRenderer.OBJECT_ID_TEXTURE_TYPE = 8;
|
|
1586
|
+
/**
|
|
1587
|
+
* Constant used to retrieve the packed mesh-blending tag texture index in the G-Buffer textures array.
|
|
1588
|
+
*/
|
|
1589
|
+
GeometryBufferRenderer.MESH_BLEND_TAG_TEXTURE_TYPE = 9;
|
|
1481
1590
|
/**
|
|
1482
1591
|
* @internal
|
|
1483
1592
|
*/
|