@luma.gl/webgl 9.1.0-alpha.9 → 9.1.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapter/converters/device-parameters.d.ts +3 -3
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/device-parameters.js +1 -0
- package/dist/adapter/converters/device-parameters.js.map +1 -0
- package/dist/adapter/converters/sampler-parameters.js +7 -4
- package/dist/adapter/converters/sampler-parameters.js.map +1 -0
- package/dist/adapter/converters/shader-formats.js +1 -0
- package/dist/adapter/converters/shader-formats.js.map +1 -0
- package/dist/adapter/converters/vertex-formats.js +1 -0
- package/dist/adapter/converters/vertex-formats.js.map +1 -0
- package/dist/adapter/converters/webgl-texture-table.d.ts +40 -0
- package/dist/adapter/converters/webgl-texture-table.d.ts.map +1 -0
- package/dist/adapter/converters/webgl-texture-table.js +304 -0
- package/dist/adapter/converters/webgl-texture-table.js.map +1 -0
- package/dist/adapter/device-helpers/webgl-device-features.d.ts.map +1 -1
- package/dist/adapter/device-helpers/webgl-device-features.js +2 -2
- package/dist/adapter/device-helpers/webgl-device-features.js.map +1 -0
- package/dist/adapter/device-helpers/webgl-device-info.js +1 -0
- package/dist/adapter/device-helpers/webgl-device-info.js.map +1 -0
- package/dist/adapter/device-helpers/webgl-device-limits.js +1 -0
- package/dist/adapter/device-helpers/webgl-device-limits.js.map +1 -0
- package/dist/adapter/helpers/decode-webgl-types.js +1 -0
- package/dist/adapter/helpers/decode-webgl-types.js.map +1 -0
- package/dist/adapter/helpers/format-utils.d.ts.map +1 -0
- package/dist/{classic → adapter/helpers}/format-utils.js +7 -0
- package/dist/adapter/helpers/format-utils.js.map +1 -0
- package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
- package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.js +5 -4
- package/dist/adapter/helpers/get-shader-layout.js.map +1 -0
- package/dist/adapter/helpers/parse-shader-compiler-log.js +1 -0
- package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -0
- package/dist/adapter/helpers/set-uniform.js +1 -0
- package/dist/adapter/helpers/set-uniform.js.map +1 -0
- package/dist/adapter/helpers/typed-array-utils.d.ts.map +1 -0
- package/dist/{classic → adapter/helpers}/typed-array-utils.js +1 -0
- package/dist/adapter/helpers/typed-array-utils.js.map +1 -0
- package/dist/adapter/helpers/webgl-texture-utils.d.ts +96 -25
- package/dist/adapter/helpers/webgl-texture-utils.d.ts.map +1 -1
- package/dist/adapter/helpers/webgl-texture-utils.js +225 -236
- package/dist/adapter/helpers/webgl-texture-utils.js.map +1 -0
- package/dist/adapter/helpers/webgl-topology-utils.js +1 -0
- package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -0
- package/dist/adapter/resources/webgl-buffer.js +1 -0
- package/dist/adapter/resources/webgl-buffer.js.map +1 -0
- package/dist/adapter/resources/webgl-command-buffer.d.ts +59 -2
- package/dist/adapter/resources/webgl-command-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.js +89 -32
- package/dist/adapter/resources/webgl-command-buffer.js.map +1 -0
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.js +4 -0
- package/dist/adapter/resources/webgl-command-encoder.js.map +1 -0
- package/dist/adapter/resources/webgl-external-texture.js +15 -0
- package/dist/adapter/resources/webgl-external-texture.js.map +1 -0
- package/dist/adapter/resources/webgl-framebuffer.d.ts +33 -35
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +68 -73
- package/dist/adapter/resources/webgl-framebuffer.js.map +1 -0
- package/dist/adapter/resources/webgl-query-set.js +1 -0
- package/dist/adapter/resources/webgl-query-set.js.map +1 -0
- package/dist/adapter/resources/webgl-render-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.js +30 -17
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -0
- package/dist/adapter/resources/webgl-render-pipeline.d.ts +2 -4
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +33 -18
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -0
- package/dist/adapter/resources/webgl-sampler.js +1 -0
- package/dist/adapter/resources/webgl-sampler.js.map +1 -0
- package/dist/adapter/resources/webgl-shader.d.ts +1 -0
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +8 -5
- package/dist/adapter/resources/webgl-shader.js.map +1 -0
- package/dist/adapter/resources/webgl-texture-view.js +1 -0
- package/dist/adapter/resources/webgl-texture-view.js.map +1 -0
- package/dist/adapter/resources/webgl-texture.d.ts +32 -20
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +158 -218
- package/dist/adapter/resources/webgl-texture.js.map +1 -0
- package/dist/adapter/resources/webgl-transform-feedback.js +1 -0
- package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -0
- package/dist/adapter/resources/webgl-vertex-array.js +1 -0
- package/dist/adapter/resources/webgl-vertex-array.js.map +1 -0
- package/dist/adapter/webgl-adapter.d.ts.map +1 -1
- package/dist/adapter/webgl-adapter.js +5 -10
- package/dist/adapter/webgl-adapter.js.map +1 -0
- package/dist/adapter/webgl-canvas-context.d.ts +1 -0
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
- package/dist/adapter/webgl-canvas-context.js +4 -0
- package/dist/adapter/webgl-canvas-context.js.map +1 -0
- package/dist/adapter/webgl-device.d.ts +11 -14
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +60 -39
- package/dist/adapter/webgl-device.js.map +1 -0
- package/dist/context/debug/spector-types.js +2 -1
- package/dist/context/debug/spector-types.js.map +1 -0
- package/dist/context/debug/spector.d.ts +5 -5
- package/dist/context/debug/spector.d.ts.map +1 -1
- package/dist/context/debug/spector.js +7 -6
- package/dist/context/debug/spector.js.map +1 -0
- package/dist/context/debug/webgl-developer-tools.d.ts +2 -3
- package/dist/context/debug/webgl-developer-tools.d.ts.map +1 -1
- package/dist/context/debug/webgl-developer-tools.js +7 -19
- package/dist/context/debug/webgl-developer-tools.js.map +1 -0
- package/dist/context/helpers/create-browser-context.d.ts +6 -22
- package/dist/context/helpers/create-browser-context.d.ts.map +1 -1
- package/dist/context/helpers/create-browser-context.js +41 -32
- package/dist/context/helpers/create-browser-context.js.map +1 -0
- package/dist/context/helpers/webgl-context-data.js +1 -0
- package/dist/context/helpers/webgl-context-data.js.map +1 -0
- package/dist/context/helpers/webgl-extensions.js +1 -0
- package/dist/context/helpers/webgl-extensions.js.map +1 -0
- package/dist/context/parameters/unified-parameter-api.js +1 -0
- package/dist/context/parameters/unified-parameter-api.js.map +1 -0
- package/dist/context/parameters/webgl-parameter-tables.d.ts +1 -1
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +3 -2
- package/dist/context/parameters/webgl-parameter-tables.js.map +1 -0
- package/dist/context/polyfills/polyfill-webgl1-extensions.js +1 -0
- package/dist/context/polyfills/polyfill-webgl1-extensions.js.map +1 -0
- package/dist/context/state-tracker/deep-array-equal.js +1 -0
- package/dist/context/state-tracker/deep-array-equal.js.map +1 -0
- package/dist/context/state-tracker/webgl-state-tracker.js +1 -0
- package/dist/context/state-tracker/webgl-state-tracker.js.map +1 -0
- package/dist/context/state-tracker/with-parameters.js +1 -0
- package/dist/context/state-tracker/with-parameters.js.map +1 -0
- package/dist/deprecated/accessor.d.ts.map +1 -0
- package/dist/{classic → deprecated}/accessor.js +37 -1
- package/dist/deprecated/accessor.js.map +1 -0
- package/dist/dist.dev.js +2217 -2366
- package/dist/dist.min.js +2 -2
- package/dist/index.cjs +2098 -2240
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -4
- package/dist/index.js.map +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/fill-array.d.ts +4 -4
- package/dist/utils/fill-array.d.ts.map +1 -1
- package/dist/utils/fill-array.js +1 -0
- package/dist/utils/fill-array.js.map +1 -0
- package/dist/utils/load-script.js +1 -0
- package/dist/utils/load-script.js.map +1 -0
- package/dist/utils/split-uniforms-and-bindings.d.ts +1 -1
- package/dist/utils/split-uniforms-and-bindings.d.ts.map +1 -1
- package/dist/utils/split-uniforms-and-bindings.js +1 -0
- package/dist/utils/split-uniforms-and-bindings.js.map +1 -0
- package/dist/utils/uid.js +1 -0
- package/dist/utils/uid.js.map +1 -0
- package/package.json +5 -5
- package/src/adapter/converters/device-parameters.ts +3 -3
- package/src/adapter/converters/sampler-parameters.ts +6 -4
- package/src/adapter/converters/webgl-texture-table.ts +404 -0
- package/src/adapter/device-helpers/webgl-device-features.ts +5 -2
- package/src/{classic → adapter/helpers}/format-utils.ts +6 -0
- package/src/adapter/helpers/get-shader-layout.ts +7 -4
- package/src/adapter/helpers/webgl-texture-utils.ts +400 -57
- package/src/adapter/resources/webgl-command-buffer.ts +125 -41
- package/src/adapter/resources/webgl-command-encoder.ts +6 -0
- package/src/adapter/resources/webgl-external-texture.ts +14 -0
- package/src/adapter/resources/webgl-framebuffer.ts +77 -83
- package/src/adapter/resources/webgl-render-pass.ts +52 -41
- package/src/adapter/resources/webgl-render-pipeline.ts +44 -21
- package/src/adapter/resources/webgl-shader.ts +8 -6
- package/src/adapter/resources/webgl-texture.ts +183 -250
- package/src/adapter/webgl-adapter.ts +4 -12
- package/src/adapter/webgl-canvas-context.ts +4 -0
- package/src/adapter/webgl-device.ts +100 -72
- package/src/context/debug/spector-types.ts +1 -1
- package/src/context/debug/spector.ts +11 -11
- package/src/context/debug/webgl-developer-tools.ts +8 -31
- package/src/context/helpers/create-browser-context.ts +53 -63
- package/src/context/parameters/webgl-parameter-tables.ts +2 -2
- package/src/{classic → deprecated}/accessor.ts +44 -3
- package/src/index.ts +2 -5
- package/src/utils/fill-array.ts +4 -4
- package/src/utils/split-uniforms-and-bindings.ts +3 -3
- package/dist/adapter/converters/texture-formats.d.ts +0 -83
- package/dist/adapter/converters/texture-formats.d.ts.map +0 -1
- package/dist/adapter/converters/texture-formats.js +0 -511
- package/dist/classic/accessor.d.ts.map +0 -1
- package/dist/classic/clear.d.ts +0 -22
- package/dist/classic/clear.d.ts.map +0 -1
- package/dist/classic/clear.js +0 -86
- package/dist/classic/copy-and-blit.d.ts +0 -64
- package/dist/classic/copy-and-blit.d.ts.map +0 -1
- package/dist/classic/copy-and-blit.js +0 -194
- package/dist/classic/format-utils.d.ts.map +0 -1
- package/dist/classic/typed-array-utils.d.ts.map +0 -1
- package/src/adapter/converters/texture-formats.ts +0 -657
- package/src/classic/clear.ts +0 -115
- package/src/classic/copy-and-blit.ts +0 -323
- /package/dist/{classic → adapter/helpers}/format-utils.d.ts +0 -0
- /package/dist/{classic → adapter/helpers}/typed-array-utils.d.ts +0 -0
- /package/dist/{classic → deprecated}/accessor.d.ts +0 -0
- /package/src/{classic → adapter/helpers}/typed-array-utils.ts +0 -0
|
@@ -2,14 +2,21 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
|
-
import type {
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
import type {
|
|
6
|
+
RenderPipelineProps,
|
|
7
|
+
RenderPipelineParameters,
|
|
8
|
+
PrimitiveTopology,
|
|
9
|
+
ShaderLayout,
|
|
10
|
+
UniformValue,
|
|
11
|
+
Binding,
|
|
12
|
+
RenderPass,
|
|
13
|
+
VertexArray
|
|
14
|
+
} from '@luma.gl/core';
|
|
8
15
|
import {RenderPipeline, log} from '@luma.gl/core';
|
|
9
16
|
// import {getAttributeInfosFromLayouts} from '@luma.gl/core';
|
|
10
17
|
import {GL} from '@luma.gl/constants';
|
|
11
18
|
|
|
12
|
-
import {
|
|
19
|
+
import {getShaderLayoutFromGLSL} from '../helpers/get-shader-layout';
|
|
13
20
|
import {withDeviceAndGLParameters} from '../converters/device-parameters';
|
|
14
21
|
import {setUniform} from '../helpers/set-uniform';
|
|
15
22
|
import {splitUniformsAndBindings} from '../../utils/split-uniforms-and-bindings';
|
|
@@ -73,7 +80,7 @@ export class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
73
80
|
this._linkShaders();
|
|
74
81
|
|
|
75
82
|
log.time(1, `RenderPipeline ${this.id} - shaderLayout introspection`)();
|
|
76
|
-
this.introspectedLayout =
|
|
83
|
+
this.introspectedLayout = getShaderLayoutFromGLSL(this.device.gl, this.handle);
|
|
77
84
|
log.timeEnd(1, `RenderPipeline ${this.id} - shaderLayout introspection`)();
|
|
78
85
|
|
|
79
86
|
// Merge provided layout with introspected layout
|
|
@@ -103,12 +110,12 @@ export class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
103
110
|
// and reference them as `app` from both GLSL and JS.
|
|
104
111
|
// TODO - this is rather hacky - we could also remap the name directly in the shader layout.
|
|
105
112
|
const binding =
|
|
106
|
-
this.shaderLayout.bindings.find(
|
|
107
|
-
this.shaderLayout.bindings.find(
|
|
113
|
+
this.shaderLayout.bindings.find(binding_ => binding_.name === name) ||
|
|
114
|
+
this.shaderLayout.bindings.find(binding_ => binding_.name === `${name}Uniforms`);
|
|
108
115
|
|
|
109
116
|
if (!binding) {
|
|
110
117
|
const validBindings = this.shaderLayout.bindings
|
|
111
|
-
.map(
|
|
118
|
+
.map(binding_ => `"${binding_.name}"`)
|
|
112
119
|
.join(', ');
|
|
113
120
|
if (!options?.disableWarnings) {
|
|
114
121
|
log.warn(
|
|
@@ -310,22 +317,37 @@ export class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
310
317
|
}
|
|
311
318
|
|
|
312
319
|
/** Report link status. First, check for shader compilation failures if linking fails */
|
|
313
|
-
_reportLinkStatus(status: 'success' | 'linking' | 'validation') {
|
|
320
|
+
async _reportLinkStatus(status: 'success' | 'linking' | 'validation'): Promise<void> {
|
|
314
321
|
switch (status) {
|
|
315
322
|
case 'success':
|
|
316
323
|
return;
|
|
317
324
|
|
|
318
325
|
default:
|
|
319
326
|
// First check for shader compilation failures if linking fails
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
327
|
+
switch (this.vs.compilationStatus) {
|
|
328
|
+
case 'error':
|
|
329
|
+
this.vs.debugShader();
|
|
330
|
+
throw new Error(`Error during compilation of shader ${this.vs.id}`);
|
|
331
|
+
case 'pending':
|
|
332
|
+
this.vs.asyncCompilationStatus.then(() => this.vs.debugShader());
|
|
333
|
+
break;
|
|
334
|
+
case 'success':
|
|
335
|
+
break;
|
|
323
336
|
}
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
337
|
+
|
|
338
|
+
switch (this.fs?.compilationStatus) {
|
|
339
|
+
case 'error':
|
|
340
|
+
this.fs.debugShader();
|
|
341
|
+
throw new Error(`Error during compilation of shader ${this.fs.id}`);
|
|
342
|
+
case 'pending':
|
|
343
|
+
this.fs.asyncCompilationStatus.then(() => this.fs.debugShader());
|
|
344
|
+
break;
|
|
345
|
+
case 'success':
|
|
346
|
+
break;
|
|
327
347
|
}
|
|
328
|
-
|
|
348
|
+
|
|
349
|
+
const linkErrorLog = this.device.gl.getProgramInfoLog(this.handle);
|
|
350
|
+
throw new Error(`Error during ${status}: ${linkErrorLog}`);
|
|
329
351
|
}
|
|
330
352
|
}
|
|
331
353
|
|
|
@@ -392,11 +414,12 @@ export class WEBGLRenderPipeline extends RenderPipeline {
|
|
|
392
414
|
}
|
|
393
415
|
}
|
|
394
416
|
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
}
|
|
417
|
+
// TODO - remove this should be handled by ExternalTexture
|
|
418
|
+
// for (const [, texture] of Object.entries(this.bindings)) {
|
|
419
|
+
// if (texture instanceof WEBGLTexture) {
|
|
420
|
+
// texture.update();
|
|
421
|
+
// }
|
|
422
|
+
// }
|
|
400
423
|
|
|
401
424
|
return texturesRenderable;
|
|
402
425
|
}
|
|
@@ -39,14 +39,18 @@ export class WEBGLShader extends Shader {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
get asyncCompilationStatus(): Promise<'pending' | 'success' | 'error'> {
|
|
43
|
+
return this._waitForCompilationComplete().then(() => this.compilationStatus);
|
|
44
|
+
}
|
|
45
|
+
|
|
42
46
|
override async getCompilationInfo(): Promise<readonly CompilerMessage[]> {
|
|
43
47
|
await this._waitForCompilationComplete();
|
|
44
48
|
return this.getCompilationInfoSync();
|
|
45
49
|
}
|
|
46
50
|
|
|
47
51
|
override getCompilationInfoSync(): readonly CompilerMessage[] {
|
|
48
|
-
const
|
|
49
|
-
return
|
|
52
|
+
const shaderLog = this.device.gl.getShaderInfoLog(this.handle);
|
|
53
|
+
return shaderLog ? parseShaderCompilerLog(shaderLog) : [];
|
|
50
54
|
}
|
|
51
55
|
|
|
52
56
|
override getTranslatedSource(): string | null {
|
|
@@ -59,16 +63,14 @@ export class WEBGLShader extends Shader {
|
|
|
59
63
|
|
|
60
64
|
/** Compile a shader and get compilation status */
|
|
61
65
|
protected async _compile(source: string): Promise<void> {
|
|
62
|
-
|
|
63
|
-
source.startsWith('#version ') ? source : `#version 300 es\n${source}`;
|
|
64
|
-
source = addGLSLVersion(source);
|
|
66
|
+
source = source.startsWith('#version ') ? source : `#version 300 es\n${source}`;
|
|
65
67
|
|
|
66
68
|
const {gl} = this.device;
|
|
67
69
|
gl.shaderSource(this.handle, source);
|
|
68
70
|
gl.compileShader(this.handle);
|
|
69
71
|
|
|
70
72
|
// For performance reasons, avoid checking shader compilation errors on production
|
|
71
|
-
if (
|
|
73
|
+
if (!this.device.props.debug) {
|
|
72
74
|
this.compilationStatus = 'pending';
|
|
73
75
|
return;
|
|
74
76
|
}
|