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

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 +2 -2
  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 +31 -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 +32 -14
  36. package/dist/geometry/geometry.d.ts.map +1 -1
  37. package/dist/geometry/geometry.js +57 -34
  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 +6 -7
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +4 -6
  46. package/dist/index.js.map +1 -1
  47. package/dist/lib/animation-loop.d.ts +23 -84
  48. package/dist/lib/animation-loop.d.ts.map +1 -1
  49. package/dist/lib/animation-loop.js +106 -193
  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 +111 -502
  66. package/dist/lib/model.js.map +1 -1
  67. package/dist/lib/pipeline-factory.d.ts +60 -0
  68. package/dist/lib/pipeline-factory.d.ts.map +1 -0
  69. package/dist/lib/pipeline-factory.js +219 -0
  70. package/dist/lib/pipeline-factory.js.map +1 -0
  71. package/dist/lib/render-loop.d.ts +5 -18
  72. package/dist/lib/render-loop.d.ts.map +1 -1
  73. package/dist/lib/render-loop.js +16 -23
  74. package/dist/lib/render-loop.js.map +1 -1
  75. package/package.json +6 -6
  76. package/src/animation/key-frames.ts +1 -0
  77. package/src/animation/timeline.ts +2 -2
  78. package/src/geometries/cone-geometry.ts +1 -1
  79. package/src/geometries/cube-geometry.ts +160 -8
  80. package/src/geometries/cylinder-geometry.ts +1 -1
  81. package/src/geometries/ico-sphere-geometry.ts +2 -2
  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 +97 -47
  88. package/src/geometry/primitive-utils.ts +30 -0
  89. package/src/index.ts +13 -12
  90. package/src/lib/animation-loop.ts +136 -314
  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 +127 -639
  95. package/src/lib/pipeline-factory.ts +234 -0
  96. package/src/lib/render-loop.ts +24 -22
  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
@@ -0,0 +1,31 @@
1
+ import {Device} from '@luma.gl/api';
2
+ import {Timeline} from '../animation/timeline'
3
+ import type {AnimationLoop} from './animation-loop';
4
+
5
+ /** Properties passed to every render frame */
6
+ export type AnimationProps = {
7
+ device: Device;
8
+ animationLoop: AnimationLoop;
9
+
10
+ /** @todo Should be canvasContext */
11
+ canvas: HTMLCanvasElement | OffscreenCanvas;
12
+ useDevicePixels: number | boolean;
13
+ width: number;
14
+ height: number;
15
+ aspect: number;
16
+
17
+ // Animation props
18
+ time: number;
19
+ startTime: number;
20
+ engineTime: number;
21
+ tick: number;
22
+ tock: number;
23
+
24
+ // Initial values
25
+ needsRedraw?: string | false;
26
+
27
+ timeline: Timeline | null;
28
+
29
+ // Experimental
30
+ _mousePosition?: [number, number] | null; // [offsetX, offsetY],
31
+ };
@@ -1,6 +1,8 @@
1
+
1
2
  // ClipSpace
3
+ /*
2
4
  import GL from '@luma.gl/constants';
3
- import Model, {ModelProps} from '../lib/model';
5
+ import Model, {ModelProps} from './model';
4
6
  import Geometry from '../geometry/geometry';
5
7
 
6
8
  const CLIPSPACE_VERTEX_SHADER = `\
@@ -20,7 +22,7 @@ void main(void) {
20
22
  }
21
23
  `;
22
24
 
23
- /* eslint-disable indent, no-multi-spaces */
25
+ /* eslint-disable indent, no-multi-spaces *
24
26
  const POSITIONS = [-1, -1, 1, -1, -1, 1, 1, 1];
25
27
 
26
28
 
@@ -46,3 +48,4 @@ export default class ClipSpace extends Model {
46
48
  this.setVertexCount(4);
47
49
  }
48
50
  }
51
+ */
@@ -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
+ */