@onerjs/core 8.53.5 → 8.53.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Animations/animationGroup.d.ts +0 -1
- package/Animations/animationGroup.js +0 -1
- package/Animations/animationGroup.js.map +1 -1
- package/Animations/animationGroup.pure.js +2 -0
- package/Animations/animationGroup.pure.js.map +1 -1
- package/Animations/runtimeAnimation.js +11 -0
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Audio/audioSceneComponent.pure.js +1 -1
- package/AudioV2/abstractAudio/abstractSound.d.ts +2 -1
- package/AudioV2/abstractAudio/abstractSound.js +7 -2
- package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
- package/AudioV2/abstractAudio/abstractSoundInstance.d.ts +3 -1
- package/AudioV2/abstractAudio/abstractSoundInstance.js.map +1 -1
- package/AudioV2/abstractAudio/staticSound.d.ts +6 -0
- package/AudioV2/abstractAudio/staticSound.js +17 -1
- package/AudioV2/abstractAudio/staticSound.js.map +1 -1
- package/AudioV2/abstractAudio/staticSoundInstance.d.ts +4 -2
- package/AudioV2/abstractAudio/staticSoundInstance.js.map +1 -1
- package/AudioV2/abstractAudio/streamingSound.d.ts +6 -0
- package/AudioV2/abstractAudio/streamingSound.js +9 -1
- package/AudioV2/abstractAudio/streamingSound.js.map +1 -1
- package/AudioV2/webAudio/webAudioStaticSound.d.ts +7 -1
- package/AudioV2/webAudio/webAudioStaticSound.js +56 -8
- package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
- package/AudioV2/webAudio/webAudioStreamingSound.d.ts +3 -1
- package/AudioV2/webAudio/webAudioStreamingSound.js +16 -4
- package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +2 -2
- package/BakedVertexAnimation/bakedVertexAnimationManager.js +151 -121
- package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
- package/Behaviors/Cameras/interpolatingBehavior.d.ts +17 -2
- package/Behaviors/Cameras/interpolatingBehavior.js +53 -23
- package/Behaviors/Cameras/interpolatingBehavior.js.map +1 -1
- package/Bones/bone.pure.js +3 -3
- package/Buffers/buffer.pure.js +0 -12
- package/Buffers/buffer.pure.js.map +1 -1
- package/Cameras/Inputs/BaseCameraMouseWheelInput.js +141 -126
- package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/BaseCameraPointersInput.d.ts +2 -1
- package/Cameras/Inputs/BaseCameraPointersInput.js +290 -277
- package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraGamepadInput.js +115 -102
- package/Cameras/Inputs/arcRotateCameraGamepadInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.d.ts +3 -0
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +334 -273
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +273 -258
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraPointersInput.js +237 -213
- package/Cameras/Inputs/arcRotateCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/flyCameraKeyboardInput.js +199 -168
- package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
- package/Cameras/Inputs/flyCameraMouseInput.js +243 -229
- package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/followCameraKeyboardMoveInput.js +311 -266
- package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/followCameraMouseWheelInput.js +139 -119
- package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/followCameraPointersInput.js +239 -203
- package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraGamepadInput.js +127 -114
- package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +278 -244
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseInput.js +216 -202
- package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseWheelInput.js +368 -353
- package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraTouchInput.js +185 -172
- package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
- package/Cameras/Inputs/geospatialCameraKeyboardInput.d.ts +2 -0
- package/Cameras/Inputs/geospatialCameraKeyboardInput.js +291 -246
- package/Cameras/Inputs/geospatialCameraKeyboardInput.js.map +1 -1
- package/Cameras/Inputs/geospatialCameraPointersInput.d.ts +11 -1
- package/Cameras/Inputs/geospatialCameraPointersInput.js +18 -2
- package/Cameras/Inputs/geospatialCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/orbitCameraPointersInput.js +112 -96
- package/Cameras/Inputs/orbitCameraPointersInput.js.map +1 -1
- package/Cameras/VR/vrExperienceHelper.d.ts +0 -2
- package/Cameras/VR/vrExperienceHelper.js +0 -2
- package/Cameras/VR/vrExperienceHelper.js.map +1 -1
- package/Cameras/VR/vrExperienceHelper.pure.js +5 -0
- package/Cameras/VR/vrExperienceHelper.pure.js.map +1 -1
- package/Cameras/arcRotateCamera.pure.js +1559 -1479
- package/Cameras/arcRotateCamera.pure.js.map +1 -1
- package/Cameras/camera.pure.js +1225 -1178
- package/Cameras/camera.pure.js.map +1 -1
- package/Cameras/flyCamera.pure.js +369 -351
- package/Cameras/flyCamera.pure.js.map +1 -1
- package/Cameras/followCamera.pure.js +229 -192
- package/Cameras/followCamera.pure.js.map +1 -1
- package/Cameras/freeCamera.pure.js +373 -351
- package/Cameras/freeCamera.pure.js.map +1 -1
- package/Cameras/geospatialCamera.pure.d.ts +30 -7
- package/Cameras/geospatialCamera.pure.js +502 -457
- package/Cameras/geospatialCamera.pure.js.map +1 -1
- package/Cameras/geospatialCameraMovement.js +2 -2
- package/Cameras/geospatialCameraMovement.js.map +1 -1
- package/Cameras/targetCamera.pure.d.ts +7 -0
- package/Cameras/targetCamera.pure.js +550 -509
- package/Cameras/targetCamera.pure.js.map +1 -1
- package/Cameras/universalCamera.pure.js +98 -85
- package/Cameras/universalCamera.pure.js.map +1 -1
- package/Collisions/gpuPicker.d.ts +111 -4
- package/Collisions/gpuPicker.js +696 -119
- package/Collisions/gpuPicker.js.map +1 -1
- package/Compute/computeShader.pure.js +372 -355
- package/Compute/computeShader.pure.js.map +1 -1
- package/Culling/Helper/transformFeedbackBoundingHelper.pure.js +2 -2
- package/Decorators/nodeDecorator.d.ts +11 -1
- package/Decorators/nodeDecorator.js +43 -6
- package/Decorators/nodeDecorator.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js +8 -0
- package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js.map +1 -1
- package/Engines/Native/nativeHelpers.js +15 -0
- package/Engines/Native/nativeHelpers.js.map +1 -1
- package/Engines/Native/nativeInterfaces.d.ts +7 -2
- package/Engines/Native/nativeInterfaces.js.map +1 -1
- package/Engines/Native/nativeRenderTargetWrapper.d.ts +5 -0
- package/Engines/Native/nativeRenderTargetWrapper.js +35 -1
- package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
- package/Engines/Processors/shaderProcessor.js +5 -3
- package/Engines/Processors/shaderProcessor.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js +16 -3
- package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js.map +1 -1
- package/Engines/WebGPU/webgpuClearQuad.pure.js +7 -1
- package/Engines/WebGPU/webgpuClearQuad.pure.js.map +1 -1
- package/Engines/abstractEngine.functions.d.ts +8 -2
- package/Engines/abstractEngine.functions.js +12 -4
- package/Engines/abstractEngine.functions.js.map +1 -1
- package/Engines/abstractEngine.pure.d.ts +20 -1
- package/Engines/abstractEngine.pure.js +21 -134
- package/Engines/abstractEngine.pure.js.map +1 -1
- package/Engines/engine.d.ts +208 -0
- package/Engines/engine.pure.js +0 -15
- package/Engines/engine.pure.js.map +1 -1
- package/Engines/nullEngine.pure.d.ts +66 -0
- package/Engines/nullEngine.pure.js +97 -0
- package/Engines/nullEngine.pure.js.map +1 -1
- package/Engines/thinEngine.pure.d.ts +0 -13
- package/Engines/thinEngine.pure.js +4 -23
- package/Engines/thinEngine.pure.js.map +1 -1
- package/Engines/thinNativeEngine.d.ts +0 -1
- package/Engines/thinNativeEngine.js +0 -1
- package/Engines/thinNativeEngine.js.map +1 -1
- package/Engines/thinNativeEngine.pure.d.ts +27 -0
- package/Engines/thinNativeEngine.pure.js +383 -17
- package/Engines/thinNativeEngine.pure.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +1 -0
- package/Engines/webgpuEngine.js +1 -0
- package/Engines/webgpuEngine.js.map +1 -1
- package/Engines/webgpuEngine.pure.d.ts +9 -0
- package/Engines/webgpuEngine.pure.js +7 -0
- package/Engines/webgpuEngine.pure.js.map +1 -1
- package/FlowGraph/flowGraph.js +9 -0
- package/FlowGraph/flowGraph.js.map +1 -1
- package/FlowGraph/flowGraphContext.js +597 -584
- package/FlowGraph/flowGraphContext.js.map +1 -1
- package/FlowGraph/flowGraphDataConnection.pure.d.ts +14 -0
- package/FlowGraph/flowGraphDataConnection.pure.js +38 -1
- package/FlowGraph/flowGraphDataConnection.pure.js.map +1 -1
- package/FlowGraph/serialization.d.ts +11 -0
- package/FlowGraph/serialization.js +11 -1
- package/FlowGraph/serialization.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js +182 -170
- package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js +196 -184
- package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js +222 -210
- package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +123 -111
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js +158 -146
- package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js +63 -51
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js +122 -110
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js +76 -64
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js +89 -77
- package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js +134 -122
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js +58 -46
- package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js +107 -95
- package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js +181 -169
- package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js +63 -51
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js +63 -51
- package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js +76 -64
- package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js +246 -234
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js +108 -96
- package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js +87 -75
- package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js +76 -64
- package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js +313 -301
- package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js +502 -490
- package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js +147 -135
- package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js +90 -78
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js +179 -167
- package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +462 -451
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js +265 -253
- package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js +204 -192
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js +611 -550
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js +320 -308
- package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js +87 -75
- package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js +154 -142
- package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js +150 -138
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/inputBlock.pure.js +270 -256
- package/FrameGraph/Node/Blocks/inputBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js +95 -83
- package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js +715 -693
- package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraphBlock.js +548 -533
- package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.d.ts +2 -2
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js +43 -51
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.d.ts +0 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js +0 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.d.ts +0 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js +66 -35
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js.map +1 -1
- package/Helpers/environmentHelper.js +2 -2
- package/Helpers/environmentHelper.js.map +1 -1
- package/Layers/effectLayer.js +529 -519
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/glowLayer.pure.js +428 -413
- package/Layers/glowLayer.pure.js.map +1 -1
- package/Layers/highlightLayer.pure.js +473 -458
- package/Layers/highlightLayer.pure.js.map +1 -1
- package/Layers/selectionOutlineLayer.pure.js +360 -345
- package/Layers/selectionOutlineLayer.pure.js.map +1 -1
- package/Lights/Clustered/clusteredLightContainer.pure.d.ts +1 -1
- package/Lights/Clustered/clusteredLightContainer.pure.js +583 -558
- package/Lights/Clustered/clusteredLightContainer.pure.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.js +6 -1
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Lights/areaLight.pure.js +61 -39
- package/Lights/areaLight.pure.js.map +1 -1
- package/Lights/directionalLight.pure.js +308 -284
- package/Lights/directionalLight.pure.js.map +1 -1
- package/Lights/hemisphericLight.pure.js +123 -104
- package/Lights/hemisphericLight.pure.js.map +1 -1
- package/Lights/light.d.ts +5 -3
- package/Lights/light.js +869 -827
- package/Lights/light.js.map +1 -1
- package/Lights/pointLight.pure.js +185 -174
- package/Lights/pointLight.pure.js.map +1 -1
- package/Lights/rectAreaLight.pure.d.ts +17 -0
- package/Lights/rectAreaLight.pure.js +238 -159
- package/Lights/rectAreaLight.pure.js.map +1 -1
- package/Lights/shadowLight.js +280 -268
- package/Lights/shadowLight.js.map +1 -1
- package/Lights/spotLight.pure.js +460 -427
- package/Lights/spotLight.pure.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.pure.js +17 -5
- package/Loading/Plugins/babylonFileLoader.pure.js.map +1 -1
- package/Loading/sceneLoader.d.ts +5 -1
- package/Loading/sceneLoader.js +299 -402
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/Background/backgroundMaterial.pure.d.ts +18 -18
- package/Materials/Background/backgroundMaterial.pure.js +949 -794
- package/Materials/Background/backgroundMaterial.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.d.ts +15 -0
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +34 -1
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +9 -0
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +26 -2
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.d.ts +2 -1
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js +169 -149
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.pure.js +442 -429
- package/Materials/Node/Blocks/Dual/lightBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js +396 -383
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js +237 -220
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.pure.js +1 -1
- package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js +150 -133
- package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js +265 -250
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js +159 -142
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js +214 -201
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js +419 -400
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +3 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js +302 -289
- package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js +1327 -1272
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js +352 -337
- package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/refractionBlock.pure.js +297 -277
- package/Materials/Node/Blocks/PBR/refractionBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/sheenBlock.pure.js +146 -131
- package/Materials/Node/Blocks/PBR/sheenBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js +158 -145
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/clampBlock.pure.js +92 -77
- package/Materials/Node/Blocks/clampBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/cloudBlock.pure.js +145 -132
- package/Materials/Node/Blocks/cloudBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/conditionalBlock.pure.js +182 -169
- package/Materials/Node/Blocks/conditionalBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/curveBlock.pure.js +259 -246
- package/Materials/Node/Blocks/curveBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/debugBlock.pure.js +119 -106
- package/Materials/Node/Blocks/debugBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/loopBlock.pure.js +123 -110
- package/Materials/Node/Blocks/loopBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js +185 -172
- package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/remapBlock.pure.js +127 -112
- package/Materials/Node/Blocks/remapBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/transformBlock.pure.js +196 -185
- package/Materials/Node/Blocks/transformBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/triPlanarBlock.pure.js +451 -438
- package/Materials/Node/Blocks/triPlanarBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/trigonometryBlock.pure.js +184 -171
- package/Materials/Node/Blocks/trigonometryBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/waveBlock.pure.js +97 -84
- package/Materials/Node/Blocks/waveBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js +276 -263
- package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js.map +1 -1
- package/Materials/Node/nodeMaterial.pure.js +1765 -1737
- package/Materials/Node/nodeMaterial.pure.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.d.ts +3 -3
- package/Materials/PBR/openpbrMaterial.pure.d.ts +102 -102
- package/Materials/PBR/openpbrMaterial.pure.js +3115 -2243
- package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +3 -3
- package/Materials/PBR/pbrAnisotropicConfiguration.js +255 -227
- package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBRDFConfiguration.d.ts +9 -9
- package/Materials/PBR/pbrBRDFConfiguration.js +203 -155
- package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.pure.d.ts +1 -1
- package/Materials/PBR/pbrBaseMaterial.pure.js +1751 -1736
- package/Materials/PBR/pbrBaseMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +13 -13
- package/Materials/PBR/pbrBaseSimpleMaterial.js +205 -117
- package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
- package/Materials/PBR/pbrClearCoatConfiguration.d.ts +9 -9
- package/Materials/PBR/pbrClearCoatConfiguration.js +464 -406
- package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
- package/Materials/PBR/pbrIridescenceConfiguration.d.ts +3 -3
- package/Materials/PBR/pbrIridescenceConfiguration.js +271 -239
- package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
- package/Materials/PBR/pbrMaterial.pure.d.ts +66 -66
- package/Materials/PBR/pbrMaterial.pure.js +1041 -685
- package/Materials/PBR/pbrMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.d.ts +5 -5
- package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js +176 -115
- package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrSheenConfiguration.d.ts +7 -7
- package/Materials/PBR/pbrSheenConfiguration.js +314 -270
- package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.d.ts +5 -5
- package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js +172 -117
- package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +16 -16
- package/Materials/PBR/pbrSubSurfaceConfiguration.js +864 -764
- package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
- package/Materials/Textures/HTML/htmlInCanvasPolyfill.d.ts +43 -0
- package/Materials/Textures/HTML/htmlInCanvasPolyfill.js +64 -0
- package/Materials/Textures/HTML/htmlInCanvasPolyfill.js.map +1 -0
- package/Materials/Textures/HTML/htmlInteractionManager.d.ts +69 -0
- package/Materials/Textures/HTML/htmlInteractionManager.js +130 -0
- package/Materials/Textures/HTML/htmlInteractionManager.js.map +1 -0
- package/Materials/Textures/HTML/htmlRaycastInteractionManager.d.ts +84 -0
- package/Materials/Textures/HTML/htmlRaycastInteractionManager.js +246 -0
- package/Materials/Textures/HTML/htmlRaycastInteractionManager.js.map +1 -0
- package/Materials/Textures/HTML/htmlTexture.d.ts +148 -0
- package/Materials/Textures/HTML/htmlTexture.js +455 -0
- package/Materials/Textures/HTML/htmlTexture.js.map +1 -0
- package/Materials/Textures/HTML/index.d.ts +4 -0
- package/Materials/Textures/HTML/index.js +5 -0
- package/Materials/Textures/HTML/index.js.map +1 -0
- package/Materials/Textures/HTML/pure.d.ts +5 -0
- package/Materials/Textures/HTML/pure.js +6 -0
- package/Materials/Textures/HTML/pure.js.map +1 -0
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js +671 -643
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
- package/Materials/Textures/baseTexture.pure.js +880 -825
- package/Materials/Textures/baseTexture.pure.js.map +1 -1
- package/Materials/Textures/cubeTexture.d.ts +0 -1
- package/Materials/Textures/cubeTexture.js +0 -1
- package/Materials/Textures/cubeTexture.js.map +1 -1
- package/Materials/Textures/cubeTexture.pure.js +368 -333
- package/Materials/Textures/cubeTexture.pure.js.map +1 -1
- package/Materials/Textures/dynamicTexture.d.ts +0 -1
- package/Materials/Textures/dynamicTexture.js +0 -1
- package/Materials/Textures/dynamicTexture.js.map +1 -1
- package/Materials/Textures/dynamicTexture.pure.js +2 -0
- package/Materials/Textures/dynamicTexture.pure.js.map +1 -1
- package/Materials/Textures/htmlElementTexture.d.ts +0 -2
- package/Materials/Textures/htmlElementTexture.js +0 -2
- package/Materials/Textures/htmlElementTexture.js.map +1 -1
- package/Materials/Textures/htmlElementTexture.pure.js +4 -0
- package/Materials/Textures/htmlElementTexture.pure.js.map +1 -1
- package/Materials/Textures/index.d.ts +1 -0
- package/Materials/Textures/index.js +1 -1
- package/Materials/Textures/index.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.d.ts +0 -1
- package/Materials/Textures/multiRenderTarget.js +0 -1
- package/Materials/Textures/multiRenderTarget.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.pure.js +2 -0
- package/Materials/Textures/multiRenderTarget.pure.js.map +1 -1
- package/Materials/Textures/pure.d.ts +1 -0
- package/Materials/Textures/pure.js +1 -0
- package/Materials/Textures/pure.js.map +1 -1
- package/Materials/Textures/texture.pure.js +961 -923
- package/Materials/Textures/texture.pure.js.map +1 -1
- package/Materials/Textures/videoTexture.pure.d.ts +3 -0
- package/Materials/Textures/videoTexture.pure.js +450 -401
- package/Materials/Textures/videoTexture.pure.js.map +1 -1
- package/Materials/colorCurves.pure.js +510 -477
- package/Materials/colorCurves.pure.js.map +1 -1
- package/Materials/effect.pure.js +0 -7
- package/Materials/effect.pure.js.map +1 -1
- package/Materials/imageProcessing.js +12 -4
- package/Materials/imageProcessing.js.map +1 -1
- package/Materials/imageProcessingConfiguration.pure.js +647 -587
- package/Materials/imageProcessingConfiguration.pure.js.map +1 -1
- package/Materials/material.decalMapConfiguration.pure.d.ts +2 -2
- package/Materials/material.decalMapConfiguration.pure.js +149 -130
- package/Materials/material.decalMapConfiguration.pure.js.map +1 -1
- package/Materials/material.detailMapConfiguration.d.ts +3 -3
- package/Materials/material.detailMapConfiguration.js +213 -175
- package/Materials/material.detailMapConfiguration.js.map +1 -1
- package/Materials/material.pure.js +1815 -1721
- package/Materials/material.pure.js.map +1 -1
- package/Materials/materialPluginBase.pure.js +270 -249
- package/Materials/materialPluginBase.pure.js.map +1 -1
- package/Materials/materialPluginManager.pure.js +18 -8
- package/Materials/materialPluginManager.pure.js.map +1 -1
- package/Materials/materialStencilState.js +211 -200
- package/Materials/materialStencilState.js.map +1 -1
- package/Materials/meshDebugPluginMaterial.pure.d.ts +2 -2
- package/Materials/meshDebugPluginMaterial.pure.js +397 -275
- package/Materials/meshDebugPluginMaterial.pure.js.map +1 -1
- package/Materials/standardMaterial.pure.d.ts +32 -32
- package/Materials/standardMaterial.pure.js +1804 -1394
- package/Materials/standardMaterial.pure.js.map +1 -1
- package/Maths/math.color.pure.js +5 -5
- package/Maths/math.functions.js +38 -30
- package/Maths/math.functions.js.map +1 -1
- package/Maths/math.vector.pure.js +25 -25
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +18 -8
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +86 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +255 -104
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.d.ts +39 -0
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js +322 -0
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js.map +1 -0
- package/Meshes/GreasedLine/greasedLineMesh.pure.js +4 -4
- package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js +3 -3
- package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js +107 -94
- package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js +276 -263
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js +247 -232
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js +299 -284
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js +196 -181
- package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/latticeBlock.pure.js +198 -179
- package/Meshes/Node/Blocks/Set/latticeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js +151 -138
- package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js +107 -94
- package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js +138 -125
- package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js +213 -200
- package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js +138 -125
- package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js +179 -164
- package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/boxBlock.pure.js +183 -170
- package/Meshes/Node/Blocks/Sources/boxBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js +125 -112
- package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js +153 -140
- package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/discBlock.pure.js +112 -99
- package/Meshes/Node/Blocks/Sources/discBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/gridBlock.pure.js +133 -120
- package/Meshes/Node/Blocks/Sources/gridBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js +128 -115
- package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/meshBlock.pure.js +116 -103
- package/Meshes/Node/Blocks/Sources/meshBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/planeBlock.pure.js +160 -147
- package/Meshes/Node/Blocks/Sources/planeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js +144 -131
- package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/torusBlock.pure.js +112 -99
- package/Meshes/Node/Blocks/Sources/torusBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js +200 -185
- package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/bevelBlock.pure.js +111 -98
- package/Meshes/Node/Blocks/bevelBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js +182 -165
- package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js +89 -76
- package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/conditionBlock.pure.js +184 -169
- package/Meshes/Node/Blocks/conditionBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js +270 -255
- package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js +172 -159
- package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryCurveBlock.pure.js +230 -217
- package/Meshes/Node/Blocks/geometryCurveBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryEaseBlock.pure.js +256 -245
- package/Meshes/Node/Blocks/geometryEaseBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js +206 -189
- package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryTransformBlock.pure.js +166 -153
- package/Meshes/Node/Blocks/geometryTransformBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js +221 -208
- package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/mappingBlock.pure.js +150 -137
- package/Meshes/Node/Blocks/mappingBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/mathBlock.pure.js +269 -256
- package/Meshes/Node/Blocks/mathBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js +141 -128
- package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/randomBlock.pure.js +161 -148
- package/Meshes/Node/Blocks/randomBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/subdivideBlock.pure.js +102 -87
- package/Meshes/Node/Blocks/subdivideBlock.pure.js.map +1 -1
- package/Meshes/Node/nodeGeometry.js +560 -538
- package/Meshes/Node/nodeGeometry.js.map +1 -1
- package/Meshes/Node/nodeGeometryBlock.js +473 -458
- package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
- package/Meshes/abstractMesh.pure.js +2218 -2207
- package/Meshes/abstractMesh.pure.js.map +1 -1
- package/Meshes/geometry.js +30 -15
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/mesh.pure.js +26 -14
- package/Meshes/mesh.pure.js.map +1 -1
- package/Meshes/mesh.vertexData.js +1665 -1655
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Meshes/transformNode.pure.js +1400 -1372
- package/Meshes/transformNode.pure.js.map +1 -1
- package/Misc/decorators.d.ts +34 -19
- package/Misc/decorators.functions.d.ts +33 -2
- package/Misc/decorators.functions.js +114 -35
- package/Misc/decorators.functions.js.map +1 -1
- package/Misc/decorators.js +96 -68
- package/Misc/decorators.js.map +1 -1
- package/Misc/decorators.serialization.js +47 -40
- package/Misc/decorators.serialization.js.map +1 -1
- package/Misc/decorators.serializationUtilities.d.ts +24 -0
- package/Misc/decorators.serializationUtilities.js +20 -0
- package/Misc/decorators.serializationUtilities.js.map +1 -0
- package/Misc/dumpTools.pure.js +43 -33
- package/Misc/dumpTools.pure.js.map +1 -1
- package/Misc/fileTools.pure.js +8 -0
- package/Misc/fileTools.pure.js.map +1 -1
- package/Misc/observable.pure.js +0 -7
- package/Misc/observable.pure.js.map +1 -1
- package/Misc/snapshotRenderingHelper.d.ts +4 -1
- package/Misc/snapshotRenderingHelper.js.map +1 -1
- package/Misc/symbolMetadataPolyfill.d.ts +11 -0
- package/Misc/symbolMetadataPolyfill.js +22 -0
- package/Misc/symbolMetadataPolyfill.js.map +1 -0
- package/Misc/tools.pure.js +2 -2
- package/Misc/tools.pure.js.map +1 -1
- package/Morph/morphTarget.js +382 -365
- package/Morph/morphTarget.js.map +1 -1
- package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js +160 -145
- package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js +187 -174
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js +238 -219
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js +140 -115
- package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js +157 -144
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js +133 -119
- package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js +93 -80
- package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleDebugBlock.pure.js +117 -105
- package/Particles/Node/Blocks/particleDebugBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js +105 -92
- package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleGradientValueBlock.pure.js +82 -69
- package/Particles/Node/Blocks/particleGradientValueBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js +113 -101
- package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleMathBlock.pure.js +278 -265
- package/Particles/Node/Blocks/particleMathBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleNumberMathBlock.pure.js +155 -142
- package/Particles/Node/Blocks/particleNumberMathBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleRandomBlock.pure.js +156 -143
- package/Particles/Node/Blocks/particleRandomBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js +217 -204
- package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleVectorMathBlock.pure.js +106 -93
- package/Particles/Node/Blocks/particleVectorMathBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/systemBlock.pure.js +366 -330
- package/Particles/Node/Blocks/systemBlock.pure.js.map +1 -1
- package/Particles/Node/nodeParticleBlock.js +339 -324
- package/Particles/Node/nodeParticleBlock.js.map +1 -1
- package/Particles/Node/nodeParticleSystemSet.js +494 -473
- package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
- package/Particles/gpuParticleSystem.d.ts +0 -1
- package/Particles/gpuParticleSystem.js +0 -1
- package/Particles/gpuParticleSystem.js.map +1 -1
- package/Particles/gpuParticleSystem.pure.d.ts +4 -3
- package/Particles/gpuParticleSystem.pure.js +27 -16
- package/Particles/gpuParticleSystem.pure.js.map +1 -1
- package/Particles/particleSystem.pure.js +57 -2
- package/Particles/particleSystem.pure.js.map +1 -1
- package/Particles/thinParticleSystem.d.ts +0 -1
- package/Particles/thinParticleSystem.js +0 -1
- package/Particles/thinParticleSystem.js.map +1 -1
- package/Particles/thinParticleSystem.pure.js +2 -0
- package/Particles/thinParticleSystem.pure.js.map +1 -1
- package/Particles/webgl2ParticleSystem.pure.js +2 -0
- package/Particles/webgl2ParticleSystem.pure.js.map +1 -1
- package/Physics/v1/physicsImpostor.pure.js +4 -4
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js +675 -656
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.d.ts +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js +521 -486
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.d.ts +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js +241 -220
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js +852 -835
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js +1135 -1073
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js +319 -303
- package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +212 -199
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
- package/PostProcesses/blackAndWhitePostProcess.pure.js +67 -55
- package/PostProcesses/blackAndWhitePostProcess.pure.js.map +1 -1
- package/PostProcesses/bloomMergePostProcess.pure.js +74 -62
- package/PostProcesses/bloomMergePostProcess.pure.js.map +1 -1
- package/PostProcesses/blurPostProcess.pure.js +127 -115
- package/PostProcesses/blurPostProcess.pure.js.map +1 -1
- package/PostProcesses/chromaticAberrationPostProcess.pure.js +130 -118
- package/PostProcesses/chromaticAberrationPostProcess.pure.js.map +1 -1
- package/PostProcesses/circleOfConfusionPostProcess.pure.js +115 -104
- package/PostProcesses/circleOfConfusionPostProcess.pure.js.map +1 -1
- package/PostProcesses/colorCorrectionPostProcess.pure.js +55 -43
- package/PostProcesses/colorCorrectionPostProcess.pure.js.map +1 -1
- package/PostProcesses/convolutionPostProcess.pure.js +96 -84
- package/PostProcesses/convolutionPostProcess.pure.js.map +1 -1
- package/PostProcesses/extractHighlightsPostProcess.pure.js +68 -57
- package/PostProcesses/extractHighlightsPostProcess.pure.js.map +1 -1
- package/PostProcesses/filterPostProcess.pure.js +66 -54
- package/PostProcesses/filterPostProcess.pure.js.map +1 -1
- package/PostProcesses/fxaaPostProcess.pure.js.map +1 -1
- package/PostProcesses/grainPostProcess.pure.js +82 -70
- package/PostProcesses/grainPostProcess.pure.js.map +1 -1
- package/PostProcesses/imageProcessingPostProcess.js +334 -322
- package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/motionBlurPostProcess.pure.js +246 -235
- package/PostProcesses/motionBlurPostProcess.pure.js.map +1 -1
- package/PostProcesses/passPostProcess.pure.js +75 -63
- package/PostProcesses/passPostProcess.pure.js.map +1 -1
- package/PostProcesses/postProcess.pure.js +899 -835
- package/PostProcesses/postProcess.pure.js.map +1 -1
- package/PostProcesses/refractionPostProcess.pure.js +114 -87
- package/PostProcesses/refractionPostProcess.pure.js.map +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js +108 -96
- package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js.map +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.pure.js +241 -220
- package/PostProcesses/screenSpaceReflectionPostProcess.pure.js.map +1 -1
- package/PostProcesses/sharpenPostProcess.pure.js +86 -74
- package/PostProcesses/sharpenPostProcess.pure.js.map +1 -1
- package/PostProcesses/tonemapPostProcess.pure.js +82 -70
- package/PostProcesses/tonemapPostProcess.pure.js.map +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.pure.js +500 -465
- package/PostProcesses/volumetricLightScatteringPostProcess.pure.js.map +1 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.d.ts +0 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.js +0 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.js.map +1 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js +2 -0
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js.map +1 -1
- package/Probes/reflectionProbe.pure.js +238 -224
- package/Probes/reflectionProbe.pure.js.map +1 -1
- package/Rendering/GlobalIllumination/giRSMManager.pure.d.ts +1 -1
- package/Rendering/GlobalIllumination/giRSMManager.pure.js +138 -105
- package/Rendering/GlobalIllumination/giRSMManager.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.d.ts +1 -1
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js +155 -138
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.d.ts +0 -2
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +0 -2
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +5 -0
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.d.ts +0 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +0 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.d.ts +1 -0
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +34 -0
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
- package/Rendering/edgesRenderer.pure.js.map +1 -1
- package/Rendering/prePassRenderer.d.ts +0 -2
- package/Rendering/prePassRenderer.js +0 -2
- package/Rendering/prePassRenderer.js.map +1 -1
- package/Rendering/prePassRenderer.pure.js +2 -0
- package/Rendering/prePassRenderer.pure.js.map +1 -1
- package/Rendering/reflectiveShadowMap.pure.d.ts +1 -1
- package/Rendering/reflectiveShadowMap.pure.js +151 -130
- package/Rendering/reflectiveShadowMap.pure.js.map +1 -1
- package/Rendering/thinDepthPeelingRenderer.d.ts +0 -1
- package/Rendering/thinDepthPeelingRenderer.js +0 -1
- package/Rendering/thinDepthPeelingRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/gaussianSplatting.js +1 -0
- package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +35 -5
- package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
- package/Shaders/gaussianSplatting.fragment.js +17 -1
- package/Shaders/gaussianSplatting.fragment.js.map +1 -1
- package/Shaders/gaussianSplatting.vertex.js +1 -1
- package/Shaders/gaussianSplatting.vertex.js.map +1 -1
- package/Shaders/gaussianSplattingDepth.vertex.js +1 -1
- package/Shaders/gaussianSplattingDepth.vertex.js.map +1 -1
- package/Shaders/picking.fragment.js +39 -3
- package/Shaders/picking.fragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +3 -1
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/helperFunctions.js +2 -2
- package/ShadersWGSL/ShadersInclude/helperFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +39 -7
- package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js +4 -3
- package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.fragment.js +14 -1
- package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.vertex.js +2 -2
- package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
- package/ShadersWGSL/gaussianSplattingDepth.vertex.js +2 -2
- package/ShadersWGSL/gaussianSplattingDepth.vertex.js.map +1 -1
- package/ShadersWGSL/lightingVolume.compute.js +2 -2
- package/ShadersWGSL/lightingVolume.compute.js.map +1 -1
- package/ShadersWGSL/picking.fragment.js +22 -1
- package/ShadersWGSL/picking.fragment.js.map +1 -1
- package/XR/features/Layers/WebXRCompositionLayer.d.ts +3 -2
- package/XR/features/Layers/WebXRCompositionLayer.js +2 -2
- package/XR/features/Layers/WebXRCompositionLayer.js.map +1 -1
- package/XR/features/Layers/WebXRWebGPUCompositionLayer.d.ts +59 -0
- package/XR/features/Layers/WebXRWebGPUCompositionLayer.js +120 -0
- package/XR/features/Layers/WebXRWebGPUCompositionLayer.js.map +1 -0
- package/XR/features/Layers/WebXRWebGPUProjectionLayer.d.ts +25 -0
- package/XR/features/Layers/WebXRWebGPUProjectionLayer.js +69 -0
- package/XR/features/Layers/WebXRWebGPUProjectionLayer.js.map +1 -0
- package/XR/features/WebXRLayers.pure.d.ts +8 -0
- package/XR/features/WebXRLayers.pure.js +43 -6
- package/XR/features/WebXRLayers.pure.js.map +1 -1
- package/XR/native/nativeXRRenderTarget.d.ts +2 -2
- package/XR/native/nativeXRRenderTarget.js +2 -2
- package/XR/native/nativeXRRenderTarget.js.map +1 -1
- package/XR/webXRExperienceHelper.js +10 -1
- package/XR/webXRExperienceHelper.js.map +1 -1
- package/XR/webXRGraphicsBinding.d.ts +90 -0
- package/XR/webXRGraphicsBinding.js +85 -0
- package/XR/webXRGraphicsBinding.js.map +1 -0
- package/XR/webXRLayerRenderTargetTexture.d.ts +24 -0
- package/XR/webXRLayerRenderTargetTexture.js +30 -0
- package/XR/webXRLayerRenderTargetTexture.js.map +1 -0
- package/XR/webXRManagedOutputCanvas.d.ts +14 -0
- package/XR/webXRManagedOutputCanvas.js +24 -5
- package/XR/webXRManagedOutputCanvas.js.map +1 -1
- package/XR/webXRRenderTargetTextureProvider.d.ts +25 -4
- package/XR/webXRRenderTargetTextureProvider.js +33 -35
- package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
- package/XR/webXRSessionManager.d.ts +11 -0
- package/XR/webXRSessionManager.js +37 -0
- package/XR/webXRSessionManager.js.map +1 -1
- package/XR/webXRTypes.d.ts +9 -6
- package/XR/webXRTypes.js.map +1 -1
- package/XR/webXRWebGLLayer.d.ts +2 -2
- package/XR/webXRWebGLLayer.js +2 -2
- package/XR/webXRWebGLLayer.js.map +1 -1
- package/XR/webXRWebGLRenderTargetTextureProvider.d.ts +12 -0
- package/XR/webXRWebGLRenderTargetTextureProvider.js +58 -0
- package/XR/webXRWebGLRenderTargetTextureProvider.js.map +1 -0
- package/XR/webXRWebGPURenderTargetTextureProvider.d.ts +69 -0
- package/XR/webXRWebGPURenderTargetTextureProvider.js +148 -0
- package/XR/webXRWebGPURenderTargetTextureProvider.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/node.js +878 -845
- package/node.js.map +1 -1
- package/package.json +8 -14
- package/scene.pure.d.ts +12 -0
- package/scene.pure.js +36 -0
- package/scene.pure.js.map +1 -1
- package/tslib.es6.js +304 -150
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computeShader.pure.js","sourceRoot":"","sources":["../../../../dev/core/src/Compute/computeShader.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\n\nimport { type UniformBuffer } from \"../Materials/uniformBuffer\";\nimport { type WebGPUEngine } from \"../Engines/webgpuEngine.pure\";\nimport { type Scene } from \"../scene.pure\";\nimport { type Nullable } from \"../types\";\nimport { serialize } from \"../Misc/decorators\";\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\nimport { type ComputeEffect, type IComputeEffectCreationOptions, type IComputeShaderPath } from \"./computeEffect\";\nimport { type ComputeBindingMapping, ComputeBindingType } from \"../Engines/Extensions/engine.computeShader.pure\";\nimport { type BaseTexture } from \"../Materials/Textures/baseTexture.pure\";\nimport { Texture } from \"../Materials/Textures/texture.pure\";\nimport { UniqueIdGenerator } from \"../Misc/uniqueIdGenerator\";\nimport { type IComputeContext } from \"./IComputeContext\";\nimport { type StorageBuffer } from \"../Buffers/storageBuffer\";\nimport { Logger } from \"../Misc/logger\";\nimport { TextureSampler } from \"../Materials/Textures/textureSampler\";\nimport { type DataBuffer } from \"core/Buffers/dataBuffer\";\nimport { type ExternalTexture } from \"core/Materials/Textures/externalTexture\";\nimport { type VideoTexture } from \"core/Materials/Textures/videoTexture.pure\";\nimport { WebGPUPerfCounter } from \"core/Engines/WebGPU/webgpuPerfCounter\";\nimport { type AbstractEngine } from \"core/Engines/abstractEngine.pure\";\nimport { _RetryWithInterval } from \"core/Misc/timingTools\";\nimport { type InternalTexture } from \"core/Materials/Textures/internalTexture\";\nimport { RegisterClass } from \"../Misc/typeStore\";\n\n/**\n * Defines the options associated with the creation of a compute shader.\n */\nexport interface IComputeShaderOptions {\n /**\n * list of bindings mapping (key is property name, value is binding location)\n * Must be provided because browsers don't support reflection for wgsl shaders yet (so there's no way to query the binding/group from a variable name)\n * TODO: remove this when browsers support reflection for wgsl shaders\n */\n bindingsMapping: ComputeBindingMapping;\n\n /**\n * The list of defines used in the shader\n */\n defines?: string[];\n\n /**\n * The name of the entry point in the shader source (default: \"main\")\n */\n entryPoint?: string;\n\n /**\n * If provided, will be called with the shader code so that this code can be updated before it is compiled by the GPU\n */\n processFinalCode?: Nullable<(code: string) => string>;\n\n /**\n * If true, the engine should create an explicit pipeline layout for this compute shader instead of using an automatic layout.\n */\n useExplicitComputePipelineLayout?: boolean;\n}\n\ntype ComputeBindingListInternal = { [key: string]: { type: ComputeBindingType; object: any; indexInGroupEntries?: number; buffer?: Nullable<DataBuffer> } };\n\n/**\n * The ComputeShader object lets you execute a compute shader on your GPU (if supported by the engine)\n */\nexport class ComputeShader {\n private _engine: AbstractEngine;\n private _shaderPath: IComputeShaderPath | string;\n private _options: IComputeShaderOptions;\n private _effect: ComputeEffect;\n private _cachedDefines: string;\n private _bindings: ComputeBindingListInternal = {};\n private _samplers: { [key: string]: TextureSampler } = {};\n private _context: IComputeContext;\n private _contextIsDirty = false;\n\n /**\n * Gets the unique id of the compute shader\n */\n public readonly uniqueId: number;\n\n /**\n * The name of the shader\n */\n @serialize()\n public name: string;\n\n /**\n * The options used to create the shader\n */\n public get options() {\n return this._options;\n }\n\n /**\n * The shaderPath used to create the shader\n */\n public get shaderPath() {\n return this._shaderPath;\n }\n\n /**\n * When set to true, dispatch won't call isReady anymore and won't check if the underlying GPU resources should be (re)created because of a change in the inputs (texture, uniform buffer, etc.)\n * If you know that your inputs did not change since last time dispatch was called and that isReady() returns true, set this flag to true to improve performance\n */\n @serialize()\n public fastMode = false;\n\n /**\n * Callback triggered when the shader is compiled\n */\n public onCompiled: Nullable<(effect: ComputeEffect) => void> = null;\n\n /**\n * Callback triggered when an error occurs\n */\n public onError: Nullable<(effect: ComputeEffect, errors: string) => void> = null;\n\n /**\n * Gets the GPU time spent running the compute shader for the last frame rendered (in nanoseconds).\n * You have to enable the \"timestamp-query\" extension in the engine constructor options and set engine.enableGPUTimingMeasurements = true.\n */\n public readonly gpuTimeInFrame?: WebGPUPerfCounter;\n\n /**\n * If set to true, the compute context will be rebuilt at the next dispatch even if in fast mode\n */\n public triggerContextRebuild = false;\n\n /**\n * Instantiates a new compute shader.\n * @param name Defines the name of the compute shader in the scene\n * @param engine Defines the engine the compute shader belongs to\n * @param shaderPath Defines the route to the shader code in one of three ways:\n * * object: \\{ compute: \"custom\" \\}, used with ShaderStore.ShadersStoreWGSL[\"customComputeShader\"]\n * * object: \\{ computeElement: \"HTMLElementId\" \\}, used with shader code in script tags\n * * object: \\{ computeSource: \"compute shader code string\" \\}, where the string contains the shader code\n * * string: try first to find the code in ShaderStore.ShadersStoreWGSL[shaderPath + \"ComputeShader\"]. If not, assumes it is a file with name shaderPath.compute.fx in index.html folder.\n * @param options Define the options used to create the shader\n */\n constructor(name: string, engine: AbstractEngine, shaderPath: IComputeShaderPath | string, options: Partial<IComputeShaderOptions> = {}) {\n this.name = name;\n this._engine = engine;\n this.uniqueId = UniqueIdGenerator.UniqueId;\n if ((engine as WebGPUEngine).enableGPUTimingMeasurements) {\n this.gpuTimeInFrame = new WebGPUPerfCounter();\n }\n\n if (!this._engine.getCaps().supportComputeShaders) {\n Logger.Error(\"This engine does not support compute shaders!\");\n return;\n }\n if (!options.bindingsMapping) {\n Logger.Error(\"You must provide the binding mappings as browsers don't support reflection for wgsl shaders yet!\");\n return;\n }\n\n this._context = engine.createComputeContext()!;\n this._shaderPath = shaderPath;\n this._options = {\n bindingsMapping: {},\n defines: [],\n entryPoint: \"main\",\n ...options,\n };\n }\n\n /**\n * Gets the current class name of the material e.g. \"ComputeShader\"\n * Mainly use in serialization.\n * @returns the class name\n */\n public getClassName(): string {\n return \"ComputeShader\";\n }\n\n /**\n * Binds a texture to the shader\n * @param name Binding name of the texture\n * @param texture Texture to bind\n * @param bindSampler Bind the sampler corresponding to the texture (default: true). The sampler will be bound just before the binding index of the texture\n */\n public setTexture(name: string, texture: BaseTexture, bindSampler = true): void {\n const current = this._bindings[name];\n\n this._bindings[name] = {\n type: bindSampler ? ComputeBindingType.Texture : ComputeBindingType.TextureWithoutSampler,\n object: texture,\n indexInGroupEntries: current?.indexInGroupEntries,\n };\n\n this._contextIsDirty ||= !current || current.object !== texture || current.type !== this._bindings[name].type;\n }\n\n /**\n * Binds an internal texture to the shader\n * @param name Binding name of the texture\n * @param texture Texture to bind\n */\n public setInternalTexture(name: string, texture: InternalTexture): void {\n const current = this._bindings[name];\n\n this._bindings[name] = {\n type: ComputeBindingType.InternalTexture,\n object: texture,\n indexInGroupEntries: current?.indexInGroupEntries,\n };\n\n this._contextIsDirty ||= !current || current.object !== texture || current.type !== this._bindings[name].type;\n }\n\n /**\n * Binds a storage texture to the shader\n * @param name Binding name of the texture\n * @param texture Texture to bind\n */\n public setStorageTexture(name: string, texture: BaseTexture): void {\n const current = this._bindings[name];\n\n this._contextIsDirty ||= !current || current.object !== texture;\n\n this._bindings[name] = {\n type: ComputeBindingType.StorageTexture,\n object: texture,\n indexInGroupEntries: current?.indexInGroupEntries,\n };\n }\n\n /**\n * Binds an external texture to the shader\n * @param name Binding name of the texture\n * @param texture Texture to bind\n */\n public setExternalTexture(name: string, texture: ExternalTexture): void {\n const current = this._bindings[name];\n\n this._contextIsDirty ||= !current || current.object !== texture;\n\n this._bindings[name] = {\n type: ComputeBindingType.ExternalTexture,\n object: texture,\n indexInGroupEntries: current?.indexInGroupEntries,\n };\n }\n\n /**\n * Binds a video texture to the shader (by binding the external texture attached to this video)\n * @param name Binding name of the texture\n * @param texture Texture to bind\n * @returns true if the video texture was successfully bound, else false. false will be returned if the current engine does not support external textures\n */\n public setVideoTexture(name: string, texture: VideoTexture) {\n if (texture.externalTexture) {\n this.setExternalTexture(name, texture.externalTexture);\n return true;\n }\n\n return false;\n }\n\n /**\n * Binds a uniform buffer to the shader\n * @param name Binding name of the buffer\n * @param buffer Buffer to bind\n */\n public setUniformBuffer(name: string, buffer: UniformBuffer | DataBuffer): void {\n const current = this._bindings[name];\n\n this._contextIsDirty ||= !current || current.object !== buffer;\n\n this._bindings[name] = {\n type: ComputeShader._BufferIsDataBuffer(buffer) ? ComputeBindingType.DataBuffer : ComputeBindingType.UniformBuffer,\n object: buffer,\n indexInGroupEntries: current?.indexInGroupEntries,\n };\n }\n\n /**\n * Binds a storage buffer to the shader\n * @param name Binding name of the buffer\n * @param buffer Buffer to bind\n */\n public setStorageBuffer(name: string, buffer: StorageBuffer | DataBuffer): void {\n const current = this._bindings[name];\n\n this._contextIsDirty ||= !current || current.object !== buffer;\n\n this._bindings[name] = {\n type: ComputeShader._BufferIsDataBuffer(buffer) ? ComputeBindingType.DataBuffer : ComputeBindingType.StorageBuffer,\n object: buffer,\n indexInGroupEntries: current?.indexInGroupEntries,\n };\n }\n\n /**\n * Binds a texture sampler to the shader\n * @param name Binding name of the sampler\n * @param sampler Sampler to bind\n */\n public setTextureSampler(name: string, sampler: TextureSampler): void {\n const current = this._bindings[name];\n\n this._contextIsDirty ||= !current || !sampler.compareSampler(current.object);\n\n this._bindings[name] = {\n type: ComputeBindingType.Sampler,\n object: sampler,\n indexInGroupEntries: current?.indexInGroupEntries,\n };\n }\n\n /**\n * Specifies that the compute shader is ready to be executed (the compute effect and all the resources are ready)\n * @returns true if the compute shader is ready to be executed\n */\n public isReady(): boolean {\n let effect = this._effect;\n\n for (const key in this._bindings) {\n const binding = this._bindings[key],\n type = binding.type,\n object = binding.object;\n\n switch (type) {\n case ComputeBindingType.Texture:\n case ComputeBindingType.TextureWithoutSampler:\n case ComputeBindingType.StorageTexture: {\n const texture = object as BaseTexture;\n if (!texture.isReady()) {\n return false;\n }\n break;\n }\n case ComputeBindingType.ExternalTexture: {\n const texture = object as ExternalTexture;\n if (!texture.isReady()) {\n return false;\n }\n break;\n }\n }\n }\n\n const defines = [\"#define \" + this._options.entryPoint];\n\n const shaderName = this._shaderPath;\n\n if (this._options.defines) {\n for (let index = 0; index < this._options.defines.length; index++) {\n defines.push(this._options.defines[index]);\n }\n }\n\n const join = defines.join(\"\\n\");\n\n if (this._cachedDefines !== join) {\n this._cachedDefines = join;\n\n effect = this._engine.createComputeEffect(shaderName, <IComputeEffectCreationOptions>{\n defines: join,\n entryPoint: this._options.entryPoint,\n onCompiled: this.onCompiled,\n onError: this.onError,\n useExplicitComputePipelineLayout: this._options.useExplicitComputePipelineLayout,\n });\n\n this._effect = effect;\n }\n\n if (!effect.isReady()) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Dispatches (executes) the compute shader\n * @param x Number of workgroups to execute on the X dimension\n * @param y Number of workgroups to execute on the Y dimension (default: 1)\n * @param z Number of workgroups to execute on the Z dimension (default: 1)\n * @returns True if the dispatch could be done, else false (meaning either the compute effect or at least one of the bound resources was not ready)\n */\n public dispatch(x: number, y?: number, z?: number): boolean {\n if ((!this.fastMode || this.triggerContextRebuild) && !this._checkContext()) {\n return false;\n }\n this._engine.computeDispatch(this._effect, this._context, this._bindings, x, y, z, this._options.bindingsMapping, this.gpuTimeInFrame);\n\n return true;\n }\n\n /**\n * Dispatches (executes) the compute shader.\n * @param buffer Buffer containing the number of workgroups to execute on the X, Y and Z dimensions\n * @param offset Offset in the buffer where the workgroup counts are stored (default: 0)\n * @returns True if the dispatch could be done, else false (meaning either the compute effect or at least one of the bound resources was not ready)\n */\n public dispatchIndirect(buffer: StorageBuffer | DataBuffer, offset: number = 0): boolean {\n if ((!this.fastMode || this.triggerContextRebuild) && !this._checkContext()) {\n return false;\n }\n const dataBuffer = ComputeShader._BufferIsDataBuffer(buffer) ? buffer : buffer.getBuffer();\n this._engine.computeDispatchIndirect(this._effect, this._context, this._bindings, dataBuffer, offset, this._options.bindingsMapping, this.gpuTimeInFrame);\n return true;\n }\n\n private _checkContext(): boolean {\n if (!this.isReady()) {\n return false;\n }\n\n // If the sampling parameters of a texture bound to the shader have changed, we must clear the compute context so that it is recreated with the updated values\n // Also, if the actual (gpu) buffer used by a uniform buffer has changed, we must clear the compute context so that it is recreated with the updated value\n for (const key in this._bindings) {\n const binding = this._bindings[key];\n\n if (!this._options.bindingsMapping[key]) {\n throw new Error(\"ComputeShader ('\" + this.name + \"'): No binding mapping has been provided for the property '\" + key + \"'\");\n }\n\n switch (binding.type) {\n case ComputeBindingType.Texture: {\n const sampler = this._samplers[key];\n const texture = binding.object as BaseTexture;\n\n if (!sampler || !texture._texture || !sampler.compareSampler(texture._texture)) {\n this._samplers[key] = new TextureSampler().setParameters(\n texture.wrapU,\n texture.wrapV,\n texture.wrapR,\n texture.anisotropicFilteringLevel,\n texture._texture!.samplingMode,\n texture._texture?._comparisonFunction\n );\n this._contextIsDirty = true;\n }\n break;\n }\n case ComputeBindingType.ExternalTexture: {\n // we must recreate the bind groups each time if there's an external texture, because device.importExternalTexture must be called each frame\n this._contextIsDirty = true;\n break;\n }\n case ComputeBindingType.UniformBuffer: {\n const ubo = binding.object as UniformBuffer;\n if (ubo.getBuffer() !== binding.buffer) {\n binding.buffer = ubo.getBuffer();\n this._contextIsDirty = true;\n }\n break;\n }\n }\n }\n\n if (this._contextIsDirty) {\n this.triggerContextRebuild = false;\n this._contextIsDirty = false;\n this._context.clear();\n }\n return true;\n }\n\n /**\n * Waits for the compute shader to be ready and executes it\n * @param x Number of workgroups to execute on the X dimension\n * @param y Number of workgroups to execute on the Y dimension (default: 1)\n * @param z Number of workgroups to execute on the Z dimension (default: 1)\n * @param delay Delay between the retries while the shader is not ready (in milliseconds - 10 by default)\n * @returns A promise that is resolved once the shader has been sent to the GPU. Note that it does not mean that the shader execution itself is finished!\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public async dispatchWhenReady(x: number, y?: number, z?: number, delay = 10): Promise<void> {\n return await new Promise((resolve) => {\n _RetryWithInterval(() => this.dispatch(x, y, z), resolve, undefined, delay);\n });\n }\n\n /**\n * Serializes this compute shader in a JSON representation\n * @returns the serialized compute shader object\n */\n public serialize(): any {\n const serializationObject = SerializationHelper.Serialize(this);\n\n serializationObject.options = this._options;\n serializationObject.shaderPath = this._shaderPath;\n serializationObject.bindings = {};\n serializationObject.textures = {};\n\n for (const key in this._bindings) {\n const binding = this._bindings[key];\n const object = binding.object;\n\n switch (binding.type) {\n case ComputeBindingType.Texture:\n case ComputeBindingType.TextureWithoutSampler:\n case ComputeBindingType.StorageTexture: {\n const serializedData = (object as BaseTexture).serialize();\n if (serializedData) {\n serializationObject.textures[key] = serializedData;\n serializationObject.bindings[key] = {\n type: binding.type,\n };\n }\n break;\n }\n\n case ComputeBindingType.InternalTexture:\n case ComputeBindingType.UniformBuffer: {\n break;\n }\n }\n }\n\n return serializationObject;\n }\n\n protected static _BufferIsDataBuffer(buffer: UniformBuffer | StorageBuffer | DataBuffer): buffer is DataBuffer {\n return (buffer as DataBuffer).underlyingResource !== undefined;\n }\n}\n\nlet _Registered = false;\n\n/**\n * Creates a compute shader from parsed compute shader data\n * @param source defines the JSON representation of the compute shader\n * @param scene defines the hosting scene\n * @param rootUrl defines the root URL to use to load textures and relative dependencies\n * @returns a new compute shader\n */\nexport function ComputeShaderParse(source: any, scene: Scene, rootUrl: string): ComputeShader {\n const compute = SerializationHelper.Parse(() => new ComputeShader(source.name, scene.getEngine() as WebGPUEngine, source.shaderPath, source.options), source, scene, rootUrl);\n\n for (const key in source.textures) {\n const binding = source.bindings[key];\n const texture = <Texture>Texture.Parse(source.textures[key], scene, rootUrl);\n\n if (binding.type === ComputeBindingType.Texture) {\n compute.setTexture(key, texture);\n } else if (binding.type === ComputeBindingType.TextureWithoutSampler) {\n compute.setTexture(key, texture, false);\n } else {\n compute.setStorageTexture(key, texture);\n }\n }\n\n return compute;\n}\n\n/**\n * Register side effects for computeShader.\n * Safe to call multiple times; only the first call has an effect.\n */\nexport function RegisterComputeShader(): void {\n if (_Registered) {\n return;\n }\n _Registered = true;\n\n ComputeShader.Parse = ComputeShaderParse;\n\n RegisterClass(\"BABYLON.ComputeShader\", ComputeShader);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"computeShader.pure.js","sourceRoot":"","sources":["../../../../dev/core/src/Compute/computeShader.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/** This file must only contain pure code and pure imports */\n\nimport { type UniformBuffer } from \"../Materials/uniformBuffer\";\nimport { type WebGPUEngine } from \"../Engines/webgpuEngine.pure\";\nimport { type Scene } from \"../scene.pure\";\nimport { type Nullable } from \"../types\";\nimport { serialize } from \"../Misc/decorators\";\nimport { SerializationHelper } from \"../Misc/decorators.serialization\";\nimport { type ComputeEffect, type IComputeEffectCreationOptions, type IComputeShaderPath } from \"./computeEffect\";\nimport { type ComputeBindingMapping, ComputeBindingType } from \"../Engines/Extensions/engine.computeShader.pure\";\nimport { type BaseTexture } from \"../Materials/Textures/baseTexture.pure\";\nimport { Texture } from \"../Materials/Textures/texture.pure\";\nimport { UniqueIdGenerator } from \"../Misc/uniqueIdGenerator\";\nimport { type IComputeContext } from \"./IComputeContext\";\nimport { type StorageBuffer } from \"../Buffers/storageBuffer\";\nimport { Logger } from \"../Misc/logger\";\nimport { TextureSampler } from \"../Materials/Textures/textureSampler\";\nimport { type DataBuffer } from \"core/Buffers/dataBuffer\";\nimport { type ExternalTexture } from \"core/Materials/Textures/externalTexture\";\nimport { type VideoTexture } from \"core/Materials/Textures/videoTexture.pure\";\nimport { WebGPUPerfCounter } from \"core/Engines/WebGPU/webgpuPerfCounter\";\nimport { type AbstractEngine } from \"core/Engines/abstractEngine.pure\";\nimport { _RetryWithInterval } from \"core/Misc/timingTools\";\nimport { type InternalTexture } from \"core/Materials/Textures/internalTexture\";\nimport { RegisterClass } from \"../Misc/typeStore\";\n\n/**\n * Defines the options associated with the creation of a compute shader.\n */\nexport interface IComputeShaderOptions {\n /**\n * list of bindings mapping (key is property name, value is binding location)\n * Must be provided because browsers don't support reflection for wgsl shaders yet (so there's no way to query the binding/group from a variable name)\n * TODO: remove this when browsers support reflection for wgsl shaders\n */\n bindingsMapping: ComputeBindingMapping;\n\n /**\n * The list of defines used in the shader\n */\n defines?: string[];\n\n /**\n * The name of the entry point in the shader source (default: \"main\")\n */\n entryPoint?: string;\n\n /**\n * If provided, will be called with the shader code so that this code can be updated before it is compiled by the GPU\n */\n processFinalCode?: Nullable<(code: string) => string>;\n\n /**\n * If true, the engine should create an explicit pipeline layout for this compute shader instead of using an automatic layout.\n */\n useExplicitComputePipelineLayout?: boolean;\n}\n\ntype ComputeBindingListInternal = { [key: string]: { type: ComputeBindingType; object: any; indexInGroupEntries?: number; buffer?: Nullable<DataBuffer> } };\n\n/**\n * The ComputeShader object lets you execute a compute shader on your GPU (if supported by the engine)\n */\nexport class ComputeShader {\n private _engine: AbstractEngine;\n private _shaderPath: IComputeShaderPath | string;\n private _options: IComputeShaderOptions;\n private _effect: ComputeEffect;\n private _cachedDefines: string;\n private _bindings: ComputeBindingListInternal = {};\n private _samplers: { [key: string]: TextureSampler } = {};\n private _context: IComputeContext;\n private _contextIsDirty = false;\n\n /**\n * Gets the unique id of the compute shader\n */\n public readonly uniqueId: number;\n\n /**\n * The name of the shader\n */\n @serialize()\n public name: string;\n\n /**\n * The options used to create the shader\n */\n public get options() {\n return this._options;\n }\n\n /**\n * The shaderPath used to create the shader\n */\n public get shaderPath() {\n return this._shaderPath;\n }\n\n /**\n * When set to true, dispatch won't call isReady anymore and won't check if the underlying GPU resources should be (re)created because of a change in the inputs (texture, uniform buffer, etc.)\n * If you know that your inputs did not change since last time dispatch was called and that isReady() returns true, set this flag to true to improve performance\n */\n @serialize()\n public fastMode = false;\n\n /**\n * Callback triggered when the shader is compiled\n */\n public onCompiled: Nullable<(effect: ComputeEffect) => void> = null;\n\n /**\n * Callback triggered when an error occurs\n */\n public onError: Nullable<(effect: ComputeEffect, errors: string) => void> = null;\n\n /**\n * Gets the GPU time spent running the compute shader for the last frame rendered (in nanoseconds).\n * You have to enable the \"timestamp-query\" extension in the engine constructor options and set engine.enableGPUTimingMeasurements = true.\n */\n public readonly gpuTimeInFrame?: WebGPUPerfCounter;\n\n /**\n * If set to true, the compute context will be rebuilt at the next dispatch even if in fast mode\n */\n public triggerContextRebuild = false;\n\n /**\n * Instantiates a new compute shader.\n * @param name Defines the name of the compute shader in the scene\n * @param engine Defines the engine the compute shader belongs to\n * @param shaderPath Defines the route to the shader code in one of three ways:\n * * object: \\{ compute: \"custom\" \\}, used with ShaderStore.ShadersStoreWGSL[\"customComputeShader\"]\n * * object: \\{ computeElement: \"HTMLElementId\" \\}, used with shader code in script tags\n * * object: \\{ computeSource: \"compute shader code string\" \\}, where the string contains the shader code\n * * string: try first to find the code in ShaderStore.ShadersStoreWGSL[shaderPath + \"ComputeShader\"]. If not, assumes it is a file with name shaderPath.compute.fx in index.html folder.\n * @param options Define the options used to create the shader\n */\n constructor(name: string, engine: AbstractEngine, shaderPath: IComputeShaderPath | string, options: Partial<IComputeShaderOptions> = {}) {\n this.name = name;\n this._engine = engine;\n this.uniqueId = UniqueIdGenerator.UniqueId;\n if ((engine as WebGPUEngine).enableGPUTimingMeasurements) {\n this.gpuTimeInFrame = new WebGPUPerfCounter();\n }\n\n if (!this._engine.getCaps().supportComputeShaders) {\n Logger.Error(\"This engine does not support compute shaders!\");\n return;\n }\n if (!options.bindingsMapping) {\n Logger.Error(\"You must provide the binding mappings as browsers don't support reflection for wgsl shaders yet!\");\n return;\n }\n\n this._context = engine.createComputeContext()!;\n this._shaderPath = shaderPath;\n this._options = {\n bindingsMapping: {},\n defines: [],\n entryPoint: \"main\",\n ...options,\n };\n }\n\n /**\n * Gets the current class name of the material e.g. \"ComputeShader\"\n * Mainly use in serialization.\n * @returns the class name\n */\n public getClassName(): string {\n return \"ComputeShader\";\n }\n\n /**\n * Binds a texture to the shader\n * @param name Binding name of the texture\n * @param texture Texture to bind\n * @param bindSampler Bind the sampler corresponding to the texture (default: true). The sampler will be bound just before the binding index of the texture\n */\n public setTexture(name: string, texture: BaseTexture, bindSampler = true): void {\n const current = this._bindings[name];\n\n this._bindings[name] = {\n type: bindSampler ? ComputeBindingType.Texture : ComputeBindingType.TextureWithoutSampler,\n object: texture,\n indexInGroupEntries: current?.indexInGroupEntries,\n };\n\n this._contextIsDirty ||= !current || current.object !== texture || current.type !== this._bindings[name].type;\n }\n\n /**\n * Binds an internal texture to the shader\n * @param name Binding name of the texture\n * @param texture Texture to bind\n */\n public setInternalTexture(name: string, texture: InternalTexture): void {\n const current = this._bindings[name];\n\n this._bindings[name] = {\n type: ComputeBindingType.InternalTexture,\n object: texture,\n indexInGroupEntries: current?.indexInGroupEntries,\n };\n\n this._contextIsDirty ||= !current || current.object !== texture || current.type !== this._bindings[name].type;\n }\n\n /**\n * Binds a storage texture to the shader\n * @param name Binding name of the texture\n * @param texture Texture to bind\n */\n public setStorageTexture(name: string, texture: BaseTexture): void {\n const current = this._bindings[name];\n\n this._contextIsDirty ||= !current || current.object !== texture;\n\n this._bindings[name] = {\n type: ComputeBindingType.StorageTexture,\n object: texture,\n indexInGroupEntries: current?.indexInGroupEntries,\n };\n }\n\n /**\n * Binds an external texture to the shader\n * @param name Binding name of the texture\n * @param texture Texture to bind\n */\n public setExternalTexture(name: string, texture: ExternalTexture): void {\n const current = this._bindings[name];\n\n this._contextIsDirty ||= !current || current.object !== texture;\n\n this._bindings[name] = {\n type: ComputeBindingType.ExternalTexture,\n object: texture,\n indexInGroupEntries: current?.indexInGroupEntries,\n };\n }\n\n /**\n * Binds a video texture to the shader (by binding the external texture attached to this video)\n * @param name Binding name of the texture\n * @param texture Texture to bind\n * @returns true if the video texture was successfully bound, else false. false will be returned if the current engine does not support external textures\n */\n public setVideoTexture(name: string, texture: VideoTexture) {\n if (texture.externalTexture) {\n this.setExternalTexture(name, texture.externalTexture);\n return true;\n }\n\n return false;\n }\n\n /**\n * Binds a uniform buffer to the shader\n * @param name Binding name of the buffer\n * @param buffer Buffer to bind\n */\n public setUniformBuffer(name: string, buffer: UniformBuffer | DataBuffer): void {\n const current = this._bindings[name];\n\n this._contextIsDirty ||= !current || current.object !== buffer;\n\n this._bindings[name] = {\n type: ComputeShader._BufferIsDataBuffer(buffer) ? ComputeBindingType.DataBuffer : ComputeBindingType.UniformBuffer,\n object: buffer,\n indexInGroupEntries: current?.indexInGroupEntries,\n };\n }\n\n /**\n * Binds a storage buffer to the shader\n * @param name Binding name of the buffer\n * @param buffer Buffer to bind\n */\n public setStorageBuffer(name: string, buffer: StorageBuffer | DataBuffer): void {\n const current = this._bindings[name];\n\n this._contextIsDirty ||= !current || current.object !== buffer;\n\n this._bindings[name] = {\n type: ComputeShader._BufferIsDataBuffer(buffer) ? ComputeBindingType.DataBuffer : ComputeBindingType.StorageBuffer,\n object: buffer,\n indexInGroupEntries: current?.indexInGroupEntries,\n };\n }\n\n /**\n * Binds a texture sampler to the shader\n * @param name Binding name of the sampler\n * @param sampler Sampler to bind\n */\n public setTextureSampler(name: string, sampler: TextureSampler): void {\n const current = this._bindings[name];\n\n this._contextIsDirty ||= !current || !sampler.compareSampler(current.object);\n\n this._bindings[name] = {\n type: ComputeBindingType.Sampler,\n object: sampler,\n indexInGroupEntries: current?.indexInGroupEntries,\n };\n }\n\n /**\n * Specifies that the compute shader is ready to be executed (the compute effect and all the resources are ready)\n * @returns true if the compute shader is ready to be executed\n */\n public isReady(): boolean {\n let effect = this._effect;\n\n for (const key in this._bindings) {\n const binding = this._bindings[key],\n type = binding.type,\n object = binding.object;\n\n switch (type) {\n case ComputeBindingType.Texture:\n case ComputeBindingType.TextureWithoutSampler:\n case ComputeBindingType.StorageTexture: {\n const texture = object as BaseTexture;\n if (!texture.isReady()) {\n return false;\n }\n break;\n }\n case ComputeBindingType.ExternalTexture: {\n const texture = object as ExternalTexture;\n if (!texture.isReady()) {\n return false;\n }\n break;\n }\n }\n }\n\n const defines = [\"#define \" + this._options.entryPoint];\n\n const shaderName = this._shaderPath;\n\n if (this._options.defines) {\n for (let index = 0; index < this._options.defines.length; index++) {\n defines.push(this._options.defines[index]);\n }\n }\n\n const join = defines.join(\"\\n\");\n\n if (this._cachedDefines !== join) {\n this._cachedDefines = join;\n\n effect = this._engine.createComputeEffect(shaderName, <IComputeEffectCreationOptions>{\n defines: join,\n entryPoint: this._options.entryPoint,\n onCompiled: this.onCompiled,\n onError: this.onError,\n useExplicitComputePipelineLayout: this._options.useExplicitComputePipelineLayout,\n });\n\n this._effect = effect;\n }\n\n if (!effect.isReady()) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Dispatches (executes) the compute shader\n * @param x Number of workgroups to execute on the X dimension\n * @param y Number of workgroups to execute on the Y dimension (default: 1)\n * @param z Number of workgroups to execute on the Z dimension (default: 1)\n * @returns True if the dispatch could be done, else false (meaning either the compute effect or at least one of the bound resources was not ready)\n */\n public dispatch(x: number, y?: number, z?: number): boolean {\n if ((!this.fastMode || this.triggerContextRebuild) && !this._checkContext()) {\n return false;\n }\n this._engine.computeDispatch(this._effect, this._context, this._bindings, x, y, z, this._options.bindingsMapping, this.gpuTimeInFrame);\n\n return true;\n }\n\n /**\n * Dispatches (executes) the compute shader.\n * @param buffer Buffer containing the number of workgroups to execute on the X, Y and Z dimensions\n * @param offset Offset in the buffer where the workgroup counts are stored (default: 0)\n * @returns True if the dispatch could be done, else false (meaning either the compute effect or at least one of the bound resources was not ready)\n */\n public dispatchIndirect(buffer: StorageBuffer | DataBuffer, offset: number = 0): boolean {\n if ((!this.fastMode || this.triggerContextRebuild) && !this._checkContext()) {\n return false;\n }\n const dataBuffer = ComputeShader._BufferIsDataBuffer(buffer) ? buffer : buffer.getBuffer();\n this._engine.computeDispatchIndirect(this._effect, this._context, this._bindings, dataBuffer, offset, this._options.bindingsMapping, this.gpuTimeInFrame);\n return true;\n }\n\n private _checkContext(): boolean {\n if (!this.isReady()) {\n return false;\n }\n\n // If the sampling parameters of a texture bound to the shader have changed, we must clear the compute context so that it is recreated with the updated values\n // Also, if the actual (gpu) buffer used by a uniform buffer has changed, we must clear the compute context so that it is recreated with the updated value\n for (const key in this._bindings) {\n const binding = this._bindings[key];\n\n if (!this._options.bindingsMapping[key]) {\n throw new Error(\"ComputeShader ('\" + this.name + \"'): No binding mapping has been provided for the property '\" + key + \"'\");\n }\n\n switch (binding.type) {\n case ComputeBindingType.Texture: {\n const sampler = this._samplers[key];\n const texture = binding.object as BaseTexture;\n\n if (!sampler || !texture._texture || !sampler.compareSampler(texture._texture)) {\n this._samplers[key] = new TextureSampler().setParameters(\n texture.wrapU,\n texture.wrapV,\n texture.wrapR,\n texture.anisotropicFilteringLevel,\n texture._texture!.samplingMode,\n texture._texture?._comparisonFunction\n );\n this._contextIsDirty = true;\n }\n break;\n }\n case ComputeBindingType.ExternalTexture: {\n // we must recreate the bind groups each time if there's an external texture, because device.importExternalTexture must be called each frame\n this._contextIsDirty = true;\n break;\n }\n case ComputeBindingType.UniformBuffer: {\n const ubo = binding.object as UniformBuffer;\n if (ubo.getBuffer() !== binding.buffer) {\n binding.buffer = ubo.getBuffer();\n this._contextIsDirty = true;\n }\n break;\n }\n }\n }\n\n if (this._contextIsDirty) {\n this.triggerContextRebuild = false;\n this._contextIsDirty = false;\n this._context.clear();\n }\n return true;\n }\n\n /**\n * Waits for the compute shader to be ready and executes it\n * @param x Number of workgroups to execute on the X dimension\n * @param y Number of workgroups to execute on the Y dimension (default: 1)\n * @param z Number of workgroups to execute on the Z dimension (default: 1)\n * @param delay Delay between the retries while the shader is not ready (in milliseconds - 10 by default)\n * @returns A promise that is resolved once the shader has been sent to the GPU. Note that it does not mean that the shader execution itself is finished!\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public async dispatchWhenReady(x: number, y?: number, z?: number, delay = 10): Promise<void> {\n return await new Promise((resolve) => {\n _RetryWithInterval(() => this.dispatch(x, y, z), resolve, undefined, delay);\n });\n }\n\n /**\n * Serializes this compute shader in a JSON representation\n * @returns the serialized compute shader object\n */\n public serialize(): any {\n const serializationObject = SerializationHelper.Serialize(this);\n\n serializationObject.options = this._options;\n serializationObject.shaderPath = this._shaderPath;\n serializationObject.bindings = {};\n serializationObject.textures = {};\n\n for (const key in this._bindings) {\n const binding = this._bindings[key];\n const object = binding.object;\n\n switch (binding.type) {\n case ComputeBindingType.Texture:\n case ComputeBindingType.TextureWithoutSampler:\n case ComputeBindingType.StorageTexture: {\n const serializedData = (object as BaseTexture).serialize();\n if (serializedData) {\n serializationObject.textures[key] = serializedData;\n serializationObject.bindings[key] = {\n type: binding.type,\n };\n }\n break;\n }\n\n case ComputeBindingType.InternalTexture:\n case ComputeBindingType.UniformBuffer: {\n break;\n }\n }\n }\n\n return serializationObject;\n }\n\n protected static _BufferIsDataBuffer(buffer: UniformBuffer | StorageBuffer | DataBuffer): buffer is DataBuffer {\n return (buffer as DataBuffer).underlyingResource !== undefined;\n }\n}\n\nlet _Registered = false;\n\n/**\n * Creates a compute shader from parsed compute shader data\n * @param source defines the JSON representation of the compute shader\n * @param scene defines the hosting scene\n * @param rootUrl defines the root URL to use to load textures and relative dependencies\n * @returns a new compute shader\n */\nexport function ComputeShaderParse(source: any, scene: Scene, rootUrl: string): ComputeShader {\n const compute = SerializationHelper.Parse(() => new ComputeShader(source.name, scene.getEngine() as WebGPUEngine, source.shaderPath, source.options), source, scene, rootUrl);\n\n for (const key in source.textures) {\n const binding = source.bindings[key];\n const texture = <Texture>Texture.Parse(source.textures[key], scene, rootUrl);\n\n if (binding.type === ComputeBindingType.Texture) {\n compute.setTexture(key, texture);\n } else if (binding.type === ComputeBindingType.TextureWithoutSampler) {\n compute.setTexture(key, texture, false);\n } else {\n compute.setStorageTexture(key, texture);\n }\n }\n\n return compute;\n}\n\n/**\n * Register side effects for computeShader.\n * Safe to call multiple times; only the first call has an effect.\n */\nexport function RegisterComputeShader(): void {\n if (_Registered) {\n return;\n }\n _Registered = true;\n\n ComputeShader.Parse = ComputeShaderParse;\n\n RegisterClass(\"BABYLON.ComputeShader\", ComputeShader);\n}\n"]}
|
|
@@ -191,6 +191,6 @@ export class TransformFeedbackBoundingHelper {
|
|
|
191
191
|
this._engine = null;
|
|
192
192
|
}
|
|
193
193
|
}
|
|
194
|
-
TransformFeedbackBoundingHelper._Min = new Vector3();
|
|
195
|
-
TransformFeedbackBoundingHelper._Max = new Vector3();
|
|
194
|
+
TransformFeedbackBoundingHelper._Min = /*#__PURE__*/ new Vector3();
|
|
195
|
+
TransformFeedbackBoundingHelper._Max = /*#__PURE__*/ new Vector3();
|
|
196
196
|
//# sourceMappingURL=transformFeedbackBoundingHelper.pure.js.map
|
|
@@ -95,4 +95,14 @@ export interface IPropertyDescriptionForEdition {
|
|
|
95
95
|
* @param options the options of the property
|
|
96
96
|
* @returns the decorator
|
|
97
97
|
*/
|
|
98
|
-
export declare function editableInPropertyPage(displayName: string, propertyType?: PropertyTypeForEdition, groupName?: string, options?: IEditablePropertyOption): (
|
|
98
|
+
export declare function editableInPropertyPage(displayName: string, propertyType?: PropertyTypeForEdition, groupName?: string, options?: IEditablePropertyOption): (_value: unknown, context: {
|
|
99
|
+
name: string | symbol;
|
|
100
|
+
metadata: DecoratorMetadataObject;
|
|
101
|
+
}) => void;
|
|
102
|
+
/**
|
|
103
|
+
* Gets the editable properties for a given target using TC39 decorator metadata.
|
|
104
|
+
* Walks the metadata prototype chain to include properties from parent classes.
|
|
105
|
+
* @param target - the target object (instance or constructor)
|
|
106
|
+
* @returns array of property descriptions
|
|
107
|
+
*/
|
|
108
|
+
export declare function GetEditableProperties(target: any): IPropertyDescriptionForEdition[];
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { MetadataSymbol } from "../Misc/decorators.functions.js";
|
|
1
2
|
/**
|
|
2
3
|
* Enum defining the type of properties that can be edited in the property pages in the node editor
|
|
3
4
|
*/
|
|
@@ -42,20 +43,56 @@ export var PropertyTypeForEdition;
|
|
|
42
43
|
*/
|
|
43
44
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
44
45
|
export function editableInPropertyPage(displayName, propertyType = 0 /* PropertyTypeForEdition.Boolean */, groupName = "PROPERTIES", options) {
|
|
45
|
-
return (
|
|
46
|
-
|
|
47
|
-
if (!
|
|
46
|
+
return (_value, context) => {
|
|
47
|
+
const meta = context.metadata;
|
|
48
|
+
if (!meta) {
|
|
49
|
+
// `context.metadata` is `void 0` when `Symbol.metadata` was not installed before this class
|
|
50
|
+
// was evaluated. Importing `MetadataSymbol` from decorators.functions runs the polyfill at
|
|
51
|
+
// module load (before this class body), so this should never happen; referencing it here also
|
|
52
|
+
// keeps that module-load polyfill anchored against bundler tree-shaking.
|
|
53
|
+
throw new Error(`editableInPropertyPage: decorator metadata is unavailable; the Symbol.metadata (${String(MetadataSymbol)}) polyfill must run before decorated classes are evaluated.`);
|
|
54
|
+
}
|
|
55
|
+
let propStore;
|
|
56
|
+
if (Object.prototype.hasOwnProperty.call(meta, __bjsPropStoreKey)) {
|
|
57
|
+
propStore = meta[__bjsPropStoreKey];
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
48
60
|
propStore = [];
|
|
49
|
-
|
|
61
|
+
meta[__bjsPropStoreKey] = propStore;
|
|
50
62
|
}
|
|
51
63
|
propStore.push({
|
|
52
|
-
propertyName:
|
|
64
|
+
propertyName: String(context.name),
|
|
53
65
|
displayName: displayName,
|
|
54
66
|
type: propertyType,
|
|
55
67
|
groupName: groupName,
|
|
56
68
|
options: options ?? {},
|
|
57
|
-
className:
|
|
69
|
+
className: "",
|
|
58
70
|
});
|
|
59
71
|
};
|
|
60
72
|
}
|
|
73
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
74
|
+
const __bjsPropStoreKey = "__bjs_prop_store__";
|
|
75
|
+
/**
|
|
76
|
+
* Gets the editable properties for a given target using TC39 decorator metadata.
|
|
77
|
+
* Walks the metadata prototype chain to include properties from parent classes.
|
|
78
|
+
* @param target - the target object (instance or constructor)
|
|
79
|
+
* @returns array of property descriptions
|
|
80
|
+
*/
|
|
81
|
+
export function GetEditableProperties(target) {
|
|
82
|
+
const ctor = typeof target === "function" ? target : target?.constructor;
|
|
83
|
+
const metadata = ctor?.[MetadataSymbol];
|
|
84
|
+
if (!metadata) {
|
|
85
|
+
return [];
|
|
86
|
+
}
|
|
87
|
+
const result = [];
|
|
88
|
+
let currentMeta = metadata;
|
|
89
|
+
while (currentMeta) {
|
|
90
|
+
if (Object.prototype.hasOwnProperty.call(currentMeta, __bjsPropStoreKey)) {
|
|
91
|
+
const store = currentMeta[__bjsPropStoreKey];
|
|
92
|
+
result.push(...store);
|
|
93
|
+
}
|
|
94
|
+
currentMeta = Object.getPrototypeOf(currentMeta);
|
|
95
|
+
}
|
|
96
|
+
return result;
|
|
97
|
+
}
|
|
61
98
|
//# sourceMappingURL=nodeDecorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeDecorator.js","sourceRoot":"","sources":["../../../../dev/core/src/Decorators/nodeDecorator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nodeDecorator.js","sourceRoot":"","sources":["../../../../dev/core/src/Decorators/nodeDecorator.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"../types\";\r\nimport { type Scene } from \"../scene\";\r\nimport { MetadataSymbol } from \"../Misc/decorators.functions\";\r\n\r\n/**\r\n * Enum defining the type of properties that can be edited in the property pages in the node editor\r\n */\r\nexport const enum PropertyTypeForEdition {\r\n /** property is a boolean */\r\n Boolean,\r\n /** property is a float */\r\n Float,\r\n /** property is a int */\r\n Int,\r\n /** property is a Vector2 */\r\n Vector2,\r\n /** property is a Vector3 */\r\n Vector3,\r\n /** property is a list of values */\r\n List,\r\n /** property is a Color3 */\r\n Color3,\r\n /** property is a Color4 */\r\n Color4,\r\n /** property (int) should be edited as a combo box with a list of sampling modes */\r\n SamplingMode,\r\n /** property (int) should be edited as a combo box with a list of texture formats */\r\n TextureFormat,\r\n /** property (int) should be edited as a combo box with a list of texture types */\r\n TextureType,\r\n /** property is a string */\r\n String,\r\n /** property is a matrix */\r\n Matrix,\r\n /** property is a viewport */\r\n Viewport,\r\n}\r\n\r\n/**\r\n * Interface that defines an option in a variable of type list\r\n */\r\nexport interface IEditablePropertyListOption {\r\n /** label of the option */\r\n label: string;\r\n /** value of the option */\r\n value: number;\r\n}\r\n\r\n/**\r\n * Interface that defines the options available for an editable property\r\n */\r\nexport interface IEditablePropertyOption {\r\n /**\r\n * Define if the property is displayed inside the source block or in a separate property tab\r\n */\r\n embedded?: boolean;\r\n /** min value */\r\n min?: number;\r\n /** max value */\r\n max?: number;\r\n /** notifiers: indicates which actions to take when the property is changed */\r\n notifiers?: {\r\n /** the entity should be rebuilt */\r\n rebuild?: boolean;\r\n /** the preview should be updated */\r\n update?: boolean;\r\n /** the onPreviewCommandActivated observer of the preview manager should be triggered */\r\n activatePreviewCommand?: boolean;\r\n /** a callback to trigger */\r\n callback?: (scene: Nullable<Scene>, block: any) => boolean | undefined | void;\r\n /** a callback to validate the property. Returns true if the property is ok, else false. If false, the rebuild/update/callback events won't be called */\r\n onValidation?: (block: any, propertyName: string) => boolean;\r\n };\r\n /** list of the options for a variable of type list */\r\n options?: IEditablePropertyListOption[];\r\n}\r\n\r\n/**\r\n * Interface that describes an editable property\r\n */\r\nexport interface IPropertyDescriptionForEdition {\r\n /** name of the property */\r\n propertyName: string;\r\n /** display name of the property */\r\n displayName: string;\r\n /** type of the property */\r\n type: PropertyTypeForEdition;\r\n /** group of the property - all properties with the same group value will be displayed in a specific section */\r\n groupName: string;\r\n /** options for the property */\r\n options: IEditablePropertyOption;\r\n /** name of the class that contains the property */\r\n className: string;\r\n}\r\n\r\n/**\r\n * Decorator that flags a property in a node block as being editable\r\n * @param displayName the display name of the property\r\n * @param propertyType the type of the property\r\n * @param groupName the group name of the property\r\n * @param options the options of the property\r\n * @returns the decorator\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function editableInPropertyPage(\r\n displayName: string,\r\n propertyType: PropertyTypeForEdition = PropertyTypeForEdition.Boolean,\r\n groupName: string = \"PROPERTIES\",\r\n options?: IEditablePropertyOption\r\n) {\r\n return (_value: unknown, context: { name: string | symbol; metadata: DecoratorMetadataObject }) => {\r\n const meta = context.metadata as DecoratorMetadataObject | undefined;\r\n if (!meta) {\r\n // `context.metadata` is `void 0` when `Symbol.metadata` was not installed before this class\r\n // was evaluated. Importing `MetadataSymbol` from decorators.functions runs the polyfill at\r\n // module load (before this class body), so this should never happen; referencing it here also\r\n // keeps that module-load polyfill anchored against bundler tree-shaking.\r\n throw new Error(\r\n `editableInPropertyPage: decorator metadata is unavailable; the Symbol.metadata (${String(MetadataSymbol)}) polyfill must run before decorated classes are evaluated.`\r\n );\r\n }\r\n let propStore: IPropertyDescriptionForEdition[];\r\n if (Object.prototype.hasOwnProperty.call(meta, __bjsPropStoreKey)) {\r\n propStore = meta[__bjsPropStoreKey] as IPropertyDescriptionForEdition[];\r\n } else {\r\n propStore = [];\r\n meta[__bjsPropStoreKey] = propStore;\r\n }\r\n propStore.push({\r\n propertyName: String(context.name),\r\n displayName: displayName,\r\n type: propertyType,\r\n groupName: groupName,\r\n options: options ?? {},\r\n className: \"\",\r\n });\r\n };\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nconst __bjsPropStoreKey = \"__bjs_prop_store__\";\r\n\r\n/**\r\n * Gets the editable properties for a given target using TC39 decorator metadata.\r\n * Walks the metadata prototype chain to include properties from parent classes.\r\n * @param target - the target object (instance or constructor)\r\n * @returns array of property descriptions\r\n */\r\nexport function GetEditableProperties(target: any): IPropertyDescriptionForEdition[] {\r\n const ctor = typeof target === \"function\" ? target : target?.constructor;\r\n const metadata: DecoratorMetadataObject | undefined = ctor?.[MetadataSymbol];\r\n if (!metadata) {\r\n return [];\r\n }\r\n\r\n const result: IPropertyDescriptionForEdition[] = [];\r\n let currentMeta: any = metadata;\r\n while (currentMeta) {\r\n if (Object.prototype.hasOwnProperty.call(currentMeta, __bjsPropStoreKey)) {\r\n const store = currentMeta[__bjsPropStoreKey] as IPropertyDescriptionForEdition[];\r\n result.push(...store);\r\n }\r\n currentMeta = Object.getPrototypeOf(currentMeta);\r\n }\r\n return result;\r\n}\r\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** This file must only contain pure code and pure imports */
|
|
2
2
|
import { AbstractEngine } from "../../Engines/abstractEngine.pure.js";
|
|
3
|
+
import { RegisterFileTools } from "../../Misc/fileTools.pure.js";
|
|
3
4
|
let _Registered = false;
|
|
4
5
|
/**
|
|
5
6
|
* Register side effects for abstractEngineLoadFile.
|
|
@@ -10,6 +11,13 @@ export function RegisterAbstractEngineLoadFile() {
|
|
|
10
11
|
return;
|
|
11
12
|
}
|
|
12
13
|
_Registered = true;
|
|
14
|
+
// File loading requires the fileTools implementation (LoadFile / LoadImage).
|
|
15
|
+
// These are injected lazily through EngineFunctionContext so that engines
|
|
16
|
+
// that never load files (e.g. the minimal thin engine) do not force-link
|
|
17
|
+
// fileTools. Any consumer of the loadFile extension — the full Engine
|
|
18
|
+
// side-effect wrapper and RegisterStandardEngineExtensions — reaches this
|
|
19
|
+
// registration, which wires the fileTools loaders in.
|
|
20
|
+
RegisterFileTools();
|
|
13
21
|
AbstractEngine.prototype._loadFileAsync = async function (url, offlineProvider, useArrayBuffer) {
|
|
14
22
|
return await new Promise((resolve, reject) => {
|
|
15
23
|
this._loadFile(url, (data) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstractEngine.loadFile.pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/AbstractEngine/abstractEngine.loadFile.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAG7D,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"abstractEngine.loadFile.pure.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/AbstractEngine/abstractEngine.loadFile.pure.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAG7D,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB;;;GAGG;AACH,MAAM,UAAU,8BAA8B;IAC1C,IAAI,WAAW,EAAE,CAAC;QACd,OAAO;IACX,CAAC;IACD,WAAW,GAAG,IAAI,CAAC;IAEnB,6EAA6E;IAC7E,0EAA0E;IAC1E,yEAAyE;IACzE,sEAAsE;IACtE,0EAA0E;IAC1E,sDAAsD;IACtD,iBAAiB,EAAE,CAAC;IAEpB,cAAc,CAAC,SAAS,CAAC,cAAc,GAAG,KAAK,WAAW,GAAW,EAAE,eAAkC,EAAE,cAAwB;QAC/H,OAAO,MAAM,IAAI,OAAO,CAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/D,IAAI,CAAC,SAAS,CACV,GAAG,EACH,CAAC,IAAI,EAAE,EAAE;gBACL,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,EACD,SAAS,EACT,eAAe,EACf,cAAc,EACd,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE;gBACnB,2EAA2E;gBAC3E,MAAM,CAAC,SAAS,CAAC,CAAC;YACtB,CAAC,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;AACN,CAAC","sourcesContent":["/** This file must only contain pure code and pure imports */\r\n\r\nimport { type IOfflineProvider } from \"../../Offline/IOfflineProvider\";\r\nimport { AbstractEngine } from \"../../Engines/abstractEngine.pure\";\r\nimport { RegisterFileTools } from \"../../Misc/fileTools.pure\";\r\n\r\nlet _Registered = false;\r\n/**\r\n * Register side effects for abstractEngineLoadFile.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterAbstractEngineLoadFile(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n // File loading requires the fileTools implementation (LoadFile / LoadImage).\r\n // These are injected lazily through EngineFunctionContext so that engines\r\n // that never load files (e.g. the minimal thin engine) do not force-link\r\n // fileTools. Any consumer of the loadFile extension — the full Engine\r\n // side-effect wrapper and RegisterStandardEngineExtensions — reaches this\r\n // registration, which wires the fileTools loaders in.\r\n RegisterFileTools();\r\n\r\n AbstractEngine.prototype._loadFileAsync = async function (url: string, offlineProvider?: IOfflineProvider, useArrayBuffer?: boolean): Promise<any> {\r\n return await new Promise<string | ArrayBuffer>((resolve, reject) => {\r\n this._loadFile(\r\n url,\r\n (data) => {\r\n resolve(data);\r\n },\r\n undefined,\r\n offlineProvider,\r\n useArrayBuffer,\r\n (request, exception) => {\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n reject(exception);\r\n }\r\n );\r\n });\r\n };\r\n}\r\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/naming-convention */
|
|
2
2
|
import { ErrorCodes, RuntimeError } from "../../Misc/error.js";
|
|
3
|
+
import { Logger } from "../../Misc/logger.js";
|
|
3
4
|
|
|
4
5
|
import { VertexBuffer } from "../../Buffers/buffer.pure.js";
|
|
5
6
|
export function getNativeTextureFormat(format, type) {
|
|
@@ -283,6 +284,16 @@ export function getNativeStencilDepthPass(opPass) {
|
|
|
283
284
|
throw new Error(`Unsupported stencil opPass mode: ${opPass}.`);
|
|
284
285
|
}
|
|
285
286
|
}
|
|
287
|
+
const _warnedUnsupportedAlphaModes = new Set();
|
|
288
|
+
// Some alpha modes were introduced alongside newer Babylon Native features. When running against an older
|
|
289
|
+
// native binary the corresponding _native.Engine constant is undefined; warn once and fall back to ALPHA_ONEONE.
|
|
290
|
+
function _getFallbackAlphaMode(mode, unsupportedName) {
|
|
291
|
+
if (!_warnedUnsupportedAlphaModes.has(mode)) {
|
|
292
|
+
_warnedUnsupportedAlphaModes.add(mode);
|
|
293
|
+
Logger.Warn(`Alpha mode ${unsupportedName} is not supported by this version of Babylon Native; falling back to ALPHA_ONEONE.`);
|
|
294
|
+
}
|
|
295
|
+
return _native.Engine.ALPHA_ONEONE;
|
|
296
|
+
}
|
|
286
297
|
export function getNativeAlphaMode(mode) {
|
|
287
298
|
switch (mode) {
|
|
288
299
|
case 0:
|
|
@@ -299,6 +310,10 @@ export function getNativeAlphaMode(mode) {
|
|
|
299
310
|
return _native.Engine.ALPHA_MAXIMIZED;
|
|
300
311
|
case 6:
|
|
301
312
|
return _native.Engine.ALPHA_ONEONE;
|
|
313
|
+
case 11:
|
|
314
|
+
return _native.Engine.ALPHA_ONEONE_ONEONE ?? _getFallbackAlphaMode(mode, "ALPHA_ONEONE_ONEONE");
|
|
315
|
+
case 17:
|
|
316
|
+
return _native.Engine.ALPHA_LAYER_ACCUMULATE ?? _getFallbackAlphaMode(mode, "ALPHA_LAYER_ACCUMULATE");
|
|
302
317
|
case 7:
|
|
303
318
|
return _native.Engine.ALPHA_PREMULTIPLIED;
|
|
304
319
|
case 8:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nativeHelpers.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/Native/nativeHelpers.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIxD,MAAM,UAAU,sBAAsB,CAAC,MAAc,EAAE,IAAY;IAC/D,QAAQ,MAAM,EAAE,CAAC;QACb,0BAA0B;QAC1B,KAAK,SAAS,CAAC,qBAAqB;YAChC,OAAO,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;QAC7C,KAAK,SAAS,CAAC,qBAAqB;YAChC,OAAO,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;QAC7C,KAAK,SAAS,CAAC,8BAA8B;YACzC,OAAO,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;QAC/C,KAAK,SAAS,CAAC,2BAA2B;YACtC,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAE9C,+BAA+B;QAC/B,KAAK,SAAS,CAAC,wCAAwC;YACnD,OAAO,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;QAC7C,KAAK,SAAS,CAAC,8CAA8C;YACzD,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAC9C,KAAK,SAAS,CAAC,uCAAuC;YAClD,OAAO,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;QAC7C,KAAK,SAAS,CAAC,uCAAuC;YAClD,OAAO,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;QAC7C,KAAK,SAAS,CAAC,uCAAuC;YAClD,OAAO,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;QAC7C,KAAK,SAAS,CAAC,sCAAsC;YACjD,OAAO,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;QAC7C,KAAK,SAAS,CAAC,sCAAsC;YACjD,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjD,KAAK,SAAS,CAAC,sCAAsC;YACjD,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjD,KAAK,SAAS,CAAC,sCAAsC;YACjD,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjD,KAAK,SAAS,CAAC,sCAAsC;YACjD,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjD,KAAK,SAAS,CAAC,sCAAsC;YACjD,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjD,KAAK,SAAS,CAAC,sCAAsC;YACjD,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjD,KAAK,SAAS,CAAC,sCAAsC;YACjD,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjD,KAAK,SAAS,CAAC,sCAAsC;YACjD,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjD,KAAK,SAAS,CAAC,uCAAuC;YAClD,OAAO,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC;QAClD,KAAK,SAAS,CAAC,uCAAuC;YAClD,OAAO,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC;QAClD,KAAK,SAAS,CAAC,uCAAuC;YAClD,OAAO,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC;QAClD,KAAK,SAAS,CAAC,wCAAwC;YACnD,OAAO,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC;QACnD,KAAK,SAAS,CAAC,wCAAwC;YACnD,OAAO,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC;QACnD,KAAK,SAAS,CAAC,wCAAwC;YACnD,OAAO,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC;QACnD,KAAK,SAAS,CAAC,uCAAuC;YAClD,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAC9C,KAAK,SAAS,CAAC,kCAAkC;YAC7C,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAC9C,KAAK,SAAS,CAAC,uCAAuC;YAClD,OAAO,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;QAE/C,KAAK,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC/B,QAAQ,IAAI,EAAE,CAAC;gBACX,KAAK,SAAS,CAAC,yBAAyB;oBACpC,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;gBAC9C,KAAK,SAAS,CAAC,gBAAgB;oBAC3B,OAAO,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;gBAC/C,KAAK,SAAS,CAAC,eAAe;oBAC1B,OAAO,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;gBAC/C,KAAK,SAAS,CAAC,4BAA4B;oBACvC,OAAO,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;YACnD,CAAC;YACD,MAAM;QACV,CAAC;QAED,KAAK,SAAS,CAAC,0BAA0B,CAAC,CAAC,CAAC;YACxC,QAAQ,IAAI,EAAE,CAAC;gBACX,KAAK,SAAS,CAAC,4BAA4B;oBACvC,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;YACrD,CAAC;YACD,MAAM;QACV,CAAC;QAED,KAAK,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAChC,QAAQ,IAAI,EAAE,CAAC;gBACX,KAAK,SAAS,CAAC,yBAAyB;oBACpC,OAAO,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;gBAC/C,KAAK,SAAS,CAAC,iBAAiB;oBAC5B,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;gBACjD,KAAK,SAAS,CAAC,sBAAsB;oBACjC,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;gBACjD,KAAK,SAAS,CAAC,gBAAgB;oBAC3B,OAAO,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC;gBAChD,KAAK,SAAS,CAAC,iBAAiB;oBAC5B,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;gBACjD,KAAK,SAAS,CAAC,0BAA0B;oBACrC,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;gBACjD,KAAK,SAAS,CAAC,eAAe;oBAC1B,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;gBACjD,KAAK,SAAS,CAAC,4BAA4B;oBACvC,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;YACrD,CAAC;YACD,MAAM;QACV,CAAC;QACD,KAAK,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;YAC7B,QAAQ,IAAI,EAAE,CAAC;gBACX,KAAK,SAAS,CAAC,yBAAyB;oBACpC,OAAO,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;gBAC5C,KAAK,SAAS,CAAC,iBAAiB;oBAC5B,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;gBAC9C,KAAK,SAAS,CAAC,sBAAsB;oBACjC,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;gBAC9C,KAAK,SAAS,CAAC,gBAAgB;oBAC3B,OAAO,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;gBAC7C,KAAK,SAAS,CAAC,iBAAiB;oBAC5B,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;gBAC9C,KAAK,SAAS,CAAC,0BAA0B;oBACrC,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;gBAC9C,KAAK,SAAS,CAAC,eAAe;oBAC1B,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;gBAC9C,KAAK,SAAS,CAAC,4BAA4B;oBACvC,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;YAClD,CAAC;YACD,MAAM;QACV,CAAC;QACD,KAAK,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC9B,QAAQ,IAAI,EAAE,CAAC;gBACX,KAAK,SAAS,CAAC,yBAAyB;oBACpC,OAAO,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;gBAC7C,KAAK,SAAS,CAAC,iBAAiB;oBAC5B,OAAO,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;gBAC/C,KAAK,SAAS,CAAC,sBAAsB;oBACjC,OAAO,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;gBAC/C,KAAK,SAAS,CAAC,gBAAgB;oBAC3B,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;gBAC9C,KAAK,SAAS,CAAC,iBAAiB;oBAC5B,OAAO,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;gBAC/C,KAAK,SAAS,CAAC,0BAA0B;oBACrC,OAAO,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;gBAC/C,KAAK,SAAS,CAAC,eAAe;oBAC1B,OAAO,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;gBAC/C,KAAK,SAAS,CAAC,4BAA4B;oBACvC,OAAO,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;YACnD,CAAC;YACD,MAAM;QACV,CAAC;QACD,KAAK,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAChC,QAAQ,IAAI,EAAE,CAAC;gBACX,KAAK,SAAS,CAAC,yBAAyB;oBACpC,OAAO,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;YACnD,CAAC;YACD,MAAM;QACV,CAAC;IACL,CAAC;IAED,MAAM,IAAI,YAAY,CAAC,8CAA8C,MAAM,UAAU,IAAI,GAAG,EAAE,UAAU,CAAC,uBAAuB,CAAC,CAAC;AACtI,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,YAAoB;IACtD,QAAQ,YAAY,EAAE,CAAC;QACnB,KAAK,SAAS,CAAC,uBAAuB;YAClC,OAAO,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC;QAClD,KAAK,SAAS,CAAC,qBAAqB;YAChC,OAAO,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC;QAChD,KAAK,SAAS,CAAC,+BAA+B;YAC1C,OAAO,OAAO,CAAC,MAAM,CAAC,+BAA+B,CAAC;QAC1D,KAAK,SAAS,CAAC,kCAAkC;YAC7C,OAAO,OAAO,CAAC,MAAM,CAAC,kCAAkC,CAAC;QAC7D,KAAK,SAAS,CAAC,iCAAiC;YAC5C,OAAO,OAAO,CAAC,MAAM,CAAC,iCAAiC,CAAC;QAC5D,KAAK,SAAS,CAAC,gCAAgC;YAC3C,OAAO,OAAO,CAAC,MAAM,CAAC,gCAAgC,CAAC;QAC3D,KAAK,SAAS,CAAC,sBAAsB;YACjC,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjD,KAAK,SAAS,CAAC,iCAAiC;YAC5C,OAAO,OAAO,CAAC,MAAM,CAAC,iCAAiC,CAAC;QAC5D,KAAK,SAAS,CAAC,iCAAiC;YAC5C,OAAO,OAAO,CAAC,MAAM,CAAC,iCAAiC,CAAC;QAC5D,KAAK,SAAS,CAAC,gCAAgC;YAC3C,OAAO,OAAO,CAAC,MAAM,CAAC,gCAAgC,CAAC;QAC3D,KAAK,SAAS,CAAC,gCAAgC;YAC3C,OAAO,OAAO,CAAC,MAAM,CAAC,gCAAgC,CAAC;QAC3D,KAAK,SAAS,CAAC,sBAAsB;YACjC,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjD;YACI,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,GAAG,CAAC,CAAC;IACvE,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACjD,QAAQ,QAAQ,EAAE,CAAC;QACf,KAAK,SAAS,CAAC,wBAAwB;YACnC,OAAO,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;QAC5C,KAAK,SAAS,CAAC,yBAAyB;YACpC,OAAO,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;QAC7C,KAAK,SAAS,CAAC,0BAA0B;YACrC,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAC9C;YACI,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,QAAQ,GAAG,GAAG,CAAC,CAAC;IACnE,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC7C,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,SAAS,CAAC,IAAI;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;QAC5C,KAAK,SAAS,CAAC,MAAM;YACjB,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAC9C,KAAK,SAAS,CAAC,KAAK;YAChB,OAAO,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;QAC7C,KAAK,SAAS,CAAC,MAAM;YACjB,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAC9C,KAAK,SAAS,CAAC,OAAO;YAClB,OAAO,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC;QAC/C,KAAK,SAAS,CAAC,QAAQ;YACnB,OAAO,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAAC;QAChD,KAAK,SAAS,CAAC,KAAK;YAChB,OAAO,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;QAC7C,KAAK,SAAS,CAAC,MAAM;YACjB,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAC9C;YACI,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,GAAG,CAAC,CAAC;IACnE,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAc;IACjD,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,SAAS,CAAC,IAAI;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjD,KAAK,SAAS,CAAC,IAAI;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjD,KAAK,SAAS,CAAC,OAAO;YAClB,OAAO,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC;QACpD,KAAK,SAAS,CAAC,IAAI;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjD,KAAK,SAAS,CAAC,IAAI;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjD,KAAK,SAAS,CAAC,MAAM;YACjB,OAAO,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC;QACnD,KAAK,SAAS,CAAC,SAAS;YACpB,OAAO,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC;QACpD,KAAK,SAAS,CAAC,SAAS;YACpB,OAAO,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC;QACpD;YACI,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,GAAG,CAAC,CAAC;IACvE,CAAC;AACL,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,SAAiB;IACvD,QAAQ,SAAS,EAAE,CAAC;QAChB,KAAK,SAAS,CAAC,IAAI;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjD,KAAK,SAAS,CAAC,IAAI;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjD,KAAK,SAAS,CAAC,OAAO;YAClB,OAAO,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC;QACpD,KAAK,SAAS,CAAC,IAAI;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjD,KAAK,SAAS,CAAC,IAAI;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjD,KAAK,SAAS,CAAC,MAAM;YACjB,OAAO,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC;QACnD,KAAK,SAAS,CAAC,SAAS;YACpB,OAAO,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC;QACpD,KAAK,SAAS,CAAC,SAAS;YACpB,OAAO,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC;QACpD;YACI,MAAM,IAAI,KAAK,CAAC,uCAAuC,SAAS,GAAG,CAAC,CAAC;IAC7E,CAAC;AACL,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAc;IACpD,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,SAAS,CAAC,IAAI;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjD,KAAK,SAAS,CAAC,IAAI;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjD,KAAK,SAAS,CAAC,OAAO;YAClB,OAAO,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC;QACpD,KAAK,SAAS,CAAC,IAAI;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjD,KAAK,SAAS,CAAC,IAAI;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACjD,KAAK,SAAS,CAAC,MAAM;YACjB,OAAO,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC;QACnD,KAAK,SAAS,CAAC,SAAS;YACpB,OAAO,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC;QACpD,KAAK,SAAS,CAAC,SAAS;YACpB,OAAO,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC;QACpD;YACI,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,GAAG,CAAC,CAAC;IACvE,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC3C,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,SAAS,CAAC,aAAa;YACxB,OAAO,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;QACxC,KAAK,SAAS,CAAC,SAAS;YACpB,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;QACpC,KAAK,SAAS,CAAC,aAAa;YACxB,OAAO,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;QACxC,KAAK,SAAS,CAAC,cAAc;YACzB,OAAO,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;QACzC,KAAK,SAAS,CAAC,cAAc;YACzB,OAAO,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;QACzC,KAAK,SAAS,CAAC,eAAe;YAC1B,OAAO,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC;QAC1C,KAAK,SAAS,CAAC,YAAY;YACvB,OAAO,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;QACvC,KAAK,SAAS,CAAC,mBAAmB;YAC9B,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAC9C,KAAK,SAAS,CAAC,8BAA8B;YACzC,OAAO,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC;QACzD,KAAK,SAAS,CAAC,iBAAiB;YAC5B,OAAO,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;QAC5C,KAAK,SAAS,CAAC,gBAAgB;YAC3B,OAAO,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAC3C;YACI,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,GAAG,CAAC,CAAC;IAC5D,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC5C,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,YAAY,CAAC,IAAI;YAClB,OAAO,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAC3C,KAAK,YAAY,CAAC,aAAa;YAC3B,OAAO,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;QAC5C,KAAK,YAAY,CAAC,KAAK;YACnB,OAAO,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;QAC5C,KAAK,YAAY,CAAC,cAAc;YAC5B,OAAO,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;QAC7C,KAAK,YAAY,CAAC,KAAK;YACnB,OAAO,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;QAC5C,oGAAoG;QACpG,+FAA+F;QAC/F,oGAAoG;QACpG;YACI,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,GAAG,CAAC,CAAC;IAChE,CAAC;AACL,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { ErrorCodes, RuntimeError } from \"core/Misc/error\";\r\nimport { Constants } from \"../constants\";\r\nimport { type INative } from \"./nativeInterfaces\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer.pure\";\r\n\r\ndeclare const _native: INative;\r\n\r\nexport function getNativeTextureFormat(format: number, type: number): number {\r\n switch (format) {\r\n // Depth (type is ignored)\r\n case Constants.TEXTUREFORMAT_DEPTH16:\r\n return _native.Engine.TEXTURE_FORMAT_D16;\r\n case Constants.TEXTUREFORMAT_DEPTH24:\r\n return _native.Engine.TEXTURE_FORMAT_D24;\r\n case Constants.TEXTUREFORMAT_DEPTH24_STENCIL8:\r\n return _native.Engine.TEXTURE_FORMAT_D24S8;\r\n case Constants.TEXTUREFORMAT_DEPTH32_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_D32F;\r\n\r\n // Compressed (type is ignored)\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_BPTC_UNORM:\r\n return _native.Engine.TEXTURE_FORMAT_BC7;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGB_BPTC_SIGNED_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_BC6H;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT5:\r\n return _native.Engine.TEXTURE_FORMAT_BC3;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT3:\r\n return _native.Engine.TEXTURE_FORMAT_BC2;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT1:\r\n return _native.Engine.TEXTURE_FORMAT_BC1;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGB_S3TC_DXT1:\r\n return _native.Engine.TEXTURE_FORMAT_BC1;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_4x4:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC4x4;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x4:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC5x4;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x5:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC5x5;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x5:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC6x5;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x6:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC6x6;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x5:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC8x5;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x6:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC8x6;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x8:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC8x8;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x5:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC10x5;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x6:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC10x6;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x8:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC10x8;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x10:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC10x10;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x10:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC12x10;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x12:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC12x12;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGB_ETC1_WEBGL:\r\n return _native.Engine.TEXTURE_FORMAT_ETC1;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGB8_ETC2:\r\n return _native.Engine.TEXTURE_FORMAT_ETC2;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA8_ETC2_EAC:\r\n return _native.Engine.TEXTURE_FORMAT_ETC2A;\r\n\r\n case Constants.TEXTUREFORMAT_RGB: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RGB8;\r\n case Constants.TEXTURETYPE_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RGB8S;\r\n case Constants.TEXTURETYPE_INT:\r\n return _native.Engine.TEXTURE_FORMAT_RGB8I;\r\n case Constants.TEXTURETYPE_UNSIGNED_INTEGER:\r\n return _native.Engine.TEXTURE_FORMAT_RGB8U;\r\n }\r\n break;\r\n }\r\n\r\n case Constants.TEXTUREFORMAT_RGBA_INTEGER: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_INTEGER:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA32U;\r\n }\r\n break;\r\n }\r\n\r\n case Constants.TEXTUREFORMAT_RGBA: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA8;\r\n case Constants.TEXTURETYPE_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA32F;\r\n case Constants.TEXTURETYPE_HALF_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA16F;\r\n case Constants.TEXTURETYPE_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA8S;\r\n case Constants.TEXTURETYPE_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA16I;\r\n case Constants.TEXTURETYPE_UNSIGNED_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA16U;\r\n case Constants.TEXTURETYPE_INT:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA32I;\r\n case Constants.TEXTURETYPE_UNSIGNED_INTEGER:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA32U;\r\n }\r\n break;\r\n }\r\n case Constants.TEXTUREFORMAT_R: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_R8;\r\n case Constants.TEXTURETYPE_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_R32F;\r\n case Constants.TEXTURETYPE_HALF_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_R16F;\r\n case Constants.TEXTURETYPE_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_R8S;\r\n case Constants.TEXTURETYPE_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_R16S;\r\n case Constants.TEXTURETYPE_UNSIGNED_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_R16U;\r\n case Constants.TEXTURETYPE_INT:\r\n return _native.Engine.TEXTURE_FORMAT_R32I;\r\n case Constants.TEXTURETYPE_UNSIGNED_INTEGER:\r\n return _native.Engine.TEXTURE_FORMAT_R32U;\r\n }\r\n break;\r\n }\r\n case Constants.TEXTUREFORMAT_RG: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RG8;\r\n case Constants.TEXTURETYPE_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_RG32F;\r\n case Constants.TEXTURETYPE_HALF_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_RG16F;\r\n case Constants.TEXTURETYPE_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RG8S;\r\n case Constants.TEXTURETYPE_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_RG16S;\r\n case Constants.TEXTURETYPE_UNSIGNED_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_RG16U;\r\n case Constants.TEXTURETYPE_INT:\r\n return _native.Engine.TEXTURE_FORMAT_RG32I;\r\n case Constants.TEXTURETYPE_UNSIGNED_INTEGER:\r\n return _native.Engine.TEXTURE_FORMAT_RG32U;\r\n }\r\n break;\r\n }\r\n case Constants.TEXTUREFORMAT_BGRA: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_BGRA8;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n throw new RuntimeError(`Unsupported texture format or type: format ${format}, type ${type}.`, ErrorCodes.UnsupportedTextureError);\r\n}\r\n\r\nexport function getNativeSamplingMode(samplingMode: number): number {\r\n switch (samplingMode) {\r\n case Constants.TEXTURE_NEAREST_NEAREST:\r\n return _native.Engine.TEXTURE_NEAREST_NEAREST;\r\n case Constants.TEXTURE_LINEAR_LINEAR:\r\n return _native.Engine.TEXTURE_LINEAR_LINEAR;\r\n case Constants.TEXTURE_LINEAR_LINEAR_MIPLINEAR:\r\n return _native.Engine.TEXTURE_LINEAR_LINEAR_MIPLINEAR;\r\n case Constants.TEXTURE_NEAREST_NEAREST_MIPNEAREST:\r\n return _native.Engine.TEXTURE_NEAREST_NEAREST_MIPNEAREST;\r\n case Constants.TEXTURE_NEAREST_LINEAR_MIPNEAREST:\r\n return _native.Engine.TEXTURE_NEAREST_LINEAR_MIPNEAREST;\r\n case Constants.TEXTURE_NEAREST_LINEAR_MIPLINEAR:\r\n return _native.Engine.TEXTURE_NEAREST_LINEAR_MIPLINEAR;\r\n case Constants.TEXTURE_NEAREST_LINEAR:\r\n return _native.Engine.TEXTURE_NEAREST_LINEAR;\r\n case Constants.TEXTURE_NEAREST_NEAREST_MIPLINEAR:\r\n return _native.Engine.TEXTURE_NEAREST_NEAREST_MIPLINEAR;\r\n case Constants.TEXTURE_LINEAR_NEAREST_MIPNEAREST:\r\n return _native.Engine.TEXTURE_LINEAR_NEAREST_MIPNEAREST;\r\n case Constants.TEXTURE_LINEAR_NEAREST_MIPLINEAR:\r\n return _native.Engine.TEXTURE_LINEAR_NEAREST_MIPLINEAR;\r\n case Constants.TEXTURE_LINEAR_LINEAR_MIPNEAREST:\r\n return _native.Engine.TEXTURE_LINEAR_LINEAR_MIPNEAREST;\r\n case Constants.TEXTURE_LINEAR_NEAREST:\r\n return _native.Engine.TEXTURE_LINEAR_NEAREST;\r\n default:\r\n throw new Error(`Unsupported sampling mode: ${samplingMode}.`);\r\n }\r\n}\r\n\r\nexport function getNativeAddressMode(wrapMode: number): number {\r\n switch (wrapMode) {\r\n case Constants.TEXTURE_WRAP_ADDRESSMODE:\r\n return _native.Engine.ADDRESS_MODE_WRAP;\r\n case Constants.TEXTURE_CLAMP_ADDRESSMODE:\r\n return _native.Engine.ADDRESS_MODE_CLAMP;\r\n case Constants.TEXTURE_MIRROR_ADDRESSMODE:\r\n return _native.Engine.ADDRESS_MODE_MIRROR;\r\n default:\r\n throw new Error(\"Unexpected wrap mode: \" + wrapMode + \".\");\r\n }\r\n}\r\n\r\nexport function getNativeStencilFunc(func: number): number {\r\n switch (func) {\r\n case Constants.LESS:\r\n return _native.Engine.STENCIL_TEST_LESS;\r\n case Constants.LEQUAL:\r\n return _native.Engine.STENCIL_TEST_LEQUAL;\r\n case Constants.EQUAL:\r\n return _native.Engine.STENCIL_TEST_EQUAL;\r\n case Constants.GEQUAL:\r\n return _native.Engine.STENCIL_TEST_GEQUAL;\r\n case Constants.GREATER:\r\n return _native.Engine.STENCIL_TEST_GREATER;\r\n case Constants.NOTEQUAL:\r\n return _native.Engine.STENCIL_TEST_NOTEQUAL;\r\n case Constants.NEVER:\r\n return _native.Engine.STENCIL_TEST_NEVER;\r\n case Constants.ALWAYS:\r\n return _native.Engine.STENCIL_TEST_ALWAYS;\r\n default:\r\n throw new Error(`Unsupported stencil func mode: ${func}.`);\r\n }\r\n}\r\n\r\nexport function getNativeStencilOpFail(opFail: number): number {\r\n switch (opFail) {\r\n case Constants.KEEP:\r\n return _native.Engine.STENCIL_OP_FAIL_S_KEEP;\r\n case Constants.ZERO:\r\n return _native.Engine.STENCIL_OP_FAIL_S_ZERO;\r\n case Constants.REPLACE:\r\n return _native.Engine.STENCIL_OP_FAIL_S_REPLACE;\r\n case Constants.INCR:\r\n return _native.Engine.STENCIL_OP_FAIL_S_INCR;\r\n case Constants.DECR:\r\n return _native.Engine.STENCIL_OP_FAIL_S_DECR;\r\n case Constants.INVERT:\r\n return _native.Engine.STENCIL_OP_FAIL_S_INVERT;\r\n case Constants.INCR_WRAP:\r\n return _native.Engine.STENCIL_OP_FAIL_S_INCRSAT;\r\n case Constants.DECR_WRAP:\r\n return _native.Engine.STENCIL_OP_FAIL_S_DECRSAT;\r\n default:\r\n throw new Error(`Unsupported stencil OpFail mode: ${opFail}.`);\r\n }\r\n}\r\n\r\nexport function getNativeStencilDepthFail(depthFail: number): number {\r\n switch (depthFail) {\r\n case Constants.KEEP:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_KEEP;\r\n case Constants.ZERO:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_ZERO;\r\n case Constants.REPLACE:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_REPLACE;\r\n case Constants.INCR:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_INCR;\r\n case Constants.DECR:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_DECR;\r\n case Constants.INVERT:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_INVERT;\r\n case Constants.INCR_WRAP:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_INCRSAT;\r\n case Constants.DECR_WRAP:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_DECRSAT;\r\n default:\r\n throw new Error(`Unsupported stencil depthFail mode: ${depthFail}.`);\r\n }\r\n}\r\n\r\nexport function getNativeStencilDepthPass(opPass: number): number {\r\n switch (opPass) {\r\n case Constants.KEEP:\r\n return _native.Engine.STENCIL_OP_PASS_Z_KEEP;\r\n case Constants.ZERO:\r\n return _native.Engine.STENCIL_OP_PASS_Z_ZERO;\r\n case Constants.REPLACE:\r\n return _native.Engine.STENCIL_OP_PASS_Z_REPLACE;\r\n case Constants.INCR:\r\n return _native.Engine.STENCIL_OP_PASS_Z_INCR;\r\n case Constants.DECR:\r\n return _native.Engine.STENCIL_OP_PASS_Z_DECR;\r\n case Constants.INVERT:\r\n return _native.Engine.STENCIL_OP_PASS_Z_INVERT;\r\n case Constants.INCR_WRAP:\r\n return _native.Engine.STENCIL_OP_PASS_Z_INCRSAT;\r\n case Constants.DECR_WRAP:\r\n return _native.Engine.STENCIL_OP_PASS_Z_DECRSAT;\r\n default:\r\n throw new Error(`Unsupported stencil opPass mode: ${opPass}.`);\r\n }\r\n}\r\n\r\nexport function getNativeAlphaMode(mode: number): number {\r\n switch (mode) {\r\n case Constants.ALPHA_DISABLE:\r\n return _native.Engine.ALPHA_DISABLE;\r\n case Constants.ALPHA_ADD:\r\n return _native.Engine.ALPHA_ADD;\r\n case Constants.ALPHA_COMBINE:\r\n return _native.Engine.ALPHA_COMBINE;\r\n case Constants.ALPHA_SUBTRACT:\r\n return _native.Engine.ALPHA_SUBTRACT;\r\n case Constants.ALPHA_MULTIPLY:\r\n return _native.Engine.ALPHA_MULTIPLY;\r\n case Constants.ALPHA_MAXIMIZED:\r\n return _native.Engine.ALPHA_MAXIMIZED;\r\n case Constants.ALPHA_ONEONE:\r\n return _native.Engine.ALPHA_ONEONE;\r\n case Constants.ALPHA_PREMULTIPLIED:\r\n return _native.Engine.ALPHA_PREMULTIPLIED;\r\n case Constants.ALPHA_PREMULTIPLIED_PORTERDUFF:\r\n return _native.Engine.ALPHA_PREMULTIPLIED_PORTERDUFF;\r\n case Constants.ALPHA_INTERPOLATE:\r\n return _native.Engine.ALPHA_INTERPOLATE;\r\n case Constants.ALPHA_SCREENMODE:\r\n return _native.Engine.ALPHA_SCREENMODE;\r\n default:\r\n throw new Error(`Unsupported alpha mode: ${mode}.`);\r\n }\r\n}\r\n\r\nexport function getNativeAttribType(type: number): number {\r\n switch (type) {\r\n case VertexBuffer.BYTE:\r\n return _native.Engine.ATTRIB_TYPE_INT8;\r\n case VertexBuffer.UNSIGNED_BYTE:\r\n return _native.Engine.ATTRIB_TYPE_UINT8;\r\n case VertexBuffer.SHORT:\r\n return _native.Engine.ATTRIB_TYPE_INT16;\r\n case VertexBuffer.UNSIGNED_SHORT:\r\n return _native.Engine.ATTRIB_TYPE_UINT16;\r\n case VertexBuffer.FLOAT:\r\n return _native.Engine.ATTRIB_TYPE_FLOAT;\r\n // HALF_FLOAT (as well as INT and UNSIGNED_INT) has no equivalent in the native bindings, which only\r\n // expose ATTRIB_TYPE_INT8/UINT8/INT16/UINT16/FLOAT. Those vertex attribute types are therefore\r\n // WebGL/WebGPU only and intentionally fall through to the throw below on the Babylon Native engine.\r\n default:\r\n throw new Error(`Unsupported attribute type: ${type}.`);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"nativeHelpers.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/Native/nativeHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { ErrorCodes, RuntimeError } from \"core/Misc/error\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { Constants } from \"../constants\";\r\nimport { type INative } from \"./nativeInterfaces\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer.pure\";\r\n\r\ndeclare const _native: INative;\r\n\r\nexport function getNativeTextureFormat(format: number, type: number): number {\r\n switch (format) {\r\n // Depth (type is ignored)\r\n case Constants.TEXTUREFORMAT_DEPTH16:\r\n return _native.Engine.TEXTURE_FORMAT_D16;\r\n case Constants.TEXTUREFORMAT_DEPTH24:\r\n return _native.Engine.TEXTURE_FORMAT_D24;\r\n case Constants.TEXTUREFORMAT_DEPTH24_STENCIL8:\r\n return _native.Engine.TEXTURE_FORMAT_D24S8;\r\n case Constants.TEXTUREFORMAT_DEPTH32_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_D32F;\r\n\r\n // Compressed (type is ignored)\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_BPTC_UNORM:\r\n return _native.Engine.TEXTURE_FORMAT_BC7;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGB_BPTC_SIGNED_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_BC6H;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT5:\r\n return _native.Engine.TEXTURE_FORMAT_BC3;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT3:\r\n return _native.Engine.TEXTURE_FORMAT_BC2;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT1:\r\n return _native.Engine.TEXTURE_FORMAT_BC1;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGB_S3TC_DXT1:\r\n return _native.Engine.TEXTURE_FORMAT_BC1;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_4x4:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC4x4;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x4:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC5x4;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x5:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC5x5;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x5:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC6x5;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x6:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC6x6;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x5:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC8x5;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x6:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC8x6;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x8:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC8x8;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x5:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC10x5;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x6:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC10x6;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x8:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC10x8;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x10:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC10x10;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x10:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC12x10;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x12:\r\n return _native.Engine.TEXTURE_FORMAT_ASTC12x12;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGB_ETC1_WEBGL:\r\n return _native.Engine.TEXTURE_FORMAT_ETC1;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGB8_ETC2:\r\n return _native.Engine.TEXTURE_FORMAT_ETC2;\r\n case Constants.TEXTUREFORMAT_COMPRESSED_RGBA8_ETC2_EAC:\r\n return _native.Engine.TEXTURE_FORMAT_ETC2A;\r\n\r\n case Constants.TEXTUREFORMAT_RGB: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RGB8;\r\n case Constants.TEXTURETYPE_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RGB8S;\r\n case Constants.TEXTURETYPE_INT:\r\n return _native.Engine.TEXTURE_FORMAT_RGB8I;\r\n case Constants.TEXTURETYPE_UNSIGNED_INTEGER:\r\n return _native.Engine.TEXTURE_FORMAT_RGB8U;\r\n }\r\n break;\r\n }\r\n\r\n case Constants.TEXTUREFORMAT_RGBA_INTEGER: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_INTEGER:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA32U;\r\n }\r\n break;\r\n }\r\n\r\n case Constants.TEXTUREFORMAT_RGBA: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA8;\r\n case Constants.TEXTURETYPE_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA32F;\r\n case Constants.TEXTURETYPE_HALF_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA16F;\r\n case Constants.TEXTURETYPE_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA8S;\r\n case Constants.TEXTURETYPE_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA16I;\r\n case Constants.TEXTURETYPE_UNSIGNED_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA16U;\r\n case Constants.TEXTURETYPE_INT:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA32I;\r\n case Constants.TEXTURETYPE_UNSIGNED_INTEGER:\r\n return _native.Engine.TEXTURE_FORMAT_RGBA32U;\r\n }\r\n break;\r\n }\r\n case Constants.TEXTUREFORMAT_R: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_R8;\r\n case Constants.TEXTURETYPE_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_R32F;\r\n case Constants.TEXTURETYPE_HALF_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_R16F;\r\n case Constants.TEXTURETYPE_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_R8S;\r\n case Constants.TEXTURETYPE_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_R16S;\r\n case Constants.TEXTURETYPE_UNSIGNED_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_R16U;\r\n case Constants.TEXTURETYPE_INT:\r\n return _native.Engine.TEXTURE_FORMAT_R32I;\r\n case Constants.TEXTURETYPE_UNSIGNED_INTEGER:\r\n return _native.Engine.TEXTURE_FORMAT_R32U;\r\n }\r\n break;\r\n }\r\n case Constants.TEXTUREFORMAT_RG: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RG8;\r\n case Constants.TEXTURETYPE_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_RG32F;\r\n case Constants.TEXTURETYPE_HALF_FLOAT:\r\n return _native.Engine.TEXTURE_FORMAT_RG16F;\r\n case Constants.TEXTURETYPE_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_RG8S;\r\n case Constants.TEXTURETYPE_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_RG16S;\r\n case Constants.TEXTURETYPE_UNSIGNED_SHORT:\r\n return _native.Engine.TEXTURE_FORMAT_RG16U;\r\n case Constants.TEXTURETYPE_INT:\r\n return _native.Engine.TEXTURE_FORMAT_RG32I;\r\n case Constants.TEXTURETYPE_UNSIGNED_INTEGER:\r\n return _native.Engine.TEXTURE_FORMAT_RG32U;\r\n }\r\n break;\r\n }\r\n case Constants.TEXTUREFORMAT_BGRA: {\r\n switch (type) {\r\n case Constants.TEXTURETYPE_UNSIGNED_BYTE:\r\n return _native.Engine.TEXTURE_FORMAT_BGRA8;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n throw new RuntimeError(`Unsupported texture format or type: format ${format}, type ${type}.`, ErrorCodes.UnsupportedTextureError);\r\n}\r\n\r\nexport function getNativeSamplingMode(samplingMode: number): number {\r\n switch (samplingMode) {\r\n case Constants.TEXTURE_NEAREST_NEAREST:\r\n return _native.Engine.TEXTURE_NEAREST_NEAREST;\r\n case Constants.TEXTURE_LINEAR_LINEAR:\r\n return _native.Engine.TEXTURE_LINEAR_LINEAR;\r\n case Constants.TEXTURE_LINEAR_LINEAR_MIPLINEAR:\r\n return _native.Engine.TEXTURE_LINEAR_LINEAR_MIPLINEAR;\r\n case Constants.TEXTURE_NEAREST_NEAREST_MIPNEAREST:\r\n return _native.Engine.TEXTURE_NEAREST_NEAREST_MIPNEAREST;\r\n case Constants.TEXTURE_NEAREST_LINEAR_MIPNEAREST:\r\n return _native.Engine.TEXTURE_NEAREST_LINEAR_MIPNEAREST;\r\n case Constants.TEXTURE_NEAREST_LINEAR_MIPLINEAR:\r\n return _native.Engine.TEXTURE_NEAREST_LINEAR_MIPLINEAR;\r\n case Constants.TEXTURE_NEAREST_LINEAR:\r\n return _native.Engine.TEXTURE_NEAREST_LINEAR;\r\n case Constants.TEXTURE_NEAREST_NEAREST_MIPLINEAR:\r\n return _native.Engine.TEXTURE_NEAREST_NEAREST_MIPLINEAR;\r\n case Constants.TEXTURE_LINEAR_NEAREST_MIPNEAREST:\r\n return _native.Engine.TEXTURE_LINEAR_NEAREST_MIPNEAREST;\r\n case Constants.TEXTURE_LINEAR_NEAREST_MIPLINEAR:\r\n return _native.Engine.TEXTURE_LINEAR_NEAREST_MIPLINEAR;\r\n case Constants.TEXTURE_LINEAR_LINEAR_MIPNEAREST:\r\n return _native.Engine.TEXTURE_LINEAR_LINEAR_MIPNEAREST;\r\n case Constants.TEXTURE_LINEAR_NEAREST:\r\n return _native.Engine.TEXTURE_LINEAR_NEAREST;\r\n default:\r\n throw new Error(`Unsupported sampling mode: ${samplingMode}.`);\r\n }\r\n}\r\n\r\nexport function getNativeAddressMode(wrapMode: number): number {\r\n switch (wrapMode) {\r\n case Constants.TEXTURE_WRAP_ADDRESSMODE:\r\n return _native.Engine.ADDRESS_MODE_WRAP;\r\n case Constants.TEXTURE_CLAMP_ADDRESSMODE:\r\n return _native.Engine.ADDRESS_MODE_CLAMP;\r\n case Constants.TEXTURE_MIRROR_ADDRESSMODE:\r\n return _native.Engine.ADDRESS_MODE_MIRROR;\r\n default:\r\n throw new Error(\"Unexpected wrap mode: \" + wrapMode + \".\");\r\n }\r\n}\r\n\r\nexport function getNativeStencilFunc(func: number): number {\r\n switch (func) {\r\n case Constants.LESS:\r\n return _native.Engine.STENCIL_TEST_LESS;\r\n case Constants.LEQUAL:\r\n return _native.Engine.STENCIL_TEST_LEQUAL;\r\n case Constants.EQUAL:\r\n return _native.Engine.STENCIL_TEST_EQUAL;\r\n case Constants.GEQUAL:\r\n return _native.Engine.STENCIL_TEST_GEQUAL;\r\n case Constants.GREATER:\r\n return _native.Engine.STENCIL_TEST_GREATER;\r\n case Constants.NOTEQUAL:\r\n return _native.Engine.STENCIL_TEST_NOTEQUAL;\r\n case Constants.NEVER:\r\n return _native.Engine.STENCIL_TEST_NEVER;\r\n case Constants.ALWAYS:\r\n return _native.Engine.STENCIL_TEST_ALWAYS;\r\n default:\r\n throw new Error(`Unsupported stencil func mode: ${func}.`);\r\n }\r\n}\r\n\r\nexport function getNativeStencilOpFail(opFail: number): number {\r\n switch (opFail) {\r\n case Constants.KEEP:\r\n return _native.Engine.STENCIL_OP_FAIL_S_KEEP;\r\n case Constants.ZERO:\r\n return _native.Engine.STENCIL_OP_FAIL_S_ZERO;\r\n case Constants.REPLACE:\r\n return _native.Engine.STENCIL_OP_FAIL_S_REPLACE;\r\n case Constants.INCR:\r\n return _native.Engine.STENCIL_OP_FAIL_S_INCR;\r\n case Constants.DECR:\r\n return _native.Engine.STENCIL_OP_FAIL_S_DECR;\r\n case Constants.INVERT:\r\n return _native.Engine.STENCIL_OP_FAIL_S_INVERT;\r\n case Constants.INCR_WRAP:\r\n return _native.Engine.STENCIL_OP_FAIL_S_INCRSAT;\r\n case Constants.DECR_WRAP:\r\n return _native.Engine.STENCIL_OP_FAIL_S_DECRSAT;\r\n default:\r\n throw new Error(`Unsupported stencil OpFail mode: ${opFail}.`);\r\n }\r\n}\r\n\r\nexport function getNativeStencilDepthFail(depthFail: number): number {\r\n switch (depthFail) {\r\n case Constants.KEEP:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_KEEP;\r\n case Constants.ZERO:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_ZERO;\r\n case Constants.REPLACE:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_REPLACE;\r\n case Constants.INCR:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_INCR;\r\n case Constants.DECR:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_DECR;\r\n case Constants.INVERT:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_INVERT;\r\n case Constants.INCR_WRAP:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_INCRSAT;\r\n case Constants.DECR_WRAP:\r\n return _native.Engine.STENCIL_OP_FAIL_Z_DECRSAT;\r\n default:\r\n throw new Error(`Unsupported stencil depthFail mode: ${depthFail}.`);\r\n }\r\n}\r\n\r\nexport function getNativeStencilDepthPass(opPass: number): number {\r\n switch (opPass) {\r\n case Constants.KEEP:\r\n return _native.Engine.STENCIL_OP_PASS_Z_KEEP;\r\n case Constants.ZERO:\r\n return _native.Engine.STENCIL_OP_PASS_Z_ZERO;\r\n case Constants.REPLACE:\r\n return _native.Engine.STENCIL_OP_PASS_Z_REPLACE;\r\n case Constants.INCR:\r\n return _native.Engine.STENCIL_OP_PASS_Z_INCR;\r\n case Constants.DECR:\r\n return _native.Engine.STENCIL_OP_PASS_Z_DECR;\r\n case Constants.INVERT:\r\n return _native.Engine.STENCIL_OP_PASS_Z_INVERT;\r\n case Constants.INCR_WRAP:\r\n return _native.Engine.STENCIL_OP_PASS_Z_INCRSAT;\r\n case Constants.DECR_WRAP:\r\n return _native.Engine.STENCIL_OP_PASS_Z_DECRSAT;\r\n default:\r\n throw new Error(`Unsupported stencil opPass mode: ${opPass}.`);\r\n }\r\n}\r\n\r\nconst _warnedUnsupportedAlphaModes = new Set<number>();\r\n\r\n// Some alpha modes were introduced alongside newer Babylon Native features. When running against an older\r\n// native binary the corresponding _native.Engine constant is undefined; warn once and fall back to ALPHA_ONEONE.\r\nfunction _getFallbackAlphaMode(mode: number, unsupportedName: string): number {\r\n if (!_warnedUnsupportedAlphaModes.has(mode)) {\r\n _warnedUnsupportedAlphaModes.add(mode);\r\n Logger.Warn(`Alpha mode ${unsupportedName} is not supported by this version of Babylon Native; falling back to ALPHA_ONEONE.`);\r\n }\r\n return _native.Engine.ALPHA_ONEONE;\r\n}\r\n\r\nexport function getNativeAlphaMode(mode: number): number {\r\n switch (mode) {\r\n case Constants.ALPHA_DISABLE:\r\n return _native.Engine.ALPHA_DISABLE;\r\n case Constants.ALPHA_ADD:\r\n return _native.Engine.ALPHA_ADD;\r\n case Constants.ALPHA_COMBINE:\r\n return _native.Engine.ALPHA_COMBINE;\r\n case Constants.ALPHA_SUBTRACT:\r\n return _native.Engine.ALPHA_SUBTRACT;\r\n case Constants.ALPHA_MULTIPLY:\r\n return _native.Engine.ALPHA_MULTIPLY;\r\n case Constants.ALPHA_MAXIMIZED:\r\n return _native.Engine.ALPHA_MAXIMIZED;\r\n case Constants.ALPHA_ONEONE:\r\n return _native.Engine.ALPHA_ONEONE;\r\n case Constants.ALPHA_ONEONE_ONEONE:\r\n return _native.Engine.ALPHA_ONEONE_ONEONE ?? _getFallbackAlphaMode(mode, \"ALPHA_ONEONE_ONEONE\");\r\n case Constants.ALPHA_LAYER_ACCUMULATE:\r\n return _native.Engine.ALPHA_LAYER_ACCUMULATE ?? _getFallbackAlphaMode(mode, \"ALPHA_LAYER_ACCUMULATE\");\r\n case Constants.ALPHA_PREMULTIPLIED:\r\n return _native.Engine.ALPHA_PREMULTIPLIED;\r\n case Constants.ALPHA_PREMULTIPLIED_PORTERDUFF:\r\n return _native.Engine.ALPHA_PREMULTIPLIED_PORTERDUFF;\r\n case Constants.ALPHA_INTERPOLATE:\r\n return _native.Engine.ALPHA_INTERPOLATE;\r\n case Constants.ALPHA_SCREENMODE:\r\n return _native.Engine.ALPHA_SCREENMODE;\r\n default:\r\n throw new Error(`Unsupported alpha mode: ${mode}.`);\r\n }\r\n}\r\n\r\nexport function getNativeAttribType(type: number): number {\r\n switch (type) {\r\n case VertexBuffer.BYTE:\r\n return _native.Engine.ATTRIB_TYPE_INT8;\r\n case VertexBuffer.UNSIGNED_BYTE:\r\n return _native.Engine.ATTRIB_TYPE_UINT8;\r\n case VertexBuffer.SHORT:\r\n return _native.Engine.ATTRIB_TYPE_INT16;\r\n case VertexBuffer.UNSIGNED_SHORT:\r\n return _native.Engine.ATTRIB_TYPE_UINT16;\r\n case VertexBuffer.FLOAT:\r\n return _native.Engine.ATTRIB_TYPE_FLOAT;\r\n // HALF_FLOAT (as well as INT and UNSIGNED_INT) has no equivalent in the native bindings, which only\r\n // expose ATTRIB_TYPE_INT8/UINT8/INT16/UINT16/FLOAT. Those vertex attribute types are therefore\r\n // WebGL/WebGPU only and intentionally fall through to the throw below on the Babylon Native engine.\r\n default:\r\n throw new Error(`Unsupported attribute type: ${type}.`);\r\n }\r\n}\r\n"]}
|
|
@@ -41,19 +41,22 @@ export interface INativeEngine {
|
|
|
41
41
|
getUniforms(shaderProgram: NativeProgram, uniformsNames: string[]): WebGLUniformLocation[];
|
|
42
42
|
getAttributes(shaderProgram: NativeProgram, attributeNames: string[]): number[];
|
|
43
43
|
createTexture(): NativeTexture;
|
|
44
|
-
initializeTexture(texture: NativeTexture, width: number, height: number, hasMips: boolean, format: number, renderTarget: boolean, srgb: boolean, samples: number): void;
|
|
44
|
+
initializeTexture(texture: NativeTexture, width: number, height: number, hasMips: boolean, format: number, renderTarget: boolean, srgb: boolean, samples: number, isCube?: boolean): void;
|
|
45
45
|
loadTexture(texture: NativeTexture, data: ArrayBufferView, generateMips: boolean, invertY: boolean, srgb: boolean, onSuccess: () => void, onError: () => void): void;
|
|
46
46
|
loadRawTexture(texture: NativeTexture, data: ArrayBufferView, width: number, height: number, format: number, generateMips: boolean, invertY: boolean): void;
|
|
47
|
+
updateTextureData?(texture: NativeTexture, data: ArrayBufferView, xOffset: number, yOffset: number, width: number, height: number, faceIndex: number, lod: number, invertY: boolean): void;
|
|
47
48
|
loadRawTexture2DArray(texture: NativeTexture, data: Nullable<ArrayBufferView>, width: number, height: number, depth: number, format: number, generateMipMaps: boolean, invertY: boolean): void;
|
|
48
49
|
loadCubeTexture(texture: NativeTexture, data: Array<ArrayBufferView>, generateMips: boolean, invertY: boolean, srgb: boolean, onSuccess: () => void, onError: () => void): void;
|
|
49
50
|
loadCubeTextureWithMips(texture: NativeTexture, data: Array<Array<ArrayBufferView>>, invertY: boolean, srgb: boolean, onSuccess: () => void, onError: () => void): void;
|
|
50
51
|
getTextureWidth(texture: NativeTexture): number;
|
|
51
52
|
getTextureHeight(texture: NativeTexture): number;
|
|
53
|
+
getTextureLayerCount?(texture: NativeTexture): number;
|
|
52
54
|
deleteTexture(texture: NativeTexture): void;
|
|
53
55
|
readTexture(texture: NativeTexture, mipLevel: number, x: number, y: number, width: number, height: number, buffer: Nullable<ArrayBuffer>, bufferOffset: number, bufferLength: number): Promise<ArrayBuffer>;
|
|
54
56
|
createImageBitmap(data: ArrayBuffer | IImage): ImageBitmap;
|
|
55
57
|
resizeImageBitmap(image: ImageBitmap, bufferWidth: number, bufferHeight: number): Uint8Array;
|
|
56
|
-
createFrameBuffer(texture: Nullable<NativeTexture>, width: number, height: number, generateStencilBuffer: boolean, generateDepthBuffer: boolean, samples: number): NativeFramebuffer;
|
|
58
|
+
createFrameBuffer(texture: Nullable<NativeTexture>, width: number, height: number, generateStencilBuffer: boolean, generateDepthBuffer: boolean, samples: number, layer?: number): NativeFramebuffer;
|
|
59
|
+
createMultiFrameBuffer?(textures: NativeTexture[], width: number, height: number, generateStencilBuffer: boolean, generateDepthBuffer: boolean, samples: number): NativeFramebuffer;
|
|
57
60
|
getRenderWidth(): number;
|
|
58
61
|
getRenderHeight(): number;
|
|
59
62
|
setHardwareScalingLevel(level: number): void;
|
|
@@ -205,6 +208,8 @@ interface INativeEngineConstructor {
|
|
|
205
208
|
readonly ALPHA_MULTIPLY: number;
|
|
206
209
|
readonly ALPHA_MAXIMIZED: number;
|
|
207
210
|
readonly ALPHA_ONEONE: number;
|
|
211
|
+
readonly ALPHA_ONEONE_ONEONE?: number;
|
|
212
|
+
readonly ALPHA_LAYER_ACCUMULATE?: number;
|
|
208
213
|
readonly ALPHA_PREMULTIPLIED: number;
|
|
209
214
|
readonly ALPHA_PREMULTIPLIED_PORTERDUFF: number;
|
|
210
215
|
readonly ALPHA_INTERPOLATE: number;
|