@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.
- package/dist/animation/key-frames.d.ts +1 -0
- package/dist/animation/key-frames.d.ts.map +1 -1
- package/dist/animation/key-frames.js.map +1 -1
- package/dist/animation/timeline.d.ts +2 -2
- package/dist/animation/timeline.d.ts.map +1 -1
- package/dist/animation/timeline.js.map +1 -1
- package/dist/geometries/cone-geometry.d.ts.map +1 -1
- package/dist/geometries/cone-geometry.js +1 -1
- package/dist/geometries/cone-geometry.js.map +1 -1
- package/dist/geometries/cube-geometry.d.ts +4 -0
- package/dist/geometries/cube-geometry.d.ts.map +1 -1
- package/dist/geometries/cube-geometry.js +31 -7
- package/dist/geometries/cube-geometry.js.map +1 -1
- package/dist/geometries/cylinder-geometry.d.ts.map +1 -1
- package/dist/geometries/cylinder-geometry.js +1 -1
- package/dist/geometries/cylinder-geometry.js.map +1 -1
- package/dist/geometries/ico-sphere-geometry.d.ts.map +1 -1
- package/dist/geometries/ico-sphere-geometry.js +1 -1
- package/dist/geometries/ico-sphere-geometry.js.map +1 -1
- package/dist/geometries/plane-geometry.d.ts.map +1 -1
- package/dist/geometries/plane-geometry.js +1 -1
- package/dist/geometries/plane-geometry.js.map +1 -1
- package/dist/geometries/sphere-geometry.d.ts.map +1 -1
- package/dist/geometries/sphere-geometry.js +1 -1
- package/dist/geometries/sphere-geometry.js.map +1 -1
- package/dist/geometries/truncated-cone-geometry.d.ts +15 -3
- package/dist/geometries/truncated-cone-geometry.d.ts.map +1 -1
- package/dist/geometries/truncated-cone-geometry.js +29 -15
- package/dist/geometries/truncated-cone-geometry.js.map +1 -1
- package/dist/geometry/geometry-table.d.ts +15 -0
- package/dist/geometry/geometry-table.d.ts.map +1 -0
- package/dist/geometry/geometry-table.js +2 -0
- package/dist/{transform/transform-types.js.map → geometry/geometry-table.js.map} +1 -1
- package/dist/geometry/geometry-utils.js.map +1 -1
- package/dist/geometry/geometry.d.ts +32 -14
- package/dist/geometry/geometry.d.ts.map +1 -1
- package/dist/geometry/geometry.js +57 -34
- package/dist/geometry/geometry.js.map +1 -1
- package/dist/geometry/primitive-utils.d.ts +1 -0
- package/dist/geometry/primitive-utils.d.ts.map +1 -0
- package/dist/geometry/primitive-utils.js +2 -0
- package/dist/geometry/primitive-utils.js.map +1 -0
- package/dist/index.d.ts +6 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -6
- package/dist/index.js.map +1 -1
- package/dist/lib/animation-loop.d.ts +23 -84
- package/dist/lib/animation-loop.d.ts.map +1 -1
- package/dist/lib/animation-loop.js +106 -193
- package/dist/lib/animation-loop.js.map +1 -1
- package/dist/lib/animation-props.d.ts +24 -0
- package/dist/lib/animation-props.d.ts.map +1 -0
- package/dist/lib/animation-props.js +2 -0
- package/dist/lib/animation-props.js.map +1 -0
- package/dist/lib/clip-space.d.ts +1 -0
- package/dist/lib/clip-space.d.ts.map +1 -0
- package/dist/lib/clip-space.js +2 -0
- package/dist/lib/clip-space.js.map +1 -0
- package/dist/lib/model-utils.d.ts +4 -3
- package/dist/lib/model-utils.d.ts.map +1 -1
- package/dist/lib/model-utils.js +24 -70
- package/dist/lib/model-utils.js.map +1 -1
- package/dist/lib/model.d.ts +34 -104
- package/dist/lib/model.d.ts.map +1 -1
- package/dist/lib/model.js +111 -502
- package/dist/lib/model.js.map +1 -1
- package/dist/lib/pipeline-factory.d.ts +60 -0
- package/dist/lib/pipeline-factory.d.ts.map +1 -0
- package/dist/lib/pipeline-factory.js +219 -0
- package/dist/lib/pipeline-factory.js.map +1 -0
- package/dist/lib/render-loop.d.ts +5 -18
- package/dist/lib/render-loop.d.ts.map +1 -1
- package/dist/lib/render-loop.js +16 -23
- package/dist/lib/render-loop.js.map +1 -1
- package/package.json +6 -6
- package/src/animation/key-frames.ts +1 -0
- package/src/animation/timeline.ts +2 -2
- package/src/geometries/cone-geometry.ts +1 -1
- package/src/geometries/cube-geometry.ts +160 -8
- package/src/geometries/cylinder-geometry.ts +1 -1
- package/src/geometries/ico-sphere-geometry.ts +2 -2
- package/src/geometries/plane-geometry.ts +1 -1
- package/src/geometries/sphere-geometry.ts +2 -2
- package/src/geometries/truncated-cone-geometry.ts +30 -12
- package/src/geometry/geometry-table.ts +16 -0
- package/src/geometry/geometry-utils.ts +1 -1
- package/src/geometry/geometry.ts +97 -47
- package/src/geometry/primitive-utils.ts +30 -0
- package/src/index.ts +13 -12
- package/src/lib/animation-loop.ts +136 -314
- package/src/lib/animation-props.ts +31 -0
- package/src/{utils → lib}/clip-space.ts +5 -2
- package/src/lib/model-utils.ts +60 -32
- package/src/lib/model.ts +127 -639
- package/src/lib/pipeline-factory.ts +234 -0
- package/src/lib/render-loop.ts +24 -22
- package/dist/lib/program-manager.d.ts +0 -39
- package/dist/lib/program-manager.d.ts.map +0 -1
- package/dist/lib/program-manager.js +0 -175
- package/dist/lib/program-manager.js.map +0 -1
- package/dist/transform/buffer-transform.d.ts +0 -36
- package/dist/transform/buffer-transform.d.ts.map +0 -1
- package/dist/transform/buffer-transform.js +0 -255
- package/dist/transform/buffer-transform.js.map +0 -1
- package/dist/transform/texture-transform.d.ts +0 -57
- package/dist/transform/texture-transform.d.ts.map +0 -1
- package/dist/transform/texture-transform.js +0 -412
- package/dist/transform/texture-transform.js.map +0 -1
- package/dist/transform/transform-shader-utils.d.ts +0 -26
- package/dist/transform/transform-shader-utils.d.ts.map +0 -1
- package/dist/transform/transform-shader-utils.js +0 -149
- package/dist/transform/transform-shader-utils.js.map +0 -1
- package/dist/transform/transform-types.d.ts +0 -44
- package/dist/transform/transform-types.d.ts.map +0 -1
- package/dist/transform/transform-types.js +0 -2
- package/dist/transform/transform.d.ts +0 -47
- package/dist/transform/transform.d.ts.map +0 -1
- package/dist/transform/transform.js +0 -198
- package/dist/transform/transform.js.map +0 -1
- package/dist/utils/clip-space.d.ts +0 -5
- package/dist/utils/clip-space.d.ts.map +0 -1
- package/dist/utils/clip-space.js +0 -34
- package/dist/utils/clip-space.js.map +0 -1
- package/src/lib/program-manager.ts +0 -187
- package/src/transform/buffer-transform.ts +0 -214
- package/src/transform/texture-transform.ts +0 -344
- package/src/transform/transform-shader-utils.ts +0 -169
- package/src/transform/transform-types.ts +0 -42
- 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 '
|
|
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
|
+
*/
|
package/src/lib/model-utils.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
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
|
-
|
|
15
|
-
|
|
14
|
+
/*
|
|
15
|
+
export function getAttributeLayoutsFromGeometry(geometry: Geometry) {
|
|
16
|
+
const layouts: Record<string, {}> = {};
|
|
16
17
|
let indices = geometry.indices;
|
|
17
18
|
|
|
18
|
-
for (const name
|
|
19
|
-
const
|
|
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 (
|
|
23
|
-
|
|
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] = [
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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
|
|
60
|
-
|
|
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
|
+
*/
|