@babylonjs/core 7.32.0 → 7.32.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Behaviors/Cameras/autoRotationBehavior.js +1 -0
- package/Behaviors/Cameras/autoRotationBehavior.js.map +1 -1
- package/Cameras/camera.d.ts +5 -2
- package/Cameras/camera.js +1 -0
- package/Cameras/camera.js.map +1 -1
- package/Decorators/nodeDecorator.d.ts +9 -1
- package/Decorators/nodeDecorator.js +8 -0
- package/Decorators/nodeDecorator.js.map +1 -1
- package/Engines/Extensions/engine.multiRender.js +40 -53
- package/Engines/Extensions/engine.multiRender.js.map +1 -1
- package/Engines/Extensions/engine.renderTarget.js +20 -8
- package/Engines/Extensions/engine.renderTarget.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.debugging.js +16 -7
- package/Engines/WebGPU/Extensions/engine.debugging.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.js +43 -44
- package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.renderTarget.js +8 -6
- package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
- package/Engines/WebGPU/webgpuHardwareTexture.d.ts +3 -3
- package/Engines/WebGPU/webgpuHardwareTexture.js +12 -9
- package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.js +25 -19
- package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureManager.d.ts +1 -1
- package/Engines/WebGPU/webgpuTextureManager.js +5 -3
- package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
- package/Engines/abstractEngine.d.ts +6 -1
- package/Engines/abstractEngine.js +2 -2
- package/Engines/abstractEngine.js.map +1 -1
- package/Engines/constants.d.ts +6 -1
- package/Engines/constants.js +6 -1
- package/Engines/constants.js.map +1 -1
- package/Engines/renderTargetWrapper.d.ts +7 -0
- package/Engines/renderTargetWrapper.js +15 -0
- package/Engines/renderTargetWrapper.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +3 -1
- package/Engines/webgpuEngine.js +9 -8
- package/Engines/webgpuEngine.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.d.ts +47 -0
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.js +113 -0
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.d.ts +62 -0
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.js +171 -0
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.d.ts +51 -0
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.js +127 -0
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.d.ts +67 -0
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.js +187 -0
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.d.ts +77 -0
- package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.js +232 -0
- package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.d.ts +47 -0
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.js +113 -0
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/Rendering/cullObjectsBlock.d.ts +41 -0
- package/FrameGraph/Node/Blocks/Rendering/cullObjectsBlock.js +79 -0
- package/FrameGraph/Node/Blocks/Rendering/cullObjectsBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.d.ts +119 -0
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js +451 -0
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.d.ts +63 -0
- package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.js +154 -0
- package/FrameGraph/Node/Blocks/Rendering/objectRendererBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/Teleport/teleportInBlock.d.ts +59 -0
- package/FrameGraph/Node/Blocks/Teleport/teleportInBlock.js +131 -0
- package/FrameGraph/Node/Blocks/Teleport/teleportInBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/Teleport/teleportOutBlock.d.ts +49 -0
- package/FrameGraph/Node/Blocks/Teleport/teleportOutBlock.js +107 -0
- package/FrameGraph/Node/Blocks/Teleport/teleportOutBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/Textures/clearBlock.d.ts +50 -0
- package/FrameGraph/Node/Blocks/Textures/clearBlock.js +125 -0
- package/FrameGraph/Node/Blocks/Textures/clearBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.d.ts +38 -0
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.js +71 -0
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/Textures/generateMipmapsBlock.d.ts +34 -0
- package/FrameGraph/Node/Blocks/Textures/generateMipmapsBlock.js +59 -0
- package/FrameGraph/Node/Blocks/Textures/generateMipmapsBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/elbowBlock.d.ts +28 -0
- package/FrameGraph/Node/Blocks/elbowBlock.js +47 -0
- package/FrameGraph/Node/Blocks/elbowBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/index.d.ts +17 -0
- package/FrameGraph/Node/Blocks/index.js +18 -0
- package/FrameGraph/Node/Blocks/index.js.map +1 -0
- package/FrameGraph/Node/Blocks/inputBlock.d.ts +94 -0
- package/FrameGraph/Node/Blocks/inputBlock.js +270 -0
- package/FrameGraph/Node/Blocks/inputBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/outputBlock.d.ts +30 -0
- package/FrameGraph/Node/Blocks/outputBlock.js +51 -0
- package/FrameGraph/Node/Blocks/outputBlock.js.map +1 -0
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.d.ts +110 -0
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.js +78 -0
- package/FrameGraph/Node/Types/nodeRenderGraphTypes.js.map +1 -0
- package/FrameGraph/Node/nodeRenderGraph.d.ts +196 -0
- package/FrameGraph/Node/nodeRenderGraph.js +614 -0
- package/FrameGraph/Node/nodeRenderGraph.js.map +1 -0
- package/FrameGraph/Node/nodeRenderGraphBlock.d.ts +190 -0
- package/FrameGraph/Node/nodeRenderGraphBlock.js +495 -0
- package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -0
- package/FrameGraph/Node/nodeRenderGraphBlockConnectionPoint.d.ts +143 -0
- package/FrameGraph/Node/nodeRenderGraphBlockConnectionPoint.js +275 -0
- package/FrameGraph/Node/nodeRenderGraphBlockConnectionPoint.js.map +1 -0
- package/FrameGraph/Node/nodeRenderGraphBuildState.d.ts +21 -0
- package/FrameGraph/Node/nodeRenderGraphBuildState.js +35 -0
- package/FrameGraph/Node/nodeRenderGraphBuildState.js.map +1 -0
- package/FrameGraph/Passes/cullPass.d.ts +28 -0
- package/FrameGraph/Passes/cullPass.js +38 -0
- package/FrameGraph/Passes/cullPass.js.map +1 -0
- package/FrameGraph/Passes/pass.d.ts +14 -0
- package/FrameGraph/Passes/pass.js +20 -0
- package/FrameGraph/Passes/pass.js.map +1 -0
- package/FrameGraph/Passes/renderPass.d.ts +49 -0
- package/FrameGraph/Passes/renderPass.js +72 -0
- package/FrameGraph/Passes/renderPass.js.map +1 -0
- package/FrameGraph/Tasks/PostProcesses/blackAndWhiteTask.d.ts +16 -0
- package/FrameGraph/Tasks/PostProcesses/blackAndWhiteTask.js +17 -0
- package/FrameGraph/Tasks/PostProcesses/blackAndWhiteTask.js.map +1 -0
- package/FrameGraph/Tasks/PostProcesses/bloomMergeTask.d.ts +12 -0
- package/FrameGraph/Tasks/PostProcesses/bloomMergeTask.js +21 -0
- package/FrameGraph/Tasks/PostProcesses/bloomMergeTask.js.map +1 -0
- package/FrameGraph/Tasks/PostProcesses/bloomTask.d.ts +54 -0
- package/FrameGraph/Tasks/PostProcesses/bloomTask.js +114 -0
- package/FrameGraph/Tasks/PostProcesses/bloomTask.js.map +1 -0
- package/FrameGraph/Tasks/PostProcesses/blurTask.d.ts +17 -0
- package/FrameGraph/Tasks/PostProcesses/blurTask.js +24 -0
- package/FrameGraph/Tasks/PostProcesses/blurTask.js.map +1 -0
- package/FrameGraph/Tasks/PostProcesses/circleOfConfusionTask.d.ts +30 -0
- package/FrameGraph/Tasks/PostProcesses/circleOfConfusionTask.js +35 -0
- package/FrameGraph/Tasks/PostProcesses/circleOfConfusionTask.js.map +1 -0
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.d.ts +12 -0
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js +26 -0
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldBlurTask.js.map +1 -0
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.d.ts +12 -0
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.js +29 -0
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldMergeTask.js.map +1 -0
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.d.ts +65 -0
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js +134 -0
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js.map +1 -0
- package/FrameGraph/Tasks/PostProcesses/extractHighlightsTask.d.ts +16 -0
- package/FrameGraph/Tasks/PostProcesses/extractHighlightsTask.js +17 -0
- package/FrameGraph/Tasks/PostProcesses/extractHighlightsTask.js.map +1 -0
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.d.ts +41 -0
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.js +64 -0
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.js.map +1 -0
- package/FrameGraph/Tasks/Rendering/cullObjectsTask.d.ts +28 -0
- package/FrameGraph/Tasks/Rendering/cullObjectsTask.js +52 -0
- package/FrameGraph/Tasks/Rendering/cullObjectsTask.js.map +1 -0
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +145 -0
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +259 -0
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -0
- package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +66 -0
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js +127 -0
- package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -0
- package/FrameGraph/Tasks/Texture/clearTextureTask.d.ts +34 -0
- package/FrameGraph/Tasks/Texture/clearTextureTask.js +42 -0
- package/FrameGraph/Tasks/Texture/clearTextureTask.js.map +1 -0
- package/FrameGraph/Tasks/Texture/copyToBackbufferColorTask.d.ts +12 -0
- package/FrameGraph/Tasks/Texture/copyToBackbufferColorTask.js +23 -0
- package/FrameGraph/Tasks/Texture/copyToBackbufferColorTask.js.map +1 -0
- package/FrameGraph/Tasks/Texture/copyToTextureTask.d.ts +26 -0
- package/FrameGraph/Tasks/Texture/copyToTextureTask.js +31 -0
- package/FrameGraph/Tasks/Texture/copyToTextureTask.js.map +1 -0
- package/FrameGraph/Tasks/Texture/generateMipMapsTask.d.ts +22 -0
- package/FrameGraph/Tasks/Texture/generateMipMapsTask.js +34 -0
- package/FrameGraph/Tasks/Texture/generateMipMapsTask.js.map +1 -0
- package/FrameGraph/frameGraph.d.ts +143 -0
- package/FrameGraph/frameGraph.js +275 -0
- package/FrameGraph/frameGraph.js.map +1 -0
- package/FrameGraph/frameGraphContext.d.ts +5 -0
- package/FrameGraph/frameGraphContext.js +6 -0
- package/FrameGraph/frameGraphContext.js.map +1 -0
- package/FrameGraph/frameGraphObjectList.d.ts +15 -0
- package/FrameGraph/frameGraphObjectList.js +7 -0
- package/FrameGraph/frameGraphObjectList.js.map +1 -0
- package/FrameGraph/frameGraphRenderContext.d.ts +110 -0
- package/FrameGraph/frameGraphRenderContext.js +237 -0
- package/FrameGraph/frameGraphRenderContext.js.map +1 -0
- package/FrameGraph/frameGraphTask.d.ts +49 -0
- package/FrameGraph/frameGraphTask.js +117 -0
- package/FrameGraph/frameGraphTask.js.map +1 -0
- package/FrameGraph/frameGraphTextureManager.d.ts +50 -0
- package/FrameGraph/frameGraphTextureManager.js +277 -0
- package/FrameGraph/frameGraphTextureManager.js.map +1 -0
- package/FrameGraph/frameGraphTypes.d.ts +59 -0
- package/FrameGraph/frameGraphTypes.js +9 -0
- package/FrameGraph/frameGraphTypes.js.map +1 -0
- package/FrameGraph/index.d.ts +28 -0
- package/FrameGraph/index.js +30 -0
- package/FrameGraph/index.js.map +1 -0
- package/Gamepads/gamepadSceneComponent.d.ts +0 -1
- package/Gamepads/gamepadSceneComponent.js +1 -7
- package/Gamepads/gamepadSceneComponent.js.map +1 -1
- package/Gizmos/boundingBoxGizmo.d.ts +7 -0
- package/Gizmos/boundingBoxGizmo.js +19 -6
- package/Gizmos/boundingBoxGizmo.js.map +1 -1
- package/Inputs/scene.inputManager.d.ts +3 -1
- package/Inputs/scene.inputManager.js +20 -8
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Layers/layer.d.ts +1 -1
- package/Layers/layer.js +1 -1
- package/Layers/layer.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.d.ts +4 -0
- package/Materials/PBR/pbrBaseMaterial.js +8 -0
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/Textures/dynamicTexture.d.ts +32 -2
- package/Materials/Textures/dynamicTexture.js +13 -18
- package/Materials/Textures/dynamicTexture.js.map +1 -1
- package/Materials/Textures/index.d.ts +1 -0
- package/Materials/Textures/index.js +1 -0
- package/Materials/Textures/index.js.map +1 -1
- package/Materials/Textures/mirrorTexture.js +0 -6
- package/Materials/Textures/mirrorTexture.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.d.ts +20 -8
- package/Materials/Textures/multiRenderTarget.js +2 -0
- package/Materials/Textures/multiRenderTarget.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.d.ts +8 -1
- package/Materials/Textures/renderTargetTexture.js +28 -10
- package/Materials/Textures/renderTargetTexture.js.map +1 -1
- package/Materials/Textures/textureCreationOptions.d.ts +20 -2
- package/Materials/Textures/textureCreationOptions.js +20 -1
- package/Materials/Textures/textureCreationOptions.js.map +1 -1
- package/Materials/effectRenderer.d.ts +132 -14
- package/Materials/effectRenderer.js +229 -33
- package/Materials/effectRenderer.js.map +1 -1
- package/Materials/index.d.ts +1 -0
- package/Materials/index.js +1 -0
- package/Materials/index.js.map +1 -1
- package/Materials/materialHelper.functions.js +2 -0
- package/Materials/materialHelper.functions.js.map +1 -1
- package/Materials/materialHelper.geometryrendering.d.ts +122 -0
- package/Materials/materialHelper.geometryrendering.js +259 -0
- package/Materials/materialHelper.geometryrendering.js.map +1 -0
- package/Materials/standardMaterial.d.ts +4 -0
- package/Materials/standardMaterial.js +8 -0
- package/Materials/standardMaterial.js.map +1 -1
- package/Maths/index.d.ts +1 -0
- package/Maths/index.js +1 -0
- package/Maths/index.js.map +1 -1
- package/Meshes/Builders/greasedLineBuilder.d.ts +1 -1
- package/Meshes/Node/Blocks/geometryOptimizeBlock.d.ts +22 -1
- package/Meshes/Node/Blocks/geometryOptimizeBlock.js +39 -0
- package/Meshes/Node/Blocks/geometryOptimizeBlock.js.map +1 -1
- package/Misc/copyTextureToTexture.d.ts +3 -2
- package/Misc/copyTextureToTexture.js +11 -5
- package/Misc/copyTextureToTexture.js.map +1 -1
- package/PostProcesses/blackAndWhitePostProcess.d.ts +5 -3
- package/PostProcesses/blackAndWhitePostProcess.js +24 -19
- package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
- package/PostProcesses/bloomEffect.d.ts +7 -5
- package/PostProcesses/bloomEffect.js +49 -23
- package/PostProcesses/bloomEffect.js.map +1 -1
- package/PostProcesses/bloomMergePostProcess.d.ts +5 -5
- package/PostProcesses/bloomMergePostProcess.js +28 -19
- package/PostProcesses/bloomMergePostProcess.js.map +1 -1
- package/PostProcesses/blurPostProcess.d.ts +7 -43
- package/PostProcesses/blurPostProcess.js +47 -185
- package/PostProcesses/blurPostProcess.js.map +1 -1
- package/PostProcesses/circleOfConfusionPostProcess.d.ts +13 -6
- package/PostProcesses/circleOfConfusionPostProcess.js +59 -38
- package/PostProcesses/circleOfConfusionPostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldBlurPostProcess.d.ts +2 -6
- package/PostProcesses/depthOfFieldBlurPostProcess.js +14 -11
- package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldEffect.d.ts +5 -2
- package/PostProcesses/depthOfFieldEffect.js +53 -45
- package/PostProcesses/depthOfFieldEffect.js.map +1 -1
- package/PostProcesses/depthOfFieldMergePostProcess.d.ts +0 -1
- package/PostProcesses/depthOfFieldMergePostProcess.js +18 -12
- package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
- package/PostProcesses/extractHighlightsPostProcess.d.ts +8 -4
- package/PostProcesses/extractHighlightsPostProcess.js +35 -22
- package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
- package/PostProcesses/index.d.ts +6 -0
- package/PostProcesses/index.js +6 -0
- package/PostProcesses/index.js.map +1 -1
- package/PostProcesses/postProcess.d.ts +15 -70
- package/PostProcesses/postProcess.js +80 -97
- package/PostProcesses/postProcess.js.map +1 -1
- package/PostProcesses/thinBlackAndWhitePostProcess.d.ts +28 -0
- package/PostProcesses/thinBlackAndWhitePostProcess.js +50 -0
- package/PostProcesses/thinBlackAndWhitePostProcess.js.map +1 -0
- package/PostProcesses/thinBloomEffect.d.ts +49 -0
- package/PostProcesses/thinBloomEffect.js +59 -0
- package/PostProcesses/thinBloomEffect.js.map +1 -0
- package/PostProcesses/thinBloomMergePostProcess.d.ts +15 -0
- package/PostProcesses/thinBloomMergePostProcess.js +38 -0
- package/PostProcesses/thinBloomMergePostProcess.js.map +1 -0
- package/PostProcesses/thinBlurPostProcess.d.ts +89 -0
- package/PostProcesses/thinBlurPostProcess.js +242 -0
- package/PostProcesses/thinBlurPostProcess.js.map +1 -0
- package/PostProcesses/thinCircleOfConfusionPostProcess.d.ts +62 -0
- package/PostProcesses/thinCircleOfConfusionPostProcess.js +81 -0
- package/PostProcesses/thinCircleOfConfusionPostProcess.js.map +1 -0
- package/PostProcesses/thinDepthOfFieldBlurPostProcess.d.ts +8 -0
- package/PostProcesses/thinDepthOfFieldBlurPostProcess.js +13 -0
- package/PostProcesses/thinDepthOfFieldBlurPostProcess.js.map +1 -0
- package/PostProcesses/thinDepthOfFieldEffect.d.ts +70 -0
- package/PostProcesses/thinDepthOfFieldEffect.js +115 -0
- package/PostProcesses/thinDepthOfFieldEffect.js.map +1 -0
- package/PostProcesses/thinDepthOfFieldMergePostProcess.d.ts +11 -0
- package/PostProcesses/thinDepthOfFieldMergePostProcess.js +30 -0
- package/PostProcesses/thinDepthOfFieldMergePostProcess.js.map +1 -0
- package/PostProcesses/thinExtractHighlightsPostProcess.d.ts +30 -0
- package/PostProcesses/thinExtractHighlightsPostProcess.js +55 -0
- package/PostProcesses/thinExtractHighlightsPostProcess.js.map +1 -0
- package/Rendering/depthPeelingRenderer.js +2 -2
- package/Rendering/depthPeelingRenderer.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObject.js +4 -4
- package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockPrePass.d.ts +5 -0
- package/Shaders/ShadersInclude/pbrBlockPrePass.js +75 -0
- package/Shaders/ShadersInclude/pbrBlockPrePass.js.map +1 -0
- package/Shaders/ShadersInclude/prePassVertex.js +1 -2
- package/Shaders/ShadersInclude/prePassVertex.js.map +1 -1
- package/Shaders/circleOfConfusion.fragment.js +9 -1
- package/Shaders/circleOfConfusion.fragment.js.map +1 -1
- package/Shaders/colorCorrection.fragment.js +1 -0
- package/Shaders/colorCorrection.fragment.js.map +1 -1
- package/Shaders/default.fragment.js +17 -25
- package/Shaders/default.fragment.js.map +1 -1
- package/Shaders/default.vertex.js +4 -6
- package/Shaders/default.vertex.js.map +1 -1
- package/Shaders/pbr.fragment.d.ts +1 -0
- package/Shaders/pbr.fragment.js +2 -74
- package/Shaders/pbr.fragment.js.map +1 -1
- package/Shaders/pbr.vertex.js +3 -3
- package/Shaders/pbr.vertex.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js +100 -0
- package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/prePassVertex.js +1 -2
- package/ShadersWGSL/ShadersInclude/prePassVertex.js.map +1 -1
- package/ShadersWGSL/background.vertex.js +1 -1
- package/ShadersWGSL/background.vertex.js.map +1 -1
- package/ShadersWGSL/circleOfConfusion.fragment.js +10 -2
- package/ShadersWGSL/circleOfConfusion.fragment.js.map +1 -1
- package/ShadersWGSL/default.fragment.js +20 -31
- package/ShadersWGSL/default.fragment.js.map +1 -1
- package/ShadersWGSL/default.vertex.js +4 -5
- package/ShadersWGSL/default.vertex.js.map +1 -1
- package/ShadersWGSL/glowMapGeneration.fragment.js +1 -1
- package/ShadersWGSL/glowMapGeneration.fragment.js.map +1 -1
- package/ShadersWGSL/glowMapGeneration.vertex.js +1 -1
- package/ShadersWGSL/glowMapGeneration.vertex.js.map +1 -1
- package/ShadersWGSL/pbr.fragment.d.ts +1 -0
- package/ShadersWGSL/pbr.fragment.js +2 -100
- package/ShadersWGSL/pbr.fragment.js.map +1 -1
- package/ShadersWGSL/pbr.vertex.js +4 -2
- package/ShadersWGSL/pbr.vertex.js.map +1 -1
- package/XR/features/WebXRRawCameraAccess.js +1 -1
- package/XR/features/WebXRRawCameraAccess.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/scene.d.ts +19 -2
- package/scene.js +110 -13
- package/scene.js.map +1 -1
- package/sceneComponent.d.ts +0 -1
- package/sceneComponent.js +0 -1
- package/sceneComponent.js.map +1 -1
- package/types.d.ts +12 -0
- package/types.js.map +1 -1
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
|
|
2
|
+
import { EffectRenderer } from "../Materials/effectRenderer.js";
|
|
3
|
+
import { CopyTextureToTexture } from "../Misc/copyTextureToTexture.js";
|
|
4
|
+
import { FrameGraphContext } from "./frameGraphContext.js";
|
|
5
|
+
import { backbufferColorTextureHandle, backbufferDepthStencilTextureHandle } from "./frameGraphTypes.js";
|
|
6
|
+
/**
|
|
7
|
+
* Frame graph context used render passes.
|
|
8
|
+
* @experimental
|
|
9
|
+
*/
|
|
10
|
+
export class FrameGraphRenderContext extends FrameGraphContext {
|
|
11
|
+
/** @internal */
|
|
12
|
+
constructor(_engine, _textureManager) {
|
|
13
|
+
super();
|
|
14
|
+
this._engine = _engine;
|
|
15
|
+
this._textureManager = _textureManager;
|
|
16
|
+
this._debugMessageHasBeenPushed = false;
|
|
17
|
+
this._renderTargetIsBound = true;
|
|
18
|
+
this._effectRenderer = new EffectRenderer(this._engine);
|
|
19
|
+
this._copyTexture = new CopyTextureToTexture(this._engine);
|
|
20
|
+
this._currentRenderTargetHandle = backbufferColorTextureHandle;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Checks whether a texture handle points to the backbuffer's color or depth texture
|
|
24
|
+
* @param handle The handle to check
|
|
25
|
+
* @returns True if the handle points to the backbuffer's color or depth texture, otherwise false
|
|
26
|
+
*/
|
|
27
|
+
isBackbuffer(handle) {
|
|
28
|
+
return this._textureManager.isBackbuffer(handle);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Checks whether a texture handle points to the backbuffer's color texture
|
|
32
|
+
* @param handle The handle to check
|
|
33
|
+
* @returns True if the handle points to the backbuffer's color texture, otherwise false
|
|
34
|
+
*/
|
|
35
|
+
isBackbufferColor(handle) {
|
|
36
|
+
return this._textureManager.isBackbufferColor(handle);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Checks whether a texture handle points to the backbuffer's depth texture
|
|
40
|
+
* @param handle The handle to check
|
|
41
|
+
* @returns True if the handle points to the backbuffer's depth texture, otherwise false
|
|
42
|
+
*/
|
|
43
|
+
isBackbufferDepthStencil(handle) {
|
|
44
|
+
return this._textureManager.isBackbufferDepthStencil(handle);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Clears the current render buffer or the current render target (if any is set up)
|
|
48
|
+
* @param color Defines the color to use
|
|
49
|
+
* @param backBuffer Defines if the back buffer must be cleared
|
|
50
|
+
* @param depth Defines if the depth buffer must be cleared
|
|
51
|
+
* @param stencil Defines if the stencil buffer must be cleared
|
|
52
|
+
*/
|
|
53
|
+
clear(color, backBuffer, depth, stencil) {
|
|
54
|
+
this._applyRenderTarget();
|
|
55
|
+
this._engine.clear(color, backBuffer, depth, stencil);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Clears the color attachments of the current render target
|
|
59
|
+
* @param color Defines the color to use
|
|
60
|
+
* @param attachments The attachments to clear
|
|
61
|
+
*/
|
|
62
|
+
clearColorAttachments(color, attachments) {
|
|
63
|
+
this._applyRenderTarget();
|
|
64
|
+
this._engine.bindAttachments(attachments);
|
|
65
|
+
this._engine.clear(color, true, false, false);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Binds the attachments to the current render target
|
|
69
|
+
* @param attachments The attachments to bind
|
|
70
|
+
*/
|
|
71
|
+
bindAttachments(attachments) {
|
|
72
|
+
this._applyRenderTarget();
|
|
73
|
+
this._engine.bindAttachments(attachments);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Generates mipmaps for the current render target
|
|
77
|
+
*/
|
|
78
|
+
generateMipMaps() {
|
|
79
|
+
const texture = this._textureManager.getTextureFromHandle(this._currentRenderTargetHandle);
|
|
80
|
+
if (!texture) {
|
|
81
|
+
// Texture is backbuffer, no need to generate mipmaps
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (this._renderTargetIsBound) {
|
|
85
|
+
// we can't generate the mipmaps if the texture is bound as a render target
|
|
86
|
+
this._flushDebugMessages();
|
|
87
|
+
this._engine.unBindFramebuffer(texture);
|
|
88
|
+
this._renderTargetIsBound = false;
|
|
89
|
+
}
|
|
90
|
+
this._engine.generateMipmaps(texture.texture);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Sets the texture sampling mode for a given texture handle
|
|
94
|
+
* @param handle Handle of the texture to set the sampling mode for
|
|
95
|
+
* @param samplingMode Sampling mode to set
|
|
96
|
+
*/
|
|
97
|
+
setTextureSamplingMode(handle, samplingMode) {
|
|
98
|
+
const internalTexture = this._textureManager.getTextureFromHandle(handle)?.texture;
|
|
99
|
+
if (internalTexture && internalTexture.samplingMode !== samplingMode) {
|
|
100
|
+
this._engine.updateTextureSamplingMode(samplingMode, internalTexture);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Binds a texture handle to a given effect (resolves the handle to a texture and binds it to the effect)
|
|
105
|
+
* @param effect The effect to bind the texture to
|
|
106
|
+
* @param name The name of the texture in the effect
|
|
107
|
+
* @param handle The handle of the texture to bind
|
|
108
|
+
*/
|
|
109
|
+
bindTextureHandle(effect, name, handle) {
|
|
110
|
+
const texture = this._textureManager.getTextureFromHandle(handle);
|
|
111
|
+
if (texture) {
|
|
112
|
+
effect._bindTexture(name, texture.texture);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Sets the depth states for the current render target
|
|
117
|
+
* @param depthTest If true, depth testing is enabled
|
|
118
|
+
* @param depthWrite If true, depth writing is enabled
|
|
119
|
+
*/
|
|
120
|
+
setDepthStates(depthTest, depthWrite) {
|
|
121
|
+
this._engine.setDepthBuffer(depthTest);
|
|
122
|
+
this._engine.setDepthWrite(depthWrite);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Applies a full-screen effect to the current render target
|
|
126
|
+
* @param drawWrapper The draw wrapper containing the effect to apply
|
|
127
|
+
* @param customBindings The custom bindings to use when applying the effect (optional)
|
|
128
|
+
* @returns True if the effect was applied, otherwise false (effect not ready)
|
|
129
|
+
*/
|
|
130
|
+
applyFullScreenEffect(drawWrapper, customBindings) {
|
|
131
|
+
if (!drawWrapper.effect?.isReady()) {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
this._applyRenderTarget();
|
|
135
|
+
const engineDepthMask = this._engine.getDepthWrite(); // for some reasons, depthWrite is not restored by EffectRenderer.restoreStates
|
|
136
|
+
this._effectRenderer.saveStates();
|
|
137
|
+
this._effectRenderer.setViewport();
|
|
138
|
+
this._engine.enableEffect(drawWrapper);
|
|
139
|
+
this._engine.setState(false);
|
|
140
|
+
this._engine.setDepthBuffer(false);
|
|
141
|
+
this._engine.setDepthWrite(false);
|
|
142
|
+
this._effectRenderer.bindBuffers(drawWrapper.effect);
|
|
143
|
+
customBindings?.();
|
|
144
|
+
this._effectRenderer.draw();
|
|
145
|
+
this._effectRenderer.restoreStates();
|
|
146
|
+
this._engine.setDepthWrite(engineDepthMask);
|
|
147
|
+
this._engine.setAlphaMode(0);
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Copies a texture to the current render target
|
|
152
|
+
* @param sourceTexture The source texture to copy from
|
|
153
|
+
* @param forceCopyToBackbuffer If true, the copy will be done to the back buffer regardless of the current render target
|
|
154
|
+
*/
|
|
155
|
+
copyTexture(sourceTexture, forceCopyToBackbuffer = false) {
|
|
156
|
+
if (forceCopyToBackbuffer) {
|
|
157
|
+
this._bindRenderTarget();
|
|
158
|
+
}
|
|
159
|
+
this._applyRenderTarget();
|
|
160
|
+
this._copyTexture.copy(this._textureManager.getTextureFromHandle(sourceTexture).texture);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Renders a RenderTargetTexture or a layer
|
|
164
|
+
* @param object The RenderTargetTexture/Layer to render
|
|
165
|
+
*/
|
|
166
|
+
render(object) {
|
|
167
|
+
this._applyRenderTarget();
|
|
168
|
+
object.render();
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Binds a render target texture so that upcoming draw calls will render to it
|
|
172
|
+
* Note: it is a lazy operation, so the render target will only be bound when needed. This way, it is possible to call
|
|
173
|
+
* this method several times with different render targets without incurring the cost of binding if no draw calls are made
|
|
174
|
+
* @internal
|
|
175
|
+
*/
|
|
176
|
+
_bindRenderTarget(renderTargetHandle = backbufferColorTextureHandle, debugMessage) {
|
|
177
|
+
if (renderTargetHandle === this._currentRenderTargetHandle) {
|
|
178
|
+
this._flushDebugMessages();
|
|
179
|
+
if (debugMessage !== undefined) {
|
|
180
|
+
this._engine._debugPushGroup?.(debugMessage, 2);
|
|
181
|
+
this._debugMessageWhenTargetBound = undefined;
|
|
182
|
+
this._debugMessageHasBeenPushed = true;
|
|
183
|
+
}
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
this._currentRenderTargetHandle = renderTargetHandle;
|
|
187
|
+
this._debugMessageWhenTargetBound = debugMessage;
|
|
188
|
+
this._renderTargetIsBound = false;
|
|
189
|
+
}
|
|
190
|
+
/** @internal */
|
|
191
|
+
_flushDebugMessages() {
|
|
192
|
+
if (this._debugMessageHasBeenPushed) {
|
|
193
|
+
this._engine._debugPopGroup?.(2);
|
|
194
|
+
this._debugMessageHasBeenPushed = false;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/** @internal */
|
|
198
|
+
_shareDepth(srcRenderTargetHandle, dstRenderTargetHandle) {
|
|
199
|
+
const srcTexture = this._textureManager.getTextureFromHandle(srcRenderTargetHandle);
|
|
200
|
+
const dstTexture = this._textureManager.getTextureFromHandle(dstRenderTargetHandle);
|
|
201
|
+
if (srcTexture && dstTexture) {
|
|
202
|
+
srcTexture.shareDepth(dstTexture);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
_applyRenderTarget() {
|
|
206
|
+
if (this._renderTargetIsBound) {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
const handle = this._currentRenderTargetHandle;
|
|
210
|
+
const textureSlot = this._textureManager._textures.get(handle);
|
|
211
|
+
const renderTarget = textureSlot.texture;
|
|
212
|
+
this._flushDebugMessages();
|
|
213
|
+
if (!renderTarget) {
|
|
214
|
+
if (handle === backbufferColorTextureHandle || textureSlot.refHandle === backbufferColorTextureHandle) {
|
|
215
|
+
this._engine.restoreDefaultFramebuffer();
|
|
216
|
+
}
|
|
217
|
+
else if (handle === backbufferDepthStencilTextureHandle || textureSlot.refHandle === backbufferDepthStencilTextureHandle) {
|
|
218
|
+
this._engine.restoreDefaultFramebuffer();
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
this._engine.bindFramebuffer(renderTarget);
|
|
223
|
+
}
|
|
224
|
+
if (this._debugMessageWhenTargetBound !== undefined) {
|
|
225
|
+
this._engine._debugPushGroup?.(this._debugMessageWhenTargetBound, 2);
|
|
226
|
+
this._debugMessageWhenTargetBound = undefined;
|
|
227
|
+
this._debugMessageHasBeenPushed = true;
|
|
228
|
+
}
|
|
229
|
+
this._renderTargetIsBound = true;
|
|
230
|
+
}
|
|
231
|
+
/** @internal */
|
|
232
|
+
_dispose() {
|
|
233
|
+
this._effectRenderer.dispose();
|
|
234
|
+
this._copyTexture.dispose();
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=frameGraphRenderContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frameGraphRenderContext.js","sourceRoot":"","sources":["../../../../dev/core/src/FrameGraph/frameGraphRenderContext.ts"],"names":[],"mappings":"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","sourcesContent":["// eslint-disable-next-line import/no-internal-modules\r\nimport type { Nullable, AbstractEngine, DrawWrapper, IColor4Like, Layer, FrameGraphTextureHandle, Effect, FrameGraphTextureManager, RenderTargetTexture } from \"core/index\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { EffectRenderer } from \"../Materials/effectRenderer\";\r\nimport { CopyTextureToTexture } from \"../Misc/copyTextureToTexture\";\r\nimport { FrameGraphContext } from \"./frameGraphContext\";\r\nimport { backbufferColorTextureHandle, backbufferDepthStencilTextureHandle } from \"./frameGraphTypes\";\r\n\r\n/**\r\n * Frame graph context used render passes.\r\n * @experimental\r\n */\r\nexport class FrameGraphRenderContext extends FrameGraphContext {\r\n private readonly _effectRenderer: EffectRenderer;\r\n private _currentRenderTargetHandle: FrameGraphTextureHandle;\r\n private _debugMessageWhenTargetBound: string | undefined;\r\n private _debugMessageHasBeenPushed = false;\r\n private _renderTargetIsBound = true;\r\n private readonly _copyTexture: CopyTextureToTexture;\r\n\r\n /** @internal */\r\n constructor(\r\n private readonly _engine: AbstractEngine,\r\n private readonly _textureManager: FrameGraphTextureManager\r\n ) {\r\n super();\r\n this._effectRenderer = new EffectRenderer(this._engine);\r\n this._copyTexture = new CopyTextureToTexture(this._engine);\r\n this._currentRenderTargetHandle = backbufferColorTextureHandle;\r\n }\r\n\r\n /**\r\n * Checks whether a texture handle points to the backbuffer's color or depth texture\r\n * @param handle The handle to check\r\n * @returns True if the handle points to the backbuffer's color or depth texture, otherwise false\r\n */\r\n public isBackbuffer(handle: FrameGraphTextureHandle): boolean {\r\n return this._textureManager.isBackbuffer(handle);\r\n }\r\n\r\n /**\r\n * Checks whether a texture handle points to the backbuffer's color texture\r\n * @param handle The handle to check\r\n * @returns True if the handle points to the backbuffer's color texture, otherwise false\r\n */\r\n public isBackbufferColor(handle: FrameGraphTextureHandle): boolean {\r\n return this._textureManager.isBackbufferColor(handle);\r\n }\r\n\r\n /**\r\n * Checks whether a texture handle points to the backbuffer's depth texture\r\n * @param handle The handle to check\r\n * @returns True if the handle points to the backbuffer's depth texture, otherwise false\r\n */\r\n public isBackbufferDepthStencil(handle: FrameGraphTextureHandle): boolean {\r\n return this._textureManager.isBackbufferDepthStencil(handle);\r\n }\r\n\r\n /**\r\n * Clears the current render buffer or the current render target (if any is set up)\r\n * @param color Defines the color to use\r\n * @param backBuffer Defines if the back buffer must be cleared\r\n * @param depth Defines if the depth buffer must be cleared\r\n * @param stencil Defines if the stencil buffer must be cleared\r\n */\r\n public clear(color: Nullable<IColor4Like>, backBuffer: boolean, depth: boolean, stencil?: boolean): void {\r\n this._applyRenderTarget();\r\n this._engine.clear(color, backBuffer, depth, stencil);\r\n }\r\n\r\n /**\r\n * Clears the color attachments of the current render target\r\n * @param color Defines the color to use\r\n * @param attachments The attachments to clear\r\n */\r\n public clearColorAttachments(color: Nullable<IColor4Like>, attachments: number[]): void {\r\n this._applyRenderTarget();\r\n this._engine.bindAttachments(attachments);\r\n this._engine.clear(color, true, false, false);\r\n }\r\n\r\n /**\r\n * Binds the attachments to the current render target\r\n * @param attachments The attachments to bind\r\n */\r\n public bindAttachments(attachments: number[]): void {\r\n this._applyRenderTarget();\r\n this._engine.bindAttachments(attachments);\r\n }\r\n\r\n /**\r\n * Generates mipmaps for the current render target\r\n */\r\n public generateMipMaps(): void {\r\n const texture = this._textureManager.getTextureFromHandle(this._currentRenderTargetHandle);\r\n if (!texture) {\r\n // Texture is backbuffer, no need to generate mipmaps\r\n return;\r\n }\r\n if (this._renderTargetIsBound) {\r\n // we can't generate the mipmaps if the texture is bound as a render target\r\n this._flushDebugMessages();\r\n this._engine.unBindFramebuffer(texture);\r\n this._renderTargetIsBound = false;\r\n }\r\n this._engine.generateMipmaps(texture.texture!);\r\n }\r\n\r\n /**\r\n * Sets the texture sampling mode for a given texture handle\r\n * @param handle Handle of the texture to set the sampling mode for\r\n * @param samplingMode Sampling mode to set\r\n */\r\n public setTextureSamplingMode(handle: FrameGraphTextureHandle, samplingMode: number): void {\r\n const internalTexture = this._textureManager.getTextureFromHandle(handle)?.texture!;\r\n if (internalTexture && internalTexture.samplingMode !== samplingMode) {\r\n this._engine.updateTextureSamplingMode(samplingMode, internalTexture);\r\n }\r\n }\r\n\r\n /**\r\n * Binds a texture handle to a given effect (resolves the handle to a texture and binds it to the effect)\r\n * @param effect The effect to bind the texture to\r\n * @param name The name of the texture in the effect\r\n * @param handle The handle of the texture to bind\r\n */\r\n public bindTextureHandle(effect: Effect, name: string, handle: FrameGraphTextureHandle): void {\r\n const texture = this._textureManager.getTextureFromHandle(handle);\r\n if (texture) {\r\n effect._bindTexture(name, texture.texture!);\r\n }\r\n }\r\n\r\n /**\r\n * Sets the depth states for the current render target\r\n * @param depthTest If true, depth testing is enabled\r\n * @param depthWrite If true, depth writing is enabled\r\n */\r\n public setDepthStates(depthTest: boolean, depthWrite: boolean): void {\r\n this._engine.setDepthBuffer(depthTest);\r\n this._engine.setDepthWrite(depthWrite);\r\n }\r\n\r\n /**\r\n * Applies a full-screen effect to the current render target\r\n * @param drawWrapper The draw wrapper containing the effect to apply\r\n * @param customBindings The custom bindings to use when applying the effect (optional)\r\n * @returns True if the effect was applied, otherwise false (effect not ready)\r\n */\r\n public applyFullScreenEffect(drawWrapper: DrawWrapper, customBindings?: () => void): boolean {\r\n if (!drawWrapper.effect?.isReady()) {\r\n return false;\r\n }\r\n\r\n this._applyRenderTarget();\r\n\r\n const engineDepthMask = this._engine.getDepthWrite(); // for some reasons, depthWrite is not restored by EffectRenderer.restoreStates\r\n\r\n this._effectRenderer.saveStates();\r\n this._effectRenderer.setViewport();\r\n\r\n this._engine.enableEffect(drawWrapper);\r\n this._engine.setState(false);\r\n this._engine.setDepthBuffer(false);\r\n this._engine.setDepthWrite(false);\r\n\r\n this._effectRenderer.bindBuffers(drawWrapper.effect);\r\n customBindings?.();\r\n this._effectRenderer.draw();\r\n this._effectRenderer.restoreStates();\r\n this._engine.setDepthWrite(engineDepthMask);\r\n this._engine.setAlphaMode(Constants.ALPHA_DISABLE);\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Copies a texture to the current render target\r\n * @param sourceTexture The source texture to copy from\r\n * @param forceCopyToBackbuffer If true, the copy will be done to the back buffer regardless of the current render target\r\n */\r\n public copyTexture(sourceTexture: FrameGraphTextureHandle, forceCopyToBackbuffer = false): void {\r\n if (forceCopyToBackbuffer) {\r\n this._bindRenderTarget();\r\n }\r\n this._applyRenderTarget();\r\n this._copyTexture.copy(this._textureManager.getTextureFromHandle(sourceTexture)!.texture!);\r\n }\r\n\r\n /**\r\n * Renders a RenderTargetTexture or a layer\r\n * @param object The RenderTargetTexture/Layer to render\r\n */\r\n public render(object: Layer | RenderTargetTexture): void {\r\n this._applyRenderTarget();\r\n object.render();\r\n }\r\n\r\n /**\r\n * Binds a render target texture so that upcoming draw calls will render to it\r\n * Note: it is a lazy operation, so the render target will only be bound when needed. This way, it is possible to call\r\n * this method several times with different render targets without incurring the cost of binding if no draw calls are made\r\n * @internal\r\n */\r\n public _bindRenderTarget(renderTargetHandle: FrameGraphTextureHandle = backbufferColorTextureHandle, debugMessage?: string) {\r\n if (renderTargetHandle === this._currentRenderTargetHandle) {\r\n this._flushDebugMessages();\r\n if (debugMessage !== undefined) {\r\n this._engine._debugPushGroup?.(debugMessage, 2);\r\n this._debugMessageWhenTargetBound = undefined;\r\n this._debugMessageHasBeenPushed = true;\r\n }\r\n return;\r\n }\r\n this._currentRenderTargetHandle = renderTargetHandle;\r\n this._debugMessageWhenTargetBound = debugMessage;\r\n this._renderTargetIsBound = false;\r\n }\r\n\r\n /** @internal */\r\n public _flushDebugMessages() {\r\n if (this._debugMessageHasBeenPushed) {\r\n this._engine._debugPopGroup?.(2);\r\n this._debugMessageHasBeenPushed = false;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public _shareDepth(srcRenderTargetHandle: FrameGraphTextureHandle, dstRenderTargetHandle: FrameGraphTextureHandle) {\r\n const srcTexture = this._textureManager.getTextureFromHandle(srcRenderTargetHandle);\r\n const dstTexture = this._textureManager.getTextureFromHandle(dstRenderTargetHandle);\r\n\r\n if (srcTexture && dstTexture) {\r\n srcTexture.shareDepth(dstTexture);\r\n }\r\n }\r\n\r\n private _applyRenderTarget() {\r\n if (this._renderTargetIsBound) {\r\n return;\r\n }\r\n\r\n const handle = this._currentRenderTargetHandle;\r\n const textureSlot = this._textureManager._textures.get(handle)!;\r\n\r\n const renderTarget = textureSlot.texture;\r\n\r\n this._flushDebugMessages();\r\n\r\n if (!renderTarget) {\r\n if (handle === backbufferColorTextureHandle || textureSlot.refHandle === backbufferColorTextureHandle) {\r\n this._engine.restoreDefaultFramebuffer();\r\n } else if (handle === backbufferDepthStencilTextureHandle || textureSlot.refHandle === backbufferDepthStencilTextureHandle) {\r\n this._engine.restoreDefaultFramebuffer();\r\n }\r\n } else {\r\n this._engine.bindFramebuffer(renderTarget);\r\n }\r\n\r\n if (this._debugMessageWhenTargetBound !== undefined) {\r\n this._engine._debugPushGroup?.(this._debugMessageWhenTargetBound, 2);\r\n this._debugMessageWhenTargetBound = undefined;\r\n this._debugMessageHasBeenPushed = true;\r\n }\r\n\r\n this._renderTargetIsBound = true;\r\n }\r\n\r\n /** @internal */\r\n public _dispose() {\r\n this._effectRenderer.dispose();\r\n this._copyTexture.dispose();\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { FrameGraph, IFrameGraphPass } from "../index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Represents a task in a frame graph.
|
|
4
|
+
* @experimental
|
|
5
|
+
*/
|
|
6
|
+
export declare abstract class FrameGraphTask {
|
|
7
|
+
protected _frameGraph: FrameGraph;
|
|
8
|
+
private _passes;
|
|
9
|
+
private _passesDisabled;
|
|
10
|
+
protected _name: string;
|
|
11
|
+
/**
|
|
12
|
+
* The name of the task.
|
|
13
|
+
*/
|
|
14
|
+
get name(): string;
|
|
15
|
+
set name(value: string);
|
|
16
|
+
protected _disabled: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Whether the task is disabled.
|
|
19
|
+
*/
|
|
20
|
+
get disabled(): boolean;
|
|
21
|
+
set disabled(value: boolean);
|
|
22
|
+
/**
|
|
23
|
+
* Records the task in the frame graph. Use this function to add content (render passes, ...) to the task.
|
|
24
|
+
*/
|
|
25
|
+
abstract record(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Checks if the task is ready to be executed.
|
|
28
|
+
* @returns True if the task is ready to be executed, else false.
|
|
29
|
+
*/
|
|
30
|
+
isReady(): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Disposes of the task.
|
|
33
|
+
*/
|
|
34
|
+
dispose(): void;
|
|
35
|
+
/**
|
|
36
|
+
* Constructs a new frame graph task.
|
|
37
|
+
* @param name The name of the task.
|
|
38
|
+
* @param frameGraph The frame graph this task is associated with.
|
|
39
|
+
*/
|
|
40
|
+
constructor(name: string, frameGraph: FrameGraph);
|
|
41
|
+
/** @internal */
|
|
42
|
+
_reset(): void;
|
|
43
|
+
/** @internal */
|
|
44
|
+
_addPass(pass: IFrameGraphPass, disabled: boolean): void;
|
|
45
|
+
/** @internal */
|
|
46
|
+
_checkTask(): void;
|
|
47
|
+
/** @internal */
|
|
48
|
+
_getPasses(): IFrameGraphPass[];
|
|
49
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { FrameGraphCullPass } from "./Passes/cullPass.js";
|
|
2
|
+
import { FrameGraphRenderPass } from "./Passes/renderPass.js";
|
|
3
|
+
/**
|
|
4
|
+
* Represents a task in a frame graph.
|
|
5
|
+
* @experimental
|
|
6
|
+
*/
|
|
7
|
+
export class FrameGraphTask {
|
|
8
|
+
/**
|
|
9
|
+
* The name of the task.
|
|
10
|
+
*/
|
|
11
|
+
get name() {
|
|
12
|
+
return this._name;
|
|
13
|
+
}
|
|
14
|
+
set name(value) {
|
|
15
|
+
this._name = value;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Whether the task is disabled.
|
|
19
|
+
*/
|
|
20
|
+
get disabled() {
|
|
21
|
+
return this._disabled;
|
|
22
|
+
}
|
|
23
|
+
set disabled(value) {
|
|
24
|
+
this._disabled = value;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Checks if the task is ready to be executed.
|
|
28
|
+
* @returns True if the task is ready to be executed, else false.
|
|
29
|
+
*/
|
|
30
|
+
isReady() {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Disposes of the task.
|
|
35
|
+
*/
|
|
36
|
+
dispose() {
|
|
37
|
+
this._reset();
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Constructs a new frame graph task.
|
|
41
|
+
* @param name The name of the task.
|
|
42
|
+
* @param frameGraph The frame graph this task is associated with.
|
|
43
|
+
*/
|
|
44
|
+
constructor(name, frameGraph) {
|
|
45
|
+
this._passes = [];
|
|
46
|
+
this._passesDisabled = [];
|
|
47
|
+
this._disabled = false;
|
|
48
|
+
this.name = name;
|
|
49
|
+
this._frameGraph = frameGraph;
|
|
50
|
+
this._reset();
|
|
51
|
+
}
|
|
52
|
+
/** @internal */
|
|
53
|
+
_reset() {
|
|
54
|
+
this._passes.length = 0;
|
|
55
|
+
this._passesDisabled.length = 0;
|
|
56
|
+
}
|
|
57
|
+
/** @internal */
|
|
58
|
+
_addPass(pass, disabled) {
|
|
59
|
+
if (disabled) {
|
|
60
|
+
this._passesDisabled.push(pass);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
this._passes.push(pass);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/** @internal */
|
|
67
|
+
_checkTask() {
|
|
68
|
+
let outputTexture = null;
|
|
69
|
+
let outputDepthTexture = null;
|
|
70
|
+
let outputObjectList;
|
|
71
|
+
for (const pass of this._passes) {
|
|
72
|
+
const errMsg = pass._isValid();
|
|
73
|
+
if (errMsg) {
|
|
74
|
+
throw new Error(`Pass "${pass.name}" is not valid. ${errMsg}`);
|
|
75
|
+
}
|
|
76
|
+
if (FrameGraphRenderPass.IsRenderPass(pass)) {
|
|
77
|
+
outputTexture = this._frameGraph.getTexture(pass.renderTarget);
|
|
78
|
+
outputDepthTexture = pass.renderTargetDepth !== undefined ? this._frameGraph.getTexture(pass.renderTargetDepth) : null;
|
|
79
|
+
}
|
|
80
|
+
else if (FrameGraphCullPass.IsCullPass(pass)) {
|
|
81
|
+
outputObjectList = pass.objectList;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
let disabledOutputTexture = null;
|
|
85
|
+
let disabledOutputDepthTexture = null;
|
|
86
|
+
let disabledOutputObjectList;
|
|
87
|
+
for (const pass of this._passesDisabled) {
|
|
88
|
+
const errMsg = pass._isValid();
|
|
89
|
+
if (errMsg) {
|
|
90
|
+
throw new Error(`Pass "${pass.name}" is not valid. ${errMsg}`);
|
|
91
|
+
}
|
|
92
|
+
if (FrameGraphRenderPass.IsRenderPass(pass)) {
|
|
93
|
+
disabledOutputTexture = this._frameGraph.getTexture(pass.renderTarget);
|
|
94
|
+
disabledOutputDepthTexture = pass.renderTargetDepth !== undefined ? this._frameGraph.getTexture(pass.renderTargetDepth) : null;
|
|
95
|
+
}
|
|
96
|
+
else if (FrameGraphCullPass.IsCullPass(pass)) {
|
|
97
|
+
disabledOutputObjectList = pass.objectList;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (this._passesDisabled.length > 0) {
|
|
101
|
+
if (outputTexture !== disabledOutputTexture) {
|
|
102
|
+
throw new Error(`The output texture of the task "${this.name}" is different when it is enabled or disabled.`);
|
|
103
|
+
}
|
|
104
|
+
if (outputDepthTexture !== disabledOutputDepthTexture) {
|
|
105
|
+
throw new Error(`The output depth texture of the task "${this.name}" is different when it is enabled or disabled.`);
|
|
106
|
+
}
|
|
107
|
+
if (outputObjectList !== disabledOutputObjectList) {
|
|
108
|
+
throw new Error(`The output object list of the task "${this.name}" is different when it is enabled or disabled.`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/** @internal */
|
|
113
|
+
_getPasses() {
|
|
114
|
+
return this.disabled && this._passesDisabled.length > 0 ? this._passesDisabled : this._passes;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=frameGraphTask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frameGraphTask.js","sourceRoot":"","sources":["../../../../dev/core/src/FrameGraph/frameGraphTask.ts"],"names":[],"mappings":"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","sourcesContent":["// eslint-disable-next-line import/no-internal-modules\r\nimport type { RenderTargetWrapper, FrameGraph, FrameGraphObjectList, IFrameGraphPass, Nullable } from \"core/index\";\r\nimport { FrameGraphCullPass } from \"./Passes/cullPass\";\r\nimport { FrameGraphRenderPass } from \"./Passes/renderPass\";\r\n\r\n/**\r\n * Represents a task in a frame graph.\r\n * @experimental\r\n */\r\nexport abstract class FrameGraphTask {\r\n protected _frameGraph: FrameGraph;\r\n\r\n private _passes: IFrameGraphPass[] = [];\r\n private _passesDisabled: IFrameGraphPass[] = [];\r\n\r\n // Note: must be a getter/setter even if there's no specific processing, otherwise inherited classes can't make it a getter/setter!\r\n // Same thing for the disabled property\r\n protected _name: string;\r\n\r\n /**\r\n * The name of the task.\r\n */\r\n public get name() {\r\n return this._name;\r\n }\r\n\r\n public set name(value: string) {\r\n this._name = value;\r\n }\r\n\r\n protected _disabled = false;\r\n\r\n /**\r\n * Whether the task is disabled.\r\n */\r\n public get disabled() {\r\n return this._disabled;\r\n }\r\n\r\n public set disabled(value: boolean) {\r\n this._disabled = value;\r\n }\r\n\r\n /**\r\n * Records the task in the frame graph. Use this function to add content (render passes, ...) to the task.\r\n */\r\n public abstract record(): void;\r\n\r\n /**\r\n * Checks if the task is ready to be executed.\r\n * @returns True if the task is ready to be executed, else false.\r\n */\r\n public isReady(): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * Disposes of the task.\r\n */\r\n public dispose() {\r\n this._reset();\r\n }\r\n\r\n /**\r\n * Constructs a new frame graph task.\r\n * @param name The name of the task.\r\n * @param frameGraph The frame graph this task is associated with.\r\n */\r\n constructor(name: string, frameGraph: FrameGraph) {\r\n this.name = name;\r\n this._frameGraph = frameGraph;\r\n this._reset();\r\n }\r\n\r\n /** @internal */\r\n public _reset() {\r\n this._passes.length = 0;\r\n this._passesDisabled.length = 0;\r\n }\r\n\r\n /** @internal */\r\n public _addPass(pass: IFrameGraphPass, disabled: boolean) {\r\n if (disabled) {\r\n this._passesDisabled.push(pass);\r\n } else {\r\n this._passes.push(pass);\r\n }\r\n }\r\n\r\n /** @internal */\r\n public _checkTask() {\r\n let outputTexture: Nullable<RenderTargetWrapper> = null;\r\n let outputDepthTexture: Nullable<RenderTargetWrapper> = null;\r\n let outputObjectList: FrameGraphObjectList | undefined;\r\n\r\n for (const pass of this._passes!) {\r\n const errMsg = pass._isValid();\r\n if (errMsg) {\r\n throw new Error(`Pass \"${pass.name}\" is not valid. ${errMsg}`);\r\n }\r\n if (FrameGraphRenderPass.IsRenderPass(pass)) {\r\n outputTexture = this._frameGraph.getTexture(pass.renderTarget);\r\n outputDepthTexture = pass.renderTargetDepth !== undefined ? this._frameGraph.getTexture(pass.renderTargetDepth) : null;\r\n } else if (FrameGraphCullPass.IsCullPass(pass)) {\r\n outputObjectList = pass.objectList;\r\n }\r\n }\r\n\r\n let disabledOutputTexture: Nullable<RenderTargetWrapper> = null;\r\n let disabledOutputDepthTexture: Nullable<RenderTargetWrapper> = null;\r\n let disabledOutputObjectList: FrameGraphObjectList | undefined;\r\n\r\n for (const pass of this._passesDisabled!) {\r\n const errMsg = pass._isValid();\r\n if (errMsg) {\r\n throw new Error(`Pass \"${pass.name}\" is not valid. ${errMsg}`);\r\n }\r\n if (FrameGraphRenderPass.IsRenderPass(pass)) {\r\n disabledOutputTexture = this._frameGraph.getTexture(pass.renderTarget);\r\n disabledOutputDepthTexture = pass.renderTargetDepth !== undefined ? this._frameGraph.getTexture(pass.renderTargetDepth) : null;\r\n } else if (FrameGraphCullPass.IsCullPass(pass)) {\r\n disabledOutputObjectList = pass.objectList;\r\n }\r\n }\r\n\r\n if (this._passesDisabled.length > 0) {\r\n if (outputTexture !== disabledOutputTexture) {\r\n throw new Error(`The output texture of the task \"${this.name}\" is different when it is enabled or disabled.`);\r\n }\r\n if (outputDepthTexture !== disabledOutputDepthTexture) {\r\n throw new Error(`The output depth texture of the task \"${this.name}\" is different when it is enabled or disabled.`);\r\n }\r\n if (outputObjectList !== disabledOutputObjectList) {\r\n throw new Error(`The output object list of the task \"${this.name}\" is different when it is enabled or disabled.`);\r\n }\r\n }\r\n }\r\n\r\n /** @internal */\r\n public _getPasses(): IFrameGraphPass[] {\r\n return this.disabled && this._passesDisabled.length > 0 ? this._passesDisabled : this._passes;\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { Scene, AbstractEngine, RenderTargetWrapper, TextureSize, Nullable, FrameGraphTextureCreationOptions, FrameGraphTextureHandle } from "../index.js";
|
|
2
|
+
import { Texture } from "../Materials/Textures/texture";
|
|
3
|
+
type TextureEntry = {
|
|
4
|
+
texture: Nullable<RenderTargetWrapper>;
|
|
5
|
+
name: string;
|
|
6
|
+
creationOptions: FrameGraphTextureCreationOptions;
|
|
7
|
+
namespace: FrameGraphTextureNamespace;
|
|
8
|
+
debug?: Texture;
|
|
9
|
+
parentHandle?: FrameGraphTextureHandle;
|
|
10
|
+
parentTextureIndex?: number;
|
|
11
|
+
refHandle?: FrameGraphTextureHandle;
|
|
12
|
+
};
|
|
13
|
+
declare enum FrameGraphTextureNamespace {
|
|
14
|
+
Task = 0,
|
|
15
|
+
Graph = 1,
|
|
16
|
+
External = 2
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* @experimental
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
export declare class FrameGraphTextureManager {
|
|
23
|
+
private _engine;
|
|
24
|
+
private _debugTextures;
|
|
25
|
+
private _scene?;
|
|
26
|
+
private static _Counter;
|
|
27
|
+
_textures: Map<FrameGraphTextureHandle, TextureEntry>;
|
|
28
|
+
constructor(_engine: AbstractEngine, _debugTextures?: boolean, _scene?: Scene | undefined);
|
|
29
|
+
isBackbuffer(handle: FrameGraphTextureHandle): boolean;
|
|
30
|
+
isBackbufferColor(handle: FrameGraphTextureHandle): boolean;
|
|
31
|
+
isBackbufferDepthStencil(handle: FrameGraphTextureHandle): boolean;
|
|
32
|
+
getTextureCreationOptions(handle: FrameGraphTextureHandle): FrameGraphTextureCreationOptions;
|
|
33
|
+
getTextureFromHandle(handle: FrameGraphTextureHandle): Nullable<RenderTargetWrapper>;
|
|
34
|
+
importTexture(name: string, texture: RenderTargetWrapper, handle?: FrameGraphTextureHandle): FrameGraphTextureHandle;
|
|
35
|
+
createRenderTargetTexture(name: string, taskNamespace: boolean, creationOptions: FrameGraphTextureCreationOptions, multiTargetMode?: boolean, handle?: FrameGraphTextureHandle): FrameGraphTextureHandle;
|
|
36
|
+
getAbsoluteDimensions(size: TextureSize, screenWidth?: number, screenHeight?: number): {
|
|
37
|
+
width: number;
|
|
38
|
+
height: number;
|
|
39
|
+
};
|
|
40
|
+
dispose(): void;
|
|
41
|
+
allocateTextures(): void;
|
|
42
|
+
createDanglingHandle(): number;
|
|
43
|
+
resolveDanglingHandle(danglingHandle: FrameGraphTextureHandle, handle: FrameGraphTextureHandle): void;
|
|
44
|
+
releaseTextures(releaseAll?: boolean): void;
|
|
45
|
+
private _addSystemTextures;
|
|
46
|
+
private _createDebugTexture;
|
|
47
|
+
private _freeEntry;
|
|
48
|
+
private _createHandleForTexture;
|
|
49
|
+
}
|
|
50
|
+
export {};
|