@luma.gl/gltf 9.3.0-alpha.4 → 9.3.0-alpha.6

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 (79) hide show
  1. package/dist/dist.dev.js +397 -220
  2. package/dist/dist.min.js +98 -46
  3. package/dist/gltf/animations/animations.d.ts +16 -4
  4. package/dist/gltf/animations/animations.d.ts.map +1 -1
  5. package/dist/gltf/animations/interpolate.d.ts +4 -3
  6. package/dist/gltf/animations/interpolate.d.ts.map +1 -1
  7. package/dist/gltf/animations/interpolate.js +27 -36
  8. package/dist/gltf/animations/interpolate.js.map +1 -1
  9. package/dist/gltf/create-gltf-model.d.ts +6 -0
  10. package/dist/gltf/create-gltf-model.d.ts.map +1 -1
  11. package/dist/gltf/create-gltf-model.js +96 -44
  12. package/dist/gltf/create-gltf-model.js.map +1 -1
  13. package/dist/gltf/create-scenegraph-from-gltf.d.ts +15 -1
  14. package/dist/gltf/create-scenegraph-from-gltf.d.ts.map +1 -1
  15. package/dist/gltf/create-scenegraph-from-gltf.js +12 -6
  16. package/dist/gltf/create-scenegraph-from-gltf.js.map +1 -1
  17. package/dist/gltf/gltf-animator.d.ts +26 -0
  18. package/dist/gltf/gltf-animator.d.ts.map +1 -1
  19. package/dist/gltf/gltf-animator.js +22 -19
  20. package/dist/gltf/gltf-animator.js.map +1 -1
  21. package/dist/index.cjs +378 -210
  22. package/dist/index.cjs.map +4 -4
  23. package/dist/index.d.ts +1 -2
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/parsers/parse-gltf-animations.d.ts +1 -0
  27. package/dist/parsers/parse-gltf-animations.d.ts.map +1 -1
  28. package/dist/parsers/parse-gltf-animations.js +46 -23
  29. package/dist/parsers/parse-gltf-animations.js.map +1 -1
  30. package/dist/parsers/parse-gltf-lights.d.ts.map +1 -1
  31. package/dist/parsers/parse-gltf-lights.js +40 -12
  32. package/dist/parsers/parse-gltf-lights.js.map +1 -1
  33. package/dist/parsers/parse-gltf.d.ts +16 -1
  34. package/dist/parsers/parse-gltf.d.ts.map +1 -1
  35. package/dist/parsers/parse-gltf.js +65 -57
  36. package/dist/parsers/parse-gltf.js.map +1 -1
  37. package/dist/parsers/parse-pbr-material.d.ts +46 -1
  38. package/dist/parsers/parse-pbr-material.d.ts.map +1 -1
  39. package/dist/parsers/parse-pbr-material.js +137 -13
  40. package/dist/parsers/parse-pbr-material.js.map +1 -1
  41. package/dist/pbr/pbr-environment.d.ts +6 -0
  42. package/dist/pbr/pbr-environment.d.ts.map +1 -1
  43. package/dist/pbr/pbr-environment.js +1 -0
  44. package/dist/pbr/pbr-environment.js.map +1 -1
  45. package/dist/pbr/pbr-material.d.ts +5 -0
  46. package/dist/pbr/pbr-material.d.ts.map +1 -1
  47. package/dist/webgl-to-webgpu/convert-webgl-attribute.d.ts +12 -1
  48. package/dist/webgl-to-webgpu/convert-webgl-attribute.d.ts.map +1 -1
  49. package/dist/webgl-to-webgpu/convert-webgl-attribute.js +3 -0
  50. package/dist/webgl-to-webgpu/convert-webgl-attribute.js.map +1 -1
  51. package/dist/webgl-to-webgpu/convert-webgl-sampler.d.ts +6 -0
  52. package/dist/webgl-to-webgpu/convert-webgl-sampler.d.ts.map +1 -1
  53. package/dist/webgl-to-webgpu/convert-webgl-sampler.js +4 -0
  54. package/dist/webgl-to-webgpu/convert-webgl-sampler.js.map +1 -1
  55. package/dist/webgl-to-webgpu/convert-webgl-topology.d.ts +2 -0
  56. package/dist/webgl-to-webgpu/convert-webgl-topology.d.ts.map +1 -1
  57. package/dist/webgl-to-webgpu/convert-webgl-topology.js +2 -0
  58. package/dist/webgl-to-webgpu/convert-webgl-topology.js.map +1 -1
  59. package/package.json +5 -5
  60. package/src/gltf/animations/animations.ts +17 -5
  61. package/src/gltf/animations/interpolate.ts +49 -68
  62. package/src/gltf/create-gltf-model.ts +101 -43
  63. package/src/gltf/create-scenegraph-from-gltf.ts +39 -11
  64. package/src/gltf/gltf-animator.ts +34 -25
  65. package/src/index.ts +1 -2
  66. package/src/parsers/parse-gltf-animations.ts +63 -26
  67. package/src/parsers/parse-gltf-lights.ts +51 -13
  68. package/src/parsers/parse-gltf.ts +90 -77
  69. package/src/parsers/parse-pbr-material.ts +204 -14
  70. package/src/pbr/pbr-environment.ts +10 -0
  71. package/src/pbr/pbr-material.ts +5 -0
  72. package/src/webgl-to-webgpu/convert-webgl-attribute.ts +12 -1
  73. package/src/webgl-to-webgpu/convert-webgl-sampler.ts +9 -0
  74. package/src/webgl-to-webgpu/convert-webgl-topology.ts +2 -0
  75. package/dist/utils/deep-copy.d.ts +0 -3
  76. package/dist/utils/deep-copy.d.ts.map +0 -1
  77. package/dist/utils/deep-copy.js +0 -21
  78. package/dist/utils/deep-copy.js.map +0 -1
  79. package/src/utils/deep-copy.ts +0 -22
