@onerjs/core 8.53.5 → 8.53.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Animations/animationGroup.d.ts +0 -1
- package/Animations/animationGroup.js +0 -1
- package/Animations/animationGroup.js.map +1 -1
- package/Animations/animationGroup.pure.js +2 -0
- package/Animations/animationGroup.pure.js.map +1 -1
- package/Animations/runtimeAnimation.js +11 -0
- package/Animations/runtimeAnimation.js.map +1 -1
- package/Audio/audioSceneComponent.pure.js +1 -1
- package/AudioV2/abstractAudio/abstractSound.d.ts +2 -1
- package/AudioV2/abstractAudio/abstractSound.js +7 -2
- package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
- package/AudioV2/abstractAudio/abstractSoundInstance.d.ts +3 -1
- package/AudioV2/abstractAudio/abstractSoundInstance.js.map +1 -1
- package/AudioV2/abstractAudio/staticSound.d.ts +6 -0
- package/AudioV2/abstractAudio/staticSound.js +17 -1
- package/AudioV2/abstractAudio/staticSound.js.map +1 -1
- package/AudioV2/abstractAudio/staticSoundInstance.d.ts +4 -2
- package/AudioV2/abstractAudio/staticSoundInstance.js.map +1 -1
- package/AudioV2/abstractAudio/streamingSound.d.ts +6 -0
- package/AudioV2/abstractAudio/streamingSound.js +9 -1
- package/AudioV2/abstractAudio/streamingSound.js.map +1 -1
- package/AudioV2/webAudio/webAudioStaticSound.d.ts +7 -1
- package/AudioV2/webAudio/webAudioStaticSound.js +56 -8
- package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
- package/AudioV2/webAudio/webAudioStreamingSound.d.ts +3 -1
- package/AudioV2/webAudio/webAudioStreamingSound.js +16 -4
- package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
- package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +2 -2
- package/BakedVertexAnimation/bakedVertexAnimationManager.js +151 -121
- package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
- package/Behaviors/Cameras/interpolatingBehavior.d.ts +17 -2
- package/Behaviors/Cameras/interpolatingBehavior.js +53 -23
- package/Behaviors/Cameras/interpolatingBehavior.js.map +1 -1
- package/Bones/bone.pure.js +3 -3
- package/Buffers/buffer.pure.js +0 -12
- package/Buffers/buffer.pure.js.map +1 -1
- package/Cameras/Inputs/BaseCameraMouseWheelInput.js +141 -126
- package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/BaseCameraPointersInput.d.ts +2 -1
- package/Cameras/Inputs/BaseCameraPointersInput.js +290 -277
- package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraGamepadInput.js +115 -102
- package/Cameras/Inputs/arcRotateCameraGamepadInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.d.ts +3 -0
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +334 -273
- package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +273 -258
- package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/arcRotateCameraPointersInput.js +237 -213
- package/Cameras/Inputs/arcRotateCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/flyCameraKeyboardInput.js +199 -168
- package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
- package/Cameras/Inputs/flyCameraMouseInput.js +243 -229
- package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/followCameraKeyboardMoveInput.js +311 -266
- package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/followCameraMouseWheelInput.js +139 -119
- package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/followCameraPointersInput.js +239 -203
- package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraGamepadInput.js +127 -114
- package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +278 -244
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseInput.js +216 -202
- package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseWheelInput.js +368 -353
- package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraTouchInput.js +185 -172
- package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
- package/Cameras/Inputs/geospatialCameraKeyboardInput.d.ts +2 -0
- package/Cameras/Inputs/geospatialCameraKeyboardInput.js +291 -246
- package/Cameras/Inputs/geospatialCameraKeyboardInput.js.map +1 -1
- package/Cameras/Inputs/geospatialCameraPointersInput.d.ts +11 -1
- package/Cameras/Inputs/geospatialCameraPointersInput.js +18 -2
- package/Cameras/Inputs/geospatialCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/orbitCameraPointersInput.js +112 -96
- package/Cameras/Inputs/orbitCameraPointersInput.js.map +1 -1
- package/Cameras/VR/vrExperienceHelper.d.ts +0 -2
- package/Cameras/VR/vrExperienceHelper.js +0 -2
- package/Cameras/VR/vrExperienceHelper.js.map +1 -1
- package/Cameras/VR/vrExperienceHelper.pure.js +5 -0
- package/Cameras/VR/vrExperienceHelper.pure.js.map +1 -1
- package/Cameras/arcRotateCamera.pure.js +1559 -1479
- package/Cameras/arcRotateCamera.pure.js.map +1 -1
- package/Cameras/camera.pure.js +1225 -1178
- package/Cameras/camera.pure.js.map +1 -1
- package/Cameras/flyCamera.pure.js +369 -351
- package/Cameras/flyCamera.pure.js.map +1 -1
- package/Cameras/followCamera.pure.js +229 -192
- package/Cameras/followCamera.pure.js.map +1 -1
- package/Cameras/freeCamera.pure.js +373 -351
- package/Cameras/freeCamera.pure.js.map +1 -1
- package/Cameras/geospatialCamera.pure.d.ts +30 -7
- package/Cameras/geospatialCamera.pure.js +502 -457
- package/Cameras/geospatialCamera.pure.js.map +1 -1
- package/Cameras/geospatialCameraMovement.js +2 -2
- package/Cameras/geospatialCameraMovement.js.map +1 -1
- package/Cameras/targetCamera.pure.d.ts +7 -0
- package/Cameras/targetCamera.pure.js +550 -509
- package/Cameras/targetCamera.pure.js.map +1 -1
- package/Cameras/universalCamera.pure.js +98 -85
- package/Cameras/universalCamera.pure.js.map +1 -1
- package/Collisions/gpuPicker.d.ts +111 -4
- package/Collisions/gpuPicker.js +696 -119
- package/Collisions/gpuPicker.js.map +1 -1
- package/Compute/computeShader.pure.js +372 -355
- package/Compute/computeShader.pure.js.map +1 -1
- package/Culling/Helper/transformFeedbackBoundingHelper.pure.js +2 -2
- package/Decorators/nodeDecorator.d.ts +11 -1
- package/Decorators/nodeDecorator.js +43 -6
- package/Decorators/nodeDecorator.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js +8 -0
- package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js.map +1 -1
- package/Engines/Native/nativeHelpers.js +15 -0
- package/Engines/Native/nativeHelpers.js.map +1 -1
- package/Engines/Native/nativeInterfaces.d.ts +7 -2
- package/Engines/Native/nativeInterfaces.js.map +1 -1
- package/Engines/Native/nativeRenderTargetWrapper.d.ts +5 -0
- package/Engines/Native/nativeRenderTargetWrapper.js +35 -1
- package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
- package/Engines/Processors/shaderProcessor.js +5 -3
- package/Engines/Processors/shaderProcessor.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js +16 -3
- package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js.map +1 -1
- package/Engines/WebGPU/webgpuClearQuad.pure.js +7 -1
- package/Engines/WebGPU/webgpuClearQuad.pure.js.map +1 -1
- package/Engines/abstractEngine.functions.d.ts +8 -2
- package/Engines/abstractEngine.functions.js +12 -4
- package/Engines/abstractEngine.functions.js.map +1 -1
- package/Engines/abstractEngine.pure.d.ts +20 -1
- package/Engines/abstractEngine.pure.js +21 -134
- package/Engines/abstractEngine.pure.js.map +1 -1
- package/Engines/engine.d.ts +208 -0
- package/Engines/engine.pure.js +0 -15
- package/Engines/engine.pure.js.map +1 -1
- package/Engines/nullEngine.pure.d.ts +66 -0
- package/Engines/nullEngine.pure.js +97 -0
- package/Engines/nullEngine.pure.js.map +1 -1
- package/Engines/thinEngine.pure.d.ts +0 -13
- package/Engines/thinEngine.pure.js +4 -23
- package/Engines/thinEngine.pure.js.map +1 -1
- package/Engines/thinNativeEngine.d.ts +0 -1
- package/Engines/thinNativeEngine.js +0 -1
- package/Engines/thinNativeEngine.js.map +1 -1
- package/Engines/thinNativeEngine.pure.d.ts +27 -0
- package/Engines/thinNativeEngine.pure.js +383 -17
- package/Engines/thinNativeEngine.pure.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +1 -0
- package/Engines/webgpuEngine.js +1 -0
- package/Engines/webgpuEngine.js.map +1 -1
- package/Engines/webgpuEngine.pure.d.ts +9 -0
- package/Engines/webgpuEngine.pure.js +7 -0
- package/Engines/webgpuEngine.pure.js.map +1 -1
- package/FlowGraph/flowGraph.js +9 -0
- package/FlowGraph/flowGraph.js.map +1 -1
- package/FlowGraph/flowGraphContext.js +597 -584
- package/FlowGraph/flowGraphContext.js.map +1 -1
- package/FlowGraph/flowGraphDataConnection.pure.d.ts +14 -0
- package/FlowGraph/flowGraphDataConnection.pure.js +38 -1
- package/FlowGraph/flowGraphDataConnection.pure.js.map +1 -1
- package/FlowGraph/serialization.d.ts +11 -0
- package/FlowGraph/serialization.js +11 -1
- package/FlowGraph/serialization.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js +182 -170
- package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js +196 -184
- package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js +222 -210
- package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +123 -111
- package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js +158 -146
- package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js +63 -51
- package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js +122 -110
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js +76 -64
- package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js +89 -77
- package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js +134 -122
- package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js +58 -46
- package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js +107 -95
- package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js +181 -169
- package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js +63 -51
- package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js +63 -51
- package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js +76 -64
- package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js +246 -234
- package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js +108 -96
- package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js +87 -75
- package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js +76 -64
- package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js +313 -301
- package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js +502 -490
- package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js +147 -135
- package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js +90 -78
- package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js +179 -167
- package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +462 -451
- package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js +265 -253
- package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js +204 -192
- package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js +611 -550
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js +320 -308
- package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js +87 -75
- package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js +154 -142
- package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js +150 -138
- package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/inputBlock.pure.js +270 -256
- package/FrameGraph/Node/Blocks/inputBlock.pure.js.map +1 -1
- package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js +95 -83
- package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js +715 -693
- package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraphBlock.js +548 -533
- package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.d.ts +2 -2
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js +43 -51
- package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.d.ts +0 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js +0 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js.map +1 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.d.ts +0 -1
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js +66 -35
- package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js.map +1 -1
- package/Helpers/environmentHelper.js +2 -2
- package/Helpers/environmentHelper.js.map +1 -1
- package/Layers/effectLayer.js +529 -519
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/glowLayer.pure.js +428 -413
- package/Layers/glowLayer.pure.js.map +1 -1
- package/Layers/highlightLayer.pure.js +473 -458
- package/Layers/highlightLayer.pure.js.map +1 -1
- package/Layers/selectionOutlineLayer.pure.js +360 -345
- package/Layers/selectionOutlineLayer.pure.js.map +1 -1
- package/Lights/Clustered/clusteredLightContainer.pure.d.ts +1 -1
- package/Lights/Clustered/clusteredLightContainer.pure.js +583 -558
- package/Lights/Clustered/clusteredLightContainer.pure.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.js +6 -1
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Lights/areaLight.pure.js +61 -39
- package/Lights/areaLight.pure.js.map +1 -1
- package/Lights/directionalLight.pure.js +308 -284
- package/Lights/directionalLight.pure.js.map +1 -1
- package/Lights/hemisphericLight.pure.js +123 -104
- package/Lights/hemisphericLight.pure.js.map +1 -1
- package/Lights/light.d.ts +5 -3
- package/Lights/light.js +869 -827
- package/Lights/light.js.map +1 -1
- package/Lights/pointLight.pure.js +185 -174
- package/Lights/pointLight.pure.js.map +1 -1
- package/Lights/rectAreaLight.pure.d.ts +17 -0
- package/Lights/rectAreaLight.pure.js +238 -159
- package/Lights/rectAreaLight.pure.js.map +1 -1
- package/Lights/shadowLight.js +280 -268
- package/Lights/shadowLight.js.map +1 -1
- package/Lights/spotLight.pure.js +460 -427
- package/Lights/spotLight.pure.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.pure.js +17 -5
- package/Loading/Plugins/babylonFileLoader.pure.js.map +1 -1
- package/Loading/sceneLoader.d.ts +5 -1
- package/Loading/sceneLoader.js +299 -402
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/Background/backgroundMaterial.pure.d.ts +18 -18
- package/Materials/Background/backgroundMaterial.pure.js +949 -794
- package/Materials/Background/backgroundMaterial.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.d.ts +15 -0
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +34 -1
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +9 -0
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +26 -2
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.d.ts +2 -1
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js +169 -149
- package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.pure.js +442 -429
- package/Materials/Node/Blocks/Dual/lightBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js +396 -383
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js +237 -220
- package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.pure.js +1 -1
- package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js +150 -133
- package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js +265 -250
- package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js +159 -142
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js +214 -201
- package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js +419 -400
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +3 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js +302 -289
- package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js +1327 -1272
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js +352 -337
- package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/refractionBlock.pure.js +297 -277
- package/Materials/Node/Blocks/PBR/refractionBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/sheenBlock.pure.js +146 -131
- package/Materials/Node/Blocks/PBR/sheenBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js +158 -145
- package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/clampBlock.pure.js +92 -77
- package/Materials/Node/Blocks/clampBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/cloudBlock.pure.js +145 -132
- package/Materials/Node/Blocks/cloudBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/conditionalBlock.pure.js +182 -169
- package/Materials/Node/Blocks/conditionalBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/curveBlock.pure.js +259 -246
- package/Materials/Node/Blocks/curveBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/debugBlock.pure.js +119 -106
- package/Materials/Node/Blocks/debugBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/loopBlock.pure.js +123 -110
- package/Materials/Node/Blocks/loopBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js +185 -172
- package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/remapBlock.pure.js +127 -112
- package/Materials/Node/Blocks/remapBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/transformBlock.pure.js +196 -185
- package/Materials/Node/Blocks/transformBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/triPlanarBlock.pure.js +451 -438
- package/Materials/Node/Blocks/triPlanarBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/trigonometryBlock.pure.js +184 -171
- package/Materials/Node/Blocks/trigonometryBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/waveBlock.pure.js +97 -84
- package/Materials/Node/Blocks/waveBlock.pure.js.map +1 -1
- package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js +276 -263
- package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js.map +1 -1
- package/Materials/Node/nodeMaterial.pure.js +1765 -1737
- package/Materials/Node/nodeMaterial.pure.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.d.ts +3 -3
- package/Materials/PBR/openpbrMaterial.pure.d.ts +102 -102
- package/Materials/PBR/openpbrMaterial.pure.js +3115 -2243
- package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +3 -3
- package/Materials/PBR/pbrAnisotropicConfiguration.js +255 -227
- package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBRDFConfiguration.d.ts +9 -9
- package/Materials/PBR/pbrBRDFConfiguration.js +203 -155
- package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.pure.d.ts +1 -1
- package/Materials/PBR/pbrBaseMaterial.pure.js +1751 -1736
- package/Materials/PBR/pbrBaseMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +13 -13
- package/Materials/PBR/pbrBaseSimpleMaterial.js +205 -117
- package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
- package/Materials/PBR/pbrClearCoatConfiguration.d.ts +9 -9
- package/Materials/PBR/pbrClearCoatConfiguration.js +464 -406
- package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
- package/Materials/PBR/pbrIridescenceConfiguration.d.ts +3 -3
- package/Materials/PBR/pbrIridescenceConfiguration.js +271 -239
- package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
- package/Materials/PBR/pbrMaterial.pure.d.ts +66 -66
- package/Materials/PBR/pbrMaterial.pure.js +1041 -685
- package/Materials/PBR/pbrMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.d.ts +5 -5
- package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js +176 -115
- package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrSheenConfiguration.d.ts +7 -7
- package/Materials/PBR/pbrSheenConfiguration.js +314 -270
- package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.d.ts +5 -5
- package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js +172 -117
- package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +16 -16
- package/Materials/PBR/pbrSubSurfaceConfiguration.js +864 -764
- package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
- package/Materials/Textures/HTML/htmlInCanvasPolyfill.d.ts +43 -0
- package/Materials/Textures/HTML/htmlInCanvasPolyfill.js +64 -0
- package/Materials/Textures/HTML/htmlInCanvasPolyfill.js.map +1 -0
- package/Materials/Textures/HTML/htmlInteractionManager.d.ts +69 -0
- package/Materials/Textures/HTML/htmlInteractionManager.js +130 -0
- package/Materials/Textures/HTML/htmlInteractionManager.js.map +1 -0
- package/Materials/Textures/HTML/htmlRaycastInteractionManager.d.ts +84 -0
- package/Materials/Textures/HTML/htmlRaycastInteractionManager.js +246 -0
- package/Materials/Textures/HTML/htmlRaycastInteractionManager.js.map +1 -0
- package/Materials/Textures/HTML/htmlTexture.d.ts +148 -0
- package/Materials/Textures/HTML/htmlTexture.js +455 -0
- package/Materials/Textures/HTML/htmlTexture.js.map +1 -0
- package/Materials/Textures/HTML/index.d.ts +4 -0
- package/Materials/Textures/HTML/index.js +5 -0
- package/Materials/Textures/HTML/index.js.map +1 -0
- package/Materials/Textures/HTML/pure.d.ts +5 -0
- package/Materials/Textures/HTML/pure.js +6 -0
- package/Materials/Textures/HTML/pure.js.map +1 -0
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js +671 -643
- package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
- package/Materials/Textures/baseTexture.pure.js +880 -825
- package/Materials/Textures/baseTexture.pure.js.map +1 -1
- package/Materials/Textures/cubeTexture.d.ts +0 -1
- package/Materials/Textures/cubeTexture.js +0 -1
- package/Materials/Textures/cubeTexture.js.map +1 -1
- package/Materials/Textures/cubeTexture.pure.js +368 -333
- package/Materials/Textures/cubeTexture.pure.js.map +1 -1
- package/Materials/Textures/dynamicTexture.d.ts +0 -1
- package/Materials/Textures/dynamicTexture.js +0 -1
- package/Materials/Textures/dynamicTexture.js.map +1 -1
- package/Materials/Textures/dynamicTexture.pure.js +2 -0
- package/Materials/Textures/dynamicTexture.pure.js.map +1 -1
- package/Materials/Textures/htmlElementTexture.d.ts +0 -2
- package/Materials/Textures/htmlElementTexture.js +0 -2
- package/Materials/Textures/htmlElementTexture.js.map +1 -1
- package/Materials/Textures/htmlElementTexture.pure.js +4 -0
- package/Materials/Textures/htmlElementTexture.pure.js.map +1 -1
- package/Materials/Textures/index.d.ts +1 -0
- package/Materials/Textures/index.js +1 -1
- package/Materials/Textures/index.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.d.ts +0 -1
- package/Materials/Textures/multiRenderTarget.js +0 -1
- package/Materials/Textures/multiRenderTarget.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.pure.js +2 -0
- package/Materials/Textures/multiRenderTarget.pure.js.map +1 -1
- package/Materials/Textures/pure.d.ts +1 -0
- package/Materials/Textures/pure.js +1 -0
- package/Materials/Textures/pure.js.map +1 -1
- package/Materials/Textures/texture.pure.js +961 -923
- package/Materials/Textures/texture.pure.js.map +1 -1
- package/Materials/Textures/videoTexture.pure.d.ts +3 -0
- package/Materials/Textures/videoTexture.pure.js +450 -401
- package/Materials/Textures/videoTexture.pure.js.map +1 -1
- package/Materials/colorCurves.pure.js +510 -477
- package/Materials/colorCurves.pure.js.map +1 -1
- package/Materials/effect.pure.js +0 -7
- package/Materials/effect.pure.js.map +1 -1
- package/Materials/imageProcessing.js +12 -4
- package/Materials/imageProcessing.js.map +1 -1
- package/Materials/imageProcessingConfiguration.pure.js +647 -587
- package/Materials/imageProcessingConfiguration.pure.js.map +1 -1
- package/Materials/material.decalMapConfiguration.pure.d.ts +2 -2
- package/Materials/material.decalMapConfiguration.pure.js +149 -130
- package/Materials/material.decalMapConfiguration.pure.js.map +1 -1
- package/Materials/material.detailMapConfiguration.d.ts +3 -3
- package/Materials/material.detailMapConfiguration.js +213 -175
- package/Materials/material.detailMapConfiguration.js.map +1 -1
- package/Materials/material.pure.js +1815 -1721
- package/Materials/material.pure.js.map +1 -1
- package/Materials/materialPluginBase.pure.js +270 -249
- package/Materials/materialPluginBase.pure.js.map +1 -1
- package/Materials/materialPluginManager.pure.js +18 -8
- package/Materials/materialPluginManager.pure.js.map +1 -1
- package/Materials/materialStencilState.js +211 -200
- package/Materials/materialStencilState.js.map +1 -1
- package/Materials/meshDebugPluginMaterial.pure.d.ts +2 -2
- package/Materials/meshDebugPluginMaterial.pure.js +397 -275
- package/Materials/meshDebugPluginMaterial.pure.js.map +1 -1
- package/Materials/standardMaterial.pure.d.ts +32 -32
- package/Materials/standardMaterial.pure.js +1804 -1394
- package/Materials/standardMaterial.pure.js.map +1 -1
- package/Maths/math.color.pure.js +5 -5
- package/Maths/math.functions.js +38 -30
- package/Maths/math.functions.js.map +1 -1
- package/Maths/math.vector.pure.js +25 -25
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +18 -8
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +86 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +255 -104
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.d.ts +39 -0
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js +322 -0
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js.map +1 -0
- package/Meshes/GreasedLine/greasedLineMesh.pure.js +4 -4
- package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js +3 -3
- package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js +107 -94
- package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js +276 -263
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js +247 -232
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js +299 -284
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js +196 -181
- package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/latticeBlock.pure.js +198 -179
- package/Meshes/Node/Blocks/Set/latticeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js +151 -138
- package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js +107 -94
- package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js +138 -125
- package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js +213 -200
- package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js +138 -125
- package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js +179 -164
- package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/boxBlock.pure.js +183 -170
- package/Meshes/Node/Blocks/Sources/boxBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js +125 -112
- package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js +153 -140
- package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/discBlock.pure.js +112 -99
- package/Meshes/Node/Blocks/Sources/discBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/gridBlock.pure.js +133 -120
- package/Meshes/Node/Blocks/Sources/gridBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js +128 -115
- package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/meshBlock.pure.js +116 -103
- package/Meshes/Node/Blocks/Sources/meshBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/planeBlock.pure.js +160 -147
- package/Meshes/Node/Blocks/Sources/planeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js +144 -131
- package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/torusBlock.pure.js +112 -99
- package/Meshes/Node/Blocks/Sources/torusBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js +200 -185
- package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/bevelBlock.pure.js +111 -98
- package/Meshes/Node/Blocks/bevelBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js +182 -165
- package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js +89 -76
- package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/conditionBlock.pure.js +184 -169
- package/Meshes/Node/Blocks/conditionBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js +270 -255
- package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js +172 -159
- package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryCurveBlock.pure.js +230 -217
- package/Meshes/Node/Blocks/geometryCurveBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryEaseBlock.pure.js +256 -245
- package/Meshes/Node/Blocks/geometryEaseBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js +206 -189
- package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryTransformBlock.pure.js +166 -153
- package/Meshes/Node/Blocks/geometryTransformBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js +221 -208
- package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/mappingBlock.pure.js +150 -137
- package/Meshes/Node/Blocks/mappingBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/mathBlock.pure.js +269 -256
- package/Meshes/Node/Blocks/mathBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js +141 -128
- package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/randomBlock.pure.js +161 -148
- package/Meshes/Node/Blocks/randomBlock.pure.js.map +1 -1
- package/Meshes/Node/Blocks/subdivideBlock.pure.js +102 -87
- package/Meshes/Node/Blocks/subdivideBlock.pure.js.map +1 -1
- package/Meshes/Node/nodeGeometry.js +560 -538
- package/Meshes/Node/nodeGeometry.js.map +1 -1
- package/Meshes/Node/nodeGeometryBlock.js +473 -458
- package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
- package/Meshes/abstractMesh.pure.js +2218 -2207
- package/Meshes/abstractMesh.pure.js.map +1 -1
- package/Meshes/geometry.js +30 -15
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/mesh.pure.js +26 -14
- package/Meshes/mesh.pure.js.map +1 -1
- package/Meshes/mesh.vertexData.js +1665 -1655
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Meshes/transformNode.pure.js +1400 -1372
- package/Meshes/transformNode.pure.js.map +1 -1
- package/Misc/decorators.d.ts +34 -19
- package/Misc/decorators.functions.d.ts +33 -2
- package/Misc/decorators.functions.js +114 -35
- package/Misc/decorators.functions.js.map +1 -1
- package/Misc/decorators.js +96 -68
- package/Misc/decorators.js.map +1 -1
- package/Misc/decorators.serialization.js +47 -40
- package/Misc/decorators.serialization.js.map +1 -1
- package/Misc/decorators.serializationUtilities.d.ts +24 -0
- package/Misc/decorators.serializationUtilities.js +20 -0
- package/Misc/decorators.serializationUtilities.js.map +1 -0
- package/Misc/dumpTools.pure.js +43 -33
- package/Misc/dumpTools.pure.js.map +1 -1
- package/Misc/fileTools.pure.js +8 -0
- package/Misc/fileTools.pure.js.map +1 -1
- package/Misc/observable.pure.js +0 -7
- package/Misc/observable.pure.js.map +1 -1
- package/Misc/snapshotRenderingHelper.d.ts +4 -1
- package/Misc/snapshotRenderingHelper.js.map +1 -1
- package/Misc/symbolMetadataPolyfill.d.ts +11 -0
- package/Misc/symbolMetadataPolyfill.js +22 -0
- package/Misc/symbolMetadataPolyfill.js.map +1 -0
- package/Misc/tools.pure.js +2 -2
- package/Misc/tools.pure.js.map +1 -1
- package/Morph/morphTarget.js +382 -365
- package/Morph/morphTarget.js.map +1 -1
- package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js +160 -145
- package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js +187 -174
- package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js +238 -219
- package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js +140 -115
- package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js +157 -144
- package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js +133 -119
- package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js +93 -80
- package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleDebugBlock.pure.js +117 -105
- package/Particles/Node/Blocks/particleDebugBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js +105 -92
- package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleGradientValueBlock.pure.js +82 -69
- package/Particles/Node/Blocks/particleGradientValueBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js +113 -101
- package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleMathBlock.pure.js +278 -265
- package/Particles/Node/Blocks/particleMathBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleNumberMathBlock.pure.js +155 -142
- package/Particles/Node/Blocks/particleNumberMathBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleRandomBlock.pure.js +156 -143
- package/Particles/Node/Blocks/particleRandomBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js +217 -204
- package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/particleVectorMathBlock.pure.js +106 -93
- package/Particles/Node/Blocks/particleVectorMathBlock.pure.js.map +1 -1
- package/Particles/Node/Blocks/systemBlock.pure.js +366 -330
- package/Particles/Node/Blocks/systemBlock.pure.js.map +1 -1
- package/Particles/Node/nodeParticleBlock.js +339 -324
- package/Particles/Node/nodeParticleBlock.js.map +1 -1
- package/Particles/Node/nodeParticleSystemSet.js +494 -473
- package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
- package/Particles/gpuParticleSystem.d.ts +0 -1
- package/Particles/gpuParticleSystem.js +0 -1
- package/Particles/gpuParticleSystem.js.map +1 -1
- package/Particles/gpuParticleSystem.pure.d.ts +4 -3
- package/Particles/gpuParticleSystem.pure.js +27 -16
- package/Particles/gpuParticleSystem.pure.js.map +1 -1
- package/Particles/particleSystem.pure.js +57 -2
- package/Particles/particleSystem.pure.js.map +1 -1
- package/Particles/thinParticleSystem.d.ts +0 -1
- package/Particles/thinParticleSystem.js +0 -1
- package/Particles/thinParticleSystem.js.map +1 -1
- package/Particles/thinParticleSystem.pure.js +2 -0
- package/Particles/thinParticleSystem.pure.js.map +1 -1
- package/Particles/webgl2ParticleSystem.pure.js +2 -0
- package/Particles/webgl2ParticleSystem.pure.js.map +1 -1
- package/Physics/v1/physicsImpostor.pure.js +4 -4
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js +675 -656
- package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.d.ts +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js +521 -486
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.d.ts +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +0 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js +241 -220
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js +852 -835
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js +1135 -1073
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js +319 -303
- package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js.map +1 -1
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +212 -199
- package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
- package/PostProcesses/blackAndWhitePostProcess.pure.js +67 -55
- package/PostProcesses/blackAndWhitePostProcess.pure.js.map +1 -1
- package/PostProcesses/bloomMergePostProcess.pure.js +74 -62
- package/PostProcesses/bloomMergePostProcess.pure.js.map +1 -1
- package/PostProcesses/blurPostProcess.pure.js +127 -115
- package/PostProcesses/blurPostProcess.pure.js.map +1 -1
- package/PostProcesses/chromaticAberrationPostProcess.pure.js +130 -118
- package/PostProcesses/chromaticAberrationPostProcess.pure.js.map +1 -1
- package/PostProcesses/circleOfConfusionPostProcess.pure.js +115 -104
- package/PostProcesses/circleOfConfusionPostProcess.pure.js.map +1 -1
- package/PostProcesses/colorCorrectionPostProcess.pure.js +55 -43
- package/PostProcesses/colorCorrectionPostProcess.pure.js.map +1 -1
- package/PostProcesses/convolutionPostProcess.pure.js +96 -84
- package/PostProcesses/convolutionPostProcess.pure.js.map +1 -1
- package/PostProcesses/extractHighlightsPostProcess.pure.js +68 -57
- package/PostProcesses/extractHighlightsPostProcess.pure.js.map +1 -1
- package/PostProcesses/filterPostProcess.pure.js +66 -54
- package/PostProcesses/filterPostProcess.pure.js.map +1 -1
- package/PostProcesses/fxaaPostProcess.pure.js.map +1 -1
- package/PostProcesses/grainPostProcess.pure.js +82 -70
- package/PostProcesses/grainPostProcess.pure.js.map +1 -1
- package/PostProcesses/imageProcessingPostProcess.js +334 -322
- package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
- package/PostProcesses/motionBlurPostProcess.pure.js +246 -235
- package/PostProcesses/motionBlurPostProcess.pure.js.map +1 -1
- package/PostProcesses/passPostProcess.pure.js +75 -63
- package/PostProcesses/passPostProcess.pure.js.map +1 -1
- package/PostProcesses/postProcess.pure.js +899 -835
- package/PostProcesses/postProcess.pure.js.map +1 -1
- package/PostProcesses/refractionPostProcess.pure.js +114 -87
- package/PostProcesses/refractionPostProcess.pure.js.map +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js +108 -96
- package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js.map +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.pure.js +241 -220
- package/PostProcesses/screenSpaceReflectionPostProcess.pure.js.map +1 -1
- package/PostProcesses/sharpenPostProcess.pure.js +86 -74
- package/PostProcesses/sharpenPostProcess.pure.js.map +1 -1
- package/PostProcesses/tonemapPostProcess.pure.js +82 -70
- package/PostProcesses/tonemapPostProcess.pure.js.map +1 -1
- package/PostProcesses/volumetricLightScatteringPostProcess.pure.js +500 -465
- package/PostProcesses/volumetricLightScatteringPostProcess.pure.js.map +1 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.d.ts +0 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.js +0 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.js.map +1 -1
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js +2 -0
- package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js.map +1 -1
- package/Probes/reflectionProbe.pure.js +238 -224
- package/Probes/reflectionProbe.pure.js.map +1 -1
- package/Rendering/GlobalIllumination/giRSMManager.pure.d.ts +1 -1
- package/Rendering/GlobalIllumination/giRSMManager.pure.js +138 -105
- package/Rendering/GlobalIllumination/giRSMManager.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.d.ts +1 -1
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js +155 -138
- package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.d.ts +0 -2
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +0 -2
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +5 -0
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.d.ts +0 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +0 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.d.ts +1 -0
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +34 -0
- package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
- package/Rendering/edgesRenderer.pure.js.map +1 -1
- package/Rendering/prePassRenderer.d.ts +0 -2
- package/Rendering/prePassRenderer.js +0 -2
- package/Rendering/prePassRenderer.js.map +1 -1
- package/Rendering/prePassRenderer.pure.js +2 -0
- package/Rendering/prePassRenderer.pure.js.map +1 -1
- package/Rendering/reflectiveShadowMap.pure.d.ts +1 -1
- package/Rendering/reflectiveShadowMap.pure.js +151 -130
- package/Rendering/reflectiveShadowMap.pure.js.map +1 -1
- package/Rendering/thinDepthPeelingRenderer.d.ts +0 -1
- package/Rendering/thinDepthPeelingRenderer.js +0 -1
- package/Rendering/thinDepthPeelingRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/gaussianSplatting.js +1 -0
- package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
- package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +35 -5
- package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
- package/Shaders/gaussianSplatting.fragment.js +17 -1
- package/Shaders/gaussianSplatting.fragment.js.map +1 -1
- package/Shaders/gaussianSplatting.vertex.js +1 -1
- package/Shaders/gaussianSplatting.vertex.js.map +1 -1
- package/Shaders/gaussianSplattingDepth.vertex.js +1 -1
- package/Shaders/gaussianSplattingDepth.vertex.js.map +1 -1
- package/Shaders/picking.fragment.js +39 -3
- package/Shaders/picking.fragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +3 -1
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/helperFunctions.js +2 -2
- package/ShadersWGSL/ShadersInclude/helperFunctions.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +39 -7
- package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js +4 -3
- package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.fragment.js +14 -1
- package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.vertex.js +2 -2
- package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
- package/ShadersWGSL/gaussianSplattingDepth.vertex.js +2 -2
- package/ShadersWGSL/gaussianSplattingDepth.vertex.js.map +1 -1
- package/ShadersWGSL/lightingVolume.compute.js +2 -2
- package/ShadersWGSL/lightingVolume.compute.js.map +1 -1
- package/ShadersWGSL/picking.fragment.js +22 -1
- package/ShadersWGSL/picking.fragment.js.map +1 -1
- package/XR/features/Layers/WebXRCompositionLayer.d.ts +3 -2
- package/XR/features/Layers/WebXRCompositionLayer.js +2 -2
- package/XR/features/Layers/WebXRCompositionLayer.js.map +1 -1
- package/XR/features/Layers/WebXRWebGPUCompositionLayer.d.ts +59 -0
- package/XR/features/Layers/WebXRWebGPUCompositionLayer.js +120 -0
- package/XR/features/Layers/WebXRWebGPUCompositionLayer.js.map +1 -0
- package/XR/features/Layers/WebXRWebGPUProjectionLayer.d.ts +25 -0
- package/XR/features/Layers/WebXRWebGPUProjectionLayer.js +69 -0
- package/XR/features/Layers/WebXRWebGPUProjectionLayer.js.map +1 -0
- package/XR/features/WebXRLayers.pure.d.ts +8 -0
- package/XR/features/WebXRLayers.pure.js +43 -6
- package/XR/features/WebXRLayers.pure.js.map +1 -1
- package/XR/native/nativeXRRenderTarget.d.ts +2 -2
- package/XR/native/nativeXRRenderTarget.js +2 -2
- package/XR/native/nativeXRRenderTarget.js.map +1 -1
- package/XR/webXRExperienceHelper.js +10 -1
- package/XR/webXRExperienceHelper.js.map +1 -1
- package/XR/webXRGraphicsBinding.d.ts +90 -0
- package/XR/webXRGraphicsBinding.js +85 -0
- package/XR/webXRGraphicsBinding.js.map +1 -0
- package/XR/webXRLayerRenderTargetTexture.d.ts +24 -0
- package/XR/webXRLayerRenderTargetTexture.js +30 -0
- package/XR/webXRLayerRenderTargetTexture.js.map +1 -0
- package/XR/webXRManagedOutputCanvas.d.ts +14 -0
- package/XR/webXRManagedOutputCanvas.js +24 -5
- package/XR/webXRManagedOutputCanvas.js.map +1 -1
- package/XR/webXRRenderTargetTextureProvider.d.ts +25 -4
- package/XR/webXRRenderTargetTextureProvider.js +33 -35
- package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
- package/XR/webXRSessionManager.d.ts +11 -0
- package/XR/webXRSessionManager.js +37 -0
- package/XR/webXRSessionManager.js.map +1 -1
- package/XR/webXRTypes.d.ts +9 -6
- package/XR/webXRTypes.js.map +1 -1
- package/XR/webXRWebGLLayer.d.ts +2 -2
- package/XR/webXRWebGLLayer.js +2 -2
- package/XR/webXRWebGLLayer.js.map +1 -1
- package/XR/webXRWebGLRenderTargetTextureProvider.d.ts +12 -0
- package/XR/webXRWebGLRenderTargetTextureProvider.js +58 -0
- package/XR/webXRWebGLRenderTargetTextureProvider.js.map +1 -0
- package/XR/webXRWebGPURenderTargetTextureProvider.d.ts +69 -0
- package/XR/webXRWebGPURenderTargetTextureProvider.js +148 -0
- package/XR/webXRWebGPURenderTargetTextureProvider.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/node.js +878 -845
- package/node.js.map +1 -1
- package/package.json +8 -14
- package/scene.pure.d.ts +12 -0
- package/scene.pure.js +36 -0
- package/scene.pure.js.map +1 -1
- package/tslib.es6.js +304 -150
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thinNativeEngine.js","sourceRoot":"","sources":["../../../../dev/core/src/Engines/thinNativeEngine.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC
|
|
1
|
+
{"version":3,"file":"thinNativeEngine.js","sourceRoot":"","sources":["../../../../dev/core/src/Engines/thinNativeEngine.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC","sourcesContent":["export * from \"./thinNativeEngine.pure\";\nexport * from \"./thinNativeEngine.types\";\n"]}
|
|
@@ -7,6 +7,7 @@ import { type Effect } from "../Materials/effect.pure.js";
|
|
|
7
7
|
import { DataBuffer } from "../Buffers/dataBuffer.js";
|
|
8
8
|
import { type RenderTargetCreationOptions, type TextureSize, type DepthTextureCreationOptions, type InternalTextureCreationOptions } from "../Materials/Textures/textureCreationOptions.js";
|
|
9
9
|
import { type IPipelineContext } from "./IPipelineContext.js";
|
|
10
|
+
import { type IMultiRenderTargetOptions } from "../Materials/Textures/multiRenderTarget.pure.js";
|
|
10
11
|
import { type IColor3Like, type IColor4Like, type IViewportLike } from "../Maths/math.like.js";
|
|
11
12
|
import { type ISceneLike } from "./abstractEngine.pure.js";
|
|
12
13
|
import { ThinEngine } from "./thinEngine.pure.js";
|
|
@@ -17,6 +18,7 @@ import { type IStencilState } from "../States/IStencilState.js";
|
|
|
17
18
|
import { type RenderTargetWrapper } from "./renderTargetWrapper.js";
|
|
18
19
|
import { type NativeData, NativeDataStream } from "./Native/nativeDataStream.js";
|
|
19
20
|
import { type INative, type INativeEngine, type NativeFramebuffer, type NativeTexture } from "./Native/nativeInterfaces.js";
|
|
21
|
+
import { NativeRenderTargetWrapper } from "./Native/nativeRenderTargetWrapper.js";
|
|
20
22
|
import { type IHardwareTextureWrapper } from "../Materials/Textures/hardwareTextureWrapper.js";
|
|
21
23
|
import { type _IShaderProcessingContext } from "./Processors/shaderProcessingOptions.js";
|
|
22
24
|
import { type ShaderLanguage } from "../Materials/shaderLanguage.js";
|
|
@@ -65,6 +67,7 @@ export declare class ThinNativeEngine extends ThinEngine {
|
|
|
65
67
|
private _frameStats;
|
|
66
68
|
private _boundBuffersVertexArray;
|
|
67
69
|
private _currentDepthTest;
|
|
70
|
+
private _depthTestEnabled;
|
|
68
71
|
private _stencilTest;
|
|
69
72
|
private _stencilMask;
|
|
70
73
|
private _stencilFunc;
|
|
@@ -215,6 +218,9 @@ export declare class ThinNativeEngine extends ThinEngine {
|
|
|
215
218
|
* @param enable defines the state to set
|
|
216
219
|
*/
|
|
217
220
|
setDepthBuffer(enable: boolean): void;
|
|
221
|
+
private _encodeDepthTest;
|
|
222
|
+
private _flushDepthTestState;
|
|
223
|
+
applyStates(): void;
|
|
218
224
|
/**
|
|
219
225
|
* Gets a boolean indicating if depth writing is enabled
|
|
220
226
|
* @returns the current depth writing state
|
|
@@ -466,6 +472,27 @@ export declare class ThinNativeEngine extends ThinEngine {
|
|
|
466
472
|
height: number;
|
|
467
473
|
depth: number;
|
|
468
474
|
}, options: boolean | RenderTargetCreationOptions): RenderTargetWrapper;
|
|
475
|
+
createRenderTargetCubeTexture(size: number, options?: RenderTargetCreationOptions): RenderTargetWrapper;
|
|
476
|
+
createMultipleRenderTarget(size: TextureSize, options: IMultiRenderTargetOptions, _initializeBuffers?: boolean): RenderTargetWrapper;
|
|
477
|
+
/**
|
|
478
|
+
* Creates (or recreates) the native framebuffer of a multi render target from the color attachment
|
|
479
|
+
* textures currently held by the wrapper. bgfx binds a fixed attachment set when a framebuffer is
|
|
480
|
+
* created and cannot re-point an individual attachment the way GL's framebufferTexture2D can, so the
|
|
481
|
+
* whole framebuffer has to be recreated whenever an attachment is swapped after creation (e.g. the OIT
|
|
482
|
+
* depth-peeling renderer replaces every attachment via MultiRenderTarget.setInternalTexture).
|
|
483
|
+
* @param rtWrapper The multi render target wrapper to build the framebuffer for.
|
|
484
|
+
* @internal
|
|
485
|
+
*/
|
|
486
|
+
_createMultiRenderTargetFramebuffer(rtWrapper: NativeRenderTargetWrapper): void;
|
|
487
|
+
generateMipMapsForCubemap(_texture: InternalTexture, _unbind?: boolean): void;
|
|
488
|
+
bindAttachments(_attachments: number[]): void;
|
|
489
|
+
buildTextureLayout(textureStatus: boolean[], _backBufferLayout?: boolean): number[];
|
|
490
|
+
restoreSingleAttachment(): void;
|
|
491
|
+
restoreSingleAttachmentForRenderTarget(): void;
|
|
492
|
+
generateMipMapsMultiFramebuffer(_texture: RenderTargetWrapper): void;
|
|
493
|
+
resolveMultiFramebuffer(_texture: RenderTargetWrapper): void;
|
|
494
|
+
unBindMultiColorAttachmentFramebuffer(_rtWrapper: RenderTargetWrapper, _disableGenerateMipMaps?: boolean, onBeforeUnbind?: () => void): void;
|
|
495
|
+
updateMultipleRenderTargetTextureSampleCount(rtWrapper: Nullable<RenderTargetWrapper>, samples: number, _initializeBuffers?: boolean): number;
|
|
469
496
|
updateRenderTargetTextureSampleCount(rtWrapper: RenderTargetWrapper, samples: number): number;
|
|
470
497
|
updateTextureSamplingMode(samplingMode: number, texture: InternalTexture): void;
|
|
471
498
|
bindFramebuffer(texture: RenderTargetWrapper, faceIndex?: number, requiredWidth?: number, requiredHeight?: number, forceFullscreenViewport?: boolean): void;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/** This file must only contain pure code and pure imports */
|
|
2
|
+
import { RegisterBufferAlign } from "../Buffers/buffer.align.pure.js";
|
|
2
3
|
import { InternalTexture } from "../Materials/Textures/internalTexture.js";
|
|
3
4
|
import { DataBuffer } from "../Buffers/dataBuffer.js";
|
|
4
5
|
import { Observable } from "../Misc/observable.pure.js";
|
|
@@ -132,6 +133,12 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
132
133
|
* @internal
|
|
133
134
|
*/
|
|
134
135
|
_initializeNativeEngine(adaptToDeviceRatio) {
|
|
136
|
+
// ThinNativeEngine relies on VertexBuffer.effective{Buffer,ByteOffset,ByteStride}
|
|
137
|
+
// (defined in Buffers/buffer.align.pure) to bind vertex attributes through
|
|
138
|
+
// recordVertexBuffer. Register the side effect here so the engine is usable
|
|
139
|
+
// on its own without callers having to remember to import the wrapper module.
|
|
140
|
+
// The registration is idempotent.
|
|
141
|
+
RegisterBufferAlign();
|
|
135
142
|
this._engine = new _native.Engine({
|
|
136
143
|
version: AbstractEngine.Version,
|
|
137
144
|
nonFloatVertexBuffers: true,
|
|
@@ -141,7 +148,8 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
141
148
|
this._frameStats = { gpuTimeNs: Number.NaN };
|
|
142
149
|
this._boundBuffersVertexArray = null;
|
|
143
150
|
this._currentDepthTest = _native.Engine.DEPTH_TEST_LEQUAL;
|
|
144
|
-
this.
|
|
151
|
+
this._depthTestEnabled = true;
|
|
152
|
+
this._stencilTest = false;
|
|
145
153
|
this._stencilMask = 255;
|
|
146
154
|
this._stencilFunc = 519;
|
|
147
155
|
this._stencilFuncRef = 0;
|
|
@@ -175,6 +183,10 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
175
183
|
this._webGLVersion = 2;
|
|
176
184
|
this.disableUniformBuffers = true;
|
|
177
185
|
this._shaderPlatformName = "NATIVE";
|
|
186
|
+
// Babylon Native is not WebGL and has no _gl context. Report a distinct engine name (like
|
|
187
|
+
// WebGPU reports "WebGPU") so application/feature code that branches on engine.name === "WebGL"
|
|
188
|
+
// to touch the WebGL-only _gl context skips the native engine instead of dereferencing null.
|
|
189
|
+
this._name = "Native";
|
|
178
190
|
// TODO: Initialize this more correctly based on the hardware capabilities.
|
|
179
191
|
// Init caps
|
|
180
192
|
this._caps = {
|
|
@@ -212,7 +224,7 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
212
224
|
textureHalfFloatRender: true,
|
|
213
225
|
textureLOD: true,
|
|
214
226
|
texelFetch: false,
|
|
215
|
-
drawBuffersExtension:
|
|
227
|
+
drawBuffersExtension: true,
|
|
216
228
|
depthTextureExtension: false,
|
|
217
229
|
vertexArrayObject: true,
|
|
218
230
|
instancedArrays: true,
|
|
@@ -411,8 +423,16 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
411
423
|
return null;
|
|
412
424
|
}
|
|
413
425
|
clear(color, backBuffer, depth, stencil = false, stencilClearValue = 0) {
|
|
414
|
-
if (this.useReverseDepthBuffer) {
|
|
415
|
-
|
|
426
|
+
if (depth && this.useReverseDepthBuffer) {
|
|
427
|
+
// Reverse-Z: the scene is rendered with a flipped projection (near maps to 1, far to 0), so the
|
|
428
|
+
// depth buffer is cleared to 0 and the comparison must accept greater values. The WebGL engine
|
|
429
|
+
// sets depthCullingState.depthFunc = GEQUAL here and relies on applyStates() running the depth
|
|
430
|
+
// comparison to the GL context before each draw. The native draw path does not call applyStates()
|
|
431
|
+
// (only depth-test enable/disable is reconciled in _flushDepthTestState()), so setting the shared
|
|
432
|
+
// state alone would never reach the backend. Route the comparison through the native command path
|
|
433
|
+
// as well -- mirroring the WebGPU engine's clear path, which calls setDepthFunctionToGreaterOrEqual().
|
|
434
|
+
this._depthCullingState.depthFunc = 518;
|
|
435
|
+
this.setDepthFunction(518);
|
|
416
436
|
}
|
|
417
437
|
this._commandBufferEncoder.startEncodingCommand(_native.Engine.COMMAND_CLEAR);
|
|
418
438
|
this._commandBufferEncoder.encodeCommandArgAsUInt32(backBuffer && color ? 1 : 0);
|
|
@@ -421,7 +441,7 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
421
441
|
this._commandBufferEncoder.encodeCommandArgAsFloat32(color ? color.b : 0);
|
|
422
442
|
this._commandBufferEncoder.encodeCommandArgAsFloat32(color ? color.a : 1);
|
|
423
443
|
this._commandBufferEncoder.encodeCommandArgAsUInt32(depth ? 1 : 0);
|
|
424
|
-
this._commandBufferEncoder.encodeCommandArgAsFloat32(1);
|
|
444
|
+
this._commandBufferEncoder.encodeCommandArgAsFloat32(depth && this.useReverseDepthBuffer ? 0 : 1);
|
|
425
445
|
this._commandBufferEncoder.encodeCommandArgAsUInt32(stencil ? 1 : 0);
|
|
426
446
|
this._commandBufferEncoder.encodeCommandArgAsUInt32(stencilClearValue);
|
|
427
447
|
this._commandBufferEncoder.finishEncodingCommand();
|
|
@@ -538,6 +558,7 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
538
558
|
return;
|
|
539
559
|
}
|
|
540
560
|
// Apply states
|
|
561
|
+
this._flushDepthTestState();
|
|
541
562
|
this._drawCalls.addCount(1, false);
|
|
542
563
|
if (instancesCount) {
|
|
543
564
|
this._commandBufferEncoder.startEncodingCommand(_native.Engine.COMMAND_DRAWINDEXEDINSTANCED);
|
|
@@ -566,6 +587,7 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
566
587
|
return;
|
|
567
588
|
}
|
|
568
589
|
// Apply states
|
|
590
|
+
this._flushDepthTestState();
|
|
569
591
|
this._drawCalls.addCount(1, false);
|
|
570
592
|
if (instancesCount) {
|
|
571
593
|
this._commandBufferEncoder.startEncodingCommand(_native.Engine.COMMAND_DRAWINSTANCED);
|
|
@@ -816,10 +838,41 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
816
838
|
* @param enable defines the state to set
|
|
817
839
|
*/
|
|
818
840
|
setDepthBuffer(enable) {
|
|
841
|
+
// Keep the shared depth-culling state in sync so that code paths which toggle
|
|
842
|
+
// depth testing through engine.depthCullingState.depthTest (for example
|
|
843
|
+
// EffectRenderer.applyEffectWrapper) are also honored on the native side. The
|
|
844
|
+
// native draw path does not go through the WebGL applyStates() flush, so the
|
|
845
|
+
// value is reconciled in _flushDepthTestState() right before each draw.
|
|
846
|
+
this._depthCullingState.depthTest = enable;
|
|
847
|
+
this._encodeDepthTest(enable);
|
|
848
|
+
}
|
|
849
|
+
_encodeDepthTest(enable) {
|
|
850
|
+
this._depthTestEnabled = enable;
|
|
819
851
|
this._commandBufferEncoder.startEncodingCommand(_native.Engine.COMMAND_SETDEPTHTEST);
|
|
820
852
|
this._commandBufferEncoder.encodeCommandArgAsUInt32(enable ? this._currentDepthTest : _native.Engine.DEPTH_TEST_ALWAYS);
|
|
821
853
|
this._commandBufferEncoder.finishEncodingCommand();
|
|
822
854
|
}
|
|
855
|
+
_flushDepthTestState() {
|
|
856
|
+
// Unlike the WebGL engine, the native engine does not call applyStates() before
|
|
857
|
+
// a draw, so depth-test toggles made directly on engine.depthCullingState are
|
|
858
|
+
// flushed here to match the cross-engine contract.
|
|
859
|
+
if (this._depthCullingState.depthTest !== this._depthTestEnabled) {
|
|
860
|
+
this._encodeDepthTest(this._depthCullingState.depthTest);
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
applyStates() {
|
|
864
|
+
// The base ThinEngine.applyStates() drives the WebGL context (this._gl) directly, which is null on
|
|
865
|
+
// Native. Flush the depth-culling state through the native command path instead, so callers that
|
|
866
|
+
// mutate engine.depthCullingState directly and then call applyStates() (e.g. the depth-peeling / OIT
|
|
867
|
+
// renderer) take effect. Alpha and stencil state are applied on Native via their dedicated setters
|
|
868
|
+
// (setAlphaMode / setStencil*), which encode their commands when called.
|
|
869
|
+
const depthCullingState = this._depthCullingState;
|
|
870
|
+
if (depthCullingState.depthFunc !== null && depthCullingState.depthFunc !== undefined) {
|
|
871
|
+
this.setDepthFunction(depthCullingState.depthFunc);
|
|
872
|
+
}
|
|
873
|
+
this.setDepthBuffer(depthCullingState.depthTest);
|
|
874
|
+
this.setDepthWrite(depthCullingState.depthMask);
|
|
875
|
+
}
|
|
823
876
|
/**
|
|
824
877
|
* Gets a boolean indicating if depth writing is enabled
|
|
825
878
|
* @returns the current depth writing state
|
|
@@ -877,9 +930,13 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
877
930
|
break;
|
|
878
931
|
}
|
|
879
932
|
this._currentDepthTest = nativeDepthFunc;
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
933
|
+
// Route through _encodeDepthTest so the tracked _depthTestEnabled state stays in
|
|
934
|
+
// sync with the encoded command. Because COMMAND_SETDEPTHTEST conflates the
|
|
935
|
+
// compare function and the enable bit (DEPTH_TEST_ALWAYS == disabled), encoding
|
|
936
|
+
// the new function directly here would silently re-enable depth testing while
|
|
937
|
+
// depth testing is logically disabled; _encodeDepthTest honors the current
|
|
938
|
+
// depthCullingState.depthTest and only emits the new function when enabled.
|
|
939
|
+
this._encodeDepthTest(this._depthCullingState.depthTest);
|
|
883
940
|
}
|
|
884
941
|
/**
|
|
885
942
|
* Enable or disable depth writing
|
|
@@ -1555,6 +1612,13 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
1555
1612
|
internalTexture.baseHeight = this._engine.getTextureHeight(texture);
|
|
1556
1613
|
internalTexture.width = internalTexture.baseWidth;
|
|
1557
1614
|
internalTexture.height = internalTexture.baseHeight;
|
|
1615
|
+
if (this._engine.getTextureLayerCount) {
|
|
1616
|
+
const layerCount = this._engine.getTextureLayerCount(texture);
|
|
1617
|
+
if (layerCount > 1) {
|
|
1618
|
+
internalTexture.is2DArray = true;
|
|
1619
|
+
internalTexture.baseDepth = internalTexture.depth = layerCount;
|
|
1620
|
+
}
|
|
1621
|
+
}
|
|
1558
1622
|
internalTexture.isReady = true;
|
|
1559
1623
|
internalTexture.useMipMaps = hasMipMaps;
|
|
1560
1624
|
this.updateTextureSamplingMode(samplingMode, internalTexture);
|
|
@@ -1589,6 +1653,13 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
1589
1653
|
if (newWidth !== internalTexture.baseWidth || newHeight !== internalTexture.baseHeight) {
|
|
1590
1654
|
throw new Error(`updateWrappedNativeTexture: new handle dimensions (${newWidth}x${newHeight}) must match the wrapped texture's dimensions (${internalTexture.baseWidth}x${internalTexture.baseHeight}).`);
|
|
1591
1655
|
}
|
|
1656
|
+
if (this._engine.getTextureLayerCount) {
|
|
1657
|
+
const newLayerCount = this._engine.getTextureLayerCount(texture);
|
|
1658
|
+
const oldLayerCount = internalTexture.is2DArray ? internalTexture.depth : 1;
|
|
1659
|
+
if (newLayerCount !== oldLayerCount) {
|
|
1660
|
+
throw new Error(`updateWrappedNativeTexture: new handle layer count (${newLayerCount}) must match the wrapped texture's layer count (${oldLayerCount}).`);
|
|
1661
|
+
}
|
|
1662
|
+
}
|
|
1592
1663
|
// Pre-validate before mutating any state so a thrown precondition leaves the InternalTexture untouched.
|
|
1593
1664
|
// Note: rtWrapper.texture only returns _textures[0]; walk every attachment to catch the multi-RT case where
|
|
1594
1665
|
// the wrapped texture is at index > 0.
|
|
@@ -1808,6 +1879,273 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
1808
1879
|
rtWrapper.setTextures(texture);
|
|
1809
1880
|
return rtWrapper;
|
|
1810
1881
|
}
|
|
1882
|
+
createRenderTargetCubeTexture(size, options) {
|
|
1883
|
+
const rtWrapper = this._createHardwareRenderTargetWrapper(false, true, size);
|
|
1884
|
+
let generateDepthBuffer = true;
|
|
1885
|
+
let generateStencilBuffer = false;
|
|
1886
|
+
let generateMipMaps = false;
|
|
1887
|
+
let type = 0;
|
|
1888
|
+
let samplingMode = 3;
|
|
1889
|
+
let format = 5;
|
|
1890
|
+
let samples = 1;
|
|
1891
|
+
let label;
|
|
1892
|
+
if (options !== undefined && typeof options === "object") {
|
|
1893
|
+
generateDepthBuffer = options.generateDepthBuffer ?? true;
|
|
1894
|
+
generateStencilBuffer = !!options.generateStencilBuffer;
|
|
1895
|
+
generateMipMaps = !!options.generateMipMaps;
|
|
1896
|
+
type = options.type ?? 0;
|
|
1897
|
+
samplingMode = options.samplingMode ?? 3;
|
|
1898
|
+
format = options.format ?? 5;
|
|
1899
|
+
samples = options.samples ?? 1;
|
|
1900
|
+
label = options.label;
|
|
1901
|
+
}
|
|
1902
|
+
// Match _createInternalTexture: float/half-float RTTs that the platform can't linearly filter fall
|
|
1903
|
+
// back to NEAREST so the cube RTT never carries an unsupported sampling mode.
|
|
1904
|
+
if (type === 1 && !this._caps.textureFloatLinearFiltering) {
|
|
1905
|
+
samplingMode = 1;
|
|
1906
|
+
}
|
|
1907
|
+
else if (type === 2 && !this._caps.textureHalfFloatLinearFiltering) {
|
|
1908
|
+
samplingMode = 1;
|
|
1909
|
+
}
|
|
1910
|
+
if (type === 1 && !this._caps.textureFloat) {
|
|
1911
|
+
type = 0;
|
|
1912
|
+
Logger.Warn("Float textures are not supported. Type forced to TEXTURETYPE_UNSIGNED_BYTE");
|
|
1913
|
+
}
|
|
1914
|
+
const texture = new InternalTexture(this, 5 /* InternalTextureSource.RenderTarget */);
|
|
1915
|
+
texture.isCube = true;
|
|
1916
|
+
texture.baseWidth = size;
|
|
1917
|
+
texture.baseHeight = size;
|
|
1918
|
+
texture.width = size;
|
|
1919
|
+
texture.height = size;
|
|
1920
|
+
texture.isReady = true;
|
|
1921
|
+
texture.samples = samples;
|
|
1922
|
+
texture.generateMipMaps = generateMipMaps;
|
|
1923
|
+
texture.samplingMode = samplingMode;
|
|
1924
|
+
texture.type = type;
|
|
1925
|
+
texture.format = format;
|
|
1926
|
+
texture.label = label;
|
|
1927
|
+
const nativeTexture = texture._hardwareTexture.underlyingResource;
|
|
1928
|
+
const nativeTextureFormat = getNativeTextureFormat(format, type);
|
|
1929
|
+
// See the createRenderTargetTexture MSAA/mips note: avoid the mips + samples combo on bgfx.
|
|
1930
|
+
const hasMips = samples > 1 ? false : generateMipMaps;
|
|
1931
|
+
this._engine.initializeTexture(nativeTexture, size, size, hasMips, nativeTextureFormat, /*renderTarget*/ true, /*srgb*/ false, samples, /*isCube*/ true);
|
|
1932
|
+
this._setTextureSampling(nativeTexture, getNativeSamplingMode(samplingMode));
|
|
1933
|
+
// The native engine cannot render to all six faces through one framebuffer, so create one
|
|
1934
|
+
// framebuffer per face (the C++ side binds the matching cube layer); bindFramebuffer(faceIndex)
|
|
1935
|
+
// then selects the right one.
|
|
1936
|
+
const framebuffers = [];
|
|
1937
|
+
for (let face = 0; face < 6; face++) {
|
|
1938
|
+
framebuffers.push(this._engine.createFrameBuffer(nativeTexture, size, size, generateStencilBuffer, generateDepthBuffer, samples, face));
|
|
1939
|
+
}
|
|
1940
|
+
rtWrapper._framebuffers = framebuffers;
|
|
1941
|
+
rtWrapper._generateDepthBuffer = generateDepthBuffer;
|
|
1942
|
+
rtWrapper._generateStencilBuffer = generateStencilBuffer;
|
|
1943
|
+
rtWrapper._samples = samples;
|
|
1944
|
+
rtWrapper.setTextures(texture);
|
|
1945
|
+
// Track the hand-built cube RTT texture the same way _createInternalTexture tracks 2D textures so it
|
|
1946
|
+
// participates in engine-wide lifecycle management (dispose iteration, context rebuild, stats).
|
|
1947
|
+
this._internalTexturesCache.push(texture);
|
|
1948
|
+
return rtWrapper;
|
|
1949
|
+
}
|
|
1950
|
+
createMultipleRenderTarget(size, options, _initializeBuffers = true) {
|
|
1951
|
+
const rtWrapper = this._createHardwareRenderTargetWrapper(true, false, size);
|
|
1952
|
+
let generateMipMaps = false;
|
|
1953
|
+
let generateDepthBuffer = true;
|
|
1954
|
+
let generateStencilBuffer = false;
|
|
1955
|
+
let generateDepthTexture = false;
|
|
1956
|
+
let textureCount = 1;
|
|
1957
|
+
let samples = 1;
|
|
1958
|
+
let types = [];
|
|
1959
|
+
let samplingModes = [];
|
|
1960
|
+
let formats = [];
|
|
1961
|
+
let targets = [];
|
|
1962
|
+
let faceIndex = [];
|
|
1963
|
+
let layerIndex = [];
|
|
1964
|
+
let labels = [];
|
|
1965
|
+
let dontCreateTextures = false;
|
|
1966
|
+
if (options !== undefined) {
|
|
1967
|
+
generateMipMaps = options.generateMipMaps ?? false;
|
|
1968
|
+
generateDepthBuffer = options.generateDepthBuffer ?? true;
|
|
1969
|
+
generateStencilBuffer = options.generateStencilBuffer ?? false;
|
|
1970
|
+
generateDepthTexture = options.generateDepthTexture ?? false;
|
|
1971
|
+
textureCount = options.textureCount ?? 1;
|
|
1972
|
+
samples = options.samples ?? 1;
|
|
1973
|
+
types = options.types || types;
|
|
1974
|
+
samplingModes = options.samplingModes || samplingModes;
|
|
1975
|
+
formats = options.formats || formats;
|
|
1976
|
+
targets = options.targetTypes || targets;
|
|
1977
|
+
faceIndex = options.faceIndex || faceIndex;
|
|
1978
|
+
layerIndex = options.layerIndex || layerIndex;
|
|
1979
|
+
labels = options.labels || labels;
|
|
1980
|
+
dontCreateTextures = options.dontCreateTextures ?? false;
|
|
1981
|
+
}
|
|
1982
|
+
rtWrapper.label = options?.label ?? "MultiRenderTargetWrapper";
|
|
1983
|
+
const width = size.width ?? size;
|
|
1984
|
+
const height = size.height ?? size;
|
|
1985
|
+
const textures = [];
|
|
1986
|
+
const attachments = [];
|
|
1987
|
+
for (let i = 0; i < textureCount; i++) {
|
|
1988
|
+
const samplingMode = samplingModes[i] || 3;
|
|
1989
|
+
let type = types[i] || 0;
|
|
1990
|
+
const format = formats[i] || 5;
|
|
1991
|
+
const target = targets[i] || 3553;
|
|
1992
|
+
attachments.push(i);
|
|
1993
|
+
// target === -1 marks an attachment with no engine-created texture; dontCreateTextures defers them.
|
|
1994
|
+
if (target === -1 || dontCreateTextures) {
|
|
1995
|
+
continue;
|
|
1996
|
+
}
|
|
1997
|
+
if (type === 1 && !this._caps.textureFloat) {
|
|
1998
|
+
type = 0;
|
|
1999
|
+
Logger.Warn("Float textures are not supported. Multi render target attachment forced to TEXTURETYPE_UNSIGNED_BYTE type");
|
|
2000
|
+
}
|
|
2001
|
+
const texture = new InternalTexture(this, 6 /* InternalTextureSource.MultiRenderTarget */);
|
|
2002
|
+
const nativeTexture = texture._hardwareTexture.underlyingResource;
|
|
2003
|
+
if (target !== 3553) {
|
|
2004
|
+
// Native multi render targets currently only attach 2D color textures; cube / 2D-array
|
|
2005
|
+
// attachments are created as 2D so the attachment still exists and mrt.textures[i] is populated.
|
|
2006
|
+
Logger.Warn("Multi render target attachment target " + target + " is not supported on Native; using a 2D texture.");
|
|
2007
|
+
}
|
|
2008
|
+
// bgfx auto-generates the mip chain on resolve; avoid the mips + MSAA combo (see createRenderTargetTexture).
|
|
2009
|
+
const hasMips = samples > 1 ? false : generateMipMaps;
|
|
2010
|
+
this._engine.initializeTexture(nativeTexture, width, height, hasMips, getNativeTextureFormat(format, type), /*renderTarget*/ true, /*srgb*/ false, samples);
|
|
2011
|
+
this._setTextureSampling(nativeTexture, getNativeSamplingMode(samplingMode));
|
|
2012
|
+
texture.baseWidth = width;
|
|
2013
|
+
texture.baseHeight = height;
|
|
2014
|
+
texture.width = width;
|
|
2015
|
+
texture.height = height;
|
|
2016
|
+
texture.isReady = true;
|
|
2017
|
+
texture.samples = samples;
|
|
2018
|
+
texture.generateMipMaps = generateMipMaps;
|
|
2019
|
+
texture.samplingMode = samplingMode;
|
|
2020
|
+
texture.type = type;
|
|
2021
|
+
texture.format = format;
|
|
2022
|
+
texture.label = labels[i] ?? rtWrapper.label + "-Texture" + i;
|
|
2023
|
+
textures[i] = texture;
|
|
2024
|
+
this._internalTexturesCache.push(texture);
|
|
2025
|
+
}
|
|
2026
|
+
rtWrapper._generateDepthBuffer = generateDepthBuffer || generateDepthTexture;
|
|
2027
|
+
rtWrapper._generateStencilBuffer = generateStencilBuffer;
|
|
2028
|
+
rtWrapper._samples = samples;
|
|
2029
|
+
rtWrapper._attachments = attachments;
|
|
2030
|
+
rtWrapper.setTextures(textures);
|
|
2031
|
+
rtWrapper.setLayerAndFaceIndices(layerIndex, faceIndex);
|
|
2032
|
+
// The native engine creates one framebuffer with all the color attachments (bgfx writes to every
|
|
2033
|
+
// attachment of the bound framebuffer, so there is no drawBuffers equivalent to issue per draw).
|
|
2034
|
+
this._createMultiRenderTargetFramebuffer(rtWrapper);
|
|
2035
|
+
return rtWrapper;
|
|
2036
|
+
}
|
|
2037
|
+
/**
|
|
2038
|
+
* Creates (or recreates) the native framebuffer of a multi render target from the color attachment
|
|
2039
|
+
* textures currently held by the wrapper. bgfx binds a fixed attachment set when a framebuffer is
|
|
2040
|
+
* created and cannot re-point an individual attachment the way GL's framebufferTexture2D can, so the
|
|
2041
|
+
* whole framebuffer has to be recreated whenever an attachment is swapped after creation (e.g. the OIT
|
|
2042
|
+
* depth-peeling renderer replaces every attachment via MultiRenderTarget.setInternalTexture).
|
|
2043
|
+
* @param rtWrapper The multi render target wrapper to build the framebuffer for.
|
|
2044
|
+
* @internal
|
|
2045
|
+
*/
|
|
2046
|
+
_createMultiRenderTargetFramebuffer(rtWrapper) {
|
|
2047
|
+
const textures = rtWrapper.textures;
|
|
2048
|
+
if (!textures) {
|
|
2049
|
+
return;
|
|
2050
|
+
}
|
|
2051
|
+
const colorHandles = [];
|
|
2052
|
+
for (const texture of textures) {
|
|
2053
|
+
const handle = texture?._hardwareTexture?.underlyingResource;
|
|
2054
|
+
if (handle) {
|
|
2055
|
+
colorHandles.push(handle);
|
|
2056
|
+
}
|
|
2057
|
+
}
|
|
2058
|
+
// bgfx framebuffers use a dense, ordered attachment list, so only (re)build once every expected color
|
|
2059
|
+
// attachment is present. Building from a partial set (e.g. attachments deferred via dontCreateTextures /
|
|
2060
|
+
// targetTypes[i] === -1, or filled out of order) would compress the attachment indices -- attachment 2
|
|
2061
|
+
// would become attachment 1, etc. -- and produce a framebuffer that does not match the MRT layout. The
|
|
2062
|
+
// count match guarantees the collected handles are contiguous and in attachment order.
|
|
2063
|
+
const expectedCount = rtWrapper._attachments ? rtWrapper._attachments.length : colorHandles.length;
|
|
2064
|
+
if (colorHandles.length === 0 || colorHandles.length !== expectedCount) {
|
|
2065
|
+
return;
|
|
2066
|
+
}
|
|
2067
|
+
const width = rtWrapper.width;
|
|
2068
|
+
const height = rtWrapper.height;
|
|
2069
|
+
if (this._engine.createMultiFrameBuffer) {
|
|
2070
|
+
rtWrapper._framebuffer = this._engine.createMultiFrameBuffer(colorHandles, width, height, rtWrapper._generateStencilBuffer, rtWrapper._generateDepthBuffer, rtWrapper._samples);
|
|
2071
|
+
}
|
|
2072
|
+
else {
|
|
2073
|
+
// Older Babylon Native binaries (predating multi render target support) do not expose createMultiFrameBuffer.
|
|
2074
|
+
// Fall back to a single-attachment framebuffer bound to the first color target so the scene keeps rendering.
|
|
2075
|
+
// Warn once (limit 1): the framebuffer can be rebuilt many times during attachment setup/swaps.
|
|
2076
|
+
Logger.Warn("createMultiFrameBuffer is not supported by this version of Babylon Native; multi render targets are unavailable. Falling back to a single-attachment framebuffer bound to the first color target.", 1);
|
|
2077
|
+
rtWrapper._framebuffer = this._engine.createFrameBuffer(colorHandles[0], width, height, rtWrapper._generateStencilBuffer, rtWrapper._generateDepthBuffer, rtWrapper._samples);
|
|
2078
|
+
}
|
|
2079
|
+
}
|
|
2080
|
+
generateMipMapsForCubemap(_texture, _unbind = true) {
|
|
2081
|
+
// The WebGL path rebinds gl.TEXTURE_CUBE_MAP and calls gl.generateMipmap; both deref _gl, which is
|
|
2082
|
+
// null on Native. bgfx auto-generates the mip chain when a render target texture created with mips is
|
|
2083
|
+
// resolved (the same way 2D RTTs get their mips here -- unBindFramebuffer issues no explicit mipgen),
|
|
2084
|
+
// so this is a no-op on Native.
|
|
2085
|
+
}
|
|
2086
|
+
bindAttachments(_attachments) {
|
|
2087
|
+
// No-op on Native: bgfx renders to every color attachment of the bound framebuffer, so there is
|
|
2088
|
+
// no gl.drawBuffers equivalent to select a subset.
|
|
2089
|
+
}
|
|
2090
|
+
buildTextureLayout(textureStatus, _backBufferLayout = false) {
|
|
2091
|
+
// Native has no gl draw-buffer enums; return a per-attachment index list (consumers only use the
|
|
2092
|
+
// length/order, and bindAttachments is a no-op).
|
|
2093
|
+
const result = [];
|
|
2094
|
+
for (let i = 0; i < textureStatus.length; i++) {
|
|
2095
|
+
result.push(textureStatus[i] ? i : -1);
|
|
2096
|
+
}
|
|
2097
|
+
return result;
|
|
2098
|
+
}
|
|
2099
|
+
restoreSingleAttachment() {
|
|
2100
|
+
// No-op on Native (see bindAttachments).
|
|
2101
|
+
}
|
|
2102
|
+
restoreSingleAttachmentForRenderTarget() {
|
|
2103
|
+
// No-op on Native (see bindAttachments).
|
|
2104
|
+
}
|
|
2105
|
+
generateMipMapsMultiFramebuffer(_texture) {
|
|
2106
|
+
// No-op on Native: bgfx auto-generates mips on render-target resolve (as for 2D/cube RTTs).
|
|
2107
|
+
}
|
|
2108
|
+
resolveMultiFramebuffer(_texture) {
|
|
2109
|
+
// No-op on Native: bgfx resolves MSAA render targets automatically.
|
|
2110
|
+
}
|
|
2111
|
+
unBindMultiColorAttachmentFramebuffer(_rtWrapper, _disableGenerateMipMaps = false, onBeforeUnbind) {
|
|
2112
|
+
this._currentRenderTarget = null;
|
|
2113
|
+
if (onBeforeUnbind) {
|
|
2114
|
+
onBeforeUnbind();
|
|
2115
|
+
}
|
|
2116
|
+
this._bindUnboundFramebuffer(null);
|
|
2117
|
+
}
|
|
2118
|
+
updateMultipleRenderTargetTextureSampleCount(rtWrapper, samples, _initializeBuffers = true) {
|
|
2119
|
+
if (!rtWrapper || rtWrapper.samples === samples) {
|
|
2120
|
+
return samples;
|
|
2121
|
+
}
|
|
2122
|
+
const textures = rtWrapper.textures;
|
|
2123
|
+
if (!textures) {
|
|
2124
|
+
return rtWrapper.samples;
|
|
2125
|
+
}
|
|
2126
|
+
const nativeRTWrapper = rtWrapper;
|
|
2127
|
+
// bgfx couples MSAA to the texture creation flags (see updateRenderTargetTextureSampleCount), so
|
|
2128
|
+
// changing the sample count after the fact requires reissuing every color attachment's underlying
|
|
2129
|
+
// bgfx handle with the new MSAA flag. initializeTexture disposes the old handle and allocates a fresh
|
|
2130
|
+
// one while preserving the InternalTexture / Graphics::Texture identity; only the internal bgfx handle
|
|
2131
|
+
// rotates. Afterwards the framebuffer is recreated so its attachment list refers to the new handles.
|
|
2132
|
+
for (const texture of textures) {
|
|
2133
|
+
// Wrapped (External-source) textures own an opaque external handle (format=-1); reinitializing
|
|
2134
|
+
// would destroy it and getNativeTextureFormat would throw, so leave those attachments untouched.
|
|
2135
|
+
if (!texture?._hardwareTexture || texture.source === 15 /* InternalTextureSource.External */) {
|
|
2136
|
+
continue;
|
|
2137
|
+
}
|
|
2138
|
+
const nativeTexture = texture._hardwareTexture.underlyingResource;
|
|
2139
|
+
// See the bgfx-msaa-mips workaround in updateRenderTargetTextureSampleCount (BabylonNative#1714).
|
|
2140
|
+
const hasMips = samples > 1 ? false : texture.generateMipMaps;
|
|
2141
|
+
this._engine.initializeTexture(nativeTexture, texture.baseWidth, texture.baseHeight, hasMips, getNativeTextureFormat(texture.format, texture.type),
|
|
2142
|
+
/*renderTarget*/ true, texture._useSRGBBuffer, samples);
|
|
2143
|
+
texture.samples = samples;
|
|
2144
|
+
}
|
|
2145
|
+
nativeRTWrapper._samples = samples;
|
|
2146
|
+
this._createMultiRenderTargetFramebuffer(nativeRTWrapper);
|
|
2147
|
+
return samples;
|
|
2148
|
+
}
|
|
1811
2149
|
updateRenderTargetTextureSampleCount(rtWrapper, samples) {
|
|
1812
2150
|
if (rtWrapper.samples === samples) {
|
|
1813
2151
|
return samples;
|
|
@@ -1847,10 +2185,24 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
1847
2185
|
// underlying bgfx resource has 1 mip level. Remove this guard once a fixed bgfx is in stable BN npm.
|
|
1848
2186
|
const hasMips = samples > 1 ? false : texture.generateMipMaps;
|
|
1849
2187
|
const nativeTextureFormat = getNativeTextureFormat(texture.format, texture.type);
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
|
|
1853
|
-
|
|
2188
|
+
const isCube = texture.isCube;
|
|
2189
|
+
this._engine.initializeTexture(nativeTexture, texture.baseWidth, texture.baseHeight, hasMips, nativeTextureFormat,
|
|
2190
|
+
/*renderTarget*/ true, texture._useSRGBBuffer, samples, isCube);
|
|
2191
|
+
if (isCube) {
|
|
2192
|
+
// Cube RTTs render through one framebuffer per face (see createRenderTargetCubeTexture). The
|
|
2193
|
+
// underlying bgfx handle was just rotated, so recreate all six attachments; the _framebuffers
|
|
2194
|
+
// setter releases the stale ones and keeps _framebuffer aliased to face 0 for single-target paths.
|
|
2195
|
+
const framebuffers = [];
|
|
2196
|
+
for (let face = 0; face < 6; face++) {
|
|
2197
|
+
framebuffers.push(this._engine.createFrameBuffer(nativeTexture, texture.baseWidth, texture.baseHeight, rtWrapper._generateStencilBuffer, rtWrapper._generateDepthBuffer, samples, face));
|
|
2198
|
+
}
|
|
2199
|
+
nativeRTWrapper._framebuffers = framebuffers;
|
|
2200
|
+
}
|
|
2201
|
+
else {
|
|
2202
|
+
// NativeRenderTargetWrapper._framebuffer setter releases the old framebuffer before assigning,
|
|
2203
|
+
// so no manual _releaseFramebufferObjects call is needed (and would double-delete the handle).
|
|
2204
|
+
nativeRTWrapper._framebuffer = this._engine.createFrameBuffer(nativeTexture, texture.baseWidth, texture.baseHeight, rtWrapper._generateStencilBuffer, rtWrapper._generateDepthBuffer, samples);
|
|
2205
|
+
}
|
|
1854
2206
|
rtWrapper._samples = samples;
|
|
1855
2207
|
texture.samples = samples;
|
|
1856
2208
|
return samples;
|
|
@@ -1868,13 +2220,17 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
1868
2220
|
this.unBindFramebuffer(this._currentRenderTarget);
|
|
1869
2221
|
}
|
|
1870
2222
|
this._currentRenderTarget = texture;
|
|
1871
|
-
if (faceIndex) {
|
|
1872
|
-
throw new Error("Cuboid frame buffers are not yet supported in NativeEngine.");
|
|
1873
|
-
}
|
|
1874
2223
|
if (requiredWidth || requiredHeight) {
|
|
1875
2224
|
throw new Error("Required width/height for frame buffers not yet supported in NativeEngine.");
|
|
1876
2225
|
}
|
|
1877
|
-
if (nativeRTWrapper.
|
|
2226
|
+
if (nativeRTWrapper._framebuffers) {
|
|
2227
|
+
// Cube render target: bind the framebuffer for the requested face.
|
|
2228
|
+
this._bindUnboundFramebuffer(nativeRTWrapper._framebuffers[faceIndex ?? 0]);
|
|
2229
|
+
}
|
|
2230
|
+
else if (faceIndex) {
|
|
2231
|
+
throw new Error("Cuboid frame buffers are not yet supported in NativeEngine.");
|
|
2232
|
+
}
|
|
2233
|
+
else if (nativeRTWrapper._framebufferDepthStencil) {
|
|
1878
2234
|
this._bindUnboundFramebuffer(nativeRTWrapper._framebufferDepthStencil);
|
|
1879
2235
|
}
|
|
1880
2236
|
else {
|
|
@@ -2091,7 +2447,17 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
2091
2447
|
* @param generateMipMaps defines whether to generate mipmaps or not
|
|
2092
2448
|
*/
|
|
2093
2449
|
updateTextureData(texture, imageData, xOffset, yOffset, width, height, faceIndex = 0, lod = 0, generateMipMaps = false) {
|
|
2094
|
-
|
|
2450
|
+
if (!texture._hardwareTexture) {
|
|
2451
|
+
return;
|
|
2452
|
+
}
|
|
2453
|
+
if (!this._engine.updateTextureData) {
|
|
2454
|
+
throw new Error("updateTextureData not implemented.");
|
|
2455
|
+
}
|
|
2456
|
+
// bgfx updates the requested sub-rectangle of the existing texture (faceIndex selects the cube
|
|
2457
|
+
// face / array layer, lod selects the mip level). invertY is forwarded so the native side can match
|
|
2458
|
+
// the vertical orientation the base texture upload uses. Mip regeneration after a partial update is
|
|
2459
|
+
// not supported on Native, so generateMipMaps is ignored (consistent with the other raw-texture paths).
|
|
2460
|
+
this._engine.updateTextureData(texture._hardwareTexture.underlyingResource, imageData, xOffset, yOffset, width, height, faceIndex, lod, texture.invertY);
|
|
2095
2461
|
}
|
|
2096
2462
|
/**
|
|
2097
2463
|
* @internal
|