@aura3d/rendering 1.3.2 → 1.4.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.
@@ -1 +1 @@
1
- {"version":3,"file":"RenderItemSorting.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/performance/RenderItemSorting.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,MAAM,GAAG,aAAa,CAAC;AAElE,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,OAAO;IAC9C,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CAC1C;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAAC;CAClD;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;CAC1C;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,KAAK,EAAE,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,EACxC,OAAO,GAAE,sBAA2B,GACnC,eAAe,CAAC,CAAC,CAAC,CA8CpB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,cAAc,EAAE,iBAAiB,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,kBAAkB,EAAE,GAAG,kBAAkB,EAAE,CAO1F"}
1
+ {"version":3,"file":"RenderItemSorting.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/performance/RenderItemSorting.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,cAAc,GAAG,MAAM,GAAG,aAAa,CAAC;AAEnF,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,OAAO;IAC9C,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CAC1C;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAAC;CAClD;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;CAC1C;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,KAAK,EAAE,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,EACxC,OAAO,GAAE,sBAA2B,GACnC,eAAe,CAAC,CAAC,CAAC,CA8CpB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,cAAc,EAAE,iBAAiB,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,kBAAkB,EAAE,GAAG,kBAAkB,EAAE,CAO1F"}
@@ -54,9 +54,11 @@ export function sortRenderItems(items) {
54
54
  function bucketRank(bucket) {
55
55
  if (bucket === "opaque")
56
56
  return 0;
57
- if (bucket === "mask")
57
+ if (bucket === "transmission")
58
58
  return 1;
59
- return 2;
59
+ if (bucket === "mask")
60
+ return 2;
61
+ return 3;
60
62
  }
61
63
  function validateRenderQueueItem(item, index) {
62
64
  if (!Number.isFinite(item.depth)) {
@@ -101,6 +103,7 @@ function buildDiagnostics(items, opaqueFrontToBack, transparentBackToFront) {
101
103
  largestBatch,
102
104
  materialSwitches: pipelineTransitions,
103
105
  opaqueCount: items.filter((item) => item.bucket === "opaque").length,
106
+ transmissionCount: items.filter((item) => item.bucket === "transmission").length,
104
107
  maskedCount: items.filter((item) => item.bucket === "mask").length,
105
108
  transparentCount: items.filter((item) => item.bucket === "transparent").length,
106
109
  pipelineTransitions,
@@ -1 +1 @@
1
- {"version":3,"file":"RenderItemSorting.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/performance/RenderItemSorting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RenderItemSorting.js","sourceRoot":"","sources":["../../../../../packages/rendering/src/performance/RenderItemSorting.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aura3d/rendering",
3
- "version": "1.3.2",
3
+ "version": "1.4.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -11,8 +11,8 @@
11
11
  "main": "./dist/index.js",
12
12
  "types": "./dist/index.d.ts",
13
13
  "dependencies": {
14
- "@aura3d/math": "1.3.2",
15
- "@aura3d/scene": "1.3.2"
14
+ "@aura3d/math": "1.4.0",
15
+ "@aura3d/scene": "1.4.0"
16
16
  },
17
17
  "sideEffects": false
18
18
  }
@@ -30,6 +30,7 @@ export interface RenderItem {
30
30
  readonly instanceTransforms?: Float32Array | readonly number[];
31
31
  readonly instanceColors?: Float32Array | readonly number[];
32
32
  readonly instanceAttributes?: readonly RenderItemInstanceAttribute[];
33
+ readonly boundingBoxCenter?: readonly [number, number, number];
33
34
  }
34
35
 
35
36
  export interface RenderItemDrawRange {
@@ -541,7 +542,12 @@ function multiplyMat4(left: Mat4, right: Mat4): Mat4 {
541
542
  }
542
543
 
543
544
  function normalMatrixFromModel(modelMatrix: Mat4): Mat4 {
544
- const matrix = transposeMat4(invertMat4(modelMatrix));
545
+ let matrix: Mat4;
546
+ try {
547
+ matrix = transposeMat4(invertMat4(modelMatrix));
548
+ } catch {
549
+ matrix = [...identityMatrix()] as Mat4;
550
+ }
545
551
  return [
546
552
  matrix[0], matrix[1], matrix[2], 0,
547
553
  matrix[4], matrix[5], matrix[6], 0,
@@ -1225,7 +1231,7 @@ function sortForwardRenderItems(
1225
1231
  ): readonly RenderItem[] {
1226
1232
  return sortRenderQueueItems(items.map((item) => ({
1227
1233
  item,
1228
- bucket: isTransparentRenderItem(item) ? "transparent" : "opaque",
1234
+ bucket: isTransparentRenderItem(item) ? "transparent" : isTransmissionRenderItem(item) ? "transmission" : "opaque",
1229
1235
  depth: cameraPosition ? distanceSquaredFromCamera(item, cameraPosition) : 0,
1230
1236
  pipelineKey: renderItemPipelineKey(item),
1231
1237
  batchKey: renderItemPipelineKey(item),
@@ -1238,11 +1244,29 @@ function isTransparentRenderItem(item: RenderItem): boolean {
1238
1244
  return getBaseMaterial(material).renderState.blend;
1239
1245
  }
1240
1246
 
1247
+ function materialNumericParameter(material: Material, name: string, fallback: number): number {
1248
+ const value = material.getParameter(name);
1249
+ return typeof value === "number" && Number.isFinite(value) ? value : fallback;
1250
+ }
1251
+
1252
+ function isTransmissionRenderItem(item: RenderItem): boolean {
1253
+ const material = item.material ?? new UnlitMaterial();
1254
+ const baseMaterial = getBaseMaterial(material);
1255
+ if (baseMaterial.renderState.blend) return false;
1256
+ const transmissionFactor = materialNumericParameter(baseMaterial, "u_transmissionFactor", 0);
1257
+ const diffuseTransmissionFactor = materialNumericParameter(baseMaterial, "u_diffuseTransmissionFactor", 0);
1258
+ const volumeThicknessFactor = materialNumericParameter(baseMaterial, "u_volumeThicknessFactor", 0);
1259
+ return transmissionFactor > 0.001 || diffuseTransmissionFactor > 0.001 || volumeThicknessFactor > 0.001;
1260
+ }
1261
+
1241
1262
  function distanceSquaredFromCamera(item: RenderItem, cameraPosition: readonly [number, number, number]): number {
1242
- const transform = item.modelMatrix ?? identityMatrix();
1243
- const x = (transform[12] ?? 0) - cameraPosition[0];
1244
- const y = (transform[13] ?? 0) - cameraPosition[1];
1245
- const z = (transform[14] ?? 0) - cameraPosition[2];
1263
+ const center = item.boundingBoxCenter;
1264
+ const tx = center?.[0] ?? item.modelMatrix?.[12] ?? 0;
1265
+ const ty = center?.[1] ?? item.modelMatrix?.[13] ?? 0;
1266
+ const tz = center?.[2] ?? item.modelMatrix?.[14] ?? 0;
1267
+ const x = tx - cameraPosition[0];
1268
+ const y = ty - cameraPosition[1];
1269
+ const z = tz - cameraPosition[2];
1246
1270
  return x * x + y * y + z * z;
1247
1271
  }
1248
1272
 
@@ -3,6 +3,7 @@ import { IndexBuffer } from "./IndexBuffer";
3
3
  import { VertexBuffer } from "./VertexBuffer";
4
4
 
5
5
  export interface MorphTargetDelta {
6
+ readonly name?: string;
6
7
  readonly positions?: readonly (readonly [number, number, number])[];
7
8
  readonly normals?: readonly (readonly [number, number, number])[];
8
9
  readonly tangents?: readonly (readonly [number, number, number])[];
package/src/Renderer.ts CHANGED
@@ -2496,7 +2496,12 @@ function sceneFromSource(source: RenderSource | Iterable<RenderItem> | Scene): S
2496
2496
  }
2497
2497
 
2498
2498
  function normalMatrixFromModel(modelMatrix: Mat4): Mat4 {
2499
- const matrix = transposeMat4(invertMat4(modelMatrix));
2499
+ let matrix: Mat4;
2500
+ try {
2501
+ matrix = transposeMat4(invertMat4(modelMatrix));
2502
+ } catch {
2503
+ matrix = identityMat4();
2504
+ }
2500
2505
  return [
2501
2506
  matrix[0], matrix[1], matrix[2], 0,
2502
2507
  matrix[4], matrix[5], matrix[6], 0,
@@ -18,6 +18,15 @@ export interface SkinnedLitMaterialOptions {
18
18
  readonly occlusionTexture?: TextureBinding;
19
19
  readonly occlusionStrength?: number;
20
20
  readonly emissiveTexture?: TextureBinding;
21
+ readonly clearcoatTexture?: TextureBinding;
22
+ readonly clearcoatNormalTexture?: TextureBinding;
23
+ readonly sheenColorTexture?: TextureBinding;
24
+ readonly sheenRoughnessTexture?: TextureBinding;
25
+ readonly transmissionTexture?: TextureBinding;
26
+ readonly iridescenceTexture?: TextureBinding;
27
+ readonly iridescenceThicknessTexture?: TextureBinding;
28
+ readonly anisotropyTexture?: TextureBinding;
29
+ readonly volumeThicknessTexture?: TextureBinding;
21
30
  readonly renderState?: Partial<RenderState>;
22
31
  readonly metallic?: number;
23
32
  readonly roughness?: number;
@@ -114,6 +123,13 @@ export class SkinnedLitMaterial extends Material {
114
123
  if (!Number.isInteger(maxJoints) || maxJoints <= 0 || maxJoints > 96) {
115
124
  throw new Error("SkinnedLitMaterial maxJoints must be an integer in [1, 96]");
116
125
  }
126
+
127
+ // The skinned-lit shader supports glTF extension scalar factors only
128
+ // (u_clearcoatFactor, u_sheenColorFactor, ...); it declares no extension
129
+ // texture uniforms. Extension texture options (clearcoatTexture,
130
+ // sheenColorTexture, ...) are therefore accepted for glTF compatibility but
131
+ // intentionally NOT declared as uniforms — declaring them would make
132
+ // MaterialBinding fail validation against the shader.
117
133
  super({
118
134
  name: options.name ?? "skinned-lit",
119
135
  shaderKey: DEFAULT_SKINNED_LIT_SHADER_NAME,
@@ -290,7 +306,22 @@ export class SkinnedLitMaterial extends Material {
290
306
  }
291
307
 
292
308
  function usesTextureCoordinates(options: SkinnedLitMaterialOptions): boolean {
293
- return Boolean(options.baseColorTexture || options.normalTexture || options.metallicRoughnessTexture || options.occlusionTexture || options.emissiveTexture);
309
+ return Boolean(
310
+ options.baseColorTexture ||
311
+ options.normalTexture ||
312
+ options.metallicRoughnessTexture ||
313
+ options.occlusionTexture ||
314
+ options.emissiveTexture ||
315
+ options.clearcoatTexture ||
316
+ options.clearcoatNormalTexture ||
317
+ options.sheenColorTexture ||
318
+ options.sheenRoughnessTexture ||
319
+ options.transmissionTexture ||
320
+ options.iridescenceTexture ||
321
+ options.iridescenceThicknessTexture ||
322
+ options.anisotropyTexture ||
323
+ options.volumeThicknessTexture
324
+ );
294
325
  }
295
326
 
296
327
  function validateColor4(color: readonly [number, number, number, number], label: string): void {
@@ -1,4 +1,4 @@
1
- export type RenderQueueBucket = "opaque" | "mask" | "transparent";
1
+ export type RenderQueueBucket = "opaque" | "transmission" | "mask" | "transparent";
2
2
 
3
3
  export interface RenderQueueSortItem<T = unknown> {
4
4
  readonly item: T;
@@ -30,6 +30,7 @@ export interface RenderQueueSortDiagnostics {
30
30
  readonly largestBatch: number;
31
31
  readonly materialSwitches: number;
32
32
  readonly opaqueCount: number;
33
+ readonly transmissionCount: number;
33
34
  readonly maskedCount: number;
34
35
  readonly transparentCount: number;
35
36
  readonly pipelineTransitions: number;
@@ -106,8 +107,9 @@ export function sortRenderItems(items: readonly SortableRenderItem[]): SortableR
106
107
 
107
108
  function bucketRank(bucket: RenderQueueBucket): number {
108
109
  if (bucket === "opaque") return 0;
109
- if (bucket === "mask") return 1;
110
- return 2;
110
+ if (bucket === "transmission") return 1;
111
+ if (bucket === "mask") return 2;
112
+ return 3;
111
113
  }
112
114
 
113
115
  function validateRenderQueueItem(item: RenderQueueSortItem, index: number): void {
@@ -158,6 +160,7 @@ function buildDiagnostics(
158
160
  largestBatch,
159
161
  materialSwitches: pipelineTransitions,
160
162
  opaqueCount: items.filter((item) => item.bucket === "opaque").length,
163
+ transmissionCount: items.filter((item) => item.bucket === "transmission").length,
161
164
  maskedCount: items.filter((item) => item.bucket === "mask").length,
162
165
  transparentCount: items.filter((item) => item.bucket === "transparent").length,
163
166
  pipelineTransitions,