@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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@luma.gl/webgl",
|
|
3
|
-
"version": "9.0.0-beta.
|
|
3
|
+
"version": "9.0.0-beta.7",
|
|
4
4
|
"description": "WebGL2 adapter for the luma.gl core API",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -43,9 +43,9 @@
|
|
|
43
43
|
"@luma.gl/constants": "^9.0.0-beta.4"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@luma.gl/constants": "9.0.0-beta.
|
|
47
|
-
"@luma.gl/core": "9.0.0-beta.
|
|
46
|
+
"@luma.gl/constants": "9.0.0-beta.7",
|
|
47
|
+
"@luma.gl/core": "9.0.0-beta.7",
|
|
48
48
|
"@probe.gl/env": "^4.0.2"
|
|
49
49
|
},
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "e9606a88e0aab3dc27c87020cac89040ea1a8a02"
|
|
51
51
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
// luma.gl
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
2
3
|
// Copyright (c) vis.gl contributors
|
|
3
4
|
|
|
4
5
|
import {
|
|
@@ -28,7 +29,7 @@ import {WebGLDevice} from '../webgl-device';
|
|
|
28
29
|
* - Returns the return value of the supplied function
|
|
29
30
|
*/
|
|
30
31
|
export function withDeviceAndGLParameters<T = unknown>(
|
|
31
|
-
device: Device,
|
|
32
|
+
device: Device,
|
|
32
33
|
parameters: Parameters,
|
|
33
34
|
glParameters: GLParameters,
|
|
34
35
|
func: (device?: Device) => T
|
|
@@ -39,15 +40,14 @@ export function withDeviceAndGLParameters<T = unknown>(
|
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
// Wrap in a try-catch to ensure that parameters are restored on exceptions
|
|
42
|
-
|
|
43
|
-
pushContextState(
|
|
43
|
+
const webglDevice = device as WebGLDevice;
|
|
44
|
+
pushContextState(webglDevice.gl);
|
|
44
45
|
try {
|
|
45
46
|
setDeviceParameters(device, parameters);
|
|
46
|
-
setGLParameters(
|
|
47
|
+
setGLParameters(webglDevice.gl, glParameters);
|
|
47
48
|
return func(device);
|
|
48
49
|
} finally {
|
|
49
|
-
|
|
50
|
-
popContextState(device.gl);
|
|
50
|
+
popContextState(webglDevice.gl);
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
|
|
@@ -71,14 +71,13 @@ export function withGLParameters<T = unknown>(
|
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
// Wrap in a try-catch to ensure that parameters are restored on exceptions
|
|
74
|
-
|
|
75
|
-
pushContextState(
|
|
74
|
+
const webglDevice = device as WebGLDevice;
|
|
75
|
+
pushContextState(webglDevice.gl);
|
|
76
76
|
try {
|
|
77
|
-
setGLParameters(
|
|
77
|
+
setGLParameters(webglDevice.gl, parameters);
|
|
78
78
|
return func(device);
|
|
79
79
|
} finally {
|
|
80
|
-
|
|
81
|
-
popContextState(device.gl);
|
|
80
|
+
popContextState(webglDevice.gl);
|
|
82
81
|
}
|
|
83
82
|
}
|
|
84
83
|
|
|
@@ -114,7 +113,7 @@ export function withDeviceParameters<T = unknown>(
|
|
|
114
113
|
|
|
115
114
|
/** Set WebGPU Style Parameters */
|
|
116
115
|
export function setDeviceParameters(device: Device, parameters: Parameters) {
|
|
117
|
-
const webglDevice = WebGLDevice
|
|
116
|
+
const webglDevice = device as WebGLDevice;
|
|
118
117
|
const {gl} = webglDevice;
|
|
119
118
|
|
|
120
119
|
// RASTERIZATION SETTINGS
|
|
@@ -143,6 +142,13 @@ export function setDeviceParameters(device: Device, parameters: Parameters) {
|
|
|
143
142
|
);
|
|
144
143
|
}
|
|
145
144
|
|
|
145
|
+
if (parameters.unclippedDepth) {
|
|
146
|
+
if (device.features.has('depth-clip-control')) {
|
|
147
|
+
// EXT_depth_clamp
|
|
148
|
+
gl.enable(GL.DEPTH_CLAMP_EXT);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
146
152
|
if (parameters.depthBias !== undefined) {
|
|
147
153
|
gl.polygonOffset(parameters.depthBias, parameters.depthBiasSlopeScale || 0);
|
|
148
154
|
}
|
|
@@ -151,6 +157,66 @@ export function setDeviceParameters(device: Device, parameters: Parameters) {
|
|
|
151
157
|
// // Handled by depthBias
|
|
152
158
|
// },
|
|
153
159
|
|
|
160
|
+
// WEBGL EXTENSIONS
|
|
161
|
+
|
|
162
|
+
if (device.features.has('provoking-vertex-webgl')) {
|
|
163
|
+
const extensions = webglDevice.getExtension('WEBGL_provoking_vertex');
|
|
164
|
+
const ext = extensions.WEBGL_provoking_vertex;
|
|
165
|
+
|
|
166
|
+
if (parameters.provokingVertex) {
|
|
167
|
+
const vertex = map('provokingVertex', parameters.provokingVertex, {
|
|
168
|
+
first: GL.FIRST_VERTEX_CONVENTION_WEBGL,
|
|
169
|
+
last: GL.LAST_VERTEX_CONVENTION_WEBGL
|
|
170
|
+
});
|
|
171
|
+
ext?.provokingVertexWEBGL(vertex);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
if (device.features.has('polygon-mode-webgl')) {
|
|
176
|
+
const extensions = webglDevice.getExtension('WEBGL_polygon_mode');
|
|
177
|
+
const ext = extensions.WEBGL_polygon_mode;
|
|
178
|
+
|
|
179
|
+
if (parameters.polygonMode) {
|
|
180
|
+
const mode = map('polygonMode', parameters.provokingVertex, {
|
|
181
|
+
fill: GL.FILL_WEBGL,
|
|
182
|
+
lint: GL.LINE_WEBGL
|
|
183
|
+
});
|
|
184
|
+
ext?.polygonModeWEBGL(GL.FRONT, mode);
|
|
185
|
+
ext?.polygonModeWEBGL(GL.BACK, mode);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
if (parameters.polygonOffsetLine) {
|
|
189
|
+
gl.enable(GL.POLYGON_OFFSET_LINE_WEBGL);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
if (device.features.has('shader-clip-cull-distance-webgl')) {
|
|
194
|
+
if (parameters.clipDistance0) {
|
|
195
|
+
gl.enable(GL.CLIP_DISTANCE0_WEBGL);
|
|
196
|
+
}
|
|
197
|
+
if (parameters.clipDistance1) {
|
|
198
|
+
gl.enable(GL.CLIP_DISTANCE1_WEBGL);
|
|
199
|
+
}
|
|
200
|
+
if (parameters.clipDistance2) {
|
|
201
|
+
gl.enable(GL.CLIP_DISTANCE2_WEBGL);
|
|
202
|
+
}
|
|
203
|
+
if (parameters.clipDistance3) {
|
|
204
|
+
gl.enable(GL.CLIP_DISTANCE3_WEBGL);
|
|
205
|
+
}
|
|
206
|
+
if (parameters.clipDistance4) {
|
|
207
|
+
gl.enable(GL.CLIP_DISTANCE4_WEBGL);
|
|
208
|
+
}
|
|
209
|
+
if (parameters.clipDistance5) {
|
|
210
|
+
gl.enable(GL.CLIP_DISTANCE5_WEBGL);
|
|
211
|
+
}
|
|
212
|
+
if (parameters.clipDistance6) {
|
|
213
|
+
gl.enable(GL.CLIP_DISTANCE6_WEBGL);
|
|
214
|
+
}
|
|
215
|
+
if (parameters.clipDistance7) {
|
|
216
|
+
gl.enable(GL.CLIP_DISTANCE7_WEBGL);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
154
220
|
// DEPTH STENCIL
|
|
155
221
|
|
|
156
222
|
if (parameters.depthWriteEnabled !== undefined) {
|
|
@@ -212,14 +278,32 @@ export function setDeviceParameters(device: Device, parameters: Parameters) {
|
|
|
212
278
|
if (parameters.blendColorOperation || parameters.blendAlphaOperation) {
|
|
213
279
|
gl.enable(GL.BLEND);
|
|
214
280
|
|
|
215
|
-
const colorEquation = convertBlendOperationToEquation(
|
|
216
|
-
|
|
281
|
+
const colorEquation = convertBlendOperationToEquation(
|
|
282
|
+
'blendColorOperation',
|
|
283
|
+
parameters.blendColorOperation || 'add'
|
|
284
|
+
);
|
|
285
|
+
const alphaEquation = convertBlendOperationToEquation(
|
|
286
|
+
'blendAlphaOperation',
|
|
287
|
+
parameters.blendAlphaOperation || 'add'
|
|
288
|
+
);
|
|
217
289
|
gl.blendEquationSeparate(colorEquation, alphaEquation);
|
|
218
290
|
|
|
219
|
-
const colorSrcFactor = convertBlendFactorToFunction(
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
291
|
+
const colorSrcFactor = convertBlendFactorToFunction(
|
|
292
|
+
'blendColorSrcFactor',
|
|
293
|
+
parameters.blendColorSrcFactor || 'one'
|
|
294
|
+
);
|
|
295
|
+
const colorDstFactor = convertBlendFactorToFunction(
|
|
296
|
+
'blendColorDstFactor',
|
|
297
|
+
parameters.blendColorDstFactor || 'zero'
|
|
298
|
+
);
|
|
299
|
+
const alphaSrcFactor = convertBlendFactorToFunction(
|
|
300
|
+
'blendAlphaSrcFactor',
|
|
301
|
+
parameters.blendAlphaSrcFactor || 'one'
|
|
302
|
+
);
|
|
303
|
+
const alphaDstFactor = convertBlendFactorToFunction(
|
|
304
|
+
'blendAlphaDstFactor',
|
|
305
|
+
parameters.blendAlphaDstFactor || 'zero'
|
|
306
|
+
);
|
|
223
307
|
gl.blendFuncSeparate(colorSrcFactor, colorDstFactor, alphaSrcFactor, alphaDstFactor);
|
|
224
308
|
}
|
|
225
309
|
}
|
|
@@ -286,20 +370,23 @@ function convertStencilOperation(parameter: string, value: StencilOperation): GL
|
|
|
286
370
|
});
|
|
287
371
|
}
|
|
288
372
|
|
|
289
|
-
function convertBlendOperationToEquation(
|
|
373
|
+
function convertBlendOperationToEquation(
|
|
374
|
+
parameter: string,
|
|
375
|
+
value: BlendOperation
|
|
376
|
+
): GLBlendEquation {
|
|
290
377
|
return map(parameter, value, {
|
|
291
|
-
|
|
292
|
-
|
|
378
|
+
add: GL.FUNC_ADD,
|
|
379
|
+
subtract: GL.FUNC_SUBTRACT,
|
|
293
380
|
'reverse-subtract': GL.FUNC_REVERSE_SUBTRACT,
|
|
294
|
-
|
|
295
|
-
|
|
381
|
+
min: GL.MIN,
|
|
382
|
+
max: GL.MAX
|
|
296
383
|
} as Record<BlendOperation, GLBlendEquation>);
|
|
297
384
|
}
|
|
298
385
|
|
|
299
386
|
function convertBlendFactorToFunction(parameter: string, value: BlendFactor): GLBlendFunction {
|
|
300
387
|
return map(parameter, value, {
|
|
301
|
-
|
|
302
|
-
|
|
388
|
+
one: GL.ONE,
|
|
389
|
+
zero: GL.ZERO,
|
|
303
390
|
'src-color': GL.SRC_COLOR,
|
|
304
391
|
'one-minus-src-color': GL.ONE_MINUS_SRC_COLOR,
|
|
305
392
|
'dst-color': GL.DST_COLOR,
|
|
@@ -307,7 +394,7 @@ function convertBlendFactorToFunction(parameter: string, value: BlendFactor): GL
|
|
|
307
394
|
'src-alpha': GL.SRC_ALPHA,
|
|
308
395
|
'one-minus-src-alpha': GL.ONE_MINUS_SRC_ALPHA,
|
|
309
396
|
'dst-alpha': GL.DST_ALPHA,
|
|
310
|
-
'one-minus-dst-alpha': GL.ONE_MINUS_DST_ALPHA
|
|
397
|
+
'one-minus-dst-alpha': GL.ONE_MINUS_DST_ALPHA
|
|
311
398
|
} as Record<BlendFactor, GLBlendFunction>);
|
|
312
399
|
}
|
|
313
400
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
// luma.gl
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
2
3
|
// Copyright (c) vis.gl contributors
|
|
3
4
|
|
|
4
5
|
// SAMPLER FILTERS
|
|
@@ -55,7 +56,9 @@ export function convertSamplerParametersToWebGL(props: SamplerProps): GLSamplerP
|
|
|
55
56
|
// HELPERS
|
|
56
57
|
|
|
57
58
|
/** Convert address more */
|
|
58
|
-
function convertAddressMode(
|
|
59
|
+
function convertAddressMode(
|
|
60
|
+
addressMode: 'clamp-to-edge' | 'repeat' | 'mirror-repeat'
|
|
61
|
+
): GL.CLAMP_TO_EDGE | GL.REPEAT | GL.MIRRORED_REPEAT {
|
|
59
62
|
switch (addressMode) {
|
|
60
63
|
case 'clamp-to-edge':
|
|
61
64
|
return GL.CLAMP_TO_EDGE;
|
|
@@ -82,7 +85,13 @@ function convertMaxFilterMode(maxFilter: 'nearest' | 'linear'): GL.NEAREST | GL.
|
|
|
82
85
|
function convertMinFilterMode(
|
|
83
86
|
minFilter: 'nearest' | 'linear',
|
|
84
87
|
mipmapFilter?: 'nearest' | 'linear'
|
|
85
|
-
):
|
|
88
|
+
):
|
|
89
|
+
| GL.NEAREST
|
|
90
|
+
| GL.LINEAR
|
|
91
|
+
| GL.NEAREST_MIPMAP_NEAREST
|
|
92
|
+
| GL.LINEAR_MIPMAP_NEAREST
|
|
93
|
+
| GL.NEAREST_MIPMAP_LINEAR
|
|
94
|
+
| GL.LINEAR_MIPMAP_LINEAR {
|
|
86
95
|
if (!mipmapFilter) {
|
|
87
96
|
return convertMaxFilterMode(minFilter);
|
|
88
97
|
}
|
|
@@ -1,44 +1,69 @@
|
|
|
1
|
-
// luma.gl
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
2
3
|
// Copyright (c) vis.gl contributors
|
|
3
4
|
|
|
4
5
|
import {GL} from '@luma.gl/constants';
|
|
5
6
|
import {ShaderAttributeType, ShaderDataType} from '@luma.gl/core';
|
|
6
7
|
|
|
7
8
|
/** Get shader attribute type from GL constants */
|
|
8
|
-
export function getShaderAttributeTypeFromGL(
|
|
9
|
+
export function getShaderAttributeTypeFromGL(
|
|
10
|
+
type: GL,
|
|
11
|
+
components: 1 | 2 | 3 | 4
|
|
12
|
+
): ShaderAttributeType {
|
|
9
13
|
const dataType = getShaderDataTypeFromGL(type);
|
|
10
14
|
switch (components) {
|
|
11
|
-
case 1:
|
|
12
|
-
|
|
13
|
-
case
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
case 1:
|
|
16
|
+
return dataType;
|
|
17
|
+
case 2:
|
|
18
|
+
return `vec2<${dataType}>`;
|
|
19
|
+
case 3:
|
|
20
|
+
return `vec2<${dataType}>`;
|
|
21
|
+
case 4:
|
|
22
|
+
return `vec2<${dataType}>`;
|
|
23
|
+
default:
|
|
24
|
+
throw new Error(String(components));
|
|
16
25
|
}
|
|
17
26
|
}
|
|
18
27
|
|
|
19
28
|
/** Get shader data type from GL constants */
|
|
20
29
|
export function getShaderDataTypeFromGL(type: GL): ShaderDataType {
|
|
21
30
|
switch (type) {
|
|
22
|
-
case GL.INT:
|
|
23
|
-
|
|
24
|
-
case GL.
|
|
25
|
-
|
|
26
|
-
case GL.
|
|
27
|
-
|
|
28
|
-
case GL.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
case GL.INT:
|
|
32
|
+
return 'i32';
|
|
33
|
+
case GL.UNSIGNED_INT:
|
|
34
|
+
return 'u32';
|
|
35
|
+
case GL.SHORT:
|
|
36
|
+
return 'i32';
|
|
37
|
+
case GL.UNSIGNED_SHORT:
|
|
38
|
+
return 'u32';
|
|
39
|
+
case GL.BYTE:
|
|
40
|
+
return 'i32';
|
|
41
|
+
case GL.UNSIGNED_BYTE:
|
|
42
|
+
return 'u32';
|
|
43
|
+
case GL.FLOAT:
|
|
44
|
+
return 'f32';
|
|
45
|
+
case GL.HALF_FLOAT:
|
|
46
|
+
return 'f16';
|
|
47
|
+
default:
|
|
48
|
+
throw new Error(String(type));
|
|
31
49
|
}
|
|
32
50
|
}
|
|
33
51
|
|
|
34
52
|
/** GetGL constant from shader data type */
|
|
35
|
-
export function getGLFromShaderDataType(
|
|
53
|
+
export function getGLFromShaderDataType(
|
|
54
|
+
type: ShaderDataType
|
|
55
|
+
): GL.INT | GL.UNSIGNED_INT | GL.FLOAT | GL.HALF_FLOAT {
|
|
36
56
|
switch (type) {
|
|
37
57
|
// TODO
|
|
38
|
-
case 'i32':
|
|
39
|
-
|
|
40
|
-
case '
|
|
41
|
-
|
|
42
|
-
|
|
58
|
+
case 'i32':
|
|
59
|
+
return GL.INT;
|
|
60
|
+
case 'u32':
|
|
61
|
+
return GL.UNSIGNED_INT;
|
|
62
|
+
case 'f32':
|
|
63
|
+
return GL.FLOAT;
|
|
64
|
+
case 'f16':
|
|
65
|
+
return GL.HALF_FLOAT;
|
|
66
|
+
default:
|
|
67
|
+
throw new Error(String(type));
|
|
43
68
|
}
|
|
44
69
|
}
|