@babylonjs/core 6.34.3 → 6.36.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.
Files changed (71) hide show
  1. package/Compute/computeShader.d.ts +2 -2
  2. package/Compute/computeShader.js.map +1 -1
  3. package/Engines/Extensions/engine.cubeTexture.js +2 -2
  4. package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
  5. package/Engines/ICanvas.d.ts +4 -0
  6. package/Engines/ICanvas.js.map +1 -1
  7. package/Engines/WebGPU/Extensions/index.d.ts +0 -2
  8. package/Engines/WebGPU/Extensions/index.js +0 -2
  9. package/Engines/WebGPU/Extensions/index.js.map +1 -1
  10. package/Engines/engineCapabilities.d.ts +2 -0
  11. package/Engines/engineCapabilities.js.map +1 -1
  12. package/Engines/nativeEngine.js +2 -1
  13. package/Engines/nativeEngine.js.map +1 -1
  14. package/Engines/nullEngine.js +1 -0
  15. package/Engines/nullEngine.js.map +1 -1
  16. package/Engines/thinEngine.js +4 -2
  17. package/Engines/thinEngine.js.map +1 -1
  18. package/Engines/webgpuEngine.d.ts +52 -1
  19. package/Engines/webgpuEngine.js +133 -0
  20. package/Engines/webgpuEngine.js.map +1 -1
  21. package/Gizmos/boundingBoxGizmo.d.ts +6 -0
  22. package/Gizmos/boundingBoxGizmo.js +28 -3
  23. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  24. package/Gizmos/positionGizmo.js +1 -5
  25. package/Gizmos/positionGizmo.js.map +1 -1
  26. package/Gizmos/rotationGizmo.js +1 -5
  27. package/Gizmos/rotationGizmo.js.map +1 -1
  28. package/Gizmos/scaleGizmo.js +1 -5
  29. package/Gizmos/scaleGizmo.js.map +1 -1
  30. package/Materials/Node/nodeMaterial.d.ts +2 -2
  31. package/Materials/Node/nodeMaterial.js +2 -2
  32. package/Materials/Node/nodeMaterial.js.map +1 -1
  33. package/Materials/Textures/Procedurals/customProceduralTexture.d.ts +11 -1
  34. package/Materials/Textures/Procedurals/customProceduralTexture.js +3 -0
  35. package/Materials/Textures/Procedurals/customProceduralTexture.js.map +1 -1
  36. package/Materials/Textures/Procedurals/proceduralTexture.d.ts +13 -2
  37. package/Materials/Textures/Procedurals/proceduralTexture.js +12 -14
  38. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  39. package/Materials/Textures/dynamicTexture.d.ts +5 -0
  40. package/Materials/Textures/dynamicTexture.js +13 -0
  41. package/Materials/Textures/dynamicTexture.js.map +1 -1
  42. package/Materials/Textures/videoTexture.js +5 -2
  43. package/Materials/Textures/videoTexture.js.map +1 -1
  44. package/Meshes/abstractMesh.js +1 -1
  45. package/Meshes/abstractMesh.js.map +1 -1
  46. package/Misc/environmentTextureTools.js +1 -1
  47. package/Misc/environmentTextureTools.js.map +1 -1
  48. package/Misc/fileTools.js +4 -5
  49. package/Misc/fileTools.js.map +1 -1
  50. package/Physics/v2/ragdoll.d.ts +0 -1
  51. package/Physics/v2/ragdoll.js +9 -3
  52. package/Physics/v2/ragdoll.js.map +1 -1
  53. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js +10 -11
  54. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js.map +1 -1
  55. package/Rendering/geometryBufferRenderer.d.ts +14 -2
  56. package/Rendering/geometryBufferRenderer.js +40 -6
  57. package/Rendering/geometryBufferRenderer.js.map +1 -1
  58. package/Rendering/geometryBufferRendererSceneComponent.d.ts +9 -3
  59. package/Rendering/geometryBufferRendererSceneComponent.js +2 -2
  60. package/Rendering/geometryBufferRendererSceneComponent.js.map +1 -1
  61. package/Shaders/geometry.fragment.js +3 -0
  62. package/Shaders/geometry.fragment.js.map +1 -1
  63. package/Shaders/screenSpaceReflection2.fragment.js +6 -0
  64. package/Shaders/screenSpaceReflection2.fragment.js.map +1 -1
  65. package/package.json +1 -1
  66. package/Engines/WebGPU/Extensions/engine.dynamicBuffer.d.ts +0 -1
  67. package/Engines/WebGPU/Extensions/engine.dynamicBuffer.js +0 -44
  68. package/Engines/WebGPU/Extensions/engine.dynamicBuffer.js.map +0 -1
  69. package/Engines/WebGPU/Extensions/engine.uniformBuffer.d.ts +0 -1
  70. package/Engines/WebGPU/Extensions/engine.uniformBuffer.js +0 -46
  71. package/Engines/WebGPU/Extensions/engine.uniformBuffer.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import type { Nullable, DataArray, IndicesArray, Immutable } from "../types";
