@aura3d/rendering 1.4.5 → 1.5.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 (203) hide show
  1. package/dist/CameraFraming.d.ts +77 -0
  2. package/dist/CameraFraming.d.ts.map +1 -1
  3. package/dist/CameraFraming.js +176 -1
  4. package/dist/CameraFraming.js.map +1 -1
  5. package/dist/CascadedShadowMaps.d.ts +9 -1
  6. package/dist/CascadedShadowMaps.d.ts.map +1 -1
  7. package/dist/CascadedShadowMaps.js +68 -0
  8. package/dist/CascadedShadowMaps.js.map +1 -1
  9. package/dist/ClusteredForwardLighting.d.ts +28 -0
  10. package/dist/ClusteredForwardLighting.d.ts.map +1 -0
  11. package/dist/ClusteredForwardLighting.js +156 -0
  12. package/dist/ClusteredForwardLighting.js.map +1 -0
  13. package/dist/DepthPass.d.ts +14 -1
  14. package/dist/DepthPass.d.ts.map +1 -1
  15. package/dist/DepthPass.js +19 -4
  16. package/dist/DepthPass.js.map +1 -1
  17. package/dist/EnvironmentMapResources.d.ts +59 -1
  18. package/dist/EnvironmentMapResources.d.ts.map +1 -1
  19. package/dist/EnvironmentMapResources.js +140 -100
  20. package/dist/EnvironmentMapResources.js.map +1 -1
  21. package/dist/EnvironmentPlatform.d.ts +3 -2
  22. package/dist/EnvironmentPlatform.d.ts.map +1 -1
  23. package/dist/EnvironmentPlatform.js +99 -44
  24. package/dist/EnvironmentPlatform.js.map +1 -1
  25. package/dist/ForwardPass.d.ts +37 -0
  26. package/dist/ForwardPass.d.ts.map +1 -1
  27. package/dist/ForwardPass.js +234 -7
  28. package/dist/ForwardPass.js.map +1 -1
  29. package/dist/Geometry.d.ts +19 -0
  30. package/dist/Geometry.d.ts.map +1 -1
  31. package/dist/Geometry.js +64 -0
  32. package/dist/Geometry.js.map +1 -1
  33. package/dist/IBL.d.ts.map +1 -1
  34. package/dist/IBL.js +0 -1
  35. package/dist/IBL.js.map +1 -1
  36. package/dist/LightCollector.d.ts +5 -1
  37. package/dist/LightCollector.d.ts.map +1 -1
  38. package/dist/LightCollector.js +16 -3
  39. package/dist/LightCollector.js.map +1 -1
  40. package/dist/LightUniforms.d.ts +26 -1
  41. package/dist/LightUniforms.d.ts.map +1 -1
  42. package/dist/LightUniforms.js +140 -8
  43. package/dist/LightUniforms.js.map +1 -1
  44. package/dist/LightingRig.d.ts +77 -0
  45. package/dist/LightingRig.d.ts.map +1 -1
  46. package/dist/LightingRig.js +100 -11
  47. package/dist/LightingRig.js.map +1 -1
  48. package/dist/MeshConsolidation.d.ts +63 -0
  49. package/dist/MeshConsolidation.d.ts.map +1 -0
  50. package/dist/MeshConsolidation.js +251 -0
  51. package/dist/MeshConsolidation.js.map +1 -0
  52. package/dist/PMREM.d.ts +13 -1
  53. package/dist/PMREM.d.ts.map +1 -1
  54. package/dist/PMREM.js +18 -4
  55. package/dist/PMREM.js.map +1 -1
  56. package/dist/PostProcessPass.d.ts +24 -2
  57. package/dist/PostProcessPass.d.ts.map +1 -1
  58. package/dist/PostProcessPass.js +136 -18
  59. package/dist/PostProcessPass.js.map +1 -1
  60. package/dist/PrimitiveSubmissionAudit.d.ts +195 -0
  61. package/dist/PrimitiveSubmissionAudit.d.ts.map +1 -0
  62. package/dist/PrimitiveSubmissionAudit.js +280 -0
  63. package/dist/PrimitiveSubmissionAudit.js.map +1 -0
  64. package/dist/ProductTurntableFixtures.d.ts.map +1 -1
  65. package/dist/ProductTurntableFixtures.js +93 -13
  66. package/dist/ProductTurntableFixtures.js.map +1 -1
  67. package/dist/ReflectionProbe.d.ts +59 -0
  68. package/dist/ReflectionProbe.d.ts.map +1 -1
  69. package/dist/ReflectionProbe.js +224 -0
  70. package/dist/ReflectionProbe.js.map +1 -1
  71. package/dist/ReflectionSurfaces.d.ts +4 -2
  72. package/dist/ReflectionSurfaces.d.ts.map +1 -1
  73. package/dist/ReflectionSurfaces.js +13 -8
  74. package/dist/ReflectionSurfaces.js.map +1 -1
  75. package/dist/RenderBackend.d.ts +1 -1
  76. package/dist/RenderBackend.d.ts.map +1 -1
  77. package/dist/RenderBackend.js +5 -1
  78. package/dist/RenderBackend.js.map +1 -1
  79. package/dist/RenderDevice.d.ts +13 -2
  80. package/dist/RenderDevice.d.ts.map +1 -1
  81. package/dist/RenderDevice.js +5 -2
  82. package/dist/RenderDevice.js.map +1 -1
  83. package/dist/Renderer.d.ts +66 -3
  84. package/dist/Renderer.d.ts.map +1 -1
  85. package/dist/Renderer.js +417 -64
  86. package/dist/Renderer.js.map +1 -1
  87. package/dist/RendererPostprocessPlan.d.ts +10 -3
  88. package/dist/RendererPostprocessPlan.d.ts.map +1 -1
  89. package/dist/RendererPostprocessPlan.js +25 -5
  90. package/dist/RendererPostprocessPlan.js.map +1 -1
  91. package/dist/RendererVisualPipelineReport.d.ts +3 -2
  92. package/dist/RendererVisualPipelineReport.d.ts.map +1 -1
  93. package/dist/RendererVisualPipelineReport.js +2 -0
  94. package/dist/RendererVisualPipelineReport.js.map +1 -1
  95. package/dist/ScreenSpaceLineMaterial.d.ts +34 -0
  96. package/dist/ScreenSpaceLineMaterial.d.ts.map +1 -0
  97. package/dist/ScreenSpaceLineMaterial.js +93 -0
  98. package/dist/ScreenSpaceLineMaterial.js.map +1 -0
  99. package/dist/ShaderChunks.d.ts +7 -0
  100. package/dist/ShaderChunks.d.ts.map +1 -1
  101. package/dist/ShaderChunks.js +137 -0
  102. package/dist/ShaderChunks.js.map +1 -1
  103. package/dist/ShaderLibrary.d.ts +17 -0
  104. package/dist/ShaderLibrary.d.ts.map +1 -1
  105. package/dist/ShaderLibrary.js +940 -98
  106. package/dist/ShaderLibrary.js.map +1 -1
  107. package/dist/ShadowPass.d.ts +10 -0
  108. package/dist/ShadowPass.d.ts.map +1 -1
  109. package/dist/ShadowPass.js +8 -1
  110. package/dist/ShadowPass.js.map +1 -1
  111. package/dist/SkinnedLitMaterial.d.ts +6 -0
  112. package/dist/SkinnedLitMaterial.d.ts.map +1 -1
  113. package/dist/SkinnedLitMaterial.js +22 -8
  114. package/dist/SkinnedLitMaterial.js.map +1 -1
  115. package/dist/SkinnedUnlitMaterial.d.ts +8 -0
  116. package/dist/SkinnedUnlitMaterial.d.ts.map +1 -1
  117. package/dist/SkinnedUnlitMaterial.js +26 -9
  118. package/dist/SkinnedUnlitMaterial.js.map +1 -1
  119. package/dist/SpecularPrefilter.d.ts +42 -0
  120. package/dist/SpecularPrefilter.d.ts.map +1 -0
  121. package/dist/SpecularPrefilter.js +480 -0
  122. package/dist/SpecularPrefilter.js.map +1 -0
  123. package/dist/TerrainFixtures.d.ts +24 -0
  124. package/dist/TerrainFixtures.d.ts.map +1 -1
  125. package/dist/TerrainFixtures.js +96 -0
  126. package/dist/TerrainFixtures.js.map +1 -1
  127. package/dist/Texture.d.ts +7 -0
  128. package/dist/Texture.d.ts.map +1 -1
  129. package/dist/Texture.js +9 -0
  130. package/dist/Texture.js.map +1 -1
  131. package/dist/VertexFormat.d.ts +34 -1
  132. package/dist/VertexFormat.d.ts.map +1 -1
  133. package/dist/VertexFormat.js +61 -0
  134. package/dist/VertexFormat.js.map +1 -1
  135. package/dist/WebGL2Device.d.ts +48 -0
  136. package/dist/WebGL2Device.d.ts.map +1 -1
  137. package/dist/WebGL2Device.js +1298 -44
  138. package/dist/WebGL2Device.js.map +1 -1
  139. package/dist/WebGPUDevice.d.ts +7 -2
  140. package/dist/WebGPUDevice.d.ts.map +1 -1
  141. package/dist/WebGPUDevice.js +111 -17
  142. package/dist/WebGPUDevice.js.map +1 -1
  143. package/dist/WebGPUSkinningLimits.d.ts +14 -0
  144. package/dist/WebGPUSkinningLimits.d.ts.map +1 -0
  145. package/dist/WebGPUSkinningLimits.js +14 -0
  146. package/dist/WebGPUSkinningLimits.js.map +1 -0
  147. package/dist/cartoon/CartoonMaterialStyle.d.ts +19 -0
  148. package/dist/cartoon/CartoonMaterialStyle.d.ts.map +1 -0
  149. package/dist/cartoon/CartoonMaterialStyle.js +13 -0
  150. package/dist/cartoon/CartoonMaterialStyle.js.map +1 -0
  151. package/dist/cartoon/CartoonRenderPreset.d.ts +36 -0
  152. package/dist/cartoon/CartoonRenderPreset.d.ts.map +1 -0
  153. package/dist/cartoon/CartoonRenderPreset.js +23 -0
  154. package/dist/cartoon/CartoonRenderPreset.js.map +1 -0
  155. package/dist/cartoon/CartoonToonMaterial.d.ts +130 -0
  156. package/dist/cartoon/CartoonToonMaterial.d.ts.map +1 -0
  157. package/dist/cartoon/CartoonToonMaterial.js +303 -0
  158. package/dist/cartoon/CartoonToonMaterial.js.map +1 -0
  159. package/dist/cartoon/CartoonVisualQuality.d.ts +28 -0
  160. package/dist/cartoon/CartoonVisualQuality.d.ts.map +1 -0
  161. package/dist/cartoon/CartoonVisualQuality.js +39 -0
  162. package/dist/cartoon/CartoonVisualQuality.js.map +1 -0
  163. package/dist/cartoon/applyCartoonRenderPreset.d.ts +79 -0
  164. package/dist/cartoon/applyCartoonRenderPreset.d.ts.map +1 -0
  165. package/dist/cartoon/applyCartoonRenderPreset.js +88 -0
  166. package/dist/cartoon/applyCartoonRenderPreset.js.map +1 -0
  167. package/dist/cartoon/index.d.ts +6 -0
  168. package/dist/cartoon/index.d.ts.map +1 -0
  169. package/dist/cartoon/index.js +6 -0
  170. package/dist/cartoon/index.js.map +1 -0
  171. package/dist/index.d.ts +29 -18
  172. package/dist/index.d.ts.map +1 -1
  173. package/dist/index.js +16 -10
  174. package/dist/index.js.map +1 -1
  175. package/dist/postprocess/NativeLdrEffectLuts.d.ts +93 -0
  176. package/dist/postprocess/NativeLdrEffectLuts.d.ts.map +1 -0
  177. package/dist/postprocess/NativeLdrEffectLuts.js +202 -0
  178. package/dist/postprocess/NativeLdrEffectLuts.js.map +1 -0
  179. package/dist/production-runtime/PBRHDRPipeline.d.ts.map +1 -1
  180. package/dist/production-runtime/PBRHDRPipeline.js +3 -0
  181. package/dist/production-runtime/PBRHDRPipeline.js.map +1 -1
  182. package/dist/production-runtime/ProductionRendererTypes.d.ts +1 -0
  183. package/dist/production-runtime/ProductionRendererTypes.d.ts.map +1 -1
  184. package/dist/production-runtime/ProductionRendererTypes.js.map +1 -1
  185. package/dist/production-runtime/ProductionWebGL2Renderer.d.ts.map +1 -1
  186. package/dist/production-runtime/ProductionWebGL2Renderer.js +5 -3
  187. package/dist/production-runtime/ProductionWebGL2Renderer.js.map +1 -1
  188. package/dist/production-runtime/ProductionWebGPURenderer.d.ts.map +1 -1
  189. package/dist/production-runtime/ProductionWebGPURenderer.js +9 -5
  190. package/dist/production-runtime/ProductionWebGPURenderer.js.map +1 -1
  191. package/dist/production-runtime/TransmissionBackdropCapture.d.ts +5 -0
  192. package/dist/production-runtime/TransmissionBackdropCapture.d.ts.map +1 -1
  193. package/dist/production-runtime/TransmissionBackdropCapture.js +40 -0
  194. package/dist/production-runtime/TransmissionBackdropCapture.js.map +1 -1
  195. package/dist/production-runtime/environment/HDRLoader.d.ts +6 -0
  196. package/dist/production-runtime/environment/HDRLoader.d.ts.map +1 -1
  197. package/dist/production-runtime/environment/HDRLoader.js +19 -0
  198. package/dist/production-runtime/environment/HDRLoader.js.map +1 -1
  199. package/dist/production-runtime/index.d.ts +3 -1
  200. package/dist/production-runtime/index.d.ts.map +1 -1
  201. package/dist/production-runtime/index.js +1 -0
  202. package/dist/production-runtime/index.js.map +1 -1
  203. package/package.json +3 -3
