@onerjs/core 8.55.8 → 8.56.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Animations/animation.pure.js +2 -2
- package/Animations/animation.pure.js.map +1 -1
- package/Animations/runtimeAnimation.js +4 -0
- package/Animations/runtimeAnimation.js.map +1 -1
- package/AudioV2/webAudio/webAudioEngine.d.ts +7 -0
- package/AudioV2/webAudio/webAudioEngine.js +6 -5
- package/AudioV2/webAudio/webAudioEngine.js.map +1 -1
- package/Behaviors/Cameras/autoRotationBehavior.js +1 -1
- package/Behaviors/Cameras/autoRotationBehavior.js.map +1 -1
- package/Behaviors/Meshes/followBehavior.js +1 -0
- package/Behaviors/Meshes/followBehavior.js.map +1 -1
- package/Behaviors/Meshes/surfaceMagnetismBehavior.js +1 -0
- package/Behaviors/Meshes/surfaceMagnetismBehavior.js.map +1 -1
- package/Cameras/Inputs/followCameraMouseWheelInput.js +2 -2
- package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/followCameraPointersInput.d.ts +15 -0
- package/Cameras/Inputs/followCameraPointersInput.js +18 -3
- package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +1 -1
- package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
- package/Cameras/Stereoscopic/stereoscopicUniversalCamera.pure.js +1 -1
- package/Cameras/Stereoscopic/stereoscopicUniversalCamera.pure.js.map +1 -1
- package/Cameras/arcRotateCamera.pure.js +1 -1
- package/Cameras/arcRotateCamera.pure.js.map +1 -1
- package/Collisions/gpuPicker.d.ts +1 -0
- package/Collisions/gpuPicker.js +5 -4
- package/Collisions/gpuPicker.js.map +1 -1
- package/Culling/Helper/boundingInfoHelper.js +9 -5
- package/Culling/Helper/boundingInfoHelper.js.map +1 -1
- package/Culling/boundingSphere.js +7 -4
- package/Culling/boundingSphere.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.textureLoaders.d.ts +5 -1
- package/Engines/AbstractEngine/abstractEngine.textureLoaders.js +7 -3
- package/Engines/AbstractEngine/abstractEngine.textureLoaders.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.textureLoaders.pure.d.ts +6 -0
- package/Engines/AbstractEngine/abstractEngine.textureLoaders.pure.js +16 -0
- package/Engines/AbstractEngine/abstractEngine.textureLoaders.pure.js.map +1 -0
- package/Engines/AbstractEngine/pure.d.ts +1 -0
- package/Engines/AbstractEngine/pure.js +1 -0
- package/Engines/AbstractEngine/pure.js.map +1 -1
- package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js +1 -1
- package/Engines/Extensions/engine.prefilteredCubeTexture.pure.js.map +1 -1
- package/Engines/IDrawContext.d.ts +2 -0
- package/Engines/IDrawContext.js.map +1 -1
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js +48 -6
- package/Engines/Native/Extensions/nativeEngine.cubeTexture.pure.js.map +1 -1
- package/Engines/Native/nativeInterfaces.d.ts +1 -1
- package/Engines/Native/nativeInterfaces.js.map +1 -1
- package/Engines/WebGPU/webgpuDrawContext.d.ts +8 -0
- package/Engines/WebGPU/webgpuDrawContext.js +15 -0
- package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
- package/Engines/abstractEngine.pure.js +2 -2
- package/Engines/abstractEngine.pure.js.map +1 -1
- package/Engines/engine.d.ts +21 -4
- package/Engines/thinNativeEngine.pure.d.ts +6 -1
- package/Engines/thinNativeEngine.pure.js +29 -2
- 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 +10 -0
- package/Engines/webgpuEngine.pure.js +15 -1
- package/Engines/webgpuEngine.pure.js.map +1 -1
- package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.d.ts +3 -63
- package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.js +5 -71
- package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.js.map +1 -1
- package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.pure.d.ts +71 -0
- package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.pure.js +86 -0
- package/FlowGraph/Blocks/Data/flowGraphIsKeyPressedBlock.pure.js.map +1 -0
- package/FlowGraph/Blocks/Data/pure.d.ts +1 -0
- package/FlowGraph/Blocks/Data/pure.js +1 -0
- package/FlowGraph/Blocks/Data/pure.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.d.ts +3 -37
- package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.js +5 -39
- package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.pure.d.ts +45 -0
- package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.pure.js +54 -0
- package/FlowGraph/Blocks/Event/flowGraphKeyDownEventBlock.pure.js.map +1 -0
- package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.d.ts +3 -17
- package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.js +5 -22
- package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.pure.d.ts +25 -0
- package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.pure.js +37 -0
- package/FlowGraph/Blocks/Event/flowGraphKeyUpEventBlock.pure.js.map +1 -0
- package/FlowGraph/Blocks/Event/pure.d.ts +2 -0
- package/FlowGraph/Blocks/Event/pure.js +2 -0
- package/FlowGraph/Blocks/Event/pure.js.map +1 -1
- package/FlowGraph/Blocks/flowGraphBlockFactory.d.ts +1 -1
- package/FlowGraph/Blocks/flowGraphBlockFactory.js +198 -172
- package/FlowGraph/Blocks/flowGraphBlockFactory.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js +2 -5
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js.map +1 -1
- package/FrameGraph/frameGraph.js +10 -1
- package/FrameGraph/frameGraph.js.map +1 -1
- package/Gamepads/gamepadManager.d.ts +1 -0
- package/Gamepads/gamepadManager.js +5 -2
- package/Gamepads/gamepadManager.js.map +1 -1
- package/Gizmos/scaleGizmo.js +1 -0
- package/Gizmos/scaleGizmo.js.map +1 -1
- package/Lights/IES/iesLoader.js +6 -8
- package/Lights/IES/iesLoader.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.pure.js +4 -6
- package/Lights/Shadows/cascadedShadowGenerator.pure.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.js +2 -2
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Lights/light.js +3 -5
- package/Lights/light.js.map +1 -1
- package/Lights/spotLight.pure.js +1 -1
- package/Lights/spotLight.pure.js.map +1 -1
- package/Materials/Background/backgroundMaterial.pure.d.ts +1 -1
- package/Materials/Background/backgroundMaterial.pure.js +3 -12
- package/Materials/Background/backgroundMaterial.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +2 -0
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/TBNBlock.pure.js +1 -1
- package/Materials/Node/Blocks/Fragment/TBNBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js +2 -0
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js +1 -0
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/powBlock.pure.js +2 -1
- package/Materials/Node/Blocks/powBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/triPlanarBlock.pure.js +14 -12
- package/Materials/Node/Blocks/triPlanarBlock.pure.js.map +1 -1
- package/Materials/Node/nodeMaterial.pure.d.ts +1 -0
- package/Materials/Node/nodeMaterialBuildState.d.ts +3 -3
- package/Materials/PBR/openpbrMaterial.pure.d.ts +2 -1
- package/Materials/PBR/openpbrMaterial.pure.js +3 -12
- package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.pure.d.ts +2 -1
- package/Materials/PBR/pbrBaseMaterial.pure.js +3 -12
- package/Materials/PBR/pbrBaseMaterial.pure.js.map +1 -1
- package/Materials/Textures/index.d.ts +1 -0
- package/Materials/Textures/index.js +1 -0
- package/Materials/Textures/index.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.pure.js +1 -1
- package/Materials/Textures/renderTargetTexture.pure.js.map +1 -1
- package/Materials/drawWrapper.js +3 -0
- package/Materials/drawWrapper.js.map +1 -1
- package/Materials/imageProcessingConfiguration.defines.d.ts +3 -0
- package/Materials/imageProcessingConfiguration.defines.js +2 -0
- package/Materials/imageProcessingConfiguration.defines.js.map +1 -1
- package/Materials/imageProcessingConfiguration.functions.js +3 -0
- package/Materials/imageProcessingConfiguration.functions.js.map +1 -1
- package/Materials/imageProcessingConfiguration.pure.d.ts +58 -0
- package/Materials/imageProcessingConfiguration.pure.js +123 -2
- package/Materials/imageProcessingConfiguration.pure.js.map +1 -1
- package/Materials/material.pure.js +2 -2
- package/Materials/material.pure.js.map +1 -1
- package/Materials/standardMaterial.pure.d.ts +2 -1
- package/Materials/standardMaterial.pure.js +4 -13
- package/Materials/standardMaterial.pure.js.map +1 -1
- package/Materials/uniformBuffer.d.ts +29 -0
- package/Materials/uniformBuffer.js +146 -0
- package/Materials/uniformBuffer.js.map +1 -1
- package/Maths/colorTemperature.functions.d.ts +29 -0
- package/Maths/colorTemperature.functions.js +196 -0
- package/Maths/colorTemperature.functions.js.map +1 -0
- package/Maths/index.d.ts +1 -0
- package/Maths/index.js +1 -0
- package/Maths/index.js.map +1 -1
- package/Maths/math.path.js +1 -1
- package/Maths/math.path.js.map +1 -1
- package/Maths/math.polar.js +1 -1
- package/Maths/math.polar.js.map +1 -1
- package/Maths/math.vector.pure.js +4 -3
- package/Maths/math.vector.pure.js.map +1 -1
- package/Maths/pure.d.ts +1 -0
- package/Maths/pure.js +1 -0
- package/Maths/pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.d.ts +72 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +164 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +2 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +36 -18
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingPartProxyMesh.pure.d.ts +5 -4
- package/Meshes/GaussianSplatting/gaussianSplattingPartProxyMesh.pure.js +25 -8
- package/Meshes/GaussianSplatting/gaussianSplattingPartProxyMesh.pure.js.map +1 -1
- package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js +3 -3
- package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js +2 -2
- package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/mappingBlock.pure.js +2 -2
- package/Meshes/Node/Blocks/mappingBlock.pure.js.map +1 -1
- package/Meshes/csg.js +5 -5
- package/Meshes/csg.js.map +1 -1
- package/Meshes/groundMesh.pure.js +1 -1
- package/Meshes/groundMesh.pure.js.map +1 -1
- package/Meshes/mesh.pure.js +2 -2
- package/Meshes/mesh.pure.js.map +1 -1
- package/Misc/deepMerger.js +1 -1
- package/Misc/deepMerger.js.map +1 -1
- package/Misc/dumpTools.pure.js +1 -1
- package/Misc/dumpTools.pure.js.map +1 -1
- package/Misc/index.d.ts +1 -0
- package/Misc/index.js +1 -0
- package/Misc/index.js.map +1 -1
- package/Misc/observable.pure.js +1 -3
- package/Misc/observable.pure.js.map +1 -1
- package/Misc/pure.d.ts +1 -0
- package/Misc/pure.js +1 -0
- package/Misc/pure.js.map +1 -1
- package/Misc/shaderImportLoader.d.ts +25 -0
- package/Misc/shaderImportLoader.js +54 -0
- package/Misc/shaderImportLoader.js.map +1 -0
- package/Misc/tools.pure.js +1 -1
- package/Misc/tools.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleClampBlock.pure.d.ts +0 -1
- package/Particles/Node/Blocks/particleClampBlock.pure.js +1 -6
- package/Particles/Node/Blocks/particleClampBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleMathBlock.pure.js +1 -1
- package/Particles/Node/Blocks/particleMathBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleNLerpBlock.pure.js +8 -3
- package/Particles/Node/Blocks/particleNLerpBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleSmoothStepBlock.pure.js +3 -2
- package/Particles/Node/Blocks/particleSmoothStepBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleStepBlock.pure.js +3 -2
- package/Particles/Node/Blocks/particleStepBlock.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/depthOfFieldEffect.js +1 -1
- package/PostProcesses/depthOfFieldEffect.js.map +1 -1
- package/PostProcesses/imageProcessingPostProcess.d.ts +41 -1
- package/PostProcesses/imageProcessingPostProcess.js +41 -1
- package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js.map +1 -1
- package/PostProcesses/sharpenPostProcess.pure.js +1 -1
- package/PostProcesses/sharpenPostProcess.pure.js.map +1 -1
- package/PostProcesses/thinImageProcessingPostProcess.d.ts +50 -0
- package/PostProcesses/thinImageProcessingPostProcess.js +65 -0
- package/PostProcesses/thinImageProcessingPostProcess.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsMaterialCompatibility.pure.d.ts +12 -0
- package/Rendering/IBLShadows/iblShadowsMaterialCompatibility.pure.js +22 -0
- package/Rendering/IBLShadows/iblShadowsMaterialCompatibility.pure.js.map +1 -0
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.d.ts +1 -0
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js +39 -0
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.d.ts +12 -0
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +17 -5
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.d.ts +14 -0
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +122 -6
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.d.ts +7 -0
- package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js +17 -0
- package/Rendering/IBLShadows/iblShadowsVoxelTracingPass.js.map +1 -1
- package/Rendering/IBLShadows/pure.d.ts +1 -0
- package/Rendering/IBLShadows/pure.js +1 -0
- package/Rendering/IBLShadows/pure.js.map +1 -1
- package/Rendering/boundingBoxRenderer.pure.js +3 -3
- package/Rendering/boundingBoxRenderer.pure.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObject.d.ts +11 -0
- package/Rendering/fluidRenderer/fluidRenderingObject.js +36 -14
- package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.d.ts +5 -0
- package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js +16 -3
- package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.d.ts +5 -0
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +12 -0
- package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
- package/Rendering/iblCdfGenerator.js +10 -1
- package/Rendering/iblCdfGenerator.js.map +1 -1
- package/Rendering/outlineRenderer.pure.js +1 -0
- package/Rendering/outlineRenderer.pure.js.map +1 -1
- package/Rendering/subSurfaceConfiguration.js +1 -1
- package/Rendering/subSurfaceConfiguration.js.map +1 -1
- package/Rendering/subSurfaceSceneComponent.pure.d.ts +1 -1
- package/Rendering/subSurfaceSceneComponent.pure.js +1 -1
- package/Rendering/subSurfaceSceneComponent.pure.js.map +1 -1
- package/Rendering/utilityLayerRenderer.js +1 -1
- package/Rendering/utilityLayerRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/hdrFilteringFunctions.js +1 -1
- package/Shaders/ShadersInclude/hdrFilteringFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/helperFunctions.js +2 -2
- package/Shaders/ShadersInclude/helperFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/imageProcessingDeclaration.js +3 -0
- package/Shaders/ShadersInclude/imageProcessingDeclaration.js.map +1 -1
- package/Shaders/ShadersInclude/imageProcessingFunctions.js +3 -0
- package/Shaders/ShadersInclude/imageProcessingFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrDirectLighting.js +34 -4
- package/Shaders/ShadersInclude/openpbrDirectLighting.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrIblFunctions.js +8 -2
- package/Shaders/ShadersInclude/openpbrIblFunctions.js.map +1 -1
- package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +5 -0
- package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
- package/Shaders/fluidRenderingParticleDepth.vertex.js +7 -1
- package/Shaders/fluidRenderingParticleDepth.vertex.js.map +1 -1
- package/Shaders/fluidRenderingParticleDiffuse.vertex.js +7 -1
- package/Shaders/fluidRenderingParticleDiffuse.vertex.js.map +1 -1
- package/Shaders/fluidRenderingParticleThickness.vertex.js +7 -1
- package/Shaders/fluidRenderingParticleThickness.vertex.js.map +1 -1
- package/Shaders/gaussianSplattingVoxel.fragment.js +4 -10
- package/Shaders/gaussianSplattingVoxel.fragment.js.map +1 -1
- package/Shaders/iblCombineVoxelGrids.fragment.js +1 -1
- package/Shaders/iblCombineVoxelGrids.fragment.js.map +1 -1
- package/Shaders/iblShadowVoxelTracing.fragment.js +24 -7
- package/Shaders/iblShadowVoxelTracing.fragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/iblVoxelOpacityAtomicMax.d.ts +5 -0
- package/ShadersWGSL/ShadersInclude/iblVoxelOpacityAtomicMax.js +13 -0
- package/ShadersWGSL/ShadersInclude/iblVoxelOpacityAtomicMax.js.map +1 -0
- package/ShadersWGSL/ShadersInclude/imageProcessingDeclaration.js +3 -0
- package/ShadersWGSL/ShadersInclude/imageProcessingDeclaration.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/imageProcessingFunctions.js +3 -0
- package/ShadersWGSL/ShadersInclude/imageProcessingFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js +35 -5
- package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrDirectLightingInit.js +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrDirectLightingInit.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js +8 -2
- package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +5 -0
- package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
- package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js +16 -4
- package/ShadersWGSL/fluidRenderingParticleDepth.vertex.js.map +1 -1
- package/ShadersWGSL/fluidRenderingParticleDiffuse.vertex.js +15 -3
- package/ShadersWGSL/fluidRenderingParticleDiffuse.vertex.js.map +1 -1
- package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js +15 -3
- package/ShadersWGSL/fluidRenderingParticleThickness.vertex.js.map +1 -1
- package/ShadersWGSL/gaussianSplattingVoxel.fragment.js +15 -9
- package/ShadersWGSL/gaussianSplattingVoxel.fragment.js.map +1 -1
- package/ShadersWGSL/iblCombineVoxelGrids.fragment.js +1 -1
- package/ShadersWGSL/iblCombineVoxelGrids.fragment.js.map +1 -1
- package/ShadersWGSL/iblCopyVoxelBufferToGrid.compute.d.ts +5 -0
- package/ShadersWGSL/iblCopyVoxelBufferToGrid.compute.js +14 -0
- package/ShadersWGSL/iblCopyVoxelBufferToGrid.compute.js.map +1 -0
- package/ShadersWGSL/iblShadowVoxelTracing.fragment.js +24 -7
- package/ShadersWGSL/iblShadowVoxelTracing.fragment.js.map +1 -1
- package/ShadersWGSL/iblVoxelGrid.fragment.js +26 -6
- package/ShadersWGSL/iblVoxelGrid.fragment.js.map +1 -1
- package/SmartAssets/smartAssetManager.pure.js +1 -1
- package/SmartAssets/smartAssetManager.pure.js.map +1 -1
- package/Sprites/thinSprite.js +1 -1
- package/Sprites/thinSprite.js.map +1 -1
- package/XR/features/Layers/WebXRCompositionLayer.d.ts +182 -12
- package/XR/features/Layers/WebXRCompositionLayer.js +272 -3
- package/XR/features/Layers/WebXRCompositionLayer.js.map +1 -1
- package/XR/features/Layers/WebXRFallbackLayer.d.ts +84 -0
- package/XR/features/Layers/WebXRFallbackLayer.js +137 -0
- package/XR/features/Layers/WebXRFallbackLayer.js.map +1 -0
- package/XR/features/Layers/WebXRWebGPUCompositionLayer.d.ts +4 -4
- package/XR/features/Layers/WebXRWebGPUCompositionLayer.js.map +1 -1
- package/XR/features/WebXRAnchorSystem.pure.d.ts +45 -0
- package/XR/features/WebXRAnchorSystem.pure.js +153 -13
- package/XR/features/WebXRAnchorSystem.pure.js.map +1 -1
- package/XR/features/WebXRControllerPointerSelection.pure.js +2 -1
- package/XR/features/WebXRControllerPointerSelection.pure.js.map +1 -1
- package/XR/features/WebXRControllerTeleportation.pure.js +2 -1
- package/XR/features/WebXRControllerTeleportation.pure.js.map +1 -1
- package/XR/features/WebXRDepthSensing.pure.d.ts +21 -0
- package/XR/features/WebXRDepthSensing.pure.js +42 -0
- package/XR/features/WebXRDepthSensing.pure.js.map +1 -1
- package/XR/features/WebXRHandTracking.pure.js +2 -0
- package/XR/features/WebXRHandTracking.pure.js.map +1 -1
- package/XR/features/WebXRLayers.pure.d.ts +183 -8
- package/XR/features/WebXRLayers.pure.js +531 -99
- package/XR/features/WebXRLayers.pure.js.map +1 -1
- package/XR/features/WebXRLayersFallback.d.ts +5 -0
- package/XR/features/WebXRLayersFallback.js +8 -0
- package/XR/features/WebXRLayersFallback.js.map +1 -0
- package/XR/features/WebXRLayersFallback.pure.d.ts +6 -0
- package/XR/features/WebXRLayersFallback.pure.js +44 -0
- package/XR/features/WebXRLayersFallback.pure.js.map +1 -0
- package/XR/features/WebXRLightEstimation.pure.d.ts +3 -4
- package/XR/features/WebXRLightEstimation.pure.js +22 -21
- package/XR/features/WebXRLightEstimation.pure.js.map +1 -1
- package/XR/features/WebXRMeshDetector.pure.d.ts +5 -0
- package/XR/features/WebXRMeshDetector.pure.js +1 -0
- package/XR/features/WebXRMeshDetector.pure.js.map +1 -1
- package/XR/features/WebXRNearInteraction.pure.js +3 -3
- package/XR/features/WebXRNearInteraction.pure.js.map +1 -1
- package/XR/features/WebXRPlaneDetector.pure.d.ts +9 -5
- package/XR/features/WebXRPlaneDetector.pure.js +12 -8
- package/XR/features/WebXRPlaneDetector.pure.js.map +1 -1
- package/XR/features/WebXRTrackedSources.d.ts +5 -0
- package/XR/features/WebXRTrackedSources.js +8 -0
- package/XR/features/WebXRTrackedSources.js.map +1 -0
- package/XR/features/WebXRTrackedSources.pure.d.ts +70 -0
- package/XR/features/WebXRTrackedSources.pure.js +153 -0
- package/XR/features/WebXRTrackedSources.pure.js.map +1 -0
- package/XR/features/index.d.ts +1 -0
- package/XR/features/index.js +1 -0
- package/XR/features/index.js.map +1 -1
- package/XR/features/pure.d.ts +2 -0
- package/XR/features/pure.js +2 -0
- package/XR/features/pure.js.map +1 -1
- package/XR/motionController/webXRAbstractMotionController.d.ts +53 -1
- package/XR/motionController/webXRAbstractMotionController.js +61 -0
- package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
- package/XR/webXRCamera.d.ts +2 -0
- package/XR/webXRCamera.js +8 -2
- package/XR/webXRCamera.js.map +1 -1
- package/XR/webXRDefaultExperience.js +8 -4
- package/XR/webXRDefaultExperience.js.map +1 -1
- package/XR/webXRExperienceHelper.js +86 -44
- package/XR/webXRExperienceHelper.js.map +1 -1
- package/XR/webXRFeaturesManager.d.ts +9 -0
- package/XR/webXRFeaturesManager.js +4 -0
- package/XR/webXRFeaturesManager.js.map +1 -1
- package/XR/webXRGraphicsBinding.d.ts +29 -0
- package/XR/webXRGraphicsBinding.js +40 -0
- package/XR/webXRGraphicsBinding.js.map +1 -1
- package/XR/webXRInputSource.js +1 -1
- package/XR/webXRInputSource.js.map +1 -1
- package/XR/webXRLayerWrapper.d.ts +26 -10
- package/XR/webXRLayerWrapper.js +19 -7
- package/XR/webXRLayerWrapper.js.map +1 -1
- package/XR/webXRRenderTargetTextureProvider.d.ts +4 -4
- package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
- package/XR/webXRSessionManager.d.ts +45 -0
- package/XR/webXRSessionManager.js +174 -29
- package/XR/webXRSessionManager.js.map +1 -1
- package/XR/webXRWebGLRenderTargetTextureProvider.d.ts +2 -1
- package/XR/webXRWebGLRenderTargetTextureProvider.js.map +1 -1
- package/XR/webXRWebGPURenderTargetTextureProvider.d.ts +3 -3
- package/XR/webXRWebGPURenderTargetTextureProvider.js.map +1 -1
- package/package.json +1 -1
- package/scene.pure.d.ts +5 -0
- package/scene.pure.js +25 -0
- package/scene.pure.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flowGraphBlockFactory.js","sourceRoot":"","sources":["../../../../../dev/core/src/FlowGraph/Blocks/flowGraphBlockFactory.ts"],"names":[],"mappings":"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","sourcesContent":["import { type FlowGraphBlock } from \"../flowGraphBlock\";\nimport { FlowGraphBlockNames } from \"./flowGraphBlockNames\";\n\n/**\n * Any external module that wishes to add a new block to the flow graph can add to this object using the helper function.\n */\nconst CustomBlocks: Record<string, () => Promise<typeof FlowGraphBlock>> = {};\n/**\n * Reverse lookup: short block name → full \"module/blockName\" key, for O(1) fallback.\n */\nconst ShortNameToFullKey: Record<string, string> = {};\n\n/**\n * If you want to add a new block to the block factory, you should use this function.\n * Please be sure to choose a unique name and define the responsible module.\n * @param module the name of the module that is responsible for the block\n * @param blockName the name of the block. This should be unique.\n * @param factory an async factory function to generate the block\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function addToBlockFactory(module: string, blockName: string, factory: () => Promise<typeof FlowGraphBlock>): void {\n const fullKey = `${module}/${blockName}`;\n CustomBlocks[fullKey] = factory;\n ShortNameToFullKey[blockName] = fullKey;\n}\n\n/**\n * a function to get a factory function for a block.\n * @param blockName the block name to initialize. If the block comes from an external module, the name should be in the format \"module/blockName\"\n * @returns an async factory function that will return the block class when called.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function blockFactory(blockName: FlowGraphBlockNames | string): () => Promise<typeof FlowGraphBlock> {\n switch (blockName) {\n case FlowGraphBlockNames.PlayAnimation:\n return async () => (await import(\"./Execution/Animation/flowGraphPlayAnimationBlock\")).FlowGraphPlayAnimationBlock;\n case FlowGraphBlockNames.StopAnimation:\n return async () => (await import(\"./Execution/Animation/flowGraphStopAnimationBlock\")).FlowGraphStopAnimationBlock;\n case FlowGraphBlockNames.PauseAnimation:\n return async () => (await import(\"./Execution/Animation/flowGraphPauseAnimationBlock\")).FlowGraphPauseAnimationBlock;\n case FlowGraphBlockNames.ValueInterpolation:\n return async () => (await import(\"./Execution/Animation/flowGraphInterpolationBlock\")).FlowGraphInterpolationBlock;\n case FlowGraphBlockNames.SceneReadyEvent:\n return async () => (await import(\"./Event/flowGraphSceneReadyEventBlock\")).FlowGraphSceneReadyEventBlock;\n case FlowGraphBlockNames.SceneTickEvent:\n return async () => (await import(\"./Event/flowGraphSceneTickEventBlock\")).FlowGraphSceneTickEventBlock;\n case FlowGraphBlockNames.SendCustomEvent:\n return async () => (await import(\"./Event/flowGraphSendCustomEventBlock\")).FlowGraphSendCustomEventBlock;\n case FlowGraphBlockNames.ReceiveCustomEvent:\n return async () => (await import(\"./Event/flowGraphReceiveCustomEventBlock\")).FlowGraphReceiveCustomEventBlock;\n case FlowGraphBlockNames.StopEventPropagation:\n return async () => (await import(\"./Event/flowGraphStopEventPropagationBlock\")).FlowGraphStopEventPropagationBlock;\n case FlowGraphBlockNames.MeshPickEvent:\n return async () => (await import(\"./Event/flowGraphMeshPickEventBlock\")).FlowGraphMeshPickEventBlock;\n case FlowGraphBlockNames.E:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphEBlock;\n case FlowGraphBlockNames.PI:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphPiBlock;\n case FlowGraphBlockNames.Tau:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphTauBlock;\n case FlowGraphBlockNames.Inf:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphInfBlock;\n case FlowGraphBlockNames.NaN:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphNaNBlock;\n case FlowGraphBlockNames.Random:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphRandomBlock;\n case FlowGraphBlockNames.Add:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAddBlock;\n case FlowGraphBlockNames.Subtract:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphSubtractBlock;\n case FlowGraphBlockNames.Multiply:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphMultiplyBlock;\n case FlowGraphBlockNames.Divide:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphDivideBlock;\n case FlowGraphBlockNames.Abs:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAbsBlock;\n case FlowGraphBlockNames.Sign:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphSignBlock;\n case FlowGraphBlockNames.Trunc:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphTruncBlock;\n case FlowGraphBlockNames.Floor:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphFloorBlock;\n case FlowGraphBlockNames.Ceil:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphCeilBlock;\n case FlowGraphBlockNames.Round:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphRoundBlock;\n case FlowGraphBlockNames.Fraction:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphFractionBlock;\n case FlowGraphBlockNames.Negation:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphNegationBlock;\n case FlowGraphBlockNames.Modulo:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphModuloBlock;\n case FlowGraphBlockNames.Min:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphMinBlock;\n case FlowGraphBlockNames.Max:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphMaxBlock;\n case FlowGraphBlockNames.Clamp:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphClampBlock;\n case FlowGraphBlockNames.Saturate:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphSaturateBlock;\n case FlowGraphBlockNames.MathInterpolation:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphMathInterpolationBlock;\n case FlowGraphBlockNames.MathSlerp:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphMathSlerpBlock;\n case FlowGraphBlockNames.SmoothStep:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphMathSmoothStepBlock;\n case FlowGraphBlockNames.RGBToOkLCh:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphRGBToOkLChBlock;\n case FlowGraphBlockNames.RGBFromOkLCh:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphRGBFromOkLChBlock;\n case FlowGraphBlockNames.Equality:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphEqualityBlock;\n case FlowGraphBlockNames.LessThan:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphLessThanBlock;\n case FlowGraphBlockNames.LessThanOrEqual:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphLessThanOrEqualBlock;\n case FlowGraphBlockNames.GreaterThan:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphGreaterThanBlock;\n case FlowGraphBlockNames.GreaterThanOrEqual:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphGreaterThanOrEqualBlock;\n case FlowGraphBlockNames.IsNaN:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphIsNanBlock;\n case FlowGraphBlockNames.IsInfinity:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphIsInfinityBlock;\n case FlowGraphBlockNames.DegToRad:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphDegToRadBlock;\n case FlowGraphBlockNames.RadToDeg:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphRadToDegBlock;\n case FlowGraphBlockNames.Sin:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphSinBlock;\n case FlowGraphBlockNames.Cos:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphCosBlock;\n case FlowGraphBlockNames.Tan:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphTanBlock;\n case FlowGraphBlockNames.Asin:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAsinBlock;\n case FlowGraphBlockNames.Acos:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAcosBlock;\n case FlowGraphBlockNames.Atan:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAtanBlock;\n case FlowGraphBlockNames.Atan2:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAtan2Block;\n case FlowGraphBlockNames.Sinh:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphSinhBlock;\n case FlowGraphBlockNames.Cosh:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphCoshBlock;\n case FlowGraphBlockNames.Tanh:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphTanhBlock;\n case FlowGraphBlockNames.Asinh:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAsinhBlock;\n case FlowGraphBlockNames.Acosh:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAcoshBlock;\n case FlowGraphBlockNames.Atanh:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphAtanhBlock;\n case FlowGraphBlockNames.Exponential:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphExpBlock;\n case FlowGraphBlockNames.Log:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphLogBlock;\n case FlowGraphBlockNames.Log2:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphLog2Block;\n case FlowGraphBlockNames.Log10:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphLog10Block;\n case FlowGraphBlockNames.SquareRoot:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphSquareRootBlock;\n case FlowGraphBlockNames.Power:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphPowerBlock;\n case FlowGraphBlockNames.CubeRoot:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphCubeRootBlock;\n case FlowGraphBlockNames.BitwiseAnd:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphBitwiseAndBlock;\n case FlowGraphBlockNames.BitwiseOr:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphBitwiseOrBlock;\n case FlowGraphBlockNames.BitwiseNot:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphBitwiseNotBlock;\n case FlowGraphBlockNames.BitwiseXor:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphBitwiseXorBlock;\n case FlowGraphBlockNames.BitwiseLeftShift:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphBitwiseLeftShiftBlock;\n case FlowGraphBlockNames.BitwiseRightShift:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphBitwiseRightShiftBlock;\n case FlowGraphBlockNames.Length:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphLengthBlock;\n case FlowGraphBlockNames.Normalize:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphNormalizeBlock;\n case FlowGraphBlockNames.Dot:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphDotBlock;\n case FlowGraphBlockNames.Cross:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphCrossBlock;\n case FlowGraphBlockNames.Rotate2D:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphRotate2DBlock;\n case FlowGraphBlockNames.Rotate3D:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphRotate3DBlock;\n case FlowGraphBlockNames.Transpose:\n return async () => (await import(\"./Data/Math/flowGraphMatrixMathBlocks\")).FlowGraphTransposeBlock;\n case FlowGraphBlockNames.Determinant:\n return async () => (await import(\"./Data/Math/flowGraphMatrixMathBlocks\")).FlowGraphDeterminantBlock;\n case FlowGraphBlockNames.InvertMatrix:\n return async () => (await import(\"./Data/Math/flowGraphMatrixMathBlocks\")).FlowGraphInvertMatrixBlock;\n case FlowGraphBlockNames.MatrixMultiplication:\n return async () => (await import(\"./Data/Math/flowGraphMatrixMathBlocks\")).FlowGraphMatrixMultiplicationBlock;\n case FlowGraphBlockNames.Branch:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphBranchBlock\")).FlowGraphBranchBlock;\n case FlowGraphBlockNames.SetDelay:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphSetDelayBlock\")).FlowGraphSetDelayBlock;\n case FlowGraphBlockNames.CancelDelay:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphCancelDelayBlock\")).FlowGraphCancelDelayBlock;\n case FlowGraphBlockNames.CallCounter:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphCounterBlock\")).FlowGraphCallCounterBlock;\n case FlowGraphBlockNames.Debounce:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphDebounceBlock\")).FlowGraphDebounceBlock;\n case FlowGraphBlockNames.Throttle:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphThrottleBlock\")).FlowGraphThrottleBlock;\n case FlowGraphBlockNames.DoN:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphDoNBlock\")).FlowGraphDoNBlock;\n case FlowGraphBlockNames.FlipFlop:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphFlipFlopBlock\")).FlowGraphFlipFlopBlock;\n case FlowGraphBlockNames.ForLoop:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphForLoopBlock\")).FlowGraphForLoopBlock;\n case FlowGraphBlockNames.MultiGate:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphMultiGateBlock\")).FlowGraphMultiGateBlock;\n case FlowGraphBlockNames.Sequence:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphSequenceBlock\")).FlowGraphSequenceBlock;\n case FlowGraphBlockNames.Switch:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphSwitchBlock\")).FlowGraphSwitchBlock;\n case FlowGraphBlockNames.WaitAll:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphWaitAllBlock\")).FlowGraphWaitAllBlock;\n case FlowGraphBlockNames.WhileLoop:\n return async () => (await import(\"./Execution/ControlFlow/flowGraphWhileLoopBlock\")).FlowGraphWhileLoopBlock;\n case FlowGraphBlockNames.ConsoleLog:\n return async () => (await import(\"./Execution/flowGraphConsoleLogBlock\")).FlowGraphConsoleLogBlock;\n case FlowGraphBlockNames.Conditional:\n return async () => (await import(\"./Data/flowGraphConditionalDataBlock\")).FlowGraphConditionalDataBlock;\n case FlowGraphBlockNames.Constant:\n return async () => (await import(\"./Data/flowGraphConstantBlock\")).FlowGraphConstantBlock;\n case FlowGraphBlockNames.TransformCoordinatesSystem:\n return async () => (await import(\"./Data/flowGraphTransformCoordinatesSystemBlock\")).FlowGraphTransformCoordinatesSystemBlock;\n case FlowGraphBlockNames.GetAsset:\n return async () => (await import(\"./Data/flowGraphGetAssetBlock\")).FlowGraphGetAssetBlock;\n case FlowGraphBlockNames.GetProperty:\n return async () => (await import(\"./Data/flowGraphGetPropertyBlock\")).FlowGraphGetPropertyBlock;\n case FlowGraphBlockNames.SetProperty:\n return async () => (await import(\"./Execution/flowGraphSetPropertyBlock\")).FlowGraphSetPropertyBlock;\n case FlowGraphBlockNames.GetVariable:\n return async () => (await import(\"./Data/flowGraphGetVariableBlock\")).FlowGraphGetVariableBlock;\n case FlowGraphBlockNames.SetVariable:\n return async () => (await import(\"./Execution/flowGraphSetVariableBlock\")).FlowGraphSetVariableBlock;\n case FlowGraphBlockNames.JsonPointerParser:\n return async () => (await import(\"./Data/Transformers/flowGraphJsonPointerParserBlock\")).FlowGraphJsonPointerParserBlock;\n case FlowGraphBlockNames.LeadingZeros:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphLeadingZerosBlock;\n case FlowGraphBlockNames.TrailingZeros:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphTrailingZerosBlock;\n case FlowGraphBlockNames.OneBitsCounter:\n return async () => (await import(\"./Data/Math/flowGraphMathBlocks\")).FlowGraphOneBitsCounterBlock;\n case FlowGraphBlockNames.CombineVector2:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphCombineVector2Block;\n case FlowGraphBlockNames.CombineVector3:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphCombineVector3Block;\n case FlowGraphBlockNames.CombineVector4:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphCombineVector4Block;\n case FlowGraphBlockNames.CombineMatrix:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphCombineMatrixBlock;\n case FlowGraphBlockNames.CombineMatrix2D:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphCombineMatrix2DBlock;\n case FlowGraphBlockNames.CombineMatrix3D:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphCombineMatrix3DBlock;\n case FlowGraphBlockNames.ExtractVector2:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphExtractVector2Block;\n case FlowGraphBlockNames.ExtractVector3:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphExtractVector3Block;\n case FlowGraphBlockNames.ExtractVector4:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphExtractVector4Block;\n case FlowGraphBlockNames.ExtractMatrix:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphExtractMatrixBlock;\n case FlowGraphBlockNames.ExtractMatrix2D:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphExtractMatrix2DBlock;\n case FlowGraphBlockNames.ExtractMatrix3D:\n return async () => (await import(\"./Data/Math/flowGraphMathCombineExtractBlocks\")).FlowGraphExtractMatrix3DBlock;\n case FlowGraphBlockNames.TransformVector:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphTransformBlock;\n case FlowGraphBlockNames.TransformCoordinates:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphTransformCoordinatesBlock;\n case FlowGraphBlockNames.Conjugate:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphConjugateBlock;\n case FlowGraphBlockNames.AngleBetween:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphAngleBetweenBlock;\n case FlowGraphBlockNames.QuaternionFromAxisAngle:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphQuaternionFromAxisAngleBlock;\n case FlowGraphBlockNames.AxisAngleFromQuaternion:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphAxisAngleFromQuaternionBlock;\n case FlowGraphBlockNames.QuaternionFromDirections:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphQuaternionFromDirectionsBlock;\n case FlowGraphBlockNames.QuaternionFromUpForward:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphQuaternionFromUpForwardBlock;\n case FlowGraphBlockNames.QuaternionFromAngles:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphQuaternionFromAnglesBlock;\n case FlowGraphBlockNames.VectorSlerp:\n return async () => (await import(\"./Data/Math/flowGraphVectorMathBlocks\")).FlowGraphVectorSlerpBlock;\n case FlowGraphBlockNames.MatrixDecompose:\n return async () => (await import(\"./Data/Math/flowGraphMatrixMathBlocks\")).FlowGraphMatrixDecomposeBlock;\n case FlowGraphBlockNames.MatrixCompose:\n return async () => (await import(\"./Data/Math/flowGraphMatrixMathBlocks\")).FlowGraphMatrixComposeBlock;\n case FlowGraphBlockNames.BooleanToFloat:\n return async () => (await import(\"./Data/Transformers/flowGraphTypeToTypeBlocks\")).FlowGraphBooleanToFloat;\n case FlowGraphBlockNames.BooleanToInt:\n return async () => (await import(\"./Data/Transformers/flowGraphTypeToTypeBlocks\")).FlowGraphBooleanToInt;\n case FlowGraphBlockNames.FloatToBoolean:\n return async () => (await import(\"./Data/Transformers/flowGraphTypeToTypeBlocks\")).FlowGraphFloatToBoolean;\n case FlowGraphBlockNames.IntToBoolean:\n return async () => (await import(\"./Data/Transformers/flowGraphTypeToTypeBlocks\")).FlowGraphIntToBoolean;\n case FlowGraphBlockNames.IntToFloat:\n return async () => (await import(\"./Data/Transformers/flowGraphTypeToTypeBlocks\")).FlowGraphIntToFloat;\n case FlowGraphBlockNames.FloatToInt:\n return async () => (await import(\"./Data/Transformers/flowGraphTypeToTypeBlocks\")).FlowGraphFloatToInt;\n case FlowGraphBlockNames.Easing:\n return async () => (await import(\"./Execution/Animation/flowGraphEasingBlock\")).FlowGraphEasingBlock;\n case FlowGraphBlockNames.BezierCurveEasing:\n return async () => (await import(\"./Execution/Animation/flowGraphBezierCurveEasingBlock\")).FlowGraphBezierCurveEasingBlock;\n case FlowGraphBlockNames.PointerOverEvent:\n return async () => (await import(\"./Event/flowGraphPointerOverEventBlock\")).FlowGraphPointerOverEventBlock;\n case FlowGraphBlockNames.PointerOutEvent:\n return async () => (await import(\"./Event/flowGraphPointerOutEventBlock\")).FlowGraphPointerOutEventBlock;\n case FlowGraphBlockNames.PointerDownEvent:\n return async () => (await import(\"./Event/flowGraphPointerDownEventBlock\")).FlowGraphPointerDownEventBlock;\n case FlowGraphBlockNames.PointerUpEvent:\n return async () => (await import(\"./Event/flowGraphPointerUpEventBlock\")).FlowGraphPointerUpEventBlock;\n case FlowGraphBlockNames.PointerMoveEvent:\n return async () => (await import(\"./Event/flowGraphPointerMoveEventBlock\")).FlowGraphPointerMoveEventBlock;\n // Keyboard\n case FlowGraphBlockNames.KeyDownEvent:\n return async () => (await import(\"./Event/flowGraphKeyDownEventBlock\")).FlowGraphKeyDownEventBlock;\n case FlowGraphBlockNames.KeyUpEvent:\n return async () => (await import(\"./Event/flowGraphKeyUpEventBlock\")).FlowGraphKeyUpEventBlock;\n case FlowGraphBlockNames.IsKeyPressed:\n return async () => (await import(\"./Data/flowGraphIsKeyPressedBlock\")).FlowGraphIsKeyPressedBlock;\n case FlowGraphBlockNames.Context:\n return async () => (await import(\"./Data/Utils/flowGraphContextBlock\")).FlowGraphContextBlock;\n case FlowGraphBlockNames.ArrayIndex:\n return async () => (await import(\"./Data/Utils/flowGraphArrayIndexBlock\")).FlowGraphArrayIndexBlock;\n case FlowGraphBlockNames.CodeExecution:\n return async () => (await import(\"./Data/Utils/flowGraphCodeExecutionBlock\")).FlowGraphCodeExecutionBlock;\n case FlowGraphBlockNames.IndexOf:\n return async () => (await import(\"./Data/Utils/flowGraphIndexOfBlock\")).FlowGraphIndexOfBlock;\n case FlowGraphBlockNames.FunctionReference:\n return async () => (await import(\"./Data/Utils/flowGraphFunctionReferenceBlock\")).FlowGraphFunctionReferenceBlock;\n case FlowGraphBlockNames.DataSwitch:\n return async () => (await import(\"./Data/flowGraphDataSwitchBlock\")).FlowGraphDataSwitchBlock;\n case FlowGraphBlockNames.DebugBlock:\n return async () => (await import(\"./Data/flowGraphDebugBlock\")).FlowGraphDebugBlock;\n // Physics\n case FlowGraphBlockNames.PhysicsCollisionEvent:\n return async () => (await import(\"./Event/flowGraphPhysicsCollisionEventBlock\")).FlowGraphPhysicsCollisionEventBlock;\n case FlowGraphBlockNames.PhysicsApplyForce:\n return async () => (await import(\"./Execution/Physics/flowGraphApplyForceBlock\")).FlowGraphApplyForceBlock;\n case FlowGraphBlockNames.PhysicsApplyImpulse:\n return async () => (await import(\"./Execution/Physics/flowGraphApplyImpulseBlock\")).FlowGraphApplyImpulseBlock;\n case FlowGraphBlockNames.PhysicsSetLinearVelocity:\n return async () => (await import(\"./Execution/Physics/flowGraphSetLinearVelocityBlock\")).FlowGraphSetLinearVelocityBlock;\n case FlowGraphBlockNames.PhysicsSetAngularVelocity:\n return async () => (await import(\"./Execution/Physics/flowGraphSetAngularVelocityBlock\")).FlowGraphSetAngularVelocityBlock;\n case FlowGraphBlockNames.PhysicsSetMotionType:\n return async () => (await import(\"./Execution/Physics/flowGraphSetPhysicsMotionTypeBlock\")).FlowGraphSetPhysicsMotionTypeBlock;\n case FlowGraphBlockNames.PhysicsGetLinearVelocity:\n return async () => (await import(\"./Data/Physics/flowGraphGetLinearVelocityBlock\")).FlowGraphGetLinearVelocityBlock;\n case FlowGraphBlockNames.PhysicsGetAngularVelocity:\n return async () => (await import(\"./Data/Physics/flowGraphGetAngularVelocityBlock\")).FlowGraphGetAngularVelocityBlock;\n case FlowGraphBlockNames.PhysicsGetMassProperties:\n return async () => (await import(\"./Data/Physics/flowGraphGetPhysicsMassPropertiesBlock\")).FlowGraphGetPhysicsMassPropertiesBlock;\n // Audio\n case FlowGraphBlockNames.AudioPlaySound:\n return async () => (await import(\"./Execution/Audio/flowGraphPlaySoundBlock\")).FlowGraphPlaySoundBlock;\n case FlowGraphBlockNames.AudioStopSound:\n return async () => (await import(\"./Execution/Audio/flowGraphStopSoundBlock\")).FlowGraphStopSoundBlock;\n case FlowGraphBlockNames.AudioPauseSound:\n return async () => (await import(\"./Execution/Audio/flowGraphPauseSoundBlock\")).FlowGraphPauseSoundBlock;\n case FlowGraphBlockNames.AudioSetVolume:\n return async () => (await import(\"./Execution/Audio/flowGraphSetSoundVolumeBlock\")).FlowGraphSetSoundVolumeBlock;\n case FlowGraphBlockNames.AudioSoundEndedEvent:\n return async () => (await import(\"./Event/flowGraphSoundEndedEventBlock\")).FlowGraphSoundEndedEventBlock;\n case FlowGraphBlockNames.AudioGetVolume:\n return async () => (await import(\"./Data/Audio/flowGraphGetSoundVolumeBlock\")).FlowGraphGetSoundVolumeBlock;\n case FlowGraphBlockNames.AudioIsSoundPlaying:\n return async () => (await import(\"./Data/Audio/flowGraphIsSoundPlayingBlock\")).FlowGraphIsSoundPlayingBlock;\n default:\n // check if the block is a custom block\n if (CustomBlocks[blockName]) {\n return CustomBlocks[blockName];\n }\n // Fallback: O(1) reverse lookup by short name (e.g. \"FlowGraphGLTFDataProvider\" → \"KHR_interactivity/FlowGraphGLTFDataProvider\")\n if (!blockName.includes(\"/\")) {\n const fullKey = ShortNameToFullKey[blockName];\n if (fullKey && CustomBlocks[fullKey]) {\n return CustomBlocks[fullKey];\n }\n }\n throw new Error(`Unknown block name ${blockName}`);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"flowGraphBlockFactory.js","sourceRoot":"","sources":["../../../../../dev/core/src/FlowGraph/Blocks/flowGraphBlockFactory.ts"],"names":[],"mappings":"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","sourcesContent":["import { FlowGraphBlock } from \"../flowGraphBlock\";\nimport { FlowGraphBlockNames } from \"./flowGraphBlockNames\";\n\n/**\n * Any external module that wishes to add a new block to the flow graph can add to this object using the helper function.\n */\nconst CustomBlocks: Record<string, () => Promise<typeof FlowGraphBlock>> = {};\n/**\n * Reverse lookup: short block name → full \"module/blockName\" key, for O(1) fallback.\n */\nconst ShortNameToFullKey: Record<string, string> = {};\n\n/**\n * If you want to add a new block to the block factory, you should use this function.\n * Please be sure to choose a unique name and define the responsible module.\n * @param module the name of the module that is responsible for the block\n * @param blockName the name of the block. This should be unique.\n * @param factory an async factory function to generate the block\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function addToBlockFactory(module: string, blockName: string, factory: () => Promise<typeof FlowGraphBlock>): void {\n const fullKey = `${module}/${blockName}`;\n CustomBlocks[fullKey] = factory;\n ShortNameToFullKey[blockName] = fullKey;\n}\n\nfunction _IsFlowGraphBlockConstructor(value: unknown): value is typeof FlowGraphBlock {\n return typeof value === \"function\" && value.prototype instanceof FlowGraphBlock;\n}\n\nasync function _LoadBlock(modulePromise: Promise<object>, blockName: string): Promise<typeof FlowGraphBlock> {\n const module = await modulePromise;\n let block: typeof FlowGraphBlock | undefined;\n let register: (() => void) | undefined;\n\n for (const [exportName, value] of Object.entries(module)) {\n if (exportName === blockName && _IsFlowGraphBlockConstructor(value)) {\n block = value;\n } else if (exportName.startsWith(\"RegisterFlowGraph\") && typeof value === \"function\") {\n register = value;\n }\n }\n\n if (!block || !register) {\n throw new Error(`Invalid FlowGraph block module for ${blockName}`);\n }\n\n register();\n if (blockName === \"FlowGraphPlayAnimationBlock\") {\n const { RegisterAnimationGroup } = await import(\"../../Animations/animationGroup.pure\");\n RegisterAnimationGroup();\n }\n\n return block;\n}\n\n/**\n * a function to get a factory function for a block.\n * @param blockName the block name to initialize. If the block comes from an external module, the name should be in the format \"module/blockName\"\n * @returns an async factory function that will return the block class when called.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function blockFactory(blockName: FlowGraphBlockNames | string): () => Promise<typeof FlowGraphBlock> {\n switch (blockName) {\n case FlowGraphBlockNames.PlayAnimation:\n return async () => await _LoadBlock(import(\"./Execution/Animation/flowGraphPlayAnimationBlock.pure\"), \"FlowGraphPlayAnimationBlock\");\n case FlowGraphBlockNames.StopAnimation:\n return async () => await _LoadBlock(import(\"./Execution/Animation/flowGraphStopAnimationBlock.pure\"), \"FlowGraphStopAnimationBlock\");\n case FlowGraphBlockNames.PauseAnimation:\n return async () => await _LoadBlock(import(\"./Execution/Animation/flowGraphPauseAnimationBlock.pure\"), \"FlowGraphPauseAnimationBlock\");\n case FlowGraphBlockNames.ValueInterpolation:\n return async () => await _LoadBlock(import(\"./Execution/Animation/flowGraphInterpolationBlock.pure\"), \"FlowGraphInterpolationBlock\");\n case FlowGraphBlockNames.SceneReadyEvent:\n return async () => await _LoadBlock(import(\"./Event/flowGraphSceneReadyEventBlock.pure\"), \"FlowGraphSceneReadyEventBlock\");\n case FlowGraphBlockNames.SceneTickEvent:\n return async () => await _LoadBlock(import(\"./Event/flowGraphSceneTickEventBlock.pure\"), \"FlowGraphSceneTickEventBlock\");\n case FlowGraphBlockNames.SendCustomEvent:\n return async () => await _LoadBlock(import(\"./Event/flowGraphSendCustomEventBlock.pure\"), \"FlowGraphSendCustomEventBlock\");\n case FlowGraphBlockNames.ReceiveCustomEvent:\n return async () => await _LoadBlock(import(\"./Event/flowGraphReceiveCustomEventBlock.pure\"), \"FlowGraphReceiveCustomEventBlock\");\n case FlowGraphBlockNames.StopEventPropagation:\n return async () => await _LoadBlock(import(\"./Event/flowGraphStopEventPropagationBlock.pure\"), \"FlowGraphStopEventPropagationBlock\");\n case FlowGraphBlockNames.MeshPickEvent:\n return async () => await _LoadBlock(import(\"./Event/flowGraphMeshPickEventBlock.pure\"), \"FlowGraphMeshPickEventBlock\");\n case FlowGraphBlockNames.E:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphEBlock\");\n case FlowGraphBlockNames.PI:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphPiBlock\");\n case FlowGraphBlockNames.Tau:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphTauBlock\");\n case FlowGraphBlockNames.Inf:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphInfBlock\");\n case FlowGraphBlockNames.NaN:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphNaNBlock\");\n case FlowGraphBlockNames.Random:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphRandomBlock\");\n case FlowGraphBlockNames.Add:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphAddBlock\");\n case FlowGraphBlockNames.Subtract:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphSubtractBlock\");\n case FlowGraphBlockNames.Multiply:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphMultiplyBlock\");\n case FlowGraphBlockNames.Divide:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphDivideBlock\");\n case FlowGraphBlockNames.Abs:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphAbsBlock\");\n case FlowGraphBlockNames.Sign:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphSignBlock\");\n case FlowGraphBlockNames.Trunc:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphTruncBlock\");\n case FlowGraphBlockNames.Floor:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphFloorBlock\");\n case FlowGraphBlockNames.Ceil:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphCeilBlock\");\n case FlowGraphBlockNames.Round:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphRoundBlock\");\n case FlowGraphBlockNames.Fraction:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphFractionBlock\");\n case FlowGraphBlockNames.Negation:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphNegationBlock\");\n case FlowGraphBlockNames.Modulo:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphModuloBlock\");\n case FlowGraphBlockNames.Min:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphMinBlock\");\n case FlowGraphBlockNames.Max:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphMaxBlock\");\n case FlowGraphBlockNames.Clamp:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphClampBlock\");\n case FlowGraphBlockNames.Saturate:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphSaturateBlock\");\n case FlowGraphBlockNames.MathInterpolation:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphMathInterpolationBlock\");\n case FlowGraphBlockNames.MathSlerp:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphMathSlerpBlock\");\n case FlowGraphBlockNames.SmoothStep:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphMathSmoothStepBlock\");\n case FlowGraphBlockNames.RGBToOkLCh:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphRGBToOkLChBlock\");\n case FlowGraphBlockNames.RGBFromOkLCh:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphRGBFromOkLChBlock\");\n case FlowGraphBlockNames.Equality:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphEqualityBlock\");\n case FlowGraphBlockNames.LessThan:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphLessThanBlock\");\n case FlowGraphBlockNames.LessThanOrEqual:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphLessThanOrEqualBlock\");\n case FlowGraphBlockNames.GreaterThan:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphGreaterThanBlock\");\n case FlowGraphBlockNames.GreaterThanOrEqual:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphGreaterThanOrEqualBlock\");\n case FlowGraphBlockNames.IsNaN:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphIsNanBlock\");\n case FlowGraphBlockNames.IsInfinity:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphIsInfinityBlock\");\n case FlowGraphBlockNames.DegToRad:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphDegToRadBlock\");\n case FlowGraphBlockNames.RadToDeg:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphRadToDegBlock\");\n case FlowGraphBlockNames.Sin:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphSinBlock\");\n case FlowGraphBlockNames.Cos:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphCosBlock\");\n case FlowGraphBlockNames.Tan:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphTanBlock\");\n case FlowGraphBlockNames.Asin:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphAsinBlock\");\n case FlowGraphBlockNames.Acos:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphAcosBlock\");\n case FlowGraphBlockNames.Atan:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphAtanBlock\");\n case FlowGraphBlockNames.Atan2:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphAtan2Block\");\n case FlowGraphBlockNames.Sinh:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphSinhBlock\");\n case FlowGraphBlockNames.Cosh:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphCoshBlock\");\n case FlowGraphBlockNames.Tanh:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphTanhBlock\");\n case FlowGraphBlockNames.Asinh:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphAsinhBlock\");\n case FlowGraphBlockNames.Acosh:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphAcoshBlock\");\n case FlowGraphBlockNames.Atanh:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphAtanhBlock\");\n case FlowGraphBlockNames.Exponential:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphExpBlock\");\n case FlowGraphBlockNames.Log:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphLogBlock\");\n case FlowGraphBlockNames.Log2:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphLog2Block\");\n case FlowGraphBlockNames.Log10:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphLog10Block\");\n case FlowGraphBlockNames.SquareRoot:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphSquareRootBlock\");\n case FlowGraphBlockNames.Power:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphPowerBlock\");\n case FlowGraphBlockNames.CubeRoot:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphCubeRootBlock\");\n case FlowGraphBlockNames.BitwiseAnd:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphBitwiseAndBlock\");\n case FlowGraphBlockNames.BitwiseOr:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphBitwiseOrBlock\");\n case FlowGraphBlockNames.BitwiseNot:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphBitwiseNotBlock\");\n case FlowGraphBlockNames.BitwiseXor:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphBitwiseXorBlock\");\n case FlowGraphBlockNames.BitwiseLeftShift:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphBitwiseLeftShiftBlock\");\n case FlowGraphBlockNames.BitwiseRightShift:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphBitwiseRightShiftBlock\");\n case FlowGraphBlockNames.Length:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphVectorMathBlocks.pure\"), \"FlowGraphLengthBlock\");\n case FlowGraphBlockNames.Normalize:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphVectorMathBlocks.pure\"), \"FlowGraphNormalizeBlock\");\n case FlowGraphBlockNames.Dot:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphVectorMathBlocks.pure\"), \"FlowGraphDotBlock\");\n case FlowGraphBlockNames.Cross:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphVectorMathBlocks.pure\"), \"FlowGraphCrossBlock\");\n case FlowGraphBlockNames.Rotate2D:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphVectorMathBlocks.pure\"), \"FlowGraphRotate2DBlock\");\n case FlowGraphBlockNames.Rotate3D:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphVectorMathBlocks.pure\"), \"FlowGraphRotate3DBlock\");\n case FlowGraphBlockNames.Transpose:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMatrixMathBlocks.pure\"), \"FlowGraphTransposeBlock\");\n case FlowGraphBlockNames.Determinant:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMatrixMathBlocks.pure\"), \"FlowGraphDeterminantBlock\");\n case FlowGraphBlockNames.InvertMatrix:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMatrixMathBlocks.pure\"), \"FlowGraphInvertMatrixBlock\");\n case FlowGraphBlockNames.MatrixMultiplication:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMatrixMathBlocks.pure\"), \"FlowGraphMatrixMultiplicationBlock\");\n case FlowGraphBlockNames.Branch:\n return async () => await _LoadBlock(import(\"./Execution/ControlFlow/flowGraphBranchBlock.pure\"), \"FlowGraphBranchBlock\");\n case FlowGraphBlockNames.SetDelay:\n return async () => await _LoadBlock(import(\"./Execution/ControlFlow/flowGraphSetDelayBlock.pure\"), \"FlowGraphSetDelayBlock\");\n case FlowGraphBlockNames.CancelDelay:\n return async () => await _LoadBlock(import(\"./Execution/ControlFlow/flowGraphCancelDelayBlock.pure\"), \"FlowGraphCancelDelayBlock\");\n case FlowGraphBlockNames.CallCounter:\n return async () => await _LoadBlock(import(\"./Execution/ControlFlow/flowGraphCounterBlock.pure\"), \"FlowGraphCallCounterBlock\");\n case FlowGraphBlockNames.Debounce:\n return async () => await _LoadBlock(import(\"./Execution/ControlFlow/flowGraphDebounceBlock.pure\"), \"FlowGraphDebounceBlock\");\n case FlowGraphBlockNames.Throttle:\n return async () => await _LoadBlock(import(\"./Execution/ControlFlow/flowGraphThrottleBlock.pure\"), \"FlowGraphThrottleBlock\");\n case FlowGraphBlockNames.DoN:\n return async () => await _LoadBlock(import(\"./Execution/ControlFlow/flowGraphDoNBlock.pure\"), \"FlowGraphDoNBlock\");\n case FlowGraphBlockNames.FlipFlop:\n return async () => await _LoadBlock(import(\"./Execution/ControlFlow/flowGraphFlipFlopBlock.pure\"), \"FlowGraphFlipFlopBlock\");\n case FlowGraphBlockNames.ForLoop:\n return async () => await _LoadBlock(import(\"./Execution/ControlFlow/flowGraphForLoopBlock.pure\"), \"FlowGraphForLoopBlock\");\n case FlowGraphBlockNames.MultiGate:\n return async () => await _LoadBlock(import(\"./Execution/ControlFlow/flowGraphMultiGateBlock.pure\"), \"FlowGraphMultiGateBlock\");\n case FlowGraphBlockNames.Sequence:\n return async () => await _LoadBlock(import(\"./Execution/ControlFlow/flowGraphSequenceBlock.pure\"), \"FlowGraphSequenceBlock\");\n case FlowGraphBlockNames.Switch:\n return async () => await _LoadBlock(import(\"./Execution/ControlFlow/flowGraphSwitchBlock.pure\"), \"FlowGraphSwitchBlock\");\n case FlowGraphBlockNames.WaitAll:\n return async () => await _LoadBlock(import(\"./Execution/ControlFlow/flowGraphWaitAllBlock.pure\"), \"FlowGraphWaitAllBlock\");\n case FlowGraphBlockNames.WhileLoop:\n return async () => await _LoadBlock(import(\"./Execution/ControlFlow/flowGraphWhileLoopBlock.pure\"), \"FlowGraphWhileLoopBlock\");\n case FlowGraphBlockNames.ConsoleLog:\n return async () => await _LoadBlock(import(\"./Execution/flowGraphConsoleLogBlock.pure\"), \"FlowGraphConsoleLogBlock\");\n case FlowGraphBlockNames.Conditional:\n return async () => await _LoadBlock(import(\"./Data/flowGraphConditionalDataBlock.pure\"), \"FlowGraphConditionalDataBlock\");\n case FlowGraphBlockNames.Constant:\n return async () => await _LoadBlock(import(\"./Data/flowGraphConstantBlock.pure\"), \"FlowGraphConstantBlock\");\n case FlowGraphBlockNames.TransformCoordinatesSystem:\n return async () => await _LoadBlock(import(\"./Data/flowGraphTransformCoordinatesSystemBlock.pure\"), \"FlowGraphTransformCoordinatesSystemBlock\");\n case FlowGraphBlockNames.GetAsset:\n return async () => await _LoadBlock(import(\"./Data/flowGraphGetAssetBlock.pure\"), \"FlowGraphGetAssetBlock\");\n case FlowGraphBlockNames.GetProperty:\n return async () => await _LoadBlock(import(\"./Data/flowGraphGetPropertyBlock.pure\"), \"FlowGraphGetPropertyBlock\");\n case FlowGraphBlockNames.SetProperty:\n return async () => await _LoadBlock(import(\"./Execution/flowGraphSetPropertyBlock.pure\"), \"FlowGraphSetPropertyBlock\");\n case FlowGraphBlockNames.GetVariable:\n return async () => await _LoadBlock(import(\"./Data/flowGraphGetVariableBlock.pure\"), \"FlowGraphGetVariableBlock\");\n case FlowGraphBlockNames.SetVariable:\n return async () => await _LoadBlock(import(\"./Execution/flowGraphSetVariableBlock.pure\"), \"FlowGraphSetVariableBlock\");\n case FlowGraphBlockNames.JsonPointerParser:\n return async () => await _LoadBlock(import(\"./Data/Transformers/flowGraphJsonPointerParserBlock.pure\"), \"FlowGraphJsonPointerParserBlock\");\n case FlowGraphBlockNames.LeadingZeros:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphLeadingZerosBlock\");\n case FlowGraphBlockNames.TrailingZeros:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphTrailingZerosBlock\");\n case FlowGraphBlockNames.OneBitsCounter:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathBlocks.pure\"), \"FlowGraphOneBitsCounterBlock\");\n case FlowGraphBlockNames.CombineVector2:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathCombineExtractBlocks.pure\"), \"FlowGraphCombineVector2Block\");\n case FlowGraphBlockNames.CombineVector3:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathCombineExtractBlocks.pure\"), \"FlowGraphCombineVector3Block\");\n case FlowGraphBlockNames.CombineVector4:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathCombineExtractBlocks.pure\"), \"FlowGraphCombineVector4Block\");\n case FlowGraphBlockNames.CombineMatrix:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathCombineExtractBlocks.pure\"), \"FlowGraphCombineMatrixBlock\");\n case FlowGraphBlockNames.CombineMatrix2D:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathCombineExtractBlocks.pure\"), \"FlowGraphCombineMatrix2DBlock\");\n case FlowGraphBlockNames.CombineMatrix3D:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathCombineExtractBlocks.pure\"), \"FlowGraphCombineMatrix3DBlock\");\n case FlowGraphBlockNames.ExtractVector2:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathCombineExtractBlocks.pure\"), \"FlowGraphExtractVector2Block\");\n case FlowGraphBlockNames.ExtractVector3:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathCombineExtractBlocks.pure\"), \"FlowGraphExtractVector3Block\");\n case FlowGraphBlockNames.ExtractVector4:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathCombineExtractBlocks.pure\"), \"FlowGraphExtractVector4Block\");\n case FlowGraphBlockNames.ExtractMatrix:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathCombineExtractBlocks.pure\"), \"FlowGraphExtractMatrixBlock\");\n case FlowGraphBlockNames.ExtractMatrix2D:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathCombineExtractBlocks.pure\"), \"FlowGraphExtractMatrix2DBlock\");\n case FlowGraphBlockNames.ExtractMatrix3D:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMathCombineExtractBlocks.pure\"), \"FlowGraphExtractMatrix3DBlock\");\n case FlowGraphBlockNames.TransformVector:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphVectorMathBlocks.pure\"), \"FlowGraphTransformBlock\");\n case FlowGraphBlockNames.TransformCoordinates:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphVectorMathBlocks.pure\"), \"FlowGraphTransformCoordinatesBlock\");\n case FlowGraphBlockNames.Conjugate:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphVectorMathBlocks.pure\"), \"FlowGraphConjugateBlock\");\n case FlowGraphBlockNames.AngleBetween:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphVectorMathBlocks.pure\"), \"FlowGraphAngleBetweenBlock\");\n case FlowGraphBlockNames.QuaternionFromAxisAngle:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphVectorMathBlocks.pure\"), \"FlowGraphQuaternionFromAxisAngleBlock\");\n case FlowGraphBlockNames.AxisAngleFromQuaternion:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphVectorMathBlocks.pure\"), \"FlowGraphAxisAngleFromQuaternionBlock\");\n case FlowGraphBlockNames.QuaternionFromDirections:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphVectorMathBlocks.pure\"), \"FlowGraphQuaternionFromDirectionsBlock\");\n case FlowGraphBlockNames.QuaternionFromUpForward:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphVectorMathBlocks.pure\"), \"FlowGraphQuaternionFromUpForwardBlock\");\n case FlowGraphBlockNames.QuaternionFromAngles:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphVectorMathBlocks.pure\"), \"FlowGraphQuaternionFromAnglesBlock\");\n case FlowGraphBlockNames.VectorSlerp:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphVectorMathBlocks.pure\"), \"FlowGraphVectorSlerpBlock\");\n case FlowGraphBlockNames.MatrixDecompose:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMatrixMathBlocks.pure\"), \"FlowGraphMatrixDecomposeBlock\");\n case FlowGraphBlockNames.MatrixCompose:\n return async () => await _LoadBlock(import(\"./Data/Math/flowGraphMatrixMathBlocks.pure\"), \"FlowGraphMatrixComposeBlock\");\n case FlowGraphBlockNames.BooleanToFloat:\n return async () => await _LoadBlock(import(\"./Data/Transformers/flowGraphTypeToTypeBlocks.pure\"), \"FlowGraphBooleanToFloat\");\n case FlowGraphBlockNames.BooleanToInt:\n return async () => await _LoadBlock(import(\"./Data/Transformers/flowGraphTypeToTypeBlocks.pure\"), \"FlowGraphBooleanToInt\");\n case FlowGraphBlockNames.FloatToBoolean:\n return async () => await _LoadBlock(import(\"./Data/Transformers/flowGraphTypeToTypeBlocks.pure\"), \"FlowGraphFloatToBoolean\");\n case FlowGraphBlockNames.IntToBoolean:\n return async () => await _LoadBlock(import(\"./Data/Transformers/flowGraphTypeToTypeBlocks.pure\"), \"FlowGraphIntToBoolean\");\n case FlowGraphBlockNames.IntToFloat:\n return async () => await _LoadBlock(import(\"./Data/Transformers/flowGraphTypeToTypeBlocks.pure\"), \"FlowGraphIntToFloat\");\n case FlowGraphBlockNames.FloatToInt:\n return async () => await _LoadBlock(import(\"./Data/Transformers/flowGraphTypeToTypeBlocks.pure\"), \"FlowGraphFloatToInt\");\n case FlowGraphBlockNames.Easing:\n return async () => await _LoadBlock(import(\"./Execution/Animation/flowGraphEasingBlock.pure\"), \"FlowGraphEasingBlock\");\n case FlowGraphBlockNames.BezierCurveEasing:\n return async () => await _LoadBlock(import(\"./Execution/Animation/flowGraphBezierCurveEasingBlock.pure\"), \"FlowGraphBezierCurveEasingBlock\");\n case FlowGraphBlockNames.PointerOverEvent:\n return async () => await _LoadBlock(import(\"./Event/flowGraphPointerOverEventBlock.pure\"), \"FlowGraphPointerOverEventBlock\");\n case FlowGraphBlockNames.PointerOutEvent:\n return async () => await _LoadBlock(import(\"./Event/flowGraphPointerOutEventBlock.pure\"), \"FlowGraphPointerOutEventBlock\");\n case FlowGraphBlockNames.PointerDownEvent:\n return async () => await _LoadBlock(import(\"./Event/flowGraphPointerDownEventBlock.pure\"), \"FlowGraphPointerDownEventBlock\");\n case FlowGraphBlockNames.PointerUpEvent:\n return async () => await _LoadBlock(import(\"./Event/flowGraphPointerUpEventBlock.pure\"), \"FlowGraphPointerUpEventBlock\");\n case FlowGraphBlockNames.PointerMoveEvent:\n return async () => await _LoadBlock(import(\"./Event/flowGraphPointerMoveEventBlock.pure\"), \"FlowGraphPointerMoveEventBlock\");\n // Keyboard\n case FlowGraphBlockNames.KeyDownEvent:\n return async () => await _LoadBlock(import(\"./Event/flowGraphKeyDownEventBlock.pure\"), \"FlowGraphKeyDownEventBlock\");\n case FlowGraphBlockNames.KeyUpEvent:\n return async () => await _LoadBlock(import(\"./Event/flowGraphKeyUpEventBlock.pure\"), \"FlowGraphKeyUpEventBlock\");\n case FlowGraphBlockNames.IsKeyPressed:\n return async () => await _LoadBlock(import(\"./Data/flowGraphIsKeyPressedBlock.pure\"), \"FlowGraphIsKeyPressedBlock\");\n case FlowGraphBlockNames.Context:\n return async () => await _LoadBlock(import(\"./Data/Utils/flowGraphContextBlock.pure\"), \"FlowGraphContextBlock\");\n case FlowGraphBlockNames.ArrayIndex:\n return async () => await _LoadBlock(import(\"./Data/Utils/flowGraphArrayIndexBlock.pure\"), \"FlowGraphArrayIndexBlock\");\n case FlowGraphBlockNames.CodeExecution:\n return async () => (await import(\"./Data/Utils/flowGraphCodeExecutionBlock\")).FlowGraphCodeExecutionBlock;\n case FlowGraphBlockNames.IndexOf:\n return async () => await _LoadBlock(import(\"./Data/Utils/flowGraphIndexOfBlock.pure\"), \"FlowGraphIndexOfBlock\");\n case FlowGraphBlockNames.FunctionReference:\n return async () => await _LoadBlock(import(\"./Data/Utils/flowGraphFunctionReferenceBlock.pure\"), \"FlowGraphFunctionReferenceBlock\");\n case FlowGraphBlockNames.DataSwitch:\n return async () => await _LoadBlock(import(\"./Data/flowGraphDataSwitchBlock.pure\"), \"FlowGraphDataSwitchBlock\");\n case FlowGraphBlockNames.DebugBlock:\n return async () => await _LoadBlock(import(\"./Data/flowGraphDebugBlock.pure\"), \"FlowGraphDebugBlock\");\n // Physics\n case FlowGraphBlockNames.PhysicsCollisionEvent:\n return async () => await _LoadBlock(import(\"./Event/flowGraphPhysicsCollisionEventBlock.pure\"), \"FlowGraphPhysicsCollisionEventBlock\");\n case FlowGraphBlockNames.PhysicsApplyForce:\n return async () => await _LoadBlock(import(\"./Execution/Physics/flowGraphApplyForceBlock.pure\"), \"FlowGraphApplyForceBlock\");\n case FlowGraphBlockNames.PhysicsApplyImpulse:\n return async () => await _LoadBlock(import(\"./Execution/Physics/flowGraphApplyImpulseBlock.pure\"), \"FlowGraphApplyImpulseBlock\");\n case FlowGraphBlockNames.PhysicsSetLinearVelocity:\n return async () => await _LoadBlock(import(\"./Execution/Physics/flowGraphSetLinearVelocityBlock.pure\"), \"FlowGraphSetLinearVelocityBlock\");\n case FlowGraphBlockNames.PhysicsSetAngularVelocity:\n return async () => await _LoadBlock(import(\"./Execution/Physics/flowGraphSetAngularVelocityBlock.pure\"), \"FlowGraphSetAngularVelocityBlock\");\n case FlowGraphBlockNames.PhysicsSetMotionType:\n return async () => await _LoadBlock(import(\"./Execution/Physics/flowGraphSetPhysicsMotionTypeBlock.pure\"), \"FlowGraphSetPhysicsMotionTypeBlock\");\n case FlowGraphBlockNames.PhysicsGetLinearVelocity:\n return async () => await _LoadBlock(import(\"./Data/Physics/flowGraphGetLinearVelocityBlock.pure\"), \"FlowGraphGetLinearVelocityBlock\");\n case FlowGraphBlockNames.PhysicsGetAngularVelocity:\n return async () => await _LoadBlock(import(\"./Data/Physics/flowGraphGetAngularVelocityBlock.pure\"), \"FlowGraphGetAngularVelocityBlock\");\n case FlowGraphBlockNames.PhysicsGetMassProperties:\n return async () => await _LoadBlock(import(\"./Data/Physics/flowGraphGetPhysicsMassPropertiesBlock.pure\"), \"FlowGraphGetPhysicsMassPropertiesBlock\");\n // Audio\n case FlowGraphBlockNames.AudioPlaySound:\n return async () => await _LoadBlock(import(\"./Execution/Audio/flowGraphPlaySoundBlock.pure\"), \"FlowGraphPlaySoundBlock\");\n case FlowGraphBlockNames.AudioStopSound:\n return async () => await _LoadBlock(import(\"./Execution/Audio/flowGraphStopSoundBlock.pure\"), \"FlowGraphStopSoundBlock\");\n case FlowGraphBlockNames.AudioPauseSound:\n return async () => await _LoadBlock(import(\"./Execution/Audio/flowGraphPauseSoundBlock.pure\"), \"FlowGraphPauseSoundBlock\");\n case FlowGraphBlockNames.AudioSetVolume:\n return async () => await _LoadBlock(import(\"./Execution/Audio/flowGraphSetSoundVolumeBlock.pure\"), \"FlowGraphSetSoundVolumeBlock\");\n case FlowGraphBlockNames.AudioSoundEndedEvent:\n return async () => await _LoadBlock(import(\"./Event/flowGraphSoundEndedEventBlock.pure\"), \"FlowGraphSoundEndedEventBlock\");\n case FlowGraphBlockNames.AudioGetVolume:\n return async () => await _LoadBlock(import(\"./Data/Audio/flowGraphGetSoundVolumeBlock.pure\"), \"FlowGraphGetSoundVolumeBlock\");\n case FlowGraphBlockNames.AudioIsSoundPlaying:\n return async () => await _LoadBlock(import(\"./Data/Audio/flowGraphIsSoundPlayingBlock.pure\"), \"FlowGraphIsSoundPlayingBlock\");\n default:\n // check if the block is a custom block\n if (CustomBlocks[blockName]) {\n return CustomBlocks[blockName];\n }\n // Fallback: O(1) reverse lookup by short name (e.g. \"FlowGraphGLTFDataProvider\" → \"KHR_interactivity/FlowGraphGLTFDataProvider\")\n if (!blockName.includes(\"/\")) {\n const fullKey = ShortNameToFullKey[blockName];\n if (fullKey && CustomBlocks[fullKey]) {\n return CustomBlocks[fullKey];\n }\n }\n throw new Error(`Unknown block name ${blockName}`);\n }\n}\n"]}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
/** This file must only contain pure code and pure imports */
|
|
2
2
|
|
|
3
|
-
import { PBRBaseMaterial } from "../../../Materials/PBR/pbrBaseMaterial.pure.js";
|
|
4
|
-
import { OpenPBRMaterial } from "../../../Materials/PBR/openpbrMaterial.pure.js";
|
|
5
|
-
import { StandardMaterial } from "../../../Materials/standardMaterial.pure.js";
|
|
6
3
|
import { IBLShadowsPluginMaterial } from "../../../Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js";
|
|
4
|
+
import { IsIBLShadowsReceiverCompatible } from "../../../Rendering/IBLShadows/iblShadowsMaterialCompatibility.pure.js";
|
|
7
5
|
import { FrameGraphIblShadowsAccumulationTask } from "./iblShadows/iblShadowsAccumulationTask.js";
|
|
8
6
|
import { FrameGraphIblShadowsSpatialBlurTask } from "./iblShadows/iblShadowsSpatialBlurTask.js";
|
|
9
7
|
import { FrameGraphIblShadowsTracingTask } from "./iblShadows/iblShadowsTracingTask.js";
|
|
@@ -535,8 +533,7 @@ export class FrameGraphIblShadowsRendererTask extends FrameGraphTask {
|
|
|
535
533
|
}
|
|
536
534
|
}
|
|
537
535
|
_addShadowReceivingMaterialInternal(material) {
|
|
538
|
-
|
|
539
|
-
if (!isSupportedMaterial || this._materialsWithRenderPlugin.indexOf(material) !== -1) {
|
|
536
|
+
if (!IsIBLShadowsReceiverCompatible(material) || this._materialsWithRenderPlugin.indexOf(material) !== -1) {
|
|
540
537
|
return;
|
|
541
538
|
}
|
|
542
539
|
const plugin = material.pluginManager?.getPlugin(IBLShadowsPluginMaterial.Name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iblShadowsRendererTask.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { type Camera, type FrameGraph, type FrameGraphObjectList, type FrameGraphTextureHandle, type InternalTexture, type Mesh, type Nullable, type Observer } from \"core/index\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { type Material } from \"core/Materials/material.pure\";\r\nimport { PBRBaseMaterial } from \"core/Materials/PBR/pbrBaseMaterial.pure\";\r\nimport { OpenPBRMaterial } from \"core/Materials/PBR/openpbrMaterial.pure\";\r\nimport { StandardMaterial } from \"core/Materials/standardMaterial.pure\";\r\nimport { IBLShadowsPluginMaterial } from \"core/Rendering/IBLShadows/iblShadowsPluginMaterial.pure\";\r\nimport { FrameGraphIblShadowsAccumulationTask } from \"./iblShadows/iblShadowsAccumulationTask\";\r\nimport { FrameGraphIblShadowsSpatialBlurTask } from \"./iblShadows/iblShadowsSpatialBlurTask\";\r\nimport { FrameGraphIblShadowsTracingTask } from \"./iblShadows/iblShadowsTracingTask\";\r\nimport { FrameGraphIblShadowsVoxelizationTask } from \"./iblShadows/iblShadowsVoxelizationTask\";\r\nimport { Texture } from \"core/Materials/Textures/texture.pure\";\r\nimport { CubeTexture } from \"core/Materials/Textures/cubeTexture.pure\";\r\nimport { Tools } from \"core/Misc/tools.pure\";\r\nimport { Observable } from \"core/Misc/observable.pure\";\r\nimport { IblCdfGenerator } from \"core/Rendering/iblCdfGenerator\";\r\nimport { RegisterIblCdfGeneratorSceneComponent } from \"core/Rendering/iblCdfGeneratorSceneComponent.pure\";\r\nimport { FrameGraphTask } from \"../../frameGraphTask\";\r\n\r\n/**\r\n * Composite task that owns the individual IBL shadows frame graph tasks.\r\n * The frame graph remains flat internally, but this task groups the pipeline\r\n * and owns the child task implementation details.\r\n */\r\nexport class FrameGraphIblShadowsRendererTask extends FrameGraphTask {\r\n /** Final frame-graph texture handle produced by the task. */\r\n public readonly outputTexture: FrameGraphTextureHandle;\r\n\r\n private readonly _voxelizationTask: FrameGraphIblShadowsVoxelizationTask;\r\n private readonly _tracingTask: FrameGraphIblShadowsTracingTask;\r\n private readonly _spatialBlurTask: FrameGraphIblShadowsSpatialBlurTask;\r\n private readonly _accumulationTask: FrameGraphIblShadowsAccumulationTask;\r\n private _dependenciesResolved = false;\r\n private _shadowOpacity = 1.0;\r\n private readonly _materialsWithRenderPlugin: Material[] = [];\r\n private readonly _outputTextureReadyObservable = new Observable<InternalTexture>();\r\n private _lastNotifiedOutputTexture: Nullable<InternalTexture> = null;\r\n private _observedEnvironmentTexture: Nullable<Texture | CubeTexture> = null;\r\n private _observedEnvironmentTextureUnsubscribe: Nullable<() => void> = null;\r\n private _lastImportedIcdfTexture: Nullable<InternalTexture> = null;\r\n private _lastImportedEnvironmentTexture: Nullable<InternalTexture> = null;\r\n private _lastImportedBlueNoiseTexture: Nullable<InternalTexture> = null;\r\n private readonly _blueNoiseTexture: Texture;\r\n private _cameraViewChangedObserver: Nullable<Observer<any>> = null;\r\n private _cdfTextureChangedObserver: Nullable<Observer<any>> = null;\r\n private _cdfGeneratedObserver: Nullable<Observer<any>> = null;\r\n private _environmentTextureChangedObserver: Nullable<Observer<any>> = null;\r\n private _beforeRenderDependencyObserver: Nullable<Observer<any>> = null;\r\n private _beforeRenderOutputReadyObserver: Nullable<Observer<any>> = null;\r\n private _blueNoiseLoadObserver: Nullable<Observer<any>> = null;\r\n private _texturesAllocatedObserver: Nullable<Observer<any>> = null;\r\n private _voxelizationCompleteObserver: Nullable<Observer<any>> = null;\r\n\r\n /**\r\n * Gets the class name.\r\n * @returns The class name.\r\n */\r\n public override getClassName(): string {\r\n return \"FrameGraphIblShadowsRendererTask\";\r\n }\r\n\r\n public override get name() {\r\n return this._name;\r\n }\r\n\r\n public override set name(value: string) {\r\n this._name = value;\r\n if (this._voxelizationTask) {\r\n this._voxelizationTask.name = `${value} Voxelization`;\r\n }\r\n if (this._tracingTask) {\r\n this._tracingTask.name = `${value} Tracing`;\r\n }\r\n if (this._spatialBlurTask) {\r\n this._spatialBlurTask.name = `${value} Blur`;\r\n }\r\n if (this._accumulationTask) {\r\n this._accumulationTask.name = `${value} Accumulation`;\r\n }\r\n }\r\n\r\n /**\r\n * Whether the task is disabled.\r\n */\r\n\r\n public override get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n public override set disabled(value: boolean) {\r\n this._disabled = value;\r\n if (!this._disabled && this._dependenciesResolved) {\r\n this._accumulationTask.reset = true;\r\n }\r\n this._applyMaterialPluginParameters();\r\n }\r\n\r\n // ------ Common properties ------\r\n\r\n /** Camera used by the tracing stage. */\r\n public get camera(): Camera {\r\n return this._tracingTask.camera!;\r\n }\r\n\r\n /** Camera used by the tracing stage. */\r\n public set camera(value: Camera) {\r\n this._setCamera(value);\r\n }\r\n\r\n /** Object list used by voxelization. */\r\n public get objectList(): FrameGraphObjectList {\r\n return this._voxelizationTask.objectList;\r\n }\r\n\r\n /** Object list used by voxelization. */\r\n public set objectList(value: FrameGraphObjectList) {\r\n if (this._voxelizationTask.objectList === value) {\r\n return;\r\n }\r\n\r\n this._voxelizationTask.objectList = value;\r\n this._voxelizationTask.updateSceneBounds();\r\n this._voxelizationTask.requestVoxelizationUpdate();\r\n this._accumulationTask.reset = true;\r\n }\r\n\r\n /**\r\n * Depth texture handle used by tracing and blur.\r\n * This should be the screen-space depth of all objects in the scene\r\n * that will receive shadows.\r\n * It is important that this texture stores 32-bit depth values to avoid artifacts.\r\n */\r\n public depthTexture: FrameGraphTextureHandle;\r\n\r\n /**\r\n * World-space normal texture handle used by tracing and blur.\r\n * This should store the world-space normals of all objects in the scene\r\n * that will receive shadows. Each component should be normalized to [0, 1] rather than [-1, 1].\r\n * Recommended to be 16-bit floating point though 8-bit unsigned byte can be used with minimal\r\n * loss in quality.\r\n */\r\n public normalTexture: FrameGraphTextureHandle;\r\n\r\n /**\r\n * Position texture handle used by accumulation.\r\n * This should store the world-space position of all objects in the scene\r\n * that will receive shadows.\r\n * Should be stored as 16-bit floating point.\r\n */\r\n public positionTexture: FrameGraphTextureHandle;\r\n\r\n /**\r\n * Velocity texture handle used by accumulation.\r\n * This should store the linear velocity per pixel of all objects in the scene\r\n * that will receive shadows.\r\n * Should be stored as 16-bit floating point.\r\n */\r\n public velocityTexture: FrameGraphTextureHandle;\r\n\r\n // ------ Tracing properties ------\r\n\r\n /** Number of tracing sample directions. */\r\n public get sampleDirections(): number {\r\n return this._tracingTask.sampleDirections;\r\n }\r\n\r\n /** Number of tracing sample directions. */\r\n public set sampleDirections(value: number) {\r\n this._tracingTask.sampleDirections = value;\r\n this.resetAccumulation();\r\n }\r\n\r\n /** Whether traced shadows preserve environment color. */\r\n public get coloredShadows(): boolean {\r\n return this._tracingTask.coloredShadows;\r\n }\r\n\r\n /** Whether traced shadows preserve environment color. */\r\n public set coloredShadows(value: boolean) {\r\n if (this._tracingTask.coloredShadows === value) {\r\n return;\r\n }\r\n this._tracingTask.coloredShadows = value;\r\n this._applyMaterialPluginParameters();\r\n this.resetAccumulation();\r\n }\r\n\r\n /** Opacity of voxel-traced shadows. */\r\n public get voxelShadowOpacity(): number {\r\n return this._tracingTask.voxelShadowOpacity;\r\n }\r\n\r\n /** Opacity of voxel-traced shadows. */\r\n public set voxelShadowOpacity(value: number) {\r\n this._tracingTask.voxelShadowOpacity = value;\r\n this.resetAccumulation();\r\n }\r\n\r\n /** Opacity of screen-space shadows. */\r\n public get ssShadowOpacity(): number {\r\n return this._tracingTask.ssShadowOpacity;\r\n }\r\n\r\n /** Opacity of screen-space shadows. */\r\n public set ssShadowOpacity(value: number) {\r\n this._tracingTask.ssShadowOpacity = value;\r\n this.resetAccumulation();\r\n }\r\n\r\n /** Number of screen-space shadow samples. */\r\n public get ssShadowSampleCount(): number {\r\n return this._tracingTask.ssShadowSampleCount;\r\n }\r\n\r\n /** Number of screen-space shadow samples. */\r\n public set ssShadowSampleCount(value: number) {\r\n this._tracingTask.ssShadowSampleCount = value;\r\n this.resetAccumulation();\r\n }\r\n\r\n /** Stride used by screen-space shadow sampling. */\r\n public get ssShadowStride(): number {\r\n return this._tracingTask.ssShadowStride;\r\n }\r\n\r\n /** Stride used by screen-space shadow sampling. */\r\n public set ssShadowStride(value: number) {\r\n this._tracingTask.ssShadowStride = value;\r\n this.resetAccumulation();\r\n }\r\n\r\n /** Distance scale used by screen-space shadow tracing. */\r\n public get ssShadowDistanceScale(): number {\r\n return this._tracingTask.ssShadowDistanceScale;\r\n }\r\n\r\n /** Distance scale used by screen-space shadow tracing. */\r\n public set ssShadowDistanceScale(value: number) {\r\n this._tracingTask.ssShadowDistanceScale = value;\r\n this.resetAccumulation();\r\n }\r\n\r\n /** Thickness scale used by screen-space shadow tracing. */\r\n public get ssShadowThicknessScale(): number {\r\n return this._tracingTask.ssShadowThicknessScale;\r\n }\r\n\r\n /** Thickness scale used by screen-space shadow tracing. */\r\n public set ssShadowThicknessScale(value: number) {\r\n this._tracingTask.ssShadowThicknessScale = value;\r\n this.resetAccumulation();\r\n }\r\n\r\n /** Voxel tracing normal bias. */\r\n public get voxelNormalBias(): number {\r\n return this._tracingTask.voxelNormalBias;\r\n }\r\n\r\n /** Voxel tracing normal bias. */\r\n public set voxelNormalBias(value: number) {\r\n this._tracingTask.voxelNormalBias = value;\r\n this.resetAccumulation();\r\n }\r\n\r\n /** Voxel tracing direction bias. */\r\n public get voxelDirectionBias(): number {\r\n return this._tracingTask.voxelDirectionBias;\r\n }\r\n\r\n /** Voxel tracing direction bias. */\r\n public set voxelDirectionBias(value: number) {\r\n this._tracingTask.voxelDirectionBias = value;\r\n this.resetAccumulation();\r\n }\r\n\r\n /** Environment rotation in radians. */\r\n public get envRotation(): number {\r\n return this._tracingTask.envRotation;\r\n }\r\n\r\n /** Environment rotation in radians. */\r\n public set envRotation(value: number) {\r\n this._tracingTask.envRotation = value;\r\n this.resetAccumulation();\r\n }\r\n\r\n // ------ Accumulation properties ------\r\n\r\n /** Temporal shadow remanence while moving. */\r\n public get shadowRemanence(): number {\r\n return this._accumulationTask.remanence;\r\n }\r\n\r\n /** Temporal shadow remanence while moving. */\r\n public set shadowRemanence(value: number) {\r\n this._accumulationTask.remanence = value;\r\n }\r\n\r\n /** Final material shadow opacity. */\r\n public get shadowOpacity(): number {\r\n return this._shadowOpacity;\r\n }\r\n\r\n /** Final material shadow opacity. */\r\n public set shadowOpacity(value: number) {\r\n this._shadowOpacity = Math.max(0, Math.min(value, 1));\r\n this._applyMaterialPluginParameters();\r\n }\r\n\r\n // ------ Voxelization properties ------\r\n\r\n /** Voxelization resolution exponent. */\r\n public get resolutionExp(): number {\r\n return this._voxelizationTask.resolutionExp;\r\n }\r\n\r\n /** Voxelization resolution exponent. */\r\n public set resolutionExp(value: number) {\r\n this._voxelizationTask.resolutionExp = value;\r\n this.resetAccumulation();\r\n }\r\n\r\n /** Voxelization refresh rate. */\r\n public get refreshRate(): number {\r\n return this._voxelizationTask.refreshRate;\r\n }\r\n\r\n /** Voxelization refresh rate. */\r\n public set refreshRate(value: number) {\r\n this._voxelizationTask.refreshRate = value;\r\n }\r\n\r\n /** Whether tri-planar voxelization is used. */\r\n public get triPlanarVoxelization(): boolean {\r\n return this._voxelizationTask.triPlanarVoxelization;\r\n }\r\n\r\n /** Whether tri-planar voxelization is used. */\r\n public set triPlanarVoxelization(value: boolean) {\r\n this._voxelizationTask.triPlanarVoxelization = value;\r\n }\r\n\r\n /** Current world-space voxel grid size. */\r\n public get voxelGridSize(): number {\r\n return this._voxelizationTask.voxelGridSize;\r\n }\r\n\r\n /** True when the accumulated output texture is ready. */\r\n public get outputTextureReady(): boolean {\r\n return !!this._getAccumulationOutputTexture()?.isReady;\r\n }\r\n\r\n /** Notifies when the accumulated output texture becomes ready. */\r\n public get onOutputTextureReadyObservable(): Observable<InternalTexture> {\r\n return this._outputTextureReadyObservable;\r\n }\r\n\r\n // ------ Public methods ------\r\n\r\n /** Triggers a voxelization refresh on the next eligible frame. */\r\n public updateVoxelization(): void {\r\n this._voxelizationTask.requestVoxelizationUpdate();\r\n }\r\n\r\n /** Recomputes the voxelization scene bounds from the current object list. */\r\n public updateSceneBounds(): void {\r\n this._voxelizationTask.updateSceneBounds();\r\n }\r\n\r\n /** Resets temporal accumulation. */\r\n public resetAccumulation(): void {\r\n this._accumulationTask.reset = true;\r\n }\r\n\r\n /**\r\n * Adds one or more materials that should receive IBL shadows.\r\n * @param material The material or materials to register. If omitted, all scene materials are added.\r\n */\r\n public addShadowReceivingMaterial(material?: Material | Material[]): void {\r\n if (!material) {\r\n for (const sceneMaterial of this._frameGraph.scene.materials) {\r\n this._addShadowReceivingMaterialInternal(sceneMaterial);\r\n }\r\n } else if (Array.isArray(material)) {\r\n for (const sceneMaterial of material) {\r\n this._addShadowReceivingMaterialInternal(sceneMaterial);\r\n }\r\n } else {\r\n this._addShadowReceivingMaterialInternal(material);\r\n }\r\n\r\n this._applyMaterialPluginParameters();\r\n }\r\n\r\n /**\r\n * Removes one or more materials from IBL shadow reception.\r\n * @param material The material or materials to unregister.\r\n */\r\n public removeShadowReceivingMaterial(material: Material | Material[]): void {\r\n const materials = Array.isArray(material) ? material : [material];\r\n for (const mat of materials) {\r\n const index = this._materialsWithRenderPlugin.indexOf(mat);\r\n if (index !== -1) {\r\n this._materialsWithRenderPlugin.splice(index, 1);\r\n }\r\n\r\n const plugin = mat.pluginManager?.getPlugin<IBLShadowsPluginMaterial>(IBLShadowsPluginMaterial.Name);\r\n if (plugin) {\r\n plugin.isEnabled = false;\r\n }\r\n }\r\n }\r\n\r\n /** Clears all registered shadow-receiving materials. */\r\n public clearShadowReceivingMaterials(): void {\r\n for (const mat of this._materialsWithRenderPlugin) {\r\n const plugin = mat.pluginManager?.getPlugin<IBLShadowsPluginMaterial>(IBLShadowsPluginMaterial.Name);\r\n if (plugin) {\r\n plugin.isEnabled = false;\r\n }\r\n }\r\n\r\n this._materialsWithRenderPlugin.length = 0;\r\n }\r\n\r\n /**\r\n * Adds one or more meshes to the voxelization object list.\r\n * @param mesh The mesh or meshes to add.\r\n */\r\n public addShadowCastingMesh(mesh: Mesh | Mesh[]): void {\r\n const meshes = Array.isArray(mesh) ? mesh : [mesh];\r\n const objectMeshes = this._voxelizationTask.objectList.meshes as Mesh[];\r\n for (const currentMesh of meshes) {\r\n if (currentMesh && objectMeshes.indexOf(currentMesh) === -1) {\r\n objectMeshes.push(currentMesh);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Removes one or more meshes from the voxelization object list.\r\n * @param mesh The mesh or meshes to remove.\r\n */\r\n public removeShadowCastingMesh(mesh: Mesh | Mesh[]): void {\r\n const meshes = Array.isArray(mesh) ? mesh : [mesh];\r\n const objectMeshes = this._voxelizationTask.objectList.meshes as Mesh[];\r\n for (const currentMesh of meshes) {\r\n const index = objectMeshes.indexOf(currentMesh);\r\n if (index !== -1) {\r\n objectMeshes.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n /** Clears all shadow-casting meshes from the voxelization object list. */\r\n public clearShadowCastingMeshes(): void {\r\n const objectMeshes = this._voxelizationTask.objectList.meshes as Mesh[];\r\n objectMeshes.length = 0;\r\n }\r\n\r\n // ------ Framework overrides ------\r\n\r\n // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax\r\n public override initAsync(): Promise<unknown> {\r\n this._frameGraph.scene.enableIblCdfGenerator();\r\n\r\n // Don't poll for shadow dependencies here. _tryEnableShadowsTasks() is called\r\n // in record() (where it imports a placeholder ICDF if the real one isn't ready yet,\r\n // preventing any \"handle not found\" errors) and by _beforeRenderDependencyObserver\r\n // on every frame. Shadows enable automatically once the CDF, environment texture,\r\n // and blue-noise texture are all ready — no timeout involved.git pu\r\n return Promise.resolve();\r\n }\r\n\r\n public override isReady(): boolean {\r\n return this._voxelizationTask.isReady() && this._tracingTask.isReady() && this._spatialBlurTask.isReady() && this._accumulationTask.isReady();\r\n }\r\n\r\n /**\r\n * Records the parent task.\r\n * Child tasks record the actual passes.\r\n */\r\n public override record(): void {\r\n if (this.depthTexture === undefined || this.normalTexture === undefined || this.positionTexture === undefined || this.velocityTexture === undefined) {\r\n throw new Error(`FrameGraphIblShadowsRendererTask \"${this.name}\": depthTexture, normalTexture, positionTexture and velocityTexture are required`);\r\n }\r\n\r\n this._lastImportedIcdfTexture = null;\r\n this._lastImportedEnvironmentTexture = null;\r\n this._lastImportedBlueNoiseTexture = null;\r\n\r\n this._tryEnableShadowsTasks();\r\n\r\n // Set sub-task texture inputs (these are set here because handles may not be available at construction time)\r\n this._tracingTask.depthTexture = this.depthTexture;\r\n this._tracingTask.normalTexture = this.normalTexture;\r\n this._spatialBlurTask.depthTexture = this.depthTexture;\r\n this._spatialBlurTask.normalTexture = this.normalTexture;\r\n this._accumulationTask.positionTexture = this.positionTexture;\r\n this._accumulationTask.velocityTexture = this.velocityTexture;\r\n\r\n this._voxelizationTask.record();\r\n this._tracingTask.record();\r\n this._spatialBlurTask.record();\r\n this._accumulationTask.record();\r\n\r\n const passDisabled = this._frameGraph.addRenderPass(this.name + \"_disabled\", true);\r\n passDisabled.setRenderTarget(this.outputTexture);\r\n passDisabled.setExecuteFunc((_context) => {});\r\n }\r\n\r\n /**\r\n * Disposes the task and owned resources.\r\n */\r\n public override dispose(): void {\r\n this._disposeObservers();\r\n this._voxelizationTask.dispose();\r\n this._tracingTask.dispose();\r\n this._spatialBlurTask.dispose();\r\n this._accumulationTask.dispose();\r\n\r\n super.dispose();\r\n }\r\n\r\n /**\r\n * Creates a new IBL shadows composite task.\r\n * @param name The task name.\r\n * @param frameGraph The owning frame graph.\r\n */\r\n constructor(name: string, frameGraph: FrameGraph) {\r\n super(name, frameGraph);\r\n\r\n RegisterIblCdfGeneratorSceneComponent(IblCdfGenerator);\r\n\r\n this._voxelizationTask = new FrameGraphIblShadowsVoxelizationTask(`${name} Voxelization`, frameGraph);\r\n\r\n this._tracingTask = new FrameGraphIblShadowsTracingTask(`${name} Tracing`, frameGraph);\r\n this._tracingTask.voxelGridTexture = this._voxelizationTask.outputVoxelGridTexture;\r\n this._tracingTask.worldScaleMatrix = this._voxelizationTask.worldScaleMatrix;\r\n this._tracingTask.voxelizationTask = this._voxelizationTask;\r\n\r\n this._spatialBlurTask = new FrameGraphIblShadowsSpatialBlurTask(`${name} Blur`, frameGraph);\r\n this._spatialBlurTask.sourceTexture = this._tracingTask.outputTexture;\r\n this._spatialBlurTask.voxelizationTask = this._voxelizationTask;\r\n\r\n this._accumulationTask = new FrameGraphIblShadowsAccumulationTask(`${name} Accumulation`, frameGraph);\r\n this._accumulationTask.sourceTexture = this._spatialBlurTask.outputTexture;\r\n this._accumulationTask.voxelizationTask = this._voxelizationTask;\r\n\r\n this.outputTexture = this._accumulationTask.outputTexture;\r\n this._blueNoiseTexture = new Texture(\r\n Tools.GetAssetUrl(\"https://assets.babylonjs.com/core/blue_noise/blue_noise_rgb.png\"),\r\n frameGraph.scene,\r\n false,\r\n true,\r\n Constants.TEXTURE_NEAREST_SAMPLINGMODE\r\n );\r\n\r\n this._initialize();\r\n }\r\n\r\n private _disposeDependencyObservers(): void {\r\n this._observedEnvironmentTextureUnsubscribe?.();\r\n this._observedEnvironmentTextureUnsubscribe = null;\r\n this._observedEnvironmentTexture = null;\r\n }\r\n\r\n private _disposeObservers(): void {\r\n this._disposeDependencyObservers();\r\n this._tracingTask.camera?.onViewMatrixChangedObservable.remove(this._cameraViewChangedObserver);\r\n this._frameGraph.scene.iblCdfGenerator?.onTextureChangedObservable.remove(this._cdfTextureChangedObserver);\r\n this._frameGraph.scene.iblCdfGenerator?.onGeneratedObservable.remove(this._cdfGeneratedObserver);\r\n this._frameGraph.scene.onEnvironmentTextureChangedObservable.remove(this._environmentTextureChangedObserver);\r\n this._frameGraph.scene.onBeforeRenderObservable.remove(this._beforeRenderDependencyObserver);\r\n this._frameGraph.scene.onBeforeRenderObservable.remove(this._beforeRenderOutputReadyObserver);\r\n this._blueNoiseTexture.onLoadObservable.remove(this._blueNoiseLoadObserver);\r\n this.onTexturesAllocatedObservable.remove(this._texturesAllocatedObserver);\r\n this._voxelizationTask.onVoxelizationCompleteObservable.remove(this._voxelizationCompleteObserver);\r\n\r\n this._cameraViewChangedObserver = null;\r\n this._cdfTextureChangedObserver = null;\r\n this._cdfGeneratedObserver = null;\r\n this._environmentTextureChangedObserver = null;\r\n this._beforeRenderDependencyObserver = null;\r\n this._beforeRenderOutputReadyObserver = null;\r\n this._blueNoiseLoadObserver = null;\r\n this._texturesAllocatedObserver = null;\r\n this._voxelizationCompleteObserver = null;\r\n this._blueNoiseTexture.dispose();\r\n }\r\n\r\n private _setCamera(camera: Camera): void {\r\n const currentCamera = this._tracingTask.camera;\r\n if (currentCamera === camera && this._cameraViewChangedObserver !== null) {\r\n return;\r\n }\r\n\r\n if (currentCamera && this._cameraViewChangedObserver) {\r\n currentCamera.onViewMatrixChangedObservable.remove(this._cameraViewChangedObserver);\r\n this._cameraViewChangedObserver = null;\r\n }\r\n\r\n this._tracingTask.camera = camera;\r\n this._cameraViewChangedObserver = camera.onViewMatrixChangedObservable.add(() => {\r\n this._accumulationTask.isMoving = true;\r\n });\r\n this._accumulationTask.reset = true;\r\n }\r\n\r\n private _observeEnvironmentTexture(): void {\r\n const env = this._frameGraph.scene.environmentTexture;\r\n const currentEnvironmentTexture = env instanceof Texture || env instanceof CubeTexture ? env : null;\r\n\r\n if (currentEnvironmentTexture === this._observedEnvironmentTexture) {\r\n return;\r\n }\r\n\r\n this._observedEnvironmentTextureUnsubscribe?.();\r\n this._observedEnvironmentTextureUnsubscribe = null;\r\n this._observedEnvironmentTexture = currentEnvironmentTexture;\r\n\r\n if (currentEnvironmentTexture instanceof Texture) {\r\n const observer = currentEnvironmentTexture.onLoadObservable.add(this._onEnvironmentTextureLoaded);\r\n if (observer) {\r\n this._observedEnvironmentTextureUnsubscribe = () => currentEnvironmentTexture.onLoadObservable.remove(observer);\r\n }\r\n } else if (currentEnvironmentTexture instanceof CubeTexture) {\r\n const observer = currentEnvironmentTexture.onLoadObservable.add(this._onEnvironmentTextureLoaded);\r\n if (observer) {\r\n this._observedEnvironmentTextureUnsubscribe = () => currentEnvironmentTexture.onLoadObservable.remove(observer);\r\n }\r\n }\r\n }\r\n\r\n private _getEnvironmentTextureInternal(): Nullable<InternalTexture> {\r\n const currentEnvironmentTexture = this._frameGraph.scene.environmentTexture;\r\n\r\n if (!currentEnvironmentTexture || !currentEnvironmentTexture.isReadyOrNotBlocking()) {\r\n return null;\r\n }\r\n\r\n const internalTexture = currentEnvironmentTexture.getInternalTexture();\r\n return internalTexture?.isReady ? internalTexture : null;\r\n }\r\n\r\n private _getAccumulationOutputTexture(): Nullable<InternalTexture> {\r\n try {\r\n return this._frameGraph.textureManager.getTextureFromHandle(this._accumulationTask.outputTexture);\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n private _notifyIfOutputTextureReady(): void {\r\n const outputTexture = this._getAccumulationOutputTexture();\r\n if (!outputTexture?.isReady || this._lastNotifiedOutputTexture === outputTexture) {\r\n return;\r\n }\r\n\r\n this._lastNotifiedOutputTexture = outputTexture;\r\n this._outputTextureReadyObservable.notifyObservers(outputTexture);\r\n }\r\n\r\n private _applyMaterialPluginParameters(): void {\r\n const accumulationTexture = this._getAccumulationOutputTexture();\r\n for (const material of this._materialsWithRenderPlugin) {\r\n const plugin = material.pluginManager?.getPlugin<IBLShadowsPluginMaterial>(IBLShadowsPluginMaterial.Name);\r\n if (!plugin) {\r\n continue;\r\n }\r\n\r\n if (accumulationTexture && accumulationTexture.isReady) {\r\n plugin.iblShadowsTexture = accumulationTexture;\r\n }\r\n\r\n plugin.shadowOpacity = this._shadowOpacity;\r\n plugin.isColored = this._tracingTask.coloredShadows;\r\n plugin.isEnabled = !this._disabled && this._dependenciesResolved && !!accumulationTexture;\r\n }\r\n }\r\n\r\n private _addShadowReceivingMaterialInternal(material: Material): void {\r\n const isSupportedMaterial = material instanceof PBRBaseMaterial || material instanceof StandardMaterial || material instanceof OpenPBRMaterial;\r\n if (!isSupportedMaterial || this._materialsWithRenderPlugin.indexOf(material) !== -1) {\r\n return;\r\n }\r\n\r\n const plugin = material.pluginManager?.getPlugin<IBLShadowsPluginMaterial>(IBLShadowsPluginMaterial.Name);\r\n if (!plugin) {\r\n new IBLShadowsPluginMaterial(material);\r\n }\r\n\r\n this._materialsWithRenderPlugin.push(material);\r\n }\r\n\r\n private readonly _onEnvironmentTextureLoaded = () => {\r\n this._tryEnableShadowsTasks();\r\n };\r\n\r\n private _tryEnableShadowsTasks(): boolean {\r\n const scene = this._frameGraph.scene;\r\n const icdfTexture = scene.iblCdfGenerator?.getIcdfTexture().getInternalTexture();\r\n const environmentTexture = this._getEnvironmentTextureInternal();\r\n const blueNoiseInternalTexture = this._blueNoiseTexture.getInternalTexture();\r\n\r\n // Always import whatever textures are currently available so that their handles\r\n // remain valid in the texture manager across rebuilds. After a frameGraph.clear()\r\n // all texture entries are wiped — without this, stale handles left in the tracing\r\n // task would cause _computeTextureLifespan to throw \"texture handle not found\"\r\n // even when CDF generation is still in progress. Importing the 1×1 placeholder\r\n // ICDF (returned by getIcdfTexture() when real generation hasn't completed) is\r\n // harmless: _dependenciesResolved stays false, the tracing execute function clears\r\n // to white, and the real texture is swapped in the moment CDF is ready.\r\n const icdfChanged = this._lastImportedIcdfTexture !== icdfTexture;\r\n if (icdfChanged && icdfTexture) {\r\n this._tracingTask.icdfTexture = this._frameGraph.textureManager.importTexture(`ICDF Texture`, icdfTexture, this._tracingTask.icdfTexture);\r\n this._lastImportedIcdfTexture = icdfTexture;\r\n }\r\n\r\n const environmentChanged = this._lastImportedEnvironmentTexture !== environmentTexture;\r\n if (environmentChanged || !environmentTexture) {\r\n if (environmentTexture) {\r\n this._tracingTask.environmentTexture = this._frameGraph.textureManager.importTexture(\r\n `Environment Texture`,\r\n environmentTexture,\r\n this._tracingTask.environmentTexture\r\n );\r\n this._lastImportedEnvironmentTexture = environmentTexture;\r\n } else {\r\n // No environment texture (null or not yet ready) — clear any stale handle so\r\n // it is not added to pass dependencies where _computeTextureLifespan would\r\n // fail to find it. This happens when a new IBL is dragged in: the environment\r\n // texture temporarily returns null from _getEnvironmentTextureInternal() while\r\n // it is still loading, but _lastImportedEnvironmentTexture was reset to null in\r\n // record(), so environmentChanged is false and the old stale handle is never\r\n // cleared — unless we add the || !environmentTexture guard here.\r\n this._tracingTask.environmentTexture = undefined;\r\n this._lastImportedEnvironmentTexture = null;\r\n }\r\n }\r\n\r\n const blueNoiseChanged = this._lastImportedBlueNoiseTexture !== blueNoiseInternalTexture;\r\n if (blueNoiseChanged || !blueNoiseInternalTexture) {\r\n if (blueNoiseInternalTexture) {\r\n this._tracingTask.blueNoiseTexture = this._frameGraph.textureManager.importTexture(\r\n `Blue Noise Texture`,\r\n blueNoiseInternalTexture,\r\n this._tracingTask.blueNoiseTexture\r\n );\r\n this._lastImportedBlueNoiseTexture = blueNoiseInternalTexture;\r\n } else {\r\n // Same null-guard as environment above.\r\n this._tracingTask.blueNoiseTexture = undefined;\r\n this._lastImportedBlueNoiseTexture = null;\r\n }\r\n }\r\n\r\n // Only mark dependencies as resolved when all textures are genuinely ready.\r\n //\r\n // Use IblCdfGenerator.isReady() rather than icdfTexture?.isReady (the raw\r\n // InternalTexture property). For a ProceduralTexture render target, InternalTexture\r\n // .isReady can remain false after onGeneratedObservable fires — it reflects GPU\r\n // texture object creation state, not whether the ICDF effect has been compiled and\r\n // the texture has been rendered. IblCdfGenerator.isReady() checks _icdfPT.isReady()\r\n // (ProceduralTexture readiness = effect compiled AND rendered at least once) plus all\r\n // intermediate CDF textures. Without this, _dependenciesResolved never flips to true\r\n // when a new model is loaded (the CDF regenerates but isReady stays false), so the\r\n // IBLShadowsPluginMaterial plugin is never enabled on any material.\r\n const cdfReady = scene.iblCdfGenerator?.isReady() ?? false;\r\n const ready = cdfReady && !!environmentTexture?.isReady && !!blueNoiseInternalTexture?.isReady;\r\n if (!ready) {\r\n if (this._dependenciesResolved) {\r\n this._dependenciesResolved = false;\r\n }\r\n return false;\r\n }\r\n\r\n if (!this._dependenciesResolved) {\r\n this._dependenciesResolved = true;\r\n if (!this._disabled) {\r\n this._accumulationTask.reset = true;\r\n }\r\n this._disposeDependencyObservers();\r\n } else if (icdfChanged || environmentChanged || blueNoiseChanged) {\r\n this._accumulationTask.reset = true;\r\n }\r\n\r\n this._applyMaterialPluginParameters();\r\n\r\n return true;\r\n }\r\n\r\n private _initialize(): void {\r\n const scene = this._frameGraph.scene;\r\n\r\n this._voxelizationCompleteObserver = this._voxelizationTask.onVoxelizationCompleteObservable.add(() => {\r\n this._tracingTask.voxelGridTexture = this._voxelizationTask.outputVoxelGridTexture;\r\n this._accumulationTask.reset = true;\r\n });\r\n\r\n this._cdfTextureChangedObserver =\r\n scene.iblCdfGenerator?.onTextureChangedObservable.add(() => {\r\n this._lastImportedIcdfTexture = null;\r\n this._accumulationTask.reset = true;\r\n }) ?? null;\r\n\r\n this._cdfGeneratedObserver =\r\n scene.iblCdfGenerator?.onGeneratedObservable.add(() => {\r\n this._lastImportedIcdfTexture = null;\r\n this._tryEnableShadowsTasks();\r\n }) ?? null;\r\n\r\n this._environmentTextureChangedObserver = scene.onEnvironmentTextureChangedObservable.add(() => {\r\n this._lastImportedEnvironmentTexture = null;\r\n this._dependenciesResolved = false;\r\n this._observeEnvironmentTexture();\r\n this._applyMaterialPluginParameters();\r\n this._tryEnableShadowsTasks();\r\n });\r\n\r\n this._observeEnvironmentTexture();\r\n\r\n if (scene.environmentTexture?.isReadyOrNotBlocking()) {\r\n this._tryEnableShadowsTasks();\r\n }\r\n\r\n this._blueNoiseLoadObserver = this._blueNoiseTexture.onLoadObservable.add(() => {\r\n this._tryEnableShadowsTasks();\r\n });\r\n\r\n this._beforeRenderDependencyObserver = scene.onBeforeRenderObservable.add(() => {\r\n this._tryEnableShadowsTasks();\r\n });\r\n\r\n this._beforeRenderOutputReadyObserver = scene.onBeforeRenderObservable.add(() => {\r\n this._notifyIfOutputTextureReady();\r\n });\r\n\r\n this._tryEnableShadowsTasks();\r\n\r\n this._texturesAllocatedObserver = this.onTexturesAllocatedObservable.add(() => {\r\n this._applyMaterialPluginParameters();\r\n this._notifyIfOutputTextureReady();\r\n });\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"iblShadowsRendererTask.pure.js","sourceRoot":"","sources":["../../../../../../dev/core/src/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { type Camera, type FrameGraph, type FrameGraphObjectList, type FrameGraphTextureHandle, type InternalTexture, type Mesh, type Nullable, type Observer } from \"core/index\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { type Material } from \"core/Materials/material.pure\";\r\nimport { IBLShadowsPluginMaterial } from \"core/Rendering/IBLShadows/iblShadowsPluginMaterial.pure\";\r\nimport { IsIBLShadowsReceiverCompatible } from \"core/Rendering/IBLShadows/iblShadowsMaterialCompatibility.pure\";\r\nimport { FrameGraphIblShadowsAccumulationTask } from \"./iblShadows/iblShadowsAccumulationTask\";\r\nimport { FrameGraphIblShadowsSpatialBlurTask } from \"./iblShadows/iblShadowsSpatialBlurTask\";\r\nimport { FrameGraphIblShadowsTracingTask } from \"./iblShadows/iblShadowsTracingTask\";\r\nimport { FrameGraphIblShadowsVoxelizationTask } from \"./iblShadows/iblShadowsVoxelizationTask\";\r\nimport { Texture } from \"core/Materials/Textures/texture.pure\";\r\nimport { CubeTexture } from \"core/Materials/Textures/cubeTexture.pure\";\r\nimport { Tools } from \"core/Misc/tools.pure\";\r\nimport { Observable } from \"core/Misc/observable.pure\";\r\nimport { IblCdfGenerator } from \"core/Rendering/iblCdfGenerator\";\r\nimport { RegisterIblCdfGeneratorSceneComponent } from \"core/Rendering/iblCdfGeneratorSceneComponent.pure\";\r\nimport { FrameGraphTask } from \"../../frameGraphTask\";\r\n\r\n/**\r\n * Composite task that owns the individual IBL shadows frame graph tasks.\r\n * The frame graph remains flat internally, but this task groups the pipeline\r\n * and owns the child task implementation details.\r\n */\r\nexport class FrameGraphIblShadowsRendererTask extends FrameGraphTask {\r\n /** Final frame-graph texture handle produced by the task. */\r\n public readonly outputTexture: FrameGraphTextureHandle;\r\n\r\n private readonly _voxelizationTask: FrameGraphIblShadowsVoxelizationTask;\r\n private readonly _tracingTask: FrameGraphIblShadowsTracingTask;\r\n private readonly _spatialBlurTask: FrameGraphIblShadowsSpatialBlurTask;\r\n private readonly _accumulationTask: FrameGraphIblShadowsAccumulationTask;\r\n private _dependenciesResolved = false;\r\n private _shadowOpacity = 1.0;\r\n private readonly _materialsWithRenderPlugin: Material[] = [];\r\n private readonly _outputTextureReadyObservable = new Observable<InternalTexture>();\r\n private _lastNotifiedOutputTexture: Nullable<InternalTexture> = null;\r\n private _observedEnvironmentTexture: Nullable<Texture | CubeTexture> = null;\r\n private _observedEnvironmentTextureUnsubscribe: Nullable<() => void> = null;\r\n private _lastImportedIcdfTexture: Nullable<InternalTexture> = null;\r\n private _lastImportedEnvironmentTexture: Nullable<InternalTexture> = null;\r\n private _lastImportedBlueNoiseTexture: Nullable<InternalTexture> = null;\r\n private readonly _blueNoiseTexture: Texture;\r\n private _cameraViewChangedObserver: Nullable<Observer<any>> = null;\r\n private _cdfTextureChangedObserver: Nullable<Observer<any>> = null;\r\n private _cdfGeneratedObserver: Nullable<Observer<any>> = null;\r\n private _environmentTextureChangedObserver: Nullable<Observer<any>> = null;\r\n private _beforeRenderDependencyObserver: Nullable<Observer<any>> = null;\r\n private _beforeRenderOutputReadyObserver: Nullable<Observer<any>> = null;\r\n private _blueNoiseLoadObserver: Nullable<Observer<any>> = null;\r\n private _texturesAllocatedObserver: Nullable<Observer<any>> = null;\r\n private _voxelizationCompleteObserver: Nullable<Observer<any>> = null;\r\n\r\n /**\r\n * Gets the class name.\r\n * @returns The class name.\r\n */\r\n public override getClassName(): string {\r\n return \"FrameGraphIblShadowsRendererTask\";\r\n }\r\n\r\n public override get name() {\r\n return this._name;\r\n }\r\n\r\n public override set name(value: string) {\r\n this._name = value;\r\n if (this._voxelizationTask) {\r\n this._voxelizationTask.name = `${value} Voxelization`;\r\n }\r\n if (this._tracingTask) {\r\n this._tracingTask.name = `${value} Tracing`;\r\n }\r\n if (this._spatialBlurTask) {\r\n this._spatialBlurTask.name = `${value} Blur`;\r\n }\r\n if (this._accumulationTask) {\r\n this._accumulationTask.name = `${value} Accumulation`;\r\n }\r\n }\r\n\r\n /**\r\n * Whether the task is disabled.\r\n */\r\n\r\n public override get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n public override set disabled(value: boolean) {\r\n this._disabled = value;\r\n if (!this._disabled && this._dependenciesResolved) {\r\n this._accumulationTask.reset = true;\r\n }\r\n this._applyMaterialPluginParameters();\r\n }\r\n\r\n // ------ Common properties ------\r\n\r\n /** Camera used by the tracing stage. */\r\n public get camera(): Camera {\r\n return this._tracingTask.camera!;\r\n }\r\n\r\n /** Camera used by the tracing stage. */\r\n public set camera(value: Camera) {\r\n this._setCamera(value);\r\n }\r\n\r\n /** Object list used by voxelization. */\r\n public get objectList(): FrameGraphObjectList {\r\n return this._voxelizationTask.objectList;\r\n }\r\n\r\n /** Object list used by voxelization. */\r\n public set objectList(value: FrameGraphObjectList) {\r\n if (this._voxelizationTask.objectList === value) {\r\n return;\r\n }\r\n\r\n this._voxelizationTask.objectList = value;\r\n this._voxelizationTask.updateSceneBounds();\r\n this._voxelizationTask.requestVoxelizationUpdate();\r\n this._accumulationTask.reset = true;\r\n }\r\n\r\n /**\r\n * Depth texture handle used by tracing and blur.\r\n * This should be the screen-space depth of all objects in the scene\r\n * that will receive shadows.\r\n * It is important that this texture stores 32-bit depth values to avoid artifacts.\r\n */\r\n public depthTexture: FrameGraphTextureHandle;\r\n\r\n /**\r\n * World-space normal texture handle used by tracing and blur.\r\n * This should store the world-space normals of all objects in the scene\r\n * that will receive shadows. Each component should be normalized to [0, 1] rather than [-1, 1].\r\n * Recommended to be 16-bit floating point though 8-bit unsigned byte can be used with minimal\r\n * loss in quality.\r\n */\r\n public normalTexture: FrameGraphTextureHandle;\r\n\r\n /**\r\n * Position texture handle used by accumulation.\r\n * This should store the world-space position of all objects in the scene\r\n * that will receive shadows.\r\n * Should be stored as 16-bit floating point.\r\n */\r\n public positionTexture: FrameGraphTextureHandle;\r\n\r\n /**\r\n * Velocity texture handle used by accumulation.\r\n * This should store the linear velocity per pixel of all objects in the scene\r\n * that will receive shadows.\r\n * Should be stored as 16-bit floating point.\r\n */\r\n public velocityTexture: FrameGraphTextureHandle;\r\n\r\n // ------ Tracing properties ------\r\n\r\n /** Number of tracing sample directions. */\r\n public get sampleDirections(): number {\r\n return this._tracingTask.sampleDirections;\r\n }\r\n\r\n /** Number of tracing sample directions. */\r\n public set sampleDirections(value: number) {\r\n this._tracingTask.sampleDirections = value;\r\n this.resetAccumulation();\r\n }\r\n\r\n /** Whether traced shadows preserve environment color. */\r\n public get coloredShadows(): boolean {\r\n return this._tracingTask.coloredShadows;\r\n }\r\n\r\n /** Whether traced shadows preserve environment color. */\r\n public set coloredShadows(value: boolean) {\r\n if (this._tracingTask.coloredShadows === value) {\r\n return;\r\n }\r\n this._tracingTask.coloredShadows = value;\r\n this._applyMaterialPluginParameters();\r\n this.resetAccumulation();\r\n }\r\n\r\n /** Opacity of voxel-traced shadows. */\r\n public get voxelShadowOpacity(): number {\r\n return this._tracingTask.voxelShadowOpacity;\r\n }\r\n\r\n /** Opacity of voxel-traced shadows. */\r\n public set voxelShadowOpacity(value: number) {\r\n this._tracingTask.voxelShadowOpacity = value;\r\n this.resetAccumulation();\r\n }\r\n\r\n /** Opacity of screen-space shadows. */\r\n public get ssShadowOpacity(): number {\r\n return this._tracingTask.ssShadowOpacity;\r\n }\r\n\r\n /** Opacity of screen-space shadows. */\r\n public set ssShadowOpacity(value: number) {\r\n this._tracingTask.ssShadowOpacity = value;\r\n this.resetAccumulation();\r\n }\r\n\r\n /** Number of screen-space shadow samples. */\r\n public get ssShadowSampleCount(): number {\r\n return this._tracingTask.ssShadowSampleCount;\r\n }\r\n\r\n /** Number of screen-space shadow samples. */\r\n public set ssShadowSampleCount(value: number) {\r\n this._tracingTask.ssShadowSampleCount = value;\r\n this.resetAccumulation();\r\n }\r\n\r\n /** Stride used by screen-space shadow sampling. */\r\n public get ssShadowStride(): number {\r\n return this._tracingTask.ssShadowStride;\r\n }\r\n\r\n /** Stride used by screen-space shadow sampling. */\r\n public set ssShadowStride(value: number) {\r\n this._tracingTask.ssShadowStride = value;\r\n this.resetAccumulation();\r\n }\r\n\r\n /** Distance scale used by screen-space shadow tracing. */\r\n public get ssShadowDistanceScale(): number {\r\n return this._tracingTask.ssShadowDistanceScale;\r\n }\r\n\r\n /** Distance scale used by screen-space shadow tracing. */\r\n public set ssShadowDistanceScale(value: number) {\r\n this._tracingTask.ssShadowDistanceScale = value;\r\n this.resetAccumulation();\r\n }\r\n\r\n /** Thickness scale used by screen-space shadow tracing. */\r\n public get ssShadowThicknessScale(): number {\r\n return this._tracingTask.ssShadowThicknessScale;\r\n }\r\n\r\n /** Thickness scale used by screen-space shadow tracing. */\r\n public set ssShadowThicknessScale(value: number) {\r\n this._tracingTask.ssShadowThicknessScale = value;\r\n this.resetAccumulation();\r\n }\r\n\r\n /** Voxel tracing normal bias. */\r\n public get voxelNormalBias(): number {\r\n return this._tracingTask.voxelNormalBias;\r\n }\r\n\r\n /** Voxel tracing normal bias. */\r\n public set voxelNormalBias(value: number) {\r\n this._tracingTask.voxelNormalBias = value;\r\n this.resetAccumulation();\r\n }\r\n\r\n /** Voxel tracing direction bias. */\r\n public get voxelDirectionBias(): number {\r\n return this._tracingTask.voxelDirectionBias;\r\n }\r\n\r\n /** Voxel tracing direction bias. */\r\n public set voxelDirectionBias(value: number) {\r\n this._tracingTask.voxelDirectionBias = value;\r\n this.resetAccumulation();\r\n }\r\n\r\n /** Environment rotation in radians. */\r\n public get envRotation(): number {\r\n return this._tracingTask.envRotation;\r\n }\r\n\r\n /** Environment rotation in radians. */\r\n public set envRotation(value: number) {\r\n this._tracingTask.envRotation = value;\r\n this.resetAccumulation();\r\n }\r\n\r\n // ------ Accumulation properties ------\r\n\r\n /** Temporal shadow remanence while moving. */\r\n public get shadowRemanence(): number {\r\n return this._accumulationTask.remanence;\r\n }\r\n\r\n /** Temporal shadow remanence while moving. */\r\n public set shadowRemanence(value: number) {\r\n this._accumulationTask.remanence = value;\r\n }\r\n\r\n /** Final material shadow opacity. */\r\n public get shadowOpacity(): number {\r\n return this._shadowOpacity;\r\n }\r\n\r\n /** Final material shadow opacity. */\r\n public set shadowOpacity(value: number) {\r\n this._shadowOpacity = Math.max(0, Math.min(value, 1));\r\n this._applyMaterialPluginParameters();\r\n }\r\n\r\n // ------ Voxelization properties ------\r\n\r\n /** Voxelization resolution exponent. */\r\n public get resolutionExp(): number {\r\n return this._voxelizationTask.resolutionExp;\r\n }\r\n\r\n /** Voxelization resolution exponent. */\r\n public set resolutionExp(value: number) {\r\n this._voxelizationTask.resolutionExp = value;\r\n this.resetAccumulation();\r\n }\r\n\r\n /** Voxelization refresh rate. */\r\n public get refreshRate(): number {\r\n return this._voxelizationTask.refreshRate;\r\n }\r\n\r\n /** Voxelization refresh rate. */\r\n public set refreshRate(value: number) {\r\n this._voxelizationTask.refreshRate = value;\r\n }\r\n\r\n /** Whether tri-planar voxelization is used. */\r\n public get triPlanarVoxelization(): boolean {\r\n return this._voxelizationTask.triPlanarVoxelization;\r\n }\r\n\r\n /** Whether tri-planar voxelization is used. */\r\n public set triPlanarVoxelization(value: boolean) {\r\n this._voxelizationTask.triPlanarVoxelization = value;\r\n }\r\n\r\n /** Current world-space voxel grid size. */\r\n public get voxelGridSize(): number {\r\n return this._voxelizationTask.voxelGridSize;\r\n }\r\n\r\n /** True when the accumulated output texture is ready. */\r\n public get outputTextureReady(): boolean {\r\n return !!this._getAccumulationOutputTexture()?.isReady;\r\n }\r\n\r\n /** Notifies when the accumulated output texture becomes ready. */\r\n public get onOutputTextureReadyObservable(): Observable<InternalTexture> {\r\n return this._outputTextureReadyObservable;\r\n }\r\n\r\n // ------ Public methods ------\r\n\r\n /** Triggers a voxelization refresh on the next eligible frame. */\r\n public updateVoxelization(): void {\r\n this._voxelizationTask.requestVoxelizationUpdate();\r\n }\r\n\r\n /** Recomputes the voxelization scene bounds from the current object list. */\r\n public updateSceneBounds(): void {\r\n this._voxelizationTask.updateSceneBounds();\r\n }\r\n\r\n /** Resets temporal accumulation. */\r\n public resetAccumulation(): void {\r\n this._accumulationTask.reset = true;\r\n }\r\n\r\n /**\r\n * Adds one or more materials that should receive IBL shadows.\r\n * @param material The material or materials to register. If omitted, all scene materials are added.\r\n */\r\n public addShadowReceivingMaterial(material?: Material | Material[]): void {\r\n if (!material) {\r\n for (const sceneMaterial of this._frameGraph.scene.materials) {\r\n this._addShadowReceivingMaterialInternal(sceneMaterial);\r\n }\r\n } else if (Array.isArray(material)) {\r\n for (const sceneMaterial of material) {\r\n this._addShadowReceivingMaterialInternal(sceneMaterial);\r\n }\r\n } else {\r\n this._addShadowReceivingMaterialInternal(material);\r\n }\r\n\r\n this._applyMaterialPluginParameters();\r\n }\r\n\r\n /**\r\n * Removes one or more materials from IBL shadow reception.\r\n * @param material The material or materials to unregister.\r\n */\r\n public removeShadowReceivingMaterial(material: Material | Material[]): void {\r\n const materials = Array.isArray(material) ? material : [material];\r\n for (const mat of materials) {\r\n const index = this._materialsWithRenderPlugin.indexOf(mat);\r\n if (index !== -1) {\r\n this._materialsWithRenderPlugin.splice(index, 1);\r\n }\r\n\r\n const plugin = mat.pluginManager?.getPlugin<IBLShadowsPluginMaterial>(IBLShadowsPluginMaterial.Name);\r\n if (plugin) {\r\n plugin.isEnabled = false;\r\n }\r\n }\r\n }\r\n\r\n /** Clears all registered shadow-receiving materials. */\r\n public clearShadowReceivingMaterials(): void {\r\n for (const mat of this._materialsWithRenderPlugin) {\r\n const plugin = mat.pluginManager?.getPlugin<IBLShadowsPluginMaterial>(IBLShadowsPluginMaterial.Name);\r\n if (plugin) {\r\n plugin.isEnabled = false;\r\n }\r\n }\r\n\r\n this._materialsWithRenderPlugin.length = 0;\r\n }\r\n\r\n /**\r\n * Adds one or more meshes to the voxelization object list.\r\n * @param mesh The mesh or meshes to add.\r\n */\r\n public addShadowCastingMesh(mesh: Mesh | Mesh[]): void {\r\n const meshes = Array.isArray(mesh) ? mesh : [mesh];\r\n const objectMeshes = this._voxelizationTask.objectList.meshes as Mesh[];\r\n for (const currentMesh of meshes) {\r\n if (currentMesh && objectMeshes.indexOf(currentMesh) === -1) {\r\n objectMeshes.push(currentMesh);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Removes one or more meshes from the voxelization object list.\r\n * @param mesh The mesh or meshes to remove.\r\n */\r\n public removeShadowCastingMesh(mesh: Mesh | Mesh[]): void {\r\n const meshes = Array.isArray(mesh) ? mesh : [mesh];\r\n const objectMeshes = this._voxelizationTask.objectList.meshes as Mesh[];\r\n for (const currentMesh of meshes) {\r\n const index = objectMeshes.indexOf(currentMesh);\r\n if (index !== -1) {\r\n objectMeshes.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n /** Clears all shadow-casting meshes from the voxelization object list. */\r\n public clearShadowCastingMeshes(): void {\r\n const objectMeshes = this._voxelizationTask.objectList.meshes as Mesh[];\r\n objectMeshes.length = 0;\r\n }\r\n\r\n // ------ Framework overrides ------\r\n\r\n // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax\r\n public override initAsync(): Promise<unknown> {\r\n this._frameGraph.scene.enableIblCdfGenerator();\r\n\r\n // Don't poll for shadow dependencies here. _tryEnableShadowsTasks() is called\r\n // in record() (where it imports a placeholder ICDF if the real one isn't ready yet,\r\n // preventing any \"handle not found\" errors) and by _beforeRenderDependencyObserver\r\n // on every frame. Shadows enable automatically once the CDF, environment texture,\r\n // and blue-noise texture are all ready — no timeout involved.git pu\r\n return Promise.resolve();\r\n }\r\n\r\n public override isReady(): boolean {\r\n return this._voxelizationTask.isReady() && this._tracingTask.isReady() && this._spatialBlurTask.isReady() && this._accumulationTask.isReady();\r\n }\r\n\r\n /**\r\n * Records the parent task.\r\n * Child tasks record the actual passes.\r\n */\r\n public override record(): void {\r\n if (this.depthTexture === undefined || this.normalTexture === undefined || this.positionTexture === undefined || this.velocityTexture === undefined) {\r\n throw new Error(`FrameGraphIblShadowsRendererTask \"${this.name}\": depthTexture, normalTexture, positionTexture and velocityTexture are required`);\r\n }\r\n\r\n this._lastImportedIcdfTexture = null;\r\n this._lastImportedEnvironmentTexture = null;\r\n this._lastImportedBlueNoiseTexture = null;\r\n\r\n this._tryEnableShadowsTasks();\r\n\r\n // Set sub-task texture inputs (these are set here because handles may not be available at construction time)\r\n this._tracingTask.depthTexture = this.depthTexture;\r\n this._tracingTask.normalTexture = this.normalTexture;\r\n this._spatialBlurTask.depthTexture = this.depthTexture;\r\n this._spatialBlurTask.normalTexture = this.normalTexture;\r\n this._accumulationTask.positionTexture = this.positionTexture;\r\n this._accumulationTask.velocityTexture = this.velocityTexture;\r\n\r\n this._voxelizationTask.record();\r\n this._tracingTask.record();\r\n this._spatialBlurTask.record();\r\n this._accumulationTask.record();\r\n\r\n const passDisabled = this._frameGraph.addRenderPass(this.name + \"_disabled\", true);\r\n passDisabled.setRenderTarget(this.outputTexture);\r\n passDisabled.setExecuteFunc((_context) => {});\r\n }\r\n\r\n /**\r\n * Disposes the task and owned resources.\r\n */\r\n public override dispose(): void {\r\n this._disposeObservers();\r\n this._voxelizationTask.dispose();\r\n this._tracingTask.dispose();\r\n this._spatialBlurTask.dispose();\r\n this._accumulationTask.dispose();\r\n\r\n super.dispose();\r\n }\r\n\r\n /**\r\n * Creates a new IBL shadows composite task.\r\n * @param name The task name.\r\n * @param frameGraph The owning frame graph.\r\n */\r\n constructor(name: string, frameGraph: FrameGraph) {\r\n super(name, frameGraph);\r\n\r\n RegisterIblCdfGeneratorSceneComponent(IblCdfGenerator);\r\n\r\n this._voxelizationTask = new FrameGraphIblShadowsVoxelizationTask(`${name} Voxelization`, frameGraph);\r\n\r\n this._tracingTask = new FrameGraphIblShadowsTracingTask(`${name} Tracing`, frameGraph);\r\n this._tracingTask.voxelGridTexture = this._voxelizationTask.outputVoxelGridTexture;\r\n this._tracingTask.worldScaleMatrix = this._voxelizationTask.worldScaleMatrix;\r\n this._tracingTask.voxelizationTask = this._voxelizationTask;\r\n\r\n this._spatialBlurTask = new FrameGraphIblShadowsSpatialBlurTask(`${name} Blur`, frameGraph);\r\n this._spatialBlurTask.sourceTexture = this._tracingTask.outputTexture;\r\n this._spatialBlurTask.voxelizationTask = this._voxelizationTask;\r\n\r\n this._accumulationTask = new FrameGraphIblShadowsAccumulationTask(`${name} Accumulation`, frameGraph);\r\n this._accumulationTask.sourceTexture = this._spatialBlurTask.outputTexture;\r\n this._accumulationTask.voxelizationTask = this._voxelizationTask;\r\n\r\n this.outputTexture = this._accumulationTask.outputTexture;\r\n this._blueNoiseTexture = new Texture(\r\n Tools.GetAssetUrl(\"https://assets.babylonjs.com/core/blue_noise/blue_noise_rgb.png\"),\r\n frameGraph.scene,\r\n false,\r\n true,\r\n Constants.TEXTURE_NEAREST_SAMPLINGMODE\r\n );\r\n\r\n this._initialize();\r\n }\r\n\r\n private _disposeDependencyObservers(): void {\r\n this._observedEnvironmentTextureUnsubscribe?.();\r\n this._observedEnvironmentTextureUnsubscribe = null;\r\n this._observedEnvironmentTexture = null;\r\n }\r\n\r\n private _disposeObservers(): void {\r\n this._disposeDependencyObservers();\r\n this._tracingTask.camera?.onViewMatrixChangedObservable.remove(this._cameraViewChangedObserver);\r\n this._frameGraph.scene.iblCdfGenerator?.onTextureChangedObservable.remove(this._cdfTextureChangedObserver);\r\n this._frameGraph.scene.iblCdfGenerator?.onGeneratedObservable.remove(this._cdfGeneratedObserver);\r\n this._frameGraph.scene.onEnvironmentTextureChangedObservable.remove(this._environmentTextureChangedObserver);\r\n this._frameGraph.scene.onBeforeRenderObservable.remove(this._beforeRenderDependencyObserver);\r\n this._frameGraph.scene.onBeforeRenderObservable.remove(this._beforeRenderOutputReadyObserver);\r\n this._blueNoiseTexture.onLoadObservable.remove(this._blueNoiseLoadObserver);\r\n this.onTexturesAllocatedObservable.remove(this._texturesAllocatedObserver);\r\n this._voxelizationTask.onVoxelizationCompleteObservable.remove(this._voxelizationCompleteObserver);\r\n\r\n this._cameraViewChangedObserver = null;\r\n this._cdfTextureChangedObserver = null;\r\n this._cdfGeneratedObserver = null;\r\n this._environmentTextureChangedObserver = null;\r\n this._beforeRenderDependencyObserver = null;\r\n this._beforeRenderOutputReadyObserver = null;\r\n this._blueNoiseLoadObserver = null;\r\n this._texturesAllocatedObserver = null;\r\n this._voxelizationCompleteObserver = null;\r\n this._blueNoiseTexture.dispose();\r\n }\r\n\r\n private _setCamera(camera: Camera): void {\r\n const currentCamera = this._tracingTask.camera;\r\n if (currentCamera === camera && this._cameraViewChangedObserver !== null) {\r\n return;\r\n }\r\n\r\n if (currentCamera && this._cameraViewChangedObserver) {\r\n currentCamera.onViewMatrixChangedObservable.remove(this._cameraViewChangedObserver);\r\n this._cameraViewChangedObserver = null;\r\n }\r\n\r\n this._tracingTask.camera = camera;\r\n this._cameraViewChangedObserver = camera.onViewMatrixChangedObservable.add(() => {\r\n this._accumulationTask.isMoving = true;\r\n });\r\n this._accumulationTask.reset = true;\r\n }\r\n\r\n private _observeEnvironmentTexture(): void {\r\n const env = this._frameGraph.scene.environmentTexture;\r\n const currentEnvironmentTexture = env instanceof Texture || env instanceof CubeTexture ? env : null;\r\n\r\n if (currentEnvironmentTexture === this._observedEnvironmentTexture) {\r\n return;\r\n }\r\n\r\n this._observedEnvironmentTextureUnsubscribe?.();\r\n this._observedEnvironmentTextureUnsubscribe = null;\r\n this._observedEnvironmentTexture = currentEnvironmentTexture;\r\n\r\n if (currentEnvironmentTexture instanceof Texture) {\r\n const observer = currentEnvironmentTexture.onLoadObservable.add(this._onEnvironmentTextureLoaded);\r\n if (observer) {\r\n this._observedEnvironmentTextureUnsubscribe = () => currentEnvironmentTexture.onLoadObservable.remove(observer);\r\n }\r\n } else if (currentEnvironmentTexture instanceof CubeTexture) {\r\n const observer = currentEnvironmentTexture.onLoadObservable.add(this._onEnvironmentTextureLoaded);\r\n if (observer) {\r\n this._observedEnvironmentTextureUnsubscribe = () => currentEnvironmentTexture.onLoadObservable.remove(observer);\r\n }\r\n }\r\n }\r\n\r\n private _getEnvironmentTextureInternal(): Nullable<InternalTexture> {\r\n const currentEnvironmentTexture = this._frameGraph.scene.environmentTexture;\r\n\r\n if (!currentEnvironmentTexture || !currentEnvironmentTexture.isReadyOrNotBlocking()) {\r\n return null;\r\n }\r\n\r\n const internalTexture = currentEnvironmentTexture.getInternalTexture();\r\n return internalTexture?.isReady ? internalTexture : null;\r\n }\r\n\r\n private _getAccumulationOutputTexture(): Nullable<InternalTexture> {\r\n try {\r\n return this._frameGraph.textureManager.getTextureFromHandle(this._accumulationTask.outputTexture);\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n private _notifyIfOutputTextureReady(): void {\r\n const outputTexture = this._getAccumulationOutputTexture();\r\n if (!outputTexture?.isReady || this._lastNotifiedOutputTexture === outputTexture) {\r\n return;\r\n }\r\n\r\n this._lastNotifiedOutputTexture = outputTexture;\r\n this._outputTextureReadyObservable.notifyObservers(outputTexture);\r\n }\r\n\r\n private _applyMaterialPluginParameters(): void {\r\n const accumulationTexture = this._getAccumulationOutputTexture();\r\n for (const material of this._materialsWithRenderPlugin) {\r\n const plugin = material.pluginManager?.getPlugin<IBLShadowsPluginMaterial>(IBLShadowsPluginMaterial.Name);\r\n if (!plugin) {\r\n continue;\r\n }\r\n\r\n if (accumulationTexture && accumulationTexture.isReady) {\r\n plugin.iblShadowsTexture = accumulationTexture;\r\n }\r\n\r\n plugin.shadowOpacity = this._shadowOpacity;\r\n plugin.isColored = this._tracingTask.coloredShadows;\r\n plugin.isEnabled = !this._disabled && this._dependenciesResolved && !!accumulationTexture;\r\n }\r\n }\r\n\r\n private _addShadowReceivingMaterialInternal(material: Material): void {\r\n if (!IsIBLShadowsReceiverCompatible(material) || this._materialsWithRenderPlugin.indexOf(material) !== -1) {\r\n return;\r\n }\r\n\r\n const plugin = material.pluginManager?.getPlugin<IBLShadowsPluginMaterial>(IBLShadowsPluginMaterial.Name);\r\n if (!plugin) {\r\n new IBLShadowsPluginMaterial(material);\r\n }\r\n\r\n this._materialsWithRenderPlugin.push(material);\r\n }\r\n\r\n private readonly _onEnvironmentTextureLoaded = () => {\r\n this._tryEnableShadowsTasks();\r\n };\r\n\r\n private _tryEnableShadowsTasks(): boolean {\r\n const scene = this._frameGraph.scene;\r\n const icdfTexture = scene.iblCdfGenerator?.getIcdfTexture().getInternalTexture();\r\n const environmentTexture = this._getEnvironmentTextureInternal();\r\n const blueNoiseInternalTexture = this._blueNoiseTexture.getInternalTexture();\r\n\r\n // Always import whatever textures are currently available so that their handles\r\n // remain valid in the texture manager across rebuilds. After a frameGraph.clear()\r\n // all texture entries are wiped — without this, stale handles left in the tracing\r\n // task would cause _computeTextureLifespan to throw \"texture handle not found\"\r\n // even when CDF generation is still in progress. Importing the 1×1 placeholder\r\n // ICDF (returned by getIcdfTexture() when real generation hasn't completed) is\r\n // harmless: _dependenciesResolved stays false, the tracing execute function clears\r\n // to white, and the real texture is swapped in the moment CDF is ready.\r\n const icdfChanged = this._lastImportedIcdfTexture !== icdfTexture;\r\n if (icdfChanged && icdfTexture) {\r\n this._tracingTask.icdfTexture = this._frameGraph.textureManager.importTexture(`ICDF Texture`, icdfTexture, this._tracingTask.icdfTexture);\r\n this._lastImportedIcdfTexture = icdfTexture;\r\n }\r\n\r\n const environmentChanged = this._lastImportedEnvironmentTexture !== environmentTexture;\r\n if (environmentChanged || !environmentTexture) {\r\n if (environmentTexture) {\r\n this._tracingTask.environmentTexture = this._frameGraph.textureManager.importTexture(\r\n `Environment Texture`,\r\n environmentTexture,\r\n this._tracingTask.environmentTexture\r\n );\r\n this._lastImportedEnvironmentTexture = environmentTexture;\r\n } else {\r\n // No environment texture (null or not yet ready) — clear any stale handle so\r\n // it is not added to pass dependencies where _computeTextureLifespan would\r\n // fail to find it. This happens when a new IBL is dragged in: the environment\r\n // texture temporarily returns null from _getEnvironmentTextureInternal() while\r\n // it is still loading, but _lastImportedEnvironmentTexture was reset to null in\r\n // record(), so environmentChanged is false and the old stale handle is never\r\n // cleared — unless we add the || !environmentTexture guard here.\r\n this._tracingTask.environmentTexture = undefined;\r\n this._lastImportedEnvironmentTexture = null;\r\n }\r\n }\r\n\r\n const blueNoiseChanged = this._lastImportedBlueNoiseTexture !== blueNoiseInternalTexture;\r\n if (blueNoiseChanged || !blueNoiseInternalTexture) {\r\n if (blueNoiseInternalTexture) {\r\n this._tracingTask.blueNoiseTexture = this._frameGraph.textureManager.importTexture(\r\n `Blue Noise Texture`,\r\n blueNoiseInternalTexture,\r\n this._tracingTask.blueNoiseTexture\r\n );\r\n this._lastImportedBlueNoiseTexture = blueNoiseInternalTexture;\r\n } else {\r\n // Same null-guard as environment above.\r\n this._tracingTask.blueNoiseTexture = undefined;\r\n this._lastImportedBlueNoiseTexture = null;\r\n }\r\n }\r\n\r\n // Only mark dependencies as resolved when all textures are genuinely ready.\r\n //\r\n // Use IblCdfGenerator.isReady() rather than icdfTexture?.isReady (the raw\r\n // InternalTexture property). For a ProceduralTexture render target, InternalTexture\r\n // .isReady can remain false after onGeneratedObservable fires — it reflects GPU\r\n // texture object creation state, not whether the ICDF effect has been compiled and\r\n // the texture has been rendered. IblCdfGenerator.isReady() checks _icdfPT.isReady()\r\n // (ProceduralTexture readiness = effect compiled AND rendered at least once) plus all\r\n // intermediate CDF textures. Without this, _dependenciesResolved never flips to true\r\n // when a new model is loaded (the CDF regenerates but isReady stays false), so the\r\n // IBLShadowsPluginMaterial plugin is never enabled on any material.\r\n const cdfReady = scene.iblCdfGenerator?.isReady() ?? false;\r\n const ready = cdfReady && !!environmentTexture?.isReady && !!blueNoiseInternalTexture?.isReady;\r\n if (!ready) {\r\n if (this._dependenciesResolved) {\r\n this._dependenciesResolved = false;\r\n }\r\n return false;\r\n }\r\n\r\n if (!this._dependenciesResolved) {\r\n this._dependenciesResolved = true;\r\n if (!this._disabled) {\r\n this._accumulationTask.reset = true;\r\n }\r\n this._disposeDependencyObservers();\r\n } else if (icdfChanged || environmentChanged || blueNoiseChanged) {\r\n this._accumulationTask.reset = true;\r\n }\r\n\r\n this._applyMaterialPluginParameters();\r\n\r\n return true;\r\n }\r\n\r\n private _initialize(): void {\r\n const scene = this._frameGraph.scene;\r\n\r\n this._voxelizationCompleteObserver = this._voxelizationTask.onVoxelizationCompleteObservable.add(() => {\r\n this._tracingTask.voxelGridTexture = this._voxelizationTask.outputVoxelGridTexture;\r\n this._accumulationTask.reset = true;\r\n });\r\n\r\n this._cdfTextureChangedObserver =\r\n scene.iblCdfGenerator?.onTextureChangedObservable.add(() => {\r\n this._lastImportedIcdfTexture = null;\r\n this._accumulationTask.reset = true;\r\n }) ?? null;\r\n\r\n this._cdfGeneratedObserver =\r\n scene.iblCdfGenerator?.onGeneratedObservable.add(() => {\r\n this._lastImportedIcdfTexture = null;\r\n this._tryEnableShadowsTasks();\r\n }) ?? null;\r\n\r\n this._environmentTextureChangedObserver = scene.onEnvironmentTextureChangedObservable.add(() => {\r\n this._lastImportedEnvironmentTexture = null;\r\n this._dependenciesResolved = false;\r\n this._observeEnvironmentTexture();\r\n this._applyMaterialPluginParameters();\r\n this._tryEnableShadowsTasks();\r\n });\r\n\r\n this._observeEnvironmentTexture();\r\n\r\n if (scene.environmentTexture?.isReadyOrNotBlocking()) {\r\n this._tryEnableShadowsTasks();\r\n }\r\n\r\n this._blueNoiseLoadObserver = this._blueNoiseTexture.onLoadObservable.add(() => {\r\n this._tryEnableShadowsTasks();\r\n });\r\n\r\n this._beforeRenderDependencyObserver = scene.onBeforeRenderObservable.add(() => {\r\n this._tryEnableShadowsTasks();\r\n });\r\n\r\n this._beforeRenderOutputReadyObserver = scene.onBeforeRenderObservable.add(() => {\r\n this._notifyIfOutputTextureReady();\r\n });\r\n\r\n this._tryEnableShadowsTasks();\r\n\r\n this._texturesAllocatedObserver = this.onTexturesAllocatedObservable.add(() => {\r\n this._applyMaterialPluginParameters();\r\n this._notifyIfOutputTextureReady();\r\n });\r\n }\r\n}\r\n"]}
|
package/FrameGraph/frameGraph.js
CHANGED
|
@@ -77,7 +77,16 @@ export class FrameGraph {
|
|
|
77
77
|
this.pausedExecution = false;
|
|
78
78
|
this._scene = scene;
|
|
79
79
|
this._engine = scene.getEngine();
|
|
80
|
-
this._importPromise =
|
|
80
|
+
this._importPromise = (async () => {
|
|
81
|
+
if (this._engine.isWebGPU) {
|
|
82
|
+
const module = await import("../Engines/WebGPU/Extensions/engine.multiRender.pure.js");
|
|
83
|
+
module.RegisterEnginesWebGPUExtensionsEngineMultiRender();
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
const module = await import("../Engines/Extensions/engine.multiRender.pure.js");
|
|
87
|
+
module.RegisterEnginesExtensionsEngineMultiRender();
|
|
88
|
+
}
|
|
89
|
+
})();
|
|
81
90
|
this.textureManager = new FrameGraphTextureManager(this._engine, debugTextures, scene);
|
|
82
91
|
this._passContext = new FrameGraphContext(this._engine, this.textureManager, scene);
|
|
83
92
|
this._renderContext = new FrameGraphRenderContext(this._engine, this.textureManager, scene);
|