@luma.gl/core 9.1.0-beta.8 → 9.1.0
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/adapter/canvas-context.d.ts +30 -73
- package/dist/adapter/canvas-context.d.ts.map +1 -1
- package/dist/adapter/canvas-context.js +97 -203
- package/dist/adapter/canvas-context.js.map +1 -1
- package/dist/adapter/device.d.ts +3 -24
- package/dist/adapter/device.d.ts.map +1 -1
- package/dist/adapter/device.js +10 -22
- package/dist/adapter/device.js.map +1 -1
- package/dist/adapter/luma.js +1 -1
- package/dist/adapter/luma.js.map +1 -1
- package/dist/adapter/resources/render-pipeline.d.ts +1 -6
- package/dist/adapter/resources/render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/render-pipeline.js +4 -2
- package/dist/adapter/resources/render-pipeline.js.map +1 -1
- package/dist/adapter/resources/vertex-array.d.ts +2 -4
- package/dist/adapter/resources/vertex-array.d.ts.map +1 -1
- package/dist/adapter/resources/vertex-array.js +6 -3
- package/dist/adapter/resources/vertex-array.js.map +1 -1
- package/dist/dist.dev.js +115 -210
- package/dist/dist.min.js +6 -6
- package/dist/gpu-type-utils/texture-format-table.js +1 -1
- package/dist/gpu-type-utils/texture-format-table.js.map +1 -1
- package/dist/gpu-type-utils/texture-formats.d.ts +2 -2
- package/dist/gpu-type-utils/texture-formats.d.ts.map +1 -1
- package/dist/index.cjs +117 -206
- package/dist/index.cjs.map +3 -3
- package/package.json +2 -2
- package/src/adapter/canvas-context.ts +122 -272
- package/src/adapter/device.ts +15 -50
- package/src/adapter/resources/render-pipeline.ts +12 -18
- package/src/adapter/resources/vertex-array.ts +9 -8
- package/src/gpu-type-utils/texture-format-table.ts +1 -1
- package/src/gpu-type-utils/texture-formats.ts +1 -2
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import type { Device } from "./device.js";
|
|
2
2
|
import type { Framebuffer } from "./resources/framebuffer.js";
|
|
3
|
-
import type {
|
|
3
|
+
import type { TextureFormat } from "../gpu-type-utils/texture-formats.js";
|
|
4
4
|
/** Properties for a CanvasContext */
|
|
5
5
|
export type CanvasContextProps = {
|
|
6
|
-
/** Identifier, for debugging */
|
|
7
|
-
id?: string;
|
|
8
6
|
/** If a canvas not supplied, one will be created and added to the DOM. If a string, a canvas with that id will be looked up in the DOM */
|
|
9
7
|
canvas?: HTMLCanvasElement | OffscreenCanvas | string | null;
|
|
10
8
|
/** If new canvas is created, it will be created in the specified container, otherwise is appended as a child of document.body */
|
|
@@ -34,36 +32,20 @@ export type CanvasContextProps = {
|
|
|
34
32
|
export declare abstract class CanvasContext {
|
|
35
33
|
static defaultProps: Required<CanvasContextProps>;
|
|
36
34
|
abstract readonly device: Device;
|
|
37
|
-
abstract readonly handle: unknown;
|
|
38
35
|
readonly id: string;
|
|
39
36
|
readonly props: Required<CanvasContextProps>;
|
|
40
37
|
readonly canvas: HTMLCanvasElement | OffscreenCanvas;
|
|
41
38
|
readonly htmlCanvas?: HTMLCanvasElement;
|
|
42
39
|
readonly offscreenCanvas?: OffscreenCanvas;
|
|
43
40
|
readonly type: 'html-canvas' | 'offscreen-canvas' | 'node';
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
/** Visibility is automatically updated (via an IntersectionObserver) */
|
|
53
|
-
isVisible: boolean;
|
|
54
|
-
/** Device pixel ratio. Automatically updated via media queries */
|
|
55
|
-
devicePixelRatio: number;
|
|
56
|
-
/** Exact width of canvas in physical pixels (tracked by a ResizeObserver) */
|
|
57
|
-
pixelWidth: number;
|
|
58
|
-
/** Exact height of canvas in physical pixels (tracked by a ResizeObserver) */
|
|
59
|
-
pixelHeight: number;
|
|
60
|
-
/** Width of drawing buffer: automatically updated if props.autoResize is true */
|
|
61
|
-
drawingBufferWidth: number;
|
|
62
|
-
/** Height of drawing buffer: automatically updated if props.autoResize is true */
|
|
63
|
-
drawingBufferHeight: number;
|
|
64
|
-
protected readonly _resizeObserver: ResizeObserver | undefined;
|
|
65
|
-
protected readonly _intersectionObserver: IntersectionObserver | undefined;
|
|
66
|
-
/** State used by luma.gl classes: TODO - remove */
|
|
41
|
+
/** Format of returned textures: "bgra8unorm", "rgba8unorm" */
|
|
42
|
+
abstract readonly format: TextureFormat;
|
|
43
|
+
/** Default stencil format for depth textures */
|
|
44
|
+
abstract readonly depthStencilFormat: TextureFormat;
|
|
45
|
+
width: number;
|
|
46
|
+
height: number;
|
|
47
|
+
readonly resizeObserver: ResizeObserver | undefined;
|
|
48
|
+
/** State used by luma.gl classes: TODO - move to canvasContext*/
|
|
67
49
|
readonly _canvasSizeInfo: {
|
|
68
50
|
clientWidth: number;
|
|
69
51
|
clientHeight: number;
|
|
@@ -73,35 +55,20 @@ export declare abstract class CanvasContext {
|
|
|
73
55
|
toString(): string;
|
|
74
56
|
constructor(props?: CanvasContextProps);
|
|
75
57
|
/** Returns a framebuffer with properly resized current 'swap chain' textures */
|
|
76
|
-
abstract getCurrentFramebuffer(
|
|
77
|
-
depthStencilFormat?: DepthStencilTextureFormat | false;
|
|
78
|
-
}): Framebuffer;
|
|
58
|
+
abstract getCurrentFramebuffer(): Framebuffer;
|
|
79
59
|
/**
|
|
80
|
-
* Returns the
|
|
81
|
-
*
|
|
82
|
-
* @note This is independent of the canvas' internal drawing buffer size (.width, .height).
|
|
60
|
+
* Returns the current DPR, if props.useDevicePixels is true
|
|
61
|
+
* Device refers to physical
|
|
83
62
|
*/
|
|
84
|
-
|
|
63
|
+
getDevicePixelRatio(useDevicePixels?: boolean | number): number;
|
|
85
64
|
/**
|
|
86
|
-
* Returns the size
|
|
87
|
-
* @note This can be different from the 'CSS' size of a canvas
|
|
88
|
-
*
|
|
65
|
+
* Returns the size of drawing buffer in device pixels.
|
|
66
|
+
* @note This can be different from the 'CSS' size of a canvas, and also from the
|
|
67
|
+
* canvas' internal drawing buffer size (.width, .height).
|
|
68
|
+
* This is the size required to cover the canvas, adjusted for DPR
|
|
89
69
|
*/
|
|
90
70
|
getPixelSize(): [number, number];
|
|
91
|
-
/** Get the drawing buffer size (number of pixels GPU is rendering into, can be different from CSS size) */
|
|
92
|
-
getDrawingBufferSize(): [number, number];
|
|
93
|
-
/** Returns the biggest allowed framebuffer size. @todo Allow the application to limit this? */
|
|
94
|
-
getMaxDrawingBufferSize(): [number, number];
|
|
95
|
-
/** Update the canvas drawing buffer size. Called automatically if props.autoResize is true. */
|
|
96
|
-
setDrawingBufferSize(width: number, height: number): void;
|
|
97
|
-
/** @deprecated - TODO which values should we use for aspect */
|
|
98
71
|
getAspect(): number;
|
|
99
|
-
/**
|
|
100
|
-
* Returns the current DPR (number of physical pixels per CSS pixel), if props.useDevicePixels is true
|
|
101
|
-
* @note This can be a fractional (non-integer) number, e.g. when the user zooms in the browser.
|
|
102
|
-
* @note This function handles the non-HTML canvas cases
|
|
103
|
-
*/
|
|
104
|
-
getDevicePixelRatio(useDevicePixels?: boolean | number): number;
|
|
105
72
|
/**
|
|
106
73
|
* Returns multiplier need to convert CSS size to Device size
|
|
107
74
|
*/
|
|
@@ -115,37 +82,27 @@ export declare abstract class CanvasContext {
|
|
|
115
82
|
width: number;
|
|
116
83
|
height: number;
|
|
117
84
|
};
|
|
118
|
-
/** Performs platform specific updates (WebGPU vs WebGL) */
|
|
119
|
-
protected abstract updateSize(size: [width: number, height: number]): void;
|
|
120
85
|
/**
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
*/
|
|
124
|
-
protected _setAutoCreatedCanvasId(id: string): void;
|
|
125
|
-
/** reacts to our intersection observer */
|
|
126
|
-
protected _handleIntersection(entries: IntersectionObserverEntry[]): void;
|
|
127
|
-
/**
|
|
128
|
-
* Reacts to an observed resize by using the most accurate pixel size information the browser can provide
|
|
129
|
-
* @see https://web.dev/articles/device-pixel-content-box
|
|
130
|
-
* @see https://webgpufundamentals.org/webgpu/lessons/webgpu-resizing-the-canvas.html
|
|
86
|
+
* Use devicePixelRatio to set canvas width and height
|
|
87
|
+
* @note this is a raw port of luma.gl v8 code. Might be worth a review
|
|
131
88
|
*/
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
89
|
+
setDevicePixelRatio(devicePixelRatio: number, options?: {
|
|
90
|
+
width?: number;
|
|
91
|
+
height?: number;
|
|
92
|
+
}): void;
|
|
93
|
+
/** @todo Major hack done to port the CSS methods above, base canvas context should not depend on WebGL */
|
|
94
|
+
getDrawingBufferSize(): [number, number];
|
|
137
95
|
abstract resize(options?: {
|
|
138
96
|
width?: number;
|
|
139
97
|
height?: number;
|
|
140
98
|
useDevicePixels?: boolean | number;
|
|
141
99
|
}): void;
|
|
100
|
+
/** Perform platform specific updates (WebGPU vs WebGL) */
|
|
101
|
+
protected abstract update(): void;
|
|
142
102
|
/**
|
|
143
|
-
*
|
|
144
|
-
*
|
|
103
|
+
* Allows subclass constructor to override the canvas id for auto created canvases.
|
|
104
|
+
* This can really help when debugging DOM in apps that create multiple devices
|
|
145
105
|
*/
|
|
146
|
-
|
|
147
|
-
width?: number;
|
|
148
|
-
height?: number;
|
|
149
|
-
}): void;
|
|
106
|
+
protected _setAutoCreatedCanvasId(id: string): void;
|
|
150
107
|
}
|
|
151
108
|
//# sourceMappingURL=canvas-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas-context.d.ts","sourceRoot":"","sources":["../../src/adapter/canvas-context.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,MAAM,EAAC,oBAAiB;AACrC,OAAO,KAAK,EAAC,WAAW,EAAC,mCAAgC;AAGzD,OAAO,KAAK,EAAC,
|
|
1
|
+
{"version":3,"file":"canvas-context.d.ts","sourceRoot":"","sources":["../../src/adapter/canvas-context.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,MAAM,EAAC,oBAAiB;AACrC,OAAO,KAAK,EAAC,WAAW,EAAC,mCAAgC;AAGzD,OAAO,KAAK,EAAC,aAAa,EAAC,6CAA0C;AAErE,qCAAqC;AACrC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,0IAA0I;IAC1I,MAAM,CAAC,EAAE,iBAAiB,GAAG,eAAe,GAAG,MAAM,GAAG,IAAI,CAAC;IAC7D,iIAAiI;IACjI,SAAS,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC;IACxC,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8EAA8E;IAC9E,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACnC,sCAAsC;IACtC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,QAAQ,GAAG,eAAe,CAAC;IACvC,6FAA6F;IAC7F,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;GAMG;AACH,8BAAsB,aAAa;IACjC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAU/C;IAEF,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,iBAAiB,GAAG,eAAe,CAAC;IACrD,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC;IACxC,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,kBAAkB,GAAG,MAAM,CAAC;IAE3D,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IACxC,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,EAAE,aAAa,CAAC;IAEpD,KAAK,EAAE,MAAM,CAAK;IAClB,MAAM,EAAE,MAAM,CAAK;IAEnB,QAAQ,CAAC,cAAc,EAAE,cAAc,GAAG,SAAS,CAAC;IAEpD,iEAAiE;IACjE,QAAQ,CAAC,eAAe;;;;MAA0D;IAElF,QAAQ,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC;IAE5C,QAAQ,IAAI,MAAM;gBAIN,KAAK,CAAC,EAAE,kBAAkB;IAqDtC,gFAAgF;IAChF,QAAQ,CAAC,qBAAqB,IAAI,WAAW;IAE7C;;;OAGG;IACH,mBAAmB,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM;IAoB/D;;;;;OAKG;IACH,YAAY,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;IAkBhC,SAAS,IAAI,MAAM;IAKnB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAa1B;;OAEG;IACH,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,GAAE,OAAc,GACtB;QACD,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB;IAMD;;;OAGG;IACH,mBAAmB,CACjB,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAM,GAC9C,IAAI;IA4DP,0GAA0G;IAC1G,oBAAoB,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;IAUxC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;KACpC,GAAG,IAAI;IAER,0DAA0D;IAC1D,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI;IAEjC;;;OAGG;IACH,SAAS,CAAC,uBAAuB,CAAC,EAAE,EAAE,MAAM;CAK7C"}
|
|
@@ -13,9 +13,8 @@ import { uid } from "../utils/uid.js";
|
|
|
13
13
|
*/
|
|
14
14
|
export class CanvasContext {
|
|
15
15
|
static defaultProps = {
|
|
16
|
-
id: undefined,
|
|
17
16
|
canvas: null,
|
|
18
|
-
width: 800,
|
|
17
|
+
width: 800, // width are height are only used by headless gl
|
|
19
18
|
height: 600,
|
|
20
19
|
useDevicePixels: true,
|
|
21
20
|
autoResize: true,
|
|
@@ -30,25 +29,10 @@ export class CanvasContext {
|
|
|
30
29
|
htmlCanvas;
|
|
31
30
|
offscreenCanvas;
|
|
32
31
|
type;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
/** Visibility is automatically updated (via an IntersectionObserver) */
|
|
38
|
-
isVisible = true;
|
|
39
|
-
/** Device pixel ratio. Automatically updated via media queries */
|
|
40
|
-
devicePixelRatio;
|
|
41
|
-
/** Exact width of canvas in physical pixels (tracked by a ResizeObserver) */
|
|
42
|
-
pixelWidth;
|
|
43
|
-
/** Exact height of canvas in physical pixels (tracked by a ResizeObserver) */
|
|
44
|
-
pixelHeight;
|
|
45
|
-
/** Width of drawing buffer: automatically updated if props.autoResize is true */
|
|
46
|
-
drawingBufferWidth;
|
|
47
|
-
/** Height of drawing buffer: automatically updated if props.autoResize is true */
|
|
48
|
-
drawingBufferHeight;
|
|
49
|
-
_resizeObserver;
|
|
50
|
-
_intersectionObserver;
|
|
51
|
-
/** State used by luma.gl classes: TODO - remove */
|
|
32
|
+
width = 1;
|
|
33
|
+
height = 1;
|
|
34
|
+
resizeObserver;
|
|
35
|
+
/** State used by luma.gl classes: TODO - move to canvasContext*/
|
|
52
36
|
_canvasSizeInfo = { clientWidth: 0, clientHeight: 0, devicePixelRatio: 1 };
|
|
53
37
|
toString() {
|
|
54
38
|
return `${this[Symbol.toStringTag]}(${this.id})`;
|
|
@@ -56,14 +40,23 @@ export class CanvasContext {
|
|
|
56
40
|
constructor(props) {
|
|
57
41
|
this.props = { ...CanvasContext.defaultProps, ...props };
|
|
58
42
|
props = this.props;
|
|
59
|
-
this.initialized = this._initializedResolvers.promise;
|
|
60
|
-
// Create a canvas element if needed
|
|
61
43
|
if (!isBrowser()) {
|
|
44
|
+
this.id = 'node-canvas-context';
|
|
45
|
+
this.type = 'node';
|
|
46
|
+
this.width = this.props.width;
|
|
47
|
+
this.height = this.props.height;
|
|
62
48
|
// TODO - does this prevent app from using jsdom style polyfills?
|
|
63
|
-
this.canvas =
|
|
49
|
+
this.canvas = null;
|
|
50
|
+
return;
|
|
64
51
|
}
|
|
65
|
-
|
|
66
|
-
|
|
52
|
+
if (!props.canvas) {
|
|
53
|
+
const canvas = createCanvas(props);
|
|
54
|
+
const container = getContainer(props?.container || null);
|
|
55
|
+
container.insertBefore(canvas, container.firstChild);
|
|
56
|
+
this.canvas = canvas;
|
|
57
|
+
if (!props?.visible) {
|
|
58
|
+
this.canvas.style.visibility = 'hidden';
|
|
59
|
+
}
|
|
67
60
|
}
|
|
68
61
|
else if (typeof props.canvas === 'string') {
|
|
69
62
|
this.canvas = getCanvasFromDOM(props.canvas);
|
|
@@ -71,90 +64,31 @@ export class CanvasContext {
|
|
|
71
64
|
else {
|
|
72
65
|
this.canvas = props.canvas;
|
|
73
66
|
}
|
|
74
|
-
if (
|
|
75
|
-
this.id =
|
|
67
|
+
if (this.canvas instanceof HTMLCanvasElement) {
|
|
68
|
+
this.id = this.canvas.id;
|
|
76
69
|
this.type = 'html-canvas';
|
|
77
70
|
this.htmlCanvas = this.canvas;
|
|
78
71
|
}
|
|
79
|
-
else
|
|
80
|
-
this.id =
|
|
72
|
+
else {
|
|
73
|
+
this.id = 'offscreen-canvas';
|
|
81
74
|
this.type = 'offscreen-canvas';
|
|
82
75
|
this.offscreenCanvas = this.canvas;
|
|
83
76
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
this.
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
this.devicePixelRatio = globalThis.devicePixelRatio || 1;
|
|
95
|
-
if (typeof HTMLCanvasElement !== 'undefined' && this.canvas instanceof HTMLCanvasElement) {
|
|
96
|
-
// Track visibility changes
|
|
97
|
-
this._intersectionObserver = new IntersectionObserver(entries => this._handleIntersection(entries));
|
|
98
|
-
this._intersectionObserver.observe(this.canvas);
|
|
99
|
-
// Track size changes
|
|
100
|
-
this._resizeObserver = new ResizeObserver(entries => this._handleResize(entries));
|
|
101
|
-
try {
|
|
102
|
-
this._resizeObserver.observe(this.canvas, { box: 'device-pixel-content-box' });
|
|
103
|
-
}
|
|
104
|
-
catch {
|
|
105
|
-
// Safari fallback
|
|
106
|
-
this._resizeObserver.observe(this.canvas, { box: 'content-box' });
|
|
107
|
-
}
|
|
108
|
-
// Track device pixel ratio changes.
|
|
109
|
-
// Defer call to after construction completes to ensure `this.device` is available.
|
|
110
|
-
setTimeout(() => this._observeDevicePixelRatio(), 0);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
// SIZE METHODS
|
|
114
|
-
/**
|
|
115
|
-
* Returns the size covered by the canvas in CSS pixels
|
|
116
|
-
* @note This can be different from the actual device pixel size of a canvas due to DPR scaling, and rounding to integer pixels
|
|
117
|
-
* @note This is independent of the canvas' internal drawing buffer size (.width, .height).
|
|
118
|
-
*/
|
|
119
|
-
getCSSSize() {
|
|
120
|
-
if (typeof HTMLCanvasElement !== 'undefined' && this.canvas instanceof HTMLCanvasElement) {
|
|
121
|
-
return [this.canvas.clientWidth, this.canvas.clientHeight];
|
|
77
|
+
// React to size changes
|
|
78
|
+
if (this.canvas instanceof HTMLCanvasElement && props.autoResize) {
|
|
79
|
+
this.resizeObserver = new ResizeObserver(entries => {
|
|
80
|
+
for (const entry of entries) {
|
|
81
|
+
if (entry.target === this.canvas) {
|
|
82
|
+
this.update();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
this.resizeObserver.observe(this.canvas);
|
|
122
87
|
}
|
|
123
|
-
return [this.pixelWidth, this.pixelHeight];
|
|
124
88
|
}
|
|
125
89
|
/**
|
|
126
|
-
* Returns the
|
|
127
|
-
*
|
|
128
|
-
* @note This is independent of the canvas' internal drawing buffer size (.width, .height).
|
|
129
|
-
*/
|
|
130
|
-
getPixelSize() {
|
|
131
|
-
return [this.pixelWidth, this.pixelHeight];
|
|
132
|
-
}
|
|
133
|
-
/** Get the drawing buffer size (number of pixels GPU is rendering into, can be different from CSS size) */
|
|
134
|
-
getDrawingBufferSize() {
|
|
135
|
-
return [this.drawingBufferWidth, this.drawingBufferHeight];
|
|
136
|
-
}
|
|
137
|
-
/** Returns the biggest allowed framebuffer size. @todo Allow the application to limit this? */
|
|
138
|
-
getMaxDrawingBufferSize() {
|
|
139
|
-
const maxTextureDimension = this.device.limits.maxTextureDimension2D;
|
|
140
|
-
return [maxTextureDimension, maxTextureDimension];
|
|
141
|
-
}
|
|
142
|
-
/** Update the canvas drawing buffer size. Called automatically if props.autoResize is true. */
|
|
143
|
-
setDrawingBufferSize(width, height) {
|
|
144
|
-
this.canvas.width = width;
|
|
145
|
-
this.canvas.height = height;
|
|
146
|
-
this.drawingBufferWidth = width;
|
|
147
|
-
this.drawingBufferHeight = height;
|
|
148
|
-
}
|
|
149
|
-
/** @deprecated - TODO which values should we use for aspect */
|
|
150
|
-
getAspect() {
|
|
151
|
-
const [width, height] = this.getPixelSize();
|
|
152
|
-
return width / height;
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Returns the current DPR (number of physical pixels per CSS pixel), if props.useDevicePixels is true
|
|
156
|
-
* @note This can be a fractional (non-integer) number, e.g. when the user zooms in the browser.
|
|
157
|
-
* @note This function handles the non-HTML canvas cases
|
|
90
|
+
* Returns the current DPR, if props.useDevicePixels is true
|
|
91
|
+
* Device refers to physical
|
|
158
92
|
*/
|
|
159
93
|
getDevicePixelRatio(useDevicePixels) {
|
|
160
94
|
if (typeof OffscreenCanvas !== 'undefined' && this.canvas instanceof OffscreenCanvas) {
|
|
@@ -171,6 +105,33 @@ export class CanvasContext {
|
|
|
171
105
|
}
|
|
172
106
|
return useDevicePixels;
|
|
173
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Returns the size of drawing buffer in device pixels.
|
|
110
|
+
* @note This can be different from the 'CSS' size of a canvas, and also from the
|
|
111
|
+
* canvas' internal drawing buffer size (.width, .height).
|
|
112
|
+
* This is the size required to cover the canvas, adjusted for DPR
|
|
113
|
+
*/
|
|
114
|
+
getPixelSize() {
|
|
115
|
+
switch (this.type) {
|
|
116
|
+
case 'node':
|
|
117
|
+
return [this.width, this.height];
|
|
118
|
+
case 'offscreen-canvas':
|
|
119
|
+
return [this.canvas.width, this.canvas.height];
|
|
120
|
+
case 'html-canvas':
|
|
121
|
+
const dpr = this.getDevicePixelRatio();
|
|
122
|
+
const canvas = this.canvas;
|
|
123
|
+
// If not attached to DOM client size can be 0
|
|
124
|
+
return canvas.parentElement
|
|
125
|
+
? [canvas.clientWidth * dpr, canvas.clientHeight * dpr]
|
|
126
|
+
: [this.canvas.width, this.canvas.height];
|
|
127
|
+
default:
|
|
128
|
+
throw new Error(this.type);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
getAspect() {
|
|
132
|
+
const [width, height] = this.getPixelSize();
|
|
133
|
+
return width / height;
|
|
134
|
+
}
|
|
174
135
|
/**
|
|
175
136
|
* Returns multiplier need to convert CSS size to Device size
|
|
176
137
|
*/
|
|
@@ -179,7 +140,8 @@ export class CanvasContext {
|
|
|
179
140
|
// For headless gl we might have used custom width and height
|
|
180
141
|
// hence use cached clientWidth
|
|
181
142
|
const [drawingBufferWidth] = this.getDrawingBufferSize();
|
|
182
|
-
|
|
143
|
+
// _canvasSizeInfo may not be populated if `setDevicePixelRatio` is never called
|
|
144
|
+
const clientWidth = this._canvasSizeInfo.clientWidth || this.htmlCanvas?.clientWidth;
|
|
183
145
|
return clientWidth ? drawingBufferWidth / clientWidth : 1;
|
|
184
146
|
}
|
|
185
147
|
catch {
|
|
@@ -194,79 +156,11 @@ export class CanvasContext {
|
|
|
194
156
|
const [width, height] = this.getDrawingBufferSize();
|
|
195
157
|
return scalePixels(cssPixel, ratio, width, height, yInvert);
|
|
196
158
|
}
|
|
197
|
-
// IMPLEMENTATION
|
|
198
159
|
/**
|
|
199
|
-
*
|
|
200
|
-
* This can really help when debugging DOM in apps that create multiple devices
|
|
201
|
-
*/
|
|
202
|
-
_setAutoCreatedCanvasId(id) {
|
|
203
|
-
if (this.htmlCanvas?.id === 'lumagl-auto-created-canvas') {
|
|
204
|
-
this.htmlCanvas.id = id;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
/** reacts to our intersection observer */
|
|
208
|
-
_handleIntersection(entries) {
|
|
209
|
-
const entry = entries.find(entry_ => entry_.target === this.canvas);
|
|
210
|
-
if (!entry) {
|
|
211
|
-
return;
|
|
212
|
-
}
|
|
213
|
-
// TODO - store intersection rectangle?
|
|
214
|
-
const isVisible = entry.isIntersecting;
|
|
215
|
-
if (this.isVisible !== isVisible) {
|
|
216
|
-
this.isVisible = isVisible;
|
|
217
|
-
this.device.props.onVisibilityChange(this);
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* Reacts to an observed resize by using the most accurate pixel size information the browser can provide
|
|
222
|
-
* @see https://web.dev/articles/device-pixel-content-box
|
|
223
|
-
* @see https://webgpufundamentals.org/webgpu/lessons/webgpu-resizing-the-canvas.html
|
|
224
|
-
*/
|
|
225
|
-
_handleResize(entries) {
|
|
226
|
-
const entry = entries.find(entry_ => entry_.target === this.canvas);
|
|
227
|
-
if (!entry) {
|
|
228
|
-
return;
|
|
229
|
-
}
|
|
230
|
-
// Use the most accurate drawing buffer size information the current browser can provide
|
|
231
|
-
// Note: content box sizes are guaranteed to be integers
|
|
232
|
-
// Note: Safari falls back to contentBoxSize
|
|
233
|
-
const boxWidth = entry.devicePixelContentBoxSize?.[0].inlineSize ||
|
|
234
|
-
entry.contentBoxSize[0].inlineSize * devicePixelRatio;
|
|
235
|
-
const boxHeight = entry.devicePixelContentBoxSize?.[0].blockSize ||
|
|
236
|
-
entry.contentBoxSize[0].blockSize * devicePixelRatio;
|
|
237
|
-
// Update our drawing buffer size variables, saving the old values for logging
|
|
238
|
-
const oldPixelSize = this.getPixelSize();
|
|
239
|
-
// Make sure we don't overflow the maximum supported texture size
|
|
240
|
-
const [maxPixelWidth, maxPixelHeight] = this.getMaxDrawingBufferSize();
|
|
241
|
-
this.pixelWidth = Math.max(1, Math.min(boxWidth, maxPixelWidth));
|
|
242
|
-
this.pixelHeight = Math.max(1, Math.min(boxHeight, maxPixelHeight));
|
|
243
|
-
if (this.props.autoResize) {
|
|
244
|
-
// Update the canvas drawing buffer size
|
|
245
|
-
// TODO - This does not account for props.useDevicePixels
|
|
246
|
-
this.setDrawingBufferSize(this.pixelWidth, this.pixelHeight);
|
|
247
|
-
// Inform the subclass
|
|
248
|
-
this.updateSize(this.getDrawingBufferSize());
|
|
249
|
-
}
|
|
250
|
-
// Resolve the initialized promise
|
|
251
|
-
this._initializedResolvers.resolve();
|
|
252
|
-
this.isInitialized = true;
|
|
253
|
-
// Inform the device
|
|
254
|
-
this.device.props.onResize(this, { oldPixelSize });
|
|
255
|
-
}
|
|
256
|
-
/** Monitor DPR changes */
|
|
257
|
-
_observeDevicePixelRatio() {
|
|
258
|
-
const oldRatio = this.devicePixelRatio;
|
|
259
|
-
this.devicePixelRatio = window.devicePixelRatio;
|
|
260
|
-
// Inform the device
|
|
261
|
-
this.device.props.onDevicePixelRatioChange(this, { oldRatio });
|
|
262
|
-
// Set up a one time query against the current resolution.
|
|
263
|
-
matchMedia(`(resolution: ${this.devicePixelRatio}dppx)`).addEventListener('change', () => this._observeDevicePixelRatio(), { once: true });
|
|
264
|
-
}
|
|
265
|
-
/**
|
|
266
|
-
* @deprecated Use devicePixelRatio to set canvas width and height
|
|
160
|
+
* Use devicePixelRatio to set canvas width and height
|
|
267
161
|
* @note this is a raw port of luma.gl v8 code. Might be worth a review
|
|
268
162
|
*/
|
|
269
|
-
|
|
163
|
+
setDevicePixelRatio(devicePixelRatio, options = {}) {
|
|
270
164
|
if (!this.htmlCanvas) {
|
|
271
165
|
return;
|
|
272
166
|
}
|
|
@@ -309,9 +203,28 @@ export class CanvasContext {
|
|
|
309
203
|
}
|
|
310
204
|
}
|
|
311
205
|
}
|
|
206
|
+
// PRIVATE
|
|
207
|
+
/** @todo Major hack done to port the CSS methods above, base canvas context should not depend on WebGL */
|
|
208
|
+
getDrawingBufferSize() {
|
|
209
|
+
// @ts-expect-error This only works for WebGL
|
|
210
|
+
const gl = this.device.gl;
|
|
211
|
+
if (!gl) {
|
|
212
|
+
// use default device pixel ratio
|
|
213
|
+
throw new Error('canvas size');
|
|
214
|
+
}
|
|
215
|
+
return [gl.drawingBufferWidth, gl.drawingBufferHeight];
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Allows subclass constructor to override the canvas id for auto created canvases.
|
|
219
|
+
* This can really help when debugging DOM in apps that create multiple devices
|
|
220
|
+
*/
|
|
221
|
+
_setAutoCreatedCanvasId(id) {
|
|
222
|
+
if (this.htmlCanvas?.id === 'lumagl-auto-created-canvas') {
|
|
223
|
+
this.htmlCanvas.id = id;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
312
226
|
}
|
|
313
227
|
// HELPER FUNCTIONS
|
|
314
|
-
/** Get a container element from a string or DOM element */
|
|
315
228
|
function getContainer(container) {
|
|
316
229
|
if (typeof container === 'string') {
|
|
317
230
|
const element = document.getElementById(container);
|
|
@@ -320,7 +233,7 @@ function getContainer(container) {
|
|
|
320
233
|
}
|
|
321
234
|
return element;
|
|
322
235
|
}
|
|
323
|
-
if (container) {
|
|
236
|
+
else if (container) {
|
|
324
237
|
return container;
|
|
325
238
|
}
|
|
326
239
|
return document.body;
|
|
@@ -328,32 +241,24 @@ function getContainer(container) {
|
|
|
328
241
|
/** Get a Canvas element from DOM id */
|
|
329
242
|
function getCanvasFromDOM(canvasId) {
|
|
330
243
|
const canvas = document.getElementById(canvasId);
|
|
331
|
-
if (
|
|
332
|
-
typeof HTMLCanvasElement !== 'undefined' &&
|
|
333
|
-
!(canvas instanceof HTMLCanvasElement)) {
|
|
244
|
+
if (!(canvas instanceof HTMLCanvasElement)) {
|
|
334
245
|
throw new Error('Object is not a canvas element');
|
|
335
246
|
}
|
|
336
247
|
return canvas;
|
|
337
248
|
}
|
|
338
249
|
/** Create a new canvas */
|
|
339
|
-
function
|
|
250
|
+
function createCanvas(props) {
|
|
340
251
|
const { width, height } = props;
|
|
341
|
-
const
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
newCanvas.style.visibility = 'hidden';
|
|
349
|
-
}
|
|
350
|
-
// Insert the canvas in the DOM
|
|
351
|
-
const container = getContainer(props?.container || null);
|
|
352
|
-
container.insertBefore(newCanvas, container.firstChild);
|
|
353
|
-
return newCanvas;
|
|
252
|
+
const targetCanvas = document.createElement('canvas');
|
|
253
|
+
targetCanvas.id = uid('lumagl-auto-created-canvas');
|
|
254
|
+
targetCanvas.width = width || 1;
|
|
255
|
+
targetCanvas.height = height || 1;
|
|
256
|
+
targetCanvas.style.width = Number.isFinite(width) ? `${width}px` : '100%';
|
|
257
|
+
targetCanvas.style.height = Number.isFinite(height) ? `${height}px` : '100%';
|
|
258
|
+
return targetCanvas;
|
|
354
259
|
}
|
|
355
260
|
/**
|
|
356
|
-
*
|
|
261
|
+
*
|
|
357
262
|
* @param pixel
|
|
358
263
|
* @param ratio
|
|
359
264
|
* @param width
|
|
@@ -402,15 +307,4 @@ function scaleY(y, ratio, height, yInvert) {
|
|
|
402
307
|
? Math.max(0, height - 1 - Math.round(y * ratio))
|
|
403
308
|
: Math.min(Math.round(y * ratio), height - 1);
|
|
404
309
|
}
|
|
405
|
-
// TODO - replace with Promise.withResolvers once we upgrade TS baseline
|
|
406
|
-
function withResolvers() {
|
|
407
|
-
let resolve;
|
|
408
|
-
let reject;
|
|
409
|
-
const promise = new Promise((_resolve, _reject) => {
|
|
410
|
-
resolve = _resolve;
|
|
411
|
-
reject = _reject;
|
|
412
|
-
});
|
|
413
|
-
// @ts-expect-error - in fact these are no used before initialized
|
|
414
|
-
return { promise, resolve, reject };
|
|
415
|
-
}
|
|
416
310
|
//# sourceMappingURL=canvas-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas-context.js","sourceRoot":"","sources":["../../src/adapter/canvas-context.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"canvas-context.js","sourceRoot":"","sources":["../../src/adapter/canvas-context.ts"],"names":[],"mappings":"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"}
|