@onerjs/core 8.53.5 → 8.53.6
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/animationGroup.d.ts +0 -1
- package/Animations/animationGroup.js +0 -1
- package/Animations/animationGroup.js.map +1 -1
- package/Animations/animationGroup.pure.js +2 -0
- package/Animations/animationGroup.pure.js.map +1 -1
- package/Animations/runtimeAnimation.js +11 -0
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Audio/audioSceneComponent.pure.js +1 -1
- package/AudioV2/abstractAudio/abstractSound.d.ts +2 -1
- package/AudioV2/abstractAudio/abstractSound.js +7 -2
- package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
- package/AudioV2/abstractAudio/abstractSoundInstance.d.ts +3 -1
- package/AudioV2/abstractAudio/abstractSoundInstance.js.map +1 -1
- package/AudioV2/abstractAudio/staticSound.d.ts +6 -0
- package/AudioV2/abstractAudio/staticSound.js +17 -1
- package/AudioV2/abstractAudio/staticSound.js.map +1 -1
- package/AudioV2/abstractAudio/staticSoundInstance.d.ts +4 -2
- package/AudioV2/abstractAudio/staticSoundInstance.js.map +1 -1
- package/AudioV2/abstractAudio/streamingSound.d.ts +6 -0
- package/AudioV2/abstractAudio/streamingSound.js +9 -1
- package/AudioV2/abstractAudio/streamingSound.js.map +1 -1
- package/AudioV2/webAudio/webAudioStaticSound.d.ts +7 -1
- package/AudioV2/webAudio/webAudioStaticSound.js +56 -8
- package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
- package/AudioV2/webAudio/webAudioStreamingSound.d.ts +3 -1
- package/AudioV2/webAudio/webAudioStreamingSound.js +16 -4
- package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +2 -2
- package/BakedVertexAnimation/bakedVertexAnimationManager.js +151 -121
- package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
- package/Behaviors/Cameras/interpolatingBehavior.d.ts +17 -2
- package/Behaviors/Cameras/interpolatingBehavior.js +53 -23
- package/Behaviors/Cameras/interpolatingBehavior.js.map +1 -1
- package/Bones/bone.pure.js +3 -3
- package/Buffers/buffer.pure.js +0 -12
- package/Buffers/buffer.pure.js.map +1 -1
- package/Cameras/Inputs/BaseCameraMouseWheelInput.js +141 -126
- package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/BaseCameraPointersInput.d.ts +2 -1
- package/Cameras/Inputs/BaseCameraPointersInput.js +290 -277
- package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraGamepadInput.js +115 -102
- package/Cameras/Inputs/arcRotateCameraGamepadInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.d.ts +3 -0
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +334 -273
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +273 -258
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraPointersInput.js +237 -213
- package/Cameras/Inputs/arcRotateCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/flyCameraKeyboardInput.js +199 -168
- package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
- package/Cameras/Inputs/flyCameraMouseInput.js +243 -229
- package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/followCameraKeyboardMoveInput.js +311 -266
- package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/followCameraMouseWheelInput.js +139 -119
- package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/followCameraPointersInput.js +239 -203
- package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraGamepadInput.js +127 -114
- package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +278 -244
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseInput.js +216 -202
- package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseWheelInput.js +368 -353
- package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraTouchInput.js +185 -172
- package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
- package/Cameras/Inputs/geospatialCameraKeyboardInput.d.ts +2 -0
- package/Cameras/Inputs/geospatialCameraKeyboardInput.js +291 -246
- package/Cameras/Inputs/geospatialCameraKeyboardInput.js.map +1 -1
- package/Cameras/Inputs/geospatialCameraPointersInput.d.ts +11 -1
- package/Cameras/Inputs/geospatialCameraPointersInput.js +18 -2
- package/Cameras/Inputs/geospatialCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/orbitCameraPointersInput.js +112 -96
- package/Cameras/Inputs/orbitCameraPointersInput.js.map +1 -1
- package/Cameras/VR/vrExperienceHelper.d.ts +0 -2
- package/Cameras/VR/vrExperienceHelper.js +0 -2
- package/Cameras/VR/vrExperienceHelper.js.map +1 -1
- package/Cameras/VR/vrExperienceHelper.pure.js +5 -0
- package/Cameras/VR/vrExperienceHelper.pure.js.map +1 -1
- package/Cameras/arcRotateCamera.pure.js +1559 -1479
- package/Cameras/arcRotateCamera.pure.js.map +1 -1
- package/Cameras/camera.pure.js +1225 -1178
- package/Cameras/camera.pure.js.map +1 -1
- package/Cameras/flyCamera.pure.js +369 -351
- package/Cameras/flyCamera.pure.js.map +1 -1
- package/Cameras/followCamera.pure.js +229 -192
- package/Cameras/followCamera.pure.js.map +1 -1
- package/Cameras/freeCamera.pure.js +373 -351
- package/Cameras/freeCamera.pure.js.map +1 -1
- package/Cameras/geospatialCamera.pure.d.ts +30 -7
- package/Cameras/geospatialCamera.pure.js +502 -457
- package/Cameras/geospatialCamera.pure.js.map +1 -1
- package/Cameras/geospatialCameraMovement.js +2 -2
- package/Cameras/geospatialCameraMovement.js.map +1 -1
- package/Cameras/targetCamera.pure.d.ts +7 -0
- package/Cameras/targetCamera.pure.js +550 -509
- package/Cameras/targetCamera.pure.js.map +1 -1
- package/Cameras/universalCamera.pure.js +98 -85
- package/Cameras/universalCamera.pure.js.map +1 -1
- package/Collisions/gpuPicker.d.ts +111 -4
- package/Collisions/gpuPicker.js +696 -119
- package/Collisions/gpuPicker.js.map +1 -1
- package/Compute/computeShader.pure.js +372 -355
- package/Compute/computeShader.pure.js.map +1 -1
- package/Culling/Helper/transformFeedbackBoundingHelper.pure.js +2 -2
- package/Decorators/nodeDecorator.d.ts +11 -1
- package/Decorators/nodeDecorator.js +43 -6
- package/Decorators/nodeDecorator.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js +8 -0
- package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js.map +1 -1
- package/Engines/Native/nativeHelpers.js +15 -0
- package/Engines/Native/nativeHelpers.js.map +1 -1
- package/Engines/Native/nativeInterfaces.d.ts +7 -2
- package/Engines/Native/nativeInterfaces.js.map +1 -1
- package/Engines/Native/nativeRenderTargetWrapper.d.ts +5 -0
- package/Engines/Native/nativeRenderTargetWrapper.js +35 -1
- package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
- package/Engines/Processors/shaderProcessor.js +5 -3
- package/Engines/Processors/shaderProcessor.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js +16 -3
- package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js.map +1 -1
- package/Engines/WebGPU/webgpuClearQuad.pure.js +7 -1
- package/Engines/WebGPU/webgpuClearQuad.pure.js.map +1 -1
- package/Engines/abstractEngine.functions.d.ts +8 -2
- package/Engines/abstractEngine.functions.js +12 -4
- package/Engines/abstractEngine.functions.js.map +1 -1
- package/Engines/abstractEngine.pure.d.ts +20 -1
- package/Engines/abstractEngine.pure.js +21 -134
- package/Engines/abstractEngine.pure.js.map +1 -1
- package/Engines/engine.d.ts +208 -0
- package/Engines/engine.pure.js +0 -15
- package/Engines/engine.pure.js.map +1 -1
- package/Engines/nullEngine.pure.d.ts +66 -0
- package/Engines/nullEngine.pure.js +97 -0
- package/Engines/nullEngine.pure.js.map +1 -1
- package/Engines/thinEngine.pure.d.ts +0 -13
- package/Engines/thinEngine.pure.js +4 -23
- package/Engines/thinEngine.pure.js.map +1 -1
- package/Engines/thinNativeEngine.d.ts +0 -1
- package/Engines/thinNativeEngine.js +0 -1
- package/Engines/thinNativeEngine.js.map +1 -1
- package/Engines/thinNativeEngine.pure.d.ts +27 -0
- package/Engines/thinNativeEngine.pure.js +383 -17
- package/Engines/thinNativeEngine.pure.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +1 -0
- package/Engines/webgpuEngine.js +1 -0
- package/Engines/webgpuEngine.js.map +1 -1
- package/Engines/webgpuEngine.pure.d.ts +9 -0
- package/Engines/webgpuEngine.pure.js +7 -0
- package/Engines/webgpuEngine.pure.js.map +1 -1
- package/FlowGraph/flowGraph.js +9 -0
- package/FlowGraph/flowGraph.js.map +1 -1
- package/FlowGraph/flowGraphContext.js +597 -584
- package/FlowGraph/flowGraphContext.js.map +1 -1
- package/FlowGraph/flowGraphDataConnection.pure.d.ts +14 -0
- package/FlowGraph/flowGraphDataConnection.pure.js +38 -1
- package/FlowGraph/flowGraphDataConnection.pure.js.map +1 -1
- package/FlowGraph/serialization.d.ts +11 -0
- package/FlowGraph/serialization.js +11 -1
- package/FlowGraph/serialization.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js +182 -170
- package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js +196 -184
- package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js +222 -210
- package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +123 -111
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js +158 -146
- package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js +63 -51
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js +122 -110
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js +76 -64
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js +89 -77
- package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js +134 -122
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js +58 -46
- package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js +107 -95
- package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js +181 -169
- package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js +63 -51
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js +63 -51
- package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js +76 -64
- package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js +246 -234
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js +108 -96
- package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js +87 -75
- package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js +76 -64
- package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js +313 -301
- package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js +502 -490
- package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js +147 -135
- package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js +90 -78
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js +179 -167
- package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +462 -451
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js +265 -253
- package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js +204 -192
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js +611 -550
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js +320 -308
- package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js +87 -75
- package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js +154 -142
- package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js +150 -138
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/inputBlock.pure.js +270 -256
- package/FrameGraph/Node/Blocks/inputBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js +95 -83
- package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js +715 -693
- package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraphBlock.js +548 -533
- package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.d.ts +2 -2
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js +43 -51
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.d.ts +0 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js +0 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.d.ts +0 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js +66 -35
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js.map +1 -1
- package/Helpers/environmentHelper.js +2 -2
- package/Helpers/environmentHelper.js.map +1 -1
- package/Layers/effectLayer.js +529 -519
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/glowLayer.pure.js +428 -413
- package/Layers/glowLayer.pure.js.map +1 -1
- package/Layers/highlightLayer.pure.js +473 -458
- package/Layers/highlightLayer.pure.js.map +1 -1
- package/Layers/selectionOutlineLayer.pure.js +360 -345
- package/Layers/selectionOutlineLayer.pure.js.map +1 -1
- package/Lights/Clustered/clusteredLightContainer.pure.d.ts +1 -1
- package/Lights/Clustered/clusteredLightContainer.pure.js +583 -558
- package/Lights/Clustered/clusteredLightContainer.pure.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.js +6 -1
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Lights/areaLight.pure.js +61 -39
- package/Lights/areaLight.pure.js.map +1 -1
- package/Lights/directionalLight.pure.js +308 -284
- package/Lights/directionalLight.pure.js.map +1 -1
- package/Lights/hemisphericLight.pure.js +123 -104
- package/Lights/hemisphericLight.pure.js.map +1 -1
- package/Lights/light.d.ts +5 -3
- package/Lights/light.js +869 -827
- package/Lights/light.js.map +1 -1
- package/Lights/pointLight.pure.js +185 -174
- package/Lights/pointLight.pure.js.map +1 -1
- package/Lights/rectAreaLight.pure.d.ts +17 -0
- package/Lights/rectAreaLight.pure.js +238 -159
- package/Lights/rectAreaLight.pure.js.map +1 -1
- package/Lights/shadowLight.js +280 -268
- package/Lights/shadowLight.js.map +1 -1
- package/Lights/spotLight.pure.js +460 -427
- package/Lights/spotLight.pure.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.pure.js +17 -5
- package/Loading/Plugins/babylonFileLoader.pure.js.map +1 -1
- package/Loading/sceneLoader.d.ts +5 -1
- package/Loading/sceneLoader.js +299 -402
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/Background/backgroundMaterial.pure.d.ts +18 -18
- package/Materials/Background/backgroundMaterial.pure.js +949 -794
- package/Materials/Background/backgroundMaterial.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.d.ts +15 -0
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +34 -1
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +9 -0
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +26 -2
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.d.ts +2 -1
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js +169 -149
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.pure.js +442 -429
- package/Materials/Node/Blocks/Dual/lightBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js +396 -383
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js +237 -220
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.pure.js +1 -1
- package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js +150 -133
- package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js +265 -250
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js +159 -142
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js +214 -201
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js +419 -400
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +3 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js +302 -289
- package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js +1327 -1272
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js +352 -337
- package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/refractionBlock.pure.js +297 -277
- package/Materials/Node/Blocks/PBR/refractionBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/sheenBlock.pure.js +146 -131
- package/Materials/Node/Blocks/PBR/sheenBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js +158 -145
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/clampBlock.pure.js +92 -77
- package/Materials/Node/Blocks/clampBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/cloudBlock.pure.js +145 -132
- package/Materials/Node/Blocks/cloudBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/conditionalBlock.pure.js +182 -169
- package/Materials/Node/Blocks/conditionalBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/curveBlock.pure.js +259 -246
- package/Materials/Node/Blocks/curveBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/debugBlock.pure.js +119 -106
- package/Materials/Node/Blocks/debugBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/loopBlock.pure.js +123 -110
- package/Materials/Node/Blocks/loopBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js +185 -172
- package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/remapBlock.pure.js +127 -112
- package/Materials/Node/Blocks/remapBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/transformBlock.pure.js +196 -185
- package/Materials/Node/Blocks/transformBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/triPlanarBlock.pure.js +451 -438
- package/Materials/Node/Blocks/triPlanarBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/trigonometryBlock.pure.js +184 -171
- package/Materials/Node/Blocks/trigonometryBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/waveBlock.pure.js +97 -84
- package/Materials/Node/Blocks/waveBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js +276 -263
- package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js.map +1 -1
- package/Materials/Node/nodeMaterial.pure.js +1765 -1737
- package/Materials/Node/nodeMaterial.pure.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.d.ts +3 -3
- package/Materials/PBR/openpbrMaterial.pure.d.ts +102 -102
- package/Materials/PBR/openpbrMaterial.pure.js +3115 -2243
- package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +3 -3
- package/Materials/PBR/pbrAnisotropicConfiguration.js +255 -227
- package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBRDFConfiguration.d.ts +9 -9
- package/Materials/PBR/pbrBRDFConfiguration.js +203 -155
- package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.pure.d.ts +1 -1
- package/Materials/PBR/pbrBaseMaterial.pure.js +1751 -1736
- package/Materials/PBR/pbrBaseMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +13 -13
- package/Materials/PBR/pbrBaseSimpleMaterial.js +205 -117
- package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
- package/Materials/PBR/pbrClearCoatConfiguration.d.ts +9 -9
- package/Materials/PBR/pbrClearCoatConfiguration.js +464 -406
- package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
- package/Materials/PBR/pbrIridescenceConfiguration.d.ts +3 -3
- package/Materials/PBR/pbrIridescenceConfiguration.js +271 -239
- package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
- package/Materials/PBR/pbrMaterial.pure.d.ts +66 -66
- package/Materials/PBR/pbrMaterial.pure.js +1041 -685
- package/Materials/PBR/pbrMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.d.ts +5 -5
- package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js +176 -115
- package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrSheenConfiguration.d.ts +7 -7
- package/Materials/PBR/pbrSheenConfiguration.js +314 -270
- package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.d.ts +5 -5
- package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js +172 -117
- package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +16 -16
- package/Materials/PBR/pbrSubSurfaceConfiguration.js +864 -764
- package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
- package/Materials/Textures/HTML/htmlInCanvasPolyfill.d.ts +43 -0
- package/Materials/Textures/HTML/htmlInCanvasPolyfill.js +64 -0
- package/Materials/Textures/HTML/htmlInCanvasPolyfill.js.map +1 -0
- package/Materials/Textures/HTML/htmlInteractionManager.d.ts +69 -0
- package/Materials/Textures/HTML/htmlInteractionManager.js +130 -0
- package/Materials/Textures/HTML/htmlInteractionManager.js.map +1 -0
- package/Materials/Textures/HTML/htmlRaycastInteractionManager.d.ts +84 -0
- package/Materials/Textures/HTML/htmlRaycastInteractionManager.js +246 -0
- package/Materials/Textures/HTML/htmlRaycastInteractionManager.js.map +1 -0
- package/Materials/Textures/HTML/htmlTexture.d.ts +148 -0
- package/Materials/Textures/HTML/htmlTexture.js +455 -0
- package/Materials/Textures/HTML/htmlTexture.js.map +1 -0
- package/Materials/Textures/HTML/index.d.ts +4 -0
- package/Materials/Textures/HTML/index.js +5 -0
- package/Materials/Textures/HTML/index.js.map +1 -0
- package/Materials/Textures/HTML/pure.d.ts +5 -0
- package/Materials/Textures/HTML/pure.js +6 -0
- package/Materials/Textures/HTML/pure.js.map +1 -0
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js +671 -643
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
- package/Materials/Textures/baseTexture.pure.js +880 -825
- package/Materials/Textures/baseTexture.pure.js.map +1 -1
- package/Materials/Textures/cubeTexture.d.ts +0 -1
- package/Materials/Textures/cubeTexture.js +0 -1
- package/Materials/Textures/cubeTexture.js.map +1 -1
- package/Materials/Textures/cubeTexture.pure.js +368 -333
- package/Materials/Textures/cubeTexture.pure.js.map +1 -1
- package/Materials/Textures/dynamicTexture.d.ts +0 -1
- package/Materials/Textures/dynamicTexture.js +0 -1
- package/Materials/Textures/dynamicTexture.js.map +1 -1
- package/Materials/Textures/dynamicTexture.pure.js +2 -0
- package/Materials/Textures/dynamicTexture.pure.js.map +1 -1
- package/Materials/Textures/htmlElementTexture.d.ts +0 -2
- package/Materials/Textures/htmlElementTexture.js +0 -2
- package/Materials/Textures/htmlElementTexture.js.map +1 -1
- package/Materials/Textures/htmlElementTexture.pure.js +4 -0
- package/Materials/Textures/htmlElementTexture.pure.js.map +1 -1
- package/Materials/Textures/index.d.ts +1 -0
- package/Materials/Textures/index.js +1 -1
- package/Materials/Textures/index.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.d.ts +0 -1
- package/Materials/Textures/multiRenderTarget.js +0 -1
- package/Materials/Textures/multiRenderTarget.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.pure.js +2 -0
- package/Materials/Textures/multiRenderTarget.pure.js.map +1 -1
- package/Materials/Textures/pure.d.ts +1 -0
- package/Materials/Textures/pure.js +1 -0
- package/Materials/Textures/pure.js.map +1 -1
- package/Materials/Textures/texture.pure.js +961 -923
- package/Materials/Textures/texture.pure.js.map +1 -1
- package/Materials/Textures/videoTexture.pure.d.ts +3 -0
- package/Materials/Textures/videoTexture.pure.js +450 -401
- package/Materials/Textures/videoTexture.pure.js.map +1 -1
- package/Materials/colorCurves.pure.js +510 -477
- package/Materials/colorCurves.pure.js.map +1 -1
- package/Materials/effect.pure.js +0 -7
- package/Materials/effect.pure.js.map +1 -1
- package/Materials/imageProcessing.js +12 -4
- package/Materials/imageProcessing.js.map +1 -1
- package/Materials/imageProcessingConfiguration.pure.js +647 -587
- package/Materials/imageProcessingConfiguration.pure.js.map +1 -1
- package/Materials/material.decalMapConfiguration.pure.d.ts +2 -2
- package/Materials/material.decalMapConfiguration.pure.js +149 -130
- package/Materials/material.decalMapConfiguration.pure.js.map +1 -1
- package/Materials/material.detailMapConfiguration.d.ts +3 -3
- package/Materials/material.detailMapConfiguration.js +213 -175
- package/Materials/material.detailMapConfiguration.js.map +1 -1
- package/Materials/material.pure.js +1815 -1721
- package/Materials/material.pure.js.map +1 -1
- package/Materials/materialPluginBase.pure.js +270 -249
- package/Materials/materialPluginBase.pure.js.map +1 -1
- package/Materials/materialPluginManager.pure.js +18 -8
- package/Materials/materialPluginManager.pure.js.map +1 -1
- package/Materials/materialStencilState.js +211 -200
- package/Materials/materialStencilState.js.map +1 -1
- package/Materials/meshDebugPluginMaterial.pure.d.ts +2 -2
- package/Materials/meshDebugPluginMaterial.pure.js +397 -275
- package/Materials/meshDebugPluginMaterial.pure.js.map +1 -1
- package/Materials/standardMaterial.pure.d.ts +32 -32
- package/Materials/standardMaterial.pure.js +1804 -1394
- package/Materials/standardMaterial.pure.js.map +1 -1
- package/Maths/math.color.pure.js +5 -5
- package/Maths/math.functions.js +38 -30
- package/Maths/math.functions.js.map +1 -1
- package/Maths/math.vector.pure.js +25 -25
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +18 -8
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +86 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +255 -104
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.d.ts +39 -0
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js +322 -0
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js.map +1 -0
- package/Meshes/GreasedLine/greasedLineMesh.pure.js +4 -4
- package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js +3 -3
- package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js +107 -94
- package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js +276 -263
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js +247 -232
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js +299 -284
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js +196 -181
- package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/latticeBlock.pure.js +198 -179
- package/Meshes/Node/Blocks/Set/latticeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js +151 -138
- package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js +107 -94
- package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js +138 -125
- package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js +213 -200
- package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js +138 -125
- package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js +179 -164
- package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/boxBlock.pure.js +183 -170
- package/Meshes/Node/Blocks/Sources/boxBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js +125 -112
- package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js +153 -140
- package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/discBlock.pure.js +112 -99
- package/Meshes/Node/Blocks/Sources/discBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/gridBlock.pure.js +133 -120
- package/Meshes/Node/Blocks/Sources/gridBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js +128 -115
- package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/meshBlock.pure.js +116 -103
- package/Meshes/Node/Blocks/Sources/meshBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/planeBlock.pure.js +160 -147
- package/Meshes/Node/Blocks/Sources/planeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js +144 -131
- package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/torusBlock.pure.js +112 -99
- package/Meshes/Node/Blocks/Sources/torusBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js +200 -185
- package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/bevelBlock.pure.js +111 -98
- package/Meshes/Node/Blocks/bevelBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js +182 -165
- package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js +89 -76
- package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/conditionBlock.pure.js +184 -169
- package/Meshes/Node/Blocks/conditionBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js +270 -255
- package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js +172 -159
- package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryCurveBlock.pure.js +230 -217
- package/Meshes/Node/Blocks/geometryCurveBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryEaseBlock.pure.js +256 -245
- package/Meshes/Node/Blocks/geometryEaseBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js +206 -189
- package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryTransformBlock.pure.js +166 -153
- package/Meshes/Node/Blocks/geometryTransformBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js +221 -208
- package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/mappingBlock.pure.js +150 -137
- package/Meshes/Node/Blocks/mappingBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/mathBlock.pure.js +269 -256
- package/Meshes/Node/Blocks/mathBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js +141 -128
- package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/randomBlock.pure.js +161 -148
- package/Meshes/Node/Blocks/randomBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/subdivideBlock.pure.js +102 -87
- package/Meshes/Node/Blocks/subdivideBlock.pure.js.map +1 -1
- package/Meshes/Node/nodeGeometry.js +560 -538
- package/Meshes/Node/nodeGeometry.js.map +1 -1
- package/Meshes/Node/nodeGeometryBlock.js +473 -458
- package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
- package/Meshes/abstractMesh.pure.js +2218 -2207
- package/Meshes/abstractMesh.pure.js.map +1 -1
- package/Meshes/geometry.js +30 -15
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/mesh.pure.js +26 -14
- package/Meshes/mesh.pure.js.map +1 -1
- package/Meshes/mesh.vertexData.js +1665 -1655
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Meshes/transformNode.pure.js +1400 -1372
- package/Meshes/transformNode.pure.js.map +1 -1
- package/Misc/decorators.d.ts +34 -19
- package/Misc/decorators.functions.d.ts +33 -2
- package/Misc/decorators.functions.js +114 -35
- package/Misc/decorators.functions.js.map +1 -1
- package/Misc/decorators.js +96 -68
- package/Misc/decorators.js.map +1 -1
- package/Misc/decorators.serialization.js +47 -40
- package/Misc/decorators.serialization.js.map +1 -1
- package/Misc/decorators.serializationUtilities.d.ts +24 -0
- package/Misc/decorators.serializationUtilities.js +20 -0
- package/Misc/decorators.serializationUtilities.js.map +1 -0
- package/Misc/dumpTools.pure.js +43 -33
- package/Misc/dumpTools.pure.js.map +1 -1
- package/Misc/fileTools.pure.js +8 -0
- package/Misc/fileTools.pure.js.map +1 -1
- package/Misc/observable.pure.js +0 -7
- package/Misc/observable.pure.js.map +1 -1
- package/Misc/snapshotRenderingHelper.d.ts +4 -1
- package/Misc/snapshotRenderingHelper.js.map +1 -1
- package/Misc/symbolMetadataPolyfill.d.ts +11 -0
- package/Misc/symbolMetadataPolyfill.js +22 -0
- package/Misc/symbolMetadataPolyfill.js.map +1 -0
- package/Misc/tools.pure.js +2 -2
- package/Misc/tools.pure.js.map +1 -1
- package/Morph/morphTarget.js +382 -365
- package/Morph/morphTarget.js.map +1 -1
- package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js +160 -145
- package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js +187 -174
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js +238 -219
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js +140 -115
- package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js +157 -144
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js +133 -119
- package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js +93 -80
- package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleDebugBlock.pure.js +117 -105
- package/Particles/Node/Blocks/particleDebugBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js +105 -92
- package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleGradientValueBlock.pure.js +82 -69
- package/Particles/Node/Blocks/particleGradientValueBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js +113 -101
- package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleMathBlock.pure.js +278 -265
- package/Particles/Node/Blocks/particleMathBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleNumberMathBlock.pure.js +155 -142
- package/Particles/Node/Blocks/particleNumberMathBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleRandomBlock.pure.js +156 -143
- package/Particles/Node/Blocks/particleRandomBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js +217 -204
- package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleVectorMathBlock.pure.js +106 -93
- package/Particles/Node/Blocks/particleVectorMathBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/systemBlock.pure.js +366 -330
- package/Particles/Node/Blocks/systemBlock.pure.js.map +1 -1
- package/Particles/Node/nodeParticleBlock.js +339 -324
- package/Particles/Node/nodeParticleBlock.js.map +1 -1
- package/Particles/Node/nodeParticleSystemSet.js +494 -473
- package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
- package/Particles/gpuParticleSystem.d.ts +0 -1
- package/Particles/gpuParticleSystem.js +0 -1
- package/Particles/gpuParticleSystem.js.map +1 -1
- package/Particles/gpuParticleSystem.pure.d.ts +4 -3
- package/Particles/gpuParticleSystem.pure.js +27 -16
- package/Particles/gpuParticleSystem.pure.js.map +1 -1
- package/Particles/particleSystem.pure.js +57 -2
- package/Particles/particleSystem.pure.js.map +1 -1
- package/Particles/thinParticleSystem.d.ts +0 -1
- package/Particles/thinParticleSystem.js +0 -1
- package/Particles/thinParticleSystem.js.map +1 -1
- package/Particles/thinParticleSystem.pure.js +2 -0
- package/Particles/thinParticleSystem.pure.js.map +1 -1
- package/Particles/webgl2ParticleSystem.pure.js +2 -0
- package/Particles/webgl2ParticleSystem.pure.js.map +1 -1
- package/Physics/v1/physicsImpostor.pure.js +4 -4
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js +675 -656
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.d.ts +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js +521 -486
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.d.ts +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js +241 -220
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js +852 -835
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js +1135 -1073
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js +319 -303
- package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +212 -199
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
- package/PostProcesses/blackAndWhitePostProcess.pure.js +67 -55
- package/PostProcesses/blackAndWhitePostProcess.pure.js.map +1 -1
- package/PostProcesses/bloomMergePostProcess.pure.js +74 -62
- package/PostProcesses/bloomMergePostProcess.pure.js.map +1 -1
- package/PostProcesses/blurPostProcess.pure.js +127 -115
- package/PostProcesses/blurPostProcess.pure.js.map +1 -1
- package/PostProcesses/chromaticAberrationPostProcess.pure.js +130 -118
- package/PostProcesses/chromaticAberrationPostProcess.pure.js.map +1 -1
- package/PostProcesses/circleOfConfusionPostProcess.pure.js +115 -104
- package/PostProcesses/circleOfConfusionPostProcess.pure.js.map +1 -1
- package/PostProcesses/colorCorrectionPostProcess.pure.js +55 -43
- package/PostProcesses/colorCorrectionPostProcess.pure.js.map +1 -1
- package/PostProcesses/convolutionPostProcess.pure.js +96 -84
- package/PostProcesses/convolutionPostProcess.pure.js.map +1 -1
- package/PostProcesses/extractHighlightsPostProcess.pure.js +68 -57
- package/PostProcesses/extractHighlightsPostProcess.pure.js.map +1 -1
- package/PostProcesses/filterPostProcess.pure.js +66 -54
- package/PostProcesses/filterPostProcess.pure.js.map +1 -1
- package/PostProcesses/fxaaPostProcess.pure.js.map +1 -1
- package/PostProcesses/grainPostProcess.pure.js +82 -70
- package/PostProcesses/grainPostProcess.pure.js.map +1 -1
- package/PostProcesses/imageProcessingPostProcess.js +334 -322
- package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/motionBlurPostProcess.pure.js +246 -235
- package/PostProcesses/motionBlurPostProcess.pure.js.map +1 -1
- package/PostProcesses/passPostProcess.pure.js +75 -63
- package/PostProcesses/passPostProcess.pure.js.map +1 -1
- package/PostProcesses/postProcess.pure.js +899 -835
- package/PostProcesses/postProcess.pure.js.map +1 -1
- package/PostProcesses/refractionPostProcess.pure.js +114 -87
- package/PostProcesses/refractionPostProcess.pure.js.map +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js +108 -96
- package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js.map +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.pure.js +241 -220
- package/PostProcesses/screenSpaceReflectionPostProcess.pure.js.map +1 -1
- package/PostProcesses/sharpenPostProcess.pure.js +86 -74
- package/PostProcesses/sharpenPostProcess.pure.js.map +1 -1
- package/PostProcesses/tonemapPostProcess.pure.js +82 -70
- package/PostProcesses/tonemapPostProcess.pure.js.map +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.pure.js +500 -465
- package/PostProcesses/volumetricLightScatteringPostProcess.pure.js.map +1 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.d.ts +0 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.js +0 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.js.map +1 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js +2 -0
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js.map +1 -1
- package/Probes/reflectionProbe.pure.js +238 -224
- package/Probes/reflectionProbe.pure.js.map +1 -1
- package/Rendering/GlobalIllumination/giRSMManager.pure.d.ts +1 -1
- package/Rendering/GlobalIllumination/giRSMManager.pure.js +138 -105
- package/Rendering/GlobalIllumination/giRSMManager.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.d.ts +1 -1
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js +155 -138
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.d.ts +0 -2
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +0 -2
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +5 -0
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.d.ts +0 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +0 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.d.ts +1 -0
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +34 -0
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
- package/Rendering/edgesRenderer.pure.js.map +1 -1
- package/Rendering/prePassRenderer.d.ts +0 -2
- package/Rendering/prePassRenderer.js +0 -2
- package/Rendering/prePassRenderer.js.map +1 -1
- package/Rendering/prePassRenderer.pure.js +2 -0
- package/Rendering/prePassRenderer.pure.js.map +1 -1
- package/Rendering/reflectiveShadowMap.pure.d.ts +1 -1
- package/Rendering/reflectiveShadowMap.pure.js +151 -130
- package/Rendering/reflectiveShadowMap.pure.js.map +1 -1
- package/Rendering/thinDepthPeelingRenderer.d.ts +0 -1
- package/Rendering/thinDepthPeelingRenderer.js +0 -1
- package/Rendering/thinDepthPeelingRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/gaussianSplatting.js +1 -0
- package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +35 -5
- package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
- package/Shaders/gaussianSplatting.fragment.js +17 -1
- package/Shaders/gaussianSplatting.fragment.js.map +1 -1
- package/Shaders/gaussianSplatting.vertex.js +1 -1
- package/Shaders/gaussianSplatting.vertex.js.map +1 -1
- package/Shaders/gaussianSplattingDepth.vertex.js +1 -1
- package/Shaders/gaussianSplattingDepth.vertex.js.map +1 -1
- package/Shaders/picking.fragment.js +39 -3
- package/Shaders/picking.fragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +3 -1
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/helperFunctions.js +2 -2
- package/ShadersWGSL/ShadersInclude/helperFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +39 -7
- package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js +4 -3
- package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.fragment.js +14 -1
- package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.vertex.js +2 -2
- package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
- package/ShadersWGSL/gaussianSplattingDepth.vertex.js +2 -2
- package/ShadersWGSL/gaussianSplattingDepth.vertex.js.map +1 -1
- package/ShadersWGSL/lightingVolume.compute.js +2 -2
- package/ShadersWGSL/lightingVolume.compute.js.map +1 -1
- package/ShadersWGSL/picking.fragment.js +22 -1
- package/ShadersWGSL/picking.fragment.js.map +1 -1
- package/XR/features/Layers/WebXRCompositionLayer.d.ts +3 -2
- package/XR/features/Layers/WebXRCompositionLayer.js +2 -2
- package/XR/features/Layers/WebXRCompositionLayer.js.map +1 -1
- package/XR/features/Layers/WebXRWebGPUCompositionLayer.d.ts +59 -0
- package/XR/features/Layers/WebXRWebGPUCompositionLayer.js +120 -0
- package/XR/features/Layers/WebXRWebGPUCompositionLayer.js.map +1 -0
- package/XR/features/Layers/WebXRWebGPUProjectionLayer.d.ts +25 -0
- package/XR/features/Layers/WebXRWebGPUProjectionLayer.js +69 -0
- package/XR/features/Layers/WebXRWebGPUProjectionLayer.js.map +1 -0
- package/XR/features/WebXRLayers.pure.d.ts +8 -0
- package/XR/features/WebXRLayers.pure.js +43 -6
- package/XR/features/WebXRLayers.pure.js.map +1 -1
- package/XR/native/nativeXRRenderTarget.d.ts +2 -2
- package/XR/native/nativeXRRenderTarget.js +2 -2
- package/XR/native/nativeXRRenderTarget.js.map +1 -1
- package/XR/webXRExperienceHelper.js +10 -1
- package/XR/webXRExperienceHelper.js.map +1 -1
- package/XR/webXRGraphicsBinding.d.ts +90 -0
- package/XR/webXRGraphicsBinding.js +85 -0
- package/XR/webXRGraphicsBinding.js.map +1 -0
- package/XR/webXRLayerRenderTargetTexture.d.ts +24 -0
- package/XR/webXRLayerRenderTargetTexture.js +30 -0
- package/XR/webXRLayerRenderTargetTexture.js.map +1 -0
- package/XR/webXRManagedOutputCanvas.d.ts +14 -0
- package/XR/webXRManagedOutputCanvas.js +24 -5
- package/XR/webXRManagedOutputCanvas.js.map +1 -1
- package/XR/webXRRenderTargetTextureProvider.d.ts +25 -4
- package/XR/webXRRenderTargetTextureProvider.js +33 -35
- package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
- package/XR/webXRSessionManager.d.ts +11 -0
- package/XR/webXRSessionManager.js +37 -0
- package/XR/webXRSessionManager.js.map +1 -1
- package/XR/webXRTypes.d.ts +9 -6
- package/XR/webXRTypes.js.map +1 -1
- package/XR/webXRWebGLLayer.d.ts +2 -2
- package/XR/webXRWebGLLayer.js +2 -2
- package/XR/webXRWebGLLayer.js.map +1 -1
- package/XR/webXRWebGLRenderTargetTextureProvider.d.ts +12 -0
- package/XR/webXRWebGLRenderTargetTextureProvider.js +58 -0
- package/XR/webXRWebGLRenderTargetTextureProvider.js.map +1 -0
- package/XR/webXRWebGPURenderTargetTextureProvider.d.ts +69 -0
- package/XR/webXRWebGPURenderTargetTextureProvider.js +148 -0
- package/XR/webXRWebGPURenderTargetTextureProvider.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/node.js +878 -845
- package/node.js.map +1 -1
- package/package.json +8 -14
- package/scene.pure.d.ts +12 -0
- package/scene.pure.js +36 -0
- package/scene.pure.js.map +1 -1
- package/tslib.es6.js +304 -150
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssrPostProcessBlock.pure.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport {\r\n type Scene,\r\n type FrameGraph,\r\n type NodeRenderGraphConnectionPoint,\r\n type NodeRenderGraphBuildState,\r\n type FrameGraphTextureHandle,\r\n type Camera,\r\n type NodeRenderGraphGeometryRendererBlock,\r\n} from \"core/index\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"../../Types/nodeRenderGraphTypes\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { FrameGraphSSRRenderingPipelineTask } from \"../../../Tasks/PostProcesses/ssrRenderingPipelineTask\";\r\nimport { NodeRenderGraphBasePostProcessBlock } from \"./basePostProcessBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\n\r\n/**\r\n * Block that implements the SSR post process\r\n */\r\nexport class NodeRenderGraphSSRPostProcessBlock extends NodeRenderGraphBasePostProcessBlock {\r\n protected override _frameGraphTask: FrameGraphSSRRenderingPipelineTask;\r\n\r\n public override _additionalConstructionParameters: [number];\r\n\r\n /**\r\n * Gets the frame graph task associated with this block\r\n */\r\n public override get task() {\r\n return this._frameGraphTask;\r\n }\r\n\r\n /**\r\n * Create a new NodeRenderGraphSSRPostProcessBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n * @param textureType The texture type used by the different post processes created by SSR (default: Constants.TEXTURETYPE_UNSIGNED_BYTE)\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene, textureType = Constants.TEXTURETYPE_UNSIGNED_BYTE) {\r\n super(name, frameGraph, scene);\r\n\r\n this._additionalConstructionParameters = [textureType];\r\n\r\n this.registerInput(\"camera\", NodeRenderGraphBlockConnectionPointTypes.Camera);\r\n this.registerInput(\"geomDepth\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"geomNormal\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"geomReflectivity\", NodeRenderGraphBlockConnectionPointTypes.TextureReflectivity);\r\n this.registerInput(\"geomBackDepth\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect, true);\r\n\r\n this.geomNormal.addExcludedConnectionPointFromAllowedTypes(\r\n NodeRenderGraphBlockConnectionPointTypes.TextureWorldNormal | NodeRenderGraphBlockConnectionPointTypes.TextureViewNormal\r\n );\r\n this.geomDepth.addExcludedConnectionPointFromAllowedTypes(\r\n NodeRenderGraphBlockConnectionPointTypes.TextureScreenDepth | NodeRenderGraphBlockConnectionPointTypes.TextureViewDepth\r\n );\r\n this.geomBackDepth.addExcludedConnectionPointFromAllowedTypes(\r\n NodeRenderGraphBlockConnectionPointTypes.TextureScreenDepth | NodeRenderGraphBlockConnectionPointTypes.TextureViewDepth\r\n );\r\n\r\n this._finalizeInputOutputRegistering();\r\n\r\n this._frameGraphTask = new FrameGraphSSRRenderingPipelineTask(this.name, frameGraph, textureType);\r\n }\r\n\r\n private _createTask(textureType: number) {\r\n const sourceSamplingMode = this.sourceSamplingMode;\r\n const maxDistance = this.maxDistance;\r\n const step = this.step;\r\n const thickness = this.thickness;\r\n const strength = this.strength;\r\n const reflectionSpecularFalloffExponent = this.reflectionSpecularFalloffExponent;\r\n const maxSteps = this.maxSteps;\r\n const roughnessFactor = this.roughnessFactor;\r\n const selfCollisionNumSkip = this.selfCollisionNumSkip;\r\n const reflectivityThreshold = this.reflectivityThreshold;\r\n const ssrDownsample = this.ssrDownsample;\r\n const blurDispersionStrength = this.blurDispersionStrength;\r\n const blurDownsample = this.blurDownsample;\r\n const enableSmoothReflections = this.enableSmoothReflections;\r\n const attenuateScreenBorders = this.attenuateScreenBorders;\r\n const attenuateIntersectionDistance = this.attenuateIntersectionDistance;\r\n const attenuateIntersectionIterations = this.attenuateIntersectionIterations;\r\n const attenuateFacingCamera = this.attenuateFacingCamera;\r\n const attenuateBackfaceReflection = this.attenuateBackfaceReflection;\r\n const clipToFrustum = this.clipToFrustum;\r\n const enableAutomaticThicknessComputation = this.enableAutomaticThicknessComputation;\r\n const useFresnel = this.useFresnel;\r\n const inputTextureColorIsInGammaSpace = this.inputTextureColorIsInGammaSpace;\r\n const generateOutputInGammaSpace = this.generateOutputInGammaSpace;\r\n const debug = this.debug;\r\n\r\n this._frameGraphTask.dispose();\r\n this._frameGraphTask = new FrameGraphSSRRenderingPipelineTask(this.name, this._frameGraph, textureType);\r\n\r\n this.sourceSamplingMode = sourceSamplingMode;\r\n this.maxDistance = maxDistance;\r\n this.step = step;\r\n this.thickness = thickness;\r\n this.strength = strength;\r\n this.reflectionSpecularFalloffExponent = reflectionSpecularFalloffExponent;\r\n this.maxSteps = maxSteps;\r\n this.roughnessFactor = roughnessFactor;\r\n this.selfCollisionNumSkip = selfCollisionNumSkip;\r\n this.reflectivityThreshold = reflectivityThreshold;\r\n this.ssrDownsample = ssrDownsample;\r\n this.blurDispersionStrength = blurDispersionStrength;\r\n this.blurDownsample = blurDownsample;\r\n this.enableSmoothReflections = enableSmoothReflections;\r\n this.attenuateScreenBorders = attenuateScreenBorders;\r\n this.attenuateIntersectionDistance = attenuateIntersectionDistance;\r\n this.attenuateIntersectionIterations = attenuateIntersectionIterations;\r\n this.attenuateFacingCamera = attenuateFacingCamera;\r\n this.attenuateBackfaceReflection = attenuateBackfaceReflection;\r\n this.clipToFrustum = clipToFrustum;\r\n this.useFresnel = useFresnel;\r\n this.enableAutomaticThicknessComputation = enableAutomaticThicknessComputation;\r\n this.inputTextureColorIsInGammaSpace = inputTextureColorIsInGammaSpace;\r\n this.generateOutputInGammaSpace = generateOutputInGammaSpace;\r\n this.debug = debug;\r\n\r\n this._additionalConstructionParameters = [textureType];\r\n }\r\n\r\n /** The texture type used by the different post processes created by SSR */\r\n @editableInPropertyPage(\"Texture type\", PropertyTypeForEdition.TextureType, \"SSR\")\r\n public get textureType() {\r\n return this._frameGraphTask.textureType;\r\n }\r\n\r\n public set textureType(value: number) {\r\n this._createTask(value);\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the effect should be rendered in debug mode */\r\n @editableInPropertyPage(\"Debug\", PropertyTypeForEdition.Boolean, \"SSR\")\r\n public get debug() {\r\n return this._frameGraphTask.ssr.debug;\r\n }\r\n\r\n public set debug(value: boolean) {\r\n this._frameGraphTask.ssr.debug = value;\r\n }\r\n\r\n /** Gets or sets the current reflection strength. 1.0 is an ideal value but can be increased/decreased for particular results */\r\n @editableInPropertyPage(\"Strength\", PropertyTypeForEdition.Float, \"SSR\", { min: 0, max: 5 })\r\n public get strength() {\r\n return this._frameGraphTask.ssr.strength;\r\n }\r\n\r\n public set strength(value: number) {\r\n this._frameGraphTask.ssr.strength = value;\r\n }\r\n\r\n /** Gets or sets the falloff exponent used to compute the reflection strength. Higher values lead to fainter reflections */\r\n @editableInPropertyPage(\"Reflection exponent\", PropertyTypeForEdition.Float, \"SSR\", { min: 0, max: 5 })\r\n public get reflectionSpecularFalloffExponent() {\r\n return this._frameGraphTask.ssr.reflectionSpecularFalloffExponent;\r\n }\r\n\r\n public set reflectionSpecularFalloffExponent(value: number) {\r\n this._frameGraphTask.ssr.reflectionSpecularFalloffExponent = value;\r\n }\r\n\r\n /** Gets or sets the minimum value for one of the reflectivity component of the material to consider it for SSR */\r\n @editableInPropertyPage(\"Reflectivity threshold\", PropertyTypeForEdition.Float, \"SSR\", { min: 0, max: 1 })\r\n public get reflectivityThreshold() {\r\n return this._frameGraphTask.ssr.reflectivityThreshold;\r\n }\r\n\r\n public set reflectivityThreshold(value: number) {\r\n this._frameGraphTask.ssr.reflectivityThreshold = value;\r\n }\r\n\r\n /** Gets or sets the thickness value used as tolerance when computing the intersection between the reflected ray and the scene */\r\n @editableInPropertyPage(\"Thickness\", PropertyTypeForEdition.Float, \"SSR\", { min: 0, max: 10 })\r\n public get thickness() {\r\n return this._frameGraphTask.ssr.thickness;\r\n }\r\n\r\n public set thickness(value: number) {\r\n this._frameGraphTask.ssr.thickness = value;\r\n }\r\n\r\n /** Gets or sets the step size used to iterate until the effect finds the color of the reflection's pixel */\r\n @editableInPropertyPage(\"Step\", PropertyTypeForEdition.Int, \"SSR\", { min: 1, max: 50 })\r\n public get step() {\r\n return this._frameGraphTask.ssr.step;\r\n }\r\n\r\n public set step(value: number) {\r\n this._frameGraphTask.ssr.step = value;\r\n }\r\n\r\n /** Gets or sets whether or not smoothing reflections is enabled */\r\n @editableInPropertyPage(\"Smooth reflections\", PropertyTypeForEdition.Boolean, \"SSR\")\r\n public get enableSmoothReflections() {\r\n return this._frameGraphTask.ssr.enableSmoothReflections;\r\n }\r\n\r\n public set enableSmoothReflections(value: boolean) {\r\n this._frameGraphTask.ssr.enableSmoothReflections = value;\r\n }\r\n\r\n /** Maximum number of steps during the ray marching process after which we consider an intersection could not be found */\r\n @editableInPropertyPage(\"Max steps\", PropertyTypeForEdition.Int, \"SSR\", { min: 1, max: 3000 })\r\n public get maxSteps() {\r\n return this._frameGraphTask.ssr.maxSteps;\r\n }\r\n\r\n public set maxSteps(value: number) {\r\n this._frameGraphTask.ssr.maxSteps = value;\r\n }\r\n\r\n /** Gets or sets the max distance used to define how far we look for reflection during the ray-marching on the reflected ray */\r\n @editableInPropertyPage(\"Max distance\", PropertyTypeForEdition.Float, \"SSR\", { min: 1, max: 3000 })\r\n public get maxDistance() {\r\n return this._frameGraphTask.ssr.maxDistance;\r\n }\r\n\r\n public set maxDistance(value: number) {\r\n this._frameGraphTask.ssr.maxDistance = value;\r\n }\r\n\r\n /** Gets or sets the factor applied when computing roughness */\r\n @editableInPropertyPage(\"Roughness factor\", PropertyTypeForEdition.Float, \"SSR\", { min: 0, max: 1 })\r\n public get roughnessFactor() {\r\n return this._frameGraphTask.ssr.roughnessFactor;\r\n }\r\n\r\n public set roughnessFactor(value: number) {\r\n this._frameGraphTask.ssr.roughnessFactor = value;\r\n }\r\n\r\n /** Number of steps to skip at start when marching the ray to avoid self collisions */\r\n @editableInPropertyPage(\"Self collision skips\", PropertyTypeForEdition.Int, \"SSR\", { min: 1, max: 10 })\r\n public get selfCollisionNumSkip() {\r\n return this._frameGraphTask.ssr.selfCollisionNumSkip;\r\n }\r\n\r\n public set selfCollisionNumSkip(value: number) {\r\n this._frameGraphTask.ssr.selfCollisionNumSkip = value;\r\n }\r\n\r\n /** Gets or sets the downsample factor used to reduce the size of the texture used to compute the SSR contribution */\r\n @editableInPropertyPage(\"SSR downsample\", PropertyTypeForEdition.Int, \"SSR\", { min: 0, max: 5 })\r\n public get ssrDownsample() {\r\n return this._frameGraphTask.ssr.ssrDownsample;\r\n }\r\n\r\n public set ssrDownsample(value: number) {\r\n this._frameGraphTask.ssr.ssrDownsample = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the ray should be clipped to the frustum */\r\n @editableInPropertyPage(\"Clip to frustum\", PropertyTypeForEdition.Boolean, \"SSR\")\r\n public get clipToFrustum() {\r\n return this._frameGraphTask.ssr.clipToFrustum;\r\n }\r\n\r\n public set clipToFrustum(value: boolean) {\r\n this._frameGraphTask.ssr.clipToFrustum = value;\r\n }\r\n\r\n /** Gets or sets a boolean defining if geometry thickness should be computed automatically */\r\n @editableInPropertyPage(\"Automatic thickness computation\", PropertyTypeForEdition.Boolean, \"SSR\")\r\n public get enableAutomaticThicknessComputation() {\r\n return this._frameGraphTask.ssr.enableAutomaticThicknessComputation;\r\n }\r\n\r\n public set enableAutomaticThicknessComputation(value: boolean) {\r\n this._frameGraphTask.ssr.enableAutomaticThicknessComputation = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating whether the blending between the current color pixel and the reflection color should be done with a Fresnel coefficient */\r\n @editableInPropertyPage(\"Use Fresnel\", PropertyTypeForEdition.Boolean, \"SSR\")\r\n public get useFresnel() {\r\n return this._frameGraphTask.ssr.useFresnel;\r\n }\r\n\r\n public set useFresnel(value: boolean) {\r\n this._frameGraphTask.ssr.useFresnel = value;\r\n }\r\n\r\n /** Gets or sets the blur dispersion strength. Set this value to 0 to disable blurring */\r\n @editableInPropertyPage(\"Strength\", PropertyTypeForEdition.Float, \"Blur\", { min: 0, max: 0.15 })\r\n public get blurDispersionStrength() {\r\n return this._frameGraphTask.ssr.blurDispersionStrength;\r\n }\r\n\r\n public set blurDispersionStrength(value: number) {\r\n this._frameGraphTask.ssr.blurDispersionStrength = value;\r\n }\r\n\r\n /** Gets or sets the downsample factor used to reduce the size of the textures used to blur the reflection effect */\r\n @editableInPropertyPage(\"Blur downsample\", PropertyTypeForEdition.Int, \"Blur\", { min: 0, max: 5 })\r\n public get blurDownsample() {\r\n return this._frameGraphTask.ssr.blurDownsample;\r\n }\r\n\r\n public set blurDownsample(value: number) {\r\n this._frameGraphTask.ssr.blurDownsample = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the reflections should be attenuated at the screen borders */\r\n @editableInPropertyPage(\"Screen borders\", PropertyTypeForEdition.Boolean, \"Attenuations\")\r\n public get attenuateScreenBorders() {\r\n return this._frameGraphTask.ssr.attenuateScreenBorders;\r\n }\r\n\r\n public set attenuateScreenBorders(value: boolean) {\r\n this._frameGraphTask.ssr.attenuateScreenBorders = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the reflections should be attenuated according to the distance of the intersection */\r\n @editableInPropertyPage(\"Distance\", PropertyTypeForEdition.Boolean, \"Attenuations\")\r\n public get attenuateIntersectionDistance() {\r\n return this._frameGraphTask.ssr.attenuateIntersectionDistance;\r\n }\r\n\r\n public set attenuateIntersectionDistance(value: boolean) {\r\n this._frameGraphTask.ssr.attenuateIntersectionDistance = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the reflections should be attenuated according to the number of iterations performed to find the intersection */\r\n @editableInPropertyPage(\"Step iterations\", PropertyTypeForEdition.Boolean, \"Attenuations\")\r\n public get attenuateIntersectionIterations() {\r\n return this._frameGraphTask.ssr.attenuateIntersectionIterations;\r\n }\r\n\r\n public set attenuateIntersectionIterations(value: boolean) {\r\n this._frameGraphTask.ssr.attenuateIntersectionIterations = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the reflections should be attenuated when the reflection ray is facing the camera (the view direction) */\r\n @editableInPropertyPage(\"Facing camera\", PropertyTypeForEdition.Boolean, \"Attenuations\")\r\n public get attenuateFacingCamera() {\r\n return this._frameGraphTask.ssr.attenuateFacingCamera;\r\n }\r\n\r\n public set attenuateFacingCamera(value: boolean) {\r\n this._frameGraphTask.ssr.attenuateFacingCamera = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the backface reflections should be attenuated */\r\n @editableInPropertyPage(\"Backface reflections\", PropertyTypeForEdition.Boolean, \"Attenuations\")\r\n public get attenuateBackfaceReflection() {\r\n return this._frameGraphTask.ssr.attenuateBackfaceReflection;\r\n }\r\n\r\n public set attenuateBackfaceReflection(value: boolean) {\r\n this._frameGraphTask.ssr.attenuateBackfaceReflection = value;\r\n }\r\n\r\n /** Gets or sets a boolean defining if the input color texture is in gamma space */\r\n @editableInPropertyPage(\"Input is in gamma space\", PropertyTypeForEdition.Boolean, \"Color space\")\r\n public get inputTextureColorIsInGammaSpace() {\r\n return this._frameGraphTask.ssr.inputTextureColorIsInGammaSpace;\r\n }\r\n\r\n public set inputTextureColorIsInGammaSpace(value: boolean) {\r\n this._frameGraphTask.ssr.inputTextureColorIsInGammaSpace = value;\r\n }\r\n\r\n /** Gets or sets a boolean defining if the output color texture generated by the SSR pipeline should be in gamma space */\r\n @editableInPropertyPage(\"Output to gamma space\", PropertyTypeForEdition.Boolean, \"Color space\")\r\n public get generateOutputInGammaSpace() {\r\n return this._frameGraphTask.ssr.generateOutputInGammaSpace;\r\n }\r\n\r\n public set generateOutputInGammaSpace(value: boolean) {\r\n this._frameGraphTask.ssr.generateOutputInGammaSpace = value;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphSSRPostProcessBlock\";\r\n }\r\n\r\n /**\r\n * Gets the camera input component\r\n */\r\n public get camera(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the geometry depth input component\r\n */\r\n public get geomDepth(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the geometry normal input component\r\n */\r\n public get geomNormal(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the geometry reflectivity input component\r\n */\r\n public get geomReflectivity(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the geometry back depth input component\r\n */\r\n public get geomBackDepth(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[6];\r\n }\r\n\r\n protected override _buildBlock(state: NodeRenderGraphBuildState) {\r\n super._buildBlock(state);\r\n\r\n this._frameGraphTask.normalTexture = this.geomNormal.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.depthTexture = this.geomDepth.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.reflectivityTexture = this.geomReflectivity.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.backDepthTexture = this.geomBackDepth.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.camera = this.camera.connectedPoint?.value as Camera;\r\n\r\n if (this.enableAutomaticThicknessComputation) {\r\n if (!this._frameGraphTask.backDepthTexture) {\r\n throw new Error(`SSR post process \"${this.name}\": Automatic thickness computation requires a back depth texture to be connected!`);\r\n }\r\n\r\n const geomBackDepthOwnerBlock = this.geomBackDepth.connectedPoint!.ownerBlock;\r\n if (geomBackDepthOwnerBlock.getClassName() === \"NodeRenderGraphGeometryRendererBlock\") {\r\n const geometryBackFaceRendererBlock = geomBackDepthOwnerBlock as NodeRenderGraphGeometryRendererBlock;\r\n if (!geometryBackFaceRendererBlock.reverseCulling) {\r\n throw new Error(\r\n `SSR post process \"${this.name}\": Automatic thickness computation requires the geometry renderer block for the back depth texture to have reverse culling enabled!`\r\n );\r\n }\r\n\r\n if (this._frameGraphTask.depthTexture) {\r\n const geomDepthOwnerBlock = this.geomDepth.connectedPoint!.ownerBlock;\r\n if (geomDepthOwnerBlock.getClassName() === \"NodeRenderGraphGeometryRendererBlock\") {\r\n const geomDepthConnectionPointType = this.geomDepth.connectedPoint!.type;\r\n const geomBackDepthConnectionPointType = this.geomBackDepth.connectedPoint!.type;\r\n\r\n if (geomDepthConnectionPointType !== geomBackDepthConnectionPointType) {\r\n throw new Error(\r\n `SSR post process \"${this.name}\": Automatic thickness computation requires that geomDepth and geomBackDepth have the same type (view or screen space depth)!`\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.geomNormal.connectedPoint) {\r\n if (this.geomNormal.connectedPoint.type === NodeRenderGraphBlockConnectionPointTypes.TextureWorldNormal) {\r\n this._frameGraphTask.ssr.normalsAreInWorldSpace = true;\r\n this._frameGraphTask.ssr.normalsAreUnsigned = true;\r\n }\r\n }\r\n if (this.geomDepth.connectedPoint) {\r\n if (this.geomDepth.connectedPoint.type === NodeRenderGraphBlockConnectionPointTypes.TextureScreenDepth) {\r\n this._frameGraphTask.ssr.useScreenspaceDepth = true;\r\n }\r\n }\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.debug = ${this.debug};`);\r\n codes.push(`${this._codeVariableName}.strength = ${this.strength};`);\r\n codes.push(`${this._codeVariableName}.reflectionSpecularFalloffExponent = ${this.reflectionSpecularFalloffExponent};`);\r\n codes.push(`${this._codeVariableName}.reflectivityThreshold = ${this.reflectivityThreshold};`);\r\n codes.push(`${this._codeVariableName}.thickness = ${this.thickness};`);\r\n codes.push(`${this._codeVariableName}.step = ${this.step};`);\r\n codes.push(`${this._codeVariableName}.enableSmoothReflections = ${this.enableSmoothReflections};`);\r\n codes.push(`${this._codeVariableName}.maxSteps = ${this.maxSteps};`);\r\n codes.push(`${this._codeVariableName}.maxDistance = ${this.maxDistance};`);\r\n codes.push(`${this._codeVariableName}.roughnessFactor = ${this.roughnessFactor};`);\r\n codes.push(`${this._codeVariableName}.selfCollisionNumSkip = ${this.selfCollisionNumSkip};`);\r\n codes.push(`${this._codeVariableName}.ssrDownsample = ${this.ssrDownsample};`);\r\n codes.push(`${this._codeVariableName}.clipToFrustum = ${this.clipToFrustum};`);\r\n codes.push(`${this._codeVariableName}.useFresnel = ${this.useFresnel};`);\r\n codes.push(`${this._codeVariableName}.enableAutomaticThicknessComputation = ${this.enableAutomaticThicknessComputation};`);\r\n codes.push(`${this._codeVariableName}.blurDispersionStrength = ${this.blurDispersionStrength};`);\r\n codes.push(`${this._codeVariableName}.blurDownsample = ${this.blurDownsample};`);\r\n codes.push(`${this._codeVariableName}.attenuateScreenBorders = ${this.attenuateScreenBorders};`);\r\n codes.push(`${this._codeVariableName}.attenuateIntersectionDistance = ${this.attenuateIntersectionDistance};`);\r\n codes.push(`${this._codeVariableName}.attenuateIntersectionIterations = ${this.attenuateIntersectionIterations};`);\r\n codes.push(`${this._codeVariableName}.attenuateFacingCamera = ${this.attenuateFacingCamera};`);\r\n codes.push(`${this._codeVariableName}.attenuateBackfaceReflection = ${this.attenuateBackfaceReflection};`);\r\n codes.push(`${this._codeVariableName}.inputTextureColorIsInGammaSpace = ${this.inputTextureColorIsInGammaSpace};`);\r\n codes.push(`${this._codeVariableName}.generateOutputInGammaSpace = ${this.generateOutputInGammaSpace};`);\r\n return super._dumpPropertiesCode() + codes.join(\"\\n\");\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.debug = this.debug;\r\n serializationObject.strength = this.strength;\r\n serializationObject.reflectionSpecularFalloffExponent = this.reflectionSpecularFalloffExponent;\r\n serializationObject.reflectivityThreshold = this.reflectivityThreshold;\r\n serializationObject.thickness = this.thickness;\r\n serializationObject.step = this.step;\r\n serializationObject.enableSmoothReflections = this.enableSmoothReflections;\r\n serializationObject.maxSteps = this.maxSteps;\r\n serializationObject.maxDistance = this.maxDistance;\r\n serializationObject.roughnessFactor = this.roughnessFactor;\r\n serializationObject.selfCollisionNumSkip = this.selfCollisionNumSkip;\r\n serializationObject.ssrDownsample = this.ssrDownsample;\r\n serializationObject.clipToFrustum = this.clipToFrustum;\r\n serializationObject.useFresnel = this.useFresnel;\r\n serializationObject.enableAutomaticThicknessComputation = this.enableAutomaticThicknessComputation;\r\n serializationObject.blurDispersionStrength = this.blurDispersionStrength;\r\n serializationObject.blurDownsample = this.blurDownsample;\r\n serializationObject.attenuateScreenBorders = this.attenuateScreenBorders;\r\n serializationObject.attenuateIntersectionDistance = this.attenuateIntersectionDistance;\r\n serializationObject.attenuateIntersectionIterations = this.attenuateIntersectionIterations;\r\n serializationObject.attenuateFacingCamera = this.attenuateFacingCamera;\r\n serializationObject.attenuateBackfaceReflection = this.attenuateBackfaceReflection;\r\n serializationObject.inputTextureColorIsInGammaSpace = this.inputTextureColorIsInGammaSpace;\r\n serializationObject.generateOutputInGammaSpace = this.generateOutputInGammaSpace;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.debug = serializationObject.debug;\r\n this.strength = serializationObject.strength;\r\n this.reflectionSpecularFalloffExponent = serializationObject.reflectionSpecularFalloffExponent;\r\n this.reflectivityThreshold = serializationObject.reflectivityThreshold;\r\n this.thickness = serializationObject.thickness;\r\n this.step = serializationObject.step;\r\n this.enableSmoothReflections = serializationObject.enableSmoothReflections;\r\n this.maxSteps = serializationObject.maxSteps;\r\n this.maxDistance = serializationObject.maxDistance;\r\n this.roughnessFactor = serializationObject.roughnessFactor;\r\n this.selfCollisionNumSkip = serializationObject.selfCollisionNumSkip;\r\n this.ssrDownsample = serializationObject.ssrDownsample;\r\n this.clipToFrustum = serializationObject.clipToFrustum;\r\n this.useFresnel = serializationObject.useFresnel;\r\n this.enableAutomaticThicknessComputation = serializationObject.enableAutomaticThicknessComputation;\r\n this.blurDispersionStrength = serializationObject.blurDispersionStrength;\r\n this.blurDownsample = serializationObject.blurDownsample;\r\n this.attenuateScreenBorders = serializationObject.attenuateScreenBorders;\r\n this.attenuateIntersectionDistance = serializationObject.attenuateIntersectionDistance;\r\n this.attenuateIntersectionIterations = serializationObject.attenuateIntersectionIterations;\r\n this.attenuateFacingCamera = serializationObject.attenuateFacingCamera;\r\n this.attenuateBackfaceReflection = serializationObject.attenuateBackfaceReflection;\r\n this.inputTextureColorIsInGammaSpace = serializationObject.inputTextureColorIsInGammaSpace;\r\n this.generateOutputInGammaSpace = serializationObject.generateOutputInGammaSpace;\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for ssrPostProcessBlock.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterSsrPostProcessBlock(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.NodeRenderGraphSSRPostProcessBlock\", NodeRenderGraphSSRPostProcessBlock);\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ssrPostProcessBlock.pure.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport {\r\n type Scene,\r\n type FrameGraph,\r\n type NodeRenderGraphConnectionPoint,\r\n type NodeRenderGraphBuildState,\r\n type FrameGraphTextureHandle,\r\n type Camera,\r\n type NodeRenderGraphGeometryRendererBlock,\r\n} from \"core/index\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes } from \"../../Types/nodeRenderGraphTypes\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { FrameGraphSSRRenderingPipelineTask } from \"../../../Tasks/PostProcesses/ssrRenderingPipelineTask\";\r\nimport { NodeRenderGraphBasePostProcessBlock } from \"./basePostProcessBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\n\r\n/**\r\n * Block that implements the SSR post process\r\n */\r\nexport class NodeRenderGraphSSRPostProcessBlock extends NodeRenderGraphBasePostProcessBlock {\r\n protected override _frameGraphTask: FrameGraphSSRRenderingPipelineTask;\r\n\r\n public override _additionalConstructionParameters: [number];\r\n\r\n /**\r\n * Gets the frame graph task associated with this block\r\n */\r\n public override get task() {\r\n return this._frameGraphTask;\r\n }\r\n\r\n /**\r\n * Create a new NodeRenderGraphSSRPostProcessBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n * @param textureType The texture type used by the different post processes created by SSR (default: Constants.TEXTURETYPE_UNSIGNED_BYTE)\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene, textureType = Constants.TEXTURETYPE_UNSIGNED_BYTE) {\r\n super(name, frameGraph, scene);\r\n\r\n this._additionalConstructionParameters = [textureType];\r\n\r\n this.registerInput(\"camera\", NodeRenderGraphBlockConnectionPointTypes.Camera);\r\n this.registerInput(\"geomDepth\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"geomNormal\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect);\r\n this.registerInput(\"geomReflectivity\", NodeRenderGraphBlockConnectionPointTypes.TextureReflectivity);\r\n this.registerInput(\"geomBackDepth\", NodeRenderGraphBlockConnectionPointTypes.AutoDetect, true);\r\n\r\n this.geomNormal.addExcludedConnectionPointFromAllowedTypes(\r\n NodeRenderGraphBlockConnectionPointTypes.TextureWorldNormal | NodeRenderGraphBlockConnectionPointTypes.TextureViewNormal\r\n );\r\n this.geomDepth.addExcludedConnectionPointFromAllowedTypes(\r\n NodeRenderGraphBlockConnectionPointTypes.TextureScreenDepth | NodeRenderGraphBlockConnectionPointTypes.TextureViewDepth\r\n );\r\n this.geomBackDepth.addExcludedConnectionPointFromAllowedTypes(\r\n NodeRenderGraphBlockConnectionPointTypes.TextureScreenDepth | NodeRenderGraphBlockConnectionPointTypes.TextureViewDepth\r\n );\r\n\r\n this._finalizeInputOutputRegistering();\r\n\r\n this._frameGraphTask = new FrameGraphSSRRenderingPipelineTask(this.name, frameGraph, textureType);\r\n }\r\n\r\n private _createTask(textureType: number) {\r\n const sourceSamplingMode = this.sourceSamplingMode;\r\n const maxDistance = this.maxDistance;\r\n const step = this.step;\r\n const thickness = this.thickness;\r\n const strength = this.strength;\r\n const reflectionSpecularFalloffExponent = this.reflectionSpecularFalloffExponent;\r\n const maxSteps = this.maxSteps;\r\n const roughnessFactor = this.roughnessFactor;\r\n const selfCollisionNumSkip = this.selfCollisionNumSkip;\r\n const reflectivityThreshold = this.reflectivityThreshold;\r\n const ssrDownsample = this.ssrDownsample;\r\n const blurDispersionStrength = this.blurDispersionStrength;\r\n const blurDownsample = this.blurDownsample;\r\n const enableSmoothReflections = this.enableSmoothReflections;\r\n const attenuateScreenBorders = this.attenuateScreenBorders;\r\n const attenuateIntersectionDistance = this.attenuateIntersectionDistance;\r\n const attenuateIntersectionIterations = this.attenuateIntersectionIterations;\r\n const attenuateFacingCamera = this.attenuateFacingCamera;\r\n const attenuateBackfaceReflection = this.attenuateBackfaceReflection;\r\n const clipToFrustum = this.clipToFrustum;\r\n const enableAutomaticThicknessComputation = this.enableAutomaticThicknessComputation;\r\n const useFresnel = this.useFresnel;\r\n const inputTextureColorIsInGammaSpace = this.inputTextureColorIsInGammaSpace;\r\n const generateOutputInGammaSpace = this.generateOutputInGammaSpace;\r\n const debug = this.debug;\r\n\r\n this._frameGraphTask.dispose();\r\n this._frameGraphTask = new FrameGraphSSRRenderingPipelineTask(this.name, this._frameGraph, textureType);\r\n\r\n this.sourceSamplingMode = sourceSamplingMode;\r\n this.maxDistance = maxDistance;\r\n this.step = step;\r\n this.thickness = thickness;\r\n this.strength = strength;\r\n this.reflectionSpecularFalloffExponent = reflectionSpecularFalloffExponent;\r\n this.maxSteps = maxSteps;\r\n this.roughnessFactor = roughnessFactor;\r\n this.selfCollisionNumSkip = selfCollisionNumSkip;\r\n this.reflectivityThreshold = reflectivityThreshold;\r\n this.ssrDownsample = ssrDownsample;\r\n this.blurDispersionStrength = blurDispersionStrength;\r\n this.blurDownsample = blurDownsample;\r\n this.enableSmoothReflections = enableSmoothReflections;\r\n this.attenuateScreenBorders = attenuateScreenBorders;\r\n this.attenuateIntersectionDistance = attenuateIntersectionDistance;\r\n this.attenuateIntersectionIterations = attenuateIntersectionIterations;\r\n this.attenuateFacingCamera = attenuateFacingCamera;\r\n this.attenuateBackfaceReflection = attenuateBackfaceReflection;\r\n this.clipToFrustum = clipToFrustum;\r\n this.useFresnel = useFresnel;\r\n this.enableAutomaticThicknessComputation = enableAutomaticThicknessComputation;\r\n this.inputTextureColorIsInGammaSpace = inputTextureColorIsInGammaSpace;\r\n this.generateOutputInGammaSpace = generateOutputInGammaSpace;\r\n this.debug = debug;\r\n\r\n this._additionalConstructionParameters = [textureType];\r\n }\r\n\r\n /** The texture type used by the different post processes created by SSR */\r\n @editableInPropertyPage(\"Texture type\", PropertyTypeForEdition.TextureType, \"SSR\")\r\n public get textureType() {\r\n return this._frameGraphTask.textureType;\r\n }\r\n\r\n public set textureType(value: number) {\r\n this._createTask(value);\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the effect should be rendered in debug mode */\r\n @editableInPropertyPage(\"Debug\", PropertyTypeForEdition.Boolean, \"SSR\")\r\n public get debug() {\r\n return this._frameGraphTask.ssr.debug;\r\n }\r\n\r\n public set debug(value: boolean) {\r\n this._frameGraphTask.ssr.debug = value;\r\n }\r\n\r\n /** Gets or sets the current reflection strength. 1.0 is an ideal value but can be increased/decreased for particular results */\r\n @editableInPropertyPage(\"Strength\", PropertyTypeForEdition.Float, \"SSR\", { min: 0, max: 5 })\r\n public get strength() {\r\n return this._frameGraphTask.ssr.strength;\r\n }\r\n\r\n public set strength(value: number) {\r\n this._frameGraphTask.ssr.strength = value;\r\n }\r\n\r\n /** Gets or sets the falloff exponent used to compute the reflection strength. Higher values lead to fainter reflections */\r\n @editableInPropertyPage(\"Reflection exponent\", PropertyTypeForEdition.Float, \"SSR\", { min: 0, max: 5 })\r\n public get reflectionSpecularFalloffExponent() {\r\n return this._frameGraphTask.ssr.reflectionSpecularFalloffExponent;\r\n }\r\n\r\n public set reflectionSpecularFalloffExponent(value: number) {\r\n this._frameGraphTask.ssr.reflectionSpecularFalloffExponent = value;\r\n }\r\n\r\n /** Gets or sets the minimum value for one of the reflectivity component of the material to consider it for SSR */\r\n @editableInPropertyPage(\"Reflectivity threshold\", PropertyTypeForEdition.Float, \"SSR\", { min: 0, max: 1 })\r\n public get reflectivityThreshold() {\r\n return this._frameGraphTask.ssr.reflectivityThreshold;\r\n }\r\n\r\n public set reflectivityThreshold(value: number) {\r\n this._frameGraphTask.ssr.reflectivityThreshold = value;\r\n }\r\n\r\n /** Gets or sets the thickness value used as tolerance when computing the intersection between the reflected ray and the scene */\r\n @editableInPropertyPage(\"Thickness\", PropertyTypeForEdition.Float, \"SSR\", { min: 0, max: 10 })\r\n public get thickness() {\r\n return this._frameGraphTask.ssr.thickness;\r\n }\r\n\r\n public set thickness(value: number) {\r\n this._frameGraphTask.ssr.thickness = value;\r\n }\r\n\r\n /** Gets or sets the step size used to iterate until the effect finds the color of the reflection's pixel */\r\n @editableInPropertyPage(\"Step\", PropertyTypeForEdition.Int, \"SSR\", { min: 1, max: 50 })\r\n public get step() {\r\n return this._frameGraphTask.ssr.step;\r\n }\r\n\r\n public set step(value: number) {\r\n this._frameGraphTask.ssr.step = value;\r\n }\r\n\r\n /** Gets or sets whether or not smoothing reflections is enabled */\r\n @editableInPropertyPage(\"Smooth reflections\", PropertyTypeForEdition.Boolean, \"SSR\")\r\n public get enableSmoothReflections() {\r\n return this._frameGraphTask.ssr.enableSmoothReflections;\r\n }\r\n\r\n public set enableSmoothReflections(value: boolean) {\r\n this._frameGraphTask.ssr.enableSmoothReflections = value;\r\n }\r\n\r\n /** Maximum number of steps during the ray marching process after which we consider an intersection could not be found */\r\n @editableInPropertyPage(\"Max steps\", PropertyTypeForEdition.Int, \"SSR\", { min: 1, max: 3000 })\r\n public get maxSteps() {\r\n return this._frameGraphTask.ssr.maxSteps;\r\n }\r\n\r\n public set maxSteps(value: number) {\r\n this._frameGraphTask.ssr.maxSteps = value;\r\n }\r\n\r\n /** Gets or sets the max distance used to define how far we look for reflection during the ray-marching on the reflected ray */\r\n @editableInPropertyPage(\"Max distance\", PropertyTypeForEdition.Float, \"SSR\", { min: 1, max: 3000 })\r\n public get maxDistance() {\r\n return this._frameGraphTask.ssr.maxDistance;\r\n }\r\n\r\n public set maxDistance(value: number) {\r\n this._frameGraphTask.ssr.maxDistance = value;\r\n }\r\n\r\n /** Gets or sets the factor applied when computing roughness */\r\n @editableInPropertyPage(\"Roughness factor\", PropertyTypeForEdition.Float, \"SSR\", { min: 0, max: 1 })\r\n public get roughnessFactor() {\r\n return this._frameGraphTask.ssr.roughnessFactor;\r\n }\r\n\r\n public set roughnessFactor(value: number) {\r\n this._frameGraphTask.ssr.roughnessFactor = value;\r\n }\r\n\r\n /** Number of steps to skip at start when marching the ray to avoid self collisions */\r\n @editableInPropertyPage(\"Self collision skips\", PropertyTypeForEdition.Int, \"SSR\", { min: 1, max: 10 })\r\n public get selfCollisionNumSkip() {\r\n return this._frameGraphTask.ssr.selfCollisionNumSkip;\r\n }\r\n\r\n public set selfCollisionNumSkip(value: number) {\r\n this._frameGraphTask.ssr.selfCollisionNumSkip = value;\r\n }\r\n\r\n /** Gets or sets the downsample factor used to reduce the size of the texture used to compute the SSR contribution */\r\n @editableInPropertyPage(\"SSR downsample\", PropertyTypeForEdition.Int, \"SSR\", { min: 0, max: 5 })\r\n public get ssrDownsample() {\r\n return this._frameGraphTask.ssr.ssrDownsample;\r\n }\r\n\r\n public set ssrDownsample(value: number) {\r\n this._frameGraphTask.ssr.ssrDownsample = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the ray should be clipped to the frustum */\r\n @editableInPropertyPage(\"Clip to frustum\", PropertyTypeForEdition.Boolean, \"SSR\")\r\n public get clipToFrustum() {\r\n return this._frameGraphTask.ssr.clipToFrustum;\r\n }\r\n\r\n public set clipToFrustum(value: boolean) {\r\n this._frameGraphTask.ssr.clipToFrustum = value;\r\n }\r\n\r\n /** Gets or sets a boolean defining if geometry thickness should be computed automatically */\r\n @editableInPropertyPage(\"Automatic thickness computation\", PropertyTypeForEdition.Boolean, \"SSR\")\r\n public get enableAutomaticThicknessComputation() {\r\n return this._frameGraphTask.ssr.enableAutomaticThicknessComputation;\r\n }\r\n\r\n public set enableAutomaticThicknessComputation(value: boolean) {\r\n this._frameGraphTask.ssr.enableAutomaticThicknessComputation = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating whether the blending between the current color pixel and the reflection color should be done with a Fresnel coefficient */\r\n @editableInPropertyPage(\"Use Fresnel\", PropertyTypeForEdition.Boolean, \"SSR\")\r\n public get useFresnel() {\r\n return this._frameGraphTask.ssr.useFresnel;\r\n }\r\n\r\n public set useFresnel(value: boolean) {\r\n this._frameGraphTask.ssr.useFresnel = value;\r\n }\r\n\r\n /** Gets or sets the blur dispersion strength. Set this value to 0 to disable blurring */\r\n @editableInPropertyPage(\"Strength\", PropertyTypeForEdition.Float, \"Blur\", { min: 0, max: 0.15 })\r\n public get blurDispersionStrength() {\r\n return this._frameGraphTask.ssr.blurDispersionStrength;\r\n }\r\n\r\n public set blurDispersionStrength(value: number) {\r\n this._frameGraphTask.ssr.blurDispersionStrength = value;\r\n }\r\n\r\n /** Gets or sets the downsample factor used to reduce the size of the textures used to blur the reflection effect */\r\n @editableInPropertyPage(\"Blur downsample\", PropertyTypeForEdition.Int, \"Blur\", { min: 0, max: 5 })\r\n public get blurDownsample() {\r\n return this._frameGraphTask.ssr.blurDownsample;\r\n }\r\n\r\n public set blurDownsample(value: number) {\r\n this._frameGraphTask.ssr.blurDownsample = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the reflections should be attenuated at the screen borders */\r\n @editableInPropertyPage(\"Screen borders\", PropertyTypeForEdition.Boolean, \"Attenuations\")\r\n public get attenuateScreenBorders() {\r\n return this._frameGraphTask.ssr.attenuateScreenBorders;\r\n }\r\n\r\n public set attenuateScreenBorders(value: boolean) {\r\n this._frameGraphTask.ssr.attenuateScreenBorders = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the reflections should be attenuated according to the distance of the intersection */\r\n @editableInPropertyPage(\"Distance\", PropertyTypeForEdition.Boolean, \"Attenuations\")\r\n public get attenuateIntersectionDistance() {\r\n return this._frameGraphTask.ssr.attenuateIntersectionDistance;\r\n }\r\n\r\n public set attenuateIntersectionDistance(value: boolean) {\r\n this._frameGraphTask.ssr.attenuateIntersectionDistance = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the reflections should be attenuated according to the number of iterations performed to find the intersection */\r\n @editableInPropertyPage(\"Step iterations\", PropertyTypeForEdition.Boolean, \"Attenuations\")\r\n public get attenuateIntersectionIterations() {\r\n return this._frameGraphTask.ssr.attenuateIntersectionIterations;\r\n }\r\n\r\n public set attenuateIntersectionIterations(value: boolean) {\r\n this._frameGraphTask.ssr.attenuateIntersectionIterations = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the reflections should be attenuated when the reflection ray is facing the camera (the view direction) */\r\n @editableInPropertyPage(\"Facing camera\", PropertyTypeForEdition.Boolean, \"Attenuations\")\r\n public get attenuateFacingCamera() {\r\n return this._frameGraphTask.ssr.attenuateFacingCamera;\r\n }\r\n\r\n public set attenuateFacingCamera(value: boolean) {\r\n this._frameGraphTask.ssr.attenuateFacingCamera = value;\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the backface reflections should be attenuated */\r\n @editableInPropertyPage(\"Backface reflections\", PropertyTypeForEdition.Boolean, \"Attenuations\")\r\n public get attenuateBackfaceReflection() {\r\n return this._frameGraphTask.ssr.attenuateBackfaceReflection;\r\n }\r\n\r\n public set attenuateBackfaceReflection(value: boolean) {\r\n this._frameGraphTask.ssr.attenuateBackfaceReflection = value;\r\n }\r\n\r\n /** Gets or sets a boolean defining if the input color texture is in gamma space */\r\n @editableInPropertyPage(\"Input is in gamma space\", PropertyTypeForEdition.Boolean, \"Color space\")\r\n public get inputTextureColorIsInGammaSpace() {\r\n return this._frameGraphTask.ssr.inputTextureColorIsInGammaSpace;\r\n }\r\n\r\n public set inputTextureColorIsInGammaSpace(value: boolean) {\r\n this._frameGraphTask.ssr.inputTextureColorIsInGammaSpace = value;\r\n }\r\n\r\n /** Gets or sets a boolean defining if the output color texture generated by the SSR pipeline should be in gamma space */\r\n @editableInPropertyPage(\"Output to gamma space\", PropertyTypeForEdition.Boolean, \"Color space\")\r\n public get generateOutputInGammaSpace() {\r\n return this._frameGraphTask.ssr.generateOutputInGammaSpace;\r\n }\r\n\r\n public set generateOutputInGammaSpace(value: boolean) {\r\n this._frameGraphTask.ssr.generateOutputInGammaSpace = value;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphSSRPostProcessBlock\";\r\n }\r\n\r\n /**\r\n * Gets the camera input component\r\n */\r\n public get camera(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the geometry depth input component\r\n */\r\n public get geomDepth(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the geometry normal input component\r\n */\r\n public get geomNormal(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the geometry reflectivity input component\r\n */\r\n public get geomReflectivity(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[5];\r\n }\r\n\r\n /**\r\n * Gets the geometry back depth input component\r\n */\r\n public get geomBackDepth(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[6];\r\n }\r\n\r\n protected override _buildBlock(state: NodeRenderGraphBuildState) {\r\n super._buildBlock(state);\r\n\r\n this._frameGraphTask.normalTexture = this.geomNormal.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.depthTexture = this.geomDepth.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.reflectivityTexture = this.geomReflectivity.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.backDepthTexture = this.geomBackDepth.connectedPoint?.value as FrameGraphTextureHandle;\r\n this._frameGraphTask.camera = this.camera.connectedPoint?.value as Camera;\r\n\r\n if (this.enableAutomaticThicknessComputation) {\r\n if (!this._frameGraphTask.backDepthTexture) {\r\n throw new Error(`SSR post process \"${this.name}\": Automatic thickness computation requires a back depth texture to be connected!`);\r\n }\r\n\r\n const geomBackDepthOwnerBlock = this.geomBackDepth.connectedPoint!.ownerBlock;\r\n if (geomBackDepthOwnerBlock.getClassName() === \"NodeRenderGraphGeometryRendererBlock\") {\r\n const geometryBackFaceRendererBlock = geomBackDepthOwnerBlock as NodeRenderGraphGeometryRendererBlock;\r\n if (!geometryBackFaceRendererBlock.reverseCulling) {\r\n throw new Error(\r\n `SSR post process \"${this.name}\": Automatic thickness computation requires the geometry renderer block for the back depth texture to have reverse culling enabled!`\r\n );\r\n }\r\n\r\n if (this._frameGraphTask.depthTexture) {\r\n const geomDepthOwnerBlock = this.geomDepth.connectedPoint!.ownerBlock;\r\n if (geomDepthOwnerBlock.getClassName() === \"NodeRenderGraphGeometryRendererBlock\") {\r\n const geomDepthConnectionPointType = this.geomDepth.connectedPoint!.type;\r\n const geomBackDepthConnectionPointType = this.geomBackDepth.connectedPoint!.type;\r\n\r\n if (geomDepthConnectionPointType !== geomBackDepthConnectionPointType) {\r\n throw new Error(\r\n `SSR post process \"${this.name}\": Automatic thickness computation requires that geomDepth and geomBackDepth have the same type (view or screen space depth)!`\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.geomNormal.connectedPoint) {\r\n if (this.geomNormal.connectedPoint.type === NodeRenderGraphBlockConnectionPointTypes.TextureWorldNormal) {\r\n this._frameGraphTask.ssr.normalsAreInWorldSpace = true;\r\n this._frameGraphTask.ssr.normalsAreUnsigned = true;\r\n }\r\n }\r\n if (this.geomDepth.connectedPoint) {\r\n if (this.geomDepth.connectedPoint.type === NodeRenderGraphBlockConnectionPointTypes.TextureScreenDepth) {\r\n this._frameGraphTask.ssr.useScreenspaceDepth = true;\r\n }\r\n }\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.debug = ${this.debug};`);\r\n codes.push(`${this._codeVariableName}.strength = ${this.strength};`);\r\n codes.push(`${this._codeVariableName}.reflectionSpecularFalloffExponent = ${this.reflectionSpecularFalloffExponent};`);\r\n codes.push(`${this._codeVariableName}.reflectivityThreshold = ${this.reflectivityThreshold};`);\r\n codes.push(`${this._codeVariableName}.thickness = ${this.thickness};`);\r\n codes.push(`${this._codeVariableName}.step = ${this.step};`);\r\n codes.push(`${this._codeVariableName}.enableSmoothReflections = ${this.enableSmoothReflections};`);\r\n codes.push(`${this._codeVariableName}.maxSteps = ${this.maxSteps};`);\r\n codes.push(`${this._codeVariableName}.maxDistance = ${this.maxDistance};`);\r\n codes.push(`${this._codeVariableName}.roughnessFactor = ${this.roughnessFactor};`);\r\n codes.push(`${this._codeVariableName}.selfCollisionNumSkip = ${this.selfCollisionNumSkip};`);\r\n codes.push(`${this._codeVariableName}.ssrDownsample = ${this.ssrDownsample};`);\r\n codes.push(`${this._codeVariableName}.clipToFrustum = ${this.clipToFrustum};`);\r\n codes.push(`${this._codeVariableName}.useFresnel = ${this.useFresnel};`);\r\n codes.push(`${this._codeVariableName}.enableAutomaticThicknessComputation = ${this.enableAutomaticThicknessComputation};`);\r\n codes.push(`${this._codeVariableName}.blurDispersionStrength = ${this.blurDispersionStrength};`);\r\n codes.push(`${this._codeVariableName}.blurDownsample = ${this.blurDownsample};`);\r\n codes.push(`${this._codeVariableName}.attenuateScreenBorders = ${this.attenuateScreenBorders};`);\r\n codes.push(`${this._codeVariableName}.attenuateIntersectionDistance = ${this.attenuateIntersectionDistance};`);\r\n codes.push(`${this._codeVariableName}.attenuateIntersectionIterations = ${this.attenuateIntersectionIterations};`);\r\n codes.push(`${this._codeVariableName}.attenuateFacingCamera = ${this.attenuateFacingCamera};`);\r\n codes.push(`${this._codeVariableName}.attenuateBackfaceReflection = ${this.attenuateBackfaceReflection};`);\r\n codes.push(`${this._codeVariableName}.inputTextureColorIsInGammaSpace = ${this.inputTextureColorIsInGammaSpace};`);\r\n codes.push(`${this._codeVariableName}.generateOutputInGammaSpace = ${this.generateOutputInGammaSpace};`);\r\n return super._dumpPropertiesCode() + codes.join(\"\\n\");\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.debug = this.debug;\r\n serializationObject.strength = this.strength;\r\n serializationObject.reflectionSpecularFalloffExponent = this.reflectionSpecularFalloffExponent;\r\n serializationObject.reflectivityThreshold = this.reflectivityThreshold;\r\n serializationObject.thickness = this.thickness;\r\n serializationObject.step = this.step;\r\n serializationObject.enableSmoothReflections = this.enableSmoothReflections;\r\n serializationObject.maxSteps = this.maxSteps;\r\n serializationObject.maxDistance = this.maxDistance;\r\n serializationObject.roughnessFactor = this.roughnessFactor;\r\n serializationObject.selfCollisionNumSkip = this.selfCollisionNumSkip;\r\n serializationObject.ssrDownsample = this.ssrDownsample;\r\n serializationObject.clipToFrustum = this.clipToFrustum;\r\n serializationObject.useFresnel = this.useFresnel;\r\n serializationObject.enableAutomaticThicknessComputation = this.enableAutomaticThicknessComputation;\r\n serializationObject.blurDispersionStrength = this.blurDispersionStrength;\r\n serializationObject.blurDownsample = this.blurDownsample;\r\n serializationObject.attenuateScreenBorders = this.attenuateScreenBorders;\r\n serializationObject.attenuateIntersectionDistance = this.attenuateIntersectionDistance;\r\n serializationObject.attenuateIntersectionIterations = this.attenuateIntersectionIterations;\r\n serializationObject.attenuateFacingCamera = this.attenuateFacingCamera;\r\n serializationObject.attenuateBackfaceReflection = this.attenuateBackfaceReflection;\r\n serializationObject.inputTextureColorIsInGammaSpace = this.inputTextureColorIsInGammaSpace;\r\n serializationObject.generateOutputInGammaSpace = this.generateOutputInGammaSpace;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.debug = serializationObject.debug;\r\n this.strength = serializationObject.strength;\r\n this.reflectionSpecularFalloffExponent = serializationObject.reflectionSpecularFalloffExponent;\r\n this.reflectivityThreshold = serializationObject.reflectivityThreshold;\r\n this.thickness = serializationObject.thickness;\r\n this.step = serializationObject.step;\r\n this.enableSmoothReflections = serializationObject.enableSmoothReflections;\r\n this.maxSteps = serializationObject.maxSteps;\r\n this.maxDistance = serializationObject.maxDistance;\r\n this.roughnessFactor = serializationObject.roughnessFactor;\r\n this.selfCollisionNumSkip = serializationObject.selfCollisionNumSkip;\r\n this.ssrDownsample = serializationObject.ssrDownsample;\r\n this.clipToFrustum = serializationObject.clipToFrustum;\r\n this.useFresnel = serializationObject.useFresnel;\r\n this.enableAutomaticThicknessComputation = serializationObject.enableAutomaticThicknessComputation;\r\n this.blurDispersionStrength = serializationObject.blurDispersionStrength;\r\n this.blurDownsample = serializationObject.blurDownsample;\r\n this.attenuateScreenBorders = serializationObject.attenuateScreenBorders;\r\n this.attenuateIntersectionDistance = serializationObject.attenuateIntersectionDistance;\r\n this.attenuateIntersectionIterations = serializationObject.attenuateIntersectionIterations;\r\n this.attenuateFacingCamera = serializationObject.attenuateFacingCamera;\r\n this.attenuateBackfaceReflection = serializationObject.attenuateBackfaceReflection;\r\n this.inputTextureColorIsInGammaSpace = serializationObject.inputTextureColorIsInGammaSpace;\r\n this.generateOutputInGammaSpace = serializationObject.generateOutputInGammaSpace;\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for ssrPostProcessBlock.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterSsrPostProcessBlock(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.NodeRenderGraphSSRPostProcessBlock\", NodeRenderGraphSSRPostProcessBlock);\r\n}\r\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** This file must only contain pure code and pure imports */
|
|
2
|
-
import {
|
|
2
|
+
import { __esDecorate, __runInitializers } from "../../../../tslib.es6.js";
|
|
3
3
|
import { NodeRenderGraphBlockConnectionPointTypes } from "../../Types/nodeRenderGraphTypes.js";
|
|
4
4
|
import { editableInPropertyPage } from "../../../../Decorators/nodeDecorator.js";
|
|
5
5
|
import { FrameGraphTAATask } from "../../../Tasks/PostProcesses/taaTask.js";
|
|
@@ -10,140 +10,152 @@ import { RegisterClass } from "../../../../Misc/typeStore.js";
|
|
|
10
10
|
/**
|
|
11
11
|
* Block that implements the TAA post process
|
|
12
12
|
*/
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
13
|
+
let NodeRenderGraphTAAPostProcessBlock = (() => {
|
|
14
|
+
var _a;
|
|
15
|
+
let _classSuper = NodeRenderGraphBaseWithPropertiesPostProcessBlock;
|
|
16
|
+
let _instanceExtraInitializers = [];
|
|
17
|
+
let _get_samples_decorators;
|
|
18
|
+
let _get_factor_decorators;
|
|
19
|
+
let _get_reprojectHistory_decorators;
|
|
20
|
+
let _get_clampHistory_decorators;
|
|
21
|
+
let _get_disableOnCameraMove_decorators;
|
|
22
|
+
let _get_disableTAA_decorators;
|
|
23
|
+
return _a = class NodeRenderGraphTAAPostProcessBlock extends _classSuper {
|
|
24
|
+
/**
|
|
25
|
+
* Gets the frame graph task associated with this block
|
|
26
|
+
*/
|
|
27
|
+
get task() {
|
|
28
|
+
return this._frameGraphTask;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Create a new NodeRenderGraphTAAPostProcessBlock
|
|
32
|
+
* @param name defines the block name
|
|
33
|
+
* @param frameGraph defines the hosting frame graph
|
|
34
|
+
* @param scene defines the hosting scene
|
|
35
|
+
*/
|
|
36
|
+
constructor(name, frameGraph, scene) {
|
|
37
|
+
super(name, frameGraph, scene);
|
|
38
|
+
this._frameGraphTask = __runInitializers(this, _instanceExtraInitializers);
|
|
39
|
+
this.registerInput("objectRenderer", NodeRenderGraphBlockConnectionPointTypes.Object, false, new NodeRenderGraphConnectionPointCustomObject("objectRenderer", this, 0 /* NodeRenderGraphConnectionPointDirection.Input */, NodeRenderGraphBaseObjectRendererBlock, "NodeRenderGraphBaseObjectRendererBlock"));
|
|
40
|
+
this.registerInput("geomVelocity", NodeRenderGraphBlockConnectionPointTypes.TextureLinearVelocity, true);
|
|
41
|
+
this._finalizeInputOutputRegistering();
|
|
42
|
+
this._frameGraphTask = new FrameGraphTAATask(this.name, frameGraph);
|
|
43
|
+
}
|
|
44
|
+
/** Number of accumulated samples */
|
|
45
|
+
get samples() {
|
|
46
|
+
return this._frameGraphTask.postProcess.samples;
|
|
47
|
+
}
|
|
48
|
+
set samples(value) {
|
|
49
|
+
this._frameGraphTask.postProcess.samples = value;
|
|
50
|
+
}
|
|
51
|
+
/** The factor used to blend the history frame with current frame */
|
|
52
|
+
get factor() {
|
|
53
|
+
return this._frameGraphTask.postProcess.factor;
|
|
54
|
+
}
|
|
55
|
+
set factor(value) {
|
|
56
|
+
this._frameGraphTask.postProcess.factor = value;
|
|
57
|
+
}
|
|
58
|
+
/** Enables reprojecting the history texture with a per-pixel velocity */
|
|
59
|
+
get reprojectHistory() {
|
|
60
|
+
return this._frameGraphTask.postProcess.reprojectHistory;
|
|
61
|
+
}
|
|
62
|
+
set reprojectHistory(value) {
|
|
63
|
+
this._frameGraphTask.postProcess.reprojectHistory = value;
|
|
64
|
+
}
|
|
65
|
+
/** Clamps the history pixel to the min and max of the 3x3 pixels surrounding the target pixel */
|
|
66
|
+
get clampHistory() {
|
|
67
|
+
return this._frameGraphTask.postProcess.clampHistory;
|
|
68
|
+
}
|
|
69
|
+
set clampHistory(value) {
|
|
70
|
+
this._frameGraphTask.postProcess.clampHistory = value;
|
|
71
|
+
}
|
|
72
|
+
/** Indicates if depth testing must be enabled or disabled */
|
|
73
|
+
get disableOnCameraMove() {
|
|
74
|
+
return this._frameGraphTask.postProcess.disableOnCameraMove;
|
|
75
|
+
}
|
|
76
|
+
set disableOnCameraMove(value) {
|
|
77
|
+
this._frameGraphTask.postProcess.disableOnCameraMove = value;
|
|
78
|
+
}
|
|
79
|
+
/** Indicates if TAA must be enabled or disabled */
|
|
80
|
+
get disableTAA() {
|
|
81
|
+
return this._frameGraphTask.postProcess.disabled;
|
|
82
|
+
}
|
|
83
|
+
set disableTAA(value) {
|
|
84
|
+
this._frameGraphTask.postProcess.disabled = value;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Gets the current class name
|
|
88
|
+
* @returns the class name
|
|
89
|
+
*/
|
|
90
|
+
getClassName() {
|
|
91
|
+
return "NodeRenderGraphTAAPostProcessBlock";
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Gets the object renderer input component
|
|
95
|
+
*/
|
|
96
|
+
get objectRenderer() {
|
|
97
|
+
return this._inputs[2];
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Gets the geometry velocity input component
|
|
101
|
+
*/
|
|
102
|
+
get geomVelocity() {
|
|
103
|
+
return this._inputs[3];
|
|
104
|
+
}
|
|
105
|
+
_buildBlock(state) {
|
|
106
|
+
super._buildBlock(state);
|
|
107
|
+
this._frameGraphTask.objectRendererTask = this.objectRenderer.connectedPoint?.value;
|
|
108
|
+
this._frameGraphTask.velocityTexture = this.geomVelocity.connectedPoint?.value;
|
|
109
|
+
}
|
|
110
|
+
_dumpPropertiesCode() {
|
|
111
|
+
const codes = [];
|
|
112
|
+
codes.push(`${this._codeVariableName}.samples = ${this.samples};`);
|
|
113
|
+
codes.push(`${this._codeVariableName}.factor = ${this.factor};`);
|
|
114
|
+
codes.push(`${this._codeVariableName}.clampHistory = ${this.clampHistory};`);
|
|
115
|
+
codes.push(`${this._codeVariableName}.reprojectHistory = ${this.reprojectHistory};`);
|
|
116
|
+
codes.push(`${this._codeVariableName}.disableOnCameraMove = ${this.disableOnCameraMove};`);
|
|
117
|
+
codes.push(`${this._codeVariableName}.disableTAA = ${this.disableTAA};`);
|
|
118
|
+
return super._dumpPropertiesCode() + codes.join("\n");
|
|
119
|
+
}
|
|
120
|
+
serialize() {
|
|
121
|
+
const serializationObject = super.serialize();
|
|
122
|
+
serializationObject.samples = this.samples;
|
|
123
|
+
serializationObject.factor = this.factor;
|
|
124
|
+
serializationObject.clampHistory = this.clampHistory;
|
|
125
|
+
serializationObject.reprojectHistory = this.reprojectHistory;
|
|
126
|
+
serializationObject.disableOnCameraMove = this.disableOnCameraMove;
|
|
127
|
+
serializationObject.disableTAA = this.disableTAA;
|
|
128
|
+
return serializationObject;
|
|
129
|
+
}
|
|
130
|
+
_deserialize(serializationObject) {
|
|
131
|
+
super._deserialize(serializationObject);
|
|
132
|
+
this.samples = serializationObject.samples;
|
|
133
|
+
this.factor = serializationObject.factor;
|
|
134
|
+
this.clampHistory = serializationObject.clampHistory;
|
|
135
|
+
this.reprojectHistory = serializationObject.reprojectHistory;
|
|
136
|
+
this.disableOnCameraMove = serializationObject.disableOnCameraMove;
|
|
137
|
+
this.disableTAA = serializationObject.disableTAA;
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
(() => {
|
|
141
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
142
|
+
_get_samples_decorators = [editableInPropertyPage("Samples", 2 /* PropertyTypeForEdition.Int */, "PROPERTIES")];
|
|
143
|
+
_get_factor_decorators = [editableInPropertyPage("Factor", 1 /* PropertyTypeForEdition.Float */, "PROPERTIES")];
|
|
144
|
+
_get_reprojectHistory_decorators = [editableInPropertyPage("Reproject history", 0 /* PropertyTypeForEdition.Boolean */, "PROPERTIES")];
|
|
145
|
+
_get_clampHistory_decorators = [editableInPropertyPage("Clamp history", 0 /* PropertyTypeForEdition.Boolean */, "PROPERTIES")];
|
|
146
|
+
_get_disableOnCameraMove_decorators = [editableInPropertyPage("Disable on camera move", 0 /* PropertyTypeForEdition.Boolean */, "PROPERTIES")];
|
|
147
|
+
_get_disableTAA_decorators = [editableInPropertyPage("Disable TAA", 0 /* PropertyTypeForEdition.Boolean */, "PROPERTIES")];
|
|
148
|
+
__esDecorate(_a, null, _get_samples_decorators, { kind: "getter", name: "samples", static: false, private: false, access: { has: obj => "samples" in obj, get: obj => obj.samples }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
149
|
+
__esDecorate(_a, null, _get_factor_decorators, { kind: "getter", name: "factor", static: false, private: false, access: { has: obj => "factor" in obj, get: obj => obj.factor }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
150
|
+
__esDecorate(_a, null, _get_reprojectHistory_decorators, { kind: "getter", name: "reprojectHistory", static: false, private: false, access: { has: obj => "reprojectHistory" in obj, get: obj => obj.reprojectHistory }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
151
|
+
__esDecorate(_a, null, _get_clampHistory_decorators, { kind: "getter", name: "clampHistory", static: false, private: false, access: { has: obj => "clampHistory" in obj, get: obj => obj.clampHistory }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
152
|
+
__esDecorate(_a, null, _get_disableOnCameraMove_decorators, { kind: "getter", name: "disableOnCameraMove", static: false, private: false, access: { has: obj => "disableOnCameraMove" in obj, get: obj => obj.disableOnCameraMove }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
153
|
+
__esDecorate(_a, null, _get_disableTAA_decorators, { kind: "getter", name: "disableTAA", static: false, private: false, access: { has: obj => "disableTAA" in obj, get: obj => obj.disableTAA }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
154
|
+
if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
155
|
+
})(),
|
|
156
|
+
_a;
|
|
157
|
+
})();
|
|
158
|
+
export { NodeRenderGraphTAAPostProcessBlock };
|
|
147
159
|
let _Registered = false;
|
|
148
160
|
/**
|
|
149
161
|
* Register side effects for taaPostProcessBlock.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taaPostProcessBlock.pure.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport {\r\n type NodeRenderGraphConnectionPoint,\r\n type Scene,\r\n type NodeRenderGraphBuildState,\r\n type FrameGraph,\r\n type FrameGraphObjectRendererTask,\r\n type FrameGraphTextureHandle,\r\n} from \"core/index\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes, NodeRenderGraphConnectionPointDirection } from \"../../Types/nodeRenderGraphTypes\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { FrameGraphTAATask } from \"core/FrameGraph/Tasks/PostProcesses/taaTask\";\r\nimport { NodeRenderGraphConnectionPointCustomObject } from \"../../nodeRenderGraphConnectionPointCustomObject\";\r\nimport { NodeRenderGraphBaseObjectRendererBlock } from \"../Rendering/baseObjectRendererBlock\";\r\nimport { NodeRenderGraphBaseWithPropertiesPostProcessBlock } from \"./baseWithPropertiesPostProcessBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\n\r\n/**\r\n * Block that implements the TAA post process\r\n */\r\nexport class NodeRenderGraphTAAPostProcessBlock extends NodeRenderGraphBaseWithPropertiesPostProcessBlock {\r\n protected override _frameGraphTask: FrameGraphTAATask;\r\n\r\n /**\r\n * Gets the frame graph task associated with this block\r\n */\r\n public override get task() {\r\n return this._frameGraphTask;\r\n }\r\n\r\n /**\r\n * Create a new NodeRenderGraphTAAPostProcessBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene) {\r\n super(name, frameGraph, scene);\r\n\r\n this.registerInput(\r\n \"objectRenderer\",\r\n NodeRenderGraphBlockConnectionPointTypes.Object,\r\n false,\r\n new NodeRenderGraphConnectionPointCustomObject(\r\n \"objectRenderer\",\r\n this,\r\n NodeRenderGraphConnectionPointDirection.Input,\r\n NodeRenderGraphBaseObjectRendererBlock,\r\n \"NodeRenderGraphBaseObjectRendererBlock\"\r\n )\r\n );\r\n this.registerInput(\"geomVelocity\", NodeRenderGraphBlockConnectionPointTypes.TextureLinearVelocity, true);\r\n\r\n this._finalizeInputOutputRegistering();\r\n\r\n this._frameGraphTask = new FrameGraphTAATask(this.name, frameGraph);\r\n }\r\n\r\n /** Number of accumulated samples */\r\n @editableInPropertyPage(\"Samples\", PropertyTypeForEdition.Int, \"PROPERTIES\")\r\n public get samples() {\r\n return this._frameGraphTask.postProcess.samples;\r\n }\r\n\r\n public set samples(value: number) {\r\n this._frameGraphTask.postProcess.samples = value;\r\n }\r\n\r\n /** The factor used to blend the history frame with current frame */\r\n @editableInPropertyPage(\"Factor\", PropertyTypeForEdition.Float, \"PROPERTIES\")\r\n public get factor() {\r\n return this._frameGraphTask.postProcess.factor;\r\n }\r\n\r\n public set factor(value: number) {\r\n this._frameGraphTask.postProcess.factor = value;\r\n }\r\n\r\n /** Enables reprojecting the history texture with a per-pixel velocity */\r\n @editableInPropertyPage(\"Reproject history\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get reprojectHistory() {\r\n return this._frameGraphTask.postProcess.reprojectHistory;\r\n }\r\n\r\n public set reprojectHistory(value: boolean) {\r\n this._frameGraphTask.postProcess.reprojectHistory = value;\r\n }\r\n\r\n /** Clamps the history pixel to the min and max of the 3x3 pixels surrounding the target pixel */\r\n @editableInPropertyPage(\"Clamp history\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get clampHistory() {\r\n return this._frameGraphTask.postProcess.clampHistory;\r\n }\r\n\r\n public set clampHistory(value: boolean) {\r\n this._frameGraphTask.postProcess.clampHistory = value;\r\n }\r\n\r\n /** Indicates if depth testing must be enabled or disabled */\r\n @editableInPropertyPage(\"Disable on camera move\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get disableOnCameraMove() {\r\n return this._frameGraphTask.postProcess.disableOnCameraMove;\r\n }\r\n\r\n public set disableOnCameraMove(value: boolean) {\r\n this._frameGraphTask.postProcess.disableOnCameraMove = value;\r\n }\r\n\r\n /** Indicates if TAA must be enabled or disabled */\r\n @editableInPropertyPage(\"Disable TAA\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get disableTAA() {\r\n return this._frameGraphTask.postProcess.disabled;\r\n }\r\n\r\n public set disableTAA(value: boolean) {\r\n this._frameGraphTask.postProcess.disabled = value;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphTAAPostProcessBlock\";\r\n }\r\n\r\n /**\r\n * Gets the object renderer input component\r\n */\r\n public get objectRenderer(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the geometry velocity input component\r\n */\r\n public get geomVelocity(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n protected override _buildBlock(state: NodeRenderGraphBuildState) {\r\n super._buildBlock(state);\r\n\r\n this._frameGraphTask.objectRendererTask = this.objectRenderer.connectedPoint?.value as FrameGraphObjectRendererTask;\r\n this._frameGraphTask.velocityTexture = this.geomVelocity.connectedPoint?.value as FrameGraphTextureHandle;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.samples = ${this.samples};`);\r\n codes.push(`${this._codeVariableName}.factor = ${this.factor};`);\r\n codes.push(`${this._codeVariableName}.clampHistory = ${this.clampHistory};`);\r\n codes.push(`${this._codeVariableName}.reprojectHistory = ${this.reprojectHistory};`);\r\n codes.push(`${this._codeVariableName}.disableOnCameraMove = ${this.disableOnCameraMove};`);\r\n codes.push(`${this._codeVariableName}.disableTAA = ${this.disableTAA};`);\r\n return super._dumpPropertiesCode() + codes.join(\"\\n\");\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.samples = this.samples;\r\n serializationObject.factor = this.factor;\r\n serializationObject.clampHistory = this.clampHistory;\r\n serializationObject.reprojectHistory = this.reprojectHistory;\r\n serializationObject.disableOnCameraMove = this.disableOnCameraMove;\r\n serializationObject.disableTAA = this.disableTAA;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.samples = serializationObject.samples;\r\n this.factor = serializationObject.factor;\r\n this.clampHistory = serializationObject.clampHistory;\r\n this.reprojectHistory = serializationObject.reprojectHistory;\r\n this.disableOnCameraMove = serializationObject.disableOnCameraMove;\r\n this.disableTAA = serializationObject.disableTAA;\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for taaPostProcessBlock.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterTaaPostProcessBlock(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.NodeRenderGraphTAAPostProcessBlock\", NodeRenderGraphTAAPostProcessBlock);\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"taaPostProcessBlock.pure.js","sourceRoot":"","sources":["../../../../../../../dev/core/src/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport {\r\n type NodeRenderGraphConnectionPoint,\r\n type Scene,\r\n type NodeRenderGraphBuildState,\r\n type FrameGraph,\r\n type FrameGraphObjectRendererTask,\r\n type FrameGraphTextureHandle,\r\n} from \"core/index\";\r\nimport { NodeRenderGraphBlockConnectionPointTypes, NodeRenderGraphConnectionPointDirection } from \"../../Types/nodeRenderGraphTypes\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"../../../../Decorators/nodeDecorator\";\r\nimport { FrameGraphTAATask } from \"core/FrameGraph/Tasks/PostProcesses/taaTask\";\r\nimport { NodeRenderGraphConnectionPointCustomObject } from \"../../nodeRenderGraphConnectionPointCustomObject\";\r\nimport { NodeRenderGraphBaseObjectRendererBlock } from \"../Rendering/baseObjectRendererBlock\";\r\nimport { NodeRenderGraphBaseWithPropertiesPostProcessBlock } from \"./baseWithPropertiesPostProcessBlock\";\r\nimport { RegisterClass } from \"../../../../Misc/typeStore\";\r\n\r\n/**\r\n * Block that implements the TAA post process\r\n */\r\nexport class NodeRenderGraphTAAPostProcessBlock extends NodeRenderGraphBaseWithPropertiesPostProcessBlock {\r\n protected override _frameGraphTask: FrameGraphTAATask;\r\n\r\n /**\r\n * Gets the frame graph task associated with this block\r\n */\r\n public override get task() {\r\n return this._frameGraphTask;\r\n }\r\n\r\n /**\r\n * Create a new NodeRenderGraphTAAPostProcessBlock\r\n * @param name defines the block name\r\n * @param frameGraph defines the hosting frame graph\r\n * @param scene defines the hosting scene\r\n */\r\n public constructor(name: string, frameGraph: FrameGraph, scene: Scene) {\r\n super(name, frameGraph, scene);\r\n\r\n this.registerInput(\r\n \"objectRenderer\",\r\n NodeRenderGraphBlockConnectionPointTypes.Object,\r\n false,\r\n new NodeRenderGraphConnectionPointCustomObject(\r\n \"objectRenderer\",\r\n this,\r\n NodeRenderGraphConnectionPointDirection.Input,\r\n NodeRenderGraphBaseObjectRendererBlock,\r\n \"NodeRenderGraphBaseObjectRendererBlock\"\r\n )\r\n );\r\n this.registerInput(\"geomVelocity\", NodeRenderGraphBlockConnectionPointTypes.TextureLinearVelocity, true);\r\n\r\n this._finalizeInputOutputRegistering();\r\n\r\n this._frameGraphTask = new FrameGraphTAATask(this.name, frameGraph);\r\n }\r\n\r\n /** Number of accumulated samples */\r\n @editableInPropertyPage(\"Samples\", PropertyTypeForEdition.Int, \"PROPERTIES\")\r\n public get samples() {\r\n return this._frameGraphTask.postProcess.samples;\r\n }\r\n\r\n public set samples(value: number) {\r\n this._frameGraphTask.postProcess.samples = value;\r\n }\r\n\r\n /** The factor used to blend the history frame with current frame */\r\n @editableInPropertyPage(\"Factor\", PropertyTypeForEdition.Float, \"PROPERTIES\")\r\n public get factor() {\r\n return this._frameGraphTask.postProcess.factor;\r\n }\r\n\r\n public set factor(value: number) {\r\n this._frameGraphTask.postProcess.factor = value;\r\n }\r\n\r\n /** Enables reprojecting the history texture with a per-pixel velocity */\r\n @editableInPropertyPage(\"Reproject history\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get reprojectHistory() {\r\n return this._frameGraphTask.postProcess.reprojectHistory;\r\n }\r\n\r\n public set reprojectHistory(value: boolean) {\r\n this._frameGraphTask.postProcess.reprojectHistory = value;\r\n }\r\n\r\n /** Clamps the history pixel to the min and max of the 3x3 pixels surrounding the target pixel */\r\n @editableInPropertyPage(\"Clamp history\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get clampHistory() {\r\n return this._frameGraphTask.postProcess.clampHistory;\r\n }\r\n\r\n public set clampHistory(value: boolean) {\r\n this._frameGraphTask.postProcess.clampHistory = value;\r\n }\r\n\r\n /** Indicates if depth testing must be enabled or disabled */\r\n @editableInPropertyPage(\"Disable on camera move\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get disableOnCameraMove() {\r\n return this._frameGraphTask.postProcess.disableOnCameraMove;\r\n }\r\n\r\n public set disableOnCameraMove(value: boolean) {\r\n this._frameGraphTask.postProcess.disableOnCameraMove = value;\r\n }\r\n\r\n /** Indicates if TAA must be enabled or disabled */\r\n @editableInPropertyPage(\"Disable TAA\", PropertyTypeForEdition.Boolean, \"PROPERTIES\")\r\n public get disableTAA() {\r\n return this._frameGraphTask.postProcess.disabled;\r\n }\r\n\r\n public set disableTAA(value: boolean) {\r\n this._frameGraphTask.postProcess.disabled = value;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"NodeRenderGraphTAAPostProcessBlock\";\r\n }\r\n\r\n /**\r\n * Gets the object renderer input component\r\n */\r\n public get objectRenderer(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the geometry velocity input component\r\n */\r\n public get geomVelocity(): NodeRenderGraphConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n protected override _buildBlock(state: NodeRenderGraphBuildState) {\r\n super._buildBlock(state);\r\n\r\n this._frameGraphTask.objectRendererTask = this.objectRenderer.connectedPoint?.value as FrameGraphObjectRendererTask;\r\n this._frameGraphTask.velocityTexture = this.geomVelocity.connectedPoint?.value as FrameGraphTextureHandle;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codes: string[] = [];\r\n codes.push(`${this._codeVariableName}.samples = ${this.samples};`);\r\n codes.push(`${this._codeVariableName}.factor = ${this.factor};`);\r\n codes.push(`${this._codeVariableName}.clampHistory = ${this.clampHistory};`);\r\n codes.push(`${this._codeVariableName}.reprojectHistory = ${this.reprojectHistory};`);\r\n codes.push(`${this._codeVariableName}.disableOnCameraMove = ${this.disableOnCameraMove};`);\r\n codes.push(`${this._codeVariableName}.disableTAA = ${this.disableTAA};`);\r\n return super._dumpPropertiesCode() + codes.join(\"\\n\");\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.samples = this.samples;\r\n serializationObject.factor = this.factor;\r\n serializationObject.clampHistory = this.clampHistory;\r\n serializationObject.reprojectHistory = this.reprojectHistory;\r\n serializationObject.disableOnCameraMove = this.disableOnCameraMove;\r\n serializationObject.disableTAA = this.disableTAA;\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n this.samples = serializationObject.samples;\r\n this.factor = serializationObject.factor;\r\n this.clampHistory = serializationObject.clampHistory;\r\n this.reprojectHistory = serializationObject.reprojectHistory;\r\n this.disableOnCameraMove = serializationObject.disableOnCameraMove;\r\n this.disableTAA = serializationObject.disableTAA;\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for taaPostProcessBlock.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterTaaPostProcessBlock(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.NodeRenderGraphTAAPostProcessBlock\", NodeRenderGraphTAAPostProcessBlock);\r\n}\r\n"]}
|