@@ -2,16 +2,31 @@ import { Device } from '@luma.gl/core';
2
2
  import { GroupNode, type ModelProps } from '@luma.gl/engine';
3
3
  import { type GLTFPostprocessed } from '@loaders.gl/gltf';
4
4
  import { type PBREnvironment } from "../pbr/pbr-environment.js";
5
+ /** Options that influence how a post-processed glTF is turned into a luma.gl scenegraph. */
5
6
  export type ParseGLTFOptions = {
7
+ /** Additional model props applied to each generated primitive model. */
6
8
  modelOptions?: Partial<ModelProps>;
9
+ /** Enables shader-level PBR debug output. */
7
10
  pbrDebug?: boolean;
11
+ /** Optional image-based lighting environment. */
8
12
  imageBasedLightingEnvironment?: PBREnvironment;
13
+ /** Enables punctual light extraction. */
9
14
  lights?: boolean;
15
+ /** Enables tangent usage when available. */
10
16
  useTangents?: boolean;
11
17
  };
12
18
  /**
13
19
  * GLTF instantiator for luma.gl
14
20
  * Walks the parsed and resolved glTF structure and builds a luma.gl scenegraph
15
21
  */
16
- export declare function parseGLTF(device: Device, gltf: GLTFPostprocessed, options_?: ParseGLTFOptions): GroupNode[];
22
+ export declare function parseGLTF(device: Device, gltf: GLTFPostprocessed, options?: ParseGLTFOptions): {
23
+ /** Scene roots generated from `gltf.scenes`. */
24
+ scenes: GroupNode[];
25
+ /** Map from glTF mesh ids to generated mesh group nodes. */
26
+ gltfMeshIdToNodeMap: Map<string, GroupNode>;
27
+ /** Map from glTF node indices to generated scenegraph nodes. */
28
+ gltfNodeIndexToNodeMap: Map<number, GroupNode>;
29
+ /** Map from glTF node ids to generated scenegraph nodes. */
30
+ gltfNodeIdToNodeMap: Map<string, GroupNode>;
31
+ };
17
32
  //# sourceMappingURL=parse-gltf.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-gltf.d.ts","sourceRoot":"","sources":["../../src/parsers/parse-gltf.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAyB,MAAM,eAAe,CAAC;AAC7D,OAAO,EAA8B,SAAS,EAAa,KAAK,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAEnG,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAC,KAAK,cAAc,EAAC,kCAA+B;AAM3D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6BAA6B,CAAC,EAAE,cAAc,CAAC;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAUF;;;GAGG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,EACvB,QAAQ,GAAE,gBAAqB,GAC9B,SAAS,EAAE,CAMb"}
