@babylonjs/core 7.2.2 → 7.2.3
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/runtimeAnimation.d.ts +1 -0
- package/Animations/runtimeAnimation.js +12 -3
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Audio/audioEngine.js +2 -2
- package/Audio/audioEngine.js.map +1 -1
- package/Bones/boneLookController.js +3 -0
- package/Bones/boneLookController.js.map +1 -1
- package/Buffers/buffer.d.ts +5 -5
- package/Buffers/buffer.js.map +1 -1
- package/Buffers/storageBuffer.d.ts +2 -2
- package/Buffers/storageBuffer.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
- package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
- package/Compute/computeEffect.d.ts +3 -3
- package/Compute/computeEffect.js.map +1 -1
- package/Compute/computeShader.d.ts +10 -2
- package/Compute/computeShader.js +53 -35
- package/Compute/computeShader.js.map +1 -1
- package/DeviceInput/InputDevices/deviceSourceManager.d.ts +2 -2
- package/DeviceInput/InputDevices/deviceSourceManager.js.map +1 -1
- package/DeviceInput/internalDeviceSourceManager.d.ts +4 -4
- package/DeviceInput/internalDeviceSourceManager.js.map +1 -1
- package/DeviceInput/webDeviceInputSystem.d.ts +2 -2
- package/DeviceInput/webDeviceInputSystem.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.alpha.d.ts +10 -0
- package/Engines/AbstractEngine/abstractEngine.alpha.js +29 -0
- package/Engines/AbstractEngine/abstractEngine.alpha.js.map +1 -0
- package/Engines/AbstractEngine/abstractEngine.cubeTexture.d.ts +17 -0
- package/Engines/AbstractEngine/abstractEngine.cubeTexture.js +138 -0
- package/Engines/AbstractEngine/abstractEngine.cubeTexture.js.map +1 -0
- package/Engines/AbstractEngine/abstractEngine.dom.d.ts +61 -0
- package/Engines/AbstractEngine/abstractEngine.dom.js +27 -0
- package/Engines/AbstractEngine/abstractEngine.dom.js.map +1 -0
- package/Engines/AbstractEngine/abstractEngine.loadingScreen.d.ts +30 -0
- package/Engines/AbstractEngine/abstractEngine.loadingScreen.js +48 -0
- package/Engines/AbstractEngine/abstractEngine.loadingScreen.js.map +1 -0
- package/Engines/AbstractEngine/abstractEngine.query.d.ts +122 -0
- package/Engines/AbstractEngine/abstractEngine.query.js +175 -0
- package/Engines/AbstractEngine/abstractEngine.query.js.map +1 -0
- package/Engines/AbstractEngine/abstractEngine.renderPass.d.ts +26 -0
- package/Engines/AbstractEngine/abstractEngine.renderPass.js +29 -0
- package/Engines/AbstractEngine/abstractEngine.renderPass.js.map +1 -0
- package/Engines/AbstractEngine/abstractEngine.states.d.ts +162 -0
- package/Engines/AbstractEngine/abstractEngine.states.js +105 -0
- package/Engines/AbstractEngine/abstractEngine.states.js.map +1 -0
- package/Engines/AbstractEngine/abstractEngine.texture.d.ts +16 -0
- package/Engines/AbstractEngine/abstractEngine.texture.js +11 -0
- package/Engines/AbstractEngine/abstractEngine.texture.js.map +1 -0
- package/Engines/AbstractEngine/index.d.ts +8 -0
- package/Engines/AbstractEngine/index.js +10 -0
- package/Engines/AbstractEngine/index.js.map +1 -0
- package/Engines/Extensions/engine.alpha.d.ts +0 -24
- package/Engines/Extensions/engine.alpha.js +0 -35
- package/Engines/Extensions/engine.alpha.js.map +1 -1
- package/Engines/Extensions/engine.computeShader.d.ts +15 -2
- package/Engines/Extensions/engine.computeShader.js +5 -1
- package/Engines/Extensions/engine.computeShader.js.map +1 -1
- package/Engines/Extensions/engine.cubeTexture.d.ts +0 -8
- package/Engines/Extensions/engine.cubeTexture.js +2 -135
- package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
- package/Engines/Extensions/engine.debugging.d.ts +2 -2
- package/Engines/Extensions/engine.debugging.js +5 -5
- package/Engines/Extensions/engine.debugging.js.map +1 -1
- package/Engines/Extensions/engine.dynamicTexture.js +3 -2
- package/Engines/Extensions/engine.dynamicTexture.js.map +1 -1
- package/Engines/Extensions/engine.multiview.js.map +1 -1
- package/Engines/Extensions/engine.query.d.ts +5 -120
- package/Engines/Extensions/engine.query.js +14 -150
- package/Engines/Extensions/engine.query.js.map +1 -1
- package/Engines/Extensions/engine.renderTarget.js +0 -9
- package/Engines/Extensions/engine.renderTarget.js.map +1 -1
- package/Engines/Extensions/engine.views.d.ts +3 -2
- package/Engines/Extensions/engine.views.js.map +1 -1
- package/Engines/Processors/iShaderProcessor.d.ts +2 -2
- package/Engines/Processors/iShaderProcessor.js.map +1 -1
- package/Engines/Processors/shaderProcessor.d.ts +3 -3
- package/Engines/Processors/shaderProcessor.js.map +1 -1
- package/Engines/WebGL/webGLRenderTargetWrapper.js +12 -9
- package/Engines/WebGL/webGLRenderTargetWrapper.js.map +1 -1
- package/Engines/WebGL/webGLShaderProcessors.d.ts +2 -2
- package/Engines/WebGL/webGLShaderProcessors.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.alpha.d.ts +35 -0
- package/Engines/WebGPU/Extensions/engine.alpha.js +4 -4
- package/Engines/WebGPU/Extensions/engine.alpha.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.computeShader.d.ts +9 -0
- package/Engines/WebGPU/Extensions/engine.computeShader.js +13 -2
- package/Engines/WebGPU/Extensions/engine.computeShader.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.cubeTexture.d.ts +78 -1
- package/Engines/WebGPU/Extensions/engine.cubeTexture.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.dynamicTexture.d.ts +27 -1
- package/Engines/WebGPU/Extensions/engine.dynamicTexture.js +3 -3
- package/Engines/WebGPU/Extensions/engine.dynamicTexture.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.externalTexture.d.ts +16 -0
- package/Engines/WebGPU/Extensions/engine.externalTexture.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.d.ts +55 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.query.d.ts +1 -1
- package/Engines/WebGPU/Extensions/engine.query.js +1 -0
- package/Engines/WebGPU/Extensions/engine.query.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.rawTexture.d.ts +185 -1
- package/Engines/WebGPU/Extensions/engine.rawTexture.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.readTexture.d.ts +10 -1
- package/Engines/WebGPU/Extensions/engine.readTexture.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.renderTarget.d.ts +38 -1
- package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.renderTargetCube.d.ts +13 -1
- package/Engines/WebGPU/Extensions/engine.renderTargetCube.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.storageBuffer.d.ts +38 -1
- package/Engines/WebGPU/Extensions/engine.storageBuffer.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.textureSampler.d.ts +10 -0
- package/Engines/WebGPU/Extensions/engine.textureSampler.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.videoTexture.d.ts +14 -1
- package/Engines/WebGPU/Extensions/engine.videoTexture.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.d.ts +2 -2
- package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
- package/Engines/abstractEngine.d.ts +1688 -0
- package/Engines/abstractEngine.js +1354 -0
- package/Engines/abstractEngine.js.map +1 -0
- package/Engines/engine.common.d.ts +39 -0
- package/Engines/engine.common.js +226 -0
- package/Engines/engine.common.js.map +1 -0
- package/Engines/engine.d.ts +40 -447
- package/Engines/engine.js +64 -810
- package/Engines/engine.js.map +1 -1
- package/Engines/engineFactory.d.ts +2 -2
- package/Engines/engineFactory.js.map +1 -1
- package/Engines/engineStore.d.ts +4 -4
- package/Engines/engineStore.js.map +1 -1
- package/Engines/index.d.ts +3 -0
- package/Engines/index.js +3 -0
- package/Engines/index.js.map +1 -1
- package/Engines/nativeEngine.d.ts +1 -1
- package/Engines/nativeEngine.js +2 -1
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/nullEngine.d.ts +2 -2
- package/Engines/nullEngine.js +2 -3
- package/Engines/nullEngine.js.map +1 -1
- package/Engines/renderTargetWrapper.d.ts +3 -3
- package/Engines/renderTargetWrapper.js.map +1 -1
- package/Engines/thinEngine.d.ts +35 -591
- package/Engines/thinEngine.js +84 -1134
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +149 -109
- package/Engines/webgpuEngine.js +249 -161
- package/Engines/webgpuEngine.js.map +1 -1
- package/Instrumentation/engineInstrumentation.d.ts +5 -4
- package/Instrumentation/engineInstrumentation.js.map +1 -1
- package/Layers/effectLayer.d.ts +2 -2
- package/Layers/effectLayer.js +3 -3
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/effectLayerSceneComponent.js.map +1 -1
- package/Layers/glowLayer.js +3 -3
- package/Layers/glowLayer.js.map +1 -1
- package/Layers/highlightLayer.js +3 -3
- package/Layers/highlightLayer.js.map +1 -1
- package/Layers/layerSceneComponent.js.map +1 -1
- package/Loading/loadingScreen.js +2 -2
- package/Loading/loadingScreen.js.map +1 -1
- package/Loading/sceneLoader.d.ts +3 -3
- package/Loading/sceneLoader.js +1 -1
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/GreasedLine/greasedLinePluginMaterial.js.map +1 -1
- package/Materials/Textures/Filtering/hdrFiltering.d.ts +2 -2
- package/Materials/Textures/Filtering/hdrFiltering.js.map +1 -1
- package/Materials/Textures/Loaders/basisTextureLoader.js +2 -2
- package/Materials/Textures/Loaders/basisTextureLoader.js.map +1 -1
- package/Materials/Textures/MultiviewRenderTarget.d.ts +1 -0
- package/Materials/Textures/MultiviewRenderTarget.js +1 -0
- package/Materials/Textures/MultiviewRenderTarget.js.map +1 -1
- package/Materials/Textures/Procedurals/proceduralTexture.js +1 -1
- package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
- package/Materials/Textures/baseTexture.d.ts +3 -3
- package/Materials/Textures/baseTexture.js.map +1 -1
- package/Materials/Textures/colorGradingTexture.d.ts +2 -2
- package/Materials/Textures/colorGradingTexture.js.map +1 -1
- package/Materials/Textures/cubeTexture.d.ts +3 -2
- package/Materials/Textures/cubeTexture.js +1 -0
- package/Materials/Textures/cubeTexture.js.map +1 -1
- package/Materials/Textures/hdrCubeTexture.d.ts +2 -2
- package/Materials/Textures/hdrCubeTexture.js.map +1 -1
- package/Materials/Textures/htmlElementTexture.d.ts +2 -2
- package/Materials/Textures/htmlElementTexture.js.map +1 -1
- package/Materials/Textures/internalTexture.d.ts +3 -3
- package/Materials/Textures/internalTexture.js.map +1 -1
- package/Materials/Textures/rawTexture.d.ts +10 -10
- package/Materials/Textures/rawTexture.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.d.ts +4 -4
- package/Materials/Textures/renderTargetTexture.js +4 -4
- package/Materials/Textures/renderTargetTexture.js.map +1 -1
- package/Materials/Textures/texture.d.ts +2 -2
- package/Materials/Textures/texture.js.map +1 -1
- package/Materials/Textures/thinTexture.d.ts +3 -3
- package/Materials/Textures/thinTexture.js +1 -1
- package/Materials/Textures/thinTexture.js.map +1 -1
- package/Materials/drawWrapper.d.ts +2 -3
- package/Materials/drawWrapper.functions.d.ts +8 -0
- package/Materials/drawWrapper.functions.js +9 -0
- package/Materials/drawWrapper.functions.js.map +1 -0
- package/Materials/drawWrapper.js +0 -3
- package/Materials/drawWrapper.js.map +1 -1
- package/Materials/effect.d.ts +4 -5
- package/Materials/effect.js.map +1 -1
- package/Materials/effectRenderer.d.ts +4 -4
- 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.d.ts +2 -2
- package/Materials/materialHelper.functions.js.map +1 -1
- package/Materials/materialPluginBase.d.ts +4 -4
- package/Materials/materialPluginBase.js.map +1 -1
- package/Materials/materialPluginManager.d.ts +2 -2
- package/Materials/materialPluginManager.js.map +1 -1
- package/Materials/meshDebugPluginMaterial.js +1 -1
- package/Materials/meshDebugPluginMaterial.js.map +1 -1
- package/Materials/uniformBuffer.d.ts +2 -2
- package/Materials/uniformBuffer.js.map +1 -1
- package/Meshes/Builders/greasedLineBuilder.d.ts +6 -0
- package/Meshes/Builders/greasedLineBuilder.js +15 -8
- package/Meshes/Builders/greasedLineBuilder.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
- package/Meshes/GreasedLine/greasedLineBaseMesh.d.ts +2 -2
- package/Meshes/GreasedLine/greasedLineBaseMesh.js.map +1 -1
- package/Meshes/GreasedLine/greasedLineMesh.js +1 -1
- package/Meshes/GreasedLine/greasedLineMesh.js.map +1 -1
- package/Meshes/geometry.d.ts +2 -2
- package/Meshes/geometry.js +3 -2
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/instancedMesh.js.map +1 -1
- package/Meshes/mesh.d.ts +3 -3
- package/Meshes/mesh.js.map +1 -1
- package/Meshes/subMesh.d.ts +2 -2
- package/Meshes/subMesh.js.map +1 -1
- package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js.map +1 -1
- package/Misc/copyTextureToTexture.d.ts +2 -2
- package/Misc/copyTextureToTexture.js.map +1 -1
- package/Misc/dds.d.ts +3 -2
- package/Misc/dds.js +2 -1
- package/Misc/dds.js.map +1 -1
- package/Misc/dumpTools.d.ts +2 -2
- package/Misc/dumpTools.js.map +1 -1
- package/Misc/fileTools.js +3 -3
- package/Misc/fileTools.js.map +1 -1
- package/Misc/khronosTextureContainer2.d.ts +8 -2
- package/Misc/khronosTextureContainer2.js +3 -2
- package/Misc/khronosTextureContainer2.js.map +1 -1
- package/Misc/minMaxReducer.d.ts +2 -2
- package/Misc/minMaxReducer.js.map +1 -1
- package/Misc/textureTools.js.map +1 -1
- package/Misc/tools.d.ts +7 -7
- package/Misc/tools.functions.d.ts +26 -0
- package/Misc/tools.functions.js +62 -0
- package/Misc/tools.functions.js.map +1 -1
- package/Misc/tools.js.map +1 -1
- package/Misc/videoRecorder.d.ts +3 -3
- package/Misc/videoRecorder.js.map +1 -1
- package/Particles/baseParticleSystem.d.ts +2 -2
- package/Particles/baseParticleSystem.js.map +1 -1
- package/Particles/computeShaderParticleSystem.d.ts +2 -2
- package/Particles/computeShaderParticleSystem.js.map +1 -1
- package/Particles/gpuParticleSystem.d.ts +3 -3
- package/Particles/gpuParticleSystem.js +2 -2
- package/Particles/gpuParticleSystem.js.map +1 -1
- package/Particles/particle.js +1 -1
- package/Particles/particle.js.map +1 -1
- package/Particles/particleSystem.d.ts +3 -3
- package/Particles/particleSystem.js +3 -3
- package/Particles/particleSystem.js.map +1 -1
- package/Particles/particleSystemComponent.d.ts +2 -2
- package/Particles/particleSystemComponent.js +2 -2
- package/Particles/particleSystemComponent.js.map +1 -1
- package/Particles/subEmitter.d.ts +3 -3
- package/Particles/subEmitter.js.map +1 -1
- package/Particles/thinParticleSystem.d.ts +2 -2
- package/Particles/thinParticleSystem.js.map +1 -1
- package/Physics/v2/physicsBody.js +3 -3
- package/Physics/v2/physicsBody.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderEffect.d.ts +2 -2
- package/PostProcesses/RenderPipeline/postProcessRenderEffect.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.d.ts +2 -2
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
- package/PostProcesses/blackAndWhitePostProcess.d.ts +2 -2
- package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
- package/PostProcesses/bloomMergePostProcess.d.ts +2 -2
- package/PostProcesses/bloomMergePostProcess.js.map +1 -1
- package/PostProcesses/blurPostProcess.d.ts +2 -2
- package/PostProcesses/blurPostProcess.js.map +1 -1
- package/PostProcesses/chromaticAberrationPostProcess.d.ts +2 -2
- package/PostProcesses/chromaticAberrationPostProcess.js.map +1 -1
- package/PostProcesses/circleOfConfusionPostProcess.d.ts +2 -2
- package/PostProcesses/circleOfConfusionPostProcess.js.map +1 -1
- package/PostProcesses/colorCorrectionPostProcess.d.ts +2 -2
- package/PostProcesses/colorCorrectionPostProcess.js.map +1 -1
- package/PostProcesses/convolutionPostProcess.d.ts +2 -2
- package/PostProcesses/convolutionPostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldBlurPostProcess.d.ts +2 -2
- package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldEffect.js +1 -1
- package/PostProcesses/depthOfFieldEffect.js.map +1 -1
- package/PostProcesses/depthOfFieldMergePostProcess.d.ts +2 -2
- package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
- package/PostProcesses/displayPassPostProcess.d.ts +2 -2
- package/PostProcesses/displayPassPostProcess.js.map +1 -1
- package/PostProcesses/extractHighlightsPostProcess.d.ts +2 -2
- package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
- package/PostProcesses/filterPostProcess.d.ts +2 -2
- package/PostProcesses/filterPostProcess.js.map +1 -1
- package/PostProcesses/fxaaPostProcess.d.ts +2 -2
- package/PostProcesses/fxaaPostProcess.js +2 -2
- package/PostProcesses/fxaaPostProcess.js.map +1 -1
- package/PostProcesses/grainPostProcess.d.ts +2 -2
- package/PostProcesses/grainPostProcess.js.map +1 -1
- package/PostProcesses/imageProcessingPostProcess.d.ts +2 -2
- package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/motionBlurPostProcess.d.ts +2 -2
- package/PostProcesses/motionBlurPostProcess.js.map +1 -1
- package/PostProcesses/passPostProcess.d.ts +3 -3
- package/PostProcesses/passPostProcess.js +2 -2
- package/PostProcesses/passPostProcess.js.map +1 -1
- package/PostProcesses/postProcess.d.ts +4 -4
- package/PostProcesses/postProcess.js +3 -3
- package/PostProcesses/postProcess.js.map +1 -1
- package/PostProcesses/refractionPostProcess.d.ts +2 -2
- package/PostProcesses/refractionPostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.d.ts +2 -2
- package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.d.ts +2 -2
- package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
- package/PostProcesses/sharpenPostProcess.d.ts +2 -2
- package/PostProcesses/sharpenPostProcess.js.map +1 -1
- package/PostProcesses/subSurfaceScatteringPostProcess.d.ts +2 -2
- package/PostProcesses/subSurfaceScatteringPostProcess.js.map +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.d.ts +2 -2
- package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
- package/Rendering/GlobalIllumination/giRSMManager.js.map +1 -1
- package/Rendering/depthPeelingRenderer.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderer.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingDepthTextureCopy.d.ts +2 -2
- package/Rendering/fluidRenderer/fluidRenderingDepthTextureCopy.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +2 -2
- package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.d.ts +2 -2
- package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingTextures.d.ts +2 -2
- package/Rendering/fluidRenderer/fluidRenderingTextures.js.map +1 -1
- package/Rendering/geometryBufferRenderer.js +24 -18
- package/Rendering/geometryBufferRenderer.js.map +1 -1
- package/Rendering/outlineRenderer.js.map +1 -1
- package/Rendering/prePassRenderer.js.map +1 -1
- package/Sprites/spriteRenderer.d.ts +2 -2
- package/Sprites/spriteRenderer.js.map +1 -1
- package/XR/features/WebXRDepthSensing.js.map +1 -1
- package/XR/features/WebXRImageTracking.js.map +1 -1
- package/XR/features/WebXRLayers.d.ts +2 -2
- package/XR/features/WebXRLayers.js.map +1 -1
- package/XR/features/WebXRLightEstimation.js.map +1 -1
- package/XR/features/WebXRRawCameraAccess.d.ts +1 -1
- package/XR/features/WebXRRawCameraAccess.js.map +1 -1
- package/XR/features/WebXRSpaceWarp.js +1 -3
- package/XR/features/WebXRSpaceWarp.js.map +1 -1
- package/XR/features/WebXRWalkingLocomotion.js.map +1 -1
- package/XR/webXRExperienceHelper.js.map +1 -1
- package/XR/webXRManagedOutputCanvas.d.ts +2 -2
- package/XR/webXRManagedOutputCanvas.js.map +1 -1
- package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
- package/XR/webXRSessionManager.js.map +1 -1
- package/assetContainer.js.map +1 -1
- package/node.d.ts +2 -2
- package/node.js.map +1 -1
- package/package.json +1 -1
- package/scene.d.ts +3 -3
- package/scene.js.map +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Camera } from "../../Cameras/camera.js";
|
|
2
|
-
import type {
|
|
2
|
+
import type { AbstractEngine } from "../../Engines/abstractEngine.js";
|
|
3
3
|
import type { RenderTargetWrapper } from "../../Engines/renderTargetWrapper.js";
|
|
4
4
|
import { Texture } from "../../Materials/Textures/texture.js";
|
|
5
5
|
import type { ThinTexture } from "../../Materials/Textures/thinTexture.js";
|
|
@@ -12,7 +12,7 @@ export declare class FluidRenderingTextures {
|
|
|
12
12
|
protected _name: string;
|
|
13
13
|
protected _scene: Scene;
|
|
14
14
|
protected _camera: Nullable<Camera>;
|
|
15
|
-
protected _engine:
|
|
15
|
+
protected _engine: AbstractEngine;
|
|
16
16
|
protected _width: number;
|
|
17
17
|
protected _height: number;
|
|
18
18
|
protected _blurTextureSizeX: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fluidRenderingTextures.js","sourceRoot":"","sources":["../../../../../dev/core/src/Rendering/fluidRenderer/fluidRenderingTextures.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Camera } from \"core/Cameras/camera\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport type { Engine } from \"core/Engines/engine\";\r\nimport type { RenderTargetWrapper } from \"core/Engines/renderTargetWrapper\";\r\nimport { Texture } from \"core/Materials/Textures/texture\";\r\nimport type { ThinTexture } from \"core/Materials/Textures/thinTexture\";\r\nimport { Vector2 } from \"core/Maths/math.vector\";\r\nimport { PostProcess } from \"core/PostProcesses/postProcess\";\r\nimport type { Scene } from \"core/scene\";\r\nimport type { Nullable } from \"core/types\";\r\nimport { Observable } from \"core/Misc/observable\";\r\n\r\n/** @internal */\r\nexport class FluidRenderingTextures {\r\n protected _name: string;\r\n protected _scene: Scene;\r\n protected _camera: Nullable<Camera>;\r\n protected _engine: Engine;\r\n protected _width: number;\r\n protected _height: number;\r\n protected _blurTextureSizeX: number;\r\n protected _blurTextureSizeY: number;\r\n protected _textureType: number;\r\n protected _textureFormat: number;\r\n protected _blurTextureType: number;\r\n protected _blurTextureFormat: number;\r\n protected _useStandardBlur: boolean;\r\n protected _generateDepthBuffer: boolean;\r\n protected _samples: number;\r\n protected _postProcessRunningIndex: number;\r\n\r\n protected _rt: Nullable<RenderTargetWrapper>;\r\n protected _texture: Nullable<Texture>;\r\n protected _rtBlur: Nullable<RenderTargetWrapper>;\r\n protected _textureBlurred: Nullable<Texture>;\r\n protected _blurPostProcesses: Nullable<PostProcess[]>;\r\n\r\n public enableBlur = true;\r\n\r\n public blurSizeDivisor = 1;\r\n\r\n public blurFilterSize = 7;\r\n\r\n private _blurNumIterations = 3;\r\n\r\n public get blurNumIterations() {\r\n return this._blurNumIterations;\r\n }\r\n\r\n public set blurNumIterations(numIterations: number) {\r\n if (this._blurNumIterations === numIterations) {\r\n return;\r\n }\r\n\r\n this._blurNumIterations = numIterations;\r\n if (this._blurPostProcesses !== null) {\r\n const blurX = this._blurPostProcesses[0];\r\n const blurY = this._blurPostProcesses[1];\r\n\r\n this._blurPostProcesses = [];\r\n for (let i = 0; i < this._blurNumIterations * 2; ++i) {\r\n this._blurPostProcesses[i] = i & 1 ? blurY : blurX;\r\n }\r\n }\r\n }\r\n\r\n public blurMaxFilterSize = 100;\r\n\r\n public blurDepthScale = 10;\r\n\r\n public particleSize = 0.02;\r\n\r\n public onDisposeObservable: Observable<FluidRenderingTextures> = new Observable<FluidRenderingTextures>();\r\n\r\n public get renderTarget() {\r\n return this._rt;\r\n }\r\n\r\n public get renderTargetBlur() {\r\n return this._rtBlur;\r\n }\r\n\r\n public get texture() {\r\n return this._texture;\r\n }\r\n\r\n public get textureBlur() {\r\n return this._textureBlurred;\r\n }\r\n\r\n constructor(\r\n name: string,\r\n scene: Scene,\r\n width: number,\r\n height: number,\r\n blurTextureSizeX: number,\r\n blurTextureSizeY: number,\r\n textureType: number = Constants.TEXTURETYPE_FLOAT,\r\n textureFormat: number = Constants.TEXTUREFORMAT_R,\r\n blurTextureType: number = Constants.TEXTURETYPE_FLOAT,\r\n blurTextureFormat: number = Constants.TEXTUREFORMAT_R,\r\n useStandardBlur = false,\r\n camera: Nullable<Camera> = null,\r\n generateDepthBuffer = true,\r\n samples = 1\r\n ) {\r\n this._name = name;\r\n this._scene = scene;\r\n this._camera = camera;\r\n this._engine = scene.getEngine();\r\n this._width = width;\r\n this._height = height;\r\n this._blurTextureSizeX = blurTextureSizeX;\r\n this._blurTextureSizeY = blurTextureSizeY;\r\n this._textureType = textureType;\r\n this._textureFormat = textureFormat;\r\n this._blurTextureType = blurTextureType;\r\n this._blurTextureFormat = blurTextureFormat;\r\n this._useStandardBlur = useStandardBlur;\r\n this._generateDepthBuffer = generateDepthBuffer;\r\n this._samples = samples;\r\n this._postProcessRunningIndex = 0;\r\n this.enableBlur = blurTextureSizeX !== 0 && blurTextureSizeY !== 0;\r\n\r\n this._rt = null;\r\n this._texture = null;\r\n this._rtBlur = null;\r\n this._textureBlurred = null;\r\n this._blurPostProcesses = null;\r\n }\r\n\r\n public initialize(): void {\r\n this.dispose();\r\n\r\n this._createRenderTarget();\r\n\r\n if (this.enableBlur && this._texture) {\r\n const [rtBlur, textureBlurred, blurPostProcesses] = this._createBlurPostProcesses(\r\n this._texture,\r\n this._blurTextureType,\r\n this._blurTextureFormat,\r\n this.blurSizeDivisor,\r\n this._name,\r\n this._useStandardBlur\r\n );\r\n this._rtBlur = rtBlur;\r\n this._textureBlurred = textureBlurred;\r\n this._blurPostProcesses = blurPostProcesses;\r\n }\r\n }\r\n\r\n public applyBlurPostProcesses(): void {\r\n if (this.enableBlur && this._blurPostProcesses) {\r\n this._postProcessRunningIndex = 0;\r\n this._scene.postProcessManager.directRender(this._blurPostProcesses, this._rtBlur, true);\r\n this._engine.unBindFramebuffer(this._rtBlur!);\r\n }\r\n }\r\n\r\n protected _createRenderTarget(): void {\r\n this._rt = this._engine.createRenderTargetTexture(\r\n { width: this._width, height: this._height },\r\n {\r\n generateMipMaps: false,\r\n type: this._textureType,\r\n format: this._textureFormat,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n generateDepthBuffer: this._generateDepthBuffer,\r\n generateStencilBuffer: false,\r\n samples: this._samples,\r\n label: `FluidRenderingRTT-${this._name}`,\r\n }\r\n );\r\n\r\n const renderTexture = this._rt.texture!;\r\n\r\n renderTexture.incrementReferences();\r\n\r\n this._texture = new Texture(null, this._scene);\r\n this._texture.name = \"rtt\" + this._name;\r\n this._texture._texture = renderTexture;\r\n this._texture.wrapU = Texture.CLAMP_ADDRESSMODE;\r\n this._texture.wrapV = Texture.CLAMP_ADDRESSMODE;\r\n this._texture.anisotropicFilteringLevel = 1;\r\n }\r\n\r\n protected _createBlurPostProcesses(\r\n textureBlurSource: ThinTexture,\r\n textureType: number,\r\n textureFormat: number,\r\n blurSizeDivisor: number,\r\n debugName: string,\r\n useStandardBlur = false\r\n ): [RenderTargetWrapper, Texture, PostProcess[]] {\r\n const engine = this._scene.getEngine();\r\n const targetSize = new Vector2(Math.floor(this._blurTextureSizeX / blurSizeDivisor), Math.floor(this._blurTextureSizeY / blurSizeDivisor));\r\n const useBilinearFiltering =\r\n (textureType === Constants.TEXTURETYPE_FLOAT && engine.getCaps().textureFloatLinearFiltering) ||\r\n (textureType === Constants.TEXTURETYPE_HALF_FLOAT && engine.getCaps().textureHalfFloatLinearFiltering);\r\n\r\n const rtBlur = this._engine.createRenderTargetTexture(\r\n { width: targetSize.x, height: targetSize.y },\r\n {\r\n generateMipMaps: false,\r\n type: textureType,\r\n format: textureFormat,\r\n samplingMode: useBilinearFiltering ? Constants.TEXTURE_BILINEAR_SAMPLINGMODE : Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n generateDepthBuffer: false,\r\n generateStencilBuffer: false,\r\n samples: this._samples,\r\n label: `FluidRenderingRTTBlur-${debugName}`,\r\n }\r\n );\r\n\r\n const renderTexture = rtBlur.texture!;\r\n\r\n renderTexture.incrementReferences();\r\n\r\n const texture = new Texture(null, this._scene);\r\n texture.name = \"rttBlurred\" + debugName;\r\n texture._texture = renderTexture;\r\n texture.wrapU = Texture.CLAMP_ADDRESSMODE;\r\n texture.wrapV = Texture.CLAMP_ADDRESSMODE;\r\n texture.anisotropicFilteringLevel = 1;\r\n\r\n if (useStandardBlur) {\r\n const kernelBlurXPostprocess = new PostProcess(\r\n \"BilateralBlurX\",\r\n \"fluidRenderingStandardBlur\",\r\n [\"filterSize\", \"blurDir\"],\r\n null,\r\n 1,\r\n null,\r\n Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n engine,\r\n true,\r\n null,\r\n textureType,\r\n undefined,\r\n undefined,\r\n undefined,\r\n textureFormat\r\n );\r\n kernelBlurXPostprocess.samples = this._samples;\r\n kernelBlurXPostprocess.externalTextureSamplerBinding = true;\r\n kernelBlurXPostprocess.onApplyObservable.add((effect) => {\r\n if (this._postProcessRunningIndex === 0) {\r\n effect.setTexture(\"textureSampler\", textureBlurSource);\r\n } else {\r\n effect._bindTexture(\"textureSampler\", kernelBlurXPostprocess.inputTexture.texture);\r\n }\r\n effect.setInt(\"filterSize\", this.blurFilterSize);\r\n effect.setFloat2(\"blurDir\", 1 / this._blurTextureSizeX, 0);\r\n this._postProcessRunningIndex++;\r\n });\r\n kernelBlurXPostprocess.onSizeChangedObservable.add(() => {\r\n kernelBlurXPostprocess._textures.forEach((rt) => {\r\n rt.texture!.wrapU = Texture.CLAMP_ADDRESSMODE;\r\n rt.texture!.wrapV = Texture.CLAMP_ADDRESSMODE;\r\n });\r\n });\r\n this._fixReusablePostProcess(kernelBlurXPostprocess);\r\n\r\n const kernelBlurYPostprocess = new PostProcess(\r\n \"BilateralBlurY\",\r\n \"fluidRenderingStandardBlur\",\r\n [\"filterSize\", \"blurDir\"],\r\n null,\r\n 1,\r\n null,\r\n Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n engine,\r\n true,\r\n null,\r\n textureType,\r\n undefined,\r\n undefined,\r\n undefined,\r\n textureFormat\r\n );\r\n kernelBlurYPostprocess.samples = this._samples;\r\n kernelBlurYPostprocess.onApplyObservable.add((effect) => {\r\n effect.setInt(\"filterSize\", this.blurFilterSize);\r\n effect.setFloat2(\"blurDir\", 0, 1 / this._blurTextureSizeY);\r\n this._postProcessRunningIndex++;\r\n });\r\n kernelBlurYPostprocess.onSizeChangedObservable.add(() => {\r\n kernelBlurYPostprocess._textures.forEach((rt) => {\r\n rt.texture!.wrapU = Texture.CLAMP_ADDRESSMODE;\r\n rt.texture!.wrapV = Texture.CLAMP_ADDRESSMODE;\r\n });\r\n });\r\n this._fixReusablePostProcess(kernelBlurYPostprocess);\r\n\r\n kernelBlurXPostprocess.autoClear = false;\r\n kernelBlurYPostprocess.autoClear = false;\r\n\r\n const blurList = [];\r\n for (let i = 0; i < this._blurNumIterations * 2; ++i) {\r\n blurList[i] = i & 1 ? kernelBlurYPostprocess : kernelBlurXPostprocess;\r\n }\r\n\r\n return [rtBlur, texture, blurList];\r\n } else {\r\n const uniforms: string[] = [\"maxFilterSize\", \"blurDir\", \"projectedParticleConstant\", \"depthThreshold\"];\r\n\r\n const kernelBlurXPostprocess = new PostProcess(\r\n \"BilateralBlurX\",\r\n \"fluidRenderingBilateralBlur\",\r\n uniforms,\r\n null,\r\n 1,\r\n null,\r\n Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n engine,\r\n true,\r\n null,\r\n textureType,\r\n undefined,\r\n undefined,\r\n undefined,\r\n textureFormat\r\n );\r\n kernelBlurXPostprocess.samples = this._samples;\r\n kernelBlurXPostprocess.externalTextureSamplerBinding = true;\r\n kernelBlurXPostprocess.onApplyObservable.add((effect) => {\r\n if (this._postProcessRunningIndex === 0) {\r\n effect.setTexture(\"textureSampler\", textureBlurSource);\r\n } else {\r\n effect._bindTexture(\"textureSampler\", kernelBlurXPostprocess.inputTexture.texture);\r\n }\r\n effect.setInt(\"maxFilterSize\", this.blurMaxFilterSize);\r\n effect.setFloat2(\"blurDir\", 1 / this._blurTextureSizeX, 0);\r\n effect.setFloat(\"projectedParticleConstant\", this._getProjectedParticleConstant());\r\n effect.setFloat(\"depthThreshold\", this._getDepthThreshold());\r\n this._postProcessRunningIndex++;\r\n });\r\n kernelBlurXPostprocess.onSizeChangedObservable.add(() => {\r\n kernelBlurXPostprocess._textures.forEach((rt) => {\r\n rt.texture!.wrapU = Texture.CLAMP_ADDRESSMODE;\r\n rt.texture!.wrapV = Texture.CLAMP_ADDRESSMODE;\r\n });\r\n });\r\n this._fixReusablePostProcess(kernelBlurXPostprocess);\r\n\r\n const kernelBlurYPostprocess = new PostProcess(\r\n \"BilateralBlurY\",\r\n \"fluidRenderingBilateralBlur\",\r\n uniforms,\r\n null,\r\n 1,\r\n null,\r\n Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n engine,\r\n true,\r\n null,\r\n textureType,\r\n undefined,\r\n undefined,\r\n undefined,\r\n textureFormat\r\n );\r\n kernelBlurYPostprocess.samples = this._samples;\r\n kernelBlurYPostprocess.onApplyObservable.add((effect) => {\r\n effect.setInt(\"maxFilterSize\", this.blurMaxFilterSize);\r\n effect.setFloat2(\"blurDir\", 0, 1 / this._blurTextureSizeY);\r\n effect.setFloat(\"projectedParticleConstant\", this._getProjectedParticleConstant());\r\n effect.setFloat(\"depthThreshold\", this._getDepthThreshold());\r\n this._postProcessRunningIndex++;\r\n });\r\n kernelBlurYPostprocess.onSizeChangedObservable.add(() => {\r\n kernelBlurYPostprocess._textures.forEach((rt) => {\r\n rt.texture!.wrapU = Texture.CLAMP_ADDRESSMODE;\r\n rt.texture!.wrapV = Texture.CLAMP_ADDRESSMODE;\r\n });\r\n });\r\n this._fixReusablePostProcess(kernelBlurYPostprocess);\r\n\r\n kernelBlurXPostprocess.autoClear = false;\r\n kernelBlurYPostprocess.autoClear = false;\r\n\r\n const blurList = [];\r\n for (let i = 0; i < this._blurNumIterations * 2; ++i) {\r\n blurList[i] = i & 1 ? kernelBlurYPostprocess : kernelBlurXPostprocess;\r\n }\r\n\r\n return [rtBlur, texture, blurList];\r\n }\r\n }\r\n\r\n private _fixReusablePostProcess(pp: PostProcess) {\r\n if (!pp.isReusable()) {\r\n return;\r\n }\r\n\r\n pp.onActivateObservable.add(() => {\r\n // undo what calling activate() does which will make sure we will retrieve the right texture when getting the input for the post process\r\n pp._currentRenderTextureInd = (pp._currentRenderTextureInd + 1) % 2;\r\n });\r\n pp.onApplyObservable.add(() => {\r\n // now we can advance to the next texture\r\n pp._currentRenderTextureInd = (pp._currentRenderTextureInd + 1) % 2;\r\n });\r\n }\r\n\r\n private _getProjectedParticleConstant() {\r\n return (this.blurFilterSize * this.particleSize * 0.05 * (this._height / 2)) / Math.tan((this._camera?.fov ?? (45 * Math.PI) / 180) / 2);\r\n }\r\n\r\n private _getDepthThreshold() {\r\n return (this.particleSize / 2) * this.blurDepthScale;\r\n }\r\n\r\n public dispose(): void {\r\n if (this.onDisposeObservable.hasObservers()) {\r\n this.onDisposeObservable.notifyObservers(this);\r\n }\r\n\r\n this._rt?.dispose();\r\n this._rt = null;\r\n this._texture?.dispose();\r\n this._texture = null;\r\n this._rtBlur?.dispose();\r\n this._rtBlur = null;\r\n this._textureBlurred?.dispose();\r\n this._textureBlurred = null;\r\n if (this._blurPostProcesses) {\r\n this._blurPostProcesses[0].dispose();\r\n this._blurPostProcesses[1].dispose();\r\n }\r\n this._blurPostProcesses = null;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"fluidRenderingTextures.js","sourceRoot":"","sources":["../../../../../dev/core/src/Rendering/fluidRenderer/fluidRenderingTextures.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,mCAA+B;AAGnD,OAAO,EAAE,OAAO,EAAE,4CAAwC;AAE1D,OAAO,EAAE,OAAO,EAAE,mCAA+B;AACjD,OAAO,EAAE,WAAW,EAAE,2CAAuC;AAG7D,OAAO,EAAE,UAAU,EAAE,iCAA6B;AAElD,gBAAgB;AAChB,MAAM,OAAO,sBAAsB;IAgC/B,IAAW,iBAAiB;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;IAED,IAAW,iBAAiB,CAAC,aAAqB;QAC9C,IAAI,IAAI,CAAC,kBAAkB,KAAK,aAAa,EAAE;YAC3C,OAAO;SACV;QAED,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC;QACxC,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,EAAE;YAClC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;YAEzC,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;YAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;gBAClD,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;aACtD;SACJ;IACL,CAAC;IAUD,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IAED,IAAW,gBAAgB;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,YACI,IAAY,EACZ,KAAY,EACZ,KAAa,EACb,MAAc,EACd,gBAAwB,EACxB,gBAAwB,EACxB,cAAsB,SAAS,CAAC,iBAAiB,EACjD,gBAAwB,SAAS,CAAC,eAAe,EACjD,kBAA0B,SAAS,CAAC,iBAAiB,EACrD,oBAA4B,SAAS,CAAC,eAAe,EACrD,eAAe,GAAG,KAAK,EACvB,SAA2B,IAAI,EAC/B,mBAAmB,GAAG,IAAI,EAC1B,OAAO,GAAG,CAAC;QAnER,eAAU,GAAG,IAAI,CAAC;QAElB,oBAAe,GAAG,CAAC,CAAC;QAEpB,mBAAc,GAAG,CAAC,CAAC;QAElB,uBAAkB,GAAG,CAAC,CAAC;QAuBxB,sBAAiB,GAAG,GAAG,CAAC;QAExB,mBAAc,GAAG,EAAE,CAAC;QAEpB,iBAAY,GAAG,IAAI,CAAC;QAEpB,wBAAmB,GAAuC,IAAI,UAAU,EAA0B,CAAC;QAkCtG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAC1C,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAC1C,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAC5C,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,gBAAgB,KAAK,CAAC,IAAI,gBAAgB,KAAK,CAAC,CAAC;QAEnE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACnC,CAAC;IAEM,UAAU;QACb,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClC,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAI,CAAC,wBAAwB,CAC7E,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,gBAAgB,CACxB,CAAC;YACF,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YACtB,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;YACtC,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;SAC/C;IACL,CAAC;IAEM,sBAAsB;QACzB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC5C,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACzF,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAQ,CAAC,CAAC;SACjD;IACL,CAAC;IAES,mBAAmB;QACzB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAC7C,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,EAC5C;YACI,eAAe,EAAE,KAAK;YACtB,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,MAAM,EAAE,IAAI,CAAC,cAAc;YAC3B,YAAY,EAAE,SAAS,CAAC,4BAA4B;YACpD,mBAAmB,EAAE,IAAI,CAAC,oBAAoB;YAC9C,qBAAqB,EAAE,KAAK;YAC5B,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,KAAK,EAAE,qBAAqB,IAAI,CAAC,KAAK,EAAE;SAC3C,CACJ,CAAC;QAEF,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,OAAQ,CAAC;QAExC,aAAa,CAAC,mBAAmB,EAAE,CAAC;QAEpC,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,aAAa,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,yBAAyB,GAAG,CAAC,CAAC;IAChD,CAAC;IAES,wBAAwB,CAC9B,iBAA8B,EAC9B,WAAmB,EACnB,aAAqB,EACrB,eAAuB,EACvB,SAAiB,EACjB,eAAe,GAAG,KAAK;QAEvB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC,CAAC,CAAC;QAC3I,MAAM,oBAAoB,GACtB,CAAC,WAAW,KAAK,SAAS,CAAC,iBAAiB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,2BAA2B,CAAC;YAC7F,CAAC,WAAW,KAAK,SAAS,CAAC,sBAAsB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,+BAA+B,CAAC,CAAC;QAE3G,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,CACjD,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,EAC7C;YACI,eAAe,EAAE,KAAK;YACtB,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,aAAa;YACrB,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC,CAAC,SAAS,CAAC,4BAA4B;YACrH,mBAAmB,EAAE,KAAK;YAC1B,qBAAqB,EAAE,KAAK;YAC5B,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,KAAK,EAAE,yBAAyB,SAAS,EAAE;SAC9C,CACJ,CAAC;QAEF,MAAM,aAAa,GAAG,MAAM,CAAC,OAAQ,CAAC;QAEtC,aAAa,CAAC,mBAAmB,EAAE,CAAC;QAEpC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,GAAG,YAAY,GAAG,SAAS,CAAC;QACxC,OAAO,CAAC,QAAQ,GAAG,aAAa,CAAC;QACjC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC;QAC1C,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC;QAC1C,OAAO,CAAC,yBAAyB,GAAG,CAAC,CAAC;QAEtC,IAAI,eAAe,EAAE;YACjB,MAAM,sBAAsB,GAAG,IAAI,WAAW,CAC1C,gBAAgB,EAChB,4BAA4B,EAC5B,CAAC,YAAY,EAAE,SAAS,CAAC,EACzB,IAAI,EACJ,CAAC,EACD,IAAI,EACJ,SAAS,CAAC,4BAA4B,EACtC,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,SAAS,EACT,SAAS,EACT,SAAS,EACT,aAAa,CAChB,CAAC;YACF,sBAAsB,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/C,sBAAsB,CAAC,6BAA6B,GAAG,IAAI,CAAC;YAC5D,sBAAsB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACpD,IAAI,IAAI,CAAC,wBAAwB,KAAK,CAAC,EAAE;oBACrC,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;iBAC1D;qBAAM;oBACH,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;iBACtF;gBACD,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;gBACjD,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;gBAC3D,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACpC,CAAC,CAAC,CAAC;YACH,sBAAsB,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,EAAE;gBACpD,sBAAsB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;oBAC5C,EAAE,CAAC,OAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC;oBAC9C,EAAE,CAAC,OAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC;gBAClD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,CAAC;YAErD,MAAM,sBAAsB,GAAG,IAAI,WAAW,CAC1C,gBAAgB,EAChB,4BAA4B,EAC5B,CAAC,YAAY,EAAE,SAAS,CAAC,EACzB,IAAI,EACJ,CAAC,EACD,IAAI,EACJ,SAAS,CAAC,4BAA4B,EACtC,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,SAAS,EACT,SAAS,EACT,SAAS,EACT,aAAa,CAChB,CAAC;YACF,sBAAsB,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/C,sBAAsB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACpD,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;gBACjD,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC3D,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACpC,CAAC,CAAC,CAAC;YACH,sBAAsB,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,EAAE;gBACpD,sBAAsB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;oBAC5C,EAAE,CAAC,OAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC;oBAC9C,EAAE,CAAC,OAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC;gBAClD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,CAAC;YAErD,sBAAsB,CAAC,SAAS,GAAG,KAAK,CAAC;YACzC,sBAAsB,CAAC,SAAS,GAAG,KAAK,CAAC;YAEzC,MAAM,QAAQ,GAAG,EAAE,CAAC;YACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;gBAClD,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,CAAC;aACzE;YAED,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;SACtC;aAAM;YACH,MAAM,QAAQ,GAAa,CAAC,eAAe,EAAE,SAAS,EAAE,2BAA2B,EAAE,gBAAgB,CAAC,CAAC;YAEvG,MAAM,sBAAsB,GAAG,IAAI,WAAW,CAC1C,gBAAgB,EAChB,6BAA6B,EAC7B,QAAQ,EACR,IAAI,EACJ,CAAC,EACD,IAAI,EACJ,SAAS,CAAC,4BAA4B,EACtC,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,SAAS,EACT,SAAS,EACT,SAAS,EACT,aAAa,CAChB,CAAC;YACF,sBAAsB,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/C,sBAAsB,CAAC,6BAA6B,GAAG,IAAI,CAAC;YAC5D,sBAAsB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACpD,IAAI,IAAI,CAAC,wBAAwB,KAAK,CAAC,EAAE;oBACrC,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;iBAC1D;qBAAM;oBACH,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;iBACtF;gBACD,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBACvD,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;gBAC3D,MAAM,CAAC,QAAQ,CAAC,2BAA2B,EAAE,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC;gBACnF,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;gBAC7D,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACpC,CAAC,CAAC,CAAC;YACH,sBAAsB,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,EAAE;gBACpD,sBAAsB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;oBAC5C,EAAE,CAAC,OAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC;oBAC9C,EAAE,CAAC,OAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC;gBAClD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,CAAC;YAErD,MAAM,sBAAsB,GAAG,IAAI,WAAW,CAC1C,gBAAgB,EAChB,6BAA6B,EAC7B,QAAQ,EACR,IAAI,EACJ,CAAC,EACD,IAAI,EACJ,SAAS,CAAC,4BAA4B,EACtC,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,SAAS,EACT,SAAS,EACT,SAAS,EACT,aAAa,CAChB,CAAC;YACF,sBAAsB,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/C,sBAAsB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACpD,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBACvD,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC3D,MAAM,CAAC,QAAQ,CAAC,2BAA2B,EAAE,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC;gBACnF,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;gBAC7D,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACpC,CAAC,CAAC,CAAC;YACH,sBAAsB,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,EAAE;gBACpD,sBAAsB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;oBAC5C,EAAE,CAAC,OAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC;oBAC9C,EAAE,CAAC,OAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC;gBAClD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,CAAC;YAErD,sBAAsB,CAAC,SAAS,GAAG,KAAK,CAAC;YACzC,sBAAsB,CAAC,SAAS,GAAG,KAAK,CAAC;YAEzC,MAAM,QAAQ,GAAG,EAAE,CAAC;YACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;gBAClD,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,CAAC;aACzE;YAED,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;SACtC;IACL,CAAC;IAEO,uBAAuB,CAAC,EAAe;QAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE;YAClB,OAAO;SACV;QAED,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,EAAE;YAC7B,wIAAwI;YACxI,EAAE,CAAC,wBAAwB,GAAG,CAAC,EAAE,CAAC,wBAAwB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE;YAC1B,yCAAyC;YACzC,EAAE,CAAC,wBAAwB,GAAG,CAAC,EAAE,CAAC,wBAAwB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,6BAA6B;QACjC,OAAO,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7I,CAAC;IAEO,kBAAkB;QACtB,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;IACzD,CAAC;IAEM,OAAO;QACV,IAAI,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,EAAE;YACzC,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;SAClD;QAED,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC;QACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,CAAC;QAChC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SACxC;QACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACnC,CAAC;CACJ","sourcesContent":["import type { Camera } from \"core/Cameras/camera\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport type { AbstractEngine } from \"core/Engines/abstractEngine\";\r\nimport type { RenderTargetWrapper } from \"core/Engines/renderTargetWrapper\";\r\nimport { Texture } from \"core/Materials/Textures/texture\";\r\nimport type { ThinTexture } from \"core/Materials/Textures/thinTexture\";\r\nimport { Vector2 } from \"core/Maths/math.vector\";\r\nimport { PostProcess } from \"core/PostProcesses/postProcess\";\r\nimport type { Scene } from \"core/scene\";\r\nimport type { Nullable } from \"core/types\";\r\nimport { Observable } from \"core/Misc/observable\";\r\n\r\n/** @internal */\r\nexport class FluidRenderingTextures {\r\n protected _name: string;\r\n protected _scene: Scene;\r\n protected _camera: Nullable<Camera>;\r\n protected _engine: AbstractEngine;\r\n protected _width: number;\r\n protected _height: number;\r\n protected _blurTextureSizeX: number;\r\n protected _blurTextureSizeY: number;\r\n protected _textureType: number;\r\n protected _textureFormat: number;\r\n protected _blurTextureType: number;\r\n protected _blurTextureFormat: number;\r\n protected _useStandardBlur: boolean;\r\n protected _generateDepthBuffer: boolean;\r\n protected _samples: number;\r\n protected _postProcessRunningIndex: number;\r\n\r\n protected _rt: Nullable<RenderTargetWrapper>;\r\n protected _texture: Nullable<Texture>;\r\n protected _rtBlur: Nullable<RenderTargetWrapper>;\r\n protected _textureBlurred: Nullable<Texture>;\r\n protected _blurPostProcesses: Nullable<PostProcess[]>;\r\n\r\n public enableBlur = true;\r\n\r\n public blurSizeDivisor = 1;\r\n\r\n public blurFilterSize = 7;\r\n\r\n private _blurNumIterations = 3;\r\n\r\n public get blurNumIterations() {\r\n return this._blurNumIterations;\r\n }\r\n\r\n public set blurNumIterations(numIterations: number) {\r\n if (this._blurNumIterations === numIterations) {\r\n return;\r\n }\r\n\r\n this._blurNumIterations = numIterations;\r\n if (this._blurPostProcesses !== null) {\r\n const blurX = this._blurPostProcesses[0];\r\n const blurY = this._blurPostProcesses[1];\r\n\r\n this._blurPostProcesses = [];\r\n for (let i = 0; i < this._blurNumIterations * 2; ++i) {\r\n this._blurPostProcesses[i] = i & 1 ? blurY : blurX;\r\n }\r\n }\r\n }\r\n\r\n public blurMaxFilterSize = 100;\r\n\r\n public blurDepthScale = 10;\r\n\r\n public particleSize = 0.02;\r\n\r\n public onDisposeObservable: Observable<FluidRenderingTextures> = new Observable<FluidRenderingTextures>();\r\n\r\n public get renderTarget() {\r\n return this._rt;\r\n }\r\n\r\n public get renderTargetBlur() {\r\n return this._rtBlur;\r\n }\r\n\r\n public get texture() {\r\n return this._texture;\r\n }\r\n\r\n public get textureBlur() {\r\n return this._textureBlurred;\r\n }\r\n\r\n constructor(\r\n name: string,\r\n scene: Scene,\r\n width: number,\r\n height: number,\r\n blurTextureSizeX: number,\r\n blurTextureSizeY: number,\r\n textureType: number = Constants.TEXTURETYPE_FLOAT,\r\n textureFormat: number = Constants.TEXTUREFORMAT_R,\r\n blurTextureType: number = Constants.TEXTURETYPE_FLOAT,\r\n blurTextureFormat: number = Constants.TEXTUREFORMAT_R,\r\n useStandardBlur = false,\r\n camera: Nullable<Camera> = null,\r\n generateDepthBuffer = true,\r\n samples = 1\r\n ) {\r\n this._name = name;\r\n this._scene = scene;\r\n this._camera = camera;\r\n this._engine = scene.getEngine();\r\n this._width = width;\r\n this._height = height;\r\n this._blurTextureSizeX = blurTextureSizeX;\r\n this._blurTextureSizeY = blurTextureSizeY;\r\n this._textureType = textureType;\r\n this._textureFormat = textureFormat;\r\n this._blurTextureType = blurTextureType;\r\n this._blurTextureFormat = blurTextureFormat;\r\n this._useStandardBlur = useStandardBlur;\r\n this._generateDepthBuffer = generateDepthBuffer;\r\n this._samples = samples;\r\n this._postProcessRunningIndex = 0;\r\n this.enableBlur = blurTextureSizeX !== 0 && blurTextureSizeY !== 0;\r\n\r\n this._rt = null;\r\n this._texture = null;\r\n this._rtBlur = null;\r\n this._textureBlurred = null;\r\n this._blurPostProcesses = null;\r\n }\r\n\r\n public initialize(): void {\r\n this.dispose();\r\n\r\n this._createRenderTarget();\r\n\r\n if (this.enableBlur && this._texture) {\r\n const [rtBlur, textureBlurred, blurPostProcesses] = this._createBlurPostProcesses(\r\n this._texture,\r\n this._blurTextureType,\r\n this._blurTextureFormat,\r\n this.blurSizeDivisor,\r\n this._name,\r\n this._useStandardBlur\r\n );\r\n this._rtBlur = rtBlur;\r\n this._textureBlurred = textureBlurred;\r\n this._blurPostProcesses = blurPostProcesses;\r\n }\r\n }\r\n\r\n public applyBlurPostProcesses(): void {\r\n if (this.enableBlur && this._blurPostProcesses) {\r\n this._postProcessRunningIndex = 0;\r\n this._scene.postProcessManager.directRender(this._blurPostProcesses, this._rtBlur, true);\r\n this._engine.unBindFramebuffer(this._rtBlur!);\r\n }\r\n }\r\n\r\n protected _createRenderTarget(): void {\r\n this._rt = this._engine.createRenderTargetTexture(\r\n { width: this._width, height: this._height },\r\n {\r\n generateMipMaps: false,\r\n type: this._textureType,\r\n format: this._textureFormat,\r\n samplingMode: Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n generateDepthBuffer: this._generateDepthBuffer,\r\n generateStencilBuffer: false,\r\n samples: this._samples,\r\n label: `FluidRenderingRTT-${this._name}`,\r\n }\r\n );\r\n\r\n const renderTexture = this._rt.texture!;\r\n\r\n renderTexture.incrementReferences();\r\n\r\n this._texture = new Texture(null, this._scene);\r\n this._texture.name = \"rtt\" + this._name;\r\n this._texture._texture = renderTexture;\r\n this._texture.wrapU = Texture.CLAMP_ADDRESSMODE;\r\n this._texture.wrapV = Texture.CLAMP_ADDRESSMODE;\r\n this._texture.anisotropicFilteringLevel = 1;\r\n }\r\n\r\n protected _createBlurPostProcesses(\r\n textureBlurSource: ThinTexture,\r\n textureType: number,\r\n textureFormat: number,\r\n blurSizeDivisor: number,\r\n debugName: string,\r\n useStandardBlur = false\r\n ): [RenderTargetWrapper, Texture, PostProcess[]] {\r\n const engine = this._scene.getEngine();\r\n const targetSize = new Vector2(Math.floor(this._blurTextureSizeX / blurSizeDivisor), Math.floor(this._blurTextureSizeY / blurSizeDivisor));\r\n const useBilinearFiltering =\r\n (textureType === Constants.TEXTURETYPE_FLOAT && engine.getCaps().textureFloatLinearFiltering) ||\r\n (textureType === Constants.TEXTURETYPE_HALF_FLOAT && engine.getCaps().textureHalfFloatLinearFiltering);\r\n\r\n const rtBlur = this._engine.createRenderTargetTexture(\r\n { width: targetSize.x, height: targetSize.y },\r\n {\r\n generateMipMaps: false,\r\n type: textureType,\r\n format: textureFormat,\r\n samplingMode: useBilinearFiltering ? Constants.TEXTURE_BILINEAR_SAMPLINGMODE : Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n generateDepthBuffer: false,\r\n generateStencilBuffer: false,\r\n samples: this._samples,\r\n label: `FluidRenderingRTTBlur-${debugName}`,\r\n }\r\n );\r\n\r\n const renderTexture = rtBlur.texture!;\r\n\r\n renderTexture.incrementReferences();\r\n\r\n const texture = new Texture(null, this._scene);\r\n texture.name = \"rttBlurred\" + debugName;\r\n texture._texture = renderTexture;\r\n texture.wrapU = Texture.CLAMP_ADDRESSMODE;\r\n texture.wrapV = Texture.CLAMP_ADDRESSMODE;\r\n texture.anisotropicFilteringLevel = 1;\r\n\r\n if (useStandardBlur) {\r\n const kernelBlurXPostprocess = new PostProcess(\r\n \"BilateralBlurX\",\r\n \"fluidRenderingStandardBlur\",\r\n [\"filterSize\", \"blurDir\"],\r\n null,\r\n 1,\r\n null,\r\n Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n engine,\r\n true,\r\n null,\r\n textureType,\r\n undefined,\r\n undefined,\r\n undefined,\r\n textureFormat\r\n );\r\n kernelBlurXPostprocess.samples = this._samples;\r\n kernelBlurXPostprocess.externalTextureSamplerBinding = true;\r\n kernelBlurXPostprocess.onApplyObservable.add((effect) => {\r\n if (this._postProcessRunningIndex === 0) {\r\n effect.setTexture(\"textureSampler\", textureBlurSource);\r\n } else {\r\n effect._bindTexture(\"textureSampler\", kernelBlurXPostprocess.inputTexture.texture);\r\n }\r\n effect.setInt(\"filterSize\", this.blurFilterSize);\r\n effect.setFloat2(\"blurDir\", 1 / this._blurTextureSizeX, 0);\r\n this._postProcessRunningIndex++;\r\n });\r\n kernelBlurXPostprocess.onSizeChangedObservable.add(() => {\r\n kernelBlurXPostprocess._textures.forEach((rt) => {\r\n rt.texture!.wrapU = Texture.CLAMP_ADDRESSMODE;\r\n rt.texture!.wrapV = Texture.CLAMP_ADDRESSMODE;\r\n });\r\n });\r\n this._fixReusablePostProcess(kernelBlurXPostprocess);\r\n\r\n const kernelBlurYPostprocess = new PostProcess(\r\n \"BilateralBlurY\",\r\n \"fluidRenderingStandardBlur\",\r\n [\"filterSize\", \"blurDir\"],\r\n null,\r\n 1,\r\n null,\r\n Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n engine,\r\n true,\r\n null,\r\n textureType,\r\n undefined,\r\n undefined,\r\n undefined,\r\n textureFormat\r\n );\r\n kernelBlurYPostprocess.samples = this._samples;\r\n kernelBlurYPostprocess.onApplyObservable.add((effect) => {\r\n effect.setInt(\"filterSize\", this.blurFilterSize);\r\n effect.setFloat2(\"blurDir\", 0, 1 / this._blurTextureSizeY);\r\n this._postProcessRunningIndex++;\r\n });\r\n kernelBlurYPostprocess.onSizeChangedObservable.add(() => {\r\n kernelBlurYPostprocess._textures.forEach((rt) => {\r\n rt.texture!.wrapU = Texture.CLAMP_ADDRESSMODE;\r\n rt.texture!.wrapV = Texture.CLAMP_ADDRESSMODE;\r\n });\r\n });\r\n this._fixReusablePostProcess(kernelBlurYPostprocess);\r\n\r\n kernelBlurXPostprocess.autoClear = false;\r\n kernelBlurYPostprocess.autoClear = false;\r\n\r\n const blurList = [];\r\n for (let i = 0; i < this._blurNumIterations * 2; ++i) {\r\n blurList[i] = i & 1 ? kernelBlurYPostprocess : kernelBlurXPostprocess;\r\n }\r\n\r\n return [rtBlur, texture, blurList];\r\n } else {\r\n const uniforms: string[] = [\"maxFilterSize\", \"blurDir\", \"projectedParticleConstant\", \"depthThreshold\"];\r\n\r\n const kernelBlurXPostprocess = new PostProcess(\r\n \"BilateralBlurX\",\r\n \"fluidRenderingBilateralBlur\",\r\n uniforms,\r\n null,\r\n 1,\r\n null,\r\n Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n engine,\r\n true,\r\n null,\r\n textureType,\r\n undefined,\r\n undefined,\r\n undefined,\r\n textureFormat\r\n );\r\n kernelBlurXPostprocess.samples = this._samples;\r\n kernelBlurXPostprocess.externalTextureSamplerBinding = true;\r\n kernelBlurXPostprocess.onApplyObservable.add((effect) => {\r\n if (this._postProcessRunningIndex === 0) {\r\n effect.setTexture(\"textureSampler\", textureBlurSource);\r\n } else {\r\n effect._bindTexture(\"textureSampler\", kernelBlurXPostprocess.inputTexture.texture);\r\n }\r\n effect.setInt(\"maxFilterSize\", this.blurMaxFilterSize);\r\n effect.setFloat2(\"blurDir\", 1 / this._blurTextureSizeX, 0);\r\n effect.setFloat(\"projectedParticleConstant\", this._getProjectedParticleConstant());\r\n effect.setFloat(\"depthThreshold\", this._getDepthThreshold());\r\n this._postProcessRunningIndex++;\r\n });\r\n kernelBlurXPostprocess.onSizeChangedObservable.add(() => {\r\n kernelBlurXPostprocess._textures.forEach((rt) => {\r\n rt.texture!.wrapU = Texture.CLAMP_ADDRESSMODE;\r\n rt.texture!.wrapV = Texture.CLAMP_ADDRESSMODE;\r\n });\r\n });\r\n this._fixReusablePostProcess(kernelBlurXPostprocess);\r\n\r\n const kernelBlurYPostprocess = new PostProcess(\r\n \"BilateralBlurY\",\r\n \"fluidRenderingBilateralBlur\",\r\n uniforms,\r\n null,\r\n 1,\r\n null,\r\n Constants.TEXTURE_NEAREST_SAMPLINGMODE,\r\n engine,\r\n true,\r\n null,\r\n textureType,\r\n undefined,\r\n undefined,\r\n undefined,\r\n textureFormat\r\n );\r\n kernelBlurYPostprocess.samples = this._samples;\r\n kernelBlurYPostprocess.onApplyObservable.add((effect) => {\r\n effect.setInt(\"maxFilterSize\", this.blurMaxFilterSize);\r\n effect.setFloat2(\"blurDir\", 0, 1 / this._blurTextureSizeY);\r\n effect.setFloat(\"projectedParticleConstant\", this._getProjectedParticleConstant());\r\n effect.setFloat(\"depthThreshold\", this._getDepthThreshold());\r\n this._postProcessRunningIndex++;\r\n });\r\n kernelBlurYPostprocess.onSizeChangedObservable.add(() => {\r\n kernelBlurYPostprocess._textures.forEach((rt) => {\r\n rt.texture!.wrapU = Texture.CLAMP_ADDRESSMODE;\r\n rt.texture!.wrapV = Texture.CLAMP_ADDRESSMODE;\r\n });\r\n });\r\n this._fixReusablePostProcess(kernelBlurYPostprocess);\r\n\r\n kernelBlurXPostprocess.autoClear = false;\r\n kernelBlurYPostprocess.autoClear = false;\r\n\r\n const blurList = [];\r\n for (let i = 0; i < this._blurNumIterations * 2; ++i) {\r\n blurList[i] = i & 1 ? kernelBlurYPostprocess : kernelBlurXPostprocess;\r\n }\r\n\r\n return [rtBlur, texture, blurList];\r\n }\r\n }\r\n\r\n private _fixReusablePostProcess(pp: PostProcess) {\r\n if (!pp.isReusable()) {\r\n return;\r\n }\r\n\r\n pp.onActivateObservable.add(() => {\r\n // undo what calling activate() does which will make sure we will retrieve the right texture when getting the input for the post process\r\n pp._currentRenderTextureInd = (pp._currentRenderTextureInd + 1) % 2;\r\n });\r\n pp.onApplyObservable.add(() => {\r\n // now we can advance to the next texture\r\n pp._currentRenderTextureInd = (pp._currentRenderTextureInd + 1) % 2;\r\n });\r\n }\r\n\r\n private _getProjectedParticleConstant() {\r\n return (this.blurFilterSize * this.particleSize * 0.05 * (this._height / 2)) / Math.tan((this._camera?.fov ?? (45 * Math.PI) / 180) / 2);\r\n }\r\n\r\n private _getDepthThreshold() {\r\n return (this.particleSize / 2) * this.blurDepthScale;\r\n }\r\n\r\n public dispose(): void {\r\n if (this.onDisposeObservable.hasObservers()) {\r\n this.onDisposeObservable.notifyObservers(this);\r\n }\r\n\r\n this._rt?.dispose();\r\n this._rt = null;\r\n this._texture?.dispose();\r\n this._texture = null;\r\n this._rtBlur?.dispose();\r\n this._rtBlur = null;\r\n this._textureBlurred?.dispose();\r\n this._textureBlurred = null;\r\n if (this._blurPostProcesses) {\r\n this._blurPostProcesses[0].dispose();\r\n this._blurPostProcesses[1].dispose();\r\n }\r\n this._blurPostProcesses = null;\r\n }\r\n}\r\n"]}
|
|
@@ -324,25 +324,27 @@ export class GeometryBufferRenderer {
|
|
|
324
324
|
// for PBR materials: cf. https://doc.babylonjs.com/features/featuresDeepDive/materials/using/masterPBR
|
|
325
325
|
if (material.getClassName() === "PBRMetallicRoughnessMaterial") {
|
|
326
326
|
// if it is a PBR material in MetallicRoughness Mode:
|
|
327
|
-
if (material.metallicRoughnessTexture
|
|
327
|
+
if (material.metallicRoughnessTexture) {
|
|
328
328
|
defines.push("#define ORMTEXTURE");
|
|
329
329
|
defines.push(`#define REFLECTIVITY_UV${material.metallicRoughnessTexture.coordinatesIndex + 1}`);
|
|
330
330
|
defines.push("#define METALLICWORKFLOW");
|
|
331
331
|
needUv = true;
|
|
332
332
|
metallicWorkflow = true;
|
|
333
333
|
}
|
|
334
|
-
|
|
334
|
+
// null or undefined
|
|
335
|
+
if (material.metallic != null) {
|
|
335
336
|
defines.push("#define METALLIC");
|
|
336
337
|
defines.push("#define METALLICWORKFLOW");
|
|
337
338
|
metallicWorkflow = true;
|
|
338
339
|
}
|
|
339
|
-
|
|
340
|
+
// null or undefined
|
|
341
|
+
if (material.roughness != null) {
|
|
340
342
|
defines.push("#define ROUGHNESS");
|
|
341
343
|
defines.push("#define METALLICWORKFLOW");
|
|
342
344
|
metallicWorkflow = true;
|
|
343
345
|
}
|
|
344
346
|
if (metallicWorkflow) {
|
|
345
|
-
if (material.baseTexture
|
|
347
|
+
if (material.baseTexture) {
|
|
346
348
|
defines.push("#define ALBEDOTEXTURE");
|
|
347
349
|
defines.push(`#define ALBEDO_UV${material.baseTexture.coordinatesIndex + 1}`);
|
|
348
350
|
if (material.baseTexture.gammaSpace) {
|
|
@@ -350,14 +352,14 @@ export class GeometryBufferRenderer {
|
|
|
350
352
|
}
|
|
351
353
|
needUv = true;
|
|
352
354
|
}
|
|
353
|
-
if (material.baseColor
|
|
355
|
+
if (material.baseColor) {
|
|
354
356
|
defines.push("#define ALBEDOCOLOR");
|
|
355
357
|
}
|
|
356
358
|
}
|
|
357
359
|
}
|
|
358
360
|
else if (material.getClassName() === "PBRSpecularGlossinessMaterial") {
|
|
359
361
|
// if it is a PBR material in Specular/Glossiness Mode:
|
|
360
|
-
if (material.specularGlossinessTexture
|
|
362
|
+
if (material.specularGlossinessTexture) {
|
|
361
363
|
defines.push("#define SPECULARGLOSSINESSTEXTURE");
|
|
362
364
|
defines.push(`#define REFLECTIVITY_UV${material.specularGlossinessTexture.coordinatesIndex + 1}`);
|
|
363
365
|
needUv = true;
|
|
@@ -366,35 +368,38 @@ export class GeometryBufferRenderer {
|
|
|
366
368
|
}
|
|
367
369
|
}
|
|
368
370
|
else {
|
|
369
|
-
if (material.specularColor
|
|
371
|
+
if (material.specularColor) {
|
|
370
372
|
defines.push("#define REFLECTIVITYCOLOR");
|
|
371
373
|
}
|
|
372
374
|
}
|
|
373
|
-
|
|
375
|
+
// null or undefined
|
|
376
|
+
if (material.glossiness != null) {
|
|
374
377
|
defines.push("#define GLOSSINESS");
|
|
375
378
|
}
|
|
376
379
|
}
|
|
377
380
|
else if (material.getClassName() === "PBRMaterial") {
|
|
378
381
|
// if it is the bigger PBRMaterial
|
|
379
|
-
if (material.metallicTexture
|
|
382
|
+
if (material.metallicTexture) {
|
|
380
383
|
defines.push("#define ORMTEXTURE");
|
|
381
384
|
defines.push(`#define REFLECTIVITY_UV${material.metallicTexture.coordinatesIndex + 1}`);
|
|
382
385
|
defines.push("#define METALLICWORKFLOW");
|
|
383
386
|
needUv = true;
|
|
384
387
|
metallicWorkflow = true;
|
|
385
388
|
}
|
|
386
|
-
|
|
389
|
+
// null or undefined
|
|
390
|
+
if (material.metallic != null) {
|
|
387
391
|
defines.push("#define METALLIC");
|
|
388
392
|
defines.push("#define METALLICWORKFLOW");
|
|
389
393
|
metallicWorkflow = true;
|
|
390
394
|
}
|
|
391
|
-
|
|
395
|
+
// null or undefined
|
|
396
|
+
if (material.roughness != null) {
|
|
392
397
|
defines.push("#define ROUGHNESS");
|
|
393
398
|
defines.push("#define METALLICWORKFLOW");
|
|
394
399
|
metallicWorkflow = true;
|
|
395
400
|
}
|
|
396
401
|
if (metallicWorkflow) {
|
|
397
|
-
if (material.albedoTexture
|
|
402
|
+
if (material.albedoTexture) {
|
|
398
403
|
defines.push("#define ALBEDOTEXTURE");
|
|
399
404
|
defines.push(`#define ALBEDO_UV${material.albedoTexture.coordinatesIndex + 1}`);
|
|
400
405
|
if (material.albedoTexture.gammaSpace) {
|
|
@@ -402,13 +407,13 @@ export class GeometryBufferRenderer {
|
|
|
402
407
|
}
|
|
403
408
|
needUv = true;
|
|
404
409
|
}
|
|
405
|
-
if (material.albedoColor
|
|
410
|
+
if (material.albedoColor) {
|
|
406
411
|
defines.push("#define ALBEDOCOLOR");
|
|
407
412
|
}
|
|
408
413
|
}
|
|
409
414
|
else {
|
|
410
415
|
// SpecularGlossiness Model
|
|
411
|
-
if (material.reflectivityTexture
|
|
416
|
+
if (material.reflectivityTexture) {
|
|
412
417
|
defines.push("#define SPECULARGLOSSINESSTEXTURE");
|
|
413
418
|
defines.push(`#define REFLECTIVITY_UV${material.reflectivityTexture.coordinatesIndex + 1}`);
|
|
414
419
|
if (material.reflectivityTexture.gammaSpace) {
|
|
@@ -416,17 +421,18 @@ export class GeometryBufferRenderer {
|
|
|
416
421
|
}
|
|
417
422
|
needUv = true;
|
|
418
423
|
}
|
|
419
|
-
else if (material.reflectivityColor
|
|
424
|
+
else if (material.reflectivityColor) {
|
|
420
425
|
defines.push("#define REFLECTIVITYCOLOR");
|
|
421
426
|
}
|
|
422
|
-
|
|
427
|
+
// null or undefined
|
|
428
|
+
if (material.microSurface != null) {
|
|
423
429
|
defines.push("#define GLOSSINESS");
|
|
424
430
|
}
|
|
425
431
|
}
|
|
426
432
|
}
|
|
427
433
|
else if (material.getClassName() === "StandardMaterial") {
|
|
428
434
|
// if StandardMaterial:
|
|
429
|
-
if (material.specularTexture
|
|
435
|
+
if (material.specularTexture) {
|
|
430
436
|
defines.push("#define REFLECTIVITYTEXTURE");
|
|
431
437
|
defines.push(`#define REFLECTIVITY_UV${material.specularTexture.coordinatesIndex + 1}`);
|
|
432
438
|
if (material.specularTexture.gammaSpace) {
|
|
@@ -434,7 +440,7 @@ export class GeometryBufferRenderer {
|
|
|
434
440
|
}
|
|
435
441
|
needUv = true;
|
|
436
442
|
}
|
|
437
|
-
if (material.specularColor
|
|
443
|
+
if (material.specularColor) {
|
|
438
444
|
defines.push("#define REFLECTIVITYCOLOR");
|
|
439
445
|
}
|
|
440
446
|
}
|