@luma.gl/webgl 9.0.0-alpha.46 → 9.0.0-alpha.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +34 -0
- package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
- package/dist/adapter/converters/device-parameters.js +73 -40
- package/dist/adapter/converters/device-parameters.js.map +1 -1
- package/dist/adapter/converters/sampler-parameters.js +60 -61
- package/dist/adapter/converters/sampler-parameters.js.map +1 -1
- package/dist/adapter/converters/shader-formats.js +12 -13
- package/dist/adapter/converters/shader-formats.js.map +1 -1
- package/dist/adapter/converters/texture-formats.js +179 -180
- package/dist/adapter/converters/texture-formats.js.map +1 -1
- package/dist/adapter/converters/vertex-formats.js +20 -21
- package/dist/adapter/converters/vertex-formats.js.map +1 -1
- package/dist/adapter/device-helpers/device-features.js +2 -2
- package/dist/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/adapter/device-helpers/device-limits.js +53 -54
- package/dist/adapter/device-helpers/device-limits.js.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.js +23 -12
- package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/adapter/helpers/decode-webgl-types.js +31 -32
- package/dist/adapter/helpers/decode-webgl-types.js.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.js +29 -30
- package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
- package/dist/adapter/helpers/parse-shader-compiler-log.js +16 -4
- package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
- package/dist/adapter/helpers/set-uniform.js +40 -41
- package/dist/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/adapter/helpers/webgl-topology-utils.js +38 -39
- package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js +5 -6
- package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +14 -15
- package/dist/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-buffer.js +25 -26
- package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +22 -23
- package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pass.js +2 -3
- package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +7 -8
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/adapter/resources/webgl-sampler.js +2 -3
- package/dist/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/adapter/resources/webgl-shader.js +3 -4
- package/dist/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +27 -28
- package/dist/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/adapter/resources/webgl-transform-feedback.d.ts +5 -11
- package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-transform-feedback.js +16 -13
- package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -1
- package/dist/adapter/resources/webgl-vertex-array.d.ts +2 -2
- package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-vertex-array.js +5 -6
- package/dist/adapter/resources/webgl-vertex-array.js.map +1 -1
- package/dist/adapter/webgl-device.js.map +1 -1
- package/dist/classic/accessor.js +4 -5
- package/dist/classic/accessor.js.map +1 -1
- package/dist/classic/copy-and-blit.js +16 -17
- package/dist/classic/copy-and-blit.js.map +1 -1
- package/dist/classic/format-utils.js +14 -15
- package/dist/classic/format-utils.js.map +1 -1
- package/dist/classic/typed-array-utils.d.ts +2 -0
- package/dist/classic/typed-array-utils.d.ts.map +1 -1
- package/dist/classic/typed-array-utils.js +18 -19
- package/dist/classic/typed-array-utils.js.map +1 -1
- package/dist/context/debug/webgl-developer-tools.js +0 -1
- package/dist/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +256 -257
- package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/context/polyfill/get-parameter-polyfill.js +34 -35
- package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/context/polyfill/polyfill-table.js +9 -10
- package/dist/context/polyfill/polyfill-table.js.map +1 -1
- package/dist/context/polyfill/polyfill-vertex-array-object.js +17 -17
- package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
- package/dist/dist.dev.js +987 -2700
- package/dist/index.cjs +390 -267
- package/dist.min.js +39 -28
- package/package.json +5 -5
- package/src/adapter/converters/device-parameters.ts +40 -25
- package/src/adapter/device-helpers/get-device-info.ts +36 -8
- package/src/adapter/helpers/parse-shader-compiler-log.ts +21 -7
- package/src/adapter/resources/webgl-transform-feedback.ts +13 -16
- package/src/adapter/resources/webgl-vertex-array.ts +4 -3
- package/src/adapter/webgl-device.ts +3 -2
- package/src/classic/typed-array-utils.ts +2 -0
|
@@ -21,17 +21,17 @@ function wrapGLError(gl) {
|
|
|
21
21
|
let err;
|
|
22
22
|
do {
|
|
23
23
|
err = f.apply(gl);
|
|
24
|
-
if (err !==
|
|
24
|
+
if (err !== 0) {
|
|
25
25
|
glErrorShadow[err] = true;
|
|
26
26
|
}
|
|
27
|
-
} while (err !==
|
|
27
|
+
} while (err !== 0);
|
|
28
28
|
for (err in glErrorShadow) {
|
|
29
29
|
if (glErrorShadow[err]) {
|
|
30
30
|
delete glErrorShadow[err];
|
|
31
31
|
return parseInt(err, 10);
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
-
return
|
|
34
|
+
return 0;
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
37
|
const WebGLVertexArrayObjectOES = function WebGLVertexArrayObjectOES(ext) {
|
|
@@ -51,7 +51,7 @@ WebGLVertexArrayObjectOES.VertexAttrib = function VertexAttrib(gl) {
|
|
|
51
51
|
this.enabled = false;
|
|
52
52
|
this.buffer = null;
|
|
53
53
|
this.size = 4;
|
|
54
|
-
this.type =
|
|
54
|
+
this.type = 5126;
|
|
55
55
|
this.normalized = false;
|
|
56
56
|
this.stride = 16;
|
|
57
57
|
this.offset = 0;
|
|
@@ -98,10 +98,10 @@ const OESVertexArrayObject = function OESVertexArrayObject(gl) {
|
|
|
98
98
|
};
|
|
99
99
|
gl.bindBuffer = function bindBuffer(target, buffer) {
|
|
100
100
|
switch (target) {
|
|
101
|
-
case
|
|
101
|
+
case 34962:
|
|
102
102
|
self.currentArrayBuffer = buffer;
|
|
103
103
|
break;
|
|
104
|
-
case
|
|
104
|
+
case 34963:
|
|
105
105
|
self.currentVertexArrayObject.elementArrayBuffer = buffer;
|
|
106
106
|
break;
|
|
107
107
|
default:
|
|
@@ -112,17 +112,17 @@ const OESVertexArrayObject = function OESVertexArrayObject(gl) {
|
|
|
112
112
|
const vao = self.currentVertexArrayObject;
|
|
113
113
|
const attrib = vao.attribs[index];
|
|
114
114
|
switch (pname) {
|
|
115
|
-
case
|
|
115
|
+
case 34975:
|
|
116
116
|
return attrib.buffer;
|
|
117
|
-
case
|
|
117
|
+
case 34338:
|
|
118
118
|
return attrib.enabled;
|
|
119
|
-
case
|
|
119
|
+
case 34339:
|
|
120
120
|
return attrib.size;
|
|
121
|
-
case
|
|
121
|
+
case 34340:
|
|
122
122
|
return attrib.stride;
|
|
123
|
-
case
|
|
123
|
+
case 34341:
|
|
124
124
|
return attrib.type;
|
|
125
|
-
case
|
|
125
|
+
case 34922:
|
|
126
126
|
return attrib.normalized;
|
|
127
127
|
default:
|
|
128
128
|
return original.getVertexAttrib.apply(this, arguments);
|
|
@@ -161,7 +161,7 @@ OESVertexArrayObject.prototype.reset_ = function reset_() {
|
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
163
|
const gl = this.gl;
|
|
164
|
-
this.maxVertexAttribs = gl.getParameter(
|
|
164
|
+
this.maxVertexAttribs = gl.getParameter(34921);
|
|
165
165
|
this.defaultVertexArrayObject = new WebGLVertexArrayObjectOES(this);
|
|
166
166
|
this.currentVertexArrayObject = null;
|
|
167
167
|
this.currentArrayBuffer = null;
|
|
@@ -191,7 +191,7 @@ OESVertexArrayObject.prototype.isVertexArrayOES = function isVertexArrayOES(arra
|
|
|
191
191
|
OESVertexArrayObject.prototype.bindVertexArrayOES = function bindVertexArrayOES(arrayObject) {
|
|
192
192
|
const gl = this.gl;
|
|
193
193
|
if (arrayObject && !arrayObject.isAlive) {
|
|
194
|
-
synthesizeGLError(
|
|
194
|
+
synthesizeGLError(1282, 'bindVertexArrayOES: attempt to bind deleted arrayObject');
|
|
195
195
|
return;
|
|
196
196
|
}
|
|
197
197
|
const original = this.original;
|
|
@@ -203,7 +203,7 @@ OESVertexArrayObject.prototype.bindVertexArrayOES = function bindVertexArrayOES(
|
|
|
203
203
|
return;
|
|
204
204
|
}
|
|
205
205
|
if (!oldVAO || newVAO.elementArrayBuffer !== oldVAO.elementArrayBuffer) {
|
|
206
|
-
original.bindBuffer.call(gl,
|
|
206
|
+
original.bindBuffer.call(gl, 34963, newVAO.elementArrayBuffer);
|
|
207
207
|
}
|
|
208
208
|
let currentBinding = this.currentArrayBuffer;
|
|
209
209
|
const maxAttrib = Math.max(oldVAO ? oldVAO.maxAttrib : 0, newVAO.maxAttrib);
|
|
@@ -221,7 +221,7 @@ OESVertexArrayObject.prototype.bindVertexArrayOES = function bindVertexArrayOES(
|
|
|
221
221
|
let bufferChanged = false;
|
|
222
222
|
if (!oldVAO || attrib.buffer !== oldAttrib.buffer) {
|
|
223
223
|
if (currentBinding !== attrib.buffer) {
|
|
224
|
-
original.bindBuffer.call(gl,
|
|
224
|
+
original.bindBuffer.call(gl, 34962, attrib.buffer);
|
|
225
225
|
currentBinding = attrib.buffer;
|
|
226
226
|
}
|
|
227
227
|
bufferChanged = true;
|
|
@@ -232,7 +232,7 @@ OESVertexArrayObject.prototype.bindVertexArrayOES = function bindVertexArrayOES(
|
|
|
232
232
|
}
|
|
233
233
|
}
|
|
234
234
|
if (this.currentArrayBuffer !== currentBinding) {
|
|
235
|
-
original.bindBuffer.call(gl,
|
|
235
|
+
original.bindBuffer.call(gl, 34962, this.currentArrayBuffer);
|
|
236
236
|
}
|
|
237
237
|
};
|
|
238
238
|
export function polyfillVertexArrayObject(gl) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"polyfill-vertex-array-object.js","names":["glErrorShadow","error","msg","globalThis","console","log","synthesizeGLError","err","opt_msg","undefined","wrapGLError","gl","f","getError","apply","NO_ERROR","parseInt","WebGLVertexArrayObjectOES","ext","isAlive","hasBeenBound","elementArrayBuffer","attribs","Array","maxVertexAttribs","n","length","attrib","VertexAttrib","maxAttrib","enabled","buffer","size","type","FLOAT","normalized","stride","offset","cached","recache","prototype","join","OESVertexArrayObject","self","original","getParameter","enableVertexAttribArray","disableVertexAttribArray","bindBuffer","getVertexAttrib","vertexAttribPointer","pname","VERTEX_ARRAY_BINDING_OES","currentVertexArrayObject","defaultVertexArrayObject","arguments","index","vao","Math","max","target","ARRAY_BUFFER","currentArrayBuffer","ELEMENT_ARRAY_BUFFER","VERTEX_ATTRIB_ARRAY_BUFFER_BINDING","VERTEX_ATTRIB_ARRAY_ENABLED","VERTEX_ATTRIB_ARRAY_SIZE","VERTEX_ATTRIB_ARRAY_STRIDE","VERTEX_ATTRIB_ARRAY_TYPE","VERTEX_ATTRIB_ARRAY_NORMALIZED","indx","instrumentExtension","canvas","addEventListener","reset_","contextWasLost","vertexArrayObjects","ii","MAX_VERTEX_ATTRIBS","bindVertexArrayOES","createVertexArrayOES","arrayObject","push","deleteVertexArrayOES","splice","indexOf","isVertexArrayOES","INVALID_OPERATION","oldVAO","newVAO","call","currentBinding","oldAttrib","bufferChanged","polyfillVertexArrayObject","createVertexArray","original_getSupportedExtensions","getSupportedExtensions","list","original_getExtension","getExtension","name","__OESVertexArrayObject"],"sources":["../../../src/context/polyfill/polyfill-vertex-array-object.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\n/*\n ** Copyright (c) 2015 The Khronos Group Inc.\n **\n ** Permission is hereby granted, free of charge, to any person obtaining a\n ** copy of this software and/or associated documentation files (the\n ** \"Materials\"), to deal in the Materials without restriction, including\n ** without limitation the rights to use, copy, modify, merge, publish,\n ** distribute, sublicense, and/or sell copies of the Materials, and to\n ** permit persons to whom the Materials are furnished to do so, subject to\n ** the following conditions:\n **\n ** The above copyright notice and this permission notice shall be included\n ** in all copies or substantial portions of the Materials.\n **\n ** THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.\n */\n\n// Modified to use ES6 and polyfill a provided context rather than\n// the global class.\n\n// @ts-nocheck external code\n/* eslint-disable */ \n\nconst glErrorShadow = {};\n\nfunction error(msg) {\n if (globalThis.console && globalThis.console.error) {\n globalThis.console.error(msg);\n }\n}\n\nfunction log(msg) {\n if (globalThis.console && globalThis.console.log) {\n globalThis.console.log(msg);\n }\n}\n\nfunction synthesizeGLError(err, opt_msg) {\n glErrorShadow[err] = true;\n if (opt_msg !== undefined) {\n error(opt_msg);\n }\n}\n\nfunction wrapGLError(gl) {\n const f = gl.getError;\n gl.getError = function getError() {\n let err;\n do {\n err = f.apply(gl);\n if (err !== gl.NO_ERROR) {\n glErrorShadow[err] = true;\n }\n } while (err !== gl.NO_ERROR);\n\n for (err in glErrorShadow) {\n if (glErrorShadow[err]) {\n delete glErrorShadow[err];\n return parseInt(err, 10);\n }\n }\n\n return gl.NO_ERROR;\n };\n}\n\nconst WebGLVertexArrayObjectOES = function WebGLVertexArrayObjectOES(ext) {\n const gl = ext.gl;\n\n this.ext = ext;\n this.isAlive = true;\n this.hasBeenBound = false;\n\n this.elementArrayBuffer = null;\n this.attribs = new Array(ext.maxVertexAttribs);\n for (let n = 0; n < this.attribs.length; n++) {\n const attrib = new WebGLVertexArrayObjectOES.VertexAttrib(gl);\n this.attribs[n] = attrib;\n }\n\n this.maxAttrib = 0;\n};\n\nWebGLVertexArrayObjectOES.VertexAttrib = function VertexAttrib(gl) {\n this.enabled = false;\n this.buffer = null;\n this.size = 4;\n this.type = gl.FLOAT;\n this.normalized = false;\n this.stride = 16;\n this.offset = 0;\n\n this.cached = '';\n this.recache();\n};\nWebGLVertexArrayObjectOES.VertexAttrib.prototype.recache = function recache() {\n this.cached = [this.size, this.type, this.normalized, this.stride, this.offset].join(':');\n};\n\nconst OESVertexArrayObject = function OESVertexArrayObject(gl) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n this.gl = gl;\n\n wrapGLError(gl);\n\n const original = (this.original = {\n getParameter: gl.getParameter,\n enableVertexAttribArray: gl.enableVertexAttribArray,\n disableVertexAttribArray: gl.disableVertexAttribArray,\n bindBuffer: gl.bindBuffer,\n getVertexAttrib: gl.getVertexAttrib,\n vertexAttribPointer: gl.vertexAttribPointer\n });\n\n gl.getParameter = function getParameter(pname) {\n if (pname === self.VERTEX_ARRAY_BINDING_OES) {\n if (self.currentVertexArrayObject === self.defaultVertexArrayObject) {\n return null;\n }\n return self.currentVertexArrayObject;\n }\n return original.getParameter.apply(this, arguments);\n };\n\n gl.enableVertexAttribArray = function enableVertexAttribArray(index) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, index);\n const attrib = vao.attribs[index];\n attrib.enabled = true;\n return original.enableVertexAttribArray.apply(this, arguments);\n };\n gl.disableVertexAttribArray = function disableVertexAttribArray(index) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, index);\n const attrib = vao.attribs[index];\n attrib.enabled = false;\n return original.disableVertexAttribArray.apply(this, arguments);\n };\n\n gl.bindBuffer = function bindBuffer(target, buffer) {\n switch (target) {\n case gl.ARRAY_BUFFER:\n self.currentArrayBuffer = buffer;\n break;\n case gl.ELEMENT_ARRAY_BUFFER:\n self.currentVertexArrayObject.elementArrayBuffer = buffer;\n break;\n default:\n }\n return original.bindBuffer.apply(this, arguments);\n };\n\n gl.getVertexAttrib = function getVertexAttrib(index, pname) {\n const vao = self.currentVertexArrayObject;\n const attrib = vao.attribs[index];\n switch (pname) {\n case gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:\n return attrib.buffer;\n case gl.VERTEX_ATTRIB_ARRAY_ENABLED:\n return attrib.enabled;\n case gl.VERTEX_ATTRIB_ARRAY_SIZE:\n return attrib.size;\n case gl.VERTEX_ATTRIB_ARRAY_STRIDE:\n return attrib.stride;\n case gl.VERTEX_ATTRIB_ARRAY_TYPE:\n return attrib.type;\n case gl.VERTEX_ATTRIB_ARRAY_NORMALIZED:\n return attrib.normalized;\n default:\n return original.getVertexAttrib.apply(this, arguments);\n }\n };\n\n // eslint-disable-next-line max-params\n gl.vertexAttribPointer = function vertexAttribPointer(\n indx,\n size,\n type,\n normalized,\n stride,\n offset\n ) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, indx);\n const attrib = vao.attribs[indx];\n attrib.buffer = self.currentArrayBuffer;\n attrib.size = size;\n attrib.type = type;\n attrib.normalized = normalized;\n attrib.stride = stride;\n attrib.offset = offset;\n attrib.recache();\n return original.vertexAttribPointer.apply(this, arguments);\n };\n\n if (gl.instrumentExtension) {\n gl.instrumentExtension(this, 'OES_vertex_array_object');\n }\n\n // undefined for headless gl\n if (gl.canvas) {\n gl.canvas.addEventListener(\n 'webglcontextrestored',\n () => {\n log('OESVertexArrayObject emulation library context restored');\n self.reset_();\n },\n true\n );\n }\n\n this.reset_();\n};\n\nOESVertexArrayObject.prototype.VERTEX_ARRAY_BINDING_OES = 0x85b5;\n\nOESVertexArrayObject.prototype.reset_ = function reset_() {\n const contextWasLost = this.vertexArrayObjects !== undefined;\n if (contextWasLost) {\n for (let ii = 0; ii < this.vertexArrayObjects.length; ++ii) {\n this.vertexArrayObjects.isAlive = false;\n }\n }\n const gl = this.gl;\n this.maxVertexAttribs = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n\n this.defaultVertexArrayObject = new WebGLVertexArrayObjectOES(this);\n this.currentVertexArrayObject = null;\n this.currentArrayBuffer = null;\n this.vertexArrayObjects = [this.defaultVertexArrayObject];\n\n this.bindVertexArrayOES(null);\n};\n\nOESVertexArrayObject.prototype.createVertexArrayOES = function createVertexArrayOES() {\n const arrayObject = new WebGLVertexArrayObjectOES(this);\n this.vertexArrayObjects.push(arrayObject);\n return arrayObject;\n};\n\nOESVertexArrayObject.prototype.deleteVertexArrayOES = function deleteVertexArrayOES(arrayObject) {\n arrayObject.isAlive = false;\n this.vertexArrayObjects.splice(this.vertexArrayObjects.indexOf(arrayObject), 1);\n if (this.currentVertexArrayObject === arrayObject) {\n this.bindVertexArrayOES(null);\n }\n};\n\nOESVertexArrayObject.prototype.isVertexArrayOES = function isVertexArrayOES(arrayObject) {\n if (arrayObject && arrayObject instanceof WebGLVertexArrayObjectOES) {\n if (arrayObject.hasBeenBound && arrayObject.ext === this) {\n return true;\n }\n }\n return false;\n};\n\nOESVertexArrayObject.prototype.bindVertexArrayOES = function bindVertexArrayOES(arrayObject) {\n const gl = this.gl;\n if (arrayObject && !arrayObject.isAlive) {\n synthesizeGLError(\n gl.INVALID_OPERATION,\n 'bindVertexArrayOES: attempt to bind deleted arrayObject'\n );\n return;\n }\n const original = this.original;\n\n const oldVAO = this.currentVertexArrayObject;\n this.currentVertexArrayObject = arrayObject || this.defaultVertexArrayObject;\n this.currentVertexArrayObject.hasBeenBound = true;\n const newVAO = this.currentVertexArrayObject;\n\n if (oldVAO === newVAO) {\n return;\n }\n\n if (!oldVAO || newVAO.elementArrayBuffer !== oldVAO.elementArrayBuffer) {\n original.bindBuffer.call(gl, gl.ELEMENT_ARRAY_BUFFER, newVAO.elementArrayBuffer);\n }\n\n let currentBinding = this.currentArrayBuffer;\n const maxAttrib = Math.max(oldVAO ? oldVAO.maxAttrib : 0, newVAO.maxAttrib);\n for (let n = 0; n <= maxAttrib; n++) {\n const attrib = newVAO.attribs[n];\n const oldAttrib = oldVAO ? oldVAO.attribs[n] : null;\n\n if (!oldVAO || attrib.enabled !== oldAttrib.enabled) {\n if (attrib.enabled) {\n original.enableVertexAttribArray.call(gl, n);\n } else {\n original.disableVertexAttribArray.call(gl, n);\n }\n }\n\n if (attrib.enabled) {\n let bufferChanged = false;\n if (!oldVAO || attrib.buffer !== oldAttrib.buffer) {\n if (currentBinding !== attrib.buffer) {\n original.bindBuffer.call(gl, gl.ARRAY_BUFFER, attrib.buffer);\n currentBinding = attrib.buffer;\n }\n bufferChanged = true;\n }\n\n if (bufferChanged || attrib.cached !== oldAttrib.cached) {\n original.vertexAttribPointer.call(\n gl,\n n,\n attrib.size,\n attrib.type,\n attrib.normalized,\n attrib.stride,\n attrib.offset\n );\n }\n }\n }\n\n if (this.currentArrayBuffer !== currentBinding) {\n original.bindBuffer.call(gl, gl.ARRAY_BUFFER, this.currentArrayBuffer);\n }\n};\n\nexport function polyfillVertexArrayObject(gl) {\n if (typeof gl.createVertexArray === 'function') {\n // VAOs directly supported on object (i.e. WebGL 2 context)\n return;\n }\n\n const original_getSupportedExtensions = gl.getSupportedExtensions;\n gl.getSupportedExtensions = function getSupportedExtensions() {\n const list = original_getSupportedExtensions.call(this) || [];\n if (list.indexOf('OES_vertex_array_object') < 0) {\n list.push('OES_vertex_array_object');\n }\n return list;\n };\n\n const original_getExtension = gl.getExtension;\n gl.getExtension = function getExtension(name) {\n const ext = original_getExtension.call(this, name);\n if (ext) {\n return ext;\n }\n if (name !== 'OES_vertex_array_object') {\n return null;\n }\n\n if (!gl.__OESVertexArrayObject) {\n this.__OESVertexArrayObject = new OESVertexArrayObject(this);\n }\n return this.__OESVertexArrayObject;\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"polyfill-vertex-array-object.js","names":["glErrorShadow","error","msg","globalThis","console","log","synthesizeGLError","err","opt_msg","undefined","wrapGLError","gl","f","getError","apply","parseInt","WebGLVertexArrayObjectOES","ext","isAlive","hasBeenBound","elementArrayBuffer","attribs","Array","maxVertexAttribs","n","length","attrib","VertexAttrib","maxAttrib","enabled","buffer","size","type","normalized","stride","offset","cached","recache","prototype","join","OESVertexArrayObject","self","original","getParameter","enableVertexAttribArray","disableVertexAttribArray","bindBuffer","getVertexAttrib","vertexAttribPointer","pname","VERTEX_ARRAY_BINDING_OES","currentVertexArrayObject","defaultVertexArrayObject","arguments","index","vao","Math","max","target","currentArrayBuffer","indx","instrumentExtension","canvas","addEventListener","reset_","contextWasLost","vertexArrayObjects","ii","bindVertexArrayOES","createVertexArrayOES","arrayObject","push","deleteVertexArrayOES","splice","indexOf","isVertexArrayOES","oldVAO","newVAO","call","currentBinding","oldAttrib","bufferChanged","polyfillVertexArrayObject","createVertexArray","original_getSupportedExtensions","getSupportedExtensions","list","original_getExtension","getExtension","name","__OESVertexArrayObject"],"sources":["../../../src/context/polyfill/polyfill-vertex-array-object.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\n/*\n ** Copyright (c) 2015 The Khronos Group Inc.\n **\n ** Permission is hereby granted, free of charge, to any person obtaining a\n ** copy of this software and/or associated documentation files (the\n ** \"Materials\"), to deal in the Materials without restriction, including\n ** without limitation the rights to use, copy, modify, merge, publish,\n ** distribute, sublicense, and/or sell copies of the Materials, and to\n ** permit persons to whom the Materials are furnished to do so, subject to\n ** the following conditions:\n **\n ** The above copyright notice and this permission notice shall be included\n ** in all copies or substantial portions of the Materials.\n **\n ** THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.\n */\n\n// Modified to use ES6 and polyfill a provided context rather than\n// the global class.\n\n// @ts-nocheck external code\n/* eslint-disable */ \n\nconst glErrorShadow = {};\n\nfunction error(msg) {\n if (globalThis.console && globalThis.console.error) {\n globalThis.console.error(msg);\n }\n}\n\nfunction log(msg) {\n if (globalThis.console && globalThis.console.log) {\n globalThis.console.log(msg);\n }\n}\n\nfunction synthesizeGLError(err, opt_msg) {\n glErrorShadow[err] = true;\n if (opt_msg !== undefined) {\n error(opt_msg);\n }\n}\n\nfunction wrapGLError(gl) {\n const f = gl.getError;\n gl.getError = function getError() {\n let err;\n do {\n err = f.apply(gl);\n if (err !== gl.NO_ERROR) {\n glErrorShadow[err] = true;\n }\n } while (err !== gl.NO_ERROR);\n\n for (err in glErrorShadow) {\n if (glErrorShadow[err]) {\n delete glErrorShadow[err];\n return parseInt(err, 10);\n }\n }\n\n return gl.NO_ERROR;\n };\n}\n\nconst WebGLVertexArrayObjectOES = function WebGLVertexArrayObjectOES(ext) {\n const gl = ext.gl;\n\n this.ext = ext;\n this.isAlive = true;\n this.hasBeenBound = false;\n\n this.elementArrayBuffer = null;\n this.attribs = new Array(ext.maxVertexAttribs);\n for (let n = 0; n < this.attribs.length; n++) {\n const attrib = new WebGLVertexArrayObjectOES.VertexAttrib(gl);\n this.attribs[n] = attrib;\n }\n\n this.maxAttrib = 0;\n};\n\nWebGLVertexArrayObjectOES.VertexAttrib = function VertexAttrib(gl) {\n this.enabled = false;\n this.buffer = null;\n this.size = 4;\n this.type = gl.FLOAT;\n this.normalized = false;\n this.stride = 16;\n this.offset = 0;\n\n this.cached = '';\n this.recache();\n};\nWebGLVertexArrayObjectOES.VertexAttrib.prototype.recache = function recache() {\n this.cached = [this.size, this.type, this.normalized, this.stride, this.offset].join(':');\n};\n\nconst OESVertexArrayObject = function OESVertexArrayObject(gl) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n this.gl = gl;\n\n wrapGLError(gl);\n\n const original = (this.original = {\n getParameter: gl.getParameter,\n enableVertexAttribArray: gl.enableVertexAttribArray,\n disableVertexAttribArray: gl.disableVertexAttribArray,\n bindBuffer: gl.bindBuffer,\n getVertexAttrib: gl.getVertexAttrib,\n vertexAttribPointer: gl.vertexAttribPointer\n });\n\n gl.getParameter = function getParameter(pname) {\n if (pname === self.VERTEX_ARRAY_BINDING_OES) {\n if (self.currentVertexArrayObject === self.defaultVertexArrayObject) {\n return null;\n }\n return self.currentVertexArrayObject;\n }\n return original.getParameter.apply(this, arguments);\n };\n\n gl.enableVertexAttribArray = function enableVertexAttribArray(index) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, index);\n const attrib = vao.attribs[index];\n attrib.enabled = true;\n return original.enableVertexAttribArray.apply(this, arguments);\n };\n gl.disableVertexAttribArray = function disableVertexAttribArray(index) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, index);\n const attrib = vao.attribs[index];\n attrib.enabled = false;\n return original.disableVertexAttribArray.apply(this, arguments);\n };\n\n gl.bindBuffer = function bindBuffer(target, buffer) {\n switch (target) {\n case gl.ARRAY_BUFFER:\n self.currentArrayBuffer = buffer;\n break;\n case gl.ELEMENT_ARRAY_BUFFER:\n self.currentVertexArrayObject.elementArrayBuffer = buffer;\n break;\n default:\n }\n return original.bindBuffer.apply(this, arguments);\n };\n\n gl.getVertexAttrib = function getVertexAttrib(index, pname) {\n const vao = self.currentVertexArrayObject;\n const attrib = vao.attribs[index];\n switch (pname) {\n case gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:\n return attrib.buffer;\n case gl.VERTEX_ATTRIB_ARRAY_ENABLED:\n return attrib.enabled;\n case gl.VERTEX_ATTRIB_ARRAY_SIZE:\n return attrib.size;\n case gl.VERTEX_ATTRIB_ARRAY_STRIDE:\n return attrib.stride;\n case gl.VERTEX_ATTRIB_ARRAY_TYPE:\n return attrib.type;\n case gl.VERTEX_ATTRIB_ARRAY_NORMALIZED:\n return attrib.normalized;\n default:\n return original.getVertexAttrib.apply(this, arguments);\n }\n };\n\n // eslint-disable-next-line max-params\n gl.vertexAttribPointer = function vertexAttribPointer(\n indx,\n size,\n type,\n normalized,\n stride,\n offset\n ) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, indx);\n const attrib = vao.attribs[indx];\n attrib.buffer = self.currentArrayBuffer;\n attrib.size = size;\n attrib.type = type;\n attrib.normalized = normalized;\n attrib.stride = stride;\n attrib.offset = offset;\n attrib.recache();\n return original.vertexAttribPointer.apply(this, arguments);\n };\n\n if (gl.instrumentExtension) {\n gl.instrumentExtension(this, 'OES_vertex_array_object');\n }\n\n // undefined for headless gl\n if (gl.canvas) {\n gl.canvas.addEventListener(\n 'webglcontextrestored',\n () => {\n log('OESVertexArrayObject emulation library context restored');\n self.reset_();\n },\n true\n );\n }\n\n this.reset_();\n};\n\nOESVertexArrayObject.prototype.VERTEX_ARRAY_BINDING_OES = 0x85b5;\n\nOESVertexArrayObject.prototype.reset_ = function reset_() {\n const contextWasLost = this.vertexArrayObjects !== undefined;\n if (contextWasLost) {\n for (let ii = 0; ii < this.vertexArrayObjects.length; ++ii) {\n this.vertexArrayObjects.isAlive = false;\n }\n }\n const gl = this.gl;\n this.maxVertexAttribs = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n\n this.defaultVertexArrayObject = new WebGLVertexArrayObjectOES(this);\n this.currentVertexArrayObject = null;\n this.currentArrayBuffer = null;\n this.vertexArrayObjects = [this.defaultVertexArrayObject];\n\n this.bindVertexArrayOES(null);\n};\n\nOESVertexArrayObject.prototype.createVertexArrayOES = function createVertexArrayOES() {\n const arrayObject = new WebGLVertexArrayObjectOES(this);\n this.vertexArrayObjects.push(arrayObject);\n return arrayObject;\n};\n\nOESVertexArrayObject.prototype.deleteVertexArrayOES = function deleteVertexArrayOES(arrayObject) {\n arrayObject.isAlive = false;\n this.vertexArrayObjects.splice(this.vertexArrayObjects.indexOf(arrayObject), 1);\n if (this.currentVertexArrayObject === arrayObject) {\n this.bindVertexArrayOES(null);\n }\n};\n\nOESVertexArrayObject.prototype.isVertexArrayOES = function isVertexArrayOES(arrayObject) {\n if (arrayObject && arrayObject instanceof WebGLVertexArrayObjectOES) {\n if (arrayObject.hasBeenBound && arrayObject.ext === this) {\n return true;\n }\n }\n return false;\n};\n\nOESVertexArrayObject.prototype.bindVertexArrayOES = function bindVertexArrayOES(arrayObject) {\n const gl = this.gl;\n if (arrayObject && !arrayObject.isAlive) {\n synthesizeGLError(\n gl.INVALID_OPERATION,\n 'bindVertexArrayOES: attempt to bind deleted arrayObject'\n );\n return;\n }\n const original = this.original;\n\n const oldVAO = this.currentVertexArrayObject;\n this.currentVertexArrayObject = arrayObject || this.defaultVertexArrayObject;\n this.currentVertexArrayObject.hasBeenBound = true;\n const newVAO = this.currentVertexArrayObject;\n\n if (oldVAO === newVAO) {\n return;\n }\n\n if (!oldVAO || newVAO.elementArrayBuffer !== oldVAO.elementArrayBuffer) {\n original.bindBuffer.call(gl, gl.ELEMENT_ARRAY_BUFFER, newVAO.elementArrayBuffer);\n }\n\n let currentBinding = this.currentArrayBuffer;\n const maxAttrib = Math.max(oldVAO ? oldVAO.maxAttrib : 0, newVAO.maxAttrib);\n for (let n = 0; n <= maxAttrib; n++) {\n const attrib = newVAO.attribs[n];\n const oldAttrib = oldVAO ? oldVAO.attribs[n] : null;\n\n if (!oldVAO || attrib.enabled !== oldAttrib.enabled) {\n if (attrib.enabled) {\n original.enableVertexAttribArray.call(gl, n);\n } else {\n original.disableVertexAttribArray.call(gl, n);\n }\n }\n\n if (attrib.enabled) {\n let bufferChanged = false;\n if (!oldVAO || attrib.buffer !== oldAttrib.buffer) {\n if (currentBinding !== attrib.buffer) {\n original.bindBuffer.call(gl, gl.ARRAY_BUFFER, attrib.buffer);\n currentBinding = attrib.buffer;\n }\n bufferChanged = true;\n }\n\n if (bufferChanged || attrib.cached !== oldAttrib.cached) {\n original.vertexAttribPointer.call(\n gl,\n n,\n attrib.size,\n attrib.type,\n attrib.normalized,\n attrib.stride,\n attrib.offset\n );\n }\n }\n }\n\n if (this.currentArrayBuffer !== currentBinding) {\n original.bindBuffer.call(gl, gl.ARRAY_BUFFER, this.currentArrayBuffer);\n }\n};\n\nexport function polyfillVertexArrayObject(gl) {\n if (typeof gl.createVertexArray === 'function') {\n // VAOs directly supported on object (i.e. WebGL 2 context)\n return;\n }\n\n const original_getSupportedExtensions = gl.getSupportedExtensions;\n gl.getSupportedExtensions = function getSupportedExtensions() {\n const list = original_getSupportedExtensions.call(this) || [];\n if (list.indexOf('OES_vertex_array_object') < 0) {\n list.push('OES_vertex_array_object');\n }\n return list;\n };\n\n const original_getExtension = gl.getExtension;\n gl.getExtension = function getExtension(name) {\n const ext = original_getExtension.call(this, name);\n if (ext) {\n return ext;\n }\n if (name !== 'OES_vertex_array_object') {\n return null;\n }\n\n if (!gl.__OESVertexArrayObject) {\n this.__OESVertexArrayObject = new OESVertexArrayObject(this);\n }\n return this.__OESVertexArrayObject;\n };\n}\n"],"mappings":"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"}
|