@luma.gl/webgl 8.6.0-alpha.2 → 8.6.0-alpha.3
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 +8 -1
- package/dist/adapter/converters/set-device-parameters.d.ts +5 -0
- package/dist/adapter/converters/set-device-parameters.d.ts.map +1 -0
- package/dist/adapter/converters/set-device-parameters.js +124 -0
- package/dist/adapter/converters/set-device-parameters.js.map +1 -0
- package/dist/adapter/converters/webgpu-texture-formats.d.ts +281 -0
- package/dist/adapter/converters/webgpu-texture-formats.d.ts.map +1 -0
- package/dist/adapter/converters/webgpu-texture-formats.js +285 -0
- package/dist/adapter/converters/webgpu-texture-formats.js.map +1 -0
- package/dist/{device → adapter/device-helpers}/device-features.d.ts +0 -0
- package/dist/adapter/device-helpers/device-features.d.ts.map +1 -0
- package/dist/{esm/device → adapter/device-helpers}/device-features.js +2 -2
- package/dist/adapter/device-helpers/device-features.js.map +1 -0
- package/dist/{device → adapter/device-helpers}/device-limits.d.ts +0 -0
- package/dist/adapter/device-helpers/device-limits.d.ts.map +1 -0
- package/dist/{esm/device → adapter/device-helpers}/device-limits.js +1 -1
- package/dist/adapter/device-helpers/device-limits.js.map +1 -0
- package/dist/{device → adapter/device-helpers}/get-device-info.d.ts +0 -0
- package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -0
- package/dist/{device → adapter/device-helpers}/get-device-info.js +1 -1
- package/dist/adapter/device-helpers/get-device-info.js.map +1 -0
- package/dist/{webgl-utils → adapter/device-helpers}/is-old-ie.d.ts +0 -0
- package/dist/adapter/device-helpers/is-old-ie.d.ts.map +1 -0
- package/dist/{esm/webgl-utils → adapter/device-helpers}/is-old-ie.js +0 -0
- package/dist/adapter/device-helpers/is-old-ie.js.map +1 -0
- package/dist/{device → adapter}/webgl-device.d.ts +3 -3
- package/dist/adapter/webgl-device.d.ts.map +1 -0
- package/dist/{esm/device → adapter}/webgl-device.js +6 -6
- package/dist/adapter/webgl-device.js.map +1 -0
- package/dist/adapter/webgl-shader.d.ts +18 -0
- package/dist/adapter/webgl-shader.d.ts.map +1 -0
- package/dist/adapter/webgl-shader.js +82 -0
- package/dist/adapter/webgl-shader.js.map +1 -0
- package/dist/classes/framebuffer.js +1 -1
- package/dist/classes/framebuffer.js.map +1 -1
- package/dist/classes/program-configuration.d.ts +14 -17
- package/dist/classes/program-configuration.d.ts.map +1 -1
- package/dist/classes/program-configuration.js +10 -97
- package/dist/classes/program-configuration.js.map +1 -1
- package/dist/classes/program.d.ts +20 -15
- package/dist/classes/program.d.ts.map +1 -1
- package/dist/classes/program.js +31 -22
- package/dist/classes/program.js.map +1 -1
- package/dist/classes/query.js +1 -1
- package/dist/classes/query.js.map +1 -1
- package/dist/classes/renderbuffer.js +1 -1
- package/dist/classes/renderbuffer.js.map +1 -1
- package/dist/classes/{webgl-shader.d.ts → shader.d.ts} +4 -15
- package/dist/classes/shader.d.ts.map +1 -0
- package/dist/{esm/classes/webgl-shader.js → classes/shader.js} +6 -81
- package/dist/classes/shader.js.map +1 -0
- package/dist/classes/texture-3d.js +1 -1
- package/dist/classes/texture-3d.js.map +1 -1
- package/dist/classes/texture-cube.js.map +1 -1
- package/dist/classes/texture.d.ts +1 -1
- package/dist/classes/texture.d.ts.map +1 -1
- package/dist/classes/texture.js +1 -1
- package/dist/classes/texture.js.map +1 -1
- package/dist/classes/transform-feedback.js +1 -1
- package/dist/classes/transform-feedback.js.map +1 -1
- package/dist/classes/vertex-array-object.d.ts +6 -5
- package/dist/classes/vertex-array-object.d.ts.map +1 -1
- package/dist/classes/vertex-array-object.js +5 -5
- package/dist/classes/vertex-array-object.js.map +1 -1
- package/dist/classes/vertex-array.d.ts +13 -13
- package/dist/classes/vertex-array.d.ts.map +1 -1
- package/dist/classes/vertex-array.js +2 -2
- package/dist/classes/vertex-array.js.map +1 -1
- package/dist/classes/webgl-buffer.d.ts +1 -1
- package/dist/classes/webgl-buffer.d.ts.map +1 -1
- package/dist/classes/webgl-buffer.js +1 -1
- package/dist/classes/webgl-buffer.js.map +1 -1
- package/dist/classes/webgl-resource.d.ts +1 -1
- package/dist/classes/webgl-resource.d.ts.map +1 -1
- package/dist/classes/webgl-resource.js +1 -1
- package/dist/classes/webgl-resource.js.map +1 -1
- package/dist/context/parameters/unified-parameter-api.d.ts +2 -1
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/context/parameters/webgl-parameters.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameters.js.map +1 -1
- package/dist/es5/adapter/converters/set-device-parameters.js +138 -0
- package/dist/es5/adapter/converters/set-device-parameters.js.map +1 -0
- package/dist/es5/adapter/converters/webgpu-texture-formats.js +296 -0
- package/dist/es5/adapter/converters/webgpu-texture-formats.js.map +1 -0
- package/dist/es5/{device → adapter/device-helpers}/device-features.js +2 -2
- package/dist/es5/adapter/device-helpers/device-features.js.map +1 -0
- package/dist/es5/{device → adapter/device-helpers}/device-limits.js +1 -1
- package/dist/es5/adapter/device-helpers/device-limits.js.map +1 -0
- package/dist/es5/{device → adapter/device-helpers}/get-device-info.js +1 -1
- package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -0
- package/dist/es5/{webgl-utils → adapter/device-helpers}/is-old-ie.js +0 -0
- package/dist/es5/adapter/device-helpers/is-old-ie.js.map +1 -0
- package/dist/es5/{device → adapter}/webgl-device.js +6 -6
- package/dist/es5/adapter/webgl-device.js.map +1 -0
- package/dist/es5/adapter/webgl-shader.js +155 -0
- package/dist/es5/adapter/webgl-shader.js.map +1 -0
- package/dist/es5/classes/framebuffer.js +1 -1
- package/dist/es5/classes/framebuffer.js.map +1 -1
- package/dist/es5/classes/program-configuration.js +34 -101
- package/dist/es5/classes/program-configuration.js.map +1 -1
- package/dist/es5/classes/program.js +38 -27
- package/dist/es5/classes/program.js.map +1 -1
- package/dist/es5/classes/query.js +1 -1
- package/dist/es5/classes/query.js.map +1 -1
- package/dist/es5/classes/renderbuffer.js +1 -1
- package/dist/es5/classes/renderbuffer.js.map +1 -1
- package/dist/es5/classes/{webgl-shader.js → shader.js} +18 -132
- package/dist/es5/classes/shader.js.map +1 -0
- package/dist/es5/classes/texture-3d.js +1 -1
- package/dist/es5/classes/texture-3d.js.map +1 -1
- package/dist/es5/classes/texture-cube.js.map +1 -1
- package/dist/es5/classes/texture.js +1 -1
- package/dist/es5/classes/texture.js.map +1 -1
- package/dist/es5/classes/transform-feedback.js +1 -1
- package/dist/es5/classes/transform-feedback.js.map +1 -1
- package/dist/es5/classes/vertex-array-object.js +5 -5
- package/dist/es5/classes/vertex-array-object.js.map +1 -1
- package/dist/es5/classes/vertex-array.js +5 -5
- package/dist/es5/classes/vertex-array.js.map +1 -1
- package/dist/es5/classes/webgl-buffer.js +1 -1
- package/dist/es5/classes/webgl-buffer.js.map +1 -1
- package/dist/es5/classes/webgl-resource.js +1 -1
- package/dist/es5/classes/webgl-resource.js.map +1 -1
- package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/es5/context/parameters/webgl-parameters.js.map +1 -1
- package/dist/es5/helpers/get-program-bindings.js +274 -0
- package/dist/es5/helpers/get-program-bindings.js.map +1 -0
- package/dist/es5/helpers/program-bindings.js +2 -0
- package/dist/es5/helpers/program-bindings.js.map +1 -0
- package/dist/es5/index.js +31 -15
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/init.js +1 -1
- package/dist/es5/init.js.map +1 -1
- package/dist/es5/types/accessor.d.ts +29 -0
- package/dist/esm/adapter/converters/set-device-parameters.js +124 -0
- package/dist/esm/adapter/converters/set-device-parameters.js.map +1 -0
- package/dist/esm/adapter/converters/webgpu-texture-formats.js +285 -0
- package/dist/esm/adapter/converters/webgpu-texture-formats.js.map +1 -0
- package/dist/{device → esm/adapter/device-helpers}/device-features.js +2 -2
- package/dist/esm/adapter/device-helpers/device-features.js.map +1 -0
- package/dist/{device → esm/adapter/device-helpers}/device-limits.js +1 -1
- package/dist/esm/adapter/device-helpers/device-limits.js.map +1 -0
- package/dist/esm/{device → adapter/device-helpers}/get-device-info.js +1 -1
- package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -0
- package/dist/{webgl-utils → esm/adapter/device-helpers}/is-old-ie.js +0 -0
- package/dist/esm/adapter/device-helpers/is-old-ie.js.map +1 -0
- package/dist/{device → esm/adapter}/webgl-device.js +6 -6
- package/dist/esm/adapter/webgl-device.js.map +1 -0
- package/dist/esm/adapter/webgl-shader.js +82 -0
- package/dist/esm/adapter/webgl-shader.js.map +1 -0
- package/dist/esm/classes/framebuffer.js +1 -1
- package/dist/esm/classes/framebuffer.js.map +1 -1
- package/dist/esm/classes/program-configuration.js +10 -97
- package/dist/esm/classes/program-configuration.js.map +1 -1
- package/dist/esm/classes/program.js +31 -22
- package/dist/esm/classes/program.js.map +1 -1
- package/dist/esm/classes/query.js +1 -1
- package/dist/esm/classes/query.js.map +1 -1
- package/dist/esm/classes/renderbuffer.js +1 -1
- package/dist/esm/classes/renderbuffer.js.map +1 -1
- package/dist/{classes/webgl-shader.js → esm/classes/shader.js} +6 -81
- package/dist/esm/classes/shader.js.map +1 -0
- package/dist/esm/classes/texture-3d.js +1 -1
- package/dist/esm/classes/texture-3d.js.map +1 -1
- package/dist/esm/classes/texture-cube.js.map +1 -1
- package/dist/esm/classes/texture.js +1 -1
- package/dist/esm/classes/texture.js.map +1 -1
- package/dist/esm/classes/transform-feedback.js +1 -1
- package/dist/esm/classes/transform-feedback.js.map +1 -1
- package/dist/esm/classes/vertex-array-object.js +5 -5
- package/dist/esm/classes/vertex-array-object.js.map +1 -1
- package/dist/esm/classes/vertex-array.js +2 -2
- package/dist/esm/classes/vertex-array.js.map +1 -1
- package/dist/esm/classes/webgl-buffer.js +1 -1
- package/dist/esm/classes/webgl-buffer.js.map +1 -1
- package/dist/esm/classes/webgl-resource.js +1 -1
- package/dist/esm/classes/webgl-resource.js.map +1 -1
- package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/esm/context/parameters/webgl-parameters.js.map +1 -1
- package/dist/esm/helpers/get-program-bindings.js +228 -0
- package/dist/esm/helpers/get-program-bindings.js.map +1 -0
- package/dist/esm/helpers/program-bindings.js +2 -0
- package/dist/esm/helpers/program-bindings.js.map +1 -0
- package/dist/esm/index.js +4 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/init.js +1 -1
- package/dist/esm/init.js.map +1 -1
- package/dist/esm/types/accessor.d.ts +29 -0
- package/dist/helpers/get-program-bindings.d.ts +8 -0
- package/dist/helpers/get-program-bindings.d.ts.map +1 -0
- package/dist/helpers/get-program-bindings.js +228 -0
- package/dist/helpers/get-program-bindings.js.map +1 -0
- package/dist/helpers/program-bindings.d.ts +41 -0
- package/dist/helpers/program-bindings.d.ts.map +1 -0
- package/dist/helpers/program-bindings.js +2 -0
- package/dist/helpers/program-bindings.js.map +1 -0
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/init.js +1 -1
- package/dist/init.js.map +1 -1
- package/dist/types/accessor.d.ts +29 -0
- package/package.json +5 -5
- package/src/adapter/converters/set-device-parameters.ts +182 -0
- package/src/adapter/converters/webgpu-texture-formats.ts +167 -0
- package/src/{device → adapter/device-helpers}/device-features.ts +4 -4
- package/src/{device → adapter/device-helpers}/device-limits.ts +1 -1
- package/src/{device → adapter/device-helpers}/get-device-info.ts +2 -2
- package/src/{webgl-utils → adapter/device-helpers}/is-old-ie.ts +0 -0
- package/src/{device → adapter}/webgl-device.ts +9 -9
- package/src/adapter/webgl-shader.ts +84 -0
- package/src/classes/framebuffer.ts +1 -1
- package/src/classes/program-configuration.ts +28 -81
- package/src/classes/program.ts +70 -62
- package/src/classes/query.ts +1 -1
- package/src/classes/renderbuffer.ts +1 -1
- package/src/classes/{webgl-shader.ts → shader.ts} +6 -79
- package/src/classes/texture-3d.ts +1 -1
- package/src/classes/texture-cube.ts +1 -1
- package/src/classes/texture.ts +1 -1
- package/src/classes/transform-feedback.ts +1 -1
- package/src/classes/vertex-array-object.ts +9 -8
- package/src/classes/vertex-array.ts +14 -8
- package/src/classes/webgl-buffer.ts +1 -1
- package/src/classes/webgl-resource.ts +1 -1
- package/src/context/parameters/unified-parameter-api.ts +3 -2
- package/src/context/parameters/webgl-parameters.ts +115 -115
- package/src/helpers/get-program-bindings.ts +244 -0
- package/src/helpers/program-bindings.ts +46 -0
- package/src/index.ts +12 -6
- package/src/init.ts +1 -1
- package/src/types/accessor.d.ts +29 -0
- package/dist/api/device2.d.ts +0 -52
- package/dist/api/device2.d.ts.map +0 -1
- package/dist/api/device2.js +0 -23
- package/dist/api/device2.js.map +0 -1
- package/dist/classes/webgl-shader.d.ts.map +0 -1
- package/dist/classes/webgl-shader.js.map +0 -1
- package/dist/device/check-glsl-extension.d.ts +0 -4
- package/dist/device/check-glsl-extension.d.ts.map +0 -1
- package/dist/device/check-glsl-extension.js +0 -22
- package/dist/device/check-glsl-extension.js.map +0 -1
- package/dist/device/device-features.d.ts.map +0 -1
- package/dist/device/device-features.js.map +0 -1
- package/dist/device/device-limits.d.ts.map +0 -1
- package/dist/device/device-limits.js.map +0 -1
- package/dist/device/get-device-info.d.ts.map +0 -1
- package/dist/device/get-device-info.js.map +0 -1
- package/dist/device/webgl-device.d.ts.map +0 -1
- package/dist/device/webgl-device.js.map +0 -1
- package/dist/es5/api/device2.js +0 -42
- package/dist/es5/api/device2.js.map +0 -1
- package/dist/es5/classes/webgl-shader.js.map +0 -1
- package/dist/es5/device/check-glsl-extension.js +0 -33
- package/dist/es5/device/check-glsl-extension.js.map +0 -1
- package/dist/es5/device/device-features.js.map +0 -1
- package/dist/es5/device/device-limits.js.map +0 -1
- package/dist/es5/device/get-device-info.js.map +0 -1
- package/dist/es5/device/webgl-device.js.map +0 -1
- package/dist/es5/webgl-utils/is-old-ie.js.map +0 -1
- package/dist/es5/webgl-utils/webgl-info.ts.disabled +0 -135
- package/dist/esm/api/device2.js +0 -23
- package/dist/esm/api/device2.js.map +0 -1
- package/dist/esm/classes/webgl-shader.js.map +0 -1
- package/dist/esm/device/check-glsl-extension.js +0 -22
- package/dist/esm/device/check-glsl-extension.js.map +0 -1
- package/dist/esm/device/device-features.js.map +0 -1
- package/dist/esm/device/device-limits.js.map +0 -1
- package/dist/esm/device/get-device-info.js.map +0 -1
- package/dist/esm/device/webgl-device.js.map +0 -1
- package/dist/esm/webgl-utils/is-old-ie.js.map +0 -1
- package/dist/esm/webgl-utils/webgl-info.ts.disabled +0 -135
- package/dist/webgl-utils/is-old-ie.d.ts.map +0 -1
- package/dist/webgl-utils/is-old-ie.js.map +0 -1
- package/dist/webgl-utils/webgl-info.ts.disabled +0 -135
- package/src/api/device2.ts +0 -71
- package/src/device/check-glsl-extension.ts +0 -44
- package/src/webgl-utils/webgl-info.ts.disabled +0 -135
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.getProgramBindings = getProgramBindings;
|
|
9
|
+
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
|
|
14
|
+
var _constants = _interopRequireDefault(require("@luma.gl/constants"));
|
|
15
|
+
|
|
16
|
+
var _webglChecks = require("../context/context/webgl-checks");
|
|
17
|
+
|
|
18
|
+
var _accessor = _interopRequireDefault(require("../classes/accessor"));
|
|
19
|
+
|
|
20
|
+
var _attributeUtils = require("../webgl-utils/attribute-utils");
|
|
21
|
+
|
|
22
|
+
var _SAMPLER_UNIFORMS_GL_;
|
|
23
|
+
|
|
24
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
25
|
+
|
|
26
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
27
|
+
|
|
28
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
29
|
+
|
|
30
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
31
|
+
|
|
32
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
33
|
+
|
|
34
|
+
function getProgramBindings(gl, program) {
|
|
35
|
+
var config = {
|
|
36
|
+
attributes: readAttributeBindings(gl, program),
|
|
37
|
+
uniforms: readUniformBindings(gl, program),
|
|
38
|
+
uniformBlocks: readUniformBlocks(gl, program),
|
|
39
|
+
varyings: readVaryings(gl, program)
|
|
40
|
+
};
|
|
41
|
+
Object.seal(config);
|
|
42
|
+
return config;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function readAttributeBindings(gl, program) {
|
|
46
|
+
var attributes = [];
|
|
47
|
+
var count = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
|
|
48
|
+
|
|
49
|
+
for (var index = 0; index < count; index++) {
|
|
50
|
+
var _gl$getActiveAttrib = gl.getActiveAttrib(program, index),
|
|
51
|
+
name = _gl$getActiveAttrib.name,
|
|
52
|
+
compositeType = _gl$getActiveAttrib.type,
|
|
53
|
+
size = _gl$getActiveAttrib.size;
|
|
54
|
+
|
|
55
|
+
var location = gl.getAttribLocation(program, name);
|
|
56
|
+
|
|
57
|
+
if (location >= 0) {
|
|
58
|
+
var _decomposeCompositeGL = (0, _attributeUtils.decomposeCompositeGLType)(compositeType),
|
|
59
|
+
type = _decomposeCompositeGL.type,
|
|
60
|
+
components = _decomposeCompositeGL.components;
|
|
61
|
+
|
|
62
|
+
var accessor = {
|
|
63
|
+
type: type,
|
|
64
|
+
size: size * components
|
|
65
|
+
};
|
|
66
|
+
inferProperties(location, name, accessor);
|
|
67
|
+
var attributeInfo = {
|
|
68
|
+
location: location,
|
|
69
|
+
name: name,
|
|
70
|
+
accessor: new _accessor.default(accessor)
|
|
71
|
+
};
|
|
72
|
+
attributes.push(attributeInfo);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
attributes.sort(function (a, b) {
|
|
77
|
+
return a.location - b.location;
|
|
78
|
+
});
|
|
79
|
+
return attributes;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function readVaryings(gl, program) {
|
|
83
|
+
if (!(0, _webglChecks.isWebGL2)(gl)) {
|
|
84
|
+
return [];
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
var varyings = [];
|
|
88
|
+
var count = gl.getProgramParameter(program, gl.TRANSFORM_FEEDBACK_VARYINGS);
|
|
89
|
+
|
|
90
|
+
for (var location = 0; location < count; location++) {
|
|
91
|
+
var _gl$getTransformFeedb = gl.getTransformFeedbackVarying(program, location),
|
|
92
|
+
name = _gl$getTransformFeedb.name,
|
|
93
|
+
compositeType = _gl$getTransformFeedb.type,
|
|
94
|
+
size = _gl$getTransformFeedb.size;
|
|
95
|
+
|
|
96
|
+
var _decomposeCompositeGL2 = (0, _attributeUtils.decomposeCompositeGLType)(compositeType),
|
|
97
|
+
type = _decomposeCompositeGL2.type,
|
|
98
|
+
components = _decomposeCompositeGL2.components;
|
|
99
|
+
|
|
100
|
+
var accessor = new _accessor.default({
|
|
101
|
+
type: type,
|
|
102
|
+
size: size * components
|
|
103
|
+
});
|
|
104
|
+
var varying = {
|
|
105
|
+
location: location,
|
|
106
|
+
name: name,
|
|
107
|
+
accessor: accessor
|
|
108
|
+
};
|
|
109
|
+
varyings.push(varying);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
varyings.sort(function (a, b) {
|
|
113
|
+
return a.location - b.location;
|
|
114
|
+
});
|
|
115
|
+
return varyings;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function readUniformBindings(gl, program) {
|
|
119
|
+
var uniforms = [];
|
|
120
|
+
var uniformCount = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);
|
|
121
|
+
|
|
122
|
+
for (var i = 0; i < uniformCount; i++) {
|
|
123
|
+
var _gl$getActiveUniform = gl.getActiveUniform(program, i),
|
|
124
|
+
rawName = _gl$getActiveUniform.name,
|
|
125
|
+
size = _gl$getActiveUniform.size,
|
|
126
|
+
type = _gl$getActiveUniform.type;
|
|
127
|
+
|
|
128
|
+
var _parseUniformName = parseUniformName(rawName),
|
|
129
|
+
name = _parseUniformName.name,
|
|
130
|
+
isArray = _parseUniformName.isArray;
|
|
131
|
+
|
|
132
|
+
var webglLocation = gl.getUniformLocation(program, name);
|
|
133
|
+
var uniformInfo = {
|
|
134
|
+
location: webglLocation,
|
|
135
|
+
name: name,
|
|
136
|
+
size: size,
|
|
137
|
+
type: type,
|
|
138
|
+
isArray: isArray
|
|
139
|
+
};
|
|
140
|
+
uniforms.push(uniformInfo);
|
|
141
|
+
|
|
142
|
+
if (uniformInfo.size > 1) {
|
|
143
|
+
for (var j = 0; j < uniformInfo.size; j++) {
|
|
144
|
+
var elementName = "".concat(name, "[").concat(j, "]");
|
|
145
|
+
webglLocation = gl.getUniformLocation(program, elementName);
|
|
146
|
+
|
|
147
|
+
var arrayElementUniformInfo = _objectSpread(_objectSpread({}, uniformInfo), {}, {
|
|
148
|
+
name: elementName,
|
|
149
|
+
location: webglLocation
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
uniforms.push(arrayElementUniformInfo);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
return uniforms;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
function readUniformBlocks(gl, program) {
|
|
161
|
+
var getBlockParameter = function getBlockParameter(blockIndex, pname) {
|
|
162
|
+
return gl.getActiveUniformBlockParameter(program, blockIndex, pname);
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
var uniformBlocks = [];
|
|
166
|
+
var blockCount = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);
|
|
167
|
+
|
|
168
|
+
for (var blockIndex = 0; blockIndex < blockCount; blockIndex++) {
|
|
169
|
+
var blockInfo = {
|
|
170
|
+
name: gl.getActiveUniformBlockName(program, blockIndex),
|
|
171
|
+
location: getBlockParameter(blockIndex, gl.UNIFORM_BLOCK_BINDING),
|
|
172
|
+
byteLength: getBlockParameter(blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE),
|
|
173
|
+
vertex: getBlockParameter(blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),
|
|
174
|
+
fragment: getBlockParameter(blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),
|
|
175
|
+
uniformCount: getBlockParameter(blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORMS),
|
|
176
|
+
uniformIndices: getBlockParameter(blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES),
|
|
177
|
+
uniforms: []
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
for (var uniformIndex = 0; uniformIndex < blockInfo.uniformCount; ++uniformIndex) {}
|
|
181
|
+
|
|
182
|
+
uniformBlocks.push(blockInfo);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
uniformBlocks.sort(function (a, b) {
|
|
186
|
+
return a.location - b.location;
|
|
187
|
+
});
|
|
188
|
+
return uniformBlocks;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
var SAMPLER_UNIFORMS_GL_TO_GPU = (_SAMPLER_UNIFORMS_GL_ = {}, (0, _defineProperty2.default)(_SAMPLER_UNIFORMS_GL_, _constants.default.SAMPLER_2D, ['2d', 'float']), (0, _defineProperty2.default)(_SAMPLER_UNIFORMS_GL_, _constants.default.SAMPLER_CUBE, ['cube', 'float']), (0, _defineProperty2.default)(_SAMPLER_UNIFORMS_GL_, _constants.default.SAMPLER_3D, ['3d', 'float']), (0, _defineProperty2.default)(_SAMPLER_UNIFORMS_GL_, _constants.default.SAMPLER_2D_SHADOW, ['3d', 'depth']), (0, _defineProperty2.default)(_SAMPLER_UNIFORMS_GL_, _constants.default.SAMPLER_2D_ARRAY, ['2d-array', 'float']), (0, _defineProperty2.default)(_SAMPLER_UNIFORMS_GL_, _constants.default.SAMPLER_2D_ARRAY_SHADOW, ['2d-array', 'depth']), (0, _defineProperty2.default)(_SAMPLER_UNIFORMS_GL_, _constants.default.SAMPLER_CUBE_SHADOW, ['cube', 'float']), (0, _defineProperty2.default)(_SAMPLER_UNIFORMS_GL_, _constants.default.INT_SAMPLER_2D, ['2d', 'sint']), (0, _defineProperty2.default)(_SAMPLER_UNIFORMS_GL_, _constants.default.INT_SAMPLER_3D, ['3d', 'sint']), (0, _defineProperty2.default)(_SAMPLER_UNIFORMS_GL_, _constants.default.INT_SAMPLER_CUBE, ['cube', 'sint']), (0, _defineProperty2.default)(_SAMPLER_UNIFORMS_GL_, _constants.default.INT_SAMPLER_2D_ARRAY, ['2d-array', 'sint']), (0, _defineProperty2.default)(_SAMPLER_UNIFORMS_GL_, _constants.default.UNSIGNED_INT_SAMPLER_2D, ['2d', 'sint']), (0, _defineProperty2.default)(_SAMPLER_UNIFORMS_GL_, _constants.default.UNSIGNED_INT_SAMPLER_3D, ['3d', 'sint']), (0, _defineProperty2.default)(_SAMPLER_UNIFORMS_GL_, _constants.default.UNSIGNED_INT_SAMPLER_CUBE, ['cube', 'sint']), (0, _defineProperty2.default)(_SAMPLER_UNIFORMS_GL_, _constants.default.UNSIGNED_INT_SAMPLER_2D_ARRAY, ['2d-array', 'sint']), _SAMPLER_UNIFORMS_GL_);
|
|
192
|
+
|
|
193
|
+
function generateWebGPUStyleBindings(config) {
|
|
194
|
+
var bindings = [];
|
|
195
|
+
|
|
196
|
+
var _iterator = _createForOfIteratorHelper(config.uniformBlocks),
|
|
197
|
+
_step;
|
|
198
|
+
|
|
199
|
+
try {
|
|
200
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
201
|
+
var blockInfo = _step.value;
|
|
202
|
+
bindings.push({
|
|
203
|
+
binding: blockInfo.location,
|
|
204
|
+
visibility: (blockInfo.vertex ? 0x1 : 0) & (blockInfo.fragment ? 0x2 : 0),
|
|
205
|
+
buffer: {
|
|
206
|
+
type: 'uniform'
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
} catch (err) {
|
|
211
|
+
_iterator.e(err);
|
|
212
|
+
} finally {
|
|
213
|
+
_iterator.f();
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
var _iterator2 = _createForOfIteratorHelper(config.uniforms),
|
|
217
|
+
_step2;
|
|
218
|
+
|
|
219
|
+
try {
|
|
220
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
221
|
+
var uniformInfo = _step2.value;
|
|
222
|
+
var sampler = SAMPLER_UNIFORMS_GL_TO_GPU[uniformInfo.type];
|
|
223
|
+
|
|
224
|
+
if (sampler) {
|
|
225
|
+
var _sampler = (0, _slicedToArray2.default)(sampler, 2),
|
|
226
|
+
viewDimension = _sampler[0],
|
|
227
|
+
sampleType = _sampler[1];
|
|
228
|
+
|
|
229
|
+
bindings.push({
|
|
230
|
+
binding: uniformInfo.location,
|
|
231
|
+
visibility: 0,
|
|
232
|
+
texture: {
|
|
233
|
+
viewDimension: viewDimension,
|
|
234
|
+
sampleType: sampleType
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
} catch (err) {
|
|
240
|
+
_iterator2.e(err);
|
|
241
|
+
} finally {
|
|
242
|
+
_iterator2.f();
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
function parseUniformName(name) {
|
|
247
|
+
if (name[name.length - 1] !== ']') {
|
|
248
|
+
return {
|
|
249
|
+
name: name,
|
|
250
|
+
length: 1,
|
|
251
|
+
isArray: false
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
var UNIFORM_NAME_REGEXP = /([^[]*)(\[[0-9]+\])?/;
|
|
256
|
+
var matches = name.match(UNIFORM_NAME_REGEXP);
|
|
257
|
+
|
|
258
|
+
if (!matches || matches.length < 2) {
|
|
259
|
+
throw new Error("Failed to parse GLSL uniform name ".concat(name));
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
return {
|
|
263
|
+
name: matches[1],
|
|
264
|
+
length: matches[2] || 1,
|
|
265
|
+
isArray: Boolean(matches[2])
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
function inferProperties(accessor, location, name) {
|
|
270
|
+
if (/instance/i.test(name)) {
|
|
271
|
+
accessor.divisor = 1;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
//# sourceMappingURL=get-program-bindings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/helpers/get-program-bindings.ts"],"names":["getProgramBindings","gl","program","config","attributes","readAttributeBindings","uniforms","readUniformBindings","uniformBlocks","readUniformBlocks","varyings","readVaryings","Object","seal","count","getProgramParameter","ACTIVE_ATTRIBUTES","index","getActiveAttrib","name","compositeType","type","size","location","getAttribLocation","components","accessor","inferProperties","attributeInfo","Accessor","push","sort","a","b","TRANSFORM_FEEDBACK_VARYINGS","getTransformFeedbackVarying","varying","uniformCount","ACTIVE_UNIFORMS","i","getActiveUniform","rawName","parseUniformName","isArray","webglLocation","getUniformLocation","uniformInfo","j","elementName","arrayElementUniformInfo","getBlockParameter","blockIndex","pname","getActiveUniformBlockParameter","blockCount","ACTIVE_UNIFORM_BLOCKS","blockInfo","getActiveUniformBlockName","UNIFORM_BLOCK_BINDING","byteLength","UNIFORM_BLOCK_DATA_SIZE","vertex","UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER","fragment","UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER","UNIFORM_BLOCK_ACTIVE_UNIFORMS","uniformIndices","UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES","uniformIndex","SAMPLER_UNIFORMS_GL_TO_GPU","GL","SAMPLER_2D","SAMPLER_CUBE","SAMPLER_3D","SAMPLER_2D_SHADOW","SAMPLER_2D_ARRAY","SAMPLER_2D_ARRAY_SHADOW","SAMPLER_CUBE_SHADOW","INT_SAMPLER_2D","INT_SAMPLER_3D","INT_SAMPLER_CUBE","INT_SAMPLER_2D_ARRAY","UNSIGNED_INT_SAMPLER_2D","UNSIGNED_INT_SAMPLER_3D","UNSIGNED_INT_SAMPLER_CUBE","UNSIGNED_INT_SAMPLER_2D_ARRAY","generateWebGPUStyleBindings","bindings","binding","visibility","buffer","sampler","viewDimension","sampleType","texture","length","UNIFORM_NAME_REGEXP","matches","match","Error","Boolean","test","divisor"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;;;;;;;;;;;AAOO,SAASA,kBAAT,CAA4BC,EAA5B,EAAwDC,OAAxD,EAAgG;AACrG,MAAMC,MAAuB,GAAG;AAC9BC,IAAAA,UAAU,EAAEC,qBAAqB,CAACJ,EAAD,EAAKC,OAAL,CADH;AAE9BI,IAAAA,QAAQ,EAAEC,mBAAmB,CAACN,EAAD,EAAKC,OAAL,CAFC;AAG9BM,IAAAA,aAAa,EAAEC,iBAAiB,CAACR,EAAD,EAAKC,OAAL,CAHF;AAI9BQ,IAAAA,QAAQ,EAAEC,YAAY,CAACV,EAAD,EAAKC,OAAL;AAJQ,GAAhC;AAOAU,EAAAA,MAAM,CAACC,IAAP,CAAYV,MAAZ;AACA,SAAOA,MAAP;AAED;;AAQD,SAASE,qBAAT,CAA+BJ,EAA/B,EAA2DC,OAA3D,EAAsG;AACpG,MAAME,UAA8B,GAAG,EAAvC;AAEA,MAAMU,KAAK,GAAGb,EAAE,CAACc,mBAAH,CAAuBb,OAAvB,EAAgCD,EAAE,CAACe,iBAAnC,CAAd;;AAEA,OAAK,IAAIC,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGH,KAA5B,EAAmCG,KAAK,EAAxC,EAA4C;AAC1C,8BAA0ChB,EAAE,CAACiB,eAAH,CAAmBhB,OAAnB,EAA4Be,KAA5B,CAA1C;AAAA,QAAOE,IAAP,uBAAOA,IAAP;AAAA,QAAmBC,aAAnB,uBAAaC,IAAb;AAAA,QAAkCC,IAAlC,uBAAkCA,IAAlC;;AACA,QAAMC,QAAQ,GAAGtB,EAAE,CAACuB,iBAAH,CAAqBtB,OAArB,EAA8BiB,IAA9B,CAAjB;;AAGA,QAAII,QAAQ,IAAI,CAAhB,EAAmB;AACjB,kCAA2B,8CAAyBH,aAAzB,CAA3B;AAAA,UAAOC,IAAP,yBAAOA,IAAP;AAAA,UAAaI,UAAb,yBAAaA,UAAb;;AACA,UAAMC,QAAQ,GAAG;AAACL,QAAAA,IAAI,EAAJA,IAAD;AAAOC,QAAAA,IAAI,EAAEA,IAAI,GAAGG;AAApB,OAAjB;AACAE,MAAAA,eAAe,CAACJ,QAAD,EAAWJ,IAAX,EAAiBO,QAAjB,CAAf;AAEA,UAAME,aAAa,GAAG;AAACL,QAAAA,QAAQ,EAARA,QAAD;AAAWJ,QAAAA,IAAI,EAAJA,IAAX;AAAiBO,QAAAA,QAAQ,EAAE,IAAIG,iBAAJ,CAAaH,QAAb;AAA3B,OAAtB;AACAtB,MAAAA,UAAU,CAAC0B,IAAX,CAAgBF,aAAhB;AACD;AACF;;AAEDxB,EAAAA,UAAU,CAAC2B,IAAX,CAAgB,UAACC,CAAD,EAAIC,CAAJ;AAAA,WAAUD,CAAC,CAACT,QAAF,GAAaU,CAAC,CAACV,QAAzB;AAAA,GAAhB;AACA,SAAOnB,UAAP;AACD;;AAOD,SAASO,YAAT,CAAsBV,EAAtB,EAAkDC,OAAlD,EAA2F;AACzF,MAAI,CAAC,2BAASD,EAAT,CAAL,EAAmB;AACjB,WAAO,EAAP;AACD;;AAED,MAAMS,QAAQ,GAAG,EAAjB;AAEA,MAAMI,KAAK,GAAGb,EAAE,CAACc,mBAAH,CAAuBb,OAAvB,EAAgCD,EAAE,CAACiC,2BAAnC,CAAd;;AACA,OAAK,IAAIX,QAAQ,GAAG,CAApB,EAAuBA,QAAQ,GAAGT,KAAlC,EAAyCS,QAAQ,EAAjD,EAAqD;AACnD,gCAA0CtB,EAAE,CAACkC,2BAAH,CAA+BjC,OAA/B,EAAwCqB,QAAxC,CAA1C;AAAA,QAAOJ,IAAP,yBAAOA,IAAP;AAAA,QAAmBC,aAAnB,yBAAaC,IAAb;AAAA,QAAkCC,IAAlC,yBAAkCA,IAAlC;;AACA,iCAA2B,8CAAyBF,aAAzB,CAA3B;AAAA,QAAOC,IAAP,0BAAOA,IAAP;AAAA,QAAaI,UAAb,0BAAaA,UAAb;;AACA,QAAMC,QAAQ,GAAG,IAAIG,iBAAJ,CAAa;AAACR,MAAAA,IAAI,EAAJA,IAAD;AAAOC,MAAAA,IAAI,EAAEA,IAAI,GAAGG;AAApB,KAAb,CAAjB;AACA,QAAMW,OAAO,GAAG;AAACb,MAAAA,QAAQ,EAARA,QAAD;AAAWJ,MAAAA,IAAI,EAAJA,IAAX;AAAiBO,MAAAA,QAAQ,EAARA;AAAjB,KAAhB;AACAhB,IAAAA,QAAQ,CAACoB,IAAT,CAAcM,OAAd;AACD;;AAED1B,EAAAA,QAAQ,CAACqB,IAAT,CAAc,UAACC,CAAD,EAAIC,CAAJ;AAAA,WAAUD,CAAC,CAACT,QAAF,GAAaU,CAAC,CAACV,QAAzB;AAAA,GAAd;AACA,SAAOb,QAAP;AACD;;AAOD,SAASH,mBAAT,CAA6BN,EAA7B,EAAyDC,OAAzD,EAAkG;AAChG,MAAMI,QAA0B,GAAG,EAAnC;AAEA,MAAM+B,YAAY,GAAGpC,EAAE,CAACc,mBAAH,CAAuBb,OAAvB,EAAgCD,EAAE,CAACqC,eAAnC,CAArB;;AACA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,YAApB,EAAkCE,CAAC,EAAnC,EAAuC;AACrC,+BAAoCtC,EAAE,CAACuC,gBAAH,CAAoBtC,OAApB,EAA6BqC,CAA7B,CAApC;AAAA,QAAaE,OAAb,wBAAOtB,IAAP;AAAA,QAAsBG,IAAtB,wBAAsBA,IAAtB;AAAA,QAA4BD,IAA5B,wBAA4BA,IAA5B;;AACA,4BAAwBqB,gBAAgB,CAACD,OAAD,CAAxC;AAAA,QAAOtB,IAAP,qBAAOA,IAAP;AAAA,QAAawB,OAAb,qBAAaA,OAAb;;AACA,QAAIC,aAAa,GAAG3C,EAAE,CAAC4C,kBAAH,CAAsB3C,OAAtB,EAA+BiB,IAA/B,CAApB;AACA,QAAM2B,WAAW,GAAG;AAElBvB,MAAAA,QAAQ,EAAEqB,aAFQ;AAGlBzB,MAAAA,IAAI,EAAJA,IAHkB;AAIlBG,MAAAA,IAAI,EAAJA,IAJkB;AAKlBD,MAAAA,IAAI,EAAJA,IALkB;AAMlBsB,MAAAA,OAAO,EAAPA;AANkB,KAApB;AAQArC,IAAAA,QAAQ,CAACwB,IAAT,CAAcgB,WAAd;;AAGA,QAAIA,WAAW,CAACxB,IAAZ,GAAmB,CAAvB,EAA0B;AACxB,WAAK,IAAIyB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGD,WAAW,CAACxB,IAAhC,EAAsCyB,CAAC,EAAvC,EAA2C;AACzC,YAAMC,WAAW,aAAM7B,IAAN,cAAc4B,CAAd,MAAjB;AAEAH,QAAAA,aAAa,GAAG3C,EAAE,CAAC4C,kBAAH,CAAsB3C,OAAtB,EAA+B8C,WAA/B,CAAhB;;AAEA,YAAMC,uBAAuB,mCACxBH,WADwB;AAE3B3B,UAAAA,IAAI,EAAE6B,WAFqB;AAG3BzB,UAAAA,QAAQ,EAAEqB;AAHiB,UAA7B;;AAMAtC,QAAAA,QAAQ,CAACwB,IAAT,CAAcmB,uBAAd;AACD;AACF;AACF;;AACD,SAAO3C,QAAP;AACD;;AAQD,SAASG,iBAAT,CAA2BR,EAA3B,EAAuDC,OAAvD,EAAqG;AACnG,MAAMgD,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,UAAD,EAAaC,KAAb;AAAA,WAAuBnD,EAAE,CAACoD,8BAAH,CAAkCnD,OAAlC,EAA2CiD,UAA3C,EAAuDC,KAAvD,CAAvB;AAAA,GAA1B;;AAEA,MAAM5C,aAAoC,GAAG,EAA7C;AAEA,MAAM8C,UAAU,GAAGrD,EAAE,CAACc,mBAAH,CAAuBb,OAAvB,EAAgCD,EAAE,CAACsD,qBAAnC,CAAnB;;AACA,OAAK,IAAIJ,UAAU,GAAG,CAAtB,EAAyBA,UAAU,GAAGG,UAAtC,EAAkDH,UAAU,EAA5D,EAAgE;AAE9D,QAAMK,SAAS,GAAG;AAChBrC,MAAAA,IAAI,EAAElB,EAAE,CAACwD,yBAAH,CAA6BvD,OAA7B,EAAsCiD,UAAtC,CADU;AAEhB5B,MAAAA,QAAQ,EAAE2B,iBAAiB,CAACC,UAAD,EAAalD,EAAE,CAACyD,qBAAhB,CAFX;AAGhBC,MAAAA,UAAU,EAAET,iBAAiB,CAACC,UAAD,EAAalD,EAAE,CAAC2D,uBAAhB,CAHb;AAIhBC,MAAAA,MAAM,EAAEX,iBAAiB,CAACC,UAAD,EAAalD,EAAE,CAAC6D,yCAAhB,CAJT;AAKhBC,MAAAA,QAAQ,EAAEb,iBAAiB,CAACC,UAAD,EAAalD,EAAE,CAAC+D,2CAAhB,CALX;AAMhB3B,MAAAA,YAAY,EAAEa,iBAAiB,CAACC,UAAD,EAAalD,EAAE,CAACgE,6BAAhB,CANf;AAOhBC,MAAAA,cAAc,EAAEhB,iBAAiB,CAACC,UAAD,EAAalD,EAAE,CAACkE,oCAAhB,CAPjB;AAQhB7D,MAAAA,QAAQ,EAAE;AARM,KAAlB;;AAWA,SAAK,IAAI8D,YAAY,GAAG,CAAxB,EAA2BA,YAAY,GAAGZ,SAAS,CAACnB,YAApD,EAAkE,EAAE+B,YAApE,EAAkF,CAEjF;;AAED5D,IAAAA,aAAa,CAACsB,IAAd,CAAmB0B,SAAnB;AACD;;AAEDhD,EAAAA,aAAa,CAACuB,IAAd,CAAmB,UAACC,CAAD,EAAIC,CAAJ;AAAA,WAAUD,CAAC,CAACT,QAAF,GAAaU,CAAC,CAACV,QAAzB;AAAA,GAAnB;AACA,SAAOf,aAAP;AACD;;AAED,IAAM6D,0BAA0B,qFAC7BC,mBAAGC,UAD0B,EACb,CAAC,IAAD,EAAO,OAAP,CADa,wDAE7BD,mBAAGE,YAF0B,EAEX,CAAC,MAAD,EAAS,OAAT,CAFW,wDAG7BF,mBAAGG,UAH0B,EAGb,CAAC,IAAD,EAAO,OAAP,CAHa,wDAI7BH,mBAAGI,iBAJ0B,EAIN,CAAC,IAAD,EAAO,OAAP,CAJM,wDAK7BJ,mBAAGK,gBAL0B,EAKP,CAAC,UAAD,EAAa,OAAb,CALO,wDAM7BL,mBAAGM,uBAN0B,EAMA,CAAC,UAAD,EAAa,OAAb,CANA,wDAO7BN,mBAAGO,mBAP0B,EAOJ,CAAC,MAAD,EAAS,OAAT,CAPI,wDAQ7BP,mBAAGQ,cAR0B,EAQT,CAAC,IAAD,EAAO,MAAP,CARS,wDAS7BR,mBAAGS,cAT0B,EAST,CAAC,IAAD,EAAO,MAAP,CATS,wDAU7BT,mBAAGU,gBAV0B,EAUP,CAAC,MAAD,EAAS,MAAT,CAVO,wDAW7BV,mBAAGW,oBAX0B,EAWH,CAAC,UAAD,EAAa,MAAb,CAXG,wDAY7BX,mBAAGY,uBAZ0B,EAYA,CAAC,IAAD,EAAO,MAAP,CAZA,wDAa7BZ,mBAAGa,uBAb0B,EAaA,CAAC,IAAD,EAAO,MAAP,CAbA,wDAc7Bb,mBAAGc,yBAd0B,EAcE,CAAC,MAAD,EAAS,MAAT,CAdF,wDAe7Bd,mBAAGe,6BAf0B,EAeM,CAAC,UAAD,EAAa,MAAb,CAfN,yBAAhC;;AAqBA,SAASC,2BAAT,CAAqCnF,MAArC,EAA8D;AAC5D,MAAMoF,QAAa,GAAG,EAAtB;;AAD4D,6CAIpCpF,MAAM,CAACK,aAJ6B;AAAA;;AAAA;AAI5D,wDAA8C;AAAA,UAAnCgD,SAAmC;AAC5C+B,MAAAA,QAAQ,CAACzD,IAAT,CAAc;AACZ0D,QAAAA,OAAO,EAAEhC,SAAS,CAACjC,QADP;AAEZkE,QAAAA,UAAU,EAAE,CAACjC,SAAS,CAACK,MAAV,GAAmB,GAAnB,GAAyB,CAA1B,KAAgCL,SAAS,CAACO,QAAV,GAAqB,GAArB,GAA2B,CAA3D,CAFA;AAGZ2B,QAAAA,MAAM,EAAE;AACNrE,UAAAA,IAAI,EAAE;AADA;AAHI,OAAd;AAQD;AAb2D;AAAA;AAAA;AAAA;AAAA;;AAAA,8CAgBlClB,MAAM,CAACG,QAhB2B;AAAA;;AAAA;AAgB5D,2DAA2C;AAAA,UAAhCwC,WAAgC;AACzC,UAAI6C,OAAO,GAAGtB,0BAA0B,CAACvB,WAAW,CAACzB,IAAb,CAAxC;;AACA,UAAIsE,OAAJ,EAAa;AACX,oDAAoCA,OAApC;AAAA,YAAOC,aAAP;AAAA,YAAsBC,UAAtB;;AACAN,QAAAA,QAAQ,CAACzD,IAAT,CAAc;AACZ0D,UAAAA,OAAO,EAAE1C,WAAW,CAACvB,QADT;AAEZkE,UAAAA,UAAU,EAAE,CAFA;AAGZK,UAAAA,OAAO,EAAE;AACPF,YAAAA,aAAa,EAAbA,aADO;AAEPC,YAAAA,UAAU,EAAVA;AAFO;AAHG,SAAd;AAQD;AACF;AA7B2D;AAAA;AAAA;AAAA;AAAA;AA8B7D;;AAID,SAASnD,gBAAT,CAA0BvB,IAA1B,EAAgC;AAE9B,MAAIA,IAAI,CAACA,IAAI,CAAC4E,MAAL,GAAc,CAAf,CAAJ,KAA0B,GAA9B,EAAkC;AAChC,WAAO;AACL5E,MAAAA,IAAI,EAAJA,IADK;AAEL4E,MAAAA,MAAM,EAAE,CAFH;AAGLpD,MAAAA,OAAO,EAAE;AAHJ,KAAP;AAKD;;AAGD,MAAMqD,mBAAmB,GAAG,sBAA5B;AACA,MAAMC,OAAO,GAAG9E,IAAI,CAAC+E,KAAL,CAAWF,mBAAX,CAAhB;;AACA,MAAI,CAACC,OAAD,IAAYA,OAAO,CAACF,MAAR,GAAiB,CAAjC,EAAoC;AAClC,UAAM,IAAII,KAAJ,6CAA+ChF,IAA/C,EAAN;AACD;;AAED,SAAO;AACLA,IAAAA,IAAI,EAAE8E,OAAO,CAAC,CAAD,CADR;AAELF,IAAAA,MAAM,EAAEE,OAAO,CAAC,CAAD,CAAP,IAAc,CAFjB;AAGLtD,IAAAA,OAAO,EAAEyD,OAAO,CAACH,OAAO,CAAC,CAAD,CAAR;AAHX,GAAP;AAKD;;AAGD,SAAStE,eAAT,CAAyBD,QAAzB,EAAmCH,QAAnC,EAA6CJ,IAA7C,EAAmD;AACjD,MAAI,YAAYkF,IAAZ,CAAiBlF,IAAjB,CAAJ,EAA4B;AAE1BO,IAAAA,QAAQ,CAAC4E,OAAT,GAAmB,CAAnB;AACD;AACF","sourcesContent":["import GL from '@luma.gl/constants';\nimport {isWebGL2} from '../context/context/webgl-checks';\nimport {ProgramBindings, AttributeBinding, UniformBinding, UniformBlockBinding, VaryingBinding} from './program-bindings'\nimport Accessor from '../classes/accessor';\nimport {decomposeCompositeGLType} from '../webgl-utils/attribute-utils';\n\n/**\n * Extract metadata describing binding information for a program's shaders\n * Note: `linkProgram()` needs to have been called\n * (although linking does not need to have been successful).\n*/\nexport function getProgramBindings(gl: WebGL2RenderingContext, program: WebGLProgram): ProgramBindings {\n const config: ProgramBindings = {\n attributes: readAttributeBindings(gl, program),\n uniforms: readUniformBindings(gl, program),\n uniformBlocks: readUniformBlocks(gl, program),\n varyings: readVaryings(gl, program)\n };\n\n Object.seal(config);\n return config;\n // generateWebGPUStyleBindings(bindings);\n}\n\n\n/**\n * Extract info about all transform feedback varyings\n *\n * linkProgram needs to have been called, although linking does not need to have been successful\n */\nfunction readAttributeBindings(gl: WebGL2RenderingContext, program: WebGLProgram): AttributeBinding[] {\n const attributes: AttributeBinding[] = [];\n\n const count = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n\n for (let index = 0; index < count; index++) {\n const {name, type: compositeType, size} = gl.getActiveAttrib(program, index);\n const location = gl.getAttribLocation(program, name);\n // Add only user provided attributes, for built-in attributes like\n // `gl_InstanceID` locaiton will be < 0\n if (location >= 0) {\n const {type, components} = decomposeCompositeGLType(compositeType);\n const accessor = {type, size: size * components};\n inferProperties(location, name, accessor);\n \n const attributeInfo = {location, name, accessor: new Accessor(accessor)}; // Base values\n attributes.push(attributeInfo);\n }\n }\n\n attributes.sort((a, b) => a.location - b.location);\n return attributes;\n}\n\n/**\n * Extract info about all transform feedback varyings\n *\n * linkProgram needs to have been called, although linking does not need to have been successful\n */\nfunction readVaryings(gl: WebGL2RenderingContext, program: WebGLProgram): VaryingBinding[] {\n if (!isWebGL2(gl)) {\n return [];\n }\n\n const varyings = [];\n\n const count = gl.getProgramParameter(program, gl.TRANSFORM_FEEDBACK_VARYINGS);\n for (let location = 0; location < count; location++) {\n const {name, type: compositeType, size} = gl.getTransformFeedbackVarying(program, location);\n const {type, components} = decomposeCompositeGLType(compositeType);\n const accessor = new Accessor({type, size: size * components});\n const varying = {location, name, accessor}; // Base values\n varyings.push(varying);\n }\n\n varyings.sort((a, b) => a.location - b.location);\n return varyings;\n}\n\n/**\n * Extract info about all uniforms\n *\n * Query uniform locations and build name to setter map.\n */\nfunction readUniformBindings(gl: WebGL2RenderingContext, program: WebGLProgram): UniformBinding[] {\n const uniforms: UniformBinding[] = [];\n\n const uniformCount = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n for (let i = 0; i < uniformCount; i++) {\n const {name: rawName, size, type} = gl.getActiveUniform(program, i);\n const {name, isArray} = parseUniformName(rawName);\n let webglLocation = gl.getUniformLocation(program, name);\n const uniformInfo = {\n // WebGL locations are uniquely typed but just numbers\n location: webglLocation as number,\n name,\n size,\n type,\n isArray\n };\n uniforms.push(uniformInfo);\n\n // Array (e.g. matrix) uniforms can occupy several 4x4 byte banks\n if (uniformInfo.size > 1) {\n for (let j = 0; j < uniformInfo.size; j++) {\n const elementName = `${name}[${j}]`;\n\n webglLocation = gl.getUniformLocation(program, elementName);\n\n const arrayElementUniformInfo = {\n ...uniformInfo,\n name: elementName,\n location: webglLocation as number\n };\n\n uniforms.push(arrayElementUniformInfo);\n }\n }\n }\n return uniforms;\n}\n\n/**\n * Extract info about all \"active\" uniform blocks\n *\n * (\"Active\" just means that unused (aka inactive) blocks may have been\n * optimized away during linking)\n */\nfunction readUniformBlocks(gl: WebGL2RenderingContext, program: WebGLProgram): UniformBlockBinding[] {\n const getBlockParameter = (blockIndex, pname) => gl.getActiveUniformBlockParameter(program, blockIndex, pname);\n\n const uniformBlocks: UniformBlockBinding[] = [];\n\n const blockCount = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);\n for (let blockIndex = 0; blockIndex < blockCount; blockIndex++) {\n\n const blockInfo = {\n name: gl.getActiveUniformBlockName(program, blockIndex),\n location: getBlockParameter(blockIndex, gl.UNIFORM_BLOCK_BINDING),\n byteLength: getBlockParameter(blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE),\n vertex: getBlockParameter(blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER),\n fragment: getBlockParameter(blockIndex, gl.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER),\n uniformCount: getBlockParameter(blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORMS),\n uniformIndices: getBlockParameter(blockIndex, gl.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES),\n uniforms: []\n }\n\n for (let uniformIndex = 0; uniformIndex < blockInfo.uniformCount; ++uniformIndex) {\n // TODO - Can we extract more?\n }\n\n uniformBlocks.push(blockInfo);\n }\n\n uniformBlocks.sort((a, b) => a.location - b.location);\n return uniformBlocks;\n}\n\nconst SAMPLER_UNIFORMS_GL_TO_GPU = {\n [GL.SAMPLER_2D]: ['2d', 'float'],\n [GL.SAMPLER_CUBE]: ['cube', 'float'],\n [GL.SAMPLER_3D]: ['3d', 'float'],\n [GL.SAMPLER_2D_SHADOW]: ['3d', 'depth'],\n [GL.SAMPLER_2D_ARRAY]: ['2d-array', 'float'],\n [GL.SAMPLER_2D_ARRAY_SHADOW]: ['2d-array', 'depth'],\n [GL.SAMPLER_CUBE_SHADOW]: ['cube', 'float'],\n [GL.INT_SAMPLER_2D]: ['2d', 'sint'],\n [GL.INT_SAMPLER_3D]: ['3d', 'sint'],\n [GL.INT_SAMPLER_CUBE]: ['cube', 'sint'],\n [GL.INT_SAMPLER_2D_ARRAY]: ['2d-array', 'sint'],\n [GL.UNSIGNED_INT_SAMPLER_2D]: ['2d', 'sint'],\n [GL.UNSIGNED_INT_SAMPLER_3D]: ['3d', 'sint'],\n [GL.UNSIGNED_INT_SAMPLER_CUBE]: ['cube', 'sint'],\n [GL.UNSIGNED_INT_SAMPLER_2D_ARRAY]: ['2d-array', 'sint']\n};\n\n/**\n * Generate a list of \"WebGPU-style\" bindings for this program\n */\nfunction generateWebGPUStyleBindings(config: ProgramBindings) {\n const bindings: any = [];\n\n // Uniform blocks\n for (const blockInfo of config.uniformBlocks) {\n bindings.push({\n binding: blockInfo.location,\n visibility: (blockInfo.vertex ? 0x1 : 0) & (blockInfo.fragment ? 0x2 : 0),\n buffer: {\n type: 'uniform',\n // minBindingSize: blockInfo.size\n }\n })\n }\n\n // Sampler uniforms\n for (const uniformInfo of config.uniforms) {\n let sampler = SAMPLER_UNIFORMS_GL_TO_GPU[uniformInfo.type];\n if (sampler) {\n const [viewDimension, sampleType] = sampler;\n bindings.push({\n binding: uniformInfo.location,\n visibility: 0, // Not available in WebGL on individual uniforms?\n texture: {\n viewDimension,\n sampleType\n }\n });\n }\n }\n}\n\n// HELPERS\n\nfunction parseUniformName(name) {\n // Shortcut to avoid redundant or bad matches\n if (name[name.length - 1] !== ']'){\n return {\n name,\n length: 1,\n isArray: false\n };\n }\n\n // if array name then clean the array brackets\n const UNIFORM_NAME_REGEXP = /([^[]*)(\\[[0-9]+\\])?/;\n const matches = name.match(UNIFORM_NAME_REGEXP);\n if (!matches || matches.length < 2) {\n throw new Error(`Failed to parse GLSL uniform name ${name}`);\n }\n\n return {\n name: matches[1],\n length: matches[2] || 1,\n isArray: Boolean(matches[2])\n };\n}\n\n// Extract additional attribute metadata from shader names (based on attribute naming conventions)\nfunction inferProperties(accessor, location, name) {\n if (/instance/i.test(name)) {\n // Any attribute containing the word \"instance\" will be assumed to be instanced\n accessor.divisor = 1;\n }\n}\n"],"file":"get-program-bindings.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"program-bindings.js"}
|
package/dist/es5/index.js
CHANGED
|
@@ -79,40 +79,40 @@ Object.defineProperty(exports, "TextureCube", {
|
|
|
79
79
|
return _textureCube.default;
|
|
80
80
|
}
|
|
81
81
|
});
|
|
82
|
-
Object.defineProperty(exports, "
|
|
82
|
+
Object.defineProperty(exports, "Program", {
|
|
83
83
|
enumerable: true,
|
|
84
84
|
get: function get() {
|
|
85
|
-
return
|
|
85
|
+
return _program.default;
|
|
86
86
|
}
|
|
87
87
|
});
|
|
88
|
-
Object.defineProperty(exports, "
|
|
88
|
+
Object.defineProperty(exports, "Framebuffer", {
|
|
89
89
|
enumerable: true,
|
|
90
90
|
get: function get() {
|
|
91
|
-
return
|
|
91
|
+
return _framebuffer.default;
|
|
92
92
|
}
|
|
93
93
|
});
|
|
94
|
-
Object.defineProperty(exports, "
|
|
94
|
+
Object.defineProperty(exports, "Renderbuffer", {
|
|
95
95
|
enumerable: true,
|
|
96
96
|
get: function get() {
|
|
97
|
-
return
|
|
97
|
+
return _renderbuffer.default;
|
|
98
98
|
}
|
|
99
99
|
});
|
|
100
|
-
Object.defineProperty(exports, "
|
|
100
|
+
Object.defineProperty(exports, "Shader", {
|
|
101
101
|
enumerable: true,
|
|
102
102
|
get: function get() {
|
|
103
|
-
return
|
|
103
|
+
return _shader.Shader;
|
|
104
104
|
}
|
|
105
105
|
});
|
|
106
|
-
Object.defineProperty(exports, "
|
|
106
|
+
Object.defineProperty(exports, "VertexShader", {
|
|
107
107
|
enumerable: true,
|
|
108
108
|
get: function get() {
|
|
109
|
-
return
|
|
109
|
+
return _shader.VertexShader;
|
|
110
110
|
}
|
|
111
111
|
});
|
|
112
|
-
Object.defineProperty(exports, "
|
|
112
|
+
Object.defineProperty(exports, "FragmentShader", {
|
|
113
113
|
enumerable: true,
|
|
114
114
|
get: function get() {
|
|
115
|
-
return
|
|
115
|
+
return _shader.FragmentShader;
|
|
116
116
|
}
|
|
117
117
|
});
|
|
118
118
|
Object.defineProperty(exports, "clear", {
|
|
@@ -199,6 +199,12 @@ Object.defineProperty(exports, "UniformBufferLayout", {
|
|
|
199
199
|
return _uniformBufferLayout.default;
|
|
200
200
|
}
|
|
201
201
|
});
|
|
202
|
+
Object.defineProperty(exports, "setDeviceParameters", {
|
|
203
|
+
enumerable: true,
|
|
204
|
+
get: function get() {
|
|
205
|
+
return _setDeviceParameters.setDeviceParameters;
|
|
206
|
+
}
|
|
207
|
+
});
|
|
202
208
|
Object.defineProperty(exports, "isWebGL", {
|
|
203
209
|
enumerable: true,
|
|
204
210
|
get: function get() {
|
|
@@ -361,10 +367,16 @@ Object.defineProperty(exports, "loadImage", {
|
|
|
361
367
|
return _api.loadImage;
|
|
362
368
|
}
|
|
363
369
|
});
|
|
370
|
+
Object.defineProperty(exports, "getProgramBindings", {
|
|
371
|
+
enumerable: true,
|
|
372
|
+
get: function get() {
|
|
373
|
+
return _getProgramBindings.getProgramBindings;
|
|
374
|
+
}
|
|
375
|
+
});
|
|
364
376
|
|
|
365
377
|
var _init = require("./init");
|
|
366
378
|
|
|
367
|
-
var _webglDevice = _interopRequireWildcard(require("./
|
|
379
|
+
var _webglDevice = _interopRequireWildcard(require("./adapter/webgl-device"));
|
|
368
380
|
|
|
369
381
|
var _requestAnimationFrame = require("./webgl-utils/request-animation-frame");
|
|
370
382
|
|
|
@@ -380,14 +392,14 @@ var _texture2d = _interopRequireDefault(require("./classes/texture-2d"));
|
|
|
380
392
|
|
|
381
393
|
var _textureCube = _interopRequireDefault(require("./classes/texture-cube"));
|
|
382
394
|
|
|
383
|
-
var _webglShader = require("./classes/webgl-shader");
|
|
384
|
-
|
|
385
395
|
var _program = _interopRequireDefault(require("./classes/program"));
|
|
386
396
|
|
|
387
397
|
var _framebuffer = _interopRequireDefault(require("./classes/framebuffer"));
|
|
388
398
|
|
|
389
399
|
var _renderbuffer = _interopRequireDefault(require("./classes/renderbuffer"));
|
|
390
400
|
|
|
401
|
+
var _shader = require("./classes/shader");
|
|
402
|
+
|
|
391
403
|
var _clear = require("./classes/clear");
|
|
392
404
|
|
|
393
405
|
var _copyAndBlit = require("./classes/copy-and-blit");
|
|
@@ -404,6 +416,8 @@ var _vertexArray = _interopRequireDefault(require("./classes/vertex-array"));
|
|
|
404
416
|
|
|
405
417
|
var _uniformBufferLayout = _interopRequireDefault(require("./classes/uniform-buffer-layout"));
|
|
406
418
|
|
|
419
|
+
var _setDeviceParameters = require("./adapter/converters/set-device-parameters");
|
|
420
|
+
|
|
407
421
|
var _webglChecks = require("./context/context/webgl-checks");
|
|
408
422
|
|
|
409
423
|
var _devicePixels = require("./context/context/device-pixels");
|
|
@@ -426,6 +440,8 @@ var _debugProgramConfiguration = require("./debug/debug-program-configuration");
|
|
|
426
440
|
|
|
427
441
|
var _api = require("@luma.gl/api");
|
|
428
442
|
|
|
443
|
+
var _getProgramBindings = require("./helpers/get-program-bindings");
|
|
444
|
+
|
|
429
445
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
430
446
|
|
|
431
447
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
package/dist/es5/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA;;AAIA;;AAGA;;AAGA;;AACA;;AAGA;;AAIA;;AAEA;;AAEA;;AAGA;;AAEA;;AAEA;;AAIA;;AAEA;;AAGA;;AAWA;;AAEA;;AAEA;;AAEA;;AAEA;;AACA;;AAEA;;AAKA;;AASA;;AAKA;;AAMA;;AAKA;;AAOA;;AAGA;;AACA;;AACA;;AACA;;AAMA;;AAWA","sourcesContent":["// luma.gl Base WebGL wrapper library\n// Provides simple class/function wrappers around the low level webgl objects\n// These classes are intentionally close to the WebGL API\n// but make it easier to use.\n// Higher level abstractions can be built on these classes\n\n// Initialize any global state\nimport './init';\n\n// export type {WebGLDeviceProps, WebGLDeviceInfo, WebGPUDeviceLimits} from './lib/webgl-device';\nexport type {WebGLDeviceProps} from './adapter/webgl-device';\nexport {default as WebGLDevice, getWebGLDevice} from './adapter/webgl-device';\n\n// UTILS\nexport {requestAnimationFrame, cancelAnimationFrame} from './webgl-utils/request-animation-frame';\n\n// WebGL Functions\nexport {cloneTextureFrom} from './webgl-utils/texture-utils';\nexport {getKeyValue, getKey} from './webgl-utils/constants-to-keys';\n\n// WebGL Helper Classes\nexport {default as Accessor} from './classes/accessor';\n\n// WebGL1 classes\nexport type {BufferProps} from '@luma.gl/api';\nexport {default as Buffer} from './classes/webgl-buffer';\nexport type {Texture2DProps} from './classes/texture-2d';\nexport {default as Texture2D} from './classes/texture-2d';\nexport type {TextureCubeProps} from './classes/texture-cube';\nexport {default as TextureCube} from './classes/texture-cube';\n\nexport type {ProgramProps} from './classes/program';\nexport {default as Program} from './classes/program';\nexport type {FramebufferProps} from './classes/framebuffer';\nexport {default as Framebuffer} from './classes/framebuffer';\nexport type {RenderbufferProps} from './classes/renderbuffer';\nexport {default as Renderbuffer} from './classes/renderbuffer';\n\n// Classic luma.gl classes (For backwards compatibility)\nexport type {ShaderProps} from './classes/shader';\nexport {Shader, VertexShader, FragmentShader} from './classes/shader';\n\nexport {clear, clearBuffer} from './classes/clear';\n\n// Copy and Blit\nexport {\n readPixelsToArray,\n readPixelsToBuffer,\n copyToDataUrl,\n copyToImage,\n copyToTexture,\n blit\n} from './classes/copy-and-blit';\n\n// WebGL2 classes & Extensions\nexport type {QueryProps} from './classes/query';\nexport {default as Query} from './classes/query';\nexport type {Texture3DProps} from './classes/texture-3d';\nexport {default as Texture3D} from './classes/texture-3d';\nexport type {TransformFeedbackProps} from './classes/transform-feedback';\nexport {default as TransformFeedback} from './classes/transform-feedback';\nexport type {VertexArrayObjectProps} from './classes/vertex-array-object';\nexport {default as VertexArrayObject} from './classes/vertex-array-object';\nexport type {VertexArrayProps} from './classes/vertex-array';\nexport {default as VertexArray} from './classes/vertex-array';\nexport {default as UniformBufferLayout} from './classes/uniform-buffer-layout';\n\nexport {setDeviceParameters} from './adapter/converters/set-device-parameters';\n\n// experimental WebGL exports\n\n// UTILS\nexport {\n isWebGL,\n isWebGL2,\n getWebGL2Context,\n assertWebGLContext,\n assertWebGL2Context\n} from './context/context/webgl-checks';\n\n// Device ratio\nexport {cssToDeviceRatio, cssToDevicePixels} from './context/context/device-pixels';\n\n// Unified parameter API\n\nexport type {GLParameters} from './context/parameters/webgl-parameters';\nexport {\n getParameters,\n setParameters,\n resetParameters\n} from './context/parameters/unified-parameter-api';\n\nexport {\n withParameters\n} from './context/state-tracker/with-parameters';\n\n// State tracking\nexport {\n trackContextState,\n pushContextState,\n popContextState\n} from './context/state-tracker/track-context-state';\n\n// Polyfills (supports a subset of WebGL2 APIs on WebGL1 contexts)\nexport {polyfillContext} from './context/polyfill/polyfill-context';\n\n// INTERNAL\nexport {parseUniformName, getUniformSetter} from './classes/uniforms';\nexport {getDebugTableForUniforms} from './debug/debug-uniforms';\nexport {getDebugTableForVertexArray} from './debug/debug-vertex-array';\nexport {getDebugTableForProgramConfiguration} from './debug/debug-program-configuration';\n\n// DEPRECATED\n\n// Deprecated re-exports\nexport {lumaStats} from './init';\nexport {log, assert, uid, isObjectEmpty} from '@luma.gl/api';\nexport {setPathPrefix, loadFile, loadImage} from '@luma.gl/api';\n\n// export {\n// getContextInfo, getGLContextInfo, getContextLimits,\n// FEATURES,\n// getFeatures,\n// canCompileGLGSExtension\n// } from '@luma.gl/gltools';\n\n// HELPERS - EXPERIMENTAL\nexport {getProgramBindings} from './helpers/get-program-bindings';\n\n// REMOVED in v8.7\n// getShaderInfo,\n// getShaderName\n// getShaderVersion\n"],"file":"index.js"}
|
package/dist/es5/init.js
CHANGED
|
@@ -17,7 +17,7 @@ var _api = require("@luma.gl/api");
|
|
|
17
17
|
|
|
18
18
|
var _env = require("@probe.gl/env");
|
|
19
19
|
|
|
20
|
-
var _webglDevice = _interopRequireDefault(require("./
|
|
20
|
+
var _webglDevice = _interopRequireDefault(require("./adapter/webgl-device"));
|
|
21
21
|
|
|
22
22
|
var VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';
|
|
23
23
|
var STARTUP_MESSAGE = 'set luma.log.level=1 (or higher) to trace rendering';
|
package/dist/es5/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/init.ts"],"names":["VERSION","__VERSION__","STARTUP_MESSAGE","globalThis","luma","Error","registerDevices","WebGLDevice","log","version","stats","lumaStats","globals","modules","nodeIO"],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AAIA,IAAMA,OAAO,GAAG,OAAOC,WAAP,KAAuB,WAAvB,GAAqCA,WAArC,GAAmD,qBAAnE;AAEA,IAAMC,eAAe,GAAG,qDAAxB;;AAKA,IAAIC,UAAU,CAACC,IAAX,IAAmBD,UAAU,CAACC,IAAX,CAAgBJ,OAAhB,KAA4BA,OAAnD,EAA4D;AAC1D,QAAM,IAAIK,KAAJ,iDAAmDF,UAAU,CAACC,IAAX,CAAgBJ,OAAnE,iBAAiFA,OAAjF,EAAN;AACD;;AAED,IAAI,CAACG,UAAU,CAACC,IAAhB,EAAsB;AACpBA,YAAKE,eAAL,CAAqB,CAACC,oBAAD,CAArB;;AAEA,MAAI,qBAAJ,EAAiB;AACfC,aAAIA,GAAJ,CAAQ,CAAR,oBAAsBR,OAAtB,gBAAmCE,eAAnC;AACD;;AAEDC,EAAAA,UAAU,CAACC,IAAX,GAAkBD,UAAU,CAACC,IAAX,IAAmB;AACnCJ,IAAAA,OAAO,EAAPA,OADmC;AAEnCS,IAAAA,OAAO,EAAET,OAF0B;AAGnCQ,IAAAA,GAAG,EAAHA,QAHmC;AAOnCE,IAAAA,KAAK,EAAEC,cAP4B;AAcnCC,IAAAA,OAAO,EAAE;AACPC,MAAAA,OAAO,EAAE,EADF;AAEPC,MAAAA,MAAM,EAAE;AAFD;AAd0B,GAArC;AAmBD;;eAGcX,UAAU,CAACC,I","sourcesContent":["import {log} from '@luma.gl/api';\nimport {isBrowser} from '@probe.gl/env';\nimport {luma, lumaStats} from '@luma.gl/api';\nimport WebGLDevice from './
|
|
1
|
+
{"version":3,"sources":["../../src/init.ts"],"names":["VERSION","__VERSION__","STARTUP_MESSAGE","globalThis","luma","Error","registerDevices","WebGLDevice","log","version","stats","lumaStats","globals","modules","nodeIO"],"mappings":";;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AAIA,IAAMA,OAAO,GAAG,OAAOC,WAAP,KAAuB,WAAvB,GAAqCA,WAArC,GAAmD,qBAAnE;AAEA,IAAMC,eAAe,GAAG,qDAAxB;;AAKA,IAAIC,UAAU,CAACC,IAAX,IAAmBD,UAAU,CAACC,IAAX,CAAgBJ,OAAhB,KAA4BA,OAAnD,EAA4D;AAC1D,QAAM,IAAIK,KAAJ,iDAAmDF,UAAU,CAACC,IAAX,CAAgBJ,OAAnE,iBAAiFA,OAAjF,EAAN;AACD;;AAED,IAAI,CAACG,UAAU,CAACC,IAAhB,EAAsB;AACpBA,YAAKE,eAAL,CAAqB,CAACC,oBAAD,CAArB;;AAEA,MAAI,qBAAJ,EAAiB;AACfC,aAAIA,GAAJ,CAAQ,CAAR,oBAAsBR,OAAtB,gBAAmCE,eAAnC;AACD;;AAEDC,EAAAA,UAAU,CAACC,IAAX,GAAkBD,UAAU,CAACC,IAAX,IAAmB;AACnCJ,IAAAA,OAAO,EAAPA,OADmC;AAEnCS,IAAAA,OAAO,EAAET,OAF0B;AAGnCQ,IAAAA,GAAG,EAAHA,QAHmC;AAOnCE,IAAAA,KAAK,EAAEC,cAP4B;AAcnCC,IAAAA,OAAO,EAAE;AACPC,MAAAA,OAAO,EAAE,EADF;AAEPC,MAAAA,MAAM,EAAE;AAFD;AAd0B,GAArC;AAmBD;;eAGcX,UAAU,CAACC,I","sourcesContent":["import {log} from '@luma.gl/api';\nimport {isBrowser} from '@probe.gl/env';\nimport {luma, lumaStats} from '@luma.gl/api';\nimport WebGLDevice from './adapter/webgl-device';\n\n// Version detection using babel plugin\n// @ts-expect-error\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'untranspiled source';\n\nconst STARTUP_MESSAGE = 'set luma.log.level=1 (or higher) to trace rendering';\n// Assign luma.log.level in console to control logging: \\\n// 0: none, 1: minimal, 2: verbose, 3: attribute/uniforms, 4: gl logs\n// luma.log.break[], set to gl funcs, luma.log.profile[] set to model names`;\n\nif (globalThis.luma && globalThis.luma.VERSION !== VERSION) {\n throw new Error(`luma.gl - multiple VERSIONs detected: ${globalThis.luma.VERSION} vs ${VERSION}`);\n}\n\nif (!globalThis.luma) {\n luma.registerDevices([WebGLDevice]);\n\n if (isBrowser()) {\n log.log(1, `luma.gl ${VERSION} - ${STARTUP_MESSAGE}`)();\n }\n\n globalThis.luma = globalThis.luma || {\n VERSION,\n version: VERSION,\n log,\n\n // A global stats object that various components can add information to\n // E.g. see webgl/resource.js\n stats: lumaStats,\n\n // Keep some luma globals in a sub-object\n // This allows us to dynamically detect if certain modules have been\n // included (such as IO and headless) and enable related functionality,\n // without unconditionally requiring and thus bundling big dependencies\n // into the app.\n globals: {\n modules: {},\n nodeIO: {}\n }\n };\n}\n\nexport {lumaStats};\nexport default globalThis.luma;\n"],"file":"init.js"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// ACCESSORS
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Attribute descriptor object
|
|
5
|
+
*/
|
|
6
|
+
export type Accessor = {
|
|
7
|
+
format?: string;
|
|
8
|
+
offset?: number;
|
|
9
|
+
location?: number;
|
|
10
|
+
|
|
11
|
+
// can now be described with single WebGPU-style `format` string
|
|
12
|
+
type?: number;
|
|
13
|
+
size?: number;
|
|
14
|
+
normalized?: boolean;
|
|
15
|
+
integer?: boolean;
|
|
16
|
+
|
|
17
|
+
// deprecated - now shared between accessors in the surrounding BufferAccessor object
|
|
18
|
+
stride?: number;
|
|
19
|
+
divisor?: number;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* List of attribute descriptors for one interleaved buffer
|
|
24
|
+
*/
|
|
25
|
+
export type BufferAccessors = {
|
|
26
|
+
stride?: number;
|
|
27
|
+
stepMode?: 'vertex' | 'instance';
|
|
28
|
+
attributes: Accessor[];
|
|
29
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { log } from '@luma.gl/api';
|
|
2
|
+
import GL from '@luma.gl/constants';
|
|
3
|
+
import { WebGLDevice } from '@luma.gl/webgl';
|
|
4
|
+
export function setDeviceParameters(device, parameters) {
|
|
5
|
+
const webglDevice = WebGLDevice.attach(device);
|
|
6
|
+
const {
|
|
7
|
+
gl,
|
|
8
|
+
gl2
|
|
9
|
+
} = webglDevice;
|
|
10
|
+
|
|
11
|
+
if (parameters.cullMode) {
|
|
12
|
+
switch (parameters.cullMode) {
|
|
13
|
+
case 'none':
|
|
14
|
+
gl.disable(GL.CULL_FACE);
|
|
15
|
+
break;
|
|
16
|
+
|
|
17
|
+
case 'front':
|
|
18
|
+
gl.enable(GL.CULL_FACE);
|
|
19
|
+
gl.cullFace(GL.FRONT);
|
|
20
|
+
break;
|
|
21
|
+
|
|
22
|
+
case 'back':
|
|
23
|
+
gl.enable(GL.CULL_FACE);
|
|
24
|
+
gl.cullFace(GL.BACK);
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (parameters.frontFace) {
|
|
30
|
+
gl.frontFace(map('frontFace', parameters.frontFace, {
|
|
31
|
+
ccw: GL.CCW,
|
|
32
|
+
cw: GL.CW
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (parameters.depthBias !== undefined) {
|
|
37
|
+
gl.polygonOffset(parameters.depthBias, parameters.depthBiasSlopeScale || 0);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (parameters.depthWriteEnabled !== undefined) {
|
|
41
|
+
gl.depthMask(mapBoolean('depthWriteEnabled', parameters.depthWriteEnabled));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (parameters.depthCompare) {
|
|
45
|
+
parameters.depthCompare !== 'always' ? gl.enable(GL.DEPTH_TEST) : gl.disable(GL.DEPTH_TEST), gl.depthFunc(convertCompareFunction('depthCompare', parameters.depthCompare));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if (parameters.stencilWriteMask) {
|
|
49
|
+
const mask = parameters.stencilWriteMask;
|
|
50
|
+
gl.stencilMaskSeparate(GL.FRONT, mask);
|
|
51
|
+
gl.stencilMaskSeparate(GL.BACK, mask);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (parameters.stencilReadMask) {
|
|
55
|
+
log.warn('stencilReadMask not supported under WebGL');
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (parameters.stencilCompare) {
|
|
59
|
+
const mask = parameters.stencilReadMask || 0xffffffff;
|
|
60
|
+
const glValue = convertCompareFunction('depthCompare', parameters.stencilCompare);
|
|
61
|
+
parameters.stencilCompare !== 'always' ? gl.enable(GL.STENCIL_TEST) : gl.disable(GL.STENCIL_TEST), gl.stencilFuncSeparate(GL.FRONT, glValue, 0, mask);
|
|
62
|
+
gl.stencilFuncSeparate(GL.BACK, glValue, 0, mask);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (parameters.stencilPassOperation) {
|
|
66
|
+
const dppass = convertStencilOperation('stencilPassOperation', parameters.stencilPassOperation);
|
|
67
|
+
const sfail = convertStencilOperation('stencilFailOperation', parameters.stencilFailOperation);
|
|
68
|
+
const dpfail = convertStencilOperation('stencilDepthFailOperation', parameters.stencilDepthFailOperation);
|
|
69
|
+
gl.stencilOpSeparate(GL.FRONT, sfail, dpfail, dppass);
|
|
70
|
+
gl.stencilOpSeparate(GL.BACK, sfail, dpfail, dppass);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
export function convertCompareFunction(parameter, value) {
|
|
74
|
+
return map(parameter, value, {
|
|
75
|
+
'never': GL.NEVER,
|
|
76
|
+
'less': GL.LESS,
|
|
77
|
+
'equal': GL.EQUAL,
|
|
78
|
+
'less-equal': GL.LEQUAL,
|
|
79
|
+
'greater': GL.GREATER,
|
|
80
|
+
'not-equal': GL.NOTEQUAL,
|
|
81
|
+
'greater-equal': GL.GEQUAL,
|
|
82
|
+
'always': GL.ALWAYS
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function convertStencilOperation(parameter, value) {
|
|
87
|
+
return map(parameter, value, {
|
|
88
|
+
'keep': GL.KEEP,
|
|
89
|
+
'zero': GL.ZERO,
|
|
90
|
+
'replace': GL.REPLACE,
|
|
91
|
+
'invert': GL.INVERT,
|
|
92
|
+
'increment-clamp': GL.INCR,
|
|
93
|
+
'decrement-clamp': GL.DECR,
|
|
94
|
+
'increment-wrap': GL.INCR_WRAP,
|
|
95
|
+
'decrement-wrap': GL.DECR_WRAP
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function convertBlendOperationToEquation(parameter, value) {
|
|
100
|
+
return map(parameter, value, {
|
|
101
|
+
'add': GL.FUNC_ADD,
|
|
102
|
+
'sub': GL.FUNC_SUBTRACT,
|
|
103
|
+
'reverse-subtract': GL.FUNC_REVERSE_SUBTRACT,
|
|
104
|
+
'min': GL.MIN,
|
|
105
|
+
'max': GL.MAX
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function message(parameter, value) {
|
|
110
|
+
return "Illegal parameter ".concat(value, " for ").concat(parameter);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function map(parameter, value, valueMap) {
|
|
114
|
+
if (!(value in valueMap)) {
|
|
115
|
+
throw new Error(message(parameter, value));
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return valueMap[value];
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
function mapBoolean(parameter, value) {
|
|
122
|
+
return value;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=set-device-parameters.js.map
|