@luma.gl/engine 8.6.0-alpha.5 → 9.0.0-alpha.3

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 (129) hide show
  1. package/dist/animation/key-frames.d.ts +1 -0
  2. package/dist/animation/key-frames.d.ts.map +1 -1
  3. package/dist/animation/key-frames.js.map +1 -1
  4. package/dist/animation/timeline.d.ts +1 -1
  5. package/dist/animation/timeline.d.ts.map +1 -1
  6. package/dist/animation/timeline.js.map +1 -1
  7. package/dist/geometries/cone-geometry.d.ts.map +1 -1
  8. package/dist/geometries/cone-geometry.js +1 -1
  9. package/dist/geometries/cone-geometry.js.map +1 -1
  10. package/dist/geometries/cube-geometry.d.ts +4 -0
  11. package/dist/geometries/cube-geometry.d.ts.map +1 -1
  12. package/dist/geometries/cube-geometry.js +30 -7
  13. package/dist/geometries/cube-geometry.js.map +1 -1
  14. package/dist/geometries/cylinder-geometry.d.ts.map +1 -1
  15. package/dist/geometries/cylinder-geometry.js +1 -1
  16. package/dist/geometries/cylinder-geometry.js.map +1 -1
  17. package/dist/geometries/ico-sphere-geometry.d.ts.map +1 -1
  18. package/dist/geometries/ico-sphere-geometry.js +1 -1
  19. package/dist/geometries/ico-sphere-geometry.js.map +1 -1
  20. package/dist/geometries/plane-geometry.d.ts.map +1 -1
  21. package/dist/geometries/plane-geometry.js +1 -1
  22. package/dist/geometries/plane-geometry.js.map +1 -1
  23. package/dist/geometries/sphere-geometry.d.ts.map +1 -1
  24. package/dist/geometries/sphere-geometry.js +1 -1
  25. package/dist/geometries/sphere-geometry.js.map +1 -1
  26. package/dist/geometries/truncated-cone-geometry.d.ts +15 -3
  27. package/dist/geometries/truncated-cone-geometry.d.ts.map +1 -1
  28. package/dist/geometries/truncated-cone-geometry.js +29 -15
  29. package/dist/geometries/truncated-cone-geometry.js.map +1 -1
  30. package/dist/geometry/geometry-table.d.ts +15 -0
  31. package/dist/geometry/geometry-table.d.ts.map +1 -0
  32. package/dist/geometry/geometry-table.js +2 -0
  33. package/dist/{transform/transform-types.js.map → geometry/geometry-table.js.map} +1 -1
  34. package/dist/geometry/geometry-utils.js.map +1 -1
  35. package/dist/geometry/geometry.d.ts +34 -7
  36. package/dist/geometry/geometry.d.ts.map +1 -1
  37. package/dist/geometry/geometry.js +33 -11
  38. package/dist/geometry/geometry.js.map +1 -1
  39. package/dist/geometry/primitive-utils.d.ts +1 -0
  40. package/dist/geometry/primitive-utils.d.ts.map +1 -0
  41. package/dist/geometry/primitive-utils.js +2 -0
  42. package/dist/geometry/primitive-utils.js.map +1 -0
  43. package/dist/index.d.ts +3 -5
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +1 -4
  46. package/dist/index.js.map +1 -1
  47. package/dist/lib/animation-loop.d.ts +14 -73
  48. package/dist/lib/animation-loop.d.ts.map +1 -1
  49. package/dist/lib/animation-loop.js +39 -160
  50. package/dist/lib/animation-loop.js.map +1 -1
  51. package/dist/lib/animation-props.d.ts +24 -0
  52. package/dist/lib/animation-props.d.ts.map +1 -0
  53. package/dist/lib/animation-props.js +2 -0
  54. package/dist/lib/animation-props.js.map +1 -0
  55. package/dist/lib/clip-space.d.ts +1 -0
  56. package/dist/lib/clip-space.d.ts.map +1 -0
  57. package/dist/lib/clip-space.js +2 -0
  58. package/dist/lib/clip-space.js.map +1 -0
  59. package/dist/lib/model-utils.d.ts +4 -3
  60. package/dist/lib/model-utils.d.ts.map +1 -1
  61. package/dist/lib/model-utils.js +24 -70
  62. package/dist/lib/model-utils.js.map +1 -1
  63. package/dist/lib/model.d.ts +34 -104
  64. package/dist/lib/model.d.ts.map +1 -1
  65. package/dist/lib/model.js +108 -505
  66. package/dist/lib/model.js.map +1 -1
  67. package/dist/lib/pipeline-factory.d.ts +55 -0
  68. package/dist/lib/pipeline-factory.d.ts.map +1 -0
  69. package/dist/lib/pipeline-factory.js +191 -0
  70. package/dist/lib/pipeline-factory.js.map +1 -0
  71. package/dist/lib/render-loop.d.ts +4 -17
  72. package/dist/lib/render-loop.d.ts.map +1 -1
  73. package/dist/lib/render-loop.js +14 -21
  74. package/dist/lib/render-loop.js.map +1 -1
  75. package/package.json +5 -5
  76. package/src/animation/key-frames.ts +1 -0
  77. package/src/animation/timeline.ts +1 -1
  78. package/src/geometries/cone-geometry.ts +1 -1
  79. package/src/geometries/cube-geometry.ts +159 -8
  80. package/src/geometries/cylinder-geometry.ts +1 -1
  81. package/src/geometries/ico-sphere-geometry.ts +1 -1
  82. package/src/geometries/plane-geometry.ts +1 -1
  83. package/src/geometries/sphere-geometry.ts +2 -2
  84. package/src/geometries/truncated-cone-geometry.ts +30 -12
  85. package/src/geometry/geometry-table.ts +16 -0
  86. package/src/geometry/geometry-utils.ts +1 -1
  87. package/src/geometry/geometry.ts +58 -13
  88. package/src/geometry/primitive-utils.ts +30 -0
  89. package/src/index.ts +7 -8
  90. package/src/lib/animation-loop.ts +85 -274
  91. package/src/lib/animation-props.ts +31 -0
  92. package/src/{utils → lib}/clip-space.ts +5 -2
  93. package/src/lib/model-utils.ts +60 -32
  94. package/src/lib/model.ts +126 -642
  95. package/src/lib/pipeline-factory.ts +225 -0
  96. package/src/lib/render-loop.ts +21 -19
  97. package/dist/lib/program-manager.d.ts +0 -39
  98. package/dist/lib/program-manager.d.ts.map +0 -1
  99. package/dist/lib/program-manager.js +0 -175
  100. package/dist/lib/program-manager.js.map +0 -1
  101. package/dist/transform/buffer-transform.d.ts +0 -36
  102. package/dist/transform/buffer-transform.d.ts.map +0 -1
  103. package/dist/transform/buffer-transform.js +0 -255
  104. package/dist/transform/buffer-transform.js.map +0 -1
  105. package/dist/transform/texture-transform.d.ts +0 -57
  106. package/dist/transform/texture-transform.d.ts.map +0 -1
  107. package/dist/transform/texture-transform.js +0 -412
  108. package/dist/transform/texture-transform.js.map +0 -1
  109. package/dist/transform/transform-shader-utils.d.ts +0 -26
  110. package/dist/transform/transform-shader-utils.d.ts.map +0 -1
  111. package/dist/transform/transform-shader-utils.js +0 -149
  112. package/dist/transform/transform-shader-utils.js.map +0 -1
  113. package/dist/transform/transform-types.d.ts +0 -44
  114. package/dist/transform/transform-types.d.ts.map +0 -1
  115. package/dist/transform/transform-types.js +0 -2
  116. package/dist/transform/transform.d.ts +0 -47
  117. package/dist/transform/transform.d.ts.map +0 -1
  118. package/dist/transform/transform.js +0 -198
  119. package/dist/transform/transform.js.map +0 -1
  120. package/dist/utils/clip-space.d.ts +0 -5
  121. package/dist/utils/clip-space.d.ts.map +0 -1
  122. package/dist/utils/clip-space.js +0 -34
  123. package/dist/utils/clip-space.js.map +0 -1
  124. package/src/lib/program-manager.ts +0 -187
  125. package/src/transform/buffer-transform.ts +0 -214
  126. package/src/transform/texture-transform.ts +0 -344
  127. package/src/transform/transform-shader-utils.ts +0 -169
  128. package/src/transform/transform-types.ts +0 -42
  129. package/src/transform/transform.ts +0 -189
