@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
|
@@ -27,7 +27,7 @@ var _api = require("@luma.gl/api");
|
|
|
27
27
|
|
|
28
28
|
var _constants = _interopRequireDefault(require("@luma.gl/constants"));
|
|
29
29
|
|
|
30
|
-
var _webglDevice = _interopRequireDefault(require("../
|
|
30
|
+
var _webglDevice = _interopRequireDefault(require("../adapter/webgl-device"));
|
|
31
31
|
|
|
32
32
|
var _webglResource = _interopRequireDefault(require("./webgl-resource"));
|
|
33
33
|
|
|
@@ -37,8 +37,6 @@ var _framebuffer = _interopRequireDefault(require("./framebuffer"));
|
|
|
37
37
|
|
|
38
38
|
var _uniforms = require("./uniforms");
|
|
39
39
|
|
|
40
|
-
var _webglShader = require("./webgl-shader");
|
|
41
|
-
|
|
42
40
|
var _programConfiguration = _interopRequireDefault(require("./program-configuration"));
|
|
43
41
|
|
|
44
42
|
var _webglChecks = require("../context/context/webgl-checks");
|
|
@@ -67,12 +65,12 @@ var Program = function (_WebGLResource) {
|
|
|
67
65
|
|
|
68
66
|
var _super = _createSuper(Program);
|
|
69
67
|
|
|
70
|
-
function Program(
|
|
68
|
+
function Program(device) {
|
|
71
69
|
var _this;
|
|
72
70
|
|
|
73
71
|
var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
74
72
|
(0, _classCallCheck2.default)(this, Program);
|
|
75
|
-
_this = _super.call(this, _webglDevice.default.attach(
|
|
73
|
+
_this = _super.call(this, _webglDevice.default.attach(device), props, {});
|
|
76
74
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "configuration", void 0);
|
|
77
75
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hash", void 0);
|
|
78
76
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "vs", void 0);
|
|
@@ -95,6 +93,28 @@ var Program = function (_WebGLResource) {
|
|
|
95
93
|
}
|
|
96
94
|
|
|
97
95
|
(0, _createClass2.default)(Program, [{
|
|
96
|
+
key: "destroy",
|
|
97
|
+
value: function destroy() {
|
|
98
|
+
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
99
|
+
|
|
100
|
+
if (this._isCached) {
|
|
101
|
+
return this;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return (0, _get2.default)((0, _getPrototypeOf2.default)(Program.prototype), "delete", this).call(this, options);
|
|
105
|
+
}
|
|
106
|
+
}, {
|
|
107
|
+
key: "delete",
|
|
108
|
+
value: function _delete() {
|
|
109
|
+
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
110
|
+
|
|
111
|
+
if (this._isCached) {
|
|
112
|
+
return this;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return (0, _get2.default)((0, _getPrototypeOf2.default)(Program.prototype), "delete", this).call(this, options);
|
|
116
|
+
}
|
|
117
|
+
}, {
|
|
98
118
|
key: "initialize",
|
|
99
119
|
value: function initialize() {
|
|
100
120
|
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
@@ -105,16 +125,18 @@ var Program = function (_WebGLResource) {
|
|
|
105
125
|
_props$bufferMode = props.bufferMode,
|
|
106
126
|
bufferMode = _props$bufferMode === void 0 ? GL_SEPARATE_ATTRIBS : _props$bufferMode;
|
|
107
127
|
this.hash = hash || '';
|
|
108
|
-
this.vs = typeof vs === 'string' ?
|
|
128
|
+
this.vs = typeof vs === 'string' ? this.device.createShader({
|
|
109
129
|
id: "".concat(props.id, "-vs"),
|
|
110
|
-
source: vs
|
|
111
|
-
|
|
112
|
-
|
|
130
|
+
source: vs,
|
|
131
|
+
stage: 'vertex'
|
|
132
|
+
}) : (0, _api.cast)(vs);
|
|
133
|
+
this.fs = typeof fs === 'string' ? this.device.createShader({
|
|
113
134
|
id: "".concat(props.id, "-fs"),
|
|
114
|
-
source: fs
|
|
115
|
-
|
|
116
|
-
(0, _api.
|
|
117
|
-
(0, _api.assert)(this.
|
|
135
|
+
source: fs,
|
|
136
|
+
stage: 'fragment'
|
|
137
|
+
}) : (0, _api.cast)(fs);
|
|
138
|
+
(0, _api.assert)(this.vs.stage === 'vertex');
|
|
139
|
+
(0, _api.assert)(this.fs.stage === 'fragment');
|
|
118
140
|
this.uniforms = {};
|
|
119
141
|
this._textureUniforms = {};
|
|
120
142
|
|
|
@@ -131,17 +153,6 @@ var Program = function (_WebGLResource) {
|
|
|
131
153
|
this.configuration = new _programConfiguration.default(this);
|
|
132
154
|
return this.setProps(props);
|
|
133
155
|
}
|
|
134
|
-
}, {
|
|
135
|
-
key: "delete",
|
|
136
|
-
value: function _delete() {
|
|
137
|
-
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
138
|
-
|
|
139
|
-
if (this._isCached) {
|
|
140
|
-
return this;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
return (0, _get2.default)((0, _getPrototypeOf2.default)(Program.prototype), "delete", this).call(this, options);
|
|
144
|
-
}
|
|
145
156
|
}, {
|
|
146
157
|
key: "setProps",
|
|
147
158
|
value: function setProps(props) {
|
|
@@ -334,13 +345,13 @@ var Program = function (_WebGLResource) {
|
|
|
334
345
|
|
|
335
346
|
switch (type) {
|
|
336
347
|
case _constants.default.VERTEX_SHADER:
|
|
337
|
-
opts.vs = new
|
|
348
|
+
opts.vs = new VertexShader({
|
|
338
349
|
handle: shaderHandle
|
|
339
350
|
});
|
|
340
351
|
break;
|
|
341
352
|
|
|
342
353
|
case _constants.default.FRAGMENT_SHADER:
|
|
343
|
-
opts.fs = new
|
|
354
|
+
opts.fs = new FragmentShader({
|
|
344
355
|
handle: shaderHandle
|
|
345
356
|
});
|
|
346
357
|
break;
|
|
@@ -373,7 +384,7 @@ var Program = function (_WebGLResource) {
|
|
|
373
384
|
}, {
|
|
374
385
|
key: "_getName",
|
|
375
386
|
value: function _getName() {
|
|
376
|
-
var programName = this.vs.
|
|
387
|
+
var programName = this.vs.id || this.fs.id;
|
|
377
388
|
programName = programName.replace(/shader/i, '');
|
|
378
389
|
programName = programName ? "".concat(programName, "-program") : 'program';
|
|
379
390
|
return programName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/classes/program.ts"],"names":["LOG_PROGRAM_PERF_PRIORITY","GL_SEPARATE_ATTRIBS","Program","gl","props","WebGLDevice","attach","initialize","Object","seal","_setId","id","hash","vs","fs","varyings","bufferMode","VertexShader","source","FragmentShader","uniforms","_textureUniforms","length","gl2","transformFeedbackVaryings","handle","_compileAndLink","_readUniformLocationsFromLinkedProgram","configuration","ProgramConfiguration","setProps","options","_isCached","setUniforms","logPriority","drawMode","GL","TRIANGLES","vertexCount","offset","start","end","isIndexed","indexType","UNSIGNED_SHORT","instanceCount","isInstanced","vertexArray","transformFeedback","framebuffer","samplers","parameters","log","deprecated","priority","fb","message","useProgram","_areTexturesRenderable","bindForDraw","undefined","assign","primitiveMode","begin","_bindTextures","drawElementsInstanced","isNaN","drawRangeElements","drawElements","drawArraysInstanced","drawArrays","_uniformSetters","uniformName","uniform","uniformSetter","value","textureUpdate","Framebuffer","texture","Texture","textureIndex","_textureIndexCounter","bind","texturesRenderable","update","loaded","createProgram","deleteProgram","shaderHandles","getAttachedShaders","opts","shaderHandle","type","getShaderParameter","SHADER_TYPE","VERTEX_SHADER","FRAGMENT_SHADER","pname","getProgramParameter","programName","_getName","getName","replace","attachShader","time","linkProgram","timeEnd","debug","level","linked","LINK_STATUS","Error","getProgramInfoLog","validateProgram","validated","VALIDATE_STATUS","_uniformCount","_getParameter","ACTIVE_UNIFORMS","i","info","getActiveUniform","name","location","getUniformLocation","size","l","uniformIndices","getActiveUniforms","blockName","getUniformBlockIndex","blockIndex","getActiveUniformBlockParameter","blockBinding","uniformBlockBinding","WebGLResource"],"mappings":"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","sourcesContent":["import {log, assert, uid} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport WebGLDevice from '../device/webgl-device';\nimport WebGLResource, {ResourceProps} from './webgl-resource';\nimport Texture from './texture';\nimport Framebuffer from './framebuffer';\nimport {parseUniformName, getUniformSetter} from './uniforms';\nimport {VertexShader, FragmentShader} from './webgl-shader';\nimport ProgramConfiguration from './program-configuration';\nimport {copyUniform, checkUniformValues} from './uniforms';\n\nimport {isWebGL2, assertWebGL2Context} from '../context/context/webgl-checks';\nimport {withParameters} from '../context/state-tracker/with-parameters';\nimport {getKey} from '../webgl-utils/constants-to-keys';\nimport {getPrimitiveDrawMode} from '../webgl-utils/attribute-utils';\n\nconst LOG_PROGRAM_PERF_PRIORITY = 4;\n\nconst GL_SEPARATE_ATTRIBS = 0x8c8d;\n\nexport type ProgramProps = ResourceProps & {\n hash?;\n vs?; \n fs?;\n varyings?; \n bufferMode?: number;\n}\n\nexport type ProgramDrawOptions = {\n logPriority?: any;\n drawMode?: any;\n vertexCount: any;\n offset?: number;\n start?: any;\n end?: any;\n isIndexed?: boolean;\n indexType?: any;\n instanceCount?: number;\n isInstanced?: boolean;\n vertexArray?: any;\n transformFeedback?: any;\n framebuffer?: any;\n parameters?: {};\n uniforms?: any;\n samplers?: any;\n};\n\nexport default class Program extends WebGLResource<ProgramProps> {\n configuration: ProgramConfiguration;\n // Experimental flag to avoid deleting Program object while it is cached\n hash: string;; // Used by ProgramManager\n vs;\n fs;\n uniforms: Record<string, any>;\n varyings: Record<string, any>;\n _textureUniforms: Record<string, any>;\n _isCached: boolean = false;\n _textureIndexCounter: number = 0;\n _uniformCount: number = 0;\n _uniformSetters: Record<string, Function>;\n \n constructor(gl: WebGLRenderingContext, props: ProgramProps = {}) {\n super(WebGLDevice.attach(gl), props, {} as any);\n\n\n this.initialize(props);\n\n Object.seal(this);\n\n this._setId(props.id);\n }\n\n initialize(props: ProgramProps = {}) {\n const {hash, vs, fs, varyings, bufferMode = GL_SEPARATE_ATTRIBS} = props;\n\n this.hash = hash || ''; // Used by ProgramManager\n\n // Create shaders if needed\n this.vs =\n typeof vs === 'string' ? new VertexShader(this.gl, {id: `${props.id}-vs`, source: vs}) : vs;\n this.fs =\n typeof fs === 'string' ? new FragmentShader(this.gl, {id: `${props.id}-fs`, source: fs}) : fs;\n assert(this.vs instanceof VertexShader);\n assert(this.fs instanceof FragmentShader);\n\n // uniforms\n this.uniforms = {};\n\n this._textureUniforms = {};\n\n // Setup varyings if supplied\n if (varyings && varyings.length > 0) {\n assertWebGL2Context(this.gl);\n this.varyings = varyings;\n this.gl2.transformFeedbackVaryings(this.handle, varyings, bufferMode);\n }\n\n this._compileAndLink();\n this._readUniformLocationsFromLinkedProgram();\n this.configuration = new ProgramConfiguration(this);\n\n return this.setProps(props);\n }\n\n delete(options = {}) {\n if (this._isCached) {\n // This object is cached, do not delete\n return this;\n }\n return super.delete(options);\n }\n\n setProps(props) {\n if ('uniforms' in props) {\n this.setUniforms(props.uniforms);\n }\n return this;\n }\n\n // A good thing about the WebGL API is that there are so many ways to draw things ;)\n // This function unifies those ways into a single call using common parameters with sane defaults\n draw(options: ProgramDrawOptions): boolean {\n const {\n logPriority, // Probe log priority, enables Model to do more integrated logging\n\n drawMode = GL.TRIANGLES,\n vertexCount,\n offset = 0,\n start,\n end,\n isIndexed = false,\n indexType = GL.UNSIGNED_SHORT,\n instanceCount = 0,\n isInstanced = instanceCount > 0,\n\n vertexArray = null,\n transformFeedback,\n framebuffer,\n\n // Deprecated\n uniforms,\n samplers\n } = options;\n\n let {parameters = {}} = options;\n\n if (uniforms || samplers) {\n // DEPRECATED: v7.0 (deprecated earlier but warning not properly implemented)\n log.deprecated('Program.draw({uniforms})', 'Program.setUniforms(uniforms)')();\n this.setUniforms(uniforms || {});\n }\n\n if (log.priority >= logPriority) {\n const fb = framebuffer ? framebuffer.id : 'default';\n const message =\n `mode=${getKey(this.gl, drawMode)} verts=${vertexCount} ` +\n `instances=${instanceCount} indexType=${getKey(this.gl, indexType)} ` +\n `isInstanced=${isInstanced} isIndexed=${isIndexed} ` +\n `Framebuffer=${fb}`;\n log.log(logPriority, message)();\n }\n\n // TODO - move vertex array binding and transform feedback binding to withParameters?\n assert(vertexArray);\n\n this.gl.useProgram(this.handle);\n\n if (\n // Note: async textures set as uniforms might still be loading.\n // Now that all uniforms have been updated, check if any texture\n // in the uniforms is not yet initialized, then we don't draw\n !this._areTexturesRenderable() ||\n // Avoid WebGL draw call when not rendering any data\n vertexCount === 0 ||\n (isInstanced && instanceCount === 0)\n ) {\n return false;\n }\n\n vertexArray.bindForDraw(vertexCount, instanceCount, () => {\n if (framebuffer !== undefined) {\n parameters = Object.assign({}, parameters, {framebuffer});\n }\n\n if (transformFeedback) {\n const primitiveMode = getPrimitiveDrawMode(drawMode);\n transformFeedback.begin(primitiveMode);\n }\n\n this._bindTextures();\n\n withParameters(this.gl, parameters, () => {\n // TODO - Use polyfilled WebGL2RenderingContext instead of ANGLE extension\n if (isIndexed && isInstanced) {\n this.gl2.drawElementsInstanced(drawMode, vertexCount, indexType, offset, instanceCount);\n } else if (isIndexed && isWebGL2(this.gl) && !isNaN(start) && !isNaN(end)) {\n this.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);\n } else if (isIndexed) {\n this.gl.drawElements(drawMode, vertexCount, indexType, offset);\n } else if (isInstanced) {\n this.gl2.drawArraysInstanced(drawMode, offset, vertexCount, instanceCount);\n } else {\n this.gl.drawArrays(drawMode, offset, vertexCount);\n }\n });\n\n if (transformFeedback) {\n transformFeedback.end();\n }\n });\n\n return true;\n }\n\n setUniforms(uniforms = {}) {\n if (log.priority >= 2) {\n checkUniformValues(uniforms, this.id, this._uniformSetters);\n }\n\n this.gl.useProgram(this.handle);\n\n for (const uniformName in uniforms) {\n const uniform = uniforms[uniformName];\n const uniformSetter = this._uniformSetters[uniformName];\n\n if (uniformSetter) {\n let value = uniform;\n let textureUpdate = false;\n\n if (value instanceof Framebuffer) {\n value = value.texture;\n }\n if (value instanceof Texture) {\n textureUpdate = this.uniforms[uniformName] !== uniform;\n\n if (textureUpdate) {\n // eslint-disable-next-line max-depth\n // @ts-expect-error\n if (uniformSetter.textureIndex === undefined) {\n // @ts-expect-error\n uniformSetter.textureIndex = this._textureIndexCounter++;\n }\n\n // Bind texture to index\n const texture = value;\n // @ts-expect-error\n const {textureIndex} = uniformSetter;\n\n texture.bind(textureIndex);\n value = textureIndex;\n\n this._textureUniforms[uniformName] = texture;\n } else {\n // @ts-expect-error\n value = uniformSetter.textureIndex;\n }\n } else if (this._textureUniforms[uniformName]) {\n delete this._textureUniforms[uniformName];\n }\n\n // NOTE(Tarek): uniformSetter returns whether\n // value had to be updated or not.\n if (uniformSetter(value) || textureUpdate) {\n copyUniform(this.uniforms, uniformName, uniform);\n }\n }\n }\n\n return this;\n }\n\n // PRIVATE METHODS\n\n // Checks if all texture-values uniforms are renderable (i.e. loaded)\n // Update a texture if needed (e.g. from video)\n // Note: This is currently done before every draw call\n _areTexturesRenderable() {\n let texturesRenderable = true;\n\n for (const uniformName in this._textureUniforms) {\n const texture = this._textureUniforms[uniformName];\n texture.update();\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n\n return texturesRenderable;\n }\n\n // Binds textures\n // Note: This is currently done before every draw call\n _bindTextures() {\n for (const uniformName in this._textureUniforms) {\n // @ts-expect-error\n const textureIndex = this._uniformSetters[uniformName].textureIndex;\n this._textureUniforms[uniformName].bind(textureIndex);\n }\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createProgram();\n }\n\n _deleteHandle() {\n this.gl.deleteProgram(this.handle);\n }\n\n // Extract opts needed to initialize a `Program` from an independently created WebGLProgram handle\n _getOptionsFromHandle(handle) {\n const shaderHandles = this.gl.getAttachedShaders(handle);\n const opts = {};\n for (const shaderHandle of shaderHandles) {\n const type = this.gl.getShaderParameter(this.handle, GL.SHADER_TYPE);\n switch (type) {\n case GL.VERTEX_SHADER:\n // @ts-expect-error\n opts.vs = new VertexShader({handle: shaderHandle});\n break;\n case GL.FRAGMENT_SHADER:\n // @ts-expect-error\n opts.fs = new FragmentShader({handle: shaderHandle});\n break;\n default:\n }\n }\n return opts;\n }\n\n _getParameter(pname) {\n return this.gl.getProgramParameter(this.handle, pname);\n }\n\n // If program is not named, name it after shader names\n // TODO - this.id will already have been initialized\n _setId(id) {\n if (!id) {\n const programName = this._getName();\n this.id = uid(programName);\n }\n }\n\n // Generate a default name for the program based on names of the shaders\n _getName() {\n let programName = this.vs.getName() || this.fs.getName();\n programName = programName.replace(/shader/i, '');\n programName = programName ? `${programName}-program` : 'program';\n return programName;\n }\n\n _compileAndLink() {\n const {gl} = this;\n gl.attachShader(this.handle, this.vs.handle);\n gl.attachShader(this.handle, this.fs.handle);\n log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this._getName()}`)();\n gl.linkProgram(this.handle);\n log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this._getName()}`)();\n\n // Avoid checking program linking error in production\n // @ts-expect-error\n if (gl.debug || log.level > 0) {\n const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);\n if (!linked) {\n throw new Error(`Error linking: ${gl.getProgramInfoLog(this.handle)}`);\n }\n\n gl.validateProgram(this.handle);\n const validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);\n if (!validated) {\n throw new Error(`Error validating: ${gl.getProgramInfoLog(this.handle)}`);\n }\n }\n }\n\n // query uniform locations and build name to setter map.\n // TODO - This overlaps with ProgramConfiguration?\n _readUniformLocationsFromLinkedProgram() {\n const {gl} = this;\n this._uniformSetters = {};\n this._uniformCount = this._getParameter(GL.ACTIVE_UNIFORMS);\n for (let i = 0; i < this._uniformCount; i++) {\n const info = this.gl.getActiveUniform(this.handle, i);\n const {name} = parseUniformName(info.name);\n let location = gl.getUniformLocation(this.handle, name);\n // @ts-expect-error\n this._uniformSetters[name] = getUniformSetter(gl, location, info);\n if (info.size > 1) {\n for (let l = 0; l < info.size; l++) {\n location = gl.getUniformLocation(this.handle, `${name}[${l}]`);\n // @ts-expect-error\n this._uniformSetters[`${name}[${l}]`] = getUniformSetter(gl, location, info);\n }\n }\n }\n this._textureIndexCounter = 0;\n }\n\n // TO BE REMOVED in v7?\n\n // Rretrieves information about active uniforms identifed by their indices (`uniformIndices`)\n // https://\n // developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/getActiveUniforms\n getActiveUniforms(uniformIndices, pname) {\n return this.gl2.getActiveUniforms(this.handle, uniformIndices, pname);\n }\n\n // Retrieves the index of a uniform block\n getUniformBlockIndex(blockName) {\n return this.gl2.getUniformBlockIndex(this.handle, blockName);\n }\n\n // Retrieves information about an active uniform block (`blockIndex`)\n // https://\n // developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/getActiveUniformBlockParameter\n getActiveUniformBlockParameter(blockIndex, pname) {\n return this.gl2.getActiveUniformBlockParameter(this.handle, blockIndex, pname);\n }\n\n // Binds a uniform block (`blockIndex`) to a specific binding point (`blockBinding`)\n uniformBlockBinding(blockIndex, blockBinding) {\n this.gl2.uniformBlockBinding(this.handle, blockIndex, blockBinding);\n }\n}\n"],"file":"program.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/classes/program.ts"],"names":["LOG_PROGRAM_PERF_PRIORITY","GL_SEPARATE_ATTRIBS","Program","device","props","WebGLDevice","attach","initialize","Object","seal","_setId","id","options","_isCached","hash","vs","fs","varyings","bufferMode","createShader","source","stage","uniforms","_textureUniforms","length","gl","gl2","transformFeedbackVaryings","handle","_compileAndLink","_readUniformLocationsFromLinkedProgram","configuration","ProgramConfiguration","setProps","setUniforms","logPriority","drawMode","GL","TRIANGLES","vertexCount","offset","start","end","isIndexed","indexType","UNSIGNED_SHORT","instanceCount","isInstanced","vertexArray","transformFeedback","framebuffer","samplers","parameters","log","deprecated","priority","fb","message","useProgram","_areTexturesRenderable","bindForDraw","undefined","assign","primitiveMode","begin","_bindTextures","drawElementsInstanced","isNaN","drawRangeElements","drawElements","drawArraysInstanced","drawArrays","_uniformSetters","uniformName","uniform","uniformSetter","value","textureUpdate","Framebuffer","texture","Texture","textureIndex","_textureIndexCounter","bind","texturesRenderable","update","loaded","createProgram","deleteProgram","shaderHandles","getAttachedShaders","opts","shaderHandle","type","getShaderParameter","SHADER_TYPE","VERTEX_SHADER","VertexShader","FRAGMENT_SHADER","FragmentShader","pname","getProgramParameter","programName","_getName","replace","attachShader","time","linkProgram","timeEnd","debug","level","linked","LINK_STATUS","Error","getProgramInfoLog","validateProgram","validated","VALIDATE_STATUS","_uniformCount","_getParameter","ACTIVE_UNIFORMS","i","info","getActiveUniform","name","location","getUniformLocation","size","l","uniformIndices","getActiveUniforms","blockName","getUniformBlockIndex","blockIndex","getActiveUniformBlockParameter","blockBinding","uniformBlockBinding","WebGLResource"],"mappings":"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","sourcesContent":["import {log, assert, uid, cast, Shader} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport WebGLDevice from '../adapter/webgl-device';\nimport WebGLResource, {ResourceProps} from './webgl-resource';\nimport Texture from './texture';\nimport Framebuffer from './framebuffer';\nimport {parseUniformName, getUniformSetter} from './uniforms';\nimport {WEBGLShader} from '../adapter/webgl-shader';\nimport ProgramConfiguration from './program-configuration';\nimport {copyUniform, checkUniformValues} from './uniforms';\n\nimport {isWebGL2, assertWebGL2Context} from '../context/context/webgl-checks';\nimport {withParameters} from '../context/state-tracker/with-parameters';\nimport {getKey} from '../webgl-utils/constants-to-keys';\nimport {getPrimitiveDrawMode} from '../webgl-utils/attribute-utils';\n\nconst LOG_PROGRAM_PERF_PRIORITY = 4;\n\nconst GL_SEPARATE_ATTRIBS = 0x8c8d;\n\nexport type ProgramProps = ResourceProps & {\n hash?: string;\n vs?: string | Shader;\n fs?: string | Shader;\n varyings?: string[];\n bufferMode?: number;\n};\n\nexport type ProgramDrawOptions = {\n logPriority?: number;\n drawMode?: number;\n vertexCount: any;\n offset?: number;\n start?: number;\n end?: number;\n isIndexed?: boolean;\n indexType?: any;\n instanceCount?: number;\n isInstanced?: boolean;\n vertexArray?: any;\n transformFeedback?: any; // TransformFeedback;\n framebuffer?: Framebuffer;\n parameters?: {};\n uniforms?: Record<string, any>;\n samplers?: any;\n};\n\nexport default class Program extends WebGLResource<ProgramProps> {\n configuration: ProgramConfiguration;\n // Experimental flag to avoid deleting Program object while it is cached\n hash: string; // Used by ProgramManager\n vs: WEBGLShader;\n fs: WEBGLShader;\n uniforms: Record<string, any>;\n varyings: Record<string, any>;\n _textureUniforms: Record<string, any>;\n _isCached: boolean = false;\n _textureIndexCounter: number = 0;\n _uniformCount: number = 0;\n _uniformSetters: Record<string, Function>;\n\n constructor(device: WebGLDevice | WebGLRenderingContext, props: ProgramProps = {}) {\n super(WebGLDevice.attach(device), props, {} as any);\n this.initialize(props);\n Object.seal(this);\n this._setId(props.id);\n }\n\n destroy(options = {}) {\n if (this._isCached) {\n // This object is cached, do not delete\n return this;\n }\n return super.delete(options);\n }\n\n delete(options = {}) {\n if (this._isCached) {\n // This object is cached, do not delete\n return this;\n }\n return super.delete(options);\n }\n\n initialize(props: ProgramProps = {}) {\n const {hash, vs, fs, varyings, bufferMode = GL_SEPARATE_ATTRIBS} = props;\n\n this.hash = hash || ''; // Used by ProgramManager\n\n // Create shaders if needed\n this.vs =\n typeof vs === 'string'\n ? this.device.createShader({id: `${props.id}-vs`, source: vs, stage: 'vertex'})\n : cast<WEBGLShader>(vs);\n this.fs =\n typeof fs === 'string'\n ? this.device.createShader({id: `${props.id}-fs`, source: fs, stage: 'fragment'})\n : cast<WEBGLShader>(fs);\n assert(this.vs.stage === 'vertex');\n assert(this.fs.stage === 'fragment');\n\n // uniforms\n this.uniforms = {};\n this._textureUniforms = {};\n\n // Setup varyings if supplied\n if (varyings && varyings.length > 0) {\n assertWebGL2Context(this.gl);\n this.varyings = varyings;\n this.gl2.transformFeedbackVaryings(this.handle, varyings, bufferMode);\n }\n\n this._compileAndLink();\n this._readUniformLocationsFromLinkedProgram();\n this.configuration = new ProgramConfiguration(this);\n\n return this.setProps(props);\n }\n\n setProps(props) {\n if ('uniforms' in props) {\n this.setUniforms(props.uniforms);\n }\n return this;\n }\n\n // A good thing about the WebGL API is that there are so many ways to draw things ;)\n // This function unifies those ways into a single call using common parameters with sane defaults\n draw(options: ProgramDrawOptions): boolean {\n const {\n logPriority, // Probe log priority, enables Model to do more integrated logging\n\n drawMode = GL.TRIANGLES,\n vertexCount,\n offset = 0,\n start,\n end,\n isIndexed = false,\n indexType = GL.UNSIGNED_SHORT,\n instanceCount = 0,\n isInstanced = instanceCount > 0,\n\n vertexArray = null,\n transformFeedback,\n framebuffer,\n\n // Deprecated\n uniforms,\n samplers\n } = options;\n\n let {parameters = {}} = options;\n\n if (uniforms || samplers) {\n // DEPRECATED: v7.0 (deprecated earlier but warning not properly implemented)\n log.deprecated('Program.draw({uniforms})', 'Program.setUniforms(uniforms)')();\n this.setUniforms(uniforms || {});\n }\n\n if (log.priority >= logPriority) {\n const fb = framebuffer ? framebuffer.id : 'default';\n const message =\n `mode=${getKey(this.gl, drawMode)} verts=${vertexCount} ` +\n `instances=${instanceCount} indexType=${getKey(this.gl, indexType)} ` +\n `isInstanced=${isInstanced} isIndexed=${isIndexed} ` +\n `Framebuffer=${fb}`;\n log.log(logPriority, message)();\n }\n\n // TODO - move vertex array binding and transform feedback binding to withParameters?\n assert(vertexArray);\n\n this.gl.useProgram(this.handle);\n\n if (\n // Note: async textures set as uniforms might still be loading.\n // Now that all uniforms have been updated, check if any texture\n // in the uniforms is not yet initialized, then we don't draw\n !this._areTexturesRenderable() ||\n // Avoid WebGL draw call when not rendering any data\n vertexCount === 0 ||\n (isInstanced && instanceCount === 0)\n ) {\n return false;\n }\n\n vertexArray.bindForDraw(vertexCount, instanceCount, () => {\n if (framebuffer !== undefined) {\n parameters = Object.assign({}, parameters, {framebuffer});\n }\n\n if (transformFeedback) {\n const primitiveMode = getPrimitiveDrawMode(drawMode);\n transformFeedback.begin(primitiveMode);\n }\n\n this._bindTextures();\n\n withParameters(this.gl, parameters, () => {\n // TODO - Use polyfilled WebGL2RenderingContext instead of ANGLE extension\n if (isIndexed && isInstanced) {\n this.gl2.drawElementsInstanced(drawMode, vertexCount, indexType, offset, instanceCount);\n } else if (isIndexed && isWebGL2(this.gl) && !isNaN(start) && !isNaN(end)) {\n this.gl2.drawRangeElements(drawMode, start, end, vertexCount, indexType, offset);\n } else if (isIndexed) {\n this.gl.drawElements(drawMode, vertexCount, indexType, offset);\n } else if (isInstanced) {\n this.gl2.drawArraysInstanced(drawMode, offset, vertexCount, instanceCount);\n } else {\n this.gl.drawArrays(drawMode, offset, vertexCount);\n }\n });\n\n if (transformFeedback) {\n transformFeedback.end();\n }\n });\n\n return true;\n }\n\n setUniforms(uniforms = {}) {\n if (log.priority >= 2) {\n checkUniformValues(uniforms, this.id, this._uniformSetters);\n }\n\n this.gl.useProgram(this.handle);\n\n for (const uniformName in uniforms) {\n const uniform = uniforms[uniformName];\n const uniformSetter = this._uniformSetters[uniformName];\n\n if (uniformSetter) {\n let value = uniform;\n let textureUpdate = false;\n\n if (value instanceof Framebuffer) {\n value = value.texture;\n }\n if (value instanceof Texture) {\n textureUpdate = this.uniforms[uniformName] !== uniform;\n\n if (textureUpdate) {\n // eslint-disable-next-line max-depth\n // @ts-expect-error\n if (uniformSetter.textureIndex === undefined) {\n // @ts-expect-error\n uniformSetter.textureIndex = this._textureIndexCounter++;\n }\n\n // Bind texture to index\n const texture = value;\n // @ts-expect-error\n const {textureIndex} = uniformSetter;\n\n texture.bind(textureIndex);\n value = textureIndex;\n\n this._textureUniforms[uniformName] = texture;\n } else {\n // @ts-expect-error\n value = uniformSetter.textureIndex;\n }\n } else if (this._textureUniforms[uniformName]) {\n delete this._textureUniforms[uniformName];\n }\n\n // NOTE(Tarek): uniformSetter returns whether\n // value had to be updated or not.\n if (uniformSetter(value) || textureUpdate) {\n copyUniform(this.uniforms, uniformName, uniform);\n }\n }\n }\n\n return this;\n }\n\n // PRIVATE METHODS\n\n // Checks if all texture-values uniforms are renderable (i.e. loaded)\n // Update a texture if needed (e.g. from video)\n // Note: This is currently done before every draw call\n _areTexturesRenderable() {\n let texturesRenderable = true;\n\n for (const uniformName in this._textureUniforms) {\n const texture = this._textureUniforms[uniformName];\n texture.update();\n texturesRenderable = texturesRenderable && texture.loaded;\n }\n\n return texturesRenderable;\n }\n\n // Binds textures\n // Note: This is currently done before every draw call\n _bindTextures() {\n for (const uniformName in this._textureUniforms) {\n // @ts-expect-error\n const textureIndex = this._uniformSetters[uniformName].textureIndex;\n this._textureUniforms[uniformName].bind(textureIndex);\n }\n }\n\n // RESOURCE METHODS\n\n _createHandle() {\n return this.gl.createProgram();\n }\n\n _deleteHandle() {\n this.gl.deleteProgram(this.handle);\n }\n\n // Extract opts needed to initialize a `Program` from an independently created WebGLProgram handle\n _getOptionsFromHandle(handle) {\n const shaderHandles = this.gl.getAttachedShaders(handle);\n const opts = {};\n for (const shaderHandle of shaderHandles) {\n const type = this.gl.getShaderParameter(this.handle, GL.SHADER_TYPE);\n switch (type) {\n case GL.VERTEX_SHADER:\n // @ts-expect-error\n opts.vs = new VertexShader({handle: shaderHandle});\n break;\n case GL.FRAGMENT_SHADER:\n // @ts-expect-error\n opts.fs = new FragmentShader({handle: shaderHandle});\n break;\n default:\n }\n }\n return opts;\n }\n\n _getParameter(pname) {\n return this.gl.getProgramParameter(this.handle, pname);\n }\n\n // If program is not named, name it after shader names\n // TODO - this.id will already have been initialized\n _setId(id) {\n if (!id) {\n const programName = this._getName();\n this.id = uid(programName);\n }\n }\n\n // Generate a default name for the program based on names of the shaders\n _getName() {\n // let programName = this.vs.getName() || this.fs.getName();\n let programName = this.vs.id || this.fs.id;\n programName = programName.replace(/shader/i, '');\n programName = programName ? `${programName}-program` : 'program';\n return programName;\n }\n\n _compileAndLink() {\n const {gl} = this;\n gl.attachShader(this.handle, this.vs.handle);\n gl.attachShader(this.handle, this.fs.handle);\n log.time(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this._getName()}`)();\n gl.linkProgram(this.handle);\n log.timeEnd(LOG_PROGRAM_PERF_PRIORITY, `linkProgram for ${this._getName()}`)();\n\n // Avoid checking program linking error in production\n // @ts-expect-error\n if (gl.debug || log.level > 0) {\n const linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);\n if (!linked) {\n throw new Error(`Error linking: ${gl.getProgramInfoLog(this.handle)}`);\n }\n\n gl.validateProgram(this.handle);\n const validated = gl.getProgramParameter(this.handle, gl.VALIDATE_STATUS);\n if (!validated) {\n throw new Error(`Error validating: ${gl.getProgramInfoLog(this.handle)}`);\n }\n }\n }\n\n // query uniform locations and build name to setter map.\n // TODO - This overlaps with ProgramConfiguration?\n _readUniformLocationsFromLinkedProgram() {\n const {gl} = this;\n this._uniformSetters = {};\n this._uniformCount = this._getParameter(GL.ACTIVE_UNIFORMS);\n for (let i = 0; i < this._uniformCount; i++) {\n const info = this.gl.getActiveUniform(this.handle, i);\n const {name} = parseUniformName(info.name);\n let location = gl.getUniformLocation(this.handle, name);\n // @ts-expect-error\n this._uniformSetters[name] = getUniformSetter(gl, location, info);\n if (info.size > 1) {\n for (let l = 0; l < info.size; l++) {\n location = gl.getUniformLocation(this.handle, `${name}[${l}]`);\n // @ts-expect-error\n this._uniformSetters[`${name}[${l}]`] = getUniformSetter(gl, location, info);\n }\n }\n }\n this._textureIndexCounter = 0;\n }\n\n // TO BE REMOVED in v7?\n\n // Rretrieves information about active uniforms identifed by their indices (`uniformIndices`)\n // https://\n // developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/getActiveUniforms\n getActiveUniforms(uniformIndices, pname) {\n return this.gl2.getActiveUniforms(this.handle, uniformIndices, pname);\n }\n\n // Retrieves the index of a uniform block\n getUniformBlockIndex(blockName) {\n return this.gl2.getUniformBlockIndex(this.handle, blockName);\n }\n\n // Retrieves information about an active uniform block (`blockIndex`)\n // https://\n // developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext/getActiveUniformBlockParameter\n getActiveUniformBlockParameter(blockIndex, pname) {\n return this.gl2.getActiveUniformBlockParameter(this.handle, blockIndex, pname);\n }\n\n // Binds a uniform block (`blockIndex`) to a specific binding point (`blockBinding`)\n uniformBlockBinding(blockIndex, blockBinding) {\n this.gl2.uniformBlockBinding(this.handle, blockIndex, blockBinding);\n }\n}\n"],"file":"program.js"}
|
|
@@ -23,7 +23,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
23
23
|
|
|
24
24
|
var _api = require("@luma.gl/api");
|
|
25
25
|
|
|
26
|
-
var _webglDevice = _interopRequireDefault(require("../
|
|
26
|
+
var _webglDevice = _interopRequireDefault(require("../adapter/webgl-device"));
|
|
27
27
|
|
|
28
28
|
var _webglChecks = require("../context/context/webgl-checks");
|
|
29
29
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/classes/query.ts"],"names":["GL_QUERY_RESULT","GL_QUERY_RESULT_AVAILABLE","GL_TIME_ELAPSED_EXT","GL_GPU_DISJOINT_EXT","GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN","GL_ANY_SAMPLES_PASSED","GL_ANY_SAMPLES_PASSED_CONSERVATIVE","Query","gl","opts","WebGLDevice","attach","Object","seal","begin","options","conservative","target","_queryPending","gl2","beginQuery","handle","endQuery","resultAvailable","getQueryParameter","getParameter","getResult","limit","Number","POSITIVE_INFINITY","_pollingPromise","counter","Promise","resolve","reject","poll","isResultAvailable","requestAnimationFrame","isSupported","createQuery","deleteQuery","webgl2","webglDevice","fromContext","hasTimerQuery","features","has","supported","key","WebGLResource"],"mappings":"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","sourcesContent":["// WebGL2 Query (also handles disjoint timer extensions)\nimport {assert} from '@luma.gl/api';\nimport WebGLDevice from '../
|
|
1
|
+
{"version":3,"sources":["../../../src/classes/query.ts"],"names":["GL_QUERY_RESULT","GL_QUERY_RESULT_AVAILABLE","GL_TIME_ELAPSED_EXT","GL_GPU_DISJOINT_EXT","GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN","GL_ANY_SAMPLES_PASSED","GL_ANY_SAMPLES_PASSED_CONSERVATIVE","Query","gl","opts","WebGLDevice","attach","Object","seal","begin","options","conservative","target","_queryPending","gl2","beginQuery","handle","endQuery","resultAvailable","getQueryParameter","getParameter","getResult","limit","Number","POSITIVE_INFINITY","_pollingPromise","counter","Promise","resolve","reject","poll","isResultAvailable","requestAnimationFrame","isSupported","createQuery","deleteQuery","webgl2","webglDevice","fromContext","hasTimerQuery","features","has","supported","key","WebGLResource"],"mappings":"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","sourcesContent":["// WebGL2 Query (also handles disjoint timer extensions)\nimport {assert} from '@luma.gl/api';\nimport WebGLDevice from '../adapter/webgl-device';\nimport {isWebGL2} from '../context/context/webgl-checks';\nimport WebGLResource, {ResourceProps} from './webgl-resource';\n\nconst GL_QUERY_RESULT = 0x8866; // Returns a GLuint containing the query result.\nconst GL_QUERY_RESULT_AVAILABLE = 0x8867; // whether query result is available.\n\nconst GL_TIME_ELAPSED_EXT = 0x88bf; // Elapsed time (in nanoseconds).\nconst GL_GPU_DISJOINT_EXT = 0x8fbb; // Whether GPU performed any disjoint operation.\n\nconst GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8c88; // #primitives written to feedback buffers\nconst GL_ANY_SAMPLES_PASSED = 0x8c2f; // Occlusion query (if drawing passed depth test)\nconst GL_ANY_SAMPLES_PASSED_CONSERVATIVE = 0x8d6a; // Occlusion query less accurate/faster version\n\nexport type QueryProps = ResourceProps & {\n};\n\n/**\n * Asynchronous queries for different kinds of information\n */\nexport default class Query extends WebGLResource<QueryProps> {\n // Returns true if Query is supported by the WebGL implementation\n // Can also check whether timestamp queries are available.\n static isSupported(gl: WebGLRenderingContext, options: string[] = []): boolean {\n const webgl2 = isWebGL2(gl);\n\n // Initial value\n const webglDevice = WebGLDevice.fromContext(gl);\n const hasTimerQuery = webglDevice.features.has('webgl-timer-query');\n let supported = webgl2 || hasTimerQuery;\n\n for (const key of options) {\n switch (key) {\n case 'queries':\n supported = supported && webgl2;\n break;\n case 'timers':\n supported = supported && hasTimerQuery;\n break;\n default:\n assert(false);\n }\n }\n\n return supported;\n }\n\n target = null;\n _queryPending = false;\n _pollingPromise = null;\n\n // Create a query class\n constructor(gl: WebGLRenderingContext, opts: QueryProps = {}) {\n super(WebGLDevice.attach(gl), opts, {} as any);\n Object.seal(this);\n }\n\n // Shortcut for timer query (dependent on extension in both WebGL1 and 2)\n // Measures GPU time delta between this call and a matching `end` call in the\n // GPU instruction stream.\n beginTimeElapsedQuery(): this {\n return this.begin(GL_TIME_ELAPSED_EXT);\n }\n\n // Shortcut for occlusion queries\n beginOcclusionQuery(options?: {conservative?: boolean}): this {\n return this.begin(options?.conservative ? GL_ANY_SAMPLES_PASSED_CONSERVATIVE : GL_ANY_SAMPLES_PASSED);\n }\n\n // Shortcut for transformFeedbackQuery\n beginTransformFeedbackQuery(): this {\n return this.begin(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN);\n }\n\n // Due to OpenGL API limitations, after calling `begin()` on one Query\n // instance, `end()` must be called on that same instance before\n // calling `begin()` on another query. While there can be multiple\n // outstanding queries representing disjoint `begin()`/`end()` intervals.\n // It is not possible to interleave or overlap `begin` and `end` calls.\n begin(target: number): this {\n // Don't start a new query if one is already active.\n if (this._queryPending) {\n return this;\n }\n\n this.target = target;\n this.gl2.beginQuery(this.target, this.handle);\n\n return this;\n }\n\n // ends the current query\n end(): this {\n // Can't end a new query if the last one hasn't been resolved.\n if (this._queryPending) {\n return this;\n }\n\n if (this.target) {\n this.gl2.endQuery(this.target);\n this.target = null;\n this._queryPending = true;\n }\n return this;\n }\n\n // Returns true if the query result is available\n isResultAvailable(): boolean {\n if (!this._queryPending) {\n return false;\n }\n\n const resultAvailable = this.gl2.getQueryParameter(this.handle, GL_QUERY_RESULT_AVAILABLE);\n if (resultAvailable) {\n this._queryPending = false;\n }\n return resultAvailable;\n }\n\n // Timing query is disjoint, i.e. results are invalid\n isTimerDisjoint(): boolean {\n return this.gl2.getParameter(GL_GPU_DISJOINT_EXT);\n }\n\n // Returns query result.\n getResult(): any {\n return this.gl2.getQueryParameter(this.handle, GL_QUERY_RESULT);\n }\n\n // Returns the query result, converted to milliseconds to match JavaScript conventions.\n getTimerMilliseconds() {\n return this.getResult() / 1e6;\n }\n\n // Polls the query\n createPoll(limit: number = Number.POSITIVE_INFINITY): Promise<any> {\n if (this._pollingPromise) {\n return this._pollingPromise;\n }\n\n let counter = 0;\n\n this._pollingPromise = new Promise((resolve, reject) => {\n const poll = () => {\n if (this.isResultAvailable()) {\n resolve(this.getResult());\n this._pollingPromise = null;\n } else if (counter++ > limit) {\n reject('Timed out');\n this._pollingPromise = null;\n } else {\n requestAnimationFrame(poll);\n }\n };\n\n requestAnimationFrame(poll);\n });\n\n return this._pollingPromise;\n }\n\n _createHandle() {\n return Query.isSupported(this.gl) ? this.gl2.createQuery() : null;\n }\n\n _deleteHandle() {\n this.gl2.deleteQuery(this.handle);\n }\n}\n"],"file":"query.js"}
|
|
@@ -23,7 +23,7 @@ var _api = require("@luma.gl/api");
|
|
|
23
23
|
|
|
24
24
|
var _constants = _interopRequireDefault(require("@luma.gl/constants"));
|
|
25
25
|
|
|
26
|
-
var _webglDevice = _interopRequireDefault(require("../
|
|
26
|
+
var _webglDevice = _interopRequireDefault(require("../adapter/webgl-device"));
|
|
27
27
|
|
|
28
28
|
var _webglResource = _interopRequireDefault(require("./webgl-resource"));
|
|
29
29
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/classes/renderbuffer.ts"],"names":["DEFAULT_RENDERBUFFER_PROPS","id","undefined","handle","userData","format","width","height","samples","ImmutableRenderbuffer","gl","props","WebGLDevice","attach","_initialize","trackDeallocatedMemory","bindRenderbuffer","GL","RENDERBUFFER","renderbufferStorageMultisample","renderbufferStorage","trackAllocatedMemory","createRenderbuffer","deleteRenderbuffer","options","WebGLResource","Renderbuffer","size","initialize","Object","assign","getRenderbufferParameter","RENDERBUFFER_INTERNAL_FORMAT","RENDERBUFFER_WIDTH","RENDERBUFFER_HEIGHT","RENDERBUFFER_SAMPLES","pname","value","isSupported","getInternalformatParameter","SAMPLES"],"mappings":"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","sourcesContent":["/* eslint-disable no-inline-comments */\nimport {assert} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport WebGLDevice from '../
|
|
1
|
+
{"version":3,"sources":["../../../src/classes/renderbuffer.ts"],"names":["DEFAULT_RENDERBUFFER_PROPS","id","undefined","handle","userData","format","width","height","samples","ImmutableRenderbuffer","gl","props","WebGLDevice","attach","_initialize","trackDeallocatedMemory","bindRenderbuffer","GL","RENDERBUFFER","renderbufferStorageMultisample","renderbufferStorage","trackAllocatedMemory","createRenderbuffer","deleteRenderbuffer","options","WebGLResource","Renderbuffer","size","initialize","Object","assign","getRenderbufferParameter","RENDERBUFFER_INTERNAL_FORMAT","RENDERBUFFER_WIDTH","RENDERBUFFER_HEIGHT","RENDERBUFFER_SAMPLES","pname","value","isSupported","getInternalformatParameter","SAMPLES"],"mappings":"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","sourcesContent":["/* eslint-disable no-inline-comments */\nimport {assert} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport WebGLDevice from '../adapter/webgl-device';\nimport WebGLResource, {ResourceProps} from './webgl-resource';\nimport {isRenderbufferFormatSupported, getRenderbufferFormatBytesPerPixel} from './renderbuffer-formats';\nimport {isWebGL2} from '../context/context/webgl-checks';\n\nexport type RenderbufferProps = ResourceProps & {\n format: number;\n width?: number;\n height?: number;\n samples?: number;\n};\n\nconst DEFAULT_RENDERBUFFER_PROPS: Required<RenderbufferProps> = {\n id: undefined,\n handle: undefined,\n userData: undefined,\n format: 0,\n width: 1, \n height: 1, \n samples: 0\n};\n\n/**\n * Renderbuffers are GPU objects that contain images.\n * In contrast to Textures they are optimized for use as render targets, with Framebuffers.\n * while Textures may not be, and are the logical choice when\n * you do not need to sample (i.e. in a post-pass shader)\n * from the produced image. If you need to resample\n * (such as when reading depth back in a second shader pass),\n * use Textures instead.\n * Renderbuffer objects also natively accommodate Multisampling (MSAA).\n */\nexport class ImmutableRenderbuffer extends WebGLResource<RenderbufferProps> {\n static isSupported(gl: WebGLRenderingContext, options?: {format?: number}): boolean {\n return !options.format || isRenderbufferFormatSupported(gl, options.format);\n }\n\n constructor(gl: WebGLRenderingContext, props: RenderbufferProps) {\n super(WebGLDevice.attach(gl), props, DEFAULT_RENDERBUFFER_PROPS);\n this._initialize(this.props);\n }\n\n // PRIVATE METHODS\n\n /** Creates and initializes a renderbuffer object's data store */\n protected _initialize(props: Required<RenderbufferProps>) {\n const {format, width, height, samples} = props;\n assert(format, 'Needs format');\n\n this.trackDeallocatedMemory();\n\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);\n\n if (samples !== 0 && isWebGL2(this.gl)) {\n // @ts-expect-error\n this.gl.renderbufferStorageMultisample(GL.RENDERBUFFER, samples, format, width, height);\n } else {\n this.gl.renderbufferStorage(GL.RENDERBUFFER, format, width, height);\n }\n\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);\n\n this.trackAllocatedMemory(\n width * height * (samples || 1) * getRenderbufferFormatBytesPerPixel(format)\n );\n\n return this;\n }\n\n // RESOURECE IMPLEMENTATION\n\n _createHandle() {\n return this.gl.createRenderbuffer();\n }\n\n _deleteHandle(): void {\n this.gl.deleteRenderbuffer(this.handle);\n this.trackDeallocatedMemory();\n }\n\n _bindHandle(handle): void {\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, handle);\n }\n}\n\n\n/**\n * Renderbuffers are GPU objects that contain images.\n * In contrast to Textures they are optimized for use as render targets, with Framebuffers.\n * while Textures may not be, and are the logical choice when\n * you do not need to sample (i.e. in a post-pass shader)\n * from the produced image. If you need to resample\n * (such as when reading depth back in a second shader pass),\n * use Textures instead.\n * Renderbuffer objects also natively accommodate Multisampling (MSAA).\n */\nexport default class Renderbuffer extends ImmutableRenderbuffer {\n get width(): number { return this.props.width; }\n get height(): number { return this.props.height; }\n get format(): number { return this.props.format; }\n get samples(): number { return this.props.samples; }\n\n static isSupported(gl: WebGLRenderingContext, options?: {format?: number}): boolean {\n return ImmutableRenderbuffer.isSupported(gl, options);\n }\n\n static getSamplesForFormat(gl: WebGL2RenderingContext, options: {format: number}): number{\n // Polyfilled to return [0] under WebGL1\n return gl.getInternalformatParameter(GL.RENDERBUFFER, options.format, GL.SAMPLES);\n }\n\n constructor(gl: WebGLRenderingContext, props?: RenderbufferProps) {\n super(gl, props);\n }\n\n resize(size: {width: number, height: number}): this {\n // Don't resize if width/height haven't changed\n if (size.width !== this.width || size.height !== this.height) {\n return this.initialize({...size, format: this.format, samples: this.samples});\n }\n return this;\n }\n\n /** Creates and initializes a renderbuffer object's data store */\n initialize(props: RenderbufferProps): this {\n Object.assign(this.props, props);\n this._initialize(this.props);\n return this;\n }\n\n // PRIVATE\n\n _syncHandle(handle) {\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);\n Object.assign(this.props, {\n format: this.gl.getRenderbufferParameter(GL.RENDERBUFFER, GL.RENDERBUFFER_INTERNAL_FORMAT),\n width: this.gl.getRenderbufferParameter(GL.RENDERBUFFER, GL.RENDERBUFFER_WIDTH),\n height: this.gl.getRenderbufferParameter(GL.RENDERBUFFER, GL.RENDERBUFFER_HEIGHT),\n samples: this.gl.getRenderbufferParameter(GL.RENDERBUFFER, GL.RENDERBUFFER_SAMPLES)\n });\n }\n\n // @param {Boolean} opt.autobind=true - method call will bind/unbind object\n // @returns {GLenum|GLint} - depends on pname\n _getParameter(pname) {\n this.gl.bindRenderbuffer(GL.RENDERBUFFER, this.handle);\n const value = this.gl.getRenderbufferParameter(GL.RENDERBUFFER, pname);\n // this.gl.bindRenderbuffer(GL.RENDERBUFFER, null);\n return value;\n }\n}\n"],"file":"renderbuffer.js"}
|
|
@@ -5,11 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.FragmentShader = exports.VertexShader = exports.Shader =
|
|
9
|
-
|
|
10
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
-
|
|
12
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
8
|
+
exports.FragmentShader = exports.VertexShader = exports.Shader = void 0;
|
|
13
9
|
|
|
14
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
11
|
|
|
@@ -33,9 +29,9 @@ var _shadertools = require("@luma.gl/shadertools");
|
|
|
33
29
|
|
|
34
30
|
var _webglChecks = require("../context/context/webgl-checks");
|
|
35
31
|
|
|
36
|
-
var
|
|
32
|
+
var _webglShader = require("../adapter/webgl-shader");
|
|
37
33
|
|
|
38
|
-
var _webglDevice = _interopRequireDefault(require("../
|
|
34
|
+
var _webglDevice = _interopRequireDefault(require("../adapter/webgl-device"));
|
|
39
35
|
|
|
40
36
|
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; }
|
|
41
37
|
|
|
@@ -47,137 +43,31 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
|
|
|
47
43
|
|
|
48
44
|
var ERR_SOURCE = 'Shader: GLSL source code must be a JavaScript string';
|
|
49
45
|
|
|
50
|
-
var WEBGLShader = function (_ShaderAPI) {
|
|
51
|
-
(0, _inherits2.default)(WEBGLShader, _ShaderAPI);
|
|
52
|
-
|
|
53
|
-
var _super = _createSuper(WEBGLShader);
|
|
54
|
-
|
|
55
|
-
function WEBGLShader(gl, props) {
|
|
56
|
-
var _this;
|
|
57
|
-
|
|
58
|
-
(0, _classCallCheck2.default)(this, WEBGLShader);
|
|
59
|
-
_this = _super.call(this, _webglDevice.default.attach(gl), _objectSpread({
|
|
60
|
-
id: getShaderIdFromProps(props)
|
|
61
|
-
}, props));
|
|
62
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "device", void 0);
|
|
63
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "gl", void 0);
|
|
64
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handle", void 0);
|
|
65
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "stage", void 0);
|
|
66
|
-
_this.device = _webglDevice.default.attach(gl);
|
|
67
|
-
_this.gl = gl;
|
|
68
|
-
|
|
69
|
-
switch (_this.props.stage) {
|
|
70
|
-
case 'vertex':
|
|
71
|
-
_this.handle = _this.props.handle || _this.gl.createShader(_constants.default.VERTEX_SHADER);
|
|
72
|
-
break;
|
|
73
|
-
|
|
74
|
-
case 'fragment':
|
|
75
|
-
_this.handle = _this.props.handle || _this.gl.createShader(_constants.default.FRAGMENT_SHADER);
|
|
76
|
-
break;
|
|
77
|
-
|
|
78
|
-
default:
|
|
79
|
-
throw new Error(_this.props.stage);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
_this.stage = _this.props.stage;
|
|
83
|
-
|
|
84
|
-
_this._compile(props.source);
|
|
85
|
-
|
|
86
|
-
return _this;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
(0, _createClass2.default)(WEBGLShader, [{
|
|
90
|
-
key: "destroy",
|
|
91
|
-
value: function destroy() {
|
|
92
|
-
if (this.handle) {
|
|
93
|
-
this.removeStats();
|
|
94
|
-
this.gl.deleteShader(this.handle);
|
|
95
|
-
this.handle = null;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}, {
|
|
99
|
-
key: "compilationInfo",
|
|
100
|
-
value: function () {
|
|
101
|
-
var _compilationInfo = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee() {
|
|
102
|
-
var log;
|
|
103
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
104
|
-
while (1) {
|
|
105
|
-
switch (_context.prev = _context.next) {
|
|
106
|
-
case 0:
|
|
107
|
-
log = this.gl.getShaderInfoLog(this.handle);
|
|
108
|
-
return _context.abrupt("return", (0, _parseShaderCompilerLog.parseShaderCompilerLog)(log));
|
|
109
|
-
|
|
110
|
-
case 2:
|
|
111
|
-
case "end":
|
|
112
|
-
return _context.stop();
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}, _callee, this);
|
|
116
|
-
}));
|
|
117
|
-
|
|
118
|
-
function compilationInfo() {
|
|
119
|
-
return _compilationInfo.apply(this, arguments);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
return compilationInfo;
|
|
123
|
-
}()
|
|
124
|
-
}, {
|
|
125
|
-
key: "_compile",
|
|
126
|
-
value: function _compile(source) {
|
|
127
|
-
if (!source.startsWith('#version ')) {
|
|
128
|
-
source = "#version 100\n".concat(source);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
this.gl.shaderSource(this.handle, source);
|
|
132
|
-
this.gl.compileShader(this.handle);
|
|
133
|
-
var compileStatus = this.gl.getShaderParameter(this.handle, _constants.default.COMPILE_STATUS);
|
|
134
|
-
|
|
135
|
-
if (!compileStatus) {
|
|
136
|
-
var shaderLog = this.gl.getShaderInfoLog(this.handle);
|
|
137
|
-
var messages = (0, _parseShaderCompilerLog.parseShaderCompilerLog)(shaderLog).filter(function (message) {
|
|
138
|
-
return message.type === 'error';
|
|
139
|
-
});
|
|
140
|
-
var formattedLog = (0, _shadertools.formatCompilerLog)(messages, source);
|
|
141
|
-
var shaderName = (0, _shadertools.getShaderInfo)(source).name;
|
|
142
|
-
var shaderDescription = "".concat(this.stage, " shader ").concat(shaderName);
|
|
143
|
-
|
|
144
|
-
_api.log.error("GLSL compilation errors in ".concat(shaderName, "\n").concat(formattedLog))();
|
|
145
|
-
|
|
146
|
-
throw new Error("GLSL compilation errors in ".concat(shaderName));
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}]);
|
|
150
|
-
return WEBGLShader;
|
|
151
|
-
}(_api.Shader);
|
|
152
|
-
|
|
153
|
-
exports.WEBGLShader = WEBGLShader;
|
|
154
|
-
|
|
155
46
|
var Shader = function (_WEBGLShader) {
|
|
156
47
|
(0, _inherits2.default)(Shader, _WEBGLShader);
|
|
157
48
|
|
|
158
|
-
var
|
|
49
|
+
var _super = _createSuper(Shader);
|
|
159
50
|
|
|
160
51
|
function Shader(gl, props) {
|
|
161
|
-
var
|
|
52
|
+
var _this;
|
|
162
53
|
|
|
163
54
|
(0, _classCallCheck2.default)(this, Shader);
|
|
164
55
|
(0, _webglChecks.assertWebGLContext)(gl);
|
|
165
56
|
(0, _api.assert)(typeof props.source === 'string', ERR_SOURCE);
|
|
166
|
-
|
|
167
|
-
id: getShaderIdFromProps(props),
|
|
57
|
+
_this = _super.call(this, _webglDevice.default.attach(gl), _objectSpread(_objectSpread({}, props), {}, {
|
|
168
58
|
stage: props.shaderType === _constants.default.VERTEX_SHADER ? 'vertex' : 'fragment'
|
|
169
59
|
}));
|
|
170
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(
|
|
171
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(
|
|
172
|
-
|
|
173
|
-
|
|
60
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "shaderType", void 0);
|
|
61
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "source", void 0);
|
|
62
|
+
_this.shaderType = props.shaderType;
|
|
63
|
+
_this.source = props.source;
|
|
174
64
|
var shaderName = (0, _shadertools.getShaderInfo)(props.source).name;
|
|
175
65
|
|
|
176
66
|
if (shaderName) {
|
|
177
|
-
|
|
67
|
+
_this.id = (0, _api.uid)(shaderName);
|
|
178
68
|
}
|
|
179
69
|
|
|
180
|
-
return
|
|
70
|
+
return _this;
|
|
181
71
|
}
|
|
182
72
|
|
|
183
73
|
(0, _createClass2.default)(Shader, [{
|
|
@@ -244,18 +134,18 @@ var Shader = function (_WEBGLShader) {
|
|
|
244
134
|
}
|
|
245
135
|
}]);
|
|
246
136
|
return Shader;
|
|
247
|
-
}(WEBGLShader);
|
|
137
|
+
}(_webglShader.WEBGLShader);
|
|
248
138
|
|
|
249
139
|
exports.Shader = Shader;
|
|
250
140
|
|
|
251
141
|
var VertexShader = function (_Shader) {
|
|
252
142
|
(0, _inherits2.default)(VertexShader, _Shader);
|
|
253
143
|
|
|
254
|
-
var
|
|
144
|
+
var _super2 = _createSuper(VertexShader);
|
|
255
145
|
|
|
256
146
|
function VertexShader(gl, props) {
|
|
257
147
|
(0, _classCallCheck2.default)(this, VertexShader);
|
|
258
|
-
return
|
|
148
|
+
return _super2.call(this, gl, getShaderProps(props, _constants.default.VERTEX_SHADER));
|
|
259
149
|
}
|
|
260
150
|
|
|
261
151
|
(0, _createClass2.default)(VertexShader, [{
|
|
@@ -272,11 +162,11 @@ exports.VertexShader = VertexShader;
|
|
|
272
162
|
var FragmentShader = function (_Shader2) {
|
|
273
163
|
(0, _inherits2.default)(FragmentShader, _Shader2);
|
|
274
164
|
|
|
275
|
-
var
|
|
165
|
+
var _super3 = _createSuper(FragmentShader);
|
|
276
166
|
|
|
277
167
|
function FragmentShader(gl, props) {
|
|
278
168
|
(0, _classCallCheck2.default)(this, FragmentShader);
|
|
279
|
-
return
|
|
169
|
+
return _super3.call(this, gl, getShaderProps(props, _constants.default.FRAGMENT_SHADER));
|
|
280
170
|
}
|
|
281
171
|
|
|
282
172
|
(0, _createClass2.default)(FragmentShader, [{
|
|
@@ -302,8 +192,4 @@ function getShaderProps(props, shaderType) {
|
|
|
302
192
|
shaderType: shaderType
|
|
303
193
|
});
|
|
304
194
|
}
|
|
305
|
-
|
|
306
|
-
function getShaderIdFromProps(props) {
|
|
307
|
-
return (0, _shadertools.getShaderInfo)(props.source).name || props.id || (0, _api.uid)("unnamed ".concat(props.stage || Shader.getTypeName(props.shaderType)));
|
|
308
|
-
}
|
|
309
|
-
//# sourceMappingURL=webgl-shader.js.map
|
|
195
|
+
//# sourceMappingURL=shader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/classes/shader.ts"],"names":["ERR_SOURCE","Shader","gl","props","source","WebGLDevice","attach","stage","shaderType","GL","VERTEX_SHADER","shaderName","name","id","_compile","pname","getShaderParameter","handle","getTypeName","getShaderSource","extension","getExtension","getTranslatedShaderSource","type","getParameter","SHADER_TYPE","getSource","FRAGMENT_SHADER","WEBGLShader","VertexShader","getShaderProps","createShader","FragmentShader"],"mappings":"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","sourcesContent":["// luma.gl, MIT license\nimport {assert, uid, ShaderProps} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {getShaderInfo} from '@luma.gl/shadertools';\nimport {assertWebGLContext} from '../context/context/webgl-checks';\nimport {WEBGLShader} from '../adapter/webgl-shader'\nimport WebGLDevice from '../adapter/webgl-device'\n\nconst ERR_SOURCE = 'Shader: GLSL source code must be a JavaScript string';\n\nexport type {ShaderProps};\n\n/**\n * Encapsulates the compiled or linked Shaders that execute portions of the WebGL Pipeline\n * This is an internal class, use FragmentShader or VertexShader\n */\nexport class Shader extends WEBGLShader {\n shaderType: GL.FRAGMENT_SHADER | GL.VERTEX_SHADER;\n source: string;\n\n static getTypeName(shaderType: any): 'vertex-shader' | 'fragment-shader' | 'unknown' {\n switch (shaderType) {\n case GL.VERTEX_SHADER:\n return 'vertex-shader';\n case GL.FRAGMENT_SHADER:\n return 'fragment-shader';\n default:\n assert(false);\n return 'unknown';\n }\n }\n\n constructor(gl: WebGLRenderingContext, props: Omit<ShaderProps, 'stage'>) {\n assertWebGLContext(gl);\n assert(typeof props.source === 'string', ERR_SOURCE);\n super(WebGLDevice.attach(gl), {...props, stage: props.shaderType === GL.VERTEX_SHADER ? 'vertex' : 'fragment'});\n\n this.shaderType = props.shaderType;\n this.source = props.source;\n\n const shaderName = getShaderInfo(props.source).name;\n if (shaderName) {\n this.id = uid(shaderName);\n }\n }\n\n initialize(props: ShaderProps): this {\n this._compile(props.source);\n const shaderName = getShaderInfo(props.source).name;\n if (shaderName) {\n this.id = uid(shaderName);\n }\n return this;\n }\n\n // Accessors\n\n getParameter(pname: number): any {\n return this.gl.getShaderParameter(this.handle, pname);\n }\n\n toString(): string {\n return `${Shader.getTypeName(this.shaderType)}:${this.id}`;\n }\n\n getName(): string {\n return getShaderInfo(this.source).name || 'unnamed-shader';\n }\n\n getSource(): string {\n return this.gl.getShaderSource(this.handle);\n }\n\n /** Debug method - Returns translated source if available */\n getTranslatedSource(): string {\n const extension = this.gl.getExtension('WEBGL_debug_shaders');\n return extension\n ? extension.getTranslatedShaderSource(this.handle)\n : 'No translated source available. WEBGL_debug_shaders not implemented';\n }\n\n // PRIVATE METHODS\n\n _getOptsFromHandle() {\n return {\n type: this.getParameter(GL.SHADER_TYPE),\n source: this.getSource()\n };\n }\n}\n\n/**\n * Encapsulates the compiled or linked Shaders that execute portions of the WebGL Pipeline\n * @deprecated Use `device.createShader({stage: 'vertex', ...})`\n */\n export class VertexShader extends Shader {\n constructor(gl: WebGLRenderingContext, props: Omit<ShaderProps, 'stage'> | string) {\n super(gl, getShaderProps(props, GL.VERTEX_SHADER));\n }\n\n // PRIVATE METHODS\n _createHandle() {\n return this.gl.createShader(GL.VERTEX_SHADER);\n }\n}\n\n/**\n * Encapsulates the compiled or linked Shaders that execute portions of the WebGL Pipeline\n * @deprecated Use `device.createShader({stage: 'fragment', ...})`\n */\n export class FragmentShader extends Shader {\n constructor(gl: WebGLRenderingContext, props: Omit<ShaderProps, 'stage'> | string) {\n super(gl, getShaderProps(props, GL.FRAGMENT_SHADER));\n }\n\n // PRIVATE METHODS\n _createHandle() {\n return this.gl.createShader(GL.FRAGMENT_SHADER);\n }\n}\n\n// HELPERS\n\nfunction getShaderProps(props: Omit<ShaderProps, 'stage'> | string, shaderType: GL.VERTEX_SHADER | GL.FRAGMENT_SHADER): Omit<ShaderProps, 'stage'> {\n if (typeof props === 'string') {\n return {source: props, shaderType};\n }\n return {...props, shaderType};\n}\n"],"file":"shader.js"}
|
|
@@ -23,7 +23,7 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
|
|
|
23
23
|
|
|
24
24
|
var _constants = _interopRequireDefault(require("@luma.gl/constants"));
|
|
25
25
|
|
|
26
|
-
var _webglDevice = _interopRequireDefault(require("../
|
|
26
|
+
var _webglDevice = _interopRequireDefault(require("../adapter/webgl-device"));
|
|
27
27
|
|
|
28
28
|
var _webglChecks = require("../context/context/webgl-checks");
|
|
29
29
|
|