@onerjs/core 8.38.9 → 8.40.2

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.
Files changed (34) hide show
  1. package/Engines/WebGPU/webgpuHardwareTexture.js +1 -1
  2. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  3. package/Engines/abstractEngine.js +2 -2
  4. package/Engines/abstractEngine.js.map +1 -1
  5. package/Engines/webgpuEngine.js +5 -3
  6. package/Engines/webgpuEngine.js.map +1 -1
  7. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +2 -0
  8. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  9. package/Layers/thinSelectionOutlineLayer.js +12 -1
  10. package/Layers/thinSelectionOutlineLayer.js.map +1 -1
  11. package/Materials/GaussianSplatting/gaussianSplattingMaterial.d.ts +2 -1
  12. package/Materials/GaussianSplatting/gaussianSplattingMaterial.js +31 -11
  13. package/Materials/GaussianSplatting/gaussianSplattingMaterial.js.map +1 -1
  14. package/Maths/math.path.d.ts +11 -6
  15. package/Maths/math.path.js +86 -25
  16. package/Maths/math.path.js.map +1 -1
  17. package/Maths/math.vector.d.ts +24 -0
  18. package/Maths/math.vector.js +39 -5
  19. package/Maths/math.vector.js.map +1 -1
  20. package/Meshes/GaussianSplatting/gaussianSplattingMesh.d.ts +7 -1
  21. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +80 -8
  22. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  23. package/Meshes/instancedMesh.js +3 -1
  24. package/Meshes/instancedMesh.js.map +1 -1
  25. package/Rendering/depthRenderer.d.ts +9 -0
  26. package/Rendering/depthRenderer.js +42 -6
  27. package/Rendering/depthRenderer.js.map +1 -1
  28. package/Shaders/gaussianSplattingDepth.fragment.js +11 -4
  29. package/Shaders/gaussianSplattingDepth.fragment.js.map +1 -1
  30. package/ShadersWGSL/gaussianSplattingDepth.fragment.js +9 -3
  31. package/ShadersWGSL/gaussianSplattingDepth.fragment.js.map +1 -1
  32. package/XR/features/WebXRHandTracking.js +2 -1
  33. package/XR/features/WebXRHandTracking.js.map +1 -1
  34. package/package.json +1 -1
