@deck.gl/geo-layers 9.0.0-alpha.6 → 9.0.0-beta.1
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/dist.dev.js +16521 -2329
- package/dist/es5/index.js +8 -0
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/mesh-layer/mesh-layer-vertex.glsl.js +1 -1
- package/dist/es5/mesh-layer/mesh-layer.js +217 -0
- package/dist/es5/mesh-layer/mesh-layer.js.map +1 -0
- package/dist/es5/tile-3d-layer/tile-3d-layer.js +511 -0
- package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -0
- package/dist/es5/trips-layer/trips-layer.js +2 -2
- package/dist/es5/trips-layer/trips-layer.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js +5 -1
- package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js.map +1 -1
- package/dist/esm/mesh-layer/mesh-layer.js +178 -0
- package/dist/esm/mesh-layer/mesh-layer.js.map +1 -0
- package/dist/esm/tile-3d-layer/tile-3d-layer.js +438 -0
- package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -0
- package/dist/esm/trips-layer/trips-layer.js +4 -4
- package/dist/esm/trips-layer/trips-layer.js.map +1 -1
- package/dist.min.js +752 -33
- package/package.json +14 -14
- package/src/index.ts +2 -4
- package/src/mesh-layer/mesh-layer-vertex.glsl.ts +5 -1
- package/{dist/es5/mesh-layer/mesh-layer.ts.disabled → src/mesh-layer/mesh-layer.ts} +37 -29
- package/src/tile-3d-layer/{tile-3d-layer.ts.disabled → tile-3d-layer.ts} +2 -5
- package/src/trips-layer/trips-layer.ts +4 -4
- package/typed/geo-cell-layer/GeoCellLayer.d.ts +1 -1
- package/typed/geo-cell-layer/GeoCellLayer.d.ts.map +1 -1
- package/typed/geohash-layer/geohash-layer.d.ts +1 -1
- package/typed/geohash-layer/geohash-layer.d.ts.map +1 -1
- package/typed/great-circle-layer/great-circle-layer.d.ts +2 -2
- package/typed/great-circle-layer/great-circle-layer.d.ts.map +1 -1
- package/typed/h3-layers/h3-cluster-layer.d.ts +2 -2
- package/typed/h3-layers/h3-cluster-layer.d.ts.map +1 -1
- package/typed/h3-layers/h3-hexagon-layer.d.ts +2 -2
- package/typed/h3-layers/h3-hexagon-layer.d.ts.map +1 -1
- package/typed/index.d.ts +2 -0
- package/typed/index.d.ts.map +1 -1
- package/typed/mesh-layer/mesh-layer-vertex.glsl.d.ts +1 -1
- package/typed/mesh-layer/mesh-layer-vertex.glsl.d.ts.map +1 -1
- package/typed/mesh-layer/mesh-layer.d.ts +38 -0
- package/typed/mesh-layer/mesh-layer.d.ts.map +1 -0
- package/typed/mvt-layer/mvt-layer.d.ts +4 -4
- package/typed/mvt-layer/mvt-layer.d.ts.map +1 -1
- package/typed/quadkey-layer/quadkey-layer.d.ts +2 -2
- package/typed/quadkey-layer/quadkey-layer.d.ts.map +1 -1
- package/typed/s2-layer/s2-layer.d.ts +2 -2
- package/typed/s2-layer/s2-layer.d.ts.map +1 -1
- package/typed/terrain-layer/terrain-layer.d.ts +5 -5
- package/typed/terrain-layer/terrain-layer.d.ts.map +1 -1
- package/typed/tile-3d-layer/tile-3d-layer.d.ts +62 -0
- package/typed/tile-3d-layer/tile-3d-layer.d.ts.map +1 -0
- package/typed/tile-layer/tile-layer.d.ts +3 -3
- package/typed/tile-layer/tile-layer.d.ts.map +1 -1
- package/typed/tileset-2d/tile-2d-header.d.ts +1 -1
- package/typed/tileset-2d/tile-2d-header.d.ts.map +1 -1
- package/typed/tileset-2d/tileset-2d.d.ts +3 -3
- package/typed/tileset-2d/tileset-2d.d.ts.map +1 -1
- package/typed/tileset-2d/types.d.ts +7 -7
- package/typed/tileset-2d/types.d.ts.map +1 -1
- package/typed/tileset-2d/utils.d.ts +1 -1
- package/typed/tileset-2d/utils.d.ts.map +1 -1
- package/typed/trips-layer/trips-layer.d.ts +2 -2
- package/typed/trips-layer/trips-layer.d.ts.map +1 -1
- package/typed/wms-layer/wms-layer.d.ts +2 -2
- package/typed/wms-layer/wms-layer.d.ts.map +1 -1
- package/dist/es5/tile-3d-layer/tile-3d-layer.ts.disabled +0 -435
- package/dist/esm/mesh-layer/mesh-layer.ts.disabled +0 -176
- package/dist/esm/tile-3d-layer/tile-3d-layer.ts.disabled +0 -435
- package/src/mesh-layer/mesh-layer.ts.disabled +0 -176
package/dist/es5/index.js
CHANGED
|
@@ -53,6 +53,12 @@ Object.defineProperty(exports, "H3HexagonLayer", {
|
|
|
53
53
|
return _h3HexagonLayer.default;
|
|
54
54
|
}
|
|
55
55
|
});
|
|
56
|
+
Object.defineProperty(exports, "Tile3DLayer", {
|
|
57
|
+
enumerable: true,
|
|
58
|
+
get: function get() {
|
|
59
|
+
return _tile3dLayer.default;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
56
62
|
Object.defineProperty(exports, "TerrainLayer", {
|
|
57
63
|
enumerable: true,
|
|
58
64
|
get: function get() {
|
|
@@ -112,6 +118,8 @@ var _h3ClusterLayer = _interopRequireDefault(require("./h3-layers/h3-cluster-lay
|
|
|
112
118
|
|
|
113
119
|
var _h3HexagonLayer = _interopRequireDefault(require("./h3-layers/h3-hexagon-layer"));
|
|
114
120
|
|
|
121
|
+
var _tile3dLayer = _interopRequireDefault(require("./tile-3d-layer/tile-3d-layer"));
|
|
122
|
+
|
|
115
123
|
var _terrainLayer = _interopRequireDefault(require("./terrain-layer/terrain-layer"));
|
|
116
124
|
|
|
117
125
|
var _mvtLayer = _interopRequireDefault(require("./mvt-layer/mvt-layer"));
|
package/dist/es5/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAqBA","sourcesContent":["// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n/* eslint-disable max-len */\n\nexport {WMSLayer as _WMSLayer} from './wms-layer/wms-layer';\nexport {default as GreatCircleLayer} from './great-circle-layer/great-circle-layer';\nexport {default as S2Layer} from './s2-layer/s2-layer';\nexport {default as QuadkeyLayer} from './quadkey-layer/quadkey-layer';\nexport {default as TileLayer} from './tile-layer/tile-layer';\nexport {default as TripsLayer} from './trips-layer/trips-layer';\nexport {default as H3ClusterLayer} from './h3-layers/h3-cluster-layer';\nexport {default as H3HexagonLayer} from './h3-layers/h3-hexagon-layer';\nexport {default as Tile3DLayer} from './tile-3d-layer/tile-3d-layer';\nexport {default as TerrainLayer} from './terrain-layer/terrain-layer';\nexport {default as MVTLayer} from './mvt-layer/mvt-layer';\nexport {default as GeohashLayer} from './geohash-layer/geohash-layer';\n\nexport {default as _GeoCellLayer} from './geo-cell-layer/GeoCellLayer';\n\n// Types\nexport type {WMSLayerProps} from './wms-layer/wms-layer';\nexport type {H3ClusterLayerProps} from './h3-layers/h3-cluster-layer';\nexport type {H3HexagonLayerProps} from './h3-layers/h3-hexagon-layer';\nexport type {GreatCircleLayerProps} from './great-circle-layer/great-circle-layer';\nexport type {S2LayerProps} from './s2-layer/s2-layer';\nexport type {TileLayerProps} from './tile-layer/tile-layer';\nexport type {TripsLayerProps} from './trips-layer/trips-layer';\nexport type {QuadkeyLayerProps} from './quadkey-layer/quadkey-layer';\nexport type {TerrainLayerProps} from './terrain-layer/terrain-layer';\nexport type {Tile3DLayerProps} from './tile-3d-layer/tile-3d-layer';\nexport type {MVTLayerProps} from './mvt-layer/mvt-layer';\nexport type {GeoCellLayerProps as _GeoCellLayerProps} from './geo-cell-layer/GeoCellLayer';\n\n// Tileset2D\n\nexport type {GeoBoundingBox, NonGeoBoundingBox} from './tileset-2d';\nexport type {TileLoadProps as _TileLoadProps} from './tileset-2d';\n\nexport {getURLFromTemplate as _getURLFromTemplate} from './tileset-2d';\nexport {Tileset2D as _Tileset2D} from './tileset-2d';\nexport {Tile2DHeader as _Tile2DHeader} from './tileset-2d';\n"],"file":"index.js"}
|
|
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _default = "#version 300 es\n#define SHADER_NAME simple-mesh-layer-vs\nuniform float sizeScale;\nuniform bool composeModelMatrix;\nuniform bool pickFeatureIds;\nin vec3 positions;\nin vec3 normals;\nin vec3 colors;\nin vec2 texCoords;\nin vec4 uvRegions;\nin vec3 featureIdsPickingColors;\nin vec4 instanceColors;\nin vec3 instancePickingColors;\nin
|
|
7
|
+
var _default = "#version 300 es\n#define SHADER_NAME simple-mesh-layer-vs\nuniform float sizeScale;\nuniform bool composeModelMatrix;\nuniform bool pickFeatureIds;\nin vec3 positions;\nin vec3 normals;\nin vec3 colors;\nin vec2 texCoords;\nin vec4 uvRegions;\nin vec3 featureIdsPickingColors;\nin vec4 instanceColors;\nin vec3 instancePickingColors;\nin vec3 instanceModelMatrixCol0;\nin vec3 instanceModelMatrixCol1;\nin vec3 instanceModelMatrixCol2;\nout vec2 vTexCoord;\nout vec3 cameraPosition;\nout vec3 normals_commonspace;\nout vec4 position_commonspace;\nout vec4 vColor;\n\nvec2 applyUVRegion(vec2 uv) {\n #ifdef HAS_UV_REGIONS\n return fract(uv) * (uvRegions.zw - uvRegions.xy) + uvRegions.xy;\n #else\n return uv;\n #endif\n}\n\nvoid main(void) {\n vec2 uv = applyUVRegion(texCoords);\n geometry.uv = uv;\n\n if (pickFeatureIds) {\n geometry.pickingColor = featureIdsPickingColors;\n } else {\n geometry.pickingColor = instancePickingColors;\n }\n\n mat3 instanceModelMatrix = mat3(instanceModelMatrixCol0, instanceModelMatrixCol1, instanceModelMatrixCol2);\n\n vTexCoord = uv;\n cameraPosition = project_uCameraPosition;\n vColor = vec4(colors * instanceColors.rgb, instanceColors.a);\n\n vec3 pos = (instanceModelMatrix * positions) * sizeScale;\n vec3 projectedPosition = project_position(positions);\n position_commonspace = vec4(projectedPosition, 1.0);\n gl_Position = project_common_position_to_clipspace(position_commonspace);\n\n geometry.position = position_commonspace;\n normals_commonspace = project_normal(instanceModelMatrix * normals);\n geometry.normal = normals_commonspace;\n\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n #ifdef MODULE_PBR\n pbr_vPosition = geometry.position.xyz;\n #ifdef HAS_NORMALS\n pbr_vNormal = geometry.normal;\n #endif\n\n #ifdef HAS_UV\n pbr_vUV = uv;\n #else\n pbr_vUV = vec2(0., 0.);\n #endif\n geometry.uv = pbr_vUV;\n #endif\n\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n";
|
|
8
8
|
exports.default = _default;
|
|
9
9
|
//# sourceMappingURL=mesh-layer-vertex.glsl.js.map
|
|
@@ -0,0 +1,217 @@
|
|
|
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 _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
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 _gltf = require("@luma.gl/gltf");
|
|
23
|
+
|
|
24
|
+
var _shadertools = require("@luma.gl/shadertools");
|
|
25
|
+
|
|
26
|
+
var _engine = require("@luma.gl/engine");
|
|
27
|
+
|
|
28
|
+
var _constants = require("@luma.gl/constants");
|
|
29
|
+
|
|
30
|
+
var _meshLayers = require("@deck.gl/mesh-layers");
|
|
31
|
+
|
|
32
|
+
var _meshLayerVertex = _interopRequireDefault(require("./mesh-layer-vertex.glsl"));
|
|
33
|
+
|
|
34
|
+
var _meshLayerFragment = _interopRequireDefault(require("./mesh-layer-fragment.glsl"));
|
|
35
|
+
|
|
36
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
37
|
+
|
|
38
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
39
|
+
|
|
40
|
+
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); }; }
|
|
41
|
+
|
|
42
|
+
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; } }
|
|
43
|
+
|
|
44
|
+
function validateGeometryAttributes(attributes) {
|
|
45
|
+
var positionAttribute = attributes.positions || attributes.POSITION;
|
|
46
|
+
var vertexCount = positionAttribute.value.length / positionAttribute.size;
|
|
47
|
+
var hasColorAttribute = attributes.COLOR_0 || attributes.colors;
|
|
48
|
+
|
|
49
|
+
if (!hasColorAttribute) {
|
|
50
|
+
attributes.colors = {
|
|
51
|
+
size: 4,
|
|
52
|
+
value: new Uint8Array(vertexCount * 4).fill(255),
|
|
53
|
+
normalized: true
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
var defaultProps = {
|
|
59
|
+
pbrMaterial: {
|
|
60
|
+
type: 'object',
|
|
61
|
+
value: null
|
|
62
|
+
},
|
|
63
|
+
featureIds: {
|
|
64
|
+
type: 'array',
|
|
65
|
+
value: null,
|
|
66
|
+
optional: true
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
var MeshLayer = function (_SimpleMeshLayer) {
|
|
71
|
+
(0, _inherits2.default)(MeshLayer, _SimpleMeshLayer);
|
|
72
|
+
|
|
73
|
+
var _super = _createSuper(MeshLayer);
|
|
74
|
+
|
|
75
|
+
function MeshLayer() {
|
|
76
|
+
(0, _classCallCheck2.default)(this, MeshLayer);
|
|
77
|
+
return _super.apply(this, arguments);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
var _proto = MeshLayer.prototype;
|
|
81
|
+
|
|
82
|
+
_proto.getShaders = function getShaders() {
|
|
83
|
+
var shaders = (0, _get2.default)((0, _getPrototypeOf2.default)(MeshLayer.prototype), "getShaders", this).call(this);
|
|
84
|
+
var modules = shaders.modules;
|
|
85
|
+
modules.push(_shadertools.pbr);
|
|
86
|
+
return _objectSpread(_objectSpread({}, shaders), {}, {
|
|
87
|
+
vs: _meshLayerVertex.default,
|
|
88
|
+
fs: _meshLayerFragment.default
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
_proto.initializeState = function initializeState() {
|
|
93
|
+
var featureIds = this.props.featureIds;
|
|
94
|
+
(0, _get2.default)((0, _getPrototypeOf2.default)(MeshLayer.prototype), "initializeState", this).call(this);
|
|
95
|
+
var attributeManager = this.getAttributeManager();
|
|
96
|
+
|
|
97
|
+
if (featureIds) {
|
|
98
|
+
attributeManager.add({
|
|
99
|
+
featureIdsPickingColors: {
|
|
100
|
+
type: 5121,
|
|
101
|
+
size: 3,
|
|
102
|
+
noAlloc: true,
|
|
103
|
+
update: this.calculateFeatureIdsPickingColors
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
_proto.updateState = function updateState(params) {
|
|
110
|
+
(0, _get2.default)((0, _getPrototypeOf2.default)(MeshLayer.prototype), "updateState", this).call(this, params);
|
|
111
|
+
var props = params.props,
|
|
112
|
+
oldProps = params.oldProps;
|
|
113
|
+
|
|
114
|
+
if (props.pbrMaterial !== oldProps.pbrMaterial) {
|
|
115
|
+
this.updatePbrMaterialUniforms(props.pbrMaterial);
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
_proto.draw = function draw(opts) {
|
|
120
|
+
var featureIds = this.props.featureIds;
|
|
121
|
+
|
|
122
|
+
if (!this.state.model) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
this.state.model.setUniforms({
|
|
127
|
+
u_Camera: this.state.model.uniforms.project_uCameraPosition,
|
|
128
|
+
pickFeatureIds: Boolean(featureIds)
|
|
129
|
+
});
|
|
130
|
+
(0, _get2.default)((0, _getPrototypeOf2.default)(MeshLayer.prototype), "draw", this).call(this, opts);
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
_proto.getModel = function getModel(mesh) {
|
|
134
|
+
var _this$props = this.props,
|
|
135
|
+
id = _this$props.id,
|
|
136
|
+
pbrMaterial = _this$props.pbrMaterial;
|
|
137
|
+
var parsedPBRMaterial = this.parseMaterial(pbrMaterial, mesh);
|
|
138
|
+
this.setState({
|
|
139
|
+
parsedPBRMaterial: parsedPBRMaterial
|
|
140
|
+
});
|
|
141
|
+
var shaders = this.getShaders();
|
|
142
|
+
validateGeometryAttributes(mesh.attributes);
|
|
143
|
+
var model = new _engine.Model(this.context.device, _objectSpread(_objectSpread({}, this.getShaders()), {}, {
|
|
144
|
+
id: id,
|
|
145
|
+
geometry: mesh,
|
|
146
|
+
bufferLayout: this.getAttributeManager().getBufferLayouts(),
|
|
147
|
+
defines: _objectSpread(_objectSpread(_objectSpread({}, shaders.defines), parsedPBRMaterial === null || parsedPBRMaterial === void 0 ? void 0 : parsedPBRMaterial.defines), {}, {
|
|
148
|
+
HAS_UV_REGIONS: mesh.attributes.uvRegions ? 1 : 0
|
|
149
|
+
}),
|
|
150
|
+
parameters: parsedPBRMaterial === null || parsedPBRMaterial === void 0 ? void 0 : parsedPBRMaterial.parameters,
|
|
151
|
+
isInstanced: true
|
|
152
|
+
}));
|
|
153
|
+
return model;
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
_proto.updatePbrMaterialUniforms = function updatePbrMaterialUniforms(pbrMaterial) {
|
|
157
|
+
var model = this.state.model;
|
|
158
|
+
|
|
159
|
+
if (model) {
|
|
160
|
+
var mesh = this.props.mesh;
|
|
161
|
+
var parsedPBRMaterial = this.parseMaterial(pbrMaterial, mesh);
|
|
162
|
+
this.setState({
|
|
163
|
+
parsedPBRMaterial: parsedPBRMaterial
|
|
164
|
+
});
|
|
165
|
+
model.setBindings(parsedPBRMaterial.bindings);
|
|
166
|
+
model.setUniforms(parsedPBRMaterial.uniforms);
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
_proto.parseMaterial = function parseMaterial(pbrMaterial, mesh) {
|
|
171
|
+
var unlit = Boolean(pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorTexture);
|
|
172
|
+
return (0, _gltf.parsePBRMaterial)(this.context.device, _objectSpread({
|
|
173
|
+
unlit: unlit
|
|
174
|
+
}, pbrMaterial), {
|
|
175
|
+
NORMAL: mesh.attributes.normals,
|
|
176
|
+
TEXCOORD_0: mesh.attributes.texCoords
|
|
177
|
+
}, {
|
|
178
|
+
pbrDebug: false,
|
|
179
|
+
lights: true,
|
|
180
|
+
useTangents: false
|
|
181
|
+
});
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
_proto.calculateFeatureIdsPickingColors = function calculateFeatureIdsPickingColors(attribute) {
|
|
185
|
+
var featureIds = this.props.featureIds;
|
|
186
|
+
var value = new Uint8ClampedArray(featureIds.length * attribute.size);
|
|
187
|
+
var pickingColor = [];
|
|
188
|
+
|
|
189
|
+
for (var index = 0; index < featureIds.length; index++) {
|
|
190
|
+
this.encodePickingColor(featureIds[index], pickingColor);
|
|
191
|
+
value[index * 3] = pickingColor[0];
|
|
192
|
+
value[index * 3 + 1] = pickingColor[1];
|
|
193
|
+
value[index * 3 + 2] = pickingColor[2];
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
attribute.value = value;
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
_proto.finalizeState = function finalizeState(context) {
|
|
200
|
+
var _this$state$parsedPBR;
|
|
201
|
+
|
|
202
|
+
(0, _get2.default)((0, _getPrototypeOf2.default)(MeshLayer.prototype), "finalizeState", this).call(this, context);
|
|
203
|
+
(_this$state$parsedPBR = this.state.parsedPBRMaterial) === null || _this$state$parsedPBR === void 0 ? void 0 : _this$state$parsedPBR.generatedTextures.forEach(function (texture) {
|
|
204
|
+
return texture.destroy();
|
|
205
|
+
});
|
|
206
|
+
this.setState({
|
|
207
|
+
parsedPBRMaterial: null
|
|
208
|
+
});
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
return MeshLayer;
|
|
212
|
+
}(_meshLayers.SimpleMeshLayer);
|
|
213
|
+
|
|
214
|
+
exports.default = MeshLayer;
|
|
215
|
+
MeshLayer.layerName = 'MeshLayer';
|
|
216
|
+
MeshLayer.defaultProps = defaultProps;
|
|
217
|
+
//# sourceMappingURL=mesh-layer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/mesh-layer/mesh-layer.ts"],"names":["validateGeometryAttributes","attributes","positionAttribute","positions","POSITION","vertexCount","value","length","size","hasColorAttribute","COLOR_0","colors","Uint8Array","fill","normalized","defaultProps","pbrMaterial","type","featureIds","optional","MeshLayer","getShaders","shaders","modules","push","pbr","vs","fs","initializeState","props","attributeManager","getAttributeManager","add","featureIdsPickingColors","noAlloc","update","calculateFeatureIdsPickingColors","updateState","params","oldProps","updatePbrMaterialUniforms","draw","opts","state","model","setUniforms","u_Camera","uniforms","project_uCameraPosition","pickFeatureIds","Boolean","getModel","mesh","id","parsedPBRMaterial","parseMaterial","setState","Model","context","device","geometry","bufferLayout","getBufferLayouts","defines","HAS_UV_REGIONS","uvRegions","parameters","isInstanced","setBindings","bindings","unlit","pbrMetallicRoughness","baseColorTexture","NORMAL","normals","TEXCOORD_0","texCoords","pbrDebug","lights","useTangents","attribute","Uint8ClampedArray","pickingColor","index","encodePickingColor","finalizeState","generatedTextures","forEach","texture","destroy","SimpleMeshLayer","layerName"],"mappings":"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","sourcesContent":["import type {NumericArray} from '@math.gl/core';\nimport {parsePBRMaterial, ParsedPBRMaterial} from '@luma.gl/gltf';\nimport {pbr} from '@luma.gl/shadertools';\nimport {Model} from '@luma.gl/engine';\nimport {GL} from '@luma.gl/constants';\nimport type {MeshAttribute, MeshAttributes} from '@loaders.gl/schema';\nimport type {UpdateParameters, DefaultProps, LayerContext} from '@deck.gl/core';\nimport {SimpleMeshLayer, SimpleMeshLayerProps} from '@deck.gl/mesh-layers';\n\nimport vs from './mesh-layer-vertex.glsl';\nimport fs from './mesh-layer-fragment.glsl';\n\nexport type Mesh = {\n attributes: MeshAttributes;\n indices?: MeshAttribute;\n};\n\nfunction validateGeometryAttributes(attributes: MeshAttributes) {\n const positionAttribute = attributes.positions || attributes.POSITION;\n const vertexCount = positionAttribute.value.length / positionAttribute.size;\n const hasColorAttribute = attributes.COLOR_0 || attributes.colors;\n if (!hasColorAttribute) {\n attributes.colors = {\n size: 4,\n value: new Uint8Array(vertexCount * 4).fill(255),\n normalized: true\n };\n }\n}\n\nconst defaultProps: DefaultProps<MeshLayerProps> = {\n pbrMaterial: {type: 'object', value: null},\n featureIds: {type: 'array', value: null, optional: true}\n};\n\n/** All properties supported by MeshLayer. */\nexport type MeshLayerProps<DataT = unknown> = _MeshLayerProps & SimpleMeshLayerProps<DataT>;\n\n/** Properties added by MeshLayer. */\ntype _MeshLayerProps = {\n /**\n * PBR material object. _lighting must be pbr for this to work\n */\n pbrMaterial?: any; // TODO add type when converting Tile3DLayer\n\n /**\n * List of feature ids.\n */\n featureIds?: NumericArray | null;\n};\n\nexport default class MeshLayer<DataT = any, ExtraProps extends {} = {}> extends SimpleMeshLayer<\n DataT,\n Required<_MeshLayerProps> & ExtraProps\n> {\n static layerName = 'MeshLayer';\n static defaultProps = defaultProps;\n\n getShaders() {\n const shaders = super.getShaders();\n const modules = shaders.modules;\n modules.push(pbr);\n return {...shaders, vs, fs};\n }\n\n initializeState() {\n const {featureIds} = this.props;\n super.initializeState();\n\n const attributeManager = this.getAttributeManager();\n if (featureIds) {\n // attributeManager is always defined in a primitive layer\n attributeManager!.add({\n featureIdsPickingColors: {\n type: GL.UNSIGNED_BYTE,\n size: 3,\n noAlloc: true,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n update: this.calculateFeatureIdsPickingColors\n }\n });\n }\n }\n\n updateState(params: UpdateParameters<this>) {\n super.updateState(params);\n\n const {props, oldProps} = params;\n if (props.pbrMaterial !== oldProps.pbrMaterial) {\n this.updatePbrMaterialUniforms(props.pbrMaterial);\n }\n }\n\n draw(opts) {\n const {featureIds} = this.props;\n if (!this.state.model) {\n return;\n }\n this.state.model.setUniforms({\n // Needed for PBR (TODO: find better way to get it)\n // eslint-disable-next-line camelcase\n u_Camera: this.state.model.uniforms.project_uCameraPosition,\n pickFeatureIds: Boolean(featureIds)\n });\n\n super.draw(opts);\n }\n\n protected getModel(mesh: Mesh): Model {\n const {id, pbrMaterial} = this.props;\n const parsedPBRMaterial = this.parseMaterial(pbrMaterial, mesh);\n // Keep material to explicitly remove textures\n this.setState({parsedPBRMaterial});\n const shaders = this.getShaders();\n validateGeometryAttributes(mesh.attributes);\n const model = new Model(this.context.device, {\n ...this.getShaders(),\n id,\n geometry: mesh,\n bufferLayout: this.getAttributeManager()!.getBufferLayouts(),\n defines: {\n ...shaders.defines,\n ...parsedPBRMaterial?.defines,\n HAS_UV_REGIONS: mesh.attributes.uvRegions ? 1 : 0\n },\n parameters: parsedPBRMaterial?.parameters,\n isInstanced: true\n });\n\n return model;\n }\n\n updatePbrMaterialUniforms(pbrMaterial) {\n const {model} = this.state;\n if (model) {\n const {mesh} = this.props;\n const parsedPBRMaterial = this.parseMaterial(pbrMaterial, mesh as Mesh);\n // Keep material to explicitly remove textures\n this.setState({parsedPBRMaterial});\n model.setBindings(parsedPBRMaterial.bindings);\n model.setUniforms(parsedPBRMaterial.uniforms);\n }\n }\n\n parseMaterial(pbrMaterial, mesh: Mesh): ParsedPBRMaterial {\n const unlit = Boolean(\n pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorTexture\n );\n\n return parsePBRMaterial(\n this.context.device,\n {unlit, ...pbrMaterial},\n {NORMAL: mesh.attributes.normals, TEXCOORD_0: mesh.attributes.texCoords},\n {\n pbrDebug: false,\n lights: true,\n useTangents: false\n }\n );\n }\n\n calculateFeatureIdsPickingColors(attribute) {\n // This updater is only called if featureIds is not null\n const featureIds = this.props.featureIds!;\n const value = new Uint8ClampedArray(featureIds.length * attribute.size);\n\n const pickingColor = [];\n for (let index = 0; index < featureIds.length; index++) {\n this.encodePickingColor(featureIds[index], pickingColor);\n\n value[index * 3] = pickingColor[0];\n value[index * 3 + 1] = pickingColor[1];\n value[index * 3 + 2] = pickingColor[2];\n }\n\n attribute.value = value;\n }\n\n finalizeState(context: LayerContext) {\n super.finalizeState(context);\n this.state.parsedPBRMaterial?.generatedTextures.forEach(texture => texture.destroy());\n this.setState({parsedPBRMaterial: null});\n }\n}\n"],"file":"mesh-layer.js"}
|