@antv/l7-layers 2.9.25-alpha.0 → 2.9.25
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/es/heatmap/models/heatmap.js +1 -1
- package/es/tile/utils.js +1 -1
- package/lib/Geometry/index.js +114 -77
- package/lib/Geometry/models/billboard.js +232 -181
- package/lib/Geometry/models/index.js +18 -34
- package/lib/Geometry/models/plane.js +407 -278
- package/lib/Geometry/models/sprite.js +291 -189
- package/lib/canvas/index.js +101 -66
- package/lib/canvas/models/canvas.js +207 -140
- package/lib/canvas/models/index.js +12 -30
- package/lib/citybuliding/building.js +98 -63
- package/lib/citybuliding/models/build.js +192 -146
- package/lib/core/BaseLayer.js +1331 -814
- package/lib/core/BaseModel.js +457 -279
- package/lib/core/interface.js +40 -53
- package/lib/core/schema.js +21 -39
- package/lib/core/shape/Path.js +67 -79
- package/lib/core/shape/extrude.js +132 -91
- package/lib/core/triangulation.js +378 -196
- package/lib/earth/index.js +100 -62
- package/lib/earth/models/atmosphere.js +146 -112
- package/lib/earth/models/base.js +210 -150
- package/lib/earth/models/bloomsphere.js +146 -112
- package/lib/earth/utils.js +111 -91
- package/lib/heatmap/index.js +149 -92
- package/lib/heatmap/models/grid.js +118 -91
- package/lib/heatmap/models/grid3d.js +155 -123
- package/lib/heatmap/models/heatmap.js +475 -338
- package/lib/heatmap/models/hexagon.js +121 -92
- package/lib/heatmap/models/index.js +22 -37
- package/lib/heatmap/triangulation.js +31 -47
- package/lib/image/index.js +111 -74
- package/lib/image/models/dataImage.js +232 -174
- package/lib/image/models/image.js +175 -128
- package/lib/image/models/index.js +15 -32
- package/lib/index.js +263 -97
- package/lib/line/index.js +131 -85
- package/lib/line/models/arc.js +352 -237
- package/lib/line/models/arc_3d.js +334 -228
- package/lib/line/models/earthArc_3d.js +336 -228
- package/lib/line/models/great_circle.js +291 -200
- package/lib/line/models/half.js +286 -201
- package/lib/line/models/index.js +42 -50
- package/lib/line/models/line.js +428 -299
- package/lib/line/models/linearline.js +277 -203
- package/lib/line/models/simpleLine.js +239 -175
- package/lib/line/models/tile.js +348 -237
- package/lib/line/models/wall.js +327 -235
- package/lib/mask/index.js +92 -59
- package/lib/mask/models/fill.js +134 -82
- package/lib/mask/models/index.js +12 -30
- package/lib/plugins/DataMappingPlugin.js +342 -224
- package/lib/plugins/DataSourcePlugin.js +102 -87
- package/lib/plugins/FeatureScalePlugin.js +330 -240
- package/lib/plugins/LayerAnimateStylePlugin.js +61 -55
- package/lib/plugins/LayerModelPlugin.js +80 -73
- package/lib/plugins/LayerStylePlugin.js +48 -51
- package/lib/plugins/LightingPlugin.js +80 -68
- package/lib/plugins/MultiPassRendererPlugin.js +91 -65
- package/lib/plugins/PixelPickingPlugin.js +150 -109
- package/lib/plugins/RegisterStyleAttributePlugin.js +110 -110
- package/lib/plugins/ShaderUniformPlugin.js +118 -99
- package/lib/plugins/UpdateModelPlugin.js +40 -47
- package/lib/plugins/UpdateStyleAttributePlugin.js +93 -75
- package/lib/point/index.js +226 -150
- package/lib/point/models/earthExtrude.js +279 -201
- package/lib/point/models/earthFill.js +287 -202
- package/lib/point/models/extrude.js +299 -203
- package/lib/point/models/fill.js +406 -275
- package/lib/point/models/fillmage.js +365 -256
- package/lib/point/models/image.js +241 -168
- package/lib/point/models/index.js +46 -52
- package/lib/point/models/normal.js +183 -134
- package/lib/point/models/radar.js +304 -211
- package/lib/point/models/simplePoint.js +194 -142
- package/lib/point/models/text.js +608 -385
- package/lib/point/models/tile.js +314 -223
- package/lib/point/shape/extrude.js +56 -52
- package/lib/polygon/index.js +154 -102
- package/lib/polygon/models/extrude.js +311 -223
- package/lib/polygon/models/fill.js +215 -153
- package/lib/polygon/models/index.js +46 -52
- package/lib/polygon/models/ocean.js +244 -173
- package/lib/polygon/models/tile.js +144 -100
- package/lib/polygon/models/water.js +222 -153
- package/lib/raster/buffers/triangulation.js +27 -40
- package/lib/raster/index.js +115 -75
- package/lib/raster/models/index.js +16 -33
- package/lib/raster/models/raster.js +178 -135
- package/lib/raster/raster.js +187 -132
- package/lib/tile/interface.js +4 -16
- package/lib/tile/manager/tileConfigManager.js +125 -86
- package/lib/tile/manager/tileLayerManager.js +313 -229
- package/lib/tile/manager/tilePickerManager.js +192 -123
- package/lib/tile/models/tileModel.js +71 -52
- package/lib/tile/tileFactory/base.js +432 -309
- package/lib/tile/tileFactory/index.js +51 -49
- package/lib/tile/tileFactory/line.js +65 -50
- package/lib/tile/tileFactory/point.js +65 -50
- package/lib/tile/tileFactory/polygon.js +65 -50
- package/lib/tile/tileFactory/raster.js +66 -54
- package/lib/tile/tileFactory/rasterData.js +88 -76
- package/lib/tile/tileFactory/rasterDataLayer.js +97 -62
- package/lib/tile/tileFactory/vectorLayer.js +168 -109
- package/lib/tile/tileLayer/baseTileLayer.js +420 -221
- package/lib/tile/tmsTileLayer.js +110 -67
- package/lib/tile/utils.js +110 -92
- package/lib/utils/blend.js +59 -79
- package/lib/utils/collision-index.js +107 -64
- package/lib/utils/dataMappingStyle.js +105 -60
- package/lib/utils/extrude_polyline.js +600 -398
- package/lib/utils/grid-index.js +163 -111
- package/lib/utils/layerData.js +130 -99
- package/lib/utils/multiPassRender.js +49 -41
- package/lib/utils/polylineNormal.js +148 -96
- package/lib/utils/simpleLine.js +100 -85
- package/lib/utils/symbol-layout.js +219 -116
- package/lib/utils/updateShape.js +15 -41
- package/lib/wind/index.js +109 -71
- package/lib/wind/models/index.js +12 -30
- package/lib/wind/models/utils.js +144 -105
- package/lib/wind/models/wind.js +333 -224
- package/lib/wind/models/windRender.js +329 -218
- package/lib/wind/models/windShader.js +23 -181
- package/package.json +6 -6
package/lib/wind/index.js
CHANGED
|
@@ -1,75 +1,113 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
|
|
20
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
21
|
-
|
|
22
|
-
// src/wind/index.ts
|
|
23
|
-
var wind_exports = {};
|
|
24
|
-
__export(wind_exports, {
|
|
25
|
-
default: () => WindLayer
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
26
7
|
});
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
var
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
|
|
14
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
+
|
|
16
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
+
|
|
18
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
19
|
+
|
|
20
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
21
|
+
|
|
22
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
23
|
+
|
|
24
|
+
var _BaseLayer2 = _interopRequireDefault(require("../core/BaseLayer"));
|
|
25
|
+
|
|
26
|
+
var _models = _interopRequireDefault(require("./models"));
|
|
27
|
+
|
|
28
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
29
|
+
|
|
30
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
31
|
+
|
|
32
|
+
var WindLayer = /*#__PURE__*/function (_BaseLayer) {
|
|
33
|
+
(0, _inherits2.default)(WindLayer, _BaseLayer);
|
|
34
|
+
|
|
35
|
+
var _super = _createSuper(WindLayer);
|
|
36
|
+
|
|
37
|
+
function WindLayer() {
|
|
38
|
+
var _this;
|
|
39
|
+
|
|
40
|
+
(0, _classCallCheck2.default)(this, WindLayer);
|
|
41
|
+
|
|
42
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
43
|
+
args[_key] = arguments[_key];
|
|
49
44
|
}
|
|
50
|
-
|
|
45
|
+
|
|
46
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
47
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "type", 'WindLayer');
|
|
48
|
+
return _this;
|
|
51
49
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
50
|
+
|
|
51
|
+
(0, _createClass2.default)(WindLayer, [{
|
|
52
|
+
key: "buildModels",
|
|
53
|
+
value: function buildModels() {
|
|
54
|
+
var _this2 = this;
|
|
55
|
+
|
|
56
|
+
var modelType = this.getModelType();
|
|
57
|
+
this.layerModel = new _models.default[modelType](this);
|
|
58
|
+
this.layerModel.initModels(function (models) {
|
|
59
|
+
_this2.models = models;
|
|
60
|
+
|
|
61
|
+
_this2.renderLayers();
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}, {
|
|
65
|
+
key: "rebuildModels",
|
|
66
|
+
value: function rebuildModels() {
|
|
67
|
+
var _this3 = this;
|
|
68
|
+
|
|
69
|
+
this.layerModel.buildModels(function (models) {
|
|
70
|
+
return _this3.models = models;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}, {
|
|
74
|
+
key: "renderModels",
|
|
75
|
+
value: function renderModels() {
|
|
76
|
+
if (this.layerModel) {
|
|
77
|
+
this.layerModel.render(); // 独立的渲染流程
|
|
60
78
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
|
|
79
|
+
|
|
80
|
+
return this;
|
|
81
|
+
}
|
|
82
|
+
}, {
|
|
83
|
+
key: "getConfigSchema",
|
|
84
|
+
value: function getConfigSchema() {
|
|
85
|
+
return {
|
|
86
|
+
properties: {
|
|
87
|
+
opacity: {
|
|
88
|
+
type: 'number',
|
|
89
|
+
minimum: 0,
|
|
90
|
+
maximum: 1
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}, {
|
|
96
|
+
key: "getDefaultConfig",
|
|
97
|
+
value: function getDefaultConfig() {
|
|
98
|
+
var type = this.getModelType();
|
|
99
|
+
var defaultConfig = {
|
|
100
|
+
wind: {}
|
|
101
|
+
};
|
|
102
|
+
return defaultConfig[type];
|
|
103
|
+
}
|
|
104
|
+
}, {
|
|
105
|
+
key: "getModelType",
|
|
106
|
+
value: function getModelType() {
|
|
107
|
+
return 'wind';
|
|
108
|
+
}
|
|
109
|
+
}]);
|
|
110
|
+
return WindLayer;
|
|
111
|
+
}(_BaseLayer2.default);
|
|
112
|
+
|
|
113
|
+
exports.default = WindLayer;
|
package/lib/wind/models/index.js
CHANGED
|
@@ -1,34 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
|
|
20
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
21
4
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
__export(models_exports, {
|
|
25
|
-
default: () => models_default
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
26
7
|
});
|
|
27
|
-
|
|
28
|
-
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _wind = _interopRequireDefault(require("./wind"));
|
|
11
|
+
|
|
29
12
|
var WindModels = {
|
|
30
|
-
wind:
|
|
13
|
+
wind: _wind.default
|
|
31
14
|
};
|
|
32
|
-
var
|
|
33
|
-
|
|
34
|
-
0 && (module.exports = {});
|
|
15
|
+
var _default = WindModels;
|
|
16
|
+
exports.default = _default;
|
package/lib/wind/models/utils.js
CHANGED
|
@@ -1,92 +1,110 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
|
|
19
|
-
// src/wind/models/utils.ts
|
|
20
|
-
var utils_exports = {};
|
|
21
|
-
__export(utils_exports, {
|
|
22
|
-
bindAttriBuffer: () => bindAttriBuffer,
|
|
23
|
-
bindAttriIndicesBuffer: () => bindAttriIndicesBuffer,
|
|
24
|
-
bindTexture: () => bindTexture,
|
|
25
|
-
bindUnifrom: () => bindUnifrom,
|
|
26
|
-
createBuffer: () => createBuffer,
|
|
27
|
-
createDataTexture: () => createDataTexture,
|
|
28
|
-
createProgram: () => createProgram,
|
|
29
|
-
createTexture: () => createTexture,
|
|
30
|
-
initFramebuffer: () => initFramebuffer,
|
|
31
|
-
loadShader: () => loadShader,
|
|
32
|
-
setUnifrom: () => setUnifrom
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
33
5
|
});
|
|
34
|
-
|
|
6
|
+
exports.bindAttriBuffer = bindAttriBuffer;
|
|
7
|
+
exports.bindAttriIndicesBuffer = bindAttriIndicesBuffer;
|
|
8
|
+
exports.bindTexture = bindTexture;
|
|
9
|
+
exports.bindUnifrom = bindUnifrom;
|
|
10
|
+
exports.createBuffer = createBuffer;
|
|
11
|
+
exports.createDataTexture = createDataTexture;
|
|
12
|
+
exports.createProgram = createProgram;
|
|
13
|
+
exports.createTexture = createTexture;
|
|
14
|
+
exports.initFramebuffer = initFramebuffer;
|
|
15
|
+
exports.loadShader = loadShader;
|
|
16
|
+
exports.setUnifrom = setUnifrom;
|
|
17
|
+
|
|
35
18
|
function createProgram(gl, vshader, fshader) {
|
|
36
|
-
|
|
37
|
-
|
|
19
|
+
// Create shader object
|
|
20
|
+
var vertexShader = loadShader(gl, gl.VERTEX_SHADER, vshader); // 创建顶点着色器对象
|
|
21
|
+
|
|
22
|
+
var fragmentShader = loadShader(gl, gl.FRAGMENT_SHADER, fshader); // 创建片元着色器对象
|
|
23
|
+
|
|
38
24
|
if (!vertexShader || !fragmentShader) {
|
|
39
25
|
return null;
|
|
40
|
-
}
|
|
41
|
-
|
|
26
|
+
} // Create a program object
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
var program = gl.createProgram(); // 创建程序对象
|
|
30
|
+
|
|
42
31
|
if (!program) {
|
|
43
32
|
return null;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
gl.
|
|
48
|
-
|
|
33
|
+
} // Attach the shader objects
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
gl.attachShader(program, vertexShader); // 绑定着色器对象
|
|
37
|
+
|
|
38
|
+
gl.attachShader(program, fragmentShader); // Link the program object
|
|
39
|
+
|
|
40
|
+
gl.linkProgram(program); // 链接着色器对象
|
|
41
|
+
// Check the result of linking
|
|
42
|
+
|
|
43
|
+
var linked = gl.getProgramParameter(program, gl.LINK_STATUS); // 判断着色器对象是否链接成功
|
|
44
|
+
|
|
49
45
|
if (!linked) {
|
|
50
|
-
|
|
51
|
-
console.warn(
|
|
46
|
+
var error = gl.getProgramInfoLog(program);
|
|
47
|
+
console.warn('Failed to link program: ' + error);
|
|
52
48
|
gl.deleteProgram(program);
|
|
53
49
|
gl.deleteShader(fragmentShader);
|
|
54
50
|
gl.deleteShader(vertexShader);
|
|
55
51
|
return null;
|
|
56
52
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
53
|
+
|
|
54
|
+
var numAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
|
|
55
|
+
|
|
56
|
+
for (var i = 0; i < numAttributes; i++) {
|
|
57
|
+
var attribute = gl.getActiveAttrib(program, i); // @ts-ignore
|
|
58
|
+
|
|
60
59
|
program[attribute.name] = gl.getAttribLocation(program, attribute.name);
|
|
61
60
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
61
|
+
|
|
62
|
+
var numUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);
|
|
63
|
+
|
|
64
|
+
for (var i$1 = 0; i$1 < numUniforms; i$1++) {
|
|
65
|
+
var uniform = gl.getActiveUniform(program, i$1); // @ts-ignore
|
|
66
|
+
|
|
65
67
|
program[uniform.name] = gl.getUniformLocation(program, uniform.name);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
+
} // @ts-ignore
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
program.vertexShader = vertexShader; // @ts-ignore
|
|
72
|
+
|
|
68
73
|
program.fragmentShader = fragmentShader;
|
|
69
74
|
return program;
|
|
70
75
|
}
|
|
76
|
+
|
|
71
77
|
function loadShader(gl, type, source) {
|
|
72
|
-
|
|
78
|
+
// Create shader object
|
|
79
|
+
var shader = gl.createShader(type); // 生成着色器对象
|
|
80
|
+
|
|
73
81
|
if (shader == null) {
|
|
74
|
-
console.warn(
|
|
82
|
+
console.warn('unable to create shader');
|
|
75
83
|
return null;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
84
|
+
} // Set the shader program
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
gl.shaderSource(shader, source); // 载入着色器
|
|
88
|
+
// Compile the shader
|
|
89
|
+
|
|
90
|
+
gl.compileShader(shader); // 编译着色器代码
|
|
91
|
+
// Check the result of compilation
|
|
92
|
+
|
|
93
|
+
var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS); // 判断着色器对象是否生成成功
|
|
94
|
+
// gl.SHADER_TYPE、gl.DELETE_STATUS、gl.COMPILE_STATUS
|
|
95
|
+
|
|
80
96
|
if (!compiled) {
|
|
81
|
-
|
|
82
|
-
console.warn(
|
|
97
|
+
var error = gl.getShaderInfoLog(shader);
|
|
98
|
+
console.warn('Failed to compile shader: ' + error);
|
|
83
99
|
gl.deleteShader(shader);
|
|
84
100
|
return null;
|
|
85
101
|
}
|
|
102
|
+
|
|
86
103
|
return shader;
|
|
87
104
|
}
|
|
105
|
+
|
|
88
106
|
function createTexture(gl, filter, data, width, height) {
|
|
89
|
-
|
|
107
|
+
var texture = gl.createTexture();
|
|
90
108
|
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
91
109
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
92
110
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
@@ -96,8 +114,9 @@ function createTexture(gl, filter, data, width, height) {
|
|
|
96
114
|
gl.bindTexture(gl.TEXTURE_2D, null);
|
|
97
115
|
return texture;
|
|
98
116
|
}
|
|
117
|
+
|
|
99
118
|
function createDataTexture(gl, filter, data) {
|
|
100
|
-
|
|
119
|
+
var texture = gl.createTexture();
|
|
101
120
|
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
102
121
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
|
|
103
122
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
|
|
@@ -107,85 +126,115 @@ function createDataTexture(gl, filter, data) {
|
|
|
107
126
|
gl.bindTexture(gl.TEXTURE_2D, null);
|
|
108
127
|
return texture;
|
|
109
128
|
}
|
|
129
|
+
|
|
110
130
|
function bindTexture(gl, texture, unit) {
|
|
111
131
|
gl.activeTexture(gl.TEXTURE0 + unit);
|
|
112
132
|
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
113
133
|
}
|
|
134
|
+
|
|
114
135
|
function createBuffer(gl, data) {
|
|
115
|
-
|
|
136
|
+
var buffer = gl.createBuffer();
|
|
116
137
|
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
117
138
|
gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW);
|
|
118
139
|
return buffer;
|
|
119
140
|
}
|
|
141
|
+
|
|
120
142
|
function bindAttriBuffer(gl, attrName, vertices, count, program) {
|
|
121
|
-
|
|
143
|
+
var buffer = gl.createBuffer();
|
|
144
|
+
|
|
122
145
|
if (!buffer) {
|
|
123
|
-
console.warn(
|
|
146
|
+
console.warn('failed create vertex buffer');
|
|
124
147
|
}
|
|
125
|
-
|
|
126
|
-
gl.
|
|
127
|
-
|
|
148
|
+
|
|
149
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, buffer); // 将缓冲区对象绑定到目标
|
|
150
|
+
|
|
151
|
+
gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW); // 向缓冲区对象中写入数据
|
|
152
|
+
|
|
153
|
+
var attr = gl.getAttribLocation(program, attrName);
|
|
128
154
|
gl.vertexAttribPointer(attr, count, gl.FLOAT, false, 0, 0);
|
|
129
155
|
gl.enableVertexAttribArray(attr);
|
|
130
156
|
gl.bindBuffer(gl.ARRAY_BUFFER, null);
|
|
131
|
-
return {
|
|
157
|
+
return {
|
|
158
|
+
buffer: buffer,
|
|
159
|
+
attr: attr,
|
|
160
|
+
count: count
|
|
161
|
+
};
|
|
132
162
|
}
|
|
163
|
+
|
|
133
164
|
function bindAttriIndicesBuffer(gl, indices) {
|
|
134
|
-
|
|
165
|
+
var buffer = gl.createBuffer();
|
|
166
|
+
|
|
135
167
|
if (!buffer) {
|
|
136
|
-
console.warn(
|
|
168
|
+
console.warn('failed create vertex buffer');
|
|
137
169
|
} else {
|
|
138
170
|
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);
|
|
139
171
|
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW);
|
|
140
172
|
}
|
|
173
|
+
|
|
141
174
|
return buffer;
|
|
142
175
|
}
|
|
176
|
+
|
|
143
177
|
function bindUnifrom(gl, unifromName, data, program, vec) {
|
|
144
|
-
|
|
178
|
+
var uniform = gl.getUniformLocation(program, unifromName);
|
|
179
|
+
|
|
145
180
|
if (uniform === null || uniform < 0) {
|
|
146
|
-
console.warn(
|
|
181
|
+
console.warn('无法获取 uniform 变量的存储位置');
|
|
147
182
|
} else {
|
|
148
183
|
setUnifrom(gl, uniform, data, vec);
|
|
149
184
|
}
|
|
185
|
+
|
|
150
186
|
return uniform;
|
|
151
187
|
}
|
|
188
|
+
|
|
152
189
|
function setUnifrom(gl, location, data, vec) {
|
|
153
190
|
switch (vec) {
|
|
154
|
-
case
|
|
191
|
+
case 'float':
|
|
155
192
|
gl.uniform1f(location, data);
|
|
156
193
|
break;
|
|
157
|
-
|
|
194
|
+
|
|
195
|
+
case 'vec2':
|
|
158
196
|
gl.uniform2fv(location, data);
|
|
159
197
|
break;
|
|
160
|
-
|
|
198
|
+
|
|
199
|
+
case 'vec3':
|
|
161
200
|
gl.uniform3fv(location, data);
|
|
162
201
|
break;
|
|
163
|
-
|
|
202
|
+
|
|
203
|
+
case 'vec4':
|
|
164
204
|
gl.uniform4fv(location, data);
|
|
165
205
|
break;
|
|
166
|
-
|
|
167
|
-
|
|
206
|
+
|
|
207
|
+
case 'bool':
|
|
208
|
+
gl.uniform1i(location, data); // 1 - true 0 - false
|
|
209
|
+
|
|
168
210
|
break;
|
|
169
|
-
|
|
211
|
+
|
|
212
|
+
case 'sampler2d':
|
|
170
213
|
break;
|
|
171
|
-
|
|
214
|
+
|
|
215
|
+
case 'mat4':
|
|
172
216
|
gl.uniformMatrix4fv(location, false, data);
|
|
173
217
|
break;
|
|
174
218
|
}
|
|
175
219
|
}
|
|
220
|
+
|
|
176
221
|
function initFramebuffer(gl) {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
222
|
+
var drawingBufferWidth = gl.drawingBufferWidth,
|
|
223
|
+
drawingBufferHeight = gl.drawingBufferHeight;
|
|
224
|
+
var OFFER_SCREEN_WIDTH = drawingBufferWidth;
|
|
225
|
+
var OFFER_SCREEN_HEIGHT = drawingBufferHeight;
|
|
226
|
+
var FRAMEBUFFER = gl.createFramebuffer();
|
|
181
227
|
gl.bindFramebuffer(gl.FRAMEBUFFER, FRAMEBUFFER);
|
|
182
|
-
|
|
228
|
+
var depthbuffer = gl.createRenderbuffer();
|
|
183
229
|
gl.bindRenderbuffer(gl.RENDERBUFFER, depthbuffer);
|
|
184
230
|
gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, OFFER_SCREEN_WIDTH, OFFER_SCREEN_HEIGHT);
|
|
185
231
|
gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, depthbuffer);
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
FRAMEBUFFER.
|
|
232
|
+
var texture = gl.createTexture(); // @ts-ignore
|
|
233
|
+
|
|
234
|
+
FRAMEBUFFER.texture = texture; // @ts-ignore
|
|
235
|
+
|
|
236
|
+
FRAMEBUFFER.width = OFFER_SCREEN_WIDTH; // @ts-ignore
|
|
237
|
+
|
|
189
238
|
FRAMEBUFFER.height = OFFER_SCREEN_HEIGHT;
|
|
190
239
|
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
191
240
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
|
|
@@ -196,19 +245,9 @@ function initFramebuffer(gl) {
|
|
|
196
245
|
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);
|
|
197
246
|
gl.bindTexture(gl.TEXTURE_2D, null);
|
|
198
247
|
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
|
|
199
|
-
return {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
bindTexture,
|
|
206
|
-
bindUnifrom,
|
|
207
|
-
createBuffer,
|
|
208
|
-
createDataTexture,
|
|
209
|
-
createProgram,
|
|
210
|
-
createTexture,
|
|
211
|
-
initFramebuffer,
|
|
212
|
-
loadShader,
|
|
213
|
-
setUnifrom
|
|
214
|
-
});
|
|
248
|
+
return {
|
|
249
|
+
FRAMEBUFFER: FRAMEBUFFER,
|
|
250
|
+
OFFER_SCREEN_WIDTH: OFFER_SCREEN_WIDTH,
|
|
251
|
+
OFFER_SCREEN_HEIGHT: OFFER_SCREEN_HEIGHT
|
|
252
|
+
};
|
|
253
|
+
}
|