@onerjs/core 8.53.5 → 8.53.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Animations/animationGroup.d.ts +0 -1
- package/Animations/animationGroup.js +0 -1
- package/Animations/animationGroup.js.map +1 -1
- package/Animations/animationGroup.pure.js +2 -0
- package/Animations/animationGroup.pure.js.map +1 -1
- package/Animations/runtimeAnimation.js +11 -0
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Audio/audioSceneComponent.pure.js +1 -1
- package/AudioV2/abstractAudio/abstractSound.d.ts +2 -1
- package/AudioV2/abstractAudio/abstractSound.js +7 -2
- package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
- package/AudioV2/abstractAudio/abstractSoundInstance.d.ts +3 -1
- package/AudioV2/abstractAudio/abstractSoundInstance.js.map +1 -1
- package/AudioV2/abstractAudio/staticSound.d.ts +6 -0
- package/AudioV2/abstractAudio/staticSound.js +17 -1
- package/AudioV2/abstractAudio/staticSound.js.map +1 -1
- package/AudioV2/abstractAudio/staticSoundInstance.d.ts +4 -2
- package/AudioV2/abstractAudio/staticSoundInstance.js.map +1 -1
- package/AudioV2/abstractAudio/streamingSound.d.ts +6 -0
- package/AudioV2/abstractAudio/streamingSound.js +9 -1
- package/AudioV2/abstractAudio/streamingSound.js.map +1 -1
- package/AudioV2/webAudio/webAudioStaticSound.d.ts +7 -1
- package/AudioV2/webAudio/webAudioStaticSound.js +56 -8
- package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
- package/AudioV2/webAudio/webAudioStreamingSound.d.ts +3 -1
- package/AudioV2/webAudio/webAudioStreamingSound.js +16 -4
- package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +2 -2
- package/BakedVertexAnimation/bakedVertexAnimationManager.js +151 -121
- package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
- package/Behaviors/Cameras/interpolatingBehavior.d.ts +17 -2
- package/Behaviors/Cameras/interpolatingBehavior.js +53 -23
- package/Behaviors/Cameras/interpolatingBehavior.js.map +1 -1
- package/Bones/bone.pure.js +3 -3
- package/Buffers/buffer.pure.js +0 -12
- package/Buffers/buffer.pure.js.map +1 -1
- package/Cameras/Inputs/BaseCameraMouseWheelInput.js +141 -126
- package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/BaseCameraPointersInput.d.ts +2 -1
- package/Cameras/Inputs/BaseCameraPointersInput.js +290 -277
- package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraGamepadInput.js +115 -102
- package/Cameras/Inputs/arcRotateCameraGamepadInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.d.ts +3 -0
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +334 -273
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +273 -258
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraPointersInput.js +237 -213
- package/Cameras/Inputs/arcRotateCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/flyCameraKeyboardInput.js +199 -168
- package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
- package/Cameras/Inputs/flyCameraMouseInput.js +243 -229
- package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/followCameraKeyboardMoveInput.js +311 -266
- package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/followCameraMouseWheelInput.js +139 -119
- package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/followCameraPointersInput.js +239 -203
- package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraGamepadInput.js +127 -114
- package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +278 -244
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseInput.js +216 -202
- package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseWheelInput.js +368 -353
- package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraTouchInput.js +185 -172
- package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
- package/Cameras/Inputs/geospatialCameraKeyboardInput.d.ts +2 -0
- package/Cameras/Inputs/geospatialCameraKeyboardInput.js +291 -246
- package/Cameras/Inputs/geospatialCameraKeyboardInput.js.map +1 -1
- package/Cameras/Inputs/geospatialCameraPointersInput.d.ts +11 -1
- package/Cameras/Inputs/geospatialCameraPointersInput.js +18 -2
- package/Cameras/Inputs/geospatialCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/orbitCameraPointersInput.js +112 -96
- package/Cameras/Inputs/orbitCameraPointersInput.js.map +1 -1
- package/Cameras/VR/vrExperienceHelper.d.ts +0 -2
- package/Cameras/VR/vrExperienceHelper.js +0 -2
- package/Cameras/VR/vrExperienceHelper.js.map +1 -1
- package/Cameras/VR/vrExperienceHelper.pure.js +5 -0
- package/Cameras/VR/vrExperienceHelper.pure.js.map +1 -1
- package/Cameras/arcRotateCamera.pure.js +1559 -1479
- package/Cameras/arcRotateCamera.pure.js.map +1 -1
- package/Cameras/camera.pure.js +1225 -1178
- package/Cameras/camera.pure.js.map +1 -1
- package/Cameras/flyCamera.pure.js +369 -351
- package/Cameras/flyCamera.pure.js.map +1 -1
- package/Cameras/followCamera.pure.js +229 -192
- package/Cameras/followCamera.pure.js.map +1 -1
- package/Cameras/freeCamera.pure.js +373 -351
- package/Cameras/freeCamera.pure.js.map +1 -1
- package/Cameras/geospatialCamera.pure.d.ts +30 -7
- package/Cameras/geospatialCamera.pure.js +502 -457
- package/Cameras/geospatialCamera.pure.js.map +1 -1
- package/Cameras/geospatialCameraMovement.js +2 -2
- package/Cameras/geospatialCameraMovement.js.map +1 -1
- package/Cameras/targetCamera.pure.d.ts +7 -0
- package/Cameras/targetCamera.pure.js +550 -509
- package/Cameras/targetCamera.pure.js.map +1 -1
- package/Cameras/universalCamera.pure.js +98 -85
- package/Cameras/universalCamera.pure.js.map +1 -1
- package/Collisions/gpuPicker.d.ts +111 -4
- package/Collisions/gpuPicker.js +696 -119
- package/Collisions/gpuPicker.js.map +1 -1
- package/Compute/computeShader.pure.js +372 -355
- package/Compute/computeShader.pure.js.map +1 -1
- package/Culling/Helper/transformFeedbackBoundingHelper.pure.js +2 -2
- package/Decorators/nodeDecorator.d.ts +11 -1
- package/Decorators/nodeDecorator.js +43 -6
- package/Decorators/nodeDecorator.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js +8 -0
- package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js.map +1 -1
- package/Engines/Native/nativeHelpers.js +15 -0
- package/Engines/Native/nativeHelpers.js.map +1 -1
- package/Engines/Native/nativeInterfaces.d.ts +7 -2
- package/Engines/Native/nativeInterfaces.js.map +1 -1
- package/Engines/Native/nativeRenderTargetWrapper.d.ts +5 -0
- package/Engines/Native/nativeRenderTargetWrapper.js +35 -1
- package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
- package/Engines/Processors/shaderProcessor.js +5 -3
- package/Engines/Processors/shaderProcessor.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js +16 -3
- package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js.map +1 -1
- package/Engines/WebGPU/webgpuClearQuad.pure.js +7 -1
- package/Engines/WebGPU/webgpuClearQuad.pure.js.map +1 -1
- package/Engines/abstractEngine.functions.d.ts +8 -2
- package/Engines/abstractEngine.functions.js +12 -4
- package/Engines/abstractEngine.functions.js.map +1 -1
- package/Engines/abstractEngine.pure.d.ts +20 -1
- package/Engines/abstractEngine.pure.js +21 -134
- package/Engines/abstractEngine.pure.js.map +1 -1
- package/Engines/engine.d.ts +208 -0
- package/Engines/engine.pure.js +0 -15
- package/Engines/engine.pure.js.map +1 -1
- package/Engines/nullEngine.pure.d.ts +66 -0
- package/Engines/nullEngine.pure.js +97 -0
- package/Engines/nullEngine.pure.js.map +1 -1
- package/Engines/thinEngine.pure.d.ts +0 -13
- package/Engines/thinEngine.pure.js +4 -23
- package/Engines/thinEngine.pure.js.map +1 -1
- package/Engines/thinNativeEngine.d.ts +0 -1
- package/Engines/thinNativeEngine.js +0 -1
- package/Engines/thinNativeEngine.js.map +1 -1
- package/Engines/thinNativeEngine.pure.d.ts +27 -0
- package/Engines/thinNativeEngine.pure.js +383 -17
- package/Engines/thinNativeEngine.pure.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +1 -0
- package/Engines/webgpuEngine.js +1 -0
- package/Engines/webgpuEngine.js.map +1 -1
- package/Engines/webgpuEngine.pure.d.ts +9 -0
- package/Engines/webgpuEngine.pure.js +7 -0
- package/Engines/webgpuEngine.pure.js.map +1 -1
- package/FlowGraph/flowGraph.js +9 -0
- package/FlowGraph/flowGraph.js.map +1 -1
- package/FlowGraph/flowGraphContext.js +597 -584
- package/FlowGraph/flowGraphContext.js.map +1 -1
- package/FlowGraph/flowGraphDataConnection.pure.d.ts +14 -0
- package/FlowGraph/flowGraphDataConnection.pure.js +38 -1
- package/FlowGraph/flowGraphDataConnection.pure.js.map +1 -1
- package/FlowGraph/serialization.d.ts +11 -0
- package/FlowGraph/serialization.js +11 -1
- package/FlowGraph/serialization.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js +182 -170
- package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js +196 -184
- package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js +222 -210
- package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +123 -111
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js +158 -146
- package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js +63 -51
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js +122 -110
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js +76 -64
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js +89 -77
- package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js +134 -122
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js +58 -46
- package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js +107 -95
- package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js +181 -169
- package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js +63 -51
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js +63 -51
- package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js +76 -64
- package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js +246 -234
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js +108 -96
- package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js +87 -75
- package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js +76 -64
- package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js +313 -301
- package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js +502 -490
- package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js +147 -135
- package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js +90 -78
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js +179 -167
- package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +462 -451
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js +265 -253
- package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js +204 -192
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js +611 -550
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js +320 -308
- package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js +87 -75
- package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js +154 -142
- package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js +150 -138
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/inputBlock.pure.js +270 -256
- package/FrameGraph/Node/Blocks/inputBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js +95 -83
- package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js +715 -693
- package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraphBlock.js +548 -533
- package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.d.ts +2 -2
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js +43 -51
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.d.ts +0 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js +0 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.d.ts +0 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js +66 -35
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js.map +1 -1
- package/Helpers/environmentHelper.js +2 -2
- package/Helpers/environmentHelper.js.map +1 -1
- package/Layers/effectLayer.js +529 -519
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/glowLayer.pure.js +428 -413
- package/Layers/glowLayer.pure.js.map +1 -1
- package/Layers/highlightLayer.pure.js +473 -458
- package/Layers/highlightLayer.pure.js.map +1 -1
- package/Layers/selectionOutlineLayer.pure.js +360 -345
- package/Layers/selectionOutlineLayer.pure.js.map +1 -1
- package/Lights/Clustered/clusteredLightContainer.pure.d.ts +1 -1
- package/Lights/Clustered/clusteredLightContainer.pure.js +583 -558
- package/Lights/Clustered/clusteredLightContainer.pure.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.js +6 -1
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Lights/areaLight.pure.js +61 -39
- package/Lights/areaLight.pure.js.map +1 -1
- package/Lights/directionalLight.pure.js +308 -284
- package/Lights/directionalLight.pure.js.map +1 -1
- package/Lights/hemisphericLight.pure.js +123 -104
- package/Lights/hemisphericLight.pure.js.map +1 -1
- package/Lights/light.d.ts +5 -3
- package/Lights/light.js +869 -827
- package/Lights/light.js.map +1 -1
- package/Lights/pointLight.pure.js +185 -174
- package/Lights/pointLight.pure.js.map +1 -1
- package/Lights/rectAreaLight.pure.d.ts +17 -0
- package/Lights/rectAreaLight.pure.js +238 -159
- package/Lights/rectAreaLight.pure.js.map +1 -1
- package/Lights/shadowLight.js +280 -268
- package/Lights/shadowLight.js.map +1 -1
- package/Lights/spotLight.pure.js +460 -427
- package/Lights/spotLight.pure.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.pure.js +17 -5
- package/Loading/Plugins/babylonFileLoader.pure.js.map +1 -1
- package/Loading/sceneLoader.d.ts +5 -1
- package/Loading/sceneLoader.js +299 -402
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/Background/backgroundMaterial.pure.d.ts +18 -18
- package/Materials/Background/backgroundMaterial.pure.js +949 -794
- package/Materials/Background/backgroundMaterial.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.d.ts +15 -0
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +34 -1
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +9 -0
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +26 -2
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.d.ts +2 -1
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js +169 -149
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.pure.js +442 -429
- package/Materials/Node/Blocks/Dual/lightBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js +396 -383
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js +237 -220
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.pure.js +1 -1
- package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js +150 -133
- package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js +265 -250
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js +159 -142
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js +214 -201
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js +419 -400
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +3 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js +302 -289
- package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js +1327 -1272
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js +352 -337
- package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/refractionBlock.pure.js +297 -277
- package/Materials/Node/Blocks/PBR/refractionBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/sheenBlock.pure.js +146 -131
- package/Materials/Node/Blocks/PBR/sheenBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js +158 -145
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/clampBlock.pure.js +92 -77
- package/Materials/Node/Blocks/clampBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/cloudBlock.pure.js +145 -132
- package/Materials/Node/Blocks/cloudBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/conditionalBlock.pure.js +182 -169
- package/Materials/Node/Blocks/conditionalBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/curveBlock.pure.js +259 -246
- package/Materials/Node/Blocks/curveBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/debugBlock.pure.js +119 -106
- package/Materials/Node/Blocks/debugBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/loopBlock.pure.js +123 -110
- package/Materials/Node/Blocks/loopBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js +185 -172
- package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/remapBlock.pure.js +127 -112
- package/Materials/Node/Blocks/remapBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/transformBlock.pure.js +196 -185
- package/Materials/Node/Blocks/transformBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/triPlanarBlock.pure.js +451 -438
- package/Materials/Node/Blocks/triPlanarBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/trigonometryBlock.pure.js +184 -171
- package/Materials/Node/Blocks/trigonometryBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/waveBlock.pure.js +97 -84
- package/Materials/Node/Blocks/waveBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js +276 -263
- package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js.map +1 -1
- package/Materials/Node/nodeMaterial.pure.js +1765 -1737
- package/Materials/Node/nodeMaterial.pure.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.d.ts +3 -3
- package/Materials/PBR/openpbrMaterial.pure.d.ts +102 -102
- package/Materials/PBR/openpbrMaterial.pure.js +3115 -2243
- package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +3 -3
- package/Materials/PBR/pbrAnisotropicConfiguration.js +255 -227
- package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBRDFConfiguration.d.ts +9 -9
- package/Materials/PBR/pbrBRDFConfiguration.js +203 -155
- package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.pure.d.ts +1 -1
- package/Materials/PBR/pbrBaseMaterial.pure.js +1751 -1736
- package/Materials/PBR/pbrBaseMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +13 -13
- package/Materials/PBR/pbrBaseSimpleMaterial.js +205 -117
- package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
- package/Materials/PBR/pbrClearCoatConfiguration.d.ts +9 -9
- package/Materials/PBR/pbrClearCoatConfiguration.js +464 -406
- package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
- package/Materials/PBR/pbrIridescenceConfiguration.d.ts +3 -3
- package/Materials/PBR/pbrIridescenceConfiguration.js +271 -239
- package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
- package/Materials/PBR/pbrMaterial.pure.d.ts +66 -66
- package/Materials/PBR/pbrMaterial.pure.js +1041 -685
- package/Materials/PBR/pbrMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.d.ts +5 -5
- package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js +176 -115
- package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrSheenConfiguration.d.ts +7 -7
- package/Materials/PBR/pbrSheenConfiguration.js +314 -270
- package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.d.ts +5 -5
- package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js +172 -117
- package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +16 -16
- package/Materials/PBR/pbrSubSurfaceConfiguration.js +864 -764
- package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
- package/Materials/Textures/HTML/htmlInCanvasPolyfill.d.ts +43 -0
- package/Materials/Textures/HTML/htmlInCanvasPolyfill.js +64 -0
- package/Materials/Textures/HTML/htmlInCanvasPolyfill.js.map +1 -0
- package/Materials/Textures/HTML/htmlInteractionManager.d.ts +69 -0
- package/Materials/Textures/HTML/htmlInteractionManager.js +130 -0
- package/Materials/Textures/HTML/htmlInteractionManager.js.map +1 -0
- package/Materials/Textures/HTML/htmlRaycastInteractionManager.d.ts +84 -0
- package/Materials/Textures/HTML/htmlRaycastInteractionManager.js +246 -0
- package/Materials/Textures/HTML/htmlRaycastInteractionManager.js.map +1 -0
- package/Materials/Textures/HTML/htmlTexture.d.ts +148 -0
- package/Materials/Textures/HTML/htmlTexture.js +455 -0
- package/Materials/Textures/HTML/htmlTexture.js.map +1 -0
- package/Materials/Textures/HTML/index.d.ts +4 -0
- package/Materials/Textures/HTML/index.js +5 -0
- package/Materials/Textures/HTML/index.js.map +1 -0
- package/Materials/Textures/HTML/pure.d.ts +5 -0
- package/Materials/Textures/HTML/pure.js +6 -0
- package/Materials/Textures/HTML/pure.js.map +1 -0
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js +671 -643
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
- package/Materials/Textures/baseTexture.pure.js +880 -825
- package/Materials/Textures/baseTexture.pure.js.map +1 -1
- package/Materials/Textures/cubeTexture.d.ts +0 -1
- package/Materials/Textures/cubeTexture.js +0 -1
- package/Materials/Textures/cubeTexture.js.map +1 -1
- package/Materials/Textures/cubeTexture.pure.js +368 -333
- package/Materials/Textures/cubeTexture.pure.js.map +1 -1
- package/Materials/Textures/dynamicTexture.d.ts +0 -1
- package/Materials/Textures/dynamicTexture.js +0 -1
- package/Materials/Textures/dynamicTexture.js.map +1 -1
- package/Materials/Textures/dynamicTexture.pure.js +2 -0
- package/Materials/Textures/dynamicTexture.pure.js.map +1 -1
- package/Materials/Textures/htmlElementTexture.d.ts +0 -2
- package/Materials/Textures/htmlElementTexture.js +0 -2
- package/Materials/Textures/htmlElementTexture.js.map +1 -1
- package/Materials/Textures/htmlElementTexture.pure.js +4 -0
- package/Materials/Textures/htmlElementTexture.pure.js.map +1 -1
- package/Materials/Textures/index.d.ts +1 -0
- package/Materials/Textures/index.js +1 -1
- package/Materials/Textures/index.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.d.ts +0 -1
- package/Materials/Textures/multiRenderTarget.js +0 -1
- package/Materials/Textures/multiRenderTarget.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.pure.js +2 -0
- package/Materials/Textures/multiRenderTarget.pure.js.map +1 -1
- package/Materials/Textures/pure.d.ts +1 -0
- package/Materials/Textures/pure.js +1 -0
- package/Materials/Textures/pure.js.map +1 -1
- package/Materials/Textures/texture.pure.js +961 -923
- package/Materials/Textures/texture.pure.js.map +1 -1
- package/Materials/Textures/videoTexture.pure.d.ts +3 -0
- package/Materials/Textures/videoTexture.pure.js +450 -401
- package/Materials/Textures/videoTexture.pure.js.map +1 -1
- package/Materials/colorCurves.pure.js +510 -477
- package/Materials/colorCurves.pure.js.map +1 -1
- package/Materials/effect.pure.js +0 -7
- package/Materials/effect.pure.js.map +1 -1
- package/Materials/imageProcessing.js +12 -4
- package/Materials/imageProcessing.js.map +1 -1
- package/Materials/imageProcessingConfiguration.pure.js +647 -587
- package/Materials/imageProcessingConfiguration.pure.js.map +1 -1
- package/Materials/material.decalMapConfiguration.pure.d.ts +2 -2
- package/Materials/material.decalMapConfiguration.pure.js +149 -130
- package/Materials/material.decalMapConfiguration.pure.js.map +1 -1
- package/Materials/material.detailMapConfiguration.d.ts +3 -3
- package/Materials/material.detailMapConfiguration.js +213 -175
- package/Materials/material.detailMapConfiguration.js.map +1 -1
- package/Materials/material.pure.js +1815 -1721
- package/Materials/material.pure.js.map +1 -1
- package/Materials/materialPluginBase.pure.js +270 -249
- package/Materials/materialPluginBase.pure.js.map +1 -1
- package/Materials/materialPluginManager.pure.js +18 -8
- package/Materials/materialPluginManager.pure.js.map +1 -1
- package/Materials/materialStencilState.js +211 -200
- package/Materials/materialStencilState.js.map +1 -1
- package/Materials/meshDebugPluginMaterial.pure.d.ts +2 -2
- package/Materials/meshDebugPluginMaterial.pure.js +397 -275
- package/Materials/meshDebugPluginMaterial.pure.js.map +1 -1
- package/Materials/standardMaterial.pure.d.ts +32 -32
- package/Materials/standardMaterial.pure.js +1804 -1394
- package/Materials/standardMaterial.pure.js.map +1 -1
- package/Maths/math.color.pure.js +5 -5
- package/Maths/math.functions.js +38 -30
- package/Maths/math.functions.js.map +1 -1
- package/Maths/math.vector.pure.js +25 -25
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +18 -8
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +86 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +255 -104
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.d.ts +39 -0
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js +322 -0
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js.map +1 -0
- package/Meshes/GreasedLine/greasedLineMesh.pure.js +4 -4
- package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js +3 -3
- package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js +107 -94
- package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js +276 -263
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js +247 -232
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js +299 -284
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js +196 -181
- package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/latticeBlock.pure.js +198 -179
- package/Meshes/Node/Blocks/Set/latticeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js +151 -138
- package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js +107 -94
- package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js +138 -125
- package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js +213 -200
- package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js +138 -125
- package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js +179 -164
- package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/boxBlock.pure.js +183 -170
- package/Meshes/Node/Blocks/Sources/boxBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js +125 -112
- package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js +153 -140
- package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/discBlock.pure.js +112 -99
- package/Meshes/Node/Blocks/Sources/discBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/gridBlock.pure.js +133 -120
- package/Meshes/Node/Blocks/Sources/gridBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js +128 -115
- package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/meshBlock.pure.js +116 -103
- package/Meshes/Node/Blocks/Sources/meshBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/planeBlock.pure.js +160 -147
- package/Meshes/Node/Blocks/Sources/planeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js +144 -131
- package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/torusBlock.pure.js +112 -99
- package/Meshes/Node/Blocks/Sources/torusBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js +200 -185
- package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/bevelBlock.pure.js +111 -98
- package/Meshes/Node/Blocks/bevelBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js +182 -165
- package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js +89 -76
- package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/conditionBlock.pure.js +184 -169
- package/Meshes/Node/Blocks/conditionBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js +270 -255
- package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js +172 -159
- package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryCurveBlock.pure.js +230 -217
- package/Meshes/Node/Blocks/geometryCurveBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryEaseBlock.pure.js +256 -245
- package/Meshes/Node/Blocks/geometryEaseBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js +206 -189
- package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryTransformBlock.pure.js +166 -153
- package/Meshes/Node/Blocks/geometryTransformBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js +221 -208
- package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/mappingBlock.pure.js +150 -137
- package/Meshes/Node/Blocks/mappingBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/mathBlock.pure.js +269 -256
- package/Meshes/Node/Blocks/mathBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js +141 -128
- package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/randomBlock.pure.js +161 -148
- package/Meshes/Node/Blocks/randomBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/subdivideBlock.pure.js +102 -87
- package/Meshes/Node/Blocks/subdivideBlock.pure.js.map +1 -1
- package/Meshes/Node/nodeGeometry.js +560 -538
- package/Meshes/Node/nodeGeometry.js.map +1 -1
- package/Meshes/Node/nodeGeometryBlock.js +473 -458
- package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
- package/Meshes/abstractMesh.pure.js +2218 -2207
- package/Meshes/abstractMesh.pure.js.map +1 -1
- package/Meshes/geometry.js +30 -15
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/mesh.pure.js +26 -14
- package/Meshes/mesh.pure.js.map +1 -1
- package/Meshes/mesh.vertexData.js +1665 -1655
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Meshes/transformNode.pure.js +1400 -1372
- package/Meshes/transformNode.pure.js.map +1 -1
- package/Misc/decorators.d.ts +34 -19
- package/Misc/decorators.functions.d.ts +33 -2
- package/Misc/decorators.functions.js +114 -35
- package/Misc/decorators.functions.js.map +1 -1
- package/Misc/decorators.js +96 -68
- package/Misc/decorators.js.map +1 -1
- package/Misc/decorators.serialization.js +47 -40
- package/Misc/decorators.serialization.js.map +1 -1
- package/Misc/decorators.serializationUtilities.d.ts +24 -0
- package/Misc/decorators.serializationUtilities.js +20 -0
- package/Misc/decorators.serializationUtilities.js.map +1 -0
- package/Misc/dumpTools.pure.js +43 -33
- package/Misc/dumpTools.pure.js.map +1 -1
- package/Misc/fileTools.pure.js +8 -0
- package/Misc/fileTools.pure.js.map +1 -1
- package/Misc/observable.pure.js +0 -7
- package/Misc/observable.pure.js.map +1 -1
- package/Misc/snapshotRenderingHelper.d.ts +4 -1
- package/Misc/snapshotRenderingHelper.js.map +1 -1
- package/Misc/symbolMetadataPolyfill.d.ts +11 -0
- package/Misc/symbolMetadataPolyfill.js +22 -0
- package/Misc/symbolMetadataPolyfill.js.map +1 -0
- package/Misc/tools.pure.js +2 -2
- package/Misc/tools.pure.js.map +1 -1
- package/Morph/morphTarget.js +382 -365
- package/Morph/morphTarget.js.map +1 -1
- package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js +160 -145
- package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js +187 -174
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js +238 -219
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js +140 -115
- package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js +157 -144
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js +133 -119
- package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js +93 -80
- package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleDebugBlock.pure.js +117 -105
- package/Particles/Node/Blocks/particleDebugBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js +105 -92
- package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleGradientValueBlock.pure.js +82 -69
- package/Particles/Node/Blocks/particleGradientValueBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js +113 -101
- package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleMathBlock.pure.js +278 -265
- package/Particles/Node/Blocks/particleMathBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleNumberMathBlock.pure.js +155 -142
- package/Particles/Node/Blocks/particleNumberMathBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleRandomBlock.pure.js +156 -143
- package/Particles/Node/Blocks/particleRandomBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js +217 -204
- package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleVectorMathBlock.pure.js +106 -93
- package/Particles/Node/Blocks/particleVectorMathBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/systemBlock.pure.js +366 -330
- package/Particles/Node/Blocks/systemBlock.pure.js.map +1 -1
- package/Particles/Node/nodeParticleBlock.js +339 -324
- package/Particles/Node/nodeParticleBlock.js.map +1 -1
- package/Particles/Node/nodeParticleSystemSet.js +494 -473
- package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
- package/Particles/gpuParticleSystem.d.ts +0 -1
- package/Particles/gpuParticleSystem.js +0 -1
- package/Particles/gpuParticleSystem.js.map +1 -1
- package/Particles/gpuParticleSystem.pure.d.ts +4 -3
- package/Particles/gpuParticleSystem.pure.js +27 -16
- package/Particles/gpuParticleSystem.pure.js.map +1 -1
- package/Particles/particleSystem.pure.js +57 -2
- package/Particles/particleSystem.pure.js.map +1 -1
- package/Particles/thinParticleSystem.d.ts +0 -1
- package/Particles/thinParticleSystem.js +0 -1
- package/Particles/thinParticleSystem.js.map +1 -1
- package/Particles/thinParticleSystem.pure.js +2 -0
- package/Particles/thinParticleSystem.pure.js.map +1 -1
- package/Particles/webgl2ParticleSystem.pure.js +2 -0
- package/Particles/webgl2ParticleSystem.pure.js.map +1 -1
- package/Physics/v1/physicsImpostor.pure.js +4 -4
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js +675 -656
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.d.ts +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js +521 -486
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.d.ts +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js +241 -220
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js +852 -835
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js +1135 -1073
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js +319 -303
- package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +212 -199
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
- package/PostProcesses/blackAndWhitePostProcess.pure.js +67 -55
- package/PostProcesses/blackAndWhitePostProcess.pure.js.map +1 -1
- package/PostProcesses/bloomMergePostProcess.pure.js +74 -62
- package/PostProcesses/bloomMergePostProcess.pure.js.map +1 -1
- package/PostProcesses/blurPostProcess.pure.js +127 -115
- package/PostProcesses/blurPostProcess.pure.js.map +1 -1
- package/PostProcesses/chromaticAberrationPostProcess.pure.js +130 -118
- package/PostProcesses/chromaticAberrationPostProcess.pure.js.map +1 -1
- package/PostProcesses/circleOfConfusionPostProcess.pure.js +115 -104
- package/PostProcesses/circleOfConfusionPostProcess.pure.js.map +1 -1
- package/PostProcesses/colorCorrectionPostProcess.pure.js +55 -43
- package/PostProcesses/colorCorrectionPostProcess.pure.js.map +1 -1
- package/PostProcesses/convolutionPostProcess.pure.js +96 -84
- package/PostProcesses/convolutionPostProcess.pure.js.map +1 -1
- package/PostProcesses/extractHighlightsPostProcess.pure.js +68 -57
- package/PostProcesses/extractHighlightsPostProcess.pure.js.map +1 -1
- package/PostProcesses/filterPostProcess.pure.js +66 -54
- package/PostProcesses/filterPostProcess.pure.js.map +1 -1
- package/PostProcesses/fxaaPostProcess.pure.js.map +1 -1
- package/PostProcesses/grainPostProcess.pure.js +82 -70
- package/PostProcesses/grainPostProcess.pure.js.map +1 -1
- package/PostProcesses/imageProcessingPostProcess.js +334 -322
- package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/motionBlurPostProcess.pure.js +246 -235
- package/PostProcesses/motionBlurPostProcess.pure.js.map +1 -1
- package/PostProcesses/passPostProcess.pure.js +75 -63
- package/PostProcesses/passPostProcess.pure.js.map +1 -1
- package/PostProcesses/postProcess.pure.js +899 -835
- package/PostProcesses/postProcess.pure.js.map +1 -1
- package/PostProcesses/refractionPostProcess.pure.js +114 -87
- package/PostProcesses/refractionPostProcess.pure.js.map +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js +108 -96
- package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js.map +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.pure.js +241 -220
- package/PostProcesses/screenSpaceReflectionPostProcess.pure.js.map +1 -1
- package/PostProcesses/sharpenPostProcess.pure.js +86 -74
- package/PostProcesses/sharpenPostProcess.pure.js.map +1 -1
- package/PostProcesses/tonemapPostProcess.pure.js +82 -70
- package/PostProcesses/tonemapPostProcess.pure.js.map +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.pure.js +500 -465
- package/PostProcesses/volumetricLightScatteringPostProcess.pure.js.map +1 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.d.ts +0 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.js +0 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.js.map +1 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js +2 -0
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js.map +1 -1
- package/Probes/reflectionProbe.pure.js +238 -224
- package/Probes/reflectionProbe.pure.js.map +1 -1
- package/Rendering/GlobalIllumination/giRSMManager.pure.d.ts +1 -1
- package/Rendering/GlobalIllumination/giRSMManager.pure.js +138 -105
- package/Rendering/GlobalIllumination/giRSMManager.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.d.ts +1 -1
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js +155 -138
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.d.ts +0 -2
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +0 -2
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +5 -0
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.d.ts +0 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +0 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.d.ts +1 -0
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +34 -0
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
- package/Rendering/edgesRenderer.pure.js.map +1 -1
- package/Rendering/prePassRenderer.d.ts +0 -2
- package/Rendering/prePassRenderer.js +0 -2
- package/Rendering/prePassRenderer.js.map +1 -1
- package/Rendering/prePassRenderer.pure.js +2 -0
- package/Rendering/prePassRenderer.pure.js.map +1 -1
- package/Rendering/reflectiveShadowMap.pure.d.ts +1 -1
- package/Rendering/reflectiveShadowMap.pure.js +151 -130
- package/Rendering/reflectiveShadowMap.pure.js.map +1 -1
- package/Rendering/thinDepthPeelingRenderer.d.ts +0 -1
- package/Rendering/thinDepthPeelingRenderer.js +0 -1
- package/Rendering/thinDepthPeelingRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/gaussianSplatting.js +1 -0
- package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +35 -5
- package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
- package/Shaders/gaussianSplatting.fragment.js +17 -1
- package/Shaders/gaussianSplatting.fragment.js.map +1 -1
- package/Shaders/gaussianSplatting.vertex.js +1 -1
- package/Shaders/gaussianSplatting.vertex.js.map +1 -1
- package/Shaders/gaussianSplattingDepth.vertex.js +1 -1
- package/Shaders/gaussianSplattingDepth.vertex.js.map +1 -1
- package/Shaders/picking.fragment.js +39 -3
- package/Shaders/picking.fragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +3 -1
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/helperFunctions.js +2 -2
- package/ShadersWGSL/ShadersInclude/helperFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +39 -7
- package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js +4 -3
- package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.fragment.js +14 -1
- package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.vertex.js +2 -2
- package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
- package/ShadersWGSL/gaussianSplattingDepth.vertex.js +2 -2
- package/ShadersWGSL/gaussianSplattingDepth.vertex.js.map +1 -1
- package/ShadersWGSL/lightingVolume.compute.js +2 -2
- package/ShadersWGSL/lightingVolume.compute.js.map +1 -1
- package/ShadersWGSL/picking.fragment.js +22 -1
- package/ShadersWGSL/picking.fragment.js.map +1 -1
- package/XR/features/Layers/WebXRCompositionLayer.d.ts +3 -2
- package/XR/features/Layers/WebXRCompositionLayer.js +2 -2
- package/XR/features/Layers/WebXRCompositionLayer.js.map +1 -1
- package/XR/features/Layers/WebXRWebGPUCompositionLayer.d.ts +59 -0
- package/XR/features/Layers/WebXRWebGPUCompositionLayer.js +120 -0
- package/XR/features/Layers/WebXRWebGPUCompositionLayer.js.map +1 -0
- package/XR/features/Layers/WebXRWebGPUProjectionLayer.d.ts +25 -0
- package/XR/features/Layers/WebXRWebGPUProjectionLayer.js +69 -0
- package/XR/features/Layers/WebXRWebGPUProjectionLayer.js.map +1 -0
- package/XR/features/WebXRLayers.pure.d.ts +8 -0
- package/XR/features/WebXRLayers.pure.js +43 -6
- package/XR/features/WebXRLayers.pure.js.map +1 -1
- package/XR/native/nativeXRRenderTarget.d.ts +2 -2
- package/XR/native/nativeXRRenderTarget.js +2 -2
- package/XR/native/nativeXRRenderTarget.js.map +1 -1
- package/XR/webXRExperienceHelper.js +10 -1
- package/XR/webXRExperienceHelper.js.map +1 -1
- package/XR/webXRGraphicsBinding.d.ts +90 -0
- package/XR/webXRGraphicsBinding.js +85 -0
- package/XR/webXRGraphicsBinding.js.map +1 -0
- package/XR/webXRLayerRenderTargetTexture.d.ts +24 -0
- package/XR/webXRLayerRenderTargetTexture.js +30 -0
- package/XR/webXRLayerRenderTargetTexture.js.map +1 -0
- package/XR/webXRManagedOutputCanvas.d.ts +14 -0
- package/XR/webXRManagedOutputCanvas.js +24 -5
- package/XR/webXRManagedOutputCanvas.js.map +1 -1
- package/XR/webXRRenderTargetTextureProvider.d.ts +25 -4
- package/XR/webXRRenderTargetTextureProvider.js +33 -35
- package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
- package/XR/webXRSessionManager.d.ts +11 -0
- package/XR/webXRSessionManager.js +37 -0
- package/XR/webXRSessionManager.js.map +1 -1
- package/XR/webXRTypes.d.ts +9 -6
- package/XR/webXRTypes.js.map +1 -1
- package/XR/webXRWebGLLayer.d.ts +2 -2
- package/XR/webXRWebGLLayer.js +2 -2
- package/XR/webXRWebGLLayer.js.map +1 -1
- package/XR/webXRWebGLRenderTargetTextureProvider.d.ts +12 -0
- package/XR/webXRWebGLRenderTargetTextureProvider.js +58 -0
- package/XR/webXRWebGLRenderTargetTextureProvider.js.map +1 -0
- package/XR/webXRWebGPURenderTargetTextureProvider.d.ts +69 -0
- package/XR/webXRWebGPURenderTargetTextureProvider.js +148 -0
- package/XR/webXRWebGPURenderTargetTextureProvider.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/node.js +878 -845
- package/node.js.map +1 -1
- package/package.json +8 -14
- package/scene.pure.d.ts +12 -0
- package/scene.pure.js +36 -0
- package/scene.pure.js.map +1 -1
- package/tslib.es6.js +304 -150
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cubeTexture.pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Textures/cubeTexture.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\n\nimport { serialize, serializeAsMatrix, serializeAsVector3 } from \"../../Misc/decorators\";\nimport { TimingTools } from \"../../Misc/timingTools\";\nimport { type Nullable } from \"../../types\";\nimport { type Scene } from \"../../scene.pure\";\nimport { Matrix, TmpVectors, Vector3 } from \"../../Maths/math.vector.pure\";\nimport { BaseTexture } from \"../../Materials/Textures/baseTexture.pure\";\nimport { Texture } from \"../../Materials/Textures/texture.pure\";\nimport { Constants } from \"../../Engines/constants\";\nimport { GetClass, RegisterClass } from \"../../Misc/typeStore\";\nimport { type AbstractEngine } from \"../../Engines/abstractEngine.pure\";\nimport { Observable } from \"../../Misc/observable.pure\";\nimport { SerializationHelper } from \"../../Misc/decorators.serialization\";\n\n/**\n * Defines the available options when creating a cube texture\n */\nexport interface ICubeTextureCreationOptions {\n /** Defines the suffixes add to the picture name in case six images are in use like _px.jpg */\n extensions?: string[];\n\n /** noMipmap defines if mipmaps should be created or not */\n noMipmap?: boolean;\n\n /** files defines the six files to load for the different faces in that order: px, py, pz, nx, ny, nz */\n files?: string[];\n\n /** buffer to load instead of loading the data from the url */\n buffer?: ArrayBufferView;\n\n /** onLoad defines a callback triggered at the end of the file load if no errors occurred */\n onLoad?: () => void;\n\n /** onError defines a callback triggered in case of error during load */\n onError?: (message?: string, exception?: any) => void;\n\n /** format defines the internal format to use for the texture once loaded */\n format?: number;\n\n /** prefiltered defines whether or not the texture is created from prefiltered data */\n prefiltered?: boolean;\n\n /** forcedExtension defines the extensions to use (force a special type of file to load) in case it is different from the file name */\n forcedExtension?: any;\n\n /** createPolynomials defines whether or not to create polynomial harmonics from the texture data if necessary */\n createPolynomials?: boolean;\n\n /** lodScale defines the scale applied to environment texture. This manages the range of LOD level used for IBL according to the roughness */\n lodScale?: number;\n\n /** lodOffset defines the offset applied to environment texture. This manages first LOD level used for IBL according to the roughness */\n lodOffset?: number;\n\n /** loaderOptions options to be passed to the loader */\n loaderOptions?: any;\n\n /** useSRGBBuffer Defines if the texture must be loaded in a sRGB GPU buffer (if supported by the GPU) (default: false) */\n useSRGBBuffer?: boolean;\n\n /** Target face size for spherical polynomial computation. 0 = full resolution (default). */\n sphericalPolynomialTargetSize?: number;\n}\n\n// The default scale applied to environment texture. This manages the range of LOD level used for IBL according to the roughness\nconst DefaultLodScale = 0.8;\n\n/**\n * Class for creating a cube texture\n */\nexport class CubeTexture extends BaseTexture {\n private _delayedOnLoad: Nullable<() => void>;\n private _delayedOnError: Nullable<(message?: string, exception?: any) => void>;\n private _lodScale: number;\n private _lodOffset: number;\n\n /**\n * Observable triggered once the texture has been loaded.\n */\n public onLoadObservable: Observable<CubeTexture> = new Observable<CubeTexture>();\n\n /**\n * The url of the texture\n */\n @serialize()\n public url: string;\n\n /**\n * Gets or sets the center of the bounding box associated with the cube texture.\n * It must define where the camera used to render the texture was set\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#using-local-cubemap-mode\n */\n @serializeAsVector3()\n public boundingBoxPosition = Vector3.Zero();\n\n private _boundingBoxSize: Vector3;\n\n /**\n * Gets or sets the size of the bounding box associated with the cube texture\n * When defined, the cubemap will switch to local mode\n * @see https://community.arm.com/graphics/b/blog/posts/reflections-based-on-local-cubemaps-in-unity\n * @example https://www.babylonjs-playground.com/#RNASML\n */\n public set boundingBoxSize(value: Vector3) {\n if (this._boundingBoxSize && this._boundingBoxSize.equals(value)) {\n return;\n }\n this._boundingBoxSize = value;\n const scene = this.getScene();\n if (scene) {\n scene.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);\n }\n }\n /**\n * Returns the bounding box size\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#using-local-cubemap-mode\n */\n @serializeAsVector3()\n public get boundingBoxSize(): Vector3 {\n return this._boundingBoxSize;\n }\n\n protected _rotationY: number = 0;\n\n /**\n * Sets texture matrix rotation angle around Y axis in radians.\n */\n @serialize(\"rotationY\")\n public set rotationY(value: number) {\n this._rotationY = value;\n this.setReflectionTextureMatrix(Matrix.RotationY(this._rotationY));\n }\n /**\n * Gets texture matrix rotation angle around Y axis radians.\n */\n public get rotationY(): number {\n return this._rotationY;\n }\n\n /**\n * Are mip maps generated for this texture or not.\n */\n public override get noMipmap(): boolean {\n return this._noMipmap;\n }\n\n private _noMipmap: boolean;\n\n /** @internal */\n @serialize(\"files\")\n public _files: Nullable<string[]> = null;\n\n @serialize(\"forcedExtension\")\n protected _forcedExtension: Nullable<string> = null;\n\n /**\n * Gets the forced extension (if any)\n */\n public get forcedExtension(): Nullable<string> {\n return this._forcedExtension;\n }\n\n @serialize(\"extensions\")\n private _extensions: Nullable<string[]> = null;\n\n @serializeAsMatrix(\"textureMatrix\")\n private _textureMatrix: Matrix;\n\n @serializeAsMatrix(\"textureMatrixRefraction\")\n private _textureMatrixRefraction: Matrix = new Matrix();\n\n private _format: number;\n private _createPolynomials: boolean;\n private _loaderOptions: any;\n private _useSRGBBuffer?: boolean;\n private _buffer: Nullable<ArrayBufferView> = null;\n\n /**\n * Creates a cube texture to use with reflection for instance. It can be based upon dds or six images as well\n * as prefiltered data.\n * @param rootUrl defines the url of the texture or the root name of the six images\n * @param sceneOrEngine defines the scene or engine the texture is attached to\n * @param extensionsOrOptions defines the suffixes add to the picture name in case six images are in use like _px.jpg or set of all options to create the cube texture\n * @param noMipmap defines if mipmaps should be created or not\n * @param files defines the six files to load for the different faces in that order: px, py, pz, nx, ny, nz\n * @param onLoad defines a callback triggered at the end of the file load if no errors occurred\n * @param onError defines a callback triggered in case of error during load\n * @param format defines the internal format to use for the texture once loaded\n * @param prefiltered defines whether or not the texture is created from prefiltered data\n * @param forcedExtension defines the extensions to use (force a special type of file to load) in case it is different from the file name\n * @param createPolynomials defines whether or not to create polynomial harmonics from the texture data if necessary\n * @param lodScale defines the scale applied to environment texture. This manages the range of LOD level used for IBL according to the roughness\n * @param lodOffset defines the offset applied to environment texture. This manages first LOD level used for IBL according to the roughness\n * @param loaderOptions options to be passed to the loader\n * @param useSRGBBuffer Defines if the texture must be loaded in a sRGB GPU buffer (if supported by the GPU) (default: false)\n * @returns the cube texture\n */\n constructor(\n rootUrl: string,\n sceneOrEngine: Scene | AbstractEngine,\n extensionsOrOptions: Nullable<string[] | ICubeTextureCreationOptions> = null,\n noMipmap: boolean = false,\n files: Nullable<string[]> = null,\n onLoad: Nullable<() => void> = null,\n onError: Nullable<(message?: string, exception?: any) => void> = null,\n format: number = Constants.TEXTUREFORMAT_RGBA,\n prefiltered = false,\n forcedExtension: any = null,\n createPolynomials: boolean = false,\n lodScale: number = DefaultLodScale,\n lodOffset: number = 0,\n loaderOptions?: any,\n useSRGBBuffer?: boolean\n ) {\n super(sceneOrEngine);\n\n this.name = rootUrl;\n this.url = rootUrl;\n this._noMipmap = noMipmap;\n this.hasAlpha = false;\n this.isCube = true;\n this._textureMatrix = Matrix.Identity();\n this.coordinatesMode = Texture.CUBIC_MODE;\n\n let extensions: Nullable<string[]>;\n let buffer: Nullable<ArrayBufferView> = null;\n\n if (extensionsOrOptions !== null && !Array.isArray(extensionsOrOptions)) {\n extensions = extensionsOrOptions.extensions ?? null;\n this._noMipmap = extensionsOrOptions.noMipmap ?? false;\n files = extensionsOrOptions.files ?? null;\n buffer = extensionsOrOptions.buffer ?? null;\n this._format = extensionsOrOptions.format ?? Constants.TEXTUREFORMAT_RGBA;\n prefiltered = extensionsOrOptions.prefiltered ?? false;\n forcedExtension = extensionsOrOptions.forcedExtension ?? null;\n this._createPolynomials = extensionsOrOptions.createPolynomials ?? false;\n this._lodScale = extensionsOrOptions.lodScale ?? DefaultLodScale;\n this._lodOffset = extensionsOrOptions.lodOffset ?? 0;\n this._loaderOptions = extensionsOrOptions.loaderOptions;\n this._useSRGBBuffer = extensionsOrOptions.useSRGBBuffer;\n this._sphericalPolynomialTargetSize = extensionsOrOptions.sphericalPolynomialTargetSize ?? 0;\n onLoad = extensionsOrOptions.onLoad ?? null;\n onError = extensionsOrOptions.onError ?? null;\n } else {\n this._noMipmap = noMipmap;\n this._format = format;\n this._createPolynomials = createPolynomials;\n extensions = extensionsOrOptions;\n this._loaderOptions = loaderOptions;\n this._useSRGBBuffer = useSRGBBuffer;\n this._lodScale = lodScale;\n this._lodOffset = lodOffset;\n }\n\n if (!rootUrl && !files) {\n return;\n }\n\n this.updateURL(rootUrl, forcedExtension, onLoad, prefiltered, onError, extensions, this.getScene()?.useDelayedTextureLoading, files, buffer);\n }\n\n /**\n * Get the current class name of the texture useful for serialization or dynamic coding.\n * @returns \"CubeTexture\"\n */\n public override getClassName(): string {\n return \"CubeTexture\";\n }\n\n /**\n * Update the url (and optional buffer) of this texture if url was null during construction.\n * @param url the url of the texture\n * @param forcedExtension defines the extension to use\n * @param onLoad callback called when the texture is loaded (defaults to null)\n * @param prefiltered Defines whether the updated texture is prefiltered or not\n * @param onError callback called if there was an error during the loading process (defaults to null)\n * @param extensions defines the suffixes add to the picture name in case six images are in use like _px.jpg...\n * @param delayLoad defines if the texture should be loaded now (false by default)\n * @param files defines the six files to load for the different faces in that order: px, py, pz, nx, ny, nz\n * @param buffer the buffer to use instead of loading from the url\n */\n public updateURL(\n url: string,\n forcedExtension: Nullable<string> = null,\n onLoad: Nullable<() => void> = null,\n prefiltered: boolean = false,\n onError: Nullable<(message?: string, exception?: any) => void> = null,\n extensions: Nullable<string[]> = null,\n delayLoad = false,\n files: Nullable<string[]> = null,\n buffer: Nullable<ArrayBufferView> = null\n ): void {\n if (!this.name || this.name.startsWith(\"data:\")) {\n this.name = url;\n }\n this.url = url;\n\n if (forcedExtension) {\n this._forcedExtension = forcedExtension;\n }\n\n const lastDot = url.lastIndexOf(\".\");\n const extension = forcedExtension ? forcedExtension : lastDot > -1 ? url.substring(lastDot).toLowerCase() : \"\";\n const isDDS = extension.indexOf(\".dds\") === 0;\n const isEnv = extension.indexOf(\".env\") === 0;\n const isBasis = extension.indexOf(\".basis\") === 0;\n\n if (isEnv) {\n this.gammaSpace = false;\n this._prefiltered = false;\n this.anisotropicFilteringLevel = 1;\n } else {\n this._prefiltered = prefiltered;\n\n if (prefiltered) {\n this.gammaSpace = false;\n this.anisotropicFilteringLevel = 1;\n }\n }\n\n if (files) {\n this._files = files;\n } else {\n if (!isBasis && !isEnv && !isDDS && !extensions) {\n extensions = [\"_px.jpg\", \"_py.jpg\", \"_pz.jpg\", \"_nx.jpg\", \"_ny.jpg\", \"_nz.jpg\"];\n }\n\n this._files = this._files || [];\n this._files.length = 0;\n\n if (extensions) {\n for (let index = 0; index < extensions.length; index++) {\n this._files.push(url + extensions[index]);\n }\n this._extensions = extensions;\n }\n }\n\n this._buffer = buffer;\n\n if (delayLoad) {\n this.delayLoadState = Constants.DELAYLOADSTATE_NOTLOADED;\n this._delayedOnLoad = onLoad;\n this._delayedOnError = onError;\n } else {\n this._loadTexture(onLoad, onError);\n }\n }\n\n /**\n * Delays loading of the cube texture\n * @param forcedExtension defines the extension to use\n */\n public override delayLoad(forcedExtension?: string): void {\n if (this.delayLoadState !== Constants.DELAYLOADSTATE_NOTLOADED) {\n return;\n }\n if (forcedExtension) {\n this._forcedExtension = forcedExtension;\n }\n\n this.delayLoadState = Constants.DELAYLOADSTATE_LOADED;\n this._loadTexture(this._delayedOnLoad, this._delayedOnError);\n }\n\n /**\n * Returns the reflection texture matrix\n * @returns the reflection texture matrix\n */\n public override getReflectionTextureMatrix(): Matrix {\n return this._textureMatrix;\n }\n\n /**\n * Sets the reflection texture matrix\n * @param value Reflection texture matrix\n */\n public setReflectionTextureMatrix(value: Matrix): void {\n if (value.updateFlag === this._textureMatrix.updateFlag) {\n return;\n }\n\n if (value.isIdentity() !== this._textureMatrix.isIdentity()) {\n this.getScene()?.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag, (mat) => mat.getActiveTextures().indexOf(this) !== -1);\n }\n\n this._textureMatrix = value;\n\n if (!this.getScene()?.useRightHandedSystem) {\n return;\n }\n\n const scale = TmpVectors.Vector3[0];\n const quat = TmpVectors.Quaternion[0];\n const trans = TmpVectors.Vector3[1];\n\n this._textureMatrix.decompose(scale, quat, trans);\n\n quat.z *= -1; // these two operations correspond to negating the x and y euler angles\n quat.w *= -1;\n\n Matrix.ComposeToRef(scale, quat, trans, this._textureMatrixRefraction);\n }\n\n /**\n * Gets a suitable rotate/transform matrix when the texture is used for refraction.\n * There's a separate function from getReflectionTextureMatrix because refraction requires a special configuration of the matrix in right-handed mode.\n * @returns The refraction matrix\n */\n public override getRefractionTextureMatrix(): Matrix {\n return this.getScene()?.useRightHandedSystem ? this._textureMatrixRefraction : this._textureMatrix;\n }\n\n private _loadTexture(onLoad: Nullable<() => void> = null, onError: Nullable<(message?: string, exception?: any) => void> = null) {\n const scene = this.getScene();\n const oldTexture = this._texture;\n this._texture = this._getFromCache(this.url, this._noMipmap, undefined, undefined, this._useSRGBBuffer, this.isCube);\n\n const onLoadProcessing = () => {\n this.onLoadObservable.notifyObservers(this);\n if (oldTexture) {\n oldTexture.dispose();\n this.getScene()?.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);\n }\n if (onLoad) {\n onLoad();\n }\n };\n\n const errorHandler = (message?: string, exception?: any) => {\n this._loadingError = true;\n this._errorObject = { message, exception };\n if (onError) {\n onError(message, exception);\n }\n Texture.OnTextureLoadErrorObservable.notifyObservers(this);\n };\n\n if (!this._texture) {\n if (this._prefiltered) {\n this._texture = this._getEngine()!.createPrefilteredCubeTexture(\n this.url,\n scene,\n this._lodScale,\n this._lodOffset,\n onLoad,\n errorHandler,\n this._format,\n this._forcedExtension,\n this._createPolynomials\n );\n } else {\n this._texture = this._getEngine()!.createCubeTexture(\n this.url,\n scene,\n this._files,\n this._noMipmap,\n onLoad,\n errorHandler,\n this._format,\n this._forcedExtension,\n false,\n this._lodScale,\n this._lodOffset,\n null,\n this._loaderOptions,\n !!this._useSRGBBuffer,\n this._buffer\n );\n }\n\n this._texture?.onLoadedObservable.add(() => this.onLoadObservable.notifyObservers(this));\n } else {\n if (this._texture.isReady) {\n TimingTools.SetImmediate(() => onLoadProcessing());\n } else {\n this._texture.onLoadedObservable.add(() => onLoadProcessing());\n }\n }\n }\n\n /**\n * Makes a clone, or deep copy, of the cube texture\n * @returns a new cube texture\n */\n public override clone(): CubeTexture {\n let uniqueId = 0;\n\n // Save the irradianceTexture before cloning. The irradianceTexture is\n // stored on the InternalTexture (_texture._irradianceTexture), which may\n // be shared between the source and clone when loaded from cache.\n // BaseTexture.clone() returns null, so CopySource sets the shared\n // irradianceTexture to null, losing it on both the original and the clone.\n const savedIrradianceTexture = this.irradianceTexture;\n\n const newCubeTexture = SerializationHelper.Clone(() => {\n const cubeTexture = new CubeTexture(this.url, this.getScene() || this._getEngine()!, this._extensions, this._noMipmap, this._files);\n uniqueId = cubeTexture.uniqueId;\n\n return cubeTexture;\n }, this);\n\n newCubeTexture.uniqueId = uniqueId;\n\n // Restore the irradianceTexture if it was cleared during cloning.\n if (savedIrradianceTexture && !this.irradianceTexture) {\n this.irradianceTexture = savedIrradianceTexture;\n }\n\n return newCubeTexture;\n }\n}\n\nlet _Registered = false;\n\n/**\n * Creates a cube texture from an array of image urls\n * @param files defines an array of image urls\n * @param scene defines the hosting scene\n * @param noMipmap specifies if mip maps are not used\n * @returns a cube texture\n */\nexport function CubeTextureCreateFromImages(files: string[], scene: Scene, noMipmap?: boolean): CubeTexture {\n let rootUrlKey = \"\";\n\n for (const url of files) {\n rootUrlKey += url;\n }\n\n return new CubeTexture(rootUrlKey, scene, null, noMipmap, files);\n}\n\n/**\n * Creates and return a texture created from prefilterd data by tools like IBL Baker or Lys.\n * @param url defines the url of the prefiltered texture\n * @param scene defines the scene the texture is attached to\n * @param forcedExtension defines the extension of the file if different from the url\n * @param createPolynomials defines whether or not to create polynomial harmonics from the texture data if necessary\n * @returns the prefiltered texture\n */\nexport function CubeTextureCreateFromPrefilteredData(url: string, scene: Scene, forcedExtension: any = null, createPolynomials: boolean = true): CubeTexture {\n const oldValue = scene.useDelayedTextureLoading;\n scene.useDelayedTextureLoading = false;\n\n const result = new CubeTexture(url, scene, null, false, null, null, null, undefined, true, forcedExtension, createPolynomials);\n\n scene.useDelayedTextureLoading = oldValue;\n\n return result;\n}\n\n/**\n * Parses text to create a cube texture\n * @param parsedTexture define the serialized text to read from\n * @param scene defines the hosting scene\n * @param rootUrl defines the root url of the cube texture\n * @returns a cube texture\n */\nexport function CubeTextureParse(parsedTexture: any, scene: Scene, rootUrl: string): CubeTexture {\n const texture = SerializationHelper.Parse(\n () => {\n let prefiltered: boolean = false;\n if (parsedTexture.prefiltered) {\n prefiltered = parsedTexture.prefiltered;\n }\n return new CubeTexture(\n rootUrl + (parsedTexture.url ?? parsedTexture.name),\n scene,\n parsedTexture.extensions,\n false,\n parsedTexture.files || null,\n null,\n null,\n undefined,\n prefiltered,\n parsedTexture.forcedExtension\n );\n },\n parsedTexture,\n scene\n );\n\n // Local Cubemaps\n if (parsedTexture.boundingBoxPosition) {\n texture.boundingBoxPosition = Vector3.FromArray(parsedTexture.boundingBoxPosition);\n }\n if (parsedTexture.boundingBoxSize) {\n texture.boundingBoxSize = Vector3.FromArray(parsedTexture.boundingBoxSize);\n }\n\n // Animations\n if (parsedTexture.animations) {\n for (let animationIndex = 0; animationIndex < parsedTexture.animations.length; animationIndex++) {\n const parsedAnimation = parsedTexture.animations[animationIndex];\n const internalClass = GetClass(\"BABYLON.Animation\");\n if (internalClass) {\n texture.animations.push(internalClass.Parse(parsedAnimation));\n }\n }\n }\n\n return texture;\n}\n\n/**\n * Register side effects for cubeTexture.\n * Safe to call multiple times; only the first call has an effect.\n */\nexport function RegisterCubeTexture(): void {\n if (_Registered) {\n return;\n }\n _Registered = true;\n\n CubeTexture.CreateFromImages = CubeTextureCreateFromImages;\n CubeTexture.CreateFromPrefilteredData = CubeTextureCreateFromPrefilteredData;\n CubeTexture.Parse = CubeTextureParse;\n\n Texture._CubeTextureParser = CubeTextureParse;\n\n // Some exporters relies on Tools.Instantiate\n RegisterClass(\"BABYLON.CubeTexture\", CubeTexture);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"cubeTexture.pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Textures/cubeTexture.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\n\nimport { serialize, serializeAsMatrix, serializeAsVector3 } from \"../../Misc/decorators\";\nimport { TimingTools } from \"../../Misc/timingTools\";\nimport { type Nullable } from \"../../types\";\nimport { type Scene } from \"../../scene.pure\";\nimport { Matrix, TmpVectors, Vector3 } from \"../../Maths/math.vector.pure\";\nimport { BaseTexture } from \"../../Materials/Textures/baseTexture.pure\";\nimport { Texture } from \"../../Materials/Textures/texture.pure\";\nimport { Constants } from \"../../Engines/constants\";\nimport { GetClass, RegisterClass } from \"../../Misc/typeStore\";\nimport { type AbstractEngine } from \"../../Engines/abstractEngine.pure\";\nimport { Observable } from \"../../Misc/observable.pure\";\nimport { SerializationHelper } from \"../../Misc/decorators.serialization\";\nimport { RegisterAbstractEngineCubeTexture } from \"../../Engines/AbstractEngine/abstractEngine.cubeTexture.pure\";\n\n/**\n * Defines the available options when creating a cube texture\n */\nexport interface ICubeTextureCreationOptions {\n /** Defines the suffixes add to the picture name in case six images are in use like _px.jpg */\n extensions?: string[];\n\n /** noMipmap defines if mipmaps should be created or not */\n noMipmap?: boolean;\n\n /** files defines the six files to load for the different faces in that order: px, py, pz, nx, ny, nz */\n files?: string[];\n\n /** buffer to load instead of loading the data from the url */\n buffer?: ArrayBufferView;\n\n /** onLoad defines a callback triggered at the end of the file load if no errors occurred */\n onLoad?: () => void;\n\n /** onError defines a callback triggered in case of error during load */\n onError?: (message?: string, exception?: any) => void;\n\n /** format defines the internal format to use for the texture once loaded */\n format?: number;\n\n /** prefiltered defines whether or not the texture is created from prefiltered data */\n prefiltered?: boolean;\n\n /** forcedExtension defines the extensions to use (force a special type of file to load) in case it is different from the file name */\n forcedExtension?: any;\n\n /** createPolynomials defines whether or not to create polynomial harmonics from the texture data if necessary */\n createPolynomials?: boolean;\n\n /** lodScale defines the scale applied to environment texture. This manages the range of LOD level used for IBL according to the roughness */\n lodScale?: number;\n\n /** lodOffset defines the offset applied to environment texture. This manages first LOD level used for IBL according to the roughness */\n lodOffset?: number;\n\n /** loaderOptions options to be passed to the loader */\n loaderOptions?: any;\n\n /** useSRGBBuffer Defines if the texture must be loaded in a sRGB GPU buffer (if supported by the GPU) (default: false) */\n useSRGBBuffer?: boolean;\n\n /** Target face size for spherical polynomial computation. 0 = full resolution (default). */\n sphericalPolynomialTargetSize?: number;\n}\n\n// The default scale applied to environment texture. This manages the range of LOD level used for IBL according to the roughness\nconst DefaultLodScale = 0.8;\n\n/**\n * Class for creating a cube texture\n */\nexport class CubeTexture extends BaseTexture {\n private _delayedOnLoad: Nullable<() => void>;\n private _delayedOnError: Nullable<(message?: string, exception?: any) => void>;\n private _lodScale: number;\n private _lodOffset: number;\n\n /**\n * Observable triggered once the texture has been loaded.\n */\n public onLoadObservable: Observable<CubeTexture> = new Observable<CubeTexture>();\n\n /**\n * The url of the texture\n */\n @serialize()\n public url: string;\n\n /**\n * Gets or sets the center of the bounding box associated with the cube texture.\n * It must define where the camera used to render the texture was set\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#using-local-cubemap-mode\n */\n @serializeAsVector3()\n public boundingBoxPosition = Vector3.Zero();\n\n private _boundingBoxSize: Vector3;\n\n /**\n * Gets or sets the size of the bounding box associated with the cube texture\n * When defined, the cubemap will switch to local mode\n * @see https://community.arm.com/graphics/b/blog/posts/reflections-based-on-local-cubemaps-in-unity\n * @example https://www.babylonjs-playground.com/#RNASML\n */\n public set boundingBoxSize(value: Vector3) {\n if (this._boundingBoxSize && this._boundingBoxSize.equals(value)) {\n return;\n }\n this._boundingBoxSize = value;\n const scene = this.getScene();\n if (scene) {\n scene.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);\n }\n }\n /**\n * Returns the bounding box size\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#using-local-cubemap-mode\n */\n @serializeAsVector3()\n public get boundingBoxSize(): Vector3 {\n return this._boundingBoxSize;\n }\n\n protected _rotationY: number = 0;\n\n /**\n * Sets texture matrix rotation angle around Y axis in radians.\n */\n @serialize(\"rotationY\")\n public set rotationY(value: number) {\n this._rotationY = value;\n this.setReflectionTextureMatrix(Matrix.RotationY(this._rotationY));\n }\n /**\n * Gets texture matrix rotation angle around Y axis radians.\n */\n public get rotationY(): number {\n return this._rotationY;\n }\n\n /**\n * Are mip maps generated for this texture or not.\n */\n public override get noMipmap(): boolean {\n return this._noMipmap;\n }\n\n private _noMipmap: boolean;\n\n /** @internal */\n @serialize(\"files\")\n public _files: Nullable<string[]> = null;\n\n @serialize(\"forcedExtension\")\n protected _forcedExtension: Nullable<string> = null;\n\n /**\n * Gets the forced extension (if any)\n */\n public get forcedExtension(): Nullable<string> {\n return this._forcedExtension;\n }\n\n @serialize(\"extensions\")\n private _extensions: Nullable<string[]> = null;\n\n @serializeAsMatrix(\"textureMatrix\")\n private _textureMatrix: Matrix;\n\n @serializeAsMatrix(\"textureMatrixRefraction\")\n private _textureMatrixRefraction: Matrix = new Matrix();\n\n private _format: number;\n private _createPolynomials: boolean;\n private _loaderOptions: any;\n private _useSRGBBuffer?: boolean;\n private _buffer: Nullable<ArrayBufferView> = null;\n\n /**\n * Creates a cube texture to use with reflection for instance. It can be based upon dds or six images as well\n * as prefiltered data.\n * @param rootUrl defines the url of the texture or the root name of the six images\n * @param sceneOrEngine defines the scene or engine the texture is attached to\n * @param extensionsOrOptions defines the suffixes add to the picture name in case six images are in use like _px.jpg or set of all options to create the cube texture\n * @param noMipmap defines if mipmaps should be created or not\n * @param files defines the six files to load for the different faces in that order: px, py, pz, nx, ny, nz\n * @param onLoad defines a callback triggered at the end of the file load if no errors occurred\n * @param onError defines a callback triggered in case of error during load\n * @param format defines the internal format to use for the texture once loaded\n * @param prefiltered defines whether or not the texture is created from prefiltered data\n * @param forcedExtension defines the extensions to use (force a special type of file to load) in case it is different from the file name\n * @param createPolynomials defines whether or not to create polynomial harmonics from the texture data if necessary\n * @param lodScale defines the scale applied to environment texture. This manages the range of LOD level used for IBL according to the roughness\n * @param lodOffset defines the offset applied to environment texture. This manages first LOD level used for IBL according to the roughness\n * @param loaderOptions options to be passed to the loader\n * @param useSRGBBuffer Defines if the texture must be loaded in a sRGB GPU buffer (if supported by the GPU) (default: false)\n * @returns the cube texture\n */\n constructor(\n rootUrl: string,\n sceneOrEngine: Scene | AbstractEngine,\n extensionsOrOptions: Nullable<string[] | ICubeTextureCreationOptions> = null,\n noMipmap: boolean = false,\n files: Nullable<string[]> = null,\n onLoad: Nullable<() => void> = null,\n onError: Nullable<(message?: string, exception?: any) => void> = null,\n format: number = Constants.TEXTUREFORMAT_RGBA,\n prefiltered = false,\n forcedExtension: any = null,\n createPolynomials: boolean = false,\n lodScale: number = DefaultLodScale,\n lodOffset: number = 0,\n loaderOptions?: any,\n useSRGBBuffer?: boolean\n ) {\n super(sceneOrEngine);\n\n RegisterAbstractEngineCubeTexture();\n\n this.name = rootUrl;\n this.url = rootUrl;\n this._noMipmap = noMipmap;\n this.hasAlpha = false;\n this.isCube = true;\n this._textureMatrix = Matrix.Identity();\n this.coordinatesMode = Texture.CUBIC_MODE;\n\n let extensions: Nullable<string[]>;\n let buffer: Nullable<ArrayBufferView> = null;\n\n if (extensionsOrOptions !== null && !Array.isArray(extensionsOrOptions)) {\n extensions = extensionsOrOptions.extensions ?? null;\n this._noMipmap = extensionsOrOptions.noMipmap ?? false;\n files = extensionsOrOptions.files ?? null;\n buffer = extensionsOrOptions.buffer ?? null;\n this._format = extensionsOrOptions.format ?? Constants.TEXTUREFORMAT_RGBA;\n prefiltered = extensionsOrOptions.prefiltered ?? false;\n forcedExtension = extensionsOrOptions.forcedExtension ?? null;\n this._createPolynomials = extensionsOrOptions.createPolynomials ?? false;\n this._lodScale = extensionsOrOptions.lodScale ?? DefaultLodScale;\n this._lodOffset = extensionsOrOptions.lodOffset ?? 0;\n this._loaderOptions = extensionsOrOptions.loaderOptions;\n this._useSRGBBuffer = extensionsOrOptions.useSRGBBuffer;\n this._sphericalPolynomialTargetSize = extensionsOrOptions.sphericalPolynomialTargetSize ?? 0;\n onLoad = extensionsOrOptions.onLoad ?? null;\n onError = extensionsOrOptions.onError ?? null;\n } else {\n this._noMipmap = noMipmap;\n this._format = format;\n this._createPolynomials = createPolynomials;\n extensions = extensionsOrOptions;\n this._loaderOptions = loaderOptions;\n this._useSRGBBuffer = useSRGBBuffer;\n this._lodScale = lodScale;\n this._lodOffset = lodOffset;\n }\n\n if (!rootUrl && !files) {\n return;\n }\n\n this.updateURL(rootUrl, forcedExtension, onLoad, prefiltered, onError, extensions, this.getScene()?.useDelayedTextureLoading, files, buffer);\n }\n\n /**\n * Get the current class name of the texture useful for serialization or dynamic coding.\n * @returns \"CubeTexture\"\n */\n public override getClassName(): string {\n return \"CubeTexture\";\n }\n\n /**\n * Update the url (and optional buffer) of this texture if url was null during construction.\n * @param url the url of the texture\n * @param forcedExtension defines the extension to use\n * @param onLoad callback called when the texture is loaded (defaults to null)\n * @param prefiltered Defines whether the updated texture is prefiltered or not\n * @param onError callback called if there was an error during the loading process (defaults to null)\n * @param extensions defines the suffixes add to the picture name in case six images are in use like _px.jpg...\n * @param delayLoad defines if the texture should be loaded now (false by default)\n * @param files defines the six files to load for the different faces in that order: px, py, pz, nx, ny, nz\n * @param buffer the buffer to use instead of loading from the url\n */\n public updateURL(\n url: string,\n forcedExtension: Nullable<string> = null,\n onLoad: Nullable<() => void> = null,\n prefiltered: boolean = false,\n onError: Nullable<(message?: string, exception?: any) => void> = null,\n extensions: Nullable<string[]> = null,\n delayLoad = false,\n files: Nullable<string[]> = null,\n buffer: Nullable<ArrayBufferView> = null\n ): void {\n if (!this.name || this.name.startsWith(\"data:\")) {\n this.name = url;\n }\n this.url = url;\n\n if (forcedExtension) {\n this._forcedExtension = forcedExtension;\n }\n\n const lastDot = url.lastIndexOf(\".\");\n const extension = forcedExtension ? forcedExtension : lastDot > -1 ? url.substring(lastDot).toLowerCase() : \"\";\n const isDDS = extension.indexOf(\".dds\") === 0;\n const isEnv = extension.indexOf(\".env\") === 0;\n const isBasis = extension.indexOf(\".basis\") === 0;\n\n if (isEnv) {\n this.gammaSpace = false;\n this._prefiltered = false;\n this.anisotropicFilteringLevel = 1;\n } else {\n this._prefiltered = prefiltered;\n\n if (prefiltered) {\n this.gammaSpace = false;\n this.anisotropicFilteringLevel = 1;\n }\n }\n\n if (files) {\n this._files = files;\n } else {\n if (!isBasis && !isEnv && !isDDS && !extensions) {\n extensions = [\"_px.jpg\", \"_py.jpg\", \"_pz.jpg\", \"_nx.jpg\", \"_ny.jpg\", \"_nz.jpg\"];\n }\n\n this._files = this._files || [];\n this._files.length = 0;\n\n if (extensions) {\n for (let index = 0; index < extensions.length; index++) {\n this._files.push(url + extensions[index]);\n }\n this._extensions = extensions;\n }\n }\n\n this._buffer = buffer;\n\n if (delayLoad) {\n this.delayLoadState = Constants.DELAYLOADSTATE_NOTLOADED;\n this._delayedOnLoad = onLoad;\n this._delayedOnError = onError;\n } else {\n this._loadTexture(onLoad, onError);\n }\n }\n\n /**\n * Delays loading of the cube texture\n * @param forcedExtension defines the extension to use\n */\n public override delayLoad(forcedExtension?: string): void {\n if (this.delayLoadState !== Constants.DELAYLOADSTATE_NOTLOADED) {\n return;\n }\n if (forcedExtension) {\n this._forcedExtension = forcedExtension;\n }\n\n this.delayLoadState = Constants.DELAYLOADSTATE_LOADED;\n this._loadTexture(this._delayedOnLoad, this._delayedOnError);\n }\n\n /**\n * Returns the reflection texture matrix\n * @returns the reflection texture matrix\n */\n public override getReflectionTextureMatrix(): Matrix {\n return this._textureMatrix;\n }\n\n /**\n * Sets the reflection texture matrix\n * @param value Reflection texture matrix\n */\n public setReflectionTextureMatrix(value: Matrix): void {\n if (value.updateFlag === this._textureMatrix.updateFlag) {\n return;\n }\n\n if (value.isIdentity() !== this._textureMatrix.isIdentity()) {\n this.getScene()?.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag, (mat) => mat.getActiveTextures().indexOf(this) !== -1);\n }\n\n this._textureMatrix = value;\n\n if (!this.getScene()?.useRightHandedSystem) {\n return;\n }\n\n const scale = TmpVectors.Vector3[0];\n const quat = TmpVectors.Quaternion[0];\n const trans = TmpVectors.Vector3[1];\n\n this._textureMatrix.decompose(scale, quat, trans);\n\n quat.z *= -1; // these two operations correspond to negating the x and y euler angles\n quat.w *= -1;\n\n Matrix.ComposeToRef(scale, quat, trans, this._textureMatrixRefraction);\n }\n\n /**\n * Gets a suitable rotate/transform matrix when the texture is used for refraction.\n * There's a separate function from getReflectionTextureMatrix because refraction requires a special configuration of the matrix in right-handed mode.\n * @returns The refraction matrix\n */\n public override getRefractionTextureMatrix(): Matrix {\n return this.getScene()?.useRightHandedSystem ? this._textureMatrixRefraction : this._textureMatrix;\n }\n\n private _loadTexture(onLoad: Nullable<() => void> = null, onError: Nullable<(message?: string, exception?: any) => void> = null) {\n const scene = this.getScene();\n const oldTexture = this._texture;\n this._texture = this._getFromCache(this.url, this._noMipmap, undefined, undefined, this._useSRGBBuffer, this.isCube);\n\n const onLoadProcessing = () => {\n this.onLoadObservable.notifyObservers(this);\n if (oldTexture) {\n oldTexture.dispose();\n this.getScene()?.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);\n }\n if (onLoad) {\n onLoad();\n }\n };\n\n const errorHandler = (message?: string, exception?: any) => {\n this._loadingError = true;\n this._errorObject = { message, exception };\n if (onError) {\n onError(message, exception);\n }\n Texture.OnTextureLoadErrorObservable.notifyObservers(this);\n };\n\n if (!this._texture) {\n if (this._prefiltered) {\n this._texture = this._getEngine()!.createPrefilteredCubeTexture(\n this.url,\n scene,\n this._lodScale,\n this._lodOffset,\n onLoad,\n errorHandler,\n this._format,\n this._forcedExtension,\n this._createPolynomials\n );\n } else {\n this._texture = this._getEngine()!.createCubeTexture(\n this.url,\n scene,\n this._files,\n this._noMipmap,\n onLoad,\n errorHandler,\n this._format,\n this._forcedExtension,\n false,\n this._lodScale,\n this._lodOffset,\n null,\n this._loaderOptions,\n !!this._useSRGBBuffer,\n this._buffer\n );\n }\n\n this._texture?.onLoadedObservable.add(() => this.onLoadObservable.notifyObservers(this));\n } else {\n if (this._texture.isReady) {\n TimingTools.SetImmediate(() => onLoadProcessing());\n } else {\n this._texture.onLoadedObservable.add(() => onLoadProcessing());\n }\n }\n }\n\n /**\n * Makes a clone, or deep copy, of the cube texture\n * @returns a new cube texture\n */\n public override clone(): CubeTexture {\n let uniqueId = 0;\n\n // Save the irradianceTexture before cloning. The irradianceTexture is\n // stored on the InternalTexture (_texture._irradianceTexture), which may\n // be shared between the source and clone when loaded from cache.\n // BaseTexture.clone() returns null, so CopySource sets the shared\n // irradianceTexture to null, losing it on both the original and the clone.\n const savedIrradianceTexture = this.irradianceTexture;\n\n const newCubeTexture = SerializationHelper.Clone(() => {\n const cubeTexture = new CubeTexture(this.url, this.getScene() || this._getEngine()!, this._extensions, this._noMipmap, this._files);\n uniqueId = cubeTexture.uniqueId;\n\n return cubeTexture;\n }, this);\n\n newCubeTexture.uniqueId = uniqueId;\n\n // Restore the irradianceTexture if it was cleared during cloning.\n if (savedIrradianceTexture && !this.irradianceTexture) {\n this.irradianceTexture = savedIrradianceTexture;\n }\n\n return newCubeTexture;\n }\n}\n\nlet _Registered = false;\n\n/**\n * Creates a cube texture from an array of image urls\n * @param files defines an array of image urls\n * @param scene defines the hosting scene\n * @param noMipmap specifies if mip maps are not used\n * @returns a cube texture\n */\nexport function CubeTextureCreateFromImages(files: string[], scene: Scene, noMipmap?: boolean): CubeTexture {\n let rootUrlKey = \"\";\n\n for (const url of files) {\n rootUrlKey += url;\n }\n\n return new CubeTexture(rootUrlKey, scene, null, noMipmap, files);\n}\n\n/**\n * Creates and return a texture created from prefilterd data by tools like IBL Baker or Lys.\n * @param url defines the url of the prefiltered texture\n * @param scene defines the scene the texture is attached to\n * @param forcedExtension defines the extension of the file if different from the url\n * @param createPolynomials defines whether or not to create polynomial harmonics from the texture data if necessary\n * @returns the prefiltered texture\n */\nexport function CubeTextureCreateFromPrefilteredData(url: string, scene: Scene, forcedExtension: any = null, createPolynomials: boolean = true): CubeTexture {\n const oldValue = scene.useDelayedTextureLoading;\n scene.useDelayedTextureLoading = false;\n\n const result = new CubeTexture(url, scene, null, false, null, null, null, undefined, true, forcedExtension, createPolynomials);\n\n scene.useDelayedTextureLoading = oldValue;\n\n return result;\n}\n\n/**\n * Parses text to create a cube texture\n * @param parsedTexture define the serialized text to read from\n * @param scene defines the hosting scene\n * @param rootUrl defines the root url of the cube texture\n * @returns a cube texture\n */\nexport function CubeTextureParse(parsedTexture: any, scene: Scene, rootUrl: string): CubeTexture {\n const texture = SerializationHelper.Parse(\n () => {\n let prefiltered: boolean = false;\n if (parsedTexture.prefiltered) {\n prefiltered = parsedTexture.prefiltered;\n }\n return new CubeTexture(\n rootUrl + (parsedTexture.url ?? parsedTexture.name),\n scene,\n parsedTexture.extensions,\n false,\n parsedTexture.files || null,\n null,\n null,\n undefined,\n prefiltered,\n parsedTexture.forcedExtension\n );\n },\n parsedTexture,\n scene\n );\n\n // Local Cubemaps\n if (parsedTexture.boundingBoxPosition) {\n texture.boundingBoxPosition = Vector3.FromArray(parsedTexture.boundingBoxPosition);\n }\n if (parsedTexture.boundingBoxSize) {\n texture.boundingBoxSize = Vector3.FromArray(parsedTexture.boundingBoxSize);\n }\n\n // Animations\n if (parsedTexture.animations) {\n for (let animationIndex = 0; animationIndex < parsedTexture.animations.length; animationIndex++) {\n const parsedAnimation = parsedTexture.animations[animationIndex];\n const internalClass = GetClass(\"BABYLON.Animation\");\n if (internalClass) {\n texture.animations.push(internalClass.Parse(parsedAnimation));\n }\n }\n }\n\n return texture;\n}\n\n/**\n * Register side effects for cubeTexture.\n * Safe to call multiple times; only the first call has an effect.\n */\nexport function RegisterCubeTexture(): void {\n if (_Registered) {\n return;\n }\n _Registered = true;\n\n CubeTexture.CreateFromImages = CubeTextureCreateFromImages;\n CubeTexture.CreateFromPrefilteredData = CubeTextureCreateFromPrefilteredData;\n CubeTexture.Parse = CubeTextureParse;\n\n Texture._CubeTextureParser = CubeTextureParse;\n\n // Some exporters relies on Tools.Instantiate\n RegisterClass(\"BABYLON.CubeTexture\", CubeTexture);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamicTexture.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Textures/dynamicTexture.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC
|
|
1
|
+
{"version":3,"file":"dynamicTexture.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Textures/dynamicTexture.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC","sourcesContent":["export * from \"./dynamicTexture.pure\";\n"]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { Logger } from "../../Misc/logger.js";
|
|
3
3
|
import { Texture } from "../../Materials/Textures/texture.pure.js";
|
|
4
4
|
|
|
5
|
+
import { RegisterEnginesExtensionsEngineDynamicTexture } from "../../Engines/Extensions/engine.dynamicTexture.pure.js";
|
|
5
6
|
/**
|
|
6
7
|
* A class extending Texture allowing drawing on a texture
|
|
7
8
|
* @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/dynamicTexture
|
|
@@ -13,6 +14,7 @@ export class DynamicTexture extends Texture {
|
|
|
13
14
|
const scene = isScene ? sceneOrOptions : sceneOrOptions?.scene;
|
|
14
15
|
const noMipmap = isScene ? !generateMipMaps : sceneOrOptions;
|
|
15
16
|
super(null, scene, noMipmap, invertY, samplingMode, undefined, undefined, undefined, undefined, format);
|
|
17
|
+
RegisterEnginesExtensionsEngineDynamicTexture();
|
|
16
18
|
this.name = name;
|
|
17
19
|
this.wrapU = Texture.CLAMP_ADDRESSMODE;
|
|
18
20
|
this.wrapV = Texture.CLAMP_ADDRESSMODE;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamicTexture.pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Textures/dynamicTexture.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { Logger } from \"../../Misc/logger\";\r\nimport { type Nullable } from \"../../types\";\r\nimport { type Scene } from \"../../scene.pure\";\r\nimport { type ISize } from \"../../Maths/math.size\";\r\nimport { type ITextureCreationOptions, Texture } from \"../../Materials/Textures/texture.pure\";\r\nimport { Constants } from \"../../Engines/constants\";\r\nimport { type ICanvas, type ICanvasRenderingContext } from \"../../Engines/ICanvas\";\r\n\r\n/**\r\n * Interface defining options used to create a dynamic texture\r\n */\r\nexport interface IDynamicTextureOptions extends ITextureCreationOptions {\r\n /** defines the width of the texture (default: 0) */\r\n width?: number;\r\n /** defines the height of the texture (default: 0) */\r\n height?: number;\r\n /** defines the hosting scene (default: null) */\r\n scene?: Nullable<Scene>;\r\n}\r\n\r\n/**\r\n * A class extending Texture allowing drawing on a texture\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/dynamicTexture\r\n */\r\nexport class DynamicTexture extends Texture {\r\n private _generateMipMaps: boolean;\r\n private _canvas: ICanvas;\r\n private _ownCanvas: boolean;\r\n private _context: ICanvasRenderingContext;\r\n\r\n /**\r\n * Creates a DynamicTexture\r\n * @param name defines the name of the texture\r\n * @param canvasOrSize provides 3 alternatives for width and height of texture, a canvas, object with width and height properties, number for both width and height\r\n * @param options The options to be used when constructing the dynamic texture\r\n */\r\n constructor(name: string, canvasOrSize: ICanvas | { width: number; height: number } | number, options?: IDynamicTextureOptions);\r\n\r\n /**\r\n * Creates a DynamicTexture\r\n * @param name defines the name of the texture\r\n * @param options provides 3 alternatives for width and height of texture, a canvas, object with width and height properties, number for both width and height\r\n * @param scene defines the scene where you want the texture\r\n * @param generateMipMaps defines the use of MipMaps or not (default is false)\r\n * @param samplingMode defines the sampling mode to use (default is Texture.TRILINEAR_SAMPLINGMODE)\r\n * @param format defines the texture format to use (default is Engine.TEXTUREFORMAT_RGBA)\r\n * @param invertY defines if the texture needs to be inverted on the y axis during loading\r\n */\r\n constructor(\r\n name: string,\r\n options: ICanvas | { width: number; height: number } | number,\r\n scene?: Nullable<Scene>,\r\n generateMipMaps?: boolean,\r\n samplingMode?: number,\r\n format?: number,\r\n invertY?: boolean\r\n );\r\n\r\n /** @internal */\r\n constructor(\r\n name: string,\r\n canvasOrSize: ICanvas | { width: number; height: number } | number,\r\n sceneOrOptions?: Nullable<Scene> | IDynamicTextureOptions,\r\n generateMipMaps?: boolean,\r\n samplingMode?: number,\r\n format?: number,\r\n invertY?: boolean\r\n );\r\n\r\n /** @internal */\r\n constructor(\r\n name: string,\r\n canvasOrSize: ICanvas | { width: number; height: number } | number,\r\n sceneOrOptions?: Nullable<Scene> | IDynamicTextureOptions,\r\n generateMipMaps: boolean = false,\r\n samplingMode: number = Constants.TEXTURE_TRILINEAR_SAMPLINGMODE,\r\n format: number = Constants.TEXTUREFORMAT_RGBA,\r\n invertY?: boolean\r\n ) {\r\n const isScene = !sceneOrOptions || (sceneOrOptions as Scene)._isScene;\r\n const scene = isScene ? (sceneOrOptions as Scene) : (sceneOrOptions as IDynamicTextureOptions)?.scene;\r\n const noMipmap = isScene ? !generateMipMaps : (sceneOrOptions as IDynamicTextureOptions);\r\n\r\n super(null, scene, noMipmap, invertY, samplingMode, undefined, undefined, undefined, undefined, format);\r\n\r\n this.name = name;\r\n this.wrapU = Texture.CLAMP_ADDRESSMODE;\r\n this.wrapV = Texture.CLAMP_ADDRESSMODE;\r\n\r\n this._generateMipMaps = generateMipMaps;\r\n\r\n const engine = this._getEngine();\r\n if (!engine) {\r\n return;\r\n }\r\n\r\n if ((canvasOrSize as ICanvas).getContext) {\r\n this._canvas = canvasOrSize as ICanvas;\r\n this._ownCanvas = false;\r\n this._texture = engine.createDynamicTexture(this._canvas.width, this._canvas.height, generateMipMaps, samplingMode);\r\n } else {\r\n this._canvas = engine.createCanvas(1, 1);\r\n this._ownCanvas = true;\r\n\r\n const optionsAsSize = canvasOrSize as ISize;\r\n if (optionsAsSize.width || optionsAsSize.width === 0) {\r\n this._texture = engine.createDynamicTexture(optionsAsSize.width, optionsAsSize.height, generateMipMaps, samplingMode);\r\n } else {\r\n this._texture = engine.createDynamicTexture(canvasOrSize as number, canvasOrSize as number, generateMipMaps, samplingMode);\r\n }\r\n }\r\n\r\n const textureSize = this.getSize();\r\n\r\n if (this._canvas.width !== textureSize.width) {\r\n this._canvas.width = textureSize.width;\r\n }\r\n if (this._canvas.height !== textureSize.height) {\r\n this._canvas.height = textureSize.height;\r\n }\r\n this._context = this._canvas.getContext(\"2d\");\r\n }\r\n\r\n /**\r\n * Get the current class name of the texture useful for serialization or dynamic coding.\r\n * @returns \"DynamicTexture\"\r\n */\r\n public override getClassName(): string {\r\n return \"DynamicTexture\";\r\n }\r\n\r\n /**\r\n * Gets the current state of canRescale\r\n */\r\n public override get canRescale(): boolean {\r\n return true;\r\n }\r\n\r\n private _recreate(textureSize: ISize): void {\r\n this._canvas.width = textureSize.width;\r\n this._canvas.height = textureSize.height;\r\n\r\n this.releaseInternalTexture();\r\n\r\n this._texture = this._getEngine()!.createDynamicTexture(textureSize.width, textureSize.height, this._generateMipMaps, this.samplingMode);\r\n }\r\n\r\n /**\r\n * Scales the texture\r\n * @param ratio the scale factor to apply to both width and height\r\n */\r\n public override scale(ratio: number): void {\r\n const textureSize = this.getSize();\r\n\r\n textureSize.width *= ratio;\r\n textureSize.height *= ratio;\r\n\r\n this._recreate(textureSize);\r\n }\r\n\r\n /**\r\n * Resizes the texture\r\n * @param width the new width\r\n * @param height the new height\r\n */\r\n public scaleTo(width: number, height: number): void {\r\n const textureSize = this.getSize();\r\n\r\n textureSize.width = width;\r\n textureSize.height = height;\r\n\r\n this._recreate(textureSize);\r\n }\r\n\r\n /**\r\n * Gets the context of the canvas used by the texture\r\n * @returns the canvas context of the dynamic texture\r\n */\r\n public getContext(): ICanvasRenderingContext {\r\n return this._context;\r\n }\r\n\r\n /**\r\n * Clears the texture\r\n * @param clearColor Defines the clear color to use\r\n */\r\n public clear(clearColor?: string): void {\r\n const size = this.getSize();\r\n if (clearColor) {\r\n this._context.fillStyle = clearColor;\r\n }\r\n this._context.clearRect(0, 0, size.width, size.height);\r\n }\r\n\r\n /**\r\n * Updates the texture\r\n * @param invertY defines the direction for the Y axis (default is true - y increases downwards)\r\n * @param premulAlpha defines if alpha is stored as premultiplied (default is false)\r\n * @param allowGPUOptimization true to allow some specific GPU optimizations (subject to engine feature \"allowGPUOptimizationsForGUI\" being true)\r\n */\r\n public update(invertY?: boolean, premulAlpha = false, allowGPUOptimization = false): void {\r\n // When disposed, this._texture will be null.\r\n if (!this._texture) {\r\n return;\r\n }\r\n\r\n this._getEngine()!.updateDynamicTexture(\r\n this._texture,\r\n this._canvas,\r\n invertY === undefined ? true : invertY,\r\n premulAlpha,\r\n this._format || undefined,\r\n undefined,\r\n allowGPUOptimization\r\n );\r\n }\r\n\r\n /**\r\n * Draws text onto the texture\r\n * @param text defines the text to be drawn\r\n * @param x defines the placement of the text from the left\r\n * @param y defines the placement of the text from the top when invertY is true and from the bottom when false\r\n * @param font defines the font to be used with font-style, font-size, font-name\r\n * @param color defines the color used for the text\r\n * @param fillColor defines the color for the canvas, use null to not overwrite canvas (this blends with the background to replace, use the clear function)\r\n * @param invertY defines the direction for the Y axis (default is true - y increases downwards)\r\n * @param update defines whether texture is immediately update (default is true)\r\n */\r\n public drawText(\r\n text: string,\r\n x: number | null | undefined,\r\n y: number | null | undefined,\r\n font: string,\r\n color: string | null,\r\n fillColor: string | null,\r\n invertY?: boolean,\r\n update = true\r\n ) {\r\n const size = this.getSize();\r\n if (fillColor) {\r\n this._context.fillStyle = fillColor;\r\n this._context.fillRect(0, 0, size.width, size.height);\r\n }\r\n\r\n this._context.font = font;\r\n if (x === null || x === undefined) {\r\n const textSize = this._context.measureText(text);\r\n x = (size.width - textSize.width) / 2;\r\n }\r\n if (y === null || y === undefined) {\r\n const fontSize = parseInt(font.replace(/\\D/g, \"\"));\r\n y = size.height / 2 + fontSize / 3.65;\r\n }\r\n\r\n this._context.fillStyle = color || \"\";\r\n this._context.fillText(text, x, y);\r\n\r\n if (update) {\r\n this.update(invertY);\r\n }\r\n }\r\n\r\n /**\r\n * Disposes the dynamic texture.\r\n */\r\n public override dispose(): void {\r\n super.dispose();\r\n\r\n if (this._ownCanvas) {\r\n this._canvas?.remove?.();\r\n }\r\n (this._canvas as any) = null;\r\n (this._context as any) = null;\r\n }\r\n\r\n /**\r\n * Clones the texture\r\n * @returns the clone of the texture.\r\n */\r\n public override clone(): DynamicTexture {\r\n const scene = this.getScene();\r\n\r\n if (!scene) {\r\n return this;\r\n }\r\n\r\n const textureSize = this.getSize();\r\n const newTexture = new DynamicTexture(this.name, textureSize, scene, this._generateMipMaps);\r\n\r\n // Base texture\r\n newTexture.hasAlpha = this.hasAlpha;\r\n newTexture.level = this.level;\r\n\r\n // Dynamic Texture\r\n newTexture.wrapU = this.wrapU;\r\n newTexture.wrapV = this.wrapV;\r\n\r\n return newTexture;\r\n }\r\n\r\n /**\r\n * Serializes the dynamic texture. The scene should be ready before the dynamic texture is serialized\r\n * @returns a serialized dynamic texture object\r\n */\r\n public override serialize(): any {\r\n const scene = this.getScene();\r\n if (scene && !scene.isReady()) {\r\n Logger.Warn(\"The scene must be ready before serializing the dynamic texture\");\r\n }\r\n\r\n const serializationObject = super.serialize();\r\n if (DynamicTexture._IsCanvasElement(this._canvas)) {\r\n serializationObject.base64String = this._canvas.toDataURL();\r\n }\r\n\r\n serializationObject.invertY = this._invertY;\r\n serializationObject.samplingMode = this.samplingMode;\r\n\r\n return serializationObject;\r\n }\r\n\r\n private static _IsCanvasElement(canvas: HTMLCanvasElement | OffscreenCanvas | ICanvas): canvas is HTMLCanvasElement {\r\n return (canvas as HTMLCanvasElement).toDataURL !== undefined;\r\n }\r\n\r\n /** @internal */\r\n public override _rebuild(): void {\r\n this.update();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"dynamicTexture.pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Textures/dynamicTexture.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { Logger } from \"../../Misc/logger\";\r\nimport { type Nullable } from \"../../types\";\r\nimport { type Scene } from \"../../scene.pure\";\r\nimport { type ISize } from \"../../Maths/math.size\";\r\nimport { type ITextureCreationOptions, Texture } from \"../../Materials/Textures/texture.pure\";\r\nimport { Constants } from \"../../Engines/constants\";\r\nimport { type ICanvas, type ICanvasRenderingContext } from \"../../Engines/ICanvas\";\r\nimport { RegisterEnginesExtensionsEngineDynamicTexture } from \"../../Engines/Extensions/engine.dynamicTexture.pure\";\r\n\r\n/**\r\n * Interface defining options used to create a dynamic texture\r\n */\r\nexport interface IDynamicTextureOptions extends ITextureCreationOptions {\r\n /** defines the width of the texture (default: 0) */\r\n width?: number;\r\n /** defines the height of the texture (default: 0) */\r\n height?: number;\r\n /** defines the hosting scene (default: null) */\r\n scene?: Nullable<Scene>;\r\n}\r\n\r\n/**\r\n * A class extending Texture allowing drawing on a texture\r\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/dynamicTexture\r\n */\r\nexport class DynamicTexture extends Texture {\r\n private _generateMipMaps: boolean;\r\n private _canvas: ICanvas;\r\n private _ownCanvas: boolean;\r\n private _context: ICanvasRenderingContext;\r\n\r\n /**\r\n * Creates a DynamicTexture\r\n * @param name defines the name of the texture\r\n * @param canvasOrSize provides 3 alternatives for width and height of texture, a canvas, object with width and height properties, number for both width and height\r\n * @param options The options to be used when constructing the dynamic texture\r\n */\r\n constructor(name: string, canvasOrSize: ICanvas | { width: number; height: number } | number, options?: IDynamicTextureOptions);\r\n\r\n /**\r\n * Creates a DynamicTexture\r\n * @param name defines the name of the texture\r\n * @param options provides 3 alternatives for width and height of texture, a canvas, object with width and height properties, number for both width and height\r\n * @param scene defines the scene where you want the texture\r\n * @param generateMipMaps defines the use of MipMaps or not (default is false)\r\n * @param samplingMode defines the sampling mode to use (default is Texture.TRILINEAR_SAMPLINGMODE)\r\n * @param format defines the texture format to use (default is Engine.TEXTUREFORMAT_RGBA)\r\n * @param invertY defines if the texture needs to be inverted on the y axis during loading\r\n */\r\n constructor(\r\n name: string,\r\n options: ICanvas | { width: number; height: number } | number,\r\n scene?: Nullable<Scene>,\r\n generateMipMaps?: boolean,\r\n samplingMode?: number,\r\n format?: number,\r\n invertY?: boolean\r\n );\r\n\r\n /** @internal */\r\n constructor(\r\n name: string,\r\n canvasOrSize: ICanvas | { width: number; height: number } | number,\r\n sceneOrOptions?: Nullable<Scene> | IDynamicTextureOptions,\r\n generateMipMaps?: boolean,\r\n samplingMode?: number,\r\n format?: number,\r\n invertY?: boolean\r\n );\r\n\r\n /** @internal */\r\n constructor(\r\n name: string,\r\n canvasOrSize: ICanvas | { width: number; height: number } | number,\r\n sceneOrOptions?: Nullable<Scene> | IDynamicTextureOptions,\r\n generateMipMaps: boolean = false,\r\n samplingMode: number = Constants.TEXTURE_TRILINEAR_SAMPLINGMODE,\r\n format: number = Constants.TEXTUREFORMAT_RGBA,\r\n invertY?: boolean\r\n ) {\r\n const isScene = !sceneOrOptions || (sceneOrOptions as Scene)._isScene;\r\n const scene = isScene ? (sceneOrOptions as Scene) : (sceneOrOptions as IDynamicTextureOptions)?.scene;\r\n const noMipmap = isScene ? !generateMipMaps : (sceneOrOptions as IDynamicTextureOptions);\r\n\r\n super(null, scene, noMipmap, invertY, samplingMode, undefined, undefined, undefined, undefined, format);\r\n\r\n RegisterEnginesExtensionsEngineDynamicTexture();\r\n\r\n this.name = name;\r\n this.wrapU = Texture.CLAMP_ADDRESSMODE;\r\n this.wrapV = Texture.CLAMP_ADDRESSMODE;\r\n\r\n this._generateMipMaps = generateMipMaps;\r\n\r\n const engine = this._getEngine();\r\n if (!engine) {\r\n return;\r\n }\r\n\r\n if ((canvasOrSize as ICanvas).getContext) {\r\n this._canvas = canvasOrSize as ICanvas;\r\n this._ownCanvas = false;\r\n this._texture = engine.createDynamicTexture(this._canvas.width, this._canvas.height, generateMipMaps, samplingMode);\r\n } else {\r\n this._canvas = engine.createCanvas(1, 1);\r\n this._ownCanvas = true;\r\n\r\n const optionsAsSize = canvasOrSize as ISize;\r\n if (optionsAsSize.width || optionsAsSize.width === 0) {\r\n this._texture = engine.createDynamicTexture(optionsAsSize.width, optionsAsSize.height, generateMipMaps, samplingMode);\r\n } else {\r\n this._texture = engine.createDynamicTexture(canvasOrSize as number, canvasOrSize as number, generateMipMaps, samplingMode);\r\n }\r\n }\r\n\r\n const textureSize = this.getSize();\r\n\r\n if (this._canvas.width !== textureSize.width) {\r\n this._canvas.width = textureSize.width;\r\n }\r\n if (this._canvas.height !== textureSize.height) {\r\n this._canvas.height = textureSize.height;\r\n }\r\n this._context = this._canvas.getContext(\"2d\");\r\n }\r\n\r\n /**\r\n * Get the current class name of the texture useful for serialization or dynamic coding.\r\n * @returns \"DynamicTexture\"\r\n */\r\n public override getClassName(): string {\r\n return \"DynamicTexture\";\r\n }\r\n\r\n /**\r\n * Gets the current state of canRescale\r\n */\r\n public override get canRescale(): boolean {\r\n return true;\r\n }\r\n\r\n private _recreate(textureSize: ISize): void {\r\n this._canvas.width = textureSize.width;\r\n this._canvas.height = textureSize.height;\r\n\r\n this.releaseInternalTexture();\r\n\r\n this._texture = this._getEngine()!.createDynamicTexture(textureSize.width, textureSize.height, this._generateMipMaps, this.samplingMode);\r\n }\r\n\r\n /**\r\n * Scales the texture\r\n * @param ratio the scale factor to apply to both width and height\r\n */\r\n public override scale(ratio: number): void {\r\n const textureSize = this.getSize();\r\n\r\n textureSize.width *= ratio;\r\n textureSize.height *= ratio;\r\n\r\n this._recreate(textureSize);\r\n }\r\n\r\n /**\r\n * Resizes the texture\r\n * @param width the new width\r\n * @param height the new height\r\n */\r\n public scaleTo(width: number, height: number): void {\r\n const textureSize = this.getSize();\r\n\r\n textureSize.width = width;\r\n textureSize.height = height;\r\n\r\n this._recreate(textureSize);\r\n }\r\n\r\n /**\r\n * Gets the context of the canvas used by the texture\r\n * @returns the canvas context of the dynamic texture\r\n */\r\n public getContext(): ICanvasRenderingContext {\r\n return this._context;\r\n }\r\n\r\n /**\r\n * Clears the texture\r\n * @param clearColor Defines the clear color to use\r\n */\r\n public clear(clearColor?: string): void {\r\n const size = this.getSize();\r\n if (clearColor) {\r\n this._context.fillStyle = clearColor;\r\n }\r\n this._context.clearRect(0, 0, size.width, size.height);\r\n }\r\n\r\n /**\r\n * Updates the texture\r\n * @param invertY defines the direction for the Y axis (default is true - y increases downwards)\r\n * @param premulAlpha defines if alpha is stored as premultiplied (default is false)\r\n * @param allowGPUOptimization true to allow some specific GPU optimizations (subject to engine feature \"allowGPUOptimizationsForGUI\" being true)\r\n */\r\n public update(invertY?: boolean, premulAlpha = false, allowGPUOptimization = false): void {\r\n // When disposed, this._texture will be null.\r\n if (!this._texture) {\r\n return;\r\n }\r\n\r\n this._getEngine()!.updateDynamicTexture(\r\n this._texture,\r\n this._canvas,\r\n invertY === undefined ? true : invertY,\r\n premulAlpha,\r\n this._format || undefined,\r\n undefined,\r\n allowGPUOptimization\r\n );\r\n }\r\n\r\n /**\r\n * Draws text onto the texture\r\n * @param text defines the text to be drawn\r\n * @param x defines the placement of the text from the left\r\n * @param y defines the placement of the text from the top when invertY is true and from the bottom when false\r\n * @param font defines the font to be used with font-style, font-size, font-name\r\n * @param color defines the color used for the text\r\n * @param fillColor defines the color for the canvas, use null to not overwrite canvas (this blends with the background to replace, use the clear function)\r\n * @param invertY defines the direction for the Y axis (default is true - y increases downwards)\r\n * @param update defines whether texture is immediately update (default is true)\r\n */\r\n public drawText(\r\n text: string,\r\n x: number | null | undefined,\r\n y: number | null | undefined,\r\n font: string,\r\n color: string | null,\r\n fillColor: string | null,\r\n invertY?: boolean,\r\n update = true\r\n ) {\r\n const size = this.getSize();\r\n if (fillColor) {\r\n this._context.fillStyle = fillColor;\r\n this._context.fillRect(0, 0, size.width, size.height);\r\n }\r\n\r\n this._context.font = font;\r\n if (x === null || x === undefined) {\r\n const textSize = this._context.measureText(text);\r\n x = (size.width - textSize.width) / 2;\r\n }\r\n if (y === null || y === undefined) {\r\n const fontSize = parseInt(font.replace(/\\D/g, \"\"));\r\n y = size.height / 2 + fontSize / 3.65;\r\n }\r\n\r\n this._context.fillStyle = color || \"\";\r\n this._context.fillText(text, x, y);\r\n\r\n if (update) {\r\n this.update(invertY);\r\n }\r\n }\r\n\r\n /**\r\n * Disposes the dynamic texture.\r\n */\r\n public override dispose(): void {\r\n super.dispose();\r\n\r\n if (this._ownCanvas) {\r\n this._canvas?.remove?.();\r\n }\r\n (this._canvas as any) = null;\r\n (this._context as any) = null;\r\n }\r\n\r\n /**\r\n * Clones the texture\r\n * @returns the clone of the texture.\r\n */\r\n public override clone(): DynamicTexture {\r\n const scene = this.getScene();\r\n\r\n if (!scene) {\r\n return this;\r\n }\r\n\r\n const textureSize = this.getSize();\r\n const newTexture = new DynamicTexture(this.name, textureSize, scene, this._generateMipMaps);\r\n\r\n // Base texture\r\n newTexture.hasAlpha = this.hasAlpha;\r\n newTexture.level = this.level;\r\n\r\n // Dynamic Texture\r\n newTexture.wrapU = this.wrapU;\r\n newTexture.wrapV = this.wrapV;\r\n\r\n return newTexture;\r\n }\r\n\r\n /**\r\n * Serializes the dynamic texture. The scene should be ready before the dynamic texture is serialized\r\n * @returns a serialized dynamic texture object\r\n */\r\n public override serialize(): any {\r\n const scene = this.getScene();\r\n if (scene && !scene.isReady()) {\r\n Logger.Warn(\"The scene must be ready before serializing the dynamic texture\");\r\n }\r\n\r\n const serializationObject = super.serialize();\r\n if (DynamicTexture._IsCanvasElement(this._canvas)) {\r\n serializationObject.base64String = this._canvas.toDataURL();\r\n }\r\n\r\n serializationObject.invertY = this._invertY;\r\n serializationObject.samplingMode = this.samplingMode;\r\n\r\n return serializationObject;\r\n }\r\n\r\n private static _IsCanvasElement(canvas: HTMLCanvasElement | OffscreenCanvas | ICanvas): canvas is HTMLCanvasElement {\r\n return (canvas as HTMLCanvasElement).toDataURL !== undefined;\r\n }\r\n\r\n /** @internal */\r\n public override _rebuild(): void {\r\n this.update();\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"htmlElementTexture.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Textures/htmlElementTexture.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC
|
|
1
|
+
{"version":3,"file":"htmlElementTexture.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Textures/htmlElementTexture.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC","sourcesContent":["export * from \"./htmlElementTexture.pure\";\n"]}
|
|
@@ -3,6 +3,8 @@ import { BaseTexture } from "../../Materials/Textures/baseTexture.pure.js";
|
|
|
3
3
|
|
|
4
4
|
import { Matrix } from "../../Maths/math.vector.pure.js";
|
|
5
5
|
import { Observable } from "../../Misc/observable.pure.js";
|
|
6
|
+
import { RegisterEnginesExtensionsEngineDynamicTexture } from "../../Engines/Extensions/engine.dynamicTexture.pure.js";
|
|
7
|
+
import { RegisterEnginesExtensionsEngineVideoTexture } from "../../Engines/Extensions/engine.videoTexture.pure.js";
|
|
6
8
|
/**
|
|
7
9
|
* This represents the smallest workload to use an already existing element (Canvas or Video) as a texture.
|
|
8
10
|
* To be as efficient as possible depending on your constraints nothing aside the first upload
|
|
@@ -26,6 +28,8 @@ export class HtmlElementTexture extends BaseTexture {
|
|
|
26
28
|
* Observable triggered once the texture has been loaded.
|
|
27
29
|
*/
|
|
28
30
|
this.onLoadObservable = new Observable();
|
|
31
|
+
RegisterEnginesExtensionsEngineDynamicTexture();
|
|
32
|
+
RegisterEnginesExtensionsEngineVideoTexture();
|
|
29
33
|
if (!element || (!options.engine && !options.scene)) {
|
|
30
34
|
return;
|
|
31
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"htmlElementTexture.pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Textures/htmlElementTexture.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { type Nullable } from \"../../types\";\r\nimport { BaseTexture } from \"../../Materials/Textures/baseTexture.pure\";\r\nimport { Constants } from \"../../Engines/constants\";\r\nimport { Matrix } from \"../../Maths/math.vector.pure\";\r\nimport { Observable } from \"../../Misc/observable.pure\";\r\nimport { type ExternalTexture } from \"./externalTexture\";\r\n\r\nimport { type AbstractEngine } from \"../../Engines/abstractEngine.pure\";\r\nimport { type Scene } from \"../../scene.pure\";\r\nimport { type WebGPUEngine } from \"core/Engines/webgpuEngine.pure\";\r\n\r\n/**\r\n * Defines the options related to the creation of an HtmlElementTexture\r\n */\r\nexport interface IHtmlElementTextureOptions {\r\n /**\r\n * Defines whether mip maps should be created or not.\r\n */\r\n generateMipMaps?: boolean;\r\n /**\r\n * Defines the sampling mode of the texture.\r\n */\r\n samplingMode?: number;\r\n /**\r\n * Defines the associated texture format.\r\n */\r\n format?: number;\r\n /**\r\n * Defines the engine instance to use the texture with. It is not mandatory if you define a scene.\r\n */\r\n engine: Nullable<AbstractEngine>;\r\n /**\r\n * Defines the scene the texture belongs to. It is not mandatory if you define an engine.\r\n */\r\n scene: Nullable<Scene>;\r\n}\r\n\r\n/**\r\n * This represents the smallest workload to use an already existing element (Canvas or Video) as a texture.\r\n * To be as efficient as possible depending on your constraints nothing aside the first upload\r\n * is automatically managed.\r\n * It is a cheap VideoTexture or DynamicTexture if you prefer to keep full control of the elements\r\n * in your application.\r\n *\r\n * As the update is not automatic, you need to call them manually.\r\n */\r\nexport class HtmlElementTexture extends BaseTexture {\r\n /**\r\n * The texture URL.\r\n */\r\n public element: HTMLVideoElement | HTMLCanvasElement;\r\n\r\n /**\r\n * Observable triggered once the texture has been loaded.\r\n */\r\n public onLoadObservable: Observable<HtmlElementTexture> = new Observable<HtmlElementTexture>();\r\n\r\n private static readonly _DefaultOptions: IHtmlElementTextureOptions = {\r\n generateMipMaps: false,\r\n samplingMode: Constants.TEXTURE_BILINEAR_SAMPLINGMODE,\r\n format: Constants.TEXTUREFORMAT_RGBA,\r\n engine: null,\r\n scene: null,\r\n };\r\n\r\n private readonly _format: number;\r\n private _textureMatrix: Matrix;\r\n private _isVideo: boolean;\r\n private _generateMipMaps: boolean;\r\n private _samplingMode: number;\r\n private _externalTexture: Nullable<ExternalTexture>;\r\n\r\n /**\r\n * Instantiates a HtmlElementTexture from the following parameters.\r\n *\r\n * @param name Defines the name of the texture\r\n * @param element Defines the video or canvas the texture is filled with\r\n * @param options Defines the other none mandatory texture creation options\r\n */\r\n constructor(name: string, element: HTMLVideoElement | HTMLCanvasElement, options: IHtmlElementTextureOptions) {\r\n super(options.scene || options.engine);\r\n\r\n if (!element || (!options.engine && !options.scene)) {\r\n return;\r\n }\r\n\r\n options = {\r\n ...HtmlElementTexture._DefaultOptions,\r\n ...options,\r\n };\r\n\r\n this._generateMipMaps = options.generateMipMaps!;\r\n this._samplingMode = options.samplingMode!;\r\n this._textureMatrix = Matrix.Identity();\r\n this._format = options.format!;\r\n\r\n this.name = name;\r\n this.element = element;\r\n this._isVideo = !!(element as HTMLVideoElement).getVideoPlaybackQuality;\r\n\r\n if (this._isVideo) {\r\n const engineWebGPU = this._engine as Nullable<WebGPUEngine>;\r\n const createExternalTexture = engineWebGPU?.createExternalTexture;\r\n if (createExternalTexture) {\r\n this._externalTexture = createExternalTexture.call(engineWebGPU, element as HTMLVideoElement);\r\n }\r\n }\r\n\r\n this.anisotropicFilteringLevel = 1;\r\n\r\n this._createInternalTexture();\r\n }\r\n\r\n private _createInternalTexture(): void {\r\n let width: number;\r\n let height: number;\r\n if (this._isVideo) {\r\n width = (this.element as HTMLVideoElement).videoWidth;\r\n height = (this.element as HTMLVideoElement).videoHeight;\r\n } else {\r\n width = this.element.width;\r\n height = this.element.height;\r\n }\r\n\r\n const engine = this._getEngine();\r\n if (engine) {\r\n this._texture = engine.createDynamicTexture(width, height, this._generateMipMaps, this._samplingMode);\r\n this._texture.format = this._format;\r\n }\r\n\r\n this.update();\r\n }\r\n\r\n /**\r\n * @returns the texture matrix used in most of the material.\r\n */\r\n public override getTextureMatrix(): Matrix {\r\n return this._textureMatrix;\r\n }\r\n\r\n /**\r\n * Updates the content of the texture.\r\n * @param invertY Defines whether the texture should be inverted on Y (false by default on video and true on canvas)\r\n */\r\n public update(invertY: Nullable<boolean> = null): void {\r\n const engine = this._getEngine();\r\n if (this._texture == null || engine == null) {\r\n return;\r\n }\r\n\r\n const wasReady = this.isReady();\r\n if (this._isVideo) {\r\n const videoElement = this.element as HTMLVideoElement;\r\n if (videoElement.readyState < videoElement.HAVE_CURRENT_DATA) {\r\n return;\r\n }\r\n\r\n engine.updateVideoTexture(this._texture, this._externalTexture ? this._externalTexture : videoElement, invertY === null ? true : invertY);\r\n } else {\r\n const canvasElement = this.element as HTMLCanvasElement;\r\n engine.updateDynamicTexture(this._texture, canvasElement, invertY === null ? true : invertY, false, this._format);\r\n }\r\n\r\n if (!wasReady && this.isReady()) {\r\n this.onLoadObservable.notifyObservers(this);\r\n }\r\n }\r\n\r\n /**\r\n * Dispose the texture and release its associated resources.\r\n */\r\n public override dispose(): void {\r\n this.onLoadObservable.clear();\r\n super.dispose();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"htmlElementTexture.pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Textures/htmlElementTexture.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { type Nullable } from \"../../types\";\r\nimport { BaseTexture } from \"../../Materials/Textures/baseTexture.pure\";\r\nimport { Constants } from \"../../Engines/constants\";\r\nimport { Matrix } from \"../../Maths/math.vector.pure\";\r\nimport { Observable } from \"../../Misc/observable.pure\";\r\nimport { type ExternalTexture } from \"./externalTexture\";\r\n\r\nimport { type AbstractEngine } from \"../../Engines/abstractEngine.pure\";\r\nimport { type Scene } from \"../../scene.pure\";\r\nimport { type WebGPUEngine } from \"core/Engines/webgpuEngine.pure\";\r\nimport { RegisterEnginesExtensionsEngineDynamicTexture } from \"../../Engines/Extensions/engine.dynamicTexture.pure\";\r\nimport { RegisterEnginesExtensionsEngineVideoTexture } from \"../../Engines/Extensions/engine.videoTexture.pure\";\r\n\r\n/**\r\n * Defines the options related to the creation of an HtmlElementTexture\r\n */\r\nexport interface IHtmlElementTextureOptions {\r\n /**\r\n * Defines whether mip maps should be created or not.\r\n */\r\n generateMipMaps?: boolean;\r\n /**\r\n * Defines the sampling mode of the texture.\r\n */\r\n samplingMode?: number;\r\n /**\r\n * Defines the associated texture format.\r\n */\r\n format?: number;\r\n /**\r\n * Defines the engine instance to use the texture with. It is not mandatory if you define a scene.\r\n */\r\n engine: Nullable<AbstractEngine>;\r\n /**\r\n * Defines the scene the texture belongs to. It is not mandatory if you define an engine.\r\n */\r\n scene: Nullable<Scene>;\r\n}\r\n\r\n/**\r\n * This represents the smallest workload to use an already existing element (Canvas or Video) as a texture.\r\n * To be as efficient as possible depending on your constraints nothing aside the first upload\r\n * is automatically managed.\r\n * It is a cheap VideoTexture or DynamicTexture if you prefer to keep full control of the elements\r\n * in your application.\r\n *\r\n * As the update is not automatic, you need to call them manually.\r\n */\r\nexport class HtmlElementTexture extends BaseTexture {\r\n /**\r\n * The texture URL.\r\n */\r\n public element: HTMLVideoElement | HTMLCanvasElement;\r\n\r\n /**\r\n * Observable triggered once the texture has been loaded.\r\n */\r\n public onLoadObservable: Observable<HtmlElementTexture> = new Observable<HtmlElementTexture>();\r\n\r\n private static readonly _DefaultOptions: IHtmlElementTextureOptions = {\r\n generateMipMaps: false,\r\n samplingMode: Constants.TEXTURE_BILINEAR_SAMPLINGMODE,\r\n format: Constants.TEXTUREFORMAT_RGBA,\r\n engine: null,\r\n scene: null,\r\n };\r\n\r\n private readonly _format: number;\r\n private _textureMatrix: Matrix;\r\n private _isVideo: boolean;\r\n private _generateMipMaps: boolean;\r\n private _samplingMode: number;\r\n private _externalTexture: Nullable<ExternalTexture>;\r\n\r\n /**\r\n * Instantiates a HtmlElementTexture from the following parameters.\r\n *\r\n * @param name Defines the name of the texture\r\n * @param element Defines the video or canvas the texture is filled with\r\n * @param options Defines the other none mandatory texture creation options\r\n */\r\n constructor(name: string, element: HTMLVideoElement | HTMLCanvasElement, options: IHtmlElementTextureOptions) {\r\n super(options.scene || options.engine);\r\n\r\n RegisterEnginesExtensionsEngineDynamicTexture();\r\n RegisterEnginesExtensionsEngineVideoTexture();\r\n\r\n if (!element || (!options.engine && !options.scene)) {\r\n return;\r\n }\r\n\r\n options = {\r\n ...HtmlElementTexture._DefaultOptions,\r\n ...options,\r\n };\r\n\r\n this._generateMipMaps = options.generateMipMaps!;\r\n this._samplingMode = options.samplingMode!;\r\n this._textureMatrix = Matrix.Identity();\r\n this._format = options.format!;\r\n\r\n this.name = name;\r\n this.element = element;\r\n this._isVideo = !!(element as HTMLVideoElement).getVideoPlaybackQuality;\r\n\r\n if (this._isVideo) {\r\n const engineWebGPU = this._engine as Nullable<WebGPUEngine>;\r\n const createExternalTexture = engineWebGPU?.createExternalTexture;\r\n if (createExternalTexture) {\r\n this._externalTexture = createExternalTexture.call(engineWebGPU, element as HTMLVideoElement);\r\n }\r\n }\r\n\r\n this.anisotropicFilteringLevel = 1;\r\n\r\n this._createInternalTexture();\r\n }\r\n\r\n private _createInternalTexture(): void {\r\n let width: number;\r\n let height: number;\r\n if (this._isVideo) {\r\n width = (this.element as HTMLVideoElement).videoWidth;\r\n height = (this.element as HTMLVideoElement).videoHeight;\r\n } else {\r\n width = this.element.width;\r\n height = this.element.height;\r\n }\r\n\r\n const engine = this._getEngine();\r\n if (engine) {\r\n this._texture = engine.createDynamicTexture(width, height, this._generateMipMaps, this._samplingMode);\r\n this._texture.format = this._format;\r\n }\r\n\r\n this.update();\r\n }\r\n\r\n /**\r\n * @returns the texture matrix used in most of the material.\r\n */\r\n public override getTextureMatrix(): Matrix {\r\n return this._textureMatrix;\r\n }\r\n\r\n /**\r\n * Updates the content of the texture.\r\n * @param invertY Defines whether the texture should be inverted on Y (false by default on video and true on canvas)\r\n */\r\n public update(invertY: Nullable<boolean> = null): void {\r\n const engine = this._getEngine();\r\n if (this._texture == null || engine == null) {\r\n return;\r\n }\r\n\r\n const wasReady = this.isReady();\r\n if (this._isVideo) {\r\n const videoElement = this.element as HTMLVideoElement;\r\n if (videoElement.readyState < videoElement.HAVE_CURRENT_DATA) {\r\n return;\r\n }\r\n\r\n engine.updateVideoTexture(this._texture, this._externalTexture ? this._externalTexture : videoElement, invertY === null ? true : invertY);\r\n } else {\r\n const canvasElement = this.element as HTMLCanvasElement;\r\n engine.updateDynamicTexture(this._texture, canvasElement, invertY === null ? true : invertY, false, this._format);\r\n }\r\n\r\n if (!wasReady && this.isReady()) {\r\n this.onLoadObservable.notifyObservers(this);\r\n }\r\n }\r\n\r\n /**\r\n * Dispose the texture and release its associated resources.\r\n */\r\n public override dispose(): void {\r\n this.onLoadObservable.clear();\r\n super.dispose();\r\n }\r\n}\r\n"]}
|
|
@@ -10,6 +10,7 @@ export * from "./envCubeTexture.js";
|
|
|
10
10
|
export * from "./hdrCubeTexture.js";
|
|
11
11
|
export * from "./exrCubeTexture.js";
|
|
12
12
|
export * from "./htmlElementTexture.js";
|
|
13
|
+
export * from "./HTML/index.js";
|
|
13
14
|
export * from "./internalTexture.js";
|
|
14
15
|
export * from "./Loaders/index.js";
|
|
15
16
|
export * from "./mirrorTexture.js";
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-restricted-imports */
|
|
2
2
|
export * from "./baseTexture.js";
|
|
3
|
-
// eslint-disable-next-line import/export
|
|
4
3
|
export * from "./baseTexture.polynomial.js";
|
|
5
4
|
export * from "./colorGradingTexture.js";
|
|
6
5
|
export * from "./cubeTexture.js";
|
|
@@ -12,6 +11,7 @@ export * from "./envCubeTexture.js";
|
|
|
12
11
|
export * from "./hdrCubeTexture.js";
|
|
13
12
|
export * from "./exrCubeTexture.js";
|
|
14
13
|
export * from "./htmlElementTexture.js";
|
|
14
|
+
export * from "./HTML/index.js";
|
|
15
15
|
export * from "./internalTexture.js";
|
|
16
16
|
export * from "./Loaders/index.js";
|
|
17
17
|
export * from "./mirrorTexture.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Textures/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Textures/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,eAAe,CAAC;AAE9B,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AAEzC,kCAAkC;AAClC,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAEhD,gBAAgB;AAChB,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,uCAAuC,CAAC;AACtD,cAAc,yCAAyC,CAAC;AACxD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,iDAAiD,CAAC;AAChE,cAAc,mDAAmD,CAAC;AAElE,8DAA8D;AAC9D,cAAc,qDAAqD,CAAC;AACpE,cAAc,mDAAmD,CAAC;AAClE,cAAc,wDAAwD,CAAC;AACvE,cAAc,iDAAiD,CAAC;AAChE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,oDAAoD,CAAC;AAEnE,oEAAoE;AACpE,cAAc,6DAA6D,CAAC;AAC5E,cAAc,wDAAwD,CAAC;AACvE,cAAc,qDAAqD,CAAC;AACpE,cAAc,yDAAyD,CAAC;AACxE,cAAc,oDAAoD,CAAC;AACnE,cAAc,iDAAiD,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./baseTexture\";\r\n\r\nexport * from \"./baseTexture.polynomial\";\r\nexport * from \"./colorGradingTexture\";\r\nexport * from \"./cubeTexture\";\r\nexport * from \"./dynamicTexture\";\r\nexport * from \"./equiRectangularCubeTexture\";\r\nexport * from \"./externalTexture\";\r\nexport * from \"./Filtering/hdrFiltering\";\r\nexport * from \"./envCubeTexture\";\r\nexport * from \"./hdrCubeTexture\";\r\nexport * from \"./exrCubeTexture\";\r\nexport * from \"./htmlElementTexture\";\r\nexport * from \"./HTML/index\";\r\nexport * from \"./internalTexture\";\r\nexport * from \"./Loaders/index\";\r\nexport * from \"./mirrorTexture\";\r\nexport * from \"./multiRenderTarget\";\r\nexport * from \"./Packer/index\";\r\nexport * from \"./Procedurals/index\";\r\nexport * from \"./rawCubeTexture\";\r\nexport * from \"./rawTexture\";\r\nexport * from \"./rawTexture2DArray\";\r\nexport * from \"./rawTexture3D\";\r\nexport * from \"./refractionTexture\";\r\nexport * from \"./renderTargetTexture\";\r\nexport * from \"./reflectionProbeTexture\";\r\nexport * from \"./textureMerger\";\r\nexport * from \"./textureSampler\";\r\nexport * from \"./textureProcessor\";\r\nexport * from \"./texture\";\r\nexport * from \"./thinTexture\";\r\nexport * from \"./thinRenderTargetTexture\";\r\nexport * from \"./videoTexture\";\r\nexport * from \"./ktx2decoderTypes\";\r\nexport * from \"./textureCreationOptions\";\r\n\r\n// Shaders for procedural textures\r\nexport * from \"../../ShadersWGSL/procedural.vertex\";\r\nexport * from \"../../Shaders/procedural.vertex\";\r\n\r\n// HDR filtering\r\nexport * from \"../../Shaders/hdrFiltering.vertex\";\r\nexport * from \"../../Shaders/hdrFiltering.fragment\";\r\nexport * from \"../../ShadersWGSL/hdrFiltering.vertex\";\r\nexport * from \"../../ShadersWGSL/hdrFiltering.fragment\";\r\nexport * from \"../../Shaders/hdrIrradianceFiltering.vertex\";\r\nexport * from \"../../Shaders/hdrIrradianceFiltering.fragment\";\r\nexport * from \"../../ShadersWGSL/hdrIrradianceFiltering.vertex\";\r\nexport * from \"../../ShadersWGSL/hdrIrradianceFiltering.fragment\";\r\n\r\n// HDR filtering shader includes (needed by external packages)\r\nexport * from \"../../ShadersWGSL/ShadersInclude/importanceSampling\";\r\nexport * from \"../../ShadersWGSL/ShadersInclude/pbrBRDFFunctions\";\r\nexport * from \"../../ShadersWGSL/ShadersInclude/hdrFilteringFunctions\";\r\nexport * from \"../../Shaders/ShadersInclude/importanceSampling\";\r\nexport * from \"../../Shaders/ShadersInclude/pbrBRDFFunctions\";\r\nexport * from \"../../Shaders/ShadersInclude/hdrFilteringFunctions\";\r\n\r\n// Intersection & LTC helper functions (needed by external packages)\r\nexport * from \"../../ShadersWGSL/ShadersInclude/clusteredLightingFunctions\";\r\nexport * from \"../../ShadersWGSL/ShadersInclude/intersectionFunctions\";\r\nexport * from \"../../ShadersWGSL/ShadersInclude/ltcHelperFunctions\";\r\nexport * from \"../../Shaders/ShadersInclude/clusteredLightingFunctions\";\r\nexport * from \"../../Shaders/ShadersInclude/intersectionFunctions\";\r\nexport * from \"../../Shaders/ShadersInclude/ltcHelperFunctions\";\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multiRenderTarget.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Textures/multiRenderTarget.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC
|
|
1
|
+
{"version":3,"file":"multiRenderTarget.js","sourceRoot":"","sources":["../../../../../dev/core/src/Materials/Textures/multiRenderTarget.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC","sourcesContent":["export * from \"./multiRenderTarget.pure\";\n"]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { Texture } from "../../Materials/Textures/texture.pure.js";
|
|
3
3
|
import { RenderTargetTexture } from "../../Materials/Textures/renderTargetTexture.pure.js";
|
|
4
4
|
|
|
5
|
+
import { RegisterEnginesExtensionsEngineMultiRender } from "../../Engines/Extensions/engine.multiRender.pure.js";
|
|
5
6
|
/**
|
|
6
7
|
* A multi render target, like a render target provides the ability to render to a texture.
|
|
7
8
|
* Unlike the render target, it can render to several draw buffers (render textures) in one draw.
|
|
@@ -75,6 +76,7 @@ export class MultiRenderTarget extends RenderTargetTexture {
|
|
|
75
76
|
const doNotChangeAspectRatio = !options || options.doNotChangeAspectRatio === undefined ? true : options.doNotChangeAspectRatio;
|
|
76
77
|
const drawOnlyOnFirstAttachmentByDefault = options && options.drawOnlyOnFirstAttachmentByDefault ? options.drawOnlyOnFirstAttachmentByDefault : false;
|
|
77
78
|
super(name, size, scene, generateMipMaps, doNotChangeAspectRatio, undefined, undefined, undefined, undefined, undefined, undefined, undefined, true);
|
|
79
|
+
RegisterEnginesExtensionsEngineMultiRender();
|
|
78
80
|
if (!this.isSupported) {
|
|
79
81
|
this.dispose();
|
|
80
82
|
return;
|