@luma.gl/webgl 9.0.0-beta.5 → 9.0.0-beta.7
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.map +1 -1
- package/dist/adapter/converters/device-parameters.js +128 -71
- package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/sampler-parameters.js +20 -19
- package/dist/adapter/converters/shader-formats.d.ts.map +1 -1
- package/dist/adapter/converters/shader-formats.js +40 -20
- package/dist/adapter/converters/texture-formats.d.ts +16 -11
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
- package/dist/adapter/converters/texture-formats.js +224 -205
- package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
- package/dist/adapter/converters/vertex-formats.js +22 -21
- package/dist/adapter/device-helpers/webgl-device-features.d.ts +19 -5
- package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -1
- package/dist/adapter/device-helpers/webgl-device-features.js +89 -43
- package/dist/adapter/device-helpers/webgl-device-info.d.ts +2 -1
- package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -1
- package/dist/adapter/device-helpers/webgl-device-info.js +22 -19
- package/dist/adapter/device-helpers/webgl-device-limits.d.ts +33 -48
- package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -1
- package/dist/adapter/device-helpers/webgl-device-limits.js +42 -87
- package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -1
- package/dist/adapter/helpers/decode-webgl-types.js +47 -46
- package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.js +35 -34
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.js +3 -2
- package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
- package/dist/adapter/helpers/set-uniform.js +42 -41
- package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -1
- package/dist/adapter/helpers/webgl-topology-utils.js +40 -39
- package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
- package/dist/adapter/objects/constants-to-keys.js +2 -1
- package/dist/adapter/objects/webgl-renderbuffer.d.ts +2 -2
- package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js +30 -17
- package/dist/adapter/objects/webgl-resource.d.ts +2 -24
- package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-resource.js +6 -101
- package/dist/adapter/resources/webgl-buffer.d.ts +1 -1
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +16 -15
- package/dist/adapter/resources/webgl-command-buffer.d.ts +1 -1
- package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.js +32 -31
- package/dist/adapter/resources/webgl-command-encoder.d.ts +8 -3
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.js +4 -2
- package/dist/adapter/resources/webgl-external-texture.js +6 -5
- package/dist/adapter/resources/webgl-framebuffer.d.ts +6 -10
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +60 -53
- package/dist/adapter/resources/webgl-query-set.d.ts +44 -0
- package/dist/adapter/resources/webgl-query-set.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-query-set.js +136 -0
- package/dist/adapter/resources/webgl-render-pass.d.ts +3 -1
- package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.js +20 -12
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +4 -5
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +52 -61
- package/dist/adapter/resources/webgl-sampler.d.ts +1 -1
- package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-sampler.js +5 -4
- package/dist/adapter/resources/webgl-shader.d.ts +3 -2
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +15 -9
- package/dist/adapter/resources/webgl-texture-view.d.ts +14 -0
- package/dist/adapter/resources/webgl-texture-view.d.ts.map +1 -0
- package/dist/adapter/resources/webgl-texture-view.js +18 -0
- package/dist/adapter/resources/webgl-texture.d.ts +6 -4
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +39 -32
- package/dist/adapter/resources/webgl-transform-feedback.d.ts +1 -1
- package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-transform-feedback.js +10 -10
- package/dist/adapter/resources/webgl-vertex-array.d.ts +3 -3
- package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-vertex-array.js +10 -9
- package/dist/adapter/webgl-canvas-context.d.ts +2 -2
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
- package/dist/adapter/webgl-canvas-context.js +3 -2
- package/dist/adapter/webgl-device.d.ts +35 -30
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +110 -109
- package/dist/classic/accessor.d.ts.map +1 -1
- package/dist/classic/accessor.js +8 -7
- package/dist/classic/clear.d.ts.map +1 -1
- package/dist/classic/clear.js +5 -4
- package/dist/classic/copy-and-blit.d.ts +1 -1
- package/dist/classic/copy-and-blit.d.ts.map +1 -1
- package/dist/classic/copy-and-blit.js +19 -19
- package/dist/classic/format-utils.d.ts.map +1 -1
- package/dist/classic/format-utils.js +16 -15
- package/dist/classic/typed-array-utils.d.ts.map +1 -1
- package/dist/classic/typed-array-utils.js +20 -19
- package/dist/context/debug/spector.d.ts.map +1 -1
- package/dist/context/debug/spector.js +2 -1
- package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
- package/dist/context/debug/webgl-developer-tools.js +7 -6
- package/dist/context/{context → helpers}/create-browser-context.d.ts.map +1 -1
- package/dist/context/{context → helpers}/create-browser-context.js +2 -1
- package/dist/context/{context/context-data.d.ts → helpers/webgl-context-data.d.ts} +2 -3
- package/dist/context/helpers/webgl-context-data.d.ts.map +1 -0
- package/dist/context/helpers/webgl-context-data.js +21 -0
- package/dist/context/helpers/webgl-extensions.d.ts +4 -0
- package/dist/context/helpers/webgl-extensions.d.ts.map +1 -0
- package/dist/context/helpers/webgl-extensions.js +10 -0
- package/dist/context/parameters/unified-parameter-api.d.ts +3 -4
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js +7 -11
- package/dist/context/parameters/webgl-parameter-tables.d.ts +12 -13
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +302 -295
- package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
- package/dist/context/state-tracker/deep-array-equal.js +2 -1
- package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
- package/dist/context/state-tracker/track-context-state.js +5 -4
- package/dist/context/state-tracker/with-parameters.d.ts +2 -3
- package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
- package/dist/context/state-tracker/with-parameters.js +6 -8
- package/dist/dist.dev.js +1635 -1387
- package/dist/index.cjs +1766 -1534
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +25 -25
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -23
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -1
- package/dist.min.js +6 -6
- package/package.json +4 -4
- package/src/adapter/converters/device-parameters.ts +114 -27
- package/src/adapter/converters/sampler-parameters.ts +12 -3
- package/src/adapter/converters/shader-formats.ts +47 -22
- package/src/adapter/converters/texture-formats.ts +138 -114
- package/src/adapter/converters/vertex-formats.ts +3 -3
- package/src/adapter/device-helpers/webgl-device-features.ts +102 -50
- package/src/adapter/device-helpers/webgl-device-info.ts +28 -19
- package/src/adapter/device-helpers/webgl-device-limits.ts +46 -150
- package/src/adapter/helpers/decode-webgl-types.ts +13 -7
- package/src/adapter/helpers/get-shader-layout.ts +4 -3
- package/src/adapter/helpers/parse-shader-compiler-log.ts +10 -6
- package/src/adapter/helpers/set-uniform.ts +2 -1
- package/src/adapter/helpers/webgl-topology-utils.ts +10 -3
- package/src/adapter/objects/constants-to-keys.ts +2 -1
- package/src/adapter/objects/webgl-renderbuffer.ts +36 -14
- package/src/adapter/objects/webgl-resource.ts +7 -125
- package/src/adapter/resources/webgl-buffer.ts +4 -3
- package/src/adapter/resources/webgl-command-buffer.ts +5 -5
- package/src/adapter/resources/webgl-command-encoder.ts +14 -11
- package/src/adapter/resources/webgl-external-texture.ts +6 -5
- package/src/adapter/resources/webgl-framebuffer.ts +61 -53
- package/src/adapter/resources/webgl-query-set.ts +171 -0
- package/src/adapter/resources/webgl-render-pass.ts +20 -11
- package/src/adapter/resources/webgl-render-pipeline.ts +54 -54
- package/src/adapter/resources/webgl-sampler.ts +2 -1
- package/src/adapter/resources/webgl-shader.ts +12 -5
- package/src/adapter/resources/webgl-texture-view.ts +28 -0
- package/src/adapter/resources/webgl-texture.ts +14 -3
- package/src/adapter/resources/webgl-transform-feedback.ts +2 -7
- package/src/adapter/resources/webgl-vertex-array.ts +4 -3
- package/src/adapter/webgl-canvas-context.ts +6 -4
- package/src/adapter/webgl-device.ts +116 -107
- package/src/classic/accessor.ts +5 -4
- package/src/classic/clear.ts +14 -8
- package/src/classic/copy-and-blit.ts +11 -4
- package/src/classic/format-utils.ts +2 -1
- package/src/classic/typed-array-utils.ts +3 -7
- package/src/context/debug/spector.ts +9 -6
- package/src/context/debug/webgl-developer-tools.ts +27 -14
- package/src/context/{context → helpers}/create-browser-context.ts +3 -2
- package/src/context/helpers/webgl-context-data.ts +31 -0
- package/src/context/helpers/webgl-extensions.ts +17 -0
- package/src/context/parameters/unified-parameter-api.ts +6 -17
- package/src/context/parameters/webgl-parameter-tables.ts +69 -32
- package/src/context/state-tracker/deep-array-equal.ts +2 -1
- package/src/context/state-tracker/track-context-state.ts +11 -6
- package/src/context/state-tracker/with-parameters.ts +8 -8
- package/src/index.ts +7 -6
- package/src/types.ts +2 -1
- package/dist/adapter/device-helpers/device-features.d.ts +0 -6
- package/dist/adapter/device-helpers/device-features.d.ts.map +0 -1
- package/dist/adapter/device-helpers/device-features.js +0 -65
- package/dist/adapter/device-helpers/device-limits.d.ts +0 -50
- package/dist/adapter/device-helpers/device-limits.d.ts.map +0 -1
- package/dist/adapter/device-helpers/device-limits.js +0 -92
- package/dist/adapter/device-helpers/get-device-info.d.ts +0 -4
- package/dist/adapter/device-helpers/get-device-info.d.ts.map +0 -1
- package/dist/adapter/device-helpers/get-device-info.js +0 -87
- package/dist/context/context/context-data.d.ts.map +0 -1
- package/dist/context/context/context-data.js +0 -33
- package/src/context/context/context-data.ts +0 -44
- /package/dist/context/{context → helpers}/create-browser-context.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-parameters.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/device-parameters.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"device-parameters.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/device-parameters.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,MAAM,EACN,UAAU,EACV,eAAe,EAMhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AACtC,OAAO,KAAK,EAAmC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAOvF;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,GAAG,OAAO,EACnD,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,GAC3B,CAAC,CAgBH;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,OAAO,EAC1C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,YAAY,EACxB,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,GAC3B,CAAC,CAeH;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,GAAG,OAAO,EAC9C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,GAC3B,CAAC,CAgBH;AAED,kCAAkC;AAClC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,QAkMzE;AAyBD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,EAAE,CAWpF;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,eAAe,CAWtF"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
// luma.gl
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
2
3
|
// Copyright (c) vis.gl contributors
|
|
3
4
|
import { log, isObjectEmpty } from '@luma.gl/core';
|
|
4
5
|
import { GL } from '@luma.gl/constants';
|
|
5
|
-
import { pushContextState, popContextState } from
|
|
6
|
-
import { setGLParameters } from
|
|
7
|
-
import { WebGLDevice } from '../webgl-device';
|
|
6
|
+
import { pushContextState, popContextState } from "../../context/state-tracker/track-context-state.js";
|
|
7
|
+
import { setGLParameters } from "../../context/parameters/unified-parameter-api.js";
|
|
8
8
|
/* eslint-disable no-unused-expressions */ // For expression ? gl.enable() : gl.disable()
|
|
9
9
|
/**
|
|
10
10
|
* Execute a function with a set of temporary WebGL parameter overrides
|
|
@@ -20,16 +20,15 @@ export function withDeviceAndGLParameters(device, parameters, glParameters, func
|
|
|
20
20
|
return func(device);
|
|
21
21
|
}
|
|
22
22
|
// Wrap in a try-catch to ensure that parameters are restored on exceptions
|
|
23
|
-
|
|
24
|
-
pushContextState(
|
|
23
|
+
const webglDevice = device;
|
|
24
|
+
pushContextState(webglDevice.gl);
|
|
25
25
|
try {
|
|
26
26
|
setDeviceParameters(device, parameters);
|
|
27
|
-
setGLParameters(
|
|
27
|
+
setGLParameters(webglDevice.gl, glParameters);
|
|
28
28
|
return func(device);
|
|
29
29
|
}
|
|
30
30
|
finally {
|
|
31
|
-
|
|
32
|
-
popContextState(device.gl);
|
|
31
|
+
popContextState(webglDevice.gl);
|
|
33
32
|
}
|
|
34
33
|
}
|
|
35
34
|
/**
|
|
@@ -47,15 +46,14 @@ export function withGLParameters(device, parameters, func) {
|
|
|
47
46
|
return func(device);
|
|
48
47
|
}
|
|
49
48
|
// Wrap in a try-catch to ensure that parameters are restored on exceptions
|
|
50
|
-
|
|
51
|
-
pushContextState(
|
|
49
|
+
const webglDevice = device;
|
|
50
|
+
pushContextState(webglDevice.gl);
|
|
52
51
|
try {
|
|
53
|
-
setGLParameters(
|
|
52
|
+
setGLParameters(webglDevice.gl, parameters);
|
|
54
53
|
return func(device);
|
|
55
54
|
}
|
|
56
55
|
finally {
|
|
57
|
-
|
|
58
|
-
popContextState(device.gl);
|
|
56
|
+
popContextState(webglDevice.gl);
|
|
59
57
|
}
|
|
60
58
|
}
|
|
61
59
|
/**
|
|
@@ -85,48 +83,107 @@ export function withDeviceParameters(device, parameters, func) {
|
|
|
85
83
|
}
|
|
86
84
|
/** Set WebGPU Style Parameters */
|
|
87
85
|
export function setDeviceParameters(device, parameters) {
|
|
88
|
-
const webglDevice =
|
|
86
|
+
const webglDevice = device;
|
|
89
87
|
const { gl } = webglDevice;
|
|
90
88
|
// RASTERIZATION SETTINGS
|
|
91
89
|
if (parameters.cullMode) {
|
|
92
90
|
switch (parameters.cullMode) {
|
|
93
91
|
case 'none':
|
|
94
|
-
gl.disable(
|
|
92
|
+
gl.disable(2884);
|
|
95
93
|
break;
|
|
96
94
|
case 'front':
|
|
97
|
-
gl.enable(
|
|
98
|
-
gl.cullFace(
|
|
95
|
+
gl.enable(2884);
|
|
96
|
+
gl.cullFace(1028);
|
|
99
97
|
break;
|
|
100
98
|
case 'back':
|
|
101
|
-
gl.enable(
|
|
102
|
-
gl.cullFace(
|
|
99
|
+
gl.enable(2884);
|
|
100
|
+
gl.cullFace(1029);
|
|
103
101
|
break;
|
|
104
102
|
}
|
|
105
103
|
}
|
|
106
104
|
if (parameters.frontFace) {
|
|
107
105
|
gl.frontFace(map('frontFace', parameters.frontFace, {
|
|
108
|
-
ccw:
|
|
109
|
-
cw:
|
|
106
|
+
ccw: 2305,
|
|
107
|
+
cw: 2304
|
|
110
108
|
}));
|
|
111
109
|
}
|
|
110
|
+
if (parameters.unclippedDepth) {
|
|
111
|
+
if (device.features.has('depth-clip-control')) {
|
|
112
|
+
// EXT_depth_clamp
|
|
113
|
+
gl.enable(34383);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
112
116
|
if (parameters.depthBias !== undefined) {
|
|
113
117
|
gl.polygonOffset(parameters.depthBias, parameters.depthBiasSlopeScale || 0);
|
|
114
118
|
}
|
|
115
119
|
// depthBiasSlopeScale: {
|
|
116
120
|
// // Handled by depthBias
|
|
117
121
|
// },
|
|
122
|
+
// WEBGL EXTENSIONS
|
|
123
|
+
if (device.features.has('provoking-vertex-webgl')) {
|
|
124
|
+
const extensions = webglDevice.getExtension('WEBGL_provoking_vertex');
|
|
125
|
+
const ext = extensions.WEBGL_provoking_vertex;
|
|
126
|
+
if (parameters.provokingVertex) {
|
|
127
|
+
const vertex = map('provokingVertex', parameters.provokingVertex, {
|
|
128
|
+
first: 36429,
|
|
129
|
+
last: 36430
|
|
130
|
+
});
|
|
131
|
+
ext?.provokingVertexWEBGL(vertex);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (device.features.has('polygon-mode-webgl')) {
|
|
135
|
+
const extensions = webglDevice.getExtension('WEBGL_polygon_mode');
|
|
136
|
+
const ext = extensions.WEBGL_polygon_mode;
|
|
137
|
+
if (parameters.polygonMode) {
|
|
138
|
+
const mode = map('polygonMode', parameters.provokingVertex, {
|
|
139
|
+
fill: 6914,
|
|
140
|
+
lint: 6913
|
|
141
|
+
});
|
|
142
|
+
ext?.polygonModeWEBGL(1028, mode);
|
|
143
|
+
ext?.polygonModeWEBGL(1029, mode);
|
|
144
|
+
}
|
|
145
|
+
if (parameters.polygonOffsetLine) {
|
|
146
|
+
gl.enable(10754);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (device.features.has('shader-clip-cull-distance-webgl')) {
|
|
150
|
+
if (parameters.clipDistance0) {
|
|
151
|
+
gl.enable(12288);
|
|
152
|
+
}
|
|
153
|
+
if (parameters.clipDistance1) {
|
|
154
|
+
gl.enable(12289);
|
|
155
|
+
}
|
|
156
|
+
if (parameters.clipDistance2) {
|
|
157
|
+
gl.enable(12290);
|
|
158
|
+
}
|
|
159
|
+
if (parameters.clipDistance3) {
|
|
160
|
+
gl.enable(12291);
|
|
161
|
+
}
|
|
162
|
+
if (parameters.clipDistance4) {
|
|
163
|
+
gl.enable(12292);
|
|
164
|
+
}
|
|
165
|
+
if (parameters.clipDistance5) {
|
|
166
|
+
gl.enable(12293);
|
|
167
|
+
}
|
|
168
|
+
if (parameters.clipDistance6) {
|
|
169
|
+
gl.enable(12294);
|
|
170
|
+
}
|
|
171
|
+
if (parameters.clipDistance7) {
|
|
172
|
+
gl.enable(12295);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
118
175
|
// DEPTH STENCIL
|
|
119
176
|
if (parameters.depthWriteEnabled !== undefined) {
|
|
120
177
|
gl.depthMask(mapBoolean('depthWriteEnabled', parameters.depthWriteEnabled));
|
|
121
178
|
}
|
|
122
179
|
if (parameters.depthCompare) {
|
|
123
|
-
parameters.depthCompare !== 'always' ? gl.enable(
|
|
180
|
+
parameters.depthCompare !== 'always' ? gl.enable(2929) : gl.disable(2929);
|
|
124
181
|
gl.depthFunc(convertCompareFunction('depthCompare', parameters.depthCompare));
|
|
125
182
|
}
|
|
126
183
|
if (parameters.stencilWriteMask) {
|
|
127
184
|
const mask = parameters.stencilWriteMask;
|
|
128
|
-
gl.stencilMaskSeparate(
|
|
129
|
-
gl.stencilMaskSeparate(
|
|
185
|
+
gl.stencilMaskSeparate(1028, mask);
|
|
186
|
+
gl.stencilMaskSeparate(1029, mask);
|
|
130
187
|
}
|
|
131
188
|
if (parameters.stencilReadMask) {
|
|
132
189
|
// stencilReadMask is handle inside stencil***Compare.
|
|
@@ -137,10 +194,10 @@ export function setDeviceParameters(device, parameters) {
|
|
|
137
194
|
const glValue = convertCompareFunction('depthCompare', parameters.stencilCompare);
|
|
138
195
|
// TODO - ensure back doesn't overwrite
|
|
139
196
|
parameters.stencilCompare !== 'always'
|
|
140
|
-
? gl.enable(
|
|
141
|
-
: gl.disable(
|
|
142
|
-
gl.stencilFuncSeparate(
|
|
143
|
-
gl.stencilFuncSeparate(
|
|
197
|
+
? gl.enable(2960)
|
|
198
|
+
: gl.disable(2960);
|
|
199
|
+
gl.stencilFuncSeparate(1028, glValue, 0, mask);
|
|
200
|
+
gl.stencilFuncSeparate(1029, glValue, 0, mask);
|
|
144
201
|
}
|
|
145
202
|
if (parameters.stencilPassOperation &&
|
|
146
203
|
parameters.stencilFailOperation &&
|
|
@@ -148,8 +205,8 @@ export function setDeviceParameters(device, parameters) {
|
|
|
148
205
|
const dppass = convertStencilOperation('stencilPassOperation', parameters.stencilPassOperation);
|
|
149
206
|
const sfail = convertStencilOperation('stencilFailOperation', parameters.stencilFailOperation);
|
|
150
207
|
const dpfail = convertStencilOperation('stencilDepthFailOperation', parameters.stencilDepthFailOperation);
|
|
151
|
-
gl.stencilOpSeparate(
|
|
152
|
-
gl.stencilOpSeparate(
|
|
208
|
+
gl.stencilOpSeparate(1028, sfail, dpfail, dppass);
|
|
209
|
+
gl.stencilOpSeparate(1029, sfail, dpfail, dppass);
|
|
153
210
|
}
|
|
154
211
|
// stencilDepthFailOperation() {
|
|
155
212
|
// // handled by stencilPassOperation
|
|
@@ -159,7 +216,7 @@ export function setDeviceParameters(device, parameters) {
|
|
|
159
216
|
// },
|
|
160
217
|
// COLOR STATE
|
|
161
218
|
if (parameters.blendColorOperation || parameters.blendAlphaOperation) {
|
|
162
|
-
gl.enable(
|
|
219
|
+
gl.enable(3042);
|
|
163
220
|
const colorEquation = convertBlendOperationToEquation('blendColorOperation', parameters.blendColorOperation || 'add');
|
|
164
221
|
const alphaEquation = convertBlendOperationToEquation('blendAlphaOperation', parameters.blendAlphaOperation || 'add');
|
|
165
222
|
gl.blendEquationSeparate(colorEquation, alphaEquation);
|
|
@@ -194,61 +251,61 @@ export function setDeviceParameters(device, parameters) {
|
|
|
194
251
|
*/
|
|
195
252
|
export function convertCompareFunction(parameter, value) {
|
|
196
253
|
return map(parameter, value, {
|
|
197
|
-
never:
|
|
198
|
-
less:
|
|
199
|
-
equal:
|
|
200
|
-
'less-equal':
|
|
201
|
-
greater:
|
|
202
|
-
'not-equal':
|
|
203
|
-
'greater-equal':
|
|
204
|
-
always:
|
|
254
|
+
never: 512,
|
|
255
|
+
less: 513,
|
|
256
|
+
equal: 514,
|
|
257
|
+
'less-equal': 515,
|
|
258
|
+
greater: 516,
|
|
259
|
+
'not-equal': 517,
|
|
260
|
+
'greater-equal': 518,
|
|
261
|
+
always: 519
|
|
205
262
|
});
|
|
206
263
|
}
|
|
207
264
|
export function convertToCompareFunction(parameter, value) {
|
|
208
265
|
return map(parameter, value, {
|
|
209
|
-
[
|
|
210
|
-
[
|
|
211
|
-
[
|
|
212
|
-
[
|
|
213
|
-
[
|
|
214
|
-
[
|
|
215
|
-
[
|
|
216
|
-
[
|
|
266
|
+
[512]: 'never',
|
|
267
|
+
[513]: 'less',
|
|
268
|
+
[514]: 'equal',
|
|
269
|
+
[515]: 'less-equal',
|
|
270
|
+
[516]: 'greater',
|
|
271
|
+
[517]: 'not-equal',
|
|
272
|
+
[518]: 'greater-equal',
|
|
273
|
+
[519]: 'always'
|
|
217
274
|
});
|
|
218
275
|
}
|
|
219
276
|
function convertStencilOperation(parameter, value) {
|
|
220
277
|
return map(parameter, value, {
|
|
221
|
-
keep:
|
|
222
|
-
zero:
|
|
223
|
-
replace:
|
|
224
|
-
invert:
|
|
225
|
-
'increment-clamp':
|
|
226
|
-
'decrement-clamp':
|
|
227
|
-
'increment-wrap':
|
|
228
|
-
'decrement-wrap':
|
|
278
|
+
keep: 7680,
|
|
279
|
+
zero: 0,
|
|
280
|
+
replace: 7681,
|
|
281
|
+
invert: 5386,
|
|
282
|
+
'increment-clamp': 7682,
|
|
283
|
+
'decrement-clamp': 7683,
|
|
284
|
+
'increment-wrap': 34055,
|
|
285
|
+
'decrement-wrap': 34056
|
|
229
286
|
});
|
|
230
287
|
}
|
|
231
288
|
function convertBlendOperationToEquation(parameter, value) {
|
|
232
289
|
return map(parameter, value, {
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
'reverse-subtract':
|
|
236
|
-
|
|
237
|
-
|
|
290
|
+
add: 32774,
|
|
291
|
+
subtract: 32778,
|
|
292
|
+
'reverse-subtract': 32779,
|
|
293
|
+
min: 32775,
|
|
294
|
+
max: 32776
|
|
238
295
|
});
|
|
239
296
|
}
|
|
240
297
|
function convertBlendFactorToFunction(parameter, value) {
|
|
241
298
|
return map(parameter, value, {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
'src-color':
|
|
245
|
-
'one-minus-src-color':
|
|
246
|
-
'dst-color':
|
|
247
|
-
'one-minus-dst-color':
|
|
248
|
-
'src-alpha':
|
|
249
|
-
'one-minus-src-alpha':
|
|
250
|
-
'dst-alpha':
|
|
251
|
-
'one-minus-dst-alpha':
|
|
299
|
+
one: 1,
|
|
300
|
+
zero: 0,
|
|
301
|
+
'src-color': 768,
|
|
302
|
+
'one-minus-src-color': 769,
|
|
303
|
+
'dst-color': 774,
|
|
304
|
+
'one-minus-dst-color': 775,
|
|
305
|
+
'src-alpha': 770,
|
|
306
|
+
'one-minus-src-alpha': 771,
|
|
307
|
+
'dst-alpha': 772,
|
|
308
|
+
'one-minus-dst-alpha': 773
|
|
252
309
|
});
|
|
253
310
|
}
|
|
254
311
|
function message(parameter, value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sampler-parameters.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/sampler-parameters.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sampler-parameters.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/sampler-parameters.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAK,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AAG3D;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,YAAY,GAAG,mBAAmB,CAuCxF"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
// luma.gl
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
2
3
|
// Copyright (c) vis.gl contributors
|
|
3
4
|
import { GL } from '@luma.gl/constants';
|
|
4
|
-
import { convertCompareFunction } from
|
|
5
|
+
import { convertCompareFunction } from "./device-parameters.js";
|
|
5
6
|
/**
|
|
6
7
|
* Convert WebGPU-style sampler props to WebGL
|
|
7
8
|
* @param props
|
|
@@ -10,37 +11,37 @@ import { convertCompareFunction } from './device-parameters';
|
|
|
10
11
|
export function convertSamplerParametersToWebGL(props) {
|
|
11
12
|
const params = {};
|
|
12
13
|
if (props.addressModeU) {
|
|
13
|
-
params[
|
|
14
|
+
params[10242] = convertAddressMode(props.addressModeU);
|
|
14
15
|
}
|
|
15
16
|
if (props.addressModeV) {
|
|
16
|
-
params[
|
|
17
|
+
params[10243] = convertAddressMode(props.addressModeV);
|
|
17
18
|
}
|
|
18
19
|
if (props.addressModeW) {
|
|
19
|
-
params[
|
|
20
|
+
params[32882] = convertAddressMode(props.addressModeW);
|
|
20
21
|
}
|
|
21
22
|
if (props.magFilter) {
|
|
22
|
-
params[
|
|
23
|
+
params[10240] = convertMaxFilterMode(props.magFilter);
|
|
23
24
|
}
|
|
24
25
|
if (props.minFilter || props.mipmapFilter) {
|
|
25
26
|
// TODO - arbitrary choice of linear?
|
|
26
|
-
params[
|
|
27
|
+
params[10241] = convertMinFilterMode(props.minFilter || 'linear', props.mipmapFilter);
|
|
27
28
|
}
|
|
28
29
|
if (props.lodMinClamp !== undefined) {
|
|
29
|
-
params[
|
|
30
|
+
params[33082] = props.lodMinClamp;
|
|
30
31
|
}
|
|
31
32
|
if (props.lodMaxClamp !== undefined) {
|
|
32
|
-
params[
|
|
33
|
+
params[33083] = props.lodMaxClamp;
|
|
33
34
|
}
|
|
34
35
|
if (props.type === 'comparison-sampler') {
|
|
35
36
|
// Setting prop.compare turns this into a comparison sampler
|
|
36
|
-
params[
|
|
37
|
+
params[34892] = 34894;
|
|
37
38
|
}
|
|
38
39
|
if (props.compare) {
|
|
39
|
-
params[
|
|
40
|
+
params[34893] = convertCompareFunction('compare', props.compare);
|
|
40
41
|
}
|
|
41
42
|
// Note depends on WebGL extension
|
|
42
43
|
if (props.maxAnisotropy) {
|
|
43
|
-
params[
|
|
44
|
+
params[34046] = props.maxAnisotropy;
|
|
44
45
|
}
|
|
45
46
|
return params;
|
|
46
47
|
}
|
|
@@ -49,19 +50,19 @@ export function convertSamplerParametersToWebGL(props) {
|
|
|
49
50
|
function convertAddressMode(addressMode) {
|
|
50
51
|
switch (addressMode) {
|
|
51
52
|
case 'clamp-to-edge':
|
|
52
|
-
return
|
|
53
|
+
return 33071;
|
|
53
54
|
case 'repeat':
|
|
54
|
-
return
|
|
55
|
+
return 10497;
|
|
55
56
|
case 'mirror-repeat':
|
|
56
|
-
return
|
|
57
|
+
return 33648;
|
|
57
58
|
}
|
|
58
59
|
}
|
|
59
60
|
function convertMaxFilterMode(maxFilter) {
|
|
60
61
|
switch (maxFilter) {
|
|
61
62
|
case 'nearest':
|
|
62
|
-
return
|
|
63
|
+
return 9728;
|
|
63
64
|
case 'linear':
|
|
64
|
-
return
|
|
65
|
+
return 9729;
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
68
|
/**
|
|
@@ -74,8 +75,8 @@ function convertMinFilterMode(minFilter, mipmapFilter) {
|
|
|
74
75
|
}
|
|
75
76
|
switch (minFilter) {
|
|
76
77
|
case 'nearest':
|
|
77
|
-
return mipmapFilter === 'nearest' ?
|
|
78
|
+
return mipmapFilter === 'nearest' ? 9984 : 9986;
|
|
78
79
|
case 'linear':
|
|
79
|
-
return mipmapFilter === 'nearest' ?
|
|
80
|
+
return mipmapFilter === 'nearest' ? 9985 : 9987;
|
|
80
81
|
}
|
|
81
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader-formats.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/shader-formats.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shader-formats.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/shader-formats.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,EAAE,EAAC,MAAM,oBAAoB,CAAC;AACtC,OAAO,EAAC,mBAAmB,EAAE,cAAc,EAAC,MAAM,eAAe,CAAC;AAElE,kDAAkD;AAClD,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,EAAE,EACR,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GACxB,mBAAmB,CAcrB;AAED,6CAA6C;AAC7C,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,EAAE,GAAG,cAAc,CAqBhE;AAED,2CAA2C;AAC3C,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,cAAc,GACnB,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,UAAU,CAcrD"}
|
|
@@ -1,39 +1,59 @@
|
|
|
1
|
-
// luma.gl
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
2
3
|
// Copyright (c) vis.gl contributors
|
|
3
4
|
import { GL } from '@luma.gl/constants';
|
|
4
5
|
/** Get shader attribute type from GL constants */
|
|
5
6
|
export function getShaderAttributeTypeFromGL(type, components) {
|
|
6
7
|
const dataType = getShaderDataTypeFromGL(type);
|
|
7
8
|
switch (components) {
|
|
8
|
-
case 1:
|
|
9
|
-
|
|
10
|
-
case
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
case 1:
|
|
10
|
+
return dataType;
|
|
11
|
+
case 2:
|
|
12
|
+
return `vec2<${dataType}>`;
|
|
13
|
+
case 3:
|
|
14
|
+
return `vec2<${dataType}>`;
|
|
15
|
+
case 4:
|
|
16
|
+
return `vec2<${dataType}>`;
|
|
17
|
+
default:
|
|
18
|
+
throw new Error(String(components));
|
|
13
19
|
}
|
|
14
20
|
}
|
|
15
21
|
/** Get shader data type from GL constants */
|
|
16
22
|
export function getShaderDataTypeFromGL(type) {
|
|
17
23
|
switch (type) {
|
|
18
|
-
case
|
|
19
|
-
|
|
20
|
-
case
|
|
21
|
-
|
|
22
|
-
case
|
|
23
|
-
|
|
24
|
-
case
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
case 5124:
|
|
25
|
+
return 'i32';
|
|
26
|
+
case 5125:
|
|
27
|
+
return 'u32';
|
|
28
|
+
case 5122:
|
|
29
|
+
return 'i32';
|
|
30
|
+
case 5123:
|
|
31
|
+
return 'u32';
|
|
32
|
+
case 5120:
|
|
33
|
+
return 'i32';
|
|
34
|
+
case 5121:
|
|
35
|
+
return 'u32';
|
|
36
|
+
case 5126:
|
|
37
|
+
return 'f32';
|
|
38
|
+
case 5131:
|
|
39
|
+
return 'f16';
|
|
40
|
+
default:
|
|
41
|
+
throw new Error(String(type));
|
|
27
42
|
}
|
|
28
43
|
}
|
|
29
44
|
/** GetGL constant from shader data type */
|
|
30
45
|
export function getGLFromShaderDataType(type) {
|
|
31
46
|
switch (type) {
|
|
32
47
|
// TODO
|
|
33
|
-
case 'i32':
|
|
34
|
-
|
|
35
|
-
case '
|
|
36
|
-
|
|
37
|
-
|
|
48
|
+
case 'i32':
|
|
49
|
+
return 5124;
|
|
50
|
+
case 'u32':
|
|
51
|
+
return 5125;
|
|
52
|
+
case 'f32':
|
|
53
|
+
return 5126;
|
|
54
|
+
case 'f16':
|
|
55
|
+
return 5131;
|
|
56
|
+
default:
|
|
57
|
+
throw new Error(String(type));
|
|
38
58
|
}
|
|
39
59
|
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import type { TextureFormat, DeviceFeature } from '@luma.gl/core';
|
|
2
|
-
import { GL } from '@luma.gl/constants';
|
|
2
|
+
import { GL, GLExtensions } from '@luma.gl/constants';
|
|
3
|
+
export declare const TEXTURE_FEATURES: Partial<Record<DeviceFeature, string[]>>;
|
|
3
4
|
/** Return a list of texture feature strings (for Device.features). Mainly compressed texture support */
|
|
4
|
-
export declare function
|
|
5
|
+
export declare function isTextureFeature(feature: DeviceFeature): boolean;
|
|
6
|
+
/** Checks a texture feature (for Device.features). Mainly compressed texture support */
|
|
7
|
+
export declare function checkTextureFeature(gl: WebGL2RenderingContext, feature: DeviceFeature, extensions: GLExtensions): boolean;
|
|
5
8
|
/** Map a format to webgl and constants */
|
|
6
9
|
type Format = {
|
|
7
10
|
gl?: GL;
|
|
@@ -30,7 +33,8 @@ type Format = {
|
|
|
30
33
|
attachment?: GL.DEPTH_ATTACHMENT | GL.STENCIL_ATTACHMENT | GL.DEPTH_STENCIL_ATTACHMENT;
|
|
31
34
|
/** if depthTexture is set this is a depth/stencil format that can be set to a texture */
|
|
32
35
|
depthTexture?: boolean;
|
|
33
|
-
|
|
36
|
+
/** @deprecated can this format be used with renderbuffers */
|
|
37
|
+
rb?: boolean;
|
|
34
38
|
};
|
|
35
39
|
/**
|
|
36
40
|
* Texture format data -
|
|
@@ -38,8 +42,8 @@ type Format = {
|
|
|
38
42
|
*/
|
|
39
43
|
export declare const TEXTURE_FORMATS: Record<TextureFormat, Format>;
|
|
40
44
|
/** Checks if a texture format is supported */
|
|
41
|
-
export declare function isTextureFormatSupported(gl: WebGL2RenderingContext,
|
|
42
|
-
export declare function isRenderbufferFormatSupported(gl: WebGL2RenderingContext, format: TextureFormat): boolean;
|
|
45
|
+
export declare function isTextureFormatSupported(gl: WebGL2RenderingContext, format: TextureFormat, extensions: GLExtensions): boolean;
|
|
46
|
+
export declare function isRenderbufferFormatSupported(gl: WebGL2RenderingContext, format: TextureFormat, extensions: GLExtensions): boolean;
|
|
43
47
|
/**
|
|
44
48
|
* Map WebGL texture formats (GL constants) to WebGPU-style TextureFormat strings
|
|
45
49
|
*/
|
|
@@ -49,7 +53,7 @@ export declare function convertGLToTextureFormat(format: GL | TextureFormat): Te
|
|
|
49
53
|
*/
|
|
50
54
|
export declare function convertTextureFormatToGL(format: TextureFormat): GL | undefined;
|
|
51
55
|
/** Checks if a texture format is supported */
|
|
52
|
-
export declare function getTextureFormatSupport(gl: WebGL2RenderingContext,
|
|
56
|
+
export declare function getTextureFormatSupport(gl: WebGL2RenderingContext, format: TextureFormat, extensions: GLExtensions): {
|
|
53
57
|
supported: boolean;
|
|
54
58
|
filterable?: boolean;
|
|
55
59
|
renderable?: boolean;
|
|
@@ -57,16 +61,17 @@ export declare function getTextureFormatSupport(gl: WebGL2RenderingContext, form
|
|
|
57
61
|
storable?: boolean;
|
|
58
62
|
};
|
|
59
63
|
/** Checks whether linear filtering (interpolated sampling) is available for floating point textures */
|
|
60
|
-
export declare function isTextureFormatFilterable(gl: WebGL2RenderingContext,
|
|
61
|
-
export declare function isTextureFormatRenderable(gl: WebGL2RenderingContext,
|
|
62
|
-
|
|
64
|
+
export declare function isTextureFormatFilterable(gl: WebGL2RenderingContext, format: TextureFormat, extensions: GLExtensions): boolean;
|
|
65
|
+
export declare function isTextureFormatRenderable(gl: WebGL2RenderingContext, format: TextureFormat, extensions: GLExtensions): boolean;
|
|
66
|
+
/** Get parameters necessary to work with format in WebGL: internalFormat, dataFormat, type, compressed, */
|
|
67
|
+
export declare function getWebGLTextureParameters(format: TextureFormat): {
|
|
63
68
|
format: GL;
|
|
64
69
|
dataFormat: GL;
|
|
65
|
-
type:
|
|
70
|
+
type: number;
|
|
66
71
|
compressed: any;
|
|
67
72
|
};
|
|
68
73
|
export declare function getDepthStencilAttachmentWebGL(format: TextureFormat): GL.DEPTH_ATTACHMENT | GL.STENCIL_ATTACHMENT | GL.DEPTH_STENCIL_ATTACHMENT;
|
|
69
74
|
/** TODO - VERY roundabout legacy way of calculating bytes per pixel */
|
|
70
|
-
export declare function getTextureFormatBytesPerPixel(
|
|
75
|
+
export declare function getTextureFormatBytesPerPixel(format: TextureFormat): number;
|
|
71
76
|
export {};
|
|
72
77
|
//# sourceMappingURL=texture-formats.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"texture-formats.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/texture-formats.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"texture-formats.d.ts","sourceRoot":"","sources":["../../../src/adapter/converters/texture-formats.ts"],"names":[],"mappings":"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"}
|