@onerjs/core 8.56.3 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Animations/animatable.core.js +36 -0
- package/Animations/animatable.core.js.map +1 -1
- package/Animations/animationGroup.pure.d.ts +61 -1
- package/Animations/animationGroup.pure.js +191 -2
- package/Animations/animationGroup.pure.js.map +1 -1
- package/Animations/index.d.ts +1 -0
- package/Animations/index.js +1 -0
- package/Animations/index.js.map +1 -1
- package/Animations/pure.d.ts +1 -0
- package/Animations/pure.js +1 -0
- package/Animations/pure.js.map +1 -1
- package/Animations/rootMotion.d.ts +560 -0
- package/Animations/rootMotion.js +1709 -0
- package/Animations/rootMotion.js.map +1 -0
- package/Animations/runtimeAnimation.d.ts +57 -0
- package/Animations/runtimeAnimation.js +127 -3
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Cameras/arcRotateCamera.pure.d.ts +2 -0
- package/Cameras/arcRotateCamera.pure.js +2 -0
- package/Cameras/arcRotateCamera.pure.js.map +1 -1
- package/Cameras/camera.pure.js +4 -0
- package/Cameras/camera.pure.js.map +1 -1
- package/Cameras/targetCamera.pure.d.ts +2 -0
- package/Cameras/targetCamera.pure.js +7 -1
- package/Cameras/targetCamera.pure.js.map +1 -1
- package/Collisions/gpuPicker.js +5 -5
- package/Collisions/gpuPicker.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.query.pure.js +4 -2
- package/Engines/AbstractEngine/abstractEngine.query.pure.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.query.types.d.ts +11 -2
- package/Engines/AbstractEngine/abstractEngine.query.types.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.renderPass.pure.js +1 -0
- package/Engines/AbstractEngine/abstractEngine.renderPass.pure.js.map +1 -1
- package/Engines/Extensions/engine.multiRender.pure.js +63 -0
- package/Engines/Extensions/engine.multiRender.pure.js.map +1 -1
- package/Engines/Extensions/engine.multiRender.types.d.ts +13 -0
- package/Engines/Extensions/engine.multiRender.types.js.map +1 -1
- package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js +2 -2
- package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js.map +1 -1
- package/Engines/Extensions/engine.prefilteredCubeTexture.types.d.ts +2 -1
- package/Engines/Extensions/engine.prefilteredCubeTexture.types.js.map +1 -1
- package/Engines/Extensions/index.d.ts +1 -0
- package/Engines/Extensions/index.js +1 -0
- package/Engines/Extensions/index.js.map +1 -1
- package/Engines/Extensions/pure.d.ts +1 -1
- package/Engines/Extensions/pure.js +1 -1
- package/Engines/Extensions/pure.js.map +1 -1
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js +88 -39
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js.map +1 -1
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.types.d.ts +20 -2
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.types.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.pure.js +4 -0
- package/Engines/WebGPU/Extensions/engine.multiRender.pure.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.types.d.ts +13 -0
- package/Engines/WebGPU/Extensions/engine.multiRender.types.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.query.pure.js +11 -3
- package/Engines/WebGPU/Extensions/engine.query.pure.js.map +1 -1
- package/Engines/WebGPU/Extensions/index.d.ts +1 -0
- package/Engines/WebGPU/Extensions/index.js +1 -0
- package/Engines/WebGPU/Extensions/index.js.map +1 -1
- package/Engines/WebGPU/Extensions/pure.d.ts +1 -1
- package/Engines/WebGPU/Extensions/pure.js +1 -1
- package/Engines/WebGPU/Extensions/pure.js.map +1 -1
- package/Engines/WebGPU/webgpuBundleList.d.ts +2 -0
- package/Engines/WebGPU/webgpuBundleList.js +4 -0
- package/Engines/WebGPU/webgpuBundleList.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js +5 -2
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
- package/Engines/WebGPU/webgpuHardwareTexture.js +3 -1
- package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.js +1 -1
- package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
- package/Engines/WebGPU/webgpuSnapshotRendering.d.ts +4 -0
- package/Engines/WebGPU/webgpuSnapshotRendering.js +40 -7
- package/Engines/WebGPU/webgpuSnapshotRendering.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.d.ts +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.js +2 -2
- package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureManager.d.ts +2 -0
- package/Engines/WebGPU/webgpuTextureManager.js +286 -13
- package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
- package/Engines/abstractEngine.pure.d.ts +2 -0
- package/Engines/abstractEngine.pure.js +7 -3
- package/Engines/abstractEngine.pure.js.map +1 -1
- package/Engines/constants.d.ts +4 -0
- package/Engines/constants.js +4 -0
- package/Engines/constants.js.map +1 -1
- package/Engines/thinEngine.pure.d.ts +14 -0
- package/Engines/thinEngine.pure.js +48 -12
- package/Engines/thinEngine.pure.js.map +1 -1
- package/Engines/thinNativeEngine.pure.d.ts +1 -0
- package/Engines/thinNativeEngine.pure.js +7 -1
- package/Engines/thinNativeEngine.pure.js.map +1 -1
- package/Engines/thinWebGPUEngine.d.ts +4 -0
- package/Engines/thinWebGPUEngine.js +10 -1
- package/Engines/thinWebGPUEngine.js.map +1 -1
- package/Engines/webgpuEngine.pure.d.ts +5 -2
- package/Engines/webgpuEngine.pure.js +48 -13
- package/Engines/webgpuEngine.pure.js.map +1 -1
- package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js +2 -2
- package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.pure.js.map +1 -1
- package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.d.ts +11 -2
- package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js +1 -1
- package/FlowGraph/Blocks/Data/Utils/flowGraphArrayIndexBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.d.ts +9 -1
- package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.js +6 -8
- package/FlowGraph/Blocks/Event/flowGraphMeshPickEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.d.ts +2 -0
- package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.js +5 -1
- package/FlowGraph/Blocks/Event/flowGraphPointerOutEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.d.ts +2 -0
- package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.js +5 -1
- package/FlowGraph/Blocks/Event/flowGraphPointerOverEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.d.ts +9 -0
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js +34 -9
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.d.ts +2 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js +4 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.d.ts +2 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js +4 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphSendCustomEventBlock.pure.js +19 -7
- package/FlowGraph/Blocks/Event/flowGraphSendCustomEventBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.d.ts +20 -2
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js +53 -10
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.d.ts +16 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js +64 -14
- package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.pure.js.map +1 -1
- package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.pure.js +64 -16
- package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.pure.js.map +1 -1
- package/FlowGraph/flowGraph.d.ts +4 -0
- package/FlowGraph/flowGraph.js +38 -7
- package/FlowGraph/flowGraph.js.map +1 -1
- package/FlowGraph/flowGraphBlock.js +3 -0
- package/FlowGraph/flowGraphBlock.js.map +1 -1
- package/FlowGraph/flowGraphConnection.d.ts +7 -0
- package/FlowGraph/flowGraphConnection.js +7 -0
- package/FlowGraph/flowGraphConnection.js.map +1 -1
- package/FlowGraph/flowGraphContext.d.ts +2 -1
- package/FlowGraph/flowGraphContext.js +4 -3
- package/FlowGraph/flowGraphContext.js.map +1 -1
- package/FlowGraph/flowGraphCoordinator.d.ts +15 -1
- package/FlowGraph/flowGraphCoordinator.js +47 -16
- package/FlowGraph/flowGraphCoordinator.js.map +1 -1
- package/FlowGraph/flowGraphEventBlock.d.ts +5 -0
- package/FlowGraph/flowGraphEventBlock.js +7 -0
- package/FlowGraph/flowGraphEventBlock.js.map +1 -1
- package/FlowGraph/flowGraphHostResolver.d.ts +2 -1
- package/FlowGraph/flowGraphHostResolver.js.map +1 -1
- package/FlowGraph/flowGraphParser.js +60 -2
- package/FlowGraph/flowGraphParser.js.map +1 -1
- package/FlowGraph/serialization.d.ts +2 -0
- package/FlowGraph/serialization.js +10 -22
- package/FlowGraph/serialization.js.map +1 -1
- package/FlowGraph/typeDefinitions.d.ts +8 -0
- package/FlowGraph/typeDefinitions.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.d.ts +5 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.js +8 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.d.ts +87 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.js +295 -0
- package/FrameGraph/Node/Blocks/PostProcesses/meshBlendingPostProcessBlock.pure.js.map +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/pure.d.ts +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/pure.js +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +4 -4
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.d.ts +5 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js +13 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/allBlocks.pure.js +2 -0
- package/FrameGraph/Node/Blocks/allBlocks.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/index.d.ts +1 -0
- package/FrameGraph/Node/Blocks/index.js +1 -0
- package/FrameGraph/Node/Blocks/index.js.map +1 -1
- package/FrameGraph/Node/Blocks/inputBlock.pure.js +20 -1
- package/FrameGraph/Node/Blocks/inputBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/pure.d.ts +1 -0
- package/FrameGraph/Node/Blocks/pure.js +1 -0
- package/FrameGraph/Node/Blocks/pure.js.map +1 -1
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.d.ts +4 -2
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.js +4 -2
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
- package/FrameGraph/Tasks/Layers/selectionOutlineTask.js +1 -0
- package/FrameGraph/Tasks/Layers/selectionOutlineTask.js.map +1 -1
- package/FrameGraph/Tasks/Misc/cullObjectsTask.js +5 -1
- package/FrameGraph/Tasks/Misc/cullObjectsTask.js.map +1 -1
- package/FrameGraph/Tasks/Misc/lightingVolumeTask.js +1 -0
- package/FrameGraph/Tasks/Misc/lightingVolumeTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.d.ts +69 -0
- package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.js +223 -0
- package/FrameGraph/Tasks/PostProcesses/meshBlendingTask.js.map +1 -0
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +25 -3
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +69 -33
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js +3 -1
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
- package/FrameGraph/frameGraphObjectList.d.ts +6 -1
- package/FrameGraph/frameGraphObjectList.js.map +1 -1
- package/FrameGraph/frameGraphRenderContext.d.ts +3 -1
- package/FrameGraph/frameGraphRenderContext.js +5 -5
- package/FrameGraph/frameGraphRenderContext.js.map +1 -1
- package/FrameGraph/index.d.ts +1 -0
- package/FrameGraph/index.js +1 -0
- package/FrameGraph/index.js.map +1 -1
- package/FrameGraph/pure.d.ts +1 -0
- package/FrameGraph/pure.js +1 -0
- package/FrameGraph/pure.js.map +1 -1
- package/Inputs/scene.inputManager.d.ts +4 -0
- package/Inputs/scene.inputManager.js +50 -8
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js +5 -5
- package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +5 -5
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +26 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +151 -47
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js +5 -5
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js +11 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js +17 -2
- package/Materials/Node/Blocks/Fragment/prePassOutputBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +2 -2
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
- package/Materials/Node/nodeMaterial.pure.d.ts +4 -0
- package/Materials/Node/nodeMaterial.pure.js +4 -0
- package/Materials/Node/nodeMaterial.pure.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.d.ts +1 -1
- package/Materials/Node/nodeMaterialBuildState.js +25 -3
- package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
- package/Materials/PBR/openpbrMaterial.pure.d.ts +2 -0
- package/Materials/PBR/pbrBaseMaterial.pure.d.ts +2 -0
- package/Materials/Textures/Procedurals/proceduralTexture.pure.d.ts +13 -14
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js +6 -6
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
- package/Materials/Textures/baseTexture.pure.js +3 -0
- package/Materials/Textures/baseTexture.pure.js.map +1 -1
- package/Materials/Textures/cubeTexture.pure.js +1 -1
- package/Materials/Textures/cubeTexture.pure.js.map +1 -1
- package/Materials/Textures/internalTexture.d.ts +8 -1
- package/Materials/Textures/internalTexture.js +9 -2
- package/Materials/Textures/internalTexture.js.map +1 -1
- package/Materials/Textures/rawTexture2DArray.functions.d.ts +3 -3
- package/Materials/Textures/rawTexture2DArray.functions.js.map +1 -1
- package/Materials/Textures/rawTexture3D.d.ts +1 -1
- package/Materials/Textures/rawTexture3D.js +1 -1
- package/Materials/Textures/rawTexture3D.js.map +1 -1
- package/Materials/Textures/textureHelper.functions.d.ts +14 -0
- package/Materials/Textures/textureHelper.functions.js +24 -0
- package/Materials/Textures/textureHelper.functions.js.map +1 -1
- package/Materials/ditheredTileFadeMaterialPlugin.d.ts +210 -0
- package/Materials/ditheredTileFadeMaterialPlugin.js +509 -0
- package/Materials/ditheredTileFadeMaterialPlugin.js.map +1 -0
- package/Materials/index.d.ts +1 -0
- package/Materials/index.js +1 -0
- package/Materials/index.js.map +1 -1
- package/Materials/materialHelper.geometryrendering.d.ts +46 -1
- package/Materials/materialHelper.geometryrendering.js +105 -8
- package/Materials/materialHelper.geometryrendering.js.map +1 -1
- package/Materials/prepass.defines.d.ts +2 -0
- package/Materials/prepass.defines.js +2 -0
- package/Materials/prepass.defines.js.map +1 -1
- package/Materials/pure.d.ts +1 -0
- package/Materials/pure.js +1 -0
- package/Materials/pure.js.map +1 -1
- package/Materials/standardMaterial.pure.d.ts +2 -0
- package/Materials/standardMaterial.pure.js +6 -3
- package/Materials/standardMaterial.pure.js.map +1 -1
- package/Meshes/Builders/polygonBuilder.pure.d.ts +4 -0
- package/Meshes/Builders/polygonBuilder.pure.js +4 -1
- package/Meshes/Builders/polygonBuilder.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplatting.functions.d.ts +19 -0
- package/Meshes/GaussianSplatting/gaussianSplatting.functions.js +23 -0
- package/Meshes/GaussianSplatting/gaussianSplatting.functions.js.map +1 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +3 -14
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +20 -24
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +2 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +11 -4
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
- package/Meshes/abstractMesh.pure.d.ts +18 -0
- package/Meshes/abstractMesh.pure.js +22 -0
- package/Meshes/abstractMesh.pure.js.map +1 -1
- package/Meshes/index.d.ts +1 -0
- package/Meshes/index.js +1 -0
- package/Meshes/index.js.map +1 -1
- package/Meshes/instancedMesh.pure.d.ts +5 -0
- package/Meshes/instancedMesh.pure.js +12 -0
- package/Meshes/instancedMesh.pure.js.map +1 -1
- package/Meshes/mesh.pure.js +23 -8
- package/Meshes/mesh.pure.js.map +1 -1
- package/Meshes/meshBlendingTag.d.ts +47 -0
- package/Meshes/meshBlendingTag.js +64 -0
- package/Meshes/meshBlendingTag.js.map +1 -0
- package/Meshes/polygonMesh.js +2 -2
- package/Meshes/polygonMesh.js.map +1 -1
- package/Meshes/pure.d.ts +1 -0
- package/Meshes/pure.js +1 -0
- package/Meshes/pure.js.map +1 -1
- package/Misc/fileTools.pure.js +21 -0
- package/Misc/fileTools.pure.js.map +1 -1
- package/Misc/snapshotRenderingHelper.js +2 -2
- package/Misc/snapshotRenderingHelper.js.map +1 -1
- package/Misc/tools.pure.js +1 -1
- package/Misc/tools.pure.js.map +1 -1
- package/Particles/gpuParticleSystem.pure.d.ts +2 -0
- package/Particles/gpuParticleSystem.pure.js +89 -28
- package/Particles/gpuParticleSystem.pure.js.map +1 -1
- package/Particles/thinParticleSystem.pure.d.ts +2 -0
- package/Particles/thinParticleSystem.pure.js +84 -19
- package/Particles/thinParticleSystem.pure.js.map +1 -1
- package/Particles/webgl2ParticleSystem.pure.d.ts +1 -0
- package/Particles/webgl2ParticleSystem.pure.js +12 -4
- package/Particles/webgl2ParticleSystem.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js +7 -0
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/index.d.ts +2 -0
- package/PostProcesses/index.js +2 -0
- package/PostProcesses/index.js.map +1 -1
- package/PostProcesses/meshBlendingBlueNoise.d.ts +15 -0
- package/PostProcesses/meshBlendingBlueNoise.js +77 -0
- package/PostProcesses/meshBlendingBlueNoise.js.map +1 -0
- package/PostProcesses/meshBlendingPostProcess.d.ts +131 -0
- package/PostProcesses/meshBlendingPostProcess.js +315 -0
- package/PostProcesses/meshBlendingPostProcess.js.map +1 -0
- package/PostProcesses/pure.d.ts +2 -0
- package/PostProcesses/pure.js +2 -0
- package/PostProcesses/pure.js.map +1 -1
- package/PostProcesses/thinMeshBlendingPostProcess.d.ts +339 -0
- package/PostProcesses/thinMeshBlendingPostProcess.js +771 -0
- package/PostProcesses/thinMeshBlendingPostProcess.js.map +1 -0
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +6 -6
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +8 -8
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
- package/Rendering/boundingBoxRenderer.pure.js +2 -1
- package/Rendering/boundingBoxRenderer.pure.js.map +1 -1
- package/Rendering/depthRenderer.pure.js +3 -4
- package/Rendering/depthRenderer.pure.js.map +1 -1
- package/Rendering/edgesRenderer.pure.d.ts +4 -2
- package/Rendering/edgesRenderer.pure.js +11 -2
- package/Rendering/edgesRenderer.pure.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +10 -0
- package/Rendering/fluidRenderer/fluidRenderingObject.js +20 -0
- package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.d.ts +9 -3
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +14 -9
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
- package/Rendering/geometryBufferRenderer.pure.d.ts +38 -4
- package/Rendering/geometryBufferRenderer.pure.js +126 -17
- package/Rendering/geometryBufferRenderer.pure.js.map +1 -1
- package/Rendering/objectRenderer.d.ts +7 -1
- package/Rendering/objectRenderer.js +45 -7
- package/Rendering/objectRenderer.js.map +1 -1
- package/Rendering/outlineRenderer.pure.js +6 -2
- package/Rendering/outlineRenderer.pure.js.map +1 -1
- package/Rendering/renderingManager.d.ts +1 -1
- package/Rendering/renderingManager.js +5 -4
- package/Rendering/renderingManager.js.map +1 -1
- package/Shaders/ShadersInclude/defaultFragmentAlpha.d.ts +5 -0
- package/Shaders/ShadersInclude/defaultFragmentAlpha.js +34 -0
- package/Shaders/ShadersInclude/defaultFragmentAlpha.js.map +1 -0
- package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js +5 -1
- package/Shaders/ShadersInclude/gaussianSplattingVertexDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/geometryRenderingFragment.d.ts +5 -0
- package/Shaders/ShadersInclude/geometryRenderingFragment.js +74 -0
- package/Shaders/ShadersInclude/geometryRenderingFragment.js.map +1 -0
- package/Shaders/ShadersInclude/mrtFragmentDeclaration.js +89 -0
- package/Shaders/ShadersInclude/mrtFragmentDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrBlockPrePass.js +24 -17
- package/Shaders/ShadersInclude/openpbrBlockPrePass.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockPrePass.js +27 -20
- package/Shaders/ShadersInclude/pbrBlockPrePass.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDebug.js +6 -2
- package/Shaders/ShadersInclude/pbrDebug.js.map +1 -1
- package/Shaders/ShadersInclude/prePassDeclaration.js +95 -2
- package/Shaders/ShadersInclude/prePassDeclaration.js.map +1 -1
- package/Shaders/default.fragment.js +31 -40
- package/Shaders/default.fragment.js.map +1 -1
- package/Shaders/depthOfField.fragment.js +13 -9
- package/Shaders/depthOfField.fragment.js.map +1 -1
- package/Shaders/fluidRenderingParticleDepth.vertex.js +16 -1
- package/Shaders/fluidRenderingParticleDepth.vertex.js.map +1 -1
- package/Shaders/fluidRenderingParticleThickness.vertex.js +16 -1
- package/Shaders/fluidRenderingParticleThickness.vertex.js.map +1 -1
- package/Shaders/gaussianSplatting.fragment.js +63 -3
- package/Shaders/gaussianSplatting.fragment.js.map +1 -1
- package/Shaders/gaussianSplatting.vertex.js +80 -0
- package/Shaders/gaussianSplatting.vertex.js.map +1 -1
- package/Shaders/geometry.fragment.js +17 -11
- package/Shaders/geometry.fragment.js.map +1 -1
- package/Shaders/gpuRenderParticles.fragment.js +43 -1
- package/Shaders/gpuRenderParticles.fragment.js.map +1 -1
- package/Shaders/gpuRenderParticles.vertex.js +96 -16
- package/Shaders/gpuRenderParticles.vertex.js.map +1 -1
- package/Shaders/meshBlending.fragment.d.ts +5 -0
- package/Shaders/meshBlending.fragment.js +519 -0
- package/Shaders/meshBlending.fragment.js.map +1 -0
- package/Shaders/particles.fragment.js +43 -1
- package/Shaders/particles.fragment.js.map +1 -1
- package/Shaders/particles.vertex.js +84 -3
- package/Shaders/particles.vertex.js.map +1 -1
- package/Shaders/sprites.fragment.js +52 -2
- package/Shaders/sprites.fragment.js.map +1 -1
- package/Shaders/sprites.vertex.js +62 -1
- package/Shaders/sprites.vertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.js +33 -0
- package/ShadersWGSL/ShadersInclude/defaultFragmentAlpha.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.d.ts +6 -0
- package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.js +76 -0
- package/ShadersWGSL/ShadersInclude/geometryRenderingFragment.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/lightFragment.js +1 -1
- package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.js +18 -0
- package/ShadersWGSL/ShadersInclude/meshBlendTagFragmentOutput.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.d.ts +1 -0
- package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.js +11 -25
- package/ShadersWGSL/ShadersInclude/openpbrBlockPrePass.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.d.ts +1 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js +11 -25
- package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrDebug.js +5 -1
- package/ShadersWGSL/ShadersInclude/pbrDebug.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/prePassDeclaration.js +6 -1
- package/ShadersWGSL/ShadersInclude/prePassDeclaration.js.map +1 -1
- package/ShadersWGSL/default.fragment.js +17 -48
- package/ShadersWGSL/default.fragment.js.map +1 -1
- package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js +15 -2
- package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js.map +1 -1
- package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js +15 -2
- package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.fragment.js +63 -2
- package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.vertex.js +80 -0
- package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
- package/ShadersWGSL/geometry.fragment.js +37 -2
- package/ShadersWGSL/geometry.fragment.js.map +1 -1
- package/ShadersWGSL/gpuRenderParticles.fragment.js +47 -2
- package/ShadersWGSL/gpuRenderParticles.fragment.js.map +1 -1
- package/ShadersWGSL/gpuRenderParticles.vertex.js +110 -7
- package/ShadersWGSL/gpuRenderParticles.vertex.js.map +1 -1
- package/ShadersWGSL/meshBlending.fragment.d.ts +5 -0
- package/ShadersWGSL/meshBlending.fragment.js +576 -0
- package/ShadersWGSL/meshBlending.fragment.js.map +1 -0
- package/ShadersWGSL/openpbr.fragment.js +2 -1
- package/ShadersWGSL/openpbr.fragment.js.map +1 -1
- package/ShadersWGSL/particles.fragment.js +45 -1
- package/ShadersWGSL/particles.fragment.js.map +1 -1
- package/ShadersWGSL/particles.vertex.js +86 -4
- package/ShadersWGSL/particles.vertex.js.map +1 -1
- package/ShadersWGSL/pbr.fragment.js +2 -1
- package/ShadersWGSL/pbr.fragment.js.map +1 -1
- package/ShadersWGSL/sprites.fragment.js +56 -2
- package/ShadersWGSL/sprites.fragment.js.map +1 -1
- package/ShadersWGSL/sprites.vertex.js +62 -1
- package/ShadersWGSL/sprites.vertex.js.map +1 -1
- package/Sprites/spriteManager.d.ts +13 -0
- package/Sprites/spriteManager.js +15 -0
- package/Sprites/spriteManager.js.map +1 -1
- package/Sprites/spriteRenderer.d.ts +24 -1
- package/Sprites/spriteRenderer.js +368 -50
- package/Sprites/spriteRenderer.js.map +1 -1
- package/Sprites/thinSprite.d.ts +4 -0
- package/Sprites/thinSprite.js +4 -0
- package/Sprites/thinSprite.js.map +1 -1
- package/States/alphaCullingState.d.ts +3 -1
- package/States/alphaCullingState.js +18 -3
- package/States/alphaCullingState.js.map +1 -1
- package/XR/webXRDefaultExperience.d.ts +5 -1
- package/XR/webXRDefaultExperience.js.map +1 -1
- package/XR/webXREnterExitUI.d.ts +2 -1
- package/XR/webXREnterExitUI.js.map +1 -1
- package/package.json +1 -1
- package/scene.pure.d.ts +23 -0
- package/scene.pure.js +35 -0
- package/scene.pure.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.multiRender.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Engines/WebGPU/Extensions/engine.multiRender.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { InternalTexture, InternalTextureSource } from \"../../../Materials/Textures/internalTexture\";\r\nimport { type IMultiRenderTargetOptions } from \"../../../Materials/Textures/multiRenderTarget.pure\";\r\nimport { Logger } from \"../../../Misc/logger\";\r\nimport { type Nullable } from \"../../../types\";\r\nimport { Constants } from \"../../constants\";\r\nimport { type TextureSize } from \"../../../Materials/Textures/textureCreationOptions\";\r\nimport { type RenderTargetWrapper } from \"../../renderTargetWrapper\";\r\nimport { WebGPUEngine } from \"../../webgpuEngine.pure\";\r\nimport { type WebGPURenderTargetWrapper } from \"../webgpuRenderTargetWrapper\";\r\nimport { type WebGPUHardwareTexture } from \"../webgpuHardwareTexture\";\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for enginesWebGPUExtensionsEngineMultiRender.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterEnginesWebGPUExtensionsEngineMultiRender(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n WebGPUEngine.prototype.unBindMultiColorAttachmentFramebuffer = function (\r\n rtWrapper: RenderTargetWrapper,\r\n disableGenerateMipMaps: boolean = false,\r\n onBeforeUnbind?: () => void\r\n ): void {\r\n if (onBeforeUnbind) {\r\n onBeforeUnbind();\r\n }\r\n\r\n this._endCurrentRenderPass();\r\n\r\n if (!rtWrapper.disableAutomaticMSAAResolve) {\r\n this.resolveMultiFramebuffer(rtWrapper, false);\r\n }\r\n\r\n if (!disableGenerateMipMaps) {\r\n this.generateMipMapsMultiFramebuffer(rtWrapper);\r\n }\r\n\r\n this._currentRenderTarget = null;\r\n\r\n this._mrtAttachments = [];\r\n this._cacheRenderPipeline.setMRT([]);\r\n this._cacheRenderPipeline.setMRTAttachments(this._mrtAttachments);\r\n };\r\n\r\n WebGPUEngine.prototype.createMultipleRenderTarget = function (size: TextureSize, options: IMultiRenderTargetOptions, initializeBuffers?: boolean): RenderTargetWrapper {\r\n let generateMipMaps = false;\r\n let generateDepthBuffer = true;\r\n let generateStencilBuffer = false;\r\n let generateDepthTexture = false;\r\n let depthTextureFormat = Constants.TEXTUREFORMAT_DEPTH16;\r\n let textureCount = 1;\r\n let samples = 1;\r\n\r\n const defaultType = Constants.TEXTURETYPE_UNSIGNED_BYTE;\r\n const defaultSamplingMode = Constants.TEXTURE_TRILINEAR_SAMPLINGMODE;\r\n const defaultUseSRGBBuffer = false;\r\n const defaultFormat = Constants.TEXTUREFORMAT_RGBA;\r\n const defaultTarget = Constants.TEXTURE_2D;\r\n\r\n let types: number[] = [];\r\n let samplingModes: number[] = [];\r\n let useSRGBBuffers: boolean[] = [];\r\n let formats: number[] = [];\r\n let targets: number[] = [];\r\n let faceIndex: number[] = [];\r\n let layerIndex: number[] = [];\r\n let layers: number[] = [];\r\n let labels: string[] = [];\r\n let creationFlags: number[] = [];\r\n let dontCreateTextures = false;\r\n\r\n const rtWrapper = this._createHardwareRenderTargetWrapper(true, false, size) as WebGPURenderTargetWrapper;\r\n\r\n if (options !== undefined) {\r\n generateMipMaps = options.generateMipMaps ?? false;\r\n generateDepthBuffer = options.generateDepthBuffer ?? true;\r\n generateStencilBuffer = options.generateStencilBuffer ?? false;\r\n generateDepthTexture = options.generateDepthTexture ?? false;\r\n textureCount = options.textureCount ?? 1;\r\n depthTextureFormat = options.depthTextureFormat ?? Constants.TEXTUREFORMAT_DEPTH16;\r\n types = options.types || types;\r\n samplingModes = options.samplingModes || samplingModes;\r\n useSRGBBuffers = options.useSRGBBuffers || useSRGBBuffers;\r\n formats = options.formats || formats;\r\n targets = options.targetTypes || targets;\r\n faceIndex = options.faceIndex || faceIndex;\r\n layerIndex = options.layerIndex || layerIndex;\r\n layers = options.layerCounts || layers;\r\n labels = options.labels || labels;\r\n creationFlags = options.creationFlags || creationFlags;\r\n samples = options.samples ?? samples;\r\n dontCreateTextures = options.dontCreateTextures ?? false;\r\n }\r\n\r\n const width = (<{ width: number; height: number }>size).width ?? <number>size;\r\n const height = (<{ width: number; height: number }>size).height ?? <number>size;\r\n\r\n const textures: InternalTexture[] = [];\r\n const attachments: number[] = [];\r\n const defaultAttachments: number[] = [];\r\n\r\n rtWrapper.label = options?.label ?? \"MultiRenderTargetWrapper\";\r\n rtWrapper._generateDepthBuffer = generateDepthBuffer;\r\n rtWrapper._generateStencilBuffer = generateStencilBuffer;\r\n rtWrapper._attachments = attachments;\r\n rtWrapper._defaultAttachments = defaultAttachments;\r\n\r\n let depthStencilTexture: Nullable<InternalTexture> = null;\r\n if ((generateDepthBuffer || generateStencilBuffer || generateDepthTexture) && !dontCreateTextures) {\r\n if (!generateDepthTexture) {\r\n // The caller doesn't want a depth texture, so we are free to use the depth texture format we want.\r\n // So, we will align with what the WebGL engine does\r\n if (generateDepthBuffer && generateStencilBuffer) {\r\n depthTextureFormat = Constants.TEXTUREFORMAT_DEPTH24_STENCIL8;\r\n } else if (generateDepthBuffer) {\r\n depthTextureFormat = Constants.TEXTUREFORMAT_DEPTH32_FLOAT;\r\n } else {\r\n depthTextureFormat = Constants.TEXTUREFORMAT_STENCIL8;\r\n }\r\n }\r\n depthStencilTexture = rtWrapper.createDepthStencilTexture(0, false, generateStencilBuffer, 1, depthTextureFormat, rtWrapper.label + \"-DepthStencil\");\r\n }\r\n\r\n const mipmapsCreationOnly = options !== undefined && typeof options === \"object\" && options.createMipMaps && !generateMipMaps;\r\n\r\n for (let i = 0; i < textureCount; i++) {\r\n let samplingMode = samplingModes[i] || defaultSamplingMode;\r\n let type = types[i] || defaultType;\r\n\r\n const format = formats[i] || defaultFormat;\r\n const useSRGBBuffer = (useSRGBBuffers[i] || defaultUseSRGBBuffer) && this._caps.supportSRGBBuffers;\r\n\r\n const target = targets[i] || defaultTarget;\r\n const layerCount = layers[i] ?? 1;\r\n const creationFlag = creationFlags[i];\r\n\r\n if (type === Constants.TEXTURETYPE_FLOAT && !this._caps.textureFloatLinearFiltering) {\r\n // if floating point linear (FLOAT) then force to NEAREST_SAMPLINGMODE\r\n samplingMode = Constants.TEXTURE_NEAREST_SAMPLINGMODE;\r\n } else if (type === Constants.TEXTURETYPE_HALF_FLOAT && !this._caps.textureHalfFloatLinearFiltering) {\r\n // if floating point linear (HALF_FLOAT) then force to NEAREST_SAMPLINGMODE\r\n samplingMode = Constants.TEXTURE_NEAREST_SAMPLINGMODE;\r\n }\r\n\r\n if (type === Constants.TEXTURETYPE_FLOAT && !this._caps.textureFloat) {\r\n type = Constants.TEXTURETYPE_UNSIGNED_BYTE;\r\n Logger.Warn(\"Float textures are not supported. Render target forced to TEXTURETYPE_UNSIGNED_BYTE type\");\r\n }\r\n\r\n attachments.push(i + 1);\r\n defaultAttachments.push(initializeBuffers ? i + 1 : i === 0 ? 1 : 0);\r\n\r\n if (target === -1 || dontCreateTextures) {\r\n continue;\r\n }\r\n\r\n const texture = new InternalTexture(this, InternalTextureSource.MultiRenderTarget);\r\n textures[i] = texture;\r\n\r\n switch (target) {\r\n case Constants.TEXTURE_CUBE_MAP:\r\n texture.isCube = true;\r\n break;\r\n case Constants.TEXTURE_3D:\r\n texture.is3D = true;\r\n texture.baseDepth = texture.depth = layerCount;\r\n break;\r\n case Constants.TEXTURE_2D_ARRAY:\r\n texture.is2DArray = true;\r\n texture.baseDepth = texture.depth = layerCount;\r\n break;\r\n }\r\n\r\n texture.baseWidth = width;\r\n texture.baseHeight = height;\r\n texture.width = width;\r\n texture.height = height;\r\n texture.isReady = true;\r\n texture.samples = 1;\r\n texture.generateMipMaps = generateMipMaps;\r\n texture.samplingMode = samplingMode;\r\n texture.type = type;\r\n texture._cachedWrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n texture._cachedWrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n texture._useSRGBBuffer = useSRGBBuffer;\r\n texture.format = format;\r\n texture.label = labels[i] ?? rtWrapper.label + \"-Texture\" + i;\r\n\r\n this._internalTexturesCache.push(texture);\r\n\r\n if (mipmapsCreationOnly) {\r\n // createGPUTextureForInternalTexture will only create a texture with mipmaps if generateMipMaps is true, as InternalTexture has no createMipMaps property, separate from generateMipMaps.\r\n texture.generateMipMaps = true;\r\n }\r\n\r\n this._textureHelper.createGPUTextureForInternalTexture(texture, undefined, undefined, undefined, creationFlag);\r\n\r\n if (mipmapsCreationOnly) {\r\n texture.generateMipMaps = false;\r\n }\r\n }\r\n\r\n if (depthStencilTexture) {\r\n depthStencilTexture.incrementReferences();\r\n textures[textureCount] = depthStencilTexture;\r\n this._internalTexturesCache.push(depthStencilTexture);\r\n }\r\n\r\n rtWrapper.setTextures(textures);\r\n rtWrapper.setLayerAndFaceIndices(layerIndex, faceIndex);\r\n\r\n if (!dontCreateTextures) {\r\n this.updateMultipleRenderTargetTextureSampleCount(rtWrapper, samples);\r\n } else {\r\n rtWrapper._samples = samples;\r\n }\r\n\r\n return rtWrapper;\r\n };\r\n\r\n WebGPUEngine.prototype.updateMultipleRenderTargetTextureSampleCount = function (rtWrapper: Nullable<RenderTargetWrapper>, samples: number): number {\r\n if (!rtWrapper || !rtWrapper.textures || rtWrapper.textures.length === 0 || rtWrapper.textures[0].samples === samples) {\r\n return samples;\r\n }\r\n\r\n const count = rtWrapper.textures.length;\r\n\r\n if (count === 0) {\r\n return 1;\r\n }\r\n\r\n samples = Math.min(samples, this.getCaps().maxMSAASamples);\r\n\r\n // Release existing MSAA textures\r\n for (let i = 0; i < count; ++i) {\r\n const texture = rtWrapper.textures[i];\r\n const gpuTextureWrapper = texture._hardwareTexture as Nullable<WebGPUHardwareTexture>;\r\n\r\n gpuTextureWrapper?.releaseMSAATextures();\r\n }\r\n\r\n // Sets new sample count. The MSAA textures will be created on demand.\r\n for (let i = 0; i < count; ++i) {\r\n const texture = rtWrapper.textures[i];\r\n texture.samples = samples;\r\n }\r\n\r\n if (rtWrapper._depthStencilTexture) {\r\n rtWrapper._depthStencilTexture.samples = samples;\r\n }\r\n\r\n rtWrapper._samples = samples;\r\n\r\n return samples;\r\n };\r\n\r\n WebGPUEngine.prototype.generateMipMapsMultiFramebuffer = function (texture: RenderTargetWrapper): void {\r\n const rtWrapper = texture as WebGPURenderTargetWrapper;\r\n\r\n if (!rtWrapper.isMulti) {\r\n return;\r\n }\r\n\r\n const attachments = rtWrapper._attachments!;\r\n const count = attachments.length;\r\n\r\n for (let i = 0; i < count; i++) {\r\n const texture = rtWrapper.textures![i];\r\n if (texture.generateMipMaps && !texture.isCube && !texture.is3D) {\r\n this._generateMipmaps(texture);\r\n }\r\n }\r\n };\r\n\r\n WebGPUEngine.prototype.resolveMultiFramebuffer = function (texture: RenderTargetWrapper, resolveColors: boolean = true): void {\r\n this.resolveFramebuffer(texture, resolveColors);\r\n };\r\n\r\n WebGPUEngine.prototype.bindAttachments = function (attachments: number[]): void {\r\n if (attachments.length === 0 || !this._currentRenderTarget) {\r\n return;\r\n }\r\n\r\n this._mrtAttachments = attachments;\r\n if (this._currentRenderPass) {\r\n // the render pass has already been created, we need to call setMRTAttachments to update the state of the attachments\r\n this._cacheRenderPipeline.setMRTAttachments(attachments);\r\n } else {\r\n // the render pass is not created yet so we don't need to call setMRTAttachments: it will be called as part of the render pass creation (see WebGPUEngine._startRenderTargetRenderPass)\r\n }\r\n };\r\n\r\n WebGPUEngine.prototype.buildTextureLayout = function (textureStatus: boolean[], backBufferLayout = false): number[] {\r\n const result = [];\r\n\r\n if (backBufferLayout) {\r\n result.push(1);\r\n } else {\r\n for (let i = 0; i < textureStatus.length; i++) {\r\n if (textureStatus[i]) {\r\n result.push(i + 1);\r\n } else {\r\n result.push(0);\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n };\r\n\r\n WebGPUEngine.prototype.restoreSingleAttachment = function (): void {\r\n // not sure what to do, probably nothing... This function and restoreSingleAttachmentForRenderTarget are not called in Babylon.js so it's hard to know the use case\r\n };\r\n\r\n WebGPUEngine.prototype.restoreSingleAttachmentForRenderTarget = function (): void {\r\n // not sure what to do, probably nothing... This function and restoreSingleAttachment are not called in Babylon.js so it's hard to know the use case\r\n };\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"engine.multiRender.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Engines/WebGPU/Extensions/engine.multiRender.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { InternalTexture, InternalTextureSource } from \"../../../Materials/Textures/internalTexture\";\r\nimport { type IMultiRenderTargetOptions } from \"../../../Materials/Textures/multiRenderTarget.pure\";\r\nimport { Logger } from \"../../../Misc/logger\";\r\nimport { type Nullable } from \"../../../types\";\r\nimport { Constants } from \"../../constants\";\r\nimport { type TextureSize } from \"../../../Materials/Textures/textureCreationOptions\";\r\nimport { type RenderTargetWrapper } from \"../../renderTargetWrapper\";\r\nimport { WebGPUEngine } from \"../../webgpuEngine.pure\";\r\nimport { type WebGPURenderTargetWrapper } from \"../webgpuRenderTargetWrapper\";\r\nimport { type WebGPUHardwareTexture } from \"../webgpuHardwareTexture\";\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for enginesWebGPUExtensionsEngineMultiRender.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterEnginesWebGPUExtensionsEngineMultiRender(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n WebGPUEngine.prototype.unBindMultiColorAttachmentFramebuffer = function (\r\n rtWrapper: RenderTargetWrapper,\r\n disableGenerateMipMaps: boolean = false,\r\n onBeforeUnbind?: () => void\r\n ): void {\r\n if (onBeforeUnbind) {\r\n onBeforeUnbind();\r\n }\r\n\r\n this._endCurrentRenderPass();\r\n\r\n if (!rtWrapper.disableAutomaticMSAAResolve) {\r\n this.resolveMultiFramebuffer(rtWrapper, false);\r\n }\r\n\r\n if (!disableGenerateMipMaps) {\r\n this.generateMipMapsMultiFramebuffer(rtWrapper);\r\n }\r\n\r\n this._currentRenderTarget = null;\r\n\r\n this._mrtAttachments = [];\r\n this._cacheRenderPipeline.setMRT([]);\r\n this._cacheRenderPipeline.setMRTAttachments(this._mrtAttachments);\r\n };\r\n\r\n WebGPUEngine.prototype.createMultipleRenderTarget = function (size: TextureSize, options: IMultiRenderTargetOptions, initializeBuffers?: boolean): RenderTargetWrapper {\r\n let generateMipMaps = false;\r\n let generateDepthBuffer = true;\r\n let generateStencilBuffer = false;\r\n let generateDepthTexture = false;\r\n let depthTextureFormat = Constants.TEXTUREFORMAT_DEPTH16;\r\n let textureCount = 1;\r\n let samples = 1;\r\n\r\n const defaultType = Constants.TEXTURETYPE_UNSIGNED_BYTE;\r\n const defaultSamplingMode = Constants.TEXTURE_TRILINEAR_SAMPLINGMODE;\r\n const defaultUseSRGBBuffer = false;\r\n const defaultFormat = Constants.TEXTUREFORMAT_RGBA;\r\n const defaultTarget = Constants.TEXTURE_2D;\r\n\r\n let types: number[] = [];\r\n let samplingModes: number[] = [];\r\n let useSRGBBuffers: boolean[] = [];\r\n let formats: number[] = [];\r\n let targets: number[] = [];\r\n let faceIndex: number[] = [];\r\n let layerIndex: number[] = [];\r\n let layers: number[] = [];\r\n let labels: string[] = [];\r\n let creationFlags: number[] = [];\r\n let dontCreateTextures = false;\r\n\r\n const rtWrapper = this._createHardwareRenderTargetWrapper(true, false, size) as WebGPURenderTargetWrapper;\r\n\r\n if (options !== undefined) {\r\n generateMipMaps = options.generateMipMaps ?? false;\r\n generateDepthBuffer = options.generateDepthBuffer ?? true;\r\n generateStencilBuffer = options.generateStencilBuffer ?? false;\r\n generateDepthTexture = options.generateDepthTexture ?? false;\r\n textureCount = options.textureCount ?? 1;\r\n depthTextureFormat = options.depthTextureFormat ?? Constants.TEXTUREFORMAT_DEPTH16;\r\n types = options.types || types;\r\n samplingModes = options.samplingModes || samplingModes;\r\n useSRGBBuffers = options.useSRGBBuffers || useSRGBBuffers;\r\n formats = options.formats || formats;\r\n targets = options.targetTypes || targets;\r\n faceIndex = options.faceIndex || faceIndex;\r\n layerIndex = options.layerIndex || layerIndex;\r\n layers = options.layerCounts || layers;\r\n labels = options.labels || labels;\r\n creationFlags = options.creationFlags || creationFlags;\r\n samples = options.samples ?? samples;\r\n dontCreateTextures = options.dontCreateTextures ?? false;\r\n }\r\n\r\n const width = (<{ width: number; height: number }>size).width ?? <number>size;\r\n const height = (<{ width: number; height: number }>size).height ?? <number>size;\r\n\r\n const textures: InternalTexture[] = [];\r\n const attachments: number[] = [];\r\n const defaultAttachments: number[] = [];\r\n\r\n rtWrapper.label = options?.label ?? \"MultiRenderTargetWrapper\";\r\n rtWrapper._generateDepthBuffer = generateDepthBuffer;\r\n rtWrapper._generateStencilBuffer = generateStencilBuffer;\r\n rtWrapper._attachments = attachments;\r\n rtWrapper._defaultAttachments = defaultAttachments;\r\n\r\n let depthStencilTexture: Nullable<InternalTexture> = null;\r\n if ((generateDepthBuffer || generateStencilBuffer || generateDepthTexture) && !dontCreateTextures) {\r\n if (!generateDepthTexture) {\r\n // The caller doesn't want a depth texture, so we are free to use the depth texture format we want.\r\n // So, we will align with what the WebGL engine does\r\n if (generateDepthBuffer && generateStencilBuffer) {\r\n depthTextureFormat = Constants.TEXTUREFORMAT_DEPTH24_STENCIL8;\r\n } else if (generateDepthBuffer) {\r\n depthTextureFormat = Constants.TEXTUREFORMAT_DEPTH32_FLOAT;\r\n } else {\r\n depthTextureFormat = Constants.TEXTUREFORMAT_STENCIL8;\r\n }\r\n }\r\n depthStencilTexture = rtWrapper.createDepthStencilTexture(0, false, generateStencilBuffer, 1, depthTextureFormat, rtWrapper.label + \"-DepthStencil\");\r\n }\r\n\r\n const mipmapsCreationOnly = options !== undefined && typeof options === \"object\" && options.createMipMaps && !generateMipMaps;\r\n\r\n for (let i = 0; i < textureCount; i++) {\r\n let samplingMode = samplingModes[i] || defaultSamplingMode;\r\n let type = types[i] || defaultType;\r\n\r\n const format = formats[i] || defaultFormat;\r\n const useSRGBBuffer = (useSRGBBuffers[i] || defaultUseSRGBBuffer) && this._caps.supportSRGBBuffers;\r\n\r\n const target = targets[i] || defaultTarget;\r\n const layerCount = layers[i] ?? 1;\r\n const creationFlag = creationFlags[i];\r\n\r\n if (type === Constants.TEXTURETYPE_FLOAT && !this._caps.textureFloatLinearFiltering) {\r\n // if floating point linear (FLOAT) then force to NEAREST_SAMPLINGMODE\r\n samplingMode = Constants.TEXTURE_NEAREST_SAMPLINGMODE;\r\n } else if (type === Constants.TEXTURETYPE_HALF_FLOAT && !this._caps.textureHalfFloatLinearFiltering) {\r\n // if floating point linear (HALF_FLOAT) then force to NEAREST_SAMPLINGMODE\r\n samplingMode = Constants.TEXTURE_NEAREST_SAMPLINGMODE;\r\n }\r\n\r\n if (type === Constants.TEXTURETYPE_FLOAT && !this._caps.textureFloat) {\r\n type = Constants.TEXTURETYPE_UNSIGNED_BYTE;\r\n Logger.Warn(\"Float textures are not supported. Render target forced to TEXTURETYPE_UNSIGNED_BYTE type\");\r\n }\r\n\r\n attachments.push(i + 1);\r\n defaultAttachments.push(initializeBuffers ? i + 1 : i === 0 ? 1 : 0);\r\n\r\n if (target === -1 || dontCreateTextures) {\r\n continue;\r\n }\r\n\r\n const texture = new InternalTexture(this, InternalTextureSource.MultiRenderTarget);\r\n textures[i] = texture;\r\n\r\n switch (target) {\r\n case Constants.TEXTURE_CUBE_MAP:\r\n texture.isCube = true;\r\n break;\r\n case Constants.TEXTURE_3D:\r\n texture.is3D = true;\r\n texture.baseDepth = texture.depth = layerCount;\r\n break;\r\n case Constants.TEXTURE_2D_ARRAY:\r\n texture.is2DArray = true;\r\n texture.baseDepth = texture.depth = layerCount;\r\n break;\r\n }\r\n\r\n texture.baseWidth = width;\r\n texture.baseHeight = height;\r\n texture.width = width;\r\n texture.height = height;\r\n texture.isReady = true;\r\n texture.samples = 1;\r\n texture.generateMipMaps = generateMipMaps;\r\n texture.samplingMode = samplingMode;\r\n texture.type = type;\r\n texture._cachedWrapU = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n texture._cachedWrapV = Constants.TEXTURE_CLAMP_ADDRESSMODE;\r\n texture._useSRGBBuffer = useSRGBBuffer;\r\n texture.format = format;\r\n texture.label = labels[i] ?? rtWrapper.label + \"-Texture\" + i;\r\n\r\n this._internalTexturesCache.push(texture);\r\n\r\n if (mipmapsCreationOnly) {\r\n // createGPUTextureForInternalTexture will only create a texture with mipmaps if generateMipMaps is true, as InternalTexture has no createMipMaps property, separate from generateMipMaps.\r\n texture.generateMipMaps = true;\r\n }\r\n\r\n this._textureHelper.createGPUTextureForInternalTexture(texture, undefined, undefined, undefined, creationFlag);\r\n\r\n if (mipmapsCreationOnly) {\r\n texture.generateMipMaps = false;\r\n }\r\n }\r\n\r\n if (depthStencilTexture) {\r\n depthStencilTexture.incrementReferences();\r\n textures[textureCount] = depthStencilTexture;\r\n this._internalTexturesCache.push(depthStencilTexture);\r\n }\r\n\r\n rtWrapper.setTextures(textures);\r\n rtWrapper.setLayerAndFaceIndices(layerIndex, faceIndex);\r\n\r\n if (!dontCreateTextures) {\r\n this.updateMultipleRenderTargetTextureSampleCount(rtWrapper, samples);\r\n } else {\r\n rtWrapper._samples = samples;\r\n }\r\n\r\n return rtWrapper;\r\n };\r\n\r\n WebGPUEngine.prototype.updateMultipleRenderTargetTextureSampleCount = function (rtWrapper: Nullable<RenderTargetWrapper>, samples: number): number {\r\n if (!rtWrapper || !rtWrapper.textures || rtWrapper.textures.length === 0 || rtWrapper.textures[0].samples === samples) {\r\n return samples;\r\n }\r\n\r\n const count = rtWrapper.textures.length;\r\n\r\n if (count === 0) {\r\n return 1;\r\n }\r\n\r\n samples = Math.min(samples, this.getCaps().maxMSAASamples);\r\n\r\n // Release existing MSAA textures\r\n for (let i = 0; i < count; ++i) {\r\n const texture = rtWrapper.textures[i];\r\n const gpuTextureWrapper = texture._hardwareTexture as Nullable<WebGPUHardwareTexture>;\r\n\r\n gpuTextureWrapper?.releaseMSAATextures();\r\n }\r\n\r\n // Sets new sample count. The MSAA textures will be created on demand.\r\n for (let i = 0; i < count; ++i) {\r\n const texture = rtWrapper.textures[i];\r\n texture.samples = samples;\r\n }\r\n\r\n if (rtWrapper._depthStencilTexture) {\r\n rtWrapper._depthStencilTexture.samples = samples;\r\n }\r\n\r\n rtWrapper._samples = samples;\r\n\r\n return samples;\r\n };\r\n\r\n WebGPUEngine.prototype.generateMipMapsMultiFramebuffer = function (texture: RenderTargetWrapper): void {\r\n const rtWrapper = texture as WebGPURenderTargetWrapper;\r\n\r\n if (!rtWrapper.isMulti) {\r\n return;\r\n }\r\n\r\n const attachments = rtWrapper._attachments!;\r\n const count = attachments.length;\r\n\r\n for (let i = 0; i < count; i++) {\r\n const texture = rtWrapper.textures![i];\r\n if (texture.generateMipMaps && !texture.isCube && !texture.is3D) {\r\n this._generateMipmaps(texture);\r\n }\r\n }\r\n };\r\n\r\n WebGPUEngine.prototype.resolveMultiFramebuffer = function (texture: RenderTargetWrapper, resolveColors: boolean = true): void {\r\n this.resolveFramebuffer(texture, resolveColors);\r\n };\r\n\r\n WebGPUEngine.prototype.bindAttachments = function (attachments: number[]): void {\r\n if (attachments.length === 0 || !this._currentRenderTarget) {\r\n return;\r\n }\r\n\r\n this._mrtAttachments = attachments;\r\n if (this._currentRenderPass) {\r\n // the render pass has already been created, we need to call setMRTAttachments to update the state of the attachments\r\n this._cacheRenderPipeline.setMRTAttachments(attachments);\r\n } else {\r\n // the render pass is not created yet so we don't need to call setMRTAttachments: it will be called as part of the render pass creation (see WebGPUEngine._startRenderTargetRenderPass)\r\n }\r\n };\r\n\r\n WebGPUEngine.prototype.clearAttachments = function (color, attachments, clearColor, clearDepth, clearStencil = false, stencilClearValue = 0): void {\r\n this.bindAttachments(attachments);\r\n this.clear(color, clearColor, clearDepth, clearStencil, stencilClearValue);\r\n };\r\n\r\n WebGPUEngine.prototype.buildTextureLayout = function (textureStatus: boolean[], backBufferLayout = false): number[] {\r\n const result = [];\r\n\r\n if (backBufferLayout) {\r\n result.push(1);\r\n } else {\r\n for (let i = 0; i < textureStatus.length; i++) {\r\n if (textureStatus[i]) {\r\n result.push(i + 1);\r\n } else {\r\n result.push(0);\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n };\r\n\r\n WebGPUEngine.prototype.restoreSingleAttachment = function (): void {\r\n // not sure what to do, probably nothing... This function and restoreSingleAttachmentForRenderTarget are not called in Babylon.js so it's hard to know the use case\r\n };\r\n\r\n WebGPUEngine.prototype.restoreSingleAttachmentForRenderTarget = function (): void {\r\n // not sure what to do, probably nothing... This function and restoreSingleAttachment are not called in Babylon.js so it's hard to know the use case\r\n };\r\n}\r\n"]}
|
|
@@ -2,6 +2,7 @@ import { type IMultiRenderTargetOptions } from "../../../Materials/Textures/mult
|
|
|
2
2
|
import { type Nullable } from "../../../types.js";
|
|
3
3
|
import { type TextureSize } from "../../../Materials/Textures/textureCreationOptions.js";
|
|
4
4
|
import { type RenderTargetWrapper } from "../../renderTargetWrapper.js";
|
|
5
|
+
import { type IColor4Like } from "../../../Maths/math.like.js";
|
|
5
6
|
declare module "../../abstractEngine.pure.js" {
|
|
6
7
|
interface AbstractEngine {
|
|
7
8
|
/**
|
|
@@ -47,6 +48,18 @@ declare module "../../abstractEngine.pure.js" {
|
|
|
47
48
|
* @param attachments gl attachments
|
|
48
49
|
*/
|
|
49
50
|
bindAttachments(attachments: number[]): void;
|
|
51
|
+
/**
|
|
52
|
+
* Clears selected color attachments and optionally the depth/stencil attachments.
|
|
53
|
+
* Attachment formats are handled by the active rendering backend.
|
|
54
|
+
* @param color Clear color
|
|
55
|
+
* @param attachments Attachment layout created by buildTextureLayout
|
|
56
|
+
* @param clearColor Whether color attachments should be cleared
|
|
57
|
+
* @param clearDepth Whether the depth attachment should be cleared
|
|
58
|
+
* @param clearStencil Whether the stencil attachment should be cleared
|
|
59
|
+
* @param stencilClearValue Stencil clear value
|
|
60
|
+
* @internal
|
|
61
|
+
*/
|
|
62
|
+
clearAttachments(color: Nullable<IColor4Like>, attachments: number[], clearColor: boolean, clearDepth: boolean, clearStencil?: boolean, stencilClearValue?: number): void;
|
|
50
63
|
/**
|
|
51
64
|
* Creates a layout object to draw/clear on specific textures in a MRT
|
|
52
65
|
* @param textureStatus textureStatus[i] indicates if the i-th is active
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.multiRender.types.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Engines/WebGPU/Extensions/engine.multiRender.types.ts"],"names":[],"mappings":"","sourcesContent":["import { type IMultiRenderTargetOptions } from \"../../../Materials/Textures/multiRenderTarget\";\r\nimport { type Nullable } from \"../../../types\";\r\nimport { type TextureSize } from \"../../../Materials/Textures/textureCreationOptions\";\r\nimport { type RenderTargetWrapper } from \"../../renderTargetWrapper\";\r\ndeclare module \"../../abstractEngine.pure\" {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n export interface AbstractEngine {\r\n /**\r\n * Unbind a list of render target textures from the webGL context\r\n * This is used only when drawBuffer extension or webGL2 are active\r\n * @param rtWrapper defines the render target wrapper to unbind\r\n * @param disableGenerateMipMaps defines a boolean indicating that mipmaps must not be generated\r\n * @param onBeforeUnbind defines a function which will be called before the effective unbind\r\n */\r\n unBindMultiColorAttachmentFramebuffer(rtWrapper: RenderTargetWrapper, disableGenerateMipMaps: boolean, onBeforeUnbind?: () => void): void;\r\n\r\n /**\r\n * Create a multi render target texture\r\n * @see https://doc.babylonjs.com/setup/support/webGL2#multiple-render-target\r\n * @param size defines the size of the texture\r\n * @param options defines the creation options\r\n * @param initializeBuffers if set to true, the engine will make an initializing call of drawBuffers\r\n * @returns a new render target wrapper ready to render textures\r\n */\r\n createMultipleRenderTarget(size: TextureSize, options: IMultiRenderTargetOptions, initializeBuffers?: boolean): RenderTargetWrapper;\r\n\r\n /**\r\n * Update the sample count for a given multiple render target texture\r\n * @see https://doc.babylonjs.com/setup/support/webGL2#multisample-render-targets\r\n * @param rtWrapper defines the render target wrapper to update\r\n * @param samples defines the sample count to set\r\n * @param initializeBuffers if set to true, the engine will make an initializing call of drawBuffers\r\n * @returns the effective sample count (could be 0 if multisample render targets are not supported)\r\n */\r\n updateMultipleRenderTargetTextureSampleCount(rtWrapper: Nullable<RenderTargetWrapper>, samples: number, initializeBuffers?: boolean): number;\r\n\r\n /**\r\n * Generates mipmaps for the texture of the (multi) render target\r\n * @param texture The render target containing the textures to generate the mipmaps for\r\n */\r\n generateMipMapsMultiFramebuffer(texture: RenderTargetWrapper): void;\r\n\r\n /**\r\n * Resolves the MSAA textures of the (multi) render target into their non-MSAA version.\r\n * Note that if \"texture\" is not a MSAA render target, no resolve is performed.\r\n * @param texture The render target texture containing the MSAA textures to resolve\r\n * @param resolveColors If true, resolve the color textures (default: true) - still subject to texture.resolveMSAAColors\r\n */\r\n resolveMultiFramebuffer(texture: RenderTargetWrapper, resolveColors?: boolean): void;\r\n\r\n /**\r\n * Select a subsets of attachments to draw to.\r\n * @param attachments gl attachments\r\n */\r\n bindAttachments(attachments: number[]): void;\r\n\r\n /**\r\n * Creates a layout object to draw/clear on specific textures in a MRT\r\n * @param textureStatus textureStatus[i] indicates if the i-th is active\r\n * @param backBufferLayout if true, the layout will be built to account for the back buffer only, and textureStatus won't be used\r\n * @returns A layout to be fed to the engine, calling `bindAttachments`.\r\n */\r\n buildTextureLayout(textureStatus: boolean[], backBufferLayout?: boolean): number[];\r\n\r\n /**\r\n * Restores the webgl state to only draw on the main color attachment\r\n * when the frame buffer associated is the canvas frame buffer\r\n */\r\n restoreSingleAttachment(): void;\r\n\r\n /**\r\n * Restores the webgl state to only draw on the main color attachment\r\n * when the frame buffer associated is not the canvas frame buffer\r\n */\r\n restoreSingleAttachmentForRenderTarget(): void;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"engine.multiRender.types.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Engines/WebGPU/Extensions/engine.multiRender.types.ts"],"names":[],"mappings":"","sourcesContent":["import { type IMultiRenderTargetOptions } from \"../../../Materials/Textures/multiRenderTarget\";\r\nimport { type Nullable } from \"../../../types\";\r\nimport { type TextureSize } from \"../../../Materials/Textures/textureCreationOptions\";\r\nimport { type RenderTargetWrapper } from \"../../renderTargetWrapper\";\r\nimport { type IColor4Like } from \"../../../Maths/math.like\";\r\ndeclare module \"../../abstractEngine.pure\" {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n export interface AbstractEngine {\r\n /**\r\n * Unbind a list of render target textures from the webGL context\r\n * This is used only when drawBuffer extension or webGL2 are active\r\n * @param rtWrapper defines the render target wrapper to unbind\r\n * @param disableGenerateMipMaps defines a boolean indicating that mipmaps must not be generated\r\n * @param onBeforeUnbind defines a function which will be called before the effective unbind\r\n */\r\n unBindMultiColorAttachmentFramebuffer(rtWrapper: RenderTargetWrapper, disableGenerateMipMaps: boolean, onBeforeUnbind?: () => void): void;\r\n\r\n /**\r\n * Create a multi render target texture\r\n * @see https://doc.babylonjs.com/setup/support/webGL2#multiple-render-target\r\n * @param size defines the size of the texture\r\n * @param options defines the creation options\r\n * @param initializeBuffers if set to true, the engine will make an initializing call of drawBuffers\r\n * @returns a new render target wrapper ready to render textures\r\n */\r\n createMultipleRenderTarget(size: TextureSize, options: IMultiRenderTargetOptions, initializeBuffers?: boolean): RenderTargetWrapper;\r\n\r\n /**\r\n * Update the sample count for a given multiple render target texture\r\n * @see https://doc.babylonjs.com/setup/support/webGL2#multisample-render-targets\r\n * @param rtWrapper defines the render target wrapper to update\r\n * @param samples defines the sample count to set\r\n * @param initializeBuffers if set to true, the engine will make an initializing call of drawBuffers\r\n * @returns the effective sample count (could be 0 if multisample render targets are not supported)\r\n */\r\n updateMultipleRenderTargetTextureSampleCount(rtWrapper: Nullable<RenderTargetWrapper>, samples: number, initializeBuffers?: boolean): number;\r\n\r\n /**\r\n * Generates mipmaps for the texture of the (multi) render target\r\n * @param texture The render target containing the textures to generate the mipmaps for\r\n */\r\n generateMipMapsMultiFramebuffer(texture: RenderTargetWrapper): void;\r\n\r\n /**\r\n * Resolves the MSAA textures of the (multi) render target into their non-MSAA version.\r\n * Note that if \"texture\" is not a MSAA render target, no resolve is performed.\r\n * @param texture The render target texture containing the MSAA textures to resolve\r\n * @param resolveColors If true, resolve the color textures (default: true) - still subject to texture.resolveMSAAColors\r\n */\r\n resolveMultiFramebuffer(texture: RenderTargetWrapper, resolveColors?: boolean): void;\r\n\r\n /**\r\n * Select a subsets of attachments to draw to.\r\n * @param attachments gl attachments\r\n */\r\n bindAttachments(attachments: number[]): void;\r\n\r\n /**\r\n * Clears selected color attachments and optionally the depth/stencil attachments.\r\n * Attachment formats are handled by the active rendering backend.\r\n * @param color Clear color\r\n * @param attachments Attachment layout created by buildTextureLayout\r\n * @param clearColor Whether color attachments should be cleared\r\n * @param clearDepth Whether the depth attachment should be cleared\r\n * @param clearStencil Whether the stencil attachment should be cleared\r\n * @param stencilClearValue Stencil clear value\r\n * @internal\r\n */\r\n clearAttachments(color: Nullable<IColor4Like>, attachments: number[], clearColor: boolean, clearDepth: boolean, clearStencil?: boolean, stencilClearValue?: number): void;\r\n\r\n /**\r\n * Creates a layout object to draw/clear on specific textures in a MRT\r\n * @param textureStatus textureStatus[i] indicates if the i-th is active\r\n * @param backBufferLayout if true, the layout will be built to account for the back buffer only, and textureStatus won't be used\r\n * @returns A layout to be fed to the engine, calling `bindAttachments`.\r\n */\r\n buildTextureLayout(textureStatus: boolean[], backBufferLayout?: boolean): number[];\r\n\r\n /**\r\n * Restores the webgl state to only draw on the main color attachment\r\n * when the frame buffer associated is the canvas frame buffer\r\n */\r\n restoreSingleAttachment(): void;\r\n\r\n /**\r\n * Restores the webgl state to only draw on the main color attachment\r\n * when the frame buffer associated is not the canvas frame buffer\r\n */\r\n restoreSingleAttachmentForRenderTarget(): void;\r\n }\r\n}\r\n"]}
|
|
@@ -32,8 +32,13 @@ export function RegisterEnginesWebGPUExtensionsEngineQuery() {
|
|
|
32
32
|
};
|
|
33
33
|
ThinWebGPUEngine.prototype.beginOcclusionQuery = function (algorithmType, query) {
|
|
34
34
|
if (this.compatibilityMode) {
|
|
35
|
-
if (this.
|
|
36
|
-
|
|
35
|
+
if (this._occlusionQueryActive) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
const renderPass = this._getCurrentRenderPass();
|
|
39
|
+
if (renderPass && this._occlusionQuery.canBeginQuery(query)) {
|
|
40
|
+
renderPass.beginOcclusionQuery(query);
|
|
41
|
+
this._occlusionQueryActive = true;
|
|
37
42
|
return true;
|
|
38
43
|
}
|
|
39
44
|
}
|
|
@@ -45,7 +50,10 @@ export function RegisterEnginesWebGPUExtensionsEngineQuery() {
|
|
|
45
50
|
};
|
|
46
51
|
ThinWebGPUEngine.prototype.endOcclusionQuery = function () {
|
|
47
52
|
if (this.compatibilityMode) {
|
|
48
|
-
this.
|
|
53
|
+
if (this._occlusionQueryActive) {
|
|
54
|
+
this._currentRenderPass?.endOcclusionQuery();
|
|
55
|
+
this._occlusionQueryActive = false;
|
|
56
|
+
}
|
|
49
57
|
}
|
|
50
58
|
else {
|
|
51
59
|
this._bundleList.addItem(new WebGPURenderItemEndOcclusionQuery());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.query.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Engines/WebGPU/Extensions/engine.query.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,mCAAmC,EAAE,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AAU7G,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB;;;GAGG;AACH,MAAM,UAAU,0CAA0C;IACtD,IAAI,WAAW,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IACD,WAAW,GAAG,IAAI,CAAC;IAEnB,gBAAgB,CAAC,SAAS,CAAC,sBAAsB,GAAG;QAChD,OAAO,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC;IACpD,CAAC,CAAC;IAEF,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,KAAc;QACrE,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;IACnE,CAAC,CAAC;IAEF,gBAAgB,CAAC,SAAS,CAAC,WAAW,GAAG;QACrC,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;IAC9C,CAAC,CAAC;IAEF,gBAAgB,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,KAAqB;QACpE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,KAAe,CAAC,CAAC;QAElD,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;IAEF,gBAAgB,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,KAAqB;QAC/E,OAAO,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,KAAe,CAAC,CAAC;IACxE,CAAC,CAAC;IAEF,gBAAgB,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,KAAqB;QACvE,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,KAAe,CAAC,CAAC;IAChE,CAAC,CAAC;IAEF,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,aAAqB,EAAE,KAAqB;QACnG,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"engine.query.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Engines/WebGPU/Extensions/engine.query.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,mCAAmC,EAAE,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AAU7G,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB;;;GAGG;AACH,MAAM,UAAU,0CAA0C;IACtD,IAAI,WAAW,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IACD,WAAW,GAAG,IAAI,CAAC;IAEnB,gBAAgB,CAAC,SAAS,CAAC,sBAAsB,GAAG;QAChD,OAAO,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC;IACpD,CAAC,CAAC;IAEF,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,KAAc;QACrE,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;IACnE,CAAC,CAAC;IAEF,gBAAgB,CAAC,SAAS,CAAC,WAAW,GAAG;QACrC,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;IAC9C,CAAC,CAAC;IAEF,gBAAgB,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,KAAqB;QACpE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,KAAe,CAAC,CAAC;QAElD,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;IAEF,gBAAgB,CAAC,SAAS,CAAC,sBAAsB,GAAG,UAAU,KAAqB;QAC/E,OAAO,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,KAAe,CAAC,CAAC;IACxE,CAAC,CAAC;IAEF,gBAAgB,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,KAAqB;QACvE,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,KAAe,CAAC,CAAC;IAChE,CAAC,CAAC;IAEF,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,aAAqB,EAAE,KAAqB;QACnG,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC7B,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAChD,IAAI,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAe,CAAC,EAAE,CAAC;gBACpE,UAAU,CAAC,mBAAmB,CAAC,KAAe,CAAC,CAAC;gBAChD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;gBAClC,OAAO,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,mCAAmC,CAAC,KAAe,CAAC,CAAC,CAAC;YACnF,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC;IAEF,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,GAAG;QAC3C,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC7B,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;gBAC7C,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YACvC,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,iCAAiC,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;AACN,CAAC","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { ThinWebGPUEngine } from \"core/Engines/thinWebGPUEngine\";\r\nimport { WebGPURenderItemBeginOcclusionQuery, WebGPURenderItemEndOcclusionQuery } from \"../webgpuBundleList\";\r\nimport { type PerfCounter } from \"../../../Misc/perfCounter\";\r\nimport { type OcclusionQuery } from \"../../../Engines/AbstractEngine/abstractEngine.query.pure\";\r\n\r\n// eslint-disable-next-line import/no-duplicates\r\n\r\n// eslint-disable-next-line import/no-duplicates\r\n\r\nexport {};\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for enginesWebGPUExtensionsEngineQuery.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterEnginesWebGPUExtensionsEngineQuery(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n ThinWebGPUEngine.prototype.getGPUFrameTimeCounter = function (): PerfCounter {\r\n return this._timestampQuery.gpuFrameTimeCounter;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.captureGPUFrameTime = function (value: boolean) {\r\n this._timestampQuery.enable = value && !!this._caps.timerQuery;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.createQuery = function (): OcclusionQuery {\r\n return this._occlusionQuery.createQuery();\r\n };\r\n\r\n ThinWebGPUEngine.prototype.deleteQuery = function (query: OcclusionQuery): ThinWebGPUEngine {\r\n this._occlusionQuery.deleteQuery(query as number);\r\n\r\n return this;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.isQueryResultAvailable = function (query: OcclusionQuery): boolean {\r\n return this._occlusionQuery.isQueryResultAvailable(query as number);\r\n };\r\n\r\n ThinWebGPUEngine.prototype.getQueryResult = function (query: OcclusionQuery): number {\r\n return this._occlusionQuery.getQueryResult(query as number);\r\n };\r\n\r\n ThinWebGPUEngine.prototype.beginOcclusionQuery = function (algorithmType: number, query: OcclusionQuery): boolean {\r\n if (this.compatibilityMode) {\r\n if (this._occlusionQueryActive) {\r\n return false;\r\n }\r\n\r\n const renderPass = this._getCurrentRenderPass();\r\n if (renderPass && this._occlusionQuery.canBeginQuery(query as number)) {\r\n renderPass.beginOcclusionQuery(query as number);\r\n this._occlusionQueryActive = true;\r\n return true;\r\n }\r\n } else {\r\n this._bundleList.addItem(new WebGPURenderItemBeginOcclusionQuery(query as number));\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n ThinWebGPUEngine.prototype.endOcclusionQuery = function (): ThinWebGPUEngine {\r\n if (this.compatibilityMode) {\r\n if (this._occlusionQueryActive) {\r\n this._currentRenderPass?.endOcclusionQuery();\r\n this._occlusionQueryActive = false;\r\n }\r\n } else {\r\n this._bundleList.addItem(new WebGPURenderItemEndOcclusionQuery());\r\n }\r\n return this;\r\n };\r\n}\r\n"]}
|
|
@@ -11,5 +11,6 @@ import "./engine.readTexture.js";
|
|
|
11
11
|
import "./engine.renderTarget.js";
|
|
12
12
|
import "./engine.renderTargetCube.js";
|
|
13
13
|
import "./engine.renderTargetTexture.js";
|
|
14
|
+
export * from "./engine.texture2DArrayImageSource.js";
|
|
14
15
|
import "./engine.videoTexture.js";
|
|
15
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Engines/WebGPU/Extensions/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AAEzC,OAAO,gBAAgB,CAAC;AACxB,OAAO,wBAAwB,CAAC;AAChC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,yBAAyB,CAAC;AACjC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,gBAAgB,CAAC;AACxB,OAAO,qBAAqB,CAAC;AAC7B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,2BAA2B,CAAC;AACnC,OAAO,8BAA8B,CAAC;AACtC,OAAO,uBAAuB,CAAC","sourcesContent":["export * from \"./engine.alphaToCoverage\";\r\n\r\nimport \"./engine.alpha\";\r\nimport \"./engine.computeShader\";\r\nimport \"./engine.cubeTexture\";\r\nimport \"./engine.debugging\";\r\nimport \"./engine.dynamicTexture\";\r\nimport \"./engine.multiRender\";\r\nimport \"./engine.query\";\r\nimport \"./engine.rawTexture\";\r\nimport \"./engine.readTexture\";\r\nimport \"./engine.renderTarget\";\r\nimport \"./engine.renderTargetCube\";\r\nimport \"./engine.renderTargetTexture\";\r\nimport \"./engine.videoTexture\";\r\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Engines/WebGPU/Extensions/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AAEzC,OAAO,gBAAgB,CAAC;AACxB,OAAO,wBAAwB,CAAC;AAChC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,yBAAyB,CAAC;AACjC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,gBAAgB,CAAC;AACxB,OAAO,qBAAqB,CAAC;AAC7B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,2BAA2B,CAAC;AACnC,OAAO,8BAA8B,CAAC;AACtC,cAAc,oCAAoC,CAAC;AACnD,OAAO,uBAAuB,CAAC","sourcesContent":["export * from \"./engine.alphaToCoverage\";\r\n\r\nimport \"./engine.alpha\";\r\nimport \"./engine.computeShader\";\r\nimport \"./engine.cubeTexture\";\r\nimport \"./engine.debugging\";\r\nimport \"./engine.dynamicTexture\";\r\nimport \"./engine.multiRender\";\r\nimport \"./engine.query\";\r\nimport \"./engine.rawTexture\";\r\nimport \"./engine.readTexture\";\r\nimport \"./engine.renderTarget\";\r\nimport \"./engine.renderTargetCube\";\r\nimport \"./engine.renderTargetTexture\";\r\nexport * from \"./engine.texture2DArrayImageSource\";\r\nimport \"./engine.videoTexture\";\r\n"]}
|
|
@@ -12,5 +12,5 @@ export * from "./engine.readTexture.pure.js";
|
|
|
12
12
|
export * from "./engine.renderTarget.pure.js";
|
|
13
13
|
export * from "./engine.renderTargetCube.pure.js";
|
|
14
14
|
export * from "./engine.renderTargetTexture.pure.js";
|
|
15
|
-
export * from "./engine.videoTexture.pure.js";
|
|
16
15
|
export * from "./engine.texture2DArrayImageSource.pure.js";
|
|
16
|
+
export * from "./engine.videoTexture.pure.js";
|
|
@@ -12,6 +12,6 @@ export * from "./engine.readTexture.pure.js";
|
|
|
12
12
|
export * from "./engine.renderTarget.pure.js";
|
|
13
13
|
export * from "./engine.renderTargetCube.pure.js";
|
|
14
14
|
export * from "./engine.renderTargetTexture.pure.js";
|
|
15
|
-
export * from "./engine.videoTexture.pure.js";
|
|
16
15
|
export * from "./engine.texture2DArrayImageSource.pure.js";
|
|
16
|
+
export * from "./engine.videoTexture.pure.js";
|
|
17
17
|
//# sourceMappingURL=pure.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Engines/WebGPU/Extensions/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,
|
|
1
|
+
{"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Engines/WebGPU/Extensions/pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,yCAAyC,CAAC;AACxD,cAAc,4BAA4B,CAAC","sourcesContent":["/** Pure barrel — re-exports only side-effect-free modules */\nexport * from \"./engine.alphaToCoverage.pure\";\nexport * from \"./engine.alpha.pure\";\nexport * from \"./engine.computeShader.pure\";\nexport * from \"./engine.cubeTexture.pure\";\nexport * from \"./engine.debugging.pure\";\nexport * from \"./engine.dynamicTexture.pure\";\nexport * from \"./engine.multiRender.pure\";\nexport * from \"./engine.query.pure\";\nexport * from \"./engine.rawTexture.pure\";\nexport * from \"./engine.readTexture.pure\";\nexport * from \"./engine.renderTarget.pure\";\nexport * from \"./engine.renderTargetCube.pure\";\nexport * from \"./engine.renderTargetTexture.pure\";\nexport * from \"./engine.texture2DArrayImageSource.pure\";\nexport * from \"./engine.videoTexture.pure\";\n"]}
|
|
@@ -60,6 +60,8 @@ export declare class WebGPUBundleList {
|
|
|
60
60
|
private _currentItemIsBundle;
|
|
61
61
|
private _currentBundleList;
|
|
62
62
|
numDrawCalls: number;
|
|
63
|
+
/** @internal */
|
|
64
|
+
get isEmpty(): boolean;
|
|
63
65
|
constructor(device: GPUDevice);
|
|
64
66
|
addBundle(bundle?: GPURenderBundle): void;
|
|
65
67
|
private _finishBundle;
|
|
@@ -90,6 +90,10 @@ class WebGPURenderItemBundles {
|
|
|
90
90
|
}
|
|
91
91
|
/** @internal */
|
|
92
92
|
export class WebGPUBundleList {
|
|
93
|
+
/** @internal */
|
|
94
|
+
get isEmpty() {
|
|
95
|
+
return this._listLength === 0 && !this._bundleEncoder;
|
|
96
|
+
}
|
|
93
97
|
constructor(device) {
|
|
94
98
|
this.numDrawCalls = 0;
|
|
95
99
|
this._device = device;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webgpuBundleList.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/WebGPU/webgpuBundleList.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../../types\";\r\nimport { WebGPUTextureHelper } from \"./webgpuTextureHelper\";\r\n\r\n/** @internal */\r\ninterface IWebGPURenderItem {\r\n run(renderPass: GPURenderPassEncoder): void;\r\n clone(): IWebGPURenderItem;\r\n}\r\n\r\n/** @internal */\r\nexport class WebGPURenderItemViewport implements IWebGPURenderItem {\r\n public x: number;\r\n public y: number;\r\n public w: number;\r\n public h: number;\r\n\r\n public constructor(x: number, y: number, w: number, h: number) {\r\n this.x = Math.floor(x);\r\n this.y = Math.floor(y);\r\n this.w = Math.floor(w);\r\n this.h = Math.floor(h);\r\n }\r\n\r\n public run(renderPass: GPURenderPassEncoder) {\r\n renderPass.setViewport(this.x, this.y, this.w, this.h, 0, 1);\r\n }\r\n\r\n public clone(): WebGPURenderItemViewport {\r\n return new WebGPURenderItemViewport(this.x, this.y, this.w, this.h);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WebGPURenderItemScissor implements IWebGPURenderItem {\r\n public constructor(\r\n public x: number,\r\n public y: number,\r\n public w: number,\r\n public h: number\r\n ) {}\r\n\r\n public run(renderPass: GPURenderPassEncoder) {\r\n renderPass.setScissorRect(this.x, this.y, this.w, this.h);\r\n }\r\n\r\n public clone(): WebGPURenderItemScissor {\r\n return new WebGPURenderItemScissor(this.x, this.y, this.w, this.h);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WebGPURenderItemStencilRef implements IWebGPURenderItem {\r\n public constructor(public ref: number) {}\r\n\r\n public run(renderPass: GPURenderPassEncoder) {\r\n renderPass.setStencilReference(this.ref);\r\n }\r\n\r\n public clone(): WebGPURenderItemStencilRef {\r\n return new WebGPURenderItemStencilRef(this.ref);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WebGPURenderItemBlendColor implements IWebGPURenderItem {\r\n public constructor(public color: Nullable<number>[]) {}\r\n\r\n public run(renderPass: GPURenderPassEncoder) {\r\n renderPass.setBlendConstant(this.color as GPUColor);\r\n }\r\n\r\n public clone(): WebGPURenderItemBlendColor {\r\n return new WebGPURenderItemBlendColor(this.color);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WebGPURenderItemBeginOcclusionQuery implements IWebGPURenderItem {\r\n public constructor(public query: number) {}\r\n\r\n public run(renderPass: GPURenderPassEncoder) {\r\n renderPass.beginOcclusionQuery(this.query);\r\n }\r\n\r\n public clone(): WebGPURenderItemBeginOcclusionQuery {\r\n return new WebGPURenderItemBeginOcclusionQuery(this.query);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WebGPURenderItemEndOcclusionQuery implements IWebGPURenderItem {\r\n public constructor() {}\r\n\r\n public run(renderPass: GPURenderPassEncoder) {\r\n renderPass.endOcclusionQuery();\r\n }\r\n\r\n public clone(): WebGPURenderItemEndOcclusionQuery {\r\n return new WebGPURenderItemEndOcclusionQuery();\r\n }\r\n}\r\n\r\nclass WebGPURenderItemBundles implements IWebGPURenderItem {\r\n public bundles: GPURenderBundle[];\r\n\r\n public constructor() {\r\n this.bundles = [];\r\n }\r\n\r\n public run(renderPass: GPURenderPassEncoder) {\r\n renderPass.executeBundles(this.bundles);\r\n }\r\n\r\n public clone(): WebGPURenderItemBundles {\r\n const cloned = new WebGPURenderItemBundles();\r\n cloned.bundles = this.bundles;\r\n return cloned;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WebGPUBundleList {\r\n private _device: GPUDevice;\r\n private _bundleEncoder: GPURenderBundleEncoder | undefined;\r\n\r\n private _list: IWebGPURenderItem[];\r\n private _listLength: number;\r\n\r\n private _currentItemIsBundle: boolean;\r\n private _currentBundleList: GPURenderBundle[];\r\n\r\n public numDrawCalls = 0;\r\n\r\n public constructor(device: GPUDevice) {\r\n this._device = device;\r\n this._list = new Array(10);\r\n this._listLength = 0;\r\n }\r\n\r\n public addBundle(bundle?: GPURenderBundle): void {\r\n if (!this._currentItemIsBundle) {\r\n const item = new WebGPURenderItemBundles();\r\n\r\n this._list[this._listLength++] = item;\r\n this._currentBundleList = item.bundles;\r\n this._currentItemIsBundle = true;\r\n }\r\n if (bundle) {\r\n this._currentBundleList.push(bundle);\r\n }\r\n }\r\n\r\n private _finishBundle(): void {\r\n if (this._currentItemIsBundle && this._bundleEncoder) {\r\n this._currentBundleList.push(this._bundleEncoder.finish());\r\n this._bundleEncoder = undefined;\r\n this._currentItemIsBundle = false;\r\n }\r\n }\r\n\r\n public addItem(item: IWebGPURenderItem) {\r\n this._finishBundle();\r\n this._list[this._listLength++] = item;\r\n this._currentItemIsBundle = false;\r\n }\r\n\r\n public getBundleEncoder(colorFormats: (GPUTextureFormat | null)[], depthStencilFormat: GPUTextureFormat | undefined, sampleCount: number): GPURenderBundleEncoder {\r\n if (!this._currentItemIsBundle) {\r\n this.addBundle();\r\n this._bundleEncoder = this._device.createRenderBundleEncoder({\r\n colorFormats,\r\n depthStencilFormat,\r\n sampleCount: WebGPUTextureHelper.GetSample(sampleCount),\r\n });\r\n }\r\n return this._bundleEncoder!;\r\n }\r\n\r\n public close(): void {\r\n this._finishBundle();\r\n }\r\n\r\n public run(renderPass: GPURenderPassEncoder) {\r\n this.close();\r\n for (let i = 0; i < this._listLength; ++i) {\r\n this._list[i].run(renderPass);\r\n }\r\n }\r\n\r\n public reset() {\r\n this._listLength = 0;\r\n this._currentItemIsBundle = false;\r\n this.numDrawCalls = 0;\r\n }\r\n\r\n public clone(): WebGPUBundleList {\r\n this.close();\r\n\r\n const cloned = new WebGPUBundleList(this._device);\r\n\r\n cloned._list = new Array(this._listLength);\r\n cloned._listLength = this._listLength;\r\n cloned.numDrawCalls = this.numDrawCalls;\r\n\r\n for (let i = 0; i < this._listLength; ++i) {\r\n cloned._list[i] = this._list[i].clone();\r\n }\r\n\r\n return cloned;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"webgpuBundleList.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/WebGPU/webgpuBundleList.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../../types\";\r\nimport { WebGPUTextureHelper } from \"./webgpuTextureHelper\";\r\n\r\n/** @internal */\r\ninterface IWebGPURenderItem {\r\n run(renderPass: GPURenderPassEncoder): void;\r\n clone(): IWebGPURenderItem;\r\n}\r\n\r\n/** @internal */\r\nexport class WebGPURenderItemViewport implements IWebGPURenderItem {\r\n public x: number;\r\n public y: number;\r\n public w: number;\r\n public h: number;\r\n\r\n public constructor(x: number, y: number, w: number, h: number) {\r\n this.x = Math.floor(x);\r\n this.y = Math.floor(y);\r\n this.w = Math.floor(w);\r\n this.h = Math.floor(h);\r\n }\r\n\r\n public run(renderPass: GPURenderPassEncoder) {\r\n renderPass.setViewport(this.x, this.y, this.w, this.h, 0, 1);\r\n }\r\n\r\n public clone(): WebGPURenderItemViewport {\r\n return new WebGPURenderItemViewport(this.x, this.y, this.w, this.h);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WebGPURenderItemScissor implements IWebGPURenderItem {\r\n public constructor(\r\n public x: number,\r\n public y: number,\r\n public w: number,\r\n public h: number\r\n ) {}\r\n\r\n public run(renderPass: GPURenderPassEncoder) {\r\n renderPass.setScissorRect(this.x, this.y, this.w, this.h);\r\n }\r\n\r\n public clone(): WebGPURenderItemScissor {\r\n return new WebGPURenderItemScissor(this.x, this.y, this.w, this.h);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WebGPURenderItemStencilRef implements IWebGPURenderItem {\r\n public constructor(public ref: number) {}\r\n\r\n public run(renderPass: GPURenderPassEncoder) {\r\n renderPass.setStencilReference(this.ref);\r\n }\r\n\r\n public clone(): WebGPURenderItemStencilRef {\r\n return new WebGPURenderItemStencilRef(this.ref);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WebGPURenderItemBlendColor implements IWebGPURenderItem {\r\n public constructor(public color: Nullable<number>[]) {}\r\n\r\n public run(renderPass: GPURenderPassEncoder) {\r\n renderPass.setBlendConstant(this.color as GPUColor);\r\n }\r\n\r\n public clone(): WebGPURenderItemBlendColor {\r\n return new WebGPURenderItemBlendColor(this.color);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WebGPURenderItemBeginOcclusionQuery implements IWebGPURenderItem {\r\n public constructor(public query: number) {}\r\n\r\n public run(renderPass: GPURenderPassEncoder) {\r\n renderPass.beginOcclusionQuery(this.query);\r\n }\r\n\r\n public clone(): WebGPURenderItemBeginOcclusionQuery {\r\n return new WebGPURenderItemBeginOcclusionQuery(this.query);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WebGPURenderItemEndOcclusionQuery implements IWebGPURenderItem {\r\n public constructor() {}\r\n\r\n public run(renderPass: GPURenderPassEncoder) {\r\n renderPass.endOcclusionQuery();\r\n }\r\n\r\n public clone(): WebGPURenderItemEndOcclusionQuery {\r\n return new WebGPURenderItemEndOcclusionQuery();\r\n }\r\n}\r\n\r\nclass WebGPURenderItemBundles implements IWebGPURenderItem {\r\n public bundles: GPURenderBundle[];\r\n\r\n public constructor() {\r\n this.bundles = [];\r\n }\r\n\r\n public run(renderPass: GPURenderPassEncoder) {\r\n renderPass.executeBundles(this.bundles);\r\n }\r\n\r\n public clone(): WebGPURenderItemBundles {\r\n const cloned = new WebGPURenderItemBundles();\r\n cloned.bundles = this.bundles;\r\n return cloned;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class WebGPUBundleList {\r\n private _device: GPUDevice;\r\n private _bundleEncoder: GPURenderBundleEncoder | undefined;\r\n\r\n private _list: IWebGPURenderItem[];\r\n private _listLength: number;\r\n\r\n private _currentItemIsBundle: boolean;\r\n private _currentBundleList: GPURenderBundle[];\r\n\r\n public numDrawCalls = 0;\r\n\r\n /** @internal */\r\n public get isEmpty(): boolean {\r\n return this._listLength === 0 && !this._bundleEncoder;\r\n }\r\n\r\n public constructor(device: GPUDevice) {\r\n this._device = device;\r\n this._list = new Array(10);\r\n this._listLength = 0;\r\n }\r\n\r\n public addBundle(bundle?: GPURenderBundle): void {\r\n if (!this._currentItemIsBundle) {\r\n const item = new WebGPURenderItemBundles();\r\n\r\n this._list[this._listLength++] = item;\r\n this._currentBundleList = item.bundles;\r\n this._currentItemIsBundle = true;\r\n }\r\n if (bundle) {\r\n this._currentBundleList.push(bundle);\r\n }\r\n }\r\n\r\n private _finishBundle(): void {\r\n if (this._currentItemIsBundle && this._bundleEncoder) {\r\n this._currentBundleList.push(this._bundleEncoder.finish());\r\n this._bundleEncoder = undefined;\r\n this._currentItemIsBundle = false;\r\n }\r\n }\r\n\r\n public addItem(item: IWebGPURenderItem) {\r\n this._finishBundle();\r\n this._list[this._listLength++] = item;\r\n this._currentItemIsBundle = false;\r\n }\r\n\r\n public getBundleEncoder(colorFormats: (GPUTextureFormat | null)[], depthStencilFormat: GPUTextureFormat | undefined, sampleCount: number): GPURenderBundleEncoder {\r\n if (!this._currentItemIsBundle) {\r\n this.addBundle();\r\n this._bundleEncoder = this._device.createRenderBundleEncoder({\r\n colorFormats,\r\n depthStencilFormat,\r\n sampleCount: WebGPUTextureHelper.GetSample(sampleCount),\r\n });\r\n }\r\n return this._bundleEncoder!;\r\n }\r\n\r\n public close(): void {\r\n this._finishBundle();\r\n }\r\n\r\n public run(renderPass: GPURenderPassEncoder) {\r\n this.close();\r\n for (let i = 0; i < this._listLength; ++i) {\r\n this._list[i].run(renderPass);\r\n }\r\n }\r\n\r\n public reset() {\r\n this._listLength = 0;\r\n this._currentItemIsBundle = false;\r\n this.numDrawCalls = 0;\r\n }\r\n\r\n public clone(): WebGPUBundleList {\r\n this.close();\r\n\r\n const cloned = new WebGPUBundleList(this._device);\r\n\r\n cloned._list = new Array(this._listLength);\r\n cloned._listLength = this._listLength;\r\n cloned.numDrawCalls = this.numDrawCalls;\r\n\r\n for (let i = 0; i < this._listLength; ++i) {\r\n cloned._list[i] = this._list[i].clone();\r\n }\r\n\r\n return cloned;\r\n }\r\n}\r\n"]}
|
|
@@ -864,7 +864,8 @@ export class WebGPUCacheRenderPipeline {
|
|
|
864
864
|
};
|
|
865
865
|
const alphaBlend = this._getAphaBlendState(i < this._numAlphaBlendTargetsEnabled ? i : 0);
|
|
866
866
|
const colorBlend = this._getColorBlendState(i < this._numAlphaBlendTargetsEnabled ? i : 0);
|
|
867
|
-
|
|
867
|
+
const isIntegerFormat = format.endsWith("uint") || format.endsWith("sint");
|
|
868
|
+
if (descr.writeMask !== 0 && !isIntegerFormat && alphaBlend && colorBlend) {
|
|
868
869
|
descr.blend = {
|
|
869
870
|
alpha: alphaBlend,
|
|
870
871
|
color: colorBlend,
|
|
@@ -885,7 +886,9 @@ export class WebGPUCacheRenderPipeline {
|
|
|
885
886
|
};
|
|
886
887
|
const alphaBlend = this._getAphaBlendState(0);
|
|
887
888
|
const colorBlend = this._getColorBlendState(0);
|
|
888
|
-
|
|
889
|
+
const format = this._webgpuColorFormat[0];
|
|
890
|
+
const isIntegerFormat = format.endsWith("uint") || format.endsWith("sint");
|
|
891
|
+
if (!isIntegerFormat && alphaBlend && colorBlend) {
|
|
889
892
|
descr.blend = {
|
|
890
893
|
alpha: alphaBlend,
|
|
891
894
|
color: colorBlend,
|