@itwin/core-frontend 3.2.0-dev.28 → 3.2.0-dev.30
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/CHANGELOG.md +38 -1
- package/lib/cjs/ViewManager.d.ts.map +1 -1
- package/lib/cjs/ViewManager.js +1 -0
- package/lib/cjs/ViewManager.js.map +1 -1
- package/lib/cjs/render/primitives/VertexTable.d.ts +1 -1
- package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js +0 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +0 -4
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.js +2 -1
- package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts +5 -4
- package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.js +7 -6
- package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/cjs/render/webgl/Technique.d.ts +4 -2
- package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Technique.js +148 -120
- package/lib/cjs/render/webgl/Technique.js.map +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.d.ts +7 -3
- package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.js +17 -4
- package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Animation.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Animation.js +2 -0
- package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Color.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Color.js +8 -7
- package/lib/cjs/render/webgl/glsl/Color.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Edge.d.ts +2 -2
- package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Edge.js +6 -10
- package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PointString.d.ts +3 -3
- package/lib/cjs/render/webgl/glsl/PointString.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/PointString.js +6 -6
- package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Polyline.d.ts +3 -3
- package/lib/cjs/render/webgl/glsl/Polyline.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Polyline.js +6 -10
- package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.d.ts +2 -2
- package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.js +33 -16
- package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Vertex.d.ts +3 -1
- package/lib/cjs/render/webgl/glsl/Vertex.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Vertex.js +139 -37
- package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.d.ts +1 -1
- package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.js +29 -6
- package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +0 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +12 -10
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/WmsCapabilities.d.ts +3 -2
- package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
- package/lib/cjs/tile/map/WmsCapabilities.js +11 -10
- package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/esm/ViewManager.d.ts.map +1 -1
- package/lib/esm/ViewManager.js +1 -0
- package/lib/esm/ViewManager.js.map +1 -1
- package/lib/esm/render/primitives/VertexTable.d.ts +1 -1
- package/lib/esm/render/primitives/VertexTable.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js +0 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilderMap.js +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +0 -4
- package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.js +2 -1
- package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.d.ts +5 -4
- package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.js +7 -6
- package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/esm/render/webgl/Technique.d.ts +4 -2
- package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
- package/lib/esm/render/webgl/Technique.js +148 -120
- package/lib/esm/render/webgl/Technique.js.map +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.d.ts +7 -3
- package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.js +17 -4
- package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Animation.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Animation.js +2 -0
- package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Color.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Color.js +8 -7
- package/lib/esm/render/webgl/glsl/Color.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Edge.d.ts +2 -2
- package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Edge.js +7 -11
- package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PointString.d.ts +3 -3
- package/lib/esm/render/webgl/glsl/PointString.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/PointString.js +6 -6
- package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Polyline.d.ts +3 -3
- package/lib/esm/render/webgl/glsl/Polyline.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Polyline.js +7 -11
- package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.d.ts +2 -2
- package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.js +33 -16
- package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Vertex.d.ts +3 -1
- package/lib/esm/render/webgl/glsl/Vertex.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Vertex.js +138 -37
- package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/esm/tile/RealityTileLoader.d.ts +1 -1
- package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
- package/lib/esm/tile/RealityTileLoader.js +30 -7
- package/lib/esm/tile/RealityTileLoader.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +0 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +12 -10
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/WmsCapabilities.d.ts +3 -2
- package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
- package/lib/esm/tile/map/WmsCapabilities.js +11 -10
- package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
- package/package.json +20 -20
|
@@ -166,9 +166,9 @@ class VariedTechnique {
|
|
|
166
166
|
this._clippingPrograms[index] = (0, ClippingProgram_1.createClippingProgram)(builder);
|
|
167
167
|
(0, core_bentley_1.assert)(this._clippingPrograms[index] !== undefined);
|
|
168
168
|
}
|
|
169
|
-
addHiliteShader(gl, instanced, classified, create) {
|
|
170
|
-
const builder = create(instanced, classified);
|
|
171
|
-
scratchHiliteFlags.initForHilite(0, instanced, classified);
|
|
169
|
+
addHiliteShader(gl, instanced, classified, posType, create) {
|
|
170
|
+
const builder = create(instanced, classified, posType);
|
|
171
|
+
scratchHiliteFlags.initForHilite(0, instanced, classified, posType);
|
|
172
172
|
this.addShader(builder, scratchHiliteFlags, gl);
|
|
173
173
|
}
|
|
174
174
|
addTranslucentShader(builder, flags, gl) {
|
|
@@ -229,38 +229,40 @@ class VariedTechnique {
|
|
|
229
229
|
}
|
|
230
230
|
}
|
|
231
231
|
exports.VariedTechnique = VariedTechnique;
|
|
232
|
+
const positionTypes = ["quantized", "unquantized"];
|
|
232
233
|
class SurfaceTechnique extends VariedTechnique {
|
|
233
234
|
constructor(gl) {
|
|
234
|
-
|
|
235
|
-
// Plus thematic variant of each and shadowable variant of each = 9
|
|
236
|
-
// Plus translucent variant of each of those = 18
|
|
237
|
-
// Plus 1 hilite shader = 19
|
|
238
|
-
super(SurfaceTechnique._kClassified + 19);
|
|
235
|
+
super(SurfaceTechnique._kUnquantized * 2);
|
|
239
236
|
this._earlyZFlags = [
|
|
240
237
|
TechniqueFlags_1.TechniqueFlags.fromDescription("Opaque-Hilite-Overrides"),
|
|
241
238
|
TechniqueFlags_1.TechniqueFlags.fromDescription("Opaque-Instanced-Hilite-Overrides"),
|
|
242
239
|
TechniqueFlags_1.TechniqueFlags.fromDescription("Opaque-Hilite-Classified"),
|
|
240
|
+
TechniqueFlags_1.TechniqueFlags.fromDescription("Unquantized-Opaque-Hilite-Overrides"),
|
|
241
|
+
TechniqueFlags_1.TechniqueFlags.fromDescription("Unquantized-Opaque-Instanced-Hilite-Overrides"),
|
|
242
|
+
TechniqueFlags_1.TechniqueFlags.fromDescription("Unquantized-Opaque-Hilite-Classified"),
|
|
243
243
|
];
|
|
244
244
|
const flags = scratchTechniqueFlags;
|
|
245
|
-
for (
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
for (let
|
|
249
|
-
for (let
|
|
250
|
-
for (let
|
|
251
|
-
for (let
|
|
252
|
-
for (
|
|
253
|
-
for (
|
|
254
|
-
|
|
255
|
-
if (
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
245
|
+
for (const posType of positionTypes) {
|
|
246
|
+
for (let instanced = 0 /* No */; instanced <= 1 /* Yes */; instanced++) {
|
|
247
|
+
this.addHiliteShader(gl, instanced, 0 /* No */, posType, Surface_1.createSurfaceHiliter);
|
|
248
|
+
for (let iAnimate = 0 /* No */; iAnimate <= 1 /* Yes */; iAnimate++) {
|
|
249
|
+
for (let shadowable = 0 /* No */; shadowable <= 1 /* Yes */; shadowable++) {
|
|
250
|
+
for (let wiremesh = 0 /* No */; wiremesh <= 1 /* Yes */; wiremesh++) {
|
|
251
|
+
for (let thematic = 0 /* No */; thematic <= 1 /* Yes */; thematic++) {
|
|
252
|
+
for (let edgeTestNeeded = 0 /* No */; edgeTestNeeded <= 1 /* Yes */; edgeTestNeeded++) {
|
|
253
|
+
for (const featureMode of featureModes) {
|
|
254
|
+
for (let iTranslucent = 0; iTranslucent <= 1; iTranslucent++) {
|
|
255
|
+
if (0 /* None */ !== featureMode || 0 /* No */ === edgeTestNeeded) {
|
|
256
|
+
if (1 /* Yes */ === thematic && 1 /* Yes */ === shadowable)
|
|
257
|
+
continue; // currently this combination is disallowed.
|
|
258
|
+
flags.reset(featureMode, instanced, shadowable, thematic, posType);
|
|
259
|
+
flags.isAnimated = iAnimate;
|
|
260
|
+
flags.isEdgeTestNeeded = edgeTestNeeded;
|
|
261
|
+
flags.isTranslucent = 1 === iTranslucent;
|
|
262
|
+
flags.isWiremesh = wiremesh;
|
|
263
|
+
const builder = (0, Surface_1.createSurfaceBuilder)(flags);
|
|
264
|
+
this.addShader(builder, flags, gl);
|
|
265
|
+
}
|
|
264
266
|
}
|
|
265
267
|
}
|
|
266
268
|
}
|
|
@@ -270,20 +272,23 @@ class SurfaceTechnique extends VariedTechnique {
|
|
|
270
272
|
}
|
|
271
273
|
}
|
|
272
274
|
}
|
|
273
|
-
this.addHiliteShader(gl, 0 /* No */, 1 /* Yes */, Surface_1.createSurfaceHiliter);
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
(0,
|
|
286
|
-
|
|
275
|
+
this.addHiliteShader(gl, 0 /* No */, 1 /* Yes */, "quantized", Surface_1.createSurfaceHiliter);
|
|
276
|
+
this.addHiliteShader(gl, 0 /* No */, 1 /* Yes */, "unquantized", Surface_1.createSurfaceHiliter);
|
|
277
|
+
for (const posType of positionTypes) {
|
|
278
|
+
for (let translucent = 0; translucent < 2; translucent++) {
|
|
279
|
+
for (let shadowable = 0 /* No */; shadowable <= 1 /* Yes */; shadowable++) {
|
|
280
|
+
for (let thematic = 0 /* No */; thematic <= 1 /* Yes */; thematic++) {
|
|
281
|
+
for (const featureMode of featureModes) {
|
|
282
|
+
if (1 /* Yes */ === thematic && 1 /* Yes */ === shadowable)
|
|
283
|
+
continue; // currently this combination is disallowed.
|
|
284
|
+
flags.reset(featureMode, 0 /* No */, shadowable, thematic, posType);
|
|
285
|
+
flags.isClassified = 1 /* Yes */;
|
|
286
|
+
flags.isTranslucent = (0 !== translucent);
|
|
287
|
+
const builder = (0, Surface_1.createSurfaceBuilder)(flags);
|
|
288
|
+
if (flags.isTranslucent)
|
|
289
|
+
(0, Translucency_1.addTranslucency)(builder);
|
|
290
|
+
this.addShader(builder, flags, gl);
|
|
291
|
+
}
|
|
287
292
|
}
|
|
288
293
|
}
|
|
289
294
|
}
|
|
@@ -293,13 +298,14 @@ class SurfaceTechnique extends VariedTechnique {
|
|
|
293
298
|
get _debugDescription() { return "Surface"; }
|
|
294
299
|
computeShaderIndex(flags) {
|
|
295
300
|
(0, core_bentley_1.assert)(!(flags.isThematic && flags.isShadowable));
|
|
301
|
+
const idxOffset = flags.positionType === "unquantized" ? SurfaceTechnique._kUnquantized : 0;
|
|
296
302
|
if (flags.isClassified) {
|
|
297
303
|
(0, core_bentley_1.assert)(!flags.isAnimated);
|
|
298
304
|
(0, core_bentley_1.assert)(!flags.isInstanced);
|
|
299
305
|
(0, core_bentley_1.assert)(!flags.isEdgeTestNeeded);
|
|
300
306
|
// First classified shader is for hilite
|
|
301
307
|
if (flags.isHilite)
|
|
302
|
-
return SurfaceTechnique._kClassified;
|
|
308
|
+
return SurfaceTechnique._kClassified + idxOffset;
|
|
303
309
|
// The rest are organized in 3 groups of 6 - one group per feature mode.
|
|
304
310
|
// Each group contains opaque, translucent, opaque+thematic, translucent+thematic, opaque+shadowable, and translucent+shadowable variants.
|
|
305
311
|
let baseIndex = SurfaceTechnique._kClassified + 1;
|
|
@@ -310,11 +316,11 @@ class SurfaceTechnique extends VariedTechnique {
|
|
|
310
316
|
if (flags.isThematic)
|
|
311
317
|
baseIndex += 4;
|
|
312
318
|
const featureOffset = 6 * flags.featureMode;
|
|
313
|
-
return baseIndex + featureOffset;
|
|
319
|
+
return baseIndex + featureOffset + idxOffset;
|
|
314
320
|
}
|
|
315
321
|
else if (flags.isHilite) {
|
|
316
322
|
(0, core_bentley_1.assert)(flags.hasFeatures);
|
|
317
|
-
return SurfaceTechnique._kHilite + flags.isInstanced;
|
|
323
|
+
return SurfaceTechnique._kHilite + flags.isInstanced + idxOffset;
|
|
318
324
|
}
|
|
319
325
|
(0, core_bentley_1.assert)(flags.hasFeatures || flags.isEdgeTestNeeded === 0 /* No */);
|
|
320
326
|
let index = flags.isTranslucent ? SurfaceTechnique._kTranslucent : SurfaceTechnique._kOpaque;
|
|
@@ -327,7 +333,7 @@ class SurfaceTechnique extends VariedTechnique {
|
|
|
327
333
|
index += SurfaceTechnique._kEdgeTestNeeded + (flags.featureMode - 1) * SurfaceTechnique._kFeature;
|
|
328
334
|
else
|
|
329
335
|
index += SurfaceTechnique._kFeature * flags.featureMode;
|
|
330
|
-
return index;
|
|
336
|
+
return index + idxOffset;
|
|
331
337
|
}
|
|
332
338
|
}
|
|
333
339
|
SurfaceTechnique._kOpaque = 0;
|
|
@@ -343,49 +349,59 @@ SurfaceTechnique._kHilite = SurfaceTechnique._kEdgeTestNeeded + SurfaceTechnique
|
|
|
343
349
|
// Classifiers are never animated or instanced. They do support shadows, thematic display, and translucency.
|
|
344
350
|
// There are 3 base variations - 1 per feature mode - each with translucent/shadowed/thematic variants; plus 1 for hilite.
|
|
345
351
|
SurfaceTechnique._kClassified = SurfaceTechnique._kHilite + numHiliteVariants;
|
|
352
|
+
// 3 base classified variations - 1 per feature mode.
|
|
353
|
+
// Plus thematic variant of each and shadowable variant of each = 9
|
|
354
|
+
// Plus translucent variant of each of those = 18
|
|
355
|
+
// Plus 1 hilite shader = 19
|
|
356
|
+
SurfaceTechnique._kUnquantized = SurfaceTechnique._kClassified + 19;
|
|
346
357
|
class PolylineTechnique extends VariedTechnique {
|
|
347
358
|
constructor(gl) {
|
|
348
|
-
super(PolylineTechnique.
|
|
359
|
+
super(PolylineTechnique._kUnquantized * 2);
|
|
349
360
|
this._earlyZFlags = [
|
|
350
361
|
TechniqueFlags_1.TechniqueFlags.fromDescription("Opaque-Hilite-Overrides"),
|
|
351
362
|
TechniqueFlags_1.TechniqueFlags.fromDescription("Opaque-Instanced-Hilite-Overrides"),
|
|
363
|
+
TechniqueFlags_1.TechniqueFlags.fromDescription("Unquantized-Opaque-Hilite-Overrides"),
|
|
364
|
+
TechniqueFlags_1.TechniqueFlags.fromDescription("Unquantized-Opaque-Instanced-Hilite-Overrides"),
|
|
352
365
|
];
|
|
353
366
|
const flags = scratchTechniqueFlags;
|
|
354
|
-
for (
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
367
|
+
for (const posType of positionTypes) {
|
|
368
|
+
for (let instanced = 0 /* No */; instanced <= 1 /* Yes */; instanced++) {
|
|
369
|
+
this.addHiliteShader(gl, instanced, 0 /* No */, posType, (inst, _class, pos) => (0, Polyline_1.createPolylineHiliter)(inst, pos));
|
|
370
|
+
for (const featureMode of featureModes) {
|
|
371
|
+
flags.reset(featureMode, instanced, 0 /* No */, 0 /* No */, posType);
|
|
372
|
+
const builder = (0, Polyline_1.createPolylineBuilder)(instanced, posType);
|
|
373
|
+
(0, Monochrome_1.addUnlitMonochrome)(builder.frag);
|
|
374
|
+
// The translucent shaders do not need the element IDs.
|
|
375
|
+
const builderTrans = (0, Polyline_1.createPolylineBuilder)(instanced, posType);
|
|
376
|
+
(0, Monochrome_1.addUnlitMonochrome)(builderTrans.frag);
|
|
377
|
+
if (2 /* Overrides */ === featureMode) {
|
|
378
|
+
(0, FeatureSymbology_1.addFeatureSymbology)(builderTrans, featureMode, 31 /* Linear */);
|
|
379
|
+
(0, FeatureSymbology_1.addFeatureSymbology)(builder, featureMode, 31 /* Linear */);
|
|
380
|
+
this.addTranslucentShader(builderTrans, flags, gl);
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
this.addTranslucentShader(builderTrans, flags, gl);
|
|
384
|
+
(0, FeatureSymbology_1.addFeatureSymbology)(builder, featureMode, 0 /* None */);
|
|
385
|
+
}
|
|
386
|
+
this.addFeatureId(builder, featureMode);
|
|
387
|
+
flags.reset(featureMode, instanced, 0 /* No */, 0 /* No */, posType);
|
|
388
|
+
this.addShader(builder, flags, gl);
|
|
371
389
|
}
|
|
372
|
-
this.addFeatureId(builder, featureMode);
|
|
373
|
-
flags.reset(featureMode, instanced, 0 /* No */, 0 /* No */);
|
|
374
|
-
this.addShader(builder, flags, gl);
|
|
375
390
|
}
|
|
376
391
|
}
|
|
377
392
|
this.finishConstruction();
|
|
378
393
|
}
|
|
379
394
|
get _debugDescription() { return "Polyline"; }
|
|
380
395
|
computeShaderIndex(flags) {
|
|
396
|
+
const idxOffset = flags.positionType === "unquantized" ? PolylineTechnique._kUnquantized : 0;
|
|
381
397
|
if (flags.isHilite) {
|
|
382
398
|
(0, core_bentley_1.assert)(flags.hasFeatures);
|
|
383
|
-
return PolylineTechnique._kHilite + flags.isInstanced;
|
|
399
|
+
return PolylineTechnique._kHilite + flags.isInstanced + idxOffset;
|
|
384
400
|
}
|
|
385
401
|
let index = flags.isTranslucent ? PolylineTechnique._kTranslucent : PolylineTechnique._kOpaque;
|
|
386
402
|
index += PolylineTechnique._kFeature * flags.featureMode;
|
|
387
403
|
index += PolylineTechnique._kInstanced * flags.isInstanced;
|
|
388
|
-
return index;
|
|
404
|
+
return index + idxOffset;
|
|
389
405
|
}
|
|
390
406
|
}
|
|
391
407
|
PolylineTechnique._kOpaque = 0;
|
|
@@ -393,34 +409,37 @@ PolylineTechnique._kTranslucent = 1;
|
|
|
393
409
|
PolylineTechnique._kInstanced = 2;
|
|
394
410
|
PolylineTechnique._kFeature = 4;
|
|
395
411
|
PolylineTechnique._kHilite = numFeatureVariants(PolylineTechnique._kFeature);
|
|
412
|
+
PolylineTechnique._kUnquantized = PolylineTechnique._kHilite + numHiliteVariants;
|
|
396
413
|
class EdgeTechnique extends VariedTechnique {
|
|
397
414
|
constructor(gl, type) {
|
|
398
|
-
super(
|
|
415
|
+
super(EdgeTechnique._kUnquantized * 2);
|
|
399
416
|
this._type = type;
|
|
400
417
|
const flags = scratchTechniqueFlags;
|
|
401
|
-
for (
|
|
402
|
-
for (let
|
|
403
|
-
for (
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
418
|
+
for (const posType of positionTypes) {
|
|
419
|
+
for (let instanced = 0 /* No */; instanced <= 1 /* Yes */; instanced++) {
|
|
420
|
+
for (let iAnimate = 0 /* No */; iAnimate <= 1 /* Yes */; iAnimate++) {
|
|
421
|
+
for (const featureMode of featureModes) {
|
|
422
|
+
flags.reset(featureMode, instanced, 0 /* No */, 0 /* No */, posType);
|
|
423
|
+
flags.isAnimated = iAnimate;
|
|
424
|
+
const builder = (0, Edge_1.createEdgeBuilder)(type, flags.isInstanced, flags.isAnimated, posType);
|
|
425
|
+
(0, Monochrome_1.addUnlitMonochrome)(builder.frag);
|
|
426
|
+
// The translucent shaders do not need the element IDs.
|
|
427
|
+
const builderTrans = (0, Edge_1.createEdgeBuilder)(type, flags.isInstanced, flags.isAnimated, posType);
|
|
428
|
+
(0, Monochrome_1.addUnlitMonochrome)(builderTrans.frag);
|
|
429
|
+
if (2 /* Overrides */ === featureMode) {
|
|
430
|
+
(0, FeatureSymbology_1.addFeatureSymbology)(builderTrans, featureMode, 31 /* Linear */);
|
|
431
|
+
(0, FeatureSymbology_1.addFeatureSymbology)(builder, featureMode, 31 /* Linear */);
|
|
432
|
+
this.addTranslucentShader(builderTrans, flags, gl);
|
|
433
|
+
}
|
|
434
|
+
else {
|
|
435
|
+
this.addTranslucentShader(builderTrans, flags, gl);
|
|
436
|
+
(0, FeatureSymbology_1.addFeatureSymbology)(builder, featureMode, 0 /* None */);
|
|
437
|
+
}
|
|
438
|
+
this.addFeatureId(builder, featureMode);
|
|
439
|
+
flags.reset(featureMode, instanced, 0 /* No */, 0 /* No */, posType);
|
|
440
|
+
flags.isAnimated = iAnimate;
|
|
441
|
+
this.addShader(builder, flags, gl);
|
|
419
442
|
}
|
|
420
|
-
this.addFeatureId(builder, featureMode);
|
|
421
|
-
flags.reset(featureMode, instanced, 0 /* No */, 0 /* No */);
|
|
422
|
-
flags.isAnimated = iAnimate;
|
|
423
|
-
this.addShader(builder, flags, gl);
|
|
424
443
|
}
|
|
425
444
|
}
|
|
426
445
|
}
|
|
@@ -434,6 +453,8 @@ class EdgeTechnique extends VariedTechnique {
|
|
|
434
453
|
index += EdgeTechnique._kAnimated;
|
|
435
454
|
if (flags.isInstanced)
|
|
436
455
|
index += EdgeTechnique._kInstanced;
|
|
456
|
+
if ("unquantized" === flags.positionType)
|
|
457
|
+
index += EdgeTechnique._kUnquantized;
|
|
437
458
|
return index;
|
|
438
459
|
}
|
|
439
460
|
}
|
|
@@ -442,45 +463,49 @@ EdgeTechnique._kTranslucent = 1;
|
|
|
442
463
|
EdgeTechnique._kAnimated = 2;
|
|
443
464
|
EdgeTechnique._kInstanced = 4;
|
|
444
465
|
EdgeTechnique._kFeature = 8;
|
|
466
|
+
EdgeTechnique._kUnquantized = numFeatureVariants(EdgeTechnique._kFeature);
|
|
445
467
|
class PointStringTechnique extends VariedTechnique {
|
|
446
468
|
constructor(gl) {
|
|
447
|
-
super(
|
|
469
|
+
super(PointStringTechnique._kUnquantized * 2);
|
|
448
470
|
const flags = scratchTechniqueFlags;
|
|
449
|
-
for (
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
471
|
+
for (const posType of positionTypes) {
|
|
472
|
+
for (let instanced = 0 /* No */; instanced <= 1 /* Yes */; instanced++) {
|
|
473
|
+
this.addHiliteShader(gl, instanced, 0 /* No */, posType, (inst, _class, pos) => (0, PointString_1.createPointStringHiliter)(inst, pos));
|
|
474
|
+
for (const featureMode of featureModes) {
|
|
475
|
+
flags.reset(featureMode, instanced, 0 /* No */, 0 /* No */, posType);
|
|
476
|
+
const builder = (0, PointString_1.createPointStringBuilder)(instanced, posType);
|
|
477
|
+
(0, Monochrome_1.addUnlitMonochrome)(builder.frag);
|
|
478
|
+
// The translucent shaders do not need the element IDs.
|
|
479
|
+
const builderTrans = (0, PointString_1.createPointStringBuilder)(instanced, posType);
|
|
480
|
+
(0, Monochrome_1.addUnlitMonochrome)(builderTrans.frag);
|
|
481
|
+
if (2 /* Overrides */ === featureMode) {
|
|
482
|
+
(0, FeatureSymbology_1.addFeatureSymbology)(builderTrans, featureMode, 29 /* Point */);
|
|
483
|
+
(0, FeatureSymbology_1.addFeatureSymbology)(builder, featureMode, 29 /* Point */);
|
|
484
|
+
this.addTranslucentShader(builderTrans, flags, gl);
|
|
485
|
+
}
|
|
486
|
+
else {
|
|
487
|
+
this.addTranslucentShader(builderTrans, flags, gl);
|
|
488
|
+
(0, FeatureSymbology_1.addFeatureSymbology)(builder, featureMode, 0 /* None */);
|
|
489
|
+
}
|
|
490
|
+
this.addFeatureId(builder, featureMode);
|
|
491
|
+
flags.reset(featureMode, instanced, 0 /* No */, 0 /* No */, posType);
|
|
492
|
+
this.addShader(builder, flags, gl);
|
|
466
493
|
}
|
|
467
|
-
this.addFeatureId(builder, featureMode);
|
|
468
|
-
flags.reset(featureMode, instanced, 0 /* No */, 0 /* No */);
|
|
469
|
-
this.addShader(builder, flags, gl);
|
|
470
494
|
}
|
|
471
495
|
}
|
|
472
496
|
this.finishConstruction();
|
|
473
497
|
}
|
|
474
498
|
get _debugDescription() { return "PointString"; }
|
|
475
499
|
computeShaderIndex(flags) {
|
|
500
|
+
const idxOffset = "quantized" === flags.positionType ? 0 : PointStringTechnique._kUnquantized;
|
|
476
501
|
if (flags.isHilite) {
|
|
477
502
|
(0, core_bentley_1.assert)(flags.hasFeatures);
|
|
478
|
-
return PointStringTechnique._kHilite + flags.isInstanced;
|
|
503
|
+
return PointStringTechnique._kHilite + flags.isInstanced + idxOffset;
|
|
479
504
|
}
|
|
480
505
|
let index = flags.isTranslucent ? PointStringTechnique._kTranslucent : PointStringTechnique._kOpaque;
|
|
481
506
|
index += PointStringTechnique._kFeature * flags.featureMode;
|
|
482
507
|
index += PointStringTechnique._kInstanced * flags.isInstanced;
|
|
483
|
-
return index;
|
|
508
|
+
return index + idxOffset;
|
|
484
509
|
}
|
|
485
510
|
}
|
|
486
511
|
PointStringTechnique._kOpaque = 0;
|
|
@@ -488,6 +513,7 @@ PointStringTechnique._kTranslucent = 1;
|
|
|
488
513
|
PointStringTechnique._kInstanced = 2;
|
|
489
514
|
PointStringTechnique._kFeature = 4;
|
|
490
515
|
PointStringTechnique._kHilite = numFeatureVariants(PointStringTechnique._kFeature);
|
|
516
|
+
PointStringTechnique._kUnquantized = PointStringTechnique._kHilite + numHiliteVariants;
|
|
491
517
|
class PointCloudTechnique extends VariedTechnique {
|
|
492
518
|
constructor(gl) {
|
|
493
519
|
super(PointCloudTechnique._kHilite + 2);
|
|
@@ -496,12 +522,12 @@ class PointCloudTechnique extends VariedTechnique {
|
|
|
496
522
|
TechniqueFlags_1.TechniqueFlags.fromDescription("Opaque-Hilite-Classified"),
|
|
497
523
|
];
|
|
498
524
|
for (let iClassified = 0 /* No */; iClassified <= 1 /* Yes */; iClassified++) {
|
|
499
|
-
this.addHiliteShader(gl, 0 /* No */, iClassified, () => (0, PointCloud_1.createPointCloudHiliter)(
|
|
525
|
+
this.addHiliteShader(gl, 0 /* No */, iClassified, "quantized", (_inst, classified) => (0, PointCloud_1.createPointCloudHiliter)(classified));
|
|
500
526
|
const flags = scratchTechniqueFlags;
|
|
501
527
|
for (let thematic = 0 /* No */; thematic <= 1 /* Yes */; thematic++) {
|
|
502
528
|
const pointCloudFeatureModes = [0 /* None */, 2 /* Overrides */];
|
|
503
529
|
for (const featureMode of pointCloudFeatureModes) {
|
|
504
|
-
flags.reset(featureMode, 0 /* No */, 0 /* No */, thematic);
|
|
530
|
+
flags.reset(featureMode, 0 /* No */, 0 /* No */, thematic, "quantized");
|
|
505
531
|
flags.isClassified = iClassified;
|
|
506
532
|
const builder = (0, PointCloud_1.createPointCloudBuilder)(flags.isClassified, featureMode, thematic);
|
|
507
533
|
if (2 /* Overrides */ === featureMode) {
|
|
@@ -522,6 +548,7 @@ class PointCloudTechnique extends VariedTechnique {
|
|
|
522
548
|
}
|
|
523
549
|
get _debugDescription() { return "PointCloud"; }
|
|
524
550
|
computeShaderIndex(flags) {
|
|
551
|
+
(0, core_bentley_1.assert)(flags.positionType === "quantized", "Unquantized point cloud positions not currently supported");
|
|
525
552
|
if (flags.isHilite)
|
|
526
553
|
return PointCloudTechnique._kHilite + flags.isClassified;
|
|
527
554
|
else {
|
|
@@ -544,8 +571,8 @@ class RealityMeshTechnique extends VariedTechnique {
|
|
|
544
571
|
TechniqueFlags_1.TechniqueFlags.fromDescription("Opaque-Hilite-Overrides"),
|
|
545
572
|
TechniqueFlags_1.TechniqueFlags.fromDescription("Opaque-Hilite-Classified"),
|
|
546
573
|
];
|
|
547
|
-
this.addHiliteShader(gl, 0 /* No */, 0 /* No */, RealityMesh_1.createRealityMeshHiliter);
|
|
548
|
-
this.addHiliteShader(gl, 0 /* No */, 1 /* Yes */, RealityMesh_1.createClassifierRealityMeshHiliter);
|
|
574
|
+
this.addHiliteShader(gl, 0 /* No */, 0 /* No */, "quantized", RealityMesh_1.createRealityMeshHiliter);
|
|
575
|
+
this.addHiliteShader(gl, 0 /* No */, 1 /* Yes */, "quantized", RealityMesh_1.createClassifierRealityMeshHiliter);
|
|
549
576
|
for (let iClassified = 0 /* No */; iClassified <= 1 /* Yes */; iClassified++) {
|
|
550
577
|
for (let iTranslucent = 0; iTranslucent <= 1; iTranslucent++) {
|
|
551
578
|
for (let shadowable = 0 /* No */; shadowable <= 1 /* Yes */; shadowable++) {
|
|
@@ -553,7 +580,7 @@ class RealityMeshTechnique extends VariedTechnique {
|
|
|
553
580
|
for (let wiremesh = 0 /* No */; wiremesh <= 1 /* Yes */; wiremesh++) {
|
|
554
581
|
const flags = scratchTechniqueFlags;
|
|
555
582
|
for (const featureMode of featureModes) {
|
|
556
|
-
flags.reset(featureMode, 0 /* No */, shadowable, thematic);
|
|
583
|
+
flags.reset(featureMode, 0 /* No */, shadowable, thematic, "quantized");
|
|
557
584
|
flags.isClassified = iClassified;
|
|
558
585
|
flags.isWiremesh = wiremesh;
|
|
559
586
|
flags.isTranslucent = 1 === iTranslucent;
|
|
@@ -575,6 +602,7 @@ class RealityMeshTechnique extends VariedTechnique {
|
|
|
575
602
|
}
|
|
576
603
|
get _debugDescription() { return "RealityMesh"; }
|
|
577
604
|
computeShaderIndex(flags) {
|
|
605
|
+
(0, core_bentley_1.assert)("quantized" === flags.positionType, "Unquantized reality mesh positions not currently supported.");
|
|
578
606
|
if (flags.isHilite)
|
|
579
607
|
return flags.isClassified ? 1 : 0;
|
|
580
608
|
let ndx = 2;
|
|
@@ -731,7 +759,7 @@ class Techniques {
|
|
|
731
759
|
const tech = this._list[pTech.techniqueId];
|
|
732
760
|
if (pTech.specificShader !== undefined) { // if this entry consists of a specific shader, just compile that
|
|
733
761
|
const flags = scratchTechniqueFlags;
|
|
734
|
-
flags.reset(pTech.specificShader.featureMode, pTech.specificShader.isInstanced, pTech.specificShader.isShadowable, 0 /* No
|
|
762
|
+
flags.reset(pTech.specificShader.featureMode, pTech.specificShader.isInstanced, pTech.specificShader.isShadowable, 0 /* No */, "quantized");
|
|
735
763
|
flags.isEdgeTestNeeded = pTech.specificShader.isEdgeTestedNeeded;
|
|
736
764
|
flags.isTranslucent = pTech.specificShader.isTranslucent;
|
|
737
765
|
shader = tech.getShader(flags);
|