@luma.gl/engine 9.1.0-beta.9 → 9.2.0-alpha.1
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/README.md +5 -0
- package/dist/animation-loop/animation-loop.d.ts +11 -11
- package/dist/animation-loop/animation-loop.d.ts.map +1 -1
- package/dist/animation-loop/animation-loop.js +25 -49
- package/dist/animation-loop/animation-loop.js.map +1 -1
- package/dist/animation-loop/animation-props.d.ts +3 -4
- package/dist/animation-loop/animation-props.d.ts.map +1 -1
- package/dist/async-texture/async-texture.d.ts +106 -2
- package/dist/async-texture/async-texture.d.ts.map +1 -1
- package/dist/async-texture/async-texture.js +278 -5
- package/dist/async-texture/async-texture.js.map +1 -1
- package/dist/compute/computation.d.ts +1 -1
- package/dist/compute/computation.d.ts.map +1 -1
- package/dist/compute/swap.d.ts.map +1 -1
- package/dist/compute/swap.js +6 -2
- package/dist/compute/swap.js.map +1 -1
- package/dist/compute/texture-transform.d.ts.map +1 -1
- package/dist/compute/texture-transform.js +4 -2
- package/dist/compute/texture-transform.js.map +1 -1
- package/dist/debug/copy-texture-to-image.d.ts +23 -1
- package/dist/debug/copy-texture-to-image.d.ts.map +1 -1
- package/dist/debug/copy-texture-to-image.js +37 -1
- package/dist/debug/copy-texture-to-image.js.map +1 -1
- package/dist/dist.dev.js +466 -189
- package/dist/dist.min.js +26 -26
- package/dist/factories/pipeline-factory.d.ts +11 -1
- package/dist/factories/pipeline-factory.d.ts.map +1 -1
- package/dist/factories/pipeline-factory.js +104 -22
- package/dist/factories/pipeline-factory.js.map +1 -1
- package/dist/factories/shader-factory.d.ts +5 -1
- package/dist/factories/shader-factory.d.ts.map +1 -1
- package/dist/factories/shader-factory.js +38 -4
- package/dist/factories/shader-factory.js.map +1 -1
- package/dist/index.cjs +482 -208
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/model/model.d.ts +4 -19
- package/dist/model/model.d.ts.map +1 -1
- package/dist/model/model.js +17 -56
- package/dist/model/model.js.map +1 -1
- package/dist/models/billboard-texture-model.d.ts.map +1 -1
- package/dist/models/billboard-texture-model.js +6 -4
- package/dist/models/billboard-texture-model.js.map +1 -1
- package/dist/modules/picking/legacy-picking-manager.d.ts +1 -1
- package/dist/modules/picking/legacy-picking-manager.d.ts.map +1 -1
- package/dist/modules/picking/legacy-picking-manager.js +1 -1
- package/dist/modules/picking/legacy-picking-manager.js.map +1 -1
- package/dist/modules/picking/picking-manager.d.ts +1 -1
- package/dist/modules/picking/picking-manager.d.ts.map +1 -1
- package/dist/modules/picking/picking-manager.js +1 -1
- package/dist/modules/picking/picking-manager.js.map +1 -1
- package/dist/passes/get-fragment-shader.js +2 -2
- package/dist/passes/shader-pass-renderer.d.ts +4 -4
- package/dist/passes/shader-pass-renderer.d.ts.map +1 -1
- package/dist/passes/shader-pass-renderer.js +15 -5
- package/dist/passes/shader-pass-renderer.js.map +1 -1
- package/dist/shader-inputs.js +1 -1
- package/dist/shader-inputs.js.map +1 -1
- package/package.json +4 -4
- package/src/animation-loop/animation-loop.ts +30 -58
- package/src/animation-loop/animation-props.ts +3 -5
- package/src/async-texture/async-texture.ts +382 -16
- package/src/async-texture/texture-setters.ts.disabled +296 -0
- package/src/compute/computation.ts +1 -1
- package/src/compute/swap.ts +7 -2
- package/src/compute/texture-transform.ts +4 -2
- package/src/debug/copy-texture-to-image.ts +52 -2
- package/src/factories/pipeline-factory.ts +119 -23
- package/src/factories/shader-factory.ts +41 -5
- package/src/index.ts +12 -0
- package/src/model/model.ts +21 -67
- package/src/models/billboard-texture-model.ts +6 -4
- package/src/modules/picking/legacy-picking-manager.ts +2 -2
- package/src/modules/picking/picking-manager.ts +2 -2
- package/src/passes/get-fragment-shader.ts +2 -2
- package/src/passes/shader-pass-renderer.ts +18 -8
- package/src/shader-inputs.ts +1 -1
|
@@ -21,9 +21,9 @@ export class ShaderPassRenderer {
|
|
|
21
21
|
props.shaderPasses.map(shaderPass => initializeShaderModule(shaderPass));
|
|
22
22
|
const modules = props.shaderPasses.reduce((object, shaderPass) => ({ ...object, [shaderPass.name]: shaderPass }), {});
|
|
23
23
|
this.shaderInputs = props.shaderInputs || new ShaderInputs(modules);
|
|
24
|
-
const size = device.getCanvasContext().
|
|
24
|
+
const size = device.getCanvasContext().getDrawingBufferSize();
|
|
25
25
|
this.swapFramebuffers = new SwapFramebuffers(device, {
|
|
26
|
-
colorAttachments: [
|
|
26
|
+
colorAttachments: [device.preferredColorFormat],
|
|
27
27
|
width: size[0],
|
|
28
28
|
height: size[1]
|
|
29
29
|
});
|
|
@@ -76,7 +76,16 @@ void main() {
|
|
|
76
76
|
// source texture not yet loaded
|
|
77
77
|
return false;
|
|
78
78
|
}
|
|
79
|
-
const
|
|
79
|
+
const framebuffer = this.device
|
|
80
|
+
.getDefaultCanvasContext()
|
|
81
|
+
// @ts-expect-error TODO - remove after republish
|
|
82
|
+
.getCurrentFramebuffer({ depthStencilAttachment: false });
|
|
83
|
+
const renderPass = this.device.beginRenderPass({
|
|
84
|
+
id: 'shader-pass-renderer-to-screen',
|
|
85
|
+
framebuffer,
|
|
86
|
+
clearColor: [0, 0, 0, 1],
|
|
87
|
+
clearDepth: 1
|
|
88
|
+
});
|
|
80
89
|
this.clipSpace.setBindings({ sourceTexture: outputTexture });
|
|
81
90
|
this.clipSpace.draw(renderPass);
|
|
82
91
|
renderPass.end();
|
|
@@ -96,6 +105,7 @@ void main() {
|
|
|
96
105
|
});
|
|
97
106
|
// Clear the current texture before we begin
|
|
98
107
|
const clearTexturePass = this.device.beginRenderPass({
|
|
108
|
+
id: 'shader-pass-renderer-clear-texture',
|
|
99
109
|
framebuffer: this.swapFramebuffers.current,
|
|
100
110
|
clearColor: [0, 0, 0, 1]
|
|
101
111
|
});
|
|
@@ -120,6 +130,7 @@ void main() {
|
|
|
120
130
|
// texSize: [sourceTextures.width, sourceTextures.height]
|
|
121
131
|
};
|
|
122
132
|
const renderPass = this.device.beginRenderPass({
|
|
133
|
+
id: 'shader-pass-renderer-run-pass',
|
|
123
134
|
framebuffer: this.swapFramebuffers.next,
|
|
124
135
|
clearColor: [0, 0, 0, 1],
|
|
125
136
|
clearDepth: 1
|
|
@@ -173,8 +184,7 @@ class SubPassRenderer {
|
|
|
173
184
|
fs,
|
|
174
185
|
modules: [shaderPass],
|
|
175
186
|
parameters: {
|
|
176
|
-
depthWriteEnabled: false
|
|
177
|
-
depthCompare: 'always'
|
|
187
|
+
depthWriteEnabled: false
|
|
178
188
|
}
|
|
179
189
|
});
|
|
180
190
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader-pass-renderer.js","sourceRoot":"","sources":["../../src/passes/shader-pass-renderer.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAIpC,OAAO,EAAC,sBAAsB,EAAC,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAC,YAAY,EAAC,4BAAyB;AAE9C,OAAO,EAAC,SAAS,EAAC,gCAA6B;AAC/C,OAAO,EAAC,gBAAgB,EAAC,2BAAwB;AACjD,OAAO,EAAC,sBAAsB,EAAC,6CAA0C;AAEzE,OAAO,EAAC,8BAA8B,EAAC,iCAA8B;AAYrE,4DAA4D;AAC5D,MAAM,OAAO,kBAAkB;IAC7B,MAAM,CAAS;IACf,YAAY,CAAe;IAC3B,aAAa,CAAiB;IAC9B,gBAAgB,CAAmB;IACnC,kCAAkC;IAClC,SAAS,CAAY;IACrB,YAAY,CAAyB;IAErC,YAAY,MAAc,EAAE,KAA8B;QACxD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC;QAEzE,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CACvC,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,EAAC,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,EAAC,CAAC,EACpE,EAAE,CACH,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;QAEpE,MAAM,IAAI,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"shader-pass-renderer.js","sourceRoot":"","sources":["../../src/passes/shader-pass-renderer.ts"],"names":[],"mappings":"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"}
|
package/dist/shader-inputs.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
import { log } from '@luma.gl/core';
|
|
5
|
-
// import type {
|
|
5
|
+
// import type {VariableShaderType, UniformValue, UniformFormat, UniformInfoDevice, Texture, Sampler} from '@luma.gl/core';
|
|
6
6
|
import { getShaderModuleDependencies } from '@luma.gl/shadertools';
|
|
7
7
|
import { splitUniformsAndBindings } from "./model/split-uniforms-and-bindings.js";
|
|
8
8
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader-inputs.js","sourceRoot":"","sources":["../src/shader-inputs.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,GAAG,EAAC,MAAM,eAAe,CAAC;AAClC,
|
|
1
|
+
{"version":3,"file":"shader-inputs.js","sourceRoot":"","sources":["../src/shader-inputs.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@luma.gl/engine",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.2.0-alpha.1",
|
|
4
4
|
"description": "3D Engine Components for luma.gl",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -40,8 +40,8 @@
|
|
|
40
40
|
"prepublishOnly": "npm run build-minified-bundle && npm run build-dev-bundle"
|
|
41
41
|
},
|
|
42
42
|
"peerDependencies": {
|
|
43
|
-
"@luma.gl/core": "
|
|
44
|
-
"@luma.gl/shadertools": "
|
|
43
|
+
"@luma.gl/core": "9.2.0-alpha.0",
|
|
44
|
+
"@luma.gl/shadertools": "9.2.0-alpha.0"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@math.gl/core": "^4.1.0",
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
"@probe.gl/log": "^4.0.8",
|
|
50
50
|
"@probe.gl/stats": "^4.0.8"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "d6d2f791f2ce96f4b5acb68e05faea62c35440fb"
|
|
53
53
|
}
|
|
@@ -27,38 +27,30 @@ export type AnimationLoopProps = {
|
|
|
27
27
|
|
|
28
28
|
// view parameters - TODO move to CanvasContext?
|
|
29
29
|
autoResizeViewport?: boolean;
|
|
30
|
-
autoResizeDrawingBuffer?: boolean;
|
|
31
|
-
useDevicePixels?: number | boolean;
|
|
32
30
|
};
|
|
33
31
|
|
|
34
32
|
export type MutableAnimationLoopProps = {
|
|
35
33
|
// view parameters
|
|
36
34
|
autoResizeViewport?: boolean;
|
|
37
|
-
autoResizeDrawingBuffer?: boolean;
|
|
38
|
-
useDevicePixels?: number | boolean;
|
|
39
35
|
};
|
|
40
36
|
|
|
41
|
-
|
|
42
|
-
|
|
37
|
+
/** Convenient animation loop */
|
|
38
|
+
export class AnimationLoop {
|
|
39
|
+
static defaultAnimationLoopProps = {
|
|
40
|
+
device: null!,
|
|
43
41
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
onFinalize: () => {},
|
|
50
|
-
onError: error => console.error(error), // eslint-disable-line no-console
|
|
42
|
+
onAddHTML: () => '',
|
|
43
|
+
onInitialize: async () => null,
|
|
44
|
+
onRender: () => {},
|
|
45
|
+
onFinalize: () => {},
|
|
46
|
+
onError: error => console.error(error), // eslint-disable-line no-console
|
|
51
47
|
|
|
52
|
-
|
|
48
|
+
stats: luma.stats.get(`animation-loop-${statIdCounter++}`),
|
|
53
49
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
autoResizeDrawingBuffer: false
|
|
58
|
-
};
|
|
50
|
+
// view parameters
|
|
51
|
+
autoResizeViewport: false
|
|
52
|
+
} as const satisfies Readonly<Required<AnimationLoopProps>>;
|
|
59
53
|
|
|
60
|
-
/** Convenient animation loop */
|
|
61
|
-
export class AnimationLoop {
|
|
62
54
|
device: Device | null = null;
|
|
63
55
|
canvas: HTMLCanvasElement | OffscreenCanvas | null = null;
|
|
64
56
|
|
|
@@ -88,26 +80,20 @@ export class AnimationLoop {
|
|
|
88
80
|
* @param {HTMLCanvasElement} canvas - if provided, width and height will be passed to context
|
|
89
81
|
*/
|
|
90
82
|
constructor(props: AnimationLoopProps) {
|
|
91
|
-
this.props = {...
|
|
83
|
+
this.props = {...AnimationLoop.defaultAnimationLoopProps, ...props};
|
|
92
84
|
props = this.props;
|
|
93
85
|
|
|
94
86
|
if (!props.device) {
|
|
95
87
|
throw new Error('No device provided');
|
|
96
88
|
}
|
|
97
89
|
|
|
98
|
-
const {useDevicePixels = true} = this.props;
|
|
99
|
-
|
|
100
90
|
// state
|
|
101
91
|
this.stats = props.stats || new Stats({id: 'animation-loop-stats'});
|
|
102
92
|
this.cpuTime = this.stats.get('CPU Time');
|
|
103
93
|
this.gpuTime = this.stats.get('GPU Time');
|
|
104
94
|
this.frameRate = this.stats.get('Frame Rate');
|
|
105
95
|
|
|
106
|
-
this.setProps({
|
|
107
|
-
autoResizeViewport: props.autoResizeViewport,
|
|
108
|
-
autoResizeDrawingBuffer: props.autoResizeDrawingBuffer,
|
|
109
|
-
useDevicePixels
|
|
110
|
-
});
|
|
96
|
+
this.setProps({autoResizeViewport: props.autoResizeViewport});
|
|
111
97
|
|
|
112
98
|
// Bind methods
|
|
113
99
|
this.start = this.start.bind(this);
|
|
@@ -130,7 +116,7 @@ export class AnimationLoop {
|
|
|
130
116
|
setError(error: Error): void {
|
|
131
117
|
this.props.onError(error);
|
|
132
118
|
this._error = Error();
|
|
133
|
-
const canvas = this.device?.
|
|
119
|
+
const canvas = this.device?.getDefaultCanvasContext().canvas;
|
|
134
120
|
if (canvas instanceof HTMLCanvasElement) {
|
|
135
121
|
const errorDiv = document.createElement('h1');
|
|
136
122
|
errorDiv.innerHTML = error.message;
|
|
@@ -150,17 +136,10 @@ export class AnimationLoop {
|
|
|
150
136
|
return this;
|
|
151
137
|
}
|
|
152
138
|
|
|
153
|
-
/** TODO - move these props to CanvasContext? */
|
|
154
139
|
setProps(props: MutableAnimationLoopProps): this {
|
|
155
140
|
if ('autoResizeViewport' in props) {
|
|
156
141
|
this.props.autoResizeViewport = props.autoResizeViewport || false;
|
|
157
142
|
}
|
|
158
|
-
if ('autoResizeDrawingBuffer' in props) {
|
|
159
|
-
this.props.autoResizeDrawingBuffer = props.autoResizeDrawingBuffer || false;
|
|
160
|
-
}
|
|
161
|
-
if ('useDevicePixels' in props) {
|
|
162
|
-
this.props.useDevicePixels = props.useDevicePixels || false;
|
|
163
|
-
}
|
|
164
143
|
return this;
|
|
165
144
|
}
|
|
166
145
|
|
|
@@ -292,7 +271,6 @@ export class AnimationLoop {
|
|
|
292
271
|
this._updateAnimationProps();
|
|
293
272
|
|
|
294
273
|
// Default viewport setup, in case onInitialize wants to render
|
|
295
|
-
this._resizeCanvasDrawingBuffer();
|
|
296
274
|
this._resizeViewport();
|
|
297
275
|
|
|
298
276
|
// this._gpuTimeQuery = Query.isSupported(this.gl, ['timers']) ? new Query(this.gl) : null;
|
|
@@ -371,26 +349,30 @@ export class AnimationLoop {
|
|
|
371
349
|
}
|
|
372
350
|
|
|
373
351
|
_setupFrame(): void {
|
|
374
|
-
this._resizeCanvasDrawingBuffer();
|
|
375
352
|
this._resizeViewport();
|
|
376
353
|
}
|
|
377
354
|
|
|
378
355
|
// Initialize the object that will be passed to app callbacks
|
|
379
356
|
_initializeAnimationProps(): void {
|
|
380
|
-
const
|
|
381
|
-
|
|
382
|
-
if (!this.device || !canvas) {
|
|
357
|
+
const canvasContext = this.device?.getDefaultCanvasContext();
|
|
358
|
+
if (!this.device || !canvasContext) {
|
|
383
359
|
throw new Error('loop');
|
|
384
360
|
}
|
|
361
|
+
|
|
362
|
+
const canvas = canvasContext?.canvas;
|
|
363
|
+
const useDevicePixels = canvasContext.props.useDevicePixels;
|
|
364
|
+
|
|
385
365
|
this.animationProps = {
|
|
386
366
|
animationLoop: this,
|
|
387
367
|
|
|
388
368
|
device: this.device,
|
|
369
|
+
canvasContext,
|
|
389
370
|
canvas,
|
|
371
|
+
// @ts-expect-error Deprecated
|
|
372
|
+
useDevicePixels,
|
|
373
|
+
|
|
390
374
|
timeline: this.timeline,
|
|
391
375
|
|
|
392
|
-
// Initial values
|
|
393
|
-
useDevicePixels: this.props.useDevicePixels,
|
|
394
376
|
needsRedraw: false,
|
|
395
377
|
|
|
396
378
|
// Placeholders
|
|
@@ -460,7 +442,7 @@ export class AnimationLoop {
|
|
|
460
442
|
if (!this.device) {
|
|
461
443
|
throw new Error('No device provided');
|
|
462
444
|
}
|
|
463
|
-
this.canvas = this.device.
|
|
445
|
+
this.canvas = this.device.getDefaultCanvasContext().canvas || null;
|
|
464
446
|
// this._createInfoDiv();
|
|
465
447
|
}
|
|
466
448
|
|
|
@@ -491,11 +473,11 @@ export class AnimationLoop {
|
|
|
491
473
|
return {width: 1, height: 1, aspect: 1};
|
|
492
474
|
}
|
|
493
475
|
// https://webglfundamentals.org/webgl/lessons/webgl-resizing-the-canvas.html
|
|
494
|
-
const [width, height] = this.device?.
|
|
476
|
+
const [width, height] = this.device?.getDefaultCanvasContext().getDevicePixelSize() || [1, 1];
|
|
495
477
|
|
|
496
478
|
// https://webglfundamentals.org/webgl/lessons/webgl-anti-patterns.html
|
|
497
479
|
let aspect = 1;
|
|
498
|
-
const canvas = this.device?.
|
|
480
|
+
const canvas = this.device?.getDefaultCanvasContext().canvas;
|
|
499
481
|
|
|
500
482
|
// @ts-expect-error
|
|
501
483
|
if (canvas && canvas.clientHeight) {
|
|
@@ -508,7 +490,7 @@ export class AnimationLoop {
|
|
|
508
490
|
return {width, height, aspect};
|
|
509
491
|
}
|
|
510
492
|
|
|
511
|
-
/** Default viewport setup */
|
|
493
|
+
/** @deprecated Default viewport setup */
|
|
512
494
|
_resizeViewport(): void {
|
|
513
495
|
// TODO can we use canvas context to code this in a portable way?
|
|
514
496
|
// @ts-expect-error Expose on canvasContext
|
|
@@ -525,16 +507,6 @@ export class AnimationLoop {
|
|
|
525
507
|
}
|
|
526
508
|
}
|
|
527
509
|
|
|
528
|
-
/**
|
|
529
|
-
* Resize the render buffer of the canvas to match canvas client size
|
|
530
|
-
* Optionally multiplying with devicePixel ratio
|
|
531
|
-
*/
|
|
532
|
-
_resizeCanvasDrawingBuffer(): void {
|
|
533
|
-
if (this.props.autoResizeDrawingBuffer) {
|
|
534
|
-
this.device?.canvasContext?.resize({useDevicePixels: this.props.useDevicePixels});
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
|
|
538
510
|
_beginFrameTimers() {
|
|
539
511
|
this.frameRate.timeEnd();
|
|
540
512
|
this.frameRate.timeStart();
|
|
@@ -2,18 +2,16 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
|
-
import {Device} from '@luma.gl/core';
|
|
5
|
+
import {CanvasContext, Device} from '@luma.gl/core';
|
|
6
6
|
import {Timeline} from '../animation/timeline';
|
|
7
7
|
import type {AnimationLoop} from './animation-loop';
|
|
8
8
|
|
|
9
9
|
/** Properties passed to every render frame */
|
|
10
10
|
export type AnimationProps = {
|
|
11
|
-
device: Device;
|
|
12
11
|
animationLoop: AnimationLoop;
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
device: Device;
|
|
13
|
+
canvasContext: CanvasContext;
|
|
15
14
|
canvas: HTMLCanvasElement | OffscreenCanvas;
|
|
16
|
-
useDevicePixels: number | boolean;
|
|
17
15
|
width: number;
|
|
18
16
|
height: number;
|
|
19
17
|
aspect: number;
|