@@ -1,5 +1,5 @@
1
- import GL from '@luma.gl/constants';
2
- import {Buffer, assert} from '@luma.gl/webgl';
1
+ import {Device, Buffer, assert} from '@luma.gl/api';
2
+ import type Geometry from '../geometry/geometry';
3
3
 
4
4
  // Support for mapping new geometries with glTF attribute names to "classic" luma.gl shader names
5
5
  const GLTF_TO_LUMA_ATTRIBUTE_MAP = {
@@ -11,56 +11,83 @@ const GLTF_TO_LUMA_ATTRIBUTE_MAP = {
11
11
  TEXCOORD_2: 'texCoords2'
12
12
  };
13
13
 
14
- export function getBuffersFromGeometry(gl: WebGLRenderingContext, geometry, options?) {
15
- const buffers: Record<string, Buffer | [Buffer, {}]> = {};
14
+ /*
15
+ export function getAttributeLayoutsFromGeometry(geometry: Geometry) {
16
+ const layouts: Record<string, {}> = {};
16
17
  let indices = geometry.indices;
17
18
 
18
- for (const name in geometry.attributes) {
19
- const attribute = geometry.attributes[name];
20
- const remappedName = mapAttributeName(name, options);
19
+ for (const [name, attribute] of Object.entries(geometry.attributes)) {
20
+ const remappedName = mapAttributeName(name);
21
21
 
22
- if (name === 'indices') {
23
- indices = attribute;
24
- } else if (attribute.constant) {
25
- buffers[remappedName] = attribute.value;
22
+ if (attribute.constant) {
23
+ throw new Error('constant attributes not supported');
26
24
  } else {
27
25
  const typedArray = attribute.value;
28
26
  // Create accessor by copying the attribute and removing `value``
29
27
  const accessor = {...attribute};
30
28
  delete accessor.value;
31
- buffers[remappedName] = [new Buffer(gl, typedArray), accessor];
29
+ buffers[remappedName] = [device.createBuffer(typedArray), accessor];
32
30
 
33
31
  inferAttributeAccessor(name, accessor);
34
32
  }
35
33
  }
34
+ }
35
+
36
+ export class Table {
37
+ length: number;
38
+ // columns: Record<string, TypedArray> = {};
39
+ }
40
+
41
+ export class GPUTable {
42
+ length: number;
43
+ columns: Record<string, Buffer> = {};
44
+ }
45
+
46
+ export function convertTableToGPUTable(table: Table) {
47
+ // for (const ) {}
48
+ }
49
+
50
+ export function renameTableColumns(table: Table, map: (name: string) => string) {
51
+ const newColumns = table.columns.reduce()
52
+ table.clone();
53
+ }
54
+ */
36
55
 
37
- if (indices) {
38
- const data = indices.value || indices;
39
- assert(
40
- data instanceof Uint16Array || data instanceof Uint32Array,
41
- 'attribute array for "indices" must be of integer type'
42
- );
43
- const accessor = {
44
- size: 1,
45
- isIndexed: indices.isIndexed === undefined ? true : indices.isIndexed
46
- };
47
- buffers.indices = [
48
- new Buffer(gl, {
49
- data,
50
- target: GL.ELEMENT_ARRAY_BUFFER
51
- }),
52
- accessor
53
- ];
56
+ export function getIndexBufferFromGeometry(device: Device, geometry: Geometry): Buffer | undefined {
57
+ if (!geometry.indices) {
58
+ return undefined;
59
+ }
60
+
61
+ // @ts-expect-error
62
+ const data = geometry.indices.value || geometry.indices;
63
+ assert(
64
+ data instanceof Uint16Array || data instanceof Uint32Array,
65
+ 'attribute array for "indices" must be of integer type'
66
+ );
67
+ return device.createBuffer({usage: Buffer.INDEX, data});
68
+ }
69
+
70
+ export function getAttributeBuffersFromGeometry(device: Device, geometry: Geometry): Record<string, Buffer> {
71
+ const buffers: Record<string, Buffer> = {};
72
+
73
+ for (const [name, attribute] of Object.entries(geometry.attributes)) {
74
+ const remappedName = mapAttributeName(name);
75
+ if (attribute.constant) {
76
+ throw new Error('constant attributes not supported');
77
+ } else {
78
+ const typedArray = attribute.value;
79
+ buffers[remappedName] = device.createBuffer({data: typedArray, id: `${remappedName}-buffer`});
80
+ }
54
81
  }
55
82
 
56
83
  return buffers;
57
84
  }
58
85
 
59
- function mapAttributeName(name, options) {
60
- const {attributeMap = GLTF_TO_LUMA_ATTRIBUTE_MAP} = options || {};
61
- return (attributeMap && attributeMap[name]) || name;
86
+ function mapAttributeName(name: string): string {
87
+ return GLTF_TO_LUMA_ATTRIBUTE_MAP[name] || name;
62
88
  }
63
89
 
90
+ /*
64
91
  // Check for well known attribute names
65
92
  // eslint-disable-next-line complexity
66
93
  export function inferAttributeAccessor(attributeName, attribute) {
@@ -94,3 +121,4 @@ export function inferAttributeAccessor(attributeName, attribute) {
94
121
 
95
122
  assert(Number.isFinite(attribute.size), `attribute ${attributeName} needs size`);
96
123
  }
124
+ */