@babylonjs/core 5.0.0-alpha.55 → 5.0.0-alpha.59
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/Bones/boneIKController.d.ts +1 -2
- package/Bones/boneIKController.js +12 -37
- package/Bones/boneIKController.js.map +1 -1
- package/Buffers/buffer.js +3 -2
- package/Buffers/buffer.js.map +1 -1
- package/Cameras/Inputs/BaseCameraPointersInput.d.ts +0 -1
- package/Cameras/Inputs/BaseCameraPointersInput.js +5 -5
- package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseInput.d.ts +0 -1
- package/Cameras/Inputs/freeCameraMouseInput.js +27 -28
- package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
- package/Cameras/camera.d.ts +4 -0
- package/Cameras/camera.js +2 -0
- package/Cameras/camera.js.map +1 -1
- package/Culling/boundingBox.d.ts +7 -1
- package/Culling/boundingBox.js +4 -0
- package/Culling/boundingBox.js.map +1 -1
- package/DeviceInput/Helpers/eventFactory.js +1 -2
- package/DeviceInput/Helpers/eventFactory.js.map +1 -1
- package/DeviceInput/Implementations/webDeviceInputSystem.d.ts +1 -0
- package/DeviceInput/Implementations/webDeviceInputSystem.js +5 -12
- package/DeviceInput/Implementations/webDeviceInputSystem.js.map +1 -1
- package/DeviceInput/InputDevices/deviceEnums.d.ts +1 -3
- package/DeviceInput/InputDevices/deviceEnums.js +0 -2
- package/DeviceInput/InputDevices/deviceEnums.js.map +1 -1
- package/Engines/Extensions/engine.alpha.js +11 -6
- package/Engines/Extensions/engine.alpha.js.map +1 -1
- package/Engines/Extensions/engine.cubeTexture.d.ts +1 -1
- package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
- package/Engines/Extensions/engine.multiRender.d.ts +2 -2
- package/Engines/Extensions/engine.multiRender.js.map +1 -1
- package/Engines/Extensions/engine.renderTarget.d.ts +7 -15
- package/Engines/Extensions/engine.renderTarget.js +6 -63
- package/Engines/Extensions/engine.renderTarget.js.map +1 -1
- package/Engines/Extensions/engine.renderTargetCube.d.ts +1 -1
- package/Engines/Extensions/engine.renderTargetCube.js.map +1 -1
- package/Engines/IDrawContext.d.ts +4 -0
- package/Engines/IDrawContext.js.map +1 -1
- package/Engines/IMaterialContext.d.ts +1 -0
- package/Engines/IMaterialContext.js.map +1 -1
- package/Engines/WebGL/webGLRenderTargetWrapper.d.ts +24 -2
- package/Engines/WebGL/webGLRenderTargetWrapper.js +53 -0
- package/Engines/WebGL/webGLRenderTargetWrapper.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.alpha.js +20 -31
- package/Engines/WebGPU/Extensions/engine.alpha.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.cubeTexture.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.renderTarget.js +2 -40
- package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.renderTargetCube.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.storageBuffer.js +1 -1
- package/Engines/WebGPU/Extensions/engine.storageBuffer.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.uniformBuffer.js +1 -1
- package/Engines/WebGPU/Extensions/engine.uniformBuffer.js.map +1 -1
- package/Engines/WebGPU/webgpuBufferManager.d.ts +1 -0
- package/Engines/WebGPU/webgpuBufferManager.js +3 -0
- package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheBindGroups.d.ts +3 -2
- package/Engines/WebGPU/webgpuCacheBindGroups.js +15 -14
- package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js +18 -18
- package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
- package/Engines/WebGPU/webgpuCacheRenderPipelineTree.d.ts +2 -0
- package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js +17 -0
- package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js.map +1 -1
- package/Engines/WebGPU/webgpuDrawContext.d.ts +24 -2
- package/Engines/WebGPU/webgpuDrawContext.js +75 -1
- package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
- package/Engines/WebGPU/webgpuMaterialContext.d.ts +1 -6
- package/Engines/WebGPU/webgpuMaterialContext.js +11 -8
- package/Engines/WebGPU/webgpuMaterialContext.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessor.d.ts +1 -0
- package/Engines/WebGPU/webgpuShaderProcessor.js +2 -1
- package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureHelper.d.ts +1 -0
- package/Engines/WebGPU/webgpuTextureHelper.js +67 -1
- package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
- package/Engines/constants.d.ts +46 -8
- package/Engines/constants.js +46 -8
- package/Engines/constants.js.map +1 -1
- package/Engines/engine.d.ts +37 -2
- package/Engines/engine.js +68 -0
- package/Engines/engine.js.map +1 -1
- package/Engines/engineFeatures.d.ts +2 -0
- package/Engines/engineFeatures.js.map +1 -1
- package/Engines/nativeEngine.d.ts +3 -5
- package/Engines/nativeEngine.js +2 -2
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/nullEngine.d.ts +1 -1
- package/Engines/nullEngine.js +2 -2
- package/Engines/nullEngine.js.map +1 -1
- package/Engines/renderTargetWrapper.d.ts +10 -3
- package/Engines/renderTargetWrapper.js +29 -10
- package/Engines/renderTargetWrapper.js.map +1 -1
- package/Engines/thinEngine.d.ts +16 -1
- package/Engines/thinEngine.js +82 -2
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +28 -7
- package/Engines/webgpuEngine.js +177 -58
- package/Engines/webgpuEngine.js.map +1 -1
- package/Inputs/scene.inputManager.js +2 -3
- package/Inputs/scene.inputManager.js.map +1 -1
- package/Layers/effectLayer.d.ts +0 -2
- package/Layers/effectLayer.js +12 -11
- package/Layers/effectLayer.js.map +1 -1
- package/Layers/effectLayerSceneComponent.js +5 -0
- package/Layers/effectLayerSceneComponent.js.map +1 -1
- package/Layers/glowLayer.js +2 -0
- package/Layers/glowLayer.js.map +1 -1
- package/Layers/highlightLayer.js +2 -0
- package/Layers/highlightLayer.js.map +1 -1
- package/LensFlares/lensFlare.d.ts +3 -0
- package/LensFlares/lensFlare.js +5 -0
- package/LensFlares/lensFlare.js.map +1 -1
- package/LensFlares/lensFlareSystem.d.ts +2 -1
- package/LensFlares/lensFlareSystem.js +15 -12
- package/LensFlares/lensFlareSystem.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.d.ts +0 -2
- package/Lights/Shadows/cascadedShadowGenerator.js +3 -12
- package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
- package/Lights/Shadows/shadowGenerator.d.ts +0 -3
- package/Lights/Shadows/shadowGenerator.js +8 -14
- package/Lights/Shadows/shadowGenerator.js.map +1 -1
- package/Lights/light.js +3 -0
- package/Lights/light.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.js +3 -0
- package/Loading/Plugins/babylonFileLoader.js.map +1 -1
- package/Materials/Background/backgroundMaterial.js +8 -11
- package/Materials/Background/backgroundMaterial.js.map +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.js +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
- package/Materials/Node/Blocks/cloudBlock.d.ts +49 -0
- package/Materials/Node/Blocks/cloudBlock.js +154 -0
- package/Materials/Node/Blocks/cloudBlock.js.map +1 -0
- package/Materials/Node/Blocks/colorMergerBlock.d.ts +21 -0
- package/Materials/Node/Blocks/colorMergerBlock.js +48 -4
- package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
- package/Materials/Node/Blocks/index.d.ts +1 -0
- package/Materials/Node/Blocks/index.js +1 -0
- package/Materials/Node/Blocks/index.js.map +1 -1
- package/Materials/Node/Blocks/vectorMergerBlock.d.ts +25 -0
- package/Materials/Node/Blocks/vectorMergerBlock.js +93 -23
- package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
- package/Materials/Node/nodeMaterial.js +17 -7
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildStateSharedData.d.ts +5 -1
- package/Materials/Node/nodeMaterialBuildStateSharedData.js +5 -1
- package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
- package/Materials/Node/nodeMaterialDecorator.d.ts +4 -2
- package/Materials/Node/nodeMaterialDecorator.js +4 -2
- package/Materials/Node/nodeMaterialDecorator.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.d.ts +4 -2
- package/Materials/PBR/pbrBaseMaterial.js +23 -9
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/PBR/pbrClearCoatConfiguration.js +1 -1
- package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSheenConfiguration.js +1 -1
- package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
- package/Materials/PBR/pbrSubSurfaceConfiguration.js +1 -1
- package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
- package/Materials/Textures/Procedurals/proceduralTexture.d.ts +3 -3
- package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
- package/Materials/Textures/baseTexture.d.ts +2 -0
- package/Materials/Textures/baseTexture.js +2 -0
- package/Materials/Textures/baseTexture.js.map +1 -1
- package/Materials/Textures/multiRenderTarget.d.ts +6 -4
- package/Materials/Textures/multiRenderTarget.js +28 -12
- package/Materials/Textures/multiRenderTarget.js.map +1 -1
- package/Materials/Textures/renderTargetTexture.d.ts +29 -3
- package/Materials/Textures/renderTargetTexture.js +127 -14
- package/Materials/Textures/renderTargetTexture.js.map +1 -1
- package/Materials/Textures/texture.js +11 -4
- package/Materials/Textures/texture.js.map +1 -1
- package/Materials/Textures/textureCreationOptions.d.ts +57 -0
- package/Materials/Textures/textureCreationOptions.js +2 -0
- package/Materials/Textures/textureCreationOptions.js.map +1 -0
- package/Materials/Textures/thinRenderTargetTexture.d.ts +3 -4
- package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
- package/Materials/Textures/videoTexture.d.ts +10 -7
- package/Materials/Textures/videoTexture.js +17 -11
- package/Materials/Textures/videoTexture.js.map +1 -1
- package/Materials/drawWrapper.d.ts +2 -1
- package/Materials/drawWrapper.js +10 -1
- package/Materials/drawWrapper.js.map +1 -1
- package/Materials/effectRenderer.js +1 -1
- package/Materials/effectRenderer.js.map +1 -1
- package/Materials/material.d.ts +3 -1
- package/Materials/material.detailMapConfiguration.d.ts +1 -1
- package/Materials/material.detailMapConfiguration.js +2 -2
- package/Materials/material.detailMapConfiguration.js.map +1 -1
- package/Materials/material.js +18 -9
- package/Materials/material.js.map +1 -1
- package/Materials/materialHelper.d.ts +7 -0
- package/Materials/materialHelper.js +17 -2
- package/Materials/materialHelper.js.map +1 -1
- package/Materials/pushMaterial.js +1 -1
- package/Materials/pushMaterial.js.map +1 -1
- package/Materials/shaderMaterial.d.ts +1 -1
- package/Materials/shaderMaterial.js +5 -5
- package/Materials/shaderMaterial.js.map +1 -1
- package/Materials/shadowDepthWrapper.d.ts +4 -4
- package/Materials/shadowDepthWrapper.js +16 -15
- package/Materials/shadowDepthWrapper.js.map +1 -1
- package/Materials/standardMaterial.d.ts +4 -2
- package/Materials/standardMaterial.js +23 -9
- package/Materials/standardMaterial.js.map +1 -1
- package/Materials/uniformBuffer.d.ts +10 -2
- package/Materials/uniformBuffer.js +17 -11
- package/Materials/uniformBuffer.js.map +1 -1
- package/Meshes/Builders/capsuleBuilder.d.ts +5 -5
- package/Meshes/Builders/capsuleBuilder.js.map +1 -1
- package/Meshes/abstractMesh.d.ts +13 -0
- package/Meshes/abstractMesh.js +22 -2
- package/Meshes/abstractMesh.js.map +1 -1
- package/Meshes/buffer.d.ts +5 -0
- package/Meshes/buffer.js +6 -0
- package/Meshes/buffer.js.map +1 -0
- package/Meshes/geometry.d.ts +7 -0
- package/Meshes/geometry.js +16 -0
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/linesMesh.js +1 -1
- package/Meshes/linesMesh.js.map +1 -1
- package/Meshes/mesh.js +16 -1
- package/Meshes/mesh.js.map +1 -1
- package/Meshes/mesh.lts.d.ts +5 -1
- package/Meshes/mesh.lts.js +1 -2
- package/Meshes/mesh.lts.js.map +1 -1
- package/Meshes/subMesh.d.ts +10 -9
- package/Meshes/subMesh.js +44 -43
- package/Meshes/subMesh.js.map +1 -1
- package/Misc/environmentTextureTools.js +1 -0
- package/Misc/environmentTextureTools.js.map +1 -1
- package/Misc/fileTools.d.ts +1 -3
- package/Misc/fileTools.js +12 -13
- package/Misc/fileTools.js.map +1 -1
- package/Misc/fileTools.lts.d.ts +16 -1
- package/Misc/fileTools.lts.js +1 -2
- package/Misc/fileTools.lts.js.map +1 -1
- package/Misc/rgbdTextureTools.js +1 -0
- package/Misc/rgbdTextureTools.js.map +1 -1
- package/Misc/sceneSerializer.js +17 -17
- package/Misc/sceneSerializer.js.map +1 -1
- package/Misc/textureTools.js +2 -0
- package/Misc/textureTools.js.map +1 -1
- package/Particles/gpuParticleSystem.d.ts +5 -1
- package/Particles/gpuParticleSystem.js +31 -5
- package/Particles/gpuParticleSystem.js.map +1 -1
- package/Particles/particleSystem.d.ts +5 -1
- package/Particles/particleSystem.js +35 -5
- package/Particles/particleSystem.js.map +1 -1
- package/Physics/Plugins/ammoJSPlugin.d.ts +1 -0
- package/Physics/Plugins/ammoJSPlugin.js +10 -0
- package/Physics/Plugins/ammoJSPlugin.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js +2 -0
- package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +1 -0
- package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js +1 -0
- package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
- package/PostProcesses/bloomMergePostProcess.js +1 -0
- package/PostProcesses/bloomMergePostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldBlurPostProcess.js +1 -0
- package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
- package/PostProcesses/depthOfFieldMergePostProcess.js +1 -0
- package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
- package/PostProcesses/extractHighlightsPostProcess.js +1 -0
- package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
- package/PostProcesses/postProcess.d.ts +6 -0
- package/PostProcesses/postProcess.js +9 -1
- package/PostProcesses/postProcess.js.map +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.js +2 -2
- package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
- package/PostProcesses/tonemapPostProcess.d.ts +2 -1
- package/PostProcesses/tonemapPostProcess.js +3 -2
- package/PostProcesses/tonemapPostProcess.js.map +1 -1
- package/Rendering/boundingBoxRenderer.d.ts +5 -3
- package/Rendering/boundingBoxRenderer.js +46 -14
- package/Rendering/boundingBoxRenderer.js.map +1 -1
- package/Rendering/depthPeelingRenderer.d.ts +85 -0
- package/Rendering/depthPeelingRenderer.js +390 -0
- package/Rendering/depthPeelingRenderer.js.map +1 -0
- package/Rendering/depthPeelingSceneComponent.d.ts +51 -0
- package/Rendering/depthPeelingSceneComponent.js +73 -0
- package/Rendering/depthPeelingSceneComponent.js.map +1 -0
- package/Rendering/depthRenderer.d.ts +9 -2
- package/Rendering/depthRenderer.js +77 -43
- package/Rendering/depthRenderer.js.map +1 -1
- package/Rendering/depthRendererSceneComponent.js +0 -1
- package/Rendering/depthRendererSceneComponent.js.map +1 -1
- package/Rendering/edgesRenderer.d.ts +2 -0
- package/Rendering/edgesRenderer.js +11 -0
- package/Rendering/edgesRenderer.js.map +1 -1
- package/Rendering/geometryBufferRenderer.js +4 -4
- package/Rendering/geometryBufferRenderer.js.map +1 -1
- package/Rendering/index.d.ts +2 -0
- package/Rendering/index.js +2 -0
- package/Rendering/index.js.map +1 -1
- package/Rendering/outlineRenderer.d.ts +5 -4
- package/Rendering/outlineRenderer.js +24 -19
- package/Rendering/outlineRenderer.js.map +1 -1
- package/Rendering/prePassRenderer.js +7 -2
- package/Rendering/prePassRenderer.js.map +1 -1
- package/Rendering/renderingGroup.js +7 -2
- package/Rendering/renderingGroup.js.map +1 -1
- package/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.d.ts +5 -0
- package/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.js +7 -0
- package/Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.js.map +1 -0
- package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.d.ts +5 -0
- package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js +7 -0
- package/Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js.map +1 -0
- package/Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.d.ts +5 -0
- package/Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.js +7 -0
- package/Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.js.map +1 -0
- package/Shaders/ShadersInclude/oitDeclaration.d.ts +5 -0
- package/Shaders/ShadersInclude/oitDeclaration.js +7 -0
- package/Shaders/ShadersInclude/oitDeclaration.js.map +1 -0
- package/Shaders/ShadersInclude/oitFragment.d.ts +5 -0
- package/Shaders/ShadersInclude/oitFragment.js +7 -0
- package/Shaders/ShadersInclude/oitFragment.js.map +1 -0
- package/Shaders/boundingBoxRenderer.fragment.d.ts +7 -0
- package/Shaders/boundingBoxRenderer.fragment.js +9 -0
- package/Shaders/boundingBoxRenderer.fragment.js.map +1 -0
- package/Shaders/boundingBoxRenderer.vertex.d.ts +7 -0
- package/Shaders/boundingBoxRenderer.vertex.js +9 -0
- package/Shaders/boundingBoxRenderer.vertex.js.map +1 -0
- package/Shaders/default.fragment.d.ts +2 -0
- package/Shaders/default.fragment.js +3 -1
- package/Shaders/default.fragment.js.map +1 -1
- package/Shaders/oitBackBlend.fragment.d.ts +5 -0
- package/Shaders/oitBackBlend.fragment.js +7 -0
- package/Shaders/oitBackBlend.fragment.js.map +1 -0
- package/Shaders/oitFinal.fragment.d.ts +5 -0
- package/Shaders/oitFinal.fragment.js +7 -0
- package/Shaders/oitFinal.fragment.js.map +1 -0
- package/Shaders/pbr.fragment.d.ts +2 -0
- package/Shaders/pbr.fragment.js +3 -1
- package/Shaders/pbr.fragment.js.map +1 -1
- package/Shaders/screenSpaceReflection.fragment.js +1 -1
- package/Shaders/screenSpaceReflection.fragment.js.map +1 -1
- package/Sprites/spriteManager.d.ts +3 -1
- package/Sprites/spriteManager.js +16 -5
- package/Sprites/spriteManager.js.map +1 -1
- package/Sprites/spriteRenderer.d.ts +1 -0
- package/Sprites/spriteRenderer.js +14 -0
- package/Sprites/spriteRenderer.js.map +1 -1
- package/States/alphaCullingState.js +1 -1
- package/States/alphaCullingState.js.map +1 -1
- package/XR/features/WebXRControllerPointerSelection.d.ts +4 -0
- package/XR/features/WebXRControllerPointerSelection.js +23 -1
- package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
- package/XR/features/WebXRNearInteraction.d.ts +5 -4
- package/XR/features/WebXRNearInteraction.js +15 -13
- package/XR/features/WebXRNearInteraction.js.map +1 -1
- package/XR/features/WebXRWalkingLocomotion.js +28 -13
- package/XR/features/WebXRWalkingLocomotion.js.map +1 -1
- package/XR/webXRSessionManager.js +1 -3
- package/XR/webXRSessionManager.js.map +1 -1
- package/package.json +43 -7
- package/scene.d.ts +18 -4
- package/scene.js +101 -42
- package/scene.js.map +1 -1
- package/scene.lts.d.ts +6 -1
- package/scene.lts.js +1 -2
- package/scene.lts.js.map +1 -1
- package/sceneComponent.d.ts +1 -0
- package/sceneComponent.js +1 -0
- package/sceneComponent.js.map +1 -1
- package/Engines/depthTextureCreationOptions.d.ts +0 -17
- package/Engines/depthTextureCreationOptions.js +0 -10
- package/Engines/depthTextureCreationOptions.js.map +0 -1
- package/Materials/Textures/renderTargetCreationOptions.d.ts +0 -27
- package/Materials/Textures/renderTargetCreationOptions.js +0 -10
- package/Materials/Textures/renderTargetCreationOptions.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webXRSessionManager.js","sourceRoot":"","sources":["../../../sourceES6/core/XR/webXRSessionManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"../Misc/logger\";\r\nimport { Observable } from \"../Misc/observable\";\r\nimport { Nullable } from \"../types\";\r\nimport { IDisposable, Scene } from \"../scene\";\r\nimport { InternalTexture, InternalTextureSource } from \"../Materials/Textures/internalTexture\";\r\nimport { RenderTargetTexture } from \"../Materials/Textures/renderTargetTexture\";\r\nimport { WebXRRenderTarget } from \"./webXRTypes\";\r\nimport { WebXRManagedOutputCanvas, WebXRManagedOutputCanvasOptions } from \"./webXRManagedOutputCanvas\";\r\nimport { Engine } from \"../Engines/engine\";\r\nimport { WebGLRenderTargetWrapper } from \"../Engines/WebGL/webGLRenderTargetWrapper\";\r\n\r\ninterface IRenderTargetProvider {\r\n getRenderTargetForEye(eye: XREye): Nullable<RenderTargetTexture>;\r\n}\r\n\r\n/**\r\n * Manages an XRSession to work with Babylon's engine\r\n * @see https://doc.babylonjs.com/how_to/webxr_session_manager\r\n */\r\nexport class WebXRSessionManager implements IDisposable {\r\n private _engine: Nullable<Engine>;\r\n private _referenceSpace: XRReferenceSpace;\r\n private _rttProvider: Nullable<IRenderTargetProvider>;\r\n private _sessionEnded: boolean = false;\r\n private _xrNavigator: any;\r\n private _baseLayer: Nullable<XRWebGLLayer> = null;\r\n private _renderTargetTextures: Array<RenderTargetTexture> = [];\r\n private _sessionMode: XRSessionMode;\r\n\r\n /**\r\n * The base reference space from which the session started. good if you want to reset your\r\n * reference space\r\n */\r\n public baseReferenceSpace: XRReferenceSpace;\r\n /**\r\n * Current XR frame\r\n */\r\n public currentFrame: Nullable<XRFrame>;\r\n /** WebXR timestamp updated every frame */\r\n public currentTimestamp: number = -1;\r\n /**\r\n * Used just in case of a failure to initialize an immersive session.\r\n * The viewer reference space is compensated using this height, creating a kind of \"viewer-floor\" reference space\r\n */\r\n public defaultHeightCompensation = 1.7;\r\n /**\r\n * Fires every time a new xrFrame arrives which can be used to update the camera\r\n */\r\n public onXRFrameObservable: Observable<XRFrame> = new Observable<XRFrame>();\r\n /**\r\n * Fires when the reference space changed\r\n */\r\n public onXRReferenceSpaceChanged: Observable<XRReferenceSpace> = new Observable();\r\n /**\r\n * Fires when the xr session is ended either by the device or manually done\r\n */\r\n public onXRSessionEnded: Observable<any> = new Observable<any>();\r\n /**\r\n * Fires when the xr session is initialized: right after requestSession was called and returned with a successful result\r\n */\r\n public onXRSessionInit: Observable<XRSession> = new Observable<XRSession>();\r\n /**\r\n * Underlying xr session\r\n */\r\n public session: XRSession;\r\n /**\r\n * The viewer (head position) reference space. This can be used to get the XR world coordinates\r\n * or get the offset the player is currently at.\r\n */\r\n public viewerReferenceSpace: XRReferenceSpace;\r\n\r\n /**\r\n * Constructs a WebXRSessionManager, this must be initialized within a user action before usage\r\n * @param scene The scene which the session should be created for\r\n */\r\n constructor(\r\n /** The scene which the session should be created for */\r\n public scene: Scene\r\n ) {\r\n this._engine = scene.getEngine();\r\n this._engine.onDisposeObservable.addOnce(() => {\r\n this._engine = null;\r\n });\r\n }\r\n\r\n /**\r\n * The current reference space used in this session. This reference space can constantly change!\r\n * It is mainly used to offset the camera's position.\r\n */\r\n public get referenceSpace(): XRReferenceSpace {\r\n return this._referenceSpace;\r\n }\r\n\r\n /**\r\n * Set a new reference space and triggers the observable\r\n */\r\n public set referenceSpace(newReferenceSpace: XRReferenceSpace) {\r\n this._referenceSpace = newReferenceSpace;\r\n this.onXRReferenceSpaceChanged.notifyObservers(this._referenceSpace);\r\n }\r\n\r\n /**\r\n * The mode for the managed XR session\r\n */\r\n public get sessionMode(): XRSessionMode {\r\n return this._sessionMode;\r\n }\r\n\r\n /**\r\n * Disposes of the session manager\r\n * This should be called explicitly by the dev, if required.\r\n */\r\n public dispose() {\r\n // disposing without leaving XR? Exit XR first\r\n if (!this._sessionEnded) {\r\n this.exitXRAsync();\r\n }\r\n this.onXRFrameObservable.clear();\r\n this.onXRSessionEnded.clear();\r\n this.onXRReferenceSpaceChanged.clear();\r\n this.onXRSessionInit.clear();\r\n }\r\n\r\n /**\r\n * Stops the xrSession and restores the render loop\r\n * @returns Promise which resolves after it exits XR\r\n */\r\n public exitXRAsync() {\r\n if (this.session && !this._sessionEnded) {\r\n this._sessionEnded = true;\r\n return this.session.end().catch((e) => {\r\n Logger.Warn(\"Could not end XR session.\");\r\n });\r\n }\r\n return Promise.resolve();\r\n }\r\n\r\n /**\r\n * Gets the correct render target texture to be rendered this frame for this eye\r\n * @param eye the eye for which to get the render target\r\n * @returns the render target for the specified eye or null if not available\r\n */\r\n public getRenderTargetTextureForEye(eye: XREye): Nullable<RenderTargetTexture> {\r\n return this._rttProvider!.getRenderTargetForEye(eye);\r\n }\r\n\r\n /**\r\n * Creates a WebXRRenderTarget object for the XR session\r\n * @param onStateChangedObservable optional, mechanism for enabling/disabling XR rendering canvas, used only on Web\r\n * @param options optional options to provide when creating a new render target\r\n * @returns a WebXR render target to which the session can render\r\n */\r\n public getWebXRRenderTarget(options?: WebXRManagedOutputCanvasOptions): WebXRRenderTarget {\r\n const engine = this.scene.getEngine();\r\n if (this._xrNavigator.xr.native) {\r\n return this._xrNavigator.xr.getWebXRRenderTarget(engine);\r\n } else {\r\n options = options || WebXRManagedOutputCanvasOptions.GetDefaults(engine);\r\n options.canvasElement = options.canvasElement || engine.getRenderingCanvas() || undefined;\r\n return new WebXRManagedOutputCanvas(this, options);\r\n }\r\n }\r\n\r\n /**\r\n * Initializes the manager\r\n * After initialization enterXR can be called to start an XR session\r\n * @returns Promise which resolves after it is initialized\r\n */\r\n public initializeAsync(): Promise<void> {\r\n // Check if the browser supports webXR\r\n this._xrNavigator = navigator;\r\n if (!this._xrNavigator.xr) {\r\n return Promise.reject(\"WebXR not available\");\r\n }\r\n return Promise.resolve();\r\n }\r\n\r\n /**\r\n * Initializes an xr session\r\n * @param xrSessionMode mode to initialize\r\n * @param xrSessionInit defines optional and required values to pass to the session builder\r\n * @returns a promise which will resolve once the session has been initialized\r\n */\r\n public initializeSessionAsync(xrSessionMode: XRSessionMode = \"immersive-vr\", xrSessionInit: XRSessionInit = {}): Promise<XRSession> {\r\n return this._xrNavigator.xr.requestSession(xrSessionMode, xrSessionInit).then((session: XRSession) => {\r\n this.session = session;\r\n this._sessionMode = xrSessionMode;\r\n this.onXRSessionInit.notifyObservers(session);\r\n this._sessionEnded = false;\r\n\r\n // handle when the session is ended (By calling session.end or device ends its own session eg. pressing home button on phone)\r\n this.session.addEventListener(\r\n \"end\",\r\n () => {\r\n this._sessionEnded = true;\r\n\r\n // Notify frame observers\r\n this.onXRSessionEnded.notifyObservers(null);\r\n // Remove render target texture\r\n this._rttProvider = null;\r\n\r\n if (this._engine) {\r\n // make sure dimensions object is restored\r\n this._engine.framebufferDimensionsObject = null;\r\n\r\n // Restore frame buffer to avoid clear on xr framebuffer after session end\r\n this._engine.restoreDefaultFramebuffer();\r\n\r\n // Need to restart render loop as after the session is ended the last request for new frame will never call callback\r\n this._engine.customAnimationFrameRequester = null;\r\n this._engine._renderLoop();\r\n }\r\n\r\n // Dispose render target textures\r\n if (this.isNative) {\r\n this._renderTargetTextures.forEach((rtt) => rtt.dispose());\r\n this._renderTargetTextures.length = 0;\r\n }\r\n },\r\n { once: true }\r\n );\r\n\r\n return this.session;\r\n });\r\n }\r\n\r\n /**\r\n * Checks if a session would be supported for the creation options specified\r\n * @param sessionMode session mode to check if supported eg. immersive-vr\r\n * @returns A Promise that resolves to true if supported and false if not\r\n */\r\n public isSessionSupportedAsync(sessionMode: XRSessionMode): Promise<boolean> {\r\n return WebXRSessionManager.IsSessionSupportedAsync(sessionMode);\r\n }\r\n\r\n /**\r\n * Resets the reference space to the one started the session\r\n */\r\n public resetReferenceSpace() {\r\n this.referenceSpace = this.baseReferenceSpace;\r\n }\r\n\r\n /**\r\n * Starts rendering to the xr layer\r\n */\r\n public runXRRenderLoop() {\r\n if (this._sessionEnded || !this._engine) {\r\n return;\r\n }\r\n\r\n // Tell the engine's render loop to be driven by the xr session's refresh rate and provide xr pose information\r\n this._engine.customAnimationFrameRequester = {\r\n requestAnimationFrame: this.session.requestAnimationFrame.bind(this.session),\r\n renderFunction: (timestamp: number, xrFrame: Nullable<XRFrame>) => {\r\n if (this._sessionEnded || !this._engine) {\r\n return;\r\n }\r\n // Store the XR frame and timestamp in the session manager\r\n this.currentFrame = xrFrame;\r\n this.currentTimestamp = timestamp;\r\n if (xrFrame) {\r\n this._engine.framebufferDimensionsObject = this._baseLayer!;\r\n this.onXRFrameObservable.notifyObservers(xrFrame);\r\n this._engine._renderLoop();\r\n this._engine.framebufferDimensionsObject = null;\r\n }\r\n },\r\n };\r\n\r\n if (this._xrNavigator.xr.native) {\r\n this._rttProvider = this._xrNavigator.xr.getNativeRenderTargetProvider(this.session, this._createRenderTargetTexture.bind(this), this._destroyRenderTargetTexture.bind(this));\r\n } else {\r\n // Create render target texture from xr's webgl render target\r\n let rtt: RenderTargetTexture, framebufferWidth: number, framebufferHeight: number, framebuffer: WebGLFramebuffer;\r\n this._rttProvider = {\r\n getRenderTargetForEye: () => {\r\n const baseLayer = this._baseLayer!;\r\n if (baseLayer.framebufferWidth !== framebufferWidth || baseLayer.framebufferHeight !== framebufferHeight || baseLayer.framebuffer !== framebuffer) {\r\n rtt = this._createRenderTargetTexture(baseLayer.framebufferWidth, baseLayer.framebufferHeight, baseLayer.framebuffer);\r\n framebufferWidth = baseLayer.framebufferWidth;\r\n framebufferHeight = baseLayer.framebufferHeight;\r\n framebuffer = baseLayer.framebuffer;\r\n }\r\n return rtt;\r\n },\r\n };\r\n this._engine.framebufferDimensionsObject = this._baseLayer;\r\n }\r\n\r\n // Stop window's animation frame and trigger sessions animation frame\r\n if (typeof window !== \"undefined\" && window.cancelAnimationFrame) {\r\n window.cancelAnimationFrame(this._engine._frameHandler);\r\n }\r\n this._engine._renderLoop();\r\n }\r\n\r\n /**\r\n * Sets the reference space on the xr session\r\n * @param referenceSpaceType space to set\r\n * @returns a promise that will resolve once the reference space has been set\r\n */\r\n public setReferenceSpaceTypeAsync(referenceSpaceType: XRReferenceSpaceType = \"local-floor\"): Promise<XRReferenceSpace> {\r\n return this.session\r\n .requestReferenceSpace(referenceSpaceType)\r\n .then(\r\n (referenceSpace) => {\r\n return referenceSpace as XRReferenceSpace;\r\n },\r\n (rejectionReason) => {\r\n Logger.Error(\"XR.requestReferenceSpace failed for the following reason: \");\r\n Logger.Error(rejectionReason);\r\n Logger.Log('Defaulting to universally-supported \"viewer\" reference space type.');\r\n\r\n return this.session.requestReferenceSpace(\"viewer\").then(\r\n (referenceSpace) => {\r\n const heightCompensation = new XRRigidTransform({ x: 0, y: -this.defaultHeightCompensation, z: 0 });\r\n return (referenceSpace as XRReferenceSpace).getOffsetReferenceSpace(heightCompensation);\r\n },\r\n (rejectionReason) => {\r\n Logger.Error(rejectionReason);\r\n throw 'XR initialization failed: required \"viewer\" reference space type not supported.';\r\n }\r\n );\r\n }\r\n )\r\n .then((referenceSpace) => {\r\n // create viewer reference space before setting the first reference space\r\n return this.session.requestReferenceSpace(\"viewer\").then((viewerReferenceSpace) => {\r\n this.viewerReferenceSpace = viewerReferenceSpace as XRReferenceSpace;\r\n return referenceSpace;\r\n });\r\n })\r\n .then((referenceSpace) => {\r\n // initialize the base and offset (currently the same)\r\n this.referenceSpace = this.baseReferenceSpace = referenceSpace;\r\n return this.referenceSpace;\r\n });\r\n }\r\n\r\n /**\r\n * Updates the render state of the session\r\n * @param state state to set\r\n * @returns a promise that resolves once the render state has been updated\r\n */\r\n public updateRenderStateAsync(state: XRRenderState) {\r\n if (state.baseLayer) {\r\n this._baseLayer = state.baseLayer;\r\n }\r\n return this.session.updateRenderState(state);\r\n }\r\n\r\n /**\r\n * Returns a promise that resolves with a boolean indicating if the provided session mode is supported by this browser\r\n * @param sessionMode defines the session to test\r\n * @returns a promise with boolean as final value\r\n */\r\n public static IsSessionSupportedAsync(sessionMode: XRSessionMode): Promise<boolean> {\r\n if (!(navigator as any).xr) {\r\n return Promise.resolve(false);\r\n }\r\n // When the specs are final, remove supportsSession!\r\n const functionToUse = (navigator as any).xr.isSessionSupported || (navigator as any).xr.supportsSession;\r\n if (!functionToUse) {\r\n return Promise.resolve(false);\r\n } else {\r\n return functionToUse\r\n .call((navigator as any).xr, sessionMode)\r\n .then((result: boolean) => {\r\n const returnValue = typeof result === \"undefined\" ? true : result;\r\n return Promise.resolve(returnValue);\r\n })\r\n .catch((e: any) => {\r\n Logger.Warn(e);\r\n return Promise.resolve(false);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Returns true if Babylon.js is using the BabylonNative backend, otherwise false\r\n */\r\n public get isNative(): boolean {\r\n return this._xrNavigator.xr.native ?? false;\r\n }\r\n\r\n /**\r\n * The current frame rate as reported by the device\r\n */\r\n public get currentFrameRate(): number | undefined {\r\n return this.session?.frameRate;\r\n }\r\n\r\n /**\r\n * A list of supported frame rates (only available in-session!\r\n */\r\n public get supportedFrameRates(): Float32Array | undefined {\r\n return this.session?.supportedFrameRates;\r\n }\r\n\r\n /**\r\n * Set the framerate of the session.\r\n * @param rate the new framerate. This value needs to be in the supportedFrameRates array\r\n * @returns a promise that resolves once the framerate has been set\r\n */\r\n public updateTargetFrameRate(rate: number): Promise<void> {\r\n return this.session.updateTargetFrameRate(rate);\r\n }\r\n\r\n /**\r\n * Check if fixed foveation is supported on this device\r\n */\r\n public get isFixedFoveationSupported(): boolean {\r\n return !!this._baseLayer?.fixedFoveation !== null;\r\n }\r\n\r\n /**\r\n * Get the fixed foveation currently set, as specified by the webxr specs\r\n * If this returns null, then fixed foveation is not supported\r\n */\r\n public get fixedFoveation(): Nullable<number> {\r\n return this._baseLayer?.fixedFoveation !== undefined ? this._baseLayer.fixedFoveation : null;\r\n }\r\n\r\n /**\r\n * Set the fixed foveation to the specified value, as specified by the webxr specs\r\n * This value will be normalized to be between 0 and 1, 1 being max foveation, 0 being no foveation\r\n */\r\n public set fixedFoveation(value: Nullable<number>) {\r\n const val = Math.max(0, Math.min(1, value || 0));\r\n if (this._baseLayer?.fixedFoveation !== undefined) {\r\n this._baseLayer.fixedFoveation = val;\r\n }\r\n }\r\n\r\n private _createRenderTargetTexture(width: number, height: number, framebuffer: WebGLFramebuffer): RenderTargetTexture {\r\n if (!this._engine) {\r\n throw new Error(\"Engine is disposed\");\r\n }\r\n\r\n // Create internal texture\r\n const internalTexture = new InternalTexture(this._engine, InternalTextureSource.Unknown, true);\r\n internalTexture.width = width;\r\n internalTexture.height = height;\r\n\r\n // Create render target texture from the internal texture\r\n const renderTargetTexture = new RenderTargetTexture(\"XR renderTargetTexture\", { width: width, height: height }, this.scene);\r\n const webglRTWrapper = renderTargetTexture.renderTarget as WebGLRenderTargetWrapper;\r\n webglRTWrapper.setTexture(internalTexture, 0);\r\n webglRTWrapper._framebuffer = framebuffer;\r\n renderTargetTexture._texture = internalTexture;\r\n renderTargetTexture.disableRescaling();\r\n if (this._sessionMode === 'immersive-ar') {\r\n renderTargetTexture.skipInitialClear = true;\r\n }\r\n\r\n // Store the render target texture for cleanup when the session ends.\r\n this._renderTargetTextures.push(renderTargetTexture);\r\n\r\n return renderTargetTexture;\r\n }\r\n\r\n private _destroyRenderTargetTexture(renderTargetTexture: RenderTargetTexture): void {\r\n this._renderTargetTextures.splice(this._renderTargetTextures.indexOf(renderTargetTexture), 1);\r\n renderTargetTexture.dispose();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"webXRSessionManager.js","sourceRoot":"","sources":["../../../sourceES6/core/XR/webXRSessionManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"../Misc/logger\";\r\nimport { Observable } from \"../Misc/observable\";\r\nimport { Nullable } from \"../types\";\r\nimport { IDisposable, Scene } from \"../scene\";\r\nimport { InternalTexture, InternalTextureSource } from \"../Materials/Textures/internalTexture\";\r\nimport { RenderTargetTexture } from \"../Materials/Textures/renderTargetTexture\";\r\nimport { WebXRRenderTarget } from \"./webXRTypes\";\r\nimport { WebXRManagedOutputCanvas, WebXRManagedOutputCanvasOptions } from \"./webXRManagedOutputCanvas\";\r\nimport { Engine } from \"../Engines/engine\";\r\nimport { WebGLRenderTargetWrapper } from \"../Engines/WebGL/webGLRenderTargetWrapper\";\r\n\r\ninterface IRenderTargetProvider {\r\n getRenderTargetForEye(eye: XREye): Nullable<RenderTargetTexture>;\r\n}\r\n\r\n/**\r\n * Manages an XRSession to work with Babylon's engine\r\n * @see https://doc.babylonjs.com/how_to/webxr_session_manager\r\n */\r\nexport class WebXRSessionManager implements IDisposable {\r\n private _engine: Nullable<Engine>;\r\n private _referenceSpace: XRReferenceSpace;\r\n private _rttProvider: Nullable<IRenderTargetProvider>;\r\n private _sessionEnded: boolean = false;\r\n private _xrNavigator: any;\r\n private _baseLayer: Nullable<XRWebGLLayer> = null;\r\n private _renderTargetTextures: Array<RenderTargetTexture> = [];\r\n private _sessionMode: XRSessionMode;\r\n\r\n /**\r\n * The base reference space from which the session started. good if you want to reset your\r\n * reference space\r\n */\r\n public baseReferenceSpace: XRReferenceSpace;\r\n /**\r\n * Current XR frame\r\n */\r\n public currentFrame: Nullable<XRFrame>;\r\n /** WebXR timestamp updated every frame */\r\n public currentTimestamp: number = -1;\r\n /**\r\n * Used just in case of a failure to initialize an immersive session.\r\n * The viewer reference space is compensated using this height, creating a kind of \"viewer-floor\" reference space\r\n */\r\n public defaultHeightCompensation = 1.7;\r\n /**\r\n * Fires every time a new xrFrame arrives which can be used to update the camera\r\n */\r\n public onXRFrameObservable: Observable<XRFrame> = new Observable<XRFrame>();\r\n /**\r\n * Fires when the reference space changed\r\n */\r\n public onXRReferenceSpaceChanged: Observable<XRReferenceSpace> = new Observable();\r\n /**\r\n * Fires when the xr session is ended either by the device or manually done\r\n */\r\n public onXRSessionEnded: Observable<any> = new Observable<any>();\r\n /**\r\n * Fires when the xr session is initialized: right after requestSession was called and returned with a successful result\r\n */\r\n public onXRSessionInit: Observable<XRSession> = new Observable<XRSession>();\r\n /**\r\n * Underlying xr session\r\n */\r\n public session: XRSession;\r\n /**\r\n * The viewer (head position) reference space. This can be used to get the XR world coordinates\r\n * or get the offset the player is currently at.\r\n */\r\n public viewerReferenceSpace: XRReferenceSpace;\r\n\r\n /**\r\n * Constructs a WebXRSessionManager, this must be initialized within a user action before usage\r\n * @param scene The scene which the session should be created for\r\n */\r\n constructor(\r\n /** The scene which the session should be created for */\r\n public scene: Scene\r\n ) {\r\n this._engine = scene.getEngine();\r\n this._engine.onDisposeObservable.addOnce(() => {\r\n this._engine = null;\r\n });\r\n }\r\n\r\n /**\r\n * The current reference space used in this session. This reference space can constantly change!\r\n * It is mainly used to offset the camera's position.\r\n */\r\n public get referenceSpace(): XRReferenceSpace {\r\n return this._referenceSpace;\r\n }\r\n\r\n /**\r\n * Set a new reference space and triggers the observable\r\n */\r\n public set referenceSpace(newReferenceSpace: XRReferenceSpace) {\r\n this._referenceSpace = newReferenceSpace;\r\n this.onXRReferenceSpaceChanged.notifyObservers(this._referenceSpace);\r\n }\r\n\r\n /**\r\n * The mode for the managed XR session\r\n */\r\n public get sessionMode(): XRSessionMode {\r\n return this._sessionMode;\r\n }\r\n\r\n /**\r\n * Disposes of the session manager\r\n * This should be called explicitly by the dev, if required.\r\n */\r\n public dispose() {\r\n // disposing without leaving XR? Exit XR first\r\n if (!this._sessionEnded) {\r\n this.exitXRAsync();\r\n }\r\n this.onXRFrameObservable.clear();\r\n this.onXRSessionEnded.clear();\r\n this.onXRReferenceSpaceChanged.clear();\r\n this.onXRSessionInit.clear();\r\n }\r\n\r\n /**\r\n * Stops the xrSession and restores the render loop\r\n * @returns Promise which resolves after it exits XR\r\n */\r\n public exitXRAsync() {\r\n if (this.session && !this._sessionEnded) {\r\n this._sessionEnded = true;\r\n return this.session.end().catch((e) => {\r\n Logger.Warn(\"Could not end XR session.\");\r\n });\r\n }\r\n return Promise.resolve();\r\n }\r\n\r\n /**\r\n * Gets the correct render target texture to be rendered this frame for this eye\r\n * @param eye the eye for which to get the render target\r\n * @returns the render target for the specified eye or null if not available\r\n */\r\n public getRenderTargetTextureForEye(eye: XREye): Nullable<RenderTargetTexture> {\r\n return this._rttProvider!.getRenderTargetForEye(eye);\r\n }\r\n\r\n /**\r\n * Creates a WebXRRenderTarget object for the XR session\r\n * @param onStateChangedObservable optional, mechanism for enabling/disabling XR rendering canvas, used only on Web\r\n * @param options optional options to provide when creating a new render target\r\n * @returns a WebXR render target to which the session can render\r\n */\r\n public getWebXRRenderTarget(options?: WebXRManagedOutputCanvasOptions): WebXRRenderTarget {\r\n const engine = this.scene.getEngine();\r\n if (this._xrNavigator.xr.native) {\r\n return this._xrNavigator.xr.getWebXRRenderTarget(engine);\r\n } else {\r\n options = options || WebXRManagedOutputCanvasOptions.GetDefaults(engine);\r\n options.canvasElement = options.canvasElement || engine.getRenderingCanvas() || undefined;\r\n return new WebXRManagedOutputCanvas(this, options);\r\n }\r\n }\r\n\r\n /**\r\n * Initializes the manager\r\n * After initialization enterXR can be called to start an XR session\r\n * @returns Promise which resolves after it is initialized\r\n */\r\n public initializeAsync(): Promise<void> {\r\n // Check if the browser supports webXR\r\n this._xrNavigator = navigator;\r\n if (!this._xrNavigator.xr) {\r\n return Promise.reject(\"WebXR not available\");\r\n }\r\n return Promise.resolve();\r\n }\r\n\r\n /**\r\n * Initializes an xr session\r\n * @param xrSessionMode mode to initialize\r\n * @param xrSessionInit defines optional and required values to pass to the session builder\r\n * @returns a promise which will resolve once the session has been initialized\r\n */\r\n public initializeSessionAsync(xrSessionMode: XRSessionMode = \"immersive-vr\", xrSessionInit: XRSessionInit = {}): Promise<XRSession> {\r\n return this._xrNavigator.xr.requestSession(xrSessionMode, xrSessionInit).then((session: XRSession) => {\r\n this.session = session;\r\n this._sessionMode = xrSessionMode;\r\n this.onXRSessionInit.notifyObservers(session);\r\n this._sessionEnded = false;\r\n\r\n // handle when the session is ended (By calling session.end or device ends its own session eg. pressing home button on phone)\r\n this.session.addEventListener(\r\n \"end\",\r\n () => {\r\n this._sessionEnded = true;\r\n\r\n // Notify frame observers\r\n this.onXRSessionEnded.notifyObservers(null);\r\n // Remove render target texture\r\n this._rttProvider = null;\r\n\r\n if (this._engine) {\r\n // make sure dimensions object is restored\r\n this._engine.framebufferDimensionsObject = null;\r\n\r\n // Restore frame buffer to avoid clear on xr framebuffer after session end\r\n this._engine.restoreDefaultFramebuffer();\r\n\r\n // Need to restart render loop as after the session is ended the last request for new frame will never call callback\r\n this._engine.customAnimationFrameRequester = null;\r\n this._engine._renderLoop();\r\n }\r\n\r\n // Dispose render target textures\r\n if (this.isNative) {\r\n this._renderTargetTextures.forEach((rtt) => rtt.dispose());\r\n this._renderTargetTextures.length = 0;\r\n }\r\n },\r\n { once: true }\r\n );\r\n\r\n return this.session;\r\n });\r\n }\r\n\r\n /**\r\n * Checks if a session would be supported for the creation options specified\r\n * @param sessionMode session mode to check if supported eg. immersive-vr\r\n * @returns A Promise that resolves to true if supported and false if not\r\n */\r\n public isSessionSupportedAsync(sessionMode: XRSessionMode): Promise<boolean> {\r\n return WebXRSessionManager.IsSessionSupportedAsync(sessionMode);\r\n }\r\n\r\n /**\r\n * Resets the reference space to the one started the session\r\n */\r\n public resetReferenceSpace() {\r\n this.referenceSpace = this.baseReferenceSpace;\r\n }\r\n\r\n /**\r\n * Starts rendering to the xr layer\r\n */\r\n public runXRRenderLoop() {\r\n if (this._sessionEnded || !this._engine) {\r\n return;\r\n }\r\n\r\n // Tell the engine's render loop to be driven by the xr session's refresh rate and provide xr pose information\r\n this._engine.customAnimationFrameRequester = {\r\n requestAnimationFrame: this.session.requestAnimationFrame.bind(this.session),\r\n renderFunction: (timestamp: number, xrFrame: Nullable<XRFrame>) => {\r\n if (this._sessionEnded || !this._engine) {\r\n return;\r\n }\r\n // Store the XR frame and timestamp in the session manager\r\n this.currentFrame = xrFrame;\r\n this.currentTimestamp = timestamp;\r\n if (xrFrame) {\r\n this._engine.framebufferDimensionsObject = this._baseLayer!;\r\n this.onXRFrameObservable.notifyObservers(xrFrame);\r\n this._engine._renderLoop();\r\n this._engine.framebufferDimensionsObject = null;\r\n }\r\n },\r\n };\r\n\r\n if (this._xrNavigator.xr.native) {\r\n this._rttProvider = this._xrNavigator.xr.getNativeRenderTargetProvider(this.session, this._createRenderTargetTexture.bind(this), this._destroyRenderTargetTexture.bind(this));\r\n } else {\r\n // Create render target texture from xr's webgl render target\r\n let rtt: RenderTargetTexture, framebufferWidth: number, framebufferHeight: number, framebuffer: WebGLFramebuffer;\r\n this._rttProvider = {\r\n getRenderTargetForEye: () => {\r\n const baseLayer = this._baseLayer!;\r\n if (baseLayer.framebufferWidth !== framebufferWidth || baseLayer.framebufferHeight !== framebufferHeight || baseLayer.framebuffer !== framebuffer) {\r\n rtt = this._createRenderTargetTexture(baseLayer.framebufferWidth, baseLayer.framebufferHeight, baseLayer.framebuffer);\r\n framebufferWidth = baseLayer.framebufferWidth;\r\n framebufferHeight = baseLayer.framebufferHeight;\r\n framebuffer = baseLayer.framebuffer;\r\n }\r\n return rtt;\r\n },\r\n };\r\n this._engine.framebufferDimensionsObject = this._baseLayer;\r\n }\r\n\r\n // Stop window's animation frame and trigger sessions animation frame\r\n if (typeof window !== \"undefined\" && window.cancelAnimationFrame) {\r\n window.cancelAnimationFrame(this._engine._frameHandler);\r\n }\r\n this._engine._renderLoop();\r\n }\r\n\r\n /**\r\n * Sets the reference space on the xr session\r\n * @param referenceSpaceType space to set\r\n * @returns a promise that will resolve once the reference space has been set\r\n */\r\n public setReferenceSpaceTypeAsync(referenceSpaceType: XRReferenceSpaceType = \"local-floor\"): Promise<XRReferenceSpace> {\r\n return this.session\r\n .requestReferenceSpace(referenceSpaceType)\r\n .then(\r\n (referenceSpace) => {\r\n return referenceSpace as XRReferenceSpace;\r\n },\r\n (rejectionReason) => {\r\n Logger.Error(\"XR.requestReferenceSpace failed for the following reason: \");\r\n Logger.Error(rejectionReason);\r\n Logger.Log('Defaulting to universally-supported \"viewer\" reference space type.');\r\n\r\n return this.session.requestReferenceSpace(\"viewer\").then(\r\n (referenceSpace) => {\r\n const heightCompensation = new XRRigidTransform({ x: 0, y: -this.defaultHeightCompensation, z: 0 });\r\n return (referenceSpace as XRReferenceSpace).getOffsetReferenceSpace(heightCompensation);\r\n },\r\n (rejectionReason) => {\r\n Logger.Error(rejectionReason);\r\n throw 'XR initialization failed: required \"viewer\" reference space type not supported.';\r\n }\r\n );\r\n }\r\n )\r\n .then((referenceSpace) => {\r\n // create viewer reference space before setting the first reference space\r\n return this.session.requestReferenceSpace(\"viewer\").then((viewerReferenceSpace) => {\r\n this.viewerReferenceSpace = viewerReferenceSpace as XRReferenceSpace;\r\n return referenceSpace;\r\n });\r\n })\r\n .then((referenceSpace) => {\r\n // initialize the base and offset (currently the same)\r\n this.referenceSpace = this.baseReferenceSpace = referenceSpace;\r\n return this.referenceSpace;\r\n });\r\n }\r\n\r\n /**\r\n * Updates the render state of the session\r\n * @param state state to set\r\n * @returns a promise that resolves once the render state has been updated\r\n */\r\n public updateRenderStateAsync(state: XRRenderState) {\r\n if (state.baseLayer) {\r\n this._baseLayer = state.baseLayer;\r\n }\r\n return this.session.updateRenderState(state);\r\n }\r\n\r\n /**\r\n * Returns a promise that resolves with a boolean indicating if the provided session mode is supported by this browser\r\n * @param sessionMode defines the session to test\r\n * @returns a promise with boolean as final value\r\n */\r\n public static IsSessionSupportedAsync(sessionMode: XRSessionMode): Promise<boolean> {\r\n if (!(navigator as any).xr) {\r\n return Promise.resolve(false);\r\n }\r\n // When the specs are final, remove supportsSession!\r\n const functionToUse = (navigator as any).xr.isSessionSupported || (navigator as any).xr.supportsSession;\r\n if (!functionToUse) {\r\n return Promise.resolve(false);\r\n } else {\r\n return functionToUse\r\n .call((navigator as any).xr, sessionMode)\r\n .then((result: boolean) => {\r\n const returnValue = typeof result === \"undefined\" ? true : result;\r\n return Promise.resolve(returnValue);\r\n })\r\n .catch((e: any) => {\r\n Logger.Warn(e);\r\n return Promise.resolve(false);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Returns true if Babylon.js is using the BabylonNative backend, otherwise false\r\n */\r\n public get isNative(): boolean {\r\n return this._xrNavigator.xr.native ?? false;\r\n }\r\n\r\n /**\r\n * The current frame rate as reported by the device\r\n */\r\n public get currentFrameRate(): number | undefined {\r\n return this.session?.frameRate;\r\n }\r\n\r\n /**\r\n * A list of supported frame rates (only available in-session!\r\n */\r\n public get supportedFrameRates(): Float32Array | undefined {\r\n return this.session?.supportedFrameRates;\r\n }\r\n\r\n /**\r\n * Set the framerate of the session.\r\n * @param rate the new framerate. This value needs to be in the supportedFrameRates array\r\n * @returns a promise that resolves once the framerate has been set\r\n */\r\n public updateTargetFrameRate(rate: number): Promise<void> {\r\n return this.session.updateTargetFrameRate(rate);\r\n }\r\n\r\n /**\r\n * Check if fixed foveation is supported on this device\r\n */\r\n public get isFixedFoveationSupported(): boolean {\r\n return !!this._baseLayer?.fixedFoveation !== null;\r\n }\r\n\r\n /**\r\n * Get the fixed foveation currently set, as specified by the webxr specs\r\n * If this returns null, then fixed foveation is not supported\r\n */\r\n public get fixedFoveation(): Nullable<number> {\r\n return this._baseLayer?.fixedFoveation !== undefined ? this._baseLayer.fixedFoveation : null;\r\n }\r\n\r\n /**\r\n * Set the fixed foveation to the specified value, as specified by the webxr specs\r\n * This value will be normalized to be between 0 and 1, 1 being max foveation, 0 being no foveation\r\n */\r\n public set fixedFoveation(value: Nullable<number>) {\r\n const val = Math.max(0, Math.min(1, value || 0));\r\n if (this._baseLayer?.fixedFoveation !== undefined) {\r\n this._baseLayer.fixedFoveation = val;\r\n }\r\n }\r\n\r\n private _createRenderTargetTexture(width: number, height: number, framebuffer: WebGLFramebuffer): RenderTargetTexture {\r\n if (!this._engine) {\r\n throw new Error(\"Engine is disposed\");\r\n }\r\n\r\n // Create internal texture\r\n const internalTexture = new InternalTexture(this._engine, InternalTextureSource.Unknown, true);\r\n internalTexture.width = width;\r\n internalTexture.height = height;\r\n\r\n // Create render target texture from the internal texture\r\n const renderTargetTexture = new RenderTargetTexture(\"XR renderTargetTexture\", { width: width, height: height }, this.scene);\r\n const webglRTWrapper = renderTargetTexture.renderTarget as WebGLRenderTargetWrapper;\r\n webglRTWrapper.setTexture(internalTexture, 0);\r\n webglRTWrapper._framebuffer = framebuffer;\r\n renderTargetTexture._texture = internalTexture;\r\n renderTargetTexture.disableRescaling();\r\n renderTargetTexture.skipInitialClear = true;\r\n\r\n // Store the render target texture for cleanup when the session ends.\r\n this._renderTargetTextures.push(renderTargetTexture);\r\n\r\n return renderTargetTexture;\r\n }\r\n\r\n private _destroyRenderTargetTexture(renderTargetTexture: RenderTargetTexture): void {\r\n this._renderTargetTextures.splice(this._renderTargetTextures.indexOf(renderTargetTexture), 1);\r\n renderTargetTexture.dispose();\r\n }\r\n}\r\n"]}
|
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
],
|
|
8
8
|
"name": "@babylonjs/core",
|
|
9
9
|
"description": "Babylon.js is a JavaScript 3D engine based on webgl.",
|
|
10
|
-
"version": "5.0.0-alpha.
|
|
10
|
+
"version": "5.0.0-alpha.59",
|
|
11
11
|
"repository": {
|
|
12
12
|
"type": "git",
|
|
13
13
|
"url": "https://github.com/BabylonJS/Babylon.js.git"
|
|
@@ -482,9 +482,6 @@
|
|
|
482
482
|
"Engines/constants.d.ts",
|
|
483
483
|
"Engines/constants.js",
|
|
484
484
|
"Engines/constants.js.map",
|
|
485
|
-
"Engines/depthTextureCreationOptions.d.ts",
|
|
486
|
-
"Engines/depthTextureCreationOptions.js",
|
|
487
|
-
"Engines/depthTextureCreationOptions.js.map",
|
|
488
485
|
"Engines/engine.d.ts",
|
|
489
486
|
"Engines/engine.js",
|
|
490
487
|
"Engines/engine.js.map",
|
|
@@ -1110,6 +1107,9 @@
|
|
|
1110
1107
|
"Materials/Node/Blocks/clampBlock.d.ts",
|
|
1111
1108
|
"Materials/Node/Blocks/clampBlock.js",
|
|
1112
1109
|
"Materials/Node/Blocks/clampBlock.js.map",
|
|
1110
|
+
"Materials/Node/Blocks/cloudBlock.d.ts",
|
|
1111
|
+
"Materials/Node/Blocks/cloudBlock.js",
|
|
1112
|
+
"Materials/Node/Blocks/cloudBlock.js.map",
|
|
1113
1113
|
"Materials/Node/Blocks/colorMergerBlock.d.ts",
|
|
1114
1114
|
"Materials/Node/Blocks/colorMergerBlock.js",
|
|
1115
1115
|
"Materials/Node/Blocks/colorMergerBlock.js.map",
|
|
@@ -1578,15 +1578,15 @@
|
|
|
1578
1578
|
"Materials/Textures/refractionTexture.d.ts",
|
|
1579
1579
|
"Materials/Textures/refractionTexture.js",
|
|
1580
1580
|
"Materials/Textures/refractionTexture.js.map",
|
|
1581
|
-
"Materials/Textures/renderTargetCreationOptions.d.ts",
|
|
1582
|
-
"Materials/Textures/renderTargetCreationOptions.js",
|
|
1583
|
-
"Materials/Textures/renderTargetCreationOptions.js.map",
|
|
1584
1581
|
"Materials/Textures/renderTargetTexture.d.ts",
|
|
1585
1582
|
"Materials/Textures/renderTargetTexture.js",
|
|
1586
1583
|
"Materials/Textures/renderTargetTexture.js.map",
|
|
1587
1584
|
"Materials/Textures/texture.d.ts",
|
|
1588
1585
|
"Materials/Textures/texture.js",
|
|
1589
1586
|
"Materials/Textures/texture.js.map",
|
|
1587
|
+
"Materials/Textures/textureCreationOptions.d.ts",
|
|
1588
|
+
"Materials/Textures/textureCreationOptions.js",
|
|
1589
|
+
"Materials/Textures/textureCreationOptions.js.map",
|
|
1590
1590
|
"Materials/Textures/textureSampler.d.ts",
|
|
1591
1591
|
"Materials/Textures/textureSampler.js",
|
|
1592
1592
|
"Materials/Textures/textureSampler.js.map",
|
|
@@ -1662,6 +1662,9 @@
|
|
|
1662
1662
|
"Meshes/abstractMesh.d.ts",
|
|
1663
1663
|
"Meshes/abstractMesh.js",
|
|
1664
1664
|
"Meshes/abstractMesh.js.map",
|
|
1665
|
+
"Meshes/buffer.d.ts",
|
|
1666
|
+
"Meshes/buffer.js",
|
|
1667
|
+
"Meshes/buffer.js.map",
|
|
1665
1668
|
"Meshes/Builders/boxBuilder.d.ts",
|
|
1666
1669
|
"Meshes/Builders/boxBuilder.js",
|
|
1667
1670
|
"Meshes/Builders/boxBuilder.js.map",
|
|
@@ -2341,6 +2344,12 @@
|
|
|
2341
2344
|
"Rendering/boundingBoxRenderer.d.ts",
|
|
2342
2345
|
"Rendering/boundingBoxRenderer.js",
|
|
2343
2346
|
"Rendering/boundingBoxRenderer.js.map",
|
|
2347
|
+
"Rendering/depthPeelingRenderer.d.ts",
|
|
2348
|
+
"Rendering/depthPeelingRenderer.js",
|
|
2349
|
+
"Rendering/depthPeelingRenderer.js.map",
|
|
2350
|
+
"Rendering/depthPeelingSceneComponent.d.ts",
|
|
2351
|
+
"Rendering/depthPeelingSceneComponent.js",
|
|
2352
|
+
"Rendering/depthPeelingSceneComponent.js.map",
|
|
2344
2353
|
"Rendering/depthRenderer.d.ts",
|
|
2345
2354
|
"Rendering/depthRenderer.js",
|
|
2346
2355
|
"Rendering/depthRenderer.js.map",
|
|
@@ -2422,6 +2431,12 @@
|
|
|
2422
2431
|
"Shaders/blur.fragment.d.ts",
|
|
2423
2432
|
"Shaders/blur.fragment.js",
|
|
2424
2433
|
"Shaders/blur.fragment.js.map",
|
|
2434
|
+
"Shaders/boundingBoxRenderer.fragment.d.ts",
|
|
2435
|
+
"Shaders/boundingBoxRenderer.fragment.js",
|
|
2436
|
+
"Shaders/boundingBoxRenderer.fragment.js.map",
|
|
2437
|
+
"Shaders/boundingBoxRenderer.vertex.d.ts",
|
|
2438
|
+
"Shaders/boundingBoxRenderer.vertex.js",
|
|
2439
|
+
"Shaders/boundingBoxRenderer.vertex.js.map",
|
|
2425
2440
|
"Shaders/chromaticAberration.fragment.d.ts",
|
|
2426
2441
|
"Shaders/chromaticAberration.fragment.js",
|
|
2427
2442
|
"Shaders/chromaticAberration.fragment.js.map",
|
|
@@ -2566,6 +2581,12 @@
|
|
|
2566
2581
|
"Shaders/noise.fragment.d.ts",
|
|
2567
2582
|
"Shaders/noise.fragment.js",
|
|
2568
2583
|
"Shaders/noise.fragment.js.map",
|
|
2584
|
+
"Shaders/oitBackBlend.fragment.d.ts",
|
|
2585
|
+
"Shaders/oitBackBlend.fragment.js",
|
|
2586
|
+
"Shaders/oitBackBlend.fragment.js.map",
|
|
2587
|
+
"Shaders/oitFinal.fragment.d.ts",
|
|
2588
|
+
"Shaders/oitFinal.fragment.js",
|
|
2589
|
+
"Shaders/oitFinal.fragment.js.map",
|
|
2569
2590
|
"Shaders/outline.fragment.d.ts",
|
|
2570
2591
|
"Shaders/outline.fragment.js",
|
|
2571
2592
|
"Shaders/outline.fragment.js.map",
|
|
@@ -2629,6 +2650,15 @@
|
|
|
2629
2650
|
"Shaders/ShadersInclude/bonesVertex.d.ts",
|
|
2630
2651
|
"Shaders/ShadersInclude/bonesVertex.js",
|
|
2631
2652
|
"Shaders/ShadersInclude/bonesVertex.js.map",
|
|
2653
|
+
"Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.d.ts",
|
|
2654
|
+
"Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.js",
|
|
2655
|
+
"Shaders/ShadersInclude/boundingBoxRendererFragmentDeclaration.js.map",
|
|
2656
|
+
"Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.d.ts",
|
|
2657
|
+
"Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js",
|
|
2658
|
+
"Shaders/ShadersInclude/boundingBoxRendererUboDeclaration.js.map",
|
|
2659
|
+
"Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.d.ts",
|
|
2660
|
+
"Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.js",
|
|
2661
|
+
"Shaders/ShadersInclude/boundingBoxRendererVertexDeclaration.js.map",
|
|
2632
2662
|
"Shaders/ShadersInclude/bumpFragment.d.ts",
|
|
2633
2663
|
"Shaders/ShadersInclude/bumpFragment.js",
|
|
2634
2664
|
"Shaders/ShadersInclude/bumpFragment.js.map",
|
|
@@ -2794,6 +2824,12 @@
|
|
|
2794
2824
|
"Shaders/ShadersInclude/mrtFragmentDeclaration.d.ts",
|
|
2795
2825
|
"Shaders/ShadersInclude/mrtFragmentDeclaration.js",
|
|
2796
2826
|
"Shaders/ShadersInclude/mrtFragmentDeclaration.js.map",
|
|
2827
|
+
"Shaders/ShadersInclude/oitDeclaration.d.ts",
|
|
2828
|
+
"Shaders/ShadersInclude/oitDeclaration.js",
|
|
2829
|
+
"Shaders/ShadersInclude/oitDeclaration.js.map",
|
|
2830
|
+
"Shaders/ShadersInclude/oitFragment.d.ts",
|
|
2831
|
+
"Shaders/ShadersInclude/oitFragment.js",
|
|
2832
|
+
"Shaders/ShadersInclude/oitFragment.js.map",
|
|
2797
2833
|
"Shaders/ShadersInclude/packingFunctions.d.ts",
|
|
2798
2834
|
"Shaders/ShadersInclude/packingFunctions.js",
|
|
2799
2835
|
"Shaders/ShadersInclude/packingFunctions.js.map",
|
package/scene.d.ts
CHANGED
|
@@ -1164,9 +1164,10 @@ export declare class Scene extends AbstractScene implements IAnimatable, IClipPl
|
|
|
1164
1164
|
/**
|
|
1165
1165
|
* This function will check if the scene can be rendered (textures are loaded, shaders are compiled)
|
|
1166
1166
|
* Delay loaded resources are not taking in account
|
|
1167
|
+
* @param checkRenderTargets true to also check that the meshes rendered as part of a render target are ready (default: true)
|
|
1167
1168
|
* @return true if all required resources are ready
|
|
1168
1169
|
*/
|
|
1169
|
-
isReady(): boolean;
|
|
1170
|
+
isReady(checkRenderTargets?: boolean): boolean;
|
|
1170
1171
|
/** Resets all cached information relative to material (including effect and visibility) */
|
|
1171
1172
|
resetCachedMaterial(): void;
|
|
1172
1173
|
/**
|
|
@@ -1214,15 +1215,17 @@ export declare class Scene extends AbstractScene implements IAnimatable, IClipPl
|
|
|
1214
1215
|
/**
|
|
1215
1216
|
* Registers a function to be executed when the scene is ready
|
|
1216
1217
|
* @param {Function} func - the function to be executed
|
|
1218
|
+
* @param checkRenderTargets true to also check that the meshes rendered as part of a render target are ready (default: false)
|
|
1217
1219
|
*/
|
|
1218
|
-
executeWhenReady(func: () => void): void;
|
|
1220
|
+
executeWhenReady(func: () => void, checkRenderTargets?: boolean): void;
|
|
1219
1221
|
/**
|
|
1220
1222
|
* Returns a promise that resolves when the scene is ready
|
|
1223
|
+
* @param checkRenderTargets true to also check that the meshes rendered as part of a render target are ready (default: false)
|
|
1221
1224
|
* @returns A promise that resolves when the scene is ready
|
|
1222
1225
|
*/
|
|
1223
|
-
whenReadyAsync(): Promise<void>;
|
|
1226
|
+
whenReadyAsync(checkRenderTargets?: boolean): Promise<void>;
|
|
1224
1227
|
/** @hidden */
|
|
1225
|
-
_checkIsReady(): void;
|
|
1228
|
+
_checkIsReady(checkRenderTargets?: boolean): void;
|
|
1226
1229
|
/**
|
|
1227
1230
|
* Gets all animatable attached to the scene
|
|
1228
1231
|
*/
|
|
@@ -1260,6 +1263,17 @@ export declare class Scene extends AbstractScene implements IAnimatable, IClipPl
|
|
|
1260
1263
|
* @returns a UniformBuffer
|
|
1261
1264
|
*/
|
|
1262
1265
|
getSceneUniformBuffer(): UniformBuffer;
|
|
1266
|
+
/**
|
|
1267
|
+
* Creates a scene UBO
|
|
1268
|
+
* @param name name of the uniform buffer (optional, for debugging purpose only)
|
|
1269
|
+
* @returns a new ubo
|
|
1270
|
+
*/
|
|
1271
|
+
createSceneUniformBuffer(name?: string): UniformBuffer;
|
|
1272
|
+
/**
|
|
1273
|
+
* Sets the scene ubo
|
|
1274
|
+
* @param ubo the ubo to set for the scene
|
|
1275
|
+
*/
|
|
1276
|
+
setSceneUniformBuffer(ubo: UniformBuffer): void;
|
|
1263
1277
|
/**
|
|
1264
1278
|
* Gets an unique (relatively to the current scene) Id
|
|
1265
1279
|
* @returns an unique number for the scene
|
package/scene.js
CHANGED
|
@@ -1460,11 +1460,7 @@ var Scene = /** @class */ (function (_super) {
|
|
|
1460
1460
|
this._renderId++;
|
|
1461
1461
|
};
|
|
1462
1462
|
Scene.prototype._createUbo = function () {
|
|
1463
|
-
this.
|
|
1464
|
-
this._sceneUbo.addUniform("viewProjection", 16);
|
|
1465
|
-
this._sceneUbo.addUniform("view", 16);
|
|
1466
|
-
this._sceneUbo.addUniform("projection", 16);
|
|
1467
|
-
this._sceneUbo.addUniform("vEyePosition", 4);
|
|
1463
|
+
this.setSceneUniformBuffer(this.createSceneUniformBuffer());
|
|
1468
1464
|
};
|
|
1469
1465
|
/**
|
|
1470
1466
|
* Use this method to simulate a pointer move on a mesh
|
|
@@ -1528,9 +1524,11 @@ var Scene = /** @class */ (function (_super) {
|
|
|
1528
1524
|
/**
|
|
1529
1525
|
* This function will check if the scene can be rendered (textures are loaded, shaders are compiled)
|
|
1530
1526
|
* Delay loaded resources are not taking in account
|
|
1527
|
+
* @param checkRenderTargets true to also check that the meshes rendered as part of a render target are ready (default: true)
|
|
1531
1528
|
* @return true if all required resources are ready
|
|
1532
1529
|
*/
|
|
1533
|
-
Scene.prototype.isReady = function () {
|
|
1530
|
+
Scene.prototype.isReady = function (checkRenderTargets) {
|
|
1531
|
+
if (checkRenderTargets === void 0) { checkRenderTargets = true; }
|
|
1534
1532
|
if (this._isDisposed) {
|
|
1535
1533
|
return false;
|
|
1536
1534
|
}
|
|
@@ -1545,6 +1543,10 @@ var Scene = /** @class */ (function (_super) {
|
|
|
1545
1543
|
return false;
|
|
1546
1544
|
}
|
|
1547
1545
|
// Meshes
|
|
1546
|
+
if (checkRenderTargets) {
|
|
1547
|
+
this._processedMaterials.reset();
|
|
1548
|
+
this._renderTargets.reset();
|
|
1549
|
+
}
|
|
1548
1550
|
for (index = 0; index < this.meshes.length; index++) {
|
|
1549
1551
|
var mesh = this.meshes[index];
|
|
1550
1552
|
if (!mesh.isEnabled()) {
|
|
@@ -1564,6 +1566,41 @@ var Scene = /** @class */ (function (_super) {
|
|
|
1564
1566
|
return false;
|
|
1565
1567
|
}
|
|
1566
1568
|
}
|
|
1569
|
+
if (!checkRenderTargets) {
|
|
1570
|
+
continue;
|
|
1571
|
+
}
|
|
1572
|
+
var mat = mesh.material || this.defaultMaterial;
|
|
1573
|
+
if (mat) {
|
|
1574
|
+
if (mat._storeEffectOnSubMeshes) {
|
|
1575
|
+
for (var _b = 0, _c = mesh.subMeshes; _b < _c.length; _b++) {
|
|
1576
|
+
var subMesh = _c[_b];
|
|
1577
|
+
var material = subMesh.getMaterial();
|
|
1578
|
+
if (material && material.hasRenderTargetTextures && material.getRenderTargetTextures != null) {
|
|
1579
|
+
if (this._processedMaterials.indexOf(material) === -1) {
|
|
1580
|
+
this._processedMaterials.push(material);
|
|
1581
|
+
this._renderTargets.concatWithNoDuplicate(material.getRenderTargetTextures());
|
|
1582
|
+
}
|
|
1583
|
+
}
|
|
1584
|
+
}
|
|
1585
|
+
}
|
|
1586
|
+
else {
|
|
1587
|
+
if (mat.hasRenderTargetTextures && mat.getRenderTargetTextures != null) {
|
|
1588
|
+
if (this._processedMaterials.indexOf(mat) === -1) {
|
|
1589
|
+
this._processedMaterials.push(mat);
|
|
1590
|
+
this._renderTargets.concatWithNoDuplicate(mat.getRenderTargetTextures());
|
|
1591
|
+
}
|
|
1592
|
+
}
|
|
1593
|
+
}
|
|
1594
|
+
}
|
|
1595
|
+
}
|
|
1596
|
+
// Render targets
|
|
1597
|
+
if (checkRenderTargets) {
|
|
1598
|
+
for (index = 0; index < this._renderTargets.length; ++index) {
|
|
1599
|
+
var rtt = this._renderTargets.data[index];
|
|
1600
|
+
if (!rtt.isReadyForRendering()) {
|
|
1601
|
+
return false;
|
|
1602
|
+
}
|
|
1603
|
+
}
|
|
1567
1604
|
}
|
|
1568
1605
|
// Geometries
|
|
1569
1606
|
for (index = 0; index < this.geometries.length; index++) {
|
|
@@ -1574,8 +1611,8 @@ var Scene = /** @class */ (function (_super) {
|
|
|
1574
1611
|
}
|
|
1575
1612
|
// Post-processes
|
|
1576
1613
|
if (this.activeCameras && this.activeCameras.length > 0) {
|
|
1577
|
-
for (var
|
|
1578
|
-
var camera =
|
|
1614
|
+
for (var _d = 0, _e = this.activeCameras; _d < _e.length; _d++) {
|
|
1615
|
+
var camera = _e[_d];
|
|
1579
1616
|
if (!camera.isReady(true)) {
|
|
1580
1617
|
return false;
|
|
1581
1618
|
}
|
|
@@ -1587,8 +1624,8 @@ var Scene = /** @class */ (function (_super) {
|
|
|
1587
1624
|
}
|
|
1588
1625
|
}
|
|
1589
1626
|
// Particles
|
|
1590
|
-
for (var
|
|
1591
|
-
var particleSystem =
|
|
1627
|
+
for (var _f = 0, _g = this.particleSystems; _f < _g.length; _f++) {
|
|
1628
|
+
var particleSystem = _g[_f];
|
|
1592
1629
|
if (!particleSystem.isReady()) {
|
|
1593
1630
|
return false;
|
|
1594
1631
|
}
|
|
@@ -1692,34 +1729,39 @@ var Scene = /** @class */ (function (_super) {
|
|
|
1692
1729
|
/**
|
|
1693
1730
|
* Registers a function to be executed when the scene is ready
|
|
1694
1731
|
* @param {Function} func - the function to be executed
|
|
1732
|
+
* @param checkRenderTargets true to also check that the meshes rendered as part of a render target are ready (default: false)
|
|
1695
1733
|
*/
|
|
1696
|
-
Scene.prototype.executeWhenReady = function (func) {
|
|
1734
|
+
Scene.prototype.executeWhenReady = function (func, checkRenderTargets) {
|
|
1697
1735
|
var _this = this;
|
|
1736
|
+
if (checkRenderTargets === void 0) { checkRenderTargets = false; }
|
|
1698
1737
|
this.onReadyObservable.add(func);
|
|
1699
1738
|
if (this._executeWhenReadyTimeoutId !== -1) {
|
|
1700
1739
|
return;
|
|
1701
1740
|
}
|
|
1702
1741
|
this._executeWhenReadyTimeoutId = setTimeout(function () {
|
|
1703
|
-
_this._checkIsReady();
|
|
1742
|
+
_this._checkIsReady(checkRenderTargets);
|
|
1704
1743
|
}, 150);
|
|
1705
1744
|
};
|
|
1706
1745
|
/**
|
|
1707
1746
|
* Returns a promise that resolves when the scene is ready
|
|
1747
|
+
* @param checkRenderTargets true to also check that the meshes rendered as part of a render target are ready (default: false)
|
|
1708
1748
|
* @returns A promise that resolves when the scene is ready
|
|
1709
1749
|
*/
|
|
1710
|
-
Scene.prototype.whenReadyAsync = function () {
|
|
1750
|
+
Scene.prototype.whenReadyAsync = function (checkRenderTargets) {
|
|
1711
1751
|
var _this = this;
|
|
1752
|
+
if (checkRenderTargets === void 0) { checkRenderTargets = false; }
|
|
1712
1753
|
return new Promise(function (resolve) {
|
|
1713
1754
|
_this.executeWhenReady(function () {
|
|
1714
1755
|
resolve();
|
|
1715
|
-
});
|
|
1756
|
+
}, checkRenderTargets);
|
|
1716
1757
|
});
|
|
1717
1758
|
};
|
|
1718
1759
|
/** @hidden */
|
|
1719
|
-
Scene.prototype._checkIsReady = function () {
|
|
1760
|
+
Scene.prototype._checkIsReady = function (checkRenderTargets) {
|
|
1720
1761
|
var _this = this;
|
|
1762
|
+
if (checkRenderTargets === void 0) { checkRenderTargets = false; }
|
|
1721
1763
|
this._registerTransientComponents();
|
|
1722
|
-
if (this.isReady()) {
|
|
1764
|
+
if (this.isReady(checkRenderTargets)) {
|
|
1723
1765
|
this.onReadyObservable.notifyObservers(this);
|
|
1724
1766
|
this.onReadyObservable.clear();
|
|
1725
1767
|
this._executeWhenReadyTimeoutId = -1;
|
|
@@ -1731,7 +1773,7 @@ var Scene = /** @class */ (function (_super) {
|
|
|
1731
1773
|
return;
|
|
1732
1774
|
}
|
|
1733
1775
|
this._executeWhenReadyTimeoutId = setTimeout(function () {
|
|
1734
|
-
_this._checkIsReady();
|
|
1776
|
+
_this._checkIsReady(checkRenderTargets);
|
|
1735
1777
|
}, 150);
|
|
1736
1778
|
};
|
|
1737
1779
|
Object.defineProperty(Scene.prototype, "animatables", {
|
|
@@ -1812,6 +1854,26 @@ var Scene = /** @class */ (function (_super) {
|
|
|
1812
1854
|
Scene.prototype.getSceneUniformBuffer = function () {
|
|
1813
1855
|
return this._multiviewSceneUbo ? this._multiviewSceneUbo : this._sceneUbo;
|
|
1814
1856
|
};
|
|
1857
|
+
/**
|
|
1858
|
+
* Creates a scene UBO
|
|
1859
|
+
* @param name name of the uniform buffer (optional, for debugging purpose only)
|
|
1860
|
+
* @returns a new ubo
|
|
1861
|
+
*/
|
|
1862
|
+
Scene.prototype.createSceneUniformBuffer = function (name) {
|
|
1863
|
+
var sceneUbo = new UniformBuffer(this._engine, undefined, false, name !== null && name !== void 0 ? name : "scene");
|
|
1864
|
+
sceneUbo.addUniform("viewProjection", 16);
|
|
1865
|
+
sceneUbo.addUniform("view", 16);
|
|
1866
|
+
sceneUbo.addUniform("projection", 16);
|
|
1867
|
+
sceneUbo.addUniform("vEyePosition", 4);
|
|
1868
|
+
return sceneUbo;
|
|
1869
|
+
};
|
|
1870
|
+
/**
|
|
1871
|
+
* Sets the scene ubo
|
|
1872
|
+
* @param ubo the ubo to set for the scene
|
|
1873
|
+
*/
|
|
1874
|
+
Scene.prototype.setSceneUniformBuffer = function (ubo) {
|
|
1875
|
+
this._sceneUbo = ubo;
|
|
1876
|
+
};
|
|
1815
1877
|
/**
|
|
1816
1878
|
* Gets an unique (relatively to the current scene) Id
|
|
1817
1879
|
* @returns an unique number for the scene
|
|
@@ -3279,6 +3341,7 @@ var Scene = /** @class */ (function (_super) {
|
|
|
3279
3341
|
};
|
|
3280
3342
|
/** @hidden */
|
|
3281
3343
|
Scene.prototype._renderForCamera = function (camera, rigParent, bindFrameBuffer) {
|
|
3344
|
+
var _a, _b, _c;
|
|
3282
3345
|
if (bindFrameBuffer === void 0) { bindFrameBuffer = true; }
|
|
3283
3346
|
if (camera && camera._skipRendering) {
|
|
3284
3347
|
return;
|
|
@@ -3324,8 +3387,8 @@ var Scene = /** @class */ (function (_super) {
|
|
|
3324
3387
|
this._renderTargets.pushNoDuplicate(this.environmentTexture);
|
|
3325
3388
|
}
|
|
3326
3389
|
// Collects render targets from external components.
|
|
3327
|
-
for (var _i = 0,
|
|
3328
|
-
var step =
|
|
3390
|
+
for (var _i = 0, _d = this._gatherActiveCameraRenderTargetsStage; _i < _d.length; _i++) {
|
|
3391
|
+
var step = _d[_i];
|
|
3329
3392
|
step.action(this._renderTargets);
|
|
3330
3393
|
}
|
|
3331
3394
|
var needRebind = false;
|
|
@@ -3345,12 +3408,13 @@ var Scene = /** @class */ (function (_super) {
|
|
|
3345
3408
|
Tools.EndPerformanceCounter("Render targets", this._renderTargets.length > 0);
|
|
3346
3409
|
this._renderId++;
|
|
3347
3410
|
}
|
|
3348
|
-
for (var
|
|
3349
|
-
var step =
|
|
3411
|
+
for (var _e = 0, _f = this._cameraDrawRenderTargetStage; _e < _f.length; _e++) {
|
|
3412
|
+
var step = _f[_e];
|
|
3350
3413
|
needRebind = step.action(this.activeCamera) || needRebind;
|
|
3351
3414
|
}
|
|
3352
3415
|
this._intermediateRendering = false;
|
|
3353
3416
|
}
|
|
3417
|
+
this._engine.currentRenderPassId = (_c = (_b = (_a = camera.outputRenderTarget) === null || _a === void 0 ? void 0 : _a.renderPassId) !== null && _b !== void 0 ? _b : camera.renderPassId) !== null && _c !== void 0 ? _c : 0;
|
|
3354
3418
|
// Restore framebuffer after rendering to targets
|
|
3355
3419
|
if (needRebind && !this.prePass) {
|
|
3356
3420
|
this._bindFrameBuffer(this._activeCamera, false);
|
|
@@ -3361,8 +3425,8 @@ var Scene = /** @class */ (function (_super) {
|
|
|
3361
3425
|
this.postProcessManager._prepareFrame();
|
|
3362
3426
|
}
|
|
3363
3427
|
// Before Camera Draw
|
|
3364
|
-
for (var
|
|
3365
|
-
var step =
|
|
3428
|
+
for (var _g = 0, _h = this._beforeCameraDrawStage; _g < _h.length; _g++) {
|
|
3429
|
+
var step = _h[_g];
|
|
3366
3430
|
step.action(this.activeCamera);
|
|
3367
3431
|
}
|
|
3368
3432
|
// Render
|
|
@@ -3373,8 +3437,8 @@ var Scene = /** @class */ (function (_super) {
|
|
|
3373
3437
|
this._renderingManager.render(null, null, true, true);
|
|
3374
3438
|
this.onAfterDrawPhaseObservable.notifyObservers(this);
|
|
3375
3439
|
// After Camera Draw
|
|
3376
|
-
for (var
|
|
3377
|
-
var step =
|
|
3440
|
+
for (var _j = 0, _k = this._afterCameraDrawStage; _j < _k.length; _j++) {
|
|
3441
|
+
var step = _k[_j];
|
|
3378
3442
|
step.action(this.activeCamera);
|
|
3379
3443
|
}
|
|
3380
3444
|
// Finalize frame
|
|
@@ -3521,7 +3585,7 @@ var Scene = /** @class */ (function (_super) {
|
|
|
3521
3585
|
* @param ignoreAnimations defines a boolean indicating if animations should not be executed (false by default)
|
|
3522
3586
|
*/
|
|
3523
3587
|
Scene.prototype.render = function (updateCameras, ignoreAnimations) {
|
|
3524
|
-
var _a, _b;
|
|
3588
|
+
var _a, _b, _c;
|
|
3525
3589
|
if (updateCameras === void 0) { updateCameras = true; }
|
|
3526
3590
|
if (ignoreAnimations === void 0) { ignoreAnimations = false; }
|
|
3527
3591
|
if (this.isDisposed) {
|
|
@@ -3554,8 +3618,8 @@ var Scene = /** @class */ (function (_super) {
|
|
|
3554
3618
|
this.animate();
|
|
3555
3619
|
}
|
|
3556
3620
|
// Before camera update steps
|
|
3557
|
-
for (var _i = 0,
|
|
3558
|
-
var step =
|
|
3621
|
+
for (var _i = 0, _d = this._beforeCameraUpdateStage; _i < _d.length; _i++) {
|
|
3622
|
+
var step = _d[_i];
|
|
3559
3623
|
step.action();
|
|
3560
3624
|
}
|
|
3561
3625
|
// Update Cameras
|
|
@@ -3610,21 +3674,22 @@ var Scene = /** @class */ (function (_super) {
|
|
|
3610
3674
|
this._intermediateRendering = false;
|
|
3611
3675
|
this._renderId++;
|
|
3612
3676
|
}
|
|
3677
|
+
this._engine.currentRenderPassId = (_c = currentActiveCamera === null || currentActiveCamera === void 0 ? void 0 : currentActiveCamera.renderPassId) !== null && _c !== void 0 ? _c : 0;
|
|
3613
3678
|
// Restore back buffer
|
|
3614
3679
|
this.activeCamera = currentActiveCamera;
|
|
3615
3680
|
if (this._activeCamera && this._activeCamera.cameraRigMode !== 22 && !this.prePass) {
|
|
3616
3681
|
this._bindFrameBuffer(this._activeCamera, false);
|
|
3617
3682
|
}
|
|
3618
3683
|
this.onAfterRenderTargetsRenderObservable.notifyObservers(this);
|
|
3619
|
-
for (var
|
|
3620
|
-
var step = _e
|
|
3684
|
+
for (var _e = 0, _f = this._beforeClearStage; _e < _f.length; _e++) {
|
|
3685
|
+
var step = _f[_e];
|
|
3621
3686
|
step.action();
|
|
3622
3687
|
}
|
|
3623
3688
|
// Clear
|
|
3624
3689
|
this._clearFrameBuffer(this.activeCamera);
|
|
3625
3690
|
// Collects render targets from external components.
|
|
3626
|
-
for (var
|
|
3627
|
-
var step = _g
|
|
3691
|
+
for (var _g = 0, _h = this._gatherRenderTargetsStage; _g < _h.length; _g++) {
|
|
3692
|
+
var step = _h[_g];
|
|
3628
3693
|
step.action(this._renderTargets);
|
|
3629
3694
|
}
|
|
3630
3695
|
// Multi-cameras?
|
|
@@ -3642,8 +3707,8 @@ var Scene = /** @class */ (function (_super) {
|
|
|
3642
3707
|
// Intersection checks
|
|
3643
3708
|
this._checkIntersections();
|
|
3644
3709
|
// Executes the after render stage actions.
|
|
3645
|
-
for (var
|
|
3646
|
-
var step = _j
|
|
3710
|
+
for (var _j = 0, _k = this._afterRenderStage; _j < _k.length; _j++) {
|
|
3711
|
+
var step = _k[_j];
|
|
3647
3712
|
step.action();
|
|
3648
3713
|
}
|
|
3649
3714
|
// After render
|
|
@@ -3901,13 +3966,7 @@ var Scene = /** @class */ (function (_super) {
|
|
|
3901
3966
|
var mesh = this.meshes[meshIndex];
|
|
3902
3967
|
var geometry = mesh.geometry;
|
|
3903
3968
|
if (geometry) {
|
|
3904
|
-
geometry.
|
|
3905
|
-
for (var vbName in geometry._vertexBuffers) {
|
|
3906
|
-
if (!geometry._vertexBuffers.hasOwnProperty(vbName)) {
|
|
3907
|
-
continue;
|
|
3908
|
-
}
|
|
3909
|
-
geometry._vertexBuffers[vbName]._buffer._data = null;
|
|
3910
|
-
}
|
|
3969
|
+
geometry.clearCachedData();
|
|
3911
3970
|
}
|
|
3912
3971
|
}
|
|
3913
3972
|
};
|
|
@@ -4339,5 +4398,5 @@ var Scene = /** @class */ (function (_super) {
|
|
|
4339
4398
|
export { Scene };
|
|
4340
4399
|
// LTS version
|
|
4341
4400
|
import { _injectLTSScene } from "./scene.lts.js";
|
|
4342
|
-
_injectLTSScene();
|
|
4401
|
+
_injectLTSScene(Scene);
|
|
4343
4402
|
//# sourceMappingURL=scene.js.map
|