@webviz/subsurface-viewer 1.12.4 → 1.13.0
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/layers/axes/box.fs.glsl.d.ts +1 -1
- package/dist/layers/axes/box.fs.glsl.js +0 -2
- package/dist/layers/axes/box.fs.glsl.js.map +1 -1
- package/dist/layers/axes/box.vs.glsl.d.ts +1 -1
- package/dist/layers/axes/box.vs.glsl.js +0 -2
- package/dist/layers/axes/box.vs.glsl.js.map +1 -1
- package/dist/layers/axes/boxLayer.js +2 -1
- package/dist/layers/axes/boxLayer.js.map +1 -1
- package/dist/layers/axes2d/axes2DLayer.js +4 -3
- package/dist/layers/axes2d/axes2DLayer.js.map +1 -1
- package/dist/layers/axes2d/label.fs.glsl.d.ts +1 -1
- package/dist/layers/axes2d/label.fs.glsl.js +0 -2
- package/dist/layers/axes2d/label.fs.glsl.js.map +1 -1
- package/dist/layers/axes2d/label.vs.glsl.d.ts +1 -1
- package/dist/layers/axes2d/label.vs.glsl.js +0 -2
- package/dist/layers/axes2d/label.vs.glsl.js.map +1 -1
- package/dist/layers/axes2d/line.fs.glsl.d.ts +1 -1
- package/dist/layers/axes2d/line.fs.glsl.js +0 -2
- package/dist/layers/axes2d/line.fs.glsl.js.map +1 -1
- package/dist/layers/axes2d/line.vs.glsl.d.ts +1 -1
- package/dist/layers/axes2d/line.vs.glsl.js +0 -2
- package/dist/layers/axes2d/line.vs.glsl.js.map +1 -1
- package/dist/layers/colormap/colormap.fs.glsl.d.ts +1 -1
- package/dist/layers/colormap/colormap.fs.glsl.js +0 -2
- package/dist/layers/colormap/colormap.fs.glsl.js.map +1 -1
- package/dist/layers/colormap/colormapLayer.js +7 -1
- package/dist/layers/colormap/colormapLayer.js.map +1 -1
- package/dist/layers/gpglLayers/gpglValueMappedSurfaceLayer.d.ts +120 -0
- package/dist/layers/gpglLayers/gpglValueMappedSurfaceLayer.js +495 -0
- package/dist/layers/gpglLayers/gpglValueMappedSurfaceLayer.js.map +1 -0
- package/dist/layers/gpglLayers/texTriangle.fs.glsl.d.ts +2 -0
- package/dist/layers/gpglLayers/texTriangle.fs.glsl.js +59 -0
- package/dist/layers/gpglLayers/texTriangle.fs.glsl.js.map +1 -0
- package/dist/layers/gpglLayers/texTriangle.vs.glsl.d.ts +2 -0
- package/dist/layers/gpglLayers/texTriangle.vs.glsl.js +45 -0
- package/dist/layers/gpglLayers/texTriangle.vs.glsl.js.map +1 -0
- package/dist/layers/gpglLayers/triangle.fs.glsl.d.ts +2 -0
- package/dist/layers/gpglLayers/triangle.fs.glsl.js +29 -0
- package/dist/layers/gpglLayers/triangle.fs.glsl.js.map +1 -0
- package/dist/layers/gpglLayers/triangle.vs.glsl.d.ts +2 -0
- package/dist/layers/gpglLayers/triangle.vs.glsl.js +45 -0
- package/dist/layers/gpglLayers/triangle.vs.glsl.js.map +1 -0
- package/dist/layers/gpglLayers/triangleLine.fs.glsl.d.ts +2 -0
- package/dist/layers/gpglLayers/triangleLine.fs.glsl.js +21 -0
- package/dist/layers/gpglLayers/triangleLine.fs.glsl.js.map +1 -0
- package/dist/layers/gpglLayers/triangleLine.vs.glsl.d.ts +2 -0
- package/dist/layers/gpglLayers/triangleLine.vs.glsl.js +30 -0
- package/dist/layers/gpglLayers/triangleLine.vs.glsl.js.map +1 -0
- package/dist/layers/gpglLayers/typeDefs.d.ts +7 -1
- package/dist/layers/gpglLayers/typeDefs.js.map +1 -1
- package/dist/layers/grid3d/grid3dLayer.d.ts +1 -1
- package/dist/layers/grid3d/grid3dLayer.js +1 -1
- package/dist/layers/grid3d/grid3dLayer.js.map +1 -1
- package/dist/layers/grid3d/line.fs.glsl.d.ts +1 -1
- package/dist/layers/grid3d/line.fs.glsl.js +0 -2
- package/dist/layers/grid3d/line.fs.glsl.js.map +1 -1
- package/dist/layers/grid3d/line.vs.glsl.d.ts +1 -1
- package/dist/layers/grid3d/line.vs.glsl.js +0 -2
- package/dist/layers/grid3d/line.vs.glsl.js.map +1 -1
- package/dist/layers/grid3d/privateGrid3dLayer.js +3 -1
- package/dist/layers/grid3d/privateGrid3dLayer.js.map +1 -1
- package/dist/layers/hillshading2d/hillshading2d.fs.glsl.d.ts +1 -1
- package/dist/layers/hillshading2d/hillshading2d.fs.glsl.js +0 -2
- package/dist/layers/hillshading2d/hillshading2d.fs.glsl.js.map +1 -1
- package/dist/layers/hillshading2d/hillshading2dLayer.js +7 -1
- package/dist/layers/hillshading2d/hillshading2dLayer.js.map +1 -1
- package/dist/layers/index.d.ts +4 -0
- package/dist/layers/index.js +2 -0
- package/dist/layers/index.js.map +1 -1
- package/dist/layers/map/line.fs.glsl.d.ts +1 -1
- package/dist/layers/map/line.fs.glsl.js +0 -2
- package/dist/layers/map/line.fs.glsl.js.map +1 -1
- package/dist/layers/map/line.vs.glsl.d.ts +1 -1
- package/dist/layers/map/line.vs.glsl.js +0 -2
- package/dist/layers/map/line.vs.glsl.js.map +1 -1
- package/dist/layers/map/map.fs.glsl.d.ts +1 -1
- package/dist/layers/map/map.fs.glsl.js +0 -2
- package/dist/layers/map/map.fs.glsl.js.map +1 -1
- package/dist/layers/map/map.vs.glsl.d.ts +1 -1
- package/dist/layers/map/map.vs.glsl.js +0 -2
- package/dist/layers/map/map.vs.glsl.js.map +1 -1
- package/dist/layers/map/mapLayer.d.ts +6 -6
- package/dist/layers/map/mapLayer.js +1 -1
- package/dist/layers/map/mapLayer.js.map +1 -1
- package/dist/layers/map/privateMapLayer.js +3 -1
- package/dist/layers/map/privateMapLayer.js.map +1 -1
- package/dist/layers/northarrow/northArrow3DLayer.js +2 -1
- package/dist/layers/northarrow/northArrow3DLayer.js.map +1 -1
- package/dist/layers/northarrow/northarrow.fs.glsl.d.ts +1 -1
- package/dist/layers/northarrow/northarrow.fs.glsl.js +0 -2
- package/dist/layers/northarrow/northarrow.fs.glsl.js.map +1 -1
- package/dist/layers/northarrow/northarrow.vs.glsl.d.ts +1 -1
- package/dist/layers/northarrow/northarrow.vs.glsl.js +0 -2
- package/dist/layers/northarrow/northarrow.vs.glsl.js.map +1 -1
- package/dist/layers/piechart/pieChartLayer.js +2 -1
- package/dist/layers/piechart/pieChartLayer.js.map +1 -1
- package/dist/layers/piechart/piechart.fs.glsl.d.ts +1 -1
- package/dist/layers/piechart/piechart.fs.glsl.js +0 -2
- package/dist/layers/piechart/piechart.fs.glsl.js.map +1 -1
- package/dist/layers/piechart/piechart.vs.glsl.d.ts +1 -1
- package/dist/layers/piechart/piechart.vs.glsl.js +0 -2
- package/dist/layers/piechart/piechart.vs.glsl.js.map +1 -1
- package/dist/layers/points/privatePointsLayer.js +6 -1
- package/dist/layers/points/privatePointsLayer.js.map +1 -1
- package/dist/layers/polylines/polyline.fs.glsl.d.ts +1 -1
- package/dist/layers/polylines/polyline.fs.glsl.js +0 -2
- package/dist/layers/polylines/polyline.fs.glsl.js.map +1 -1
- package/dist/layers/polylines/privatePolylinesLayer.js +6 -1
- package/dist/layers/polylines/privatePolylinesLayer.js.map +1 -1
- package/dist/layers/seismic/seismicLayer.d.ts +105 -0
- package/dist/layers/seismic/seismicLayer.js +182 -0
- package/dist/layers/seismic/seismicLayer.js.map +1 -0
- package/dist/layers/shader_modules/test-precision/precisionForTests-shaders-glsl.d.ts +2 -0
- package/dist/layers/shader_modules/test-precision/precisionForTests-shaders-glsl.js +10 -0
- package/dist/layers/shader_modules/test-precision/precisionForTests-shaders-glsl.js.map +1 -0
- package/dist/layers/shader_modules/test-precision/precisionForTests.d.ts +3 -0
- package/dist/layers/shader_modules/test-precision/precisionForTests.js +8 -0
- package/dist/layers/shader_modules/test-precision/precisionForTests.js.map +1 -0
- package/dist/layers/triangle/line.fs.glsl.d.ts +1 -1
- package/dist/layers/triangle/line.fs.glsl.js +0 -2
- package/dist/layers/triangle/line.fs.glsl.js.map +1 -1
- package/dist/layers/triangle/line.vs.glsl.d.ts +1 -1
- package/dist/layers/triangle/line.vs.glsl.js +0 -2
- package/dist/layers/triangle/line.vs.glsl.js.map +1 -1
- package/dist/layers/triangle/privateTriangleLayer.js +8 -1
- package/dist/layers/triangle/privateTriangleLayer.js.map +1 -1
- package/dist/layers/triangle/triangle.fs.glsl.d.ts +1 -1
- package/dist/layers/triangle/triangle.fs.glsl.js +0 -2
- package/dist/layers/triangle/triangle.fs.glsl.js.map +1 -1
- package/dist/layers/triangle/triangle.vs.glsl.d.ts +1 -1
- package/dist/layers/triangle/triangle.vs.glsl.js +0 -2
- package/dist/layers/triangle/triangle.vs.glsl.js.map +1 -1
- package/dist/layers/triangle/triangleLayer.d.ts +1 -1
- package/dist/layers/triangle/triangleLayer.js +1 -1
- package/dist/layers/triangle/triangleLayer.js.map +1 -1
- package/dist/layers/utils/colormapTools.d.ts +38 -13
- package/dist/layers/utils/colormapTools.js +1 -1
- package/dist/layers/utils/colormapTools.js.map +1 -1
- package/dist/layers/well_markers/marker.fs.glsl.d.ts +1 -1
- package/dist/layers/well_markers/marker.fs.glsl.js +0 -2
- package/dist/layers/well_markers/marker.fs.glsl.js.map +1 -1
- package/dist/layers/well_markers/marker.vs.glsl.d.ts +1 -1
- package/dist/layers/well_markers/marker.vs.glsl.js +0 -1
- package/dist/layers/well_markers/marker.vs.glsl.js.map +1 -1
- package/dist/layers/well_markers/wellMarkersLayer.js +8 -1
- package/dist/layers/well_markers/wellMarkersLayer.js.map +1 -1
- package/dist/utils/Color.d.ts +10 -0
- package/dist/utils/Color.js +19 -1
- package/dist/utils/Color.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/serialize.d.ts +1 -1
- package/dist/utils/serialize.js +2 -2
- package/dist/utils/serialize.js.map +1 -1
- package/dist/utils/typedArray.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,495 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { COORDINATE_SYSTEM, Layer, picking, project32 } from "@deck.gl/core";
|
|
11
|
+
import { GL } from "@luma.gl/constants";
|
|
12
|
+
import { Geometry, Model } from "@luma.gl/engine";
|
|
13
|
+
import { lighting } from "@luma.gl/shadertools";
|
|
14
|
+
import { phongMaterial } from "../shader_modules/phong-lighting/phong-material";
|
|
15
|
+
import { precisionForTests } from "../shader_modules/test-precision/precisionForTests";
|
|
16
|
+
import { createPropertyData } from "../utils/layerTools";
|
|
17
|
+
import { getImageData, } from "../utils/colormapTools";
|
|
18
|
+
import { isTypedArray, loadDataArray, toNormalizedColor, toTypedArray, } from "../../utils";
|
|
19
|
+
import fsShader from "./triangle.fs.glsl";
|
|
20
|
+
import vsShader from "./triangle.vs.glsl";
|
|
21
|
+
import fsTexShader from "./texTriangle.fs.glsl";
|
|
22
|
+
import vsTexShader from "./texTriangle.vs.glsl";
|
|
23
|
+
import fsLineShader from "./triangleLine.fs.glsl";
|
|
24
|
+
import vsLineShader from "./triangleLine.vs.glsl";
|
|
25
|
+
const defaultMaterial = {
|
|
26
|
+
ambient: 0.35,
|
|
27
|
+
diffuse: 0.9,
|
|
28
|
+
shininess: 32,
|
|
29
|
+
specularColor: [38, 38, 38],
|
|
30
|
+
};
|
|
31
|
+
const defaultColormapSetup = {
|
|
32
|
+
valueRange: [0, 1],
|
|
33
|
+
clampRange: undefined,
|
|
34
|
+
clampColor: [0, 255, 0, 200], // green color for clamped values
|
|
35
|
+
undefinedValue: Number.NaN,
|
|
36
|
+
undefinedColor: [255, 0, 0, 200], // red color for undefined values
|
|
37
|
+
smooth: true,
|
|
38
|
+
};
|
|
39
|
+
const defaultProps = {
|
|
40
|
+
"@@type": "GpglValueMappedSurfaceLayer",
|
|
41
|
+
name: "Value Mapped Surface Layer",
|
|
42
|
+
id: "value-mapped-surface",
|
|
43
|
+
data: ["dummy"],
|
|
44
|
+
showMesh: false,
|
|
45
|
+
colormap: {
|
|
46
|
+
colormapName: "seismic",
|
|
47
|
+
},
|
|
48
|
+
colormapSetup: defaultColormapSetup,
|
|
49
|
+
color: [100, 100, 255],
|
|
50
|
+
coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,
|
|
51
|
+
material: true, // default material
|
|
52
|
+
smoothShading: false,
|
|
53
|
+
depthTest: true,
|
|
54
|
+
ZIncreasingDownwards: true,
|
|
55
|
+
// deck.gl default props
|
|
56
|
+
visible: true,
|
|
57
|
+
pickable: true,
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* GpglValueMappedSurfaceLayer is a layer handling surfaces textured by a value map.
|
|
61
|
+
* These values are converted to color using a colormap and associated setup.
|
|
62
|
+
*
|
|
63
|
+
* A primary use case is to display seismic data.
|
|
64
|
+
* The surfaces are expected to be small compared to the ones handled by the triangles layer.
|
|
65
|
+
*/
|
|
66
|
+
export class GpglValueMappedSurfaceLayer extends Layer {
|
|
67
|
+
setShaderModuleProps(args) {
|
|
68
|
+
// If material is a boolean, convert it to the default material
|
|
69
|
+
// We need to set a different default material than in the shader module
|
|
70
|
+
if (typeof args["phongMaterial"] === "boolean" &&
|
|
71
|
+
args["phongMaterial"] === true) {
|
|
72
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
73
|
+
args["phongMaterial"] = defaultMaterial;
|
|
74
|
+
}
|
|
75
|
+
super.setShaderModuleProps(Object.assign(Object.assign({}, args), { lighting: Object.assign(Object.assign({}, args["lighting"]), { enabled: this.props.material !== false }) }));
|
|
76
|
+
}
|
|
77
|
+
initializeState(context) {
|
|
78
|
+
const gl = context.device;
|
|
79
|
+
this._createModels(gl).then(([triangleModels, meshModels]) => {
|
|
80
|
+
this.setState({
|
|
81
|
+
triangleModels: triangleModels,
|
|
82
|
+
meshModels: meshModels,
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
updateState(params) {
|
|
87
|
+
const rebuild = params.props.valueMappedTriangles !==
|
|
88
|
+
params.oldProps.valueMappedTriangles ||
|
|
89
|
+
params.props.triangleMeshes !== params.oldProps.triangleMeshes ||
|
|
90
|
+
params.props.showMesh !== params.oldProps.showMesh ||
|
|
91
|
+
params.props.colormap !== params.oldProps.colormap;
|
|
92
|
+
super.updateState(params);
|
|
93
|
+
if (rebuild) {
|
|
94
|
+
this.initializeState(params.context);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
_consolidateColormap(colormap) {
|
|
98
|
+
var _a;
|
|
99
|
+
if (colormap instanceof Uint8Array) {
|
|
100
|
+
// If colormapProps is a Uint8Array, return it directly
|
|
101
|
+
return colormap;
|
|
102
|
+
}
|
|
103
|
+
if (!colormap || "colormapName" in colormap) {
|
|
104
|
+
return {
|
|
105
|
+
colormapName: (_a = colormap === null || colormap === void 0 ? void 0 : colormap.colormapName) !== null && _a !== void 0 ? _a : "seismic",
|
|
106
|
+
colorTables: this.context.userData
|
|
107
|
+
.colorTables,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
return colormap;
|
|
111
|
+
}
|
|
112
|
+
_createColormapTexture(device, colormap) {
|
|
113
|
+
const textureProps = {
|
|
114
|
+
sampler: {
|
|
115
|
+
addressModeU: "clamp-to-edge",
|
|
116
|
+
addressModeV: "clamp-to-edge",
|
|
117
|
+
minFilter: "linear",
|
|
118
|
+
magFilter: "linear",
|
|
119
|
+
},
|
|
120
|
+
width: 256,
|
|
121
|
+
height: 1,
|
|
122
|
+
format: "rgb8unorm-webgl",
|
|
123
|
+
};
|
|
124
|
+
return device.createTexture(Object.assign(Object.assign({}, textureProps), { data: getImageData(this._consolidateColormap(colormap)) }));
|
|
125
|
+
}
|
|
126
|
+
_createValuesTexture(device, valueMap) {
|
|
127
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
128
|
+
var _a, _b;
|
|
129
|
+
if ((valueMap === null || valueMap === void 0 ? void 0 : valueMap.values) === undefined) {
|
|
130
|
+
return undefined;
|
|
131
|
+
}
|
|
132
|
+
// fetch data
|
|
133
|
+
const propertiesData = yield loadDataArray(valueMap.values, Float32Array);
|
|
134
|
+
if (!propertiesData) {
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
const smooth = (_b = (_a = this.props.colormapSetup) === null || _a === void 0 ? void 0 : _a.smooth) !== null && _b !== void 0 ? _b : defaultColormapSetup.smooth;
|
|
138
|
+
const textureProps = {
|
|
139
|
+
sampler: {
|
|
140
|
+
addressModeU: "clamp-to-edge",
|
|
141
|
+
addressModeV: "clamp-to-edge",
|
|
142
|
+
minFilter: smooth ? "linear" : "nearest",
|
|
143
|
+
magFilter: smooth ? "linear" : "nearest",
|
|
144
|
+
},
|
|
145
|
+
width: valueMap.width,
|
|
146
|
+
height: valueMap.height,
|
|
147
|
+
format: "r32float",
|
|
148
|
+
};
|
|
149
|
+
return device.createTexture(Object.assign(Object.assign({}, textureProps), { width: valueMap.width, height: valueMap.height, data: propertiesData }));
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
_createModels(device) {
|
|
153
|
+
const _super = Object.create(null, {
|
|
154
|
+
getShaders: { get: () => super.getShaders }
|
|
155
|
+
});
|
|
156
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
157
|
+
var _a, _b, _c;
|
|
158
|
+
const models = [];
|
|
159
|
+
const meshModels = [];
|
|
160
|
+
// Collect promises for all valueMappedTriangles
|
|
161
|
+
const triangleModelPromises = (_b = (_a = this.props.valueMappedTriangles) === null || _a === void 0 ? void 0 : _a.map((texturedTrgs, i) => __awaiter(this, void 0, void 0, function* () {
|
|
162
|
+
var _d, _e, _f;
|
|
163
|
+
const trglGeometry = {
|
|
164
|
+
topology: texturedTrgs.topology,
|
|
165
|
+
attributes: {
|
|
166
|
+
positions: {
|
|
167
|
+
value: yield loadDataArray(texturedTrgs.vertices, Float32Array),
|
|
168
|
+
size: 3,
|
|
169
|
+
},
|
|
170
|
+
normals: {
|
|
171
|
+
value: yield loadDataArray((_d = texturedTrgs.normals) !== null && _d !== void 0 ? _d : [], Float32Array),
|
|
172
|
+
size: 3,
|
|
173
|
+
},
|
|
174
|
+
texCoords: {
|
|
175
|
+
value: yield loadDataArray((_e = texturedTrgs.texCoords) !== null && _e !== void 0 ? _e : [], Float32Array),
|
|
176
|
+
size: 2,
|
|
177
|
+
},
|
|
178
|
+
},
|
|
179
|
+
vertexCount: texturedTrgs.vertexIndices.size,
|
|
180
|
+
indices: {
|
|
181
|
+
value: yield loadDataArray(texturedTrgs.vertexIndices.value, Uint32Array),
|
|
182
|
+
size: 1,
|
|
183
|
+
},
|
|
184
|
+
};
|
|
185
|
+
const colormap = texturedTrgs.valueMap
|
|
186
|
+
? this._createColormapTexture(device, this.props.colormap)
|
|
187
|
+
: undefined;
|
|
188
|
+
const floatValues = texturedTrgs.valueMap
|
|
189
|
+
? yield this._createValuesTexture(device, texturedTrgs.valueMap)
|
|
190
|
+
: undefined;
|
|
191
|
+
const bindings = colormap && floatValues
|
|
192
|
+
? { colormap, valueTexture: floatValues }
|
|
193
|
+
: undefined;
|
|
194
|
+
const fs = bindings ? fsTexShader : fsShader;
|
|
195
|
+
const vs = bindings ? vsTexShader : vsShader;
|
|
196
|
+
const uniforms = bindings
|
|
197
|
+
? texTrianglesUniforms
|
|
198
|
+
: trianglesUniforms;
|
|
199
|
+
const model = new Model(device, Object.assign(Object.assign({ id: `${this.props.id}-trgl-${i}` }, _super.getShaders.call(this, {
|
|
200
|
+
vs: vs,
|
|
201
|
+
fs: fs,
|
|
202
|
+
modules: [
|
|
203
|
+
project32,
|
|
204
|
+
picking,
|
|
205
|
+
lighting,
|
|
206
|
+
phongMaterial,
|
|
207
|
+
uniforms,
|
|
208
|
+
precisionForTests,
|
|
209
|
+
],
|
|
210
|
+
})), { bufferLayout: this.getAttributeManager().getBufferLayouts(), geometry: new Geometry(trglGeometry), bindings: bindings, isInstanced: false }));
|
|
211
|
+
// default mesh model if none if provided
|
|
212
|
+
let meshModel = undefined;
|
|
213
|
+
if (!((_f = this.props.triangleMeshes) === null || _f === void 0 ? void 0 : _f.length) && this.props.showMesh) {
|
|
214
|
+
const indices = computeMeshIndices(texturedTrgs.vertexIndices.value, texturedTrgs.topology);
|
|
215
|
+
const meshGeometry = {
|
|
216
|
+
topology: meshTopology(texturedTrgs.topology),
|
|
217
|
+
attributes: {
|
|
218
|
+
positions: {
|
|
219
|
+
value: toTypedArray(texturedTrgs.vertices, Float32Array),
|
|
220
|
+
size: 3,
|
|
221
|
+
},
|
|
222
|
+
},
|
|
223
|
+
vertexCount: indices.length,
|
|
224
|
+
indices: {
|
|
225
|
+
value: toTypedArray(indices, Uint32Array),
|
|
226
|
+
size: 1,
|
|
227
|
+
},
|
|
228
|
+
};
|
|
229
|
+
meshModel = new Model(device, Object.assign(Object.assign({ id: `${this.props.id}-mesh-line-${i}` }, _super.getShaders.call(this, {
|
|
230
|
+
vs: vsLineShader,
|
|
231
|
+
fs: fsLineShader,
|
|
232
|
+
modules: [
|
|
233
|
+
project32,
|
|
234
|
+
picking,
|
|
235
|
+
triangleMeshUniforms,
|
|
236
|
+
precisionForTests,
|
|
237
|
+
],
|
|
238
|
+
})), { bufferLayout: this.getAttributeManager().getBufferLayouts(), geometry: new Geometry(meshGeometry), isInstanced: false }));
|
|
239
|
+
}
|
|
240
|
+
return { model, meshModel };
|
|
241
|
+
}))) !== null && _b !== void 0 ? _b : [];
|
|
242
|
+
// Await all promises and push to models/meshModels arrays
|
|
243
|
+
const triangleResults = yield Promise.all(triangleModelPromises);
|
|
244
|
+
triangleResults.forEach(({ model, meshModel }) => {
|
|
245
|
+
models.push(model);
|
|
246
|
+
if (meshModel) {
|
|
247
|
+
meshModels.push(meshModel);
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
(_c = this.props.triangleMeshes) === null || _c === void 0 ? void 0 : _c.forEach((mesh, i) => {
|
|
251
|
+
var _a, _b;
|
|
252
|
+
const meshGeometry = {
|
|
253
|
+
topology: mesh.topology,
|
|
254
|
+
attributes: {
|
|
255
|
+
positions: {
|
|
256
|
+
value: toTypedArray((_a = mesh.vertices) !== null && _a !== void 0 ? _a : (_b = this.props.valueMappedTriangles[i]) === null || _b === void 0 ? void 0 : _b.vertices, Float32Array),
|
|
257
|
+
size: 3,
|
|
258
|
+
},
|
|
259
|
+
},
|
|
260
|
+
vertexCount: mesh.vertexIndices.size,
|
|
261
|
+
indices: {
|
|
262
|
+
value: toTypedArray(mesh.vertexIndices.value, Uint32Array),
|
|
263
|
+
size: 1,
|
|
264
|
+
},
|
|
265
|
+
};
|
|
266
|
+
meshModels.push(new Model(device, Object.assign(Object.assign({ id: `${this.props.id}-mesh-line-${i}` }, _super.getShaders.call(this, {
|
|
267
|
+
vs: vsLineShader,
|
|
268
|
+
fs: fsLineShader,
|
|
269
|
+
modules: [
|
|
270
|
+
project32,
|
|
271
|
+
picking,
|
|
272
|
+
triangleMeshUniforms,
|
|
273
|
+
precisionForTests,
|
|
274
|
+
],
|
|
275
|
+
})), { bufferLayout: this.getAttributeManager().getBufferLayouts(), geometry: new Geometry(meshGeometry), isInstanced: false })));
|
|
276
|
+
});
|
|
277
|
+
return [models, meshModels];
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
getModels() {
|
|
281
|
+
var _a, _b;
|
|
282
|
+
const triangleModels = ((_a = this.state["triangleModels"]) !== null && _a !== void 0 ? _a : []);
|
|
283
|
+
const meshModels = ((_b = this.state["meshModels"]) !== null && _b !== void 0 ? _b : []);
|
|
284
|
+
return [...triangleModels, ...meshModels];
|
|
285
|
+
}
|
|
286
|
+
_getClampColors(color) {
|
|
287
|
+
if (isTypedArray(color)) {
|
|
288
|
+
// If clampColor is a Uint8Array, return it directly
|
|
289
|
+
if (color.length >= 8) {
|
|
290
|
+
return [
|
|
291
|
+
toNormalizedColor(color.slice(0, 4)),
|
|
292
|
+
toNormalizedColor(color.slice(4, 8)),
|
|
293
|
+
];
|
|
294
|
+
}
|
|
295
|
+
else if (color.length === 6) {
|
|
296
|
+
return [
|
|
297
|
+
toNormalizedColor(color.slice(0, 3)),
|
|
298
|
+
toNormalizedColor(color.slice(3, 6)),
|
|
299
|
+
];
|
|
300
|
+
}
|
|
301
|
+
const col = toNormalizedColor(color);
|
|
302
|
+
return [col, col];
|
|
303
|
+
}
|
|
304
|
+
if (Array.isArray(color) && color.length === 2) {
|
|
305
|
+
return [toNormalizedColor(color[0]), toNormalizedColor(color[1])];
|
|
306
|
+
}
|
|
307
|
+
const col = color ? toNormalizedColor(color) : undefined;
|
|
308
|
+
return [col, col];
|
|
309
|
+
}
|
|
310
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
311
|
+
draw(args) {
|
|
312
|
+
var _a, _b;
|
|
313
|
+
if (!this.state["triangleModels"] && !this.state["meshModels"]) {
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
const triangleModels = this.state["triangleModels"];
|
|
317
|
+
const meshModels = this.state["meshModels"];
|
|
318
|
+
const { gl } = args.context;
|
|
319
|
+
if (!this.props.depthTest) {
|
|
320
|
+
gl.disable(GL.DEPTH_TEST);
|
|
321
|
+
}
|
|
322
|
+
gl.enable(GL.POLYGON_OFFSET_FILL);
|
|
323
|
+
gl.polygonOffset(1, 1);
|
|
324
|
+
//
|
|
325
|
+
const [lowClampColors, highClampColor] = this._getClampColors((_b = (_a = this.props.colormapSetup) === null || _a === void 0 ? void 0 : _a.clampColor) !== null && _b !== void 0 ? _b : defaultColormapSetup.clampColor);
|
|
326
|
+
// render all the triangle surfaces
|
|
327
|
+
triangleModels === null || triangleModels === void 0 ? void 0 : triangleModels.forEach((model) => {
|
|
328
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
329
|
+
model.shaderInputs.setProps(Object.assign(Object.assign({}, args.uniforms), { triangles: {
|
|
330
|
+
colormapRange: (_b = (_a = this.props.colormapSetup) === null || _a === void 0 ? void 0 : _a.valueRange) !== null && _b !== void 0 ? _b : defaultColormapSetup.valueRange,
|
|
331
|
+
clampRange: ((_c = this.props.colormapSetup) === null || _c === void 0 ? void 0 : _c.clampRange) === null
|
|
332
|
+
? null
|
|
333
|
+
: ((_g = (_e = (_d = this.props.colormapSetup) === null || _d === void 0 ? void 0 : _d.clampRange) !== null && _e !== void 0 ? _e : (_f = this.props.colormapSetup) === null || _f === void 0 ? void 0 : _f.valueRange) !== null && _g !== void 0 ? _g : defaultColormapSetup.valueRange),
|
|
334
|
+
useClampColors: ((_h = this.props.colormapSetup) === null || _h === void 0 ? void 0 : _h.clampColor) !== null &&
|
|
335
|
+
((_j = this.props.colormapSetup) === null || _j === void 0 ? void 0 : _j.clampRange) !== null,
|
|
336
|
+
lowClampColor: lowClampColors,
|
|
337
|
+
highClampColor: highClampColor,
|
|
338
|
+
undefinedValue: (_l = (_k = this.props.colormapSetup) === null || _k === void 0 ? void 0 : _k.undefinedValue) !== null && _l !== void 0 ? _l : defaultColormapSetup.undefinedValue,
|
|
339
|
+
undefinedColor: toNormalizedColor((_o = (_m = this.props.colormapSetup) === null || _m === void 0 ? void 0 : _m.undefinedColor) !== null && _o !== void 0 ? _o : defaultColormapSetup.undefinedColor),
|
|
340
|
+
// Normalize color to [0,1] range.
|
|
341
|
+
uColor: toNormalizedColor((_p = this.props.color) !== null && _p !== void 0 ? _p : defaultProps.color),
|
|
342
|
+
smoothShading: (_q = this.props.smoothShading) !== null && _q !== void 0 ? _q : defaultProps.smoothShading,
|
|
343
|
+
ZIncreasingDownwards: (_r = this.props.ZIncreasingDownwards) !== null && _r !== void 0 ? _r : defaultProps.ZIncreasingDownwards,
|
|
344
|
+
} }));
|
|
345
|
+
model.draw(args.context.renderPass);
|
|
346
|
+
});
|
|
347
|
+
gl.disable(GL.POLYGON_OFFSET_FILL);
|
|
348
|
+
// render all the triangle meshes
|
|
349
|
+
if (this.props.showMesh) {
|
|
350
|
+
meshModels === null || meshModels === void 0 ? void 0 : meshModels.forEach((meshModel) => {
|
|
351
|
+
var _a;
|
|
352
|
+
meshModel.shaderInputs.setProps(Object.assign(Object.assign({}, args.uniforms), { triangleMesh: {
|
|
353
|
+
ZIncreasingDownwards: (_a = this.props.ZIncreasingDownwards) !== null && _a !== void 0 ? _a : defaultProps.ZIncreasingDownwards,
|
|
354
|
+
} }));
|
|
355
|
+
meshModel.draw(args.context.renderPass);
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
if (!this.props.depthTest) {
|
|
359
|
+
gl.enable(GL.DEPTH_TEST);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
decodePickingColor() {
|
|
363
|
+
return 0;
|
|
364
|
+
}
|
|
365
|
+
getPickingInfo({ info }) {
|
|
366
|
+
var _a;
|
|
367
|
+
if (!info.color) {
|
|
368
|
+
return info;
|
|
369
|
+
}
|
|
370
|
+
const layer_properties = [];
|
|
371
|
+
const zScale = this.props.modelMatrix ? this.props.modelMatrix[10] : 1;
|
|
372
|
+
if (typeof ((_a = info.coordinate) === null || _a === void 0 ? void 0 : _a[2]) !== "undefined") {
|
|
373
|
+
const depth = (this.props.ZIncreasingDownwards
|
|
374
|
+
? -info.coordinate[2]
|
|
375
|
+
: info.coordinate[2]) / Math.max(0.001, zScale);
|
|
376
|
+
layer_properties.push(createPropertyData("Depth", depth));
|
|
377
|
+
}
|
|
378
|
+
return Object.assign(Object.assign({}, info), { properties: layer_properties });
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
GpglValueMappedSurfaceLayer.layerName = "GpglValueMappedSurfaceLayer";
|
|
382
|
+
GpglValueMappedSurfaceLayer.defaultProps = defaultProps;
|
|
383
|
+
const triangleMeshUniformsBlock = `\
|
|
384
|
+
uniform triangleMeshUniforms {
|
|
385
|
+
bool ZIncreasingDownwards;
|
|
386
|
+
} triangleMesh;
|
|
387
|
+
`;
|
|
388
|
+
// NOTE: this must exactly the same name than in the uniform block
|
|
389
|
+
const triangleMeshUniforms = {
|
|
390
|
+
name: "triangleMesh",
|
|
391
|
+
vs: triangleMeshUniformsBlock,
|
|
392
|
+
fs: undefined,
|
|
393
|
+
uniformTypes: {
|
|
394
|
+
ZIncreasingDownwards: "f32",
|
|
395
|
+
},
|
|
396
|
+
};
|
|
397
|
+
const triangleUniformsBlock = /*glsl*/ `\
|
|
398
|
+
uniform trianglesUniforms {
|
|
399
|
+
vec4 uColor;
|
|
400
|
+
bool smoothShading;
|
|
401
|
+
bool ZIncreasingDownwards;
|
|
402
|
+
} triangles;
|
|
403
|
+
`;
|
|
404
|
+
// NOTE: this must exactly the same name than in the uniform block
|
|
405
|
+
const trianglesUniforms = {
|
|
406
|
+
name: "triangles",
|
|
407
|
+
vs: triangleUniformsBlock,
|
|
408
|
+
fs: triangleUniformsBlock,
|
|
409
|
+
uniformTypes: {
|
|
410
|
+
uColor: "vec4<f32>",
|
|
411
|
+
smoothShading: "u32",
|
|
412
|
+
ZIncreasingDownwards: "u32",
|
|
413
|
+
},
|
|
414
|
+
};
|
|
415
|
+
const texTriangleUniformsBlock = /*glsl*/ `\
|
|
416
|
+
uniform trianglesUniforms {
|
|
417
|
+
vec2 colormapRange;
|
|
418
|
+
vec2 clampRange;
|
|
419
|
+
bool useClampColors;
|
|
420
|
+
vec4 lowClampColor;
|
|
421
|
+
vec4 highClampColor;
|
|
422
|
+
float undefinedValue;
|
|
423
|
+
vec4 undefinedColor;
|
|
424
|
+
bool smoothShading;
|
|
425
|
+
bool ZIncreasingDownwards;
|
|
426
|
+
} triangles;
|
|
427
|
+
`;
|
|
428
|
+
// NOTE: this must exactly the same name than in the uniform block
|
|
429
|
+
const texTrianglesUniforms = {
|
|
430
|
+
name: "triangles",
|
|
431
|
+
vs: texTriangleUniformsBlock,
|
|
432
|
+
fs: texTriangleUniformsBlock,
|
|
433
|
+
uniformTypes: {
|
|
434
|
+
colormapRange: "vec2<f32>",
|
|
435
|
+
clampRange: "vec2<f32>",
|
|
436
|
+
useClampColors: "u32",
|
|
437
|
+
lowClampColor: "vec4<f32>",
|
|
438
|
+
highClampColor: "vec4<f32>",
|
|
439
|
+
undefinedValue: "f32",
|
|
440
|
+
undefinedColor: "vec4<f32>",
|
|
441
|
+
smoothShading: "u32",
|
|
442
|
+
ZIncreasingDownwards: "u32",
|
|
443
|
+
},
|
|
444
|
+
};
|
|
445
|
+
// Helper functions
|
|
446
|
+
function meshTopology(topology) {
|
|
447
|
+
switch (topology) {
|
|
448
|
+
case "triangle-list":
|
|
449
|
+
return "line-list";
|
|
450
|
+
case "triangle-strip":
|
|
451
|
+
return "line-strip";
|
|
452
|
+
default:
|
|
453
|
+
throw new Error(`Unknown topology: ${topology}`);
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
function computeMeshIndices(trglIndices, topology) {
|
|
457
|
+
if (topology === "triangle-list") {
|
|
458
|
+
// non optimal, and some edges might be missing
|
|
459
|
+
// non trivial to fix that :/
|
|
460
|
+
return trglIndices;
|
|
461
|
+
}
|
|
462
|
+
if (trglIndices.length === 4) {
|
|
463
|
+
// special case for a rectangle
|
|
464
|
+
return [
|
|
465
|
+
trglIndices[2],
|
|
466
|
+
trglIndices[0],
|
|
467
|
+
trglIndices[1],
|
|
468
|
+
trglIndices[2],
|
|
469
|
+
trglIndices[3],
|
|
470
|
+
trglIndices[1],
|
|
471
|
+
];
|
|
472
|
+
}
|
|
473
|
+
// triangle strip.
|
|
474
|
+
// missing edges must be added
|
|
475
|
+
if (Array.isArray(trglIndices) && typeof trglIndices[0] === "number") {
|
|
476
|
+
const indices1 = trglIndices
|
|
477
|
+
.filter((_v, index) => index !== 0 && index % 2 === 0)
|
|
478
|
+
.reverse();
|
|
479
|
+
const indices2 = trglIndices.filter((_v, index) => index !== trglIndices.length - 1 && index % 2 === 1);
|
|
480
|
+
return indices1.concat(trglIndices, indices2);
|
|
481
|
+
}
|
|
482
|
+
else {
|
|
483
|
+
const idxArray = trglIndices;
|
|
484
|
+
const indices1 = idxArray
|
|
485
|
+
.filter((_v, index) => index !== 0 && index % 2 === 0)
|
|
486
|
+
.reverse();
|
|
487
|
+
const indices2 = idxArray.filter((_v, index) => index !== trglIndices.length - 1 && index % 2 === 1);
|
|
488
|
+
const mergedIndices = new Uint32Array(idxArray.length + indices1.length + indices2.length);
|
|
489
|
+
mergedIndices.set(indices1, 0);
|
|
490
|
+
mergedIndices.set(idxArray, indices1.length);
|
|
491
|
+
mergedIndices.set(indices2, indices1.length + idxArray.length);
|
|
492
|
+
return mergedIndices;
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
//# sourceMappingURL=gpglValueMappedSurfaceLayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gpglValueMappedSurfaceLayer.js","sourceRoot":"","sources":["../../../src/layers/gpglLayers/gpglValueMappedSurfaceLayer.tsx"],"names":[],"mappings":";;;;;;;;;AAMA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE7E,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAGxC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC;AAUvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAGH,YAAY,GACf,MAAM,wBAAwB,CAAC;AAWhC,OAAO,EACH,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,YAAY,GACf,MAAM,aAAa,CAAC;AAIrB,OAAO,QAAQ,MAAM,oBAAoB,CAAC;AAC1C,OAAO,QAAQ,MAAM,oBAAoB,CAAC;AAC1C,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAClD,OAAO,YAAY,MAAM,wBAAwB,CAAC;AAwFlD,MAAM,eAAe,GAAa;IAC9B,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,GAAG;IACZ,SAAS,EAAE,EAAE;IACb,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;CAC9B,CAAC;AAEF,MAAM,oBAAoB,GAAkB;IACxC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,iCAAiC;IAC/D,cAAc,EAAE,MAAM,CAAC,GAAG;IAC1B,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,iCAAiC;IACnE,MAAM,EAAE,IAAI;CACf,CAAC;AAEF,MAAM,YAAY,GAAmD;IACjE,QAAQ,EAAE,6BAA6B;IACvC,IAAI,EAAE,4BAA4B;IAClC,EAAE,EAAE,sBAAsB;IAC1B,IAAI,EAAE,CAAC,OAAO,CAAC;IACf,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE;QACN,YAAY,EAAE,SAAS;KAC1B;IACD,aAAa,EAAE,oBAAoB;IACnC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACtB,gBAAgB,EAAE,iBAAiB,CAAC,SAAS;IAC7C,QAAQ,EAAE,IAAI,EAAE,mBAAmB;IACnC,aAAa,EAAE,KAAK;IACpB,SAAS,EAAE,IAAI;IACf,oBAAoB,EAAE,IAAI;IAC1B,wBAAwB;IACxB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;CACjB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,OAAO,2BAA4B,SAAQ,KAAuC;IACpF,oBAAoB,CAChB,IAEE;QAEF,+DAA+D;QAC/D,wEAAwE;QACxE,IACI,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,SAAS;YAC1C,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,EAChC,CAAC;YACC,8DAA8D;YAC7D,IAAY,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC;QACrD,CAAC;QACD,KAAK,CAAC,oBAAoB,iCACnB,IAAI,KACP,QAAQ,kCACD,IAAI,CAAC,UAAU,CAAC,KACnB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,KAAK,OAE5C,CAAC;IACP,CAAC;IAED,eAAe,CAAC,OAA2B;QACvC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,UAAU,CAAC,EAAE,EAAE;YACzD,IAAI,CAAC,QAAQ,CAAC;gBACV,cAAc,EAAE,cAAc;gBAC9B,UAAU,EAAE,UAAU;aACzB,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,WAAW,CACP,MAAiE;QAEjE,MAAM,OAAO,GACT,MAAM,CAAC,KAAK,CAAC,oBAAoB;YAC7B,MAAM,CAAC,QAAQ,CAAC,oBAAoB;YACxC,MAAM,CAAC,KAAK,CAAC,cAAc,KAAK,MAAM,CAAC,QAAQ,CAAC,cAAc;YAC9D,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,QAAQ;YAClD,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACvD,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAA6B,CAAC,CAAC;QAC/D,CAAC;IACL,CAAC;IAEO,oBAAoB,CACxB,QAAmC;;QAEnC,IAAI,QAAQ,YAAY,UAAU,EAAE,CAAC;YACjC,uDAAuD;YACvD,OAAO,QAAQ,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,QAAQ,IAAI,cAAc,IAAI,QAAQ,EAAE,CAAC;YAC1C,OAAO;gBACH,YAAY,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,YAAY,mCAAI,SAAS;gBACjD,WAAW,EAAG,IAAI,CAAC,OAA8B,CAAC,QAAQ;qBACrD,WAAW;aACnB,CAAC;QACN,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEO,sBAAsB,CAC1B,MAAc,EACd,QAAmC;QAEnC,MAAM,YAAY,GAAiB;YAC/B,OAAO,EAAE;gBACL,YAAY,EAAE,eAAe;gBAC7B,YAAY,EAAE,eAAe;gBAC7B,SAAS,EAAE,QAAQ;gBACnB,SAAS,EAAE,QAAQ;aACtB;YACD,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,iBAAiB;SAC5B,CAAC;QAEF,OAAO,MAAM,CAAC,aAAa,iCACpB,YAAY,KACf,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,IACzD,CAAC;IACP,CAAC;IAEa,oBAAoB,CAC9B,MAAc,EACd,QAAkC;;;YAElC,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,MAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,aAAa;YACb,MAAM,cAAc,GAAG,MAAM,aAAa,CACtC,QAAQ,CAAC,MAAM,EACf,YAAY,CACf,CAAC;YACF,IAAI,CAAC,cAAc,EAAE,CAAC;gBAClB,OAAO,SAAS,CAAC;YACrB,CAAC;YAED,MAAM,MAAM,GACR,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,aAAa,0CAAE,MAAM,mCAAI,oBAAoB,CAAC,MAAM,CAAC;YACpE,MAAM,YAAY,GAAiB;gBAC/B,OAAO,EAAE;oBACL,YAAY,EAAE,eAAe;oBAC7B,YAAY,EAAE,eAAe;oBAC7B,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;oBACxC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;iBAC3C;gBACD,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,MAAM,EAAE,UAAU;aACrB,CAAC;YACF,OAAO,MAAM,CAAC,aAAa,iCACpB,YAAY,KACf,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,MAAM,EAAE,QAAQ,CAAC,MAAM,EACvB,IAAI,EAAE,cAAc,IACtB,CAAC;QACP,CAAC;KAAA;IAEa,aAAa,CAAC,MAAc;;;;;;YACtC,MAAM,MAAM,GAAY,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAY,EAAE,CAAC;YAE/B,gDAAgD;YAChD,MAAM,qBAAqB,GACvB,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,oBAAoB,0CAAE,GAAG,CAAC,CAAO,YAAY,EAAE,CAAC,EAAE,EAAE;;gBAC3D,MAAM,YAAY,GAAkB;oBAChC,QAAQ,EAAE,YAAY,CAAC,QAAQ;oBAC/B,UAAU,EAAE;wBACR,SAAS,EAAE;4BACP,KAAK,EAAE,MAAM,aAAa,CACtB,YAAY,CAAC,QAAQ,EACrB,YAAY,CACf;4BACD,IAAI,EAAE,CAAC;yBACV;wBACD,OAAO,EAAE;4BACL,KAAK,EAAE,MAAM,aAAa,CACtB,MAAA,YAAY,CAAC,OAAO,mCAAI,EAAE,EAC1B,YAAY,CACf;4BACD,IAAI,EAAE,CAAC;yBACV;wBACD,SAAS,EAAE;4BACP,KAAK,EAAE,MAAM,aAAa,CACtB,MAAA,YAAY,CAAC,SAAS,mCAAI,EAAE,EAC5B,YAAY,CACf;4BACD,IAAI,EAAE,CAAC;yBACV;qBACJ;oBACD,WAAW,EAAE,YAAY,CAAC,aAAa,CAAC,IAAI;oBAC5C,OAAO,EAAE;wBACL,KAAK,EAAE,MAAM,aAAa,CACtB,YAAY,CAAC,aAAa,CAAC,KAAK,EAChC,WAAW,CACd;wBACD,IAAI,EAAE,CAAC;qBACV;iBACJ,CAAC;gBACF,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ;oBAClC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;oBAC1D,CAAC,CAAC,SAAS,CAAC;gBAChB,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ;oBACrC,CAAC,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAC3B,MAAM,EACN,YAAY,CAAC,QAAQ,CACxB;oBACH,CAAC,CAAC,SAAS,CAAC;gBAChB,MAAM,QAAQ,GACV,QAAQ,IAAI,WAAW;oBACnB,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE;oBACzC,CAAC,CAAC,SAAS,CAAC;gBAEpB,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC7C,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAE7C,MAAM,QAAQ,GAAG,QAAQ;oBACrB,CAAC,CAAC,oBAAoB;oBACtB,CAAC,CAAC,iBAAiB,CAAC;gBAExB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,gCAC1B,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,EAAE,IAC7B,OAAM,UAAU,YAAC;oBAChB,EAAE,EAAE,EAAE;oBACN,EAAE,EAAE,EAAE;oBACN,OAAO,EAAE;wBACL,SAAS;wBACT,OAAO;wBACP,QAAQ;wBACR,aAAa;wBACb,QAAQ;wBACR,iBAAiB;qBACpB;iBACJ,MACD,YAAY,EACR,IAAI,CAAC,mBAAmB,EAAG,CAAC,gBAAgB,EAAE,EAClD,QAAQ,EAAE,IAAI,QAAQ,CAAC,YAAY,CAAC,EACpC,QAAQ,EAAE,QAAQ,EAElB,WAAW,EAAE,KAAK,IACpB,CAAC;gBAEH,yCAAyC;gBACzC,IAAI,SAAS,GAAsB,SAAS,CAAC;gBAC7C,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,cAAc,0CAAE,MAAM,CAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAC5D,MAAM,OAAO,GAAG,kBAAkB,CAC9B,YAAY,CAAC,aAAa,CAAC,KAAK,EAChC,YAAY,CAAC,QAAQ,CACxB,CAAC;oBACF,MAAM,YAAY,GAAkB;wBAChC,QAAQ,EAAE,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC;wBAC7C,UAAU,EAAE;4BACR,SAAS,EAAE;gCACP,KAAK,EAAE,YAAY,CACf,YAAY,CAAC,QAAQ,EACrB,YAAY,CACf;gCACD,IAAI,EAAE,CAAC;6BACV;yBACJ;wBACD,WAAW,EAAE,OAAO,CAAC,MAAM;wBAC3B,OAAO,EAAE;4BACL,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC;4BACzC,IAAI,EAAE,CAAC;yBACV;qBACJ,CAAC;oBACF,SAAS,GAAG,IAAI,KAAK,CAAC,MAAM,gCACxB,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,EAAE,IAClC,OAAM,UAAU,YAAC;wBAChB,EAAE,EAAE,YAAY;wBAChB,EAAE,EAAE,YAAY;wBAChB,OAAO,EAAE;4BACL,SAAS;4BACT,OAAO;4BACP,oBAAoB;4BACpB,iBAAiB;yBACpB;qBACJ,MACD,YAAY,EACR,IAAI,CAAC,mBAAmB,EAAG,CAAC,gBAAgB,EAAE,EAClD,QAAQ,EAAE,IAAI,QAAQ,CAAC,YAAY,CAAC,EAEpC,WAAW,EAAE,KAAK,IACpB,CAAC;gBACP,CAAC;gBACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;YAChC,CAAC,CAAA,CAAC,mCAAI,EAAE,CAAC;YAEb,0DAA0D;YAC1D,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACjE,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE;gBAC7C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnB,IAAI,SAAS,EAAE,CAAC;oBACZ,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC/B,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAA,IAAI,CAAC,KAAK,CAAC,cAAc,0CAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;;gBAC3C,MAAM,YAAY,GAAkB;oBAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,UAAU,EAAE;wBACR,SAAS,EAAE;4BACP,KAAK,EAAE,YAAY,CACf,MAAA,IAAI,CAAC,QAAQ,mCACT,MAAA,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,0CAAE,QAAQ,EAChD,YAAY,CACf;4BACD,IAAI,EAAE,CAAC;yBACV;qBACJ;oBACD,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI;oBACpC,OAAO,EAAE;wBACL,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC;wBAC1D,IAAI,EAAE,CAAC;qBACV;iBACJ,CAAC;gBACF,UAAU,CAAC,IAAI,CACX,IAAI,KAAK,CAAC,MAAM,gCACZ,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,EAAE,IAClC,OAAM,UAAU,YAAC;oBAChB,EAAE,EAAE,YAAY;oBAChB,EAAE,EAAE,YAAY;oBAChB,OAAO,EAAE;wBACL,SAAS;wBACT,OAAO;wBACP,oBAAoB;wBACpB,iBAAiB;qBACpB;iBACJ,MACD,YAAY,EACR,IAAI,CAAC,mBAAmB,EAAG,CAAC,gBAAgB,EAAE,EAClD,QAAQ,EAAE,IAAI,QAAQ,CAAC,YAAY,CAAC,EAEpC,WAAW,EAAE,KAAK,IACpB,CACL,CAAC;YACN,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAChC,CAAC;KAAA;IAED,SAAS;;QACL,MAAM,cAAc,GAAG,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,mCAAI,EAAE,CAAY,CAAC;QACvE,MAAM,UAAU,GAAG,CAAC,MAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,mCAAI,EAAE,CAAY,CAAC;QAC/D,OAAO,CAAC,GAAG,cAAc,EAAE,GAAG,UAAU,CAAC,CAAC;IAC9C,CAAC;IAEO,eAAe,CACnB,KAAyC;QAEzC,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,oDAAoD;YACpD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACpB,OAAO;oBACH,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACpC,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBACvC,CAAC;YACN,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO;oBACH,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACpC,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBACvC,CAAC;YACN,CAAC;YACD,MAAM,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtB,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7C,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzD,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,8DAA8D;IAC9D,IAAI,CAAC,IAAS;;QACV,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7D,OAAO;QACX,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAY,CAAC;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAY,CAAC;QAEvD,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAE5B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACxB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;QAC9B,CAAC;QACD,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC;QAClC,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEvB,EAAE;QACF,MAAM,CAAC,cAAc,EAAE,cAAc,CAAC,GAAG,IAAI,CAAC,eAAe,CACzD,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,aAAa,0CAAE,UAAU,mCAC/B,oBAAoB,CAAC,UAAoB,CACjD,CAAC;QAEF,mCAAmC;QACnC,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;;YAC9B,KAAK,CAAC,YAAY,CAAC,QAAQ,iCACpB,IAAI,CAAC,QAAQ,KAChB,SAAS,EAAE;oBACP,aAAa,EACT,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,aAAa,0CAAE,UAAU,mCACpC,oBAAoB,CAAC,UAAU;oBACnC,UAAU,EACN,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,aAAa,0CAAE,UAAU,MAAK,IAAI;wBACzC,CAAC,CAAC,IAAI;wBACN,CAAC,CAAC,CAAC,MAAA,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,aAAa,0CAAE,UAAU,mCACrC,MAAA,IAAI,CAAC,KAAK,CAAC,aAAa,0CAAE,UAAU,mCACpC,oBAAoB,CAAC,UAAU,CAAC;oBAC1C,cAAc,EACV,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,aAAa,0CAAE,UAAU,MAAK,IAAI;wBAC7C,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,aAAa,0CAAE,UAAU,MAAK,IAAI;oBACjD,aAAa,EAAE,cAAc;oBAC7B,cAAc,EAAE,cAAc;oBAC9B,cAAc,EACV,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,aAAa,0CAAE,cAAc,mCACxC,oBAAoB,CAAC,cAAc;oBACvC,cAAc,EAAE,iBAAiB,CAC7B,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,aAAa,0CAAE,cAAc,mCACpC,oBAAoB,CAAC,cAAc,CAC1C;oBACD,kCAAkC;oBAClC,MAAM,EAAE,iBAAiB,CACrB,MAAA,IAAI,CAAC,KAAK,CAAC,KAAK,mCAAI,YAAY,CAAC,KAAK,CACzC;oBACD,aAAa,EACT,MAAA,IAAI,CAAC,KAAK,CAAC,aAAa,mCAAI,YAAY,CAAC,aAAa;oBAC1D,oBAAoB,EAChB,MAAA,IAAI,CAAC,KAAK,CAAC,oBAAoB,mCAC/B,YAAY,CAAC,oBAAoB;iBACxC,IACH,CAAC;YAEH,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC;QAEnC,iCAAiC;QACjC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACtB,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;;gBAC9B,SAAS,CAAC,YAAY,CAAC,QAAQ,iCACxB,IAAI,CAAC,QAAQ,KAChB,YAAY,EAAE;wBACV,oBAAoB,EAChB,MAAA,IAAI,CAAC,KAAK,CAAC,oBAAoB,mCAC/B,YAAY,CAAC,oBAAoB;qBACxC,IACH,CAAC;gBAEH,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACxB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC;IAED,kBAAkB;QACd,OAAO,CAAC,CAAC;IACb,CAAC;IAED,cAAc,CAAC,EAAE,IAAI,EAAyB;;QAC1C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,gBAAgB,GAAuB,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,IAAI,OAAO,CAAA,MAAA,IAAI,CAAC,UAAU,0CAAG,CAAC,CAAC,CAAA,KAAK,WAAW,EAAE,CAAC;YAC9C,MAAM,KAAK,GACP,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB;gBAC5B,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;gBACrB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACxD,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC9D,CAAC;QAED,uCACO,IAAI,KACP,UAAU,EAAE,gBAAgB,IAC9B;IACN,CAAC;CACJ;AAED,2BAA2B,CAAC,SAAS,GAAG,6BAA6B,CAAC;AACtE,2BAA2B,CAAC,YAAY,GAAG,YAAY,CAAC;AAExD,MAAM,yBAAyB,GAAG;;;;CAIjC,CAAC;AAIF,kEAAkE;AAClE,MAAM,oBAAoB,GAAG;IACzB,IAAI,EAAE,cAAc;IACpB,EAAE,EAAE,yBAAyB;IAC7B,EAAE,EAAE,SAAS;IACb,YAAY,EAAE;QACV,oBAAoB,EAAE,KAAK;KAC9B;CACkE,CAAC;AAExE,MAAM,qBAAqB,GAAG,QAAQ,CAAC;;;;;;CAMtC,CAAC;AAQF,kEAAkE;AAClE,MAAM,iBAAiB,GAAG;IACtB,IAAI,EAAE,WAAW;IACjB,EAAE,EAAE,qBAAqB;IACzB,EAAE,EAAE,qBAAqB;IACzB,YAAY,EAAE;QACV,MAAM,EAAE,WAAW;QACnB,aAAa,EAAE,KAAK;QACpB,oBAAoB,EAAE,KAAK;KAC9B;CAC8D,CAAC;AAEpE,MAAM,wBAAwB,GAAG,QAAQ,CAAC;;;;;;;;;;;;CAYzC,CAAC;AAcF,kEAAkE;AAClE,MAAM,oBAAoB,GAAG;IACzB,IAAI,EAAE,WAAW;IACjB,EAAE,EAAE,wBAAwB;IAC5B,EAAE,EAAE,wBAAwB;IAC5B,YAAY,EAAE;QACV,aAAa,EAAE,WAAW;QAC1B,UAAU,EAAE,WAAW;QACvB,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,WAAW;QAC1B,cAAc,EAAE,WAAW;QAC3B,cAAc,EAAE,KAAK;QACrB,cAAc,EAAE,WAAW;QAC3B,aAAa,EAAE,KAAK;QACpB,oBAAoB,EAAE,KAAK;KAC9B;CACiE,CAAC;AAEvE,mBAAmB;AACnB,SAAS,YAAY,CACjB,QAA8C;IAE9C,QAAQ,QAAQ,EAAE,CAAC;QACf,KAAK,eAAe;YAChB,OAAO,WAAW,CAAC;QACvB,KAAK,gBAAgB;YACjB,OAAO,YAAY,CAAC;QACxB;YACI,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;IACzD,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CACvB,WAAqC,EACrC,QAA8C;IAE9C,IAAI,QAAQ,KAAK,eAAe,EAAE,CAAC;QAC/B,+CAA+C;QAC/C,6BAA6B;QAC7B,OAAO,WAAW,CAAC;IACvB,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,+BAA+B;QAC/B,OAAO;YACH,WAAW,CAAC,CAAC,CAAC;YACd,WAAW,CAAC,CAAC,CAAC;YACd,WAAW,CAAC,CAAC,CAAC;YACd,WAAW,CAAC,CAAC,CAAC;YACd,WAAW,CAAC,CAAC,CAAC;YACd,WAAW,CAAC,CAAC,CAAC;SACjB,CAAC;IACN,CAAC;IACD,kBAAkB;IAClB,8BAA8B;IAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,OAAO,WAAW,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACnE,MAAM,QAAQ,GAAG,WAAW;aACvB,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;aACrD,OAAO,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAC/B,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,CACrE,CAAC;QAEF,OAAO,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACJ,MAAM,QAAQ,GAAG,WAA4B,CAAC;QAC9C,MAAM,QAAQ,GAAG,QAAQ;aACpB,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;aACrD,OAAO,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAC5B,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,CACrE,CAAC;QAEF,MAAM,aAAa,GAAG,IAAI,WAAW,CACjC,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CACtD,CAAC;QAEF,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC/B,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7C,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/D,OAAO,aAAa,CAAC;IACzB,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: "#version 300 es\n#define SHADER_NAME texture-fragment-shader\n\nuniform sampler2D valueTexture;\nuniform sampler2D colormap;\n\nin vec3 cameraPosition;\n\nin vec4 vPosition;\nin vec3 vNormal;\nin vec2 vTexCoords;\nin vec4 vColor;\n\nout vec4 fragColor;\n\n // Normalize the value to the range [0, 1]\nfloat normalizeValue(float value) {\n return (value - triangles.colormapRange[0]) / (triangles.colormapRange[1] - triangles.colormapRange[0]);\n}\n\nvec4 valueColor(float value) {\n if(value == triangles.undefinedValue) {\n return triangles.undefinedColor;\n }\n if(triangles.useClampColors) {\n if(value < triangles.clampRange[0]) {\n return triangles.lowClampColor;\n } else if(value > triangles.clampRange[1]) {\n return triangles.highClampColor;\n }\n }\n float normalizedValue = normalizeValue(value);\n // apply colormap\n return texture(colormap, vec2(normalizedValue, 0.0));\n}\n\nvoid main(void) {\n vec3 normal = vNormal;\n\n if (!triangles.smoothShading) {\n normal = normalize(cross(dFdx(vPosition.xyz), dFdy(vPosition.xyz)));\n }\n\n vec4 color = vColor;\n \n // Use two sided phong lighting. This has no effect if \"material\" property is not set.\n vec3 lightColor = lighting_getLightColor(color.rgb, cameraPosition, vPosition.xyz, normal);\n\n // get value from texture\n float value = texture(valueTexture, vTexCoords).r;\n // compute color\n vec4 colormapColor = valueColor(value);\n\n // multiply by colormap color and apply alpha\n fragColor = vec4(lightColor * colormapColor.rgb, colormapColor.a * vColor.a);\n DECKGL_FILTER_COLOR(fragColor, geometry);\n}\n";
|
|
2
|
+
export default _default;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export default `#version 300 es
|
|
2
|
+
#define SHADER_NAME texture-fragment-shader
|
|
3
|
+
|
|
4
|
+
uniform sampler2D valueTexture;
|
|
5
|
+
uniform sampler2D colormap;
|
|
6
|
+
|
|
7
|
+
in vec3 cameraPosition;
|
|
8
|
+
|
|
9
|
+
in vec4 vPosition;
|
|
10
|
+
in vec3 vNormal;
|
|
11
|
+
in vec2 vTexCoords;
|
|
12
|
+
in vec4 vColor;
|
|
13
|
+
|
|
14
|
+
out vec4 fragColor;
|
|
15
|
+
|
|
16
|
+
// Normalize the value to the range [0, 1]
|
|
17
|
+
float normalizeValue(float value) {
|
|
18
|
+
return (value - triangles.colormapRange[0]) / (triangles.colormapRange[1] - triangles.colormapRange[0]);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
vec4 valueColor(float value) {
|
|
22
|
+
if(value == triangles.undefinedValue) {
|
|
23
|
+
return triangles.undefinedColor;
|
|
24
|
+
}
|
|
25
|
+
if(triangles.useClampColors) {
|
|
26
|
+
if(value < triangles.clampRange[0]) {
|
|
27
|
+
return triangles.lowClampColor;
|
|
28
|
+
} else if(value > triangles.clampRange[1]) {
|
|
29
|
+
return triangles.highClampColor;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
float normalizedValue = normalizeValue(value);
|
|
33
|
+
// apply colormap
|
|
34
|
+
return texture(colormap, vec2(normalizedValue, 0.0));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
void main(void) {
|
|
38
|
+
vec3 normal = vNormal;
|
|
39
|
+
|
|
40
|
+
if (!triangles.smoothShading) {
|
|
41
|
+
normal = normalize(cross(dFdx(vPosition.xyz), dFdy(vPosition.xyz)));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
vec4 color = vColor;
|
|
45
|
+
|
|
46
|
+
// Use two sided phong lighting. This has no effect if "material" property is not set.
|
|
47
|
+
vec3 lightColor = lighting_getLightColor(color.rgb, cameraPosition, vPosition.xyz, normal);
|
|
48
|
+
|
|
49
|
+
// get value from texture
|
|
50
|
+
float value = texture(valueTexture, vTexCoords).r;
|
|
51
|
+
// compute color
|
|
52
|
+
vec4 colormapColor = valueColor(value);
|
|
53
|
+
|
|
54
|
+
// multiply by colormap color and apply alpha
|
|
55
|
+
fragColor = vec4(lightColor * colormapColor.rgb, colormapColor.a * vColor.a);
|
|
56
|
+
DECKGL_FILTER_COLOR(fragColor, geometry);
|
|
57
|
+
}
|
|
58
|
+
`;
|
|
59
|
+
//# sourceMappingURL=texTriangle.fs.glsl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texTriangle.fs.glsl.js","sourceRoot":"","sources":["../../../src/layers/gpglLayers/texTriangle.fs.glsl.ts"],"names":[],"mappings":"AAAA,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyDd,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: "#version 300 es\n#define SHADER_NAME texture-vertex-shader\n\n// Primitive attributes\nin vec3 positions;\nin vec3 normals;\nin vec2 texCoords;\n\n// Outputs to fragment shader\nout vec3 cameraPosition;\n\nout vec4 vPosition;\nout vec3 vNormal;\nout vec2 vTexCoords;\nout vec4 vColor;\n \nconst vec3 pickingColor = vec3(1.0, 1.0, 0.0);\n\nvoid main(void) {\n geometry.pickingColor = pickingColor;\n\n cameraPosition = project.cameraPosition;\n\n // apply Z increasing downwards transformation if needed\n vec3 position = positions;\n position[2] *= triangles.ZIncreasingDownwards ? -1.0 : 1.0;\n vec3 normal = normals;\n normal[2] *= triangles.ZIncreasingDownwards ? -1.0 : 1.0;\n\n vTexCoords = texCoords;\n \n // convert from projection system to cartesian common space\n vPosition = vec4(project_position(position), 0.0);\n // should the normal be projected: project_normal(normal) ?\n vNormal = normal;\n gl_Position = project_common_position_to_clipspace(vPosition);\n\n DECKGL_FILTER_GL_POSITION(gl_Position, geometry);\n\n vColor = vec4(1.0, 1.0, 1.0, layer.opacity);\n DECKGL_FILTER_COLOR(vColor, geometry);\n}\n";
|
|
2
|
+
export default _default;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export default `\
|
|
2
|
+
#version 300 es
|
|
3
|
+
#define SHADER_NAME texture-vertex-shader
|
|
4
|
+
|
|
5
|
+
// Primitive attributes
|
|
6
|
+
in vec3 positions;
|
|
7
|
+
in vec3 normals;
|
|
8
|
+
in vec2 texCoords;
|
|
9
|
+
|
|
10
|
+
// Outputs to fragment shader
|
|
11
|
+
out vec3 cameraPosition;
|
|
12
|
+
|
|
13
|
+
out vec4 vPosition;
|
|
14
|
+
out vec3 vNormal;
|
|
15
|
+
out vec2 vTexCoords;
|
|
16
|
+
out vec4 vColor;
|
|
17
|
+
|
|
18
|
+
const vec3 pickingColor = vec3(1.0, 1.0, 0.0);
|
|
19
|
+
|
|
20
|
+
void main(void) {
|
|
21
|
+
geometry.pickingColor = pickingColor;
|
|
22
|
+
|
|
23
|
+
cameraPosition = project.cameraPosition;
|
|
24
|
+
|
|
25
|
+
// apply Z increasing downwards transformation if needed
|
|
26
|
+
vec3 position = positions;
|
|
27
|
+
position[2] *= triangles.ZIncreasingDownwards ? -1.0 : 1.0;
|
|
28
|
+
vec3 normal = normals;
|
|
29
|
+
normal[2] *= triangles.ZIncreasingDownwards ? -1.0 : 1.0;
|
|
30
|
+
|
|
31
|
+
vTexCoords = texCoords;
|
|
32
|
+
|
|
33
|
+
// convert from projection system to cartesian common space
|
|
34
|
+
vPosition = vec4(project_position(position), 0.0);
|
|
35
|
+
// should the normal be projected: project_normal(normal) ?
|
|
36
|
+
vNormal = normal;
|
|
37
|
+
gl_Position = project_common_position_to_clipspace(vPosition);
|
|
38
|
+
|
|
39
|
+
DECKGL_FILTER_GL_POSITION(gl_Position, geometry);
|
|
40
|
+
|
|
41
|
+
vColor = vec4(1.0, 1.0, 1.0, layer.opacity);
|
|
42
|
+
DECKGL_FILTER_COLOR(vColor, geometry);
|
|
43
|
+
}
|
|
44
|
+
`;
|
|
45
|
+
//# sourceMappingURL=texTriangle.vs.glsl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texTriangle.vs.glsl.js","sourceRoot":"","sources":["../../../src/layers/gpglLayers/texTriangle.vs.glsl.ts"],"names":[],"mappings":"AAAA,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2Cd,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: "#version 300 es\n#define SHADER_NAME texture-fragment-shader\n\nin vec3 cameraPosition;\n\nin vec4 vPosition;\nin vec3 vNormal;\nin vec2 vTexCoords;\nin vec4 vColor;\n\nout vec4 fragColor;\n\nvoid main(void) {\n vec3 normal = vNormal;\n\n if (!triangles.smoothShading) {\n normal = normalize(cross(dFdx(vPosition.xyz), dFdy(vPosition.xyz)));\n }\n\n vec4 color = vColor;\n \n // Use two sided phong lighting. This has no effect if \"material\" property is not set.\n vec3 lightColor = lighting_getLightColor(color.rgb, cameraPosition, vPosition.xyz, normal);\n\n fragColor = vec4(lightColor, vColor.a);\n DECKGL_FILTER_COLOR(fragColor, geometry);\n}\n";
|
|
2
|
+
export default _default;
|