@luma.gl/webgl 8.6.0-alpha.2 → 8.6.0-alpha.3
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/LICENSE +8 -1
- package/dist/adapter/converters/set-device-parameters.d.ts +5 -0
- package/dist/adapter/converters/set-device-parameters.d.ts.map +1 -0
- package/dist/adapter/converters/set-device-parameters.js +124 -0
- package/dist/adapter/converters/set-device-parameters.js.map +1 -0
- package/dist/adapter/converters/webgpu-texture-formats.d.ts +281 -0
- package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +1 -0
- package/dist/adapter/converters/webgpu-texture-formats.js +285 -0
- package/dist/adapter/converters/webgpu-texture-formats.js.map +1 -0
- package/dist/{device → adapter/device-helpers}/device-features.d.ts +0 -0
- package/dist/adapter/device-helpers/device-features.d.ts.map +1 -0
- package/dist/{esm/device → adapter/device-helpers}/device-features.js +2 -2
- package/dist/adapter/device-helpers/device-features.js.map +1 -0
- package/dist/{device → adapter/device-helpers}/device-limits.d.ts +0 -0
- package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -0
- package/dist/{esm/device → adapter/device-helpers}/device-limits.js +1 -1
- package/dist/adapter/device-helpers/device-limits.js.map +1 -0
- package/dist/{device → adapter/device-helpers}/get-device-info.d.ts +0 -0
- package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -0
- package/dist/{device → adapter/device-helpers}/get-device-info.js +1 -1
- package/dist/adapter/device-helpers/get-device-info.js.map +1 -0
- package/dist/{webgl-utils → adapter/device-helpers}/is-old-ie.d.ts +0 -0
- package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -0
- package/dist/{esm/webgl-utils → adapter/device-helpers}/is-old-ie.js +0 -0
- package/dist/adapter/device-helpers/is-old-ie.js.map +1 -0
- package/dist/{device → adapter}/webgl-device.d.ts +3 -3
- package/dist/adapter/webgl-device.d.ts.map +1 -0
- package/dist/{esm/device → adapter}/webgl-device.js +6 -6
- package/dist/adapter/webgl-device.js.map +1 -0
- package/dist/adapter/webgl-shader.d.ts +18 -0
- package/dist/adapter/webgl-shader.d.ts.map +1 -0
- package/dist/adapter/webgl-shader.js +82 -0
- package/dist/adapter/webgl-shader.js.map +1 -0
- package/dist/classes/framebuffer.js +1 -1
- package/dist/classes/framebuffer.js.map +1 -1
- package/dist/classes/program-configuration.d.ts +14 -17
- package/dist/classes/program-configuration.d.ts.map +1 -1
- package/dist/classes/program-configuration.js +10 -97
- package/dist/classes/program-configuration.js.map +1 -1
- package/dist/classes/program.d.ts +20 -15
- package/dist/classes/program.d.ts.map +1 -1
- package/dist/classes/program.js +31 -22
- package/dist/classes/program.js.map +1 -1
- package/dist/classes/query.js +1 -1
- package/dist/classes/query.js.map +1 -1
- package/dist/classes/renderbuffer.js +1 -1
- package/dist/classes/renderbuffer.js.map +1 -1
- package/dist/classes/{webgl-shader.d.ts → shader.d.ts} +4 -15
- package/dist/classes/shader.d.ts.map +1 -0
- package/dist/{esm/classes/webgl-shader.js → classes/shader.js} +6 -81
- package/dist/classes/shader.js.map +1 -0
- package/dist/classes/texture-3d.js +1 -1
- package/dist/classes/texture-3d.js.map +1 -1
- package/dist/classes/texture-cube.js.map +1 -1
- package/dist/classes/texture.d.ts +1 -1
- package/dist/classes/texture.d.ts.map +1 -1
- package/dist/classes/texture.js +1 -1
- package/dist/classes/texture.js.map +1 -1
- package/dist/classes/transform-feedback.js +1 -1
- package/dist/classes/transform-feedback.js.map +1 -1
- package/dist/classes/vertex-array-object.d.ts +6 -5
- package/dist/classes/vertex-array-object.d.ts.map +1 -1
- package/dist/classes/vertex-array-object.js +5 -5
- package/dist/classes/vertex-array-object.js.map +1 -1
- package/dist/classes/vertex-array.d.ts +13 -13
- package/dist/classes/vertex-array.d.ts.map +1 -1
- package/dist/classes/vertex-array.js +2 -2
- package/dist/classes/vertex-array.js.map +1 -1
- package/dist/classes/webgl-buffer.d.ts +1 -1
- package/dist/classes/webgl-buffer.d.ts.map +1 -1
- package/dist/classes/webgl-buffer.js +1 -1
- package/dist/classes/webgl-buffer.js.map +1 -1
- package/dist/classes/webgl-resource.d.ts +1 -1
- package/dist/classes/webgl-resource.d.ts.map +1 -1
- package/dist/classes/webgl-resource.js +1 -1
- package/dist/classes/webgl-resource.js.map +1 -1
- package/dist/context/parameters/unified-parameter-api.d.ts +2 -1
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/context/parameters/webgl-parameters.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameters.js.map +1 -1
- package/dist/es5/adapter/converters/set-device-parameters.js +138 -0
- package/dist/es5/adapter/converters/set-device-parameters.js.map +1 -0
- package/dist/es5/adapter/converters/webgpu-texture-formats.js +296 -0
- package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +1 -0
- package/dist/es5/{device → adapter/device-helpers}/device-features.js +2 -2
- package/dist/es5/adapter/device-helpers/device-features.js.map +1 -0
- package/dist/es5/{device → adapter/device-helpers}/device-limits.js +1 -1
- package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -0
- package/dist/es5/{device → adapter/device-helpers}/get-device-info.js +1 -1
- package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -0
- package/dist/es5/{webgl-utils → adapter/device-helpers}/is-old-ie.js +0 -0
- package/dist/es5/adapter/device-helpers/is-old-ie.js.map +1 -0
- package/dist/es5/{device → adapter}/webgl-device.js +6 -6
- package/dist/es5/adapter/webgl-device.js.map +1 -0
- package/dist/es5/adapter/webgl-shader.js +155 -0
- package/dist/es5/adapter/webgl-shader.js.map +1 -0
- package/dist/es5/classes/framebuffer.js +1 -1
- package/dist/es5/classes/framebuffer.js.map +1 -1
- package/dist/es5/classes/program-configuration.js +34 -101
- package/dist/es5/classes/program-configuration.js.map +1 -1
- package/dist/es5/classes/program.js +38 -27
- package/dist/es5/classes/program.js.map +1 -1
- package/dist/es5/classes/query.js +1 -1
- package/dist/es5/classes/query.js.map +1 -1
- package/dist/es5/classes/renderbuffer.js +1 -1
- package/dist/es5/classes/renderbuffer.js.map +1 -1
- package/dist/es5/classes/{webgl-shader.js → shader.js} +18 -132
- package/dist/es5/classes/shader.js.map +1 -0
- package/dist/es5/classes/texture-3d.js +1 -1
- package/dist/es5/classes/texture-3d.js.map +1 -1
- package/dist/es5/classes/texture-cube.js.map +1 -1
- package/dist/es5/classes/texture.js +1 -1
- package/dist/es5/classes/texture.js.map +1 -1
- package/dist/es5/classes/transform-feedback.js +1 -1
- package/dist/es5/classes/transform-feedback.js.map +1 -1
- package/dist/es5/classes/vertex-array-object.js +5 -5
- package/dist/es5/classes/vertex-array-object.js.map +1 -1
- package/dist/es5/classes/vertex-array.js +5 -5
- package/dist/es5/classes/vertex-array.js.map +1 -1
- package/dist/es5/classes/webgl-buffer.js +1 -1
- package/dist/es5/classes/webgl-buffer.js.map +1 -1
- package/dist/es5/classes/webgl-resource.js +1 -1
- package/dist/es5/classes/webgl-resource.js.map +1 -1
- package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/es5/context/parameters/webgl-parameters.js.map +1 -1
- package/dist/es5/helpers/get-program-bindings.js +274 -0
- package/dist/es5/helpers/get-program-bindings.js.map +1 -0
- package/dist/es5/helpers/program-bindings.js +2 -0
- package/dist/es5/helpers/program-bindings.js.map +1 -0
- package/dist/es5/index.js +31 -15
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/init.js +1 -1
- package/dist/es5/init.js.map +1 -1
- package/dist/es5/types/accessor.d.ts +29 -0
- package/dist/esm/adapter/converters/set-device-parameters.js +124 -0
- package/dist/esm/adapter/converters/set-device-parameters.js.map +1 -0
- package/dist/esm/adapter/converters/webgpu-texture-formats.js +285 -0
- package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +1 -0
- package/dist/{device → esm/adapter/device-helpers}/device-features.js +2 -2
- package/dist/esm/adapter/device-helpers/device-features.js.map +1 -0
- package/dist/{device → esm/adapter/device-helpers}/device-limits.js +1 -1
- package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -0
- package/dist/esm/{device → adapter/device-helpers}/get-device-info.js +1 -1
- package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -0
- package/dist/{webgl-utils → esm/adapter/device-helpers}/is-old-ie.js +0 -0
- package/dist/esm/adapter/device-helpers/is-old-ie.js.map +1 -0
- package/dist/{device → esm/adapter}/webgl-device.js +6 -6
- package/dist/esm/adapter/webgl-device.js.map +1 -0
- package/dist/esm/adapter/webgl-shader.js +82 -0
- package/dist/esm/adapter/webgl-shader.js.map +1 -0
- package/dist/esm/classes/framebuffer.js +1 -1
- package/dist/esm/classes/framebuffer.js.map +1 -1
- package/dist/esm/classes/program-configuration.js +10 -97
- package/dist/esm/classes/program-configuration.js.map +1 -1
- package/dist/esm/classes/program.js +31 -22
- package/dist/esm/classes/program.js.map +1 -1
- package/dist/esm/classes/query.js +1 -1
- package/dist/esm/classes/query.js.map +1 -1
- package/dist/esm/classes/renderbuffer.js +1 -1
- package/dist/esm/classes/renderbuffer.js.map +1 -1
- package/dist/{classes/webgl-shader.js → esm/classes/shader.js} +6 -81
- package/dist/esm/classes/shader.js.map +1 -0
- package/dist/esm/classes/texture-3d.js +1 -1
- package/dist/esm/classes/texture-3d.js.map +1 -1
- package/dist/esm/classes/texture-cube.js.map +1 -1
- package/dist/esm/classes/texture.js +1 -1
- package/dist/esm/classes/texture.js.map +1 -1
- package/dist/esm/classes/transform-feedback.js +1 -1
- package/dist/esm/classes/transform-feedback.js.map +1 -1
- package/dist/esm/classes/vertex-array-object.js +5 -5
- package/dist/esm/classes/vertex-array-object.js.map +1 -1
- package/dist/esm/classes/vertex-array.js +2 -2
- package/dist/esm/classes/vertex-array.js.map +1 -1
- package/dist/esm/classes/webgl-buffer.js +1 -1
- package/dist/esm/classes/webgl-buffer.js.map +1 -1
- package/dist/esm/classes/webgl-resource.js +1 -1
- package/dist/esm/classes/webgl-resource.js.map +1 -1
- package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/esm/context/parameters/webgl-parameters.js.map +1 -1
- package/dist/esm/helpers/get-program-bindings.js +228 -0
- package/dist/esm/helpers/get-program-bindings.js.map +1 -0
- package/dist/esm/helpers/program-bindings.js +2 -0
- package/dist/esm/helpers/program-bindings.js.map +1 -0
- package/dist/esm/index.js +4 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/init.js +1 -1
- package/dist/esm/init.js.map +1 -1
- package/dist/esm/types/accessor.d.ts +29 -0
- package/dist/helpers/get-program-bindings.d.ts +8 -0
- package/dist/helpers/get-program-bindings.d.ts.map +1 -0
- package/dist/helpers/get-program-bindings.js +228 -0
- package/dist/helpers/get-program-bindings.js.map +1 -0
- package/dist/helpers/program-bindings.d.ts +41 -0
- package/dist/helpers/program-bindings.d.ts.map +1 -0
- package/dist/helpers/program-bindings.js +2 -0
- package/dist/helpers/program-bindings.js.map +1 -0
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/init.js +1 -1
- package/dist/init.js.map +1 -1
- package/dist/types/accessor.d.ts +29 -0
- package/package.json +5 -5
- package/src/adapter/converters/set-device-parameters.ts +182 -0
- package/src/adapter/converters/webgpu-texture-formats.ts +167 -0
- package/src/{device → adapter/device-helpers}/device-features.ts +4 -4
- package/src/{device → adapter/device-helpers}/device-limits.ts +1 -1
- package/src/{device → adapter/device-helpers}/get-device-info.ts +2 -2
- package/src/{webgl-utils → adapter/device-helpers}/is-old-ie.ts +0 -0
- package/src/{device → adapter}/webgl-device.ts +9 -9
- package/src/adapter/webgl-shader.ts +84 -0
- package/src/classes/framebuffer.ts +1 -1
- package/src/classes/program-configuration.ts +28 -81
- package/src/classes/program.ts +70 -62
- package/src/classes/query.ts +1 -1
- package/src/classes/renderbuffer.ts +1 -1
- package/src/classes/{webgl-shader.ts → shader.ts} +6 -79
- package/src/classes/texture-3d.ts +1 -1
- package/src/classes/texture-cube.ts +1 -1
- package/src/classes/texture.ts +1 -1
- package/src/classes/transform-feedback.ts +1 -1
- package/src/classes/vertex-array-object.ts +9 -8
- package/src/classes/vertex-array.ts +14 -8
- package/src/classes/webgl-buffer.ts +1 -1
- package/src/classes/webgl-resource.ts +1 -1
- package/src/context/parameters/unified-parameter-api.ts +3 -2
- package/src/context/parameters/webgl-parameters.ts +115 -115
- package/src/helpers/get-program-bindings.ts +244 -0
- package/src/helpers/program-bindings.ts +46 -0
- package/src/index.ts +12 -6
- package/src/init.ts +1 -1
- package/src/types/accessor.d.ts +29 -0
- package/dist/api/device2.d.ts +0 -52
- package/dist/api/device2.d.ts.map +0 -1
- package/dist/api/device2.js +0 -23
- package/dist/api/device2.js.map +0 -1
- package/dist/classes/webgl-shader.d.ts.map +0 -1
- package/dist/classes/webgl-shader.js.map +0 -1
- package/dist/device/check-glsl-extension.d.ts +0 -4
- package/dist/device/check-glsl-extension.d.ts.map +0 -1
- package/dist/device/check-glsl-extension.js +0 -22
- package/dist/device/check-glsl-extension.js.map +0 -1
- package/dist/device/device-features.d.ts.map +0 -1
- package/dist/device/device-features.js.map +0 -1
- package/dist/device/device-limits.d.ts.map +0 -1
- package/dist/device/device-limits.js.map +0 -1
- package/dist/device/get-device-info.d.ts.map +0 -1
- package/dist/device/get-device-info.js.map +0 -1
- package/dist/device/webgl-device.d.ts.map +0 -1
- package/dist/device/webgl-device.js.map +0 -1
- package/dist/es5/api/device2.js +0 -42
- package/dist/es5/api/device2.js.map +0 -1
- package/dist/es5/classes/webgl-shader.js.map +0 -1
- package/dist/es5/device/check-glsl-extension.js +0 -33
- package/dist/es5/device/check-glsl-extension.js.map +0 -1
- package/dist/es5/device/device-features.js.map +0 -1
- package/dist/es5/device/device-limits.js.map +0 -1
- package/dist/es5/device/get-device-info.js.map +0 -1
- package/dist/es5/device/webgl-device.js.map +0 -1
- package/dist/es5/webgl-utils/is-old-ie.js.map +0 -1
- package/dist/es5/webgl-utils/webgl-info.ts.disabled +0 -135
- package/dist/esm/api/device2.js +0 -23
- package/dist/esm/api/device2.js.map +0 -1
- package/dist/esm/classes/webgl-shader.js.map +0 -1
- package/dist/esm/device/check-glsl-extension.js +0 -22
- package/dist/esm/device/check-glsl-extension.js.map +0 -1
- package/dist/esm/device/device-features.js.map +0 -1
- package/dist/esm/device/device-limits.js.map +0 -1
- package/dist/esm/device/get-device-info.js.map +0 -1
- package/dist/esm/device/webgl-device.js.map +0 -1
- package/dist/esm/webgl-utils/is-old-ie.js.map +0 -1
- package/dist/esm/webgl-utils/webgl-info.ts.disabled +0 -135
- package/dist/webgl-utils/is-old-ie.d.ts.map +0 -1
- package/dist/webgl-utils/is-old-ie.js.map +0 -1
- package/dist/webgl-utils/webgl-info.ts.disabled +0 -135
- package/src/api/device2.ts +0 -71
- package/src/device/check-glsl-extension.ts +0 -44
- package/src/webgl-utils/webgl-info.ts.disabled +0 -135
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
// Feature detection for WebGL
|
|
2
|
-
//
|
|
3
|
-
// Provides a function that enables simple checking of which WebGL features are
|
|
4
|
-
// available in an WebGL1 or WebGL2 environment.
|
|
5
|
-
|
|
6
|
-
/* eslint-disable no-inline-comments, max-len */
|
|
7
|
-
import isOldIE from './is-old-ie';
|
|
8
|
-
import {assert} from './assert';
|
|
9
|
-
|
|
10
|
-
const GL_VENDOR = 0x1f00;
|
|
11
|
-
const GL_RENDERER = 0x1f01;
|
|
12
|
-
const GL_VERSION = 0x1f02;
|
|
13
|
-
const GL_SHADING_LANGUAGE_VERSION = 0x8b8c;
|
|
14
|
-
|
|
15
|
-
// Defines luma.gl "feature" names and semantics
|
|
16
|
-
const WEBGL_FEATURES = {
|
|
17
|
-
// GLSL extensions
|
|
18
|
-
GLSL_FRAG_DATA: ['WEBGL_draw_buffers', true], // TODO - name makes no sense in GLSL 3.00
|
|
19
|
-
GLSL_FRAG_DEPTH: ['EXT_frag_depth', true],
|
|
20
|
-
GLSL_DERIVATIVES: ['OES_standard_derivatives', true],
|
|
21
|
-
GLSL_TEXTURE_LOD: ['EXT_shader_texture_lod', true]
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
// Create a key-mirrored FEATURES array
|
|
25
|
-
export const FEATURES = {
|
|
26
|
-
GLSL_FRAG_DATA: 'GLSL_FRAG_DATA',
|
|
27
|
-
GLSL_FRAG_DEPTH: 'GLSL_FRAG_DEPTH',
|
|
28
|
-
GLSL_DERIVATIVES: 'GLSL_DERIVATIVES',
|
|
29
|
-
GLSL_TEXTURE_LOD: 'GLSL_TEXTURE_LOD',
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
function isWebGL2(gl) {
|
|
33
|
-
if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
|
|
34
|
-
return true;
|
|
35
|
-
}
|
|
36
|
-
return Boolean(gl && gl._version === 2);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export function getContextInfo(gl) {
|
|
40
|
-
const info = gl.getExtension('WEBGL_debug_renderer_info');
|
|
41
|
-
const vendor = gl.getParameter((info && info.UNMASKED_VENDOR_WEBGL) || GL_VENDOR);
|
|
42
|
-
const renderer = gl.getParameter((info && info.UNMASKED_RENDERER_WEBGL) || GL_RENDERER);
|
|
43
|
-
const gpuVendor = identifyGPUVendor(vendor, renderer);
|
|
44
|
-
const gpuInfo = {
|
|
45
|
-
gpuVendor,
|
|
46
|
-
vendor,
|
|
47
|
-
renderer,
|
|
48
|
-
version: gl.getParameter(GL_VERSION),
|
|
49
|
-
shadingLanguageVersion: gl.getParameter(GL_SHADING_LANGUAGE_VERSION)
|
|
50
|
-
};
|
|
51
|
-
return gpuInfo;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
function identifyGPUVendor(vendor, renderer) {
|
|
55
|
-
if (vendor.match(/NVIDIA/i) || renderer.match(/NVIDIA/i)) {
|
|
56
|
-
return 'NVIDIA';
|
|
57
|
-
}
|
|
58
|
-
if (vendor.match(/INTEL/i) || renderer.match(/INTEL/i)) {
|
|
59
|
-
return 'INTEL';
|
|
60
|
-
}
|
|
61
|
-
if (vendor.match(/Apple/i) || renderer.match(/Apple/i)) {
|
|
62
|
-
return 'APPLE';
|
|
63
|
-
}
|
|
64
|
-
if (
|
|
65
|
-
vendor.match(/AMD/i) ||
|
|
66
|
-
renderer.match(/AMD/i) ||
|
|
67
|
-
vendor.match(/ATI/i) ||
|
|
68
|
-
renderer.match(/ATI/i)
|
|
69
|
-
) {
|
|
70
|
-
return 'AMD';
|
|
71
|
-
}
|
|
72
|
-
return 'UNKNOWN';
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
const compiledGlslExtensions = {};
|
|
76
|
-
|
|
77
|
-
// Enables feature detection in IE11 due to a bug where gl.getExtension may return true
|
|
78
|
-
// but fail to compile when the extension is enabled in the shader. Specifically,
|
|
79
|
-
// the OES_standard_derivatives and WEBGL_draw_buffers extensions fails to compile in IE11 even though its included
|
|
80
|
-
// in the list of supported extensions.
|
|
81
|
-
// opts allows user agent to be overridden for testing
|
|
82
|
-
/*
|
|
83
|
-
* Inputs :
|
|
84
|
-
* gl : WebGL context
|
|
85
|
-
* cap : Key of WEBGL_FEATURES object identifying the extension
|
|
86
|
-
* opts :
|
|
87
|
-
* behavior : behavior of extension to be tested, by defualt `enable` is used
|
|
88
|
-
* Returns : true, if shader is compiled successfully, false otherwise
|
|
89
|
-
*/
|
|
90
|
-
export function canCompileGLGSExtension(gl, cap, opts: {behavior?} = {}) {
|
|
91
|
-
const feature = WEBGL_FEATURES[cap];
|
|
92
|
-
assert(feature, cap);
|
|
93
|
-
|
|
94
|
-
if (!isOldIE(opts)) {
|
|
95
|
-
return true;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
if (cap in compiledGlslExtensions) {
|
|
99
|
-
return compiledGlslExtensions[cap];
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
const extensionName = feature[0];
|
|
103
|
-
const behavior = opts.behavior || 'enable';
|
|
104
|
-
const source = `#extension GL_${extensionName} : ${behavior}\nvoid main(void) {}`;
|
|
105
|
-
|
|
106
|
-
const shader = gl.createShader(gl.VERTEX_SHADER);
|
|
107
|
-
gl.shaderSource(shader, source);
|
|
108
|
-
gl.compileShader(shader);
|
|
109
|
-
const canCompile = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
|
|
110
|
-
gl.deleteShader(shader);
|
|
111
|
-
compiledGlslExtensions[cap] = canCompile;
|
|
112
|
-
return canCompile;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// TODO - cache the value
|
|
116
|
-
function getFeature(gl, cap) {
|
|
117
|
-
const feature = WEBGL_FEATURES[cap];
|
|
118
|
-
assert(feature, cap);
|
|
119
|
-
|
|
120
|
-
// Get extension name from table
|
|
121
|
-
const extensionName = isWebGL2(gl) ? feature[1] || feature[0] : feature[0];
|
|
122
|
-
|
|
123
|
-
// Check if the value is dependent on checking an extension
|
|
124
|
-
const value =
|
|
125
|
-
typeof extensionName === 'string' ? Boolean(gl.getExtension(extensionName)) : extensionName;
|
|
126
|
-
|
|
127
|
-
assert(value === false || value === true);
|
|
128
|
-
|
|
129
|
-
return value;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
export function hasFeatures(gl, features) {
|
|
133
|
-
features = Array.isArray(features) ? features : [features];
|
|
134
|
-
return features.every((feature) => getFeature(gl, feature));
|
|
135
|
-
}
|
package/src/api/device2.ts
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import {Stats} from '@probe.gl/stats';
|
|
3
|
-
|
|
4
|
-
export type DeviceInfo = {
|
|
5
|
-
vendor: string,
|
|
6
|
-
renderer: string,
|
|
7
|
-
vendorMasked: string,
|
|
8
|
-
rendererMasked: string,
|
|
9
|
-
version: string,
|
|
10
|
-
shadingLanguage: string
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
/** Limits for a device */
|
|
14
|
-
export type DeviceLimits = {
|
|
15
|
-
readonly maxTextureDimension1D?: number;
|
|
16
|
-
readonly maxTextureDimension2D?: number;
|
|
17
|
-
readonly maxTextureDimension3D?: number;
|
|
18
|
-
readonly maxTextureArrayLayers?: number;
|
|
19
|
-
readonly maxBindGroups: number;
|
|
20
|
-
readonly maxDynamicUniformBuffersPerPipelineLayout: number;
|
|
21
|
-
readonly maxDynamicStorageBuffersPerPipelineLayout: number;
|
|
22
|
-
readonly maxSampledTexturesPerShaderStage: number;
|
|
23
|
-
readonly maxSamplersPerShaderStage: number;
|
|
24
|
-
readonly maxStorageBuffersPerShaderStage: number;
|
|
25
|
-
readonly maxStorageTexturesPerShaderStage: number;
|
|
26
|
-
readonly maxUniformBuffersPerShaderStage: number;
|
|
27
|
-
readonly maxUniformBufferBindingSize: number;
|
|
28
|
-
readonly maxStorageBufferBindingSize?: number;
|
|
29
|
-
readonly minUniformBufferOffsetAlignment?: number;
|
|
30
|
-
readonly minStorageBufferOffsetAlignment?: number;
|
|
31
|
-
readonly maxVertexBuffers?: number;
|
|
32
|
-
readonly maxVertexAttributes?: number;
|
|
33
|
-
readonly maxVertexBufferArrayStride?: number;
|
|
34
|
-
readonly maxInterStageShaderComponents?: number;
|
|
35
|
-
readonly maxComputeWorkgroupStorageSize?: number;
|
|
36
|
-
readonly maxComputeInvocationsPerWorkgroup?: number;
|
|
37
|
-
readonly maxComputeWorkgroupSizeX?: number;
|
|
38
|
-
readonly maxComputeWorkgroupSizeY?: number;
|
|
39
|
-
readonly maxComputeWorkgroupSizeZ?: number;
|
|
40
|
-
readonly maxComputeWorkgroupsPerDimension?: number;
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* WebGPU Device/WebGL context abstraction
|
|
45
|
-
*/
|
|
46
|
-
export default abstract class Device {
|
|
47
|
-
private stats = new Map();
|
|
48
|
-
|
|
49
|
-
// readonly canvas: HTMLCanvasElement;
|
|
50
|
-
|
|
51
|
-
/** Check if this device type is supported on this platform */
|
|
52
|
-
// static isSupported(): boolean;
|
|
53
|
-
|
|
54
|
-
/** Create device of this type (asynchronous) */
|
|
55
|
-
// static async create(props?: object): Promise<Device>;
|
|
56
|
-
|
|
57
|
-
/** Attach to existing WebGPU device */
|
|
58
|
-
// static attach(device: WebGPUDevice, props?: object): Device;
|
|
59
|
-
|
|
60
|
-
/** Resize the context */
|
|
61
|
-
// resize(width: number, height: number): void;
|
|
62
|
-
abstract features: Set<string>;
|
|
63
|
-
abstract limits: DeviceLimits;
|
|
64
|
-
|
|
65
|
-
getStats(name: string): Stats {
|
|
66
|
-
if (!this.stats.has(name)) {
|
|
67
|
-
this.stats.set(name, new Stats({id: name}));
|
|
68
|
-
}
|
|
69
|
-
return this.stats.get(name);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
// luma.gl, MIT license
|
|
2
|
-
import {isOldIE} from '../webgl-utils/is-old-ie';
|
|
3
|
-
|
|
4
|
-
// Enables feature detection in IE11 due to a bug where gl.getExtension may return true
|
|
5
|
-
// but fail to compile when the extension is enabled in the shader. Specifically,
|
|
6
|
-
// the OES_standard_derivatives extension fails to compile in IE11 even though its included
|
|
7
|
-
// in the list of supported extensions.
|
|
8
|
-
// const compiledGLSLExtensions = {};
|
|
9
|
-
|
|
10
|
-
const compiledGLSLExtensions = {};
|
|
11
|
-
|
|
12
|
-
// Enables feature detection in IE11 due to a bug where gl.getExtension may return true
|
|
13
|
-
// but fail to compile when the extension is enabled in the shader. Specifically,
|
|
14
|
-
// the OES_standard_derivatives and WEBGL_draw_buffers extensions fails to compile in IE11 even though its included
|
|
15
|
-
// in the list of supported extensions.
|
|
16
|
-
// opts allows user agent to be overridden for testing
|
|
17
|
-
/*
|
|
18
|
-
* Inputs :
|
|
19
|
-
* gl : WebGL context
|
|
20
|
-
* cap : Key of WEBGL_FEATURES object identifying the extension
|
|
21
|
-
* opts :
|
|
22
|
-
* behavior : behavior of extension to be tested, by defualt `enable` is used
|
|
23
|
-
* Returns : true, if shader is compiled successfully, false otherwise
|
|
24
|
-
*/
|
|
25
|
-
export function canCompileGLSLExtension(gl: WebGLRenderingContext, extensionName, opts: {behavior?} = {}) {
|
|
26
|
-
if (!isOldIE(opts)) {
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
if (extensionName in compiledGLSLExtensions) {
|
|
31
|
-
return compiledGLSLExtensions[extensionName];
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const behavior = opts.behavior || 'enable';
|
|
35
|
-
const source = `#extension GL_${extensionName} : ${behavior}\nvoid main(void) {}`;
|
|
36
|
-
|
|
37
|
-
const shader = gl.createShader(gl.VERTEX_SHADER);
|
|
38
|
-
gl.shaderSource(shader, source);
|
|
39
|
-
gl.compileShader(shader);
|
|
40
|
-
const canCompile = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
|
|
41
|
-
gl.deleteShader(shader);
|
|
42
|
-
compiledGLSLExtensions[extensionName] = canCompile;
|
|
43
|
-
return canCompile;
|
|
44
|
-
}
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
// Feature detection for WebGL
|
|
2
|
-
//
|
|
3
|
-
// Provides a function that enables simple checking of which WebGL features are
|
|
4
|
-
// available in an WebGL1 or WebGL2 environment.
|
|
5
|
-
|
|
6
|
-
/* eslint-disable no-inline-comments, max-len */
|
|
7
|
-
import isOldIE from './is-old-ie';
|
|
8
|
-
import {assert} from './assert';
|
|
9
|
-
|
|
10
|
-
const GL_VENDOR = 0x1f00;
|
|
11
|
-
const GL_RENDERER = 0x1f01;
|
|
12
|
-
const GL_VERSION = 0x1f02;
|
|
13
|
-
const GL_SHADING_LANGUAGE_VERSION = 0x8b8c;
|
|
14
|
-
|
|
15
|
-
// Defines luma.gl "feature" names and semantics
|
|
16
|
-
const WEBGL_FEATURES = {
|
|
17
|
-
// GLSL extensions
|
|
18
|
-
GLSL_FRAG_DATA: ['WEBGL_draw_buffers', true], // TODO - name makes no sense in GLSL 3.00
|
|
19
|
-
GLSL_FRAG_DEPTH: ['EXT_frag_depth', true],
|
|
20
|
-
GLSL_DERIVATIVES: ['OES_standard_derivatives', true],
|
|
21
|
-
GLSL_TEXTURE_LOD: ['EXT_shader_texture_lod', true]
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
// Create a key-mirrored FEATURES array
|
|
25
|
-
export const FEATURES = {
|
|
26
|
-
GLSL_FRAG_DATA: 'GLSL_FRAG_DATA',
|
|
27
|
-
GLSL_FRAG_DEPTH: 'GLSL_FRAG_DEPTH',
|
|
28
|
-
GLSL_DERIVATIVES: 'GLSL_DERIVATIVES',
|
|
29
|
-
GLSL_TEXTURE_LOD: 'GLSL_TEXTURE_LOD',
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
function isWebGL2(gl) {
|
|
33
|
-
if (typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext) {
|
|
34
|
-
return true;
|
|
35
|
-
}
|
|
36
|
-
return Boolean(gl && gl._version === 2);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export function getContextInfo(gl) {
|
|
40
|
-
const info = gl.getExtension('WEBGL_debug_renderer_info');
|
|
41
|
-
const vendor = gl.getParameter((info && info.UNMASKED_VENDOR_WEBGL) || GL_VENDOR);
|
|
42
|
-
const renderer = gl.getParameter((info && info.UNMASKED_RENDERER_WEBGL) || GL_RENDERER);
|
|
43
|
-
const gpuVendor = identifyGPUVendor(vendor, renderer);
|
|
44
|
-
const gpuInfo = {
|
|
45
|
-
gpuVendor,
|
|
46
|
-
vendor,
|
|
47
|
-
renderer,
|
|
48
|
-
version: gl.getParameter(GL_VERSION),
|
|
49
|
-
shadingLanguageVersion: gl.getParameter(GL_SHADING_LANGUAGE_VERSION)
|
|
50
|
-
};
|
|
51
|
-
return gpuInfo;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
function identifyGPUVendor(vendor, renderer) {
|
|
55
|
-
if (vendor.match(/NVIDIA/i) || renderer.match(/NVIDIA/i)) {
|
|
56
|
-
return 'NVIDIA';
|
|
57
|
-
}
|
|
58
|
-
if (vendor.match(/INTEL/i) || renderer.match(/INTEL/i)) {
|
|
59
|
-
return 'INTEL';
|
|
60
|
-
}
|
|
61
|
-
if (vendor.match(/Apple/i) || renderer.match(/Apple/i)) {
|
|
62
|
-
return 'APPLE';
|
|
63
|
-
}
|
|
64
|
-
if (
|
|
65
|
-
vendor.match(/AMD/i) ||
|
|
66
|
-
renderer.match(/AMD/i) ||
|
|
67
|
-
vendor.match(/ATI/i) ||
|
|
68
|
-
renderer.match(/ATI/i)
|
|
69
|
-
) {
|
|
70
|
-
return 'AMD';
|
|
71
|
-
}
|
|
72
|
-
return 'UNKNOWN';
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
const compiledGlslExtensions = {};
|
|
76
|
-
|
|
77
|
-
// Enables feature detection in IE11 due to a bug where gl.getExtension may return true
|
|
78
|
-
// but fail to compile when the extension is enabled in the shader. Specifically,
|
|
79
|
-
// the OES_standard_derivatives and WEBGL_draw_buffers extensions fails to compile in IE11 even though its included
|
|
80
|
-
// in the list of supported extensions.
|
|
81
|
-
// opts allows user agent to be overridden for testing
|
|
82
|
-
/*
|
|
83
|
-
* Inputs :
|
|
84
|
-
* gl : WebGL context
|
|
85
|
-
* cap : Key of WEBGL_FEATURES object identifying the extension
|
|
86
|
-
* opts :
|
|
87
|
-
* behavior : behavior of extension to be tested, by defualt `enable` is used
|
|
88
|
-
* Returns : true, if shader is compiled successfully, false otherwise
|
|
89
|
-
*/
|
|
90
|
-
export function canCompileGLGSExtension(gl, cap, opts: {behavior?} = {}) {
|
|
91
|
-
const feature = WEBGL_FEATURES[cap];
|
|
92
|
-
assert(feature, cap);
|
|
93
|
-
|
|
94
|
-
if (!isOldIE(opts)) {
|
|
95
|
-
return true;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
if (cap in compiledGlslExtensions) {
|
|
99
|
-
return compiledGlslExtensions[cap];
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
const extensionName = feature[0];
|
|
103
|
-
const behavior = opts.behavior || 'enable';
|
|
104
|
-
const source = `#extension GL_${extensionName} : ${behavior}\nvoid main(void) {}`;
|
|
105
|
-
|
|
106
|
-
const shader = gl.createShader(gl.VERTEX_SHADER);
|
|
107
|
-
gl.shaderSource(shader, source);
|
|
108
|
-
gl.compileShader(shader);
|
|
109
|
-
const canCompile = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
|
|
110
|
-
gl.deleteShader(shader);
|
|
111
|
-
compiledGlslExtensions[cap] = canCompile;
|
|
112
|
-
return canCompile;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// TODO - cache the value
|
|
116
|
-
function getFeature(gl, cap) {
|
|
117
|
-
const feature = WEBGL_FEATURES[cap];
|
|
118
|
-
assert(feature, cap);
|
|
119
|
-
|
|
120
|
-
// Get extension name from table
|
|
121
|
-
const extensionName = isWebGL2(gl) ? feature[1] || feature[0] : feature[0];
|
|
122
|
-
|
|
123
|
-
// Check if the value is dependent on checking an extension
|
|
124
|
-
const value =
|
|
125
|
-
typeof extensionName === 'string' ? Boolean(gl.getExtension(extensionName)) : extensionName;
|
|
126
|
-
|
|
127
|
-
assert(value === false || value === true);
|
|
128
|
-
|
|
129
|
-
return value;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
export function hasFeatures(gl, features) {
|
|
133
|
-
features = Array.isArray(features) ? features : [features];
|
|
134
|
-
return features.every((feature) => getFeature(gl, feature));
|
|
135
|
-
}
|