@luma.gl/webgl 9.0.0-beta.4 → 9.0.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/device-parameters.js +297 -155
- package/dist/adapter/converters/sampler-parameters.d.ts +0 -4
- package/dist/adapter/converters/sampler-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/sampler-parameters.js +73 -67
- package/dist/adapter/converters/shader-formats.d.ts.map +1 -1
- package/dist/adapter/converters/shader-formats.js +53 -46
- package/dist/adapter/converters/texture-formats.d.ts +13 -19
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
- package/dist/adapter/converters/texture-formats.js +474 -879
- package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
- package/dist/adapter/converters/vertex-formats.js +53 -61
- package/dist/adapter/device-helpers/device-features.d.ts +2 -5
- package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-features.js +56 -87
- package/dist/adapter/device-helpers/device-limits.d.ts +2 -4
- package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-limits.js +88 -83
- package/dist/adapter/device-helpers/get-device-info.d.ts +1 -1
- package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.js +79 -63
- package/dist/adapter/device-helpers/webgl-device-features.d.ts +19 -0
- package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -0
- package/dist/adapter/device-helpers/webgl-device-features.js +86 -0
- package/dist/adapter/device-helpers/webgl-device-info.d.ts +5 -0
- package/dist/adapter/device-helpers/webgl-device-info.d.ts.map +1 -0
- package/dist/adapter/device-helpers/webgl-device-info.js +90 -0
- package/dist/adapter/device-helpers/webgl-device-limits.d.ts +35 -0
- package/dist/adapter/device-helpers/webgl-device-limits.d.ts.map +1 -0
- package/dist/adapter/device-helpers/webgl-device-limits.js +47 -0
- package/dist/adapter/helpers/decode-webgl-types.d.ts.map +1 -1
- package/dist/adapter/helpers/decode-webgl-types.js +88 -76
- package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
- package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.js +261 -225
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.js +47 -37
- package/dist/adapter/helpers/set-uniform.d.ts +1 -1
- package/dist/adapter/helpers/set-uniform.d.ts.map +1 -1
- package/dist/adapter/helpers/set-uniform.js +68 -82
- package/dist/adapter/helpers/webgl-topology-utils.d.ts.map +1 -1
- package/dist/adapter/helpers/webgl-topology-utils.js +78 -93
- package/dist/adapter/objects/constants-to-keys.d.ts +1 -1
- package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
- package/dist/adapter/objects/constants-to-keys.js +19 -12
- 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 +86 -77
- package/dist/adapter/objects/webgl-resource.d.ts +3 -25
- package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-resource.js +102 -146
- package/dist/adapter/resources/webgl-buffer.d.ts +3 -4
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +161 -119
- 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 +266 -168
- 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 +33 -39
- package/dist/adapter/resources/webgl-external-texture.js +93 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts +8 -10
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +167 -137
- 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 +124 -90
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +15 -6
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +356 -221
- package/dist/adapter/resources/webgl-sampler.d.ts +1 -3
- package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-sampler.js +43 -33
- package/dist/adapter/resources/webgl-shader.d.ts +12 -2
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +114 -47
- 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 -9
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +615 -695
- package/dist/adapter/resources/webgl-transform-feedback.d.ts +2 -2
- package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-transform-feedback.js +141 -143
- 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 +229 -157
- 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 +58 -36
- package/dist/adapter/webgl-device.d.ts +34 -40
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +418 -363
- package/dist/classic/accessor.d.ts.map +1 -1
- package/dist/classic/accessor.js +132 -101
- package/dist/classic/clear.d.ts +2 -2
- package/dist/classic/clear.d.ts.map +1 -1
- package/dist/classic/clear.js +73 -72
- 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 +175 -175
- package/dist/classic/format-utils.d.ts +2 -2
- package/dist/classic/format-utils.d.ts.map +1 -1
- package/dist/classic/format-utils.js +39 -32
- package/dist/classic/typed-array-utils.d.ts.map +1 -1
- package/dist/classic/typed-array-utils.js +96 -81
- package/dist/context/context/context-data.d.ts +14 -0
- package/dist/context/context/context-data.d.ts.map +1 -0
- package/dist/context/context/context-data.js +33 -0
- package/dist/context/context/create-browser-context.d.ts +1 -6
- package/dist/context/context/create-browser-context.d.ts.map +1 -1
- package/dist/context/context/create-browser-context.js +62 -49
- package/dist/context/debug/spector.d.ts.map +1 -1
- package/dist/context/debug/spector.js +55 -50
- package/dist/context/debug/webgl-developer-tools.d.ts +1 -2
- package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
- package/dist/context/debug/webgl-developer-tools.js +104 -77
- package/dist/context/helpers/create-browser-context.d.ts +35 -0
- package/dist/context/helpers/create-browser-context.d.ts.map +1 -0
- package/dist/context/helpers/create-browser-context.js +67 -0
- package/dist/context/{polyfill/context-data.d.ts → helpers/webgl-context-data.d.ts} +2 -2
- 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 -3
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js +94 -44
- package/dist/context/parameters/webgl-parameter-tables.d.ts +120 -99
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +469 -404
- package/dist/context/state-tracker/deep-array-equal.d.ts.map +1 -1
- package/dist/context/state-tracker/deep-array-equal.js +19 -14
- package/dist/context/state-tracker/track-context-state.d.ts +4 -4
- package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
- package/dist/context/state-tracker/track-context-state.js +188 -123
- package/dist/context/state-tracker/with-parameters.d.ts +2 -2
- package/dist/context/state-tracker/with-parameters.d.ts.map +1 -1
- package/dist/context/state-tracker/with-parameters.js +43 -26
- package/dist/dist.dev.js +3135 -4142
- package/dist/index.cjs +1766 -2717
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +25 -28
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -1
- package/dist.min.js +9 -42
- package/package.json +11 -15
- package/src/adapter/converters/device-parameters.ts +105 -17
- package/src/adapter/converters/sampler-parameters.ts +12 -20
- package/src/adapter/converters/shader-formats.ts +47 -22
- package/src/adapter/converters/texture-formats.ts +138 -185
- package/src/adapter/converters/vertex-formats.ts +3 -3
- package/src/adapter/device-helpers/webgl-device-features.ts +101 -0
- package/src/adapter/device-helpers/{get-device-info.ts → webgl-device-info.ts} +30 -22
- package/src/adapter/device-helpers/webgl-device-limits.ts +53 -0
- package/src/adapter/helpers/decode-webgl-types.ts +13 -7
- package/src/adapter/helpers/get-shader-layout.ts +21 -31
- package/src/adapter/helpers/parse-shader-compiler-log.ts +10 -6
- package/src/adapter/helpers/set-uniform.ts +3 -4
- package/src/adapter/helpers/webgl-topology-utils.ts +10 -3
- package/src/adapter/objects/constants-to-keys.ts +3 -2
- package/src/adapter/objects/webgl-renderbuffer.ts +38 -16
- package/src/adapter/objects/webgl-resource.ts +7 -140
- package/src/adapter/resources/webgl-buffer.ts +10 -14
- package/src/adapter/resources/webgl-command-buffer.ts +24 -34
- package/src/adapter/resources/webgl-command-encoder.ts +14 -11
- package/src/adapter/resources/webgl-external-texture.ts +5 -5
- package/src/adapter/resources/webgl-framebuffer.ts +38 -34
- package/src/adapter/resources/webgl-query-set.ts +171 -0
- package/src/adapter/resources/webgl-render-pass.ts +24 -15
- package/src/adapter/resources/webgl-render-pipeline.ts +138 -70
- package/src/adapter/resources/webgl-sampler.ts +7 -10
- package/src/adapter/resources/webgl-shader.ts +65 -11
- package/src/adapter/resources/webgl-texture-view.ts +28 -0
- package/src/adapter/resources/webgl-texture.ts +38 -105
- package/src/adapter/resources/webgl-transform-feedback.ts +16 -22
- package/src/adapter/resources/webgl-vertex-array.ts +20 -21
- package/src/adapter/webgl-canvas-context.ts +7 -11
- package/src/adapter/webgl-device.ts +106 -151
- package/src/classic/accessor.ts +5 -4
- package/src/classic/clear.ts +25 -20
- package/src/classic/copy-and-blit.ts +12 -6
- 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 +31 -20
- package/src/context/{context → helpers}/create-browser-context.ts +9 -33
- package/src/context/{polyfill/context-data.ts → helpers/webgl-context-data.ts} +3 -2
- package/src/context/helpers/webgl-extensions.ts +17 -0
- package/src/context/parameters/unified-parameter-api.ts +5 -4
- package/src/context/parameters/webgl-parameter-tables.ts +118 -90
- package/src/context/state-tracker/deep-array-equal.ts +2 -1
- package/src/context/state-tracker/track-context-state.ts +29 -23
- package/src/context/state-tracker/with-parameters.ts +7 -2
- package/src/index.ts +4 -18
- package/src/types.ts +2 -1
- package/dist/adapter/converters/device-parameters.js.map +0 -1
- package/dist/adapter/converters/sampler-parameters.js.map +0 -1
- package/dist/adapter/converters/shader-formats.js.map +0 -1
- package/dist/adapter/converters/texture-formats.js.map +0 -1
- package/dist/adapter/converters/vertex-formats.js.map +0 -1
- package/dist/adapter/device-helpers/device-features.js.map +0 -1
- package/dist/adapter/device-helpers/device-limits.js.map +0 -1
- package/dist/adapter/device-helpers/get-device-info.js.map +0 -1
- package/dist/adapter/device-helpers/is-old-ie.d.ts +0 -2
- package/dist/adapter/device-helpers/is-old-ie.d.ts.map +0 -1
- package/dist/adapter/device-helpers/is-old-ie.js +0 -9
- package/dist/adapter/device-helpers/is-old-ie.js.map +0 -1
- package/dist/adapter/helpers/decode-webgl-types.js.map +0 -1
- package/dist/adapter/helpers/get-shader-layout.js.map +0 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.js.map +0 -1
- package/dist/adapter/helpers/set-uniform.js.map +0 -1
- package/dist/adapter/helpers/webgl-topology-utils.js.map +0 -1
- package/dist/adapter/objects/constants-to-keys.js.map +0 -1
- package/dist/adapter/objects/webgl-renderbuffer.js.map +0 -1
- package/dist/adapter/objects/webgl-resource.js.map +0 -1
- package/dist/adapter/resources/webgl-buffer.js.map +0 -1
- package/dist/adapter/resources/webgl-command-buffer.js.map +0 -1
- package/dist/adapter/resources/webgl-command-encoder.js.map +0 -1
- package/dist/adapter/resources/webgl-external-texture.js.map +0 -1
- package/dist/adapter/resources/webgl-framebuffer.js.map +0 -1
- package/dist/adapter/resources/webgl-render-pass.js.map +0 -1
- package/dist/adapter/resources/webgl-render-pipeline.js.map +0 -1
- package/dist/adapter/resources/webgl-sampler.js.map +0 -1
- package/dist/adapter/resources/webgl-shader.js.map +0 -1
- package/dist/adapter/resources/webgl-texture.js.map +0 -1
- package/dist/adapter/resources/webgl-transform-feedback.js.map +0 -1
- package/dist/adapter/resources/webgl-vertex-array.js.map +0 -1
- package/dist/adapter/webgl-canvas-context.js.map +0 -1
- package/dist/adapter/webgl-device.js.map +0 -1
- package/dist/classic/accessor.js.map +0 -1
- package/dist/classic/clear.js.map +0 -1
- package/dist/classic/copy-and-blit.js.map +0 -1
- package/dist/classic/format-utils.js.map +0 -1
- package/dist/classic/typed-array-utils.js.map +0 -1
- package/dist/context/context/create-browser-context.js.map +0 -1
- package/dist/context/context/create-headless-context.d.ts +0 -9
- package/dist/context/context/create-headless-context.d.ts.map +0 -1
- package/dist/context/context/create-headless-context.js +0 -42
- package/dist/context/context/create-headless-context.js.map +0 -1
- package/dist/context/context/webgl-checks.d.ts +0 -13
- package/dist/context/context/webgl-checks.d.ts.map +0 -1
- package/dist/context/context/webgl-checks.js +0 -31
- package/dist/context/context/webgl-checks.js.map +0 -1
- package/dist/context/debug/spector.js.map +0 -1
- package/dist/context/debug/webgl-developer-tools.js.map +0 -1
- package/dist/context/parameters/unified-parameter-api.js.map +0 -1
- package/dist/context/parameters/webgl-parameter-tables.js.map +0 -1
- package/dist/context/polyfill/context-data.d.ts.map +0 -1
- package/dist/context/polyfill/context-data.js +0 -12
- package/dist/context/polyfill/context-data.js.map +0 -1
- package/dist/context/polyfill/get-parameter-polyfill.d.ts +0 -2
- package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +0 -1
- package/dist/context/polyfill/get-parameter-polyfill.js +0 -85
- package/dist/context/polyfill/get-parameter-polyfill.js.map +0 -1
- package/dist/context/polyfill/polyfill-context.d.ts +0 -5
- package/dist/context/polyfill/polyfill-context.d.ts.map +0 -1
- package/dist/context/polyfill/polyfill-context.js +0 -87
- package/dist/context/polyfill/polyfill-context.js.map +0 -1
- package/dist/context/polyfill/polyfill-table.d.ts +0 -48
- package/dist/context/polyfill/polyfill-table.d.ts.map +0 -1
- package/dist/context/polyfill/polyfill-table.js +0 -137
- package/dist/context/polyfill/polyfill-table.js.map +0 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.d.ts +0 -2
- package/dist/context/polyfill/polyfill-vertex-array-object.d.ts.map +0 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.js +0 -265
- package/dist/context/polyfill/polyfill-vertex-array-object.js.map +0 -1
- package/dist/context/state-tracker/deep-array-equal.js.map +0 -1
- package/dist/context/state-tracker/track-context-state.js.map +0 -1
- package/dist/context/state-tracker/with-parameters.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/src/adapter/device-helpers/device-features.ts +0 -161
- package/src/adapter/device-helpers/device-limits.ts +0 -155
- package/src/adapter/device-helpers/is-old-ie.ts +0 -14
- package/src/context/context/create-headless-context.ts +0 -51
- package/src/context/context/webgl-checks.ts +0 -51
- package/src/context/polyfill/get-parameter-polyfill.ts +0 -122
- package/src/context/polyfill/polyfill-context.ts +0 -104
- package/src/context/polyfill/polyfill-table.ts +0 -167
- package/src/context/polyfill/polyfill-vertex-array-object.ts +0 -365
|
@@ -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 type {UniformValue, RenderPipelineProps, Binding} from '@luma.gl/core';
|
|
@@ -19,7 +20,7 @@ import {WEBGLBuffer} from './webgl-buffer';
|
|
|
19
20
|
import {WEBGLShader} from './webgl-shader';
|
|
20
21
|
import {WEBGLFramebuffer} from './webgl-framebuffer';
|
|
21
22
|
import {WEBGLTexture} from './webgl-texture';
|
|
22
|
-
|
|
23
|
+
import {WEBGLTextureView} from './webgl-texture-view';
|
|
23
24
|
import {WEBGLRenderPass} from './webgl-render-pass';
|
|
24
25
|
import {WEBGLTransformFeedback} from './webgl-transform-feedback';
|
|
25
26
|
import {getGLDrawMode} from '../helpers/webgl-topology-utils';
|
|
@@ -65,14 +66,16 @@ export class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
65
66
|
// @ts-expect-error WebGL only
|
|
66
67
|
const {varyings, bufferMode = GL.SEPARATE_ATTRIBS} = props;
|
|
67
68
|
if (varyings && varyings.length > 0) {
|
|
68
|
-
this.device.assertWebGL2();
|
|
69
69
|
this.varyings = varyings;
|
|
70
|
-
this.device.
|
|
70
|
+
this.device.gl.transformFeedbackVaryings(this.handle, varyings, bufferMode);
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
this.
|
|
73
|
+
this._linkShaders();
|
|
74
74
|
|
|
75
|
+
log.time(0, `RenderPipeline ${this.id} - shaderLayout introspection`)();
|
|
75
76
|
this.introspectedLayout = getShaderLayout(this.device.gl, this.handle);
|
|
77
|
+
log.timeEnd(0, `RenderPipeline ${this.id} - shaderLayout introspection`)();
|
|
78
|
+
|
|
76
79
|
// Merge provided layout with introspected layout
|
|
77
80
|
this.shaderLayout = mergeShaderLayout(this.introspectedLayout, props.shaderLayout);
|
|
78
81
|
|
|
@@ -80,7 +83,9 @@ export class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
80
83
|
switch (this.props.topology) {
|
|
81
84
|
case 'triangle-fan-webgl':
|
|
82
85
|
case 'line-loop-webgl':
|
|
83
|
-
log.warn(
|
|
86
|
+
log.warn(
|
|
87
|
+
`Primitive topology ${this.props.topology} is deprecated and will be removed in v9.1`
|
|
88
|
+
);
|
|
84
89
|
break;
|
|
85
90
|
default:
|
|
86
91
|
}
|
|
@@ -132,7 +137,13 @@ export class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
132
137
|
}
|
|
133
138
|
break;
|
|
134
139
|
case 'texture':
|
|
135
|
-
if (
|
|
140
|
+
if (
|
|
141
|
+
!(
|
|
142
|
+
value instanceof WEBGLTextureView ||
|
|
143
|
+
value instanceof WEBGLTexture ||
|
|
144
|
+
value instanceof WEBGLFramebuffer
|
|
145
|
+
)
|
|
146
|
+
) {
|
|
136
147
|
throw new Error('texture value');
|
|
137
148
|
}
|
|
138
149
|
break;
|
|
@@ -147,18 +158,6 @@ export class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
147
158
|
}
|
|
148
159
|
}
|
|
149
160
|
|
|
150
|
-
/** This function is @deprecated, use uniform buffers */
|
|
151
|
-
setUniforms(uniforms: Record<string, UniformValue>) {
|
|
152
|
-
const {bindings} = splitUniformsAndBindings(uniforms);
|
|
153
|
-
Object.keys(bindings).forEach(name => {
|
|
154
|
-
log.warn(
|
|
155
|
-
`Unsupported value "${JSON.stringify(bindings[name])}" used in setUniforms() for key ${name}. Use setBindings() instead?`
|
|
156
|
-
)();
|
|
157
|
-
});
|
|
158
|
-
// TODO - check against layout
|
|
159
|
-
Object.assign(this.uniforms, uniforms);
|
|
160
|
-
}
|
|
161
|
-
|
|
162
161
|
/** @todo needed for portable model
|
|
163
162
|
* @note The WebGL API is offers many ways to draw things
|
|
164
163
|
* This function unifies those ways into a single call using common parameters with sane defaults
|
|
@@ -176,6 +175,11 @@ export class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
176
175
|
baseVertex?: number;
|
|
177
176
|
transformFeedback?: WEBGLTransformFeedback;
|
|
178
177
|
}): boolean {
|
|
178
|
+
// If we are using async linking, we need to wait until linking completes
|
|
179
|
+
if (this.linkStatus !== 'success') {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
|
|
179
183
|
const {
|
|
180
184
|
renderPass,
|
|
181
185
|
vertexArray,
|
|
@@ -217,31 +221,6 @@ export class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
217
221
|
this._applyUniforms();
|
|
218
222
|
|
|
219
223
|
const webglRenderPass = renderPass as WEBGLRenderPass;
|
|
220
|
-
// // TODO - Use polyfilled WebGL2RenderingContext instead of ANGLE extension
|
|
221
|
-
// if (isIndexed && isInstanced) {
|
|
222
|
-
// // ANGLE_instanced_arrays extension
|
|
223
|
-
// this.device.gl2?.drawElementsInstanced(
|
|
224
|
-
// drawMode,
|
|
225
|
-
// vertexCount || 0, // indexCount?
|
|
226
|
-
// indexType,
|
|
227
|
-
// firstVertex,
|
|
228
|
-
// instanceCount || 0
|
|
229
|
-
// );
|
|
230
|
-
// // } else if (isIndexed && this.device.isWebGL2 && !isNaN(start) && !isNaN(end)) {
|
|
231
|
-
// // this.device.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);
|
|
232
|
-
// } else if (isIndexed) {
|
|
233
|
-
// this.device.gl.drawElements(drawMode, vertexCount || 0, indexType, firstVertex); // indexCount?
|
|
234
|
-
// } else if (isInstanced) {
|
|
235
|
-
// this.device.gl2?.drawArraysInstanced(
|
|
236
|
-
// drawMode,
|
|
237
|
-
// firstVertex,
|
|
238
|
-
// vertexCount || 0,
|
|
239
|
-
// instanceCount || 0
|
|
240
|
-
// );
|
|
241
|
-
// } else {
|
|
242
|
-
// this.device.gl.drawArrays(drawMode, firstVertex, vertexCount || 0);
|
|
243
|
-
// }
|
|
244
|
-
// });
|
|
245
224
|
|
|
246
225
|
withDeviceAndGLParameters(
|
|
247
226
|
this.device,
|
|
@@ -249,8 +228,7 @@ export class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
249
228
|
webglRenderPass.glParameters,
|
|
250
229
|
() => {
|
|
251
230
|
if (isIndexed && isInstanced) {
|
|
252
|
-
|
|
253
|
-
this.device.gl2?.drawElementsInstanced(
|
|
231
|
+
this.device.gl.drawElementsInstanced(
|
|
254
232
|
glDrawMode,
|
|
255
233
|
vertexCount || 0, // indexCount?
|
|
256
234
|
glIndexType,
|
|
@@ -258,11 +236,11 @@ export class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
258
236
|
instanceCount || 0
|
|
259
237
|
);
|
|
260
238
|
// } else if (isIndexed && this.device.isWebGL2 && !isNaN(start) && !isNaN(end)) {
|
|
261
|
-
// this.device.
|
|
239
|
+
// this.device.gldrawRangeElements(glDrawMode, start, end, vertexCount, glIndexType, offset);
|
|
262
240
|
} else if (isIndexed) {
|
|
263
241
|
this.device.gl.drawElements(glDrawMode, vertexCount || 0, glIndexType, firstVertex); // indexCount?
|
|
264
242
|
} else if (isInstanced) {
|
|
265
|
-
this.device.
|
|
243
|
+
this.device.gl.drawArraysInstanced(
|
|
266
244
|
glDrawMode,
|
|
267
245
|
firstVertex,
|
|
268
246
|
vertexCount || 0,
|
|
@@ -283,10 +261,27 @@ export class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
283
261
|
return true;
|
|
284
262
|
}
|
|
285
263
|
|
|
264
|
+
// DEPRECATED METHODS
|
|
265
|
+
|
|
266
|
+
override setUniformsWebGL(uniforms: Record<string, UniformValue>) {
|
|
267
|
+
const {bindings} = splitUniformsAndBindings(uniforms);
|
|
268
|
+
Object.keys(bindings).forEach(name => {
|
|
269
|
+
log.warn(
|
|
270
|
+
`Unsupported value "${JSON.stringify(
|
|
271
|
+
bindings[name]
|
|
272
|
+
)}" used in setUniforms() for key ${name}. Use setBindings() instead?`
|
|
273
|
+
)();
|
|
274
|
+
});
|
|
275
|
+
// TODO - check against layout
|
|
276
|
+
Object.assign(this.uniforms, uniforms);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
// PRIVATE METHODS
|
|
280
|
+
|
|
286
281
|
// setAttributes(attributes: Record<string, Buffer>): void {}
|
|
287
282
|
// setBindings(bindings: Record<string, Binding>): void {}
|
|
288
283
|
|
|
289
|
-
protected
|
|
284
|
+
protected async _linkShaders() {
|
|
290
285
|
const {gl} = this.device;
|
|
291
286
|
gl.attachShader(this.handle, this.vs.handle);
|
|
292
287
|
gl.attachShader(this.handle, this.fs.handle);
|
|
@@ -294,25 +289,89 @@ export class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
294
289
|
gl.linkProgram(this.handle);
|
|
295
290
|
log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this.id}`)();
|
|
296
291
|
|
|
297
|
-
// Avoid checking program linking error in production
|
|
298
|
-
|
|
299
|
-
if (!gl.debug && log.level === 0) {
|
|
292
|
+
// TODO Avoid checking program linking error in production
|
|
293
|
+
if (log.level === 0) {
|
|
300
294
|
// return;
|
|
301
295
|
}
|
|
302
296
|
|
|
297
|
+
if (!this.device.features.has('compilation-status-async-webgl')) {
|
|
298
|
+
const status = this._getLinkStatus();
|
|
299
|
+
this._reportLinkStatus(status);
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
// async case
|
|
304
|
+
log.once(1, 'RenderPipeline linking is asynchronous')();
|
|
305
|
+
await this._waitForLinkComplete();
|
|
306
|
+
log.info(2, `RenderPipeline ${this.id} - async linking complete: ${this.linkStatus}`)();
|
|
307
|
+
const status = this._getLinkStatus();
|
|
308
|
+
this._reportLinkStatus(status);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/** Report link status. First, check for shader compilation failures if linking fails */
|
|
312
|
+
_reportLinkStatus(status: 'success' | 'linking' | 'validation') {
|
|
313
|
+
switch (status) {
|
|
314
|
+
case 'success':
|
|
315
|
+
return;
|
|
316
|
+
|
|
317
|
+
default:
|
|
318
|
+
// First check for shader compilation failures if linking fails
|
|
319
|
+
if (this.vs.compilationStatus === 'error') {
|
|
320
|
+
this.vs.debugShader();
|
|
321
|
+
throw new Error(`Error during compilation of shader ${this.vs.id}`);
|
|
322
|
+
}
|
|
323
|
+
if (this.fs?.compilationStatus === 'error') {
|
|
324
|
+
this.vs.debugShader();
|
|
325
|
+
throw new Error(`Error during compilation of shader ${this.fs.id}`);
|
|
326
|
+
}
|
|
327
|
+
throw new Error(`Error during ${status}: ${this.device.gl.getProgramInfoLog(this.handle)}`);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* Get the shader compilation status
|
|
333
|
+
* TODO - Load log even when no error reported, to catch warnings?
|
|
334
|
+
* https://gamedev.stackexchange.com/questions/30429/how-to-detect-glsl-warnings
|
|
335
|
+
*/
|
|
336
|
+
_getLinkStatus(): 'success' | 'linking' | 'validation' {
|
|
337
|
+
const {gl} = this.device;
|
|
303
338
|
const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);
|
|
304
339
|
if (!linked) {
|
|
305
|
-
|
|
340
|
+
this.linkStatus = 'error';
|
|
341
|
+
return 'linking';
|
|
306
342
|
}
|
|
307
343
|
|
|
308
344
|
gl.validateProgram(this.handle);
|
|
309
345
|
const validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);
|
|
310
346
|
if (!validated) {
|
|
311
|
-
|
|
347
|
+
this.linkStatus = 'error';
|
|
348
|
+
return 'validation';
|
|
312
349
|
}
|
|
350
|
+
|
|
351
|
+
this.linkStatus = 'success';
|
|
352
|
+
return 'success';
|
|
313
353
|
}
|
|
314
354
|
|
|
315
|
-
|
|
355
|
+
/** Use KHR_parallel_shader_compile extension if available */
|
|
356
|
+
async _waitForLinkComplete(): Promise<void> {
|
|
357
|
+
const waitMs = async (ms: number) => await new Promise(resolve => setTimeout(resolve, ms));
|
|
358
|
+
const DELAY_MS = 10; // Shader compilation is typically quite fast (with some exceptions)
|
|
359
|
+
|
|
360
|
+
// If status polling is not available, we can't wait for completion. Just wait a little to minimize blocking
|
|
361
|
+
if (!this.device.features.has('compilation-status-async-webgl')) {
|
|
362
|
+
await waitMs(DELAY_MS);
|
|
363
|
+
return;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
const {gl} = this.device;
|
|
367
|
+
for (;;) {
|
|
368
|
+
const complete = gl.getProgramParameter(this.handle, GL.COMPLETION_STATUS_KHR);
|
|
369
|
+
if (complete) {
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
await waitMs(DELAY_MS);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
316
375
|
|
|
317
376
|
/**
|
|
318
377
|
* Checks if all texture-values uniforms are renderable (i.e. loaded)
|
|
@@ -334,13 +393,14 @@ export class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
334
393
|
|
|
335
394
|
/** Apply any bindings (before each draw call) */
|
|
336
395
|
_applyBindings() {
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
if (!gl2) {
|
|
341
|
-
throw new Error('bindings');
|
|
396
|
+
// If we are using async linking, we need to wait until linking completes
|
|
397
|
+
if (this.linkStatus !== 'success') {
|
|
398
|
+
return;
|
|
342
399
|
}
|
|
343
400
|
|
|
401
|
+
const {gl} = this.device;
|
|
402
|
+
gl.useProgram(this.handle);
|
|
403
|
+
|
|
344
404
|
let textureUnit = 0;
|
|
345
405
|
let uniformBufferIndex = 0;
|
|
346
406
|
for (const binding of this.shaderLayout.bindings) {
|
|
@@ -354,16 +414,16 @@ export class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
354
414
|
case 'uniform':
|
|
355
415
|
// Set buffer
|
|
356
416
|
const {name} = binding;
|
|
357
|
-
const location =
|
|
358
|
-
if (location as GL === GL.INVALID_INDEX) {
|
|
417
|
+
const location = gl.getUniformBlockIndex(this.handle, name);
|
|
418
|
+
if ((location as GL) === GL.INVALID_INDEX) {
|
|
359
419
|
throw new Error(`Invalid uniform block name ${name}`);
|
|
360
420
|
}
|
|
361
|
-
|
|
421
|
+
gl.uniformBlockBinding(this.handle, uniformBufferIndex, location);
|
|
362
422
|
// console.debug(binding, location);
|
|
363
423
|
if (value instanceof WEBGLBuffer) {
|
|
364
|
-
|
|
424
|
+
gl.bindBufferBase(GL.UNIFORM_BUFFER, uniformBufferIndex, value.handle);
|
|
365
425
|
} else {
|
|
366
|
-
|
|
426
|
+
gl.bindBufferRange(
|
|
367
427
|
GL.UNIFORM_BUFFER,
|
|
368
428
|
uniformBufferIndex,
|
|
369
429
|
// @ts-expect-error
|
|
@@ -378,11 +438,19 @@ export class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
378
438
|
break;
|
|
379
439
|
|
|
380
440
|
case 'texture':
|
|
381
|
-
if (
|
|
441
|
+
if (
|
|
442
|
+
!(
|
|
443
|
+
value instanceof WEBGLTextureView ||
|
|
444
|
+
value instanceof WEBGLTexture ||
|
|
445
|
+
value instanceof WEBGLFramebuffer
|
|
446
|
+
)
|
|
447
|
+
) {
|
|
382
448
|
throw new Error('texture');
|
|
383
449
|
}
|
|
384
450
|
let texture: WEBGLTexture;
|
|
385
|
-
if (value instanceof
|
|
451
|
+
if (value instanceof WEBGLTextureView) {
|
|
452
|
+
texture = value.texture;
|
|
453
|
+
} else if (value instanceof WEBGLTexture) {
|
|
386
454
|
texture = value;
|
|
387
455
|
} else if (
|
|
388
456
|
value instanceof WEBGLFramebuffer &&
|
|
@@ -396,9 +464,9 @@ export class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
396
464
|
throw new Error('No texture');
|
|
397
465
|
}
|
|
398
466
|
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
//
|
|
467
|
+
gl.activeTexture(GL.TEXTURE0 + textureUnit);
|
|
468
|
+
gl.bindTexture(texture.target, texture.handle);
|
|
469
|
+
// gl.bindSampler(textureUnit, sampler.handle);
|
|
402
470
|
textureUnit += 1;
|
|
403
471
|
break;
|
|
404
472
|
|
|
@@ -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 {Sampler, SamplerProps} from '@luma.gl/core';
|
|
@@ -8,8 +9,6 @@ import type {WebGLDevice} from '../webgl-device';
|
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Sampler object -
|
|
11
|
-
* Under WebGL2 we create an actual WebGL sampler
|
|
12
|
-
* Under WebGL1, we just store the sampler parameters
|
|
13
12
|
* so that they can be set directly on the texture
|
|
14
13
|
* https://github.com/WebGLSamples/WebGL2Samples/blob/master/samples/sampler_object.html
|
|
15
14
|
*/
|
|
@@ -22,15 +21,13 @@ export class WEBGLSampler extends Sampler {
|
|
|
22
21
|
super(device, props);
|
|
23
22
|
this.device = device;
|
|
24
23
|
this.parameters = convertSamplerParametersToWebGL(props);
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
this._setSamplerParameters(this.parameters);
|
|
28
|
-
}
|
|
24
|
+
this.handle = this.handle || this.device.gl.createSampler();
|
|
25
|
+
this._setSamplerParameters(this.parameters);
|
|
29
26
|
}
|
|
30
27
|
|
|
31
28
|
override destroy(): void {
|
|
32
29
|
if (this.handle) {
|
|
33
|
-
this.device.
|
|
30
|
+
this.device.gl.deleteSampler(this.handle);
|
|
34
31
|
// @ts-expect-error read-only/undefined
|
|
35
32
|
this.handle = undefined;
|
|
36
33
|
}
|
|
@@ -49,10 +46,10 @@ export class WEBGLSampler extends Sampler {
|
|
|
49
46
|
switch (param) {
|
|
50
47
|
case GL.TEXTURE_MIN_LOD:
|
|
51
48
|
case GL.TEXTURE_MAX_LOD:
|
|
52
|
-
this.device.
|
|
49
|
+
this.device.gl.samplerParameterf(this.handle, param, value);
|
|
53
50
|
break;
|
|
54
51
|
default:
|
|
55
|
-
this.device.
|
|
52
|
+
this.device.gl.samplerParameteri(this.handle, param, value);
|
|
56
53
|
break;
|
|
57
54
|
}
|
|
58
55
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
// luma.gl
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
2
3
|
// Copyright (c) vis.gl contributors
|
|
3
4
|
|
|
4
|
-
import {Shader, ShaderProps, CompilerMessage} from '@luma.gl/core';
|
|
5
|
+
import {Shader, ShaderProps, CompilerMessage, log} from '@luma.gl/core';
|
|
5
6
|
import {GL} from '@luma.gl/constants';
|
|
6
7
|
import {parseShaderCompilerLog} from '../helpers/parse-shader-compiler-log';
|
|
7
8
|
import {WebGLDevice} from '../webgl-device';
|
|
@@ -39,6 +40,7 @@ export class WEBGLShader extends Shader {
|
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
override async getCompilationInfo(): Promise<readonly CompilerMessage[]> {
|
|
43
|
+
await this._waitForCompilationComplete();
|
|
42
44
|
return this.getCompilationInfoSync();
|
|
43
45
|
}
|
|
44
46
|
|
|
@@ -47,9 +49,16 @@ export class WEBGLShader extends Shader {
|
|
|
47
49
|
return parseShaderCompilerLog(log);
|
|
48
50
|
}
|
|
49
51
|
|
|
52
|
+
override getTranslatedSource(): string | null {
|
|
53
|
+
const extensions = this.device.getExtension('WEBGL_debug_shaders');
|
|
54
|
+
const ext = extensions.WEBGL_debug_shaders;
|
|
55
|
+
return ext?.getTranslatedShaderSource(this.handle);
|
|
56
|
+
}
|
|
57
|
+
|
|
50
58
|
// PRIVATE METHODS
|
|
51
59
|
|
|
52
|
-
|
|
60
|
+
/** Compile a shader and get compilation status */
|
|
61
|
+
protected async _compile(source: string): Promise<void> {
|
|
53
62
|
const addGLSLVersion = (source: string) =>
|
|
54
63
|
source.startsWith('#version ') ? source : `#version 100\n${source}`;
|
|
55
64
|
source = addGLSLVersion(source);
|
|
@@ -58,18 +67,64 @@ export class WEBGLShader extends Shader {
|
|
|
58
67
|
gl.shaderSource(this.handle, source);
|
|
59
68
|
gl.compileShader(this.handle);
|
|
60
69
|
|
|
61
|
-
//
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
70
|
+
// For performance reasons, avoid checking shader compilation errors on production
|
|
71
|
+
if (log.level === 0) {
|
|
72
|
+
this.compilationStatus = 'pending';
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
65
75
|
|
|
66
|
-
//
|
|
76
|
+
// Sync case - slower, but advantage is that it throws in the constructor, making break on error more useful
|
|
77
|
+
if (!this.device.features.has('compilation-status-async-webgl')) {
|
|
78
|
+
this._getCompilationStatus();
|
|
79
|
+
if (this.compilationStatus === 'error') {
|
|
80
|
+
throw new Error(`GLSL compilation errors in ${this.props.stage} shader ${this.props.id}`);
|
|
81
|
+
}
|
|
82
|
+
// The `Shader` base class will determine if debug window should be opened based on this.compilationStatus
|
|
83
|
+
this.debugShader();
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// async case
|
|
88
|
+
log.once(1, 'Shader compilation is asynchronous')();
|
|
89
|
+
await this._waitForCompilationComplete();
|
|
90
|
+
log.info(2, `Shader ${this.id} - async compilation complete: ${this.compilationStatus}`)();
|
|
91
|
+
this._getCompilationStatus();
|
|
92
|
+
|
|
93
|
+
// The `Shader` base class will determine if debug window should be opened based on this.compilationStatus
|
|
67
94
|
this.debugShader();
|
|
95
|
+
}
|
|
68
96
|
|
|
69
|
-
|
|
70
|
-
|
|
97
|
+
/** Use KHR_parallel_shader_compile extension if available */
|
|
98
|
+
protected async _waitForCompilationComplete(): Promise<void> {
|
|
99
|
+
const waitMs = async (ms: number) => await new Promise(resolve => setTimeout(resolve, ms));
|
|
100
|
+
const DELAY_MS = 10; // Shader compilation is typically quite fast (with some exceptions)
|
|
101
|
+
|
|
102
|
+
// If status polling is not available, we can't wait for completion. Just wait a little to minimize blocking
|
|
103
|
+
if (!this.device.features.has('compilation-status-async-webgl')) {
|
|
104
|
+
await waitMs(DELAY_MS);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const {gl} = this.device;
|
|
109
|
+
for (;;) {
|
|
110
|
+
const complete = gl.getShaderParameter(this.handle, GL.COMPLETION_STATUS_KHR);
|
|
111
|
+
if (complete) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
await waitMs(DELAY_MS);
|
|
71
115
|
}
|
|
72
116
|
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Get the shader compilation status
|
|
120
|
+
* TODO - Load log even when no error reported, to catch warnings?
|
|
121
|
+
* https://gamedev.stackexchange.com/questions/30429/how-to-detect-glsl-warnings
|
|
122
|
+
*/
|
|
123
|
+
protected _getCompilationStatus() {
|
|
124
|
+
this.compilationStatus = this.device.gl.getShaderParameter(this.handle, GL.COMPILE_STATUS)
|
|
125
|
+
? 'success'
|
|
126
|
+
: 'error';
|
|
127
|
+
}
|
|
73
128
|
}
|
|
74
129
|
|
|
75
130
|
// TODO - Original code from luma.gl v8 - keep until new debug functionality has matured
|
|
@@ -81,4 +136,3 @@ export class WEBGLShader extends Shader {
|
|
|
81
136
|
// log.error(`GLSL compilation errors in ${shaderDescription}\n${formattedLog}`)();
|
|
82
137
|
// displayShaderLog(parsedLog, source, shaderName);
|
|
83
138
|
// }
|
|
84
|
-
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
import type {Device, TextureViewProps} from '@luma.gl/core';
|
|
6
|
+
// import {decodeTextureFormat} from '@luma.gl/core';
|
|
7
|
+
import {TextureView, Texture} from '@luma.gl/core';
|
|
8
|
+
|
|
9
|
+
import {WebGLDevice} from '../webgl-device';
|
|
10
|
+
import {WEBGLTexture} from './webgl-texture';
|
|
11
|
+
|
|
12
|
+
export class WEBGLTextureView extends TextureView {
|
|
13
|
+
readonly device: WebGLDevice;
|
|
14
|
+
readonly gl: WebGL2RenderingContext;
|
|
15
|
+
readonly handle: WebGLTexture;
|
|
16
|
+
|
|
17
|
+
readonly texture: WEBGLTexture;
|
|
18
|
+
|
|
19
|
+
constructor(device: Device, props: TextureViewProps & {texture: WEBGLTexture}) {
|
|
20
|
+
super(device, {...Texture.defaultProps, ...props});
|
|
21
|
+
|
|
22
|
+
this.device = device as WebGLDevice;
|
|
23
|
+
this.gl = this.device.gl;
|
|
24
|
+
this.handle = null;
|
|
25
|
+
|
|
26
|
+
this.texture = props.texture;
|
|
27
|
+
}
|
|
28
|
+
}
|