@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gaussianSplattingDepth.vertex.js","sourceRoot":"","sources":["../../../../dev/core/src/ShadersWGSL/gaussianSplattingDepth.vertex.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,MAAM,IAAI,GAAG,oCAAoC,CAAC;AAClD,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8Bb,CAAC;AACH,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;IACtC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAChD,CAAC;AACD,MAAM,QAAQ,GAAG,CAAC,uBAAuB,EAAE,sBAAsB,EAAE,qBAAqB,CAAC,CAAC;AAC1F,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;IACzB,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,WAAW,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;IAChE,CAAC;AACL,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../Engines/shaderStore\";\nimport { sceneUboDeclarationWGSL } from \"./ShadersInclude/sceneUboDeclaration\";\nimport { meshUboDeclarationWGSL } from \"./ShadersInclude/meshUboDeclaration\";\nimport { gaussianSplattingWGSL } from \"./ShadersInclude/gaussianSplatting\";\n\nconst name = \"gaussianSplattingDepthVertexShader\";\nconst shader = `#include<sceneUboDeclaration>\n#include<meshUboDeclaration>\nattribute splatIndex0: vec4f;attribute splatIndex1: vec4f;attribute splatIndex2: vec4f;attribute splatIndex3: vec4f;attribute position: vec3f;uniform invViewport: vec2f;uniform dataTextureSize: vec2f;uniform focal: vec2f;uniform kernelSize: f32;uniform alpha: f32;var covariancesATexture: texture_2d<f32>;var covariancesBTexture: texture_2d<f32>;var centersTexture: texture_2d<f32>;var colorsTexture: texture_2d<f32>;\n#if IS_COMPOUND\nuniform partWorld: array<mat4x4<f32>,MAX_PART_COUNT>;uniform partVisibility: array<f32,MAX_PART_COUNT>;var partIndicesTexture: texture_2d<f32>;\n#endif\nvarying vPosition: vec2f;varying vColor: vec4f;\n#ifdef DEPTH_RENDER\nuniform depthValues: vec2f;varying vDepthMetric: f32;\n#endif\n#include<gaussianSplatting>\n@vertex\nfn main(input : VertexInputs)->FragmentInputs {let splatIndex: f32=getSplatIndex(i32(vertexInputs.position.z+0.5),vertexInputs.splatIndex0,vertexInputs.splatIndex1,vertexInputs.splatIndex2,vertexInputs.splatIndex3);var splat: Splat=readSplat(splatIndex,uniforms.dataTextureSize);var covA: vec3f=splat.covA.xyz;var covB: vec3f=vec3f(splat.covA.w,splat.covB.xy);\n#if IS_COMPOUND\nlet splatWorld: mat4x4f=getPartWorld(splat.partIndex);\n#else\nlet splatWorld: mat4x4f=mesh.world;\n#endif\nlet worldPos: vec4f=splatWorld*vec4f(splat.center.xyz,1.0);vertexOutputs.vPosition=vertexInputs.position.xy;vertexOutputs.vColor=splat.color;vertexOutputs.vColor.w*=uniforms.alpha;\n#if IS_COMPOUND\nvertexOutputs.vColor.w*=uniforms.partVisibility[splat.partIndex];\n#endif\nvertexOutputs.position=gaussianSplatting(vertexInputs.position.xy,worldPos.xyz,vec2f(1.0,1.0),covA,covB,splatWorld,scene.view,scene.projection,uniforms.focal,uniforms.invViewport,uniforms.kernelSize);\n#ifdef DEPTH_RENDER\n#ifdef USE_REVERSE_DEPTHBUFFER\nvertexOutputs.vDepthMetric=((-vertexOutputs.position.z+uniforms.depthValues.x)/(uniforms.depthValues.y));\n#else\nvertexOutputs.vDepthMetric=((vertexOutputs.position.z+uniforms.depthValues.x)/(uniforms.depthValues.y));\n#endif\n#endif\n}`;\n// Sideeffect\nif (!ShaderStore.ShadersStoreWGSL[name]) {\n ShaderStore.ShadersStoreWGSL[name] = shader;\n}\nconst includes = [sceneUboDeclarationWGSL, meshUboDeclarationWGSL, gaussianSplattingWGSL];\nfor (const inc of includes) {\n if (!ShaderStore.IncludesShadersStoreWGSL[inc.name]) {\n ShaderStore.IncludesShadersStoreWGSL[inc.name] = inc.shader;\n }\n}\n\n/** @internal */\nexport const gaussianSplattingDepthVertexShaderWGSL = { name, shader };\n"]}
|
|
1
|
+
{"version":3,"file":"gaussianSplattingDepth.vertex.js","sourceRoot":"","sources":["../../../../dev/core/src/ShadersWGSL/gaussianSplattingDepth.vertex.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,MAAM,IAAI,GAAG,oCAAoC,CAAC;AAClD,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8Bb,CAAC;AACH,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;IACtC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAChD,CAAC;AACD,MAAM,QAAQ,GAAG,CAAC,uBAAuB,EAAE,sBAAsB,EAAE,qBAAqB,CAAC,CAAC;AAC1F,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;IACzB,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,WAAW,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;IAChE,CAAC;AACL,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,MAAM,sCAAsC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../Engines/shaderStore\";\nimport { sceneUboDeclarationWGSL } from \"./ShadersInclude/sceneUboDeclaration\";\nimport { meshUboDeclarationWGSL } from \"./ShadersInclude/meshUboDeclaration\";\nimport { gaussianSplattingWGSL } from \"./ShadersInclude/gaussianSplatting\";\n\nconst name = \"gaussianSplattingDepthVertexShader\";\nconst shader = `#include<sceneUboDeclaration>\n#include<meshUboDeclaration>\nattribute splatIndex0: vec4f;attribute splatIndex1: vec4f;attribute splatIndex2: vec4f;attribute splatIndex3: vec4f;attribute position: vec3f;uniform invViewport: vec2f;uniform dataTextureSize: vec2f;uniform focal: vec2f;uniform kernelSize: f32;uniform minPixelSize: f32;uniform alpha: f32;var covariancesATexture: texture_2d<f32>;var covariancesBTexture: texture_2d<f32>;var centersTexture: texture_2d<f32>;var colorsTexture: texture_2d<f32>;\n#if IS_COMPOUND\nuniform partWorld: array<mat4x4<f32>,MAX_PART_COUNT>;uniform partVisibility: array<f32,MAX_PART_COUNT>;var partIndicesTexture: texture_2d<f32>;\n#endif\nvarying vPosition: vec2f;varying vColor: vec4f;\n#ifdef DEPTH_RENDER\nuniform depthValues: vec2f;varying vDepthMetric: f32;\n#endif\n#include<gaussianSplatting>\n@vertex\nfn main(input : VertexInputs)->FragmentInputs {let splatIndex: f32=getSplatIndex(i32(vertexInputs.position.z+0.5),vertexInputs.splatIndex0,vertexInputs.splatIndex1,vertexInputs.splatIndex2,vertexInputs.splatIndex3);var splat: Splat=readSplat(splatIndex,uniforms.dataTextureSize);var covA: vec3f=splat.covA.xyz;var covB: vec3f=vec3f(splat.covA.w,splat.covB.xy);\n#if IS_COMPOUND\nlet splatWorld: mat4x4f=getPartWorld(splat.partIndex);\n#else\nlet splatWorld: mat4x4f=mesh.world;\n#endif\nlet worldPos: vec4f=splatWorld*vec4f(splat.center.xyz,1.0);vertexOutputs.vPosition=vertexInputs.position.xy;vertexOutputs.vColor=splat.color;vertexOutputs.vColor.w*=uniforms.alpha;\n#if IS_COMPOUND\nvertexOutputs.vColor.w*=uniforms.partVisibility[splat.partIndex];\n#endif\nvertexOutputs.position=gaussianSplatting(vertexInputs.position.xy,worldPos.xyz,vec2f(1.0,1.0),covA,covB,splatWorld,scene.view,scene.projection,uniforms.focal,uniforms.invViewport,uniforms.kernelSize,uniforms.minPixelSize);\n#ifdef DEPTH_RENDER\n#ifdef USE_REVERSE_DEPTHBUFFER\nvertexOutputs.vDepthMetric=((-vertexOutputs.position.z+uniforms.depthValues.x)/(uniforms.depthValues.y));\n#else\nvertexOutputs.vDepthMetric=((vertexOutputs.position.z+uniforms.depthValues.x)/(uniforms.depthValues.y));\n#endif\n#endif\n}`;\n// Sideeffect\nif (!ShaderStore.ShadersStoreWGSL[name]) {\n ShaderStore.ShadersStoreWGSL[name] = shader;\n}\nconst includes = [sceneUboDeclarationWGSL, meshUboDeclarationWGSL, gaussianSplattingWGSL];\nfor (const inc of includes) {\n if (!ShaderStore.IncludesShadersStoreWGSL[inc.name]) {\n ShaderStore.IncludesShadersStoreWGSL[inc.name] = inc.shader;\n }\n}\n\n/** @internal */\nexport const gaussianSplattingDepthVertexShaderWGSL = { name, shader };\n"]}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
// Do not edit.
|
|
2
2
|
import { ShaderStore } from "../Engines/shaderStore.js";
|
|
3
|
+
import { packingFunctionsWGSL } from "./ShadersInclude/packingFunctions.js";
|
|
3
4
|
const name = "pickingPixelShader";
|
|
4
5
|
const shader = `#if defined(INSTANCES)
|
|
5
6
|
flat varying vMeshID: f32;
|
|
6
7
|
#else
|
|
7
8
|
uniform meshID: f32;
|
|
8
9
|
#endif
|
|
10
|
+
#ifdef GPUPICKER_PACK_DEPTH
|
|
11
|
+
#include<packingFunctions>
|
|
12
|
+
#endif
|
|
9
13
|
@fragment
|
|
10
14
|
fn main(input: FragmentInputs)->FragmentOutputs {var id: i32;
|
|
11
15
|
#if defined(INSTANCES)
|
|
@@ -17,12 +21,29 @@ var color=vec3f(
|
|
|
17
21
|
f32((id>>16) & 0xFF),
|
|
18
22
|
f32((id>>8) & 0xFF),
|
|
19
23
|
f32(id & 0xFF),
|
|
20
|
-
)/255.0;
|
|
24
|
+
)/255.0;
|
|
25
|
+
#ifdef GPUPICKER_DEPTH
|
|
26
|
+
fragmentOutputs.fragData0=vec4f(color,1.0);
|
|
27
|
+
#ifdef GPUPICKER_PACK_DEPTH
|
|
28
|
+
fragmentOutputs.fragData1=pack(fragmentInputs.position.z);
|
|
29
|
+
#else
|
|
30
|
+
fragmentOutputs.fragData1=vec4f(fragmentInputs.position.z,0.0,0.0,1.0);
|
|
31
|
+
#endif
|
|
32
|
+
#else
|
|
33
|
+
fragmentOutputs.color=vec4f(color,1.0);
|
|
34
|
+
#endif
|
|
35
|
+
}
|
|
21
36
|
`;
|
|
22
37
|
// Sideeffect
|
|
23
38
|
if (!ShaderStore.ShadersStoreWGSL[name]) {
|
|
24
39
|
ShaderStore.ShadersStoreWGSL[name] = shader;
|
|
25
40
|
}
|
|
41
|
+
const includes = [packingFunctionsWGSL];
|
|
42
|
+
for (const inc of includes) {
|
|
43
|
+
if (!ShaderStore.IncludesShadersStoreWGSL[inc.name]) {
|
|
44
|
+
ShaderStore.IncludesShadersStoreWGSL[inc.name] = inc.shader;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
26
47
|
/** @internal */
|
|
27
48
|
export const pickingPixelShaderWGSL = { name, shader };
|
|
28
49
|
//# sourceMappingURL=picking.fragment.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picking.fragment.js","sourceRoot":"","sources":["../../../../dev/core/src/ShadersWGSL/picking.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"picking.fragment.js","sourceRoot":"","sources":["../../../../dev/core/src/ShadersWGSL/picking.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEzE,MAAM,IAAI,GAAG,oBAAoB,CAAC;AAClC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Bd,CAAC;AACF,aAAa;AACb,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;IACtC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AAChD,CAAC;AACD,MAAM,QAAQ,GAAG,CAAC,oBAAoB,CAAC,CAAC;AACxC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;IACzB,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,WAAW,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;IAChE,CAAC;AACL,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"../Engines/shaderStore\";\nimport { packingFunctionsWGSL } from \"./ShadersInclude/packingFunctions\";\n\nconst name = \"pickingPixelShader\";\nconst shader = `#if defined(INSTANCES)\nflat varying vMeshID: f32;\n#else\nuniform meshID: f32;\n#endif\n#ifdef GPUPICKER_PACK_DEPTH\n#include<packingFunctions>\n#endif\n@fragment\nfn main(input: FragmentInputs)->FragmentOutputs {var id: i32;\n#if defined(INSTANCES)\nid=i32(input.vMeshID);\n#else\nid=i32(uniforms.meshID);\n#endif\nvar color=vec3f(\nf32((id>>16) & 0xFF),\nf32((id>>8) & 0xFF),\nf32(id & 0xFF),\n)/255.0;\n#ifdef GPUPICKER_DEPTH\nfragmentOutputs.fragData0=vec4f(color,1.0);\n#ifdef GPUPICKER_PACK_DEPTH\nfragmentOutputs.fragData1=pack(fragmentInputs.position.z);\n#else\nfragmentOutputs.fragData1=vec4f(fragmentInputs.position.z,0.0,0.0,1.0);\n#endif\n#else\nfragmentOutputs.color=vec4f(color,1.0);\n#endif\n}\n`;\n// Sideeffect\nif (!ShaderStore.ShadersStoreWGSL[name]) {\n ShaderStore.ShadersStoreWGSL[name] = shader;\n}\nconst includes = [packingFunctionsWGSL];\nfor (const inc of includes) {\n if (!ShaderStore.IncludesShadersStoreWGSL[inc.name]) {\n ShaderStore.IncludesShadersStoreWGSL[inc.name] = inc.shader;\n }\n}\n\n/** @internal */\nexport const pickingPixelShaderWGSL = { name, shader };\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@babylonjs/core",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.13.0",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"module": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -136,6 +136,7 @@
|
|
|
136
136
|
"Engines/AbstractEngine/abstractEngine.loadFile.js",
|
|
137
137
|
"Engines/AbstractEngine/abstractEngine.query.js",
|
|
138
138
|
"Engines/AbstractEngine/abstractEngine.renderPass.js",
|
|
139
|
+
"Engines/AbstractEngine/abstractEngine.scissor.js",
|
|
139
140
|
"Engines/AbstractEngine/abstractEngine.states.js",
|
|
140
141
|
"Engines/AbstractEngine/abstractEngine.stencil.js",
|
|
141
142
|
"Engines/AbstractEngine/abstractEngine.texture.js",
|
|
@@ -154,7 +155,7 @@
|
|
|
154
155
|
"Engines/engine.js",
|
|
155
156
|
"Engines/nativeEngine.js",
|
|
156
157
|
"Engines/nullEngine.js",
|
|
157
|
-
"Engines/
|
|
158
|
+
"Engines/thinEngine.scissor.js",
|
|
158
159
|
"Engines/thinNativeEngine.types.js",
|
|
159
160
|
"Engines/webgpuEngine.js",
|
|
160
161
|
"FlowGraph/Blocks/Data/Audio/flowGraphGetSoundVolumeBlock.js",
|
package/scene.pure.d.ts
CHANGED
|
@@ -1108,6 +1108,7 @@ export declare class Scene implements IAnimatable, IClipPlanesHolder, IAssetCont
|
|
|
1108
1108
|
/** @internal */
|
|
1109
1109
|
_toBeDisposed: Nullable<IDisposable>[];
|
|
1110
1110
|
private _activeRequests;
|
|
1111
|
+
private _delayedFileRequests;
|
|
1111
1112
|
/** @internal */
|
|
1112
1113
|
_pendingData: any[];
|
|
1113
1114
|
private _isDisposed;
|
|
@@ -2553,6 +2554,17 @@ export declare class Scene implements IAnimatable, IClipPlanesHolder, IAssetCont
|
|
|
2553
2554
|
_loadFile(fileOrUrl: File | string, onSuccess: (data: string | ArrayBuffer, responseURL?: string) => void, onProgress?: (ev: ProgressEvent) => void, useOfflineSupport?: boolean, useArrayBuffer?: boolean, onError?: (request?: WebRequest, exception?: LoadFileError) => void, onOpened?: (request: WebRequest) => void): IFileRequest;
|
|
2554
2555
|
_loadFileAsync(fileOrUrl: File | string, onProgress?: (data: any) => void, useOfflineSupport?: boolean, useArrayBuffer?: false, onOpened?: (request: WebRequest) => void): Promise<string>;
|
|
2555
2556
|
_loadFileAsync(fileOrUrl: File | string, onProgress?: (data: any) => void, useOfflineSupport?: boolean, useArrayBuffer?: true, onOpened?: (request: WebRequest) => void): Promise<ArrayBuffer>;
|
|
2557
|
+
/**
|
|
2558
|
+
* Loads a delay-loading file (e.g. a `.babylonbinarymeshdata` geometry file), coalescing concurrent
|
|
2559
|
+
* requests for the same url so the file is only fetched once even when many meshes or geometries share it.
|
|
2560
|
+
* The same loaded data is resolved to every caller that requested it while the request was in flight.
|
|
2561
|
+
* @param url defines the url of the file to load
|
|
2562
|
+
* @param useArrayBuffer defines whether the file must be loaded as an ArrayBuffer (binary) or a string
|
|
2563
|
+
* @param useOfflineSupport defines whether the offline provider should be used when available
|
|
2564
|
+
* @returns a promise that resolves with the loaded data (shared across coalesced callers)
|
|
2565
|
+
* @internal
|
|
2566
|
+
*/
|
|
2567
|
+
_loadDelayedFileAsync(url: string, useArrayBuffer: boolean, useOfflineSupport: boolean): Promise<string | ArrayBuffer>;
|
|
2556
2568
|
/**
|
|
2557
2569
|
* @internal
|
|
2558
2570
|
*/
|
package/scene.pure.js
CHANGED
|
@@ -1292,6 +1292,7 @@ export class Scene {
|
|
|
1292
1292
|
/** @internal */
|
|
1293
1293
|
this._toBeDisposed = new Array(256);
|
|
1294
1294
|
this._activeRequests = new Array();
|
|
1295
|
+
this._delayedFileRequests = null;
|
|
1295
1296
|
/** @internal */
|
|
1296
1297
|
this._pendingData = [];
|
|
1297
1298
|
this._isDisposed = false;
|
|
@@ -5198,6 +5199,41 @@ export class Scene {
|
|
|
5198
5199
|
}, onOpened);
|
|
5199
5200
|
});
|
|
5200
5201
|
}
|
|
5202
|
+
/**
|
|
5203
|
+
* Loads a delay-loading file (e.g. a `.babylonbinarymeshdata` geometry file), coalescing concurrent
|
|
5204
|
+
* requests for the same url so the file is only fetched once even when many meshes or geometries share it.
|
|
5205
|
+
* The same loaded data is resolved to every caller that requested it while the request was in flight.
|
|
5206
|
+
* @param url defines the url of the file to load
|
|
5207
|
+
* @param useArrayBuffer defines whether the file must be loaded as an ArrayBuffer (binary) or a string
|
|
5208
|
+
* @param useOfflineSupport defines whether the offline provider should be used when available
|
|
5209
|
+
* @returns a promise that resolves with the loaded data (shared across coalesced callers)
|
|
5210
|
+
* @internal
|
|
5211
|
+
*/
|
|
5212
|
+
async _loadDelayedFileAsync(url, useArrayBuffer, useOfflineSupport) {
|
|
5213
|
+
if (!this._delayedFileRequests) {
|
|
5214
|
+
this._delayedFileRequests = new Map();
|
|
5215
|
+
}
|
|
5216
|
+
// The same url can be requested both as binary and as string, so the cache key must include the data type.
|
|
5217
|
+
const key = `${url}|${useArrayBuffer ? "binary" : "string"}`;
|
|
5218
|
+
let request = this._delayedFileRequests.get(key);
|
|
5219
|
+
if (!request) {
|
|
5220
|
+
// Branch on the literal type so the correct _loadFileAsync overload is selected without an unsafe cast.
|
|
5221
|
+
request = useArrayBuffer ? this._loadFileAsync(url, undefined, useOfflineSupport, true) : this._loadFileAsync(url, undefined, useOfflineSupport, false);
|
|
5222
|
+
// Only coalesce while the request is in flight: remove it once settled so later loads can re-fetch.
|
|
5223
|
+
const requestToClear = request;
|
|
5224
|
+
void (async () => {
|
|
5225
|
+
try {
|
|
5226
|
+
await requestToClear;
|
|
5227
|
+
}
|
|
5228
|
+
catch {
|
|
5229
|
+
// The failure is surfaced to the awaiting callers; here we only need to clear the in-flight entry.
|
|
5230
|
+
}
|
|
5231
|
+
this._delayedFileRequests?.delete(key);
|
|
5232
|
+
})();
|
|
5233
|
+
this._delayedFileRequests.set(key, request);
|
|
5234
|
+
}
|
|
5235
|
+
return await request;
|
|
5236
|
+
}
|
|
5201
5237
|
/**
|
|
5202
5238
|
* @internal
|
|
5203
5239
|
*/
|