1
+ {"version":3,"file":"parse-gltf.d.ts","sourceRoot":"","sources":["../../src/parsers/parse-gltf.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAyB,MAAM,eAAe,CAAC;AAC7D,OAAO,EAA8B,SAAS,EAAa,KAAK,UAAU,EAAC,MAAM,iBAAiB,CAAC;AACnG,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAC,KAAK,cAAc,EAAC,kCAA+B;AAM3D,4FAA4F;AAC5F,MAAM,MAAM,gBAAgB,GAAG;IAC7B,wEAAwE;IACxE,YAAY,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACnC,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,6BAA6B,CAAC,EAAE,cAAc,CAAC;IAC/C,yCAAyC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAUF;;;GAGG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,EACvB,OAAO,GAAE,gBAAqB,GAC7B;IACD,gDAAgD;IAChD,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,4DAA4D;IAC5D,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC5C,gEAAgE;IAChE,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/C,4DAA4D;IAC5D,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAC7C,CAqDA"}
@@ -2,7 +2,6 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { Geometry, GroupNode } from '@luma.gl/engine';
5
- import { Matrix4 } from '@math.gl/core';
6
5
  import { convertGLDrawModeToTopology } from "../webgl-to-webgpu/convert-webgl-topology.js";
7
6
  import { createGLTFModel } from "../gltf/create-gltf-model.js";
8
7
  import { parsePBRMaterial } from "./parse-pbr-material.js";
@@ -17,69 +16,76 @@ const defaultOptions = {
17
16
  * GLTF instantiator for luma.gl
18
17
  * Walks the parsed and resolved glTF structure and builds a luma.gl scenegraph
19
18
  */
20
- export function parseGLTF(device, gltf, options_ = {}) {
21
- const options = { ...defaultOptions, ...options_ };
22
- const sceneNodes = gltf.scenes.map(gltfScene => createScene(device, gltfScene, gltf.nodes, options));
23
- return sceneNodes;
24
- }
25
- function createScene(device, gltfScene, gltfNodes, options) {
26
- const gltfSceneNodes = gltfScene.nodes || [];
27
- const nodes = gltfSceneNodes.map(node => createNode(device, node, gltfNodes, options));
28
- const sceneNode = new GroupNode({
29
- id: gltfScene.name || gltfScene.id,
30
- children: nodes
19
+ export function parseGLTF(device, gltf, options = {}) {
20
+ const combinedOptions = { ...defaultOptions, ...options };
21
+ const gltfMeshIdToNodeMap = new Map();
22
+ gltf.meshes.forEach((gltfMesh, idx) => {
23
+ const newMesh = createNodeForGLTFMesh(device, gltfMesh, combinedOptions);
24
+ gltfMeshIdToNodeMap.set(gltfMesh.id, newMesh);
31
25
  });
32
- return sceneNode;
33
- }
34
- function createNode(device, gltfNode, gltfNodes, options) {
35
- if (!gltfNode._node) {
36
- const gltfChildren = gltfNode.children || [];
37
- const children = gltfChildren.map(child => createNode(device, child, gltfNodes, options));
38
- // Node can have children nodes and meshes at the same time
26
+ const gltfNodeIndexToNodeMap = new Map();
27
+ const gltfNodeIdToNodeMap = new Map();
28
+ // Step 1/2: Generate a GroupNode for each gltf node. (1:1 mapping).
29
+ gltf.nodes.forEach((gltfNode, idx) => {
30
+ const newNode = createNodeForGLTFNode(device, gltfNode, combinedOptions);
31
+ gltfNodeIndexToNodeMap.set(idx, newNode);
32
+ gltfNodeIdToNodeMap.set(gltfNode.id, newNode);
33
+ });
34
+ // Step 2/2: Go though each gltf node and attach the children.
35
+ // This guarantees that each gltf node will have exactly one luma GroupNode.
36
+ gltf.nodes.forEach((gltfNode, idx) => {
37
+ gltfNodeIndexToNodeMap.get(idx).add((gltfNode.children ?? []).map(({ id }) => {
38
+ const child = gltfNodeIdToNodeMap.get(id);
39
+ if (!child)
40
+ throw new Error(`Cannot find child ${id} of node ${idx}`);
41
+ return child;
42
+ }));
43
+ // Nodes can have children nodes and one optional child mesh at the same time.
39
44
  if (gltfNode.mesh) {
40
- children.push(createMesh(device, gltfNode.mesh, options));
45
+ const mesh = gltfMeshIdToNodeMap.get(gltfNode.mesh.id);
46
+ if (!mesh) {
47
+ throw new Error(`Cannot find mesh child ${gltfNode.mesh.id} of node ${idx}`);
48
+ }
49
+ gltfNodeIndexToNodeMap.get(idx).add(mesh);
41
50
  }
42
- const node = new GroupNode({
43
- id: gltfNode.name || gltfNode.id,
51
+ });
52
+ const scenes = gltf.scenes.map(gltfScene => {
53
+ const children = (gltfScene.nodes || []).map(({ id }) => {
54
+ const child = gltfNodeIdToNodeMap.get(id);
55
+ if (!child)
56
+ throw new Error(`Cannot find child ${id} of scene ${gltfScene.name || gltfScene.id}`);
57
+ return child;
58
+ });
59
+ return new GroupNode({
60
+ id: gltfScene.name || gltfScene.id,
44
61
  children
45
62
  });
46
- if (gltfNode.matrix) {
47
- node.setMatrix(gltfNode.matrix);
48
- }
49
- else {
50
- node.matrix.identity();
51
- if (gltfNode.translation) {
52
- node.matrix.translate(gltfNode.translation);
53
- }
54
- if (gltfNode.rotation) {
55
- const rotationMatrix = new Matrix4().fromQuaternion(gltfNode.rotation);
56
- node.matrix.multiplyRight(rotationMatrix);
57
- }
58
- if (gltfNode.scale) {
59
- node.matrix.scale(gltfNode.scale);
60
- }
61
- }
62
- gltfNode._node = node;
63
- }
64
- // Copy _node so that gltf-animator can access
65
- const topLevelNode = gltfNodes.find(node => node.id === gltfNode.id);
66
- topLevelNode._node = gltfNode._node;
67
- return gltfNode._node;
63
+ });
64
+ return { scenes, gltfMeshIdToNodeMap, gltfNodeIdToNodeMap, gltfNodeIndexToNodeMap };
68
65
  }
69
- function createMesh(device, gltfMesh, options) {
70
- // TODO: avoid changing the gltf
71
- if (!gltfMesh._mesh) {
72
- const gltfPrimitives = gltfMesh.primitives || [];
73
- const primitives = gltfPrimitives.map((gltfPrimitive, i) => createPrimitive(device, gltfPrimitive, i, gltfMesh, options));
74
- const mesh = new GroupNode({
75
- id: gltfMesh.name || gltfMesh.id,
76
- children: primitives
77
- });
78
- gltfMesh._mesh = mesh;
79
- }
80
- return gltfMesh._mesh;
66
+ /** Creates a `GroupNode` for one glTF node transform. */
67
+ function createNodeForGLTFNode(device, gltfNode, options) {
68
+ return new GroupNode({
69
+ id: gltfNode.name || gltfNode.id,
70
+ children: [],
71
+ matrix: gltfNode.matrix,
72
+ position: gltfNode.translation,
73
+ rotation: gltfNode.rotation,
74
+ scale: gltfNode.scale
75
+ });
76
+ }
77
+ /** Creates a mesh group node containing one model node per glTF primitive. */
78
+ function createNodeForGLTFMesh(device, gltfMesh, options) {
79
+ const gltfPrimitives = gltfMesh.primitives || [];
80
+ const primitives = gltfPrimitives.map((gltfPrimitive, i) => createNodeForGLTFPrimitive(device, gltfPrimitive, i, gltfMesh, options));
81
+ const mesh = new GroupNode({
82
+ id: gltfMesh.name || gltfMesh.id,
83
+ children: primitives
84
+ });
85
+ return mesh;
81
86
  }
82
- function createPrimitive(device, gltfPrimitive, i, gltfMesh, options) {
87
+ /** Creates a renderable model node for one glTF primitive. */
88
+ function createNodeForGLTFPrimitive(device, gltfPrimitive, i, gltfMesh, options) {
83
89
  const id = gltfPrimitive.name || `${gltfMesh.name || gltfMesh.id}-primitive-${i}`;
84
90
  const topology = convertGLDrawModeToTopology(gltfPrimitive.mode || 4);
85
91
  const vertexCount = gltfPrimitive.indices
@@ -99,9 +105,11 @@ function createPrimitive(device, gltfPrimitive, i, gltfMesh, options) {
99
105
  // modelNode.material = gltfPrimitive.material;
100
106
  return modelNode;
101
107
  }
108
+ /** Computes the vertex count for a primitive without indices. */
102
109
  function getVertexCount(attributes) {
103
110
  throw new Error('getVertexCount not implemented');
104
111
  }
112
+ /** Converts glTF primitive attributes and indices into a luma.gl `Geometry`. */
105
113
  function createGeometry(id, gltfPrimitive, topology) {
106
114
  const attributes = {};
107
115
  for (const [attributeName, attribute] of Object.entries(gltfPrimitive.attributes)) {
@@ -1 +1 @@
1
- {"version":3,"file":"parse-gltf.js","sourceRoot":"","sources":["../../src/parsers/parse-gltf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse-gltf.js","sourceRoot":"","sources":["../../src/parsers/parse-gltf.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import type { Device } from '@luma.gl/core';
1
+ import type { Device, SamplerProps, TextureFormat, TypedArray } from '@luma.gl/core';
2
+ import { Texture } from '@luma.gl/core';
2
3
  import { type ParsedPBRMaterial } from "../pbr/pbr-material.js";
3
4
  import { type PBREnvironment } from "../pbr/pbr-environment.js";
4
5
  type GLTFTexture = {
@@ -46,5 +47,49 @@ export type ParsePBRMaterialOptions = {
46
47
  * Parses a GLTF material definition into uniforms and parameters for the PBR shader module
47
48
  */
48
49
  export declare function parsePBRMaterial(device: Device, material: GLTFPBRMaterial, attributes: Record<string, any>, options: ParsePBRMaterialOptions): ParsedPBRMaterial;
50
+ /** One mip level as produced by loaders.gl compressed texture parsers */
51
+ export type CompressedMipLevel = {
52
+ data: TypedArray;
53
+ width: number;
54
+ height: number;
55
+ textureFormat?: TextureFormat;
56
+ };
57
+ /**
58
+ * Compressed image from current loaders.gl releases.
59
+ * - `mipmaps` is a boolean (true), NOT an array
60
+ * - `data` is an Array of TextureLevel-like objects
61
+ * - Per-level `textureFormat` is already a luma.gl TextureFormat
62
+ * - Top-level `width`/`height` may be undefined
63
+ */
64
+ export type CompressedImageDataArray = {
65
+ compressed: true;
66
+ mipmaps?: boolean;
67
+ width?: number;
68
+ height?: number;
69
+ data: CompressedMipLevel[];
70
+ };
71
+ /**
72
+ * Hypothetical future format where `mipmaps` is an actual array.
73
+ * Kept for forward compatibility.
74
+ */
75
+ export type CompressedImageMipmapArray = {
76
+ compressed: true;
77
+ width?: number;
78
+ height?: number;
79
+ mipmaps: CompressedMipLevel[];
80
+ };
81
+ /** Union of all known loaders.gl compressed image shapes */
82
+ export type CompressedImage = CompressedImageDataArray | CompressedImageMipmapArray;
83
+ /**
84
+ * Create a texture from compressed image data produced by loaders.gl.
85
+ * Handles current loaders.gl compressed image layouts:
86
+ *
87
+ * current: {compressed, mipmaps: true, data: [{data, width, height, textureFormat}, ...]}
88
+ * forward: {compressed, mipmaps: [{data, width, height, textureFormat}, ...]}
89
+ */
90
+ export declare function createCompressedTexture(device: Device, image: CompressedImage, baseOptions: {
91
+ id: string;
92
+ sampler: SamplerProps;
93
+ }): Texture;
49
94
  export {};
50
95
  //# sourceMappingURL=parse-pbr-material.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-pbr-material.d.ts","sourceRoot":"","sources":["../../src/parsers/parse-pbr-material.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAU,MAAM,eAAe,CAAC;AAKnD,OAAO,EAAC,KAAK,iBAAiB,EAAC,+BAA4B;AAC3D,OAAO,EAAC,KAAK,cAAc,EAAC,kCAA+B;AAS3D,KAAK,WAAW,GAAG;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE;QAAC,MAAM,EAAE;YAAC,KAAK,EAAE,GAAG,CAAA;SAAC,CAAC;QAAC,OAAO,EAAE;YAAC,UAAU,EAAE,GAAG,CAAA;SAAC,CAAA;KAAC,CAAC;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC9B,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,wBAAwB,CAAC,EAAE,WAAW,CAAC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oBAAoB,CAAC,EAAE,wBAAwB,CAAC;IAChD,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B,eAAe,CAAC,EAAE,WAAW,CAAC;IAC9B,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,uBAAuB;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB;IACpB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,mBAAmB;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iEAAiE;IACjE,6BAA6B,CAAC,EAAE,cAAc,CAAC;CAChD,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,eAAe,EACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/B,OAAO,EAAE,uBAAuB,GAC/B,iBAAiB,CAoDnB"}
1
+ {"version":3,"file":"parse-pbr-material.d.ts","sourceRoot":"","sources":["../../src/parsers/parse-pbr-material.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  // luma.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
+ import { Texture, log, textureFormatDecoder } from '@luma.gl/core';
4
5
  import { GL } from '@luma.gl/constants';
5
- import { log } from '@luma.gl/core';
6
6
  import { convertSampler } from "../webgl-to-webgpu/convert-webgl-sampler.js";
7
7
  /**
8
8
  * Parses a GLTF material definition into uniforms and parameters for the PBR shader module
@@ -47,6 +47,8 @@ export function parsePBRMaterial(device, material, attributes, options) {
47
47
  parsedMaterial.defines['HAS_TANGENTS'] = true;
48
48
  if (attributes['TEXCOORD_0'])
49
49
  parsedMaterial.defines['HAS_UV'] = true;
50
+ if (attributes['JOINTS_0'] && attributes['WEIGHTS_0'])
51
+ parsedMaterial.defines['HAS_SKIN'] = true;
50
52
  if (attributes['COLOR_0'])
51
53
  parsedMaterial.defines['HAS_COLORS'] = true;
52
54
  if (options?.imageBasedLightingEnvironment)
@@ -122,14 +124,6 @@ function parsePbrMetallicRoughness(device, pbrMetallicRoughness, parsedMaterial)
122
124
  /** Create a texture from a glTF texture/sampler/image combo and add it to bindings */
123
125
  function addTexture(device, gltfTexture, uniformName, define, parsedMaterial) {
124
126
  const image = gltfTexture.texture.source.image;
125
- let textureOptions;
126
- if (image.compressed) {
127
- textureOptions = image;
128
- }
129
- else {
130
- // Texture2D accepts a promise that returns an image as data (Async Textures)
131
- textureOptions = { data: image };
132
- }
133
127
  const gltfSampler = {
134
128
  wrapS: 10497, // default REPEAT S (U) wrapping mode.
135
129
  wrapT: 10497, // default REPEAT T (V) wrapping mode.
@@ -137,16 +131,146 @@ function addTexture(device, gltfTexture, uniformName, define, parsedMaterial) {
137
131
  magFilter: 9729, // default LINEAR filtering
138
132
  ...gltfTexture?.texture?.sampler
139
133
  };
140
- const texture = device.createTexture({
134
+ const baseOptions = {
141
135
  id: gltfTexture.uniformName || gltfTexture.id,
142
- sampler: convertSampler(gltfSampler),
143
- ...textureOptions
144
- });
136
+ sampler: convertSampler(gltfSampler)
137
+ };
138
+ let texture;
139
+ if (image.compressed) {
140
+ texture = createCompressedTexture(device, image, baseOptions);
141
+ }
142
+ else {
143
+ const { width, height } = device.getExternalImageSize(image);
144
+ texture = device.createTexture({
145
+ ...baseOptions,
146
+ width,
147
+ height,
148
+ data: image
149
+ });
150
+ }
145
151
  parsedMaterial.bindings[uniformName] = texture;
146
152
  if (define)
147
153
  parsedMaterial.defines[define] = true;
148
154
  parsedMaterial.generatedTextures.push(texture);
149
155
  }
156
+ function createCompressedTextureFallback(device, baseOptions) {
157
+ return device.createTexture({
158
+ ...baseOptions,
159
+ format: 'rgba8unorm',
160
+ width: 1,
161
+ height: 1,
162
+ mipLevels: 1
163
+ });
164
+ }
165
+ function resolveCompressedTextureFormat(level) {
166
+ return level.textureFormat;
167
+ }
168
+ /**
169
+ * Maximum mip levels that can be filled for a compressed texture.
170
+ * texStorage2D allocates level i at (baseW >> i) × (baseH >> i).
171
+ * Compressed formats can't upload data for levels smaller than one block,
172
+ * so we stop before either dimension drops below the block size.
173
+ */
174
+ function getMaxCompressedMipLevels(baseWidth, baseHeight, format) {
175
+ const { blockWidth = 1, blockHeight = 1 } = textureFormatDecoder.getInfo(format);
176
+ let count = 1;
177
+ for (let i = 1;; i++) {
178
+ const w = Math.max(1, baseWidth >> i);
179
+ const h = Math.max(1, baseHeight >> i);
180
+ if (w < blockWidth || h < blockHeight)
181
+ break;
182
+ count++;
183
+ }
184
+ return count;
185
+ }
186
+ /**
187
+ * Create a texture from compressed image data produced by loaders.gl.
188
+ * Handles current loaders.gl compressed image layouts:
189
+ *
190
+ * current: {compressed, mipmaps: true, data: [{data, width, height, textureFormat}, ...]}
191
+ * forward: {compressed, mipmaps: [{data, width, height, textureFormat}, ...]}
192
+ */
193
+ export function createCompressedTexture(device, image, baseOptions) {
194
+ // Normalize mip levels from all known loaders.gl formats
195
+ let levels;
196
+ if (Array.isArray(image.data) && image.data[0]?.data) {
197
+ // loaders.gl current format: image.data is Array of mip-level objects
198
+ levels = image.data;
199
+ }
200
+ else if ('mipmaps' in image && Array.isArray(image.mipmaps)) {
201
+ // Hypothetical future format: image.mipmaps is an Array
202
+ levels = image.mipmaps;
203
+ }
204
+ else {
205
+ levels = [];
206
+ }
207
+ if (levels.length === 0 || !levels[0]?.data) {
208
+ log.warn('createCompressedTexture: compressed image has no valid mip levels, creating fallback')();
209
+ return createCompressedTextureFallback(device, baseOptions);
210
+ }
211
+ const baseLevel = levels[0];
212
+ const baseWidth = baseLevel.width ?? image.width ?? 0;
213
+ const baseHeight = baseLevel.height ?? image.height ?? 0;
214
+ if (baseWidth <= 0 || baseHeight <= 0) {
215
+ log.warn('createCompressedTexture: base level has invalid dimensions, creating fallback')();
216
+ return createCompressedTextureFallback(device, baseOptions);
217
+ }
218
+ const format = resolveCompressedTextureFormat(baseLevel);
219
+ if (!format) {
220
+ log.warn('createCompressedTexture: compressed image has no textureFormat, creating fallback')();
221
+ return createCompressedTextureFallback(device, baseOptions);
222
+ }
223
+ // Validate mip levels: truncate chain at first invalid level.
224
+ // Levels must be contiguous, so we stop at the first level that has
225
+ // a format mismatch, missing data, non-positive dimensions, or
226
+ // dimensions that don't match what texStorage2D will allocate.
227
+ //
228
+ // For block-compressed formats (ASTC, BC, ETC2), texStorage2D allocates
229
+ // mip levels down to 1×1 texels, but compressed data can't be smaller
230
+ // than one block (e.g. 4×4 for ASTC-4x4). Cap the chain so we never
231
+ // try to upload data whose block-aligned size exceeds the allocated level.
232
+ const maxMipLevels = getMaxCompressedMipLevels(baseWidth, baseHeight, format);
233
+ const levelLimit = Math.min(levels.length, maxMipLevels);
234
+ let validLevelCount = 1;
235
+ for (let i = 1; i < levelLimit; i++) {
236
+ const level = levels[i];
237
+ if (!level.data || level.width <= 0 || level.height <= 0) {
238
+ log.warn(`createCompressedTexture: mip level ${i} has invalid data/dimensions, truncating`)();
239
+ break;
240
+ }
241
+ const levelFormat = resolveCompressedTextureFormat(level);
242
+ if (levelFormat && levelFormat !== format) {
243
+ log.warn(`createCompressedTexture: mip level ${i} format '${levelFormat}' differs from base '${format}', truncating`)();
244
+ break;
245
+ }
246
+ const expectedW = Math.max(1, baseWidth >> i);
247
+ const expectedH = Math.max(1, baseHeight >> i);
248
+ if (level.width !== expectedW || level.height !== expectedH) {
249
+ log.warn(`createCompressedTexture: mip level ${i} dimensions ${level.width}x${level.height} ` +
250
+ `don't match expected ${expectedW}x${expectedH}, truncating`)();
251
+ break;
252
+ }
253
+ validLevelCount++;
254
+ }
255
+ const texture = device.createTexture({
256
+ ...baseOptions,
257
+ format,
258
+ usage: Texture.TEXTURE | Texture.COPY_DST,
259
+ width: baseWidth,
260
+ height: baseHeight,
261
+ mipLevels: validLevelCount,
262
+ data: baseLevel.data
263
+ });
264
+ // Upload additional validated mip levels
265
+ for (let i = 1; i < validLevelCount; i++) {
266
+ texture.writeData(levels[i].data, {
267
+ width: levels[i].width,
268
+ height: levels[i].height,
269
+ mipLevel: i
270
+ });
271
+ }
272
+ return texture;
273
+ }
150
274
  /*
151
275
  /**
152
276
  * Parses a GLTF material definition into uniforms and parameters for the PBR shader module
@@ -1 +1 @@
1
- {"version":3,"file":"parse-pbr-material.js","sourceRoot":"","sources":["../../src/parsers/parse-pbr-material.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse-pbr-material.js","sourceRoot":"","sources":["../../src/parsers/parse-pbr-material.ts"],"names":[],"mappings":"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"}
@@ -4,12 +4,18 @@ import { DynamicTexture } from '@luma.gl/engine';
4
4
  export type PBREnvironment = {
5
5
  /** Bi-directional Reflectance Distribution Function (BRDF) lookup table */
6
6
  brdfLutTexture: DynamicTexture;
7
+ /** Diffuse irradiance cubemap. */
7
8
  diffuseEnvSampler: DynamicTexture;
9
+ /** Specular reflection cubemap with mip chain. */
8
10
  specularEnvSampler: DynamicTexture;
9
11
  };
12
+ /** Configuration used to load an image-based lighting environment. */
10
13
  export type PBREnvironmentProps = {
14
+ /** URL of the BRDF lookup texture. */
11
15
  brdfLutUrl: string;
16
+ /** Callback that returns the URL for a diffuse or specular cubemap face and mip level. */
12
17
  getTexUrl: (name: string, dir: number, level: number) => string;
18
+ /** Number of mip levels in the specular environment map. */
13
19
  specularMipLevels?: number;
14
20
  };
15
21
  /** Loads textures for PBR environment */
@@ -1 +1 @@
1
- {"version":3,"file":"pbr-environment.d.ts","sourceRoot":"","sources":["../../src/pbr/pbr-environment.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAe,MAAM,eAAe,CAAC;AACnD,OAAO,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAG/C,0CAA0C;AAC1C,MAAM,MAAM,cAAc,GAAG;IAC3B,2EAA2E;IAC3E,cAAc,EAAE,cAAc,CAAC;IAC/B,iBAAiB,EAAE,cAAc,CAAC;IAClC,kBAAkB,EAAE,cAAc,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAChE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,yCAAyC;AACzC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,cAAc,CA+C7F"}
1
+ {"version":3,"file":"pbr-environment.d.ts","sourceRoot":"","sources":["../../src/pbr/pbr-environment.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAe,MAAM,eAAe,CAAC;AACnD,OAAO,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAG/C,0CAA0C;AAC1C,MAAM,MAAM,cAAc,GAAG;IAC3B,2EAA2E;IAC3E,cAAc,EAAE,cAAc,CAAC;IAC/B,kCAAkC;IAClC,iBAAiB,EAAE,cAAc,CAAC;IAClC,kDAAkD;IAClD,kBAAkB,EAAE,cAAc,CAAC;CACpC,CAAC;AAEF,sEAAsE;AACtE,MAAM,MAAM,mBAAmB,GAAG;IAChC,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,0FAA0F;IAC1F,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAChE,4DAA4D;IAC5D,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,yCAAyC;AACzC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,cAAc,CA+C7F"}
@@ -51,6 +51,7 @@ export function loadPBREnvironment(device, props) {
51
51
  }
52
52
  // TODO put somewhere common
53
53
  const FACES = [0, 1, 2, 3, 4, 5];
54
+ /** Construction props for an asynchronously loaded cubemap. */
54
55
  function makeCube(device, { id, getTextureForFace, sampler }) {
55
56
  const data = {};
56
57
  FACES.forEach(face => {
@@ -1 +1 @@
1
- {"version":3,"file":"pbr-environment.js","sourceRoot":"","sources":["../../src/pbr/pbr-environment.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AAgBtD,yCAAyC;AACzC,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,KAA0B;IAC3E,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE;QAChD,EAAE,EAAE,SAAS;QACb,OAAO,EAAE;YACP,YAAY,EAAE,eAAe;YAC7B,YAAY,EAAE,eAAe;YAC7B,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,QAAQ;SACY;QACjC,2EAA2E;QAC3E,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC;KACzC,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,EAAE;QACzC,EAAE,EAAE,mBAAmB;QACvB,iBAAiB,EAAE,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC9E,OAAO,EAAE;YACP,YAAY,EAAE,eAAe;YAC7B,YAAY,EAAE,eAAe;YAC7B,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,QAAQ;SACY;KAClC,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,QAAQ,CAAC,MAAM,EAAE;QAC1C,EAAE,EAAE,oBAAoB;QACxB,iBAAiB,EAAE,CAAC,GAAW,EAAE,EAAE;YACjC,MAAM,UAAU,GAAmB,EAAE,CAAC;YACtC,aAAa;YACb,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;gBAC5D,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,OAAO,EAAE;YACP,YAAY,EAAE,eAAe;YAC7B,YAAY,EAAE,eAAe;YAC7B,SAAS,EAAE,QAAQ,EAAE,oDAAoD;YACzE,SAAS,EAAE,QAAQ;SACY;KAClC,CAAC,CAAC;IAEH,OAAO;QACL,cAAc;QACd,iBAAiB;QACjB,kBAAkB;KACnB,CAAC;AACJ,CAAC;AAED,4BAA4B;AAC5B,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAEjC,SAAS,QAAQ,CACf,MAAc,EACd,EACE,EAAE,EACF,iBAAiB,EACjB,OAAO,EAKR;IAED,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACnB,kBAAkB;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE;QAChC,EAAE;QACF,SAAS,EAAE,MAAM;QACjB,OAAO,EAAE,KAAK;QACd,OAAO;QACP,mBAAmB;QACnB,IAAI;KACL,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"pbr-environment.js","sourceRoot":"","sources":["../../src/pbr/pbr-environment.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AAsBtD,yCAAyC;AACzC,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,KAA0B;IAC3E,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE;QAChD,EAAE,EAAE,SAAS;QACb,OAAO,EAAE;YACP,YAAY,EAAE,eAAe;YAC7B,YAAY,EAAE,eAAe;YAC7B,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,QAAQ;SACY;QACjC,2EAA2E;QAC3E,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC;KACzC,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,EAAE;QACzC,EAAE,EAAE,mBAAmB;QACvB,iBAAiB,EAAE,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC9E,OAAO,EAAE;YACP,YAAY,EAAE,eAAe;YAC7B,YAAY,EAAE,eAAe;YAC7B,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,QAAQ;SACY;KAClC,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,QAAQ,CAAC,MAAM,EAAE;QAC1C,EAAE,EAAE,oBAAoB;QACxB,iBAAiB,EAAE,CAAC,GAAW,EAAE,EAAE;YACjC,MAAM,UAAU,GAAmB,EAAE,CAAC;YACtC,aAAa;YACb,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;gBAC5D,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,OAAO,EAAE;YACP,YAAY,EAAE,eAAe;YAC7B,YAAY,EAAE,eAAe;YAC7B,SAAS,EAAE,QAAQ,EAAE,oDAAoD;YACzE,SAAS,EAAE,QAAQ;SACY;KAClC,CAAC,CAAC;IAEH,OAAO;QACL,cAAc;QACd,iBAAiB;QACjB,kBAAkB;KACnB,CAAC;AACJ,CAAC;AAED,4BAA4B;AAC5B,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAEjC,+DAA+D;AAC/D,SAAS,QAAQ,CACf,MAAc,EACd,EACE,EAAE,EACF,iBAAiB,EACjB,OAAO,EAQR;IAED,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACnB,kBAAkB;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE;QAChC,EAAE;QACF,SAAS,EAAE,MAAM;QACjB,OAAO,EAAE,KAAK;QACd,OAAO;QACP,mBAAmB;QACnB,IAAI;KACL,CAAC,CAAC;AACL,CAAC"}
@@ -1,9 +1,14 @@
1
1
  import type { Texture, Parameters } from '@luma.gl/core';
2
2
  import { PBRMaterialBindings, PBRMaterialUniforms, PBRProjectionProps } from '@luma.gl/shadertools';
3
+ /** Material state extracted from a glTF primitive for consumption by the PBR shader module. */
3
4
  export type ParsedPBRMaterial = {
5
+ /** Shader defines inferred from geometry and material features. */
4
6
  readonly defines: Record<string, boolean>;
7
+ /** Texture and sampler bindings for the PBR shader module. */
5
8
  readonly bindings: Partial<PBRMaterialBindings>;
9
+ /** Uniform values for the projection and PBR shader modules. */
6
10
  readonly uniforms: Partial<PBRProjectionProps & PBRMaterialUniforms>;
11
+ /** Render pipeline parameters derived from the glTF material. */
7
12
  readonly parameters: Parameters;
8
13
  /** @deprecated Use parameters */
9
14
  readonly glParameters: Record<string, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"pbr-material.d.ts","sourceRoot":"","sources":["../../src/pbr/pbr-material.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,UAAU,EAAC,MAAM,eAAe,CAAC;AACvD,OAAO,EAAC,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAElG,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,kBAAkB,GAAG,mBAAmB,CAAC,CAAC;IACrE,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,iCAAiC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3C,0EAA0E;IAC1E,QAAQ,CAAC,iBAAiB,EAAE,OAAO,EAAE,CAAC;CACvC,CAAC"}
1
+ {"version":3,"file":"pbr-material.d.ts","sourceRoot":"","sources":["../../src/pbr/pbr-material.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAE,UAAU,EAAC,MAAM,eAAe,CAAC;AACvD,OAAO,EAAC,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAElG,+FAA+F;AAC/F,MAAM,MAAM,iBAAiB,GAAG;IAC9B,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAChD,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,kBAAkB,GAAG,mBAAmB,CAAC,CAAC;IACrE,iEAAiE;IACjE,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,iCAAiC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3C,0EAA0E;IAC1E,QAAQ,CAAC,iBAAiB,EAAE,OAAO,EAAE,CAAC;CACvC,CAAC"}
@@ -1,20 +1,31 @@
1
1
  import type { TypedArray } from '@math.gl/types';
2
+ /** Maps glTF accessor type strings to their component counts. */
2
3
  export declare const ATTRIBUTE_TYPE_TO_COMPONENTS: Record<string, number>;
4
+ /** Maps glTF accessor component-type enums to typed-array constructors. */
3
5
  export declare const ATTRIBUTE_COMPONENT_TYPE_TO_ARRAY: Record<number, any>;
6
+ /** Minimal accessor shape required to materialize a typed array. */
4
7
  type GLTFAccessor = {
8
+ /** Numeric component type enum. */
5
9
  componentType: number;
10
+ /** Accessor type string such as `VEC3` or `SCALAR`. */
6
11
  type: string;
12
+ /** Number of logical elements in the accessor. */
7
13
  count: number;
14
+ /** Buffer view carrying the raw bytes. */
8
15
  bufferView?: {
9
16
  data: {
10
- buffer: ArrayBuffer;
17
+ buffer: ArrayBufferLike;
11
18
  byteOffset?: number;
12
19
  };
13
20
  };
21
+ /** Byte offset into the buffer view. */
14
22
  byteOffset?: number;
15
23
  };
24
+ /** Converts a glTF accessor into a typed array plus its component count. */
16
25
  export declare function accessorToTypedArray(accessor: GLTFAccessor): {
26
+ /** Typed array view over the accessor data. */
17
27
  typedArray: TypedArray;
28
+ /** Number of scalar components per element. */
18
29
  components: number;
19
30
  };
20
31
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"convert-webgl-attribute.d.ts","sourceRoot":"","sources":["../../src/webgl-to-webgpu/convert-webgl-attribute.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAE/C,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQ/D,CAAC;AAEF,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAOjE,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE;QAAC,IAAI,EAAE;YAAC,MAAM,EAAE,WAAW,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAA;SAAC,CAAA;KAAC,CAAC;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG;IAC5D,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CASA"}
1
+ {"version":3,"file":"convert-webgl-attribute.d.ts","sourceRoot":"","sources":["../../src/webgl-to-webgpu/convert-webgl-attribute.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAE/C,iEAAiE;AACjE,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQ/D,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAOjE,CAAC;AAEF,oEAAoE;AACpE,KAAK,YAAY,GAAG;IAClB,mCAAmC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,UAAU,CAAC,EAAE;QAAC,IAAI,EAAE;YAAC,MAAM,EAAE,eAAe,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAA;SAAC,CAAA;KAAC,CAAC;IACpE,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG;IAC5D,+CAA+C;IAC/C,UAAU,EAAE,UAAU,CAAC;IACvB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;CACpB,CASA"}