@@ -62,6 +62,7 @@ export interface WebGPUTextureDescriptorLike {
62
62
  readonly format: string;
63
63
  readonly usage: number;
64
64
  readonly mipLevelCount?: number;
65
+ readonly sampleCount?: number;
65
66
  }
66
67
  export interface WebGPUTextureLike {
67
68
  createView(): unknown;
@@ -110,6 +111,9 @@ export interface WebGPURenderPipelineDescriptorLike {
110
111
  readonly depthWriteEnabled: boolean;
111
112
  readonly depthCompare: "less-equal" | "always";
112
113
  };
114
+ readonly multisample?: {
115
+ readonly count: number;
116
+ };
113
117
  }
114
118
  export interface WebGPUVertexBufferLayoutLike {
115
119
  readonly arrayStride: number;
@@ -176,6 +180,7 @@ export interface WebGPURenderPassDescriptorLike {
176
180
  readonly colorAttachments: readonly [
177
181
  {
178
182
  readonly view: unknown;
183
+ readonly resolveTarget?: unknown;
179
184
  readonly clearValue?: readonly [number, number, number, number];
180
185
  readonly loadOp: "clear" | "load";
181
186
  readonly storeOp: "store";
@@ -204,8 +209,7 @@ export interface WebGPUDeviceOptions {
204
209
  readonly canvas?: HTMLCanvasElement | OffscreenCanvas;
205
210
  readonly presentationFormat?: string;
206
211
  }
207
- /** Joint-palette capacity of the WebGPU skinning path — parity with the WebGL2 `u_jointMatrices[96]`. */
208
- export declare const MAX_WEBGPU_SKINNING_JOINTS = 96;
212
+ export { MAX_WEBGPU_SKINNING_JOINTS } from "./WebGPUSkinningLimits";
209
213
  export declare class WebGPUDevice implements RenderDevice {
210
214
  private readonly adapter;
211
215
  private readonly device;
@@ -278,6 +282,7 @@ export declare class WebGPUDevice implements RenderDevice {
278
282
  private submitNativeRenderPass;
279
283
  private flushNativeRenderTargetClear;
280
284
  private createNativeSampledTextureBinding;
285
+ private releaseDisposedNativeSampledTextures;
281
286
  private createNativePbrTextureBindings;
282
287
  private createNativeFallbackSampledTextureBinding;
283
288
  private createNativeDrawUniformBuffer;
@@ -1 +1 @@
1
- {"version":3,"file":"WebGPUDevice.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/WebGPUDevice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebGPUDevice.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/WebGPUDevice.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { RenderDeviceError, viewBytes } from "./RenderDevice.js";
2
+ import { MAX_WEBGPU_SKINNING_JOINTS } from "./WebGPUSkinningLimits.js";
2
3
  import { reflectShaderSources } from "./ShaderReflection.js";
3
4
  import { Texture, bytesPerPixel, isCompressedTextureFormat } from "./Texture.js";
4
5
  import { TextureBinding } from "./TextureBinding.js";
@@ -81,13 +82,16 @@ class WebGPURenderTarget {
81
82
  nativeDepthTexture;
82
83
  nativeDepthView;
83
84
  hasDepth;
85
+ sampleCount;
86
+ nativeMultisampleTexture;
87
+ nativeMultisampleView;
84
88
  disposed = false;
85
89
  nativeNeedsClear = true;
86
90
  nativeClearColor = [0, 0, 0, 1];
87
91
  colorPixels;
88
92
  colorFloatPixels;
89
93
  depthPixels;
90
- constructor(id, width, height, label, colorTexture, depthTexture, nativeTexture, nativeView, nativeDepthTexture, nativeDepthView, hasDepth) {
94
+ constructor(id, width, height, label, colorTexture, depthTexture, nativeTexture, nativeView, nativeDepthTexture, nativeDepthView, hasDepth, sampleCount, nativeMultisampleTexture, nativeMultisampleView) {
91
95
  this.id = id;
92
96
  this.width = width;
93
97
  this.height = height;
@@ -99,6 +103,9 @@ class WebGPURenderTarget {
99
103
  this.nativeDepthTexture = nativeDepthTexture;
100
104
  this.nativeDepthView = nativeDepthView;
101
105
  this.hasDepth = hasDepth;
106
+ this.sampleCount = sampleCount;
107
+ this.nativeMultisampleTexture = nativeMultisampleTexture;
108
+ this.nativeMultisampleView = nativeMultisampleView;
102
109
  this.colorPixels = new Uint8Array(width * height * 4);
103
110
  this.colorFloatPixels = colorTexture.format === "rgba16f" || colorTexture.format === "rgba32f"
104
111
  ? new Float32Array(width * height * 4)
@@ -109,14 +116,14 @@ class WebGPURenderTarget {
109
116
  if (!this.disposed) {
110
117
  this.nativeTexture?.destroy();
111
118
  this.nativeDepthTexture?.destroy();
119
+ this.nativeMultisampleTexture?.destroy();
112
120
  this.colorTexture.dispose();
113
121
  this.depthTexture?.dispose();
114
122
  this.disposed = true;
115
123
  }
116
124
  }
117
125
  }
118
- /** Joint-palette capacity of the WebGPU skinning path — parity with the WebGL2 `u_jointMatrices[96]`. */
119
- export const MAX_WEBGPU_SKINNING_JOINTS = 96;
126
+ export { MAX_WEBGPU_SKINNING_JOINTS } from "./WebGPUSkinningLimits.js";
120
127
  export class WebGPUDevice {
121
128
  adapter;
122
129
  device;
@@ -297,12 +304,35 @@ export class WebGPUDevice {
297
304
  label: descriptor.label
298
305
  });
299
306
  }
307
+ const sampleCount = descriptor.sampleCount ?? 1;
308
+ if (sampleCount !== 1 && sampleCount !== 4) {
309
+ throw new RenderDeviceError("WebGPU render-target sampleCount must be 1 or 4.", "INVALID_RENDER_TARGET_SAMPLE_COUNT", {
310
+ sampleCount,
311
+ label: descriptor.label
312
+ });
313
+ }
314
+ if (sampleCount > 1 && descriptor.depth === "texture") {
315
+ throw new RenderDeviceError("WebGPU multisampled targets cannot resolve depth into a sampleable texture.", "MULTISAMPLE_DEPTH_RESOLVE_UNSUPPORTED", {
316
+ sampleCount,
317
+ label: descriptor.label
318
+ });
319
+ }
320
+ const textureFormat = webgpuTextureFormat(descriptor.format ?? "rgba8");
300
321
  const nativeTexture = this.device.createTexture?.({
301
322
  label: descriptor.label ?? "aura3d-webgpu-render-target",
302
323
  size: [descriptor.width, descriptor.height],
303
- format: webgpuTextureFormat(descriptor.format ?? "rgba8"),
324
+ format: textureFormat,
304
325
  usage: TEXTURE_USAGE.RENDER_ATTACHMENT | TEXTURE_USAGE.COPY_SRC | TEXTURE_USAGE.COPY_DST | TEXTURE_USAGE.TEXTURE_BINDING
305
326
  }) ?? null;
327
+ const nativeMultisampleTexture = sampleCount > 1
328
+ ? this.device.createTexture?.({
329
+ label: `${descriptor.label ?? "aura3d-webgpu-render-target"}-multisample`,
330
+ size: [descriptor.width, descriptor.height],
331
+ format: textureFormat,
332
+ usage: TEXTURE_USAGE.RENDER_ATTACHMENT,
333
+ sampleCount
334
+ }) ?? null
335
+ : null;
306
336
  const hasDepth = descriptor.depth !== false;
307
337
  const hasSampleableDepth = descriptor.depth === "texture";
308
338
  const nativeDepthTexture = hasDepth
@@ -310,13 +340,14 @@ export class WebGPUDevice {
310
340
  label: `${descriptor.label ?? "aura3d-webgpu-render-target"}-depth`,
311
341
  size: [descriptor.width, descriptor.height],
312
342
  format: DEPTH_TEXTURE_FORMAT,
313
- usage: TEXTURE_USAGE.RENDER_ATTACHMENT | (hasSampleableDepth ? TEXTURE_USAGE.TEXTURE_BINDING : 0)
343
+ usage: TEXTURE_USAGE.RENDER_ATTACHMENT | (hasSampleableDepth ? TEXTURE_USAGE.TEXTURE_BINDING : 0),
344
+ sampleCount
314
345
  }) ?? null
315
346
  : null;
316
347
  const depthTexture = hasSampleableDepth
317
348
  ? new Texture({ width: descriptor.width, height: descriptor.height, format: "depth24", label: `${descriptor.label ?? "render-target"}-depth` })
318
349
  : undefined;
319
- const target = new WebGPURenderTarget(this.nextId++, descriptor.width, descriptor.height, descriptor.label ?? "render-target", new Texture({ width: descriptor.width, height: descriptor.height, format: descriptor.format ?? "rgba8", label: descriptor.label ?? "render-target-color" }), depthTexture, nativeTexture, nativeTexture?.createView() ?? null, nativeDepthTexture, nativeDepthTexture?.createView() ?? null, hasDepth);
350
+ const target = new WebGPURenderTarget(this.nextId++, descriptor.width, descriptor.height, descriptor.label ?? "render-target", new Texture({ width: descriptor.width, height: descriptor.height, format: descriptor.format ?? "rgba8", label: descriptor.label ?? "render-target-color" }), depthTexture, nativeTexture, nativeTexture?.createView() ?? null, nativeDepthTexture, nativeDepthTexture?.createView() ?? null, hasDepth, sampleCount, nativeMultisampleTexture, nativeMultisampleTexture?.createView() ?? null);
320
351
  this.renderTargets.add(target);
321
352
  return target;
322
353
  }
@@ -634,6 +665,7 @@ export class WebGPUDevice {
634
665
  this.lastError = null;
635
666
  this.viewportWidth = width;
636
667
  this.viewportHeight = height;
668
+ this.releaseDisposedNativeSampledTextures();
637
669
  this.ensureCanvasDepthAttachment(width, height);
638
670
  }
639
671
  clear(color) {
@@ -742,6 +774,7 @@ export class WebGPUDevice {
742
774
  buffers: [...this.buffers].filter((buffer) => !buffer.disposed).length,
743
775
  shaders: [...this.shaders].filter((shader) => !shader.disposed).length,
744
776
  renderTargets: liveRenderTargets.length,
777
+ maxRenderTargetSampleCount: Math.max(1, ...liveRenderTargets.map((target) => target.sampleCount)),
745
778
  textures: liveRenderTargets.length,
746
779
  bufferBytes,
747
780
  textureBytes,
@@ -920,7 +953,8 @@ export class WebGPUDevice {
920
953
  }
921
954
  }
922
955
  submitNativeRenderPass(command, vertexBuffer) {
923
- const nativeView = this.activeRenderTarget?.nativeView ?? this.currentCanvasView();
956
+ const resolveView = this.activeRenderTarget?.nativeView ?? null;
957
+ const nativeView = this.activeRenderTarget?.nativeMultisampleView ?? resolveView ?? this.currentCanvasView();
924
958
  if (!nativeView || !command.shader)
925
959
  return;
926
960
  if (!hasNativeRenderPipeline(this.device))
@@ -941,7 +975,8 @@ export class WebGPUDevice {
941
975
  const depthWriteEnabled = command.renderState?.depthWrite ?? true;
942
976
  const depthCompare = command.renderState?.depthCompare ?? "less-equal";
943
977
  const blendEnabled = command.renderState?.blend === true;
944
- const pipelineKey = `${shader.nativeUniformLayout}:${topology}:${targetFormat}:${blendEnabled ? "blend" : "opaque"}:${depthEnabled ? `${depthWriteEnabled}:${depthCompare}` : "nodepth"}:${command.vertexFormat?.stride ?? 0}:${command.vertexFormat?.attributes.map((attribute) => `${attribute.shaderLocation}/${attribute.offset}/${attribute.components}`).join(",") ?? "none"}`;
978
+ const sampleCount = this.activeRenderTarget?.sampleCount ?? 1;
979
+ const pipelineKey = `${shader.nativeUniformLayout}:${topology}:${targetFormat}:samples=${sampleCount}:${blendEnabled ? "blend" : "opaque"}:${depthEnabled ? `${depthWriteEnabled}:${depthCompare}` : "nodepth"}:${command.vertexFormat?.stride ?? 0}:${command.vertexFormat?.attributes.map((attribute) => `${attribute.shaderLocation}/${attribute.offset}/${attribute.components}`).join(",") ?? "none"}`;
945
980
  let pipeline = shader.renderPipelines.get(pipelineKey);
946
981
  if (!pipeline) {
947
982
  pipeline = this.device.createRenderPipeline({
@@ -964,6 +999,7 @@ export class WebGPUDevice {
964
999
  }]
965
1000
  },
966
1001
  primitive: { topology },
1002
+ ...(sampleCount > 1 ? { multisample: { count: sampleCount } } : {}),
967
1003
  ...(depthEnabled
968
1004
  ? {
969
1005
  depthStencil: {
@@ -1012,7 +1048,9 @@ export class WebGPUDevice {
1012
1048
  { binding: 11, resource: materialTextures.metallicRoughness.sampler },
1013
1049
  { binding: 12, resource: materialTextures.metallicRoughness.view },
1014
1050
  { binding: 13, resource: materialTextures.occlusion.sampler },
1015
- { binding: 14, resource: materialTextures.occlusion.view }
1051
+ { binding: 14, resource: materialTextures.occlusion.view },
1052
+ { binding: 15, resource: materialTextures.clusterLightData.view },
1053
+ { binding: 16, resource: materialTextures.clusterLightIndices.view }
1016
1054
  ] : [])
1017
1055
  ]
1018
1056
  })
@@ -1021,6 +1059,7 @@ export class WebGPUDevice {
1021
1059
  label: `${command.label ?? "draw"}-pass`,
1022
1060
  colorAttachments: [{
1023
1061
  view: nativeView,
1062
+ ...(sampleCount > 1 && resolveView ? { resolveTarget: resolveView } : {}),
1024
1063
  clearValue: this.activeRenderTarget?.nativeClearColor ?? this.clearColor,
1025
1064
  loadOp: shouldClear ? "clear" : "load",
1026
1065
  storeOp: "store"
@@ -1094,13 +1133,15 @@ export class WebGPUDevice {
1094
1133
  this.canvasSubmissions += 1;
1095
1134
  }
1096
1135
  flushNativeRenderTargetClear(target) {
1097
- if (!target.nativeNeedsClear || !target.nativeView || !this.device.createCommandEncoder)
1136
+ const drawView = target.nativeMultisampleView ?? target.nativeView;
1137
+ if (!target.nativeNeedsClear || !drawView || !this.device.createCommandEncoder)
1098
1138
  return;
1099
1139
  const encoder = this.device.createCommandEncoder({ label: `${target.label}-native-clear` });
1100
1140
  const pass = encoder.beginRenderPass({
1101
1141
  label: `${target.label}-native-clear-pass`,
1102
1142
  colorAttachments: [{
1103
- view: target.nativeView,
1143
+ view: drawView,
1144
+ ...(target.sampleCount > 1 && target.nativeView ? { resolveTarget: target.nativeView } : {}),
1104
1145
  clearValue: target.nativeClearColor,
1105
1146
  loadOp: "clear",
1106
1147
  storeOp: "store"
@@ -1176,6 +1217,14 @@ export class WebGPUDevice {
1176
1217
  actual: true
1177
1218
  };
1178
1219
  }
1220
+ releaseDisposedNativeSampledTextures() {
1221
+ for (const [texture, resource] of this.nativeSampledTextures) {
1222
+ if (texture instanceof Texture && texture.disposed) {
1223
+ resource.texture.destroy();
1224
+ this.nativeSampledTextures.delete(texture);
1225
+ }
1226
+ }
1227
+ }
1179
1228
  createNativePbrTextureBindings(command) {
1180
1229
  if (!hasNativeSampledTextureBinding(this.device))
1181
1230
  return null;
@@ -1186,6 +1235,8 @@ export class WebGPUDevice {
1186
1235
  const normalBinding = uniformTextureBinding(command.uniforms, "u_normalTexture");
1187
1236
  const metallicRoughnessBinding = uniformTextureBinding(command.uniforms, "u_metallicRoughnessTexture");
1188
1237
  const occlusionBinding = uniformTextureBinding(command.uniforms, "u_occlusionTexture");
1238
+ const clusterLightDataBinding = uniformTextureBinding(command.uniforms, "u_clusterLightData");
1239
+ const clusterLightIndicesBinding = uniformTextureBinding(command.uniforms, "u_clusterLightIndices");
1189
1240
  const base = this.createNativeSampledTextureBinding(baseBinding) ?? this.createNativeFallbackSampledTextureBinding("white-srgb", [255, 255, 255, 255], "srgb");
1190
1241
  const environment = this.createNativeSampledTextureBinding(environmentBinding) ?? this.createNativeFallbackSampledTextureBinding("environment-srgb", [92, 116, 156, 255], "srgb");
1191
1242
  const brdf = this.createNativeSampledTextureBinding(brdfBinding) ?? this.createNativeFallbackSampledTextureBinding("brdf-linear", [180, 180, 255, 255], "linear");
@@ -1193,7 +1244,9 @@ export class WebGPUDevice {
1193
1244
  const normal = this.createNativeSampledTextureBinding(normalBinding) ?? this.createNativeFallbackSampledTextureBinding("flat-normal-linear", [128, 128, 255, 255], "linear");
1194
1245
  const metallicRoughness = this.createNativeSampledTextureBinding(metallicRoughnessBinding) ?? this.createNativeFallbackSampledTextureBinding("metallic-roughness-linear", [255, 255, 255, 255], "linear");
1195
1246
  const occlusion = this.createNativeSampledTextureBinding(occlusionBinding) ?? this.createNativeFallbackSampledTextureBinding("occlusion-linear", [255, 255, 255, 255], "linear");
1196
- if (!base || !environment || !brdf || !shadow || !normal || !metallicRoughness || !occlusion)
1247
+ const clusterLightData = this.createNativeSampledTextureBinding(clusterLightDataBinding) ?? this.createNativeFallbackSampledTextureBinding("cluster-light-data-linear", [0, 0, 0, 0], "linear");
1248
+ const clusterLightIndices = this.createNativeSampledTextureBinding(clusterLightIndicesBinding) ?? this.createNativeFallbackSampledTextureBinding("cluster-light-indices-linear", [0, 0, 0, 0], "linear");
1249
+ if (!base || !environment || !brdf || !shadow || !normal || !metallicRoughness || !occlusion || !clusterLightData || !clusterLightIndices)
1197
1250
  return null;
1198
1251
  return {
1199
1252
  base,
@@ -1203,6 +1256,8 @@ export class WebGPUDevice {
1203
1256
  normal,
1204
1257
  metallicRoughness,
1205
1258
  occlusion,
1259
+ clusterLightData,
1260
+ clusterLightIndices,
1206
1261
  actualBaseColor: baseBinding !== null && base.actual,
1207
1262
  actualEnvironment: environmentBinding !== null && environment.actual,
1208
1263
  actualBrdf: brdfBinding !== null && brdf.actual,
@@ -1270,11 +1325,13 @@ export class WebGPUDevice {
1270
1325
  data[160] = uniformNumber(command.uniforms?.get("u_alphaCutoff"), 0);
1271
1326
  data[161] = uniformNumber(command.uniforms?.get("u_transmissionFactor"), 0);
1272
1327
  data[162] = uniformNumber(command.uniforms?.get("u_diffuseTransmissionFactor"), 0);
1328
+ data[163] = uniformVec2(command.uniforms?.get("u_clusterGridSize"))?.[0] ?? 1;
1273
1329
  data.set(uniformVec3(command.uniforms?.get("u_cameraPosition")) ?? [0, 0, 1], 164);
1274
1330
  data[167] = 1;
1275
1331
  data[168] = uniformNumber(command.uniforms?.get("u_metallicRoughnessTextureEnabled"), metallicRoughnessBinding ? 1 : 0);
1276
1332
  data[169] = uniformNumber(command.uniforms?.get("u_occlusionTextureEnabled"), occlusionBinding ? 1 : 0);
1277
1333
  data[170] = uniformNumber(command.uniforms?.get("u_productColorSmoothing"), 0);
1334
+ data[171] = uniformNumber(command.uniforms?.get("u_clusteredLightEnabled"), 0);
1278
1335
  data.set(uniformMat4(command.uniforms?.get("u_normalMatrix")) ?? identityMatrix(), 172);
1279
1336
  const modelMatrix = uniformMat4(command.uniforms?.get("u_modelMatrix")) ?? identityMatrix();
1280
1337
  const instanceMatrixValue = command.uniforms?.get("u_instanceMatrices");
@@ -1647,6 +1704,12 @@ function uniformVec3(value) {
1647
1704
  ? [components[0], components[1], components[2]]
1648
1705
  : null;
1649
1706
  }
1707
+ function uniformVec2(value) {
1708
+ const components = value instanceof Float32Array || Array.isArray(value) ? Array.from(value).slice(0, 2) : [];
1709
+ return components.length === 2 && components.every(Number.isFinite)
1710
+ ? [components[0], components[1]]
1711
+ : null;
1712
+ }
1650
1713
  function uniformMat4Array(value, count) {
1651
1714
  const numbers = value instanceof Float32Array || Array.isArray(value) ? Array.from(value) : [];
1652
1715
  return Array.from({ length: count }, (_, index) => {
@@ -2086,6 +2149,8 @@ ${nativeUniformStruct()}
2086
2149
  @group(0) @binding(12) var u_metallicRoughnessTexture: texture_2d<f32>;
2087
2150
  @group(0) @binding(13) var u_occlusionSampler: sampler;
2088
2151
  @group(0) @binding(14) var u_occlusionTexture: texture_2d<f32>;
2152
+ @group(0) @binding(15) var u_clusterLightData: texture_2d<f32>;
2153
+ @group(0) @binding(16) var u_clusterLightIndices: texture_2d<f32>;
2089
2154
 
2090
2155
  struct VertexOutput {
2091
2156
  @builtin(position) position: vec4<f32>,
@@ -2177,7 +2242,7 @@ fn perturbNormal(normalInput: vec3<f32>, tangentFrame: vec4<f32>, normalSample:
2177
2242
  return normalize(tangent * mapped.x + bitangent * mapped.y + n * max(mapped.z, 0.001));
2178
2243
  }
2179
2244
 
2180
- fn shadePbr(normalInput: vec3<f32>, tangentFrame: vec4<f32>, uv: vec2<f32>, worldPosition: vec3<f32>) -> vec4<f32> {
2245
+ fn shadePbr(normalInput: vec3<f32>, tangentFrame: vec4<f32>, uv: vec2<f32>, worldPosition: vec3<f32>, fragmentPosition: vec2<f32>) -> vec4<f32> {
2181
2246
  var normal = normalize(normalInput);
2182
2247
  if (u_draw.morph0.x > 0.5) {
2183
2248
  normal = perturbNormal(normal, tangentFrame, textureSample(u_normalTexture, u_normalSampler, uv).rgb, u_draw.morph0.y);
@@ -2245,7 +2310,36 @@ fn shadePbr(normalInput: vec3<f32>, tangentFrame: vec4<f32>, uv: vec2<f32>, worl
2245
2310
  let shadowDepth = textureSampleLevel(u_shadowTexture, u_shadowSampler, vec2<f32>(0.5, 0.5), 0.0).r;
2246
2311
  shadow = mix(1.0, shadowDepth, clamp(u_draw.flags.z, 0.0, 1.0));
2247
2312
  }
2248
- let litOpaqueLinearColor = environment + (diffuse + specular) * nDotL * 2.25 * shadow;
2313
+ var clusteredDirect = vec3<f32>(0.0, 0.0, 0.0);
2314
+ if (u_draw.materialFlags.w > 0.5) {
2315
+ let indexDimensions = textureDimensions(u_clusterLightIndices);
2316
+ let gridWidth = max(i32(u_draw.material.w), 1);
2317
+ let tileX = max(i32(fragmentPosition.x) / 64, 0);
2318
+ let tileY = max(i32(fragmentPosition.y) / 64, 0);
2319
+ let clusterIndex = clamp(tileY * gridWidth + tileX, 0, i32(indexDimensions.y) - 1);
2320
+ let clusterLightCount = min(i32(textureLoad(u_clusterLightIndices, vec2<i32>(0, clusterIndex), 0).g), 64);
2321
+ for (var clusteredIndex = 0; clusteredIndex < 64; clusteredIndex = clusteredIndex + 1) {
2322
+ if (clusteredIndex >= clusterLightCount) { break; }
2323
+ let lightIndex = i32(textureLoad(u_clusterLightIndices, vec2<i32>(clusteredIndex, clusterIndex), 0).r);
2324
+ let colorIntensity = textureLoad(u_clusterLightData, vec2<i32>(0, lightIndex), 0);
2325
+ let positionRange = textureLoad(u_clusterLightData, vec2<i32>(1, lightIndex), 0);
2326
+ let directionKind = textureLoad(u_clusterLightData, vec2<i32>(2, lightIndex), 0);
2327
+ var clusteredDirection = normalize(-directionKind.xyz);
2328
+ var attenuation = 1.0;
2329
+ if (directionKind.w > 0.5) {
2330
+ let toLight = positionRange.xyz - worldPosition;
2331
+ let distanceToLight = length(toLight);
2332
+ clusteredDirection = select(clusteredDirection, toLight / max(distanceToLight, 0.0001), distanceToLight > 0.0001);
2333
+ let range = max(positionRange.w, 0.0001);
2334
+ let rangeFalloff = clamp(1.0 - pow(distanceToLight / range, 4.0), 0.0, 1.0);
2335
+ attenuation = rangeFalloff * rangeFalloff / max(distanceToLight * distanceToLight, 1.0);
2336
+ }
2337
+ let clusteredNdotL = max(dot(normal, clusteredDirection), 0.0);
2338
+ clusteredDirect = clusteredDirect + baseColor * colorIntensity.rgb * colorIntensity.a * attenuation * clusteredNdotL;
2339
+ }
2340
+ }
2341
+ let legacyDirect = (diffuse + specular) * nDotL * 2.25 * shadow;
2342
+ let litOpaqueLinearColor = environment + select(legacyDirect, clusteredDirect, u_draw.materialFlags.w > 0.5);
2249
2343
  let smoothedBodyColor = mix(baseColor, vec3<f32>(1.0, 0.88, 0.012), productBodyGate * 0.32);
2250
2344
  let smoothedBeakColor = mix(baseColor, vec3<f32>(1.0, 0.24, 0.018), productOrangeGate * 0.82);
2251
2345
  let softBodyProduct = smoothedBodyColor * (1.5 + 0.06 * nDotL) + specular * nDotL * 0.018;
@@ -2286,7 +2380,7 @@ fn ${vertexEntry}(@location(0) position: vec3<f32>, @location(1) normal: vec3<f3
2286
2380
  fragment: `${nativePbrFragmentPrelude(marker)}
2287
2381
  @fragment
2288
2382
  fn ${fragmentEntry}(input: VertexOutput) -> @location(0) vec4<f32> {
2289
- return shadePbr(input.normal, input.tangent, input.uv, input.worldPosition);
2383
+ return shadePbr(input.normal, input.tangent, input.uv, input.worldPosition, input.position.xy);
2290
2384
  }
2291
2385
  `
2292
2386
  };
@@ -2318,7 +2412,7 @@ fn ${vertexEntry}(@location(0) position: vec3<f32>, @location(1) normal: vec3<f3
2318
2412
  fragment: `${nativePbrFragmentPrelude(marker)}
2319
2413
  @fragment
2320
2414
  fn ${fragmentEntry}(input: VertexOutput) -> @location(0) vec4<f32> {
2321
- return shadePbr(input.normal, input.tangent, input.uv, input.worldPosition);
2415
+ return shadePbr(input.normal, input.tangent, input.uv, input.worldPosition, input.position.xy);
2322
2416
  }
2323
2417
  `
2324
2418
  };
@@ -2358,7 +2452,7 @@ fn ${vertexEntry}(@location(0) position: vec3<f32>, @location(1) normal: vec3<f3
2358
2452
  fragment: `${nativePbrFragmentPrelude(marker)}
2359
2453
  @fragment
2360
2454
  fn ${fragmentEntry}(input: VertexOutput) -> @location(0) vec4<f32> {
2361
- return shadePbr(input.normal, input.tangent, input.uv, input.worldPosition);
2455
+ return shadePbr(input.normal, input.tangent, input.uv, input.worldPosition, input.position.xy);
2362
2456
  }
2363
2457
  `
2364
2458
  };