@onerjs/core 8.53.5 → 8.53.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Animations/animationGroup.d.ts +0 -1
- package/Animations/animationGroup.js +0 -1
- package/Animations/animationGroup.js.map +1 -1
- package/Animations/animationGroup.pure.js +2 -0
- package/Animations/animationGroup.pure.js.map +1 -1
- package/Animations/runtimeAnimation.js +11 -0
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Audio/audioSceneComponent.pure.js +1 -1
- package/AudioV2/abstractAudio/abstractSound.d.ts +2 -1
- package/AudioV2/abstractAudio/abstractSound.js +7 -2
- package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
- package/AudioV2/abstractAudio/abstractSoundInstance.d.ts +3 -1
- package/AudioV2/abstractAudio/abstractSoundInstance.js.map +1 -1
- package/AudioV2/abstractAudio/staticSound.d.ts +6 -0
- package/AudioV2/abstractAudio/staticSound.js +17 -1
- package/AudioV2/abstractAudio/staticSound.js.map +1 -1
- package/AudioV2/abstractAudio/staticSoundInstance.d.ts +4 -2
- package/AudioV2/abstractAudio/staticSoundInstance.js.map +1 -1
- package/AudioV2/abstractAudio/streamingSound.d.ts +6 -0
- package/AudioV2/abstractAudio/streamingSound.js +9 -1
- package/AudioV2/abstractAudio/streamingSound.js.map +1 -1
- package/AudioV2/webAudio/webAudioStaticSound.d.ts +7 -1
- package/AudioV2/webAudio/webAudioStaticSound.js +56 -8
- package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
- package/AudioV2/webAudio/webAudioStreamingSound.d.ts +3 -1
- package/AudioV2/webAudio/webAudioStreamingSound.js +16 -4
- package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +2 -2
- package/BakedVertexAnimation/bakedVertexAnimationManager.js +151 -121
- package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
- package/Behaviors/Cameras/interpolatingBehavior.d.ts +17 -2
- package/Behaviors/Cameras/interpolatingBehavior.js +53 -23
- package/Behaviors/Cameras/interpolatingBehavior.js.map +1 -1
- package/Bones/bone.pure.js +3 -3
- package/Buffers/buffer.pure.js +0 -12
- package/Buffers/buffer.pure.js.map +1 -1
- package/Cameras/Inputs/BaseCameraMouseWheelInput.js +141 -126
- package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/BaseCameraPointersInput.d.ts +2 -1
- package/Cameras/Inputs/BaseCameraPointersInput.js +290 -277
- package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraGamepadInput.js +115 -102
- package/Cameras/Inputs/arcRotateCameraGamepadInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.d.ts +3 -0
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +334 -273
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +273 -258
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraPointersInput.js +237 -213
- package/Cameras/Inputs/arcRotateCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/flyCameraKeyboardInput.js +199 -168
- package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
- package/Cameras/Inputs/flyCameraMouseInput.js +243 -229
- package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/followCameraKeyboardMoveInput.js +311 -266
- package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/followCameraMouseWheelInput.js +139 -119
- package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/followCameraPointersInput.js +239 -203
- package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraGamepadInput.js +127 -114
- package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +278 -244
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseInput.js +216 -202
- package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseWheelInput.js +368 -353
- package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraTouchInput.js +185 -172
- package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
- package/Cameras/Inputs/geospatialCameraKeyboardInput.d.ts +2 -0
- package/Cameras/Inputs/geospatialCameraKeyboardInput.js +291 -246
- package/Cameras/Inputs/geospatialCameraKeyboardInput.js.map +1 -1
- package/Cameras/Inputs/geospatialCameraPointersInput.d.ts +11 -1
- package/Cameras/Inputs/geospatialCameraPointersInput.js +18 -2
- package/Cameras/Inputs/geospatialCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/orbitCameraPointersInput.js +112 -96
- package/Cameras/Inputs/orbitCameraPointersInput.js.map +1 -1
- package/Cameras/VR/vrExperienceHelper.d.ts +0 -2
- package/Cameras/VR/vrExperienceHelper.js +0 -2
- package/Cameras/VR/vrExperienceHelper.js.map +1 -1
- package/Cameras/VR/vrExperienceHelper.pure.js +5 -0
- package/Cameras/VR/vrExperienceHelper.pure.js.map +1 -1
- package/Cameras/arcRotateCamera.pure.js +1559 -1479
- package/Cameras/arcRotateCamera.pure.js.map +1 -1
- package/Cameras/camera.pure.js +1225 -1178
- package/Cameras/camera.pure.js.map +1 -1
- package/Cameras/flyCamera.pure.js +369 -351
- package/Cameras/flyCamera.pure.js.map +1 -1
- package/Cameras/followCamera.pure.js +229 -192
- package/Cameras/followCamera.pure.js.map +1 -1
- package/Cameras/freeCamera.pure.js +373 -351
- package/Cameras/freeCamera.pure.js.map +1 -1
- package/Cameras/geospatialCamera.pure.d.ts +30 -7
- package/Cameras/geospatialCamera.pure.js +502 -457
- package/Cameras/geospatialCamera.pure.js.map +1 -1
- package/Cameras/geospatialCameraMovement.js +2 -2
- package/Cameras/geospatialCameraMovement.js.map +1 -1
- package/Cameras/targetCamera.pure.d.ts +7 -0
- package/Cameras/targetCamera.pure.js +550 -509
- package/Cameras/targetCamera.pure.js.map +1 -1
- package/Cameras/universalCamera.pure.js +98 -85
- package/Cameras/universalCamera.pure.js.map +1 -1
- package/Collisions/gpuPicker.d.ts +111 -4
- package/Collisions/gpuPicker.js +696 -119
- package/Collisions/gpuPicker.js.map +1 -1
- package/Compute/computeShader.pure.js +372 -355
- package/Compute/computeShader.pure.js.map +1 -1
- package/Culling/Helper/transformFeedbackBoundingHelper.pure.js +2 -2
- package/Decorators/nodeDecorator.d.ts +11 -1
- package/Decorators/nodeDecorator.js +43 -6
- package/Decorators/nodeDecorator.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js +8 -0
- package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js.map +1 -1
- package/Engines/Native/nativeHelpers.js +15 -0
- package/Engines/Native/nativeHelpers.js.map +1 -1
- package/Engines/Native/nativeInterfaces.d.ts +7 -2
- package/Engines/Native/nativeInterfaces.js.map +1 -1
- package/Engines/Native/nativeRenderTargetWrapper.d.ts +5 -0
- package/Engines/Native/nativeRenderTargetWrapper.js +35 -1
- package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
- package/Engines/Processors/shaderProcessor.js +5 -3
- package/Engines/Processors/shaderProcessor.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js +16 -3
- package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js.map +1 -1
- package/Engines/WebGPU/webgpuClearQuad.pure.js +7 -1
- package/Engines/WebGPU/webgpuClearQuad.pure.js.map +1 -1
- package/Engines/abstractEngine.functions.d.ts +8 -2
- package/Engines/abstractEngine.functions.js +12 -4
- package/Engines/abstractEngine.functions.js.map +1 -1
- package/Engines/abstractEngine.pure.d.ts +20 -1
- package/Engines/abstractEngine.pure.js +21 -134
- package/Engines/abstractEngine.pure.js.map +1 -1
- package/Engines/engine.d.ts +208 -0
- package/Engines/engine.pure.js +0 -15
- package/Engines/engine.pure.js.map +1 -1
- package/Engines/nullEngine.pure.d.ts +66 -0
- package/Engines/nullEngine.pure.js +97 -0
- package/Engines/nullEngine.pure.js.map +1 -1
- package/Engines/thinEngine.pure.d.ts +0 -13
- package/Engines/thinEngine.pure.js +4 -23
- package/Engines/thinEngine.pure.js.map +1 -1
- package/Engines/thinNativeEngine.d.ts +0 -1
- package/Engines/thinNativeEngine.js +0 -1
- package/Engines/thinNativeEngine.js.map +1 -1
- package/Engines/thinNativeEngine.pure.d.ts +27 -0
- package/Engines/thinNativeEngine.pure.js +383 -17
- package/Engines/thinNativeEngine.pure.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +1 -0
- package/Engines/webgpuEngine.js +1 -0
- package/Engines/webgpuEngine.js.map +1 -1
- package/Engines/webgpuEngine.pure.d.ts +9 -0
- package/Engines/webgpuEngine.pure.js +7 -0
- package/Engines/webgpuEngine.pure.js.map +1 -1
- package/FlowGraph/flowGraph.js +9 -0
- package/FlowGraph/flowGraph.js.map +1 -1
- package/FlowGraph/flowGraphContext.js +597 -584
- package/FlowGraph/flowGraphContext.js.map +1 -1
- package/FlowGraph/flowGraphDataConnection.pure.d.ts +14 -0
- package/FlowGraph/flowGraphDataConnection.pure.js +38 -1
- package/FlowGraph/flowGraphDataConnection.pure.js.map +1 -1
- package/FlowGraph/serialization.d.ts +11 -0
- package/FlowGraph/serialization.js +11 -1
- package/FlowGraph/serialization.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js +182 -170
- package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js +196 -184
- package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js +222 -210
- package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +123 -111
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js +158 -146
- package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js +63 -51
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js +122 -110
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js +76 -64
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js +89 -77
- package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js +134 -122
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js +58 -46
- package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js +107 -95
- package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js +181 -169
- package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js +63 -51
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js +63 -51
- package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js +76 -64
- package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js +246 -234
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js +108 -96
- package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js +87 -75
- package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js +76 -64
- package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js +313 -301
- package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js +502 -490
- package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js +147 -135
- package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js +90 -78
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js +179 -167
- package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +462 -451
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js +265 -253
- package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js +204 -192
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js +611 -550
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js +320 -308
- package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js +87 -75
- package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js +154 -142
- package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js +150 -138
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/inputBlock.pure.js +270 -256
- package/FrameGraph/Node/Blocks/inputBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js +95 -83
- package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js +715 -693
- package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraphBlock.js +548 -533
- package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.d.ts +2 -2
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js +43 -51
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.d.ts +0 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js +0 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.d.ts +0 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js +66 -35
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js.map +1 -1
- package/Helpers/environmentHelper.js +2 -2
- package/Helpers/environmentHelper.js.map +1 -1
- package/Layers/effectLayer.js +529 -519
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/glowLayer.pure.js +428 -413
- package/Layers/glowLayer.pure.js.map +1 -1
- package/Layers/highlightLayer.pure.js +473 -458
- package/Layers/highlightLayer.pure.js.map +1 -1
- package/Layers/selectionOutlineLayer.pure.js +360 -345
- package/Layers/selectionOutlineLayer.pure.js.map +1 -1
- package/Lights/Clustered/clusteredLightContainer.pure.d.ts +1 -1
- package/Lights/Clustered/clusteredLightContainer.pure.js +583 -558
- package/Lights/Clustered/clusteredLightContainer.pure.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.js +6 -1
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Lights/areaLight.pure.js +61 -39
- package/Lights/areaLight.pure.js.map +1 -1
- package/Lights/directionalLight.pure.js +308 -284
- package/Lights/directionalLight.pure.js.map +1 -1
- package/Lights/hemisphericLight.pure.js +123 -104
- package/Lights/hemisphericLight.pure.js.map +1 -1
- package/Lights/light.d.ts +5 -3
- package/Lights/light.js +869 -827
- package/Lights/light.js.map +1 -1
- package/Lights/pointLight.pure.js +185 -174
- package/Lights/pointLight.pure.js.map +1 -1
- package/Lights/rectAreaLight.pure.d.ts +17 -0
- package/Lights/rectAreaLight.pure.js +238 -159
- package/Lights/rectAreaLight.pure.js.map +1 -1
- package/Lights/shadowLight.js +280 -268
- package/Lights/shadowLight.js.map +1 -1
- package/Lights/spotLight.pure.js +460 -427
- package/Lights/spotLight.pure.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.pure.js +17 -5
- package/Loading/Plugins/babylonFileLoader.pure.js.map +1 -1
- package/Loading/sceneLoader.d.ts +5 -1
- package/Loading/sceneLoader.js +299 -402
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/Background/backgroundMaterial.pure.d.ts +18 -18
- package/Materials/Background/backgroundMaterial.pure.js +949 -794
- package/Materials/Background/backgroundMaterial.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.d.ts +15 -0
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +34 -1
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +9 -0
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +26 -2
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.d.ts +2 -1
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js +169 -149
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.pure.js +442 -429
- package/Materials/Node/Blocks/Dual/lightBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js +396 -383
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js +237 -220
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.pure.js +1 -1
- package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js +150 -133
- package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js +265 -250
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js +159 -142
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js +214 -201
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js +419 -400
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +3 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js +302 -289
- package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js +1327 -1272
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js +352 -337
- package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/refractionBlock.pure.js +297 -277
- package/Materials/Node/Blocks/PBR/refractionBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/sheenBlock.pure.js +146 -131
- package/Materials/Node/Blocks/PBR/sheenBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js +158 -145
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/clampBlock.pure.js +92 -77
- package/Materials/Node/Blocks/clampBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/cloudBlock.pure.js +145 -132
- package/Materials/Node/Blocks/cloudBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/conditionalBlock.pure.js +182 -169
- package/Materials/Node/Blocks/conditionalBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/curveBlock.pure.js +259 -246
- package/Materials/Node/Blocks/curveBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/debugBlock.pure.js +119 -106
- package/Materials/Node/Blocks/debugBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/loopBlock.pure.js +123 -110
- package/Materials/Node/Blocks/loopBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js +185 -172
- package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/remapBlock.pure.js +127 -112
- package/Materials/Node/Blocks/remapBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/transformBlock.pure.js +196 -185
- package/Materials/Node/Blocks/transformBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/triPlanarBlock.pure.js +451 -438
- package/Materials/Node/Blocks/triPlanarBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/trigonometryBlock.pure.js +184 -171
- package/Materials/Node/Blocks/trigonometryBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/waveBlock.pure.js +97 -84
- package/Materials/Node/Blocks/waveBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js +276 -263
- package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js.map +1 -1
- package/Materials/Node/nodeMaterial.pure.js +1765 -1737
- package/Materials/Node/nodeMaterial.pure.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.d.ts +3 -3
- package/Materials/PBR/openpbrMaterial.pure.d.ts +102 -102
- package/Materials/PBR/openpbrMaterial.pure.js +3115 -2243
- package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +3 -3
- package/Materials/PBR/pbrAnisotropicConfiguration.js +255 -227
- package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBRDFConfiguration.d.ts +9 -9
- package/Materials/PBR/pbrBRDFConfiguration.js +203 -155
- package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.pure.d.ts +1 -1
- package/Materials/PBR/pbrBaseMaterial.pure.js +1751 -1736
- package/Materials/PBR/pbrBaseMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +13 -13
- package/Materials/PBR/pbrBaseSimpleMaterial.js +205 -117
- package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
- package/Materials/PBR/pbrClearCoatConfiguration.d.ts +9 -9
- package/Materials/PBR/pbrClearCoatConfiguration.js +464 -406
- package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
- package/Materials/PBR/pbrIridescenceConfiguration.d.ts +3 -3
- package/Materials/PBR/pbrIridescenceConfiguration.js +271 -239
- package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
- package/Materials/PBR/pbrMaterial.pure.d.ts +66 -66
- package/Materials/PBR/pbrMaterial.pure.js +1041 -685
- package/Materials/PBR/pbrMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.d.ts +5 -5
- package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js +176 -115
- package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrSheenConfiguration.d.ts +7 -7
- package/Materials/PBR/pbrSheenConfiguration.js +314 -270
- package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.d.ts +5 -5
- package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js +172 -117
- package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +16 -16
- package/Materials/PBR/pbrSubSurfaceConfiguration.js +864 -764
- package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
- package/Materials/Textures/HTML/htmlInCanvasPolyfill.d.ts +43 -0
- package/Materials/Textures/HTML/htmlInCanvasPolyfill.js +64 -0
- package/Materials/Textures/HTML/htmlInCanvasPolyfill.js.map +1 -0
- package/Materials/Textures/HTML/htmlInteractionManager.d.ts +69 -0
- package/Materials/Textures/HTML/htmlInteractionManager.js +130 -0
- package/Materials/Textures/HTML/htmlInteractionManager.js.map +1 -0
- package/Materials/Textures/HTML/htmlRaycastInteractionManager.d.ts +84 -0
- package/Materials/Textures/HTML/htmlRaycastInteractionManager.js +246 -0
- package/Materials/Textures/HTML/htmlRaycastInteractionManager.js.map +1 -0
- package/Materials/Textures/HTML/htmlTexture.d.ts +148 -0
- package/Materials/Textures/HTML/htmlTexture.js +455 -0
- package/Materials/Textures/HTML/htmlTexture.js.map +1 -0
- package/Materials/Textures/HTML/index.d.ts +4 -0
- package/Materials/Textures/HTML/index.js +5 -0
- package/Materials/Textures/HTML/index.js.map +1 -0
- package/Materials/Textures/HTML/pure.d.ts +5 -0
- package/Materials/Textures/HTML/pure.js +6 -0
- package/Materials/Textures/HTML/pure.js.map +1 -0
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js +671 -643
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
- package/Materials/Textures/baseTexture.pure.js +880 -825
- package/Materials/Textures/baseTexture.pure.js.map +1 -1
- package/Materials/Textures/cubeTexture.d.ts +0 -1
- package/Materials/Textures/cubeTexture.js +0 -1
- package/Materials/Textures/cubeTexture.js.map +1 -1
- package/Materials/Textures/cubeTexture.pure.js +368 -333
- package/Materials/Textures/cubeTexture.pure.js.map +1 -1
- package/Materials/Textures/dynamicTexture.d.ts +0 -1
- package/Materials/Textures/dynamicTexture.js +0 -1
- package/Materials/Textures/dynamicTexture.js.map +1 -1
- package/Materials/Textures/dynamicTexture.pure.js +2 -0
- package/Materials/Textures/dynamicTexture.pure.js.map +1 -1
- package/Materials/Textures/htmlElementTexture.d.ts +0 -2
- package/Materials/Textures/htmlElementTexture.js +0 -2
- package/Materials/Textures/htmlElementTexture.js.map +1 -1
- package/Materials/Textures/htmlElementTexture.pure.js +4 -0
- package/Materials/Textures/htmlElementTexture.pure.js.map +1 -1
- package/Materials/Textures/index.d.ts +1 -0
- package/Materials/Textures/index.js +1 -1
- package/Materials/Textures/index.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.d.ts +0 -1
- package/Materials/Textures/multiRenderTarget.js +0 -1
- package/Materials/Textures/multiRenderTarget.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.pure.js +2 -0
- package/Materials/Textures/multiRenderTarget.pure.js.map +1 -1
- package/Materials/Textures/pure.d.ts +1 -0
- package/Materials/Textures/pure.js +1 -0
- package/Materials/Textures/pure.js.map +1 -1
- package/Materials/Textures/texture.pure.js +961 -923
- package/Materials/Textures/texture.pure.js.map +1 -1
- package/Materials/Textures/videoTexture.pure.d.ts +3 -0
- package/Materials/Textures/videoTexture.pure.js +450 -401
- package/Materials/Textures/videoTexture.pure.js.map +1 -1
- package/Materials/colorCurves.pure.js +510 -477
- package/Materials/colorCurves.pure.js.map +1 -1
- package/Materials/effect.pure.js +0 -7
- package/Materials/effect.pure.js.map +1 -1
- package/Materials/imageProcessing.js +12 -4
- package/Materials/imageProcessing.js.map +1 -1
- package/Materials/imageProcessingConfiguration.pure.js +647 -587
- package/Materials/imageProcessingConfiguration.pure.js.map +1 -1
- package/Materials/material.decalMapConfiguration.pure.d.ts +2 -2
- package/Materials/material.decalMapConfiguration.pure.js +149 -130
- package/Materials/material.decalMapConfiguration.pure.js.map +1 -1
- package/Materials/material.detailMapConfiguration.d.ts +3 -3
- package/Materials/material.detailMapConfiguration.js +213 -175
- package/Materials/material.detailMapConfiguration.js.map +1 -1
- package/Materials/material.pure.js +1815 -1721
- package/Materials/material.pure.js.map +1 -1
- package/Materials/materialPluginBase.pure.js +270 -249
- package/Materials/materialPluginBase.pure.js.map +1 -1
- package/Materials/materialPluginManager.pure.js +18 -8
- package/Materials/materialPluginManager.pure.js.map +1 -1
- package/Materials/materialStencilState.js +211 -200
- package/Materials/materialStencilState.js.map +1 -1
- package/Materials/meshDebugPluginMaterial.pure.d.ts +2 -2
- package/Materials/meshDebugPluginMaterial.pure.js +397 -275
- package/Materials/meshDebugPluginMaterial.pure.js.map +1 -1
- package/Materials/standardMaterial.pure.d.ts +32 -32
- package/Materials/standardMaterial.pure.js +1804 -1394
- package/Materials/standardMaterial.pure.js.map +1 -1
- package/Maths/math.color.pure.js +5 -5
- package/Maths/math.functions.js +38 -30
- package/Maths/math.functions.js.map +1 -1
- package/Maths/math.vector.pure.js +25 -25
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +18 -8
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +86 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +255 -104
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.d.ts +39 -0
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js +322 -0
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js.map +1 -0
- package/Meshes/GreasedLine/greasedLineMesh.pure.js +4 -4
- package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js +3 -3
- package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js +107 -94
- package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js +276 -263
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js +247 -232
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js +299 -284
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js +196 -181
- package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/latticeBlock.pure.js +198 -179
- package/Meshes/Node/Blocks/Set/latticeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js +151 -138
- package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js +107 -94
- package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js +138 -125
- package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js +213 -200
- package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js +138 -125
- package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js +179 -164
- package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/boxBlock.pure.js +183 -170
- package/Meshes/Node/Blocks/Sources/boxBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js +125 -112
- package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js +153 -140
- package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/discBlock.pure.js +112 -99
- package/Meshes/Node/Blocks/Sources/discBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/gridBlock.pure.js +133 -120
- package/Meshes/Node/Blocks/Sources/gridBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js +128 -115
- package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/meshBlock.pure.js +116 -103
- package/Meshes/Node/Blocks/Sources/meshBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/planeBlock.pure.js +160 -147
- package/Meshes/Node/Blocks/Sources/planeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js +144 -131
- package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/torusBlock.pure.js +112 -99
- package/Meshes/Node/Blocks/Sources/torusBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js +200 -185
- package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/bevelBlock.pure.js +111 -98
- package/Meshes/Node/Blocks/bevelBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js +182 -165
- package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js +89 -76
- package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/conditionBlock.pure.js +184 -169
- package/Meshes/Node/Blocks/conditionBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js +270 -255
- package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js +172 -159
- package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryCurveBlock.pure.js +230 -217
- package/Meshes/Node/Blocks/geometryCurveBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryEaseBlock.pure.js +256 -245
- package/Meshes/Node/Blocks/geometryEaseBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js +206 -189
- package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryTransformBlock.pure.js +166 -153
- package/Meshes/Node/Blocks/geometryTransformBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js +221 -208
- package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/mappingBlock.pure.js +150 -137
- package/Meshes/Node/Blocks/mappingBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/mathBlock.pure.js +269 -256
- package/Meshes/Node/Blocks/mathBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js +141 -128
- package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/randomBlock.pure.js +161 -148
- package/Meshes/Node/Blocks/randomBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/subdivideBlock.pure.js +102 -87
- package/Meshes/Node/Blocks/subdivideBlock.pure.js.map +1 -1
- package/Meshes/Node/nodeGeometry.js +560 -538
- package/Meshes/Node/nodeGeometry.js.map +1 -1
- package/Meshes/Node/nodeGeometryBlock.js +473 -458
- package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
- package/Meshes/abstractMesh.pure.js +2218 -2207
- package/Meshes/abstractMesh.pure.js.map +1 -1
- package/Meshes/geometry.js +30 -15
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/mesh.pure.js +26 -14
- package/Meshes/mesh.pure.js.map +1 -1
- package/Meshes/mesh.vertexData.js +1665 -1655
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Meshes/transformNode.pure.js +1400 -1372
- package/Meshes/transformNode.pure.js.map +1 -1
- package/Misc/decorators.d.ts +34 -19
- package/Misc/decorators.functions.d.ts +33 -2
- package/Misc/decorators.functions.js +114 -35
- package/Misc/decorators.functions.js.map +1 -1
- package/Misc/decorators.js +96 -68
- package/Misc/decorators.js.map +1 -1
- package/Misc/decorators.serialization.js +47 -40
- package/Misc/decorators.serialization.js.map +1 -1
- package/Misc/decorators.serializationUtilities.d.ts +24 -0
- package/Misc/decorators.serializationUtilities.js +20 -0
- package/Misc/decorators.serializationUtilities.js.map +1 -0
- package/Misc/dumpTools.pure.js +43 -33
- package/Misc/dumpTools.pure.js.map +1 -1
- package/Misc/fileTools.pure.js +8 -0
- package/Misc/fileTools.pure.js.map +1 -1
- package/Misc/observable.pure.js +0 -7
- package/Misc/observable.pure.js.map +1 -1
- package/Misc/snapshotRenderingHelper.d.ts +4 -1
- package/Misc/snapshotRenderingHelper.js.map +1 -1
- package/Misc/symbolMetadataPolyfill.d.ts +11 -0
- package/Misc/symbolMetadataPolyfill.js +22 -0
- package/Misc/symbolMetadataPolyfill.js.map +1 -0
- package/Misc/tools.pure.js +2 -2
- package/Misc/tools.pure.js.map +1 -1
- package/Morph/morphTarget.js +382 -365
- package/Morph/morphTarget.js.map +1 -1
- package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js +160 -145
- package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js +187 -174
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js +238 -219
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js +140 -115
- package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js +157 -144
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js +133 -119
- package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js +93 -80
- package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleDebugBlock.pure.js +117 -105
- package/Particles/Node/Blocks/particleDebugBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js +105 -92
- package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleGradientValueBlock.pure.js +82 -69
- package/Particles/Node/Blocks/particleGradientValueBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js +113 -101
- package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleMathBlock.pure.js +278 -265
- package/Particles/Node/Blocks/particleMathBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleNumberMathBlock.pure.js +155 -142
- package/Particles/Node/Blocks/particleNumberMathBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleRandomBlock.pure.js +156 -143
- package/Particles/Node/Blocks/particleRandomBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js +217 -204
- package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleVectorMathBlock.pure.js +106 -93
- package/Particles/Node/Blocks/particleVectorMathBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/systemBlock.pure.js +366 -330
- package/Particles/Node/Blocks/systemBlock.pure.js.map +1 -1
- package/Particles/Node/nodeParticleBlock.js +339 -324
- package/Particles/Node/nodeParticleBlock.js.map +1 -1
- package/Particles/Node/nodeParticleSystemSet.js +494 -473
- package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
- package/Particles/gpuParticleSystem.d.ts +0 -1
- package/Particles/gpuParticleSystem.js +0 -1
- package/Particles/gpuParticleSystem.js.map +1 -1
- package/Particles/gpuParticleSystem.pure.d.ts +4 -3
- package/Particles/gpuParticleSystem.pure.js +27 -16
- package/Particles/gpuParticleSystem.pure.js.map +1 -1
- package/Particles/particleSystem.pure.js +57 -2
- package/Particles/particleSystem.pure.js.map +1 -1
- package/Particles/thinParticleSystem.d.ts +0 -1
- package/Particles/thinParticleSystem.js +0 -1
- package/Particles/thinParticleSystem.js.map +1 -1
- package/Particles/thinParticleSystem.pure.js +2 -0
- package/Particles/thinParticleSystem.pure.js.map +1 -1
- package/Particles/webgl2ParticleSystem.pure.js +2 -0
- package/Particles/webgl2ParticleSystem.pure.js.map +1 -1
- package/Physics/v1/physicsImpostor.pure.js +4 -4
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js +675 -656
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.d.ts +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js +521 -486
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.d.ts +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js +241 -220
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js +852 -835
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js +1135 -1073
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js +319 -303
- package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +212 -199
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
- package/PostProcesses/blackAndWhitePostProcess.pure.js +67 -55
- package/PostProcesses/blackAndWhitePostProcess.pure.js.map +1 -1
- package/PostProcesses/bloomMergePostProcess.pure.js +74 -62
- package/PostProcesses/bloomMergePostProcess.pure.js.map +1 -1
- package/PostProcesses/blurPostProcess.pure.js +127 -115
- package/PostProcesses/blurPostProcess.pure.js.map +1 -1
- package/PostProcesses/chromaticAberrationPostProcess.pure.js +130 -118
- package/PostProcesses/chromaticAberrationPostProcess.pure.js.map +1 -1
- package/PostProcesses/circleOfConfusionPostProcess.pure.js +115 -104
- package/PostProcesses/circleOfConfusionPostProcess.pure.js.map +1 -1
- package/PostProcesses/colorCorrectionPostProcess.pure.js +55 -43
- package/PostProcesses/colorCorrectionPostProcess.pure.js.map +1 -1
- package/PostProcesses/convolutionPostProcess.pure.js +96 -84
- package/PostProcesses/convolutionPostProcess.pure.js.map +1 -1
- package/PostProcesses/extractHighlightsPostProcess.pure.js +68 -57
- package/PostProcesses/extractHighlightsPostProcess.pure.js.map +1 -1
- package/PostProcesses/filterPostProcess.pure.js +66 -54
- package/PostProcesses/filterPostProcess.pure.js.map +1 -1
- package/PostProcesses/fxaaPostProcess.pure.js.map +1 -1
- package/PostProcesses/grainPostProcess.pure.js +82 -70
- package/PostProcesses/grainPostProcess.pure.js.map +1 -1
- package/PostProcesses/imageProcessingPostProcess.js +334 -322
- package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/motionBlurPostProcess.pure.js +246 -235
- package/PostProcesses/motionBlurPostProcess.pure.js.map +1 -1
- package/PostProcesses/passPostProcess.pure.js +75 -63
- package/PostProcesses/passPostProcess.pure.js.map +1 -1
- package/PostProcesses/postProcess.pure.js +899 -835
- package/PostProcesses/postProcess.pure.js.map +1 -1
- package/PostProcesses/refractionPostProcess.pure.js +114 -87
- package/PostProcesses/refractionPostProcess.pure.js.map +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js +108 -96
- package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js.map +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.pure.js +241 -220
- package/PostProcesses/screenSpaceReflectionPostProcess.pure.js.map +1 -1
- package/PostProcesses/sharpenPostProcess.pure.js +86 -74
- package/PostProcesses/sharpenPostProcess.pure.js.map +1 -1
- package/PostProcesses/tonemapPostProcess.pure.js +82 -70
- package/PostProcesses/tonemapPostProcess.pure.js.map +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.pure.js +500 -465
- package/PostProcesses/volumetricLightScatteringPostProcess.pure.js.map +1 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.d.ts +0 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.js +0 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.js.map +1 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js +2 -0
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js.map +1 -1
- package/Probes/reflectionProbe.pure.js +238 -224
- package/Probes/reflectionProbe.pure.js.map +1 -1
- package/Rendering/GlobalIllumination/giRSMManager.pure.d.ts +1 -1
- package/Rendering/GlobalIllumination/giRSMManager.pure.js +138 -105
- package/Rendering/GlobalIllumination/giRSMManager.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.d.ts +1 -1
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js +155 -138
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.d.ts +0 -2
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +0 -2
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +5 -0
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.d.ts +0 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +0 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.d.ts +1 -0
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +34 -0
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
- package/Rendering/edgesRenderer.pure.js.map +1 -1
- package/Rendering/prePassRenderer.d.ts +0 -2
- package/Rendering/prePassRenderer.js +0 -2
- package/Rendering/prePassRenderer.js.map +1 -1
- package/Rendering/prePassRenderer.pure.js +2 -0
- package/Rendering/prePassRenderer.pure.js.map +1 -1
- package/Rendering/reflectiveShadowMap.pure.d.ts +1 -1
- package/Rendering/reflectiveShadowMap.pure.js +151 -130
- package/Rendering/reflectiveShadowMap.pure.js.map +1 -1
- package/Rendering/thinDepthPeelingRenderer.d.ts +0 -1
- package/Rendering/thinDepthPeelingRenderer.js +0 -1
- package/Rendering/thinDepthPeelingRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/gaussianSplatting.js +1 -0
- package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +35 -5
- package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
- package/Shaders/gaussianSplatting.fragment.js +17 -1
- package/Shaders/gaussianSplatting.fragment.js.map +1 -1
- package/Shaders/gaussianSplatting.vertex.js +1 -1
- package/Shaders/gaussianSplatting.vertex.js.map +1 -1
- package/Shaders/gaussianSplattingDepth.vertex.js +1 -1
- package/Shaders/gaussianSplattingDepth.vertex.js.map +1 -1
- package/Shaders/picking.fragment.js +39 -3
- package/Shaders/picking.fragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +3 -1
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/helperFunctions.js +2 -2
- package/ShadersWGSL/ShadersInclude/helperFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +39 -7
- package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js +4 -3
- package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.fragment.js +14 -1
- package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.vertex.js +2 -2
- package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
- package/ShadersWGSL/gaussianSplattingDepth.vertex.js +2 -2
- package/ShadersWGSL/gaussianSplattingDepth.vertex.js.map +1 -1
- package/ShadersWGSL/lightingVolume.compute.js +2 -2
- package/ShadersWGSL/lightingVolume.compute.js.map +1 -1
- package/ShadersWGSL/picking.fragment.js +22 -1
- package/ShadersWGSL/picking.fragment.js.map +1 -1
- package/XR/features/Layers/WebXRCompositionLayer.d.ts +3 -2
- package/XR/features/Layers/WebXRCompositionLayer.js +2 -2
- package/XR/features/Layers/WebXRCompositionLayer.js.map +1 -1
- package/XR/features/Layers/WebXRWebGPUCompositionLayer.d.ts +59 -0
- package/XR/features/Layers/WebXRWebGPUCompositionLayer.js +120 -0
- package/XR/features/Layers/WebXRWebGPUCompositionLayer.js.map +1 -0
- package/XR/features/Layers/WebXRWebGPUProjectionLayer.d.ts +25 -0
- package/XR/features/Layers/WebXRWebGPUProjectionLayer.js +69 -0
- package/XR/features/Layers/WebXRWebGPUProjectionLayer.js.map +1 -0
- package/XR/features/WebXRLayers.pure.d.ts +8 -0
- package/XR/features/WebXRLayers.pure.js +43 -6
- package/XR/features/WebXRLayers.pure.js.map +1 -1
- package/XR/native/nativeXRRenderTarget.d.ts +2 -2
- package/XR/native/nativeXRRenderTarget.js +2 -2
- package/XR/native/nativeXRRenderTarget.js.map +1 -1
- package/XR/webXRExperienceHelper.js +10 -1
- package/XR/webXRExperienceHelper.js.map +1 -1
- package/XR/webXRGraphicsBinding.d.ts +90 -0
- package/XR/webXRGraphicsBinding.js +85 -0
- package/XR/webXRGraphicsBinding.js.map +1 -0
- package/XR/webXRLayerRenderTargetTexture.d.ts +24 -0
- package/XR/webXRLayerRenderTargetTexture.js +30 -0
- package/XR/webXRLayerRenderTargetTexture.js.map +1 -0
- package/XR/webXRManagedOutputCanvas.d.ts +14 -0
- package/XR/webXRManagedOutputCanvas.js +24 -5
- package/XR/webXRManagedOutputCanvas.js.map +1 -1
- package/XR/webXRRenderTargetTextureProvider.d.ts +25 -4
- package/XR/webXRRenderTargetTextureProvider.js +33 -35
- package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
- package/XR/webXRSessionManager.d.ts +11 -0
- package/XR/webXRSessionManager.js +37 -0
- package/XR/webXRSessionManager.js.map +1 -1
- package/XR/webXRTypes.d.ts +9 -6
- package/XR/webXRTypes.js.map +1 -1
- package/XR/webXRWebGLLayer.d.ts +2 -2
- package/XR/webXRWebGLLayer.js +2 -2
- package/XR/webXRWebGLLayer.js.map +1 -1
- package/XR/webXRWebGLRenderTargetTextureProvider.d.ts +12 -0
- package/XR/webXRWebGLRenderTargetTextureProvider.js +58 -0
- package/XR/webXRWebGLRenderTargetTextureProvider.js.map +1 -0
- package/XR/webXRWebGPURenderTargetTextureProvider.d.ts +69 -0
- package/XR/webXRWebGPURenderTargetTextureProvider.js +148 -0
- package/XR/webXRWebGPURenderTargetTextureProvider.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/node.js +878 -845
- package/node.js.map +1 -1
- package/package.json +8 -14
- package/scene.pure.d.ts +12 -0
- package/scene.pure.js +36 -0
- package/scene.pure.js.map +1 -1
- package/tslib.es6.js +304 -150
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pbrSubSurfaceConfiguration.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/PBR/pbrSubSurfaceConfiguration.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { type Nullable } from \"../../types\";\r\nimport { type IAnimatable } from \"../../Animations/animatable.interface\";\r\nimport { serialize, serializeAsTexture, expandToProperty, serializeAsColor3 } from \"../../Misc/decorators\";\r\nimport { Color3 } from \"../../Maths/math.color.pure\";\r\nimport { type SmartArray } from \"../../Misc/smartArray\";\r\nimport { type BaseTexture } from \"../../Materials/Textures/baseTexture\";\r\nimport { type RenderTargetTexture } from \"../../Materials/Textures/renderTargetTexture\";\r\nimport { MaterialFlags } from \"../materialFlags\";\r\nimport { type UniformBuffer } from \"../../Materials/uniformBuffer\";\r\nimport { type EffectFallbacks } from \"../effectFallbacks\";\r\nimport { type CubeTexture } from \"../Textures/cubeTexture\";\r\nimport { TmpVectors } from \"../../Maths/math.vector.pure\";\r\nimport { type SubMesh } from \"../../Meshes/subMesh\";\r\nimport { MaterialPluginBase } from \"../materialPluginBase.pure\";\r\nimport { Constants } from \"../../Engines/constants\";\r\nimport { MaterialDefines } from \"../materialDefines\";\r\n\r\nimport { type Engine } from \"../../Engines/engine\";\r\nimport { type Scene } from \"../../scene\";\r\nimport { type PBRBaseMaterial } from \"./pbrBaseMaterial\";\r\nimport { BindTextureMatrix, PrepareDefinesForMergedUV } from \"../materialHelper.functions\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class MaterialSubSurfaceDefines extends MaterialDefines {\r\n public SUBSURFACE = false;\r\n\r\n public SS_REFRACTION = false;\r\n public SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS = false;\r\n public SS_TRANSLUCENCY = false;\r\n public SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS = false;\r\n public SS_SCATTERING = false;\r\n public SS_DISPERSION = false;\r\n\r\n public SS_THICKNESSANDMASK_TEXTURE = false;\r\n public SS_THICKNESSANDMASK_TEXTUREDIRECTUV = 0;\r\n public SS_HAS_THICKNESS = false;\r\n public SS_REFRACTIONINTENSITY_TEXTURE = false;\r\n public SS_REFRACTIONINTENSITY_TEXTUREDIRECTUV = 0;\r\n public SS_TRANSLUCENCYINTENSITY_TEXTURE = false;\r\n public SS_TRANSLUCENCYINTENSITY_TEXTUREDIRECTUV = 0;\r\n public SS_TRANSLUCENCYCOLOR_TEXTURE = false;\r\n public SS_TRANSLUCENCYCOLOR_TEXTUREDIRECTUV = 0;\r\n public SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA = false;\r\n\r\n public SS_REFRACTIONMAP_3D = false;\r\n public SS_REFRACTIONMAP_OPPOSITEZ = false;\r\n public SS_LODINREFRACTIONALPHA = false;\r\n public SS_GAMMAREFRACTION = false;\r\n public SS_RGBDREFRACTION = false;\r\n public SS_LINEARSPECULARREFRACTION = false;\r\n public SS_LINKREFRACTIONTOTRANSPARENCY = false;\r\n public SS_ALBEDOFORREFRACTIONTINT = false;\r\n public SS_ALBEDOFORTRANSLUCENCYTINT = false;\r\n public SS_USE_LOCAL_REFRACTIONMAP_CUBIC = false;\r\n public SS_USE_THICKNESS_AS_DEPTH = false;\r\n\r\n public SS_USE_GLTF_TEXTURES = false;\r\n public SS_APPLY_ALBEDO_AFTER_SUBSURFACE = false;\r\n public SS_TRANSLUCENCY_LEGACY = false;\r\n}\r\n\r\n/**\r\n * Plugin that implements the sub surface component of the PBR material\r\n */\r\nexport class PBRSubSurfaceConfiguration extends MaterialPluginBase {\r\n /**\r\n * Default value used for applyAlbedoAfterSubSurface.\r\n *\r\n * This property only exists for backward compatibility reasons.\r\n * Set it to true if your rendering in 8.0+ is different from that in 7 when you use sub-surface properties (transmission, refraction, etc.). Default is false.\r\n * Note however that the PBR calculation is wrong when this property is set to true, so only use it if you want to mimic the 7.0 behavior.\r\n */\r\n public static DEFAULT_APPLY_ALBEDO_AFTERSUBSURFACE = false;\r\n\r\n /**\r\n * Default value used for legacyTranslucency.\r\n *\r\n * This property only exists for backward compatibility reasons.\r\n * Set it to true if your rendering in 8.0+ is different from that in 7 when you use sub-surface translucency. Default is false.\r\n */\r\n public static DEFAULT_LEGACY_TRANSLUCENCY = false;\r\n\r\n protected override _material: PBRBaseMaterial;\r\n\r\n private _isRefractionEnabled = false;\r\n /**\r\n * Defines if the refraction is enabled in the material.\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public isRefractionEnabled = false;\r\n\r\n private _isTranslucencyEnabled = false;\r\n /**\r\n * Defines if the translucency is enabled in the material.\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public isTranslucencyEnabled = false;\r\n\r\n private _isDispersionEnabled = false;\r\n /**\r\n * Defines if dispersion is enabled in the material.\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public isDispersionEnabled = false;\r\n\r\n private _isScatteringEnabled = false;\r\n /**\r\n * Defines if the sub surface scattering is enabled in the material.\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markScenePrePassDirty\")\r\n public isScatteringEnabled = false;\r\n\r\n @serialize()\r\n private _scatteringDiffusionProfileIndex = 0;\r\n\r\n /**\r\n * Diffusion profile for subsurface scattering.\r\n * Useful for better scattering in the skins or foliages.\r\n */\r\n public get scatteringDiffusionProfile(): Nullable<Color3> {\r\n if (!this._scene.subSurfaceConfiguration) {\r\n return null;\r\n }\r\n\r\n return this._scene.subSurfaceConfiguration.ssDiffusionProfileColors[this._scatteringDiffusionProfileIndex];\r\n }\r\n\r\n public set scatteringDiffusionProfile(c: Nullable<Color3>) {\r\n if (!this._scene.enableSubSurfaceForPrePass()) {\r\n // Not supported\r\n return;\r\n }\r\n\r\n // addDiffusionProfile automatically checks for doubles\r\n if (c) {\r\n this._scatteringDiffusionProfileIndex = this._scene.subSurfaceConfiguration!.addDiffusionProfile(c);\r\n }\r\n }\r\n\r\n /**\r\n * Defines the refraction intensity of the material.\r\n * The refraction when enabled replaces the Diffuse part of the material.\r\n * The intensity helps transitioning between diffuse and refraction.\r\n */\r\n @serialize()\r\n public refractionIntensity: number = 1;\r\n\r\n /**\r\n * Defines the translucency intensity of the material.\r\n * When translucency has been enabled, this defines how much of the \"translucency\"\r\n * is added to the diffuse part of the material.\r\n */\r\n @serialize()\r\n public translucencyIntensity: number = 1;\r\n\r\n private _useAlbedoToTintRefraction = false;\r\n /**\r\n * When enabled, transparent surfaces will be tinted with the albedo colour (independent of thickness)\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public useAlbedoToTintRefraction: boolean = false;\r\n\r\n private _useAlbedoToTintTranslucency = false;\r\n /**\r\n * When enabled, translucent surfaces will be tinted with the albedo colour (independent of thickness)\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public useAlbedoToTintTranslucency: boolean = false;\r\n\r\n private _thicknessTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Stores the average thickness of a mesh in a texture (The texture is holding the values linearly).\r\n * The red (or green if useGltfStyleTextures=true) channel of the texture should contain the thickness remapped between 0 and 1.\r\n * 0 would mean minimumThickness\r\n * 1 would mean maximumThickness\r\n * The other channels might be use as a mask to vary the different effects intensity.\r\n */\r\n @serializeAsTexture()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public thicknessTexture: Nullable<BaseTexture> = null;\r\n\r\n private _refractionTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Defines the texture to use for refraction.\r\n */\r\n @serializeAsTexture()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public refractionTexture: Nullable<BaseTexture> = null;\r\n\r\n /** @internal */\r\n public _indexOfRefraction = 1.5;\r\n /**\r\n * Index of refraction of the material base layer.\r\n * https://en.wikipedia.org/wiki/List_of_refractive_indices\r\n *\r\n * This does not only impact refraction but also the Base F0 of Dielectric Materials.\r\n *\r\n * From dielectric fresnel rules: F0 = square((iorT - iorI) / (iorT + iorI))\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public indexOfRefraction = 1.5;\r\n\r\n @serialize()\r\n private _volumeIndexOfRefraction = -1.0;\r\n\r\n /**\r\n * Index of refraction of the material's volume.\r\n * https://en.wikipedia.org/wiki/List_of_refractive_indices\r\n *\r\n * This ONLY impacts refraction. If not provided or given a non-valid value,\r\n * the volume will use the same IOR as the surface.\r\n */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public get volumeIndexOfRefraction(): number {\r\n if (this._volumeIndexOfRefraction >= 1.0) {\r\n return this._volumeIndexOfRefraction;\r\n }\r\n return this._indexOfRefraction;\r\n }\r\n public set volumeIndexOfRefraction(value: number) {\r\n if (value >= 1.0) {\r\n this._volumeIndexOfRefraction = value;\r\n } else {\r\n this._volumeIndexOfRefraction = -1.0;\r\n }\r\n }\r\n\r\n private _invertRefractionY = false;\r\n /**\r\n * Controls if refraction needs to be inverted on Y. This could be useful for procedural texture.\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public invertRefractionY = false;\r\n\r\n /** @internal */\r\n public _linkRefractionWithTransparency = false;\r\n /**\r\n * This parameters will make the material used its opacity to control how much it is refracting against not.\r\n * Materials half opaque for instance using refraction could benefit from this control.\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public linkRefractionWithTransparency = false;\r\n\r\n /**\r\n * Defines the minimum thickness stored in the thickness map.\r\n * If no thickness map is defined, this value will be used to simulate thickness.\r\n */\r\n @serialize()\r\n public minimumThickness: number = 0;\r\n\r\n /**\r\n * Defines the maximum thickness stored in the thickness map.\r\n */\r\n @serialize()\r\n public maximumThickness: number = 1;\r\n\r\n /**\r\n * Defines that the thickness should be used as a measure of the depth volume.\r\n */\r\n @serialize()\r\n public useThicknessAsDepth = false;\r\n\r\n /**\r\n * Defines the volume tint of the material.\r\n * This is used for both translucency and scattering.\r\n */\r\n @serializeAsColor3()\r\n public tintColor = Color3.White();\r\n\r\n /**\r\n * Defines the distance at which the tint color should be found in the media.\r\n * This is used for refraction only.\r\n */\r\n @serialize()\r\n public tintColorAtDistance = 1;\r\n\r\n /**\r\n * Defines the Abbe number for the volume.\r\n */\r\n @serialize()\r\n public dispersion = 0;\r\n\r\n /**\r\n * Defines how far each channel transmit through the media.\r\n * It is defined as a color to simplify it selection.\r\n */\r\n @serializeAsColor3()\r\n public diffusionDistance = Color3.White();\r\n\r\n private _useMaskFromThicknessTexture = false;\r\n /**\r\n * Stores the intensity of the different subsurface effects in the thickness texture.\r\n * Note that if refractionIntensityTexture and/or translucencyIntensityTexture is provided it takes precedence over thicknessTexture + useMaskFromThicknessTexture\r\n * * the green (red if useGltfStyleTextures = true) channel is the refraction intensity.\r\n * * the blue (alpha if useGltfStyleTextures = true) channel is the translucency intensity.\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public useMaskFromThicknessTexture: boolean = false;\r\n\r\n private _refractionIntensityTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Stores the intensity of the refraction. If provided, it takes precedence over thicknessTexture + useMaskFromThicknessTexture\r\n * * the green (red if useGltfStyleTextures = true) channel is the refraction intensity.\r\n */\r\n @serializeAsTexture()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public refractionIntensityTexture: Nullable<BaseTexture> = null;\r\n\r\n private _translucencyIntensityTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Stores the intensity of the translucency. If provided, it takes precedence over thicknessTexture + useMaskFromThicknessTexture\r\n * * the blue (alpha if useGltfStyleTextures = true) channel is the translucency intensity.\r\n */\r\n @serializeAsTexture()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public translucencyIntensityTexture: Nullable<BaseTexture> = null;\r\n\r\n /**\r\n * Defines the translucency tint of the material.\r\n * If not set, the tint color will be used instead.\r\n */\r\n @serializeAsColor3()\r\n public translucencyColor: Nullable<Color3> = null;\r\n\r\n private _translucencyColorTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Defines the translucency tint color of the material as a texture.\r\n * This is multiplied against the translucency color to add variety and realism to the material.\r\n * If translucencyColor is not set, the tint color will be used instead.\r\n */\r\n @serializeAsTexture()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public translucencyColorTexture: Nullable<BaseTexture> = null;\r\n\r\n private _useGltfStyleTextures = true;\r\n /**\r\n * Use channels layout used by glTF:\r\n * * thicknessTexture: the green (instead of red) channel is the thickness\r\n * * thicknessTexture/refractionIntensityTexture: the red (instead of green) channel is the refraction intensity\r\n * * thicknessTexture/translucencyIntensityTexture: the alpha (instead of blue) channel is the translucency intensity\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public useGltfStyleTextures: boolean = true;\r\n\r\n /**\r\n * This property only exists for backward compatibility reasons.\r\n * Set it to true if your rendering in 8.0+ is different from that in 7 when you use sub-surface properties (transmission, refraction, etc.). Default is false.\r\n * Note however that the PBR calculation is wrong when this property is set to true, so only use it if you want to mimic the 7.0 behavior.\r\n */\r\n @serialize()\r\n public applyAlbedoAfterSubSurface = PBRSubSurfaceConfiguration.DEFAULT_APPLY_ALBEDO_AFTERSUBSURFACE;\r\n\r\n /**\r\n * This property only exists for backward compatibility reasons.\r\n * Set it to true if your rendering in 8.0+ is different from that in 7 when you use sub-surface translucency. Default is false.\r\n */\r\n @serialize()\r\n public legacyTranslucency = PBRSubSurfaceConfiguration.DEFAULT_LEGACY_TRANSLUCENCY;\r\n\r\n /**\r\n * Keeping for backward compatibility... Should not be used anymore. It has been replaced by\r\n * the property with the correct spelling.\r\n * @see legacyTranslucency\r\n */\r\n public get legacyTransluceny(): boolean {\r\n return this.legacyTranslucency;\r\n }\r\n public set legacyTransluceny(value: boolean) {\r\n this.legacyTranslucency = value;\r\n }\r\n\r\n private _scene: Scene;\r\n\r\n /** @internal */\r\n private _internalMarkAllSubMeshesAsTexturesDirty: () => void;\r\n private _internalMarkScenePrePassDirty: () => void;\r\n\r\n /** @internal */\r\n public _markAllSubMeshesAsTexturesDirty(): void {\r\n this._enable(this._isRefractionEnabled || this._isTranslucencyEnabled || this._isScatteringEnabled);\r\n this._internalMarkAllSubMeshesAsTexturesDirty();\r\n }\r\n /** @internal */\r\n public _markScenePrePassDirty(): void {\r\n this._enable(this._isRefractionEnabled || this._isTranslucencyEnabled || this._isScatteringEnabled);\r\n this._internalMarkAllSubMeshesAsTexturesDirty();\r\n this._internalMarkScenePrePassDirty();\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating that the plugin is compatible with a given shader language.\r\n * @returns true if the plugin is compatible with the shader language\r\n */\r\n public override isCompatible(): boolean {\r\n return true;\r\n }\r\n\r\n constructor(material: PBRBaseMaterial, addToPluginList = true) {\r\n super(material, \"PBRSubSurface\", 130, new MaterialSubSurfaceDefines(), addToPluginList);\r\n\r\n this._scene = material.getScene();\r\n this.registerForExtraEvents = true;\r\n\r\n this._internalMarkAllSubMeshesAsTexturesDirty = material._dirtyCallbacks[Constants.MATERIAL_TextureDirtyFlag];\r\n this._internalMarkScenePrePassDirty = material._dirtyCallbacks[Constants.MATERIAL_PrePassDirtyFlag];\r\n }\r\n\r\n /**\r\n * Checks whether the subsurface textures are ready for the sub mesh.\r\n * @param defines defines the material defines to inspect\r\n * @param scene defines the scene to use for readiness checks\r\n * @returns true if subsurface is ready\r\n */\r\n public override isReadyForSubMesh(defines: MaterialSubSurfaceDefines, scene: Scene): boolean {\r\n if (!this._isRefractionEnabled && !this._isTranslucencyEnabled && !this._isScatteringEnabled) {\r\n return true;\r\n }\r\n\r\n if (defines._areTexturesDirty) {\r\n if (scene.texturesEnabled) {\r\n if (this._thicknessTexture && MaterialFlags.ThicknessTextureEnabled) {\r\n if (!this._thicknessTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n }\r\n\r\n if (this._refractionIntensityTexture && MaterialFlags.RefractionIntensityTextureEnabled) {\r\n if (!this._refractionIntensityTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n }\r\n\r\n if (this._translucencyColorTexture && MaterialFlags.TranslucencyColorTextureEnabled) {\r\n if (!this._translucencyColorTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n }\r\n\r\n if (this._translucencyIntensityTexture && MaterialFlags.TranslucencyIntensityTextureEnabled) {\r\n if (!this._translucencyIntensityTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n }\r\n\r\n const refractionTexture = this._getRefractionTexture(scene);\r\n if (refractionTexture && MaterialFlags.RefractionTextureEnabled) {\r\n if (!refractionTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Updates shader defines for subsurface rendering before attributes are processed.\r\n * @param defines defines the material defines to update\r\n * @param scene defines the scene to use for texture checks\r\n */\r\n public override prepareDefinesBeforeAttributes(defines: MaterialSubSurfaceDefines, scene: Scene): void {\r\n if (!this._isRefractionEnabled && !this._isTranslucencyEnabled && !this._isScatteringEnabled) {\r\n defines.SUBSURFACE = false;\r\n defines.SS_DISPERSION = false;\r\n defines.SS_TRANSLUCENCY = false;\r\n defines.SS_SCATTERING = false;\r\n defines.SS_REFRACTION = false;\r\n defines.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS = false;\r\n defines.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS = false;\r\n defines.SS_THICKNESSANDMASK_TEXTURE = false;\r\n defines.SS_THICKNESSANDMASK_TEXTUREDIRECTUV = 0;\r\n defines.SS_HAS_THICKNESS = false;\r\n defines.SS_REFRACTIONINTENSITY_TEXTURE = false;\r\n defines.SS_REFRACTIONINTENSITY_TEXTUREDIRECTUV = 0;\r\n defines.SS_TRANSLUCENCYINTENSITY_TEXTURE = false;\r\n defines.SS_TRANSLUCENCYINTENSITY_TEXTUREDIRECTUV = 0;\r\n defines.SS_REFRACTIONMAP_3D = false;\r\n defines.SS_REFRACTIONMAP_OPPOSITEZ = false;\r\n defines.SS_LODINREFRACTIONALPHA = false;\r\n defines.SS_GAMMAREFRACTION = false;\r\n defines.SS_RGBDREFRACTION = false;\r\n defines.SS_LINEARSPECULARREFRACTION = false;\r\n defines.SS_LINKREFRACTIONTOTRANSPARENCY = false;\r\n defines.SS_ALBEDOFORREFRACTIONTINT = false;\r\n defines.SS_ALBEDOFORTRANSLUCENCYTINT = false;\r\n defines.SS_USE_LOCAL_REFRACTIONMAP_CUBIC = false;\r\n defines.SS_USE_THICKNESS_AS_DEPTH = false;\r\n defines.SS_USE_GLTF_TEXTURES = false;\r\n defines.SS_TRANSLUCENCYCOLOR_TEXTURE = false;\r\n defines.SS_TRANSLUCENCYCOLOR_TEXTUREDIRECTUV = 0;\r\n defines.SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA = false;\r\n defines.SS_APPLY_ALBEDO_AFTER_SUBSURFACE = false;\r\n return;\r\n }\r\n\r\n if (defines._areTexturesDirty) {\r\n defines.SUBSURFACE = true;\r\n\r\n defines.SS_DISPERSION = this._isDispersionEnabled;\r\n defines.SS_TRANSLUCENCY = this._isTranslucencyEnabled;\r\n defines.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS = false;\r\n defines.SS_TRANSLUCENCY_LEGACY = this.legacyTranslucency;\r\n defines.SS_SCATTERING = this._isScatteringEnabled;\r\n defines.SS_THICKNESSANDMASK_TEXTURE = false;\r\n defines.SS_REFRACTIONINTENSITY_TEXTURE = false;\r\n defines.SS_TRANSLUCENCYINTENSITY_TEXTURE = false;\r\n defines.SS_HAS_THICKNESS = false;\r\n defines.SS_USE_GLTF_TEXTURES = false;\r\n defines.SS_REFRACTION = false;\r\n defines.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS = false;\r\n defines.SS_REFRACTIONMAP_3D = false;\r\n defines.SS_GAMMAREFRACTION = false;\r\n defines.SS_RGBDREFRACTION = false;\r\n defines.SS_LINEARSPECULARREFRACTION = false;\r\n defines.SS_REFRACTIONMAP_OPPOSITEZ = false;\r\n defines.SS_LODINREFRACTIONALPHA = false;\r\n defines.SS_LINKREFRACTIONTOTRANSPARENCY = false;\r\n defines.SS_ALBEDOFORREFRACTIONTINT = false;\r\n defines.SS_ALBEDOFORTRANSLUCENCYTINT = false;\r\n defines.SS_USE_LOCAL_REFRACTIONMAP_CUBIC = false;\r\n defines.SS_USE_THICKNESS_AS_DEPTH = false;\r\n defines.SS_TRANSLUCENCYCOLOR_TEXTURE = false;\r\n defines.SS_APPLY_ALBEDO_AFTER_SUBSURFACE = this.applyAlbedoAfterSubSurface;\r\n\r\n if (defines._areTexturesDirty) {\r\n if (scene.texturesEnabled) {\r\n if (this._thicknessTexture && MaterialFlags.ThicknessTextureEnabled) {\r\n PrepareDefinesForMergedUV(this._thicknessTexture, defines, \"SS_THICKNESSANDMASK_TEXTURE\");\r\n }\r\n\r\n if (this._refractionIntensityTexture && MaterialFlags.RefractionIntensityTextureEnabled) {\r\n PrepareDefinesForMergedUV(this._refractionIntensityTexture, defines, \"SS_REFRACTIONINTENSITY_TEXTURE\");\r\n }\r\n\r\n if (this._translucencyIntensityTexture && MaterialFlags.TranslucencyIntensityTextureEnabled) {\r\n PrepareDefinesForMergedUV(this._translucencyIntensityTexture, defines, \"SS_TRANSLUCENCYINTENSITY_TEXTURE\");\r\n }\r\n\r\n if (this._translucencyColorTexture && MaterialFlags.TranslucencyColorTextureEnabled) {\r\n PrepareDefinesForMergedUV(this._translucencyColorTexture, defines, \"SS_TRANSLUCENCYCOLOR_TEXTURE\");\r\n defines.SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA = this._translucencyColorTexture.gammaSpace;\r\n }\r\n }\r\n }\r\n\r\n defines.SS_HAS_THICKNESS = this.maximumThickness - this.minimumThickness !== 0.0;\r\n defines.SS_USE_GLTF_TEXTURES = this._useGltfStyleTextures;\r\n defines.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS = this._useMaskFromThicknessTexture && !this._refractionIntensityTexture;\r\n defines.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS = this._useMaskFromThicknessTexture && !this._translucencyIntensityTexture;\r\n\r\n if (this._isRefractionEnabled) {\r\n if (scene.texturesEnabled) {\r\n const refractionTexture = this._getRefractionTexture(scene);\r\n if (refractionTexture && MaterialFlags.RefractionTextureEnabled) {\r\n defines.SS_REFRACTION = true;\r\n defines.SS_REFRACTIONMAP_3D = refractionTexture.isCube;\r\n defines.SS_GAMMAREFRACTION = refractionTexture.gammaSpace;\r\n defines.SS_RGBDREFRACTION = refractionTexture.isRGBD;\r\n defines.SS_LINEARSPECULARREFRACTION = refractionTexture.linearSpecularLOD;\r\n defines.SS_REFRACTIONMAP_OPPOSITEZ = this._scene.useRightHandedSystem && refractionTexture.isCube ? !refractionTexture.invertZ : refractionTexture.invertZ;\r\n defines.SS_LODINREFRACTIONALPHA = refractionTexture.lodLevelInAlpha;\r\n defines.SS_LINKREFRACTIONTOTRANSPARENCY = this._linkRefractionWithTransparency;\r\n defines.SS_ALBEDOFORREFRACTIONTINT = this._useAlbedoToTintRefraction;\r\n defines.SS_USE_LOCAL_REFRACTIONMAP_CUBIC = refractionTexture.isCube && (<any>refractionTexture).boundingBoxSize;\r\n defines.SS_USE_THICKNESS_AS_DEPTH = this.useThicknessAsDepth;\r\n }\r\n }\r\n }\r\n\r\n if (this._isTranslucencyEnabled) {\r\n defines.SS_ALBEDOFORTRANSLUCENCYTINT = this._useAlbedoToTintTranslucency;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Binds the material data (this function is called even if mustRebind() returns false)\r\n * @param uniformBuffer defines the Uniform buffer to fill in.\r\n * @param scene defines the scene the material belongs to.\r\n * @param engine defines the engine the material belongs to.\r\n * @param subMesh the submesh to bind data for\r\n */\r\n public override hardBindForSubMesh(uniformBuffer: UniformBuffer, scene: Scene, engine: Engine, subMesh: SubMesh): void {\r\n if (!this._isRefractionEnabled && !this._isTranslucencyEnabled && !this._isScatteringEnabled) {\r\n return;\r\n }\r\n\r\n // If min/max thickness is 0, avoid decompising to determine the scaled thickness (it's always zero).\r\n if (this.maximumThickness === 0.0 && this.minimumThickness === 0.0) {\r\n uniformBuffer.updateFloat2(\"vThicknessParam\", 0, 0);\r\n } else {\r\n subMesh.getRenderingMesh().getWorldMatrix().decompose(TmpVectors.Vector3[0]);\r\n const thicknessScale = Math.max(Math.abs(TmpVectors.Vector3[0].x), Math.abs(TmpVectors.Vector3[0].y), Math.abs(TmpVectors.Vector3[0].z));\r\n uniformBuffer.updateFloat2(\"vThicknessParam\", this.minimumThickness * thicknessScale, (this.maximumThickness - this.minimumThickness) * thicknessScale);\r\n }\r\n }\r\n\r\n /**\r\n * Binds subsurface data for a sub mesh.\r\n * @param uniformBuffer defines the uniform buffer to update\r\n * @param scene defines the scene to use for texture binding\r\n * @param engine defines the engine used for binding\r\n * @param subMesh defines the sub mesh being rendered\r\n */\r\n public override bindForSubMesh(uniformBuffer: UniformBuffer, scene: Scene, engine: Engine, subMesh: SubMesh): void {\r\n if (!this._isRefractionEnabled && !this._isTranslucencyEnabled && !this._isScatteringEnabled) {\r\n return;\r\n }\r\n\r\n const defines = subMesh.materialDefines as unknown as MaterialSubSurfaceDefines;\r\n\r\n const isFrozen = this._material.isFrozen;\r\n const realTimeFiltering = this._material.realTimeFiltering;\r\n const lodBasedMicrosurface = defines.LODBASEDMICROSFURACE;\r\n\r\n const refractionTexture = this._getRefractionTexture(scene);\r\n\r\n if (!uniformBuffer.useUbo || !isFrozen || !uniformBuffer.isSync) {\r\n if (this._thicknessTexture && MaterialFlags.ThicknessTextureEnabled) {\r\n uniformBuffer.updateFloat2(\"vThicknessInfos\", this._thicknessTexture.coordinatesIndex, this._thicknessTexture.level);\r\n BindTextureMatrix(this._thicknessTexture, uniformBuffer, \"thickness\");\r\n }\r\n\r\n if (this._refractionIntensityTexture && MaterialFlags.RefractionIntensityTextureEnabled && defines.SS_REFRACTIONINTENSITY_TEXTURE) {\r\n uniformBuffer.updateFloat2(\"vRefractionIntensityInfos\", this._refractionIntensityTexture.coordinatesIndex, this._refractionIntensityTexture.level);\r\n BindTextureMatrix(this._refractionIntensityTexture, uniformBuffer, \"refractionIntensity\");\r\n }\r\n\r\n if (this._translucencyColorTexture && MaterialFlags.TranslucencyColorTextureEnabled && defines.SS_TRANSLUCENCYCOLOR_TEXTURE) {\r\n uniformBuffer.updateFloat2(\"vTranslucencyColorInfos\", this._translucencyColorTexture.coordinatesIndex, this._translucencyColorTexture.level);\r\n BindTextureMatrix(this._translucencyColorTexture, uniformBuffer, \"translucencyColor\");\r\n }\r\n\r\n if (this._translucencyIntensityTexture && MaterialFlags.TranslucencyIntensityTextureEnabled && defines.SS_TRANSLUCENCYINTENSITY_TEXTURE) {\r\n uniformBuffer.updateFloat2(\"vTranslucencyIntensityInfos\", this._translucencyIntensityTexture.coordinatesIndex, this._translucencyIntensityTexture.level);\r\n BindTextureMatrix(this._translucencyIntensityTexture, uniformBuffer, \"translucencyIntensity\");\r\n }\r\n\r\n if (refractionTexture && MaterialFlags.RefractionTextureEnabled) {\r\n uniformBuffer.updateMatrix(\"refractionMatrix\", refractionTexture.getRefractionTextureMatrix());\r\n\r\n let depth = 1.0;\r\n if (!refractionTexture.isCube) {\r\n if ((<any>refractionTexture).depth) {\r\n depth = (<any>refractionTexture).depth;\r\n }\r\n }\r\n\r\n const width = refractionTexture.getSize().width;\r\n const refractionIor = this.volumeIndexOfRefraction;\r\n uniformBuffer.updateFloat4(\"vRefractionInfos\", refractionTexture.level, 1 / refractionIor, depth, this._invertRefractionY ? -1 : 1);\r\n uniformBuffer.updateFloat4(\r\n \"vRefractionMicrosurfaceInfos\",\r\n width,\r\n refractionTexture.lodGenerationScale,\r\n refractionTexture.lodGenerationOffset,\r\n 1.0 / this.indexOfRefraction\r\n );\r\n\r\n if (realTimeFiltering) {\r\n uniformBuffer.updateFloat2(\"vRefractionFilteringInfo\", width, Math.log2(width));\r\n }\r\n\r\n if ((<any>refractionTexture).boundingBoxSize) {\r\n const cubeTexture = <CubeTexture>refractionTexture;\r\n\r\n uniformBuffer.updateVector3(\"vRefractionPosition\", cubeTexture.boundingBoxPosition);\r\n uniformBuffer.updateVector3(\"vRefractionSize\", cubeTexture.boundingBoxSize);\r\n }\r\n }\r\n\r\n if (this._isScatteringEnabled) {\r\n uniformBuffer.updateFloat(\"scatteringDiffusionProfile\", this._scatteringDiffusionProfileIndex);\r\n }\r\n uniformBuffer.updateColor3(\"vDiffusionDistance\", this.diffusionDistance);\r\n\r\n uniformBuffer.updateFloat4(\"vTintColor\", this.tintColor.r, this.tintColor.g, this.tintColor.b, Math.max(0.00001, this.tintColorAtDistance));\r\n uniformBuffer.updateColor4(\"vTranslucencyColor\", this.translucencyColor ?? this.tintColor, 0);\r\n\r\n uniformBuffer.updateFloat3(\"vSubSurfaceIntensity\", this.refractionIntensity, this.translucencyIntensity, 0);\r\n\r\n uniformBuffer.updateFloat(\"dispersion\", this.dispersion);\r\n }\r\n\r\n // Textures\r\n if (scene.texturesEnabled) {\r\n if (this._thicknessTexture && MaterialFlags.ThicknessTextureEnabled) {\r\n uniformBuffer.setTexture(\"thicknessSampler\", this._thicknessTexture);\r\n }\r\n\r\n if (this._refractionIntensityTexture && MaterialFlags.RefractionIntensityTextureEnabled && defines.SS_REFRACTIONINTENSITY_TEXTURE) {\r\n uniformBuffer.setTexture(\"refractionIntensitySampler\", this._refractionIntensityTexture);\r\n }\r\n\r\n if (this._translucencyIntensityTexture && MaterialFlags.TranslucencyIntensityTextureEnabled && defines.SS_TRANSLUCENCYINTENSITY_TEXTURE) {\r\n uniformBuffer.setTexture(\"translucencyIntensitySampler\", this._translucencyIntensityTexture);\r\n }\r\n\r\n if (this._translucencyColorTexture && MaterialFlags.TranslucencyColorTextureEnabled && defines.SS_TRANSLUCENCYCOLOR_TEXTURE) {\r\n uniformBuffer.setTexture(\"translucencyColorSampler\", this._translucencyColorTexture);\r\n }\r\n\r\n if (refractionTexture && MaterialFlags.RefractionTextureEnabled) {\r\n if (lodBasedMicrosurface) {\r\n uniformBuffer.setTexture(\"refractionSampler\", refractionTexture);\r\n } else {\r\n uniformBuffer.setTexture(\"refractionSampler\", refractionTexture._lodTextureMid || refractionTexture);\r\n uniformBuffer.setTexture(\"refractionSamplerLow\", refractionTexture._lodTextureLow || refractionTexture);\r\n uniformBuffer.setTexture(\"refractionSamplerHigh\", refractionTexture._lodTextureHigh || refractionTexture);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Returns the texture used for refraction or null if none is used.\r\n * @param scene defines the scene the material belongs to.\r\n * @returns - Refraction texture if present. If no refraction texture and refraction\r\n * is linked with transparency, returns environment texture. Otherwise, returns null.\r\n */\r\n private _getRefractionTexture(scene: Scene): Nullable<BaseTexture> {\r\n if (this._refractionTexture) {\r\n return this._refractionTexture;\r\n }\r\n\r\n if (this._isRefractionEnabled) {\r\n return scene.environmentTexture;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Returns true if alpha blending should be disabled.\r\n */\r\n public get disableAlphaBlending(): boolean {\r\n return this._isRefractionEnabled && this._linkRefractionWithTransparency;\r\n }\r\n\r\n /**\r\n * Fills the list of render target textures.\r\n * @param renderTargets the list of render targets to update\r\n */\r\n public override fillRenderTargetTextures(renderTargets: SmartArray<RenderTargetTexture>): void {\r\n if (MaterialFlags.RefractionTextureEnabled && this._refractionTexture && this._refractionTexture.isRenderTarget) {\r\n renderTargets.push(<RenderTargetTexture>this._refractionTexture);\r\n }\r\n }\r\n\r\n /**\r\n * Checks whether subsurface rendering uses a texture.\r\n * @param texture defines the texture to check\r\n * @returns true if the texture is used by subsurface rendering\r\n */\r\n public override hasTexture(texture: BaseTexture): boolean {\r\n if (this._thicknessTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._refractionTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._refractionIntensityTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._translucencyIntensityTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._translucencyColorTexture === texture) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public override hasRenderTargetTextures(): boolean {\r\n if (MaterialFlags.RefractionTextureEnabled && this._refractionTexture && this._refractionTexture.isRenderTarget) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Adds the active subsurface textures.\r\n * @param activeTextures defines the list of active textures to update\r\n */\r\n public override getActiveTextures(activeTextures: BaseTexture[]): void {\r\n if (this._thicknessTexture) {\r\n activeTextures.push(this._thicknessTexture);\r\n }\r\n\r\n if (this._refractionTexture) {\r\n activeTextures.push(this._refractionTexture);\r\n }\r\n\r\n if (this._refractionIntensityTexture) {\r\n activeTextures.push(this._refractionIntensityTexture);\r\n }\r\n\r\n if (this._translucencyColorTexture) {\r\n activeTextures.push(this._translucencyColorTexture);\r\n }\r\n\r\n if (this._translucencyIntensityTexture) {\r\n activeTextures.push(this._translucencyIntensityTexture);\r\n }\r\n }\r\n\r\n /**\r\n * Adds the animatable subsurface textures.\r\n * @param animatables defines the list of animatables to update\r\n */\r\n public override getAnimatables(animatables: IAnimatable[]): void {\r\n if (this._thicknessTexture && this._thicknessTexture.animations && this._thicknessTexture.animations.length > 0) {\r\n animatables.push(this._thicknessTexture);\r\n }\r\n\r\n if (this._refractionTexture && this._refractionTexture.animations && this._refractionTexture.animations.length > 0) {\r\n animatables.push(this._refractionTexture);\r\n }\r\n\r\n if (this._refractionIntensityTexture && this._refractionIntensityTexture.animations && this._refractionIntensityTexture.animations.length > 0) {\r\n animatables.push(this._refractionIntensityTexture);\r\n }\r\n\r\n if (this._translucencyColorTexture && this._translucencyColorTexture.animations && this._translucencyColorTexture.animations.length > 0) {\r\n animatables.push(this._translucencyColorTexture);\r\n }\r\n\r\n if (this._translucencyIntensityTexture && this._translucencyIntensityTexture.animations && this._translucencyIntensityTexture.animations.length > 0) {\r\n animatables.push(this._translucencyIntensityTexture);\r\n }\r\n }\r\n\r\n /**\r\n * Disposes the subsurface textures.\r\n * @param forceDisposeTextures defines whether to dispose the textures\r\n */\r\n public override dispose(forceDisposeTextures?: boolean): void {\r\n if (forceDisposeTextures) {\r\n if (this._thicknessTexture) {\r\n this._thicknessTexture.dispose();\r\n }\r\n\r\n if (this._refractionTexture) {\r\n this._refractionTexture.dispose();\r\n }\r\n\r\n if (this._refractionIntensityTexture) {\r\n this._refractionIntensityTexture.dispose();\r\n }\r\n\r\n if (this._translucencyColorTexture) {\r\n this._translucencyColorTexture.dispose();\r\n }\r\n\r\n if (this._translucencyIntensityTexture) {\r\n this._translucencyIntensityTexture.dispose();\r\n }\r\n }\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"PBRSubSurfaceConfiguration\";\r\n }\r\n\r\n public override addFallbacks(defines: MaterialSubSurfaceDefines, fallbacks: EffectFallbacks, currentRank: number): number {\r\n if (defines.SS_SCATTERING) {\r\n fallbacks.addFallback(currentRank++, \"SS_SCATTERING\");\r\n }\r\n if (defines.SS_TRANSLUCENCY) {\r\n fallbacks.addFallback(currentRank++, \"SS_TRANSLUCENCY\");\r\n }\r\n return currentRank;\r\n }\r\n\r\n /**\r\n * Adds the subsurface sampler names.\r\n * @param samplers defines the list of sampler names to update\r\n */\r\n public override getSamplers(samplers: string[]): void {\r\n samplers.push(\r\n \"thicknessSampler\",\r\n \"refractionIntensitySampler\",\r\n \"translucencyIntensitySampler\",\r\n \"refractionSampler\",\r\n \"refractionSamplerLow\",\r\n \"refractionSamplerHigh\",\r\n \"translucencyColorSampler\"\r\n );\r\n }\r\n\r\n public override getUniforms(): { ubo?: Array<{ name: string; size: number; type: string }>; vertex?: string; fragment?: string } {\r\n return {\r\n ubo: [\r\n { name: \"vRefractionMicrosurfaceInfos\", size: 4, type: \"vec4\" },\r\n { name: \"vRefractionFilteringInfo\", size: 2, type: \"vec2\" },\r\n { name: \"vTranslucencyIntensityInfos\", size: 2, type: \"vec2\" },\r\n { name: \"vRefractionInfos\", size: 4, type: \"vec4\" },\r\n { name: \"refractionMatrix\", size: 16, type: \"mat4\" },\r\n { name: \"vThicknessInfos\", size: 2, type: \"vec2\" },\r\n { name: \"vRefractionIntensityInfos\", size: 2, type: \"vec2\" },\r\n { name: \"thicknessMatrix\", size: 16, type: \"mat4\" },\r\n { name: \"refractionIntensityMatrix\", size: 16, type: \"mat4\" },\r\n { name: \"translucencyIntensityMatrix\", size: 16, type: \"mat4\" },\r\n { name: \"vThicknessParam\", size: 2, type: \"vec2\" },\r\n { name: \"vDiffusionDistance\", size: 3, type: \"vec3\" },\r\n { name: \"vTintColor\", size: 4, type: \"vec4\" },\r\n { name: \"vSubSurfaceIntensity\", size: 3, type: \"vec3\" },\r\n { name: \"vRefractionPosition\", size: 3, type: \"vec3\" },\r\n { name: \"vRefractionSize\", size: 3, type: \"vec3\" },\r\n { name: \"scatteringDiffusionProfile\", size: 1, type: \"float\" },\r\n { name: \"dispersion\", size: 1, type: \"float\" },\r\n\r\n { name: \"vTranslucencyColor\", size: 4, type: \"vec4\" },\r\n { name: \"vTranslucencyColorInfos\", size: 2, type: \"vec2\" },\r\n { name: \"translucencyColorMatrix\", size: 16, type: \"mat4\" },\r\n ],\r\n };\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"pbrSubSurfaceConfiguration.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/PBR/pbrSubSurfaceConfiguration.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC3G,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAIrD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAKrD,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAE3F;;GAEG;AACH,MAAM,OAAO,yBAA0B,SAAQ,eAAe;IAA9D;;QACW,eAAU,GAAG,KAAK,CAAC;QAEnB,kBAAa,GAAG,KAAK,CAAC;QACtB,+CAA0C,GAAG,KAAK,CAAC;QACnD,oBAAe,GAAG,KAAK,CAAC;QACxB,iDAA4C,GAAG,KAAK,CAAC;QACrD,kBAAa,GAAG,KAAK,CAAC;QACtB,kBAAa,GAAG,KAAK,CAAC;QAEtB,gCAA2B,GAAG,KAAK,CAAC;QACpC,wCAAmC,GAAG,CAAC,CAAC;QACxC,qBAAgB,GAAG,KAAK,CAAC;QACzB,mCAA8B,GAAG,KAAK,CAAC;QACvC,2CAAsC,GAAG,CAAC,CAAC;QAC3C,qCAAgC,GAAG,KAAK,CAAC;QACzC,6CAAwC,GAAG,CAAC,CAAC;QAC7C,iCAA4B,GAAG,KAAK,CAAC;QACrC,yCAAoC,GAAG,CAAC,CAAC;QACzC,uCAAkC,GAAG,KAAK,CAAC;QAE3C,wBAAmB,GAAG,KAAK,CAAC;QAC5B,+BAA0B,GAAG,KAAK,CAAC;QACnC,4BAAuB,GAAG,KAAK,CAAC;QAChC,uBAAkB,GAAG,KAAK,CAAC;QAC3B,sBAAiB,GAAG,KAAK,CAAC;QAC1B,gCAA2B,GAAG,KAAK,CAAC;QACpC,oCAA+B,GAAG,KAAK,CAAC;QACxC,+BAA0B,GAAG,KAAK,CAAC;QACnC,iCAA4B,GAAG,KAAK,CAAC;QACrC,qCAAgC,GAAG,KAAK,CAAC;QACzC,8BAAyB,GAAG,KAAK,CAAC;QAElC,yBAAoB,GAAG,KAAK,CAAC;QAC7B,qCAAgC,GAAG,KAAK,CAAC;QACzC,2BAAsB,GAAG,KAAK,CAAC;IAC1C,CAAC;CAAA;AAED;;GAEG;IACU,0BAA0B;;sBAAS,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAArD,0BAA2B,SAAQ,WAAkB;YAqB9D;;eAEG;YAGH,IAAgB,mBAAmB,kHAAS;YAA5C,IAAgB,mBAAmB,uHAAS;YAG5C;;eAEG;YAGH,IAAgB,qBAAqB,oHAAS;YAA9C,IAAgB,qBAAqB,yHAAS;YAG9C;;eAEG;YAGH,IAAgB,mBAAmB,kHAAS;YAA5C,IAAgB,mBAAmB,uHAAS;YAG5C;;eAEG;YAGH,IAAgB,mBAAmB,kHAAS;YAA5C,IAAgB,mBAAmB,uHAAS;YAK5C;;;eAGG;YACH,IAAW,0BAA0B;gBACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC;oBACvC,OAAO,IAAI,CAAC;gBAChB,CAAC;gBAED,OAAO,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YAC/G,CAAC;YAED,IAAW,0BAA0B,CAAC,CAAmB;gBACrD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,EAAE,CAAC;oBAC5C,gBAAgB;oBAChB,OAAO;gBACX,CAAC;gBAED,uDAAuD;gBACvD,IAAI,CAAC,EAAE,CAAC;oBACJ,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC,MAAM,CAAC,uBAAwB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;gBACxG,CAAC;YACL,CAAC;YAmBD;;eAEG;YAGH,IAAgB,yBAAyB,wHAAkB;YAA3D,IAAgB,yBAAyB,6HAAkB;YAG3D;;eAEG;YAGH,IAAgB,2BAA2B,0HAAkB;YAA7D,IAAgB,2BAA2B,+HAAkB;YAG7D;;;;;;eAMG;YAGH,IAAgB,gBAAgB,+GAA+B;YAA/D,IAAgB,gBAAgB,oHAA+B;YAG/D;;eAEG;YAGH,IAAgB,iBAAiB,gHAA+B;YAAhE,IAAgB,iBAAiB,qHAA+B;YAIhE;;;;;;;eAOG;YAGH,IAAgB,iBAAiB,gHAAO;YAAxC,IAAgB,iBAAiB,qHAAO;YAKxC;;;;;;eAMG;YACH,IAAW,uBAAuB;gBAC9B,IAAI,IAAI,CAAC,wBAAwB,IAAI,GAAG,EAAE,CAAC;oBACvC,OAAO,IAAI,CAAC,wBAAwB,CAAC;gBACzC,CAAC;gBACD,OAAO,IAAI,CAAC,kBAAkB,CAAC;YACnC,CAAC;YACD,IAAW,uBAAuB,CAAC,KAAa;gBAC5C,MAAM,uBAAuB,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC5D,IAAI,IAAI,CAAC,wBAAwB,KAAK,uBAAuB,EAAE,CAAC;oBAC5D,OAAO;gBACX,CAAC;gBACD,IAAI,CAAC,wBAAwB,GAAG,uBAAuB,CAAC;gBACxD,IAAI,CAAC,gCAAgC,EAAE,CAAC;YAC5C,CAAC;YAGD;;eAEG;YAGH,IAAgB,iBAAiB,gHAAS;YAA1C,IAAgB,iBAAiB,qHAAS;YAI1C;;;eAGG;YAGH,IAAgB,8BAA8B,6HAAS;YAAvD,IAAgB,8BAA8B,kIAAS;YAiDvD;;;;;eAKG;YAGH,IAAgB,2BAA2B,0HAAkB;YAA7D,IAAgB,2BAA2B,+HAAkB;YAG7D;;;eAGG;YAGH,IAAgB,0BAA0B,yHAA+B;YAAzE,IAAgB,0BAA0B,8HAA+B;YAGzE;;;eAGG;YAGH,IAAgB,4BAA4B,2HAA+B;YAA3E,IAAgB,4BAA4B,gIAA+B;YAU3E;;;;eAIG;YAGH,IAAgB,wBAAwB,uHAA+B;YAAvE,IAAgB,wBAAwB,4HAA+B;YAGvE;;;;;eAKG;YAGH,IAAgB,oBAAoB,mHAAiB;YAArD,IAAgB,oBAAoB,wHAAiB;YAiBrD;;;;eAIG;YACH,IAAW,iBAAiB;gBACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;YACnC,CAAC;YACD,IAAW,iBAAiB,CAAC,KAAc;gBACvC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YACpC,CAAC;YAQD,gBAAgB;YACT,gCAAgC;gBACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBACpG,IAAI,CAAC,wCAAwC,EAAE,CAAC;YACpD,CAAC;YACD,gBAAgB;YACT,sBAAsB;gBACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBACpG,IAAI,CAAC,wCAAwC,EAAE,CAAC;gBAChD,IAAI,CAAC,8BAA8B,EAAE,CAAC;YAC1C,CAAC;YAED;;;eAGG;YACa,YAAY;gBACxB,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,YAAY,QAAyB,EAAE,eAAe,GAAG,IAAI;gBACzD,KAAK,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,EAAE,IAAI,yBAAyB,EAAE,EAAE,eAAe,CAAC,CAAC;gBArUpF,yBAAoB,GAAG,KAAK,CAAC;gBAMrB,sIAAsB,KAAK,GAAC;gBAEpC,2BAAsB,qEAAG,KAAK,EAAC;gBAMvB,0IAAwB,KAAK,GAAC;gBAEtC,yBAAoB,uEAAG,KAAK,EAAC;gBAMrB,sIAAsB,KAAK,GAAC;gBAEpC,yBAAoB,qEAAG,KAAK,EAAC;gBAMrB,sIAAsB,KAAK,GAAC;gBAGpC,qCAAgC,6IAAG,CAAC,GAAC;gBA0B7C;;;;mBAIG;gBAEI,wBAAmB,6IAAW,CAAC,GAAC;gBAEvC;;;;mBAIG;gBAEI,0BAAqB,kIAAW,CAAC,GAAC;gBAEjC,+BAA0B,uEAAG,KAAK,EAAC;gBAM3B,kJAAqC,KAAK,GAAC;gBAEnD,iCAA4B,2EAAG,KAAK,EAAC;gBAM7B,sJAAuC,KAAK,GAAC;gBAErD,sBAAiB,6EAA0B,IAAI,EAAC;gBAUxC,gIAA0C,IAAI,GAAC;gBAEvD,uBAAkB,kEAA0B,IAAI,EAAC;gBAMzC,kIAA2C,IAAI,GAAC;gBAEhE,gBAAgB;gBACT,uBAAkB,mEAAG,GAAG,EAAC;gBAWhB,kIAAoB,GAAG,GAAC;gBAGhC,6BAAwB,mIAAG,CAAC,GAAG,GAAC;gBAwBhC,uBAAkB,0EAAG,KAAK,EAAC;gBAMnB,kIAAoB,KAAK,GAAC;gBAE1C,gBAAgB;gBACT,oCAA+B,mEAAG,KAAK,EAAC;gBAO/B,4JAAiC,KAAK,GAAC;gBAEvD;;;mBAGG;gBAEI,qBAAgB,wIAAW,CAAC,GAAC;gBAEpC;;mBAEG;gBAEI,qBAAgB,0HAAW,CAAC,GAAC;gBAEpC;;mBAEG;gBAEI,wBAAmB,6HAAG,KAAK,GAAC;gBAEnC;;;mBAGG;gBAEI,cAAS,sHAAG,MAAM,CAAC,KAAK,EAAE,GAAC;gBAElC;;;mBAGG;gBAEI,wBAAmB,sHAAG,CAAC,GAAC;gBAE/B;;mBAEG;gBAEI,eAAU,uHAAG,CAAC,GAAC;gBAEtB;;;mBAGG;gBAEI,sBAAiB,qHAAG,MAAM,CAAC,KAAK,EAAE,GAAC;gBAElC,iCAA4B,mEAAG,KAAK,EAAC;gBAS7B,sJAAuC,KAAK,GAAC;gBAErD,gCAA2B,6EAA0B,IAAI,EAAC;gBAOlD,oJAAoD,IAAI,GAAC;gBAEjE,kCAA6B,4EAA0B,IAAI,EAAC;gBAOpD,wJAAsD,IAAI,GAAC;gBAE3E;;;mBAGG;gBAEI,sBAAiB,uIAAqB,IAAI,GAAC;gBAE1C,8BAAyB,mEAA0B,IAAI,EAAC;gBAQhD,gJAAkD,IAAI,GAAC;gBAE/D,0BAAqB,0EAAG,IAAI,EAAC;gBASrB,wIAAgC,IAAI,GAAC;gBAErD;;;;mBAIG;gBAEI,+BAA0B,wIAAG,EAA0B,CAAC,oCAAoC,GAAC;gBAEpG;;;mBAGG;gBAEI,uBAAkB,sIAAG,EAA0B,CAAC,2BAA2B,GAAC;gBAc3E,WAAM,kEAAQ;gBA6BlB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBAClC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;gBAEnC,IAAI,CAAC,wCAAwC,GAAG,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;gBAC9G,IAAI,CAAC,8BAA8B,GAAG,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;YACxG,CAAC;YAED;;;;;eAKG;YACa,iBAAiB,CAAC,OAAkC,EAAE,KAAY;gBAC9E,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC3F,OAAO,IAAI,CAAC;gBAChB,CAAC;gBAED,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;oBAC5B,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;wBACxB,IAAI,IAAI,CAAC,iBAAiB,IAAI,aAAa,CAAC,uBAAuB,EAAE,CAAC;4BAClE,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,EAAE,CAAC;gCACjD,OAAO,KAAK,CAAC;4BACjB,CAAC;wBACL,CAAC;wBAED,IAAI,IAAI,CAAC,2BAA2B,IAAI,aAAa,CAAC,iCAAiC,EAAE,CAAC;4BACtF,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,oBAAoB,EAAE,EAAE,CAAC;gCAC3D,OAAO,KAAK,CAAC;4BACjB,CAAC;wBACL,CAAC;wBAED,IAAI,IAAI,CAAC,yBAAyB,IAAI,aAAa,CAAC,+BAA+B,EAAE,CAAC;4BAClF,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,oBAAoB,EAAE,EAAE,CAAC;gCACzD,OAAO,KAAK,CAAC;4BACjB,CAAC;wBACL,CAAC;wBAED,IAAI,IAAI,CAAC,6BAA6B,IAAI,aAAa,CAAC,mCAAmC,EAAE,CAAC;4BAC1F,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,oBAAoB,EAAE,EAAE,CAAC;gCAC7D,OAAO,KAAK,CAAC;4BACjB,CAAC;wBACL,CAAC;wBAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;wBAC5D,IAAI,iBAAiB,IAAI,aAAa,CAAC,wBAAwB,EAAE,CAAC;4BAC9D,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,EAAE,CAAC;gCAC5C,OAAO,KAAK,CAAC;4BACjB,CAAC;wBACL,CAAC;oBACL,CAAC;gBACL,CAAC;gBAED,OAAO,IAAI,CAAC;YAChB,CAAC;YAED;;;;eAIG;YACa,8BAA8B,CAAC,OAAkC,EAAE,KAAY;gBAC3F,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC3F,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;oBAC3B,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;oBAC9B,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;oBAChC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;oBAC9B,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;oBAC9B,OAAO,CAAC,0CAA0C,GAAG,KAAK,CAAC;oBAC3D,OAAO,CAAC,4CAA4C,GAAG,KAAK,CAAC;oBAC7D,OAAO,CAAC,2BAA2B,GAAG,KAAK,CAAC;oBAC5C,OAAO,CAAC,mCAAmC,GAAG,CAAC,CAAC;oBAChD,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC;oBACjC,OAAO,CAAC,8BAA8B,GAAG,KAAK,CAAC;oBAC/C,OAAO,CAAC,sCAAsC,GAAG,CAAC,CAAC;oBACnD,OAAO,CAAC,gCAAgC,GAAG,KAAK,CAAC;oBACjD,OAAO,CAAC,wCAAwC,GAAG,CAAC,CAAC;oBACrD,OAAO,CAAC,mBAAmB,GAAG,KAAK,CAAC;oBACpC,OAAO,CAAC,0BAA0B,GAAG,KAAK,CAAC;oBAC3C,OAAO,CAAC,uBAAuB,GAAG,KAAK,CAAC;oBACxC,OAAO,CAAC,kBAAkB,GAAG,KAAK,CAAC;oBACnC,OAAO,CAAC,iBAAiB,GAAG,KAAK,CAAC;oBAClC,OAAO,CAAC,2BAA2B,GAAG,KAAK,CAAC;oBAC5C,OAAO,CAAC,+BAA+B,GAAG,KAAK,CAAC;oBAChD,OAAO,CAAC,0BAA0B,GAAG,KAAK,CAAC;oBAC3C,OAAO,CAAC,4BAA4B,GAAG,KAAK,CAAC;oBAC7C,OAAO,CAAC,gCAAgC,GAAG,KAAK,CAAC;oBACjD,OAAO,CAAC,yBAAyB,GAAG,KAAK,CAAC;oBAC1C,OAAO,CAAC,oBAAoB,GAAG,KAAK,CAAC;oBACrC,OAAO,CAAC,4BAA4B,GAAG,KAAK,CAAC;oBAC7C,OAAO,CAAC,oCAAoC,GAAG,CAAC,CAAC;oBACjD,OAAO,CAAC,kCAAkC,GAAG,KAAK,CAAC;oBACnD,OAAO,CAAC,gCAAgC,GAAG,KAAK,CAAC;oBACjD,OAAO;gBACX,CAAC;gBAED,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;oBAC5B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;oBAE1B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC;oBAClD,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC;oBACtD,OAAO,CAAC,4CAA4C,GAAG,KAAK,CAAC;oBAC7D,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,CAAC;oBACzD,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC;oBAClD,OAAO,CAAC,2BAA2B,GAAG,KAAK,CAAC;oBAC5C,OAAO,CAAC,8BAA8B,GAAG,KAAK,CAAC;oBAC/C,OAAO,CAAC,gCAAgC,GAAG,KAAK,CAAC;oBACjD,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC;oBACjC,OAAO,CAAC,oBAAoB,GAAG,KAAK,CAAC;oBACrC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;oBAC9B,OAAO,CAAC,0CAA0C,GAAG,KAAK,CAAC;oBAC3D,OAAO,CAAC,mBAAmB,GAAG,KAAK,CAAC;oBACpC,OAAO,CAAC,kBAAkB,GAAG,KAAK,CAAC;oBACnC,OAAO,CAAC,iBAAiB,GAAG,KAAK,CAAC;oBAClC,OAAO,CAAC,2BAA2B,GAAG,KAAK,CAAC;oBAC5C,OAAO,CAAC,0BAA0B,GAAG,KAAK,CAAC;oBAC3C,OAAO,CAAC,uBAAuB,GAAG,KAAK,CAAC;oBACxC,OAAO,CAAC,+BAA+B,GAAG,KAAK,CAAC;oBAChD,OAAO,CAAC,0BAA0B,GAAG,KAAK,CAAC;oBAC3C,OAAO,CAAC,4BAA4B,GAAG,KAAK,CAAC;oBAC7C,OAAO,CAAC,gCAAgC,GAAG,KAAK,CAAC;oBACjD,OAAO,CAAC,yBAAyB,GAAG,KAAK,CAAC;oBAC1C,OAAO,CAAC,4BAA4B,GAAG,KAAK,CAAC;oBAC7C,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC,0BAA0B,CAAC;oBAE3E,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;wBAC5B,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;4BACxB,IAAI,IAAI,CAAC,iBAAiB,IAAI,aAAa,CAAC,uBAAuB,EAAE,CAAC;gCAClE,yBAAyB,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,EAAE,6BAA6B,CAAC,CAAC;4BAC9F,CAAC;4BAED,IAAI,IAAI,CAAC,2BAA2B,IAAI,aAAa,CAAC,iCAAiC,EAAE,CAAC;gCACtF,yBAAyB,CAAC,IAAI,CAAC,2BAA2B,EAAE,OAAO,EAAE,gCAAgC,CAAC,CAAC;4BAC3G,CAAC;4BAED,IAAI,IAAI,CAAC,6BAA6B,IAAI,aAAa,CAAC,mCAAmC,EAAE,CAAC;gCAC1F,yBAAyB,CAAC,IAAI,CAAC,6BAA6B,EAAE,OAAO,EAAE,kCAAkC,CAAC,CAAC;4BAC/G,CAAC;4BAED,IAAI,IAAI,CAAC,yBAAyB,IAAI,aAAa,CAAC,+BAA+B,EAAE,CAAC;gCAClF,yBAAyB,CAAC,IAAI,CAAC,yBAAyB,EAAE,OAAO,EAAE,8BAA8B,CAAC,CAAC;gCACnG,OAAO,CAAC,kCAAkC,GAAG,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC;4BAC3F,CAAC;wBACL,CAAC;oBACL,CAAC;oBAED,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,KAAK,GAAG,CAAC;oBACjF,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC;oBAC1D,OAAO,CAAC,0CAA0C,GAAG,IAAI,CAAC,4BAA4B,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC;oBAC5H,OAAO,CAAC,4CAA4C,GAAG,IAAI,CAAC,4BAA4B,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC;oBAEhI,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;wBAC5B,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;4BACxB,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;4BAC5D,IAAI,iBAAiB,IAAI,aAAa,CAAC,wBAAwB,EAAE,CAAC;gCAC9D,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;gCAC7B,OAAO,CAAC,mBAAmB,GAAG,iBAAiB,CAAC,MAAM,CAAC;gCACvD,OAAO,CAAC,kBAAkB,GAAG,iBAAiB,CAAC,UAAU,CAAC;gCAC1D,OAAO,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,MAAM,CAAC;gCACrD,OAAO,CAAC,2BAA2B,GAAG,iBAAiB,CAAC,iBAAiB,CAAC;gCAC1E,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC;gCAC3J,OAAO,CAAC,uBAAuB,GAAG,iBAAiB,CAAC,eAAe,CAAC;gCACpE,OAAO,CAAC,+BAA+B,GAAG,IAAI,CAAC,+BAA+B,CAAC;gCAC/E,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,CAAC;gCACrE,OAAO,CAAC,gCAAgC,GAAG,iBAAiB,CAAC,MAAM,IAAU,iBAAkB,CAAC,eAAe,CAAC;gCAChH,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,mBAAmB,CAAC;4BACjE,CAAC;wBACL,CAAC;oBACL,CAAC;oBAED,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBAC9B,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,CAAC;oBAC7E,CAAC;gBACL,CAAC;YACL,CAAC;YAED;;;;;;eAMG;YACa,kBAAkB,CAAC,aAA4B,EAAE,KAAY,EAAE,MAAc,EAAE,OAAgB;gBAC3G,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC3F,OAAO;gBACX,CAAC;gBAED,qGAAqG;gBACrG,IAAI,IAAI,CAAC,gBAAgB,KAAK,GAAG,IAAI,IAAI,CAAC,gBAAgB,KAAK,GAAG,EAAE,CAAC;oBACjE,aAAa,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxD,CAAC;qBAAM,CAAC;oBACJ,OAAO,CAAC,gBAAgB,EAAE,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7E,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzI,aAAa,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,gBAAgB,GAAG,cAAc,EAAE,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAAC,CAAC;gBAC5J,CAAC;YACL,CAAC;YAED;;;;;;eAMG;YACa,cAAc,CAAC,aAA4B,EAAE,KAAY,EAAE,MAAc,EAAE,OAAgB;gBACvG,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC3F,OAAO;gBACX,CAAC;gBAED,MAAM,OAAO,GAAG,OAAO,CAAC,eAAuD,CAAC;gBAEhF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;gBACzC,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;gBAC3D,MAAM,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;gBAE1D,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;gBAE5D,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;oBAC9D,IAAI,IAAI,CAAC,iBAAiB,IAAI,aAAa,CAAC,uBAAuB,EAAE,CAAC;wBAClE,aAAa,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;wBACrH,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;oBAC1E,CAAC;oBAED,IAAI,IAAI,CAAC,2BAA2B,IAAI,aAAa,CAAC,iCAAiC,IAAI,OAAO,CAAC,8BAA8B,EAAE,CAAC;wBAChI,aAAa,CAAC,YAAY,CAAC,2BAA2B,EAAE,IAAI,CAAC,2BAA2B,CAAC,gBAAgB,EAAE,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;wBACnJ,iBAAiB,CAAC,IAAI,CAAC,2BAA2B,EAAE,aAAa,EAAE,qBAAqB,CAAC,CAAC;oBAC9F,CAAC;oBAED,IAAI,IAAI,CAAC,yBAAyB,IAAI,aAAa,CAAC,+BAA+B,IAAI,OAAO,CAAC,4BAA4B,EAAE,CAAC;wBAC1H,aAAa,CAAC,YAAY,CAAC,yBAAyB,EAAE,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;wBAC7I,iBAAiB,CAAC,IAAI,CAAC,yBAAyB,EAAE,aAAa,EAAE,mBAAmB,CAAC,CAAC;oBAC1F,CAAC;oBAED,IAAI,IAAI,CAAC,6BAA6B,IAAI,aAAa,CAAC,mCAAmC,IAAI,OAAO,CAAC,gCAAgC,EAAE,CAAC;wBACtI,aAAa,CAAC,YAAY,CAAC,6BAA6B,EAAE,IAAI,CAAC,6BAA6B,CAAC,gBAAgB,EAAE,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;wBACzJ,iBAAiB,CAAC,IAAI,CAAC,6BAA6B,EAAE,aAAa,EAAE,uBAAuB,CAAC,CAAC;oBAClG,CAAC;oBAED,IAAI,iBAAiB,IAAI,aAAa,CAAC,wBAAwB,EAAE,CAAC;wBAC9D,aAAa,CAAC,YAAY,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,0BAA0B,EAAE,CAAC,CAAC;wBAE/F,IAAI,KAAK,GAAG,GAAG,CAAC;wBAChB,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;4BAC5B,IAAU,iBAAkB,CAAC,KAAK,EAAE,CAAC;gCACjC,KAAK,GAAS,iBAAkB,CAAC,KAAK,CAAC;4BAC3C,CAAC;wBACL,CAAC;wBAED,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC;wBAChD,MAAM,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC;wBACnD,aAAa,CAAC,YAAY,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,KAAK,EAAE,CAAC,GAAG,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBACpI,aAAa,CAAC,YAAY,CACtB,8BAA8B,EAC9B,KAAK,EACL,iBAAiB,CAAC,kBAAkB,EACpC,iBAAiB,CAAC,mBAAmB,EACrC,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAC/B,CAAC;wBAEF,IAAI,iBAAiB,EAAE,CAAC;4BACpB,aAAa,CAAC,YAAY,CAAC,0BAA0B,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;wBACpF,CAAC;wBAED,IAAU,iBAAkB,CAAC,eAAe,EAAE,CAAC;4BAC3C,MAAM,WAAW,GAAgB,iBAAiB,CAAC;4BAEnD,aAAa,CAAC,aAAa,CAAC,qBAAqB,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC;4BACpF,aAAa,CAAC,aAAa,CAAC,iBAAiB,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;wBAChF,CAAC;oBACL,CAAC;oBAED,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;wBAC5B,aAAa,CAAC,WAAW,CAAC,4BAA4B,EAAE,IAAI,CAAC,gCAAgC,CAAC,CAAC;oBACnG,CAAC;oBACD,aAAa,CAAC,YAAY,CAAC,oBAAoB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBAEzE,aAAa,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;oBAC5I,aAAa,CAAC,YAAY,CAAC,oBAAoB,EAAE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;oBAE9F,aAAa,CAAC,YAAY,CAAC,sBAAsB,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;oBAE5G,aAAa,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC7D,CAAC;gBAED,WAAW;gBACX,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;oBACxB,IAAI,IAAI,CAAC,iBAAiB,IAAI,aAAa,CAAC,uBAAuB,EAAE,CAAC;wBAClE,aAAa,CAAC,UAAU,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBACzE,CAAC;oBAED,IAAI,IAAI,CAAC,2BAA2B,IAAI,aAAa,CAAC,iCAAiC,IAAI,OAAO,CAAC,8BAA8B,EAAE,CAAC;wBAChI,aAAa,CAAC,UAAU,CAAC,4BAA4B,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;oBAC7F,CAAC;oBAED,IAAI,IAAI,CAAC,6BAA6B,IAAI,aAAa,CAAC,mCAAmC,IAAI,OAAO,CAAC,gCAAgC,EAAE,CAAC;wBACtI,aAAa,CAAC,UAAU,CAAC,8BAA8B,EAAE,IAAI,CAAC,6BAA6B,CAAC,CAAC;oBACjG,CAAC;oBAED,IAAI,IAAI,CAAC,yBAAyB,IAAI,aAAa,CAAC,+BAA+B,IAAI,OAAO,CAAC,4BAA4B,EAAE,CAAC;wBAC1H,aAAa,CAAC,UAAU,CAAC,0BAA0B,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;oBACzF,CAAC;oBAED,IAAI,iBAAiB,IAAI,aAAa,CAAC,wBAAwB,EAAE,CAAC;wBAC9D,IAAI,oBAAoB,EAAE,CAAC;4BACvB,aAAa,CAAC,UAAU,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;wBACrE,CAAC;6BAAM,CAAC;4BACJ,aAAa,CAAC,UAAU,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,cAAc,IAAI,iBAAiB,CAAC,CAAC;4BACrG,aAAa,CAAC,UAAU,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,cAAc,IAAI,iBAAiB,CAAC,CAAC;4BACxG,aAAa,CAAC,UAAU,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,eAAe,IAAI,iBAAiB,CAAC,CAAC;wBAC9G,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;YAED;;;;;eAKG;YACK,qBAAqB,CAAC,KAAY;gBACtC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBAC1B,OAAO,IAAI,CAAC,kBAAkB,CAAC;gBACnC,CAAC;gBAED,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC5B,OAAO,KAAK,CAAC,kBAAkB,CAAC;gBACpC,CAAC;gBAED,OAAO,IAAI,CAAC;YAChB,CAAC;YAED;;eAEG;YACH,IAAW,oBAAoB;gBAC3B,OAAO,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,+BAA+B,CAAC;YAC7E,CAAC;YAED;;;eAGG;YACa,wBAAwB,CAAC,aAA8C;gBACnF,IAAI,aAAa,CAAC,wBAAwB,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,CAAC;oBAC9G,aAAa,CAAC,IAAI,CAAsB,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACrE,CAAC;YACL,CAAC;YAED;;;;eAIG;YACa,UAAU,CAAC,OAAoB;gBAC3C,IAAI,IAAI,CAAC,iBAAiB,KAAK,OAAO,EAAE,CAAC;oBACrC,OAAO,IAAI,CAAC;gBAChB,CAAC;gBAED,IAAI,IAAI,CAAC,kBAAkB,KAAK,OAAO,EAAE,CAAC;oBACtC,OAAO,IAAI,CAAC;gBAChB,CAAC;gBAED,IAAI,IAAI,CAAC,2BAA2B,KAAK,OAAO,EAAE,CAAC;oBAC/C,OAAO,IAAI,CAAC;gBAChB,CAAC;gBAED,IAAI,IAAI,CAAC,6BAA6B,KAAK,OAAO,EAAE,CAAC;oBACjD,OAAO,IAAI,CAAC;gBAChB,CAAC;gBAED,IAAI,IAAI,CAAC,yBAAyB,KAAK,OAAO,EAAE,CAAC;oBAC7C,OAAO,IAAI,CAAC;gBAChB,CAAC;gBAED,OAAO,KAAK,CAAC;YACjB,CAAC;YAEe,uBAAuB;gBACnC,IAAI,aAAa,CAAC,wBAAwB,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,CAAC;oBAC9G,OAAO,IAAI,CAAC;gBAChB,CAAC;gBAED,OAAO,KAAK,CAAC;YACjB,CAAC;YAED;;;eAGG;YACa,iBAAiB,CAAC,cAA6B;gBAC3D,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACzB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAChD,CAAC;gBAED,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBAC1B,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACjD,CAAC;gBAED,IAAI,IAAI,CAAC,2BAA2B,EAAE,CAAC;oBACnC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBAC1D,CAAC;gBAED,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC;oBACjC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;gBACxD,CAAC;gBAED,IAAI,IAAI,CAAC,6BAA6B,EAAE,CAAC;oBACrC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBAC5D,CAAC;YACL,CAAC;YAED;;;eAGG;YACa,cAAc,CAAC,WAA0B;gBACrD,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9G,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC7C,CAAC;gBAED,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjH,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC9C,CAAC;gBAED,IAAI,IAAI,CAAC,2BAA2B,IAAI,IAAI,CAAC,2BAA2B,CAAC,UAAU,IAAI,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5I,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBACvD,CAAC;gBAED,IAAI,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,yBAAyB,CAAC,UAAU,IAAI,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;gBACrD,CAAC;gBAED,IAAI,IAAI,CAAC,6BAA6B,IAAI,IAAI,CAAC,6BAA6B,CAAC,UAAU,IAAI,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClJ,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBACzD,CAAC;YACL,CAAC;YAED;;;eAGG;YACa,OAAO,CAAC,oBAA8B;gBAClD,IAAI,oBAAoB,EAAE,CAAC;oBACvB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBACzB,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;oBACrC,CAAC;oBAED,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;wBAC1B,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;oBACtC,CAAC;oBAED,IAAI,IAAI,CAAC,2BAA2B,EAAE,CAAC;wBACnC,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,CAAC;oBAC/C,CAAC;oBAED,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC;wBACjC,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,CAAC;oBAC7C,CAAC;oBAED,IAAI,IAAI,CAAC,6BAA6B,EAAE,CAAC;wBACrC,IAAI,CAAC,6BAA6B,CAAC,OAAO,EAAE,CAAC;oBACjD,CAAC;gBACL,CAAC;YACL,CAAC;YAEe,YAAY;gBACxB,OAAO,4BAA4B,CAAC;YACxC,CAAC;YAEe,YAAY,CAAC,OAAkC,EAAE,SAA0B,EAAE,WAAmB;gBAC5G,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;oBACxB,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,eAAe,CAAC,CAAC;gBAC1D,CAAC;gBACD,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;oBAC1B,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,iBAAiB,CAAC,CAAC;gBAC5D,CAAC;gBACD,OAAO,WAAW,CAAC;YACvB,CAAC;YAED;;;eAGG;YACa,WAAW,CAAC,QAAkB;gBAC1C,QAAQ,CAAC,IAAI,CACT,kBAAkB,EAClB,4BAA4B,EAC5B,8BAA8B,EAC9B,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,CAC7B,CAAC;YACN,CAAC;YAEe,WAAW;gBACvB,OAAO;oBACH,GAAG,EAAE;wBACD,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;wBAC/D,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;wBAC3D,EAAE,IAAI,EAAE,6BAA6B,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;wBAC9D,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;wBACnD,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;wBACpD,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;wBAClD,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;wBAC5D,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;wBACnD,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;wBAC7D,EAAE,IAAI,EAAE,6BAA6B,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;wBAC/D,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;wBAClD,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;wBACrD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;wBAC7C,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;wBACvD,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;wBACtD,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;wBAClD,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;wBAC9D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;wBAE9C,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;wBACrD,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;wBAC1D,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;qBAC9D;iBACJ,CAAC;YACN,CAAC;;;;;;;;;;;;;;;;;;;;+CA/0BA,SAAS,EAAE,EACX,gBAAgB,CAAC,kCAAkC,CAAC;iDAOpD,SAAS,EAAE,EACX,gBAAgB,CAAC,kCAAkC,CAAC;+CAOpD,SAAS,EAAE,EACX,gBAAgB,CAAC,kCAAkC,CAAC;+CAOpD,SAAS,EAAE,EACX,gBAAgB,CAAC,wBAAwB,CAAC;4DAG1C,SAAS,EAAE;+CAgCX,SAAS,EAAE;iDAQX,SAAS,EAAE;qDAOX,SAAS,EAAE,EACX,gBAAgB,CAAC,kCAAkC,CAAC;uDAOpD,SAAS,EAAE,EACX,gBAAgB,CAAC,kCAAkC,CAAC;4CAWpD,kBAAkB,EAAE,EACpB,gBAAgB,CAAC,kCAAkC,CAAC;6CAOpD,kBAAkB,EAAE,EACpB,gBAAgB,CAAC,kCAAkC,CAAC;6CAapD,SAAS,EAAE,EACX,gBAAgB,CAAC,kCAAkC,CAAC;oDAGpD,SAAS,EAAE;6CA6BX,SAAS,EAAE,EACX,gBAAgB,CAAC,kCAAkC,CAAC;0DASpD,SAAS,EAAE,EACX,gBAAgB,CAAC,kCAAkC,CAAC;4CAOpD,SAAS,EAAE;4CAMX,SAAS,EAAE;+CAMX,SAAS,EAAE;qCAOX,iBAAiB,EAAE;+CAOnB,SAAS,EAAE;sCAMX,SAAS,EAAE;6CAOX,iBAAiB,EAAE;uDAUnB,SAAS,EAAE,EACX,gBAAgB,CAAC,kCAAkC,CAAC;sDAQpD,kBAAkB,EAAE,EACpB,gBAAgB,CAAC,kCAAkC,CAAC;wDAQpD,kBAAkB,EAAE,EACpB,gBAAgB,CAAC,kCAAkC,CAAC;6CAOpD,iBAAiB,EAAE;oDASnB,kBAAkB,EAAE,EACpB,gBAAgB,CAAC,kCAAkC,CAAC;gDAUpD,SAAS,EAAE,EACX,gBAAgB,CAAC,kCAAkC,CAAC;sDAQpD,SAAS,EAAE;8CAOX,SAAS,EAAE;YArRZ,4MAAgB,mBAAmB,6BAAnB,mBAAmB,iHAAS;YAQ5C,kNAAgB,qBAAqB,6BAArB,qBAAqB,qHAAS;YAQ9C,4MAAgB,mBAAmB,6BAAnB,mBAAmB,iHAAS;YAQ5C,4MAAgB,mBAAmB,6BAAnB,mBAAmB,iHAAS;YAmD5C,8NAAgB,yBAAyB,6BAAzB,yBAAyB,6HAAkB;YAQ3D,oOAAgB,2BAA2B,6BAA3B,2BAA2B,iIAAkB;YAY7D,mMAAgB,gBAAgB,6BAAhB,gBAAgB,2GAA+B;YAQ/D,sMAAgB,iBAAiB,6BAAjB,iBAAiB,6GAA+B;YAchE,sMAAgB,iBAAiB,6BAAjB,iBAAiB,6GAAO;YAiCxC,sMAAgB,iBAAiB,6BAAjB,iBAAiB,6GAAS;YAU1C,6OAAgB,8BAA8B,6BAA9B,8BAA8B,uIAAS;YAyDvD,oOAAgB,2BAA2B,6BAA3B,2BAA2B,iIAAkB;YAS7D,iOAAgB,0BAA0B,6BAA1B,0BAA0B,+HAA+B;YASzE,uOAAgB,4BAA4B,6BAA5B,4BAA4B,mIAA+B;YAiB3E,2NAAgB,wBAAwB,6BAAxB,wBAAwB,2HAA+B;YAWvE,+MAAgB,oBAAoB,6BAApB,oBAAoB,mHAAiB;YA5OrD,kPAAQ,gCAAgC,6BAAhC,gCAAgC,2IAAK;YAgC7C,2MAAO,mBAAmB,6BAAnB,mBAAmB,iHAAa;YAQvC,iNAAO,qBAAqB,6BAArB,qBAAqB,qHAAa;YAqDzC,0NAAQ,wBAAwB,6BAAxB,wBAAwB,2HAAQ;YA+CxC,kMAAO,gBAAgB,6BAAhB,gBAAgB,2GAAa;YAMpC,kMAAO,gBAAgB,6BAAhB,gBAAgB,2GAAa;YAMpC,2MAAO,mBAAmB,6BAAnB,mBAAmB,iHAAS;YAOnC,6KAAO,SAAS,6BAAT,SAAS,6FAAkB;YAOlC,2MAAO,mBAAmB,6BAAnB,mBAAmB,iHAAK;YAM/B,gLAAO,UAAU,6BAAV,UAAU,+FAAK;YAOtB,qMAAO,iBAAiB,6BAAjB,iBAAiB,6GAAkB;YAoC1C,qMAAO,iBAAiB,6BAAjB,iBAAiB,6GAA0B;YA6BlD,gOAAO,0BAA0B,6BAA1B,0BAA0B,+HAAmE;YAOpG,wMAAO,kBAAkB,6BAAlB,kBAAkB,+GAA0D;;;QA/SnF;;;;;;WAMG;QACW,uCAAoC,GAAG,KAAM;QAE3D;;;;;WAKG;QACW,8BAA2B,GAAG,KAAM;;;SAhBzC,0BAA0B","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { type Nullable } from \"../../types\";\r\nimport { type IAnimatable } from \"../../Animations/animatable.interface\";\r\nimport { serialize, serializeAsTexture, expandToProperty, serializeAsColor3 } from \"../../Misc/decorators\";\r\nimport { Color3 } from \"../../Maths/math.color.pure\";\r\nimport { type SmartArray } from \"../../Misc/smartArray\";\r\nimport { type BaseTexture } from \"../../Materials/Textures/baseTexture\";\r\nimport { type RenderTargetTexture } from \"../../Materials/Textures/renderTargetTexture\";\r\nimport { MaterialFlags } from \"../materialFlags\";\r\nimport { type UniformBuffer } from \"../../Materials/uniformBuffer\";\r\nimport { type EffectFallbacks } from \"../effectFallbacks\";\r\nimport { type CubeTexture } from \"../Textures/cubeTexture\";\r\nimport { TmpVectors } from \"../../Maths/math.vector.pure\";\r\nimport { type SubMesh } from \"../../Meshes/subMesh\";\r\nimport { MaterialPluginBase } from \"../materialPluginBase.pure\";\r\nimport { Constants } from \"../../Engines/constants\";\r\nimport { MaterialDefines } from \"../materialDefines\";\r\n\r\nimport { type Engine } from \"../../Engines/engine\";\r\nimport { type Scene } from \"../../scene\";\r\nimport { type PBRBaseMaterial } from \"./pbrBaseMaterial\";\r\nimport { BindTextureMatrix, PrepareDefinesForMergedUV } from \"../materialHelper.functions\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class MaterialSubSurfaceDefines extends MaterialDefines {\r\n public SUBSURFACE = false;\r\n\r\n public SS_REFRACTION = false;\r\n public SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS = false;\r\n public SS_TRANSLUCENCY = false;\r\n public SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS = false;\r\n public SS_SCATTERING = false;\r\n public SS_DISPERSION = false;\r\n\r\n public SS_THICKNESSANDMASK_TEXTURE = false;\r\n public SS_THICKNESSANDMASK_TEXTUREDIRECTUV = 0;\r\n public SS_HAS_THICKNESS = false;\r\n public SS_REFRACTIONINTENSITY_TEXTURE = false;\r\n public SS_REFRACTIONINTENSITY_TEXTUREDIRECTUV = 0;\r\n public SS_TRANSLUCENCYINTENSITY_TEXTURE = false;\r\n public SS_TRANSLUCENCYINTENSITY_TEXTUREDIRECTUV = 0;\r\n public SS_TRANSLUCENCYCOLOR_TEXTURE = false;\r\n public SS_TRANSLUCENCYCOLOR_TEXTUREDIRECTUV = 0;\r\n public SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA = false;\r\n\r\n public SS_REFRACTIONMAP_3D = false;\r\n public SS_REFRACTIONMAP_OPPOSITEZ = false;\r\n public SS_LODINREFRACTIONALPHA = false;\r\n public SS_GAMMAREFRACTION = false;\r\n public SS_RGBDREFRACTION = false;\r\n public SS_LINEARSPECULARREFRACTION = false;\r\n public SS_LINKREFRACTIONTOTRANSPARENCY = false;\r\n public SS_ALBEDOFORREFRACTIONTINT = false;\r\n public SS_ALBEDOFORTRANSLUCENCYTINT = false;\r\n public SS_USE_LOCAL_REFRACTIONMAP_CUBIC = false;\r\n public SS_USE_THICKNESS_AS_DEPTH = false;\r\n\r\n public SS_USE_GLTF_TEXTURES = false;\r\n public SS_APPLY_ALBEDO_AFTER_SUBSURFACE = false;\r\n public SS_TRANSLUCENCY_LEGACY = false;\r\n}\r\n\r\n/**\r\n * Plugin that implements the sub surface component of the PBR material\r\n */\r\nexport class PBRSubSurfaceConfiguration extends MaterialPluginBase {\r\n /**\r\n * Default value used for applyAlbedoAfterSubSurface.\r\n *\r\n * This property only exists for backward compatibility reasons.\r\n * Set it to true if your rendering in 8.0+ is different from that in 7 when you use sub-surface properties (transmission, refraction, etc.). Default is false.\r\n * Note however that the PBR calculation is wrong when this property is set to true, so only use it if you want to mimic the 7.0 behavior.\r\n */\r\n public static DEFAULT_APPLY_ALBEDO_AFTERSUBSURFACE = false;\r\n\r\n /**\r\n * Default value used for legacyTranslucency.\r\n *\r\n * This property only exists for backward compatibility reasons.\r\n * Set it to true if your rendering in 8.0+ is different from that in 7 when you use sub-surface translucency. Default is false.\r\n */\r\n public static DEFAULT_LEGACY_TRANSLUCENCY = false;\r\n\r\n declare protected _material: PBRBaseMaterial;\r\n\r\n private _isRefractionEnabled = false;\r\n /**\r\n * Defines if the refraction is enabled in the material.\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor isRefractionEnabled = false;\r\n\r\n private _isTranslucencyEnabled = false;\r\n /**\r\n * Defines if the translucency is enabled in the material.\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor isTranslucencyEnabled = false;\r\n\r\n private _isDispersionEnabled = false;\r\n /**\r\n * Defines if dispersion is enabled in the material.\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor isDispersionEnabled = false;\r\n\r\n private _isScatteringEnabled = false;\r\n /**\r\n * Defines if the sub surface scattering is enabled in the material.\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markScenePrePassDirty\")\r\n public accessor isScatteringEnabled = false;\r\n\r\n @serialize()\r\n private _scatteringDiffusionProfileIndex = 0;\r\n\r\n /**\r\n * Diffusion profile for subsurface scattering.\r\n * Useful for better scattering in the skins or foliages.\r\n */\r\n public get scatteringDiffusionProfile(): Nullable<Color3> {\r\n if (!this._scene.subSurfaceConfiguration) {\r\n return null;\r\n }\r\n\r\n return this._scene.subSurfaceConfiguration.ssDiffusionProfileColors[this._scatteringDiffusionProfileIndex];\r\n }\r\n\r\n public set scatteringDiffusionProfile(c: Nullable<Color3>) {\r\n if (!this._scene.enableSubSurfaceForPrePass()) {\r\n // Not supported\r\n return;\r\n }\r\n\r\n // addDiffusionProfile automatically checks for doubles\r\n if (c) {\r\n this._scatteringDiffusionProfileIndex = this._scene.subSurfaceConfiguration!.addDiffusionProfile(c);\r\n }\r\n }\r\n\r\n /**\r\n * Defines the refraction intensity of the material.\r\n * The refraction when enabled replaces the Diffuse part of the material.\r\n * The intensity helps transitioning between diffuse and refraction.\r\n */\r\n @serialize()\r\n public refractionIntensity: number = 1;\r\n\r\n /**\r\n * Defines the translucency intensity of the material.\r\n * When translucency has been enabled, this defines how much of the \"translucency\"\r\n * is added to the diffuse part of the material.\r\n */\r\n @serialize()\r\n public translucencyIntensity: number = 1;\r\n\r\n private _useAlbedoToTintRefraction = false;\r\n /**\r\n * When enabled, transparent surfaces will be tinted with the albedo colour (independent of thickness)\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor useAlbedoToTintRefraction: boolean = false;\r\n\r\n private _useAlbedoToTintTranslucency = false;\r\n /**\r\n * When enabled, translucent surfaces will be tinted with the albedo colour (independent of thickness)\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor useAlbedoToTintTranslucency: boolean = false;\r\n\r\n private _thicknessTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Stores the average thickness of a mesh in a texture (The texture is holding the values linearly).\r\n * The red (or green if useGltfStyleTextures=true) channel of the texture should contain the thickness remapped between 0 and 1.\r\n * 0 would mean minimumThickness\r\n * 1 would mean maximumThickness\r\n * The other channels might be use as a mask to vary the different effects intensity.\r\n */\r\n @serializeAsTexture()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor thicknessTexture: Nullable<BaseTexture> = null;\r\n\r\n private _refractionTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Defines the texture to use for refraction.\r\n */\r\n @serializeAsTexture()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor refractionTexture: Nullable<BaseTexture> = null;\r\n\r\n /** @internal */\r\n public _indexOfRefraction = 1.5;\r\n /**\r\n * Index of refraction of the material base layer.\r\n * https://en.wikipedia.org/wiki/List_of_refractive_indices\r\n *\r\n * This does not only impact refraction but also the Base F0 of Dielectric Materials.\r\n *\r\n * From dielectric fresnel rules: F0 = square((iorT - iorI) / (iorT + iorI))\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor indexOfRefraction = 1.5;\r\n\r\n @serialize()\r\n private _volumeIndexOfRefraction = -1.0;\r\n\r\n /**\r\n * Index of refraction of the material's volume.\r\n * https://en.wikipedia.org/wiki/List_of_refractive_indices\r\n *\r\n * This ONLY impacts refraction. If not provided or given a non-valid value,\r\n * the volume will use the same IOR as the surface.\r\n */\r\n public get volumeIndexOfRefraction(): number {\r\n if (this._volumeIndexOfRefraction >= 1.0) {\r\n return this._volumeIndexOfRefraction;\r\n }\r\n return this._indexOfRefraction;\r\n }\r\n public set volumeIndexOfRefraction(value: number) {\r\n const volumeIndexOfRefraction = value >= 1.0 ? value : -1.0;\r\n if (this._volumeIndexOfRefraction === volumeIndexOfRefraction) {\r\n return;\r\n }\r\n this._volumeIndexOfRefraction = volumeIndexOfRefraction;\r\n this._markAllSubMeshesAsTexturesDirty();\r\n }\r\n\r\n private _invertRefractionY = false;\r\n /**\r\n * Controls if refraction needs to be inverted on Y. This could be useful for procedural texture.\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor invertRefractionY = false;\r\n\r\n /** @internal */\r\n public _linkRefractionWithTransparency = false;\r\n /**\r\n * This parameters will make the material used its opacity to control how much it is refracting against not.\r\n * Materials half opaque for instance using refraction could benefit from this control.\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor linkRefractionWithTransparency = false;\r\n\r\n /**\r\n * Defines the minimum thickness stored in the thickness map.\r\n * If no thickness map is defined, this value will be used to simulate thickness.\r\n */\r\n @serialize()\r\n public minimumThickness: number = 0;\r\n\r\n /**\r\n * Defines the maximum thickness stored in the thickness map.\r\n */\r\n @serialize()\r\n public maximumThickness: number = 1;\r\n\r\n /**\r\n * Defines that the thickness should be used as a measure of the depth volume.\r\n */\r\n @serialize()\r\n public useThicknessAsDepth = false;\r\n\r\n /**\r\n * Defines the volume tint of the material.\r\n * This is used for both translucency and scattering.\r\n */\r\n @serializeAsColor3()\r\n public tintColor = Color3.White();\r\n\r\n /**\r\n * Defines the distance at which the tint color should be found in the media.\r\n * This is used for refraction only.\r\n */\r\n @serialize()\r\n public tintColorAtDistance = 1;\r\n\r\n /**\r\n * Defines the Abbe number for the volume.\r\n */\r\n @serialize()\r\n public dispersion = 0;\r\n\r\n /**\r\n * Defines how far each channel transmit through the media.\r\n * It is defined as a color to simplify it selection.\r\n */\r\n @serializeAsColor3()\r\n public diffusionDistance = Color3.White();\r\n\r\n private _useMaskFromThicknessTexture = false;\r\n /**\r\n * Stores the intensity of the different subsurface effects in the thickness texture.\r\n * Note that if refractionIntensityTexture and/or translucencyIntensityTexture is provided it takes precedence over thicknessTexture + useMaskFromThicknessTexture\r\n * * the green (red if useGltfStyleTextures = true) channel is the refraction intensity.\r\n * * the blue (alpha if useGltfStyleTextures = true) channel is the translucency intensity.\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor useMaskFromThicknessTexture: boolean = false;\r\n\r\n private _refractionIntensityTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Stores the intensity of the refraction. If provided, it takes precedence over thicknessTexture + useMaskFromThicknessTexture\r\n * * the green (red if useGltfStyleTextures = true) channel is the refraction intensity.\r\n */\r\n @serializeAsTexture()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor refractionIntensityTexture: Nullable<BaseTexture> = null;\r\n\r\n private _translucencyIntensityTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Stores the intensity of the translucency. If provided, it takes precedence over thicknessTexture + useMaskFromThicknessTexture\r\n * * the blue (alpha if useGltfStyleTextures = true) channel is the translucency intensity.\r\n */\r\n @serializeAsTexture()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor translucencyIntensityTexture: Nullable<BaseTexture> = null;\r\n\r\n /**\r\n * Defines the translucency tint of the material.\r\n * If not set, the tint color will be used instead.\r\n */\r\n @serializeAsColor3()\r\n public translucencyColor: Nullable<Color3> = null;\r\n\r\n private _translucencyColorTexture: Nullable<BaseTexture> = null;\r\n /**\r\n * Defines the translucency tint color of the material as a texture.\r\n * This is multiplied against the translucency color to add variety and realism to the material.\r\n * If translucencyColor is not set, the tint color will be used instead.\r\n */\r\n @serializeAsTexture()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor translucencyColorTexture: Nullable<BaseTexture> = null;\r\n\r\n private _useGltfStyleTextures = true;\r\n /**\r\n * Use channels layout used by glTF:\r\n * * thicknessTexture: the green (instead of red) channel is the thickness\r\n * * thicknessTexture/refractionIntensityTexture: the red (instead of green) channel is the refraction intensity\r\n * * thicknessTexture/translucencyIntensityTexture: the alpha (instead of blue) channel is the translucency intensity\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public accessor useGltfStyleTextures: boolean = true;\r\n\r\n /**\r\n * This property only exists for backward compatibility reasons.\r\n * Set it to true if your rendering in 8.0+ is different from that in 7 when you use sub-surface properties (transmission, refraction, etc.). Default is false.\r\n * Note however that the PBR calculation is wrong when this property is set to true, so only use it if you want to mimic the 7.0 behavior.\r\n */\r\n @serialize()\r\n public applyAlbedoAfterSubSurface = PBRSubSurfaceConfiguration.DEFAULT_APPLY_ALBEDO_AFTERSUBSURFACE;\r\n\r\n /**\r\n * This property only exists for backward compatibility reasons.\r\n * Set it to true if your rendering in 8.0+ is different from that in 7 when you use sub-surface translucency. Default is false.\r\n */\r\n @serialize()\r\n public legacyTranslucency = PBRSubSurfaceConfiguration.DEFAULT_LEGACY_TRANSLUCENCY;\r\n\r\n /**\r\n * Keeping for backward compatibility... Should not be used anymore. It has been replaced by\r\n * the property with the correct spelling.\r\n * @see legacyTranslucency\r\n */\r\n public get legacyTransluceny(): boolean {\r\n return this.legacyTranslucency;\r\n }\r\n public set legacyTransluceny(value: boolean) {\r\n this.legacyTranslucency = value;\r\n }\r\n\r\n private _scene: Scene;\r\n\r\n /** @internal */\r\n private _internalMarkAllSubMeshesAsTexturesDirty: () => void;\r\n private _internalMarkScenePrePassDirty: () => void;\r\n\r\n /** @internal */\r\n public _markAllSubMeshesAsTexturesDirty(): void {\r\n this._enable(this._isRefractionEnabled || this._isTranslucencyEnabled || this._isScatteringEnabled);\r\n this._internalMarkAllSubMeshesAsTexturesDirty();\r\n }\r\n /** @internal */\r\n public _markScenePrePassDirty(): void {\r\n this._enable(this._isRefractionEnabled || this._isTranslucencyEnabled || this._isScatteringEnabled);\r\n this._internalMarkAllSubMeshesAsTexturesDirty();\r\n this._internalMarkScenePrePassDirty();\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating that the plugin is compatible with a given shader language.\r\n * @returns true if the plugin is compatible with the shader language\r\n */\r\n public override isCompatible(): boolean {\r\n return true;\r\n }\r\n\r\n constructor(material: PBRBaseMaterial, addToPluginList = true) {\r\n super(material, \"PBRSubSurface\", 130, new MaterialSubSurfaceDefines(), addToPluginList);\r\n\r\n this._scene = material.getScene();\r\n this.registerForExtraEvents = true;\r\n\r\n this._internalMarkAllSubMeshesAsTexturesDirty = material._dirtyCallbacks[Constants.MATERIAL_TextureDirtyFlag];\r\n this._internalMarkScenePrePassDirty = material._dirtyCallbacks[Constants.MATERIAL_PrePassDirtyFlag];\r\n }\r\n\r\n /**\r\n * Checks whether the subsurface textures are ready for the sub mesh.\r\n * @param defines defines the material defines to inspect\r\n * @param scene defines the scene to use for readiness checks\r\n * @returns true if subsurface is ready\r\n */\r\n public override isReadyForSubMesh(defines: MaterialSubSurfaceDefines, scene: Scene): boolean {\r\n if (!this._isRefractionEnabled && !this._isTranslucencyEnabled && !this._isScatteringEnabled) {\r\n return true;\r\n }\r\n\r\n if (defines._areTexturesDirty) {\r\n if (scene.texturesEnabled) {\r\n if (this._thicknessTexture && MaterialFlags.ThicknessTextureEnabled) {\r\n if (!this._thicknessTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n }\r\n\r\n if (this._refractionIntensityTexture && MaterialFlags.RefractionIntensityTextureEnabled) {\r\n if (!this._refractionIntensityTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n }\r\n\r\n if (this._translucencyColorTexture && MaterialFlags.TranslucencyColorTextureEnabled) {\r\n if (!this._translucencyColorTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n }\r\n\r\n if (this._translucencyIntensityTexture && MaterialFlags.TranslucencyIntensityTextureEnabled) {\r\n if (!this._translucencyIntensityTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n }\r\n\r\n const refractionTexture = this._getRefractionTexture(scene);\r\n if (refractionTexture && MaterialFlags.RefractionTextureEnabled) {\r\n if (!refractionTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Updates shader defines for subsurface rendering before attributes are processed.\r\n * @param defines defines the material defines to update\r\n * @param scene defines the scene to use for texture checks\r\n */\r\n public override prepareDefinesBeforeAttributes(defines: MaterialSubSurfaceDefines, scene: Scene): void {\r\n if (!this._isRefractionEnabled && !this._isTranslucencyEnabled && !this._isScatteringEnabled) {\r\n defines.SUBSURFACE = false;\r\n defines.SS_DISPERSION = false;\r\n defines.SS_TRANSLUCENCY = false;\r\n defines.SS_SCATTERING = false;\r\n defines.SS_REFRACTION = false;\r\n defines.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS = false;\r\n defines.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS = false;\r\n defines.SS_THICKNESSANDMASK_TEXTURE = false;\r\n defines.SS_THICKNESSANDMASK_TEXTUREDIRECTUV = 0;\r\n defines.SS_HAS_THICKNESS = false;\r\n defines.SS_REFRACTIONINTENSITY_TEXTURE = false;\r\n defines.SS_REFRACTIONINTENSITY_TEXTUREDIRECTUV = 0;\r\n defines.SS_TRANSLUCENCYINTENSITY_TEXTURE = false;\r\n defines.SS_TRANSLUCENCYINTENSITY_TEXTUREDIRECTUV = 0;\r\n defines.SS_REFRACTIONMAP_3D = false;\r\n defines.SS_REFRACTIONMAP_OPPOSITEZ = false;\r\n defines.SS_LODINREFRACTIONALPHA = false;\r\n defines.SS_GAMMAREFRACTION = false;\r\n defines.SS_RGBDREFRACTION = false;\r\n defines.SS_LINEARSPECULARREFRACTION = false;\r\n defines.SS_LINKREFRACTIONTOTRANSPARENCY = false;\r\n defines.SS_ALBEDOFORREFRACTIONTINT = false;\r\n defines.SS_ALBEDOFORTRANSLUCENCYTINT = false;\r\n defines.SS_USE_LOCAL_REFRACTIONMAP_CUBIC = false;\r\n defines.SS_USE_THICKNESS_AS_DEPTH = false;\r\n defines.SS_USE_GLTF_TEXTURES = false;\r\n defines.SS_TRANSLUCENCYCOLOR_TEXTURE = false;\r\n defines.SS_TRANSLUCENCYCOLOR_TEXTUREDIRECTUV = 0;\r\n defines.SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA = false;\r\n defines.SS_APPLY_ALBEDO_AFTER_SUBSURFACE = false;\r\n return;\r\n }\r\n\r\n if (defines._areTexturesDirty) {\r\n defines.SUBSURFACE = true;\r\n\r\n defines.SS_DISPERSION = this._isDispersionEnabled;\r\n defines.SS_TRANSLUCENCY = this._isTranslucencyEnabled;\r\n defines.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS = false;\r\n defines.SS_TRANSLUCENCY_LEGACY = this.legacyTranslucency;\r\n defines.SS_SCATTERING = this._isScatteringEnabled;\r\n defines.SS_THICKNESSANDMASK_TEXTURE = false;\r\n defines.SS_REFRACTIONINTENSITY_TEXTURE = false;\r\n defines.SS_TRANSLUCENCYINTENSITY_TEXTURE = false;\r\n defines.SS_HAS_THICKNESS = false;\r\n defines.SS_USE_GLTF_TEXTURES = false;\r\n defines.SS_REFRACTION = false;\r\n defines.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS = false;\r\n defines.SS_REFRACTIONMAP_3D = false;\r\n defines.SS_GAMMAREFRACTION = false;\r\n defines.SS_RGBDREFRACTION = false;\r\n defines.SS_LINEARSPECULARREFRACTION = false;\r\n defines.SS_REFRACTIONMAP_OPPOSITEZ = false;\r\n defines.SS_LODINREFRACTIONALPHA = false;\r\n defines.SS_LINKREFRACTIONTOTRANSPARENCY = false;\r\n defines.SS_ALBEDOFORREFRACTIONTINT = false;\r\n defines.SS_ALBEDOFORTRANSLUCENCYTINT = false;\r\n defines.SS_USE_LOCAL_REFRACTIONMAP_CUBIC = false;\r\n defines.SS_USE_THICKNESS_AS_DEPTH = false;\r\n defines.SS_TRANSLUCENCYCOLOR_TEXTURE = false;\r\n defines.SS_APPLY_ALBEDO_AFTER_SUBSURFACE = this.applyAlbedoAfterSubSurface;\r\n\r\n if (defines._areTexturesDirty) {\r\n if (scene.texturesEnabled) {\r\n if (this._thicknessTexture && MaterialFlags.ThicknessTextureEnabled) {\r\n PrepareDefinesForMergedUV(this._thicknessTexture, defines, \"SS_THICKNESSANDMASK_TEXTURE\");\r\n }\r\n\r\n if (this._refractionIntensityTexture && MaterialFlags.RefractionIntensityTextureEnabled) {\r\n PrepareDefinesForMergedUV(this._refractionIntensityTexture, defines, \"SS_REFRACTIONINTENSITY_TEXTURE\");\r\n }\r\n\r\n if (this._translucencyIntensityTexture && MaterialFlags.TranslucencyIntensityTextureEnabled) {\r\n PrepareDefinesForMergedUV(this._translucencyIntensityTexture, defines, \"SS_TRANSLUCENCYINTENSITY_TEXTURE\");\r\n }\r\n\r\n if (this._translucencyColorTexture && MaterialFlags.TranslucencyColorTextureEnabled) {\r\n PrepareDefinesForMergedUV(this._translucencyColorTexture, defines, \"SS_TRANSLUCENCYCOLOR_TEXTURE\");\r\n defines.SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA = this._translucencyColorTexture.gammaSpace;\r\n }\r\n }\r\n }\r\n\r\n defines.SS_HAS_THICKNESS = this.maximumThickness - this.minimumThickness !== 0.0;\r\n defines.SS_USE_GLTF_TEXTURES = this._useGltfStyleTextures;\r\n defines.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS = this._useMaskFromThicknessTexture && !this._refractionIntensityTexture;\r\n defines.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS = this._useMaskFromThicknessTexture && !this._translucencyIntensityTexture;\r\n\r\n if (this._isRefractionEnabled) {\r\n if (scene.texturesEnabled) {\r\n const refractionTexture = this._getRefractionTexture(scene);\r\n if (refractionTexture && MaterialFlags.RefractionTextureEnabled) {\r\n defines.SS_REFRACTION = true;\r\n defines.SS_REFRACTIONMAP_3D = refractionTexture.isCube;\r\n defines.SS_GAMMAREFRACTION = refractionTexture.gammaSpace;\r\n defines.SS_RGBDREFRACTION = refractionTexture.isRGBD;\r\n defines.SS_LINEARSPECULARREFRACTION = refractionTexture.linearSpecularLOD;\r\n defines.SS_REFRACTIONMAP_OPPOSITEZ = this._scene.useRightHandedSystem && refractionTexture.isCube ? !refractionTexture.invertZ : refractionTexture.invertZ;\r\n defines.SS_LODINREFRACTIONALPHA = refractionTexture.lodLevelInAlpha;\r\n defines.SS_LINKREFRACTIONTOTRANSPARENCY = this._linkRefractionWithTransparency;\r\n defines.SS_ALBEDOFORREFRACTIONTINT = this._useAlbedoToTintRefraction;\r\n defines.SS_USE_LOCAL_REFRACTIONMAP_CUBIC = refractionTexture.isCube && (<any>refractionTexture).boundingBoxSize;\r\n defines.SS_USE_THICKNESS_AS_DEPTH = this.useThicknessAsDepth;\r\n }\r\n }\r\n }\r\n\r\n if (this._isTranslucencyEnabled) {\r\n defines.SS_ALBEDOFORTRANSLUCENCYTINT = this._useAlbedoToTintTranslucency;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Binds the material data (this function is called even if mustRebind() returns false)\r\n * @param uniformBuffer defines the Uniform buffer to fill in.\r\n * @param scene defines the scene the material belongs to.\r\n * @param engine defines the engine the material belongs to.\r\n * @param subMesh the submesh to bind data for\r\n */\r\n public override hardBindForSubMesh(uniformBuffer: UniformBuffer, scene: Scene, engine: Engine, subMesh: SubMesh): void {\r\n if (!this._isRefractionEnabled && !this._isTranslucencyEnabled && !this._isScatteringEnabled) {\r\n return;\r\n }\r\n\r\n // If min/max thickness is 0, avoid decompising to determine the scaled thickness (it's always zero).\r\n if (this.maximumThickness === 0.0 && this.minimumThickness === 0.0) {\r\n uniformBuffer.updateFloat2(\"vThicknessParam\", 0, 0);\r\n } else {\r\n subMesh.getRenderingMesh().getWorldMatrix().decompose(TmpVectors.Vector3[0]);\r\n const thicknessScale = Math.max(Math.abs(TmpVectors.Vector3[0].x), Math.abs(TmpVectors.Vector3[0].y), Math.abs(TmpVectors.Vector3[0].z));\r\n uniformBuffer.updateFloat2(\"vThicknessParam\", this.minimumThickness * thicknessScale, (this.maximumThickness - this.minimumThickness) * thicknessScale);\r\n }\r\n }\r\n\r\n /**\r\n * Binds subsurface data for a sub mesh.\r\n * @param uniformBuffer defines the uniform buffer to update\r\n * @param scene defines the scene to use for texture binding\r\n * @param engine defines the engine used for binding\r\n * @param subMesh defines the sub mesh being rendered\r\n */\r\n public override bindForSubMesh(uniformBuffer: UniformBuffer, scene: Scene, engine: Engine, subMesh: SubMesh): void {\r\n if (!this._isRefractionEnabled && !this._isTranslucencyEnabled && !this._isScatteringEnabled) {\r\n return;\r\n }\r\n\r\n const defines = subMesh.materialDefines as unknown as MaterialSubSurfaceDefines;\r\n\r\n const isFrozen = this._material.isFrozen;\r\n const realTimeFiltering = this._material.realTimeFiltering;\r\n const lodBasedMicrosurface = defines.LODBASEDMICROSFURACE;\r\n\r\n const refractionTexture = this._getRefractionTexture(scene);\r\n\r\n if (!uniformBuffer.useUbo || !isFrozen || !uniformBuffer.isSync) {\r\n if (this._thicknessTexture && MaterialFlags.ThicknessTextureEnabled) {\r\n uniformBuffer.updateFloat2(\"vThicknessInfos\", this._thicknessTexture.coordinatesIndex, this._thicknessTexture.level);\r\n BindTextureMatrix(this._thicknessTexture, uniformBuffer, \"thickness\");\r\n }\r\n\r\n if (this._refractionIntensityTexture && MaterialFlags.RefractionIntensityTextureEnabled && defines.SS_REFRACTIONINTENSITY_TEXTURE) {\r\n uniformBuffer.updateFloat2(\"vRefractionIntensityInfos\", this._refractionIntensityTexture.coordinatesIndex, this._refractionIntensityTexture.level);\r\n BindTextureMatrix(this._refractionIntensityTexture, uniformBuffer, \"refractionIntensity\");\r\n }\r\n\r\n if (this._translucencyColorTexture && MaterialFlags.TranslucencyColorTextureEnabled && defines.SS_TRANSLUCENCYCOLOR_TEXTURE) {\r\n uniformBuffer.updateFloat2(\"vTranslucencyColorInfos\", this._translucencyColorTexture.coordinatesIndex, this._translucencyColorTexture.level);\r\n BindTextureMatrix(this._translucencyColorTexture, uniformBuffer, \"translucencyColor\");\r\n }\r\n\r\n if (this._translucencyIntensityTexture && MaterialFlags.TranslucencyIntensityTextureEnabled && defines.SS_TRANSLUCENCYINTENSITY_TEXTURE) {\r\n uniformBuffer.updateFloat2(\"vTranslucencyIntensityInfos\", this._translucencyIntensityTexture.coordinatesIndex, this._translucencyIntensityTexture.level);\r\n BindTextureMatrix(this._translucencyIntensityTexture, uniformBuffer, \"translucencyIntensity\");\r\n }\r\n\r\n if (refractionTexture && MaterialFlags.RefractionTextureEnabled) {\r\n uniformBuffer.updateMatrix(\"refractionMatrix\", refractionTexture.getRefractionTextureMatrix());\r\n\r\n let depth = 1.0;\r\n if (!refractionTexture.isCube) {\r\n if ((<any>refractionTexture).depth) {\r\n depth = (<any>refractionTexture).depth;\r\n }\r\n }\r\n\r\n const width = refractionTexture.getSize().width;\r\n const refractionIor = this.volumeIndexOfRefraction;\r\n uniformBuffer.updateFloat4(\"vRefractionInfos\", refractionTexture.level, 1 / refractionIor, depth, this._invertRefractionY ? -1 : 1);\r\n uniformBuffer.updateFloat4(\r\n \"vRefractionMicrosurfaceInfos\",\r\n width,\r\n refractionTexture.lodGenerationScale,\r\n refractionTexture.lodGenerationOffset,\r\n 1.0 / this.indexOfRefraction\r\n );\r\n\r\n if (realTimeFiltering) {\r\n uniformBuffer.updateFloat2(\"vRefractionFilteringInfo\", width, Math.log2(width));\r\n }\r\n\r\n if ((<any>refractionTexture).boundingBoxSize) {\r\n const cubeTexture = <CubeTexture>refractionTexture;\r\n\r\n uniformBuffer.updateVector3(\"vRefractionPosition\", cubeTexture.boundingBoxPosition);\r\n uniformBuffer.updateVector3(\"vRefractionSize\", cubeTexture.boundingBoxSize);\r\n }\r\n }\r\n\r\n if (this._isScatteringEnabled) {\r\n uniformBuffer.updateFloat(\"scatteringDiffusionProfile\", this._scatteringDiffusionProfileIndex);\r\n }\r\n uniformBuffer.updateColor3(\"vDiffusionDistance\", this.diffusionDistance);\r\n\r\n uniformBuffer.updateFloat4(\"vTintColor\", this.tintColor.r, this.tintColor.g, this.tintColor.b, Math.max(0.00001, this.tintColorAtDistance));\r\n uniformBuffer.updateColor4(\"vTranslucencyColor\", this.translucencyColor ?? this.tintColor, 0);\r\n\r\n uniformBuffer.updateFloat3(\"vSubSurfaceIntensity\", this.refractionIntensity, this.translucencyIntensity, 0);\r\n\r\n uniformBuffer.updateFloat(\"dispersion\", this.dispersion);\r\n }\r\n\r\n // Textures\r\n if (scene.texturesEnabled) {\r\n if (this._thicknessTexture && MaterialFlags.ThicknessTextureEnabled) {\r\n uniformBuffer.setTexture(\"thicknessSampler\", this._thicknessTexture);\r\n }\r\n\r\n if (this._refractionIntensityTexture && MaterialFlags.RefractionIntensityTextureEnabled && defines.SS_REFRACTIONINTENSITY_TEXTURE) {\r\n uniformBuffer.setTexture(\"refractionIntensitySampler\", this._refractionIntensityTexture);\r\n }\r\n\r\n if (this._translucencyIntensityTexture && MaterialFlags.TranslucencyIntensityTextureEnabled && defines.SS_TRANSLUCENCYINTENSITY_TEXTURE) {\r\n uniformBuffer.setTexture(\"translucencyIntensitySampler\", this._translucencyIntensityTexture);\r\n }\r\n\r\n if (this._translucencyColorTexture && MaterialFlags.TranslucencyColorTextureEnabled && defines.SS_TRANSLUCENCYCOLOR_TEXTURE) {\r\n uniformBuffer.setTexture(\"translucencyColorSampler\", this._translucencyColorTexture);\r\n }\r\n\r\n if (refractionTexture && MaterialFlags.RefractionTextureEnabled) {\r\n if (lodBasedMicrosurface) {\r\n uniformBuffer.setTexture(\"refractionSampler\", refractionTexture);\r\n } else {\r\n uniformBuffer.setTexture(\"refractionSampler\", refractionTexture._lodTextureMid || refractionTexture);\r\n uniformBuffer.setTexture(\"refractionSamplerLow\", refractionTexture._lodTextureLow || refractionTexture);\r\n uniformBuffer.setTexture(\"refractionSamplerHigh\", refractionTexture._lodTextureHigh || refractionTexture);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Returns the texture used for refraction or null if none is used.\r\n * @param scene defines the scene the material belongs to.\r\n * @returns - Refraction texture if present. If no refraction texture and refraction\r\n * is linked with transparency, returns environment texture. Otherwise, returns null.\r\n */\r\n private _getRefractionTexture(scene: Scene): Nullable<BaseTexture> {\r\n if (this._refractionTexture) {\r\n return this._refractionTexture;\r\n }\r\n\r\n if (this._isRefractionEnabled) {\r\n return scene.environmentTexture;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Returns true if alpha blending should be disabled.\r\n */\r\n public get disableAlphaBlending(): boolean {\r\n return this._isRefractionEnabled && this._linkRefractionWithTransparency;\r\n }\r\n\r\n /**\r\n * Fills the list of render target textures.\r\n * @param renderTargets the list of render targets to update\r\n */\r\n public override fillRenderTargetTextures(renderTargets: SmartArray<RenderTargetTexture>): void {\r\n if (MaterialFlags.RefractionTextureEnabled && this._refractionTexture && this._refractionTexture.isRenderTarget) {\r\n renderTargets.push(<RenderTargetTexture>this._refractionTexture);\r\n }\r\n }\r\n\r\n /**\r\n * Checks whether subsurface rendering uses a texture.\r\n * @param texture defines the texture to check\r\n * @returns true if the texture is used by subsurface rendering\r\n */\r\n public override hasTexture(texture: BaseTexture): boolean {\r\n if (this._thicknessTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._refractionTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._refractionIntensityTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._translucencyIntensityTexture === texture) {\r\n return true;\r\n }\r\n\r\n if (this._translucencyColorTexture === texture) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public override hasRenderTargetTextures(): boolean {\r\n if (MaterialFlags.RefractionTextureEnabled && this._refractionTexture && this._refractionTexture.isRenderTarget) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Adds the active subsurface textures.\r\n * @param activeTextures defines the list of active textures to update\r\n */\r\n public override getActiveTextures(activeTextures: BaseTexture[]): void {\r\n if (this._thicknessTexture) {\r\n activeTextures.push(this._thicknessTexture);\r\n }\r\n\r\n if (this._refractionTexture) {\r\n activeTextures.push(this._refractionTexture);\r\n }\r\n\r\n if (this._refractionIntensityTexture) {\r\n activeTextures.push(this._refractionIntensityTexture);\r\n }\r\n\r\n if (this._translucencyColorTexture) {\r\n activeTextures.push(this._translucencyColorTexture);\r\n }\r\n\r\n if (this._translucencyIntensityTexture) {\r\n activeTextures.push(this._translucencyIntensityTexture);\r\n }\r\n }\r\n\r\n /**\r\n * Adds the animatable subsurface textures.\r\n * @param animatables defines the list of animatables to update\r\n */\r\n public override getAnimatables(animatables: IAnimatable[]): void {\r\n if (this._thicknessTexture && this._thicknessTexture.animations && this._thicknessTexture.animations.length > 0) {\r\n animatables.push(this._thicknessTexture);\r\n }\r\n\r\n if (this._refractionTexture && this._refractionTexture.animations && this._refractionTexture.animations.length > 0) {\r\n animatables.push(this._refractionTexture);\r\n }\r\n\r\n if (this._refractionIntensityTexture && this._refractionIntensityTexture.animations && this._refractionIntensityTexture.animations.length > 0) {\r\n animatables.push(this._refractionIntensityTexture);\r\n }\r\n\r\n if (this._translucencyColorTexture && this._translucencyColorTexture.animations && this._translucencyColorTexture.animations.length > 0) {\r\n animatables.push(this._translucencyColorTexture);\r\n }\r\n\r\n if (this._translucencyIntensityTexture && this._translucencyIntensityTexture.animations && this._translucencyIntensityTexture.animations.length > 0) {\r\n animatables.push(this._translucencyIntensityTexture);\r\n }\r\n }\r\n\r\n /**\r\n * Disposes the subsurface textures.\r\n * @param forceDisposeTextures defines whether to dispose the textures\r\n */\r\n public override dispose(forceDisposeTextures?: boolean): void {\r\n if (forceDisposeTextures) {\r\n if (this._thicknessTexture) {\r\n this._thicknessTexture.dispose();\r\n }\r\n\r\n if (this._refractionTexture) {\r\n this._refractionTexture.dispose();\r\n }\r\n\r\n if (this._refractionIntensityTexture) {\r\n this._refractionIntensityTexture.dispose();\r\n }\r\n\r\n if (this._translucencyColorTexture) {\r\n this._translucencyColorTexture.dispose();\r\n }\r\n\r\n if (this._translucencyIntensityTexture) {\r\n this._translucencyIntensityTexture.dispose();\r\n }\r\n }\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"PBRSubSurfaceConfiguration\";\r\n }\r\n\r\n public override addFallbacks(defines: MaterialSubSurfaceDefines, fallbacks: EffectFallbacks, currentRank: number): number {\r\n if (defines.SS_SCATTERING) {\r\n fallbacks.addFallback(currentRank++, \"SS_SCATTERING\");\r\n }\r\n if (defines.SS_TRANSLUCENCY) {\r\n fallbacks.addFallback(currentRank++, \"SS_TRANSLUCENCY\");\r\n }\r\n return currentRank;\r\n }\r\n\r\n /**\r\n * Adds the subsurface sampler names.\r\n * @param samplers defines the list of sampler names to update\r\n */\r\n public override getSamplers(samplers: string[]): void {\r\n samplers.push(\r\n \"thicknessSampler\",\r\n \"refractionIntensitySampler\",\r\n \"translucencyIntensitySampler\",\r\n \"refractionSampler\",\r\n \"refractionSamplerLow\",\r\n \"refractionSamplerHigh\",\r\n \"translucencyColorSampler\"\r\n );\r\n }\r\n\r\n public override getUniforms(): { ubo?: Array<{ name: string; size: number; type: string }>; vertex?: string; fragment?: string } {\r\n return {\r\n ubo: [\r\n { name: \"vRefractionMicrosurfaceInfos\", size: 4, type: \"vec4\" },\r\n { name: \"vRefractionFilteringInfo\", size: 2, type: \"vec2\" },\r\n { name: \"vTranslucencyIntensityInfos\", size: 2, type: \"vec2\" },\r\n { name: \"vRefractionInfos\", size: 4, type: \"vec4\" },\r\n { name: \"refractionMatrix\", size: 16, type: \"mat4\" },\r\n { name: \"vThicknessInfos\", size: 2, type: \"vec2\" },\r\n { name: \"vRefractionIntensityInfos\", size: 2, type: \"vec2\" },\r\n { name: \"thicknessMatrix\", size: 16, type: \"mat4\" },\r\n { name: \"refractionIntensityMatrix\", size: 16, type: \"mat4\" },\r\n { name: \"translucencyIntensityMatrix\", size: 16, type: \"mat4\" },\r\n { name: \"vThicknessParam\", size: 2, type: \"vec2\" },\r\n { name: \"vDiffusionDistance\", size: 3, type: \"vec3\" },\r\n { name: \"vTintColor\", size: 4, type: \"vec4\" },\r\n { name: \"vSubSurfaceIntensity\", size: 3, type: \"vec3\" },\r\n { name: \"vRefractionPosition\", size: 3, type: \"vec3\" },\r\n { name: \"vRefractionSize\", size: 3, type: \"vec3\" },\r\n { name: \"scatteringDiffusionProfile\", size: 1, type: \"float\" },\r\n { name: \"dispersion\", size: 1, type: \"float\" },\r\n\r\n { name: \"vTranslucencyColor\", size: 4, type: \"vec4\" },\r\n { name: \"vTranslucencyColorInfos\", size: 2, type: \"vec2\" },\r\n { name: \"translucencyColorMatrix\", size: 16, type: \"mat4\" },\r\n ],\r\n };\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** This module has no top-level side effects: it only declares the optional HTML-in-Canvas polyfill installer */
|
|
2
|
+
/**
|
|
3
|
+
* Shape of the `three-html-render` polyfill module (only the parts this wrapper uses).
|
|
4
|
+
*/
|
|
5
|
+
export interface IHtmlInCanvasPolyfillModule {
|
|
6
|
+
/** Installs the WICG HTML-in-Canvas polyfill onto the relevant DOM prototypes. */
|
|
7
|
+
installHtmlInCanvasPolyfill?: (options?: {
|
|
8
|
+
force?: boolean;
|
|
9
|
+
}) => void;
|
|
10
|
+
/** Removes a previously installed polyfill. */
|
|
11
|
+
uninstallHtmlInCanvasPolyfill?: () => void;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Options for {@link InstallHtmlInCanvasPolyfill}.
|
|
15
|
+
*/
|
|
16
|
+
export interface IInstallHtmlInCanvasPolyfillOptions {
|
|
17
|
+
/** Install the polyfill even when the browser already supports the API natively (default false). */
|
|
18
|
+
force?: boolean;
|
|
19
|
+
/** Module specifier to lazily import the polyfill from (default `"three-html-render"`). */
|
|
20
|
+
moduleSpecifier?: string;
|
|
21
|
+
/** A pre-imported polyfill module to use instead of dynamically importing one. */
|
|
22
|
+
polyfillModule?: IHtmlInCanvasPolyfillModule;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Detects whether the browser supports the WICG HTML-in-Canvas API natively (or already has it installed).
|
|
26
|
+
* @returns true when an HTMLCanvasElement exposes `captureElementImage`
|
|
27
|
+
*/
|
|
28
|
+
export declare function IsHtmlInCanvasSupportedNatively(): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Lazily installs the WICG HTML-in-Canvas polyfill (`three-html-render`) so that {@link HtmlTexture} and the
|
|
31
|
+
* interaction managers work in browsers that do not yet ship the native API.
|
|
32
|
+
*
|
|
33
|
+
* The polyfill is an optional dependency: it is imported on demand and never bundled into Babylon. When the
|
|
34
|
+
* browser already supports the API natively, this is a no-op unless `force` is set or the `?polyfillHIC` URL
|
|
35
|
+
* flag is present.
|
|
36
|
+
* @param options optional installation configuration
|
|
37
|
+
* @returns a promise that resolves to true when the polyfill was installed, false otherwise
|
|
38
|
+
*/
|
|
39
|
+
export declare function InstallHtmlInCanvasPolyfill(options?: IInstallHtmlInCanvasPolyfillOptions): Promise<boolean>;
|
|
40
|
+
/**
|
|
41
|
+
* Removes a polyfill previously installed by {@link InstallHtmlInCanvasPolyfill}.
|
|
42
|
+
*/
|
|
43
|
+
export declare function UninstallHtmlInCanvasPolyfill(): void;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/** This module has no top-level side effects: it only declares the optional HTML-in-Canvas polyfill installer */
|
|
2
|
+
import { Logger } from "../../../Misc/logger.js";
|
|
3
|
+
let _InstalledModule = null;
|
|
4
|
+
/**
|
|
5
|
+
* Detects whether the browser supports the WICG HTML-in-Canvas API natively (or already has it installed).
|
|
6
|
+
* @returns true when an HTMLCanvasElement exposes `captureElementImage`
|
|
7
|
+
*/
|
|
8
|
+
export function IsHtmlInCanvasSupportedNatively() {
|
|
9
|
+
if (typeof document === "undefined") {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
const canvas = document.createElement("canvas");
|
|
13
|
+
return typeof canvas.captureElementImage === "function";
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Lazily installs the WICG HTML-in-Canvas polyfill (`three-html-render`) so that {@link HtmlTexture} and the
|
|
17
|
+
* interaction managers work in browsers that do not yet ship the native API.
|
|
18
|
+
*
|
|
19
|
+
* The polyfill is an optional dependency: it is imported on demand and never bundled into Babylon. When the
|
|
20
|
+
* browser already supports the API natively, this is a no-op unless `force` is set or the `?polyfillHIC` URL
|
|
21
|
+
* flag is present.
|
|
22
|
+
* @param options optional installation configuration
|
|
23
|
+
* @returns a promise that resolves to true when the polyfill was installed, false otherwise
|
|
24
|
+
*/
|
|
25
|
+
export async function InstallHtmlInCanvasPolyfill(options = {}) {
|
|
26
|
+
const force = options.force ?? _HasPolyfillUrlFlag();
|
|
27
|
+
if (!force && IsHtmlInCanvasSupportedNatively()) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
const module = options.polyfillModule ?? (await _ImportPolyfill(options.moduleSpecifier ?? "three-html-render"));
|
|
31
|
+
if (!module || typeof module.installHtmlInCanvasPolyfill !== "function") {
|
|
32
|
+
Logger.Warn("HTML-in-Canvas: the polyfill module does not expose installHtmlInCanvasPolyfill; nothing was installed.");
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
module.installHtmlInCanvasPolyfill(force ? { force: true } : undefined);
|
|
36
|
+
_InstalledModule = module;
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Removes a polyfill previously installed by {@link InstallHtmlInCanvasPolyfill}.
|
|
41
|
+
*/
|
|
42
|
+
export function UninstallHtmlInCanvasPolyfill() {
|
|
43
|
+
if (_InstalledModule && typeof _InstalledModule.uninstallHtmlInCanvasPolyfill === "function") {
|
|
44
|
+
_InstalledModule.uninstallHtmlInCanvasPolyfill();
|
|
45
|
+
}
|
|
46
|
+
_InstalledModule = null;
|
|
47
|
+
}
|
|
48
|
+
async function _ImportPolyfill(specifier) {
|
|
49
|
+
try {
|
|
50
|
+
// The specifier is a variable so bundlers leave this as a runtime import and the optional package is
|
|
51
|
+
// not required to be installed at build time. The UMD/global build cannot resolve a bare module
|
|
52
|
+
// specifier, so this dynamic import is neutralized there (see rewriteDynamicExternalImportsPlugin);
|
|
53
|
+
// UMD consumers should pass `polyfillModule` instead.
|
|
54
|
+
return (await import(/* @vite-ignore */ /* webpackIgnore: true */ specifier));
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
Logger.Warn(`HTML-in-Canvas: could not load polyfill module "${specifier}". Install three-html-render or pass a polyfillModule.`);
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function _HasPolyfillUrlFlag() {
|
|
62
|
+
return typeof window !== "undefined" && !!window.location && /[?&]polyfillHIC\b/i.test(window.location.search);
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=htmlInCanvasPolyfill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"htmlInCanvasPolyfill.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Materials/Textures/HTML/htmlInCanvasPolyfill.ts"],"names":[],"mappings":"AAAA,iHAAiH;AAGjH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AA2B9C,IAAI,gBAAgB,GAA0C,IAAI,CAAC;AAEnE;;;GAGG;AACH,MAAM,UAAU,+BAA+B;IAC3C,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAA0D,CAAC;IACzG,OAAO,OAAO,MAAM,CAAC,mBAAmB,KAAK,UAAU,CAAC;AAC5D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,UAA+C,EAAE;IAC/F,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,mBAAmB,EAAE,CAAC;IAErD,IAAI,CAAC,KAAK,IAAI,+BAA+B,EAAE,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,IAAI,CAAC,MAAM,eAAe,CAAC,OAAO,CAAC,eAAe,IAAI,mBAAmB,CAAC,CAAC,CAAC;IACjH,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,2BAA2B,KAAK,UAAU,EAAE,CAAC;QACtE,MAAM,CAAC,IAAI,CAAC,yGAAyG,CAAC,CAAC;QACvH,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACxE,gBAAgB,GAAG,MAAM,CAAC;IAC1B,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B;IACzC,IAAI,gBAAgB,IAAI,OAAO,gBAAgB,CAAC,6BAA6B,KAAK,UAAU,EAAE,CAAC;QAC3F,gBAAgB,CAAC,6BAA6B,EAAE,CAAC;IACrD,CAAC;IACD,gBAAgB,GAAG,IAAI,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,SAAiB;IAC5C,IAAI,CAAC;QACD,qGAAqG;QACrG,gGAAgG;QAChG,oGAAoG;QACpG,sDAAsD;QACtD,OAAO,CAAC,MAAM,MAAM,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAgC,CAAC;IACjH,CAAC;IAAC,MAAM,CAAC;QACL,MAAM,CAAC,IAAI,CAAC,mDAAmD,SAAS,wDAAwD,CAAC,CAAC;QAClI,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB;IACxB,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACnH,CAAC","sourcesContent":["/** This module has no top-level side effects: it only declares the optional HTML-in-Canvas polyfill installer */\n\nimport { type Nullable } from \"../../../types\";\nimport { Logger } from \"../../../Misc/logger\";\n\n// Attribution: the WICG HTML-in-Canvas polyfill is `three-html-render` by Palash Bansal (`repalash`),\n// MIT. It is consumed as an optional, lazily-imported dependency and is never bundled into Babylon.\n\n/**\n * Shape of the `three-html-render` polyfill module (only the parts this wrapper uses).\n */\nexport interface IHtmlInCanvasPolyfillModule {\n /** Installs the WICG HTML-in-Canvas polyfill onto the relevant DOM prototypes. */\n installHtmlInCanvasPolyfill?: (options?: { force?: boolean }) => void;\n /** Removes a previously installed polyfill. */\n uninstallHtmlInCanvasPolyfill?: () => void;\n}\n\n/**\n * Options for {@link InstallHtmlInCanvasPolyfill}.\n */\nexport interface IInstallHtmlInCanvasPolyfillOptions {\n /** Install the polyfill even when the browser already supports the API natively (default false). */\n force?: boolean;\n /** Module specifier to lazily import the polyfill from (default `\"three-html-render\"`). */\n moduleSpecifier?: string;\n /** A pre-imported polyfill module to use instead of dynamically importing one. */\n polyfillModule?: IHtmlInCanvasPolyfillModule;\n}\n\nlet _InstalledModule: Nullable<IHtmlInCanvasPolyfillModule> = null;\n\n/**\n * Detects whether the browser supports the WICG HTML-in-Canvas API natively (or already has it installed).\n * @returns true when an HTMLCanvasElement exposes `captureElementImage`\n */\nexport function IsHtmlInCanvasSupportedNatively(): boolean {\n if (typeof document === \"undefined\") {\n return false;\n }\n const canvas = document.createElement(\"canvas\") as HTMLCanvasElement & { captureElementImage?: unknown };\n return typeof canvas.captureElementImage === \"function\";\n}\n\n/**\n * Lazily installs the WICG HTML-in-Canvas polyfill (`three-html-render`) so that {@link HtmlTexture} and the\n * interaction managers work in browsers that do not yet ship the native API.\n *\n * The polyfill is an optional dependency: it is imported on demand and never bundled into Babylon. When the\n * browser already supports the API natively, this is a no-op unless `force` is set or the `?polyfillHIC` URL\n * flag is present.\n * @param options optional installation configuration\n * @returns a promise that resolves to true when the polyfill was installed, false otherwise\n */\nexport async function InstallHtmlInCanvasPolyfill(options: IInstallHtmlInCanvasPolyfillOptions = {}): Promise<boolean> {\n const force = options.force ?? _HasPolyfillUrlFlag();\n\n if (!force && IsHtmlInCanvasSupportedNatively()) {\n return false;\n }\n\n const module = options.polyfillModule ?? (await _ImportPolyfill(options.moduleSpecifier ?? \"three-html-render\"));\n if (!module || typeof module.installHtmlInCanvasPolyfill !== \"function\") {\n Logger.Warn(\"HTML-in-Canvas: the polyfill module does not expose installHtmlInCanvasPolyfill; nothing was installed.\");\n return false;\n }\n\n module.installHtmlInCanvasPolyfill(force ? { force: true } : undefined);\n _InstalledModule = module;\n return true;\n}\n\n/**\n * Removes a polyfill previously installed by {@link InstallHtmlInCanvasPolyfill}.\n */\nexport function UninstallHtmlInCanvasPolyfill(): void {\n if (_InstalledModule && typeof _InstalledModule.uninstallHtmlInCanvasPolyfill === \"function\") {\n _InstalledModule.uninstallHtmlInCanvasPolyfill();\n }\n _InstalledModule = null;\n}\n\nasync function _ImportPolyfill(specifier: string): Promise<Nullable<IHtmlInCanvasPolyfillModule>> {\n try {\n // The specifier is a variable so bundlers leave this as a runtime import and the optional package is\n // not required to be installed at build time. The UMD/global build cannot resolve a bare module\n // specifier, so this dynamic import is neutralized there (see rewriteDynamicExternalImportsPlugin);\n // UMD consumers should pass `polyfillModule` instead.\n return (await import(/* @vite-ignore */ /* webpackIgnore: true */ specifier)) as IHtmlInCanvasPolyfillModule;\n } catch {\n Logger.Warn(`HTML-in-Canvas: could not load polyfill module \"${specifier}\". Install three-html-render or pass a polyfillModule.`);\n return null;\n }\n}\n\nfunction _HasPolyfillUrlFlag(): boolean {\n return typeof window !== \"undefined\" && !!window.location && /[?&]polyfillHIC\\b/i.test(window.location.search);\n}\n"]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { type Scene } from "../../../scene.pure.js";
|
|
2
|
+
import { type AbstractMesh } from "../../../Meshes/abstractMesh.pure.js";
|
|
3
|
+
import { type HtmlTexture } from "./htmlTexture.js";
|
|
4
|
+
/**
|
|
5
|
+
* Builds the CSS `transform` string that positions an overlay element over the projected face of a mesh.
|
|
6
|
+
*
|
|
7
|
+
* The transform is applied with `transform-origin: 0 0`. Reading right to left it centers the element on
|
|
8
|
+
* its own origin, scales and rotates it to match the projected face, then translates it to the projected
|
|
9
|
+
* center (in CSS pixels, top-left origin).
|
|
10
|
+
* @param centerX projected center X in CSS pixels
|
|
11
|
+
* @param centerY projected center Y in CSS pixels
|
|
12
|
+
* @param scaleX horizontal scale to apply to the element
|
|
13
|
+
* @param scaleY vertical scale to apply to the element
|
|
14
|
+
* @param rotation in-plane rotation in radians
|
|
15
|
+
* @param elementWidth element width in pixels
|
|
16
|
+
* @param elementHeight element height in pixels
|
|
17
|
+
* @returns the CSS transform string
|
|
18
|
+
*/
|
|
19
|
+
export declare function ComputeOverlayCssTransform(centerX: number, centerY: number, scaleX: number, scaleY: number, rotation: number, elementWidth: number, elementHeight: number): string;
|
|
20
|
+
/**
|
|
21
|
+
* Options for {@link HtmlInteractionManager}.
|
|
22
|
+
*/
|
|
23
|
+
export interface IHtmlInteractionManagerOptions {
|
|
24
|
+
/** The DOM element to overlay (defaults to the texture's element). */
|
|
25
|
+
targetElement?: HTMLElement;
|
|
26
|
+
/** Whether the overlay element captures pointer events so the browser hit-tests it natively (default true). */
|
|
27
|
+
enablePointerEvents?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Overlays the live HTML element of an {@link HtmlTexture} on top of the projected face of a planar mesh,
|
|
31
|
+
* so the browser hit-tests the real DOM element natively (enabling focus, text selection and form input).
|
|
32
|
+
*
|
|
33
|
+
* Each frame the mesh face is projected to screen space and the element is translated, scaled and rotated
|
|
34
|
+
* to match. This is best suited to planar, camera-facing surfaces. For arbitrary or curved meshes, use the
|
|
35
|
+
* UV-based {@link HtmlRaycastInteractionManager} instead.
|
|
36
|
+
*
|
|
37
|
+
* The overlay is screen-aligned (position, size and in-plane rotation); it does not apply a full
|
|
38
|
+
* perspective skew, so steeply oblique faces will not be perspective-correct.
|
|
39
|
+
*/
|
|
40
|
+
export declare class HtmlInteractionManager {
|
|
41
|
+
private readonly _scene;
|
|
42
|
+
private readonly _mesh;
|
|
43
|
+
private readonly _element;
|
|
44
|
+
private _observer;
|
|
45
|
+
private _previousTransform;
|
|
46
|
+
private readonly _viewport;
|
|
47
|
+
private readonly _center;
|
|
48
|
+
private readonly _xAxis;
|
|
49
|
+
private readonly _yAxis;
|
|
50
|
+
private readonly _projectedCenter;
|
|
51
|
+
private readonly _projectedX;
|
|
52
|
+
private readonly _projectedY;
|
|
53
|
+
private readonly _corner;
|
|
54
|
+
private _restoreInertOnDispose;
|
|
55
|
+
/**
|
|
56
|
+
* Creates an overlay interaction manager.
|
|
57
|
+
* @param scene the scene whose camera drives the projection
|
|
58
|
+
* @param texture the HTML texture whose element should be overlaid
|
|
59
|
+
* @param mesh the planar mesh displaying the texture
|
|
60
|
+
* @param options optional configuration
|
|
61
|
+
*/
|
|
62
|
+
constructor(scene: Scene, texture: HtmlTexture, mesh: AbstractMesh, options?: IHtmlInteractionManagerOptions);
|
|
63
|
+
private _update;
|
|
64
|
+
private _setTransform;
|
|
65
|
+
/**
|
|
66
|
+
* Detaches the manager and stops updating the overlay.
|
|
67
|
+
*/
|
|
68
|
+
dispose(): void;
|
|
69
|
+
}
|