1
+ import type { Nullable, DataArray, IndicesArray, Immutable, FloatArray } from "../types";
2
2
  import { Engine } from "../Engines/engine";
3
3
  import { InternalTexture, InternalTextureSource } from "../Materials/Textures/internalTexture";
4
4
  import type { IEffectCreationOptions } from "../Materials/effect";
@@ -446,6 +446,21 @@ export declare class WebGPUEngine extends Engine {
446
446
  * @returns a new buffer
447
447
  */
448
448
  createIndexBuffer(indices: IndicesArray, _updatable?: boolean, label?: string): DataBuffer;
449
+ /**
450
+ * Update a dynamic index buffer
451
+ * @param indexBuffer defines the target index buffer
452
+ * @param indices defines the data to update
453
+ * @param offset defines the offset in the target index buffer where update should start
454
+ */
455
+ updateDynamicIndexBuffer(indexBuffer: DataBuffer, indices: IndicesArray, offset?: number): void;
456
+ /**
457
+ * Updates a dynamic vertex buffer.
458
+ * @param vertexBuffer the vertex buffer to update
459
+ * @param data the data used to update the vertex buffer
460
+ * @param byteOffset the byte offset of the data
461
+ * @param byteLength the byte length of the data
462
+ */
463
+ updateDynamicVertexBuffer(vertexBuffer: DataBuffer, data: DataArray, byteOffset?: number, byteLength?: number): void;
449
464
  /**
450
465
  * @internal
451
466
  */
@@ -474,6 +489,42 @@ export declare class WebGPUEngine extends Engine {
474
489
  * @internal
475
490
  */
476
491
  _releaseBuffer(buffer: DataBuffer): boolean;
492
+ /**
493
+ * Create an uniform buffer
494
+ * @see https://doc.babylonjs.com/setup/support/webGL2#uniform-buffer-objets
495
+ * @param elements defines the content of the uniform buffer
496
+ * @param label defines a name for the buffer (for debugging purpose)
497
+ * @returns the webGL uniform buffer
498
+ */
499
+ createUniformBuffer(elements: FloatArray, label?: string): DataBuffer;
500
+ /**
501
+ * Create a dynamic uniform buffer (no different from a non dynamic uniform buffer in WebGPU)
502
+ * @see https://doc.babylonjs.com/setup/support/webGL2#uniform-buffer-objets
503
+ * @param elements defines the content of the uniform buffer
504
+ * @param label defines a name for the buffer (for debugging purpose)
505
+ * @returns the webGL uniform buffer
506
+ */
507
+ createDynamicUniformBuffer(elements: FloatArray, label?: string): DataBuffer;
508
+ /**
509
+ * Update an existing uniform buffer
510
+ * @see https://doc.babylonjs.com/setup/support/webGL2#uniform-buffer-objets
511
+ * @param uniformBuffer defines the target uniform buffer
512
+ * @param elements defines the content to update
513
+ * @param offset defines the offset in the uniform buffer where update should start
514
+ * @param count defines the size of the data to update
515
+ */
516
+ updateUniformBuffer(uniformBuffer: DataBuffer, elements: FloatArray, offset?: number, count?: number): void;
517
+ /**
518
+ * Bind a buffer to the current draw context
519
+ * @param buffer defines the buffer to bind
520
+ * @param _location not used in WebGPU
521
+ * @param name Name of the uniform variable to bind
522
+ */
523
+ bindUniformBufferBase(buffer: DataBuffer, _location: number, name: string): void;
524
+ /**
525
+ * Unused in WebGPU
526
+ */
527
+ bindUniformBlock(): void;
477
528
  /**
478
529
  * Create a new effect (used to store vertex/fragment shaders)
479
530
  * @param baseName defines the base name of the effect (The name of file without .fragment.fx or .vertex.fx)
@@ -527,6 +527,7 @@ export class WebGPUEngine extends Engine {
527
527
  highPrecisionShaderSupported: true,
528
528
  colorBufferFloat: true,
529
529
  supportFloatTexturesResolve: false,
530
+ rg11b10ufColorRenderable: this._deviceEnabledExtensions.indexOf(WebGPUConstants.FeatureName.RG11B10UFloatRenderable) >= 0,
530
531
  textureFloat: true,
531
532
  textureFloatLinearFiltering: this._deviceEnabledExtensions.indexOf(WebGPUConstants.FeatureName.Float32Filterable) >= 0,
532
533
  textureFloatRender: true,
@@ -1080,6 +1081,61 @@ export class WebGPUEngine extends Engine {
1080
1081
  dataBuffer.is32Bits = is32Bits;
1081
1082
  return dataBuffer;
1082
1083
  }
1084
+ /**
1085
+ * Update a dynamic index buffer
1086
+ * @param indexBuffer defines the target index buffer
1087
+ * @param indices defines the data to update
1088
+ * @param offset defines the offset in the target index buffer where update should start
1089
+ */
1090
+ updateDynamicIndexBuffer(indexBuffer, indices, offset = 0) {
1091
+ const gpuBuffer = indexBuffer;
1092
+ let view;
1093
+ if (indexBuffer.is32Bits) {
1094
+ view = indices instanceof Uint32Array ? indices : new Uint32Array(indices);
1095
+ }
1096
+ else {
1097
+ view = indices instanceof Uint16Array ? indices : new Uint16Array(indices);
1098
+ }
1099
+ this._bufferManager.setSubData(gpuBuffer, offset, view);
1100
+ }
1101
+ /**
1102
+ * Updates a dynamic vertex buffer.
1103
+ * @param vertexBuffer the vertex buffer to update
1104
+ * @param data the data used to update the vertex buffer
1105
+ * @param byteOffset the byte offset of the data
1106
+ * @param byteLength the byte length of the data
1107
+ */
1108
+ updateDynamicVertexBuffer(vertexBuffer, data, byteOffset, byteLength) {
1109
+ const dataBuffer = vertexBuffer;
1110
+ if (byteOffset === undefined) {
1111
+ byteOffset = 0;
1112
+ }
1113
+ let view;
1114
+ if (byteLength === undefined) {
1115
+ if (data instanceof Array) {
1116
+ view = new Float32Array(data);
1117
+ }
1118
+ else if (data instanceof ArrayBuffer) {
1119
+ view = new Uint8Array(data);
1120
+ }
1121
+ else {
1122
+ view = data;
1123
+ }
1124
+ byteLength = view.byteLength;
1125
+ }
1126
+ else {
1127
+ if (data instanceof Array) {
1128
+ view = new Float32Array(data);
1129
+ }
1130
+ else if (data instanceof ArrayBuffer) {
1131
+ view = new Uint8Array(data);
1132
+ }
1133
+ else {
1134
+ view = data;
1135
+ }
1136
+ }
1137
+ this._bufferManager.setSubData(dataBuffer, byteOffset, view, 0, byteLength);
1138
+ }
1083
1139
  /**
1084
1140
  * @internal
1085
1141
  */
@@ -1146,6 +1202,83 @@ export class WebGPUEngine extends Engine {
1146
1202
  return this._bufferManager.releaseBuffer(buffer);
1147
1203
  }
1148
1204
  //------------------------------------------------------------------------------
1205
+ // Uniform Buffers
1206
+ //------------------------------------------------------------------------------
1207
+ /**
1208
+ * Create an uniform buffer
1209
+ * @see https://doc.babylonjs.com/setup/support/webGL2#uniform-buffer-objets
1210
+ * @param elements defines the content of the uniform buffer
1211
+ * @param label defines a name for the buffer (for debugging purpose)
1212
+ * @returns the webGL uniform buffer
1213
+ */
1214
+ createUniformBuffer(elements, label) {
1215
+ let view;
1216
+ if (elements instanceof Array) {
1217
+ view = new Float32Array(elements);
1218
+ }
1219
+ else {
1220
+ view = elements;
1221
+ }
1222
+ const dataBuffer = this._bufferManager.createBuffer(view, WebGPUConstants.BufferUsage.Uniform | WebGPUConstants.BufferUsage.CopyDst, label);
1223
+ return dataBuffer;
1224
+ }
1225
+ /**
1226
+ * Create a dynamic uniform buffer (no different from a non dynamic uniform buffer in WebGPU)
1227
+ * @see https://doc.babylonjs.com/setup/support/webGL2#uniform-buffer-objets
1228
+ * @param elements defines the content of the uniform buffer
1229
+ * @param label defines a name for the buffer (for debugging purpose)
1230
+ * @returns the webGL uniform buffer
1231
+ */
1232
+ createDynamicUniformBuffer(elements, label) {
1233
+ return this.createUniformBuffer(elements, label);
1234
+ }
1235
+ /**
1236
+ * Update an existing uniform buffer
1237
+ * @see https://doc.babylonjs.com/setup/support/webGL2#uniform-buffer-objets
1238
+ * @param uniformBuffer defines the target uniform buffer
1239
+ * @param elements defines the content to update
1240
+ * @param offset defines the offset in the uniform buffer where update should start
1241
+ * @param count defines the size of the data to update
1242
+ */
1243
+ updateUniformBuffer(uniformBuffer, elements, offset, count) {
1244
+ if (offset === undefined) {
1245
+ offset = 0;
1246
+ }
1247
+ const dataBuffer = uniformBuffer;
1248
+ let view;
1249
+ if (count === undefined) {
1250
+ if (elements instanceof Float32Array) {
1251
+ view = elements;
1252
+ }
1253
+ else {
1254
+ view = new Float32Array(elements);
1255
+ }
1256
+ count = view.byteLength;
1257
+ }
1258
+ else {
1259
+ if (elements instanceof Float32Array) {
1260
+ view = elements;
1261
+ }
1262
+ else {
1263
+ view = new Float32Array(elements);
1264
+ }
1265
+ }
1266
+ this._bufferManager.setSubData(dataBuffer, offset, view, 0, count);
1267
+ }
1268
+ /**
1269
+ * Bind a buffer to the current draw context
1270
+ * @param buffer defines the buffer to bind
1271
+ * @param _location not used in WebGPU
1272
+ * @param name Name of the uniform variable to bind
1273
+ */
1274
+ bindUniformBufferBase(buffer, _location, name) {
1275
+ this._currentDrawContext.setBuffer(name, buffer);
1276
+ }
1277
+ /**
1278
+ * Unused in WebGPU
1279
+ */
1280
+ bindUniformBlock() { }
1281
+ //------------------------------------------------------------------------------
1149
1282
  // Effects
1150
1283
  //------------------------------------------------------------------------------
1151
1284
  /**