@antv/l7-layers 2.17.2 → 2.17.4
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/Geometry/index.js +31 -9
- package/es/Geometry/models/billboard.js +89 -51
- package/es/Geometry/models/plane.js +143 -81
- package/es/Geometry/models/sprite.js +118 -60
- package/es/canvas/index.js +33 -10
- package/es/canvas/models/canvas.js +97 -41
- package/es/citybuliding/building.js +27 -8
- package/es/citybuliding/models/build.js +82 -57
- package/es/core/BaseLayer.js +478 -313
- package/es/core/BaseModel.js +80 -51
- package/es/core/CommonStyleAttribute.js +5 -2
- package/es/core/LayerPickService.js +32 -21
- package/es/core/TextureService.js +13 -0
- package/es/core/interface.js +24 -17
- package/es/core/shape/Path.js +20 -13
- package/es/core/shape/extrude.js +39 -27
- package/es/core/triangulation.js +136 -99
- package/es/earth/index.js +33 -9
- package/es/earth/models/atmosphere.js +54 -30
- package/es/earth/models/base.js +85 -47
- package/es/earth/models/bloomsphere.js +54 -30
- package/es/earth/utils.js +13 -9
- package/es/heatmap/index.js +40 -10
- package/es/heatmap/models/grid.js +52 -28
- package/es/heatmap/models/grid3d.js +52 -28
- package/es/heatmap/models/heatmap.js +149 -92
- package/es/heatmap/models/hexagon.js +52 -28
- package/es/heatmap/triangulation.js +4 -0
- package/es/image/index.js +28 -9
- package/es/image/models/image.js +100 -66
- package/es/index.js +17 -9
- package/es/line/index.js +35 -9
- package/es/line/models/arc.js +114 -64
- package/es/line/models/arc_3d.js +102 -58
- package/es/line/models/earthArc_3d.js +105 -60
- package/es/line/models/flow.js +60 -36
- package/es/line/models/great_circle.js +94 -53
- package/es/line/models/line.js +138 -86
- package/es/line/models/linearline.js +76 -43
- package/es/line/models/simpleLine.js +69 -39
- package/es/line/models/wall.js +92 -52
- package/es/mask/index.js +28 -9
- package/es/mask/models/fill.js +54 -29
- package/es/plugins/DataMappingPlugin.js +114 -78
- package/es/plugins/DataSourcePlugin.js +68 -45
- package/es/plugins/FeatureScalePlugin.js +122 -67
- package/es/plugins/LayerAnimateStylePlugin.js +5 -0
- package/es/plugins/LayerMaskPlugin.js +11 -3
- package/es/plugins/LayerModelPlugin.js +108 -69
- package/es/plugins/LayerStylePlugin.js +9 -3
- package/es/plugins/LightingPlugin.js +18 -12
- package/es/plugins/MultiPassRendererPlugin.js +16 -11
- package/es/plugins/PixelPickingPlugin.js +21 -12
- package/es/plugins/RegisterStyleAttributePlugin.js +12 -5
- package/es/plugins/ShaderUniformPlugin.js +27 -13
- package/es/plugins/UpdateModelPlugin.js +5 -0
- package/es/plugins/UpdateStyleAttributePlugin.js +11 -5
- package/es/point/index.js +78 -26
- package/es/point/models/earthExtrude.js +95 -58
- package/es/point/models/earthFill.js +80 -52
- package/es/point/models/extrude.js +94 -57
- package/es/point/models/fill.js +81 -56
- package/es/point/models/fillmage.js +100 -60
- package/es/point/models/image.js +83 -47
- package/es/point/models/index.js +2 -2
- package/es/point/models/normal.js +54 -30
- package/es/point/models/radar.js +63 -38
- package/es/point/models/simplePoint.js +62 -38
- package/es/point/models/text.js +296 -199
- package/es/point/shape/extrude.js +13 -4
- package/es/polygon/index.js +41 -11
- package/es/polygon/models/extrude.js +135 -87
- package/es/polygon/models/fill.js +79 -50
- package/es/polygon/models/index.js +2 -3
- package/es/polygon/models/ocean.js +76 -42
- package/es/polygon/models/water.js +71 -37
- package/es/raster/buffers/triangulation.js +4 -2
- package/es/raster/index.js +32 -9
- package/es/raster/models/raster.js +116 -80
- package/es/raster/models/rasterRgb.js +127 -84
- package/es/raster/models/rasterTerrainRgb.js +84 -56
- package/es/tile/interaction/getRasterData.js +20 -14
- package/es/tile/interaction/utils.js +9 -7
- package/es/tile/manager/base.js +96 -63
- package/es/tile/service/TileLayerService.js +55 -33
- package/es/tile/service/TilePickService.js +40 -26
- package/es/tile/service/TileSourceService.js +7 -3
- package/es/tile/tileFactory/DebugTile.js +46 -29
- package/es/tile/tileFactory/ImageTile.js +38 -20
- package/es/tile/tileFactory/MaskTile.js +43 -22
- package/es/tile/tileFactory/RasterRGBTile.js +42 -22
- package/es/tile/tileFactory/RasterTerrainRGBTile.js +38 -20
- package/es/tile/tileFactory/RasterTile.js +53 -30
- package/es/tile/tileFactory/Tile.js +97 -63
- package/es/tile/tileFactory/VectorTile.js +68 -41
- package/es/tile/tileFactory/index.js +11 -0
- package/es/tile/tileFactory/layers/TileDebugLayer.js +27 -6
- package/es/tile/tileFactory/util.js +3 -0
- package/es/tile/tileLayer/BaseLayer.js +146 -105
- package/es/tile/utils.js +1 -1
- package/es/utils/blend.js +2 -0
- package/es/utils/collision-index.js +16 -9
- package/es/utils/extrude_polyline.js +149 -101
- package/es/utils/grid-index.js +27 -2
- package/es/utils/identityScale.js +8 -0
- package/es/utils/layerData.js +44 -30
- package/es/utils/multiPassRender.js +13 -11
- package/es/utils/polylineNormal.js +37 -31
- package/es/utils/simpleLine.js +16 -2
- package/es/utils/stencil.js +3 -2
- package/es/utils/symbol-layout.js +53 -27
- package/es/wind/index.js +29 -9
- package/es/wind/models/utils.js +51 -26
- package/es/wind/models/wind.js +147 -101
- package/es/wind/models/windRender.js +66 -53
- package/lib/Geometry/index.js +38 -9
- package/lib/Geometry/models/billboard.js +97 -51
- package/lib/Geometry/models/index.js +5 -0
- package/lib/Geometry/models/plane.js +151 -79
- package/lib/Geometry/models/sprite.js +127 -60
- package/lib/canvas/index.js +40 -10
- package/lib/canvas/models/canvas.js +101 -41
- package/lib/canvas/models/index.js +3 -0
- package/lib/citybuliding/building.js +35 -8
- package/lib/citybuliding/models/build.js +92 -57
- package/lib/core/BaseLayer.js +469 -313
- package/lib/core/BaseModel.js +90 -51
- package/lib/core/CommonStyleAttribute.js +7 -2
- package/lib/core/LayerPickService.js +37 -21
- package/lib/core/TextureService.js +16 -0
- package/lib/core/interface.js +31 -21
- package/lib/core/schema.js +1 -0
- package/lib/core/shape/Path.js +31 -14
- package/lib/core/shape/extrude.js +62 -27
- package/lib/core/triangulation.js +177 -98
- package/lib/earth/index.js +43 -9
- package/lib/earth/models/atmosphere.js +63 -30
- package/lib/earth/models/base.js +90 -47
- package/lib/earth/models/bloomsphere.js +63 -30
- package/lib/earth/utils.js +31 -7
- package/lib/heatmap/index.js +48 -10
- package/lib/heatmap/models/grid.js +60 -28
- package/lib/heatmap/models/grid3d.js +60 -28
- package/lib/heatmap/models/heatmap.js +166 -92
- package/lib/heatmap/models/hexagon.js +60 -28
- package/lib/heatmap/models/index.js +6 -0
- package/lib/heatmap/triangulation.js +5 -0
- package/lib/image/index.js +36 -9
- package/lib/image/models/image.js +109 -66
- package/lib/image/models/index.js +3 -0
- package/lib/index.js +61 -7
- package/lib/line/index.js +40 -9
- package/lib/line/models/arc.js +124 -62
- package/lib/line/models/arc_3d.js +113 -56
- package/lib/line/models/earthArc_3d.js +115 -58
- package/lib/line/models/flow.js +70 -36
- package/lib/line/models/great_circle.js +104 -53
- package/lib/line/models/index.js +11 -0
- package/lib/line/models/line.js +146 -84
- package/lib/line/models/linearline.js +88 -43
- package/lib/line/models/simpleLine.js +79 -39
- package/lib/line/models/wall.js +103 -52
- package/lib/mask/index.js +36 -9
- package/lib/mask/models/fill.js +63 -29
- package/lib/mask/models/index.js +3 -0
- package/lib/plugins/DataMappingPlugin.js +125 -78
- package/lib/plugins/DataSourcePlugin.js +76 -45
- package/lib/plugins/FeatureScalePlugin.js +138 -67
- package/lib/plugins/LayerAnimateStylePlugin.js +10 -0
- package/lib/plugins/LayerMaskPlugin.js +17 -4
- package/lib/plugins/LayerModelPlugin.js +117 -70
- package/lib/plugins/LayerStylePlugin.js +14 -4
- package/lib/plugins/LightingPlugin.js +25 -12
- package/lib/plugins/MultiPassRendererPlugin.js +22 -11
- package/lib/plugins/PixelPickingPlugin.js +27 -12
- package/lib/plugins/RegisterStyleAttributePlugin.js +19 -5
- package/lib/plugins/ShaderUniformPlugin.js +34 -13
- package/lib/plugins/UpdateModelPlugin.js +10 -1
- package/lib/plugins/UpdateStyleAttributePlugin.js +16 -5
- package/lib/point/index.js +83 -26
- package/lib/point/models/earthExtrude.js +106 -58
- package/lib/point/models/earthFill.js +110 -52
- package/lib/point/models/extrude.js +103 -57
- package/lib/point/models/fill.js +90 -54
- package/lib/point/models/fillmage.js +107 -58
- package/lib/point/models/image.js +92 -47
- package/lib/point/models/index.js +12 -1
- package/lib/point/models/normal.js +64 -30
- package/lib/point/models/radar.js +72 -38
- package/lib/point/models/simplePoint.js +72 -38
- package/lib/point/models/text.js +305 -199
- package/lib/point/shape/extrude.js +20 -4
- package/lib/polygon/index.js +48 -11
- package/lib/polygon/models/extrude.js +146 -87
- package/lib/polygon/models/fill.js +89 -50
- package/lib/polygon/models/index.js +14 -2
- package/lib/polygon/models/ocean.js +88 -42
- package/lib/polygon/models/water.js +82 -37
- package/lib/raster/buffers/triangulation.js +7 -3
- package/lib/raster/index.js +40 -9
- package/lib/raster/models/index.js +5 -0
- package/lib/raster/models/raster.js +125 -80
- package/lib/raster/models/rasterRgb.js +139 -84
- package/lib/raster/models/rasterTerrainRgb.js +93 -56
- package/lib/tile/interaction/getRasterData.js +25 -14
- package/lib/tile/interaction/utils.js +19 -7
- package/lib/tile/manager/base.js +104 -63
- package/lib/tile/service/TileLayerService.js +60 -33
- package/lib/tile/service/TilePickService.js +48 -26
- package/lib/tile/service/TileSourceService.js +16 -2
- package/lib/tile/style/utils.js +3 -0
- package/lib/tile/tileFactory/DebugTile.js +54 -29
- package/lib/tile/tileFactory/ImageTile.js +46 -20
- package/lib/tile/tileFactory/MaskTile.js +51 -22
- package/lib/tile/tileFactory/RasterRGBTile.js +50 -22
- package/lib/tile/tileFactory/RasterTerrainRGBTile.js +46 -20
- package/lib/tile/tileFactory/RasterTile.js +63 -30
- package/lib/tile/tileFactory/Tile.js +102 -63
- package/lib/tile/tileFactory/VectorTile.js +76 -41
- package/lib/tile/tileFactory/index.js +25 -0
- package/lib/tile/tileFactory/layers/TileDebugLayer.js +32 -6
- package/lib/tile/tileFactory/util.js +9 -0
- package/lib/tile/tileLayer/BaseLayer.js +153 -105
- package/lib/tile/utils.js +5 -1
- package/lib/utils/blend.js +5 -0
- package/lib/utils/collision-index.js +25 -9
- package/lib/utils/extrude_polyline.js +181 -101
- package/lib/utils/grid-index.js +28 -2
- package/lib/utils/identityScale.js +9 -0
- package/lib/utils/layerData.js +49 -30
- package/lib/utils/multiPassRender.js +16 -11
- package/lib/utils/polylineNormal.js +66 -31
- package/lib/utils/simpleLine.js +21 -2
- package/lib/utils/stencil.js +4 -0
- package/lib/utils/symbol-layout.js +55 -27
- package/lib/wind/index.js +37 -9
- package/lib/wind/models/index.js +3 -0
- package/lib/wind/models/utils.js +62 -26
- package/lib/wind/models/wind.js +157 -101
- package/lib/wind/models/windRender.js +71 -53
- package/lib/wind/models/windShader.js +1 -0
- package/package.json +7 -7
package/lib/wind/index.js
CHANGED
|
@@ -1,63 +1,90 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports.default = void 0;
|
|
9
|
+
|
|
8
10
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
9
12
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
10
14
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
+
|
|
11
16
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
+
|
|
12
18
|
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
19
|
+
|
|
13
20
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
21
|
+
|
|
14
22
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
23
|
+
|
|
15
24
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
25
|
+
|
|
16
26
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
27
|
+
|
|
17
28
|
var _BaseLayer2 = _interopRequireDefault(require("../core/BaseLayer"));
|
|
29
|
+
|
|
18
30
|
var _models = _interopRequireDefault(require("./models"));
|
|
31
|
+
|
|
19
32
|
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); }; }
|
|
33
|
+
|
|
20
34
|
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; } }
|
|
35
|
+
|
|
21
36
|
var WindLayer = /*#__PURE__*/function (_BaseLayer) {
|
|
22
37
|
(0, _inherits2.default)(WindLayer, _BaseLayer);
|
|
38
|
+
|
|
23
39
|
var _super = _createSuper(WindLayer);
|
|
40
|
+
|
|
24
41
|
function WindLayer() {
|
|
25
42
|
var _this;
|
|
43
|
+
|
|
26
44
|
(0, _classCallCheck2.default)(this, WindLayer);
|
|
45
|
+
|
|
27
46
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
28
47
|
args[_key] = arguments[_key];
|
|
29
48
|
}
|
|
49
|
+
|
|
30
50
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
31
51
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "type", 'WindLayer');
|
|
32
52
|
return _this;
|
|
33
53
|
}
|
|
54
|
+
|
|
34
55
|
(0, _createClass2.default)(WindLayer, [{
|
|
35
56
|
key: "buildModels",
|
|
36
57
|
value: function () {
|
|
37
58
|
var _buildModels = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
38
59
|
var modelType;
|
|
39
60
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
40
|
-
while (1)
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
61
|
+
while (1) {
|
|
62
|
+
switch (_context.prev = _context.next) {
|
|
63
|
+
case 0:
|
|
64
|
+
modelType = this.getModelType();
|
|
65
|
+
this.layerModel = new _models.default[modelType](this);
|
|
66
|
+
_context.next = 4;
|
|
67
|
+
return this.initLayerModels();
|
|
68
|
+
|
|
69
|
+
case 4:
|
|
70
|
+
case "end":
|
|
71
|
+
return _context.stop();
|
|
72
|
+
}
|
|
49
73
|
}
|
|
50
74
|
}, _callee, this);
|
|
51
75
|
}));
|
|
76
|
+
|
|
52
77
|
function buildModels() {
|
|
53
78
|
return _buildModels.apply(this, arguments);
|
|
54
79
|
}
|
|
80
|
+
|
|
55
81
|
return buildModels;
|
|
56
82
|
}()
|
|
57
83
|
}, {
|
|
58
84
|
key: "renderModels",
|
|
59
85
|
value: function renderModels() {
|
|
60
86
|
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
87
|
+
|
|
61
88
|
if (this.layerModel) {
|
|
62
89
|
this.layerModel.render(options); // 独立的渲染流程
|
|
63
90
|
}
|
|
@@ -81,4 +108,5 @@ var WindLayer = /*#__PURE__*/function (_BaseLayer) {
|
|
|
81
108
|
}]);
|
|
82
109
|
return WindLayer;
|
|
83
110
|
}(_BaseLayer2.default);
|
|
111
|
+
|
|
84
112
|
exports.default = WindLayer;
|
package/lib/wind/models/index.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports.default = void 0;
|
|
9
|
+
|
|
8
10
|
var _wind = _interopRequireDefault(require("./wind"));
|
|
11
|
+
|
|
9
12
|
var WindModels = {
|
|
10
13
|
wind: _wind.default
|
|
11
14
|
};
|
package/lib/wind/models/utils.js
CHANGED
|
@@ -14,29 +14,34 @@ exports.createTexture = createTexture;
|
|
|
14
14
|
exports.initFramebuffer = initFramebuffer;
|
|
15
15
|
exports.loadShader = loadShader;
|
|
16
16
|
exports.setUnifrom = setUnifrom;
|
|
17
|
+
|
|
17
18
|
function createProgram(gl, vshader, fshader) {
|
|
18
19
|
// Create shader object
|
|
19
20
|
var vertexShader = loadShader(gl, gl.VERTEX_SHADER, vshader); // 创建顶点着色器对象
|
|
21
|
+
|
|
20
22
|
var fragmentShader = loadShader(gl, gl.FRAGMENT_SHADER, fshader); // 创建片元着色器对象
|
|
23
|
+
|
|
21
24
|
if (!vertexShader || !fragmentShader) {
|
|
22
25
|
return null;
|
|
23
|
-
}
|
|
26
|
+
} // Create a program object
|
|
27
|
+
|
|
24
28
|
|
|
25
|
-
// Create a program object
|
|
26
29
|
var program = gl.createProgram(); // 创建程序对象
|
|
30
|
+
|
|
27
31
|
if (!program) {
|
|
28
32
|
return null;
|
|
29
|
-
}
|
|
33
|
+
} // Attach the shader objects
|
|
34
|
+
|
|
30
35
|
|
|
31
|
-
// Attach the shader objects
|
|
32
36
|
gl.attachShader(program, vertexShader); // 绑定着色器对象
|
|
33
|
-
gl.attachShader(program, fragmentShader);
|
|
34
37
|
|
|
35
|
-
// Link the program object
|
|
36
|
-
gl.linkProgram(program); // 链接着色器对象
|
|
38
|
+
gl.attachShader(program, fragmentShader); // Link the program object
|
|
37
39
|
|
|
40
|
+
gl.linkProgram(program); // 链接着色器对象
|
|
38
41
|
// Check the result of linking
|
|
42
|
+
|
|
39
43
|
var linked = gl.getProgramParameter(program, gl.LINK_STATUS); // 判断着色器对象是否链接成功
|
|
44
|
+
|
|
40
45
|
if (!linked) {
|
|
41
46
|
var error = gl.getProgramInfoLog(program);
|
|
42
47
|
console.warn('Failed to link program: ' + error);
|
|
@@ -45,50 +50,59 @@ function createProgram(gl, vshader, fshader) {
|
|
|
45
50
|
gl.deleteShader(vertexShader);
|
|
46
51
|
return null;
|
|
47
52
|
}
|
|
53
|
+
|
|
48
54
|
var numAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
|
|
55
|
+
|
|
49
56
|
for (var i = 0; i < numAttributes; i++) {
|
|
50
|
-
var attribute = gl.getActiveAttrib(program, i);
|
|
51
|
-
|
|
57
|
+
var attribute = gl.getActiveAttrib(program, i); // @ts-ignore
|
|
58
|
+
|
|
52
59
|
program[attribute.name] = gl.getAttribLocation(program, attribute.name);
|
|
53
60
|
}
|
|
61
|
+
|
|
54
62
|
var numUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);
|
|
63
|
+
|
|
55
64
|
for (var i$1 = 0; i$1 < numUniforms; i$1++) {
|
|
56
|
-
var uniform = gl.getActiveUniform(program, i$1);
|
|
57
|
-
|
|
65
|
+
var uniform = gl.getActiveUniform(program, i$1); // @ts-ignore
|
|
66
|
+
|
|
58
67
|
program[uniform.name] = gl.getUniformLocation(program, uniform.name);
|
|
59
|
-
}
|
|
68
|
+
} // @ts-ignore
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
program.vertexShader = vertexShader; // @ts-ignore
|
|
60
72
|
|
|
61
|
-
// @ts-ignore
|
|
62
|
-
program.vertexShader = vertexShader;
|
|
63
|
-
// @ts-ignore
|
|
64
73
|
program.fragmentShader = fragmentShader;
|
|
65
74
|
return program;
|
|
66
75
|
}
|
|
76
|
+
|
|
67
77
|
function loadShader(gl, type, source) {
|
|
68
78
|
// Create shader object
|
|
69
79
|
var shader = gl.createShader(type); // 生成着色器对象
|
|
80
|
+
|
|
70
81
|
if (shader == null) {
|
|
71
82
|
console.warn('unable to create shader');
|
|
72
83
|
return null;
|
|
73
|
-
}
|
|
84
|
+
} // Set the shader program
|
|
74
85
|
|
|
75
|
-
// Set the shader program
|
|
76
|
-
gl.shaderSource(shader, source); // 载入着色器
|
|
77
86
|
|
|
87
|
+
gl.shaderSource(shader, source); // 载入着色器
|
|
78
88
|
// Compile the shader
|
|
79
|
-
gl.compileShader(shader); // 编译着色器代码
|
|
80
89
|
|
|
90
|
+
gl.compileShader(shader); // 编译着色器代码
|
|
81
91
|
// Check the result of compilation
|
|
92
|
+
|
|
82
93
|
var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS); // 判断着色器对象是否生成成功
|
|
83
94
|
// gl.SHADER_TYPE、gl.DELETE_STATUS、gl.COMPILE_STATUS
|
|
95
|
+
|
|
84
96
|
if (!compiled) {
|
|
85
97
|
var error = gl.getShaderInfoLog(shader);
|
|
86
98
|
console.warn('Failed to compile shader: ' + error);
|
|
87
99
|
gl.deleteShader(shader);
|
|
88
100
|
return null;
|
|
89
101
|
}
|
|
102
|
+
|
|
90
103
|
return shader;
|
|
91
104
|
}
|
|
105
|
+
|
|
92
106
|
function createTexture(gl, filter, data, width, height) {
|
|
93
107
|
var texture = gl.createTexture();
|
|
94
108
|
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
@@ -100,6 +114,7 @@ function createTexture(gl, filter, data, width, height) {
|
|
|
100
114
|
gl.bindTexture(gl.TEXTURE_2D, null);
|
|
101
115
|
return texture;
|
|
102
116
|
}
|
|
117
|
+
|
|
103
118
|
function createDataTexture(gl, filter, data) {
|
|
104
119
|
var texture = gl.createTexture();
|
|
105
120
|
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
@@ -111,22 +126,28 @@ function createDataTexture(gl, filter, data) {
|
|
|
111
126
|
gl.bindTexture(gl.TEXTURE_2D, null);
|
|
112
127
|
return texture;
|
|
113
128
|
}
|
|
129
|
+
|
|
114
130
|
function bindTexture(gl, texture, unit) {
|
|
115
131
|
gl.activeTexture(gl.TEXTURE0 + unit);
|
|
116
132
|
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
117
133
|
}
|
|
134
|
+
|
|
118
135
|
function createBuffer(gl, data) {
|
|
119
136
|
var buffer = gl.createBuffer();
|
|
120
137
|
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
|
|
121
138
|
gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW);
|
|
122
139
|
return buffer;
|
|
123
140
|
}
|
|
141
|
+
|
|
124
142
|
function bindAttriBuffer(gl, attrName, vertices, count, program) {
|
|
125
143
|
var buffer = gl.createBuffer();
|
|
144
|
+
|
|
126
145
|
if (!buffer) {
|
|
127
146
|
console.warn('failed create vertex buffer');
|
|
128
147
|
}
|
|
148
|
+
|
|
129
149
|
gl.bindBuffer(gl.ARRAY_BUFFER, buffer); // 将缓冲区对象绑定到目标
|
|
150
|
+
|
|
130
151
|
gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW); // 向缓冲区对象中写入数据
|
|
131
152
|
|
|
132
153
|
var attr = gl.getAttribLocation(program, attrName);
|
|
@@ -139,52 +160,67 @@ function bindAttriBuffer(gl, attrName, vertices, count, program) {
|
|
|
139
160
|
count: count
|
|
140
161
|
};
|
|
141
162
|
}
|
|
163
|
+
|
|
142
164
|
function bindAttriIndicesBuffer(gl, indices) {
|
|
143
165
|
var buffer = gl.createBuffer();
|
|
166
|
+
|
|
144
167
|
if (!buffer) {
|
|
145
168
|
console.warn('failed create vertex buffer');
|
|
146
169
|
} else {
|
|
147
170
|
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);
|
|
148
171
|
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW);
|
|
149
172
|
}
|
|
173
|
+
|
|
150
174
|
return buffer;
|
|
151
175
|
}
|
|
176
|
+
|
|
152
177
|
function bindUnifrom(gl, unifromName, data, program, vec) {
|
|
153
178
|
var uniform = gl.getUniformLocation(program, unifromName);
|
|
179
|
+
|
|
154
180
|
if (uniform === null || uniform < 0) {
|
|
155
181
|
console.warn('无法获取 uniform 变量的存储位置');
|
|
156
182
|
} else {
|
|
157
183
|
setUnifrom(gl, uniform, data, vec);
|
|
158
184
|
}
|
|
185
|
+
|
|
159
186
|
return uniform;
|
|
160
187
|
}
|
|
188
|
+
|
|
161
189
|
function setUnifrom(gl, location, data, vec) {
|
|
162
190
|
switch (vec) {
|
|
163
191
|
case 'float':
|
|
164
192
|
gl.uniform1f(location, data);
|
|
165
193
|
break;
|
|
194
|
+
|
|
166
195
|
case 'vec2':
|
|
167
196
|
gl.uniform2fv(location, data);
|
|
168
197
|
break;
|
|
198
|
+
|
|
169
199
|
case 'vec3':
|
|
170
200
|
gl.uniform3fv(location, data);
|
|
171
201
|
break;
|
|
202
|
+
|
|
172
203
|
case 'vec4':
|
|
173
204
|
gl.uniform4fv(location, data);
|
|
174
205
|
break;
|
|
206
|
+
|
|
175
207
|
case 'bool':
|
|
176
208
|
gl.uniform1i(location, data); // 1 - true 0 - false
|
|
209
|
+
|
|
177
210
|
break;
|
|
211
|
+
|
|
178
212
|
case 'sampler2d':
|
|
179
213
|
break;
|
|
214
|
+
|
|
180
215
|
case 'mat4':
|
|
181
216
|
gl.uniformMatrix4fv(location, false, data);
|
|
182
217
|
break;
|
|
183
218
|
}
|
|
184
219
|
}
|
|
220
|
+
|
|
185
221
|
function initFramebuffer(gl) {
|
|
186
222
|
var drawingBufferWidth = gl.drawingBufferWidth,
|
|
187
|
-
|
|
223
|
+
drawingBufferHeight = gl.drawingBufferHeight;
|
|
188
224
|
var OFFER_SCREEN_WIDTH = drawingBufferWidth;
|
|
189
225
|
var OFFER_SCREEN_HEIGHT = drawingBufferHeight;
|
|
190
226
|
var FRAMEBUFFER = gl.createFramebuffer();
|
|
@@ -193,12 +229,12 @@ function initFramebuffer(gl) {
|
|
|
193
229
|
gl.bindRenderbuffer(gl.RENDERBUFFER, depthbuffer);
|
|
194
230
|
gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, OFFER_SCREEN_WIDTH, OFFER_SCREEN_HEIGHT);
|
|
195
231
|
gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, depthbuffer);
|
|
196
|
-
var texture = gl.createTexture();
|
|
197
|
-
|
|
198
|
-
FRAMEBUFFER.texture = texture;
|
|
199
|
-
|
|
200
|
-
FRAMEBUFFER.width = OFFER_SCREEN_WIDTH;
|
|
201
|
-
|
|
232
|
+
var texture = gl.createTexture(); // @ts-ignore
|
|
233
|
+
|
|
234
|
+
FRAMEBUFFER.texture = texture; // @ts-ignore
|
|
235
|
+
|
|
236
|
+
FRAMEBUFFER.width = OFFER_SCREEN_WIDTH; // @ts-ignore
|
|
237
|
+
|
|
202
238
|
FRAMEBUFFER.height = OFFER_SCREEN_HEIGHT;
|
|
203
239
|
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
204
240
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
|