@babylonjs/core 6.33.1 → 6.34.0-alpha.0
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/animation.js +1 -1
- package/Animations/animation.js.map +1 -1
- package/Animations/animationGroup.js +2 -2
- package/Animations/animationGroup.js.map +1 -1
- package/Animations/animationGroupMask.d.ts +4 -0
- package/Animations/animationGroupMask.js +4 -0
- package/Animations/animationGroupMask.js.map +1 -1
- package/Buffers/storageBuffer.d.ts +2 -1
- package/Buffers/storageBuffer.js +3 -2
- package/Buffers/storageBuffer.js.map +1 -1
- package/Cameras/Inputs/followCameraMouseWheelInput.js +12 -9
- package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
- package/Cameras/Inputs/followCameraPointersInput.js +28 -9
- package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
- package/Cameras/arcRotateCamera.js +1 -1
- package/Cameras/arcRotateCamera.js.map +1 -1
- package/Cameras/followCameraInputsManager.js +2 -1
- package/Cameras/followCameraInputsManager.js.map +1 -1
- package/Compute/computeShader.d.ts +5 -0
- package/Compute/computeShader.js +42 -32
- package/Compute/computeShader.js.map +1 -1
- package/Debug/skeletonViewer.js +2 -1
- package/Debug/skeletonViewer.js.map +1 -1
- package/Engines/Extensions/engine.alpha.js +8 -116
- package/Engines/Extensions/engine.alpha.js.map +1 -1
- package/Engines/Extensions/engine.cubeTexture.d.ts +1 -1
- package/Engines/Extensions/engine.cubeTexture.js +11 -213
- package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
- package/Engines/Extensions/engine.dynamicBuffer.js +5 -42
- package/Engines/Extensions/engine.dynamicBuffer.js.map +1 -1
- package/Engines/Extensions/engine.dynamicTexture.d.ts +1 -1
- package/Engines/Extensions/engine.dynamicTexture.js +5 -47
- package/Engines/Extensions/engine.dynamicTexture.js.map +1 -1
- package/Engines/Extensions/engine.multiRender.js +11 -341
- package/Engines/Extensions/engine.multiRender.js.map +1 -1
- package/Engines/Extensions/engine.multiview.js +6 -57
- package/Engines/Extensions/engine.multiview.js.map +1 -1
- package/Engines/Extensions/engine.query.d.ts +8 -2
- package/Engines/Extensions/engine.query.js +44 -152
- package/Engines/Extensions/engine.query.js.map +1 -1
- package/Engines/Extensions/engine.rawTexture.d.ts +1 -1
- package/Engines/Extensions/engine.rawTexture.js +20 -361
- package/Engines/Extensions/engine.rawTexture.js.map +1 -1
- package/Engines/Extensions/engine.readTexture.js +6 -112
- package/Engines/Extensions/engine.readTexture.js.map +1 -1
- package/Engines/Extensions/engine.renderTarget.d.ts +1 -1
- package/Engines/Extensions/engine.renderTarget.js +8 -173
- package/Engines/Extensions/engine.renderTarget.js.map +1 -1
- package/Engines/Extensions/engine.renderTargetCube.js +4 -55
- package/Engines/Extensions/engine.renderTargetCube.js.map +1 -1
- package/Engines/Extensions/engine.storageBuffer.d.ts +2 -1
- package/Engines/Extensions/engine.storageBuffer.js.map +1 -1
- package/Engines/Extensions/engine.textureSelector.js +11 -52
- package/Engines/Extensions/engine.textureSelector.js.map +1 -1
- package/Engines/Extensions/engine.transformFeedback.js +10 -11
- package/Engines/Extensions/engine.transformFeedback.js.map +1 -1
- package/Engines/Extensions/engine.uniformBuffer.js +9 -59
- package/Engines/Extensions/engine.uniformBuffer.js.map +1 -1
- package/Engines/Extensions/engine.videoTexture.js +4 -54
- package/Engines/Extensions/engine.videoTexture.js.map +1 -1
- package/Engines/Extensions/engine.views.d.ts +2 -24
- package/Engines/Extensions/engine.views.js +17 -136
- package/Engines/Extensions/engine.views.js.map +1 -1
- package/Engines/Processors/shaderCodeInliner.js +15 -14
- package/Engines/Processors/shaderCodeInliner.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.computeShader.js +7 -4
- package/Engines/WebGPU/Extensions/engine.computeShader.js.map +1 -1
- package/Engines/WebGPU/Extensions/engine.storageBuffer.js +14 -5
- package/Engines/WebGPU/Extensions/engine.storageBuffer.js.map +1 -1
- package/Engines/WebGPU/webgpuShaderProcessor.js +2 -1
- package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
- package/Engines/WebGPU/webgpuTintWASM.js +3 -2
- package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
- package/Engines/engine.d.ts +31 -74
- package/Engines/engine.js +322 -773
- package/Engines/engine.js.map +1 -1
- package/Engines/nativeEngine.d.ts +1 -1
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/nullEngine.d.ts +1 -1
- package/Engines/nullEngine.js.map +1 -1
- package/Engines/thinEngine.d.ts +160 -151
- package/Engines/thinEngine.js +712 -3280
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +5 -8
- package/Engines/webgpuEngine.js +143 -112
- package/Engines/webgpuEngine.js.map +1 -1
- package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.d.ts +296 -0
- package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.js +758 -0
- package/FlowGraph/Blocks/Data/Math/flowGraphMathBlocks.js.map +1 -0
- package/FlowGraph/Blocks/Data/Math/index.d.ts +1 -5
- package/FlowGraph/Blocks/Data/Math/index.js +1 -5
- package/FlowGraph/Blocks/Data/Math/index.js.map +1 -1
- package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.d.ts +2 -2
- package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.js +3 -3
- package/FlowGraph/Blocks/Data/flowGraphBinaryOperationBlock.js.map +1 -1
- package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.d.ts +1 -1
- package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js +3 -3
- package/FlowGraph/Blocks/Data/flowGraphCachedOperationBlock.js.map +1 -1
- package/FlowGraph/Blocks/Data/flowGraphConstantBlock.d.ts +1 -0
- package/FlowGraph/Blocks/Data/flowGraphConstantBlock.js +5 -0
- package/FlowGraph/Blocks/Data/flowGraphConstantBlock.js.map +1 -1
- package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.d.ts +25 -0
- package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.js +22 -0
- package/FlowGraph/Blocks/Data/flowGraphGetPropertyBlock.js.map +1 -0
- package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.d.ts +11 -5
- package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.js +12 -6
- package/FlowGraph/Blocks/Data/flowGraphGetVariableBlock.js.map +1 -1
- package/FlowGraph/Blocks/Data/flowGraphTernaryOperationBlock.d.ts +19 -0
- package/FlowGraph/Blocks/Data/flowGraphTernaryOperationBlock.js +22 -0
- package/FlowGraph/Blocks/Data/flowGraphTernaryOperationBlock.js.map +1 -0
- package/FlowGraph/Blocks/Data/index.d.ts +1 -0
- package/FlowGraph/Blocks/Data/index.js +1 -0
- package/FlowGraph/Blocks/Data/index.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.d.ts +10 -5
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js +15 -5
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.d.ts +1 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.js +2 -1
- package/FlowGraph/Blocks/Event/flowGraphSceneReadyEventBlock.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.d.ts +1 -0
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.js +3 -2
- package/FlowGraph/Blocks/Event/flowGraphSceneTickEventBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPauseAnimationBlock.d.ts +2 -2
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPauseAnimationBlock.js +3 -3
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPauseAnimationBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.d.ts +0 -5
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js +2 -3
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.d.ts +2 -2
- package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.js +3 -3
- package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Audio/flowGraphPlayAudioBlock.d.ts +2 -2
- package/FlowGraph/Blocks/Execution/Audio/flowGraphPlayAudioBlock.js +3 -3
- package/FlowGraph/Blocks/Execution/Audio/flowGraphPlayAudioBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Audio/flowGraphStopAudioBlock.d.ts +2 -2
- package/FlowGraph/Blocks/Execution/Audio/flowGraphStopAudioBlock.js +2 -2
- package/FlowGraph/Blocks/Execution/Audio/flowGraphStopAudioBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.d.ts +2 -2
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.js +3 -3
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCounterBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.d.ts +2 -2
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.js +3 -3
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDebounceBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.d.ts +13 -5
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.js +14 -12
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphDoNBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.d.ts +2 -6
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.js +3 -4
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphForLoopBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSequenceBlock.d.ts +16 -0
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSequenceBlock.js +26 -0
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSequenceBlock.js.map +1 -0
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.d.ts +2 -2
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.js +3 -3
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphTimerBlock.d.ts +1 -6
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphTimerBlock.js +4 -4
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphTimerBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.d.ts +2 -2
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.js +4 -4
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWaitAllBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.d.ts +3 -2
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.js +6 -5
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphWhileLoopBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/index.d.ts +1 -0
- package/FlowGraph/Blocks/Execution/ControlFlow/index.js +1 -0
- package/FlowGraph/Blocks/Execution/ControlFlow/index.js.map +1 -1
- package/FlowGraph/Blocks/Execution/{flowGraphLogBlock.d.ts → flowGraphConsoleLogBlock.d.ts} +3 -2
- package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js +29 -0
- package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js.map +1 -0
- package/FlowGraph/Blocks/Execution/flowGraphSendCustomEventBlock.d.ts +16 -8
- package/FlowGraph/Blocks/Execution/flowGraphSendCustomEventBlock.js +17 -10
- package/FlowGraph/Blocks/Execution/flowGraphSendCustomEventBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.d.ts +4 -3
- package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.js +7 -6
- package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.d.ts +12 -7
- package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js +10 -9
- package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/index.d.ts +1 -2
- package/FlowGraph/Blocks/Execution/index.js +1 -3
- package/FlowGraph/Blocks/Execution/index.js.map +1 -1
- package/FlowGraph/flowGraph.d.ts +3 -1
- package/FlowGraph/flowGraph.js +6 -2
- package/FlowGraph/flowGraph.js.map +1 -1
- package/FlowGraph/flowGraphAsyncExecutionBlock.d.ts +6 -2
- package/FlowGraph/flowGraphAsyncExecutionBlock.js +2 -1
- package/FlowGraph/flowGraphAsyncExecutionBlock.js.map +1 -1
- package/FlowGraph/flowGraphBlock.d.ts +7 -2
- package/FlowGraph/flowGraphBlock.js +21 -19
- package/FlowGraph/flowGraphBlock.js.map +1 -1
- package/FlowGraph/flowGraphContext.d.ts +9 -5
- package/FlowGraph/flowGraphContext.js +7 -2
- package/FlowGraph/flowGraphContext.js.map +1 -1
- package/FlowGraph/flowGraphCoordinator.d.ts +4 -5
- package/FlowGraph/flowGraphCoordinator.js +12 -7
- package/FlowGraph/flowGraphCoordinator.js.map +1 -1
- package/FlowGraph/flowGraphEventBlock.js +1 -1
- package/FlowGraph/flowGraphEventBlock.js.map +1 -1
- package/FlowGraph/flowGraphExecutionBlock.d.ts +4 -2
- package/FlowGraph/flowGraphExecutionBlock.js +25 -9
- package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
- package/FlowGraph/flowGraphPath.d.ts +20 -2
- package/FlowGraph/flowGraphPath.js +27 -7
- package/FlowGraph/flowGraphPath.js.map +1 -1
- package/FlowGraph/flowGraphWithOnDoneExecutionBlock.d.ts +3 -3
- package/FlowGraph/flowGraphWithOnDoneExecutionBlock.js +3 -3
- package/FlowGraph/flowGraphWithOnDoneExecutionBlock.js.map +1 -1
- package/FlowGraph/index.d.ts +3 -0
- package/FlowGraph/index.js +3 -0
- package/FlowGraph/index.js.map +1 -1
- package/FlowGraph/serialization.js +20 -6
- package/FlowGraph/serialization.js.map +1 -1
- package/FlowGraph/typeDefinitions.d.ts +33 -0
- package/FlowGraph/typeDefinitions.js +2 -0
- package/FlowGraph/typeDefinitions.js.map +1 -0
- package/Gizmos/axisScaleGizmo.d.ts +1 -0
- package/Gizmos/axisScaleGizmo.js +12 -0
- package/Gizmos/axisScaleGizmo.js.map +1 -1
- package/Gizmos/lightGizmo.js +2 -1
- package/Gizmos/lightGizmo.js.map +1 -1
- package/Gizmos/rotationGizmo.js +1 -1
- package/Gizmos/rotationGizmo.js.map +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.js +1 -1
- package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
- package/Lights/light.d.ts +15 -0
- package/Lights/light.js +18 -0
- package/Lights/light.js.map +1 -1
- package/Lights/shadowLight.d.ts +18 -1
- package/Lights/shadowLight.js +34 -1
- package/Lights/shadowLight.js.map +1 -1
- package/Materials/Node/Blocks/Dual/lightBlock.js +2 -1
- package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +3 -2
- package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/fragDepthBlock.js +2 -1
- package/Materials/Node/Blocks/Fragment/fragDepthBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js +2 -1
- package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js +2 -1
- package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +3 -2
- package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js +2 -1
- package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
- package/Materials/Node/nodeMaterial.js +9 -8
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBlock.js +2 -1
- package/Materials/Node/nodeMaterialBlock.js.map +1 -1
- package/Materials/drawWrapper.js +3 -2
- package/Materials/drawWrapper.js.map +1 -1
- package/Materials/effect.js +2 -1
- package/Materials/effect.js.map +1 -1
- package/Materials/material.js +2 -1
- package/Materials/material.js.map +1 -1
- package/Materials/uniformBuffer.d.ts +4 -1
- package/Materials/uniformBuffer.js +5 -2
- package/Materials/uniformBuffer.js.map +1 -1
- package/Meshes/Node/nodeGeometryBlock.js +11 -2
- package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
- package/Meshes/abstractMesh.js +3 -1
- package/Meshes/abstractMesh.js.map +1 -1
- package/Misc/assetsManager.js +2 -2
- package/Misc/assetsManager.js.map +1 -1
- package/Misc/dds.d.ts +2 -0
- package/Misc/dds.js +27 -23
- package/Misc/dds.js.map +1 -1
- package/Misc/logger.d.ts +3 -3
- package/Misc/logger.js +8 -4
- package/Misc/logger.js.map +1 -1
- package/Misc/sceneSerializer.js +2 -1
- package/Misc/sceneSerializer.js.map +1 -1
- package/Navigation/Plugins/recastJSPlugin.js +2 -2
- package/Navigation/Plugins/recastJSPlugin.js.map +1 -1
- package/Physics/v2/Plugins/havokPlugin.js +1 -1
- package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
- package/Physics/v2/index.d.ts +1 -0
- package/Physics/v2/index.js +1 -0
- package/Physics/v2/index.js.map +1 -1
- package/Physics/v2/ragdoll.d.ts +107 -0
- package/Physics/v2/ragdoll.js +228 -0
- package/Physics/v2/ragdoll.js.map +1 -0
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +2 -2
- package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js +3 -2
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js.map +1 -1
- package/PostProcesses/index.d.ts +1 -1
- package/PostProcesses/index.js +1 -1
- package/PostProcesses/index.js.map +1 -1
- package/PostProcesses/passPostProcess.d.ts +1 -0
- package/PostProcesses/passPostProcess.js +6 -2
- package/PostProcesses/passPostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.js +1 -1
- package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
- package/PostProcesses/screenSpaceReflectionPostProcess.js +3 -2
- package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
- package/Rendering/depthPeelingRenderer.js +2 -1
- package/Rendering/depthPeelingRenderer.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockSubSurface.js +3 -2
- package/Shaders/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
- package/XR/features/WebXRControllerPhysics.js +2 -2
- package/XR/features/WebXRControllerPhysics.js.map +1 -1
- package/XR/features/WebXRMeshDetector.d.ts +14 -2
- package/XR/features/WebXRMeshDetector.js +45 -9
- package/XR/features/WebXRMeshDetector.js.map +1 -1
- package/XR/features/WebXRWalkingLocomotion.js +1 -1
- package/XR/features/WebXRWalkingLocomotion.js.map +1 -1
- package/XR/webXRExperienceHelper.js +2 -2
- package/XR/webXRExperienceHelper.js.map +1 -1
- package/assetContainer.js +2 -2
- package/assetContainer.js.map +1 -1
- package/esm/Engines/Extensions/alpha/alpha.base.d.ts +34 -0
- package/esm/Engines/Extensions/alpha/alpha.base.js +2 -0
- package/esm/Engines/Extensions/alpha/alpha.base.js.map +1 -0
- package/esm/Engines/Extensions/computeShaders/computeShaders.base.d.ts +87 -0
- package/esm/Engines/Extensions/computeShaders/computeShaders.base.js +12 -0
- package/esm/Engines/Extensions/computeShaders/computeShaders.base.js.map +1 -0
- package/esm/Engines/Extensions/cubeTexture/cubeTexture.base.d.ts +79 -0
- package/esm/Engines/Extensions/cubeTexture/cubeTexture.base.js +2 -0
- package/esm/Engines/Extensions/cubeTexture/cubeTexture.base.js.map +1 -0
- package/esm/Engines/Extensions/debugging/debugging.base.d.ts +11 -0
- package/esm/Engines/Extensions/debugging/debugging.base.js +2 -0
- package/esm/Engines/Extensions/debugging/debugging.base.js.map +1 -0
- package/esm/Engines/Extensions/dynamicBuffer/dynamicBuffer.base.d.ts +20 -0
- package/esm/Engines/Extensions/dynamicBuffer/dynamicBuffer.base.js +2 -0
- package/esm/Engines/Extensions/dynamicBuffer/dynamicBuffer.base.js.map +1 -0
- package/esm/Engines/Extensions/dynamicTexture/dynamicTexture.base.d.ts +26 -0
- package/esm/Engines/Extensions/dynamicTexture/dynamicTexture.base.js +2 -0
- package/esm/Engines/Extensions/dynamicTexture/dynamicTexture.base.js.map +1 -0
- package/esm/Engines/Extensions/engine.extensions.d.ts +67 -0
- package/esm/Engines/Extensions/engine.extensions.js +49 -0
- package/esm/Engines/Extensions/engine.extensions.js.map +1 -0
- package/esm/Engines/Extensions/externalTexture/externalTexture.base.d.ts +16 -0
- package/esm/Engines/Extensions/externalTexture/externalTexture.base.js +2 -0
- package/esm/Engines/Extensions/externalTexture/externalTexture.base.js.map +1 -0
- package/esm/Engines/Extensions/multiRender/multiRender.base.d.ts +54 -0
- package/esm/Engines/Extensions/multiRender/multiRender.base.js +2 -0
- package/esm/Engines/Extensions/multiRender/multiRender.base.js.map +1 -0
- package/esm/Engines/Extensions/multiview/multiview.base.d.ts +67 -0
- package/esm/Engines/Extensions/multiview/multiview.base.js +79 -0
- package/esm/Engines/Extensions/multiview/multiview.base.js.map +1 -0
- package/esm/Engines/Extensions/query/query.base.d.ts +164 -0
- package/esm/Engines/Extensions/query/query.base.js +168 -0
- package/esm/Engines/Extensions/query/query.base.js.map +1 -0
- package/esm/Engines/Extensions/rawTexture/engine.rawTexture.base.d.ts +187 -0
- package/esm/Engines/Extensions/rawTexture/engine.rawTexture.base.js +2 -0
- package/esm/Engines/Extensions/rawTexture/engine.rawTexture.base.js.map +1 -0
- package/esm/Engines/Extensions/readTexture/readTexture.base.d.ts +9 -0
- package/esm/Engines/Extensions/readTexture/readTexture.base.js +2 -0
- package/esm/Engines/Extensions/readTexture/readTexture.base.js.map +1 -0
- package/esm/Engines/Extensions/renderTarget/renderTarget.base.d.ts +35 -0
- package/esm/Engines/Extensions/renderTarget/renderTarget.base.js +2 -0
- package/esm/Engines/Extensions/renderTarget/renderTarget.base.js.map +1 -0
- package/esm/Engines/Extensions/renderTargetCube/renderTargetCube.base.d.ts +12 -0
- package/esm/Engines/Extensions/renderTargetCube/renderTargetCube.base.js +2 -0
- package/esm/Engines/Extensions/renderTargetCube/renderTargetCube.base.js.map +1 -0
- package/esm/Engines/Extensions/storageBuffer/storageBuffer.base.d.ts +36 -0
- package/esm/Engines/Extensions/storageBuffer/storageBuffer.base.js +2 -0
- package/esm/Engines/Extensions/storageBuffer/storageBuffer.base.js.map +1 -0
- package/esm/Engines/Extensions/textureSampler/textureSampler.base.d.ts +11 -0
- package/esm/Engines/Extensions/textureSampler/textureSampler.base.js +2 -0
- package/esm/Engines/Extensions/textureSampler/textureSampler.base.js.map +1 -0
- package/esm/Engines/Extensions/textureSelector/textureSelector.base.d.ts +50 -0
- package/esm/Engines/Extensions/textureSelector/textureSelector.base.js +53 -0
- package/esm/Engines/Extensions/textureSelector/textureSelector.base.js.map +1 -0
- package/esm/Engines/Extensions/transformFeedback/engine.transformFeedback.base.d.ts +42 -0
- package/esm/Engines/Extensions/transformFeedback/engine.transformFeedback.base.js +2 -0
- package/esm/Engines/Extensions/transformFeedback/engine.transformFeedback.base.js.map +1 -0
- package/esm/Engines/Extensions/uniformBuffer/uniformBuffer.base.d.ts +48 -0
- package/esm/Engines/Extensions/uniformBuffer/uniformBuffer.base.js +2 -0
- package/esm/Engines/Extensions/uniformBuffer/uniformBuffer.base.js.map +1 -0
- package/esm/Engines/Extensions/videoTexture/videoTexture.base.d.ts +13 -0
- package/esm/Engines/Extensions/videoTexture/videoTexture.base.js +2 -0
- package/esm/Engines/Extensions/videoTexture/videoTexture.base.js.map +1 -0
- package/esm/Engines/Extensions/views/views.base.d.ts +85 -0
- package/esm/Engines/Extensions/views/views.base.js +33 -0
- package/esm/Engines/Extensions/views/views.base.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/alpha/alpha.webgl.d.ts +8 -0
- package/esm/Engines/WebGL/Extensions/alpha/alpha.webgl.js +137 -0
- package/esm/Engines/WebGL/Extensions/alpha/alpha.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/cubeTexture/cubeTexture.webgl.d.ts +11 -0
- package/esm/Engines/WebGL/Extensions/cubeTexture/cubeTexture.webgl.js +251 -0
- package/esm/Engines/WebGL/Extensions/cubeTexture/cubeTexture.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/dynamicBuffer/dynamicBuffer.webgl.d.ts +5 -0
- package/esm/Engines/WebGL/Extensions/dynamicBuffer/dynamicBuffer.webgl.js +55 -0
- package/esm/Engines/WebGL/Extensions/dynamicBuffer/dynamicBuffer.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/dynamicTexture/dynamicTexture.webgl.d.ts +5 -0
- package/esm/Engines/WebGL/Extensions/dynamicTexture/dynamicTexture.webgl.js +65 -0
- package/esm/Engines/WebGL/Extensions/dynamicTexture/dynamicTexture.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/multiRender/multiRender.webgl.d.ts +10 -0
- package/esm/Engines/WebGL/Extensions/multiRender/multiRender.webgl.js +375 -0
- package/esm/Engines/WebGL/Extensions/multiRender/multiRender.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/multiview/multiview.webgl.d.ts +6 -0
- package/esm/Engines/WebGL/Extensions/multiview/multiview.webgl.js +77 -0
- package/esm/Engines/WebGL/Extensions/multiview/multiview.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/query/query.webgl.d.ts +21 -0
- package/esm/Engines/WebGL/Extensions/query/query.webgl.js +220 -0
- package/esm/Engines/WebGL/Extensions/query/query.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/rawTexture/engine.rawTexture.webgl.d.ts +15 -0
- package/esm/Engines/WebGL/Extensions/rawTexture/engine.rawTexture.webgl.js +392 -0
- package/esm/Engines/WebGL/Extensions/rawTexture/engine.rawTexture.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/readTexture/readTexture.webgl.d.ts +17 -0
- package/esm/Engines/WebGL/Extensions/readTexture/readTexture.webgl.js +133 -0
- package/esm/Engines/WebGL/Extensions/readTexture/readTexture.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/renderTarget/renderTarget.webgl.d.ts +8 -0
- package/esm/Engines/WebGL/Extensions/renderTarget/renderTarget.webgl.js +199 -0
- package/esm/Engines/WebGL/Extensions/renderTarget/renderTarget.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/renderTargetCube/renderTargetCube.webgl.d.ts +2 -0
- package/esm/Engines/WebGL/Extensions/renderTargetCube/renderTargetCube.webgl.js +62 -0
- package/esm/Engines/WebGL/Extensions/renderTargetCube/renderTargetCube.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/textureSelector/textureSelector.webgl.d.ts +5 -0
- package/esm/Engines/WebGL/Extensions/textureSelector/textureSelector.webgl.js +28 -0
- package/esm/Engines/WebGL/Extensions/textureSelector/textureSelector.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/transformFeedback/engine.transformFeedback.webgl.d.ts +11 -0
- package/esm/Engines/WebGL/Extensions/transformFeedback/engine.transformFeedback.webgl.js +45 -0
- package/esm/Engines/WebGL/Extensions/transformFeedback/engine.transformFeedback.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/uniformBuffer/uniformBuffer.webgl.d.ts +9 -0
- package/esm/Engines/WebGL/Extensions/uniformBuffer/uniformBuffer.webgl.js +78 -0
- package/esm/Engines/WebGL/Extensions/uniformBuffer/uniformBuffer.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/videoTexture/videoTexture.webgl.d.ts +4 -0
- package/esm/Engines/WebGL/Extensions/videoTexture/videoTexture.webgl.js +67 -0
- package/esm/Engines/WebGL/Extensions/videoTexture/videoTexture.webgl.js.map +1 -0
- package/esm/Engines/WebGL/Extensions/views/views.webgl.d.ts +18 -0
- package/esm/Engines/WebGL/Extensions/views/views.webgl.js +152 -0
- package/esm/Engines/WebGL/Extensions/views/views.webgl.js.map +1 -0
- package/esm/Engines/WebGL/engine.adapterHelpers.d.ts +43 -0
- package/esm/Engines/WebGL/engine.adapterHelpers.js +107 -0
- package/esm/Engines/WebGL/engine.adapterHelpers.js.map +1 -0
- package/esm/Engines/WebGL/engine.webgl.d.ts +1030 -0
- package/esm/Engines/WebGL/engine.webgl.js +4083 -0
- package/esm/Engines/WebGL/engine.webgl.js.map +1 -0
- package/esm/Engines/WebGPU/engine.adapterHelpers.d.ts +7 -0
- package/esm/Engines/WebGPU/engine.adapterHelpers.js +20 -0
- package/esm/Engines/WebGPU/engine.adapterHelpers.js.map +1 -0
- package/esm/Engines/WebGPU/engine.webgpu.constants.d.ts +391 -0
- package/esm/Engines/WebGPU/engine.webgpu.constants.js +2 -0
- package/esm/Engines/WebGPU/engine.webgpu.constants.js.map +1 -0
- package/esm/Engines/WebGPU/engine.webgpu.d.ts +277 -0
- package/esm/Engines/WebGPU/engine.webgpu.js +1281 -0
- package/esm/Engines/WebGPU/engine.webgpu.js.map +1 -0
- package/esm/Engines/engine.adapters.d.ts +32 -0
- package/esm/Engines/engine.adapters.js +27 -0
- package/esm/Engines/engine.adapters.js.map +1 -0
- package/esm/Engines/engine.base.d.ts +807 -0
- package/esm/Engines/engine.base.js +1235 -0
- package/esm/Engines/engine.base.js.map +1 -0
- package/esm/Engines/engine.constants.d.ts +735 -0
- package/esm/Engines/engine.constants.js +3 -0
- package/esm/Engines/engine.constants.js.map +1 -0
- package/esm/Engines/engine.extendable.d.ts +180 -0
- package/esm/Engines/engine.extendable.js +477 -0
- package/esm/Engines/engine.extendable.js.map +1 -0
- package/esm/Engines/engine.interfaces.d.ts +16 -0
- package/esm/Engines/engine.interfaces.js +9 -0
- package/esm/Engines/engine.interfaces.js.map +1 -0
- package/esm/Engines/engine.static.d.ts +215 -0
- package/esm/Engines/engine.static.js +345 -0
- package/esm/Engines/engine.static.js.map +1 -0
- package/esm/Engines/engine.tools.d.ts +20 -0
- package/esm/Engines/engine.tools.js +33 -0
- package/esm/Engines/engine.tools.js.map +1 -0
- package/esm/Engines/public.d.ts +1 -0
- package/esm/Engines/public.js +2 -0
- package/esm/Engines/public.js.map +1 -0
- package/esm/Engines/runtimeEnvironment.d.ts +37 -0
- package/esm/Engines/runtimeEnvironment.js +56 -0
- package/esm/Engines/runtimeEnvironment.js.map +1 -0
- package/package.json +2 -1
- package/scene.d.ts +1 -2
- package/scene.js +1 -1
- package/scene.js.map +1 -1
- package/FlowGraph/Blocks/Data/Math/flowGraphMatrixBlocks.d.ts +0 -172
- package/FlowGraph/Blocks/Data/Math/flowGraphMatrixBlocks.js +0 -235
- package/FlowGraph/Blocks/Data/Math/flowGraphMatrixBlocks.js.map +0 -1
- package/FlowGraph/Blocks/Data/Math/flowGraphNumberMathBlocks.d.ts +0 -269
- package/FlowGraph/Blocks/Data/Math/flowGraphNumberMathBlocks.js +0 -429
- package/FlowGraph/Blocks/Data/Math/flowGraphNumberMathBlocks.js.map +0 -1
- package/FlowGraph/Blocks/Data/Math/flowGraphVector2MathBlocks.d.ts +0 -115
- package/FlowGraph/Blocks/Data/Math/flowGraphVector2MathBlocks.js +0 -146
- package/FlowGraph/Blocks/Data/Math/flowGraphVector2MathBlocks.js.map +0 -1
- package/FlowGraph/Blocks/Data/Math/flowGraphVector3MathBlocks.d.ts +0 -155
- package/FlowGraph/Blocks/Data/Math/flowGraphVector3MathBlocks.js +0 -190
- package/FlowGraph/Blocks/Data/Math/flowGraphVector3MathBlocks.js.map +0 -1
- package/FlowGraph/Blocks/Data/Math/flowGraphVector4MathBlocks.d.ts +0 -116
- package/FlowGraph/Blocks/Data/Math/flowGraphVector4MathBlocks.js +0 -144
- package/FlowGraph/Blocks/Data/Math/flowGraphVector4MathBlocks.js.map +0 -1
- package/FlowGraph/Blocks/Execution/flowGraphLogBlock.js +0 -27
- package/FlowGraph/Blocks/Execution/flowGraphLogBlock.js.map +0 -1
|
@@ -0,0 +1,1235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base engine functionality to be used in all other different engines
|
|
3
|
+
*/
|
|
4
|
+
/* eslint-disable jsdoc/require-jsdoc */
|
|
5
|
+
import { Effect } from "../../Materials/effect.js";
|
|
6
|
+
import { Observable } from "../../Misc/observable.js";
|
|
7
|
+
import { PrecisionDate } from "../../Misc/precisionDate.js";
|
|
8
|
+
import { AlphaState } from "../../States/alphaCullingState.js";
|
|
9
|
+
import { EngineType } from "./engine.interfaces.js";
|
|
10
|
+
import { IsDocumentAvailable, IsWindowObjectExist, hostInformation } from "./runtimeEnvironment.js";
|
|
11
|
+
import { PerformanceConfigurator } from "../../Engines/performanceConfigurator.js";
|
|
12
|
+
import { EngineStore, _CreateCanvas, _ExitFullscreen, _ExitPointerlock, _RequestFullscreen, _RequestPointerlock } from "./engine.static.js";
|
|
13
|
+
import { PerformanceMonitor } from "../../Misc/performanceMonitor.js";
|
|
14
|
+
import { StencilState } from "../../States/stencilState.js";
|
|
15
|
+
import { augmentEngineStateWithExtensions } from "./Extensions/engine.extensions.js";
|
|
16
|
+
let engineCounter = 0;
|
|
17
|
+
/**
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
export function initBaseEngineState(overrides = {}, options = {}) {
|
|
21
|
+
var _a, _b, _c, _d, _e;
|
|
22
|
+
const devicePixelRatio = IsWindowObjectExist() ? window.devicePixelRatio || 1.0 : 1.0;
|
|
23
|
+
const limitDeviceRatio = options.limitDeviceRatio || devicePixelRatio;
|
|
24
|
+
options.deterministicLockstep = (_a = options.deterministicLockstep) !== null && _a !== void 0 ? _a : false;
|
|
25
|
+
options.lockstepMaxSteps = (_b = options.lockstepMaxSteps) !== null && _b !== void 0 ? _b : 4;
|
|
26
|
+
options.timeStep = (_c = options.timeStep) !== null && _c !== void 0 ? _c : 1 / 60;
|
|
27
|
+
options.stencil = (_d = options.stencil) !== null && _d !== void 0 ? _d : true;
|
|
28
|
+
// TODO - this needs to be a module as well
|
|
29
|
+
PerformanceConfigurator.SetMatrixPrecision(!!options.useHighPrecisionMatrix);
|
|
30
|
+
const engineState = {
|
|
31
|
+
// module: {},
|
|
32
|
+
uniqueId: engineCounter++,
|
|
33
|
+
_type: EngineType.BASE,
|
|
34
|
+
get description() {
|
|
35
|
+
let description = engineState.name + engineState._version;
|
|
36
|
+
if (engineState._caps.parallelShaderCompile) {
|
|
37
|
+
description += " - Parallel shader compilation";
|
|
38
|
+
}
|
|
39
|
+
return description;
|
|
40
|
+
},
|
|
41
|
+
name: "Base",
|
|
42
|
+
_version: 1,
|
|
43
|
+
_isDisposed: false,
|
|
44
|
+
get isDisposed() {
|
|
45
|
+
return engineState._isDisposed;
|
|
46
|
+
},
|
|
47
|
+
forcePOTTextures: false,
|
|
48
|
+
isFullscreen: false,
|
|
49
|
+
cullBackFaces: null,
|
|
50
|
+
renderEvenInBackground: true,
|
|
51
|
+
preventCacheWipeBetweenFrames: false,
|
|
52
|
+
validateShaderPrograms: false,
|
|
53
|
+
_useReverseDepthBuffer: false,
|
|
54
|
+
get useReverseDepthBuffer() {
|
|
55
|
+
return engineState._useReverseDepthBuffer;
|
|
56
|
+
},
|
|
57
|
+
set useReverseDepthBuffer(useReverse) {
|
|
58
|
+
if (useReverse === engineState._useReverseDepthBuffer) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
engineState._useReverseDepthBuffer = useReverse;
|
|
62
|
+
if (engineState._depthCullingState) {
|
|
63
|
+
if (useReverse) {
|
|
64
|
+
engineState._depthCullingState.depthFunc = 518 /* 518 */;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
engineState._depthCullingState.depthFunc = 515 /* 515 */;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
isNDCHalfZRange: false,
|
|
72
|
+
hasOriginBottomLeft: true,
|
|
73
|
+
disableUniformBuffers: false,
|
|
74
|
+
onDisposeObservable: new Observable(),
|
|
75
|
+
_frameId: 0,
|
|
76
|
+
get frameId() {
|
|
77
|
+
return engineState._frameId;
|
|
78
|
+
},
|
|
79
|
+
startTime: PrecisionDate.Now,
|
|
80
|
+
get needPOTTextures() {
|
|
81
|
+
return engineState.forcePOTTextures;
|
|
82
|
+
},
|
|
83
|
+
_renderingQueueLaunched: false,
|
|
84
|
+
_activeRenderLoops: [],
|
|
85
|
+
get activeRenderLoops() {
|
|
86
|
+
return engineState._activeRenderLoops;
|
|
87
|
+
},
|
|
88
|
+
onContextLostObservable: new Observable(),
|
|
89
|
+
onContextRestoredObservable: new Observable(),
|
|
90
|
+
doNotHandleContextLost: false,
|
|
91
|
+
disableVertexArrayObjects: false,
|
|
92
|
+
adaptToDeviceRatio: (_e = options.adaptToDeviceRatio) !== null && _e !== void 0 ? _e : false,
|
|
93
|
+
get currentViewport() {
|
|
94
|
+
return engineState._cachedViewport;
|
|
95
|
+
},
|
|
96
|
+
premultipliedAlpha: true,
|
|
97
|
+
onBeforeTextureInitObservable: new Observable(),
|
|
98
|
+
get isWebGPU() {
|
|
99
|
+
return engineState._type === EngineType.WEBGPU;
|
|
100
|
+
},
|
|
101
|
+
get shaderPlatformName() {
|
|
102
|
+
return engineState._shaderPlatformName;
|
|
103
|
+
},
|
|
104
|
+
get supportsUniformBuffers() {
|
|
105
|
+
return false;
|
|
106
|
+
},
|
|
107
|
+
useExactSrgbConversions: options.useExactSrgbConversions || false,
|
|
108
|
+
onBeginFrameObservable: new Observable(),
|
|
109
|
+
onEndFrameObservable: new Observable(),
|
|
110
|
+
onBeforeShaderCompilationObservable: new Observable(),
|
|
111
|
+
onAfterShaderCompilationObservable: new Observable(),
|
|
112
|
+
scenes: [],
|
|
113
|
+
postProcesses: [],
|
|
114
|
+
onResizeObservable: new Observable(),
|
|
115
|
+
onCanvasBlurObservable: new Observable(),
|
|
116
|
+
onCanvasFocusObservable: new Observable(),
|
|
117
|
+
onCanvasPointerOutObservable: new Observable(),
|
|
118
|
+
disableContextMenu: true,
|
|
119
|
+
disablePerformanceMonitorInBackground: false,
|
|
120
|
+
isPointerLock: false,
|
|
121
|
+
get isStencilEnable() {
|
|
122
|
+
return engineState._isStencilEnable;
|
|
123
|
+
},
|
|
124
|
+
enableOfflineSupport: false,
|
|
125
|
+
disableManifestCheck: false,
|
|
126
|
+
onNewSceneAddedObservable: new Observable(),
|
|
127
|
+
customAnimationFrameRequester: null,
|
|
128
|
+
canvasTabIndex: 1,
|
|
129
|
+
currentRenderPassId: 0,
|
|
130
|
+
get alphaState() {
|
|
131
|
+
return engineState._alphaState;
|
|
132
|
+
},
|
|
133
|
+
emptyTexture: null,
|
|
134
|
+
emptyCubeTexture: null,
|
|
135
|
+
emptyTexture3D: null,
|
|
136
|
+
emptyTexture2DArray: null,
|
|
137
|
+
// internals
|
|
138
|
+
_uniformBuffers: [],
|
|
139
|
+
_storageBuffers: [],
|
|
140
|
+
_windowIsBackground: false,
|
|
141
|
+
get _shouldUseHighPrecisionShader() {
|
|
142
|
+
return !!(engineState._caps.highPrecisionShaderSupported && engineState._highPrecisionShadersAllowed);
|
|
143
|
+
},
|
|
144
|
+
_badOS: false,
|
|
145
|
+
_badDesktopOS: false,
|
|
146
|
+
_contextWasLost: false,
|
|
147
|
+
_internalTexturesCache: [],
|
|
148
|
+
_renderTargetWrapperCache: [],
|
|
149
|
+
_activeChannel: 0,
|
|
150
|
+
_currentTextureChannel: -1,
|
|
151
|
+
_boundTexturesCache: {},
|
|
152
|
+
_compiledEffects: {},
|
|
153
|
+
_vertexAttribArraysEnabled: [],
|
|
154
|
+
_lastDevicePixelRatio: devicePixelRatio,
|
|
155
|
+
_hardwareScalingLevel: options.adaptToDeviceRatio ? 1.0 / Math.min(limitDeviceRatio, devicePixelRatio) : 1.0,
|
|
156
|
+
_transformTextureUrl: null,
|
|
157
|
+
_renderWidthOverride: null,
|
|
158
|
+
_creationOptions: options,
|
|
159
|
+
_isStencilEnable: !!options.stencil,
|
|
160
|
+
_virtualScenes: [],
|
|
161
|
+
_videoTextureSupported: false,
|
|
162
|
+
_stencilState: new StencilState(),
|
|
163
|
+
// Missing vars
|
|
164
|
+
_shaderProcessor: null,
|
|
165
|
+
_renderingCanvas: null,
|
|
166
|
+
_caps: {},
|
|
167
|
+
_features: {},
|
|
168
|
+
_alphaState: new AlphaState(),
|
|
169
|
+
_alphaMode: 1 /* 1 */,
|
|
170
|
+
_alphaEquation: 0 /* 0 */,
|
|
171
|
+
_currentRenderTarget: null,
|
|
172
|
+
_boundRenderFunction: () => void 0,
|
|
173
|
+
_frameHandler: -1,
|
|
174
|
+
_highPrecisionShadersAllowed: true,
|
|
175
|
+
_colorWrite: true,
|
|
176
|
+
_colorWriteChanged: true,
|
|
177
|
+
// _depthCullingState: null,
|
|
178
|
+
// _stencilStateComposer: null,
|
|
179
|
+
// _stencilState: null,
|
|
180
|
+
_currentEffect: null,
|
|
181
|
+
_cachedViewport: null,
|
|
182
|
+
_workingCanvas: null,
|
|
183
|
+
_workingContext: null,
|
|
184
|
+
_shaderPlatformName: "",
|
|
185
|
+
_emptyTexture: null,
|
|
186
|
+
_emptyCubeTexture: null,
|
|
187
|
+
_emptyTexture3D: null,
|
|
188
|
+
_emptyTexture2DArray: null,
|
|
189
|
+
_dimensionsObject: null,
|
|
190
|
+
_viewportCached: { x: 0, y: 0, z: 0, w: 0 },
|
|
191
|
+
_activeRequests: [],
|
|
192
|
+
_performanceMonitor: null,
|
|
193
|
+
_fps: 60,
|
|
194
|
+
_deltaTime: 0,
|
|
195
|
+
_pointerLockRequested: false,
|
|
196
|
+
_deterministicLockstep: false,
|
|
197
|
+
_lockstepMaxSteps: 4,
|
|
198
|
+
_timeStep: 1 / 60,
|
|
199
|
+
_renderPassNames: ["main"],
|
|
200
|
+
_cachedStencilBuffer: false,
|
|
201
|
+
_cachedStencilFunction: -1,
|
|
202
|
+
_cachedStencilMask: -1,
|
|
203
|
+
_cachedStencilOperationPass: -1,
|
|
204
|
+
_cachedStencilOperationFail: -1,
|
|
205
|
+
_cachedStencilOperationDepthFail: -1,
|
|
206
|
+
_cachedStencilReference: -1,
|
|
207
|
+
};
|
|
208
|
+
// TODO is getOwnPropertyDescriptors supported in native? if it doesn't we will need to use getOwnPropertyNames
|
|
209
|
+
// Extend the engine state with the overrides
|
|
210
|
+
Object.defineProperties(engineState, Object.getOwnPropertyDescriptors(overrides));
|
|
211
|
+
// TODO - this actually prevents tree shaking. Should be done by the dev, apart from the most basic functions.
|
|
212
|
+
// populateBaseModule(engineState);
|
|
213
|
+
EngineStore.Instances.push(engineState);
|
|
214
|
+
augmentEngineStateWithExtensions(engineState);
|
|
215
|
+
return engineState;
|
|
216
|
+
}
|
|
217
|
+
export function getPerformanceMonitor(engineState) {
|
|
218
|
+
if (!engineState._performanceMonitor) {
|
|
219
|
+
engineState._performanceMonitor = new PerformanceMonitor();
|
|
220
|
+
}
|
|
221
|
+
return engineState._performanceMonitor;
|
|
222
|
+
}
|
|
223
|
+
export function getFps(engineState) {
|
|
224
|
+
return engineState._fps;
|
|
225
|
+
}
|
|
226
|
+
export function getDeltaTime(engineState) {
|
|
227
|
+
return engineState._deltaTime;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Force a specific size of the canvas
|
|
231
|
+
* @param engineState defines the engine state
|
|
232
|
+
* @param width defines the new canvas' width
|
|
233
|
+
* @param height defines the new canvas' height
|
|
234
|
+
* @param forceSetSize true to force setting the sizes of the underlying canvas
|
|
235
|
+
* @returns true if the size was changed
|
|
236
|
+
*/
|
|
237
|
+
export function setSizeBase(engineState, width, height, forceSetSize = false) {
|
|
238
|
+
const fes = engineState;
|
|
239
|
+
if (!fes._renderingCanvas) {
|
|
240
|
+
return false;
|
|
241
|
+
}
|
|
242
|
+
width = width | 0;
|
|
243
|
+
height = height | 0;
|
|
244
|
+
if (!forceSetSize && fes._renderingCanvas.width === width && fes._renderingCanvas.height === height) {
|
|
245
|
+
return false;
|
|
246
|
+
}
|
|
247
|
+
fes._renderingCanvas.width = width;
|
|
248
|
+
fes._renderingCanvas.height = height;
|
|
249
|
+
return true;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Gets the default empty texture
|
|
253
|
+
* @param engineState defines the engine state
|
|
254
|
+
* @param createRawTexture defines a function used to create the raw texture from the rawTexture extension
|
|
255
|
+
* @returns the default empty texture
|
|
256
|
+
*/
|
|
257
|
+
export function getEmptyTexture(engineState, { createRawTexture }) {
|
|
258
|
+
if (!engineState._emptyTexture) {
|
|
259
|
+
engineState._emptyTexture = createRawTexture(engineState, new Uint8Array(4), 1, 1, 5 /* 5 */, false, false, 1 /* 1 */);
|
|
260
|
+
}
|
|
261
|
+
return engineState._emptyTexture;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Gets the default empty 3D texture
|
|
265
|
+
* @param engineState defines the engine state
|
|
266
|
+
* @param createRawTexture3D defines a function used to create the raw texture from the rawTexture extension
|
|
267
|
+
* @returns the default empty 3D texture
|
|
268
|
+
*/
|
|
269
|
+
export function getEmptyTexture3D(engineState, { createRawTexture3D }) {
|
|
270
|
+
if (!engineState._emptyTexture3D) {
|
|
271
|
+
engineState._emptyTexture3D = createRawTexture3D(engineState, new Uint8Array(4), 1, 1, 1, 5 /* 5 */, false, false, 1 /* 1 */);
|
|
272
|
+
}
|
|
273
|
+
return engineState._emptyTexture3D;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Gets the default empty texture 2D
|
|
277
|
+
* @param engineState defines the engine state
|
|
278
|
+
* @param createRawCubeTexture defines a function used to create the raw texture 2D from the rawTexture extension
|
|
279
|
+
* @returns the default empty texture 2D
|
|
280
|
+
*/
|
|
281
|
+
export function getEmptyTexture2DArray(engineState, { createRawTexture2DArray }) {
|
|
282
|
+
if (!engineState._emptyTexture2DArray) {
|
|
283
|
+
engineState._emptyTexture2DArray = createRawTexture2DArray(engineState, new Uint8Array(4), 1, 1, 1, 5 /* 5 */, false, false, 1 /* 1 */);
|
|
284
|
+
}
|
|
285
|
+
return engineState._emptyTexture2DArray;
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Gets the default empty cube texture
|
|
289
|
+
* @param engineState defines the engine state
|
|
290
|
+
* @param createRawCubeTexture defines a function used to create the raw cube texture from the rawTexture extension
|
|
291
|
+
* @returns the default empty cube texture
|
|
292
|
+
*/
|
|
293
|
+
export function getEmptyCubeTexture(engineState, { createRawCubeTexture }) {
|
|
294
|
+
if (!engineState._emptyCubeTexture) {
|
|
295
|
+
const faceData = new Uint8Array(4);
|
|
296
|
+
const cubeData = [faceData, faceData, faceData, faceData, faceData, faceData];
|
|
297
|
+
engineState._emptyCubeTexture = createRawCubeTexture(engineState, cubeData, 1, 5 /* 5 */, 0 /* 0 */, false, false, 1 /* 1 */);
|
|
298
|
+
}
|
|
299
|
+
return engineState._emptyCubeTexture;
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Gets a boolean indicating if all created effects are ready
|
|
303
|
+
* @param engineState defines the engine state
|
|
304
|
+
* @returns true if all effects are ready
|
|
305
|
+
*/
|
|
306
|
+
export function areAllEffectsReady(engineState) {
|
|
307
|
+
const fes = engineState;
|
|
308
|
+
for (const key in fes._compiledEffects) {
|
|
309
|
+
const effect = fes._compiledEffects[key];
|
|
310
|
+
if (!effect.isReady()) {
|
|
311
|
+
return false;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
return true;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* @internal
|
|
318
|
+
*/
|
|
319
|
+
export function _rebuildBuffers(engineState) {
|
|
320
|
+
const fes = engineState;
|
|
321
|
+
// from Engine
|
|
322
|
+
// Index / Vertex
|
|
323
|
+
for (const scene of engineState.scenes) {
|
|
324
|
+
scene.resetCachedMaterial();
|
|
325
|
+
scene._rebuildGeometries();
|
|
326
|
+
scene._rebuildTextures();
|
|
327
|
+
}
|
|
328
|
+
for (const scene of fes._virtualScenes) {
|
|
329
|
+
scene.resetCachedMaterial();
|
|
330
|
+
scene._rebuildGeometries();
|
|
331
|
+
scene._rebuildTextures();
|
|
332
|
+
}
|
|
333
|
+
// From ThinEngine
|
|
334
|
+
// Uniforms
|
|
335
|
+
for (const uniformBuffer of fes._uniformBuffers) {
|
|
336
|
+
uniformBuffer._rebuild();
|
|
337
|
+
}
|
|
338
|
+
// Storage buffers
|
|
339
|
+
for (const storageBuffer of fes._storageBuffers) {
|
|
340
|
+
storageBuffer._rebuild();
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Reset the texture cache to empty state
|
|
345
|
+
*/
|
|
346
|
+
export function resetTextureCache(engineState) {
|
|
347
|
+
const fes = engineState;
|
|
348
|
+
for (const key in fes._boundTexturesCache) {
|
|
349
|
+
if (!Object.prototype.hasOwnProperty.call(fes._boundTexturesCache, key)) {
|
|
350
|
+
continue;
|
|
351
|
+
}
|
|
352
|
+
fes._boundTexturesCache[key] = null;
|
|
353
|
+
}
|
|
354
|
+
fes._currentTextureChannel = -1;
|
|
355
|
+
}
|
|
356
|
+
function _measureFps(engineState) {
|
|
357
|
+
const fes = engineState;
|
|
358
|
+
if (fes._performanceMonitor) {
|
|
359
|
+
fes._performanceMonitor.sampleFrame();
|
|
360
|
+
fes._fps = fes._performanceMonitor.averageFPS;
|
|
361
|
+
fes._deltaTime = fes._performanceMonitor.instantaneousFrameTime || 0;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Begin a new frame
|
|
366
|
+
*/
|
|
367
|
+
export function beginFrame(engineState) {
|
|
368
|
+
_measureFps(engineState);
|
|
369
|
+
engineState.onBeginFrameObservable.notifyObservers(engineState);
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* stop executing a render loop function and remove it from the execution array
|
|
373
|
+
* @param engineState defines the engine state
|
|
374
|
+
* @param renderFunction defines the function to be removed. If not provided all functions will be removed.
|
|
375
|
+
*/
|
|
376
|
+
export function stopRenderLoop(engineState, renderFunction, cancelFrame = _cancelFrame) {
|
|
377
|
+
const fes = engineState;
|
|
378
|
+
if (!renderFunction) {
|
|
379
|
+
fes._activeRenderLoops.length = 0;
|
|
380
|
+
cancelFrame(engineState);
|
|
381
|
+
return;
|
|
382
|
+
}
|
|
383
|
+
const index = fes._activeRenderLoops.indexOf(renderFunction);
|
|
384
|
+
if (index >= 0) {
|
|
385
|
+
fes._activeRenderLoops.splice(index, 1);
|
|
386
|
+
if (fes._activeRenderLoops.length == 0) {
|
|
387
|
+
cancelFrame(engineState);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Enf the current frame
|
|
393
|
+
*/
|
|
394
|
+
export function endFrame(engineState) {
|
|
395
|
+
const fes = engineState;
|
|
396
|
+
fes._frameId++;
|
|
397
|
+
}
|
|
398
|
+
// Just for thin engine reconstruction
|
|
399
|
+
export function _cancelFrameThin(engineState) {
|
|
400
|
+
const fes = engineState;
|
|
401
|
+
if (fes._renderingQueueLaunched && fes._frameHandler) {
|
|
402
|
+
fes._renderingQueueLaunched = false;
|
|
403
|
+
if (!IsWindowObjectExist()) {
|
|
404
|
+
if (typeof cancelAnimationFrame === "function") {
|
|
405
|
+
return cancelAnimationFrame(fes._frameHandler);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
else {
|
|
409
|
+
const { cancelAnimationFrame } = getHostWindow(fes) || window;
|
|
410
|
+
if (typeof cancelAnimationFrame === "function") {
|
|
411
|
+
return cancelAnimationFrame(fes._frameHandler);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
return clearTimeout(fes._frameHandler);
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
// Was protected, now passed as a variable
|
|
418
|
+
export function _cancelFrame(engineState) {
|
|
419
|
+
const fes = engineState;
|
|
420
|
+
if (fes._renderingQueueLaunched && fes.customAnimationFrameRequester) {
|
|
421
|
+
fes._renderingQueueLaunched = false;
|
|
422
|
+
const { cancelAnimationFrame } = fes.customAnimationFrameRequester;
|
|
423
|
+
if (cancelAnimationFrame) {
|
|
424
|
+
cancelAnimationFrame(fes.customAnimationFrameRequester.requestID);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
else if (fes._renderingQueueLaunched && fes._frameHandler) {
|
|
428
|
+
fes._renderingQueueLaunched = false;
|
|
429
|
+
if (!IsWindowObjectExist()) {
|
|
430
|
+
if (typeof cancelAnimationFrame === "function") {
|
|
431
|
+
return cancelAnimationFrame(fes._frameHandler);
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
else {
|
|
435
|
+
const { cancelAnimationFrame } = getHostWindow(engineState) || window;
|
|
436
|
+
if (typeof cancelAnimationFrame === "function") {
|
|
437
|
+
return cancelAnimationFrame(fes._frameHandler);
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
return clearTimeout(fes._frameHandler);
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Gets host window
|
|
445
|
+
* @returns the host window object
|
|
446
|
+
*/
|
|
447
|
+
export function getHostWindow(engineState) {
|
|
448
|
+
const fes = engineState;
|
|
449
|
+
if (!IsWindowObjectExist()) {
|
|
450
|
+
return null;
|
|
451
|
+
}
|
|
452
|
+
if (fes._renderingCanvas && fes._renderingCanvas.ownerDocument && fes._renderingCanvas.ownerDocument.defaultView) {
|
|
453
|
+
return fes._renderingCanvas.ownerDocument.defaultView;
|
|
454
|
+
}
|
|
455
|
+
return window;
|
|
456
|
+
}
|
|
457
|
+
/**
|
|
458
|
+
* Gets host document
|
|
459
|
+
* @returns the host document object
|
|
460
|
+
*/
|
|
461
|
+
export function getHostDocument(engineState) {
|
|
462
|
+
const fes = engineState;
|
|
463
|
+
if (fes._renderingCanvas && fes._renderingCanvas.ownerDocument) {
|
|
464
|
+
return fes._renderingCanvas.ownerDocument;
|
|
465
|
+
}
|
|
466
|
+
return IsDocumentAvailable() ? document : null;
|
|
467
|
+
}
|
|
468
|
+
/**
|
|
469
|
+
* Gets the current render width
|
|
470
|
+
* @param engineState defines the engine state
|
|
471
|
+
* @param useScreen defines if screen size must be used (or the current render target if any)
|
|
472
|
+
* @returns a number defining the current render width
|
|
473
|
+
*/
|
|
474
|
+
export function getRenderWidth(engineState, useScreen = false) {
|
|
475
|
+
const fes = engineState;
|
|
476
|
+
if (!useScreen && fes._currentRenderTarget) {
|
|
477
|
+
return fes._currentRenderTarget.width;
|
|
478
|
+
}
|
|
479
|
+
return fes._dimensionsObject ? fes._dimensionsObject.width : 0;
|
|
480
|
+
}
|
|
481
|
+
/**
|
|
482
|
+
* Gets the current render height
|
|
483
|
+
* @param engineState defines the engine state
|
|
484
|
+
* @param useScreen defines if screen size must be used (or the current render target if any)
|
|
485
|
+
* @returns a number defining the current render height
|
|
486
|
+
*/
|
|
487
|
+
export function getRenderHeight(engineState, useScreen = false) {
|
|
488
|
+
const fes = engineState;
|
|
489
|
+
if (!useScreen && fes._currentRenderTarget) {
|
|
490
|
+
return fes._currentRenderTarget.height;
|
|
491
|
+
}
|
|
492
|
+
return fes._dimensionsObject ? fes._dimensionsObject.height : 0;
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* @internal
|
|
496
|
+
*/
|
|
497
|
+
export function _viewport(engineState, x, y, width, height) {
|
|
498
|
+
const fes = engineState;
|
|
499
|
+
fes._viewportCached.x = x;
|
|
500
|
+
fes._viewportCached.y = y;
|
|
501
|
+
fes._viewportCached.z = width;
|
|
502
|
+
fes._viewportCached.w = height;
|
|
503
|
+
}
|
|
504
|
+
/** @internal */
|
|
505
|
+
export function _getGlobalDefines(engineState, defines) {
|
|
506
|
+
if (defines) {
|
|
507
|
+
if (engineState.isNDCHalfZRange) {
|
|
508
|
+
defines["IS_NDC_HALF_ZRANGE"] = "";
|
|
509
|
+
}
|
|
510
|
+
else {
|
|
511
|
+
delete defines["IS_NDC_HALF_ZRANGE"];
|
|
512
|
+
}
|
|
513
|
+
if (engineState.useReverseDepthBuffer) {
|
|
514
|
+
defines["USE_REVERSE_DEPTHBUFFER"] = "";
|
|
515
|
+
}
|
|
516
|
+
else {
|
|
517
|
+
delete defines["USE_REVERSE_DEPTHBUFFER"];
|
|
518
|
+
}
|
|
519
|
+
if (engineState.useExactSrgbConversions) {
|
|
520
|
+
defines["USE_EXACT_SRGB_CONVERSIONS"] = "";
|
|
521
|
+
}
|
|
522
|
+
else {
|
|
523
|
+
delete defines["USE_EXACT_SRGB_CONVERSIONS"];
|
|
524
|
+
}
|
|
525
|
+
return;
|
|
526
|
+
}
|
|
527
|
+
else {
|
|
528
|
+
let s = "";
|
|
529
|
+
if (engineState.isNDCHalfZRange) {
|
|
530
|
+
s += "#define IS_NDC_HALF_ZRANGE";
|
|
531
|
+
}
|
|
532
|
+
if (engineState.useReverseDepthBuffer) {
|
|
533
|
+
if (s) {
|
|
534
|
+
s += "\n";
|
|
535
|
+
}
|
|
536
|
+
s += "#define USE_REVERSE_DEPTHBUFFER";
|
|
537
|
+
}
|
|
538
|
+
if (engineState.useExactSrgbConversions) {
|
|
539
|
+
if (s) {
|
|
540
|
+
s += "\n";
|
|
541
|
+
}
|
|
542
|
+
s += "#define USE_EXACT_SRGB_CONVERSIONS";
|
|
543
|
+
}
|
|
544
|
+
return s;
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
/**
|
|
548
|
+
* Clears the list of texture accessible through engine.
|
|
549
|
+
* This can help preventing texture load conflict due to name collision.
|
|
550
|
+
*/
|
|
551
|
+
export function clearInternalTexturesCache(engineState) {
|
|
552
|
+
engineState._internalTexturesCache.length = 0;
|
|
553
|
+
}
|
|
554
|
+
/** @internal */
|
|
555
|
+
export function _prepareWorkingCanvas(engineState) {
|
|
556
|
+
const fes = engineState;
|
|
557
|
+
if (fes._workingCanvas) {
|
|
558
|
+
return;
|
|
559
|
+
}
|
|
560
|
+
fes._workingCanvas = _CreateCanvas(1, 1);
|
|
561
|
+
const context = fes._workingCanvas.getContext("2d");
|
|
562
|
+
if (context) {
|
|
563
|
+
fes._workingContext = context;
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
export function _setupMobileChecks(engineState) {
|
|
567
|
+
const fes = engineState;
|
|
568
|
+
if (!(navigator && navigator.userAgent)) {
|
|
569
|
+
return;
|
|
570
|
+
}
|
|
571
|
+
// Function to check if running on mobile device
|
|
572
|
+
fes._checkForMobile = () => {
|
|
573
|
+
const currentUA = navigator.userAgent;
|
|
574
|
+
hostInformation.isMobile =
|
|
575
|
+
currentUA.indexOf("Mobile") !== -1 ||
|
|
576
|
+
// Needed for iOS 13+ detection on iPad (inspired by solution from https://stackoverflow.com/questions/9038625/detect-if-device-is-ios)
|
|
577
|
+
(currentUA.indexOf("Mac") !== -1 && IsDocumentAvailable() && "ontouchend" in document);
|
|
578
|
+
};
|
|
579
|
+
// Set initial isMobile value
|
|
580
|
+
fes._checkForMobile();
|
|
581
|
+
// Set up event listener to check when window is resized (used to get emulator activation to work properly)
|
|
582
|
+
if (IsWindowObjectExist()) {
|
|
583
|
+
window.addEventListener("resize", fes._checkForMobile);
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
/**
|
|
587
|
+
* Dispose and release all associated resources
|
|
588
|
+
*/
|
|
589
|
+
export function dispose(engineState) {
|
|
590
|
+
const fes = engineState;
|
|
591
|
+
fes._isDisposed = true;
|
|
592
|
+
stopRenderLoop(engineState);
|
|
593
|
+
hideLoadingUI(engineState);
|
|
594
|
+
engineState.onNewSceneAddedObservable.clear();
|
|
595
|
+
// Release postProcesses
|
|
596
|
+
while (engineState.postProcesses.length) {
|
|
597
|
+
engineState.postProcesses[0].dispose();
|
|
598
|
+
}
|
|
599
|
+
// Release scenes
|
|
600
|
+
while (fes.scenes.length) {
|
|
601
|
+
fes.scenes[0].dispose();
|
|
602
|
+
}
|
|
603
|
+
while (fes._virtualScenes.length) {
|
|
604
|
+
fes._virtualScenes[0].dispose();
|
|
605
|
+
}
|
|
606
|
+
// TODO Release audio engine
|
|
607
|
+
// if (EngineStore.Instances.length === 1 && Engine.audioEngine) {
|
|
608
|
+
// Engine.audioEngine.dispose();
|
|
609
|
+
// Engine.audioEngine = null;
|
|
610
|
+
// }
|
|
611
|
+
// Clear observables
|
|
612
|
+
if (engineState.onBeforeTextureInitObservable) {
|
|
613
|
+
engineState.onBeforeTextureInitObservable.clear();
|
|
614
|
+
}
|
|
615
|
+
if (IsWindowObjectExist()) {
|
|
616
|
+
if (fes._checkForMobile) {
|
|
617
|
+
window.removeEventListener("resize", fes._checkForMobile);
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
// Events
|
|
621
|
+
const hostWindow = getHostWindow(engineState); // it calls IsWindowObjectExist()
|
|
622
|
+
if (hostWindow && typeof hostWindow.removeEventListener === "function") {
|
|
623
|
+
fes._onBlur && hostWindow.removeEventListener("blur", fes._onBlur);
|
|
624
|
+
fes._onFocus && hostWindow.removeEventListener("focus", fes._onFocus);
|
|
625
|
+
}
|
|
626
|
+
if (fes._renderingCanvas) {
|
|
627
|
+
fes._onCanvasFocus && fes._renderingCanvas.removeEventListener("focus", fes._onCanvasFocus);
|
|
628
|
+
fes._onCanvasBlur && fes._renderingCanvas.removeEventListener("blur", fes._onCanvasBlur);
|
|
629
|
+
fes._onCanvasPointerOut && fes._renderingCanvas.removeEventListener("pointerout", fes._onCanvasPointerOut);
|
|
630
|
+
fes._onCanvasContextMenu && fes._renderingCanvas.removeEventListener("contextmenu", fes._onCanvasContextMenu);
|
|
631
|
+
}
|
|
632
|
+
if (IsDocumentAvailable()) {
|
|
633
|
+
if (fes._onFullscreenChange) {
|
|
634
|
+
document.removeEventListener("fullscreenchange", fes._onFullscreenChange);
|
|
635
|
+
document.removeEventListener("mozfullscreenchange", fes._onFullscreenChange);
|
|
636
|
+
document.removeEventListener("webkitfullscreenchange", fes._onFullscreenChange);
|
|
637
|
+
document.removeEventListener("msfullscreenchange", fes._onFullscreenChange);
|
|
638
|
+
}
|
|
639
|
+
if (fes._onPointerLockChange) {
|
|
640
|
+
document.removeEventListener("pointerlockchange", fes._onPointerLockChange);
|
|
641
|
+
document.removeEventListener("mspointerlockchange", fes._onPointerLockChange);
|
|
642
|
+
document.removeEventListener("mozpointerlockchange", fes._onPointerLockChange);
|
|
643
|
+
document.removeEventListener("webkitpointerlockchange", fes._onPointerLockChange);
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
fes._workingCanvas = null;
|
|
647
|
+
fes._workingContext = null;
|
|
648
|
+
fes._renderingCanvas = null;
|
|
649
|
+
Effect.ResetCache();
|
|
650
|
+
// Abort active requests
|
|
651
|
+
for (const request of fes._activeRequests) {
|
|
652
|
+
request.abort();
|
|
653
|
+
}
|
|
654
|
+
// Remove from Instances
|
|
655
|
+
const index = EngineStore.Instances.indexOf(engineState);
|
|
656
|
+
if (index >= 0) {
|
|
657
|
+
EngineStore.Instances.splice(index, 1);
|
|
658
|
+
}
|
|
659
|
+
// no more engines left in the engine store? Notify!
|
|
660
|
+
if (!EngineStore.Instances.length) {
|
|
661
|
+
EngineStore.OnEnginesDisposedObservable.notifyObservers(engineState);
|
|
662
|
+
}
|
|
663
|
+
// Observables
|
|
664
|
+
engineState.onResizeObservable.clear();
|
|
665
|
+
engineState.onCanvasBlurObservable.clear();
|
|
666
|
+
engineState.onCanvasFocusObservable.clear();
|
|
667
|
+
engineState.onCanvasPointerOutObservable.clear();
|
|
668
|
+
engineState.onBeginFrameObservable.clear();
|
|
669
|
+
engineState.onEndFrameObservable.clear();
|
|
670
|
+
fes.onDisposeObservable.notifyObservers(fes);
|
|
671
|
+
fes.onDisposeObservable.clear();
|
|
672
|
+
}
|
|
673
|
+
// Loading screen
|
|
674
|
+
/**
|
|
675
|
+
* Display the loading screen
|
|
676
|
+
* @see https://doc.babylonjs.com/features/featuresDeepDive/scene/customLoadingScreen
|
|
677
|
+
*/
|
|
678
|
+
export function displayLoadingUI(engineState) {
|
|
679
|
+
if (!IsWindowObjectExist()) {
|
|
680
|
+
return;
|
|
681
|
+
}
|
|
682
|
+
const loadingScreen = getLoadingScreen(engineState);
|
|
683
|
+
if (loadingScreen) {
|
|
684
|
+
loadingScreen.displayLoadingUI();
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
/**
|
|
688
|
+
* Hide the loading screen
|
|
689
|
+
* @see https://doc.babylonjs.com/features/featuresDeepDive/scene/customLoadingScreen
|
|
690
|
+
*/
|
|
691
|
+
export function hideLoadingUI(engineState) {
|
|
692
|
+
if (!IsWindowObjectExist()) {
|
|
693
|
+
return;
|
|
694
|
+
}
|
|
695
|
+
const loadingScreen = engineState._loadingScreen;
|
|
696
|
+
if (loadingScreen) {
|
|
697
|
+
loadingScreen.hideLoadingUI();
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
/**
|
|
701
|
+
* Gets the current loading screen object
|
|
702
|
+
* @see https://doc.babylonjs.com/features/featuresDeepDive/scene/customLoadingScreen
|
|
703
|
+
*/
|
|
704
|
+
export function getLoadingScreen(engineState) {
|
|
705
|
+
var _a;
|
|
706
|
+
const fes = engineState;
|
|
707
|
+
if (!fes._loadingScreen && fes._renderingCanvas) {
|
|
708
|
+
fes._loadingScreen = (_a = EngineStore.DefaultLoadingScreenFactory) === null || _a === void 0 ? void 0 : _a.call(EngineStore, fes._renderingCanvas);
|
|
709
|
+
}
|
|
710
|
+
return fes._loadingScreen;
|
|
711
|
+
}
|
|
712
|
+
/**
|
|
713
|
+
* Sets the current loading screen object
|
|
714
|
+
* @see https://doc.babylonjs.com/features/featuresDeepDive/scene/customLoadingScreen
|
|
715
|
+
*/
|
|
716
|
+
export function setLoadingScreen(engineState, loadingScreen) {
|
|
717
|
+
engineState._loadingScreen = loadingScreen;
|
|
718
|
+
}
|
|
719
|
+
/**
|
|
720
|
+
* creates and returns a new video element
|
|
721
|
+
* @param constraints video constraints
|
|
722
|
+
* @returns video element
|
|
723
|
+
*/
|
|
724
|
+
export function createVideoElement(_engineState, _constraints) {
|
|
725
|
+
return document.createElement("video");
|
|
726
|
+
}
|
|
727
|
+
/**
|
|
728
|
+
* Gets the object containing all engine capabilities
|
|
729
|
+
* @param engineState defines the engine state
|
|
730
|
+
* @returns the EngineCapabilities object
|
|
731
|
+
*/
|
|
732
|
+
export function getCaps(engineState) {
|
|
733
|
+
const fes = engineState;
|
|
734
|
+
return fes._caps;
|
|
735
|
+
}
|
|
736
|
+
// From Engine
|
|
737
|
+
// createImageBitmap is just a proxy to the browser's native implementation
|
|
738
|
+
// Should not be implemented
|
|
739
|
+
/**
|
|
740
|
+
* Shared initialization across engines types.
|
|
741
|
+
* @param canvas The canvas associated with this instance of the engine.
|
|
742
|
+
*/
|
|
743
|
+
export function _sharedInit(engineState, canvas) {
|
|
744
|
+
const fes = engineState;
|
|
745
|
+
// moved from thinEngine
|
|
746
|
+
fes._renderingCanvas = canvas;
|
|
747
|
+
fes._onCanvasFocus = () => {
|
|
748
|
+
fes.onCanvasFocusObservable.notifyObservers(engineState);
|
|
749
|
+
};
|
|
750
|
+
fes._onCanvasBlur = () => {
|
|
751
|
+
fes.onCanvasBlurObservable.notifyObservers(engineState);
|
|
752
|
+
};
|
|
753
|
+
fes._onCanvasContextMenu = (evt) => {
|
|
754
|
+
if (fes.disableContextMenu) {
|
|
755
|
+
evt.preventDefault();
|
|
756
|
+
}
|
|
757
|
+
};
|
|
758
|
+
canvas.addEventListener("focus", fes._onCanvasFocus);
|
|
759
|
+
canvas.addEventListener("blur", fes._onCanvasBlur);
|
|
760
|
+
canvas.addEventListener("contextmenu", fes._onCanvasContextMenu);
|
|
761
|
+
const performanceMonitor = getPerformanceMonitor(engineState);
|
|
762
|
+
fes._onBlur = () => {
|
|
763
|
+
if (fes.disablePerformanceMonitorInBackground) {
|
|
764
|
+
performanceMonitor.disable();
|
|
765
|
+
}
|
|
766
|
+
fes._windowIsBackground = true;
|
|
767
|
+
};
|
|
768
|
+
fes._onFocus = () => {
|
|
769
|
+
if (fes.disablePerformanceMonitorInBackground) {
|
|
770
|
+
performanceMonitor.enable();
|
|
771
|
+
}
|
|
772
|
+
fes._windowIsBackground = false;
|
|
773
|
+
};
|
|
774
|
+
fes._onCanvasPointerOut = (ev) => {
|
|
775
|
+
// Check that the element at the point of the pointer out isn't the canvas and if it isn't, notify observers
|
|
776
|
+
// Note: This is a workaround for a bug with Safari
|
|
777
|
+
if (document.elementFromPoint(ev.clientX, ev.clientY) !== canvas) {
|
|
778
|
+
fes.onCanvasPointerOutObservable.notifyObservers(ev);
|
|
779
|
+
}
|
|
780
|
+
};
|
|
781
|
+
const hostWindow = getHostWindow(engineState); // it calls IsWindowObjectExist()
|
|
782
|
+
if (hostWindow && typeof hostWindow.addEventListener === "function") {
|
|
783
|
+
hostWindow.addEventListener("blur", fes._onBlur);
|
|
784
|
+
hostWindow.addEventListener("focus", fes._onFocus);
|
|
785
|
+
}
|
|
786
|
+
canvas.addEventListener("pointerout", fes._onCanvasPointerOut);
|
|
787
|
+
if (!fes._creationOptions.doNotHandleTouchAction) {
|
|
788
|
+
_disableTouchAction(fes);
|
|
789
|
+
}
|
|
790
|
+
// Create Audio Engine if needed.
|
|
791
|
+
// if (!Engine.audioEngine && fes._creationOptions.audioEngine && Engine.AudioEngineFactory) {
|
|
792
|
+
// Engine.audioEngine = Engine.AudioEngineFactory(this.getRenderingCanvas(), this.getAudioContext(), this.getAudioDestination());
|
|
793
|
+
// }
|
|
794
|
+
if (IsDocumentAvailable()) {
|
|
795
|
+
// Fullscreen
|
|
796
|
+
fes._onFullscreenChange = () => {
|
|
797
|
+
fes.isFullscreen = !!document.fullscreenElement;
|
|
798
|
+
// Pointer lock
|
|
799
|
+
if (fes.isFullscreen && fes._pointerLockRequested && canvas) {
|
|
800
|
+
_RequestPointerlock(canvas);
|
|
801
|
+
}
|
|
802
|
+
};
|
|
803
|
+
document.addEventListener("fullscreenchange", fes._onFullscreenChange, false);
|
|
804
|
+
document.addEventListener("webkitfullscreenchange", fes._onFullscreenChange, false);
|
|
805
|
+
// Pointer lock
|
|
806
|
+
fes._onPointerLockChange = () => {
|
|
807
|
+
fes.isPointerLock = document.pointerLockElement === canvas;
|
|
808
|
+
};
|
|
809
|
+
document.addEventListener("pointerlockchange", fes._onPointerLockChange, false);
|
|
810
|
+
document.addEventListener("webkitpointerlockchange", fes._onPointerLockChange, false);
|
|
811
|
+
}
|
|
812
|
+
// fes.enableOfflineSupport = Engine.OfflineProviderFactory !== undefined; // ESMTODO
|
|
813
|
+
fes._deterministicLockstep = !!fes._creationOptions.deterministicLockstep;
|
|
814
|
+
fes._lockstepMaxSteps = fes._creationOptions.lockstepMaxSteps || 0;
|
|
815
|
+
fes._timeStep = fes._creationOptions.timeStep || 1 / 60;
|
|
816
|
+
}
|
|
817
|
+
function _disableTouchAction(engineState) {
|
|
818
|
+
const fes = engineState;
|
|
819
|
+
if (!fes._renderingCanvas || !fes._renderingCanvas.setAttribute) {
|
|
820
|
+
return;
|
|
821
|
+
}
|
|
822
|
+
fes._renderingCanvas.setAttribute("touch-action", "none");
|
|
823
|
+
fes._renderingCanvas.style.touchAction = "none";
|
|
824
|
+
fes._renderingCanvas.style.webkitTapHighlightColor = "transparent";
|
|
825
|
+
}
|
|
826
|
+
/** @internal */
|
|
827
|
+
export function _verifyPointerLock(engineState) {
|
|
828
|
+
var _a, _b;
|
|
829
|
+
(_b = (_a = engineState)._onPointerLockChange) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
830
|
+
}
|
|
831
|
+
/**
|
|
832
|
+
* Gets the list of loaded textures
|
|
833
|
+
* @returns an array containing all loaded textures
|
|
834
|
+
*/
|
|
835
|
+
export function getLoadedTexturesCache(engineState) {
|
|
836
|
+
return engineState._internalTexturesCache;
|
|
837
|
+
}
|
|
838
|
+
/**
|
|
839
|
+
* Gets the HTML canvas attached with the current webGL context
|
|
840
|
+
* @returns a HTML canvas
|
|
841
|
+
*/
|
|
842
|
+
export function getRenderingCanvas(engineState) {
|
|
843
|
+
return engineState._renderingCanvas;
|
|
844
|
+
}
|
|
845
|
+
/**
|
|
846
|
+
* Gets the client rect of the HTML canvas attached with the current webGL context
|
|
847
|
+
* @returns a client rectangle
|
|
848
|
+
*/
|
|
849
|
+
export function getRenderingCanvasClientRect(engineState) {
|
|
850
|
+
const fes = engineState;
|
|
851
|
+
if (!fes._renderingCanvas) {
|
|
852
|
+
return null;
|
|
853
|
+
}
|
|
854
|
+
return fes._renderingCanvas.getBoundingClientRect();
|
|
855
|
+
}
|
|
856
|
+
/**
|
|
857
|
+
* Gets the HTML element used to attach event listeners
|
|
858
|
+
* @returns a HTML element
|
|
859
|
+
*/
|
|
860
|
+
export function getInputElement(engineState) {
|
|
861
|
+
return engineState._renderingCanvas;
|
|
862
|
+
}
|
|
863
|
+
/**
|
|
864
|
+
* Gets the client rect of the HTML element used for events
|
|
865
|
+
* @returns a client rectangle
|
|
866
|
+
*/
|
|
867
|
+
export function getInputElementClientRect(engineState) {
|
|
868
|
+
const fes = engineState;
|
|
869
|
+
if (!fes._renderingCanvas) {
|
|
870
|
+
return null;
|
|
871
|
+
}
|
|
872
|
+
return getInputElement(fes).getBoundingClientRect();
|
|
873
|
+
}
|
|
874
|
+
/**
|
|
875
|
+
* Gets a boolean indicating that the engine is running in deterministic lock step mode
|
|
876
|
+
* @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#deterministic-lockstep
|
|
877
|
+
* @returns true if engine is in deterministic lock step mode
|
|
878
|
+
*/
|
|
879
|
+
export function isDeterministicLockStep(engineState) {
|
|
880
|
+
return engineState._deterministicLockstep;
|
|
881
|
+
}
|
|
882
|
+
/**
|
|
883
|
+
* Gets the max steps when engine is running in deterministic lock step
|
|
884
|
+
* @see https://doc.babylonjs.com/features/featuresDeepDive/animation/advanced_animations#deterministic-lockstep
|
|
885
|
+
* @returns the max steps
|
|
886
|
+
*/
|
|
887
|
+
export function getLockstepMaxSteps(engineState) {
|
|
888
|
+
return engineState._lockstepMaxSteps;
|
|
889
|
+
}
|
|
890
|
+
/**
|
|
891
|
+
* Returns the time in ms between steps when using deterministic lock step.
|
|
892
|
+
* @returns time step in (ms)
|
|
893
|
+
*/
|
|
894
|
+
export function getTimeStep(engineState) {
|
|
895
|
+
return engineState._timeStep * 1000;
|
|
896
|
+
}
|
|
897
|
+
/** States */
|
|
898
|
+
/**
|
|
899
|
+
* Gets a boolean indicating if depth writing is enabled
|
|
900
|
+
* @returns the current depth writing state
|
|
901
|
+
*/
|
|
902
|
+
export function getDepthWrite(engineState) {
|
|
903
|
+
return engineState._depthCullingState.depthMask;
|
|
904
|
+
}
|
|
905
|
+
/**
|
|
906
|
+
* Enable or disable depth writing
|
|
907
|
+
* @param enable defines the state to set
|
|
908
|
+
*/
|
|
909
|
+
export function setDepthWrite(engineState, enable) {
|
|
910
|
+
engineState._depthCullingState.depthMask = enable;
|
|
911
|
+
}
|
|
912
|
+
/**
|
|
913
|
+
* Gets a boolean indicating if stencil buffer is enabled
|
|
914
|
+
* @returns the current stencil buffer state
|
|
915
|
+
*/
|
|
916
|
+
export function getStencilBuffer(engineState) {
|
|
917
|
+
return engineState._stencilState.stencilTest;
|
|
918
|
+
}
|
|
919
|
+
/**
|
|
920
|
+
* Enable or disable the stencil buffer
|
|
921
|
+
* @param enable defines if the stencil buffer must be enabled or disabled
|
|
922
|
+
*/
|
|
923
|
+
export function setStencilBuffer(engineState, enable) {
|
|
924
|
+
engineState._stencilState.stencilTest = enable;
|
|
925
|
+
}
|
|
926
|
+
/**
|
|
927
|
+
* Gets the current stencil mask
|
|
928
|
+
* @returns a number defining the new stencil mask to use
|
|
929
|
+
*/
|
|
930
|
+
export function getStencilMask(engineState) {
|
|
931
|
+
return engineState._stencilState.stencilMask;
|
|
932
|
+
}
|
|
933
|
+
/**
|
|
934
|
+
* Sets the current stencil mask
|
|
935
|
+
* @param mask defines the new stencil mask to use
|
|
936
|
+
*/
|
|
937
|
+
export function setStencilMask(engineState, mask) {
|
|
938
|
+
engineState._stencilState.stencilMask = mask;
|
|
939
|
+
}
|
|
940
|
+
/**
|
|
941
|
+
* Gets the current stencil function
|
|
942
|
+
* @returns a number defining the stencil function to use
|
|
943
|
+
*/
|
|
944
|
+
export function getStencilFunction(engineState) {
|
|
945
|
+
return engineState._stencilState.stencilFunc;
|
|
946
|
+
}
|
|
947
|
+
/**
|
|
948
|
+
* Gets the current stencil reference value
|
|
949
|
+
* @returns a number defining the stencil reference value to use
|
|
950
|
+
*/
|
|
951
|
+
export function getStencilFunctionReference(engineState) {
|
|
952
|
+
return engineState._stencilState.stencilFuncRef;
|
|
953
|
+
}
|
|
954
|
+
/**
|
|
955
|
+
* Gets the current stencil mask
|
|
956
|
+
* @returns a number defining the stencil mask to use
|
|
957
|
+
*/
|
|
958
|
+
export function getStencilFunctionMask(engineState) {
|
|
959
|
+
return engineState._stencilState.stencilFuncMask;
|
|
960
|
+
}
|
|
961
|
+
/**
|
|
962
|
+
* Sets the current stencil function
|
|
963
|
+
* @param stencilFunc defines the new stencil function to use
|
|
964
|
+
*/
|
|
965
|
+
export function setStencilFunction(engineState, stencilFunc) {
|
|
966
|
+
engineState._stencilState.stencilFunc = stencilFunc;
|
|
967
|
+
}
|
|
968
|
+
/**
|
|
969
|
+
* Sets the current stencil reference
|
|
970
|
+
* @param reference defines the new stencil reference to use
|
|
971
|
+
*/
|
|
972
|
+
export function setStencilFunctionReference(engineState, reference) {
|
|
973
|
+
engineState._stencilState.stencilFuncRef = reference;
|
|
974
|
+
}
|
|
975
|
+
/**
|
|
976
|
+
* Sets the current stencil mask
|
|
977
|
+
* @param mask defines the new stencil mask to use
|
|
978
|
+
*/
|
|
979
|
+
export function setStencilFunctionMask(engineState, mask) {
|
|
980
|
+
engineState._stencilState.stencilFuncMask = mask;
|
|
981
|
+
}
|
|
982
|
+
/**
|
|
983
|
+
* Gets the current stencil operation when stencil fails
|
|
984
|
+
* @returns a number defining stencil operation to use when stencil fails
|
|
985
|
+
*/
|
|
986
|
+
export function getStencilOperationFail(engineState) {
|
|
987
|
+
return engineState._stencilState.stencilOpStencilFail;
|
|
988
|
+
}
|
|
989
|
+
/**
|
|
990
|
+
* Gets the current stencil operation when depth fails
|
|
991
|
+
* @returns a number defining stencil operation to use when depth fails
|
|
992
|
+
*/
|
|
993
|
+
export function getStencilOperationDepthFail(engineState) {
|
|
994
|
+
return engineState._stencilState.stencilOpDepthFail;
|
|
995
|
+
}
|
|
996
|
+
/**
|
|
997
|
+
* Gets the current stencil operation when stencil passes
|
|
998
|
+
* @returns a number defining stencil operation to use when stencil passes
|
|
999
|
+
*/
|
|
1000
|
+
export function getStencilOperationPass(engineState) {
|
|
1001
|
+
return engineState._stencilState.stencilOpStencilDepthPass;
|
|
1002
|
+
}
|
|
1003
|
+
/**
|
|
1004
|
+
* Sets the stencil operation to use when stencil fails
|
|
1005
|
+
* @param operation defines the stencil operation to use when stencil fails
|
|
1006
|
+
*/
|
|
1007
|
+
export function setStencilOperationFail(engineState, operation) {
|
|
1008
|
+
engineState._stencilState.stencilOpStencilFail = operation;
|
|
1009
|
+
}
|
|
1010
|
+
/**
|
|
1011
|
+
* Sets the stencil operation to use when depth fails
|
|
1012
|
+
* @param operation defines the stencil operation to use when depth fails
|
|
1013
|
+
*/
|
|
1014
|
+
export function setStencilOperationDepthFail(engineState, operation) {
|
|
1015
|
+
engineState._stencilState.stencilOpDepthFail = operation;
|
|
1016
|
+
}
|
|
1017
|
+
/**
|
|
1018
|
+
* Sets the stencil operation to use when stencil passes
|
|
1019
|
+
* @param operation defines the stencil operation to use when stencil passes
|
|
1020
|
+
*/
|
|
1021
|
+
export function setStencilOperationPass(engineState, operation) {
|
|
1022
|
+
engineState._stencilState.stencilOpStencilDepthPass = operation;
|
|
1023
|
+
}
|
|
1024
|
+
/**
|
|
1025
|
+
* Gets the current depth function
|
|
1026
|
+
* @returns a number defining the depth function
|
|
1027
|
+
*/
|
|
1028
|
+
export function getDepthFunction(engineState) {
|
|
1029
|
+
return engineState._depthCullingState.depthFunc;
|
|
1030
|
+
}
|
|
1031
|
+
/**
|
|
1032
|
+
* Sets the current depth function
|
|
1033
|
+
* @param depthFunc defines the function to use
|
|
1034
|
+
*/
|
|
1035
|
+
export function setDepthFunction(engineState, depthFunc) {
|
|
1036
|
+
engineState._depthCullingState.depthFunc = depthFunc;
|
|
1037
|
+
}
|
|
1038
|
+
/**
|
|
1039
|
+
* Sets the current depth function to GREATER
|
|
1040
|
+
*/
|
|
1041
|
+
export function setDepthFunctionToGreater(engineState) {
|
|
1042
|
+
setDepthFunction(engineState, 516 /* 516 */);
|
|
1043
|
+
}
|
|
1044
|
+
/**
|
|
1045
|
+
* Sets the current depth function to GEQUAL
|
|
1046
|
+
*/
|
|
1047
|
+
export function setDepthFunctionToGreaterOrEqual(engineState) {
|
|
1048
|
+
setDepthFunction(engineState, 518 /* 518 */);
|
|
1049
|
+
}
|
|
1050
|
+
/**
|
|
1051
|
+
* Sets the current depth function to LESS
|
|
1052
|
+
*/
|
|
1053
|
+
export function setDepthFunctionToLess(engineState) {
|
|
1054
|
+
setDepthFunction(engineState, 513 /* 513 */);
|
|
1055
|
+
}
|
|
1056
|
+
/**
|
|
1057
|
+
* Sets the current depth function to LEQUAL
|
|
1058
|
+
*/
|
|
1059
|
+
export function setDepthFunctionToLessOrEqual(engineState) {
|
|
1060
|
+
setDepthFunction(engineState, 515 /* 515 */);
|
|
1061
|
+
}
|
|
1062
|
+
/**
|
|
1063
|
+
* Caches the state of the stencil buffer
|
|
1064
|
+
*/
|
|
1065
|
+
export function cacheStencilState(engineState) {
|
|
1066
|
+
const fes = engineState;
|
|
1067
|
+
fes._cachedStencilBuffer = getStencilBuffer(engineState);
|
|
1068
|
+
fes._cachedStencilFunction = getStencilFunction(engineState);
|
|
1069
|
+
fes._cachedStencilMask = getStencilMask(engineState);
|
|
1070
|
+
fes._cachedStencilOperationPass = getStencilOperationPass(engineState);
|
|
1071
|
+
fes._cachedStencilOperationFail = getStencilOperationFail(engineState);
|
|
1072
|
+
fes._cachedStencilOperationDepthFail = getStencilOperationDepthFail(engineState);
|
|
1073
|
+
fes._cachedStencilReference = getStencilFunctionReference(engineState);
|
|
1074
|
+
}
|
|
1075
|
+
/**
|
|
1076
|
+
* Restores the state of the stencil buffer
|
|
1077
|
+
*/
|
|
1078
|
+
export function restoreStencilState(engineState) {
|
|
1079
|
+
const fes = engineState;
|
|
1080
|
+
setStencilFunction(engineState, fes._cachedStencilFunction);
|
|
1081
|
+
setStencilMask(engineState, fes._cachedStencilMask);
|
|
1082
|
+
setStencilBuffer(engineState, fes._cachedStencilBuffer);
|
|
1083
|
+
setStencilOperationPass(engineState, fes._cachedStencilOperationPass);
|
|
1084
|
+
setStencilOperationFail(engineState, fes._cachedStencilOperationFail);
|
|
1085
|
+
setStencilOperationDepthFail(engineState, fes._cachedStencilOperationDepthFail);
|
|
1086
|
+
setStencilFunctionReference(engineState, fes._cachedStencilReference);
|
|
1087
|
+
}
|
|
1088
|
+
/**
|
|
1089
|
+
* Toggle full screen mode
|
|
1090
|
+
* @param requestPointerLock defines if a pointer lock should be requested from the user
|
|
1091
|
+
*/
|
|
1092
|
+
export function switchFullscreen(engineState, requestPointerLock) {
|
|
1093
|
+
if (engineState.isFullscreen) {
|
|
1094
|
+
exitFullscreen(engineState);
|
|
1095
|
+
}
|
|
1096
|
+
else {
|
|
1097
|
+
enterFullscreen(engineState, requestPointerLock);
|
|
1098
|
+
}
|
|
1099
|
+
}
|
|
1100
|
+
/**
|
|
1101
|
+
* Enters full screen mode
|
|
1102
|
+
* @param requestPointerLock defines if a pointer lock should be requested from the user
|
|
1103
|
+
*/
|
|
1104
|
+
export function enterFullscreen(engineState, requestPointerLock) {
|
|
1105
|
+
const fes = engineState;
|
|
1106
|
+
if (!engineState.isFullscreen) {
|
|
1107
|
+
fes._pointerLockRequested = requestPointerLock;
|
|
1108
|
+
if (fes._renderingCanvas) {
|
|
1109
|
+
_RequestFullscreen(fes._renderingCanvas);
|
|
1110
|
+
}
|
|
1111
|
+
}
|
|
1112
|
+
}
|
|
1113
|
+
/**
|
|
1114
|
+
* Exits full screen mode
|
|
1115
|
+
*/
|
|
1116
|
+
export function exitFullscreen(engineState) {
|
|
1117
|
+
if (engineState.isFullscreen) {
|
|
1118
|
+
_ExitFullscreen();
|
|
1119
|
+
}
|
|
1120
|
+
}
|
|
1121
|
+
/**
|
|
1122
|
+
* Enters Pointerlock mode
|
|
1123
|
+
*/
|
|
1124
|
+
export function enterPointerlock(engineState) {
|
|
1125
|
+
const fes = engineState;
|
|
1126
|
+
if (fes._renderingCanvas) {
|
|
1127
|
+
_RequestPointerlock(fes._renderingCanvas);
|
|
1128
|
+
}
|
|
1129
|
+
}
|
|
1130
|
+
/**
|
|
1131
|
+
* // TODO - this is probably not needed...
|
|
1132
|
+
* Exits Pointerlock mode
|
|
1133
|
+
*/
|
|
1134
|
+
export function exitPointerlock(engineState) {
|
|
1135
|
+
_ExitPointerlock();
|
|
1136
|
+
}
|
|
1137
|
+
/**
|
|
1138
|
+
* @internal
|
|
1139
|
+
*/
|
|
1140
|
+
export function _releaseRenderTargetWrapper(engineState, rtWrapper) {
|
|
1141
|
+
const fes = engineState;
|
|
1142
|
+
const index = fes._renderTargetWrapperCache.indexOf(rtWrapper);
|
|
1143
|
+
if (index !== -1) {
|
|
1144
|
+
fes._renderTargetWrapperCache.splice(index, 1);
|
|
1145
|
+
}
|
|
1146
|
+
// From Engine
|
|
1147
|
+
// Set output texture of post process to null if the framebuffer has been released/disposed
|
|
1148
|
+
fes.scenes.forEach((scene) => {
|
|
1149
|
+
scene.postProcesses.forEach((postProcess) => {
|
|
1150
|
+
if (postProcess._outputTexture === rtWrapper) {
|
|
1151
|
+
postProcess._outputTexture = null;
|
|
1152
|
+
}
|
|
1153
|
+
});
|
|
1154
|
+
scene.cameras.forEach((camera) => {
|
|
1155
|
+
camera._postProcesses.forEach((postProcess) => {
|
|
1156
|
+
if (postProcess) {
|
|
1157
|
+
if (postProcess._outputTexture === rtWrapper) {
|
|
1158
|
+
postProcess._outputTexture = null;
|
|
1159
|
+
}
|
|
1160
|
+
}
|
|
1161
|
+
});
|
|
1162
|
+
});
|
|
1163
|
+
});
|
|
1164
|
+
}
|
|
1165
|
+
let renderPassIdCounter = 0;
|
|
1166
|
+
/**
|
|
1167
|
+
* Gets the names of the render passes that are currently created
|
|
1168
|
+
* @returns list of the render pass names
|
|
1169
|
+
*/
|
|
1170
|
+
export function getRenderPassNames(engineState) {
|
|
1171
|
+
return engineState._renderPassNames;
|
|
1172
|
+
}
|
|
1173
|
+
/**
|
|
1174
|
+
* Gets the name of the current render pass
|
|
1175
|
+
* @returns name of the current render pass
|
|
1176
|
+
*/
|
|
1177
|
+
export function getCurrentRenderPassName(engineState) {
|
|
1178
|
+
return engineState._renderPassNames[engineState.currentRenderPassId];
|
|
1179
|
+
}
|
|
1180
|
+
/**
|
|
1181
|
+
* Creates a render pass id
|
|
1182
|
+
* @param name Name of the render pass (for debug purpose only)
|
|
1183
|
+
* @returns the id of the new render pass
|
|
1184
|
+
*/
|
|
1185
|
+
export function createRenderPassId(engineState, name) {
|
|
1186
|
+
// Note: render pass id == 0 is always for the main render pass
|
|
1187
|
+
const id = ++renderPassIdCounter;
|
|
1188
|
+
engineState._renderPassNames[id] = name !== null && name !== void 0 ? name : "NONAME";
|
|
1189
|
+
return id;
|
|
1190
|
+
}
|
|
1191
|
+
/**
|
|
1192
|
+
* Releases a render pass id
|
|
1193
|
+
* @param id id of the render pass to release
|
|
1194
|
+
*/
|
|
1195
|
+
export function releaseRenderPassId(engineState, id) {
|
|
1196
|
+
engineState._renderPassNames[id] = undefined;
|
|
1197
|
+
for (let s = 0; s < engineState.scenes.length; ++s) {
|
|
1198
|
+
const scene = engineState.scenes[s];
|
|
1199
|
+
for (let m = 0; m < scene.meshes.length; ++m) {
|
|
1200
|
+
const mesh = scene.meshes[m];
|
|
1201
|
+
if (mesh.subMeshes) {
|
|
1202
|
+
for (let b = 0; b < mesh.subMeshes.length; ++b) {
|
|
1203
|
+
const subMesh = mesh.subMeshes[b];
|
|
1204
|
+
subMesh._removeDrawWrapper(id);
|
|
1205
|
+
}
|
|
1206
|
+
}
|
|
1207
|
+
}
|
|
1208
|
+
}
|
|
1209
|
+
}
|
|
1210
|
+
/**
|
|
1211
|
+
* Enable or disable color writing
|
|
1212
|
+
* @param enable defines the state to set
|
|
1213
|
+
*/
|
|
1214
|
+
export function setColorWrite(engineState, enable) {
|
|
1215
|
+
const fes = engineState;
|
|
1216
|
+
if (enable !== fes._colorWrite) {
|
|
1217
|
+
fes._colorWriteChanged = true;
|
|
1218
|
+
fes._colorWrite = enable;
|
|
1219
|
+
}
|
|
1220
|
+
}
|
|
1221
|
+
/**
|
|
1222
|
+
* Gets a boolean indicating if color writing is enabled
|
|
1223
|
+
* @returns the current color writing state
|
|
1224
|
+
*/
|
|
1225
|
+
export function getColorWrite(engineState) {
|
|
1226
|
+
return engineState._colorWrite;
|
|
1227
|
+
}
|
|
1228
|
+
export function _renderFrame(engineState) {
|
|
1229
|
+
const fes = engineState;
|
|
1230
|
+
for (let index = 0; index < fes._activeRenderLoops.length; index++) {
|
|
1231
|
+
const renderFunction = fes._activeRenderLoops[index];
|
|
1232
|
+
renderFunction();
|
|
1233
|
+
}
|
|
1234
|
+
}
|
|
1235
|
+
//# sourceMappingURL=engine.base.js.map
|