@onerjs/core 8.53.4 → 8.53.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Animations/animationGroup.d.ts +0 -1
- package/Animations/animationGroup.js +0 -1
- package/Animations/animationGroup.js.map +1 -1
- package/Animations/animationGroup.pure.js +2 -0
- package/Animations/animationGroup.pure.js.map +1 -1
- package/Animations/runtimeAnimation.js +11 -0
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Audio/audioSceneComponent.pure.js +1 -1
- package/AudioV2/abstractAudio/abstractSound.d.ts +2 -1
- package/AudioV2/abstractAudio/abstractSound.js +7 -2
- package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
- package/AudioV2/abstractAudio/abstractSoundInstance.d.ts +3 -1
- package/AudioV2/abstractAudio/abstractSoundInstance.js.map +1 -1
- package/AudioV2/abstractAudio/staticSound.d.ts +6 -0
- package/AudioV2/abstractAudio/staticSound.js +17 -1
- package/AudioV2/abstractAudio/staticSound.js.map +1 -1
- package/AudioV2/abstractAudio/staticSoundInstance.d.ts +4 -2
- package/AudioV2/abstractAudio/staticSoundInstance.js.map +1 -1
- package/AudioV2/abstractAudio/streamingSound.d.ts +6 -0
- package/AudioV2/abstractAudio/streamingSound.js +9 -1
- package/AudioV2/abstractAudio/streamingSound.js.map +1 -1
- package/AudioV2/webAudio/webAudioStaticSound.d.ts +7 -1
- package/AudioV2/webAudio/webAudioStaticSound.js +56 -8
- package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
- package/AudioV2/webAudio/webAudioStreamingSound.d.ts +3 -1
- package/AudioV2/webAudio/webAudioStreamingSound.js +16 -4
- package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +2 -2
- package/BakedVertexAnimation/bakedVertexAnimationManager.js +151 -121
- package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
- package/Behaviors/Cameras/interpolatingBehavior.d.ts +17 -2
- package/Behaviors/Cameras/interpolatingBehavior.js +53 -23
- package/Behaviors/Cameras/interpolatingBehavior.js.map +1 -1
- package/Bones/bone.pure.js +3 -3
- package/Buffers/buffer.pure.js +0 -12
- package/Buffers/buffer.pure.js.map +1 -1
- package/Cameras/Inputs/BaseCameraMouseWheelInput.js +141 -126
- package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/BaseCameraPointersInput.d.ts +2 -1
- package/Cameras/Inputs/BaseCameraPointersInput.js +290 -277
- package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraGamepadInput.js +115 -102
- package/Cameras/Inputs/arcRotateCameraGamepadInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.d.ts +3 -0
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +334 -273
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +273 -258
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraPointersInput.js +237 -213
- package/Cameras/Inputs/arcRotateCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/flyCameraKeyboardInput.js +199 -168
- package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
- package/Cameras/Inputs/flyCameraMouseInput.js +243 -229
- package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/followCameraKeyboardMoveInput.js +311 -266
- package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/followCameraMouseWheelInput.js +139 -119
- package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/followCameraPointersInput.js +239 -203
- package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraGamepadInput.js +127 -114
- package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +278 -244
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseInput.js +216 -202
- package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseWheelInput.js +368 -353
- package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraTouchInput.js +185 -172
- package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
- package/Cameras/Inputs/geospatialCameraKeyboardInput.d.ts +2 -0
- package/Cameras/Inputs/geospatialCameraKeyboardInput.js +291 -246
- package/Cameras/Inputs/geospatialCameraKeyboardInput.js.map +1 -1
- package/Cameras/Inputs/geospatialCameraPointersInput.d.ts +11 -1
- package/Cameras/Inputs/geospatialCameraPointersInput.js +18 -2
- package/Cameras/Inputs/geospatialCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/orbitCameraPointersInput.js +112 -96
- package/Cameras/Inputs/orbitCameraPointersInput.js.map +1 -1
- package/Cameras/VR/vrExperienceHelper.d.ts +0 -2
- package/Cameras/VR/vrExperienceHelper.js +0 -2
- package/Cameras/VR/vrExperienceHelper.js.map +1 -1
- package/Cameras/VR/vrExperienceHelper.pure.js +5 -0
- package/Cameras/VR/vrExperienceHelper.pure.js.map +1 -1
- package/Cameras/arcRotateCamera.pure.js +1559 -1479
- package/Cameras/arcRotateCamera.pure.js.map +1 -1
- package/Cameras/camera.pure.js +1225 -1178
- package/Cameras/camera.pure.js.map +1 -1
- package/Cameras/flyCamera.pure.js +369 -351
- package/Cameras/flyCamera.pure.js.map +1 -1
- package/Cameras/followCamera.pure.js +229 -192
- package/Cameras/followCamera.pure.js.map +1 -1
- package/Cameras/freeCamera.pure.js +373 -351
- package/Cameras/freeCamera.pure.js.map +1 -1
- package/Cameras/geospatialCamera.pure.d.ts +30 -7
- package/Cameras/geospatialCamera.pure.js +502 -457
- package/Cameras/geospatialCamera.pure.js.map +1 -1
- package/Cameras/geospatialCameraMovement.js +2 -2
- package/Cameras/geospatialCameraMovement.js.map +1 -1
- package/Cameras/targetCamera.pure.d.ts +7 -0
- package/Cameras/targetCamera.pure.js +550 -509
- package/Cameras/targetCamera.pure.js.map +1 -1
- package/Cameras/universalCamera.pure.js +98 -85
- package/Cameras/universalCamera.pure.js.map +1 -1
- package/Collisions/gpuPicker.d.ts +111 -4
- package/Collisions/gpuPicker.js +696 -119
- package/Collisions/gpuPicker.js.map +1 -1
- package/Compute/computeShader.pure.js +372 -355
- package/Compute/computeShader.pure.js.map +1 -1
- package/Culling/Helper/transformFeedbackBoundingHelper.pure.js +2 -2
- package/Decorators/nodeDecorator.d.ts +11 -1
- package/Decorators/nodeDecorator.js +43 -6
- package/Decorators/nodeDecorator.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js +8 -0
- package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js.map +1 -1
- package/Engines/Native/nativeHelpers.js +15 -0
- package/Engines/Native/nativeHelpers.js.map +1 -1
- package/Engines/Native/nativeInterfaces.d.ts +7 -2
- package/Engines/Native/nativeInterfaces.js.map +1 -1
- package/Engines/Native/nativeRenderTargetWrapper.d.ts +5 -0
- package/Engines/Native/nativeRenderTargetWrapper.js +35 -1
- package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
- package/Engines/Processors/shaderProcessor.js +5 -3
- package/Engines/Processors/shaderProcessor.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js +16 -3
- package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js.map +1 -1
- package/Engines/WebGPU/webgpuClearQuad.pure.js +7 -1
- package/Engines/WebGPU/webgpuClearQuad.pure.js.map +1 -1
- package/Engines/abstractEngine.functions.d.ts +8 -2
- package/Engines/abstractEngine.functions.js +12 -4
- package/Engines/abstractEngine.functions.js.map +1 -1
- package/Engines/abstractEngine.pure.d.ts +20 -1
- package/Engines/abstractEngine.pure.js +21 -134
- package/Engines/abstractEngine.pure.js.map +1 -1
- package/Engines/engine.d.ts +208 -0
- package/Engines/engine.pure.js +0 -15
- package/Engines/engine.pure.js.map +1 -1
- package/Engines/nullEngine.pure.d.ts +66 -0
- package/Engines/nullEngine.pure.js +97 -0
- package/Engines/nullEngine.pure.js.map +1 -1
- package/Engines/thinEngine.pure.d.ts +0 -13
- package/Engines/thinEngine.pure.js +4 -23
- package/Engines/thinEngine.pure.js.map +1 -1
- package/Engines/thinNativeEngine.d.ts +0 -1
- package/Engines/thinNativeEngine.js +0 -1
- package/Engines/thinNativeEngine.js.map +1 -1
- package/Engines/thinNativeEngine.pure.d.ts +27 -0
- package/Engines/thinNativeEngine.pure.js +383 -17
- package/Engines/thinNativeEngine.pure.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +1 -0
- package/Engines/webgpuEngine.js +1 -0
- package/Engines/webgpuEngine.js.map +1 -1
- package/Engines/webgpuEngine.pure.d.ts +9 -0
- package/Engines/webgpuEngine.pure.js +7 -0
- package/Engines/webgpuEngine.pure.js.map +1 -1
- package/FlowGraph/flowGraph.js +9 -0
- package/FlowGraph/flowGraph.js.map +1 -1
- package/FlowGraph/flowGraphContext.js +597 -584
- package/FlowGraph/flowGraphContext.js.map +1 -1
- package/FlowGraph/flowGraphDataConnection.pure.d.ts +14 -0
- package/FlowGraph/flowGraphDataConnection.pure.js +38 -1
- package/FlowGraph/flowGraphDataConnection.pure.js.map +1 -1
- package/FlowGraph/serialization.d.ts +11 -0
- package/FlowGraph/serialization.js +11 -1
- package/FlowGraph/serialization.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js +182 -170
- package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js +196 -184
- package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js +222 -210
- package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +123 -111
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js +158 -146
- package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js +63 -51
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js +122 -110
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js +76 -64
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js +89 -77
- package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js +134 -122
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js +58 -46
- package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js +107 -95
- package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js +181 -169
- package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js +63 -51
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js +63 -51
- package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js +76 -64
- package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js +246 -234
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js +108 -96
- package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js +87 -75
- package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js +76 -64
- package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js +313 -301
- package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js +502 -490
- package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js +147 -135
- package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js +90 -78
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js +179 -167
- package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +462 -451
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js +265 -253
- package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js +204 -192
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js +611 -550
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js +320 -308
- package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js +87 -75
- package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js +154 -142
- package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js +150 -138
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/inputBlock.pure.js +270 -256
- package/FrameGraph/Node/Blocks/inputBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js +95 -83
- package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js +715 -693
- package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraphBlock.js +548 -533
- package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.d.ts +2 -2
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js +43 -51
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.d.ts +0 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js +0 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.d.ts +0 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js +66 -35
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js.map +1 -1
- package/Helpers/environmentHelper.js +2 -2
- package/Helpers/environmentHelper.js.map +1 -1
- package/Layers/effectLayer.js +529 -519
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/glowLayer.pure.js +428 -413
- package/Layers/glowLayer.pure.js.map +1 -1
- package/Layers/highlightLayer.pure.js +473 -458
- package/Layers/highlightLayer.pure.js.map +1 -1
- package/Layers/selectionOutlineLayer.pure.js +360 -345
- package/Layers/selectionOutlineLayer.pure.js.map +1 -1
- package/Lights/Clustered/clusteredLightContainer.pure.d.ts +1 -1
- package/Lights/Clustered/clusteredLightContainer.pure.js +583 -558
- package/Lights/Clustered/clusteredLightContainer.pure.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.js +6 -1
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Lights/areaLight.pure.js +61 -39
- package/Lights/areaLight.pure.js.map +1 -1
- package/Lights/directionalLight.pure.js +308 -284
- package/Lights/directionalLight.pure.js.map +1 -1
- package/Lights/hemisphericLight.pure.js +123 -104
- package/Lights/hemisphericLight.pure.js.map +1 -1
- package/Lights/light.d.ts +5 -3
- package/Lights/light.js +869 -827
- package/Lights/light.js.map +1 -1
- package/Lights/pointLight.pure.js +185 -174
- package/Lights/pointLight.pure.js.map +1 -1
- package/Lights/rectAreaLight.pure.d.ts +17 -0
- package/Lights/rectAreaLight.pure.js +238 -159
- package/Lights/rectAreaLight.pure.js.map +1 -1
- package/Lights/shadowLight.js +280 -268
- package/Lights/shadowLight.js.map +1 -1
- package/Lights/spotLight.pure.js +460 -427
- package/Lights/spotLight.pure.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.pure.js +17 -5
- package/Loading/Plugins/babylonFileLoader.pure.js.map +1 -1
- package/Loading/sceneLoader.d.ts +5 -1
- package/Loading/sceneLoader.js +299 -402
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/Background/backgroundMaterial.pure.d.ts +18 -18
- package/Materials/Background/backgroundMaterial.pure.js +949 -794
- package/Materials/Background/backgroundMaterial.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.d.ts +15 -0
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +34 -1
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +9 -0
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +26 -2
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.d.ts +2 -1
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js +169 -149
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.pure.js +442 -429
- package/Materials/Node/Blocks/Dual/lightBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js +396 -383
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js +237 -220
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.pure.js +1 -1
- package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js +150 -133
- package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js +265 -250
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js +159 -142
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js +214 -201
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js +419 -400
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +3 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js +302 -289
- package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js +1327 -1272
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js +352 -337
- package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/refractionBlock.pure.js +297 -277
- package/Materials/Node/Blocks/PBR/refractionBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/sheenBlock.pure.js +146 -131
- package/Materials/Node/Blocks/PBR/sheenBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js +158 -145
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/clampBlock.pure.js +92 -77
- package/Materials/Node/Blocks/clampBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/cloudBlock.pure.js +145 -132
- package/Materials/Node/Blocks/cloudBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/conditionalBlock.pure.js +182 -169
- package/Materials/Node/Blocks/conditionalBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/curveBlock.pure.js +259 -246
- package/Materials/Node/Blocks/curveBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/debugBlock.pure.js +119 -106
- package/Materials/Node/Blocks/debugBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/loopBlock.pure.js +123 -110
- package/Materials/Node/Blocks/loopBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js +185 -172
- package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/remapBlock.pure.js +127 -112
- package/Materials/Node/Blocks/remapBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/transformBlock.pure.js +196 -185
- package/Materials/Node/Blocks/transformBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/triPlanarBlock.pure.js +451 -438
- package/Materials/Node/Blocks/triPlanarBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/trigonometryBlock.pure.js +184 -171
- package/Materials/Node/Blocks/trigonometryBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/waveBlock.pure.js +97 -84
- package/Materials/Node/Blocks/waveBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js +276 -263
- package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js.map +1 -1
- package/Materials/Node/nodeMaterial.pure.js +1765 -1737
- package/Materials/Node/nodeMaterial.pure.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.d.ts +3 -3
- package/Materials/PBR/openpbrMaterial.pure.d.ts +102 -102
- package/Materials/PBR/openpbrMaterial.pure.js +3115 -2243
- package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +3 -3
- package/Materials/PBR/pbrAnisotropicConfiguration.js +255 -227
- package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBRDFConfiguration.d.ts +9 -9
- package/Materials/PBR/pbrBRDFConfiguration.js +203 -155
- package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.pure.d.ts +1 -1
- package/Materials/PBR/pbrBaseMaterial.pure.js +1751 -1736
- package/Materials/PBR/pbrBaseMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +13 -13
- package/Materials/PBR/pbrBaseSimpleMaterial.js +205 -117
- package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
- package/Materials/PBR/pbrClearCoatConfiguration.d.ts +9 -9
- package/Materials/PBR/pbrClearCoatConfiguration.js +464 -406
- package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
- package/Materials/PBR/pbrIridescenceConfiguration.d.ts +3 -3
- package/Materials/PBR/pbrIridescenceConfiguration.js +271 -239
- package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
- package/Materials/PBR/pbrMaterial.pure.d.ts +66 -66
- package/Materials/PBR/pbrMaterial.pure.js +1041 -685
- package/Materials/PBR/pbrMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.d.ts +5 -5
- package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js +176 -115
- package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrSheenConfiguration.d.ts +7 -7
- package/Materials/PBR/pbrSheenConfiguration.js +314 -270
- package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.d.ts +5 -5
- package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js +172 -117
- package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +16 -16
- package/Materials/PBR/pbrSubSurfaceConfiguration.js +864 -764
- package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
- package/Materials/Textures/HTML/htmlInCanvasPolyfill.d.ts +43 -0
- package/Materials/Textures/HTML/htmlInCanvasPolyfill.js +64 -0
- package/Materials/Textures/HTML/htmlInCanvasPolyfill.js.map +1 -0
- package/Materials/Textures/HTML/htmlInteractionManager.d.ts +69 -0
- package/Materials/Textures/HTML/htmlInteractionManager.js +130 -0
- package/Materials/Textures/HTML/htmlInteractionManager.js.map +1 -0
- package/Materials/Textures/HTML/htmlRaycastInteractionManager.d.ts +84 -0
- package/Materials/Textures/HTML/htmlRaycastInteractionManager.js +246 -0
- package/Materials/Textures/HTML/htmlRaycastInteractionManager.js.map +1 -0
- package/Materials/Textures/HTML/htmlTexture.d.ts +148 -0
- package/Materials/Textures/HTML/htmlTexture.js +455 -0
- package/Materials/Textures/HTML/htmlTexture.js.map +1 -0
- package/Materials/Textures/HTML/index.d.ts +4 -0
- package/Materials/Textures/HTML/index.js +5 -0
- package/Materials/Textures/HTML/index.js.map +1 -0
- package/Materials/Textures/HTML/pure.d.ts +5 -0
- package/Materials/Textures/HTML/pure.js +6 -0
- package/Materials/Textures/HTML/pure.js.map +1 -0
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js +671 -643
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
- package/Materials/Textures/baseTexture.pure.js +880 -825
- package/Materials/Textures/baseTexture.pure.js.map +1 -1
- package/Materials/Textures/cubeTexture.d.ts +0 -1
- package/Materials/Textures/cubeTexture.js +0 -1
- package/Materials/Textures/cubeTexture.js.map +1 -1
- package/Materials/Textures/cubeTexture.pure.js +368 -333
- package/Materials/Textures/cubeTexture.pure.js.map +1 -1
- package/Materials/Textures/dynamicTexture.d.ts +0 -1
- package/Materials/Textures/dynamicTexture.js +0 -1
- package/Materials/Textures/dynamicTexture.js.map +1 -1
- package/Materials/Textures/dynamicTexture.pure.js +2 -0
- package/Materials/Textures/dynamicTexture.pure.js.map +1 -1
- package/Materials/Textures/htmlElementTexture.d.ts +0 -2
- package/Materials/Textures/htmlElementTexture.js +0 -2
- package/Materials/Textures/htmlElementTexture.js.map +1 -1
- package/Materials/Textures/htmlElementTexture.pure.js +4 -0
- package/Materials/Textures/htmlElementTexture.pure.js.map +1 -1
- package/Materials/Textures/index.d.ts +1 -0
- package/Materials/Textures/index.js +1 -1
- package/Materials/Textures/index.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.d.ts +0 -1
- package/Materials/Textures/multiRenderTarget.js +0 -1
- package/Materials/Textures/multiRenderTarget.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.pure.js +2 -0
- package/Materials/Textures/multiRenderTarget.pure.js.map +1 -1
- package/Materials/Textures/pure.d.ts +1 -0
- package/Materials/Textures/pure.js +1 -0
- package/Materials/Textures/pure.js.map +1 -1
- package/Materials/Textures/texture.pure.js +961 -923
- package/Materials/Textures/texture.pure.js.map +1 -1
- package/Materials/Textures/videoTexture.pure.d.ts +3 -0
- package/Materials/Textures/videoTexture.pure.js +450 -401
- package/Materials/Textures/videoTexture.pure.js.map +1 -1
- package/Materials/colorCurves.pure.js +510 -477
- package/Materials/colorCurves.pure.js.map +1 -1
- package/Materials/effect.pure.js +0 -7
- package/Materials/effect.pure.js.map +1 -1
- package/Materials/imageProcessing.js +12 -4
- package/Materials/imageProcessing.js.map +1 -1
- package/Materials/imageProcessingConfiguration.pure.js +647 -587
- package/Materials/imageProcessingConfiguration.pure.js.map +1 -1
- package/Materials/material.decalMapConfiguration.pure.d.ts +2 -2
- package/Materials/material.decalMapConfiguration.pure.js +149 -130
- package/Materials/material.decalMapConfiguration.pure.js.map +1 -1
- package/Materials/material.detailMapConfiguration.d.ts +3 -3
- package/Materials/material.detailMapConfiguration.js +213 -175
- package/Materials/material.detailMapConfiguration.js.map +1 -1
- package/Materials/material.pure.js +1815 -1721
- package/Materials/material.pure.js.map +1 -1
- package/Materials/materialPluginBase.pure.js +270 -249
- package/Materials/materialPluginBase.pure.js.map +1 -1
- package/Materials/materialPluginManager.pure.js +18 -8
- package/Materials/materialPluginManager.pure.js.map +1 -1
- package/Materials/materialStencilState.js +211 -200
- package/Materials/materialStencilState.js.map +1 -1
- package/Materials/meshDebugPluginMaterial.pure.d.ts +2 -2
- package/Materials/meshDebugPluginMaterial.pure.js +397 -275
- package/Materials/meshDebugPluginMaterial.pure.js.map +1 -1
- package/Materials/standardMaterial.pure.d.ts +32 -32
- package/Materials/standardMaterial.pure.js +1804 -1394
- package/Materials/standardMaterial.pure.js.map +1 -1
- package/Maths/math.color.pure.js +5 -5
- package/Maths/math.functions.js +38 -30
- package/Maths/math.functions.js.map +1 -1
- package/Maths/math.vector.pure.js +25 -25
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +18 -8
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +86 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +255 -104
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.d.ts +39 -0
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js +322 -0
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js.map +1 -0
- package/Meshes/GreasedLine/greasedLineMesh.pure.js +4 -4
- package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js +3 -3
- package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js +107 -94
- package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js +276 -263
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js +247 -232
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js +299 -284
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js +196 -181
- package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/latticeBlock.pure.js +198 -179
- package/Meshes/Node/Blocks/Set/latticeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js +151 -138
- package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js +107 -94
- package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js +138 -125
- package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js +213 -200
- package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js +138 -125
- package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js +179 -164
- package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/boxBlock.pure.js +183 -170
- package/Meshes/Node/Blocks/Sources/boxBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js +125 -112
- package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js +153 -140
- package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/discBlock.pure.js +112 -99
- package/Meshes/Node/Blocks/Sources/discBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/gridBlock.pure.js +133 -120
- package/Meshes/Node/Blocks/Sources/gridBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js +128 -115
- package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/meshBlock.pure.js +116 -103
- package/Meshes/Node/Blocks/Sources/meshBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/planeBlock.pure.js +160 -147
- package/Meshes/Node/Blocks/Sources/planeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js +144 -131
- package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/torusBlock.pure.js +112 -99
- package/Meshes/Node/Blocks/Sources/torusBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js +200 -185
- package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/bevelBlock.pure.js +111 -98
- package/Meshes/Node/Blocks/bevelBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js +182 -165
- package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js +89 -76
- package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/conditionBlock.pure.js +184 -169
- package/Meshes/Node/Blocks/conditionBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js +270 -255
- package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js +172 -159
- package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryCurveBlock.pure.js +230 -217
- package/Meshes/Node/Blocks/geometryCurveBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryEaseBlock.pure.js +256 -245
- package/Meshes/Node/Blocks/geometryEaseBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js +206 -189
- package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryTransformBlock.pure.js +166 -153
- package/Meshes/Node/Blocks/geometryTransformBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js +221 -208
- package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/mappingBlock.pure.js +150 -137
- package/Meshes/Node/Blocks/mappingBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/mathBlock.pure.js +269 -256
- package/Meshes/Node/Blocks/mathBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js +141 -128
- package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/randomBlock.pure.js +161 -148
- package/Meshes/Node/Blocks/randomBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/subdivideBlock.pure.js +102 -87
- package/Meshes/Node/Blocks/subdivideBlock.pure.js.map +1 -1
- package/Meshes/Node/nodeGeometry.js +560 -538
- package/Meshes/Node/nodeGeometry.js.map +1 -1
- package/Meshes/Node/nodeGeometryBlock.js +473 -458
- package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
- package/Meshes/abstractMesh.pure.js +2218 -2207
- package/Meshes/abstractMesh.pure.js.map +1 -1
- package/Meshes/geometry.js +30 -15
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/mesh.pure.js +26 -14
- package/Meshes/mesh.pure.js.map +1 -1
- package/Meshes/mesh.vertexData.js +1665 -1655
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Meshes/transformNode.pure.js +1400 -1372
- package/Meshes/transformNode.pure.js.map +1 -1
- package/Misc/decorators.d.ts +34 -19
- package/Misc/decorators.functions.d.ts +33 -2
- package/Misc/decorators.functions.js +114 -35
- package/Misc/decorators.functions.js.map +1 -1
- package/Misc/decorators.js +96 -68
- package/Misc/decorators.js.map +1 -1
- package/Misc/decorators.serialization.js +47 -40
- package/Misc/decorators.serialization.js.map +1 -1
- package/Misc/decorators.serializationUtilities.d.ts +24 -0
- package/Misc/decorators.serializationUtilities.js +20 -0
- package/Misc/decorators.serializationUtilities.js.map +1 -0
- package/Misc/dumpTools.pure.js +43 -33
- package/Misc/dumpTools.pure.js.map +1 -1
- package/Misc/fileTools.pure.js +8 -0
- package/Misc/fileTools.pure.js.map +1 -1
- package/Misc/observable.pure.js +0 -7
- package/Misc/observable.pure.js.map +1 -1
- package/Misc/snapshotRenderingHelper.d.ts +4 -1
- package/Misc/snapshotRenderingHelper.js.map +1 -1
- package/Misc/symbolMetadataPolyfill.d.ts +11 -0
- package/Misc/symbolMetadataPolyfill.js +22 -0
- package/Misc/symbolMetadataPolyfill.js.map +1 -0
- package/Misc/tools.pure.js +2 -2
- package/Misc/tools.pure.js.map +1 -1
- package/Morph/morphTarget.js +382 -365
- package/Morph/morphTarget.js.map +1 -1
- package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js +160 -145
- package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js +187 -174
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js +238 -219
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js +140 -115
- package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js +157 -144
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js +133 -119
- package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js +93 -80
- package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleDebugBlock.pure.js +117 -105
- package/Particles/Node/Blocks/particleDebugBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js +105 -92
- package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleGradientValueBlock.pure.js +82 -69
- package/Particles/Node/Blocks/particleGradientValueBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js +113 -101
- package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleMathBlock.pure.js +278 -265
- package/Particles/Node/Blocks/particleMathBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleNumberMathBlock.pure.js +155 -142
- package/Particles/Node/Blocks/particleNumberMathBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleRandomBlock.pure.js +156 -143
- package/Particles/Node/Blocks/particleRandomBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js +217 -204
- package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleVectorMathBlock.pure.js +106 -93
- package/Particles/Node/Blocks/particleVectorMathBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/systemBlock.pure.js +366 -330
- package/Particles/Node/Blocks/systemBlock.pure.js.map +1 -1
- package/Particles/Node/nodeParticleBlock.js +339 -324
- package/Particles/Node/nodeParticleBlock.js.map +1 -1
- package/Particles/Node/nodeParticleSystemSet.js +494 -473
- package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
- package/Particles/gpuParticleSystem.d.ts +0 -1
- package/Particles/gpuParticleSystem.js +0 -1
- package/Particles/gpuParticleSystem.js.map +1 -1
- package/Particles/gpuParticleSystem.pure.d.ts +4 -3
- package/Particles/gpuParticleSystem.pure.js +27 -16
- package/Particles/gpuParticleSystem.pure.js.map +1 -1
- package/Particles/particleSystem.pure.js +57 -2
- package/Particles/particleSystem.pure.js.map +1 -1
- package/Particles/thinParticleSystem.d.ts +0 -1
- package/Particles/thinParticleSystem.js +0 -1
- package/Particles/thinParticleSystem.js.map +1 -1
- package/Particles/thinParticleSystem.pure.js +2 -0
- package/Particles/thinParticleSystem.pure.js.map +1 -1
- package/Particles/webgl2ParticleSystem.pure.js +2 -0
- package/Particles/webgl2ParticleSystem.pure.js.map +1 -1
- package/Physics/v1/physicsImpostor.pure.js +4 -4
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js +675 -656
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.d.ts +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js +521 -486
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.d.ts +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js +241 -220
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js +852 -835
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js +1135 -1073
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js +319 -303
- package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +212 -199
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
- package/PostProcesses/blackAndWhitePostProcess.pure.js +67 -55
- package/PostProcesses/blackAndWhitePostProcess.pure.js.map +1 -1
- package/PostProcesses/bloomMergePostProcess.pure.js +74 -62
- package/PostProcesses/bloomMergePostProcess.pure.js.map +1 -1
- package/PostProcesses/blurPostProcess.pure.js +127 -115
- package/PostProcesses/blurPostProcess.pure.js.map +1 -1
- package/PostProcesses/chromaticAberrationPostProcess.pure.js +130 -118
- package/PostProcesses/chromaticAberrationPostProcess.pure.js.map +1 -1
- package/PostProcesses/circleOfConfusionPostProcess.pure.js +115 -104
- package/PostProcesses/circleOfConfusionPostProcess.pure.js.map +1 -1
- package/PostProcesses/colorCorrectionPostProcess.pure.js +55 -43
- package/PostProcesses/colorCorrectionPostProcess.pure.js.map +1 -1
- package/PostProcesses/convolutionPostProcess.pure.js +96 -84
- package/PostProcesses/convolutionPostProcess.pure.js.map +1 -1
- package/PostProcesses/extractHighlightsPostProcess.pure.js +68 -57
- package/PostProcesses/extractHighlightsPostProcess.pure.js.map +1 -1
- package/PostProcesses/filterPostProcess.pure.js +66 -54
- package/PostProcesses/filterPostProcess.pure.js.map +1 -1
- package/PostProcesses/fxaaPostProcess.pure.js.map +1 -1
- package/PostProcesses/grainPostProcess.pure.js +82 -70
- package/PostProcesses/grainPostProcess.pure.js.map +1 -1
- package/PostProcesses/imageProcessingPostProcess.js +334 -322
- package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/motionBlurPostProcess.pure.js +246 -235
- package/PostProcesses/motionBlurPostProcess.pure.js.map +1 -1
- package/PostProcesses/passPostProcess.pure.js +75 -63
- package/PostProcesses/passPostProcess.pure.js.map +1 -1
- package/PostProcesses/postProcess.pure.js +899 -835
- package/PostProcesses/postProcess.pure.js.map +1 -1
- package/PostProcesses/refractionPostProcess.pure.js +114 -87
- package/PostProcesses/refractionPostProcess.pure.js.map +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js +108 -96
- package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js.map +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.pure.js +241 -220
- package/PostProcesses/screenSpaceReflectionPostProcess.pure.js.map +1 -1
- package/PostProcesses/sharpenPostProcess.pure.js +86 -74
- package/PostProcesses/sharpenPostProcess.pure.js.map +1 -1
- package/PostProcesses/tonemapPostProcess.pure.js +82 -70
- package/PostProcesses/tonemapPostProcess.pure.js.map +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.pure.js +500 -465
- package/PostProcesses/volumetricLightScatteringPostProcess.pure.js.map +1 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.d.ts +0 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.js +0 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.js.map +1 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js +2 -0
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js.map +1 -1
- package/Probes/reflectionProbe.pure.js +238 -224
- package/Probes/reflectionProbe.pure.js.map +1 -1
- package/Rendering/GlobalIllumination/giRSMManager.pure.d.ts +1 -1
- package/Rendering/GlobalIllumination/giRSMManager.pure.js +138 -105
- package/Rendering/GlobalIllumination/giRSMManager.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.d.ts +1 -1
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js +155 -138
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.d.ts +0 -2
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +0 -2
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +5 -0
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.d.ts +0 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +0 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.d.ts +1 -0
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +34 -0
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
- package/Rendering/edgesRenderer.pure.js.map +1 -1
- package/Rendering/prePassRenderer.d.ts +0 -2
- package/Rendering/prePassRenderer.js +0 -2
- package/Rendering/prePassRenderer.js.map +1 -1
- package/Rendering/prePassRenderer.pure.js +2 -0
- package/Rendering/prePassRenderer.pure.js.map +1 -1
- package/Rendering/reflectiveShadowMap.pure.d.ts +1 -1
- package/Rendering/reflectiveShadowMap.pure.js +151 -130
- package/Rendering/reflectiveShadowMap.pure.js.map +1 -1
- package/Rendering/thinDepthPeelingRenderer.d.ts +0 -1
- package/Rendering/thinDepthPeelingRenderer.js +0 -1
- package/Rendering/thinDepthPeelingRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/gaussianSplatting.js +1 -0
- package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +35 -5
- package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
- package/Shaders/gaussianSplatting.fragment.js +17 -1
- package/Shaders/gaussianSplatting.fragment.js.map +1 -1
- package/Shaders/gaussianSplatting.vertex.js +1 -1
- package/Shaders/gaussianSplatting.vertex.js.map +1 -1
- package/Shaders/gaussianSplattingDepth.vertex.js +1 -1
- package/Shaders/gaussianSplattingDepth.vertex.js.map +1 -1
- package/Shaders/picking.fragment.js +39 -3
- package/Shaders/picking.fragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +3 -1
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/helperFunctions.js +2 -2
- package/ShadersWGSL/ShadersInclude/helperFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +39 -7
- package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js +4 -3
- package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.fragment.js +14 -1
- package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.vertex.js +2 -2
- package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
- package/ShadersWGSL/gaussianSplattingDepth.vertex.js +2 -2
- package/ShadersWGSL/gaussianSplattingDepth.vertex.js.map +1 -1
- package/ShadersWGSL/lightingVolume.compute.js +2 -2
- package/ShadersWGSL/lightingVolume.compute.js.map +1 -1
- package/ShadersWGSL/picking.fragment.js +22 -1
- package/ShadersWGSL/picking.fragment.js.map +1 -1
- package/XR/features/Layers/WebXRCompositionLayer.d.ts +3 -2
- package/XR/features/Layers/WebXRCompositionLayer.js +2 -2
- package/XR/features/Layers/WebXRCompositionLayer.js.map +1 -1
- package/XR/features/Layers/WebXRWebGPUCompositionLayer.d.ts +59 -0
- package/XR/features/Layers/WebXRWebGPUCompositionLayer.js +120 -0
- package/XR/features/Layers/WebXRWebGPUCompositionLayer.js.map +1 -0
- package/XR/features/Layers/WebXRWebGPUProjectionLayer.d.ts +25 -0
- package/XR/features/Layers/WebXRWebGPUProjectionLayer.js +69 -0
- package/XR/features/Layers/WebXRWebGPUProjectionLayer.js.map +1 -0
- package/XR/features/WebXRLayers.pure.d.ts +8 -0
- package/XR/features/WebXRLayers.pure.js +43 -6
- package/XR/features/WebXRLayers.pure.js.map +1 -1
- package/XR/native/nativeXRRenderTarget.d.ts +2 -2
- package/XR/native/nativeXRRenderTarget.js +2 -2
- package/XR/native/nativeXRRenderTarget.js.map +1 -1
- package/XR/webXRExperienceHelper.js +10 -1
- package/XR/webXRExperienceHelper.js.map +1 -1
- package/XR/webXRGraphicsBinding.d.ts +90 -0
- package/XR/webXRGraphicsBinding.js +85 -0
- package/XR/webXRGraphicsBinding.js.map +1 -0
- package/XR/webXRLayerRenderTargetTexture.d.ts +24 -0
- package/XR/webXRLayerRenderTargetTexture.js +30 -0
- package/XR/webXRLayerRenderTargetTexture.js.map +1 -0
- package/XR/webXRManagedOutputCanvas.d.ts +14 -0
- package/XR/webXRManagedOutputCanvas.js +24 -5
- package/XR/webXRManagedOutputCanvas.js.map +1 -1
- package/XR/webXRRenderTargetTextureProvider.d.ts +25 -4
- package/XR/webXRRenderTargetTextureProvider.js +33 -35
- package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
- package/XR/webXRSessionManager.d.ts +11 -0
- package/XR/webXRSessionManager.js +37 -0
- package/XR/webXRSessionManager.js.map +1 -1
- package/XR/webXRTypes.d.ts +9 -6
- package/XR/webXRTypes.js.map +1 -1
- package/XR/webXRWebGLLayer.d.ts +2 -2
- package/XR/webXRWebGLLayer.js +2 -2
- package/XR/webXRWebGLLayer.js.map +1 -1
- package/XR/webXRWebGLRenderTargetTextureProvider.d.ts +12 -0
- package/XR/webXRWebGLRenderTargetTextureProvider.js +58 -0
- package/XR/webXRWebGLRenderTargetTextureProvider.js.map +1 -0
- package/XR/webXRWebGPURenderTargetTextureProvider.d.ts +69 -0
- package/XR/webXRWebGPURenderTargetTextureProvider.js +148 -0
- package/XR/webXRWebGPURenderTargetTextureProvider.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/node.js +878 -845
- package/node.js.map +1 -1
- package/package.json +8 -14
- package/scene.pure.d.ts +12 -0
- package/scene.pure.js +36 -0
- package/scene.pure.js.map +1 -1
- package/tslib.es6.js +304 -150
package/Lights/light.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { __classPrivateFieldGet, __classPrivateFieldSet, __esDecorate, __runInitializers } from "../tslib.es6.js";
|
|
2
2
|
import { serialize, serializeAsColor3, expandToProperty } from "../Misc/decorators.js";
|
|
3
3
|
import { Vector3 } from "../Maths/math.vector.pure.js";
|
|
4
4
|
import { Color3, TmpColors } from "../Maths/math.color.pure.js";
|
|
@@ -12,852 +12,894 @@ import { SerializationHelper } from "../Misc/decorators.serialization.js";
|
|
|
12
12
|
* Lights are used, as you would expect, to affect how meshes are seen, in terms of both illumination and colour.
|
|
13
13
|
* All meshes allow light to pass through them unless shadow generation is activated. The default number of lights allowed is four but this can be increased.
|
|
14
14
|
*/
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
15
|
+
let Light = (() => {
|
|
16
|
+
var _a, _Light_renderPriority_accessor_storage;
|
|
17
|
+
let _classSuper = Node;
|
|
18
|
+
let _instanceExtraInitializers = [];
|
|
19
|
+
let _diffuse_decorators;
|
|
20
|
+
let _diffuse_initializers = [];
|
|
21
|
+
let _diffuse_extraInitializers = [];
|
|
22
|
+
let _specular_decorators;
|
|
23
|
+
let _specular_initializers = [];
|
|
24
|
+
let _specular_extraInitializers = [];
|
|
25
|
+
let _falloffType_decorators;
|
|
26
|
+
let _falloffType_initializers = [];
|
|
27
|
+
let _falloffType_extraInitializers = [];
|
|
28
|
+
let _intensity_decorators;
|
|
29
|
+
let _intensity_initializers = [];
|
|
30
|
+
let _intensity_extraInitializers = [];
|
|
31
|
+
let _get_range_decorators;
|
|
32
|
+
let _get_intensityMode_decorators;
|
|
33
|
+
let _get_radius_decorators;
|
|
34
|
+
let __renderPriority_decorators;
|
|
35
|
+
let __renderPriority_initializers = [];
|
|
36
|
+
let __renderPriority_extraInitializers = [];
|
|
37
|
+
let _renderPriority_decorators;
|
|
38
|
+
let _renderPriority_initializers = [];
|
|
39
|
+
let _renderPriority_extraInitializers = [];
|
|
40
|
+
let __shadowEnabled_decorators;
|
|
41
|
+
let __shadowEnabled_initializers = [];
|
|
42
|
+
let __shadowEnabled_extraInitializers = [];
|
|
43
|
+
let __excludeWithLayerMask_decorators;
|
|
44
|
+
let __excludeWithLayerMask_initializers = [];
|
|
45
|
+
let __excludeWithLayerMask_extraInitializers = [];
|
|
46
|
+
let __includeOnlyWithLayerMask_decorators;
|
|
47
|
+
let __includeOnlyWithLayerMask_initializers = [];
|
|
48
|
+
let __includeOnlyWithLayerMask_extraInitializers = [];
|
|
49
|
+
let __lightmapMode_decorators;
|
|
50
|
+
let __lightmapMode_initializers = [];
|
|
51
|
+
let __lightmapMode_extraInitializers = [];
|
|
52
|
+
return _a = class Light extends _classSuper {
|
|
53
|
+
/**
|
|
54
|
+
* Defines light internal enabled state.
|
|
55
|
+
*/
|
|
56
|
+
get internalEnabled() {
|
|
57
|
+
return this._internalEnabled;
|
|
58
|
+
}
|
|
59
|
+
set internalEnabled(value) {
|
|
60
|
+
this._internalEnabled = value;
|
|
61
|
+
this._resyncMeshes();
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Defines how far from the source the light is impacting in scene units.
|
|
65
|
+
* Note: Unused in PBR material as the distance light falloff is defined following the inverse squared falloff.
|
|
66
|
+
*/
|
|
67
|
+
get range() {
|
|
68
|
+
return this._range;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Defines how far from the source the light is impacting in scene units.
|
|
72
|
+
* Note: Unused in PBR material as the distance light falloff is defined following the inverse squared falloff.
|
|
73
|
+
*/
|
|
74
|
+
set range(value) {
|
|
75
|
+
this._range = value;
|
|
76
|
+
this._inverseSquaredRange = 1.0 / (this.range * this.range);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Gets the photometric scale used to interpret the intensity.
|
|
80
|
+
* This is only relevant with PBR Materials where the light intensity can be defined in a physical way.
|
|
81
|
+
*/
|
|
82
|
+
get intensityMode() {
|
|
83
|
+
return this._intensityMode;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Sets the photometric scale used to interpret the intensity.
|
|
87
|
+
* This is only relevant with PBR Materials where the light intensity can be defined in a physical way.
|
|
88
|
+
*/
|
|
89
|
+
set intensityMode(value) {
|
|
90
|
+
this._intensityMode = value;
|
|
91
|
+
this._computePhotometricScale();
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Gets the light radius used by PBR Materials to simulate soft area lights.
|
|
95
|
+
*/
|
|
96
|
+
get radius() {
|
|
97
|
+
return this._radius;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* sets the light radius used by PBR Materials to simulate soft area lights.
|
|
101
|
+
*/
|
|
102
|
+
set radius(value) {
|
|
103
|
+
this._radius = value;
|
|
104
|
+
this._computePhotometricScale();
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Defines the rendering priority of the lights. It can help in case of fallback or number of lights
|
|
108
|
+
* exceeding the number allowed of the materials.
|
|
109
|
+
*/
|
|
110
|
+
get renderPriority() { return __classPrivateFieldGet(this, _Light_renderPriority_accessor_storage, "f"); }
|
|
111
|
+
set renderPriority(value) { __classPrivateFieldSet(this, _Light_renderPriority_accessor_storage, value, "f"); }
|
|
112
|
+
/**
|
|
113
|
+
* Gets whether or not the shadows are enabled for this light. This can help turning off/on shadow without detaching
|
|
114
|
+
* the current shadow generator.
|
|
115
|
+
*/
|
|
116
|
+
get shadowEnabled() {
|
|
117
|
+
return this._shadowEnabled;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Sets whether or not the shadows are enabled for this light. This can help turning off/on shadow without detaching
|
|
121
|
+
* the current shadow generator.
|
|
122
|
+
*/
|
|
123
|
+
set shadowEnabled(value) {
|
|
124
|
+
if (this._shadowEnabled === value) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
this._shadowEnabled = value;
|
|
128
|
+
this._markMeshesAsLightDirty();
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Gets the only meshes impacted by this light.
|
|
132
|
+
*/
|
|
133
|
+
get includedOnlyMeshes() {
|
|
134
|
+
return this._includedOnlyMeshes;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Sets the only meshes impacted by this light.
|
|
138
|
+
*/
|
|
139
|
+
set includedOnlyMeshes(value) {
|
|
140
|
+
this._includedOnlyMeshes = value;
|
|
141
|
+
this._hookArrayForIncludedOnly(value);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Gets the meshes not impacted by this light.
|
|
145
|
+
*/
|
|
146
|
+
get excludedMeshes() {
|
|
147
|
+
return this._excludedMeshes;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Sets the meshes not impacted by this light.
|
|
151
|
+
*/
|
|
152
|
+
set excludedMeshes(value) {
|
|
153
|
+
this._excludedMeshes = value;
|
|
154
|
+
this._hookArrayForExcluded(value);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Gets the layer id use to find what meshes are not impacted by the light.
|
|
158
|
+
* Inactive if 0
|
|
159
|
+
*/
|
|
160
|
+
get excludeWithLayerMask() {
|
|
161
|
+
return this._excludeWithLayerMask;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Sets the layer id use to find what meshes are not impacted by the light.
|
|
165
|
+
* Inactive if 0
|
|
166
|
+
*/
|
|
167
|
+
set excludeWithLayerMask(value) {
|
|
168
|
+
this._excludeWithLayerMask = value;
|
|
169
|
+
this._resyncMeshes();
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Gets the layer id use to find what meshes are impacted by the light.
|
|
173
|
+
* Inactive if 0
|
|
174
|
+
*/
|
|
175
|
+
get includeOnlyWithLayerMask() {
|
|
176
|
+
return this._includeOnlyWithLayerMask;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Sets the layer id use to find what meshes are impacted by the light.
|
|
180
|
+
* Inactive if 0
|
|
181
|
+
*/
|
|
182
|
+
set includeOnlyWithLayerMask(value) {
|
|
183
|
+
this._includeOnlyWithLayerMask = value;
|
|
184
|
+
this._resyncMeshes();
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Gets the lightmap mode of this light (should be one of the constants defined by Light.LIGHTMAP_x)
|
|
188
|
+
*/
|
|
189
|
+
get lightmapMode() {
|
|
190
|
+
return this._lightmapMode;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Sets the lightmap mode of this light (should be one of the constants defined by Light.LIGHTMAP_x)
|
|
194
|
+
*/
|
|
195
|
+
set lightmapMode(value) {
|
|
196
|
+
if (this._lightmapMode === value) {
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
this._lightmapMode = value;
|
|
200
|
+
this._markMeshesAsLightDirty();
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Returns the view matrix.
|
|
204
|
+
* @param _faceIndex The index of the face for which we want to extract the view matrix. Only used for point light types.
|
|
205
|
+
* @returns The view matrix. Can be null, if a view matrix cannot be defined for the type of light considered (as for a hemispherical light, for example).
|
|
206
|
+
*/
|
|
207
|
+
getViewMatrix(_faceIndex) {
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Returns the projection matrix.
|
|
212
|
+
* Note that viewMatrix and renderList are optional and are only used by lights that calculate the projection matrix from a list of meshes (e.g. directional lights with automatic extents calculation).
|
|
213
|
+
* @param _viewMatrix The view transform matrix of the light (optional).
|
|
214
|
+
* @param _renderList The list of meshes to take into account when calculating the projection matrix (optional).
|
|
215
|
+
* @returns The projection matrix. Can be null, if a projection matrix cannot be defined for the type of light considered (as for a hemispherical light, for example).
|
|
216
|
+
*/
|
|
217
|
+
getProjectionMatrix(_viewMatrix, _renderList) {
|
|
218
|
+
return null;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Creates a Light object in the scene.
|
|
222
|
+
* Documentation : https://doc.babylonjs.com/features/featuresDeepDive/lights/lights_introduction
|
|
223
|
+
* @param name The friendly name of the light
|
|
224
|
+
* @param scene The scene the light belongs too
|
|
225
|
+
* @param dontAddToScene True to not add the light to the scene
|
|
226
|
+
*/
|
|
227
|
+
constructor(name, scene, dontAddToScene) {
|
|
228
|
+
super(name, scene, false);
|
|
229
|
+
/**
|
|
230
|
+
* Diffuse gives the basic color to an object.
|
|
231
|
+
*/
|
|
232
|
+
this.diffuse = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _diffuse_initializers, new Color3(1.0, 1.0, 1.0)));
|
|
233
|
+
/**
|
|
234
|
+
* Specular produces a highlight color on an object.
|
|
235
|
+
* Note: This is not affecting PBR materials.
|
|
236
|
+
*/
|
|
237
|
+
this.specular = (__runInitializers(this, _diffuse_extraInitializers), __runInitializers(this, _specular_initializers, new Color3(1.0, 1.0, 1.0)));
|
|
238
|
+
/**
|
|
239
|
+
* Defines the falloff type for this light. This lets overriding how punctual light are
|
|
240
|
+
* falling off base on range or angle.
|
|
241
|
+
* This can be set to any values in Light.FALLOFF_x.
|
|
242
|
+
*
|
|
243
|
+
* Note: This is only useful for PBR Materials at the moment. This could be extended if required to
|
|
244
|
+
* other types of materials.
|
|
245
|
+
*/
|
|
246
|
+
this.falloffType = (__runInitializers(this, _specular_extraInitializers), __runInitializers(this, _falloffType_initializers, _a.FALLOFF_DEFAULT));
|
|
247
|
+
/**
|
|
248
|
+
* Strength of the light.
|
|
249
|
+
* Note: By default it is define in the framework own unit.
|
|
250
|
+
* Note: In PBR materials the intensityMode can be use to chose what unit the intensity is defined in.
|
|
251
|
+
*/
|
|
252
|
+
this.intensity = (__runInitializers(this, _falloffType_extraInitializers), __runInitializers(this, _intensity_initializers, 1.0));
|
|
253
|
+
/** @internal */
|
|
254
|
+
this._internalEnabled = (__runInitializers(this, _intensity_extraInitializers), true);
|
|
255
|
+
this._range = Number.MAX_VALUE;
|
|
256
|
+
/** @internal */
|
|
257
|
+
this._inverseSquaredRange = 0;
|
|
258
|
+
/**
|
|
259
|
+
* Cached photometric scale default to 1.0 as the automatic intensity mode defaults to 1.0 for every type
|
|
260
|
+
* of light.
|
|
261
|
+
*/
|
|
262
|
+
this._photometricScale = 1.0;
|
|
263
|
+
this._intensityMode = _a.INTENSITYMODE_AUTOMATIC;
|
|
264
|
+
this._radius = 0.00001;
|
|
265
|
+
this._renderPriority = __runInitializers(this, __renderPriority_initializers, void 0);
|
|
266
|
+
_Light_renderPriority_accessor_storage.set(this, (__runInitializers(this, __renderPriority_extraInitializers), __runInitializers(this, _renderPriority_initializers, 0)));
|
|
267
|
+
this._shadowEnabled = (__runInitializers(this, _renderPriority_extraInitializers), __runInitializers(this, __shadowEnabled_initializers, true));
|
|
268
|
+
this._includedOnlyMeshes = __runInitializers(this, __shadowEnabled_extraInitializers);
|
|
269
|
+
this._excludeWithLayerMask = __runInitializers(this, __excludeWithLayerMask_initializers, 0);
|
|
270
|
+
this._includeOnlyWithLayerMask = (__runInitializers(this, __excludeWithLayerMask_extraInitializers), __runInitializers(this, __includeOnlyWithLayerMask_initializers, 0));
|
|
271
|
+
this._lightmapMode = (__runInitializers(this, __includeOnlyWithLayerMask_extraInitializers), __runInitializers(this, __lightmapMode_initializers, 0));
|
|
272
|
+
/**
|
|
273
|
+
* Shadow generators associated to the light.
|
|
274
|
+
* @internal Internal use only.
|
|
275
|
+
*/
|
|
276
|
+
this._shadowGenerators = (__runInitializers(this, __lightmapMode_extraInitializers), null);
|
|
277
|
+
/**
|
|
278
|
+
* @internal Internal use only.
|
|
279
|
+
*/
|
|
280
|
+
this._excludedMeshesIds = new Array();
|
|
281
|
+
/**
|
|
282
|
+
* @internal Internal use only.
|
|
283
|
+
*/
|
|
284
|
+
this._includedOnlyMeshesIds = new Array();
|
|
285
|
+
/**
|
|
286
|
+
* Used internally by ClusteredLight to sort lights
|
|
287
|
+
* @internal
|
|
288
|
+
*/
|
|
289
|
+
this._currentViewDepth = 0;
|
|
290
|
+
/**
|
|
291
|
+
* Used internally by ClusteredLightContainer to keep child lights out of mesh light source lists.
|
|
292
|
+
* @internal
|
|
293
|
+
*/
|
|
294
|
+
this._clusteredContainer = null;
|
|
295
|
+
/** @internal */
|
|
296
|
+
this._isLight = true;
|
|
297
|
+
if (!dontAddToScene) {
|
|
298
|
+
this.getScene().addLight(this);
|
|
299
|
+
}
|
|
300
|
+
this._uniformBuffer = new UniformBuffer(this.getScene().getEngine(), undefined, undefined, name);
|
|
301
|
+
this._buildUniformLayout();
|
|
302
|
+
this.includedOnlyMeshes = [];
|
|
303
|
+
this.excludedMeshes = [];
|
|
304
|
+
if (!dontAddToScene) {
|
|
305
|
+
this._resyncMeshes();
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Sets the passed Effect "effect" with the Light textures.
|
|
310
|
+
* @param effect The effect to update
|
|
311
|
+
* @param lightIndex The index of the light in the effect to update
|
|
312
|
+
* @returns The light
|
|
313
|
+
*/
|
|
314
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
315
|
+
transferTexturesToEffect(effect, lightIndex) {
|
|
316
|
+
// Do nothing by default.
|
|
317
|
+
return this;
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Binds the lights information from the scene to the effect for the given mesh.
|
|
321
|
+
* @param lightIndex Light index
|
|
322
|
+
* @param scene The scene where the light belongs to
|
|
323
|
+
* @param effect The effect we are binding the data to
|
|
324
|
+
* @param useSpecular Defines if specular is supported
|
|
325
|
+
* @param receiveShadows Defines if the effect (mesh) we bind the light for receives shadows
|
|
326
|
+
*/
|
|
327
|
+
_bindLight(lightIndex, scene, effect, useSpecular, receiveShadows = true) {
|
|
328
|
+
const iAsString = lightIndex.toString();
|
|
329
|
+
let needUpdate = false;
|
|
330
|
+
this._uniformBuffer.bindToEffect(effect, "Light" + iAsString);
|
|
331
|
+
if (this._renderId !== scene.getRenderId() || this._lastUseSpecular !== useSpecular || !this._uniformBuffer.useUbo) {
|
|
332
|
+
this._renderId = scene.getRenderId();
|
|
333
|
+
this._lastUseSpecular = useSpecular;
|
|
334
|
+
const scaledIntensity = this.getScaledIntensity();
|
|
335
|
+
this.transferToEffect(effect, iAsString);
|
|
336
|
+
this.diffuse.scaleToRef(scaledIntensity, TmpColors.Color3[0]);
|
|
337
|
+
this._uniformBuffer.updateColor4("vLightDiffuse", TmpColors.Color3[0], this.range, iAsString);
|
|
338
|
+
if (useSpecular) {
|
|
339
|
+
this.specular.scaleToRef(scaledIntensity, TmpColors.Color3[1]);
|
|
340
|
+
this._uniformBuffer.updateColor4("vLightSpecular", TmpColors.Color3[1], this.radius, iAsString);
|
|
341
|
+
}
|
|
342
|
+
needUpdate = true;
|
|
343
|
+
}
|
|
344
|
+
// Textures might still need to be rebound.
|
|
345
|
+
this.transferTexturesToEffect(effect, iAsString);
|
|
346
|
+
// Shadows
|
|
347
|
+
if (scene.shadowsEnabled && this.shadowEnabled && receiveShadows) {
|
|
348
|
+
const shadowGenerator = this.getShadowGenerator(scene.activeCamera) ?? this.getShadowGenerator();
|
|
349
|
+
if (shadowGenerator) {
|
|
350
|
+
shadowGenerator.bindShadowLight(iAsString, effect);
|
|
351
|
+
needUpdate = true;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
if (needUpdate) {
|
|
355
|
+
this._uniformBuffer.update();
|
|
356
|
+
}
|
|
357
|
+
else {
|
|
358
|
+
this._uniformBuffer.bindUniformBuffer();
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Returns the string "Light".
|
|
363
|
+
* @returns the class name
|
|
364
|
+
*/
|
|
365
|
+
getClassName() {
|
|
366
|
+
return "Light";
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Converts the light information to a readable string for debug purpose.
|
|
370
|
+
* @param fullDetails Supports for multiple levels of logging within scene loading
|
|
371
|
+
* @returns the human readable light info
|
|
372
|
+
*/
|
|
373
|
+
toString(fullDetails) {
|
|
374
|
+
let ret = "Name: " + this.name;
|
|
375
|
+
ret += ", type: " + ["Point", "Directional", "Spot", "Hemispheric", "Clustered"][this.getTypeID()];
|
|
376
|
+
if (this.animations) {
|
|
377
|
+
for (let i = 0; i < this.animations.length; i++) {
|
|
378
|
+
ret += ", animation[0]: " + this.animations[i].toString(fullDetails);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
return ret;
|
|
382
|
+
}
|
|
383
|
+
/** @internal */
|
|
384
|
+
_syncParentEnabledState() {
|
|
385
|
+
super._syncParentEnabledState();
|
|
386
|
+
if (!this.isDisposed()) {
|
|
387
|
+
this._resyncMeshes();
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* Set the enabled state of this node.
|
|
392
|
+
* @param value - the new enabled state
|
|
393
|
+
*/
|
|
394
|
+
setEnabled(value) {
|
|
395
|
+
super.setEnabled(value);
|
|
396
|
+
this._resyncMeshes();
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Returns the Light associated shadow generator if any.
|
|
400
|
+
* @param camera Camera for which the shadow generator should be retrieved (default: null). If null, retrieves the default shadow generator
|
|
401
|
+
* @returns the associated shadow generator.
|
|
402
|
+
*/
|
|
403
|
+
getShadowGenerator(camera = null) {
|
|
404
|
+
if (this._shadowGenerators === null) {
|
|
405
|
+
return null;
|
|
406
|
+
}
|
|
407
|
+
return this._shadowGenerators.get(camera) ?? null;
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Returns all the shadow generators associated to this light
|
|
411
|
+
* @returns
|
|
412
|
+
*/
|
|
413
|
+
getShadowGenerators() {
|
|
414
|
+
return this._shadowGenerators;
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Returns a Vector3, the absolute light position in the World.
|
|
418
|
+
* @returns the world space position of the light
|
|
419
|
+
*/
|
|
420
|
+
getAbsolutePosition() {
|
|
421
|
+
return Vector3.Zero();
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Specifies if the light will affect the passed mesh.
|
|
425
|
+
* @param mesh The mesh to test against the light
|
|
426
|
+
* @returns true the mesh is affected otherwise, false.
|
|
427
|
+
*/
|
|
428
|
+
canAffectMesh(mesh) {
|
|
429
|
+
if (!this.internalEnabled) {
|
|
430
|
+
return false;
|
|
431
|
+
}
|
|
432
|
+
if (!mesh) {
|
|
433
|
+
return true;
|
|
434
|
+
}
|
|
435
|
+
if (this.includedOnlyMeshes && this.includedOnlyMeshes.length > 0 && this.includedOnlyMeshes.indexOf(mesh) === -1) {
|
|
436
|
+
return false;
|
|
437
|
+
}
|
|
438
|
+
if (this.excludedMeshes && this.excludedMeshes.length > 0 && this.excludedMeshes.indexOf(mesh) !== -1) {
|
|
439
|
+
return false;
|
|
440
|
+
}
|
|
441
|
+
if (this.includeOnlyWithLayerMask !== 0 && (this.includeOnlyWithLayerMask & mesh.layerMask) === 0) {
|
|
442
|
+
return false;
|
|
443
|
+
}
|
|
444
|
+
if (this.excludeWithLayerMask !== 0 && this.excludeWithLayerMask & mesh.layerMask) {
|
|
445
|
+
return false;
|
|
446
|
+
}
|
|
447
|
+
return true;
|
|
448
|
+
}
|
|
449
|
+
/**
|
|
450
|
+
* Releases resources associated with this node.
|
|
451
|
+
* @param doNotRecurse Set to true to not recurse into each children (recurse into each children by default)
|
|
452
|
+
* @param disposeMaterialAndTextures Set to true to also dispose referenced materials and textures (false by default)
|
|
453
|
+
*/
|
|
454
|
+
dispose(doNotRecurse, disposeMaterialAndTextures = false) {
|
|
455
|
+
if (this._shadowGenerators) {
|
|
456
|
+
const iterator = this._shadowGenerators.values();
|
|
457
|
+
for (let key = iterator.next(); key.done !== true; key = iterator.next()) {
|
|
458
|
+
const shadowGenerator = key.value;
|
|
459
|
+
shadowGenerator.dispose();
|
|
460
|
+
}
|
|
461
|
+
this._shadowGenerators = null;
|
|
462
|
+
}
|
|
463
|
+
// Animations
|
|
464
|
+
this.getScene().stopAnimation(this);
|
|
465
|
+
if (this._parentContainer) {
|
|
466
|
+
const index = this._parentContainer.lights.indexOf(this);
|
|
467
|
+
if (index > -1) {
|
|
468
|
+
this._parentContainer.lights.splice(index, 1);
|
|
469
|
+
}
|
|
470
|
+
this._parentContainer = null;
|
|
471
|
+
}
|
|
472
|
+
// Remove from meshes
|
|
473
|
+
for (const mesh of this.getScene().meshes) {
|
|
474
|
+
mesh._removeLightSource(this, true);
|
|
475
|
+
}
|
|
476
|
+
this._uniformBuffer.dispose();
|
|
477
|
+
// Remove from scene
|
|
478
|
+
this.getScene().removeLight(this);
|
|
479
|
+
super.dispose(doNotRecurse, disposeMaterialAndTextures);
|
|
480
|
+
}
|
|
481
|
+
/**
|
|
482
|
+
* Returns the light type ID (integer).
|
|
483
|
+
* @returns The light Type id as a constant defines in Light.LIGHTTYPEID_x
|
|
484
|
+
*/
|
|
485
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
486
|
+
getTypeID() {
|
|
487
|
+
return 0;
|
|
488
|
+
}
|
|
489
|
+
/**
|
|
490
|
+
* Returns the intensity scaled by the Photometric Scale according to the light type and intensity mode.
|
|
491
|
+
* @returns the scaled intensity in intensity mode unit
|
|
492
|
+
*/
|
|
493
|
+
getScaledIntensity() {
|
|
494
|
+
return this._photometricScale * this.intensity;
|
|
495
|
+
}
|
|
496
|
+
/**
|
|
497
|
+
* Returns a new Light object, named "name", from the current one.
|
|
498
|
+
* @param name The name of the cloned light
|
|
499
|
+
* @param newParent The parent of this light, if it has one
|
|
500
|
+
* @returns the new created light
|
|
501
|
+
*/
|
|
502
|
+
clone(name, newParent = null) {
|
|
503
|
+
const constructor = _a.GetConstructorFromName(this.getTypeID(), name, this.getScene());
|
|
504
|
+
if (!constructor) {
|
|
505
|
+
return null;
|
|
506
|
+
}
|
|
507
|
+
const clonedLight = SerializationHelper.Clone(constructor, this);
|
|
508
|
+
if (name) {
|
|
509
|
+
clonedLight.name = name;
|
|
510
|
+
}
|
|
511
|
+
if (newParent) {
|
|
512
|
+
clonedLight.parent = newParent;
|
|
513
|
+
}
|
|
514
|
+
clonedLight.setEnabled(this.isEnabled());
|
|
515
|
+
this.onClonedObservable.notifyObservers(clonedLight);
|
|
516
|
+
return clonedLight;
|
|
517
|
+
}
|
|
518
|
+
/**
|
|
519
|
+
* Serializes the current light into a Serialization object.
|
|
520
|
+
* @returns the serialized object.
|
|
521
|
+
*/
|
|
522
|
+
serialize() {
|
|
523
|
+
const serializationObject = SerializationHelper.Serialize(this);
|
|
524
|
+
serializationObject.uniqueId = this.uniqueId;
|
|
525
|
+
// Type
|
|
526
|
+
serializationObject.type = this.getTypeID();
|
|
527
|
+
// Parent
|
|
528
|
+
if (this.parent) {
|
|
529
|
+
this.parent._serializeAsParent(serializationObject);
|
|
530
|
+
}
|
|
531
|
+
// Inclusion / exclusions
|
|
532
|
+
if (this.excludedMeshes.length > 0) {
|
|
533
|
+
serializationObject.excludedMeshesIds = [];
|
|
534
|
+
for (const mesh of this.excludedMeshes) {
|
|
535
|
+
serializationObject.excludedMeshesIds.push(mesh.id);
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
if (this.includedOnlyMeshes.length > 0) {
|
|
539
|
+
serializationObject.includedOnlyMeshesIds = [];
|
|
540
|
+
for (const mesh of this.includedOnlyMeshes) {
|
|
541
|
+
serializationObject.includedOnlyMeshesIds.push(mesh.id);
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
// Animations
|
|
545
|
+
SerializationHelper.AppendSerializedAnimations(this, serializationObject);
|
|
546
|
+
serializationObject.ranges = this.serializeAnimationRanges();
|
|
547
|
+
serializationObject.isEnabled = this.isEnabled();
|
|
548
|
+
return serializationObject;
|
|
549
|
+
}
|
|
550
|
+
/**
|
|
551
|
+
* Creates a new typed light from the passed type (integer) : point light = 0, directional light = 1, spot light = 2, hemispheric light = 3.
|
|
552
|
+
* This new light is named "name" and added to the passed scene.
|
|
553
|
+
* @param type Type according to the types available in Light.LIGHTTYPEID_x
|
|
554
|
+
* @param name The friendly name of the light
|
|
555
|
+
* @param scene The scene the new light will belong to
|
|
556
|
+
* @returns the constructor function
|
|
557
|
+
*/
|
|
558
|
+
static GetConstructorFromName(type, name, scene) {
|
|
559
|
+
const constructorFunc = Node.Construct("Light_Type_" + type, name, scene);
|
|
560
|
+
if (constructorFunc) {
|
|
561
|
+
return constructorFunc;
|
|
562
|
+
}
|
|
563
|
+
// Default to no light for none present once.
|
|
564
|
+
return null;
|
|
565
|
+
}
|
|
566
|
+
/**
|
|
567
|
+
* Parses the passed "parsedLight" and returns a new instanced Light from this parsing.
|
|
568
|
+
* @param parsedLight The JSON representation of the light
|
|
569
|
+
* @param scene The scene to create the parsed light in
|
|
570
|
+
* @param rootUrl The root url to use to load assets referenced by the light (e.g. textures)
|
|
571
|
+
* @returns the created light after parsing
|
|
572
|
+
*/
|
|
573
|
+
static Parse(parsedLight, scene, rootUrl = "") {
|
|
574
|
+
const constructor = _a.GetConstructorFromName(parsedLight.type, parsedLight.name, scene);
|
|
575
|
+
if (!constructor) {
|
|
576
|
+
return null;
|
|
577
|
+
}
|
|
578
|
+
const light = SerializationHelper.Parse(constructor, parsedLight, scene, rootUrl);
|
|
579
|
+
// Inclusion / exclusions
|
|
580
|
+
if (parsedLight.excludedMeshesIds) {
|
|
581
|
+
light._excludedMeshesIds = parsedLight.excludedMeshesIds;
|
|
582
|
+
}
|
|
583
|
+
if (parsedLight.includedOnlyMeshesIds) {
|
|
584
|
+
light._includedOnlyMeshesIds = parsedLight.includedOnlyMeshesIds;
|
|
585
|
+
}
|
|
586
|
+
// Parent
|
|
587
|
+
if (parsedLight.parentId !== undefined) {
|
|
588
|
+
light._waitingParentId = parsedLight.parentId;
|
|
589
|
+
}
|
|
590
|
+
if (parsedLight.parentInstanceIndex !== undefined) {
|
|
591
|
+
light._waitingParentInstanceIndex = parsedLight.parentInstanceIndex;
|
|
592
|
+
}
|
|
593
|
+
// Falloff
|
|
594
|
+
if (parsedLight.falloffType !== undefined) {
|
|
595
|
+
light.falloffType = parsedLight.falloffType;
|
|
596
|
+
}
|
|
597
|
+
// Lightmaps
|
|
598
|
+
if (parsedLight.lightmapMode !== undefined) {
|
|
599
|
+
light.lightmapMode = parsedLight.lightmapMode;
|
|
600
|
+
}
|
|
601
|
+
// Animations
|
|
602
|
+
if (parsedLight.animations) {
|
|
603
|
+
for (let animationIndex = 0; animationIndex < parsedLight.animations.length; animationIndex++) {
|
|
604
|
+
const parsedAnimation = parsedLight.animations[animationIndex];
|
|
605
|
+
const internalClass = GetClass("BABYLON.Animation");
|
|
606
|
+
if (internalClass) {
|
|
607
|
+
light.animations.push(internalClass.Parse(parsedAnimation));
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
Node.ParseAnimationRanges(light, parsedLight, scene);
|
|
611
|
+
}
|
|
612
|
+
if (parsedLight.autoAnimate) {
|
|
613
|
+
scene.beginAnimation(light, parsedLight.autoAnimateFrom, parsedLight.autoAnimateTo, parsedLight.autoAnimateLoop, parsedLight.autoAnimateSpeed || 1.0);
|
|
614
|
+
}
|
|
615
|
+
// Check if isEnabled is defined to be back compatible with prior serialized versions.
|
|
616
|
+
if (parsedLight.isEnabled !== undefined) {
|
|
617
|
+
light.setEnabled(parsedLight.isEnabled);
|
|
618
|
+
}
|
|
619
|
+
light._onParsed(parsedLight, scene, rootUrl);
|
|
620
|
+
return light;
|
|
621
|
+
}
|
|
622
|
+
/**
|
|
623
|
+
* Called after the light has been fully parsed and all base properties have been set.
|
|
624
|
+
* Override in subclasses to handle custom serialized data.
|
|
625
|
+
* @param _parsedLight The JSON representation of the light
|
|
626
|
+
* @param _scene The scene the light belongs to
|
|
627
|
+
* @param _rootUrl The root url to use to load assets referenced by the light (e.g. textures)
|
|
628
|
+
*/
|
|
629
|
+
_onParsed(_parsedLight, _scene, _rootUrl = "") {
|
|
630
|
+
// Override in subclasses
|
|
631
|
+
}
|
|
632
|
+
_hookArrayForExcluded(array) {
|
|
633
|
+
const oldPush = array.push;
|
|
634
|
+
array.push = (...items) => {
|
|
635
|
+
const result = oldPush.apply(array, items);
|
|
636
|
+
if (this._clusteredContainer) {
|
|
637
|
+
return result;
|
|
638
|
+
}
|
|
639
|
+
for (const item of items) {
|
|
640
|
+
item._resyncLightSource(this);
|
|
641
|
+
}
|
|
642
|
+
return result;
|
|
643
|
+
};
|
|
644
|
+
const oldSplice = array.splice;
|
|
645
|
+
array.splice = (index, deleteCount) => {
|
|
646
|
+
const deleted = oldSplice.call(array, index, deleteCount ?? array.length);
|
|
647
|
+
if (this._clusteredContainer) {
|
|
648
|
+
return deleted;
|
|
649
|
+
}
|
|
650
|
+
for (const item of deleted) {
|
|
651
|
+
item._resyncLightSource(this);
|
|
652
|
+
}
|
|
653
|
+
return deleted;
|
|
654
|
+
};
|
|
655
|
+
if (!this._clusteredContainer) {
|
|
656
|
+
for (const item of array) {
|
|
657
|
+
item._resyncLightSource(this);
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
_hookArrayForIncludedOnly(array) {
|
|
662
|
+
const oldPush = array.push;
|
|
663
|
+
array.push = (...items) => {
|
|
664
|
+
const result = oldPush.apply(array, items);
|
|
665
|
+
this._resyncMeshes();
|
|
666
|
+
return result;
|
|
667
|
+
};
|
|
668
|
+
const oldSplice = array.splice;
|
|
669
|
+
array.splice = (index, deleteCount) => {
|
|
670
|
+
const deleted = oldSplice.call(array, index, deleteCount ?? array.length);
|
|
671
|
+
this._resyncMeshes();
|
|
672
|
+
return deleted;
|
|
673
|
+
};
|
|
674
|
+
this._resyncMeshes();
|
|
675
|
+
}
|
|
676
|
+
_resyncMeshes() {
|
|
677
|
+
if (this._clusteredContainer) {
|
|
678
|
+
return;
|
|
679
|
+
}
|
|
680
|
+
for (const mesh of this.getScene().meshes) {
|
|
681
|
+
mesh._resyncLightSource(this);
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
/**
|
|
685
|
+
* Forces the meshes to update their light related information in their rendering used effects
|
|
686
|
+
* @internal Internal Use Only
|
|
687
|
+
*/
|
|
688
|
+
_markMeshesAsLightDirty() {
|
|
689
|
+
for (const mesh of this.getScene().meshes) {
|
|
690
|
+
if (mesh.lightSources.indexOf(this) !== -1) {
|
|
691
|
+
mesh._markSubMeshesAsLightDirty();
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
/**
|
|
696
|
+
* Recomputes the cached photometric scale if needed.
|
|
697
|
+
*/
|
|
698
|
+
_computePhotometricScale() {
|
|
699
|
+
this._photometricScale = this._getPhotometricScale();
|
|
700
|
+
this.getScene().resetCachedMaterial();
|
|
701
|
+
}
|
|
702
|
+
/**
|
|
703
|
+
* @returns the Photometric Scale according to the light type and intensity mode.
|
|
704
|
+
*/
|
|
705
|
+
_getPhotometricScale() {
|
|
706
|
+
let photometricScale = 0.0;
|
|
707
|
+
const lightTypeID = this.getTypeID();
|
|
708
|
+
//get photometric mode
|
|
709
|
+
let photometricMode = this.intensityMode;
|
|
710
|
+
if (photometricMode === _a.INTENSITYMODE_AUTOMATIC) {
|
|
711
|
+
if (lightTypeID === _a.LIGHTTYPEID_DIRECTIONALLIGHT) {
|
|
712
|
+
photometricMode = _a.INTENSITYMODE_ILLUMINANCE;
|
|
713
|
+
}
|
|
714
|
+
else {
|
|
715
|
+
photometricMode = _a.INTENSITYMODE_LUMINOUSINTENSITY;
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
//compute photometric scale
|
|
719
|
+
switch (lightTypeID) {
|
|
720
|
+
case _a.LIGHTTYPEID_POINTLIGHT:
|
|
721
|
+
case _a.LIGHTTYPEID_SPOTLIGHT:
|
|
722
|
+
switch (photometricMode) {
|
|
723
|
+
case _a.INTENSITYMODE_LUMINOUSPOWER:
|
|
724
|
+
photometricScale = 1.0 / (4.0 * Math.PI);
|
|
725
|
+
break;
|
|
726
|
+
case _a.INTENSITYMODE_LUMINOUSINTENSITY:
|
|
727
|
+
photometricScale = 1.0;
|
|
728
|
+
break;
|
|
729
|
+
case _a.INTENSITYMODE_LUMINANCE:
|
|
730
|
+
photometricScale = this.radius * this.radius;
|
|
731
|
+
break;
|
|
732
|
+
}
|
|
733
|
+
break;
|
|
734
|
+
case _a.LIGHTTYPEID_DIRECTIONALLIGHT:
|
|
735
|
+
switch (photometricMode) {
|
|
736
|
+
case _a.INTENSITYMODE_ILLUMINANCE:
|
|
737
|
+
photometricScale = 1.0;
|
|
738
|
+
break;
|
|
739
|
+
case _a.INTENSITYMODE_LUMINANCE: {
|
|
740
|
+
// When radius (and therefore solid angle) is non-zero a directional lights brightness can be specified via central (peak) luminance.
|
|
741
|
+
// For a directional light the 'radius' defines the angular radius (in radians) rather than world-space radius (e.g. in metres).
|
|
742
|
+
let apexAngleRadians = this.radius;
|
|
743
|
+
// Impose a minimum light angular size to avoid the light becoming an infinitely small angular light source (i.e. a dirac delta function).
|
|
744
|
+
apexAngleRadians = Math.max(apexAngleRadians, 0.001);
|
|
745
|
+
const solidAngle = 2.0 * Math.PI * (1.0 - Math.cos(apexAngleRadians));
|
|
746
|
+
photometricScale = solidAngle;
|
|
747
|
+
break;
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
break;
|
|
751
|
+
case _a.LIGHTTYPEID_HEMISPHERICLIGHT:
|
|
752
|
+
// No fall off in hemispheric light.
|
|
753
|
+
photometricScale = 1.0;
|
|
754
|
+
break;
|
|
755
|
+
case _a.LIGHTTYPEID_RECT_AREALIGHT:
|
|
756
|
+
// Area lights interpret their intensity directly; no additional photometric scaling is applied.
|
|
757
|
+
photometricScale = 1.0;
|
|
758
|
+
break;
|
|
759
|
+
}
|
|
760
|
+
return photometricScale;
|
|
761
|
+
}
|
|
762
|
+
/**
|
|
763
|
+
* Reorder the light in the scene according to their defined priority.
|
|
764
|
+
* @internal Internal Use Only
|
|
765
|
+
*/
|
|
766
|
+
_reorderLightsInScene() {
|
|
767
|
+
const scene = this.getScene();
|
|
768
|
+
if (this._renderPriority != 0) {
|
|
769
|
+
scene.requireLightSorting = true;
|
|
770
|
+
}
|
|
771
|
+
this.getScene().sortLightsByPriority();
|
|
772
|
+
}
|
|
773
|
+
/**
|
|
774
|
+
* Returns true when all texture resources used by this light are ready (e.g. projection textures).
|
|
775
|
+
* Override in subclasses that use texture resources.
|
|
776
|
+
* @returns true if all light textures are ready
|
|
777
|
+
*/
|
|
778
|
+
areLightTexturesReady() {
|
|
779
|
+
return true;
|
|
780
|
+
}
|
|
781
|
+
/**
|
|
782
|
+
* @internal
|
|
783
|
+
*/
|
|
784
|
+
_isReady() {
|
|
785
|
+
return true;
|
|
786
|
+
}
|
|
787
|
+
},
|
|
788
|
+
_Light_renderPriority_accessor_storage = new WeakMap(),
|
|
789
|
+
(() => {
|
|
790
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
791
|
+
_diffuse_decorators = [serializeAsColor3()];
|
|
792
|
+
_specular_decorators = [serializeAsColor3()];
|
|
793
|
+
_falloffType_decorators = [serialize()];
|
|
794
|
+
_intensity_decorators = [serialize()];
|
|
795
|
+
_get_range_decorators = [serialize()];
|
|
796
|
+
_get_intensityMode_decorators = [serialize()];
|
|
797
|
+
_get_radius_decorators = [serialize()];
|
|
798
|
+
__renderPriority_decorators = [serialize()];
|
|
799
|
+
_renderPriority_decorators = [expandToProperty("_reorderLightsInScene")];
|
|
800
|
+
__shadowEnabled_decorators = [serialize("shadowEnabled")];
|
|
801
|
+
__excludeWithLayerMask_decorators = [serialize("excludeWithLayerMask")];
|
|
802
|
+
__includeOnlyWithLayerMask_decorators = [serialize("includeOnlyWithLayerMask")];
|
|
803
|
+
__lightmapMode_decorators = [serialize("lightmapMode")];
|
|
804
|
+
__esDecorate(_a, null, _get_range_decorators, { kind: "getter", name: "range", static: false, private: false, access: { has: obj => "range" in obj, get: obj => obj.range }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
805
|
+
__esDecorate(_a, null, _get_intensityMode_decorators, { kind: "getter", name: "intensityMode", static: false, private: false, access: { has: obj => "intensityMode" in obj, get: obj => obj.intensityMode }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
806
|
+
__esDecorate(_a, null, _get_radius_decorators, { kind: "getter", name: "radius", static: false, private: false, access: { has: obj => "radius" in obj, get: obj => obj.radius }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
807
|
+
__esDecorate(_a, null, _renderPriority_decorators, { kind: "accessor", name: "renderPriority", static: false, private: false, access: { has: obj => "renderPriority" in obj, get: obj => obj.renderPriority, set: (obj, value) => { obj.renderPriority = value; } }, metadata: _metadata }, _renderPriority_initializers, _renderPriority_extraInitializers);
|
|
808
|
+
__esDecorate(null, null, _diffuse_decorators, { kind: "field", name: "diffuse", static: false, private: false, access: { has: obj => "diffuse" in obj, get: obj => obj.diffuse, set: (obj, value) => { obj.diffuse = value; } }, metadata: _metadata }, _diffuse_initializers, _diffuse_extraInitializers);
|
|
809
|
+
__esDecorate(null, null, _specular_decorators, { kind: "field", name: "specular", static: false, private: false, access: { has: obj => "specular" in obj, get: obj => obj.specular, set: (obj, value) => { obj.specular = value; } }, metadata: _metadata }, _specular_initializers, _specular_extraInitializers);
|
|
810
|
+
__esDecorate(null, null, _falloffType_decorators, { kind: "field", name: "falloffType", static: false, private: false, access: { has: obj => "falloffType" in obj, get: obj => obj.falloffType, set: (obj, value) => { obj.falloffType = value; } }, metadata: _metadata }, _falloffType_initializers, _falloffType_extraInitializers);
|
|
811
|
+
__esDecorate(null, null, _intensity_decorators, { kind: "field", name: "intensity", static: false, private: false, access: { has: obj => "intensity" in obj, get: obj => obj.intensity, set: (obj, value) => { obj.intensity = value; } }, metadata: _metadata }, _intensity_initializers, _intensity_extraInitializers);
|
|
812
|
+
__esDecorate(null, null, __renderPriority_decorators, { kind: "field", name: "_renderPriority", static: false, private: false, access: { has: obj => "_renderPriority" in obj, get: obj => obj._renderPriority, set: (obj, value) => { obj._renderPriority = value; } }, metadata: _metadata }, __renderPriority_initializers, __renderPriority_extraInitializers);
|
|
813
|
+
__esDecorate(null, null, __shadowEnabled_decorators, { kind: "field", name: "_shadowEnabled", static: false, private: false, access: { has: obj => "_shadowEnabled" in obj, get: obj => obj._shadowEnabled, set: (obj, value) => { obj._shadowEnabled = value; } }, metadata: _metadata }, __shadowEnabled_initializers, __shadowEnabled_extraInitializers);
|
|
814
|
+
__esDecorate(null, null, __excludeWithLayerMask_decorators, { kind: "field", name: "_excludeWithLayerMask", static: false, private: false, access: { has: obj => "_excludeWithLayerMask" in obj, get: obj => obj._excludeWithLayerMask, set: (obj, value) => { obj._excludeWithLayerMask = value; } }, metadata: _metadata }, __excludeWithLayerMask_initializers, __excludeWithLayerMask_extraInitializers);
|
|
815
|
+
__esDecorate(null, null, __includeOnlyWithLayerMask_decorators, { kind: "field", name: "_includeOnlyWithLayerMask", static: false, private: false, access: { has: obj => "_includeOnlyWithLayerMask" in obj, get: obj => obj._includeOnlyWithLayerMask, set: (obj, value) => { obj._includeOnlyWithLayerMask = value; } }, metadata: _metadata }, __includeOnlyWithLayerMask_initializers, __includeOnlyWithLayerMask_extraInitializers);
|
|
816
|
+
__esDecorate(null, null, __lightmapMode_decorators, { kind: "field", name: "_lightmapMode", static: false, private: false, access: { has: obj => "_lightmapMode" in obj, get: obj => obj._lightmapMode, set: (obj, value) => { obj._lightmapMode = value; } }, metadata: _metadata }, __lightmapMode_initializers, __lightmapMode_extraInitializers);
|
|
817
|
+
if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
818
|
+
})(),
|
|
186
819
|
/**
|
|
187
|
-
*
|
|
820
|
+
* Falloff Default: light is falling off following the material specification:
|
|
821
|
+
* standard material is using standard falloff whereas pbr material can request special falloff per materials.
|
|
188
822
|
*/
|
|
189
|
-
|
|
823
|
+
_a.FALLOFF_DEFAULT = LightConstants.FALLOFF_DEFAULT,
|
|
190
824
|
/**
|
|
191
|
-
*
|
|
192
|
-
* Note: This is not affecting PBR materials.
|
|
825
|
+
* Falloff Physical: light is falling off following the inverse squared distance law.
|
|
193
826
|
*/
|
|
194
|
-
|
|
827
|
+
_a.FALLOFF_PHYSICAL = LightConstants.FALLOFF_PHYSICAL,
|
|
195
828
|
/**
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
* This can be set to any values in Light.FALLOFF_x.
|
|
199
|
-
*
|
|
200
|
-
* Note: This is only useful for PBR Materials at the moment. This could be extended if required to
|
|
201
|
-
* other types of materials.
|
|
829
|
+
* Falloff gltf: light is falling off as described in the gltf moving to PBR document
|
|
830
|
+
* to enhance interoperability with other engines.
|
|
202
831
|
*/
|
|
203
|
-
|
|
832
|
+
_a.FALLOFF_GLTF = LightConstants.FALLOFF_GLTF,
|
|
204
833
|
/**
|
|
205
|
-
*
|
|
206
|
-
*
|
|
207
|
-
* Note: In PBR materials the intensityMode can be use to chose what unit the intensity is defined in.
|
|
834
|
+
* Falloff Standard: light is falling off like in the standard material
|
|
835
|
+
* to enhance interoperability with other materials.
|
|
208
836
|
*/
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
this._internalEnabled = true;
|
|
212
|
-
this._range = Number.MAX_VALUE;
|
|
213
|
-
/** @internal */
|
|
214
|
-
this._inverseSquaredRange = 0;
|
|
837
|
+
_a.FALLOFF_STANDARD = LightConstants.FALLOFF_STANDARD,
|
|
838
|
+
//lightmapMode Consts
|
|
215
839
|
/**
|
|
216
|
-
*
|
|
217
|
-
*
|
|
840
|
+
* If every light affecting the material is in this lightmapMode,
|
|
841
|
+
* material.lightmapTexture adds or multiplies
|
|
842
|
+
* (depends on material.useLightmapAsShadowmap)
|
|
843
|
+
* after every other light calculations.
|
|
218
844
|
*/
|
|
219
|
-
|
|
220
|
-
this._intensityMode = Light.INTENSITYMODE_AUTOMATIC;
|
|
221
|
-
this._radius = 0.00001;
|
|
845
|
+
_a.LIGHTMAP_DEFAULT = LightConstants.LIGHTMAP_DEFAULT,
|
|
222
846
|
/**
|
|
223
|
-
*
|
|
224
|
-
*
|
|
847
|
+
* material.lightmapTexture as only diffuse lighting from this light
|
|
848
|
+
* adds only specular lighting from this light
|
|
849
|
+
* adds dynamic shadows
|
|
225
850
|
*/
|
|
226
|
-
|
|
227
|
-
this._shadowEnabled = true;
|
|
228
|
-
this._excludeWithLayerMask = 0;
|
|
229
|
-
this._includeOnlyWithLayerMask = 0;
|
|
230
|
-
this._lightmapMode = 0;
|
|
851
|
+
_a.LIGHTMAP_SPECULAR = LightConstants.LIGHTMAP_SPECULAR,
|
|
231
852
|
/**
|
|
232
|
-
*
|
|
233
|
-
*
|
|
853
|
+
* material.lightmapTexture as only lighting
|
|
854
|
+
* no light calculation from this light
|
|
855
|
+
* only adds dynamic shadows from this light
|
|
234
856
|
*/
|
|
235
|
-
|
|
857
|
+
_a.LIGHTMAP_SHADOWSONLY = LightConstants.LIGHTMAP_SHADOWSONLY,
|
|
858
|
+
// Intensity Mode Consts
|
|
236
859
|
/**
|
|
237
|
-
*
|
|
860
|
+
* Each light type uses the default quantity according to its type:
|
|
861
|
+
* point/spot lights use luminous intensity
|
|
862
|
+
* directional lights use illuminance
|
|
238
863
|
*/
|
|
239
|
-
|
|
864
|
+
_a.INTENSITYMODE_AUTOMATIC = LightConstants.INTENSITYMODE_AUTOMATIC,
|
|
240
865
|
/**
|
|
241
|
-
*
|
|
866
|
+
* lumen (lm)
|
|
242
867
|
*/
|
|
243
|
-
|
|
868
|
+
_a.INTENSITYMODE_LUMINOUSPOWER = LightConstants.INTENSITYMODE_LUMINOUSPOWER,
|
|
244
869
|
/**
|
|
245
|
-
*
|
|
246
|
-
* @internal
|
|
870
|
+
* candela (lm/sr)
|
|
247
871
|
*/
|
|
248
|
-
|
|
872
|
+
_a.INTENSITYMODE_LUMINOUSINTENSITY = LightConstants.INTENSITYMODE_LUMINOUSINTENSITY,
|
|
249
873
|
/**
|
|
250
|
-
*
|
|
251
|
-
* @internal
|
|
874
|
+
* lux (lm/m^2)
|
|
252
875
|
*/
|
|
253
|
-
|
|
254
|
-
/**
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
* @param effect The effect we are binding the data to
|
|
283
|
-
* @param useSpecular Defines if specular is supported
|
|
284
|
-
* @param receiveShadows Defines if the effect (mesh) we bind the light for receives shadows
|
|
285
|
-
*/
|
|
286
|
-
_bindLight(lightIndex, scene, effect, useSpecular, receiveShadows = true) {
|
|
287
|
-
const iAsString = lightIndex.toString();
|
|
288
|
-
let needUpdate = false;
|
|
289
|
-
this._uniformBuffer.bindToEffect(effect, "Light" + iAsString);
|
|
290
|
-
if (this._renderId !== scene.getRenderId() || this._lastUseSpecular !== useSpecular || !this._uniformBuffer.useUbo) {
|
|
291
|
-
this._renderId = scene.getRenderId();
|
|
292
|
-
this._lastUseSpecular = useSpecular;
|
|
293
|
-
const scaledIntensity = this.getScaledIntensity();
|
|
294
|
-
this.transferToEffect(effect, iAsString);
|
|
295
|
-
this.diffuse.scaleToRef(scaledIntensity, TmpColors.Color3[0]);
|
|
296
|
-
this._uniformBuffer.updateColor4("vLightDiffuse", TmpColors.Color3[0], this.range, iAsString);
|
|
297
|
-
if (useSpecular) {
|
|
298
|
-
this.specular.scaleToRef(scaledIntensity, TmpColors.Color3[1]);
|
|
299
|
-
this._uniformBuffer.updateColor4("vLightSpecular", TmpColors.Color3[1], this.radius, iAsString);
|
|
300
|
-
}
|
|
301
|
-
needUpdate = true;
|
|
302
|
-
}
|
|
303
|
-
// Textures might still need to be rebound.
|
|
304
|
-
this.transferTexturesToEffect(effect, iAsString);
|
|
305
|
-
// Shadows
|
|
306
|
-
if (scene.shadowsEnabled && this.shadowEnabled && receiveShadows) {
|
|
307
|
-
const shadowGenerator = this.getShadowGenerator(scene.activeCamera) ?? this.getShadowGenerator();
|
|
308
|
-
if (shadowGenerator) {
|
|
309
|
-
shadowGenerator.bindShadowLight(iAsString, effect);
|
|
310
|
-
needUpdate = true;
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
if (needUpdate) {
|
|
314
|
-
this._uniformBuffer.update();
|
|
315
|
-
}
|
|
316
|
-
else {
|
|
317
|
-
this._uniformBuffer.bindUniformBuffer();
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
/**
|
|
321
|
-
* Returns the string "Light".
|
|
322
|
-
* @returns the class name
|
|
323
|
-
*/
|
|
324
|
-
getClassName() {
|
|
325
|
-
return "Light";
|
|
326
|
-
}
|
|
327
|
-
/**
|
|
328
|
-
* Converts the light information to a readable string for debug purpose.
|
|
329
|
-
* @param fullDetails Supports for multiple levels of logging within scene loading
|
|
330
|
-
* @returns the human readable light info
|
|
331
|
-
*/
|
|
332
|
-
toString(fullDetails) {
|
|
333
|
-
let ret = "Name: " + this.name;
|
|
334
|
-
ret += ", type: " + ["Point", "Directional", "Spot", "Hemispheric", "Clustered"][this.getTypeID()];
|
|
335
|
-
if (this.animations) {
|
|
336
|
-
for (let i = 0; i < this.animations.length; i++) {
|
|
337
|
-
ret += ", animation[0]: " + this.animations[i].toString(fullDetails);
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
return ret;
|
|
341
|
-
}
|
|
342
|
-
/** @internal */
|
|
343
|
-
_syncParentEnabledState() {
|
|
344
|
-
super._syncParentEnabledState();
|
|
345
|
-
if (!this.isDisposed()) {
|
|
346
|
-
this._resyncMeshes();
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
/**
|
|
350
|
-
* Set the enabled state of this node.
|
|
351
|
-
* @param value - the new enabled state
|
|
352
|
-
*/
|
|
353
|
-
setEnabled(value) {
|
|
354
|
-
super.setEnabled(value);
|
|
355
|
-
this._resyncMeshes();
|
|
356
|
-
}
|
|
357
|
-
/**
|
|
358
|
-
* Returns the Light associated shadow generator if any.
|
|
359
|
-
* @param camera Camera for which the shadow generator should be retrieved (default: null). If null, retrieves the default shadow generator
|
|
360
|
-
* @returns the associated shadow generator.
|
|
361
|
-
*/
|
|
362
|
-
getShadowGenerator(camera = null) {
|
|
363
|
-
if (this._shadowGenerators === null) {
|
|
364
|
-
return null;
|
|
365
|
-
}
|
|
366
|
-
return this._shadowGenerators.get(camera) ?? null;
|
|
367
|
-
}
|
|
368
|
-
/**
|
|
369
|
-
* Returns all the shadow generators associated to this light
|
|
370
|
-
* @returns
|
|
371
|
-
*/
|
|
372
|
-
getShadowGenerators() {
|
|
373
|
-
return this._shadowGenerators;
|
|
374
|
-
}
|
|
375
|
-
/**
|
|
376
|
-
* Returns a Vector3, the absolute light position in the World.
|
|
377
|
-
* @returns the world space position of the light
|
|
378
|
-
*/
|
|
379
|
-
getAbsolutePosition() {
|
|
380
|
-
return Vector3.Zero();
|
|
381
|
-
}
|
|
382
|
-
/**
|
|
383
|
-
* Specifies if the light will affect the passed mesh.
|
|
384
|
-
* @param mesh The mesh to test against the light
|
|
385
|
-
* @returns true the mesh is affected otherwise, false.
|
|
386
|
-
*/
|
|
387
|
-
canAffectMesh(mesh) {
|
|
388
|
-
if (!this.internalEnabled) {
|
|
389
|
-
return false;
|
|
390
|
-
}
|
|
391
|
-
if (!mesh) {
|
|
392
|
-
return true;
|
|
393
|
-
}
|
|
394
|
-
if (this.includedOnlyMeshes && this.includedOnlyMeshes.length > 0 && this.includedOnlyMeshes.indexOf(mesh) === -1) {
|
|
395
|
-
return false;
|
|
396
|
-
}
|
|
397
|
-
if (this.excludedMeshes && this.excludedMeshes.length > 0 && this.excludedMeshes.indexOf(mesh) !== -1) {
|
|
398
|
-
return false;
|
|
399
|
-
}
|
|
400
|
-
if (this.includeOnlyWithLayerMask !== 0 && (this.includeOnlyWithLayerMask & mesh.layerMask) === 0) {
|
|
401
|
-
return false;
|
|
402
|
-
}
|
|
403
|
-
if (this.excludeWithLayerMask !== 0 && this.excludeWithLayerMask & mesh.layerMask) {
|
|
404
|
-
return false;
|
|
405
|
-
}
|
|
406
|
-
return true;
|
|
407
|
-
}
|
|
408
|
-
/**
|
|
409
|
-
* Releases resources associated with this node.
|
|
410
|
-
* @param doNotRecurse Set to true to not recurse into each children (recurse into each children by default)
|
|
411
|
-
* @param disposeMaterialAndTextures Set to true to also dispose referenced materials and textures (false by default)
|
|
412
|
-
*/
|
|
413
|
-
dispose(doNotRecurse, disposeMaterialAndTextures = false) {
|
|
414
|
-
if (this._shadowGenerators) {
|
|
415
|
-
const iterator = this._shadowGenerators.values();
|
|
416
|
-
for (let key = iterator.next(); key.done !== true; key = iterator.next()) {
|
|
417
|
-
const shadowGenerator = key.value;
|
|
418
|
-
shadowGenerator.dispose();
|
|
419
|
-
}
|
|
420
|
-
this._shadowGenerators = null;
|
|
421
|
-
}
|
|
422
|
-
// Animations
|
|
423
|
-
this.getScene().stopAnimation(this);
|
|
424
|
-
if (this._parentContainer) {
|
|
425
|
-
const index = this._parentContainer.lights.indexOf(this);
|
|
426
|
-
if (index > -1) {
|
|
427
|
-
this._parentContainer.lights.splice(index, 1);
|
|
428
|
-
}
|
|
429
|
-
this._parentContainer = null;
|
|
430
|
-
}
|
|
431
|
-
// Remove from meshes
|
|
432
|
-
for (const mesh of this.getScene().meshes) {
|
|
433
|
-
mesh._removeLightSource(this, true);
|
|
434
|
-
}
|
|
435
|
-
this._uniformBuffer.dispose();
|
|
436
|
-
// Remove from scene
|
|
437
|
-
this.getScene().removeLight(this);
|
|
438
|
-
super.dispose(doNotRecurse, disposeMaterialAndTextures);
|
|
439
|
-
}
|
|
440
|
-
/**
|
|
441
|
-
* Returns the light type ID (integer).
|
|
442
|
-
* @returns The light Type id as a constant defines in Light.LIGHTTYPEID_x
|
|
443
|
-
*/
|
|
444
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
445
|
-
getTypeID() {
|
|
446
|
-
return 0;
|
|
447
|
-
}
|
|
448
|
-
/**
|
|
449
|
-
* Returns the intensity scaled by the Photometric Scale according to the light type and intensity mode.
|
|
450
|
-
* @returns the scaled intensity in intensity mode unit
|
|
451
|
-
*/
|
|
452
|
-
getScaledIntensity() {
|
|
453
|
-
return this._photometricScale * this.intensity;
|
|
454
|
-
}
|
|
455
|
-
/**
|
|
456
|
-
* Returns a new Light object, named "name", from the current one.
|
|
457
|
-
* @param name The name of the cloned light
|
|
458
|
-
* @param newParent The parent of this light, if it has one
|
|
459
|
-
* @returns the new created light
|
|
460
|
-
*/
|
|
461
|
-
clone(name, newParent = null) {
|
|
462
|
-
const constructor = Light.GetConstructorFromName(this.getTypeID(), name, this.getScene());
|
|
463
|
-
if (!constructor) {
|
|
464
|
-
return null;
|
|
465
|
-
}
|
|
466
|
-
const clonedLight = SerializationHelper.Clone(constructor, this);
|
|
467
|
-
if (name) {
|
|
468
|
-
clonedLight.name = name;
|
|
469
|
-
}
|
|
470
|
-
if (newParent) {
|
|
471
|
-
clonedLight.parent = newParent;
|
|
472
|
-
}
|
|
473
|
-
clonedLight.setEnabled(this.isEnabled());
|
|
474
|
-
this.onClonedObservable.notifyObservers(clonedLight);
|
|
475
|
-
return clonedLight;
|
|
476
|
-
}
|
|
477
|
-
/**
|
|
478
|
-
* Serializes the current light into a Serialization object.
|
|
479
|
-
* @returns the serialized object.
|
|
480
|
-
*/
|
|
481
|
-
serialize() {
|
|
482
|
-
const serializationObject = SerializationHelper.Serialize(this);
|
|
483
|
-
serializationObject.uniqueId = this.uniqueId;
|
|
484
|
-
// Type
|
|
485
|
-
serializationObject.type = this.getTypeID();
|
|
486
|
-
// Parent
|
|
487
|
-
if (this.parent) {
|
|
488
|
-
this.parent._serializeAsParent(serializationObject);
|
|
489
|
-
}
|
|
490
|
-
// Inclusion / exclusions
|
|
491
|
-
if (this.excludedMeshes.length > 0) {
|
|
492
|
-
serializationObject.excludedMeshesIds = [];
|
|
493
|
-
for (const mesh of this.excludedMeshes) {
|
|
494
|
-
serializationObject.excludedMeshesIds.push(mesh.id);
|
|
495
|
-
}
|
|
496
|
-
}
|
|
497
|
-
if (this.includedOnlyMeshes.length > 0) {
|
|
498
|
-
serializationObject.includedOnlyMeshesIds = [];
|
|
499
|
-
for (const mesh of this.includedOnlyMeshes) {
|
|
500
|
-
serializationObject.includedOnlyMeshesIds.push(mesh.id);
|
|
501
|
-
}
|
|
502
|
-
}
|
|
503
|
-
// Animations
|
|
504
|
-
SerializationHelper.AppendSerializedAnimations(this, serializationObject);
|
|
505
|
-
serializationObject.ranges = this.serializeAnimationRanges();
|
|
506
|
-
serializationObject.isEnabled = this.isEnabled();
|
|
507
|
-
return serializationObject;
|
|
508
|
-
}
|
|
509
|
-
/**
|
|
510
|
-
* Creates a new typed light from the passed type (integer) : point light = 0, directional light = 1, spot light = 2, hemispheric light = 3.
|
|
511
|
-
* This new light is named "name" and added to the passed scene.
|
|
512
|
-
* @param type Type according to the types available in Light.LIGHTTYPEID_x
|
|
513
|
-
* @param name The friendly name of the light
|
|
514
|
-
* @param scene The scene the new light will belong to
|
|
515
|
-
* @returns the constructor function
|
|
516
|
-
*/
|
|
517
|
-
static GetConstructorFromName(type, name, scene) {
|
|
518
|
-
const constructorFunc = Node.Construct("Light_Type_" + type, name, scene);
|
|
519
|
-
if (constructorFunc) {
|
|
520
|
-
return constructorFunc;
|
|
521
|
-
}
|
|
522
|
-
// Default to no light for none present once.
|
|
523
|
-
return null;
|
|
524
|
-
}
|
|
525
|
-
/**
|
|
526
|
-
* Parses the passed "parsedLight" and returns a new instanced Light from this parsing.
|
|
527
|
-
* @param parsedLight The JSON representation of the light
|
|
528
|
-
* @param scene The scene to create the parsed light in
|
|
529
|
-
* @returns the created light after parsing
|
|
530
|
-
*/
|
|
531
|
-
static Parse(parsedLight, scene) {
|
|
532
|
-
const constructor = Light.GetConstructorFromName(parsedLight.type, parsedLight.name, scene);
|
|
533
|
-
if (!constructor) {
|
|
534
|
-
return null;
|
|
535
|
-
}
|
|
536
|
-
const light = SerializationHelper.Parse(constructor, parsedLight, scene);
|
|
537
|
-
// Inclusion / exclusions
|
|
538
|
-
if (parsedLight.excludedMeshesIds) {
|
|
539
|
-
light._excludedMeshesIds = parsedLight.excludedMeshesIds;
|
|
540
|
-
}
|
|
541
|
-
if (parsedLight.includedOnlyMeshesIds) {
|
|
542
|
-
light._includedOnlyMeshesIds = parsedLight.includedOnlyMeshesIds;
|
|
543
|
-
}
|
|
544
|
-
// Parent
|
|
545
|
-
if (parsedLight.parentId !== undefined) {
|
|
546
|
-
light._waitingParentId = parsedLight.parentId;
|
|
547
|
-
}
|
|
548
|
-
if (parsedLight.parentInstanceIndex !== undefined) {
|
|
549
|
-
light._waitingParentInstanceIndex = parsedLight.parentInstanceIndex;
|
|
550
|
-
}
|
|
551
|
-
// Falloff
|
|
552
|
-
if (parsedLight.falloffType !== undefined) {
|
|
553
|
-
light.falloffType = parsedLight.falloffType;
|
|
554
|
-
}
|
|
555
|
-
// Lightmaps
|
|
556
|
-
if (parsedLight.lightmapMode !== undefined) {
|
|
557
|
-
light.lightmapMode = parsedLight.lightmapMode;
|
|
558
|
-
}
|
|
559
|
-
// Animations
|
|
560
|
-
if (parsedLight.animations) {
|
|
561
|
-
for (let animationIndex = 0; animationIndex < parsedLight.animations.length; animationIndex++) {
|
|
562
|
-
const parsedAnimation = parsedLight.animations[animationIndex];
|
|
563
|
-
const internalClass = GetClass("BABYLON.Animation");
|
|
564
|
-
if (internalClass) {
|
|
565
|
-
light.animations.push(internalClass.Parse(parsedAnimation));
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
Node.ParseAnimationRanges(light, parsedLight, scene);
|
|
569
|
-
}
|
|
570
|
-
if (parsedLight.autoAnimate) {
|
|
571
|
-
scene.beginAnimation(light, parsedLight.autoAnimateFrom, parsedLight.autoAnimateTo, parsedLight.autoAnimateLoop, parsedLight.autoAnimateSpeed || 1.0);
|
|
572
|
-
}
|
|
573
|
-
// Check if isEnabled is defined to be back compatible with prior serialized versions.
|
|
574
|
-
if (parsedLight.isEnabled !== undefined) {
|
|
575
|
-
light.setEnabled(parsedLight.isEnabled);
|
|
576
|
-
}
|
|
577
|
-
light._onParsed(parsedLight, scene);
|
|
578
|
-
return light;
|
|
579
|
-
}
|
|
580
|
-
/**
|
|
581
|
-
* Called after the light has been fully parsed and all base properties have been set.
|
|
582
|
-
* Override in subclasses to handle custom serialized data.
|
|
583
|
-
* @param _parsedLight The JSON representation of the light
|
|
584
|
-
* @param _scene The scene the light belongs to
|
|
585
|
-
*/
|
|
586
|
-
_onParsed(_parsedLight, _scene) {
|
|
587
|
-
// Override in subclasses
|
|
588
|
-
}
|
|
589
|
-
_hookArrayForExcluded(array) {
|
|
590
|
-
const oldPush = array.push;
|
|
591
|
-
array.push = (...items) => {
|
|
592
|
-
const result = oldPush.apply(array, items);
|
|
593
|
-
if (this._clusteredContainer) {
|
|
594
|
-
return result;
|
|
595
|
-
}
|
|
596
|
-
for (const item of items) {
|
|
597
|
-
item._resyncLightSource(this);
|
|
598
|
-
}
|
|
599
|
-
return result;
|
|
600
|
-
};
|
|
601
|
-
const oldSplice = array.splice;
|
|
602
|
-
array.splice = (index, deleteCount) => {
|
|
603
|
-
const deleted = oldSplice.call(array, index, deleteCount ?? array.length);
|
|
604
|
-
if (this._clusteredContainer) {
|
|
605
|
-
return deleted;
|
|
606
|
-
}
|
|
607
|
-
for (const item of deleted) {
|
|
608
|
-
item._resyncLightSource(this);
|
|
609
|
-
}
|
|
610
|
-
return deleted;
|
|
611
|
-
};
|
|
612
|
-
if (!this._clusteredContainer) {
|
|
613
|
-
for (const item of array) {
|
|
614
|
-
item._resyncLightSource(this);
|
|
615
|
-
}
|
|
616
|
-
}
|
|
617
|
-
}
|
|
618
|
-
_hookArrayForIncludedOnly(array) {
|
|
619
|
-
const oldPush = array.push;
|
|
620
|
-
array.push = (...items) => {
|
|
621
|
-
const result = oldPush.apply(array, items);
|
|
622
|
-
this._resyncMeshes();
|
|
623
|
-
return result;
|
|
624
|
-
};
|
|
625
|
-
const oldSplice = array.splice;
|
|
626
|
-
array.splice = (index, deleteCount) => {
|
|
627
|
-
const deleted = oldSplice.call(array, index, deleteCount ?? array.length);
|
|
628
|
-
this._resyncMeshes();
|
|
629
|
-
return deleted;
|
|
630
|
-
};
|
|
631
|
-
this._resyncMeshes();
|
|
632
|
-
}
|
|
633
|
-
_resyncMeshes() {
|
|
634
|
-
if (this._clusteredContainer) {
|
|
635
|
-
return;
|
|
636
|
-
}
|
|
637
|
-
for (const mesh of this.getScene().meshes) {
|
|
638
|
-
mesh._resyncLightSource(this);
|
|
639
|
-
}
|
|
640
|
-
}
|
|
641
|
-
/**
|
|
642
|
-
* Forces the meshes to update their light related information in their rendering used effects
|
|
643
|
-
* @internal Internal Use Only
|
|
644
|
-
*/
|
|
645
|
-
_markMeshesAsLightDirty() {
|
|
646
|
-
for (const mesh of this.getScene().meshes) {
|
|
647
|
-
if (mesh.lightSources.indexOf(this) !== -1) {
|
|
648
|
-
mesh._markSubMeshesAsLightDirty();
|
|
649
|
-
}
|
|
650
|
-
}
|
|
651
|
-
}
|
|
652
|
-
/**
|
|
653
|
-
* Recomputes the cached photometric scale if needed.
|
|
654
|
-
*/
|
|
655
|
-
_computePhotometricScale() {
|
|
656
|
-
this._photometricScale = this._getPhotometricScale();
|
|
657
|
-
this.getScene().resetCachedMaterial();
|
|
658
|
-
}
|
|
659
|
-
/**
|
|
660
|
-
* @returns the Photometric Scale according to the light type and intensity mode.
|
|
661
|
-
*/
|
|
662
|
-
_getPhotometricScale() {
|
|
663
|
-
let photometricScale = 0.0;
|
|
664
|
-
const lightTypeID = this.getTypeID();
|
|
665
|
-
//get photometric mode
|
|
666
|
-
let photometricMode = this.intensityMode;
|
|
667
|
-
if (photometricMode === Light.INTENSITYMODE_AUTOMATIC) {
|
|
668
|
-
if (lightTypeID === Light.LIGHTTYPEID_DIRECTIONALLIGHT) {
|
|
669
|
-
photometricMode = Light.INTENSITYMODE_ILLUMINANCE;
|
|
670
|
-
}
|
|
671
|
-
else {
|
|
672
|
-
photometricMode = Light.INTENSITYMODE_LUMINOUSINTENSITY;
|
|
673
|
-
}
|
|
674
|
-
}
|
|
675
|
-
//compute photometric scale
|
|
676
|
-
switch (lightTypeID) {
|
|
677
|
-
case Light.LIGHTTYPEID_POINTLIGHT:
|
|
678
|
-
case Light.LIGHTTYPEID_SPOTLIGHT:
|
|
679
|
-
switch (photometricMode) {
|
|
680
|
-
case Light.INTENSITYMODE_LUMINOUSPOWER:
|
|
681
|
-
photometricScale = 1.0 / (4.0 * Math.PI);
|
|
682
|
-
break;
|
|
683
|
-
case Light.INTENSITYMODE_LUMINOUSINTENSITY:
|
|
684
|
-
photometricScale = 1.0;
|
|
685
|
-
break;
|
|
686
|
-
case Light.INTENSITYMODE_LUMINANCE:
|
|
687
|
-
photometricScale = this.radius * this.radius;
|
|
688
|
-
break;
|
|
689
|
-
}
|
|
690
|
-
break;
|
|
691
|
-
case Light.LIGHTTYPEID_DIRECTIONALLIGHT:
|
|
692
|
-
switch (photometricMode) {
|
|
693
|
-
case Light.INTENSITYMODE_ILLUMINANCE:
|
|
694
|
-
photometricScale = 1.0;
|
|
695
|
-
break;
|
|
696
|
-
case Light.INTENSITYMODE_LUMINANCE: {
|
|
697
|
-
// When radius (and therefore solid angle) is non-zero a directional lights brightness can be specified via central (peak) luminance.
|
|
698
|
-
// For a directional light the 'radius' defines the angular radius (in radians) rather than world-space radius (e.g. in metres).
|
|
699
|
-
let apexAngleRadians = this.radius;
|
|
700
|
-
// Impose a minimum light angular size to avoid the light becoming an infinitely small angular light source (i.e. a dirac delta function).
|
|
701
|
-
apexAngleRadians = Math.max(apexAngleRadians, 0.001);
|
|
702
|
-
const solidAngle = 2.0 * Math.PI * (1.0 - Math.cos(apexAngleRadians));
|
|
703
|
-
photometricScale = solidAngle;
|
|
704
|
-
break;
|
|
705
|
-
}
|
|
706
|
-
}
|
|
707
|
-
break;
|
|
708
|
-
case Light.LIGHTTYPEID_HEMISPHERICLIGHT:
|
|
709
|
-
// No fall off in hemispheric light.
|
|
710
|
-
photometricScale = 1.0;
|
|
711
|
-
break;
|
|
712
|
-
}
|
|
713
|
-
return photometricScale;
|
|
714
|
-
}
|
|
715
|
-
/**
|
|
716
|
-
* Reorder the light in the scene according to their defined priority.
|
|
717
|
-
* @internal Internal Use Only
|
|
718
|
-
*/
|
|
719
|
-
_reorderLightsInScene() {
|
|
720
|
-
const scene = this.getScene();
|
|
721
|
-
if (this._renderPriority != 0) {
|
|
722
|
-
scene.requireLightSorting = true;
|
|
723
|
-
}
|
|
724
|
-
this.getScene().sortLightsByPriority();
|
|
725
|
-
}
|
|
726
|
-
/**
|
|
727
|
-
* Returns true when all texture resources used by this light are ready (e.g. projection textures).
|
|
728
|
-
* Override in subclasses that use texture resources.
|
|
729
|
-
* @returns true if all light textures are ready
|
|
730
|
-
*/
|
|
731
|
-
areLightTexturesReady() {
|
|
732
|
-
return true;
|
|
733
|
-
}
|
|
734
|
-
/**
|
|
735
|
-
* @internal
|
|
736
|
-
*/
|
|
737
|
-
_isReady() {
|
|
738
|
-
return true;
|
|
739
|
-
}
|
|
740
|
-
}
|
|
741
|
-
/**
|
|
742
|
-
* Falloff Default: light is falling off following the material specification:
|
|
743
|
-
* standard material is using standard falloff whereas pbr material can request special falloff per materials.
|
|
744
|
-
*/
|
|
745
|
-
Light.FALLOFF_DEFAULT = LightConstants.FALLOFF_DEFAULT;
|
|
746
|
-
/**
|
|
747
|
-
* Falloff Physical: light is falling off following the inverse squared distance law.
|
|
748
|
-
*/
|
|
749
|
-
Light.FALLOFF_PHYSICAL = LightConstants.FALLOFF_PHYSICAL;
|
|
750
|
-
/**
|
|
751
|
-
* Falloff gltf: light is falling off as described in the gltf moving to PBR document
|
|
752
|
-
* to enhance interoperability with other engines.
|
|
753
|
-
*/
|
|
754
|
-
Light.FALLOFF_GLTF = LightConstants.FALLOFF_GLTF;
|
|
755
|
-
/**
|
|
756
|
-
* Falloff Standard: light is falling off like in the standard material
|
|
757
|
-
* to enhance interoperability with other materials.
|
|
758
|
-
*/
|
|
759
|
-
Light.FALLOFF_STANDARD = LightConstants.FALLOFF_STANDARD;
|
|
760
|
-
//lightmapMode Consts
|
|
761
|
-
/**
|
|
762
|
-
* If every light affecting the material is in this lightmapMode,
|
|
763
|
-
* material.lightmapTexture adds or multiplies
|
|
764
|
-
* (depends on material.useLightmapAsShadowmap)
|
|
765
|
-
* after every other light calculations.
|
|
766
|
-
*/
|
|
767
|
-
Light.LIGHTMAP_DEFAULT = LightConstants.LIGHTMAP_DEFAULT;
|
|
768
|
-
/**
|
|
769
|
-
* material.lightmapTexture as only diffuse lighting from this light
|
|
770
|
-
* adds only specular lighting from this light
|
|
771
|
-
* adds dynamic shadows
|
|
772
|
-
*/
|
|
773
|
-
Light.LIGHTMAP_SPECULAR = LightConstants.LIGHTMAP_SPECULAR;
|
|
774
|
-
/**
|
|
775
|
-
* material.lightmapTexture as only lighting
|
|
776
|
-
* no light calculation from this light
|
|
777
|
-
* only adds dynamic shadows from this light
|
|
778
|
-
*/
|
|
779
|
-
Light.LIGHTMAP_SHADOWSONLY = LightConstants.LIGHTMAP_SHADOWSONLY;
|
|
780
|
-
// Intensity Mode Consts
|
|
781
|
-
/**
|
|
782
|
-
* Each light type uses the default quantity according to its type:
|
|
783
|
-
* point/spot lights use luminous intensity
|
|
784
|
-
* directional lights use illuminance
|
|
785
|
-
*/
|
|
786
|
-
Light.INTENSITYMODE_AUTOMATIC = LightConstants.INTENSITYMODE_AUTOMATIC;
|
|
787
|
-
/**
|
|
788
|
-
* lumen (lm)
|
|
789
|
-
*/
|
|
790
|
-
Light.INTENSITYMODE_LUMINOUSPOWER = LightConstants.INTENSITYMODE_LUMINOUSPOWER;
|
|
791
|
-
/**
|
|
792
|
-
* candela (lm/sr)
|
|
793
|
-
*/
|
|
794
|
-
Light.INTENSITYMODE_LUMINOUSINTENSITY = LightConstants.INTENSITYMODE_LUMINOUSINTENSITY;
|
|
795
|
-
/**
|
|
796
|
-
* lux (lm/m^2)
|
|
797
|
-
*/
|
|
798
|
-
Light.INTENSITYMODE_ILLUMINANCE = LightConstants.INTENSITYMODE_ILLUMINANCE;
|
|
799
|
-
/**
|
|
800
|
-
* nit (cd/m^2)
|
|
801
|
-
*/
|
|
802
|
-
Light.INTENSITYMODE_LUMINANCE = LightConstants.INTENSITYMODE_LUMINANCE;
|
|
803
|
-
// Light types ids const.
|
|
804
|
-
/**
|
|
805
|
-
* Light type const id of the point light.
|
|
806
|
-
*/
|
|
807
|
-
Light.LIGHTTYPEID_POINTLIGHT = LightConstants.LIGHTTYPEID_POINTLIGHT;
|
|
808
|
-
/**
|
|
809
|
-
* Light type const id of the directional light.
|
|
810
|
-
*/
|
|
811
|
-
Light.LIGHTTYPEID_DIRECTIONALLIGHT = LightConstants.LIGHTTYPEID_DIRECTIONALLIGHT;
|
|
812
|
-
/**
|
|
813
|
-
* Light type const id of the spot light.
|
|
814
|
-
*/
|
|
815
|
-
Light.LIGHTTYPEID_SPOTLIGHT = LightConstants.LIGHTTYPEID_SPOTLIGHT;
|
|
816
|
-
/**
|
|
817
|
-
* Light type const id of the hemispheric light.
|
|
818
|
-
*/
|
|
819
|
-
Light.LIGHTTYPEID_HEMISPHERICLIGHT = LightConstants.LIGHTTYPEID_HEMISPHERICLIGHT;
|
|
820
|
-
/**
|
|
821
|
-
* Light type const id of the area light.
|
|
822
|
-
*/
|
|
823
|
-
Light.LIGHTTYPEID_RECT_AREALIGHT = LightConstants.LIGHTTYPEID_RECT_AREALIGHT;
|
|
824
|
-
__decorate([
|
|
825
|
-
serializeAsColor3()
|
|
826
|
-
], Light.prototype, "diffuse", void 0);
|
|
827
|
-
__decorate([
|
|
828
|
-
serializeAsColor3()
|
|
829
|
-
], Light.prototype, "specular", void 0);
|
|
830
|
-
__decorate([
|
|
831
|
-
serialize()
|
|
832
|
-
], Light.prototype, "falloffType", void 0);
|
|
833
|
-
__decorate([
|
|
834
|
-
serialize()
|
|
835
|
-
], Light.prototype, "intensity", void 0);
|
|
836
|
-
__decorate([
|
|
837
|
-
serialize()
|
|
838
|
-
], Light.prototype, "range", null);
|
|
839
|
-
__decorate([
|
|
840
|
-
serialize()
|
|
841
|
-
], Light.prototype, "intensityMode", null);
|
|
842
|
-
__decorate([
|
|
843
|
-
serialize()
|
|
844
|
-
], Light.prototype, "radius", null);
|
|
845
|
-
__decorate([
|
|
846
|
-
serialize()
|
|
847
|
-
], Light.prototype, "_renderPriority", void 0);
|
|
848
|
-
__decorate([
|
|
849
|
-
expandToProperty("_reorderLightsInScene")
|
|
850
|
-
], Light.prototype, "renderPriority", void 0);
|
|
851
|
-
__decorate([
|
|
852
|
-
serialize("shadowEnabled")
|
|
853
|
-
], Light.prototype, "_shadowEnabled", void 0);
|
|
854
|
-
__decorate([
|
|
855
|
-
serialize("excludeWithLayerMask")
|
|
856
|
-
], Light.prototype, "_excludeWithLayerMask", void 0);
|
|
857
|
-
__decorate([
|
|
858
|
-
serialize("includeOnlyWithLayerMask")
|
|
859
|
-
], Light.prototype, "_includeOnlyWithLayerMask", void 0);
|
|
860
|
-
__decorate([
|
|
861
|
-
serialize("lightmapMode")
|
|
862
|
-
], Light.prototype, "_lightmapMode", void 0);
|
|
876
|
+
_a.INTENSITYMODE_ILLUMINANCE = LightConstants.INTENSITYMODE_ILLUMINANCE,
|
|
877
|
+
/**
|
|
878
|
+
* nit (cd/m^2)
|
|
879
|
+
*/
|
|
880
|
+
_a.INTENSITYMODE_LUMINANCE = LightConstants.INTENSITYMODE_LUMINANCE,
|
|
881
|
+
// Light types ids const.
|
|
882
|
+
/**
|
|
883
|
+
* Light type const id of the point light.
|
|
884
|
+
*/
|
|
885
|
+
_a.LIGHTTYPEID_POINTLIGHT = LightConstants.LIGHTTYPEID_POINTLIGHT,
|
|
886
|
+
/**
|
|
887
|
+
* Light type const id of the directional light.
|
|
888
|
+
*/
|
|
889
|
+
_a.LIGHTTYPEID_DIRECTIONALLIGHT = LightConstants.LIGHTTYPEID_DIRECTIONALLIGHT,
|
|
890
|
+
/**
|
|
891
|
+
* Light type const id of the spot light.
|
|
892
|
+
*/
|
|
893
|
+
_a.LIGHTTYPEID_SPOTLIGHT = LightConstants.LIGHTTYPEID_SPOTLIGHT,
|
|
894
|
+
/**
|
|
895
|
+
* Light type const id of the hemispheric light.
|
|
896
|
+
*/
|
|
897
|
+
_a.LIGHTTYPEID_HEMISPHERICLIGHT = LightConstants.LIGHTTYPEID_HEMISPHERICLIGHT,
|
|
898
|
+
/**
|
|
899
|
+
* Light type const id of the area light.
|
|
900
|
+
*/
|
|
901
|
+
_a.LIGHTTYPEID_RECT_AREALIGHT = LightConstants.LIGHTTYPEID_RECT_AREALIGHT,
|
|
902
|
+
_a;
|
|
903
|
+
})();
|
|
904
|
+
export { Light };
|
|
863
905
|
//# sourceMappingURL=light.js.map
|