@luma.gl/webgl 9.1.0-alpha.2 → 9.1.0-beta.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/dist/adapter/converters/device-parameters.d.ts +3 -3
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/device-parameters.js +19 -11
- package/dist/adapter/converters/device-parameters.js.map +1 -0
- package/dist/adapter/converters/sampler-parameters.js +7 -4
- package/dist/adapter/converters/sampler-parameters.js.map +1 -0
- package/dist/adapter/converters/shader-formats.js +1 -0
- package/dist/adapter/converters/shader-formats.js.map +1 -0
- package/dist/adapter/converters/vertex-formats.js +1 -0
- package/dist/adapter/converters/vertex-formats.js.map +1 -0
- package/dist/adapter/converters/webgl-texture-table.d.ts +40 -0
- package/dist/adapter/converters/webgl-texture-table.d.ts.map +1 -0
- package/dist/adapter/converters/webgl-texture-table.js +304 -0
- package/dist/adapter/converters/webgl-texture-table.js.map +1 -0
- package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -1
- package/dist/adapter/device-helpers/webgl-device-features.js +2 -3
- package/dist/adapter/device-helpers/webgl-device-features.js.map +1 -0
- package/dist/adapter/device-helpers/webgl-device-info.js +1 -0
- package/dist/adapter/device-helpers/webgl-device-info.js.map +1 -0
- package/dist/adapter/device-helpers/webgl-device-limits.js +1 -0
- package/dist/adapter/device-helpers/webgl-device-limits.js.map +1 -0
- package/dist/adapter/helpers/decode-webgl-types.js +1 -0
- package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
- package/dist/adapter/helpers/format-utils.d.ts.map +1 -0
- package/dist/{classic → adapter/helpers}/format-utils.js +7 -0
- package/dist/adapter/helpers/format-utils.js.map +1 -0
- package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
- package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.js +5 -4
- package/dist/adapter/helpers/get-shader-layout.js.map +1 -0
- package/dist/adapter/helpers/parse-shader-compiler-log.js +1 -0
- package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
- package/dist/adapter/helpers/set-uniform.js +1 -0
- package/dist/adapter/helpers/set-uniform.js.map +1 -0
- package/dist/adapter/helpers/typed-array-utils.d.ts.map +1 -0
- package/dist/{classic → adapter/helpers}/typed-array-utils.js +1 -0
- package/dist/adapter/helpers/typed-array-utils.js.map +1 -0
- package/dist/adapter/helpers/webgl-texture-utils.d.ts +100 -29
- package/dist/adapter/helpers/webgl-texture-utils.d.ts.map +1 -1
- package/dist/adapter/helpers/webgl-texture-utils.js +231 -240
- package/dist/adapter/helpers/webgl-texture-utils.js.map +1 -0
- package/dist/adapter/helpers/webgl-topology-utils.js +1 -0
- package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +4 -1
- package/dist/adapter/resources/webgl-buffer.js.map +1 -0
- package/dist/adapter/resources/webgl-command-buffer.d.ts +59 -2
- package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.js +89 -32
- package/dist/adapter/resources/webgl-command-buffer.js.map +1 -0
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.js +4 -0
- package/dist/adapter/resources/webgl-command-encoder.js.map +1 -0
- package/dist/adapter/resources/webgl-external-texture.js +15 -0
- package/dist/adapter/resources/webgl-external-texture.js.map +1 -0
- package/dist/adapter/resources/webgl-framebuffer.d.ts +33 -35
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +71 -76
- package/dist/adapter/resources/webgl-framebuffer.js.map +1 -0
- package/dist/adapter/resources/webgl-query-set.js +1 -0
- package/dist/adapter/resources/webgl-query-set.js.map +1 -0
- package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.js +49 -21
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -0
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +3 -4
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +45 -23
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -0
- package/dist/adapter/resources/webgl-sampler.js +1 -0
- package/dist/adapter/resources/webgl-sampler.js.map +1 -0
- package/dist/adapter/resources/webgl-shader.d.ts +1 -0
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +13 -6
- package/dist/adapter/resources/webgl-shader.js.map +1 -0
- package/dist/adapter/resources/webgl-texture-view.js +1 -0
- package/dist/adapter/resources/webgl-texture-view.js.map +1 -0
- package/dist/adapter/resources/webgl-texture.d.ts +33 -21
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +172 -242
- package/dist/adapter/resources/webgl-texture.js.map +1 -0
- package/dist/adapter/resources/webgl-transform-feedback.js +1 -0
- package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -0
- package/dist/adapter/resources/webgl-vertex-array.js +1 -0
- package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
- package/dist/adapter/webgl-adapter.d.ts +21 -0
- package/dist/adapter/webgl-adapter.d.ts.map +1 -0
- package/dist/adapter/webgl-adapter.js +86 -0
- package/dist/adapter/webgl-adapter.js.map +1 -0
- package/dist/adapter/webgl-canvas-context.d.ts +4 -6
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
- package/dist/adapter/webgl-canvas-context.js +13 -17
- package/dist/adapter/webgl-canvas-context.js.map +1 -0
- package/dist/adapter/webgl-device.d.ts +35 -46
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +100 -156
- package/dist/adapter/webgl-device.js.map +1 -0
- package/dist/context/debug/spector-types.d.ts +1108 -0
- package/dist/context/debug/spector-types.d.ts.map +1 -0
- package/dist/context/debug/spector-types.js +698 -0
- package/dist/context/debug/spector-types.js.map +1 -0
- package/dist/context/debug/spector.d.ts +12 -8
- package/dist/context/debug/spector.d.ts.map +1 -1
- package/dist/context/debug/spector.js +24 -17
- package/dist/context/debug/spector.js.map +1 -0
- package/dist/context/debug/webgl-developer-tools.d.ts +2 -3
- package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
- package/dist/context/debug/webgl-developer-tools.js +7 -19
- package/dist/context/debug/webgl-developer-tools.js.map +1 -0
- package/dist/context/helpers/create-browser-context.d.ts +6 -22
- package/dist/context/helpers/create-browser-context.d.ts.map +1 -1
- package/dist/context/helpers/create-browser-context.js +41 -32
- package/dist/context/helpers/create-browser-context.js.map +1 -0
- package/dist/context/helpers/webgl-context-data.js +1 -0
- package/dist/context/helpers/webgl-context-data.js.map +1 -0
- package/dist/context/helpers/webgl-extensions.js +1 -0
- package/dist/context/helpers/webgl-extensions.js.map +1 -0
- package/dist/context/parameters/unified-parameter-api.js +1 -0
- package/dist/context/parameters/unified-parameter-api.js.map +1 -0
- package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -1
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +3 -2
- package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
- package/dist/context/polyfills/polyfill-webgl1-extensions.d.ts +9 -0
- package/dist/context/polyfills/polyfill-webgl1-extensions.d.ts.map +1 -0
- package/dist/context/polyfills/polyfill-webgl1-extensions.js +182 -0
- package/dist/context/polyfills/polyfill-webgl1-extensions.js.map +1 -0
- package/dist/context/state-tracker/deep-array-equal.js +1 -0
- package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
- package/dist/context/state-tracker/webgl-state-tracker.d.ts +43 -0
- package/dist/context/state-tracker/webgl-state-tracker.d.ts.map +1 -0
- package/dist/context/state-tracker/{track-context-state.js → webgl-state-tracker.js} +45 -74
- package/dist/context/state-tracker/webgl-state-tracker.js.map +1 -0
- package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
- package/dist/context/state-tracker/with-parameters.js +6 -4
- package/dist/context/state-tracker/with-parameters.js.map +1 -0
- package/dist/deprecated/accessor.d.ts.map +1 -0
- package/dist/{classic → deprecated}/accessor.js +37 -1
- package/dist/deprecated/accessor.js.map +1 -0
- package/dist/dist.dev.js +2397 -2430
- package/dist/dist.min.js +2 -2
- package/dist/index.cjs +2273 -2298
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/fill-array.d.ts +4 -4
- package/dist/utils/fill-array.d.ts.map +1 -1
- package/dist/utils/fill-array.js +1 -0
- package/dist/utils/fill-array.js.map +1 -0
- package/dist/utils/load-script.js +1 -0
- package/dist/utils/load-script.js.map +1 -0
- package/dist/utils/split-uniforms-and-bindings.d.ts +1 -1
- package/dist/utils/split-uniforms-and-bindings.d.ts.map +1 -1
- package/dist/utils/split-uniforms-and-bindings.js +1 -0
- package/dist/utils/split-uniforms-and-bindings.js.map +1 -0
- package/dist/utils/uid.d.ts +7 -0
- package/dist/utils/uid.d.ts.map +1 -0
- package/dist/utils/uid.js +15 -0
- package/dist/utils/uid.js.map +1 -0
- package/package.json +5 -5
- package/src/adapter/converters/device-parameters.ts +21 -15
- package/src/adapter/converters/sampler-parameters.ts +6 -4
- package/src/adapter/converters/webgl-texture-table.ts +404 -0
- package/src/adapter/device-helpers/webgl-device-features.ts +5 -3
- package/src/{classic → adapter/helpers}/format-utils.ts +6 -0
- package/src/adapter/helpers/get-shader-layout.ts +7 -4
- package/src/adapter/helpers/webgl-texture-utils.ts +410 -64
- package/src/adapter/resources/webgl-buffer.ts +3 -1
- package/src/adapter/resources/webgl-command-buffer.ts +125 -41
- package/src/adapter/resources/webgl-command-encoder.ts +6 -0
- package/src/adapter/resources/webgl-external-texture.ts +14 -0
- package/src/adapter/resources/webgl-framebuffer.ts +80 -86
- package/src/adapter/resources/webgl-render-pass.ts +72 -45
- package/src/adapter/resources/webgl-render-pipeline.ts +58 -27
- package/src/adapter/resources/webgl-shader.ts +15 -7
- package/src/adapter/resources/webgl-texture.ts +202 -274
- package/src/adapter/webgl-adapter.ts +105 -0
- package/src/adapter/webgl-canvas-context.ts +16 -19
- package/src/adapter/webgl-device.ts +144 -210
- package/src/context/debug/spector-types.ts +1154 -0
- package/src/context/debug/spector.ts +38 -29
- package/src/context/debug/webgl-developer-tools.ts +8 -31
- package/src/context/helpers/create-browser-context.ts +53 -63
- package/src/context/parameters/webgl-parameter-tables.ts +2 -2
- package/src/context/polyfills/polyfill-webgl1-extensions.ts +202 -0
- package/src/context/state-tracker/{track-context-state.ts → webgl-state-tracker.ts} +55 -94
- package/src/context/state-tracker/with-parameters.ts +5 -4
- package/src/{classic → deprecated}/accessor.ts +44 -3
- package/src/index.ts +7 -12
- package/src/utils/fill-array.ts +4 -4
- package/src/utils/split-uniforms-and-bindings.ts +3 -3
- package/src/utils/uid.ts +16 -0
- package/dist/adapter/converters/texture-formats.d.ts +0 -83
- package/dist/adapter/converters/texture-formats.d.ts.map +0 -1
- package/dist/adapter/converters/texture-formats.js +0 -518
- package/dist/classic/accessor.d.ts.map +0 -1
- package/dist/classic/clear.d.ts +0 -22
- package/dist/classic/clear.d.ts.map +0 -1
- package/dist/classic/clear.js +0 -86
- package/dist/classic/copy-and-blit.d.ts +0 -63
- package/dist/classic/copy-and-blit.d.ts.map +0 -1
- package/dist/classic/copy-and-blit.js +0 -193
- package/dist/classic/format-utils.d.ts.map +0 -1
- package/dist/classic/typed-array-utils.d.ts.map +0 -1
- package/dist/context/state-tracker/track-context-state.d.ts +0 -22
- package/dist/context/state-tracker/track-context-state.d.ts.map +0 -1
- package/src/adapter/converters/texture-formats.ts +0 -665
- package/src/classic/clear.ts +0 -115
- package/src/classic/copy-and-blit.ts +0 -318
- /package/dist/{classic → adapter/helpers}/format-utils.d.ts +0 -0
- /package/dist/{classic → adapter/helpers}/typed-array-utils.d.ts +0 -0
- /package/dist/{classic → deprecated}/accessor.d.ts +0 -0
- /package/src/{classic → adapter/helpers}/typed-array-utils.ts +0 -0
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
// luma.gl
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
|
-
import { Device,
|
|
5
|
-
import {
|
|
4
|
+
import { Device, log } from '@luma.gl/core';
|
|
5
|
+
import { WebGLStateTracker } from "../context/state-tracker/webgl-state-tracker.js";
|
|
6
6
|
import { createBrowserContext } from "../context/helpers/create-browser-context.js";
|
|
7
7
|
import { getDeviceInfo } from "./device-helpers/webgl-device-info.js";
|
|
8
8
|
import { WebGLDeviceFeatures } from "./device-helpers/webgl-device-features.js";
|
|
9
9
|
import { WebGLDeviceLimits } from "./device-helpers/webgl-device-limits.js";
|
|
10
10
|
import { WebGLCanvasContext } from "./webgl-canvas-context.js";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
11
|
+
import { initializeSpectorJS } from "../context/debug/spector.js";
|
|
12
|
+
import { makeDebugContext } from "../context/debug/webgl-developer-tools.js";
|
|
13
|
+
import { getTextureFormatCapabilitiesWebGL } from "./converters/webgl-texture-table.js";
|
|
14
|
+
import { uid } from "../utils/uid.js";
|
|
14
15
|
import { WEBGLBuffer } from "./resources/webgl-buffer.js";
|
|
15
16
|
import { WEBGLShader } from "./resources/webgl-shader.js";
|
|
16
17
|
import { WEBGLSampler } from "./resources/webgl-sampler.js";
|
|
@@ -22,19 +23,13 @@ import { WEBGLCommandEncoder } from "./resources/webgl-command-encoder.js";
|
|
|
22
23
|
import { WEBGLVertexArray } from "./resources/webgl-vertex-array.js";
|
|
23
24
|
import { WEBGLTransformFeedback } from "./resources/webgl-transform-feedback.js";
|
|
24
25
|
import { WEBGLQuerySet } from "./resources/webgl-query-set.js";
|
|
25
|
-
import { readPixelsToArray, readPixelsToBuffer } from "
|
|
26
|
+
import { readPixelsToArray, readPixelsToBuffer } from "./helpers/webgl-texture-utils.js";
|
|
26
27
|
import { setGLParameters, getGLParameters, resetGLParameters } from "../context/parameters/unified-parameter-api.js";
|
|
27
28
|
import { withGLParameters } from "../context/state-tracker/with-parameters.js";
|
|
28
|
-
import { clear } from "../classic/clear.js";
|
|
29
29
|
import { getWebGLExtension } from "../context/helpers/webgl-extensions.js";
|
|
30
|
-
const LOG_LEVEL = 1;
|
|
31
30
|
/** WebGPU style Device API for a WebGL context */
|
|
32
31
|
export class WebGLDevice extends Device {
|
|
33
|
-
//
|
|
34
32
|
// Public `Device` API
|
|
35
|
-
//
|
|
36
|
-
/** type of this device */
|
|
37
|
-
static type = 'webgl';
|
|
38
33
|
/** type of this device */
|
|
39
34
|
type = 'webgl';
|
|
40
35
|
/** The underlying WebGL context */
|
|
@@ -43,131 +38,95 @@ export class WebGLDevice extends Device {
|
|
|
43
38
|
limits;
|
|
44
39
|
info;
|
|
45
40
|
canvasContext;
|
|
41
|
+
preferredColorFormat = 'rgba8unorm';
|
|
42
|
+
preferredDepthFormat = 'depth24plus';
|
|
46
43
|
lost;
|
|
47
44
|
_resolveContextLost;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
* @param gl
|
|
59
|
-
* @returns
|
|
60
|
-
*/
|
|
61
|
-
static attach(gl) {
|
|
62
|
-
if (gl instanceof WebGLDevice) {
|
|
63
|
-
return gl;
|
|
64
|
-
}
|
|
65
|
-
// @ts-expect-error
|
|
66
|
-
if (gl?.device instanceof Device) {
|
|
67
|
-
// @ts-expect-error
|
|
68
|
-
return gl.device;
|
|
69
|
-
}
|
|
70
|
-
if (!isWebGL(gl)) {
|
|
71
|
-
throw new Error('Invalid WebGL2RenderingContext');
|
|
72
|
-
}
|
|
73
|
-
return new WebGLDevice({ gl: gl });
|
|
74
|
-
}
|
|
75
|
-
static async create(props = {}) {
|
|
76
|
-
log.groupCollapsed(LOG_LEVEL, 'WebGLDevice created')();
|
|
77
|
-
const promises = [];
|
|
78
|
-
// Load webgl and spector debug scripts from CDN if requested
|
|
79
|
-
if (props.debug) {
|
|
80
|
-
promises.push(loadWebGLDeveloperTools());
|
|
81
|
-
}
|
|
82
|
-
if (props.spector) {
|
|
83
|
-
promises.push(loadSpectorJS());
|
|
84
|
-
}
|
|
85
|
-
// Wait for page to load: if canvas is a string we need to query the DOM for the canvas element.
|
|
86
|
-
// We only wait when props.canvas is string to avoids setting the global page onload callback unless necessary.
|
|
87
|
-
if (typeof props.canvas === 'string') {
|
|
88
|
-
promises.push(CanvasContext.pageLoaded);
|
|
89
|
-
}
|
|
90
|
-
// Wait for all the loads to settle before creating the context.
|
|
91
|
-
// The Device.create() functions are async, so in contrast to the constructor, we can `await` here.
|
|
92
|
-
const results = await Promise.allSettled(promises);
|
|
93
|
-
for (const result of results) {
|
|
94
|
-
if (result.status === 'rejected') {
|
|
95
|
-
log.error(`Failed to initialize debug libraries ${result.reason}`)();
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
log.probe(LOG_LEVEL + 1, 'DOM is loaded')();
|
|
99
|
-
// @ts-expect-error
|
|
100
|
-
if (props.gl?.device) {
|
|
101
|
-
log.warn('reattaching existing device')();
|
|
102
|
-
return WebGLDevice.attach(props.gl);
|
|
103
|
-
}
|
|
104
|
-
const device = new WebGLDevice(props);
|
|
105
|
-
// Log some debug info about the newly created context
|
|
106
|
-
const message = `\
|
|
107
|
-
Created ${device.type}${device.debug ? ' debug' : ''} context: \
|
|
108
|
-
${device.info.vendor}, ${device.info.renderer} for canvas: ${device.canvasContext.id}`;
|
|
109
|
-
log.probe(LOG_LEVEL, message)();
|
|
110
|
-
log.table(LOG_LEVEL, device.info)();
|
|
111
|
-
log.groupEnd(LOG_LEVEL)();
|
|
112
|
-
return device;
|
|
113
|
-
}
|
|
45
|
+
/** WebGL2 context. */
|
|
46
|
+
gl;
|
|
47
|
+
debug = false;
|
|
48
|
+
/** State used by luma.gl classes: TODO - move to canvasContext*/
|
|
49
|
+
_canvasSizeInfo = { clientWidth: 0, clientHeight: 0, devicePixelRatio: 1 };
|
|
50
|
+
/** State used by luma.gl classes - TODO - not used? */
|
|
51
|
+
_extensions = {};
|
|
52
|
+
_polyfilled = false;
|
|
53
|
+
/** Instance of Spector.js (if initialized) */
|
|
54
|
+
spectorJS;
|
|
114
55
|
//
|
|
115
56
|
// Public API
|
|
116
57
|
//
|
|
117
58
|
constructor(props) {
|
|
118
|
-
super({ ...props, id: props.id || 'webgl-device' });
|
|
59
|
+
super({ ...props, id: props.id || uid('webgl-device') });
|
|
60
|
+
// WebGL requires a canvas to be created before creating the context
|
|
61
|
+
if (!props.createCanvasContext) {
|
|
62
|
+
throw new Error('WebGLDevice requires props.createCanvasContext to be set');
|
|
63
|
+
}
|
|
64
|
+
const canvasContextProps = props.createCanvasContext === true ? {} : props.createCanvasContext;
|
|
119
65
|
// If attaching to an already attached context, return the attached device
|
|
120
66
|
// @ts-expect-error device is attached to context
|
|
121
|
-
|
|
67
|
+
let device = canvasContextProps.canvas?.gl?.device;
|
|
122
68
|
if (device) {
|
|
123
69
|
throw new Error(`WebGL context already attached to device ${device.id}`);
|
|
124
70
|
}
|
|
125
71
|
// Create and instrument context
|
|
126
|
-
|
|
127
|
-
this.canvasContext = new WebGLCanvasContext(this, { ...props, canvas });
|
|
72
|
+
this.canvasContext = new WebGLCanvasContext(this, canvasContextProps);
|
|
128
73
|
this.lost = new Promise(resolve => {
|
|
129
74
|
this._resolveContextLost = resolve;
|
|
130
75
|
});
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
76
|
+
const webglContextAttributes = { ...props.webgl };
|
|
77
|
+
// Copy props from CanvasContextProps
|
|
78
|
+
if (canvasContextProps.alphaMode === 'premultiplied') {
|
|
79
|
+
webglContextAttributes.premultipliedAlpha = true;
|
|
80
|
+
}
|
|
81
|
+
if (props.powerPreference !== undefined) {
|
|
82
|
+
webglContextAttributes.powerPreference = props.powerPreference;
|
|
83
|
+
}
|
|
84
|
+
const gl = createBrowserContext(this.canvasContext.canvas, {
|
|
134
85
|
onContextLost: (event) => this._resolveContextLost?.({
|
|
135
86
|
reason: 'destroyed',
|
|
136
87
|
message: 'Entered sleep mode, or too many apps or browser tabs are using the GPU.'
|
|
137
|
-
})
|
|
138
|
-
|
|
88
|
+
}),
|
|
89
|
+
// eslint-disable-next-line no-console
|
|
90
|
+
onContextRestored: (event) => console.log('WebGL context restored')
|
|
91
|
+
}, webglContextAttributes);
|
|
139
92
|
if (!gl) {
|
|
140
93
|
throw new Error('WebGL context creation failed');
|
|
141
94
|
}
|
|
95
|
+
// @ts-expect-error device is attached to context
|
|
96
|
+
device = gl.device;
|
|
97
|
+
if (device) {
|
|
98
|
+
throw new Error(`WebGL context already attached to device ${device.id}`);
|
|
99
|
+
}
|
|
142
100
|
this.handle = gl;
|
|
143
101
|
this.gl = gl;
|
|
102
|
+
// Add spector debug instrumentation to context
|
|
103
|
+
// We need to trust spector integration to decide if spector should be initialized
|
|
104
|
+
// We also run spector instrumentation first, otherwise spector can clobber luma instrumentation.
|
|
105
|
+
this.spectorJS = initializeSpectorJS({ ...this.props, gl: this.handle });
|
|
106
|
+
// Instrument context
|
|
144
107
|
this.gl.device = this; // Update GL context: Link webgl context back to device
|
|
145
108
|
this.gl._version = 2; // Update GL context: Store WebGL version field on gl context (HACK to identify debug contexts)
|
|
146
|
-
// luma Device fields
|
|
109
|
+
// initialize luma Device fields
|
|
147
110
|
this.info = getDeviceInfo(this.gl, this._extensions);
|
|
148
111
|
this.limits = new WebGLDeviceLimits(this.gl);
|
|
149
|
-
this.features = new WebGLDeviceFeatures(this.gl, this._extensions, this.props.
|
|
150
|
-
if (this.props.
|
|
112
|
+
this.features = new WebGLDeviceFeatures(this.gl, this._extensions, this.props._disabledFeatures);
|
|
113
|
+
if (this.props._initializeFeatures) {
|
|
151
114
|
this.features.initializeFeatures();
|
|
152
115
|
}
|
|
153
|
-
this.canvasContext.resize();
|
|
154
116
|
// Install context state tracking
|
|
155
|
-
|
|
156
|
-
const { enable = true, copyState = false } = props;
|
|
157
|
-
trackContextState(this.gl, {
|
|
158
|
-
enable,
|
|
159
|
-
copyState,
|
|
117
|
+
const glState = new WebGLStateTracker(this.gl, {
|
|
160
118
|
log: (...args) => log.log(1, ...args)()
|
|
161
119
|
});
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
120
|
+
glState.trackState(this.gl, { copyState: false });
|
|
121
|
+
// DEBUG contexts: Add luma debug instrumentation to the context, force log level to at least 1
|
|
122
|
+
const debugWebGL = props.debugWebGL || props.debug;
|
|
123
|
+
const traceWebGL = props.debugWebGL;
|
|
124
|
+
if (debugWebGL) {
|
|
125
|
+
this.gl = makeDebugContext(this.gl, { debugWebGL, traceWebGL });
|
|
167
126
|
log.warn('WebGL debug mode activated. Performance reduced.')();
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
127
|
+
if (props.debugWebGL) {
|
|
128
|
+
log.level = Math.max(log.level, 1);
|
|
129
|
+
}
|
|
171
130
|
}
|
|
172
131
|
}
|
|
173
132
|
/**
|
|
@@ -178,28 +137,15 @@ ${device.info.vendor}, ${device.info.renderer} for canvas: ${device.canvasContex
|
|
|
178
137
|
get isLost() {
|
|
179
138
|
return this.gl.isContextLost();
|
|
180
139
|
}
|
|
181
|
-
getSize() {
|
|
182
|
-
return [this.gl.drawingBufferWidth, this.gl.drawingBufferHeight];
|
|
183
|
-
}
|
|
184
|
-
isTextureFormatSupported(format) {
|
|
185
|
-
return isTextureFormatSupported(this.gl, format, this._extensions);
|
|
186
|
-
}
|
|
187
|
-
isTextureFormatFilterable(format) {
|
|
188
|
-
return isTextureFormatFilterable(this.gl, format, this._extensions);
|
|
189
|
-
}
|
|
190
|
-
isTextureFormatRenderable(format) {
|
|
191
|
-
return isTextureFormatRenderable(this.gl, format, this._extensions);
|
|
192
|
-
}
|
|
193
140
|
// IMPLEMENTATION OF ABSTRACT DEVICE
|
|
194
141
|
createCanvasContext(props) {
|
|
195
142
|
throw new Error('WebGL only supports a single canvas');
|
|
196
143
|
}
|
|
197
144
|
createBuffer(props) {
|
|
198
|
-
const newProps = this.
|
|
145
|
+
const newProps = this._normalizeBufferProps(props);
|
|
199
146
|
return new WEBGLBuffer(this, newProps);
|
|
200
147
|
}
|
|
201
|
-
|
|
202
|
-
_createTexture(props) {
|
|
148
|
+
createTexture(props) {
|
|
203
149
|
return new WEBGLTexture(this, props);
|
|
204
150
|
}
|
|
205
151
|
createExternalTexture(props) {
|
|
@@ -269,26 +215,16 @@ ${device.info.vendor}, ${device.info.renderer} for canvas: ${device.canvasContex
|
|
|
269
215
|
withParametersWebGL(parameters, func) {
|
|
270
216
|
return withGLParameters(this.gl, parameters, func);
|
|
271
217
|
}
|
|
272
|
-
clearWebGL(options) {
|
|
273
|
-
clear(this, options);
|
|
274
|
-
}
|
|
275
218
|
resetWebGL() {
|
|
276
219
|
log.warn('WebGLDevice.resetWebGL is deprecated, use only for debugging')();
|
|
277
220
|
resetGLParameters(this.gl);
|
|
278
221
|
}
|
|
222
|
+
_getDeviceSpecificTextureFormatCapabilities(capabilities) {
|
|
223
|
+
return getTextureFormatCapabilitiesWebGL(this.gl, capabilities, this._extensions);
|
|
224
|
+
}
|
|
279
225
|
//
|
|
280
226
|
// WebGL-only API (not part of `Device` API)
|
|
281
227
|
//
|
|
282
|
-
/** WebGL2 context. */
|
|
283
|
-
gl;
|
|
284
|
-
debug = false;
|
|
285
|
-
/** State used by luma.gl classes: TODO - move to canvasContext*/
|
|
286
|
-
_canvasSizeInfo = { clientWidth: 0, clientHeight: 0, devicePixelRatio: 1 };
|
|
287
|
-
/** State used by luma.gl classes - TODO - not used? */
|
|
288
|
-
_extensions = {};
|
|
289
|
-
_polyfilled = false;
|
|
290
|
-
/** Instance of Spector.js (if initialized) */
|
|
291
|
-
spectorJS;
|
|
292
228
|
/**
|
|
293
229
|
* Triggers device (or WebGL context) loss.
|
|
294
230
|
* @note primarily intended for testing how application reacts to device loss
|
|
@@ -310,38 +246,40 @@ ${device.info.vendor}, ${device.info.renderer} for canvas: ${device.canvasContex
|
|
|
310
246
|
}
|
|
311
247
|
/** Save current WebGL context state onto an internal stack */
|
|
312
248
|
pushState() {
|
|
313
|
-
|
|
249
|
+
const webglState = WebGLStateTracker.get(this.gl);
|
|
250
|
+
webglState.push();
|
|
314
251
|
}
|
|
315
252
|
/** Restores previously saved context state */
|
|
316
253
|
popState() {
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
/**
|
|
320
|
-
* Storing data on a special field on WebGLObjects makes that data visible in SPECTOR chrome debug extension
|
|
321
|
-
* luma.gl ids and props can be inspected
|
|
322
|
-
*/
|
|
323
|
-
setSpectorMetadata(handle, props) {
|
|
324
|
-
// @ts-expect-error
|
|
325
|
-
// eslint-disable-next-line camelcase
|
|
326
|
-
handle.__SPECTOR_Metadata = props;
|
|
254
|
+
const webglState = WebGLStateTracker.get(this.gl);
|
|
255
|
+
webglState.pop();
|
|
327
256
|
}
|
|
328
257
|
/**
|
|
329
258
|
* Returns the GL.<KEY> constant that corresponds to a numeric value of a GL constant
|
|
330
259
|
* Be aware that there are some duplicates especially for constants that are 0,
|
|
331
260
|
* so this isn't guaranteed to return the right key in all cases.
|
|
332
261
|
*/
|
|
333
|
-
getGLKey(value,
|
|
334
|
-
// @ts-ignore expect-error depends on settings
|
|
335
|
-
gl = gl || this.gl2 || this.gl;
|
|
262
|
+
getGLKey(value, options) {
|
|
336
263
|
const number = Number(value);
|
|
337
|
-
for (const key in gl) {
|
|
264
|
+
for (const key in this.gl) {
|
|
338
265
|
// @ts-ignore expect-error depends on settings
|
|
339
|
-
if (gl[key] === number) {
|
|
266
|
+
if (this.gl[key] === number) {
|
|
340
267
|
return `GL.${key}`;
|
|
341
268
|
}
|
|
342
269
|
}
|
|
343
270
|
// No constant found. Stringify the value and return it.
|
|
344
|
-
return String(value);
|
|
271
|
+
return options?.emptyIfUnknown ? '' : String(value);
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Returns a map with any GL.<KEY> constants mapped to strings, both for keys and values
|
|
275
|
+
*/
|
|
276
|
+
getGLKeys(glParameters) {
|
|
277
|
+
const opts = { emptyIfUnknown: true };
|
|
278
|
+
return Object.entries(glParameters).reduce((keys, [key, value]) => {
|
|
279
|
+
// eslint-disable-next-line @typescript-eslint/no-base-to-string
|
|
280
|
+
keys[`${key}:${this.getGLKey(key, opts)}`] = `${value}:${this.getGLKey(value, opts)}`;
|
|
281
|
+
return keys;
|
|
282
|
+
}, {});
|
|
345
283
|
}
|
|
346
284
|
/** Store constants */
|
|
347
285
|
_constants;
|
|
@@ -378,14 +316,19 @@ ${device.info.vendor}, ${device.info.renderer} for canvas: ${device.canvasContex
|
|
|
378
316
|
getWebGLExtension(this.gl, name, this._extensions);
|
|
379
317
|
return this._extensions;
|
|
380
318
|
}
|
|
381
|
-
|
|
382
|
-
/**
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
319
|
+
// INTERNAL SUPPORT METHODS FOR WEBGL RESOURCES
|
|
320
|
+
/**
|
|
321
|
+
* Storing data on a special field on WebGLObjects makes that data visible in SPECTOR chrome debug extension
|
|
322
|
+
* luma.gl ids and props can be inspected
|
|
323
|
+
*/
|
|
324
|
+
_setWebGLDebugMetadata(handle, resource, options) {
|
|
325
|
+
// @ts-expect-error
|
|
326
|
+
handle.luma = resource;
|
|
327
|
+
const spectorMetadata = { props: options.spector, id: options.spector.id };
|
|
328
|
+
// @ts-expect-error
|
|
329
|
+
// eslint-disable-next-line camelcase
|
|
330
|
+
handle.__SPECTOR_Metadata = spectorMetadata;
|
|
386
331
|
}
|
|
387
|
-
// Look for debug contexts, headless gl etc
|
|
388
|
-
return Boolean(gl && Number.isFinite(gl._version));
|
|
389
332
|
}
|
|
390
333
|
/** Set constant float array attribute */
|
|
391
334
|
function setConstantFloatArray(device, location, array) {
|
|
@@ -462,3 +405,4 @@ function compareConstantArrayValues(v1, v2) {
|
|
|
462
405
|
}
|
|
463
406
|
return true;
|
|
464
407
|
}
|
|
408
|
+
//# sourceMappingURL=webgl-device.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgl-device.js","sourceRoot":"","sources":["../../src/adapter/webgl-device.ts"],"names":[],"mappings":"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"}
|