@@ -5,7 +5,7 @@ export class WebGPUHardwareTexture {
5
5
  get underlyingResource() {
6
6
  return this._webgpuTexture;
7
7
  }
8
- // index is the index of the texture in the list of the render target textures (in case of multi render targets).
8
+ // index is the index of the layer for a 2DArrayTexture / 3DTexture, the face index for a cube texture or the layer * 6 + face index for a cube array texture.
9
9
  // In single render target case, index is 0.
10
10
  getMSAATexture(sampleCount, index = 0) {
11
11
  const texture = this._webgpuMSAATexture[index];
@@ -1 +1 @@
1
- {"version":3,"file":"webgpuHardwareTexture.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/WebGPU/webgpuHardwareTexture.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\r\n/* eslint-disable babylonjs/available */\r\nimport type { IHardwareTextureWrapper } from \"../../Materials/Textures/hardwareTextureWrapper\";\r\nimport { ILog2 } from \"../../Maths/math.scalar.functions\";\r\nimport type { Nullable } from \"../../types\";\r\nimport * as WebGPUConstants from \"./webgpuConstants\";\r\nimport { WebGPUTextureHelper } from \"./webgpuTextureHelper\";\r\nimport type { WebGPUEngine } from \"../webgpuEngine\";\r\n\r\n/** @internal */\r\nexport class WebGPUHardwareTexture implements IHardwareTextureWrapper {\r\n /**\r\n * Cache of RenderPassDescriptor and BindGroup used when generating mipmaps (see WebGPUTextureHelper.generateMipmaps)\r\n * @internal\r\n */\r\n public _mipmapGenRenderPassDescr: GPURenderPassDescriptor[][];\r\n /** @internal */\r\n public _mipmapGenBindGroup: GPUBindGroup[][];\r\n\r\n /**\r\n * Cache for the invertYPreMultiplyAlpha function (see WebGPUTextureHelper)\r\n * @internal\r\n */\r\n public _copyInvertYTempTexture?: GPUTexture;\r\n /** @internal */\r\n public _copyInvertYRenderPassDescr: GPURenderPassDescriptor;\r\n /** @internal */\r\n public _copyInvertYBindGroup: GPUBindGroup;\r\n /** @internal */\r\n public _copyInvertYBindGroupWithOfst: GPUBindGroup;\r\n\r\n /** @internal */\r\n public _originalFormatIsRGB = false;\r\n\r\n private _webgpuTexture: Nullable<GPUTexture>;\r\n // There can be multiple MSAA textures for a single WebGPU texture because different layers of a 2DArrayTexture / 3DTexture\r\n // or different faces of a cube texture can be bound to different render targets at the same time (in a multi RenderTargetWrapper)\r\n private _webgpuMSAATexture: GPUTexture[];\r\n\r\n public get underlyingResource(): Nullable<GPUTexture> {\r\n return this._webgpuTexture;\r\n }\r\n\r\n // index is the index of the texture in the list of the render target textures (in case of multi render targets).\r\n // In single render target case, index is 0.\r\n public getMSAATexture(sampleCount: number, index = 0): GPUTexture {\r\n const texture = this._webgpuMSAATexture[index];\r\n if (!texture) {\r\n this._createMSAATexture(sampleCount, index);\r\n }\r\n return this._webgpuMSAATexture[index];\r\n }\r\n\r\n public releaseMSAATextures(): void {\r\n for (const texture of this._webgpuMSAATexture) {\r\n if (texture) {\r\n this._engine._textureHelper.releaseTexture(texture);\r\n }\r\n }\r\n this._webgpuMSAATexture.length = 0;\r\n }\r\n\r\n public view: Nullable<GPUTextureView>;\r\n public viewForWriting: Nullable<GPUTextureView>;\r\n public format: GPUTextureFormat = WebGPUConstants.TextureFormat.RGBA8Unorm;\r\n // This is the original format requested. It can be different from \"format\" in case original format is a depth/stencil format and MSAA is requested.\r\n // In that case, format will be a R16 or R32 format, because the texture will be used as the resolve texture.\r\n public originalFormat: GPUTextureFormat = WebGPUConstants.TextureFormat.RGBA8Unorm;\r\n public textureUsages = 0;\r\n public textureAdditionalUsages = 0;\r\n\r\n constructor(\r\n private _engine: WebGPUEngine,\r\n existingTexture: Nullable<GPUTexture> = null\r\n ) {\r\n this._webgpuTexture = existingTexture;\r\n this._webgpuMSAATexture = [];\r\n this.view = null;\r\n this.viewForWriting = null;\r\n }\r\n\r\n public set(hardwareTexture: GPUTexture): void {\r\n this._webgpuTexture = hardwareTexture;\r\n }\r\n\r\n public setUsage(_textureSource: number, generateMipMaps: boolean, is2DArray: boolean, isCube: boolean, is3D: boolean, width: number, height: number, depth: number): void {\r\n let viewDimension: GPUTextureViewDimension = WebGPUConstants.TextureViewDimension.E2d;\r\n let arrayLayerCount = 1;\r\n if (isCube) {\r\n viewDimension = is2DArray ? WebGPUConstants.TextureViewDimension.CubeArray : WebGPUConstants.TextureViewDimension.Cube;\r\n arrayLayerCount = 6 * (depth || 1);\r\n } else if (is3D) {\r\n viewDimension = WebGPUConstants.TextureViewDimension.E3d;\r\n arrayLayerCount = 1;\r\n } else if (is2DArray) {\r\n viewDimension = WebGPUConstants.TextureViewDimension.E2dArray;\r\n arrayLayerCount = depth;\r\n }\r\n\r\n const format = WebGPUTextureHelper.GetDepthFormatOnly(this.format);\r\n const aspect = WebGPUTextureHelper.HasDepthAndStencilAspects(this.format) ? WebGPUConstants.TextureAspect.DepthOnly : WebGPUConstants.TextureAspect.All;\r\n\r\n this.createView({\r\n label: `TextureView${is3D ? \"3D\" : isCube ? \"Cube\" : \"2D\"}${is2DArray ? \"_Array\" + arrayLayerCount : \"\"}_${width}x${height}_${generateMipMaps ? \"wmips\" : \"womips\"}_${\r\n this.format\r\n }_${viewDimension}`,\r\n format,\r\n dimension: viewDimension,\r\n mipLevelCount: generateMipMaps ? ILog2(Math.max(width, height)) + 1 : 1,\r\n baseArrayLayer: 0,\r\n baseMipLevel: 0,\r\n arrayLayerCount,\r\n aspect,\r\n });\r\n }\r\n\r\n public createView(descriptor?: GPUTextureViewDescriptor, createViewForWriting = false): void {\r\n this.view = this._webgpuTexture!.createView(descriptor);\r\n if (createViewForWriting && descriptor) {\r\n const saveNumMipMaps = descriptor.mipLevelCount;\r\n descriptor.mipLevelCount = 1;\r\n this.viewForWriting = this._webgpuTexture!.createView(descriptor);\r\n descriptor.mipLevelCount = saveNumMipMaps;\r\n }\r\n }\r\n\r\n public reset(): void {\r\n this._webgpuTexture = null;\r\n this._webgpuMSAATexture.length = 0;\r\n this.view = null;\r\n this.viewForWriting = null;\r\n }\r\n\r\n public release(): void {\r\n this._webgpuTexture?.destroy();\r\n this.releaseMSAATextures();\r\n this._copyInvertYTempTexture?.destroy();\r\n this.reset();\r\n }\r\n\r\n private _createMSAATexture(samples: number, index: number): void {\r\n if (!this._webgpuTexture) {\r\n throw new Error(\"Cannot create GPU MSAA texture because underlying GPU texture is not created yet.\");\r\n }\r\n\r\n if (!this._webgpuMSAATexture) {\r\n this._webgpuMSAATexture = [];\r\n }\r\n\r\n this._webgpuMSAATexture[index] = this._engine._textureHelper.createMSAATexture(this._webgpuTexture, this.originalFormat, samples);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"webgpuHardwareTexture.js","sourceRoot":"","sources":["../../../../../dev/core/src/Engines/WebGPU/webgpuHardwareTexture.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\r\n/* eslint-disable babylonjs/available */\r\nimport type { IHardwareTextureWrapper } from \"../../Materials/Textures/hardwareTextureWrapper\";\r\nimport { ILog2 } from \"../../Maths/math.scalar.functions\";\r\nimport type { Nullable } from \"../../types\";\r\nimport * as WebGPUConstants from \"./webgpuConstants\";\r\nimport { WebGPUTextureHelper } from \"./webgpuTextureHelper\";\r\nimport type { WebGPUEngine } from \"../webgpuEngine\";\r\n\r\n/** @internal */\r\nexport class WebGPUHardwareTexture implements IHardwareTextureWrapper {\r\n /**\r\n * Cache of RenderPassDescriptor and BindGroup used when generating mipmaps (see WebGPUTextureHelper.generateMipmaps)\r\n * @internal\r\n */\r\n public _mipmapGenRenderPassDescr: GPURenderPassDescriptor[][];\r\n /** @internal */\r\n public _mipmapGenBindGroup: GPUBindGroup[][];\r\n\r\n /**\r\n * Cache for the invertYPreMultiplyAlpha function (see WebGPUTextureHelper)\r\n * @internal\r\n */\r\n public _copyInvertYTempTexture?: GPUTexture;\r\n /** @internal */\r\n public _copyInvertYRenderPassDescr: GPURenderPassDescriptor;\r\n /** @internal */\r\n public _copyInvertYBindGroup: GPUBindGroup;\r\n /** @internal */\r\n public _copyInvertYBindGroupWithOfst: GPUBindGroup;\r\n\r\n /** @internal */\r\n public _originalFormatIsRGB = false;\r\n\r\n private _webgpuTexture: Nullable<GPUTexture>;\r\n // There can be multiple MSAA textures for a single WebGPU texture because different layers of a 2DArrayTexture / 3DTexture\r\n // or different faces of a cube texture can be bound to different render targets at the same time (in a multi RenderTargetWrapper)\r\n private _webgpuMSAATexture: GPUTexture[];\r\n\r\n public get underlyingResource(): Nullable<GPUTexture> {\r\n return this._webgpuTexture;\r\n }\r\n\r\n // index is the index of the layer for a 2DArrayTexture / 3DTexture, the face index for a cube texture or the layer * 6 + face index for a cube array texture.\r\n // In single render target case, index is 0.\r\n public getMSAATexture(sampleCount: number, index = 0): GPUTexture {\r\n const texture = this._webgpuMSAATexture[index];\r\n if (!texture) {\r\n this._createMSAATexture(sampleCount, index);\r\n }\r\n return this._webgpuMSAATexture[index];\r\n }\r\n\r\n public releaseMSAATextures(): void {\r\n for (const texture of this._webgpuMSAATexture) {\r\n if (texture) {\r\n this._engine._textureHelper.releaseTexture(texture);\r\n }\r\n }\r\n this._webgpuMSAATexture.length = 0;\r\n }\r\n\r\n public view: Nullable<GPUTextureView>;\r\n public viewForWriting: Nullable<GPUTextureView>;\r\n public format: GPUTextureFormat = WebGPUConstants.TextureFormat.RGBA8Unorm;\r\n // This is the original format requested. It can be different from \"format\" in case original format is a depth/stencil format and MSAA is requested.\r\n // In that case, format will be a R16 or R32 format, because the texture will be used as the resolve texture.\r\n public originalFormat: GPUTextureFormat = WebGPUConstants.TextureFormat.RGBA8Unorm;\r\n public textureUsages = 0;\r\n public textureAdditionalUsages = 0;\r\n\r\n constructor(\r\n private _engine: WebGPUEngine,\r\n existingTexture: Nullable<GPUTexture> = null\r\n ) {\r\n this._webgpuTexture = existingTexture;\r\n this._webgpuMSAATexture = [];\r\n this.view = null;\r\n this.viewForWriting = null;\r\n }\r\n\r\n public set(hardwareTexture: GPUTexture): void {\r\n this._webgpuTexture = hardwareTexture;\r\n }\r\n\r\n public setUsage(_textureSource: number, generateMipMaps: boolean, is2DArray: boolean, isCube: boolean, is3D: boolean, width: number, height: number, depth: number): void {\r\n let viewDimension: GPUTextureViewDimension = WebGPUConstants.TextureViewDimension.E2d;\r\n let arrayLayerCount = 1;\r\n if (isCube) {\r\n viewDimension = is2DArray ? WebGPUConstants.TextureViewDimension.CubeArray : WebGPUConstants.TextureViewDimension.Cube;\r\n arrayLayerCount = 6 * (depth || 1);\r\n } else if (is3D) {\r\n viewDimension = WebGPUConstants.TextureViewDimension.E3d;\r\n arrayLayerCount = 1;\r\n } else if (is2DArray) {\r\n viewDimension = WebGPUConstants.TextureViewDimension.E2dArray;\r\n arrayLayerCount = depth;\r\n }\r\n\r\n const format = WebGPUTextureHelper.GetDepthFormatOnly(this.format);\r\n const aspect = WebGPUTextureHelper.HasDepthAndStencilAspects(this.format) ? WebGPUConstants.TextureAspect.DepthOnly : WebGPUConstants.TextureAspect.All;\r\n\r\n this.createView({\r\n label: `TextureView${is3D ? \"3D\" : isCube ? \"Cube\" : \"2D\"}${is2DArray ? \"_Array\" + arrayLayerCount : \"\"}_${width}x${height}_${generateMipMaps ? \"wmips\" : \"womips\"}_${\r\n this.format\r\n }_${viewDimension}`,\r\n format,\r\n dimension: viewDimension,\r\n mipLevelCount: generateMipMaps ? ILog2(Math.max(width, height)) + 1 : 1,\r\n baseArrayLayer: 0,\r\n baseMipLevel: 0,\r\n arrayLayerCount,\r\n aspect,\r\n });\r\n }\r\n\r\n public createView(descriptor?: GPUTextureViewDescriptor, createViewForWriting = false): void {\r\n this.view = this._webgpuTexture!.createView(descriptor);\r\n if (createViewForWriting && descriptor) {\r\n const saveNumMipMaps = descriptor.mipLevelCount;\r\n descriptor.mipLevelCount = 1;\r\n this.viewForWriting = this._webgpuTexture!.createView(descriptor);\r\n descriptor.mipLevelCount = saveNumMipMaps;\r\n }\r\n }\r\n\r\n public reset(): void {\r\n this._webgpuTexture = null;\r\n this._webgpuMSAATexture.length = 0;\r\n this.view = null;\r\n this.viewForWriting = null;\r\n }\r\n\r\n public release(): void {\r\n this._webgpuTexture?.destroy();\r\n this.releaseMSAATextures();\r\n this._copyInvertYTempTexture?.destroy();\r\n this.reset();\r\n }\r\n\r\n private _createMSAATexture(samples: number, index: number): void {\r\n if (!this._webgpuTexture) {\r\n throw new Error(\"Cannot create GPU MSAA texture because underlying GPU texture is not created yet.\");\r\n }\r\n\r\n if (!this._webgpuMSAATexture) {\r\n this._webgpuMSAATexture = [];\r\n }\r\n\r\n this._webgpuMSAATexture[index] = this._engine._textureHelper.createMSAATexture(this._webgpuTexture, this.originalFormat, samples);\r\n }\r\n}\r\n"]}
@@ -793,13 +793,13 @@ export class AbstractEngine {
793
793
  */
794
794
  // Not mixed with Version for tooling purpose.
795
795
  static get NpmPackage() {
796
- return "babylonjs@8.50.0";
796
+ return "babylonjs@8.50.2";
797
797
  }
798
798
  /**
799
799
  * Returns the current version of the framework
800
800
  */
801
801
  static get Version() {
802
- return "8.50.0";
802
+ return "8.50.2";
803
803
  }
804
804
  /**
805
805
  * Gets the HTML canvas attached with the current webGL context