@luma.gl/core 9.3.0-alpha.4 → 9.3.0-alpha.6
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 +6 -182
- package/dist/adapter/canvas-context.d.ts.map +1 -1
- package/dist/adapter/canvas-context.js +5 -481
- package/dist/adapter/canvas-context.js.map +1 -1
- package/dist/adapter/canvas-observer.d.ts +32 -0
- package/dist/adapter/canvas-observer.d.ts.map +1 -0
- package/dist/adapter/canvas-observer.js +90 -0
- package/dist/adapter/canvas-observer.js.map +1 -0
- package/dist/adapter/canvas-surface.d.ts +150 -0
- package/dist/adapter/canvas-surface.d.ts.map +1 -0
- package/dist/adapter/canvas-surface.js +392 -0
- package/dist/adapter/canvas-surface.js.map +1 -0
- package/dist/adapter/device.d.ts +64 -9
- package/dist/adapter/device.d.ts.map +1 -1
- package/dist/adapter/device.js +108 -4
- package/dist/adapter/device.js.map +1 -1
- package/dist/adapter/luma.js +1 -1
- package/dist/adapter/presentation-context.d.ts +11 -0
- package/dist/adapter/presentation-context.d.ts.map +1 -0
- package/dist/adapter/presentation-context.js +12 -0
- package/dist/adapter/presentation-context.js.map +1 -0
- package/dist/adapter/resources/buffer.d.ts +1 -1
- package/dist/adapter/resources/buffer.d.ts.map +1 -1
- package/dist/adapter/resources/buffer.js +14 -6
- package/dist/adapter/resources/buffer.js.map +1 -1
- package/dist/adapter/resources/command-encoder.d.ts +22 -1
- package/dist/adapter/resources/command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/command-encoder.js +65 -1
- package/dist/adapter/resources/command-encoder.js.map +1 -1
- package/dist/adapter/resources/fence.d.ts +1 -1
- package/dist/adapter/resources/fence.d.ts.map +1 -1
- package/dist/adapter/resources/fence.js +3 -1
- package/dist/adapter/resources/fence.js.map +1 -1
- package/dist/adapter/resources/query-set.d.ts +17 -1
- package/dist/adapter/resources/query-set.d.ts.map +1 -1
- package/dist/adapter/resources/query-set.js.map +1 -1
- package/dist/adapter/resources/render-pipeline.d.ts +19 -7
- package/dist/adapter/resources/render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/render-pipeline.js +20 -2
- package/dist/adapter/resources/render-pipeline.js.map +1 -1
- package/dist/adapter/resources/resource.d.ts +8 -0
- package/dist/adapter/resources/resource.d.ts.map +1 -1
- package/dist/adapter/resources/resource.js +240 -14
- package/dist/adapter/resources/resource.js.map +1 -1
- package/dist/adapter/resources/shared-render-pipeline.d.ts +22 -0
- package/dist/adapter/resources/shared-render-pipeline.d.ts.map +1 -0
- package/dist/adapter/resources/shared-render-pipeline.js +25 -0
- package/dist/adapter/resources/shared-render-pipeline.js.map +1 -0
- package/dist/adapter/resources/texture.d.ts +78 -12
- package/dist/adapter/resources/texture.d.ts.map +1 -1
- package/dist/adapter/resources/texture.js +182 -30
- package/dist/adapter/resources/texture.js.map +1 -1
- package/dist/dist.dev.js +952 -193
- package/dist/dist.min.js +6 -6
- package/dist/index.cjs +918 -190
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/shadertypes/data-types/decode-shader-types.d.ts +2 -2
- package/dist/shadertypes/data-types/decode-shader-types.d.ts.map +1 -1
- package/dist/shadertypes/data-types/decode-shader-types.js +11 -2
- package/dist/shadertypes/data-types/decode-shader-types.js.map +1 -1
- package/dist/shadertypes/textures/texture-format-decoder.d.ts.map +1 -1
- package/dist/shadertypes/textures/texture-format-decoder.js +51 -6
- package/dist/shadertypes/textures/texture-format-decoder.js.map +1 -1
- package/dist/shadertypes/textures/texture-format-table.d.ts.map +1 -1
- package/dist/shadertypes/textures/texture-format-table.js +10 -9
- package/dist/shadertypes/textures/texture-format-table.js.map +1 -1
- package/dist/shadertypes/textures/texture-formats.d.ts +5 -2
- package/dist/shadertypes/textures/texture-formats.d.ts.map +1 -1
- package/dist/shadertypes/textures/texture-formats.js.map +1 -1
- package/dist/shadertypes/textures/texture-layout.d.ts +1 -1
- package/dist/utils/array-equal.d.ts +1 -1
- package/dist/utils/array-equal.d.ts.map +1 -1
- package/dist/utils/array-equal.js +15 -9
- package/dist/utils/array-equal.js.map +1 -1
- package/dist/utils/stats-manager.d.ts.map +1 -1
- package/dist/utils/stats-manager.js +61 -1
- package/dist/utils/stats-manager.js.map +1 -1
- package/package.json +3 -3
- package/src/adapter/canvas-context.ts +7 -623
- package/src/adapter/canvas-observer.ts +130 -0
- package/src/adapter/canvas-surface.ts +521 -0
- package/src/adapter/device.ts +174 -13
- package/src/adapter/presentation-context.ts +16 -0
- package/src/adapter/resources/buffer.ts +13 -5
- package/src/adapter/resources/command-encoder.ts +91 -2
- package/src/adapter/resources/fence.ts +3 -1
- package/src/adapter/resources/query-set.ts +17 -1
- package/src/adapter/resources/render-pipeline.ts +42 -13
- package/src/adapter/resources/resource.ts +284 -14
- package/src/adapter/resources/shared-render-pipeline.ts +40 -0
- package/src/adapter/resources/texture.ts +267 -38
- package/src/index.ts +7 -0
- package/src/shadertypes/data-types/decode-shader-types.ts +13 -4
- package/src/shadertypes/textures/texture-format-decoder.ts +71 -6
- package/src/shadertypes/textures/texture-format-table.ts +10 -9
- package/src/shadertypes/textures/texture-formats.ts +6 -1
- package/src/utils/array-equal.ts +21 -9
- package/src/utils/stats-manager.ts +76 -2
|
@@ -1,187 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
import type { TextureFormatDepthStencil } from "../shadertypes/textures/texture-formats.js";
|
|
4
|
-
/** Properties for a CanvasContext */
|
|
5
|
-
export type CanvasContextProps = {
|
|
6
|
-
/** Identifier, for debugging */
|
|
7
|
-
id?: string;
|
|
8
|
-
/** 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
|
-
canvas?: HTMLCanvasElement | OffscreenCanvas | string | null;
|
|
10
|
-
/** If new canvas is created, it will be created in the specified container, otherwise is appended as a child of document.body */
|
|
11
|
-
container?: HTMLElement | string | null;
|
|
12
|
-
/** Width in pixels of the canvas - used when creating a new canvas */
|
|
13
|
-
width?: number;
|
|
14
|
-
/** Height in pixels of the canvas - used when creating a new canvas */
|
|
15
|
-
height?: number;
|
|
16
|
-
/** Visibility (only used if new canvas is created). */
|
|
17
|
-
visible?: boolean;
|
|
18
|
-
/** Whether to size the drawing buffer to the pixel size during auto resize. If a number is provided it is used as a static pixel ratio */
|
|
19
|
-
useDevicePixels?: boolean | number;
|
|
20
|
-
/** Whether to track window resizes. */
|
|
21
|
-
autoResize?: boolean;
|
|
22
|
-
/** @see https://developer.mozilla.org/en-US/docs/Web/API/GPUCanvasContext/configure#alphamode */
|
|
23
|
-
alphaMode?: 'opaque' | 'premultiplied';
|
|
24
|
-
/** @see https://developer.mozilla.org/en-US/docs/Web/API/GPUCanvasContext/configure#colorspace */
|
|
25
|
-
colorSpace?: 'srgb';
|
|
26
|
-
/** Whether to track position changes. Calls this.device.onPositionChange */
|
|
27
|
-
trackPosition?: boolean;
|
|
28
|
-
};
|
|
29
|
-
export type MutableCanvasContextProps = {
|
|
30
|
-
/** Whether to size the drawing buffer to the pixel size during auto resize. If a number is provided it is used as a static pixel ratio */
|
|
31
|
-
useDevicePixels?: boolean | number;
|
|
32
|
-
};
|
|
1
|
+
export type { CanvasContextProps, MutableCanvasContextProps } from "./canvas-surface.js";
|
|
2
|
+
import { CanvasSurface } from "./canvas-surface.js";
|
|
33
3
|
/**
|
|
34
|
-
* Manages a canvas. Supports both HTML or offscreen canvas
|
|
35
|
-
*
|
|
36
|
-
* - Provides check for DOM loaded
|
|
37
|
-
* @todo commit() @see https://github.com/w3ctag/design-reviews/issues/288
|
|
38
|
-
* @todo transferControlToOffscreen: @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/transferControlToOffscreen
|
|
4
|
+
* Manages a renderable backend canvas. Supports both HTML or offscreen canvas
|
|
5
|
+
* and returns backend framebuffers sourced from the canvas itself.
|
|
39
6
|
*/
|
|
40
|
-
export declare abstract class CanvasContext {
|
|
41
|
-
static
|
|
42
|
-
static isOffscreenCanvas(canvas: unknown): canvas is OffscreenCanvas;
|
|
43
|
-
static defaultProps: Required<CanvasContextProps>;
|
|
44
|
-
abstract readonly device: Device;
|
|
7
|
+
export declare abstract class CanvasContext extends CanvasSurface {
|
|
8
|
+
static defaultProps: Required<import("./canvas-surface").CanvasContextProps>;
|
|
45
9
|
abstract readonly handle: unknown;
|
|
46
|
-
readonly id: string;
|
|
47
|
-
readonly props: Required<CanvasContextProps>;
|
|
48
|
-
readonly canvas: HTMLCanvasElement | OffscreenCanvas;
|
|
49
|
-
/** Handle to HTML canvas */
|
|
50
|
-
readonly htmlCanvas?: HTMLCanvasElement;
|
|
51
|
-
/** Handle to wrapped OffScreenCanvas */
|
|
52
|
-
readonly offscreenCanvas?: OffscreenCanvas;
|
|
53
|
-
readonly type: 'html-canvas' | 'offscreen-canvas' | 'node';
|
|
54
|
-
/** Promise that resolved once the resize observer has updated the pixel size */
|
|
55
|
-
initialized: Promise<void>;
|
|
56
|
-
isInitialized: boolean;
|
|
57
|
-
/** Visibility is automatically updated (via an IntersectionObserver) */
|
|
58
|
-
isVisible: boolean;
|
|
59
|
-
/** Width of canvas in CSS units (tracked by a ResizeObserver) */
|
|
60
|
-
cssWidth: number;
|
|
61
|
-
/** Height of canvas in CSS units (tracked by a ResizeObserver) */
|
|
62
|
-
cssHeight: number;
|
|
63
|
-
/** Device pixel ratio. Automatically updated via media queries */
|
|
64
|
-
devicePixelRatio: number;
|
|
65
|
-
/** Exact width of canvas in physical pixels (tracked by a ResizeObserver) */
|
|
66
|
-
devicePixelWidth: number;
|
|
67
|
-
/** Exact height of canvas in physical pixels (tracked by a ResizeObserver) */
|
|
68
|
-
devicePixelHeight: number;
|
|
69
|
-
/** Width of drawing buffer: automatically tracks this.pixelWidth if props.autoResize is true */
|
|
70
|
-
drawingBufferWidth: number;
|
|
71
|
-
/** Height of drawing buffer: automatically tracks this.pixelHeight if props.autoResize is true */
|
|
72
|
-
drawingBufferHeight: number;
|
|
73
|
-
/** Resolves when the canvas is initialized, i.e. when the ResizeObserver has updated the pixel size */
|
|
74
|
-
protected _initializedResolvers: {
|
|
75
|
-
promise: Promise<void>;
|
|
76
|
-
resolve: (t: void) => void;
|
|
77
|
-
reject: (error: Error) => void;
|
|
78
|
-
};
|
|
79
|
-
/** ResizeObserver to track canvas size changes */
|
|
80
|
-
protected readonly _resizeObserver: ResizeObserver | undefined;
|
|
81
|
-
/** IntersectionObserver to track canvas visibility changes */
|
|
82
|
-
protected readonly _intersectionObserver: IntersectionObserver | undefined;
|
|
83
|
-
private _observeDevicePixelRatioTimeout;
|
|
84
|
-
/** Position of the canvas in the document, updated by a timer */
|
|
85
|
-
protected _position: [number, number];
|
|
86
|
-
/** Whether this canvas context has been destroyed */
|
|
87
|
-
protected destroyed: boolean;
|
|
88
|
-
/** Whether the drawing buffer size needs to be resized (deferred resizing to avoid flicker) */
|
|
89
|
-
protected _needsDrawingBufferResize: boolean;
|
|
90
|
-
abstract get [Symbol.toStringTag](): string;
|
|
91
|
-
toString(): string;
|
|
92
|
-
constructor(props?: CanvasContextProps);
|
|
93
|
-
destroy(): void;
|
|
94
|
-
setProps(props: MutableCanvasContextProps): this;
|
|
95
|
-
/** Returns a framebuffer with properly resized current 'swap chain' textures */
|
|
96
|
-
getCurrentFramebuffer(options?: {
|
|
97
|
-
depthStencilFormat?: TextureFormatDepthStencil | false;
|
|
98
|
-
}): Framebuffer;
|
|
99
|
-
/**
|
|
100
|
-
* Returns the size covered by the canvas in CSS pixels
|
|
101
|
-
* @note This can be different from the actual device pixel size of a canvas due to DPR scaling, and rounding to integer pixels
|
|
102
|
-
* @note This is independent of the canvas' internal drawing buffer size (.width, .height).
|
|
103
|
-
*/
|
|
104
|
-
getCSSSize(): [number, number];
|
|
105
|
-
getPosition(): [number, number];
|
|
106
|
-
/**
|
|
107
|
-
* Returns the size covered by the canvas in actual device pixels.
|
|
108
|
-
* @note This can be different from the 'CSS' size of a canvas due to DPR scaling, and rounding to integer pixels
|
|
109
|
-
* @note This is independent of the canvas' internal drawing buffer size (.width, .height).
|
|
110
|
-
*/
|
|
111
|
-
getDevicePixelSize(): [number, number];
|
|
112
|
-
/** Get the drawing buffer size (number of pixels GPU is rendering into, can be different from CSS size) */
|
|
113
|
-
getDrawingBufferSize(): [number, number];
|
|
114
|
-
/** Returns the biggest allowed framebuffer size. @todo Allow the application to limit this? */
|
|
115
|
-
getMaxDrawingBufferSize(): [number, number];
|
|
116
|
-
/**
|
|
117
|
-
* Update the canvas drawing buffer size.
|
|
118
|
-
* @note - Called automatically if props.autoResize is true.
|
|
119
|
-
* @note - Defers update of drawing buffer size until framebuffer is requested to avoid flicker
|
|
120
|
-
* (resizing clears the drawing buffer)!
|
|
121
|
-
*/
|
|
122
|
-
setDrawingBufferSize(width: number, height: number): void;
|
|
123
|
-
/**
|
|
124
|
-
* Returns the current DPR (number of physical pixels per CSS pixel), if props.useDevicePixels is true
|
|
125
|
-
* @note This can be a fractional (non-integer) number, e.g. when the user zooms in the browser.
|
|
126
|
-
* @note This function handles the non-HTML canvas cases
|
|
127
|
-
*/
|
|
128
|
-
getDevicePixelRatio(): number;
|
|
129
|
-
/**
|
|
130
|
-
* Maps CSS pixel position to device pixel position
|
|
131
|
-
*/
|
|
132
|
-
cssToDevicePixels(cssPixel: [number, number], yInvert?: boolean): {
|
|
133
|
-
x: number;
|
|
134
|
-
y: number;
|
|
135
|
-
width: number;
|
|
136
|
-
height: number;
|
|
137
|
-
};
|
|
138
|
-
/** @deprecated - use .getDevicePixelSize() */
|
|
139
|
-
getPixelSize(): [number, number];
|
|
140
|
-
/** @deprecated - TODO which values should we use for aspect */
|
|
141
|
-
getAspect(): number;
|
|
142
|
-
/** @deprecated Returns multiplier need to convert CSS size to Device size */
|
|
143
|
-
cssToDeviceRatio(): number;
|
|
144
|
-
/** @deprecated Use canvasContext.setDrawingBufferSize() */
|
|
145
|
-
resize(size: {
|
|
146
|
-
width: number;
|
|
147
|
-
height: number;
|
|
148
|
-
}): void;
|
|
149
|
-
/**
|
|
150
|
-
* Performs platform specific updates (WebGPU vs WebGL)
|
|
151
|
-
* Can be called after changes to size or props,
|
|
152
|
-
* to give implementation an opportunity to update configurations.
|
|
153
|
-
*/
|
|
154
|
-
protected abstract _configureDevice(): void;
|
|
155
|
-
/** Returns a framebuffer with properly resized current 'swap chain' textures */
|
|
156
|
-
protected abstract _getCurrentFramebuffer(options?: {
|
|
157
|
-
depthStencilFormat?: TextureFormatDepthStencil | false;
|
|
158
|
-
}): Framebuffer;
|
|
159
|
-
/**
|
|
160
|
-
* Allows subclass constructor to override the canvas id for auto created canvases.
|
|
161
|
-
* This can really help when debugging DOM in apps that create multiple devices
|
|
162
|
-
*/
|
|
163
|
-
protected _setAutoCreatedCanvasId(id: string): void;
|
|
164
|
-
/** reacts to an observed intersection */
|
|
165
|
-
protected _handleIntersection(entries: IntersectionObserverEntry[]): void;
|
|
166
|
-
/**
|
|
167
|
-
* Reacts to an observed resize by using the most accurate pixel size information the browser can provide
|
|
168
|
-
* @see https://web.dev/articles/device-pixel-content-box
|
|
169
|
-
* @see https://webgpufundamentals.org/webgpu/lessons/webgpu-resizing-the-canvas.html
|
|
170
|
-
*/
|
|
171
|
-
protected _handleResize(entries: ResizeObserverEntry[]): void;
|
|
172
|
-
/** Initiate a deferred update for the canvas drawing buffer size */
|
|
173
|
-
protected _updateDrawingBufferSize(): void;
|
|
174
|
-
/** Perform a deferred resize of the drawing buffer if needed */
|
|
175
|
-
_resizeDrawingBufferIfNeeded(): void;
|
|
176
|
-
/** Monitor DPR changes */
|
|
177
|
-
_observeDevicePixelRatio(): void;
|
|
178
|
-
/** Start tracking positions with a timer */
|
|
179
|
-
_trackPosition(intervalMs?: number): void;
|
|
180
|
-
/**
|
|
181
|
-
* Calculated the absolute position of the canvas
|
|
182
|
-
* @note - getBoundingClientRect() is normally cheap but can be expensive
|
|
183
|
-
* if called before browser has finished a reflow. Should not be the case here.
|
|
184
|
-
*/
|
|
185
|
-
updatePosition(): void;
|
|
186
10
|
}
|
|
187
11
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"canvas-context.d.ts","sourceRoot":"","sources":["../../src/adapter/canvas-context.ts"],"names":[],"mappings":"AAIA,YAAY,EAAC,kBAAkB,EAAE,yBAAyB,EAAC,4BAAyB;AACpF,OAAO,EAAC,aAAa,EAAC,4BAAyB;AAE/C;;;GAGG;AACH,8BAAsB,aAAc,SAAQ,aAAa;IACvD,OAAgB,YAAY,0DAA8B;IAE1D,kBAA2B,MAAM,EAAE,OAAO,CAAC;CAC5C"}
|