@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
|
@@ -37,6 +37,180 @@ const mipmapVertexSource = `
|
|
|
37
37
|
vertexOutputs.position = vec4f(pos[input.vertexIndex], 0.0, 1.0);
|
|
38
38
|
}
|
|
39
39
|
`;
|
|
40
|
+
const mipmap3DVertexSource = `
|
|
41
|
+
const pos = array<vec2<f32>, 4>( vec2f(-1.0f, 1.0f), vec2f(1.0f, 1.0f), vec2f(-1.0f, -1.0f), vec2f(1.0f, -1.0f));
|
|
42
|
+
const tex = array<vec2<f32>, 4>( vec2f(0.0f, 0.0f), vec2f(1.0f, 0.0f), vec2f(0.0f, 1.0f), vec2f(1.0f, 1.0f));
|
|
43
|
+
|
|
44
|
+
varying vTex: vec2f;
|
|
45
|
+
varying vSlice: f32;
|
|
46
|
+
|
|
47
|
+
@vertex
|
|
48
|
+
fn main(input : VertexInputs) -> FragmentInputs {
|
|
49
|
+
vertexOutputs.vTex = tex[input.vertexIndex];
|
|
50
|
+
vertexOutputs.vSlice = f32(input.instanceIndex);
|
|
51
|
+
vertexOutputs.position = vec4f(pos[input.vertexIndex], 0.0, 1.0);
|
|
52
|
+
}
|
|
53
|
+
`;
|
|
54
|
+
const mipmap3DFragmentSource = `
|
|
55
|
+
var imgSampler: sampler;
|
|
56
|
+
var img: texture_3d<f32>;
|
|
57
|
+
|
|
58
|
+
varying vTex: vec2f;
|
|
59
|
+
varying vSlice: f32;
|
|
60
|
+
|
|
61
|
+
@fragment
|
|
62
|
+
fn main(input: FragmentInputs) -> FragmentOutputs {
|
|
63
|
+
let depth = max(1u, textureDimensions(img, 0).z / 2u);
|
|
64
|
+
fragmentOutputs.color = textureSample(img, imgSampler, vec3f(input.vTex, (input.vSlice + 0.5) / f32(depth)));
|
|
65
|
+
}
|
|
66
|
+
`;
|
|
67
|
+
const mipmap3DLoadFragmentSource = (sampleType) => {
|
|
68
|
+
const integerHelpers = sampleType === "f32"
|
|
69
|
+
? ""
|
|
70
|
+
: `
|
|
71
|
+
${sampleType === "i32"
|
|
72
|
+
? `fn finishSignedDivision(quotient: vec4i, remainder: vec4i, divisor: i32) -> vec4i {
|
|
73
|
+
var result = quotient + remainder / divisor;
|
|
74
|
+
let residual = remainder % divisor;
|
|
75
|
+
for (var channel = 0; channel < 4; channel++) {
|
|
76
|
+
if (result[channel] < 0 && residual[channel] > 0) {
|
|
77
|
+
result[channel] += 1;
|
|
78
|
+
} else if (result[channel] > 0 && residual[channel] < 0) {
|
|
79
|
+
result[channel] -= 1;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return result;
|
|
83
|
+
}`
|
|
84
|
+
: ""}
|
|
85
|
+
|
|
86
|
+
// Carry the exact fractional remainder through X, Y and Z before truncating the result.
|
|
87
|
+
struct Wide {
|
|
88
|
+
low: vec4u,
|
|
89
|
+
high: vec4u,
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
struct IntegerValue {
|
|
93
|
+
whole: vec4<${sampleType}>,
|
|
94
|
+
remainder: Wide,
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
fn addWide(a: Wide, b: Wide) -> Wide {
|
|
98
|
+
let low = a.low + b.low;
|
|
99
|
+
return Wide(low, a.high + b.high + select(vec4u(0), vec4u(1), low < a.low));
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
fn multiplyWide(a: Wide, factor: vec4u) -> Wide {
|
|
103
|
+
let lowFactor = factor & vec4u(65535u);
|
|
104
|
+
let highFactor = factor >> vec4u(16u);
|
|
105
|
+
let lowPart = (a.low & vec4u(65535u)) * lowFactor;
|
|
106
|
+
let middle = (a.low >> vec4u(16u)) * lowFactor;
|
|
107
|
+
let upper = (a.low & vec4u(65535u)) * highFactor;
|
|
108
|
+
let middleSum = (lowPart >> vec4u(16u)) + (middle & vec4u(65535u)) + (upper & vec4u(65535u));
|
|
109
|
+
let low = (middleSum << vec4u(16u)) | (lowPart & vec4u(65535u));
|
|
110
|
+
let high = a.high * factor + (a.low >> vec4u(16u)) * highFactor + (middle >> vec4u(16u)) + (upper >> vec4u(16u)) + (middleSum >> vec4u(16u));
|
|
111
|
+
return Wide(low, high);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
fn interpolateInteger(a: IntegerValue, b: IntegerValue, numerator: i32, divisor: i32, previousDivisor: Wide) -> IntegerValue {
|
|
115
|
+
let n = ${sampleType}(numerator);
|
|
116
|
+
let d = ${sampleType}(divisor);
|
|
117
|
+
let aRemainder = a.whole % d;
|
|
118
|
+
let bRemainder = b.whole % d;
|
|
119
|
+
let weightedRemainder = aRemainder * (d - n) + bRemainder * n;
|
|
120
|
+
let residual = weightedRemainder % d;
|
|
121
|
+
var whole = (a.whole / d) * (d - n) + (b.whole / d) * n + weightedRemainder / d ${sampleType === "i32" ? "- select(vec4i(0), vec4i(1), residual < vec4i(0))" : ""};
|
|
122
|
+
let integerResidual = vec4u(residual ${sampleType === "i32" ? "+ select(vec4i(0), vec4i(d), residual < vec4i(0))" : ""});
|
|
123
|
+
var remainder = addWide(
|
|
124
|
+
addWide(multiplyWide(a.remainder, vec4u(u32(d - n))), multiplyWide(b.remainder, vec4u(u32(n)))),
|
|
125
|
+
multiplyWide(previousDivisor, integerResidual)
|
|
126
|
+
);
|
|
127
|
+
let nextDivisor = multiplyWide(previousDivisor, vec4u(u32(d)));
|
|
128
|
+
for (var channel = 0; channel < 4; channel++) {
|
|
129
|
+
if (remainder.high[channel] > nextDivisor.high[channel] ||
|
|
130
|
+
(remainder.high[channel] == nextDivisor.high[channel] && remainder.low[channel] >= nextDivisor.low[channel])) {
|
|
131
|
+
let borrow = u32(remainder.low[channel] < nextDivisor.low[channel]);
|
|
132
|
+
remainder.low[channel] -= nextDivisor.low[channel];
|
|
133
|
+
remainder.high[channel] -= nextDivisor.high[channel] + borrow;
|
|
134
|
+
whole[channel] += 1;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return IntegerValue(whole, remainder);
|
|
138
|
+
}
|
|
139
|
+
`;
|
|
140
|
+
const reduction = sampleType === "f32"
|
|
141
|
+
? `
|
|
142
|
+
let weight = vec3f(fraction) / vec3f(divisor);
|
|
143
|
+
var color = vec4f(0.0);
|
|
144
|
+
for (var z = 0; z < 2; z++) {
|
|
145
|
+
for (var y = 0; y < 2; y++) {
|
|
146
|
+
for (var x = 0; x < 2; x++) {
|
|
147
|
+
let texel = textureLoad(img, min(origin + vec3i(x, y, z), sourceSize - 1), 0);
|
|
148
|
+
let weighted = select(1.0 - weight.x, weight.x, x == 1) * select(1.0 - weight.y, weight.y, y == 1) * select(1.0 - weight.z, weight.z, z == 1);
|
|
149
|
+
color += texel * weighted;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
fragmentOutputs.color = color;`
|
|
154
|
+
: `
|
|
155
|
+
var color: vec4<${sampleType}>;
|
|
156
|
+
if ((sourceSize.x % 2 == 0 || sourceSize.x == 1) && (sourceSize.y % 2 == 0 || sourceSize.y == 1) && (sourceSize.z % 2 == 0 || sourceSize.z == 1)) {
|
|
157
|
+
var quotient = vec4<${sampleType}>(0);
|
|
158
|
+
var remainder = vec4<${sampleType}>(0);
|
|
159
|
+
for (var z = 0; z < 2; z++) {
|
|
160
|
+
for (var y = 0; y < 2; y++) {
|
|
161
|
+
for (var x = 0; x < 2; x++) {
|
|
162
|
+
let texel = textureLoad(img, min(origin + vec3i(x, y, z), sourceSize - 1), 0);
|
|
163
|
+
quotient += texel / 8;
|
|
164
|
+
remainder += texel % 8;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
color = ${sampleType === "i32" ? "finishSignedDivision(quotient, remainder, 8)" : "quotient + remainder / 8"};
|
|
169
|
+
} else {
|
|
170
|
+
let unitDivisor = Wide(vec4u(1), vec4u(0));
|
|
171
|
+
let rowDivisor = multiplyWide(unitDivisor, vec4u(u32(divisor.x)));
|
|
172
|
+
let planeDivisor = multiplyWide(rowDivisor, vec4u(u32(divisor.y)));
|
|
173
|
+
var planes: array<IntegerValue, 2>;
|
|
174
|
+
for (var z = 0; z < 2; z++) {
|
|
175
|
+
var rows: array<IntegerValue, 2>;
|
|
176
|
+
for (var y = 0; y < 2; y++) {
|
|
177
|
+
let first = textureLoad(img, min(origin + vec3i(0, y, z), sourceSize - 1), 0);
|
|
178
|
+
let second = textureLoad(img, min(origin + vec3i(1, y, z), sourceSize - 1), 0);
|
|
179
|
+
rows[y] = interpolateInteger(IntegerValue(first, Wide(vec4u(0), vec4u(0))), IntegerValue(second, Wide(vec4u(0), vec4u(0))), fraction.x, divisor.x, unitDivisor);
|
|
180
|
+
}
|
|
181
|
+
planes[z] = interpolateInteger(rows[0], rows[1], fraction.y, divisor.y, rowDivisor);
|
|
182
|
+
}
|
|
183
|
+
let reduced = interpolateInteger(planes[0], planes[1], fraction.z, divisor.z, planeDivisor);
|
|
184
|
+
color = reduced.whole;
|
|
185
|
+
${sampleType === "i32"
|
|
186
|
+
? `for (var channel = 0; channel < 4; channel++) {
|
|
187
|
+
if (color[channel] < 0 && (reduced.remainder.high[channel] != 0u || reduced.remainder.low[channel] != 0u)) {
|
|
188
|
+
color[channel] += 1;
|
|
189
|
+
}
|
|
190
|
+
}`
|
|
191
|
+
: ""}
|
|
192
|
+
}
|
|
193
|
+
fragmentOutputs.fragData0 = vec4<${sampleType}>(color);`;
|
|
194
|
+
return `
|
|
195
|
+
var img: texture_3d<${sampleType}>;
|
|
196
|
+
|
|
197
|
+
varying vSlice: f32;
|
|
198
|
+
|
|
199
|
+
${integerHelpers}
|
|
200
|
+
|
|
201
|
+
@fragment
|
|
202
|
+
fn main(input: FragmentInputs) -> FragmentOutputs {
|
|
203
|
+
let sourceSize = vec3i(textureDimensions(img, 0));
|
|
204
|
+
let destinationSize = max(sourceSize / 2, vec3i(1));
|
|
205
|
+
let destination = vec3i(vec2i(input.position.xy), i32(input.vSlice));
|
|
206
|
+
let divisor = destinationSize * 2;
|
|
207
|
+
let sourcePosition = (destination * 2 + 1) * sourceSize - destinationSize;
|
|
208
|
+
let origin = sourcePosition / divisor;
|
|
209
|
+
let fraction = sourcePosition % divisor;
|
|
210
|
+
${reduction}
|
|
211
|
+
}
|
|
212
|
+
`;
|
|
213
|
+
};
|
|
40
214
|
const mipmapFragmentSource = `
|
|
41
215
|
var imgSampler: sampler;
|
|
42
216
|
var img: texture_2d<f32>;
|
|
@@ -220,6 +394,10 @@ var PipelineType;
|
|
|
220
394
|
PipelineType[PipelineType["Clear"] = 2] = "Clear";
|
|
221
395
|
PipelineType[PipelineType["InvertYPremultiplyAlphaWithOfst"] = 3] = "InvertYPremultiplyAlphaWithOfst";
|
|
222
396
|
PipelineType[PipelineType["ResolveDepth"] = 4] = "ResolveDepth";
|
|
397
|
+
PipelineType[PipelineType["MipMap3D"] = 5] = "MipMap3D";
|
|
398
|
+
PipelineType[PipelineType["MipMap3DFloat32"] = 6] = "MipMap3DFloat32";
|
|
399
|
+
PipelineType[PipelineType["MipMap3DSint"] = 7] = "MipMap3DSint";
|
|
400
|
+
PipelineType[PipelineType["MipMap3DUint"] = 8] = "MipMap3DUint";
|
|
223
401
|
})(PipelineType || (PipelineType = {}));
|
|
224
402
|
var VideoPipelineType;
|
|
225
403
|
(function (VideoPipelineType) {
|
|
@@ -232,6 +410,10 @@ const shadersForPipelineType = [
|
|
|
232
410
|
{ vertex: clearVertexSource, fragment: clearFragmentSource },
|
|
233
411
|
{ vertex: invertYPreMultiplyAlphaWithOfstVertexSource, fragment: invertYPreMultiplyAlphaWithOfstFragmentSource },
|
|
234
412
|
{ vertex: resolveDepthVertexSource, fragment: resolveDepthFragmentSource },
|
|
413
|
+
{ vertex: mipmap3DVertexSource, fragment: mipmap3DFragmentSource },
|
|
414
|
+
{ vertex: mipmap3DVertexSource, fragment: mipmap3DLoadFragmentSource("f32") },
|
|
415
|
+
{ vertex: mipmap3DVertexSource, fragment: mipmap3DLoadFragmentSource("i32") },
|
|
416
|
+
{ vertex: mipmap3DVertexSource, fragment: mipmap3DLoadFragmentSource("u32") },
|
|
235
417
|
];
|
|
236
418
|
/**
|
|
237
419
|
* Map a (renderable) texture format (GPUTextureFormat) to an index for fast lookup (in caches for eg)
|
|
@@ -304,6 +486,7 @@ export class WebGPUTextureManager {
|
|
|
304
486
|
renderableTextureFormatToIndex["rg11b10ufloat" /* WebGPUConstants.TextureFormat.RG11B10UFloat */] = renderableTextureFormatToIndex[keys[keys.length - 1]] + 1;
|
|
305
487
|
}
|
|
306
488
|
this._mipmapSampler = device.createSampler({ minFilter: "linear" /* WebGPUConstants.FilterMode.Linear */ });
|
|
489
|
+
this._mipmap3DSampler = device.createSampler({ minFilter: "linear" /* WebGPUConstants.FilterMode.Linear */, magFilter: "linear" /* WebGPUConstants.FilterMode.Linear */ });
|
|
307
490
|
this._videoSampler = device.createSampler({ minFilter: "linear" /* WebGPUConstants.FilterMode.Linear */ });
|
|
308
491
|
this._ubCopyWithOfst = this._bufferManager.createBuffer(4 * 4, WebGPUConstants.BufferUsage.Uniform | WebGPUConstants.BufferUsage.CopyDst, "UBCopyWithOffset").underlyingResource;
|
|
309
492
|
this._getPipeline("rgba8unorm" /* WebGPUConstants.TextureFormat.RGBA8Unorm */);
|
|
@@ -312,15 +495,23 @@ export class WebGPUTextureManager {
|
|
|
312
495
|
_getPipeline(format, type = PipelineType.MipMap, params) {
|
|
313
496
|
const index = type === PipelineType.MipMap
|
|
314
497
|
? 1 << 0
|
|
315
|
-
: type === PipelineType.
|
|
316
|
-
?
|
|
317
|
-
: type === PipelineType.
|
|
318
|
-
? 1 <<
|
|
319
|
-
: type === PipelineType.
|
|
320
|
-
?
|
|
321
|
-
: type === PipelineType.
|
|
322
|
-
? 1 <<
|
|
323
|
-
:
|
|
498
|
+
: type === PipelineType.MipMap3D
|
|
499
|
+
? 1 << 7
|
|
500
|
+
: type === PipelineType.MipMap3DFloat32
|
|
501
|
+
? 1 << 8
|
|
502
|
+
: type === PipelineType.MipMap3DSint
|
|
503
|
+
? 1 << 9
|
|
504
|
+
: type === PipelineType.MipMap3DUint
|
|
505
|
+
? 1 << 10
|
|
506
|
+
: type === PipelineType.InvertYPremultiplyAlpha
|
|
507
|
+
? ((params.invertY ? 1 : 0) << 1) + ((params.premultiplyAlpha ? 1 : 0) << 2)
|
|
508
|
+
: type === PipelineType.Clear
|
|
509
|
+
? 1 << 3
|
|
510
|
+
: type === PipelineType.InvertYPremultiplyAlphaWithOfst
|
|
511
|
+
? ((params.invertY ? 1 : 0) << 4) + ((params.premultiplyAlpha ? 1 : 0) << 5)
|
|
512
|
+
: type === PipelineType.ResolveDepth
|
|
513
|
+
? 1 << 6
|
|
514
|
+
: 0;
|
|
324
515
|
if (!this._pipelines[format]) {
|
|
325
516
|
this._pipelines[format] = [];
|
|
326
517
|
}
|
|
@@ -628,6 +819,9 @@ export class WebGPUTextureManager {
|
|
|
628
819
|
//------------------------------------------------------------------------------
|
|
629
820
|
createTexture(imageBitmap, hasMipmaps = false, generateMipmaps = false, invertY = false, premultiplyAlpha = false, is3D = false, format = "rgba8unorm" /* WebGPUConstants.TextureFormat.RGBA8Unorm */, sampleCount = 1, commandEncoder, usage = -1, additionalUsages = 0, label, mipLevelCount) {
|
|
630
821
|
sampleCount = WebGPUTextureHelper.GetSample(sampleCount);
|
|
822
|
+
if (is3D && WebGPUTextureHelper.IsImageBitmap(imageBitmap)) {
|
|
823
|
+
throw new Error("Uploading an ImageBitmap to a WebGPU 3D texture is not supported.");
|
|
824
|
+
}
|
|
631
825
|
const layerCount = imageBitmap.layers || 1;
|
|
632
826
|
const textureSize = {
|
|
633
827
|
width: imageBitmap.width,
|
|
@@ -636,7 +830,7 @@ export class WebGPUTextureManager {
|
|
|
636
830
|
};
|
|
637
831
|
const renderAttachmentFlag = renderableTextureFormatToIndex[format] ? 16 /* WebGPUConstants.TextureUsage.RenderAttachment */ : 0;
|
|
638
832
|
const isCompressedFormat = WebGPUTextureHelper.IsCompressedFormat(format);
|
|
639
|
-
const maxNumMipLevels = WebGPUTextureHelper.ComputeNumMipmapLevels(imageBitmap.width, imageBitmap.height);
|
|
833
|
+
const maxNumMipLevels = WebGPUTextureHelper.ComputeNumMipmapLevels(imageBitmap.width, imageBitmap.height, is3D ? layerCount : 1);
|
|
640
834
|
const effectiveMipLevelCount = hasMipmaps ? Math.min(mipLevelCount ?? maxNumMipLevels, maxNumMipLevels) : 1;
|
|
641
835
|
const usages = usage >= 0 ? usage : 1 /* WebGPUConstants.TextureUsage.CopySrc */ | 2 /* WebGPUConstants.TextureUsage.CopyDst */ | 4 /* WebGPUConstants.TextureUsage.TextureBinding */;
|
|
642
836
|
additionalUsages |= hasMipmaps && !isCompressedFormat ? 1 /* WebGPUConstants.TextureUsage.CopySrc */ | renderAttachmentFlag : 0;
|
|
@@ -797,6 +991,81 @@ export class WebGPUTextureManager {
|
|
|
797
991
|
commandEncoder = null;
|
|
798
992
|
}
|
|
799
993
|
}
|
|
994
|
+
generate3DMipmaps(gpuOrHdwTexture, mipLevelCount, commandEncoder) {
|
|
995
|
+
const useOwnCommandEncoder = commandEncoder === undefined;
|
|
996
|
+
const hardwareTexture = WebGPUTextureHelper.IsHardwareTexture(gpuOrHdwTexture) ? gpuOrHdwTexture : null;
|
|
997
|
+
const gpuTexture = hardwareTexture ? hardwareTexture.underlyingResource : gpuOrHdwTexture;
|
|
998
|
+
if (!gpuTexture || mipLevelCount <= 1) {
|
|
999
|
+
return;
|
|
1000
|
+
}
|
|
1001
|
+
if (useOwnCommandEncoder) {
|
|
1002
|
+
commandEncoder = this._device.createCommandEncoder({});
|
|
1003
|
+
}
|
|
1004
|
+
commandEncoder.pushDebugGroup(`create 3D mipmaps for "${gpuTexture.label}" (${mipLevelCount} levels)`);
|
|
1005
|
+
const format = gpuTexture.format;
|
|
1006
|
+
const pipelineType = format.endsWith("uint")
|
|
1007
|
+
? PipelineType.MipMap3DUint
|
|
1008
|
+
: format.endsWith("sint")
|
|
1009
|
+
? PipelineType.MipMap3DSint
|
|
1010
|
+
: format === "r32float" /* WebGPUConstants.TextureFormat.R32Float */ || format === "rg32float" /* WebGPUConstants.TextureFormat.RG32Float */ || format === "rgba32float" /* WebGPUConstants.TextureFormat.RGBA32Float */
|
|
1011
|
+
? PipelineType.MipMap3DFloat32
|
|
1012
|
+
: PipelineType.MipMap3D;
|
|
1013
|
+
const [pipeline, bindGroupLayout] = this._getPipeline(format, pipelineType);
|
|
1014
|
+
for (let i = 1; i < mipLevelCount; ++i) {
|
|
1015
|
+
const bindGroup = hardwareTexture?._mipmapGenBindGroup?.[0]?.[i - 1] ??
|
|
1016
|
+
this._device.createBindGroup({
|
|
1017
|
+
layout: bindGroupLayout,
|
|
1018
|
+
entries: [
|
|
1019
|
+
{
|
|
1020
|
+
binding: 0,
|
|
1021
|
+
resource: gpuTexture.createView({
|
|
1022
|
+
format,
|
|
1023
|
+
dimension: "3d" /* WebGPUConstants.TextureViewDimension.E3d */,
|
|
1024
|
+
baseMipLevel: i - 1,
|
|
1025
|
+
mipLevelCount: 1,
|
|
1026
|
+
arrayLayerCount: 1,
|
|
1027
|
+
}),
|
|
1028
|
+
},
|
|
1029
|
+
...(pipelineType === PipelineType.MipMap3D ? [{ binding: 1, resource: this._mipmap3DSampler }] : []),
|
|
1030
|
+
],
|
|
1031
|
+
});
|
|
1032
|
+
if (hardwareTexture) {
|
|
1033
|
+
hardwareTexture._mipmapGenBindGroup = hardwareTexture._mipmapGenBindGroup || [];
|
|
1034
|
+
hardwareTexture._mipmapGenBindGroup[0] = hardwareTexture._mipmapGenBindGroup[0] || [];
|
|
1035
|
+
hardwareTexture._mipmapGenBindGroup[0][i - 1] = bindGroup;
|
|
1036
|
+
}
|
|
1037
|
+
const renderPassDescriptor = {
|
|
1038
|
+
label: `BabylonWebGPUDevice${this._engine.uniqueId}_generate3DMipmaps_${format}_level${i}`,
|
|
1039
|
+
colorAttachments: [
|
|
1040
|
+
{
|
|
1041
|
+
view: gpuTexture.createView({
|
|
1042
|
+
format,
|
|
1043
|
+
dimension: "3d" /* WebGPUConstants.TextureViewDimension.E3d */,
|
|
1044
|
+
baseMipLevel: i,
|
|
1045
|
+
mipLevelCount: 1,
|
|
1046
|
+
arrayLayerCount: 1,
|
|
1047
|
+
}),
|
|
1048
|
+
depthSlice: 0,
|
|
1049
|
+
loadOp: "load" /* WebGPUConstants.LoadOp.Load */,
|
|
1050
|
+
storeOp: "store" /* WebGPUConstants.StoreOp.Store */,
|
|
1051
|
+
},
|
|
1052
|
+
],
|
|
1053
|
+
};
|
|
1054
|
+
const depth = Math.max(1, gpuTexture.depthOrArrayLayers >> i);
|
|
1055
|
+
for (let slice = 0; slice < depth; ++slice) {
|
|
1056
|
+
renderPassDescriptor.colorAttachments[0].depthSlice = slice;
|
|
1057
|
+
const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);
|
|
1058
|
+
passEncoder.setPipeline(pipeline);
|
|
1059
|
+
passEncoder.setBindGroup(0, bindGroup);
|
|
1060
|
+
passEncoder.draw(4, 1, 0, slice);
|
|
1061
|
+
passEncoder.end();
|
|
1062
|
+
}
|
|
1063
|
+
}
|
|
1064
|
+
commandEncoder.popDebugGroup();
|
|
1065
|
+
if (useOwnCommandEncoder) {
|
|
1066
|
+
this._device.queue.submit([commandEncoder.finish()]);
|
|
1067
|
+
}
|
|
1068
|
+
}
|
|
800
1069
|
createGPUTextureForInternalTexture(texture, width, height, depth, creationFlags) {
|
|
801
1070
|
if (!texture._hardwareTexture) {
|
|
802
1071
|
texture._hardwareTexture = new WebGPUHardwareTexture(this._engine);
|
|
@@ -845,7 +1114,11 @@ export class WebGPUTextureManager {
|
|
|
845
1114
|
mipmapCount = texture._maxLodLevel;
|
|
846
1115
|
}
|
|
847
1116
|
else {
|
|
848
|
-
mipmapCount = hasMipMaps ? WebGPUTextureHelper.ComputeNumMipmapLevels(width, height) : 1;
|
|
1117
|
+
mipmapCount = hasMipMaps ? WebGPUTextureHelper.ComputeNumMipmapLevels(width, height, texture.is3D ? layerCount : 1) : 1;
|
|
1118
|
+
}
|
|
1119
|
+
if (texture.is3D) {
|
|
1120
|
+
mipmapCount = hasMipMaps ? Math.min(Math.max(1, mipmapCount), WebGPUTextureHelper.ComputeNumMipmapLevels(width, height, layerCount)) : 1;
|
|
1121
|
+
texture.mipLevelCount = mipmapCount;
|
|
849
1122
|
}
|
|
850
1123
|
if (texture.isCube) {
|
|
851
1124
|
const gpuTexture = this.createCubeTexture({ width, height, layers: layerCount }, texture.generateMipMaps, texture.generateMipMaps, texture.invertY, false, gpuTextureWrapper.format, 1, this._commandEncoderForCreation, gpuTextureWrapper.textureUsages, gpuTextureWrapper.textureAdditionalUsages, label);
|
|
@@ -865,7 +1138,7 @@ export class WebGPUTextureManager {
|
|
|
865
1138
|
}, isStorageTexture);
|
|
866
1139
|
}
|
|
867
1140
|
else {
|
|
868
|
-
const gpuTexture = this.createTexture({ width, height, layers: layerCount }, hasMipMaps, texture.generateMipMaps, texture.invertY, false, texture.is3D, gpuTextureWrapper.format, 1, this._commandEncoderForCreation, gpuTextureWrapper.textureUsages, gpuTextureWrapper.textureAdditionalUsages, label);
|
|
1141
|
+
const gpuTexture = this.createTexture({ width, height, layers: layerCount }, hasMipMaps, texture.generateMipMaps, texture.invertY, false, texture.is3D, gpuTextureWrapper.format, 1, this._commandEncoderForCreation, gpuTextureWrapper.textureUsages, gpuTextureWrapper.textureAdditionalUsages, label, texture.is3D ? mipmapCount : undefined);
|
|
869
1142
|
gpuTextureWrapper.set(gpuTexture);
|
|
870
1143
|
const arrayLayerCount = texture.is3D ? 1 : layerCount;
|
|
871
1144
|
const format = WebGPUTextureHelper.GetDepthFormatOnly(gpuTextureWrapper.format);
|
|
@@ -1024,7 +1297,7 @@ export class WebGPUTextureManager {
|
|
|
1024
1297
|
}
|
|
1025
1298
|
}
|
|
1026
1299
|
updateMipLevelCountForInternalTexture(texture, mipLevelCount) {
|
|
1027
|
-
const maxNumMipLevels = WebGPUTextureHelper.ComputeNumMipmapLevels(texture.width, texture.height);
|
|
1300
|
+
const maxNumMipLevels = WebGPUTextureHelper.ComputeNumMipmapLevels(texture.width, texture.height, texture.is3D ? texture.depth : 1);
|
|
1028
1301
|
if (mipLevelCount !== undefined) {
|
|
1029
1302
|
texture.mipLevelCount = Math.min(Math.max(1, mipLevelCount), maxNumMipLevels);
|
|
1030
1303
|
}
|