@luma.gl/engine 8.5.8 → 8.6.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animation/key-frames.d.ts +18 -0
- package/dist/animation/key-frames.d.ts.map +1 -0
- package/dist/{esm/animation → animation}/key-frames.js +13 -6
- package/dist/animation/key-frames.js.map +1 -0
- package/dist/animation/timeline.d.ts +51 -0
- package/dist/animation/timeline.d.ts.map +1 -0
- package/dist/{esm/animation → animation}/timeline.js +10 -5
- package/dist/animation/timeline.js.map +1 -0
- package/dist/bundle.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +5 -0
- package/dist/bundle.js.map +1 -0
- package/dist/geometries/cone-geometry.d.ts +10 -0
- package/dist/geometries/cone-geometry.d.ts.map +1 -0
- package/dist/{esm/geometries → geometries}/cone-geometry.js +2 -2
- package/dist/geometries/cone-geometry.js.map +1 -0
- package/dist/geometries/cube-geometry.d.ts +9 -0
- package/dist/geometries/cube-geometry.d.ts.map +1 -0
- package/dist/{esm/geometries → geometries}/cube-geometry.js +18 -18
- package/dist/geometries/cube-geometry.js.map +1 -0
- package/dist/geometries/cylinder-geometry.d.ts +10 -0
- package/dist/geometries/cylinder-geometry.d.ts.map +1 -0
- package/dist/{esm/geometries → geometries}/cylinder-geometry.js +2 -2
- package/dist/geometries/cylinder-geometry.js.map +1 -0
- package/dist/geometries/ico-sphere-geometry.d.ts +11 -0
- package/dist/geometries/ico-sphere-geometry.d.ts.map +1 -0
- package/dist/{esm/geometries → geometries}/ico-sphere-geometry.js +2 -2
- package/dist/geometries/ico-sphere-geometry.js.map +1 -0
- package/dist/geometries/plane-geometry.d.ts +10 -0
- package/dist/geometries/plane-geometry.d.ts.map +1 -0
- package/dist/{esm/geometries → geometries}/plane-geometry.js +5 -5
- package/dist/geometries/plane-geometry.js.map +1 -0
- package/dist/geometries/sphere-geometry.d.ts +12 -0
- package/dist/geometries/sphere-geometry.d.ts.map +1 -0
- package/dist/{esm/geometries → geometries}/sphere-geometry.js +2 -9
- package/dist/geometries/sphere-geometry.js.map +1 -0
- package/dist/geometries/truncated-cone-geometry.d.ts +13 -0
- package/dist/geometries/truncated-cone-geometry.d.ts.map +1 -0
- package/dist/{esm/geometries → geometries}/truncated-cone-geometry.js +1 -1
- package/dist/geometries/truncated-cone-geometry.js.map +1 -0
- package/dist/geometry/geometry-utils.d.ts +2 -0
- package/dist/geometry/geometry-utils.d.ts.map +1 -0
- package/dist/{esm/geometry → geometry}/geometry-utils.js +0 -0
- package/dist/geometry/geometry-utils.js.map +1 -0
- package/dist/geometry/geometry.d.ts +44 -0
- package/dist/geometry/geometry.d.ts.map +1 -0
- package/dist/{esm/geometry → geometry}/geometry.js +28 -19
- package/dist/geometry/geometry.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/animation-loop.d.ts +149 -0
- package/dist/lib/animation-loop.d.ts.map +1 -0
- package/dist/{esm/lib → lib}/animation-loop.js +190 -143
- package/dist/lib/animation-loop.js.map +1 -0
- package/dist/lib/model-utils.d.ts +4 -0
- package/dist/lib/model-utils.d.ts.map +1 -0
- package/dist/{esm/lib → lib}/model-utils.js +3 -2
- package/dist/lib/model-utils.js.map +1 -0
- package/dist/lib/model.d.ts +109 -0
- package/dist/lib/model.d.ts.map +1 -0
- package/dist/{esm/lib → lib}/model.js +76 -20
- package/dist/lib/model.js.map +1 -0
- package/dist/lib/program-manager.d.ts +39 -0
- package/dist/lib/program-manager.d.ts.map +1 -0
- package/dist/{esm/lib → lib}/program-manager.js +29 -18
- package/dist/lib/program-manager.js.map +1 -0
- package/dist/lib/render-loop.d.ts +27 -0
- package/dist/lib/render-loop.d.ts.map +1 -0
- package/dist/lib/render-loop.js +56 -0
- package/dist/lib/render-loop.js.map +1 -0
- package/dist/transform/buffer-transform.d.ts +36 -0
- package/dist/transform/buffer-transform.d.ts.map +1 -0
- package/dist/{esm/transform → transform}/buffer-transform.js +15 -8
- package/dist/transform/buffer-transform.js.map +1 -0
- package/dist/transform/texture-transform.d.ts +57 -0
- package/dist/transform/texture-transform.d.ts.map +1 -0
- package/dist/{esm/transform → transform}/texture-transform.js +48 -16
- package/dist/transform/texture-transform.js.map +1 -0
- package/dist/transform/transform-shader-utils.d.ts +26 -0
- package/dist/transform/transform-shader-utils.d.ts.map +1 -0
- package/dist/{esm/transform → transform}/transform-shader-utils.js +38 -46
- package/dist/transform/transform-shader-utils.js.map +1 -0
- package/dist/transform/transform-types.d.ts +44 -0
- package/dist/transform/transform-types.d.ts.map +1 -0
- package/dist/transform/transform-types.js +2 -0
- package/dist/transform/transform-types.js.map +1 -0
- package/dist/transform/transform.d.ts +47 -0
- package/dist/transform/transform.d.ts.map +1 -0
- package/dist/{esm/transform → transform}/transform.js +63 -43
- package/dist/transform/transform.js.map +1 -0
- package/dist/utils/clip-space.d.ts +5 -0
- package/dist/utils/clip-space.d.ts.map +1 -0
- package/dist/{esm/utils → utils}/clip-space.js +3 -17
- package/dist/utils/clip-space.js.map +1 -0
- package/package.json +11 -11
- package/src/animation/{key-frames.js → key-frames.ts} +18 -16
- package/src/animation/{timeline.js → timeline.ts} +54 -18
- package/src/bundle.ts +4 -0
- package/src/geometries/{cone-geometry.js → cone-geometry.ts} +9 -3
- package/src/geometries/{cube-geometry.js → cube-geometry.ts} +17 -12
- package/src/geometries/cylinder-geometry.ts +20 -0
- package/src/geometries/{ico-sphere-geometry.js → ico-sphere-geometry.ts} +10 -3
- package/src/geometries/{plane-geometry.js → plane-geometry.ts} +11 -6
- package/src/geometries/{sphere-geometry.js → sphere-geometry.ts} +15 -11
- package/src/geometries/{truncated-cone-geometry.js → truncated-cone-geometry.ts} +14 -5
- package/src/geometry/{geometry-utils.js → geometry-utils.ts} +2 -0
- package/src/geometry/{geometry.js → geometry.ts} +47 -34
- package/src/index.ts +35 -0
- package/src/lib/animation-loop.ts +724 -0
- package/src/lib/{model-utils.js → model-utils.ts} +2 -2
- package/src/lib/{model.js → model.ts} +184 -66
- package/src/lib/{program-manager.js → program-manager.ts} +53 -34
- package/src/lib/render-loop.ts +56 -0
- package/src/transform/{buffer-transform.js → buffer-transform.ts} +42 -27
- package/src/transform/{texture-transform.js → texture-transform.ts} +35 -25
- package/src/transform/{transform-shader-utils.js → transform-shader-utils.ts} +55 -27
- package/src/transform/transform-types.ts +42 -0
- package/src/transform/transform.ts +189 -0
- package/src/utils/{clip-space.js → clip-space.ts} +4 -3
- package/dist/dist.js +0 -32403
- package/dist/dist.min.js +0 -1
- package/dist/es5/animation/key-frames.d.ts +0 -19
- package/dist/es5/animation/key-frames.js +0 -95
- package/dist/es5/animation/key-frames.js.map +0 -1
- package/dist/es5/animation/timeline.d.ts +0 -39
- package/dist/es5/animation/timeline.js +0 -211
- package/dist/es5/animation/timeline.js.map +0 -1
- package/dist/es5/bundle.js +0 -9
- package/dist/es5/bundle.js.map +0 -1
- package/dist/es5/geometries/cone-geometry.d.ts +0 -5
- package/dist/es5/geometries/cone-geometry.js +0 -59
- package/dist/es5/geometries/cone-geometry.js.map +0 -1
- package/dist/es5/geometries/cube-geometry.d.ts +0 -5
- package/dist/es5/geometries/cube-geometry.js +0 -75
- package/dist/es5/geometries/cube-geometry.js.map +0 -1
- package/dist/es5/geometries/cylinder-geometry.d.ts +0 -5
- package/dist/es5/geometries/cylinder-geometry.js +0 -55
- package/dist/es5/geometries/cylinder-geometry.js.map +0 -1
- package/dist/es5/geometries/ico-sphere-geometry.d.ts +0 -5
- package/dist/es5/geometries/ico-sphere-geometry.js +0 -217
- package/dist/es5/geometries/ico-sphere-geometry.js.map +0 -1
- package/dist/es5/geometries/index.d.ts +0 -7
- package/dist/es5/geometries/index.js +0 -64
- package/dist/es5/geometries/index.js.map +0 -1
- package/dist/es5/geometries/plane-geometry.d.ts +0 -5
- package/dist/es5/geometries/plane-geometry.js +0 -168
- package/dist/es5/geometries/plane-geometry.js.map +0 -1
- package/dist/es5/geometries/sphere-geometry.d.ts +0 -5
- package/dist/es5/geometries/sphere-geometry.js +0 -152
- package/dist/es5/geometries/sphere-geometry.js.map +0 -1
- package/dist/es5/geometries/truncated-cone-geometry.d.ts +0 -5
- package/dist/es5/geometries/truncated-cone-geometry.js +0 -171
- package/dist/es5/geometries/truncated-cone-geometry.js.map +0 -1
- package/dist/es5/geometry/geometry-utils.d.ts +0 -1
- package/dist/es5/geometry/geometry-utils.js +0 -49
- package/dist/es5/geometry/geometry-utils.js.map +0 -1
- package/dist/es5/geometry/geometry.d.ts +0 -25
- package/dist/es5/geometry/geometry.js +0 -150
- package/dist/es5/geometry/geometry.js.map +0 -1
- package/dist/es5/index.d.ts +0 -19
- package/dist/es5/index.js +0 -128
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/lib/animation-loop.d.ts +0 -158
- package/dist/es5/lib/animation-loop.js +0 -642
- package/dist/es5/lib/animation-loop.js.map +0 -1
- package/dist/es5/lib/model-utils.d.ts +0 -3
- package/dist/es5/lib/model-utils.js +0 -110
- package/dist/es5/lib/model-utils.js.map +0 -1
- package/dist/es5/lib/model.d.ts +0 -214
- package/dist/es5/lib/model.js +0 -584
- package/dist/es5/lib/model.js.map +0 -1
- package/dist/es5/lib/program-manager.d.ts +0 -79
- package/dist/es5/lib/program-manager.js +0 -238
- package/dist/es5/lib/program-manager.js.map +0 -1
- package/dist/es5/transform/buffer-transform.d.ts +0 -13
- package/dist/es5/transform/buffer-transform.js +0 -294
- package/dist/es5/transform/buffer-transform.js.map +0 -1
- package/dist/es5/transform/resource-transform.d.ts +0 -16
- package/dist/es5/transform/texture-transform.d.ts +0 -16
- package/dist/es5/transform/texture-transform.js +0 -405
- package/dist/es5/transform/texture-transform.js.map +0 -1
- package/dist/es5/transform/transform-shader-utils.d.ts +0 -31
- package/dist/es5/transform/transform-shader-utils.js +0 -160
- package/dist/es5/transform/transform-shader-utils.js.map +0 -1
- package/dist/es5/transform/transform.d.ts +0 -33
- package/dist/es5/transform/transform.js +0 -274
- package/dist/es5/transform/transform.js.map +0 -1
- package/dist/es5/utils/clip-space.d.ts +0 -5
- package/dist/es5/utils/clip-space.js +0 -72
- package/dist/es5/utils/clip-space.js.map +0 -1
- package/dist/esm/animation/key-frames.d.ts +0 -19
- package/dist/esm/animation/key-frames.js.map +0 -1
- package/dist/esm/animation/timeline.d.ts +0 -39
- package/dist/esm/animation/timeline.js.map +0 -1
- package/dist/esm/bundle.js +0 -7
- package/dist/esm/bundle.js.map +0 -1
- package/dist/esm/geometries/cone-geometry.d.ts +0 -5
- package/dist/esm/geometries/cone-geometry.js.map +0 -1
- package/dist/esm/geometries/cube-geometry.d.ts +0 -5
- package/dist/esm/geometries/cube-geometry.js.map +0 -1
- package/dist/esm/geometries/cylinder-geometry.d.ts +0 -5
- package/dist/esm/geometries/cylinder-geometry.js.map +0 -1
- package/dist/esm/geometries/ico-sphere-geometry.d.ts +0 -5
- package/dist/esm/geometries/ico-sphere-geometry.js.map +0 -1
- package/dist/esm/geometries/index.d.ts +0 -7
- package/dist/esm/geometries/index.js +0 -8
- package/dist/esm/geometries/index.js.map +0 -1
- package/dist/esm/geometries/plane-geometry.d.ts +0 -5
- package/dist/esm/geometries/plane-geometry.js.map +0 -1
- package/dist/esm/geometries/sphere-geometry.d.ts +0 -5
- package/dist/esm/geometries/sphere-geometry.js.map +0 -1
- package/dist/esm/geometries/truncated-cone-geometry.d.ts +0 -5
- package/dist/esm/geometries/truncated-cone-geometry.js.map +0 -1
- package/dist/esm/geometry/geometry-utils.d.ts +0 -1
- package/dist/esm/geometry/geometry-utils.js.map +0 -1
- package/dist/esm/geometry/geometry.d.ts +0 -25
- package/dist/esm/geometry/geometry.js.map +0 -1
- package/dist/esm/index.d.ts +0 -19
- package/dist/esm/index.js +0 -16
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/lib/animation-loop.d.ts +0 -158
- package/dist/esm/lib/animation-loop.js.map +0 -1
- package/dist/esm/lib/model-utils.d.ts +0 -3
- package/dist/esm/lib/model-utils.js.map +0 -1
- package/dist/esm/lib/model.d.ts +0 -214
- package/dist/esm/lib/model.js.map +0 -1
- package/dist/esm/lib/program-manager.d.ts +0 -79
- package/dist/esm/lib/program-manager.js.map +0 -1
- package/dist/esm/transform/buffer-transform.d.ts +0 -13
- package/dist/esm/transform/buffer-transform.js.map +0 -1
- package/dist/esm/transform/resource-transform.d.ts +0 -16
- package/dist/esm/transform/texture-transform.d.ts +0 -16
- package/dist/esm/transform/texture-transform.js.map +0 -1
- package/dist/esm/transform/transform-shader-utils.d.ts +0 -31
- package/dist/esm/transform/transform-shader-utils.js.map +0 -1
- package/dist/esm/transform/transform.d.ts +0 -33
- package/dist/esm/transform/transform.js.map +0 -1
- package/dist/esm/utils/clip-space.d.ts +0 -5
- package/dist/esm/utils/clip-space.js.map +0 -1
- package/src/animation/key-frames.d.ts +0 -19
- package/src/animation/timeline.d.ts +0 -39
- package/src/bundle.js +0 -7
- package/src/geometries/cone-geometry.d.ts +0 -5
- package/src/geometries/cube-geometry.d.ts +0 -5
- package/src/geometries/cylinder-geometry.d.ts +0 -5
- package/src/geometries/cylinder-geometry.js +0 -14
- package/src/geometries/ico-sphere-geometry.d.ts +0 -5
- package/src/geometries/index.d.ts +0 -7
- package/src/geometries/index.js +0 -7
- package/src/geometries/plane-geometry.d.ts +0 -5
- package/src/geometries/sphere-geometry.d.ts +0 -5
- package/src/geometries/truncated-cone-geometry.d.ts +0 -5
- package/src/geometry/geometry-utils.d.ts +0 -1
- package/src/geometry/geometry.d.ts +0 -25
- package/src/index.d.ts +0 -19
- package/src/index.js +0 -22
- package/src/lib/animation-loop.d.ts +0 -158
- package/src/lib/animation-loop.js +0 -601
- package/src/lib/model-utils.d.ts +0 -3
- package/src/lib/model.d.ts +0 -214
- package/src/lib/program-manager.d.ts +0 -79
- package/src/transform/buffer-transform.d.ts +0 -13
- package/src/transform/resource-transform.d.ts +0 -16
- package/src/transform/texture-transform.d.ts +0 -16
- package/src/transform/transform-shader-utils.d.ts +0 -31
- package/src/transform/transform.d.ts +0 -33
- package/src/transform/transform.js +0 -177
- package/src/utils/clip-space.d.ts +0 -5
package/dist/es5/lib/model.js
DELETED
|
@@ -1,584 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.default = void 0;
|
|
9
|
-
|
|
10
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
|
|
12
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
-
|
|
14
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
-
|
|
16
|
-
var _gltools = require("@luma.gl/gltools");
|
|
17
|
-
|
|
18
|
-
var _programManager = _interopRequireDefault(require("./program-manager"));
|
|
19
|
-
|
|
20
|
-
var _webgl = require("@luma.gl/webgl");
|
|
21
|
-
|
|
22
|
-
var _modelUtils = require("./model-utils");
|
|
23
|
-
|
|
24
|
-
var LOG_DRAW_PRIORITY = 2;
|
|
25
|
-
var LOG_DRAW_TIMEOUT = 10000;
|
|
26
|
-
var ERR_MODEL_PARAMS = 'Model needs drawMode and vertexCount';
|
|
27
|
-
|
|
28
|
-
var NOOP = function NOOP() {};
|
|
29
|
-
|
|
30
|
-
var DRAW_PARAMS = {};
|
|
31
|
-
|
|
32
|
-
var Model = function () {
|
|
33
|
-
function Model(gl) {
|
|
34
|
-
var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
35
|
-
(0, _classCallCheck2.default)(this, Model);
|
|
36
|
-
var _props$id = props.id,
|
|
37
|
-
id = _props$id === void 0 ? (0, _webgl.uid)('model') : _props$id;
|
|
38
|
-
(0, _webgl.assert)((0, _gltools.isWebGL)(gl));
|
|
39
|
-
this.id = id;
|
|
40
|
-
this.gl = gl;
|
|
41
|
-
this.id = props.id || (0, _webgl.uid)('Model');
|
|
42
|
-
this.lastLogTime = 0;
|
|
43
|
-
this.animated = false;
|
|
44
|
-
this.initialize(props);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
(0, _createClass2.default)(Model, [{
|
|
48
|
-
key: "initialize",
|
|
49
|
-
value: function initialize(props) {
|
|
50
|
-
this.props = {};
|
|
51
|
-
this.programManager = props.programManager || _programManager.default.getDefaultProgramManager(this.gl);
|
|
52
|
-
this._programManagerState = -1;
|
|
53
|
-
this._managedProgram = false;
|
|
54
|
-
var _props$program = props.program,
|
|
55
|
-
program = _props$program === void 0 ? null : _props$program,
|
|
56
|
-
vs = props.vs,
|
|
57
|
-
fs = props.fs,
|
|
58
|
-
modules = props.modules,
|
|
59
|
-
defines = props.defines,
|
|
60
|
-
inject = props.inject,
|
|
61
|
-
varyings = props.varyings,
|
|
62
|
-
bufferMode = props.bufferMode,
|
|
63
|
-
transpileToGLSL100 = props.transpileToGLSL100;
|
|
64
|
-
this.programProps = {
|
|
65
|
-
program: program,
|
|
66
|
-
vs: vs,
|
|
67
|
-
fs: fs,
|
|
68
|
-
modules: modules,
|
|
69
|
-
defines: defines,
|
|
70
|
-
inject: inject,
|
|
71
|
-
varyings: varyings,
|
|
72
|
-
bufferMode: bufferMode,
|
|
73
|
-
transpileToGLSL100: transpileToGLSL100
|
|
74
|
-
};
|
|
75
|
-
this.program = null;
|
|
76
|
-
this.vertexArray = null;
|
|
77
|
-
this._programDirty = true;
|
|
78
|
-
this.userData = {};
|
|
79
|
-
this.needsRedraw = true;
|
|
80
|
-
this._attributes = {};
|
|
81
|
-
this.attributes = {};
|
|
82
|
-
this.uniforms = {};
|
|
83
|
-
this.pickable = true;
|
|
84
|
-
|
|
85
|
-
this._checkProgram();
|
|
86
|
-
|
|
87
|
-
this.setUniforms(Object.assign({}, this.getModuleUniforms(props.moduleSettings)));
|
|
88
|
-
this.drawMode = props.drawMode !== undefined ? props.drawMode : 4;
|
|
89
|
-
this.vertexCount = props.vertexCount || 0;
|
|
90
|
-
this.geometryBuffers = {};
|
|
91
|
-
this.isInstanced = props.isInstanced || props.instanced || props.instanceCount > 0;
|
|
92
|
-
|
|
93
|
-
this._setModelProps(props);
|
|
94
|
-
|
|
95
|
-
this.geometry = {};
|
|
96
|
-
(0, _webgl.assert)(this.drawMode !== undefined && Number.isFinite(this.vertexCount), ERR_MODEL_PARAMS);
|
|
97
|
-
}
|
|
98
|
-
}, {
|
|
99
|
-
key: "setProps",
|
|
100
|
-
value: function setProps(props) {
|
|
101
|
-
this._setModelProps(props);
|
|
102
|
-
}
|
|
103
|
-
}, {
|
|
104
|
-
key: "delete",
|
|
105
|
-
value: function _delete() {
|
|
106
|
-
for (var key in this._attributes) {
|
|
107
|
-
if (this._attributes[key] !== this.attributes[key]) {
|
|
108
|
-
this._attributes[key].delete();
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
if (this._managedProgram) {
|
|
113
|
-
this.programManager.release(this.program);
|
|
114
|
-
this._managedProgram = false;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
this.vertexArray.delete();
|
|
118
|
-
|
|
119
|
-
this._deleteGeometryBuffers();
|
|
120
|
-
}
|
|
121
|
-
}, {
|
|
122
|
-
key: "getDrawMode",
|
|
123
|
-
value: function getDrawMode() {
|
|
124
|
-
return this.drawMode;
|
|
125
|
-
}
|
|
126
|
-
}, {
|
|
127
|
-
key: "getVertexCount",
|
|
128
|
-
value: function getVertexCount() {
|
|
129
|
-
return this.vertexCount;
|
|
130
|
-
}
|
|
131
|
-
}, {
|
|
132
|
-
key: "getInstanceCount",
|
|
133
|
-
value: function getInstanceCount() {
|
|
134
|
-
return this.instanceCount;
|
|
135
|
-
}
|
|
136
|
-
}, {
|
|
137
|
-
key: "getAttributes",
|
|
138
|
-
value: function getAttributes() {
|
|
139
|
-
return this.attributes;
|
|
140
|
-
}
|
|
141
|
-
}, {
|
|
142
|
-
key: "getProgram",
|
|
143
|
-
value: function getProgram() {
|
|
144
|
-
return this.program;
|
|
145
|
-
}
|
|
146
|
-
}, {
|
|
147
|
-
key: "setProgram",
|
|
148
|
-
value: function setProgram(props) {
|
|
149
|
-
var program = props.program,
|
|
150
|
-
vs = props.vs,
|
|
151
|
-
fs = props.fs,
|
|
152
|
-
modules = props.modules,
|
|
153
|
-
defines = props.defines,
|
|
154
|
-
inject = props.inject,
|
|
155
|
-
varyings = props.varyings,
|
|
156
|
-
bufferMode = props.bufferMode,
|
|
157
|
-
transpileToGLSL100 = props.transpileToGLSL100;
|
|
158
|
-
this.programProps = {
|
|
159
|
-
program: program,
|
|
160
|
-
vs: vs,
|
|
161
|
-
fs: fs,
|
|
162
|
-
modules: modules,
|
|
163
|
-
defines: defines,
|
|
164
|
-
inject: inject,
|
|
165
|
-
varyings: varyings,
|
|
166
|
-
bufferMode: bufferMode,
|
|
167
|
-
transpileToGLSL100: transpileToGLSL100
|
|
168
|
-
};
|
|
169
|
-
this._programDirty = true;
|
|
170
|
-
}
|
|
171
|
-
}, {
|
|
172
|
-
key: "getUniforms",
|
|
173
|
-
value: function getUniforms() {
|
|
174
|
-
return this.uniforms;
|
|
175
|
-
}
|
|
176
|
-
}, {
|
|
177
|
-
key: "setDrawMode",
|
|
178
|
-
value: function setDrawMode(drawMode) {
|
|
179
|
-
this.drawMode = drawMode;
|
|
180
|
-
return this;
|
|
181
|
-
}
|
|
182
|
-
}, {
|
|
183
|
-
key: "setVertexCount",
|
|
184
|
-
value: function setVertexCount(vertexCount) {
|
|
185
|
-
(0, _webgl.assert)(Number.isFinite(vertexCount));
|
|
186
|
-
this.vertexCount = vertexCount;
|
|
187
|
-
return this;
|
|
188
|
-
}
|
|
189
|
-
}, {
|
|
190
|
-
key: "setInstanceCount",
|
|
191
|
-
value: function setInstanceCount(instanceCount) {
|
|
192
|
-
(0, _webgl.assert)(Number.isFinite(instanceCount));
|
|
193
|
-
this.instanceCount = instanceCount;
|
|
194
|
-
return this;
|
|
195
|
-
}
|
|
196
|
-
}, {
|
|
197
|
-
key: "setGeometry",
|
|
198
|
-
value: function setGeometry(geometry) {
|
|
199
|
-
this.drawMode = geometry.drawMode;
|
|
200
|
-
this.vertexCount = geometry.getVertexCount();
|
|
201
|
-
|
|
202
|
-
this._deleteGeometryBuffers();
|
|
203
|
-
|
|
204
|
-
this.geometryBuffers = (0, _modelUtils.getBuffersFromGeometry)(this.gl, geometry);
|
|
205
|
-
this.vertexArray.setAttributes(this.geometryBuffers);
|
|
206
|
-
return this;
|
|
207
|
-
}
|
|
208
|
-
}, {
|
|
209
|
-
key: "setAttributes",
|
|
210
|
-
value: function setAttributes() {
|
|
211
|
-
var attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
212
|
-
|
|
213
|
-
if ((0, _webgl.isObjectEmpty)(attributes)) {
|
|
214
|
-
return this;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
var normalizedAttributes = {};
|
|
218
|
-
|
|
219
|
-
for (var name in attributes) {
|
|
220
|
-
var attribute = attributes[name];
|
|
221
|
-
normalizedAttributes[name] = attribute.getValue ? attribute.getValue() : attribute;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
this.vertexArray.setAttributes(normalizedAttributes);
|
|
225
|
-
return this;
|
|
226
|
-
}
|
|
227
|
-
}, {
|
|
228
|
-
key: "setUniforms",
|
|
229
|
-
value: function setUniforms() {
|
|
230
|
-
var uniforms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
231
|
-
Object.assign(this.uniforms, uniforms);
|
|
232
|
-
return this;
|
|
233
|
-
}
|
|
234
|
-
}, {
|
|
235
|
-
key: "getModuleUniforms",
|
|
236
|
-
value: function getModuleUniforms(opts) {
|
|
237
|
-
this._checkProgram();
|
|
238
|
-
|
|
239
|
-
var getUniforms = this.programManager.getUniforms(this.program);
|
|
240
|
-
|
|
241
|
-
if (getUniforms) {
|
|
242
|
-
return getUniforms(opts);
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
return {};
|
|
246
|
-
}
|
|
247
|
-
}, {
|
|
248
|
-
key: "updateModuleSettings",
|
|
249
|
-
value: function updateModuleSettings(opts) {
|
|
250
|
-
var uniforms = this.getModuleUniforms(opts || {});
|
|
251
|
-
return this.setUniforms(uniforms);
|
|
252
|
-
}
|
|
253
|
-
}, {
|
|
254
|
-
key: "clear",
|
|
255
|
-
value: function clear(opts) {
|
|
256
|
-
(0, _webgl.clear)(this.program.gl, opts);
|
|
257
|
-
return this;
|
|
258
|
-
}
|
|
259
|
-
}, {
|
|
260
|
-
key: "draw",
|
|
261
|
-
value: function draw() {
|
|
262
|
-
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
263
|
-
|
|
264
|
-
this._checkProgram();
|
|
265
|
-
|
|
266
|
-
var _opts$moduleSettings = opts.moduleSettings,
|
|
267
|
-
moduleSettings = _opts$moduleSettings === void 0 ? null : _opts$moduleSettings,
|
|
268
|
-
framebuffer = opts.framebuffer,
|
|
269
|
-
_opts$uniforms = opts.uniforms,
|
|
270
|
-
uniforms = _opts$uniforms === void 0 ? {} : _opts$uniforms,
|
|
271
|
-
_opts$attributes = opts.attributes,
|
|
272
|
-
attributes = _opts$attributes === void 0 ? {} : _opts$attributes,
|
|
273
|
-
_opts$transformFeedba = opts.transformFeedback,
|
|
274
|
-
transformFeedback = _opts$transformFeedba === void 0 ? this.transformFeedback : _opts$transformFeedba,
|
|
275
|
-
_opts$parameters = opts.parameters,
|
|
276
|
-
parameters = _opts$parameters === void 0 ? {} : _opts$parameters,
|
|
277
|
-
_opts$vertexArray = opts.vertexArray,
|
|
278
|
-
vertexArray = _opts$vertexArray === void 0 ? this.vertexArray : _opts$vertexArray;
|
|
279
|
-
this.setAttributes(attributes);
|
|
280
|
-
this.updateModuleSettings(moduleSettings);
|
|
281
|
-
this.setUniforms(uniforms);
|
|
282
|
-
var logPriority;
|
|
283
|
-
|
|
284
|
-
if (_webgl.log.priority >= LOG_DRAW_PRIORITY) {
|
|
285
|
-
logPriority = this._logDrawCallStart(LOG_DRAW_PRIORITY);
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
var drawParams = this.vertexArray.getDrawParams();
|
|
289
|
-
var _this$props = this.props,
|
|
290
|
-
_this$props$isIndexed = _this$props.isIndexed,
|
|
291
|
-
isIndexed = _this$props$isIndexed === void 0 ? drawParams.isIndexed : _this$props$isIndexed,
|
|
292
|
-
_this$props$indexType = _this$props.indexType,
|
|
293
|
-
indexType = _this$props$indexType === void 0 ? drawParams.indexType : _this$props$indexType,
|
|
294
|
-
_this$props$indexOffs = _this$props.indexOffset,
|
|
295
|
-
indexOffset = _this$props$indexOffs === void 0 ? drawParams.indexOffset : _this$props$indexOffs,
|
|
296
|
-
_this$props$vertexArr = _this$props.vertexArrayInstanced,
|
|
297
|
-
vertexArrayInstanced = _this$props$vertexArr === void 0 ? drawParams.isInstanced : _this$props$vertexArr;
|
|
298
|
-
|
|
299
|
-
if (vertexArrayInstanced && !this.isInstanced) {
|
|
300
|
-
_webgl.log.warn('Found instanced attributes on non-instanced model', this.id)();
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
var isInstanced = this.isInstanced,
|
|
304
|
-
instanceCount = this.instanceCount;
|
|
305
|
-
var _this$props2 = this.props,
|
|
306
|
-
_this$props2$onBefore = _this$props2.onBeforeRender,
|
|
307
|
-
onBeforeRender = _this$props2$onBefore === void 0 ? NOOP : _this$props2$onBefore,
|
|
308
|
-
_this$props2$onAfterR = _this$props2.onAfterRender,
|
|
309
|
-
onAfterRender = _this$props2$onAfterR === void 0 ? NOOP : _this$props2$onAfterR;
|
|
310
|
-
onBeforeRender();
|
|
311
|
-
this.program.setUniforms(this.uniforms);
|
|
312
|
-
var didDraw = this.program.draw(Object.assign(DRAW_PARAMS, opts, {
|
|
313
|
-
logPriority: logPriority,
|
|
314
|
-
uniforms: null,
|
|
315
|
-
framebuffer: framebuffer,
|
|
316
|
-
parameters: parameters,
|
|
317
|
-
drawMode: this.getDrawMode(),
|
|
318
|
-
vertexCount: this.getVertexCount(),
|
|
319
|
-
vertexArray: vertexArray,
|
|
320
|
-
transformFeedback: transformFeedback,
|
|
321
|
-
isIndexed: isIndexed,
|
|
322
|
-
indexType: indexType,
|
|
323
|
-
isInstanced: isInstanced,
|
|
324
|
-
instanceCount: instanceCount,
|
|
325
|
-
offset: isIndexed ? indexOffset : 0
|
|
326
|
-
}));
|
|
327
|
-
onAfterRender();
|
|
328
|
-
|
|
329
|
-
if (_webgl.log.priority >= LOG_DRAW_PRIORITY) {
|
|
330
|
-
this._logDrawCallEnd(logPriority, vertexArray, framebuffer);
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
return didDraw;
|
|
334
|
-
}
|
|
335
|
-
}, {
|
|
336
|
-
key: "transform",
|
|
337
|
-
value: function transform() {
|
|
338
|
-
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
339
|
-
var _opts$discard = opts.discard,
|
|
340
|
-
discard = _opts$discard === void 0 ? true : _opts$discard,
|
|
341
|
-
feedbackBuffers = opts.feedbackBuffers,
|
|
342
|
-
_opts$unbindModels = opts.unbindModels,
|
|
343
|
-
unbindModels = _opts$unbindModels === void 0 ? [] : _opts$unbindModels;
|
|
344
|
-
var parameters = opts.parameters;
|
|
345
|
-
|
|
346
|
-
if (feedbackBuffers) {
|
|
347
|
-
this._setFeedbackBuffers(feedbackBuffers);
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
if (discard) {
|
|
351
|
-
parameters = Object.assign({}, parameters, (0, _defineProperty2.default)({}, 35977, discard));
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
unbindModels.forEach(function (model) {
|
|
355
|
-
return model.vertexArray.unbindBuffers();
|
|
356
|
-
});
|
|
357
|
-
|
|
358
|
-
try {
|
|
359
|
-
this.draw(Object.assign({}, opts, {
|
|
360
|
-
parameters: parameters
|
|
361
|
-
}));
|
|
362
|
-
} finally {
|
|
363
|
-
unbindModels.forEach(function (model) {
|
|
364
|
-
return model.vertexArray.bindBuffers();
|
|
365
|
-
});
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
return this;
|
|
369
|
-
}
|
|
370
|
-
}, {
|
|
371
|
-
key: "render",
|
|
372
|
-
value: function render() {
|
|
373
|
-
var uniforms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
374
|
-
|
|
375
|
-
_webgl.log.warn('Model.render() is deprecated. Use Model.setUniforms() and Model.draw()')();
|
|
376
|
-
|
|
377
|
-
return this.setUniforms(uniforms).draw();
|
|
378
|
-
}
|
|
379
|
-
}, {
|
|
380
|
-
key: "_setModelProps",
|
|
381
|
-
value: function _setModelProps(props) {
|
|
382
|
-
Object.assign(this.props, props);
|
|
383
|
-
|
|
384
|
-
if ('uniforms' in props) {
|
|
385
|
-
this.setUniforms(props.uniforms);
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
if ('pickable' in props) {
|
|
389
|
-
this.pickable = props.pickable;
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
if ('instanceCount' in props) {
|
|
393
|
-
this.instanceCount = props.instanceCount;
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
if ('geometry' in props) {
|
|
397
|
-
this.setGeometry(props.geometry);
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
if ('attributes' in props) {
|
|
401
|
-
this.setAttributes(props.attributes);
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
if ('_feedbackBuffers' in props) {
|
|
405
|
-
this._setFeedbackBuffers(props._feedbackBuffers);
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
}, {
|
|
409
|
-
key: "_checkProgram",
|
|
410
|
-
value: function _checkProgram() {
|
|
411
|
-
var needsUpdate = this._programDirty || this.programManager.stateHash !== this._programManagerState;
|
|
412
|
-
|
|
413
|
-
if (!needsUpdate) {
|
|
414
|
-
return;
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
var program = this.programProps.program;
|
|
418
|
-
|
|
419
|
-
if (program) {
|
|
420
|
-
this._managedProgram = false;
|
|
421
|
-
} else {
|
|
422
|
-
var _this$programProps = this.programProps,
|
|
423
|
-
vs = _this$programProps.vs,
|
|
424
|
-
fs = _this$programProps.fs,
|
|
425
|
-
modules = _this$programProps.modules,
|
|
426
|
-
inject = _this$programProps.inject,
|
|
427
|
-
defines = _this$programProps.defines,
|
|
428
|
-
varyings = _this$programProps.varyings,
|
|
429
|
-
bufferMode = _this$programProps.bufferMode,
|
|
430
|
-
transpileToGLSL100 = _this$programProps.transpileToGLSL100;
|
|
431
|
-
program = this.programManager.get({
|
|
432
|
-
vs: vs,
|
|
433
|
-
fs: fs,
|
|
434
|
-
modules: modules,
|
|
435
|
-
inject: inject,
|
|
436
|
-
defines: defines,
|
|
437
|
-
varyings: varyings,
|
|
438
|
-
bufferMode: bufferMode,
|
|
439
|
-
transpileToGLSL100: transpileToGLSL100
|
|
440
|
-
});
|
|
441
|
-
|
|
442
|
-
if (this.program && this._managedProgram) {
|
|
443
|
-
this.programManager.release(this.program);
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
this._programManagerState = this.programManager.stateHash;
|
|
447
|
-
this._managedProgram = true;
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
(0, _webgl.assert)(program instanceof _webgl.Program, 'Model needs a program');
|
|
451
|
-
this._programDirty = false;
|
|
452
|
-
|
|
453
|
-
if (program === this.program) {
|
|
454
|
-
return;
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
this.program = program;
|
|
458
|
-
|
|
459
|
-
if (this.vertexArray) {
|
|
460
|
-
this.vertexArray.setProps({
|
|
461
|
-
program: this.program,
|
|
462
|
-
attributes: this.vertexArray.attributes
|
|
463
|
-
});
|
|
464
|
-
} else {
|
|
465
|
-
this.vertexArray = new _webgl.VertexArray(this.gl, {
|
|
466
|
-
program: this.program
|
|
467
|
-
});
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
this.setUniforms(Object.assign({}, this.getModuleUniforms()));
|
|
471
|
-
}
|
|
472
|
-
}, {
|
|
473
|
-
key: "_deleteGeometryBuffers",
|
|
474
|
-
value: function _deleteGeometryBuffers() {
|
|
475
|
-
for (var name in this.geometryBuffers) {
|
|
476
|
-
var buffer = this.geometryBuffers[name][0] || this.geometryBuffers[name];
|
|
477
|
-
|
|
478
|
-
if (buffer instanceof _webgl.Buffer) {
|
|
479
|
-
buffer.delete();
|
|
480
|
-
}
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
}, {
|
|
484
|
-
key: "_setAnimationProps",
|
|
485
|
-
value: function _setAnimationProps(animationProps) {
|
|
486
|
-
if (this.animated) {
|
|
487
|
-
(0, _webgl.assert)(animationProps, 'Model.draw(): animated uniforms but no animationProps');
|
|
488
|
-
}
|
|
489
|
-
}
|
|
490
|
-
}, {
|
|
491
|
-
key: "_setFeedbackBuffers",
|
|
492
|
-
value: function _setFeedbackBuffers() {
|
|
493
|
-
var feedbackBuffers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
494
|
-
|
|
495
|
-
if ((0, _webgl.isObjectEmpty)(feedbackBuffers)) {
|
|
496
|
-
return this;
|
|
497
|
-
}
|
|
498
|
-
|
|
499
|
-
var gl = this.program.gl;
|
|
500
|
-
this.transformFeedback = this.transformFeedback || new _webgl.TransformFeedback(gl, {
|
|
501
|
-
program: this.program
|
|
502
|
-
});
|
|
503
|
-
this.transformFeedback.setBuffers(feedbackBuffers);
|
|
504
|
-
return this;
|
|
505
|
-
}
|
|
506
|
-
}, {
|
|
507
|
-
key: "_logDrawCallStart",
|
|
508
|
-
value: function _logDrawCallStart(logLevel) {
|
|
509
|
-
var logDrawTimeout = logLevel > 3 ? 0 : LOG_DRAW_TIMEOUT;
|
|
510
|
-
|
|
511
|
-
if (Date.now() - this.lastLogTime < logDrawTimeout) {
|
|
512
|
-
return undefined;
|
|
513
|
-
}
|
|
514
|
-
|
|
515
|
-
this.lastLogTime = Date.now();
|
|
516
|
-
|
|
517
|
-
_webgl.log.group(LOG_DRAW_PRIORITY, ">>> DRAWING MODEL ".concat(this.id), {
|
|
518
|
-
collapsed: _webgl.log.level <= 2
|
|
519
|
-
})();
|
|
520
|
-
|
|
521
|
-
return logLevel;
|
|
522
|
-
}
|
|
523
|
-
}, {
|
|
524
|
-
key: "_logDrawCallEnd",
|
|
525
|
-
value: function _logDrawCallEnd(logLevel, vertexArray, uniforms, framebuffer) {
|
|
526
|
-
if (logLevel === undefined) {
|
|
527
|
-
return;
|
|
528
|
-
}
|
|
529
|
-
|
|
530
|
-
var attributeTable = (0, _webgl.getDebugTableForVertexArray)({
|
|
531
|
-
vertexArray: vertexArray,
|
|
532
|
-
header: "".concat(this.id, " attributes"),
|
|
533
|
-
attributes: this._attributes
|
|
534
|
-
});
|
|
535
|
-
|
|
536
|
-
var _getDebugTableForUnif = (0, _webgl.getDebugTableForUniforms)({
|
|
537
|
-
header: "".concat(this.id, " uniforms"),
|
|
538
|
-
program: this.program,
|
|
539
|
-
uniforms: Object.assign({}, this.program.uniforms, uniforms)
|
|
540
|
-
}),
|
|
541
|
-
uniformTable = _getDebugTableForUnif.table,
|
|
542
|
-
unusedTable = _getDebugTableForUnif.unusedTable,
|
|
543
|
-
unusedCount = _getDebugTableForUnif.unusedCount;
|
|
544
|
-
|
|
545
|
-
var _getDebugTableForUnif2 = (0, _webgl.getDebugTableForUniforms)({
|
|
546
|
-
header: "".concat(this.id, " uniforms"),
|
|
547
|
-
program: this.program,
|
|
548
|
-
uniforms: Object.assign({}, this.program.uniforms, uniforms),
|
|
549
|
-
undefinedOnly: true
|
|
550
|
-
}),
|
|
551
|
-
missingTable = _getDebugTableForUnif2.table,
|
|
552
|
-
missingCount = _getDebugTableForUnif2.count;
|
|
553
|
-
|
|
554
|
-
if (missingCount > 0) {
|
|
555
|
-
_webgl.log.log('MISSING UNIFORMS', Object.keys(missingTable))();
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
if (unusedCount > 0) {
|
|
559
|
-
_webgl.log.log('UNUSED UNIFORMS', Object.keys(unusedTable))();
|
|
560
|
-
}
|
|
561
|
-
|
|
562
|
-
var configTable = (0, _webgl.getDebugTableForProgramConfiguration)(this.vertexArray.configuration);
|
|
563
|
-
|
|
564
|
-
_webgl.log.table(logLevel, attributeTable)();
|
|
565
|
-
|
|
566
|
-
_webgl.log.table(logLevel, uniformTable)();
|
|
567
|
-
|
|
568
|
-
_webgl.log.table(logLevel + 1, configTable)();
|
|
569
|
-
|
|
570
|
-
if (framebuffer) {
|
|
571
|
-
framebuffer.log({
|
|
572
|
-
logLevel: LOG_DRAW_PRIORITY,
|
|
573
|
-
message: "Rendered to ".concat(framebuffer.id)
|
|
574
|
-
});
|
|
575
|
-
}
|
|
576
|
-
|
|
577
|
-
_webgl.log.groupEnd(LOG_DRAW_PRIORITY, ">>> DRAWING MODEL ".concat(this.id))();
|
|
578
|
-
}
|
|
579
|
-
}]);
|
|
580
|
-
return Model;
|
|
581
|
-
}();
|
|
582
|
-
|
|
583
|
-
exports.default = Model;
|
|
584
|
-
//# sourceMappingURL=model.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/model.js"],"names":["LOG_DRAW_PRIORITY","LOG_DRAW_TIMEOUT","ERR_MODEL_PARAMS","NOOP","DRAW_PARAMS","Model","gl","props","id","lastLogTime","animated","initialize","programManager","ProgramManager","getDefaultProgramManager","_programManagerState","_managedProgram","program","vs","fs","modules","defines","inject","varyings","bufferMode","transpileToGLSL100","programProps","vertexArray","_programDirty","userData","needsRedraw","_attributes","attributes","uniforms","pickable","_checkProgram","setUniforms","Object","assign","getModuleUniforms","moduleSettings","drawMode","undefined","vertexCount","geometryBuffers","isInstanced","instanced","instanceCount","_setModelProps","geometry","Number","isFinite","key","delete","release","_deleteGeometryBuffers","getVertexCount","setAttributes","normalizedAttributes","name","attribute","getValue","opts","getUniforms","framebuffer","transformFeedback","parameters","updateModuleSettings","logPriority","log","priority","_logDrawCallStart","drawParams","getDrawParams","isIndexed","indexType","indexOffset","vertexArrayInstanced","warn","onBeforeRender","onAfterRender","didDraw","draw","getDrawMode","offset","_logDrawCallEnd","discard","feedbackBuffers","unbindModels","_setFeedbackBuffers","forEach","model","unbindBuffers","bindBuffers","setGeometry","_feedbackBuffers","needsUpdate","stateHash","get","Program","setProps","VertexArray","buffer","Buffer","animationProps","TransformFeedback","setBuffers","logLevel","logDrawTimeout","Date","now","group","collapsed","level","attributeTable","header","uniformTable","table","unusedTable","unusedCount","undefinedOnly","missingTable","missingCount","count","keys","configTable","configuration","message","groupEnd"],"mappings":"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","sourcesContent":["/* eslint-disable complexity */\n\nimport GL from '@luma.gl/constants';\nimport {isWebGL} from '@luma.gl/gltools';\nimport ProgramManager from './program-manager';\nimport {\n Program,\n VertexArray,\n clear,\n TransformFeedback,\n Buffer,\n log,\n isObjectEmpty,\n uid,\n assert\n} from '@luma.gl/webgl';\nimport {\n getDebugTableForUniforms,\n getDebugTableForVertexArray,\n getDebugTableForProgramConfiguration\n} from '@luma.gl/webgl';\nimport {getBuffersFromGeometry} from './model-utils';\n\nconst LOG_DRAW_PRIORITY = 2;\nconst LOG_DRAW_TIMEOUT = 10000;\n\nconst ERR_MODEL_PARAMS = 'Model needs drawMode and vertexCount';\n\nconst NOOP = () => {};\nconst DRAW_PARAMS = {};\n\nexport default class Model {\n constructor(gl, props = {}) {\n // Deduce a helpful id\n const {id = uid('model')} = props;\n assert(isWebGL(gl));\n this.id = id;\n this.gl = gl;\n this.id = props.id || uid('Model');\n this.lastLogTime = 0; // TODO - move to probe.gl\n this.animated = false;\n this.initialize(props);\n }\n\n initialize(props) {\n this.props = {};\n\n this.programManager = props.programManager || ProgramManager.getDefaultProgramManager(this.gl);\n this._programManagerState = -1;\n this._managedProgram = false;\n\n const {\n program = null,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n } = props;\n\n this.programProps = {\n program,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n };\n this.program = null;\n this.vertexArray = null;\n this._programDirty = true;\n\n // Initialize state\n this.userData = {};\n this.needsRedraw = true;\n\n // Attributes and buffers\n // Model manages auto Buffer creation from typed arrays\n this._attributes = {}; // All attributes\n this.attributes = {}; // User defined attributes\n\n // Model manages uniform animation\n this.uniforms = {};\n\n // picking options\n this.pickable = true;\n\n this._checkProgram();\n\n this.setUniforms(\n Object.assign(\n {},\n this.getModuleUniforms(props.moduleSettings) // Get unforms for supplied parameters\n )\n );\n\n this.drawMode = props.drawMode !== undefined ? props.drawMode : GL.TRIANGLES;\n this.vertexCount = props.vertexCount || 0;\n\n // Track buffers created by setGeometry\n this.geometryBuffers = {};\n\n // geometry might have set drawMode and vertexCount\n this.isInstanced = props.isInstanced || props.instanced || props.instanceCount > 0;\n\n this._setModelProps(props);\n\n // TODO - just to unbreak deck.gl 7.0-beta, remove as soon as updated\n this.geometry = {};\n\n // assert(program || program instanceof Program);\n assert(this.drawMode !== undefined && Number.isFinite(this.vertexCount), ERR_MODEL_PARAMS);\n }\n\n setProps(props) {\n this._setModelProps(props);\n }\n\n delete() {\n // delete all attributes created by this model\n // TODO - should buffer deletes be handled by vertex array?\n for (const key in this._attributes) {\n if (this._attributes[key] !== this.attributes[key]) {\n this._attributes[key].delete();\n }\n }\n\n if (this._managedProgram) {\n this.programManager.release(this.program);\n this._managedProgram = false;\n }\n\n this.vertexArray.delete();\n\n this._deleteGeometryBuffers();\n }\n\n // GETTERS\n\n getDrawMode() {\n return this.drawMode;\n }\n\n getVertexCount() {\n return this.vertexCount;\n }\n\n getInstanceCount() {\n return this.instanceCount;\n }\n\n getAttributes() {\n return this.attributes;\n }\n\n getProgram() {\n return this.program;\n }\n\n setProgram(props) {\n const {\n program,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n } = props;\n this.programProps = {\n program,\n vs,\n fs,\n modules,\n defines,\n inject,\n varyings,\n bufferMode,\n transpileToGLSL100\n };\n this._programDirty = true;\n }\n\n getUniforms() {\n return this.uniforms;\n }\n\n // SETTERS\n\n setDrawMode(drawMode) {\n this.drawMode = drawMode;\n return this;\n }\n\n setVertexCount(vertexCount) {\n assert(Number.isFinite(vertexCount));\n this.vertexCount = vertexCount;\n return this;\n }\n\n setInstanceCount(instanceCount) {\n assert(Number.isFinite(instanceCount));\n this.instanceCount = instanceCount;\n return this;\n }\n\n setGeometry(geometry) {\n this.drawMode = geometry.drawMode;\n this.vertexCount = geometry.getVertexCount();\n\n this._deleteGeometryBuffers();\n\n this.geometryBuffers = getBuffersFromGeometry(this.gl, geometry);\n this.vertexArray.setAttributes(this.geometryBuffers);\n return this;\n }\n\n setAttributes(attributes = {}) {\n // Avoid setting needsRedraw if no attributes\n if (isObjectEmpty(attributes)) {\n return this;\n }\n\n const normalizedAttributes = {};\n for (const name in attributes) {\n const attribute = attributes[name];\n // The `getValue` call provides support for deck.gl `Attribute` class\n // TODO - remove once deck refactoring completes\n normalizedAttributes[name] = attribute.getValue ? attribute.getValue() : attribute;\n }\n\n this.vertexArray.setAttributes(normalizedAttributes);\n return this;\n }\n\n // TODO - should actually set the uniforms\n setUniforms(uniforms = {}) {\n Object.assign(this.uniforms, uniforms);\n\n return this;\n }\n\n getModuleUniforms(opts) {\n this._checkProgram();\n\n const getUniforms = this.programManager.getUniforms(this.program);\n\n if (getUniforms) {\n return getUniforms(opts);\n }\n\n return {};\n }\n\n updateModuleSettings(opts) {\n const uniforms = this.getModuleUniforms(opts || {});\n return this.setUniforms(uniforms);\n }\n\n // DRAW CALLS\n\n clear(opts) {\n clear(this.program.gl, opts);\n return this;\n }\n\n draw(opts = {}) {\n // Lazy update program and vertex array\n this._checkProgram();\n\n const {\n moduleSettings = null,\n framebuffer,\n uniforms = {},\n attributes = {},\n transformFeedback = this.transformFeedback,\n parameters = {},\n vertexArray = this.vertexArray\n } = opts;\n\n // Update model with any just provided attributes, settings or uniforms\n this.setAttributes(attributes);\n this.updateModuleSettings(moduleSettings);\n this.setUniforms(uniforms);\n\n let logPriority;\n\n if (log.priority >= LOG_DRAW_PRIORITY) {\n logPriority = this._logDrawCallStart(LOG_DRAW_PRIORITY);\n }\n\n const drawParams = this.vertexArray.getDrawParams();\n const {\n isIndexed = drawParams.isIndexed,\n indexType = drawParams.indexType,\n indexOffset = drawParams.indexOffset,\n vertexArrayInstanced = drawParams.isInstanced\n } = this.props;\n\n if (vertexArrayInstanced && !this.isInstanced) {\n log.warn('Found instanced attributes on non-instanced model', this.id)();\n }\n\n const {isInstanced, instanceCount} = this;\n\n const {onBeforeRender = NOOP, onAfterRender = NOOP} = this.props;\n\n onBeforeRender();\n\n this.program.setUniforms(this.uniforms);\n\n const didDraw = this.program.draw(\n Object.assign(DRAW_PARAMS, opts, {\n logPriority,\n uniforms: null, // Already set (may contain \"function values\" not understood by Program)\n framebuffer,\n parameters,\n drawMode: this.getDrawMode(),\n vertexCount: this.getVertexCount(),\n vertexArray,\n transformFeedback,\n isIndexed,\n indexType,\n isInstanced,\n instanceCount,\n offset: isIndexed ? indexOffset : 0\n })\n );\n\n onAfterRender();\n\n if (log.priority >= LOG_DRAW_PRIORITY) {\n this._logDrawCallEnd(logPriority, vertexArray, framebuffer);\n }\n\n return didDraw;\n }\n\n // Draw call for transform feedback\n transform(opts = {}) {\n const {discard = true, feedbackBuffers, unbindModels = []} = opts;\n\n let {parameters} = opts;\n\n if (feedbackBuffers) {\n this._setFeedbackBuffers(feedbackBuffers);\n }\n\n if (discard) {\n parameters = Object.assign({}, parameters, {[GL.RASTERIZER_DISCARD]: discard});\n }\n\n unbindModels.forEach(model => model.vertexArray.unbindBuffers());\n try {\n this.draw(Object.assign({}, opts, {parameters}));\n } finally {\n unbindModels.forEach(model => model.vertexArray.bindBuffers());\n }\n\n return this;\n }\n\n // DEPRECATED METHODS\n\n render(uniforms = {}) {\n log.warn('Model.render() is deprecated. Use Model.setUniforms() and Model.draw()')();\n return this.setUniforms(uniforms).draw();\n }\n\n // PRIVATE METHODS\n\n _setModelProps(props) {\n Object.assign(this.props, props);\n\n if ('uniforms' in props) {\n this.setUniforms(props.uniforms);\n }\n\n if ('pickable' in props) {\n this.pickable = props.pickable;\n }\n\n if ('instanceCount' in props) {\n this.instanceCount = props.instanceCount;\n }\n if ('geometry' in props) {\n this.setGeometry(props.geometry);\n }\n\n // webgl settings\n if ('attributes' in props) {\n this.setAttributes(props.attributes);\n }\n if ('_feedbackBuffers' in props) {\n this._setFeedbackBuffers(props._feedbackBuffers);\n }\n }\n\n _checkProgram() {\n const needsUpdate =\n this._programDirty || this.programManager.stateHash !== this._programManagerState;\n\n if (!needsUpdate) {\n return;\n }\n\n let {program} = this.programProps;\n\n if (program) {\n this._managedProgram = false;\n } else {\n const {\n vs,\n fs,\n modules,\n inject,\n defines,\n varyings,\n bufferMode,\n transpileToGLSL100\n } = this.programProps;\n program = this.programManager.get({\n vs,\n fs,\n modules,\n inject,\n defines,\n varyings,\n bufferMode,\n transpileToGLSL100\n });\n if (this.program && this._managedProgram) {\n this.programManager.release(this.program);\n }\n this._programManagerState = this.programManager.stateHash;\n this._managedProgram = true;\n }\n\n assert(program instanceof Program, 'Model needs a program');\n\n this._programDirty = false;\n\n if (program === this.program) {\n return;\n }\n\n this.program = program;\n\n if (this.vertexArray) {\n // @ts-ignore TODO\n this.vertexArray.setProps({program: this.program, attributes: this.vertexArray.attributes});\n } else {\n this.vertexArray = new VertexArray(this.gl, {program: this.program});\n }\n\n // Make sure we have some reasonable default uniforms in place\n this.setUniforms(\n Object.assign(\n {},\n this.getModuleUniforms() // Get all default uniforms,\n )\n );\n }\n\n _deleteGeometryBuffers() {\n for (const name in this.geometryBuffers) {\n // Buffer is raw value (for indices) or first element of [buffer, accessor] pair\n const buffer = this.geometryBuffers[name][0] || this.geometryBuffers[name];\n if (buffer instanceof Buffer) {\n buffer.delete();\n }\n }\n }\n\n // Updates (evaluates) all function valued uniforms based on a new set of animationProps\n // experimental\n _setAnimationProps(animationProps) {\n if (this.animated) {\n assert(animationProps, 'Model.draw(): animated uniforms but no animationProps');\n // const animatedUniforms = this._evaluateAnimateUniforms(animationProps);\n // Object.assign(this.uniforms, animatedUniforms);\n }\n }\n\n // Transform Feedback\n\n _setFeedbackBuffers(feedbackBuffers = {}) {\n // Avoid setting needsRedraw if no feedbackBuffers\n if (isObjectEmpty(feedbackBuffers)) {\n return this;\n }\n\n const {gl} = this.program;\n this.transformFeedback =\n this.transformFeedback ||\n new TransformFeedback(gl, {\n program: this.program\n });\n\n this.transformFeedback.setBuffers(feedbackBuffers);\n return this;\n }\n\n _logDrawCallStart(logLevel) {\n const logDrawTimeout = logLevel > 3 ? 0 : LOG_DRAW_TIMEOUT;\n if (Date.now() - this.lastLogTime < logDrawTimeout) {\n return undefined;\n }\n\n this.lastLogTime = Date.now();\n\n log.group(LOG_DRAW_PRIORITY, `>>> DRAWING MODEL ${this.id}`, {collapsed: log.level <= 2})();\n\n return logLevel;\n }\n\n _logDrawCallEnd(logLevel, vertexArray, uniforms, framebuffer) {\n // HACK: logLevel === undefined means logDrawCallStart didn't run\n if (logLevel === undefined) {\n return;\n }\n\n const attributeTable = getDebugTableForVertexArray({\n vertexArray,\n header: `${this.id} attributes`,\n // @ts-ignore\n attributes: this._attributes\n });\n\n const {table: uniformTable, unusedTable, unusedCount} = getDebugTableForUniforms({\n header: `${this.id} uniforms`,\n program: this.program,\n uniforms: Object.assign({}, this.program.uniforms, uniforms)\n });\n\n // log missing uniforms\n const {table: missingTable, count: missingCount} = getDebugTableForUniforms({\n header: `${this.id} uniforms`,\n program: this.program,\n uniforms: Object.assign({}, this.program.uniforms, uniforms),\n undefinedOnly: true\n });\n\n if (missingCount > 0) {\n log.log('MISSING UNIFORMS', Object.keys(missingTable))();\n // log.table(logLevel, missingTable)();\n }\n if (unusedCount > 0) {\n log.log('UNUSED UNIFORMS', Object.keys(unusedTable))();\n // log.log(logLevel, 'Unused uniforms ', unusedTable)();\n }\n\n const configTable = getDebugTableForProgramConfiguration(this.vertexArray.configuration);\n\n log.table(logLevel, attributeTable)();\n\n log.table(logLevel, uniformTable)();\n\n log.table(logLevel + 1, configTable)();\n\n if (framebuffer) {\n framebuffer.log({logLevel: LOG_DRAW_PRIORITY, message: `Rendered to ${framebuffer.id}`});\n }\n\n log.groupEnd(LOG_DRAW_PRIORITY, `>>> DRAWING MODEL ${this.id}`)();\n }\n}\n"],"file":"model.js"}
|