@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
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { type Camera } from "../Cameras/camera.pure.js";
|
|
2
|
+
import { type BaseTexture } from "../Materials/Textures/baseTexture.pure.js";
|
|
3
|
+
import { type Scene } from "../scene.pure.js";
|
|
4
|
+
import { type Nullable } from "../types.js";
|
|
5
|
+
import { PostProcess, type PostProcessOptions } from "./postProcess.pure.js";
|
|
6
|
+
import { type IMeshBlendConfiguration, type MeshBlendDebugMode, MeshBlendDepthType, type MeshBlendQuality, type MeshBlendRadiusDefinitions, ThinMeshBlendingPostProcess } from "./thinMeshBlendingPostProcess.js";
|
|
7
|
+
/**
|
|
8
|
+
* Options used to create a mesh-blending post process.
|
|
9
|
+
*/
|
|
10
|
+
export interface IMeshBlendingPostProcessOptions extends PostProcessOptions, IMeshBlendConfiguration {
|
|
11
|
+
/** Optional caller-owned thin mesh-blending effect wrapper. A wrapper can be attached to only one classic post process at a time. */
|
|
12
|
+
effectWrapper?: ThinMeshBlendingPostProcess;
|
|
13
|
+
/**
|
|
14
|
+
* The packed R8UI mesh-blending tag texture.
|
|
15
|
+
*/
|
|
16
|
+
meshBlendTagTexture: BaseTexture;
|
|
17
|
+
/**
|
|
18
|
+
* The view-depth or screen-depth texture aligned with the packed tag texture.
|
|
19
|
+
*/
|
|
20
|
+
depthTexture: BaseTexture;
|
|
21
|
+
/**
|
|
22
|
+
* Optional linear base-color/albedo geometry texture aligned with SceneColor.
|
|
23
|
+
*
|
|
24
|
+
* When omitted, shadow estimation is compiled out.
|
|
25
|
+
*/
|
|
26
|
+
baseColorTexture?: BaseTexture;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Visually blends SceneColor across validated contacts between opaque or alpha-tested meshes.
|
|
30
|
+
*
|
|
31
|
+
* This WebGL2 and WebGPU effect does not change geometry, collision queries, depth, normals, or shadow geometry.
|
|
32
|
+
* Transparent rendering is caller-controlled. Applications assign explicit group IDs from 1 through 63;
|
|
33
|
+
* group 0 disables blending, and surfaces with the same nonzero group are treated as one logical object.
|
|
34
|
+
*
|
|
35
|
+
* The classic wrapper consumes caller-owned geometry textures and does not enable, configure, or dispose
|
|
36
|
+
* a GeometryBufferRenderer. The tag, depth, and SceneColor inputs are required; optional base color enables
|
|
37
|
+
* shadow estimation. All provided geometry inputs must have the same physical dimensions and sample count and
|
|
38
|
+
* are single-sampled. Overlapping transparent surfaces can make SceneColor inconsistent with the single-layer
|
|
39
|
+
* geometry inputs; compositing transparent content after this effect remains the recommended configuration.
|
|
40
|
+
*
|
|
41
|
+
* Four configurable radius classes combine world-space radii with physical-pixel minimums, for both
|
|
42
|
+
* perspective and orthographic cameras. Quality variants trade search work for seam quality. Stable search
|
|
43
|
+
* noise is internal and frame invariant. This implementation does not use temporal accumulation or require TAA.
|
|
44
|
+
*
|
|
45
|
+
* The classic wrapper is runtime-only because its geometry textures are caller-owned resources. It cannot
|
|
46
|
+
* be serialized, parsed, or cloned; use the FrameGraph/NRGE path when a serializable graph is required.
|
|
47
|
+
* @see https://meshblend.lervik.com/
|
|
48
|
+
* @see https://www.jacktollenaar.top/articles/meshblending.html
|
|
49
|
+
* @see https://www.jacktollenaar.top/articles/meshblending2.html
|
|
50
|
+
* @see https://bottosson.github.io/posts/oklab/
|
|
51
|
+
* @see https://playground.babylonjs.com/?version=preview#XVZTSI#3
|
|
52
|
+
* @see https://playground.babylonjs.com/?version=preview#O05LI8#6
|
|
53
|
+
*/
|
|
54
|
+
export declare class MeshBlendingPostProcess extends PostProcess {
|
|
55
|
+
protected _effectWrapper: ThinMeshBlendingPostProcess;
|
|
56
|
+
private _meshBlendTagTexture;
|
|
57
|
+
private _depthTexture;
|
|
58
|
+
private _baseColorTexture;
|
|
59
|
+
private readonly _ownsEffectWrapper;
|
|
60
|
+
/**
|
|
61
|
+
* Gets the compile-time quality variant.
|
|
62
|
+
*/
|
|
63
|
+
get quality(): MeshBlendQuality;
|
|
64
|
+
set quality(value: MeshBlendQuality);
|
|
65
|
+
/**
|
|
66
|
+
* The packed R8UI mesh-blending tag texture used by the effect.
|
|
67
|
+
*/
|
|
68
|
+
get meshBlendTagTexture(): BaseTexture;
|
|
69
|
+
set meshBlendTagTexture(value: BaseTexture);
|
|
70
|
+
/**
|
|
71
|
+
* The depth texture used for position reconstruction and contact validation.
|
|
72
|
+
*/
|
|
73
|
+
get depthTexture(): BaseTexture;
|
|
74
|
+
set depthTexture(value: BaseTexture);
|
|
75
|
+
/**
|
|
76
|
+
* The optional linear base-color/albedo geometry texture used by the shadow-transfer heuristic.
|
|
77
|
+
*
|
|
78
|
+
* Setting null compiles shadow estimation out.
|
|
79
|
+
*/
|
|
80
|
+
get baseColorTexture(): Nullable<BaseTexture>;
|
|
81
|
+
set baseColorTexture(value: Nullable<BaseTexture>);
|
|
82
|
+
/**
|
|
83
|
+
* Gets the representation stored in the depth texture.
|
|
84
|
+
*/
|
|
85
|
+
get depthType(): MeshBlendDepthType;
|
|
86
|
+
set depthType(value: MeshBlendDepthType);
|
|
87
|
+
/**
|
|
88
|
+
* Gets the four configurable radius definitions indexed by packed radius class.
|
|
89
|
+
*/
|
|
90
|
+
get radiusClasses(): MeshBlendRadiusDefinitions;
|
|
91
|
+
/**
|
|
92
|
+
* Gets the compiled debug visualization.
|
|
93
|
+
*/
|
|
94
|
+
get debugMode(): MeshBlendDebugMode;
|
|
95
|
+
set debugMode(value: MeshBlendDebugMode);
|
|
96
|
+
/** Contact-slope narrowing factor. A value of 1 disables narrowing. */
|
|
97
|
+
get slopeFactor(): number;
|
|
98
|
+
set slopeFactor(value: number);
|
|
99
|
+
/**
|
|
100
|
+
* Applies shared mesh-blending configuration.
|
|
101
|
+
* @param options Values to apply. Omitted values retain their current settings.
|
|
102
|
+
*/
|
|
103
|
+
configure(options?: IMeshBlendConfiguration): void;
|
|
104
|
+
/**
|
|
105
|
+
* Creates a mesh-blending post process.
|
|
106
|
+
* @param name The name of the post process.
|
|
107
|
+
* @param scene The scene containing the camera.
|
|
108
|
+
* @param camera The camera to attach the post process to.
|
|
109
|
+
* @param options The post-process and input-texture options.
|
|
110
|
+
*/
|
|
111
|
+
constructor(name: string, scene: Scene, camera: Camera, options: IMeshBlendingPostProcessOptions);
|
|
112
|
+
getClassName(): string;
|
|
113
|
+
dispose(camera?: Camera): void;
|
|
114
|
+
/**
|
|
115
|
+
* Classic mesh blending cannot be serialized because its geometry inputs are caller-owned runtime textures.
|
|
116
|
+
* @throws Always throws because the classic wrapper is runtime-only.
|
|
117
|
+
*/
|
|
118
|
+
serialize(): never;
|
|
119
|
+
/**
|
|
120
|
+
* Classic mesh blending cannot be cloned because its geometry inputs are caller-owned runtime textures.
|
|
121
|
+
* @returns Null.
|
|
122
|
+
*/
|
|
123
|
+
clone(): null;
|
|
124
|
+
private static _ValidateInputs;
|
|
125
|
+
private static _ValidateInputTextureDimensions;
|
|
126
|
+
private static _ValidateMeshBlendTagTexture;
|
|
127
|
+
private static _ValidateDepthTexture;
|
|
128
|
+
private static _ValidateBaseColorTexture;
|
|
129
|
+
private static _Validate2DTexture;
|
|
130
|
+
private _validateInputDimensions;
|
|
131
|
+
}
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
|
|
2
|
+
import { PostProcess } from "./postProcess.pure.js";
|
|
3
|
+
import { MeshBlendDepthType, ThinMeshBlendingPostProcess, _ClaimMeshBlendingEffectWrapper, _IsMeshBlendingEffectWrapperOwned, _ReleaseMeshBlendingEffectWrapper, _ValidateMeshBlendConfiguration, } from "./thinMeshBlendingPostProcess.js";
|
|
4
|
+
/**
|
|
5
|
+
* Visually blends SceneColor across validated contacts between opaque or alpha-tested meshes.
|
|
6
|
+
*
|
|
7
|
+
* This WebGL2 and WebGPU effect does not change geometry, collision queries, depth, normals, or shadow geometry.
|
|
8
|
+
* Transparent rendering is caller-controlled. Applications assign explicit group IDs from 1 through 63;
|
|
9
|
+
* group 0 disables blending, and surfaces with the same nonzero group are treated as one logical object.
|
|
10
|
+
*
|
|
11
|
+
* The classic wrapper consumes caller-owned geometry textures and does not enable, configure, or dispose
|
|
12
|
+
* a GeometryBufferRenderer. The tag, depth, and SceneColor inputs are required; optional base color enables
|
|
13
|
+
* shadow estimation. All provided geometry inputs must have the same physical dimensions and sample count and
|
|
14
|
+
* are single-sampled. Overlapping transparent surfaces can make SceneColor inconsistent with the single-layer
|
|
15
|
+
* geometry inputs; compositing transparent content after this effect remains the recommended configuration.
|
|
16
|
+
*
|
|
17
|
+
* Four configurable radius classes combine world-space radii with physical-pixel minimums, for both
|
|
18
|
+
* perspective and orthographic cameras. Quality variants trade search work for seam quality. Stable search
|
|
19
|
+
* noise is internal and frame invariant. This implementation does not use temporal accumulation or require TAA.
|
|
20
|
+
*
|
|
21
|
+
* The classic wrapper is runtime-only because its geometry textures are caller-owned resources. It cannot
|
|
22
|
+
* be serialized, parsed, or cloned; use the FrameGraph/NRGE path when a serializable graph is required.
|
|
23
|
+
* @see https://meshblend.lervik.com/
|
|
24
|
+
* @see https://www.jacktollenaar.top/articles/meshblending.html
|
|
25
|
+
* @see https://www.jacktollenaar.top/articles/meshblending2.html
|
|
26
|
+
* @see https://bottosson.github.io/posts/oklab/
|
|
27
|
+
* @see https://playground.babylonjs.com/?version=preview#XVZTSI#3
|
|
28
|
+
* @see https://playground.babylonjs.com/?version=preview#O05LI8#6
|
|
29
|
+
*/
|
|
30
|
+
export class MeshBlendingPostProcess extends PostProcess {
|
|
31
|
+
/**
|
|
32
|
+
* Gets the compile-time quality variant.
|
|
33
|
+
*/
|
|
34
|
+
get quality() {
|
|
35
|
+
return this._effectWrapper.quality;
|
|
36
|
+
}
|
|
37
|
+
set quality(value) {
|
|
38
|
+
this._effectWrapper.quality = value;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The packed R8UI mesh-blending tag texture used by the effect.
|
|
42
|
+
*/
|
|
43
|
+
get meshBlendTagTexture() {
|
|
44
|
+
return this._meshBlendTagTexture;
|
|
45
|
+
}
|
|
46
|
+
set meshBlendTagTexture(value) {
|
|
47
|
+
MeshBlendingPostProcess._ValidateMeshBlendTagTexture(value);
|
|
48
|
+
MeshBlendingPostProcess._ValidateInputTextureDimensions(value, this._depthTexture, this._baseColorTexture);
|
|
49
|
+
this._meshBlendTagTexture = value;
|
|
50
|
+
this._validateInputDimensions();
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* The depth texture used for position reconstruction and contact validation.
|
|
54
|
+
*/
|
|
55
|
+
get depthTexture() {
|
|
56
|
+
return this._depthTexture;
|
|
57
|
+
}
|
|
58
|
+
set depthTexture(value) {
|
|
59
|
+
MeshBlendingPostProcess._ValidateDepthTexture(value, this.depthType);
|
|
60
|
+
MeshBlendingPostProcess._ValidateInputTextureDimensions(this._meshBlendTagTexture, value, this._baseColorTexture);
|
|
61
|
+
this._depthTexture = value;
|
|
62
|
+
this._validateInputDimensions();
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The optional linear base-color/albedo geometry texture used by the shadow-transfer heuristic.
|
|
66
|
+
*
|
|
67
|
+
* Setting null compiles shadow estimation out.
|
|
68
|
+
*/
|
|
69
|
+
get baseColorTexture() {
|
|
70
|
+
return this._baseColorTexture;
|
|
71
|
+
}
|
|
72
|
+
set baseColorTexture(value) {
|
|
73
|
+
if (value) {
|
|
74
|
+
MeshBlendingPostProcess._ValidateBaseColorTexture(value);
|
|
75
|
+
}
|
|
76
|
+
MeshBlendingPostProcess._ValidateInputTextureDimensions(this._meshBlendTagTexture, this._depthTexture, value);
|
|
77
|
+
this._baseColorTexture = value;
|
|
78
|
+
this._effectWrapper.hasBaseColorTexture = !!value;
|
|
79
|
+
this._validateInputDimensions();
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Gets the representation stored in the depth texture.
|
|
83
|
+
*/
|
|
84
|
+
get depthType() {
|
|
85
|
+
return this._effectWrapper.depthType;
|
|
86
|
+
}
|
|
87
|
+
set depthType(value) {
|
|
88
|
+
if (this._depthTexture) {
|
|
89
|
+
MeshBlendingPostProcess._ValidateDepthTexture(this._depthTexture, value);
|
|
90
|
+
}
|
|
91
|
+
this._effectWrapper.depthType = value;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Gets the four configurable radius definitions indexed by packed radius class.
|
|
95
|
+
*/
|
|
96
|
+
get radiusClasses() {
|
|
97
|
+
return this._effectWrapper.radiusClasses;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Gets the compiled debug visualization.
|
|
101
|
+
*/
|
|
102
|
+
get debugMode() {
|
|
103
|
+
return this._effectWrapper.debugMode;
|
|
104
|
+
}
|
|
105
|
+
set debugMode(value) {
|
|
106
|
+
this._effectWrapper.debugMode = value;
|
|
107
|
+
}
|
|
108
|
+
/** Contact-slope narrowing factor. A value of 1 disables narrowing. */
|
|
109
|
+
get slopeFactor() {
|
|
110
|
+
return this._effectWrapper.slopeFactor;
|
|
111
|
+
}
|
|
112
|
+
set slopeFactor(value) {
|
|
113
|
+
this._effectWrapper.slopeFactor = value;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Applies shared mesh-blending configuration.
|
|
117
|
+
* @param options Values to apply. Omitted values retain their current settings.
|
|
118
|
+
*/
|
|
119
|
+
configure(options) {
|
|
120
|
+
if (options?.depthType !== undefined) {
|
|
121
|
+
MeshBlendingPostProcess._ValidateDepthTexture(this._depthTexture, options.depthType);
|
|
122
|
+
}
|
|
123
|
+
this._effectWrapper.configure(options);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Creates a mesh-blending post process.
|
|
127
|
+
* @param name The name of the post process.
|
|
128
|
+
* @param scene The scene containing the camera.
|
|
129
|
+
* @param camera The camera to attach the post process to.
|
|
130
|
+
* @param options The post-process and input-texture options.
|
|
131
|
+
*/
|
|
132
|
+
constructor(name, scene, camera, options) {
|
|
133
|
+
const sceneEngine = scene.getEngine();
|
|
134
|
+
if (camera.getScene() !== scene) {
|
|
135
|
+
throw new Error("MeshBlendingPostProcess: scene and camera must belong to the same scene");
|
|
136
|
+
}
|
|
137
|
+
if (options.engine !== undefined && options.engine !== sceneEngine) {
|
|
138
|
+
throw new Error("MeshBlendingPostProcess: options.engine must match the scene engine");
|
|
139
|
+
}
|
|
140
|
+
if (options.effectWrapper !== undefined && !(options.effectWrapper instanceof ThinMeshBlendingPostProcess)) {
|
|
141
|
+
throw new TypeError("MeshBlendingPostProcess: effectWrapper must be a ThinMeshBlendingPostProcess");
|
|
142
|
+
}
|
|
143
|
+
if (options.effectWrapper !== undefined && options.effectWrapper.options.engine !== sceneEngine) {
|
|
144
|
+
throw new Error("MeshBlendingPostProcess: effectWrapper must use the scene engine");
|
|
145
|
+
}
|
|
146
|
+
if (options.effectWrapper !== undefined && _IsMeshBlendingEffectWrapperOwned(options.effectWrapper)) {
|
|
147
|
+
throw new Error("MeshBlendingPostProcess: effectWrapper is already attached to another classic mesh-blending post process");
|
|
148
|
+
}
|
|
149
|
+
const depthType = options.depthType ?? options.effectWrapper?.depthType ?? MeshBlendDepthType.View;
|
|
150
|
+
MeshBlendingPostProcess._ValidateInputs(options, depthType);
|
|
151
|
+
const ownsEffectWrapper = options.effectWrapper === undefined;
|
|
152
|
+
const effectWrapper = options.effectWrapper ?? new ThinMeshBlendingPostProcess(name, sceneEngine, options);
|
|
153
|
+
effectWrapper.hasBaseColorTexture = !!options.baseColorTexture;
|
|
154
|
+
super(name, ThinMeshBlendingPostProcess.FragmentUrl, {
|
|
155
|
+
...options,
|
|
156
|
+
camera,
|
|
157
|
+
engine: sceneEngine,
|
|
158
|
+
effectWrapper,
|
|
159
|
+
uniforms: ThinMeshBlendingPostProcess.Uniforms,
|
|
160
|
+
samplers: ThinMeshBlendingPostProcess.Samplers,
|
|
161
|
+
textureType: options.textureType ?? 0,
|
|
162
|
+
});
|
|
163
|
+
this._ownsEffectWrapper = ownsEffectWrapper;
|
|
164
|
+
_ClaimMeshBlendingEffectWrapper(effectWrapper, this);
|
|
165
|
+
this._meshBlendTagTexture = options.meshBlendTagTexture;
|
|
166
|
+
this._depthTexture = options.depthTexture;
|
|
167
|
+
this._baseColorTexture = options.baseColorTexture ?? null;
|
|
168
|
+
this._effectWrapper.configure(options);
|
|
169
|
+
this._effectWrapper.camera = camera;
|
|
170
|
+
this.doNotSerialize = true;
|
|
171
|
+
this._validateInputDimensions();
|
|
172
|
+
this.onApply = (effect) => {
|
|
173
|
+
this._validateInputDimensions(this.width, this.height, this.inputTexture.samples);
|
|
174
|
+
this._effectWrapper.camera = this.getCamera();
|
|
175
|
+
effect.setTexture("meshBlendTagSampler", this._meshBlendTagTexture);
|
|
176
|
+
effect.setTexture("meshBlendDepthSampler", this._depthTexture);
|
|
177
|
+
if (this._baseColorTexture) {
|
|
178
|
+
effect.setTexture("meshBlendBaseColorSampler", this._baseColorTexture);
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
getClassName() {
|
|
183
|
+
return "MeshBlendingPostProcess";
|
|
184
|
+
}
|
|
185
|
+
dispose(camera) {
|
|
186
|
+
super.dispose(camera);
|
|
187
|
+
_ReleaseMeshBlendingEffectWrapper(this._effectWrapper, this);
|
|
188
|
+
if (this._ownsEffectWrapper) {
|
|
189
|
+
this._effectWrapper.dispose();
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Classic mesh blending cannot be serialized because its geometry inputs are caller-owned runtime textures.
|
|
194
|
+
* @throws Always throws because the classic wrapper is runtime-only.
|
|
195
|
+
*/
|
|
196
|
+
serialize() {
|
|
197
|
+
throw new Error("MeshBlendingPostProcess cannot be serialized; use the FrameGraph/NRGE path for serializable mesh blending");
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Classic mesh blending cannot be cloned because its geometry inputs are caller-owned runtime textures.
|
|
201
|
+
* @returns Null.
|
|
202
|
+
*/
|
|
203
|
+
clone() {
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
static _ValidateInputs(options, depthType) {
|
|
207
|
+
_ValidateMeshBlendConfiguration(options);
|
|
208
|
+
MeshBlendingPostProcess._ValidateMeshBlendTagTexture(options.meshBlendTagTexture);
|
|
209
|
+
MeshBlendingPostProcess._ValidateDepthTexture(options.depthTexture, depthType);
|
|
210
|
+
if (options.baseColorTexture) {
|
|
211
|
+
MeshBlendingPostProcess._ValidateBaseColorTexture(options.baseColorTexture);
|
|
212
|
+
}
|
|
213
|
+
MeshBlendingPostProcess._ValidateInputTextureDimensions(options.meshBlendTagTexture, options.depthTexture, options.baseColorTexture);
|
|
214
|
+
}
|
|
215
|
+
static _ValidateInputTextureDimensions(meshBlendTagTexture, depthTexture, baseColorTexture) {
|
|
216
|
+
const tagInternalTexture = meshBlendTagTexture.getInternalTexture();
|
|
217
|
+
const depthInternalTexture = depthTexture.getInternalTexture();
|
|
218
|
+
const baseColorInternalTexture = baseColorTexture?.getInternalTexture();
|
|
219
|
+
if (!tagInternalTexture || !depthInternalTexture) {
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
if (tagInternalTexture.width !== depthInternalTexture.width ||
|
|
223
|
+
tagInternalTexture.height !== depthInternalTexture.height ||
|
|
224
|
+
(baseColorInternalTexture !== null &&
|
|
225
|
+
baseColorInternalTexture !== undefined &&
|
|
226
|
+
(tagInternalTexture.width !== baseColorInternalTexture.width || tagInternalTexture.height !== baseColorInternalTexture.height))) {
|
|
227
|
+
throw new Error("MeshBlendingPostProcess: meshBlendTagTexture, depthTexture, and baseColorTexture when provided must have matching physical dimensions");
|
|
228
|
+
}
|
|
229
|
+
const inputSamples = tagInternalTexture.samples || 1;
|
|
230
|
+
if ((depthInternalTexture.samples || 1) !== inputSamples ||
|
|
231
|
+
(baseColorInternalTexture !== null && baseColorInternalTexture !== undefined && (baseColorInternalTexture.samples || 1) !== inputSamples)) {
|
|
232
|
+
throw new Error("MeshBlendingPostProcess: meshBlendTagTexture, depthTexture, and baseColorTexture when provided must have matching sample counts");
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
static _ValidateMeshBlendTagTexture(texture) {
|
|
236
|
+
const internalTexture = texture.getInternalTexture();
|
|
237
|
+
if (!internalTexture) {
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
MeshBlendingPostProcess._Validate2DTexture(internalTexture, "meshBlendTagTexture");
|
|
241
|
+
if (internalTexture.type !== 0 || internalTexture.format !== 8) {
|
|
242
|
+
throw new Error("MeshBlendingPostProcess: meshBlendTagTexture must use TEXTURETYPE_UNSIGNED_BYTE with TEXTUREFORMAT_RED_INTEGER");
|
|
243
|
+
}
|
|
244
|
+
if (internalTexture.generateMipMaps || internalTexture.samplingMode !== 1 || internalTexture.samples > 1) {
|
|
245
|
+
throw new Error("MeshBlendingPostProcess: meshBlendTagTexture must use nearest sampling without mipmaps and must be single-sampled");
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
static _ValidateDepthTexture(texture, depthType) {
|
|
249
|
+
const internalTexture = texture.getInternalTexture();
|
|
250
|
+
if (!internalTexture) {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
MeshBlendingPostProcess._Validate2DTexture(internalTexture, "depthTexture");
|
|
254
|
+
const validFormat = internalTexture.format === 6 ||
|
|
255
|
+
internalTexture.format === 7 ||
|
|
256
|
+
internalTexture.format === 5;
|
|
257
|
+
const validType = internalTexture.type === 1 ||
|
|
258
|
+
internalTexture.type === 2 ||
|
|
259
|
+
(depthType === MeshBlendDepthType.Screen && internalTexture.type === 0);
|
|
260
|
+
if (!validFormat || !validType) {
|
|
261
|
+
throw new Error(`MeshBlendingPostProcess: ${depthType === MeshBlendDepthType.View ? "view" : "screen"} depthTexture must use a floating-point color format${depthType === MeshBlendDepthType.Screen ? " or normalized unsigned bytes" : ""}`);
|
|
262
|
+
}
|
|
263
|
+
if (internalTexture.generateMipMaps || internalTexture.samples > 1) {
|
|
264
|
+
throw new Error("MeshBlendingPostProcess: depthTexture must not use mipmaps and must be single-sampled");
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
static _ValidateBaseColorTexture(texture) {
|
|
268
|
+
const internalTexture = texture.getInternalTexture();
|
|
269
|
+
if (!internalTexture) {
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
MeshBlendingPostProcess._Validate2DTexture(internalTexture, "baseColorTexture");
|
|
273
|
+
const validFormat = internalTexture.format === 4 || internalTexture.format === 5;
|
|
274
|
+
const validType = internalTexture.type === 0 ||
|
|
275
|
+
internalTexture.type === 2 ||
|
|
276
|
+
internalTexture.type === 1;
|
|
277
|
+
if (!validFormat || !validType) {
|
|
278
|
+
throw new Error("MeshBlendingPostProcess: baseColorTexture must use a non-integer RGB or RGBA color format");
|
|
279
|
+
}
|
|
280
|
+
if (internalTexture.generateMipMaps || internalTexture.samples > 1) {
|
|
281
|
+
throw new Error("MeshBlendingPostProcess: baseColorTexture must not use mipmaps and must be single-sampled");
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
static _Validate2DTexture(internalTexture, name) {
|
|
285
|
+
if (internalTexture.isCube || internalTexture.is3D || internalTexture.is2DArray) {
|
|
286
|
+
throw new Error(`MeshBlendingPostProcess: ${name} must be a 2D texture`);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
_validateInputDimensions(renderWidth, renderHeight, renderSamples) {
|
|
290
|
+
MeshBlendingPostProcess._ValidateMeshBlendTagTexture(this._meshBlendTagTexture);
|
|
291
|
+
MeshBlendingPostProcess._ValidateDepthTexture(this._depthTexture, this.depthType);
|
|
292
|
+
if (this._baseColorTexture) {
|
|
293
|
+
MeshBlendingPostProcess._ValidateBaseColorTexture(this._baseColorTexture);
|
|
294
|
+
}
|
|
295
|
+
const tagTexture = this._meshBlendTagTexture?.getInternalTexture();
|
|
296
|
+
const depthTexture = this._depthTexture?.getInternalTexture();
|
|
297
|
+
const baseColorTexture = this._baseColorTexture?.getInternalTexture();
|
|
298
|
+
if (!tagTexture || !depthTexture) {
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
MeshBlendingPostProcess._ValidateInputTextureDimensions(this._meshBlendTagTexture, this._depthTexture, this._baseColorTexture);
|
|
302
|
+
const inputSamples = tagTexture.samples || 1;
|
|
303
|
+
if (renderWidth !== undefined && renderHeight !== undefined && renderWidth > 0 && renderHeight > 0) {
|
|
304
|
+
if (tagTexture.width !== renderWidth ||
|
|
305
|
+
tagTexture.height !== renderHeight ||
|
|
306
|
+
(baseColorTexture !== null && baseColorTexture !== undefined && (baseColorTexture.width !== renderWidth || baseColorTexture.height !== renderHeight))) {
|
|
307
|
+
throw new Error("MeshBlendingPostProcess: SceneColor, meshBlendTagTexture, depthTexture, and baseColorTexture when provided must have matching physical dimensions");
|
|
308
|
+
}
|
|
309
|
+
if ((renderSamples || 1) !== inputSamples) {
|
|
310
|
+
throw new Error("MeshBlendingPostProcess: SceneColor, meshBlendTagTexture, depthTexture, and baseColorTexture when provided must have matching sample counts");
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
//# sourceMappingURL=meshBlendingPostProcess.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meshBlendingPostProcess.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/meshBlendingPostProcess.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAMjD,OAAO,EAAE,WAAW,EAA2B,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAGH,kBAAkB,EAGlB,2BAA2B,EAC3B,+BAA+B,EAC/B,iCAAiC,EACjC,iCAAiC,EACjC,+BAA+B,GAClC,MAAM,+BAA+B,CAAC;AAwBvC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,OAAO,uBAAwB,SAAQ,WAAW;IAQpD;;OAEG;IACH,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;IACvC,CAAC;IAED,IAAW,OAAO,CAAC,KAAuB;QACtC,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,IAAW,mBAAmB;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACrC,CAAC;IAED,IAAW,mBAAmB,CAAC,KAAkB;QAC7C,uBAAuB,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;QAC5D,uBAAuB,CAAC,+BAA+B,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3G,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED,IAAW,YAAY,CAAC,KAAkB;QACtC,uBAAuB,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACrE,uBAAuB,CAAC,+BAA+B,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAClH,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,IAAW,gBAAgB;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IAED,IAAW,gBAAgB,CAAC,KAA4B;QACpD,IAAI,KAAK,EAAE,CAAC;YACR,uBAAuB,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC7D,CAAC;QACD,uBAAuB,CAAC,+BAA+B,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAC9G,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,cAAc,CAAC,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC;QAClD,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;IACzC,CAAC;IAED,IAAW,SAAS,CAAC,KAAyB;QAC1C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,uBAAuB,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,KAAK,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;IACzC,CAAC;IAED,IAAW,SAAS,CAAC,KAAyB;QAC1C,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,KAAK,CAAC;IAC1C,CAAC;IAED,uEAAuE;IACvE,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;IAC3C,CAAC;IAED,IAAW,WAAW,CAAC,KAAa;QAChC,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,KAAK,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACI,SAAS,CAAC,OAAiC;QAC9C,IAAI,OAAO,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;YACnC,uBAAuB,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;OAMG;IACH,YAAY,IAAY,EAAE,KAAY,EAAE,MAAc,EAAE,OAAwC;QAC5F,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QACtC,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa,YAAY,2BAA2B,CAAC,EAAE,CAAC;YACzG,MAAM,IAAI,SAAS,CAAC,8EAA8E,CAAC,CAAC;QACxG,CAAC;QACD,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC9F,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACxF,CAAC;QACD,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,IAAI,iCAAiC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YAClG,MAAM,IAAI,KAAK,CAAC,0GAA0G,CAAC,CAAC;QAChI,CAAC;QACD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE,SAAS,IAAI,kBAAkB,CAAC,IAAI,CAAC;QACnG,uBAAuB,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAE5D,MAAM,iBAAiB,GAAG,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC;QAC9D,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,2BAA2B,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAC3G,aAAa,CAAC,mBAAmB,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAE/D,KAAK,CAAC,IAAI,EAAE,2BAA2B,CAAC,WAAW,EAAE;YACjD,GAAG,OAAO;YACV,MAAM;YACN,MAAM,EAAE,WAAW;YACnB,aAAa;YACb,QAAQ,EAAE,2BAA2B,CAAC,QAAQ;YAC9C,QAAQ,EAAE,2BAA2B,CAAC,QAAQ;YAC9C,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,SAAS,CAAC,yBAAyB;SAC1E,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAC5C,+BAA+B,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC;QACxD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;QAC1C,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC;QAE1D,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,IAAI,CAAC,OAAO,GAAG,CAAC,MAAc,EAAE,EAAE;YAC9B,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAClF,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9C,MAAM,CAAC,UAAU,CAAC,qBAAqB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACpE,MAAM,CAAC,UAAU,CAAC,uBAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAC/D,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,MAAM,CAAC,UAAU,CAAC,2BAA2B,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC3E,CAAC;QACL,CAAC,CAAC;IACN,CAAC;IAEe,YAAY;QACxB,OAAO,yBAAyB,CAAC;IACrC,CAAC;IAEe,OAAO,CAAC,MAAe;QACnC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,iCAAiC,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAC7D,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAClC,CAAC;IACL,CAAC;IAED;;;OAGG;IACa,SAAS;QACrB,MAAM,IAAI,KAAK,CAAC,2GAA2G,CAAC,CAAC;IACjI,CAAC;IAED;;;OAGG;IACa,KAAK;QACjB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,OAAwC,EAAE,SAA6B;QAClG,+BAA+B,CAAC,OAAO,CAAC,CAAC;QACzC,uBAAuB,CAAC,4BAA4B,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAClF,uBAAuB,CAAC,qBAAqB,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC/E,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC3B,uBAAuB,CAAC,yBAAyB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAChF,CAAC;QACD,uBAAuB,CAAC,+BAA+B,CAAC,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACzI,CAAC;IAEO,MAAM,CAAC,+BAA+B,CAAC,mBAAgC,EAAE,YAAyB,EAAE,gBAAmD;QAC3J,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,kBAAkB,EAAE,CAAC;QACpE,MAAM,oBAAoB,GAAG,YAAY,CAAC,kBAAkB,EAAE,CAAC;QAC/D,MAAM,wBAAwB,GAAG,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;QACxE,IAAI,CAAC,kBAAkB,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/C,OAAO;QACX,CAAC;QAED,IACI,kBAAkB,CAAC,KAAK,KAAK,oBAAoB,CAAC,KAAK;YACvD,kBAAkB,CAAC,MAAM,KAAK,oBAAoB,CAAC,MAAM;YACzD,CAAC,wBAAwB,KAAK,IAAI;gBAC9B,wBAAwB,KAAK,SAAS;gBACtC,CAAC,kBAAkB,CAAC,KAAK,KAAK,wBAAwB,CAAC,KAAK,IAAI,kBAAkB,CAAC,MAAM,KAAK,wBAAwB,CAAC,MAAM,CAAC,CAAC,EACrI,CAAC;YACC,MAAM,IAAI,KAAK,CAAC,uIAAuI,CAAC,CAAC;QAC7J,CAAC;QACD,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,IAAI,CAAC,CAAC;QACrD,IACI,CAAC,oBAAoB,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,YAAY;YACpD,CAAC,wBAAwB,KAAK,IAAI,IAAI,wBAAwB,KAAK,SAAS,IAAI,CAAC,wBAAwB,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,YAAY,CAAC,EAC3I,CAAC;YACC,MAAM,IAAI,KAAK,CAAC,iIAAiI,CAAC,CAAC;QACvJ,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,4BAA4B,CAAC,OAAoB;QAC5D,MAAM,eAAe,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACrD,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,OAAO;QACX,CAAC;QACD,uBAAuB,CAAC,kBAAkB,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC;QACnF,IAAI,eAAe,CAAC,IAAI,KAAK,SAAS,CAAC,yBAAyB,IAAI,eAAe,CAAC,MAAM,KAAK,SAAS,CAAC,yBAAyB,EAAE,CAAC;YACjI,MAAM,IAAI,KAAK,CAAC,gHAAgH,CAAC,CAAC;QACtI,CAAC;QACD,IAAI,eAAe,CAAC,eAAe,IAAI,eAAe,CAAC,YAAY,KAAK,SAAS,CAAC,4BAA4B,IAAI,eAAe,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YAC5I,MAAM,IAAI,KAAK,CAAC,mHAAmH,CAAC,CAAC;QACzI,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,OAAoB,EAAE,SAA6B;QACpF,MAAM,eAAe,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACrD,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,OAAO;QACX,CAAC;QACD,uBAAuB,CAAC,kBAAkB,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;QAE5E,MAAM,WAAW,GACb,eAAe,CAAC,MAAM,KAAK,SAAS,CAAC,iBAAiB;YACtD,eAAe,CAAC,MAAM,KAAK,SAAS,CAAC,gBAAgB;YACrD,eAAe,CAAC,MAAM,KAAK,SAAS,CAAC,kBAAkB,CAAC;QAC5D,MAAM,SAAS,GACX,eAAe,CAAC,IAAI,KAAK,SAAS,CAAC,iBAAiB;YACpD,eAAe,CAAC,IAAI,KAAK,SAAS,CAAC,sBAAsB;YACzD,CAAC,SAAS,KAAK,kBAAkB,CAAC,MAAM,IAAI,eAAe,CAAC,IAAI,KAAK,SAAS,CAAC,yBAAyB,CAAC,CAAC;QAE9G,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACX,4BAA4B,SAAS,KAAK,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,uDACjF,SAAS,KAAK,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,EAChF,EAAE,CACL,CAAC;QACN,CAAC;QACD,IAAI,eAAe,CAAC,eAAe,IAAI,eAAe,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;QAC7G,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,yBAAyB,CAAC,OAAoB;QACzD,MAAM,eAAe,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACrD,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,OAAO;QACX,CAAC;QACD,uBAAuB,CAAC,kBAAkB,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;QAEhF,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,KAAK,SAAS,CAAC,iBAAiB,IAAI,eAAe,CAAC,MAAM,KAAK,SAAS,CAAC,kBAAkB,CAAC;QACtI,MAAM,SAAS,GACX,eAAe,CAAC,IAAI,KAAK,SAAS,CAAC,yBAAyB;YAC5D,eAAe,CAAC,IAAI,KAAK,SAAS,CAAC,sBAAsB;YACzD,eAAe,CAAC,IAAI,KAAK,SAAS,CAAC,iBAAiB,CAAC;QACzD,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAC;QACjH,CAAC;QACD,IAAI,eAAe,CAAC,eAAe,IAAI,eAAe,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAC;QACjH,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,kBAAkB,CAAC,eAAgC,EAAE,IAAY;QAC5E,IAAI,eAAe,CAAC,MAAM,IAAI,eAAe,CAAC,IAAI,IAAI,eAAe,CAAC,SAAS,EAAE,CAAC;YAC9E,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,uBAAuB,CAAC,CAAC;QAC7E,CAAC;IACL,CAAC;IAEO,wBAAwB,CAAC,WAAoB,EAAE,YAAqB,EAAE,aAAsB;QAChG,uBAAuB,CAAC,4BAA4B,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAChF,uBAAuB,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAClF,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,uBAAuB,CAAC,yBAAyB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9E,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,CAAC;QACnE,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,kBAAkB,EAAE,CAAC;QAC9D,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,CAAC;QACtE,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,EAAE,CAAC;YAC/B,OAAO;QACX,CAAC;QAED,uBAAuB,CAAC,+BAA+B,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC/H,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;QAC7C,IAAI,WAAW,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,IAAI,WAAW,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACjG,IACI,UAAU,CAAC,KAAK,KAAK,WAAW;gBAChC,UAAU,CAAC,MAAM,KAAK,YAAY;gBAClC,CAAC,gBAAgB,KAAK,IAAI,IAAI,gBAAgB,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,KAAK,KAAK,WAAW,IAAI,gBAAgB,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,EACvJ,CAAC;gBACC,MAAM,IAAI,KAAK,CACX,mJAAmJ,CACtJ,CAAC;YACN,CAAC;YACD,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,6IAA6I,CAAC,CAAC;YACnK,CAAC;QACL,CAAC;IACL,CAAC;CACJ","sourcesContent":["import { type Camera } from \"../Cameras/camera.pure\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { type Effect } from \"../Materials/effect.pure\";\r\nimport { type BaseTexture } from \"../Materials/Textures/baseTexture.pure\";\r\nimport { type InternalTexture } from \"../Materials/Textures/internalTexture\";\r\nimport { type Scene } from \"../scene.pure\";\r\nimport { type Nullable } from \"../types\";\r\nimport { PostProcess, type PostProcessOptions } from \"./postProcess.pure\";\r\nimport {\r\n type IMeshBlendConfiguration,\r\n type MeshBlendDebugMode,\r\n MeshBlendDepthType,\r\n type MeshBlendQuality,\r\n type MeshBlendRadiusDefinitions,\r\n ThinMeshBlendingPostProcess,\r\n _ClaimMeshBlendingEffectWrapper,\r\n _IsMeshBlendingEffectWrapperOwned,\r\n _ReleaseMeshBlendingEffectWrapper,\r\n _ValidateMeshBlendConfiguration,\r\n} from \"./thinMeshBlendingPostProcess\";\r\n\r\n/**\r\n * Options used to create a mesh-blending post process.\r\n */\r\nexport interface IMeshBlendingPostProcessOptions extends PostProcessOptions, IMeshBlendConfiguration {\r\n /** Optional caller-owned thin mesh-blending effect wrapper. A wrapper can be attached to only one classic post process at a time. */\r\n effectWrapper?: ThinMeshBlendingPostProcess;\r\n /**\r\n * The packed R8UI mesh-blending tag texture.\r\n */\r\n meshBlendTagTexture: BaseTexture;\r\n /**\r\n * The view-depth or screen-depth texture aligned with the packed tag texture.\r\n */\r\n depthTexture: BaseTexture;\r\n /**\r\n * Optional linear base-color/albedo geometry texture aligned with SceneColor.\r\n *\r\n * When omitted, shadow estimation is compiled out.\r\n */\r\n baseColorTexture?: BaseTexture;\r\n}\r\n\r\n/**\r\n * Visually blends SceneColor across validated contacts between opaque or alpha-tested meshes.\r\n *\r\n * This WebGL2 and WebGPU effect does not change geometry, collision queries, depth, normals, or shadow geometry.\r\n * Transparent rendering is caller-controlled. Applications assign explicit group IDs from 1 through 63;\r\n * group 0 disables blending, and surfaces with the same nonzero group are treated as one logical object.\r\n *\r\n * The classic wrapper consumes caller-owned geometry textures and does not enable, configure, or dispose\r\n * a GeometryBufferRenderer. The tag, depth, and SceneColor inputs are required; optional base color enables\r\n * shadow estimation. All provided geometry inputs must have the same physical dimensions and sample count and\r\n * are single-sampled. Overlapping transparent surfaces can make SceneColor inconsistent with the single-layer\r\n * geometry inputs; compositing transparent content after this effect remains the recommended configuration.\r\n *\r\n * Four configurable radius classes combine world-space radii with physical-pixel minimums, for both\r\n * perspective and orthographic cameras. Quality variants trade search work for seam quality. Stable search\r\n * noise is internal and frame invariant. This implementation does not use temporal accumulation or require TAA.\r\n *\r\n * The classic wrapper is runtime-only because its geometry textures are caller-owned resources. It cannot\r\n * be serialized, parsed, or cloned; use the FrameGraph/NRGE path when a serializable graph is required.\r\n * @see https://meshblend.lervik.com/\r\n * @see https://www.jacktollenaar.top/articles/meshblending.html\r\n * @see https://www.jacktollenaar.top/articles/meshblending2.html\r\n * @see https://bottosson.github.io/posts/oklab/\r\n * @see https://playground.babylonjs.com/?version=preview#XVZTSI#3\r\n * @see https://playground.babylonjs.com/?version=preview#O05LI8#6\r\n */\r\nexport class MeshBlendingPostProcess extends PostProcess {\r\n declare protected _effectWrapper: ThinMeshBlendingPostProcess;\r\n\r\n private _meshBlendTagTexture: BaseTexture;\r\n private _depthTexture: BaseTexture;\r\n private _baseColorTexture: Nullable<BaseTexture>;\r\n private readonly _ownsEffectWrapper: boolean;\r\n\r\n /**\r\n * Gets the compile-time quality variant.\r\n */\r\n public get quality(): MeshBlendQuality {\r\n return this._effectWrapper.quality;\r\n }\r\n\r\n public set quality(value: MeshBlendQuality) {\r\n this._effectWrapper.quality = value;\r\n }\r\n\r\n /**\r\n * The packed R8UI mesh-blending tag texture used by the effect.\r\n */\r\n public get meshBlendTagTexture(): BaseTexture {\r\n return this._meshBlendTagTexture;\r\n }\r\n\r\n public set meshBlendTagTexture(value: BaseTexture) {\r\n MeshBlendingPostProcess._ValidateMeshBlendTagTexture(value);\r\n MeshBlendingPostProcess._ValidateInputTextureDimensions(value, this._depthTexture, this._baseColorTexture);\r\n this._meshBlendTagTexture = value;\r\n this._validateInputDimensions();\r\n }\r\n\r\n /**\r\n * The depth texture used for position reconstruction and contact validation.\r\n */\r\n public get depthTexture(): BaseTexture {\r\n return this._depthTexture;\r\n }\r\n\r\n public set depthTexture(value: BaseTexture) {\r\n MeshBlendingPostProcess._ValidateDepthTexture(value, this.depthType);\r\n MeshBlendingPostProcess._ValidateInputTextureDimensions(this._meshBlendTagTexture, value, this._baseColorTexture);\r\n this._depthTexture = value;\r\n this._validateInputDimensions();\r\n }\r\n\r\n /**\r\n * The optional linear base-color/albedo geometry texture used by the shadow-transfer heuristic.\r\n *\r\n * Setting null compiles shadow estimation out.\r\n */\r\n public get baseColorTexture(): Nullable<BaseTexture> {\r\n return this._baseColorTexture;\r\n }\r\n\r\n public set baseColorTexture(value: Nullable<BaseTexture>) {\r\n if (value) {\r\n MeshBlendingPostProcess._ValidateBaseColorTexture(value);\r\n }\r\n MeshBlendingPostProcess._ValidateInputTextureDimensions(this._meshBlendTagTexture, this._depthTexture, value);\r\n this._baseColorTexture = value;\r\n this._effectWrapper.hasBaseColorTexture = !!value;\r\n this._validateInputDimensions();\r\n }\r\n\r\n /**\r\n * Gets the representation stored in the depth texture.\r\n */\r\n public get depthType(): MeshBlendDepthType {\r\n return this._effectWrapper.depthType;\r\n }\r\n\r\n public set depthType(value: MeshBlendDepthType) {\r\n if (this._depthTexture) {\r\n MeshBlendingPostProcess._ValidateDepthTexture(this._depthTexture, value);\r\n }\r\n this._effectWrapper.depthType = value;\r\n }\r\n\r\n /**\r\n * Gets the four configurable radius definitions indexed by packed radius class.\r\n */\r\n public get radiusClasses(): MeshBlendRadiusDefinitions {\r\n return this._effectWrapper.radiusClasses;\r\n }\r\n\r\n /**\r\n * Gets the compiled debug visualization.\r\n */\r\n public get debugMode(): MeshBlendDebugMode {\r\n return this._effectWrapper.debugMode;\r\n }\r\n\r\n public set debugMode(value: MeshBlendDebugMode) {\r\n this._effectWrapper.debugMode = value;\r\n }\r\n\r\n /** Contact-slope narrowing factor. A value of 1 disables narrowing. */\r\n public get slopeFactor(): number {\r\n return this._effectWrapper.slopeFactor;\r\n }\r\n\r\n public set slopeFactor(value: number) {\r\n this._effectWrapper.slopeFactor = value;\r\n }\r\n\r\n /**\r\n * Applies shared mesh-blending configuration.\r\n * @param options Values to apply. Omitted values retain their current settings.\r\n */\r\n public configure(options?: IMeshBlendConfiguration): void {\r\n if (options?.depthType !== undefined) {\r\n MeshBlendingPostProcess._ValidateDepthTexture(this._depthTexture, options.depthType);\r\n }\r\n this._effectWrapper.configure(options);\r\n }\r\n\r\n /**\r\n * Creates a mesh-blending post process.\r\n * @param name The name of the post process.\r\n * @param scene The scene containing the camera.\r\n * @param camera The camera to attach the post process to.\r\n * @param options The post-process and input-texture options.\r\n */\r\n constructor(name: string, scene: Scene, camera: Camera, options: IMeshBlendingPostProcessOptions) {\r\n const sceneEngine = scene.getEngine();\r\n if (camera.getScene() !== scene) {\r\n throw new Error(\"MeshBlendingPostProcess: scene and camera must belong to the same scene\");\r\n }\r\n if (options.engine !== undefined && options.engine !== sceneEngine) {\r\n throw new Error(\"MeshBlendingPostProcess: options.engine must match the scene engine\");\r\n }\r\n if (options.effectWrapper !== undefined && !(options.effectWrapper instanceof ThinMeshBlendingPostProcess)) {\r\n throw new TypeError(\"MeshBlendingPostProcess: effectWrapper must be a ThinMeshBlendingPostProcess\");\r\n }\r\n if (options.effectWrapper !== undefined && options.effectWrapper.options.engine !== sceneEngine) {\r\n throw new Error(\"MeshBlendingPostProcess: effectWrapper must use the scene engine\");\r\n }\r\n if (options.effectWrapper !== undefined && _IsMeshBlendingEffectWrapperOwned(options.effectWrapper)) {\r\n throw new Error(\"MeshBlendingPostProcess: effectWrapper is already attached to another classic mesh-blending post process\");\r\n }\r\n const depthType = options.depthType ?? options.effectWrapper?.depthType ?? MeshBlendDepthType.View;\r\n MeshBlendingPostProcess._ValidateInputs(options, depthType);\r\n\r\n const ownsEffectWrapper = options.effectWrapper === undefined;\r\n const effectWrapper = options.effectWrapper ?? new ThinMeshBlendingPostProcess(name, sceneEngine, options);\r\n effectWrapper.hasBaseColorTexture = !!options.baseColorTexture;\r\n\r\n super(name, ThinMeshBlendingPostProcess.FragmentUrl, {\r\n ...options,\r\n camera,\r\n engine: sceneEngine,\r\n effectWrapper,\r\n uniforms: ThinMeshBlendingPostProcess.Uniforms,\r\n samplers: ThinMeshBlendingPostProcess.Samplers,\r\n textureType: options.textureType ?? Constants.TEXTURETYPE_UNSIGNED_BYTE,\r\n });\r\n\r\n this._ownsEffectWrapper = ownsEffectWrapper;\r\n _ClaimMeshBlendingEffectWrapper(effectWrapper, this);\r\n this._meshBlendTagTexture = options.meshBlendTagTexture;\r\n this._depthTexture = options.depthTexture;\r\n this._baseColorTexture = options.baseColorTexture ?? null;\r\n\r\n this._effectWrapper.configure(options);\r\n this._effectWrapper.camera = camera;\r\n this.doNotSerialize = true;\r\n this._validateInputDimensions();\r\n\r\n this.onApply = (effect: Effect) => {\r\n this._validateInputDimensions(this.width, this.height, this.inputTexture.samples);\r\n this._effectWrapper.camera = this.getCamera();\r\n effect.setTexture(\"meshBlendTagSampler\", this._meshBlendTagTexture);\r\n effect.setTexture(\"meshBlendDepthSampler\", this._depthTexture);\r\n if (this._baseColorTexture) {\r\n effect.setTexture(\"meshBlendBaseColorSampler\", this._baseColorTexture);\r\n }\r\n };\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"MeshBlendingPostProcess\";\r\n }\r\n\r\n public override dispose(camera?: Camera): void {\r\n super.dispose(camera);\r\n _ReleaseMeshBlendingEffectWrapper(this._effectWrapper, this);\r\n if (this._ownsEffectWrapper) {\r\n this._effectWrapper.dispose();\r\n }\r\n }\r\n\r\n /**\r\n * Classic mesh blending cannot be serialized because its geometry inputs are caller-owned runtime textures.\r\n * @throws Always throws because the classic wrapper is runtime-only.\r\n */\r\n public override serialize(): never {\r\n throw new Error(\"MeshBlendingPostProcess cannot be serialized; use the FrameGraph/NRGE path for serializable mesh blending\");\r\n }\r\n\r\n /**\r\n * Classic mesh blending cannot be cloned because its geometry inputs are caller-owned runtime textures.\r\n * @returns Null.\r\n */\r\n public override clone(): null {\r\n return null;\r\n }\r\n\r\n private static _ValidateInputs(options: IMeshBlendingPostProcessOptions, depthType: MeshBlendDepthType): void {\r\n _ValidateMeshBlendConfiguration(options);\r\n MeshBlendingPostProcess._ValidateMeshBlendTagTexture(options.meshBlendTagTexture);\r\n MeshBlendingPostProcess._ValidateDepthTexture(options.depthTexture, depthType);\r\n if (options.baseColorTexture) {\r\n MeshBlendingPostProcess._ValidateBaseColorTexture(options.baseColorTexture);\r\n }\r\n MeshBlendingPostProcess._ValidateInputTextureDimensions(options.meshBlendTagTexture, options.depthTexture, options.baseColorTexture);\r\n }\r\n\r\n private static _ValidateInputTextureDimensions(meshBlendTagTexture: BaseTexture, depthTexture: BaseTexture, baseColorTexture: Nullable<BaseTexture> | undefined): void {\r\n const tagInternalTexture = meshBlendTagTexture.getInternalTexture();\r\n const depthInternalTexture = depthTexture.getInternalTexture();\r\n const baseColorInternalTexture = baseColorTexture?.getInternalTexture();\r\n if (!tagInternalTexture || !depthInternalTexture) {\r\n return;\r\n }\r\n\r\n if (\r\n tagInternalTexture.width !== depthInternalTexture.width ||\r\n tagInternalTexture.height !== depthInternalTexture.height ||\r\n (baseColorInternalTexture !== null &&\r\n baseColorInternalTexture !== undefined &&\r\n (tagInternalTexture.width !== baseColorInternalTexture.width || tagInternalTexture.height !== baseColorInternalTexture.height))\r\n ) {\r\n throw new Error(\"MeshBlendingPostProcess: meshBlendTagTexture, depthTexture, and baseColorTexture when provided must have matching physical dimensions\");\r\n }\r\n const inputSamples = tagInternalTexture.samples || 1;\r\n if (\r\n (depthInternalTexture.samples || 1) !== inputSamples ||\r\n (baseColorInternalTexture !== null && baseColorInternalTexture !== undefined && (baseColorInternalTexture.samples || 1) !== inputSamples)\r\n ) {\r\n throw new Error(\"MeshBlendingPostProcess: meshBlendTagTexture, depthTexture, and baseColorTexture when provided must have matching sample counts\");\r\n }\r\n }\r\n\r\n private static _ValidateMeshBlendTagTexture(texture: BaseTexture): void {\r\n const internalTexture = texture.getInternalTexture();\r\n if (!internalTexture) {\r\n return;\r\n }\r\n MeshBlendingPostProcess._Validate2DTexture(internalTexture, \"meshBlendTagTexture\");\r\n if (internalTexture.type !== Constants.TEXTURETYPE_UNSIGNED_BYTE || internalTexture.format !== Constants.TEXTUREFORMAT_RED_INTEGER) {\r\n throw new Error(\"MeshBlendingPostProcess: meshBlendTagTexture must use TEXTURETYPE_UNSIGNED_BYTE with TEXTUREFORMAT_RED_INTEGER\");\r\n }\r\n if (internalTexture.generateMipMaps || internalTexture.samplingMode !== Constants.TEXTURE_NEAREST_SAMPLINGMODE || internalTexture.samples > 1) {\r\n throw new Error(\"MeshBlendingPostProcess: meshBlendTagTexture must use nearest sampling without mipmaps and must be single-sampled\");\r\n }\r\n }\r\n\r\n private static _ValidateDepthTexture(texture: BaseTexture, depthType: MeshBlendDepthType): void {\r\n const internalTexture = texture.getInternalTexture();\r\n if (!internalTexture) {\r\n return;\r\n }\r\n MeshBlendingPostProcess._Validate2DTexture(internalTexture, \"depthTexture\");\r\n\r\n const validFormat =\r\n internalTexture.format === Constants.TEXTUREFORMAT_RED ||\r\n internalTexture.format === Constants.TEXTUREFORMAT_RG ||\r\n internalTexture.format === Constants.TEXTUREFORMAT_RGBA;\r\n const validType =\r\n internalTexture.type === Constants.TEXTURETYPE_FLOAT ||\r\n internalTexture.type === Constants.TEXTURETYPE_HALF_FLOAT ||\r\n (depthType === MeshBlendDepthType.Screen && internalTexture.type === Constants.TEXTURETYPE_UNSIGNED_BYTE);\r\n\r\n if (!validFormat || !validType) {\r\n throw new Error(\r\n `MeshBlendingPostProcess: ${depthType === MeshBlendDepthType.View ? \"view\" : \"screen\"} depthTexture must use a floating-point color format${\r\n depthType === MeshBlendDepthType.Screen ? \" or normalized unsigned bytes\" : \"\"\r\n }`\r\n );\r\n }\r\n if (internalTexture.generateMipMaps || internalTexture.samples > 1) {\r\n throw new Error(\"MeshBlendingPostProcess: depthTexture must not use mipmaps and must be single-sampled\");\r\n }\r\n }\r\n\r\n private static _ValidateBaseColorTexture(texture: BaseTexture): void {\r\n const internalTexture = texture.getInternalTexture();\r\n if (!internalTexture) {\r\n return;\r\n }\r\n MeshBlendingPostProcess._Validate2DTexture(internalTexture, \"baseColorTexture\");\r\n\r\n const validFormat = internalTexture.format === Constants.TEXTUREFORMAT_RGB || internalTexture.format === Constants.TEXTUREFORMAT_RGBA;\r\n const validType =\r\n internalTexture.type === Constants.TEXTURETYPE_UNSIGNED_BYTE ||\r\n internalTexture.type === Constants.TEXTURETYPE_HALF_FLOAT ||\r\n internalTexture.type === Constants.TEXTURETYPE_FLOAT;\r\n if (!validFormat || !validType) {\r\n throw new Error(\"MeshBlendingPostProcess: baseColorTexture must use a non-integer RGB or RGBA color format\");\r\n }\r\n if (internalTexture.generateMipMaps || internalTexture.samples > 1) {\r\n throw new Error(\"MeshBlendingPostProcess: baseColorTexture must not use mipmaps and must be single-sampled\");\r\n }\r\n }\r\n\r\n private static _Validate2DTexture(internalTexture: InternalTexture, name: string): void {\r\n if (internalTexture.isCube || internalTexture.is3D || internalTexture.is2DArray) {\r\n throw new Error(`MeshBlendingPostProcess: ${name} must be a 2D texture`);\r\n }\r\n }\r\n\r\n private _validateInputDimensions(renderWidth?: number, renderHeight?: number, renderSamples?: number): void {\r\n MeshBlendingPostProcess._ValidateMeshBlendTagTexture(this._meshBlendTagTexture);\r\n MeshBlendingPostProcess._ValidateDepthTexture(this._depthTexture, this.depthType);\r\n if (this._baseColorTexture) {\r\n MeshBlendingPostProcess._ValidateBaseColorTexture(this._baseColorTexture);\r\n }\r\n\r\n const tagTexture = this._meshBlendTagTexture?.getInternalTexture();\r\n const depthTexture = this._depthTexture?.getInternalTexture();\r\n const baseColorTexture = this._baseColorTexture?.getInternalTexture();\r\n if (!tagTexture || !depthTexture) {\r\n return;\r\n }\r\n\r\n MeshBlendingPostProcess._ValidateInputTextureDimensions(this._meshBlendTagTexture, this._depthTexture, this._baseColorTexture);\r\n const inputSamples = tagTexture.samples || 1;\r\n if (renderWidth !== undefined && renderHeight !== undefined && renderWidth > 0 && renderHeight > 0) {\r\n if (\r\n tagTexture.width !== renderWidth ||\r\n tagTexture.height !== renderHeight ||\r\n (baseColorTexture !== null && baseColorTexture !== undefined && (baseColorTexture.width !== renderWidth || baseColorTexture.height !== renderHeight))\r\n ) {\r\n throw new Error(\r\n \"MeshBlendingPostProcess: SceneColor, meshBlendTagTexture, depthTexture, and baseColorTexture when provided must have matching physical dimensions\"\r\n );\r\n }\r\n if ((renderSamples || 1) !== inputSamples) {\r\n throw new Error(\"MeshBlendingPostProcess: SceneColor, meshBlendTagTexture, depthTexture, and baseColorTexture when provided must have matching sample counts\");\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
package/PostProcesses/pure.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export * from "./grainPostProcess.pure.js";
|
|
|
19
19
|
export * from "./highlightsPostProcess.js";
|
|
20
20
|
export * from "./imageProcessingPostProcess.js";
|
|
21
21
|
export * from "./motionBlurPostProcess.pure.js";
|
|
22
|
+
export * from "./meshBlendingPostProcess.js";
|
|
22
23
|
export * from "./passPostProcess.pure.js";
|
|
23
24
|
export * from "./postProcess.pure.js";
|
|
24
25
|
export * from "./postProcessManager.js";
|
|
@@ -47,6 +48,7 @@ export * from "./thinFXAAPostProcess.js";
|
|
|
47
48
|
export * from "./thinGrainPostProcess.js";
|
|
48
49
|
export * from "./thinImageProcessingPostProcess.js";
|
|
49
50
|
export * from "./thinMotionBlurPostProcess.js";
|
|
51
|
+
export * from "./thinMeshBlendingPostProcess.js";
|
|
50
52
|
export * from "./thinPassPostProcess.js";
|
|
51
53
|
export * from "./thinSharpenPostProcess.js";
|
|
52
54
|
export * from "./thinScreenSpaceCurvaturePostProcess.js";
|
package/PostProcesses/pure.js
CHANGED
|
@@ -20,6 +20,7 @@ export * from "./grainPostProcess.pure.js";
|
|
|
20
20
|
export * from "./highlightsPostProcess.js";
|
|
21
21
|
export * from "./imageProcessingPostProcess.js";
|
|
22
22
|
export * from "./motionBlurPostProcess.pure.js";
|
|
23
|
+
export * from "./meshBlendingPostProcess.js";
|
|
23
24
|
export * from "./passPostProcess.pure.js";
|
|
24
25
|
export * from "./postProcess.pure.js";
|
|
25
26
|
export * from "./postProcessManager.js";
|
|
@@ -48,6 +49,7 @@ export * from "./thinFXAAPostProcess.js";
|
|
|
48
49
|
export * from "./thinGrainPostProcess.js";
|
|
49
50
|
export * from "./thinImageProcessingPostProcess.js";
|
|
50
51
|
export * from "./thinMotionBlurPostProcess.js";
|
|
52
|
+
export * from "./thinMeshBlendingPostProcess.js";
|
|
51
53
|
export * from "./thinPassPostProcess.js";
|
|
52
54
|
export * from "./thinSharpenPostProcess.js";
|
|
53
55
|
export * from "./thinScreenSpaceCurvaturePostProcess.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,6DAA6D;AAC7D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yCAAyC,CAAC;AACxD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,qCAAqC,CAAC;AACpD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uCAAuC,CAAC;AACtD,cAAc,0BAA0B,CAAC;AACzC,cAAc,wCAAwC,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\n/* eslint-disable @typescript-eslint/no-restricted-imports */\nexport * from \"./anaglyphPostProcess.pure\";\nexport * from \"./blackAndWhitePostProcess.pure\";\nexport * from \"./bloomEffect\";\nexport * from \"./bloomMergePostProcess.pure\";\nexport * from \"./blurPostProcess.pure\";\nexport * from \"./chromaticAberrationPostProcess.pure\";\nexport * from \"./circleOfConfusionPostProcess.pure\";\nexport * from \"./colorCorrectionPostProcess.pure\";\nexport * from \"./convolutionPostProcess.pure\";\nexport * from \"./depthOfFieldBlurPostProcess.pure\";\nexport * from \"./depthOfFieldEffect\";\nexport * from \"./depthOfFieldMergePostProcess\";\nexport * from \"./displayPassPostProcess.pure\";\nexport * from \"./extractHighlightsPostProcess.pure\";\nexport * from \"./filterPostProcess.pure\";\nexport * from \"./fxaaPostProcess.pure\";\nexport * from \"./grainPostProcess.pure\";\nexport * from \"./highlightsPostProcess\";\nexport * from \"./imageProcessingPostProcess\";\nexport * from \"./motionBlurPostProcess.pure\";\nexport * from \"./passPostProcess.pure\";\nexport * from \"./postProcess.pure\";\nexport * from \"./postProcessManager\";\nexport * from \"./refractionPostProcess.pure\";\nexport * from \"./RenderPipeline/pure\";\nexport * from \"./sharpenPostProcess.pure\";\nexport * from \"./stereoscopicInterlacePostProcess.pure\";\nexport * from \"./tonemapPostProcess.pure\";\nexport * from \"./volumetricLightScatteringPostProcess.pure\";\nexport * from \"./vrDistortionCorrectionPostProcess\";\nexport * from \"./vrMultiviewToSingleviewPostProcess.pure\";\nexport * from \"./screenSpaceReflectionPostProcess.pure\";\nexport * from \"./screenSpaceCurvaturePostProcess.pure\";\nexport * from \"./thinAnaglyphPostProcess\";\nexport * from \"./thinBlackAndWhitePostProcess\";\nexport * from \"./thinBloomEffect\";\nexport * from \"./thinBlurPostProcess\";\nexport * from \"./thinChromaticAberrationPostProcess\";\nexport * from \"./thinCircleOfConfusionPostProcess\";\nexport * from \"./thinColorCorrectionPostProcess\";\nexport * from \"./thinConvolutionPostProcess\";\nexport * from \"./thinDepthOfFieldEffect\";\nexport * from \"./thinExtractHighlightsPostProcess\";\nexport * from \"./thinFilterPostProcess\";\nexport * from \"./thinFXAAPostProcess\";\nexport * from \"./thinGrainPostProcess\";\nexport * from \"./thinImageProcessingPostProcess\";\nexport * from \"./thinMotionBlurPostProcess\";\nexport * from \"./thinPassPostProcess\";\nexport * from \"./thinSharpenPostProcess\";\nexport * from \"./thinScreenSpaceCurvaturePostProcess\";\nexport * from \"./thinTonemapPostProcess\";\nexport * from \"./subSurfaceScatteringPostProcess.pure\";\n"]}
|
|
1
|
+
{"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../dev/core/src/PostProcesses/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,6DAA6D;AAC7D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AACpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oCAAoC,CAAC;AACnD,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yCAAyC,CAAC;AACxD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6CAA6C,CAAC;AAC5D,cAAc,qCAAqC,CAAC;AACpD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uCAAuC,CAAC;AACtD,cAAc,0BAA0B,CAAC;AACzC,cAAc,wCAAwC,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\n/* eslint-disable @typescript-eslint/no-restricted-imports */\nexport * from \"./anaglyphPostProcess.pure\";\nexport * from \"./blackAndWhitePostProcess.pure\";\nexport * from \"./bloomEffect\";\nexport * from \"./bloomMergePostProcess.pure\";\nexport * from \"./blurPostProcess.pure\";\nexport * from \"./chromaticAberrationPostProcess.pure\";\nexport * from \"./circleOfConfusionPostProcess.pure\";\nexport * from \"./colorCorrectionPostProcess.pure\";\nexport * from \"./convolutionPostProcess.pure\";\nexport * from \"./depthOfFieldBlurPostProcess.pure\";\nexport * from \"./depthOfFieldEffect\";\nexport * from \"./depthOfFieldMergePostProcess\";\nexport * from \"./displayPassPostProcess.pure\";\nexport * from \"./extractHighlightsPostProcess.pure\";\nexport * from \"./filterPostProcess.pure\";\nexport * from \"./fxaaPostProcess.pure\";\nexport * from \"./grainPostProcess.pure\";\nexport * from \"./highlightsPostProcess\";\nexport * from \"./imageProcessingPostProcess\";\nexport * from \"./motionBlurPostProcess.pure\";\nexport * from \"./meshBlendingPostProcess\";\nexport * from \"./passPostProcess.pure\";\nexport * from \"./postProcess.pure\";\nexport * from \"./postProcessManager\";\nexport * from \"./refractionPostProcess.pure\";\nexport * from \"./RenderPipeline/pure\";\nexport * from \"./sharpenPostProcess.pure\";\nexport * from \"./stereoscopicInterlacePostProcess.pure\";\nexport * from \"./tonemapPostProcess.pure\";\nexport * from \"./volumetricLightScatteringPostProcess.pure\";\nexport * from \"./vrDistortionCorrectionPostProcess\";\nexport * from \"./vrMultiviewToSingleviewPostProcess.pure\";\nexport * from \"./screenSpaceReflectionPostProcess.pure\";\nexport * from \"./screenSpaceCurvaturePostProcess.pure\";\nexport * from \"./thinAnaglyphPostProcess\";\nexport * from \"./thinBlackAndWhitePostProcess\";\nexport * from \"./thinBloomEffect\";\nexport * from \"./thinBlurPostProcess\";\nexport * from \"./thinChromaticAberrationPostProcess\";\nexport * from \"./thinCircleOfConfusionPostProcess\";\nexport * from \"./thinColorCorrectionPostProcess\";\nexport * from \"./thinConvolutionPostProcess\";\nexport * from \"./thinDepthOfFieldEffect\";\nexport * from \"./thinExtractHighlightsPostProcess\";\nexport * from \"./thinFilterPostProcess\";\nexport * from \"./thinFXAAPostProcess\";\nexport * from \"./thinGrainPostProcess\";\nexport * from \"./thinImageProcessingPostProcess\";\nexport * from \"./thinMotionBlurPostProcess\";\nexport * from \"./thinMeshBlendingPostProcess\";\nexport * from \"./thinPassPostProcess\";\nexport * from \"./thinSharpenPostProcess\";\nexport * from \"./thinScreenSpaceCurvaturePostProcess\";\nexport * from \"./thinTonemapPostProcess\";\nexport * from \"./subSurfaceScatteringPostProcess.pure\";\n"]}
|