@babylonjs/core 9.12.0 → 9.13.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/Behaviors/Cameras/interpolatingBehavior.d.ts +17 -2
- package/Behaviors/Cameras/interpolatingBehavior.js +53 -23
- package/Behaviors/Cameras/interpolatingBehavior.js.map +1 -1
- package/Cameras/Inputs/flyCameraKeyboardInput.js +9 -1
- package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
- package/Cameras/Inputs/flyCameraMouseInput.d.ts +2 -0
- package/Cameras/Inputs/flyCameraMouseInput.js +14 -2
- package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +25 -5
- package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraMouseInput.d.ts +14 -0
- package/Cameras/Inputs/freeCameraMouseInput.js +26 -4
- package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
- package/Cameras/Inputs/freeCameraTouchInput.js +16 -5
- package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
- package/Cameras/Inputs/geospatialCameraKeyboardInput.js +8 -1
- package/Cameras/Inputs/geospatialCameraKeyboardInput.js.map +1 -1
- package/Cameras/arcRotateCamera.pure.js.map +1 -1
- package/Cameras/flyCamera.pure.d.ts +8 -0
- package/Cameras/flyCamera.pure.js.map +1 -1
- package/Cameras/freeCamera.pure.d.ts +8 -0
- package/Cameras/freeCamera.pure.js.map +1 -1
- package/Cameras/geospatialCamera.pure.d.ts +30 -7
- package/Cameras/geospatialCamera.pure.js +39 -14
- package/Cameras/geospatialCamera.pure.js.map +1 -1
- package/Cameras/geospatialCameraMovement.js +2 -2
- package/Cameras/geospatialCameraMovement.js.map +1 -1
- package/Cameras/index.d.ts +1 -0
- package/Cameras/index.js +1 -0
- package/Cameras/index.js.map +1 -1
- package/Cameras/pure.d.ts +1 -0
- package/Cameras/pure.js +1 -0
- package/Cameras/pure.js.map +1 -1
- package/Cameras/targetCamera.pure.d.ts +25 -0
- package/Cameras/targetCamera.pure.js +83 -25
- package/Cameras/targetCamera.pure.js.map +1 -1
- package/Cameras/targetCameraMovement.d.ts +56 -0
- package/Cameras/targetCameraMovement.js +63 -0
- package/Cameras/targetCameraMovement.js.map +1 -0
- package/Collisions/gpuPicker.d.ts +111 -4
- package/Collisions/gpuPicker.js +673 -106
- package/Collisions/gpuPicker.js.map +1 -1
- package/Engines/AbstractEngine/abstractEngine.scissor.d.ts +18 -0
- package/Engines/AbstractEngine/abstractEngine.scissor.js +2 -0
- package/Engines/AbstractEngine/abstractEngine.scissor.js.map +1 -0
- package/Engines/Native/nativeInterfaces.d.ts +1 -0
- package/Engines/Native/nativeInterfaces.js.map +1 -1
- package/Engines/abstractEngine.pure.js +2 -2
- package/Engines/abstractEngine.pure.js.map +1 -1
- package/Engines/engine.d.ts +1 -0
- package/Engines/engine.js +1 -0
- package/Engines/engine.js.map +1 -1
- package/Engines/engine.pure.d.ts +0 -12
- package/Engines/engine.pure.js +0 -20
- package/Engines/engine.pure.js.map +1 -1
- package/Engines/nullEngine.pure.d.ts +66 -0
- package/Engines/nullEngine.pure.js +97 -0
- package/Engines/nullEngine.pure.js.map +1 -1
- package/Engines/pure.d.ts +1 -0
- package/Engines/pure.js +1 -0
- package/Engines/pure.js.map +1 -1
- package/Engines/thinEngine.scissor.d.ts +6 -0
- package/Engines/thinEngine.scissor.js +9 -0
- package/Engines/thinEngine.scissor.js.map +1 -0
- package/Engines/thinEngine.scissor.pure.d.ts +6 -0
- package/Engines/thinEngine.scissor.pure.js +24 -0
- package/Engines/thinEngine.scissor.pure.js.map +1 -0
- package/Engines/thinNativeEngine.d.ts +0 -1
- package/Engines/thinNativeEngine.js +0 -1
- package/Engines/thinNativeEngine.js.map +1 -1
- package/Engines/thinNativeEngine.pure.d.ts +3 -0
- package/Engines/thinNativeEngine.pure.js +50 -4
- package/Engines/thinNativeEngine.pure.js.map +1 -1
- package/Engines/webgpuEngine.pure.js.map +1 -1
- package/Loading/sceneLoader.d.ts +5 -1
- package/Loading/sceneLoader.js +298 -401
- package/Loading/sceneLoader.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.d.ts +15 -0
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +34 -1
- package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +9 -0
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +26 -2
- package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
- package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js +10 -3
- package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js.map +1 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +3 -1
- package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +18 -8
- package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +77 -1
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +243 -104
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.d.ts +39 -0
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js +308 -0
- package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js.map +1 -0
- package/Meshes/geometry.js +30 -15
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/mesh.pure.js +26 -14
- package/Meshes/mesh.pure.js.map +1 -1
- package/Misc/tools.pure.js +1 -1
- package/Misc/tools.pure.js.map +1 -1
- package/Shaders/ShadersInclude/gaussianSplatting.js +1 -0
- package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
- package/Shaders/gaussianSplatting.fragment.js +17 -1
- package/Shaders/gaussianSplatting.fragment.js.map +1 -1
- package/Shaders/gaussianSplatting.vertex.js +1 -1
- package/Shaders/gaussianSplatting.vertex.js.map +1 -1
- package/Shaders/gaussianSplattingDepth.vertex.js +1 -1
- package/Shaders/gaussianSplattingDepth.vertex.js.map +1 -1
- package/Shaders/greasedLine.vertex.js +19 -3
- package/Shaders/greasedLine.vertex.js.map +1 -1
- package/Shaders/picking.fragment.js +39 -3
- package/Shaders/picking.fragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +3 -1
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.fragment.js +14 -1
- package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.vertex.js +2 -2
- package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
- package/ShadersWGSL/gaussianSplattingDepth.vertex.js +2 -2
- package/ShadersWGSL/gaussianSplattingDepth.vertex.js.map +1 -1
- package/ShadersWGSL/picking.fragment.js +22 -1
- package/ShadersWGSL/picking.fragment.js.map +1 -1
- package/package.json +3 -2
- package/scene.pure.d.ts +12 -0
- package/scene.pure.js +36 -0
- package/scene.pure.js.map +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/** This file must only contain pure code and pure imports */
|
|
2
|
+
import { RegisterBufferAlign } from "../Buffers/buffer.align.pure.js";
|
|
2
3
|
import { InternalTexture } from "../Materials/Textures/internalTexture.js";
|
|
3
4
|
import { DataBuffer } from "../Buffers/dataBuffer.js";
|
|
4
5
|
import { Observable } from "../Misc/observable.pure.js";
|
|
@@ -132,6 +133,12 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
132
133
|
* @internal
|
|
133
134
|
*/
|
|
134
135
|
_initializeNativeEngine(adaptToDeviceRatio) {
|
|
136
|
+
// ThinNativeEngine relies on VertexBuffer.effective{Buffer,ByteOffset,ByteStride}
|
|
137
|
+
// (defined in Buffers/buffer.align.pure) to bind vertex attributes through
|
|
138
|
+
// recordVertexBuffer. Register the side effect here so the engine is usable
|
|
139
|
+
// on its own without callers having to remember to import the wrapper module.
|
|
140
|
+
// The registration is idempotent.
|
|
141
|
+
RegisterBufferAlign();
|
|
135
142
|
this._engine = new _native.Engine({
|
|
136
143
|
version: AbstractEngine.Version,
|
|
137
144
|
nonFloatVertexBuffers: true,
|
|
@@ -141,7 +148,8 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
141
148
|
this._frameStats = { gpuTimeNs: Number.NaN };
|
|
142
149
|
this._boundBuffersVertexArray = null;
|
|
143
150
|
this._currentDepthTest = _native.Engine.DEPTH_TEST_LEQUAL;
|
|
144
|
-
this.
|
|
151
|
+
this._depthTestEnabled = true;
|
|
152
|
+
this._stencilTest = false;
|
|
145
153
|
this._stencilMask = 255;
|
|
146
154
|
this._stencilFunc = 519;
|
|
147
155
|
this._stencilFuncRef = 0;
|
|
@@ -538,6 +546,7 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
538
546
|
return;
|
|
539
547
|
}
|
|
540
548
|
// Apply states
|
|
549
|
+
this._flushDepthTestState();
|
|
541
550
|
this._drawCalls.addCount(1, false);
|
|
542
551
|
if (instancesCount) {
|
|
543
552
|
this._commandBufferEncoder.startEncodingCommand(_native.Engine.COMMAND_DRAWINDEXEDINSTANCED);
|
|
@@ -566,6 +575,7 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
566
575
|
return;
|
|
567
576
|
}
|
|
568
577
|
// Apply states
|
|
578
|
+
this._flushDepthTestState();
|
|
569
579
|
this._drawCalls.addCount(1, false);
|
|
570
580
|
if (instancesCount) {
|
|
571
581
|
this._commandBufferEncoder.startEncodingCommand(_native.Engine.COMMAND_DRAWINSTANCED);
|
|
@@ -816,10 +826,28 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
816
826
|
* @param enable defines the state to set
|
|
817
827
|
*/
|
|
818
828
|
setDepthBuffer(enable) {
|
|
829
|
+
// Keep the shared depth-culling state in sync so that code paths which toggle
|
|
830
|
+
// depth testing through engine.depthCullingState.depthTest (for example
|
|
831
|
+
// EffectRenderer.applyEffectWrapper) are also honored on the native side. The
|
|
832
|
+
// native draw path does not go through the WebGL applyStates() flush, so the
|
|
833
|
+
// value is reconciled in _flushDepthTestState() right before each draw.
|
|
834
|
+
this._depthCullingState.depthTest = enable;
|
|
835
|
+
this._encodeDepthTest(enable);
|
|
836
|
+
}
|
|
837
|
+
_encodeDepthTest(enable) {
|
|
838
|
+
this._depthTestEnabled = enable;
|
|
819
839
|
this._commandBufferEncoder.startEncodingCommand(_native.Engine.COMMAND_SETDEPTHTEST);
|
|
820
840
|
this._commandBufferEncoder.encodeCommandArgAsUInt32(enable ? this._currentDepthTest : _native.Engine.DEPTH_TEST_ALWAYS);
|
|
821
841
|
this._commandBufferEncoder.finishEncodingCommand();
|
|
822
842
|
}
|
|
843
|
+
_flushDepthTestState() {
|
|
844
|
+
// Unlike the WebGL engine, the native engine does not call applyStates() before
|
|
845
|
+
// a draw, so depth-test toggles made directly on engine.depthCullingState are
|
|
846
|
+
// flushed here to match the cross-engine contract.
|
|
847
|
+
if (this._depthCullingState.depthTest !== this._depthTestEnabled) {
|
|
848
|
+
this._encodeDepthTest(this._depthCullingState.depthTest);
|
|
849
|
+
}
|
|
850
|
+
}
|
|
823
851
|
/**
|
|
824
852
|
* Gets a boolean indicating if depth writing is enabled
|
|
825
853
|
* @returns the current depth writing state
|
|
@@ -877,9 +905,13 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
877
905
|
break;
|
|
878
906
|
}
|
|
879
907
|
this._currentDepthTest = nativeDepthFunc;
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
908
|
+
// Route through _encodeDepthTest so the tracked _depthTestEnabled state stays in
|
|
909
|
+
// sync with the encoded command. Because COMMAND_SETDEPTHTEST conflates the
|
|
910
|
+
// compare function and the enable bit (DEPTH_TEST_ALWAYS == disabled), encoding
|
|
911
|
+
// the new function directly here would silently re-enable depth testing while
|
|
912
|
+
// depth testing is logically disabled; _encodeDepthTest honors the current
|
|
913
|
+
// depthCullingState.depthTest and only emits the new function when enabled.
|
|
914
|
+
this._encodeDepthTest(this._depthCullingState.depthTest);
|
|
883
915
|
}
|
|
884
916
|
/**
|
|
885
917
|
* Enable or disable depth writing
|
|
@@ -1555,6 +1587,13 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
1555
1587
|
internalTexture.baseHeight = this._engine.getTextureHeight(texture);
|
|
1556
1588
|
internalTexture.width = internalTexture.baseWidth;
|
|
1557
1589
|
internalTexture.height = internalTexture.baseHeight;
|
|
1590
|
+
if (this._engine.getTextureLayerCount) {
|
|
1591
|
+
const layerCount = this._engine.getTextureLayerCount(texture);
|
|
1592
|
+
if (layerCount > 1) {
|
|
1593
|
+
internalTexture.is2DArray = true;
|
|
1594
|
+
internalTexture.baseDepth = internalTexture.depth = layerCount;
|
|
1595
|
+
}
|
|
1596
|
+
}
|
|
1558
1597
|
internalTexture.isReady = true;
|
|
1559
1598
|
internalTexture.useMipMaps = hasMipMaps;
|
|
1560
1599
|
this.updateTextureSamplingMode(samplingMode, internalTexture);
|
|
@@ -1589,6 +1628,13 @@ export class ThinNativeEngine extends ThinEngine {
|
|
|
1589
1628
|
if (newWidth !== internalTexture.baseWidth || newHeight !== internalTexture.baseHeight) {
|
|
1590
1629
|
throw new Error(`updateWrappedNativeTexture: new handle dimensions (${newWidth}x${newHeight}) must match the wrapped texture's dimensions (${internalTexture.baseWidth}x${internalTexture.baseHeight}).`);
|
|
1591
1630
|
}
|
|
1631
|
+
if (this._engine.getTextureLayerCount) {
|
|
1632
|
+
const newLayerCount = this._engine.getTextureLayerCount(texture);
|
|
1633
|
+
const oldLayerCount = internalTexture.is2DArray ? internalTexture.depth : 1;
|
|
1634
|
+
if (newLayerCount !== oldLayerCount) {
|
|
1635
|
+
throw new Error(`updateWrappedNativeTexture: new handle layer count (${newLayerCount}) must match the wrapped texture's layer count (${oldLayerCount}).`);
|
|
1636
|
+
}
|
|
1637
|
+
}
|
|
1592
1638
|
// Pre-validate before mutating any state so a thrown precondition leaves the InternalTexture untouched.
|
|
1593
1639
|
// Note: rtWrapper.texture only returns _textures[0]; walk every attachment to catch the multi-RT case where
|
|
1594
1640
|
// the wrapped texture is at index > 0.
|