@itwin/core-frontend 5.1.0-dev.59 → 5.1.0-dev.61
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/lib/cjs/DrawingViewState.d.ts.map +1 -1
- package/lib/cjs/DrawingViewState.js +1 -0
- package/lib/cjs/DrawingViewState.js.map +1 -1
- package/lib/cjs/internal/render/webgl/BatchUniforms.js +1 -1
- package/lib/cjs/internal/render/webgl/BatchUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/BranchStack.d.ts +2 -2
- package/lib/cjs/internal/render/webgl/BranchStack.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/BranchStack.js +3 -2
- package/lib/cjs/internal/render/webgl/BranchStack.js.map +1 -1
- package/lib/cjs/internal/render/webgl/BranchState.d.ts +4 -2
- package/lib/cjs/internal/render/webgl/BranchState.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/BranchState.js +4 -1
- package/lib/cjs/internal/render/webgl/BranchState.js.map +1 -1
- package/lib/cjs/internal/render/webgl/BranchUniforms.d.ts +2 -2
- package/lib/cjs/internal/render/webgl/BranchUniforms.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/BranchUniforms.js +2 -2
- package/lib/cjs/internal/render/webgl/BranchUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/ContourUniforms.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/ContourUniforms.js +2 -3
- package/lib/cjs/internal/render/webgl/ContourUniforms.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Contours.js +8 -8
- package/lib/cjs/internal/render/webgl/Contours.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Graphic.d.ts +2 -1
- package/lib/cjs/internal/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/Graphic.js +2 -0
- package/lib/cjs/internal/render/webgl/Graphic.js.map +1 -1
- package/lib/cjs/internal/render/webgl/SceneCompositor.js +2 -1
- package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/internal/render/webgl/Target.d.ts +2 -1
- package/lib/cjs/internal/render/webgl/Target.d.ts.map +1 -1
- package/lib/cjs/internal/render/webgl/Target.js +3 -1
- package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
- package/lib/cjs/render/GraphicBranch.d.ts +3 -1
- package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBranch.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts +1 -1
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/ScreenSpaceEffectBuilder.d.ts +1 -1
- package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
- package/lib/esm/DrawingViewState.d.ts.map +1 -1
- package/lib/esm/DrawingViewState.js +1 -0
- package/lib/esm/DrawingViewState.js.map +1 -1
- package/lib/esm/internal/render/webgl/BatchUniforms.js +1 -1
- package/lib/esm/internal/render/webgl/BatchUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/BranchStack.d.ts +2 -2
- package/lib/esm/internal/render/webgl/BranchStack.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/BranchStack.js +3 -2
- package/lib/esm/internal/render/webgl/BranchStack.js.map +1 -1
- package/lib/esm/internal/render/webgl/BranchState.d.ts +4 -2
- package/lib/esm/internal/render/webgl/BranchState.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/BranchState.js +4 -1
- package/lib/esm/internal/render/webgl/BranchState.js.map +1 -1
- package/lib/esm/internal/render/webgl/BranchUniforms.d.ts +2 -2
- package/lib/esm/internal/render/webgl/BranchUniforms.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/BranchUniforms.js +2 -2
- package/lib/esm/internal/render/webgl/BranchUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/ContourUniforms.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/ContourUniforms.js +2 -3
- package/lib/esm/internal/render/webgl/ContourUniforms.js.map +1 -1
- package/lib/esm/internal/render/webgl/Contours.js +8 -8
- package/lib/esm/internal/render/webgl/Contours.js.map +1 -1
- package/lib/esm/internal/render/webgl/Graphic.d.ts +2 -1
- package/lib/esm/internal/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/Graphic.js +2 -0
- package/lib/esm/internal/render/webgl/Graphic.js.map +1 -1
- package/lib/esm/internal/render/webgl/SceneCompositor.js +2 -1
- package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/internal/render/webgl/Target.d.ts +2 -1
- package/lib/esm/internal/render/webgl/Target.d.ts.map +1 -1
- package/lib/esm/internal/render/webgl/Target.js +3 -1
- package/lib/esm/internal/render/webgl/Target.js.map +1 -1
- package/lib/esm/render/GraphicBranch.d.ts +3 -1
- package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
- package/lib/esm/render/GraphicBranch.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts +1 -1
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/ScreenSpaceEffectBuilder.d.ts +1 -1
- package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
- package/package.json +23 -22
|
@@ -46,12 +46,11 @@ export class ContourUniforms {
|
|
|
46
46
|
this._contourDefs[startNdx + offset + 1] = majorIntervalCount < 1.0 ? 1.0 : majorIntervalCount;
|
|
47
47
|
}
|
|
48
48
|
update(target) {
|
|
49
|
-
|
|
50
|
-
if (this.contourDisplay && plan.contours && this.contourDisplay.equals(plan.contours)) {
|
|
49
|
+
if (this.contourDisplay && target.currentContours && this.contourDisplay.equals(target.currentContours)) {
|
|
51
50
|
return;
|
|
52
51
|
}
|
|
53
52
|
desync(this);
|
|
54
|
-
this._contourDisplay =
|
|
53
|
+
this._contourDisplay = target.currentContours;
|
|
55
54
|
if (undefined === this.contourDisplay)
|
|
56
55
|
return;
|
|
57
56
|
/* uniform packing for contourDefs:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContourUniforms.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ContourUniforms.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAY,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;GAEG;AACH,MAAM,OAAO,eAAe;IAC1B,0IAA0I;IACzH,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAC;IACpE,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;IACpE,eAAe,CAAkB;IAElC,OAAO,GAAG,CAAC,CAAC;IAEnB,IAAW,cAAc;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAEO,SAAS,CAAC,QAAgB,EAAE,UAAoB,EAAE,UAAoB;QAC5E,2DAA2D;QAC3D,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC;IACpE,CAAC;IAEO,YAAY,CAAC,QAAgB,EAAE,YAAoB,EAAE,YAAoB,EAAE,UAAkB,EAAE,UAAkB,EAAE,YAAqB;QAC9I,2DAA2D;QAC3D,oHAAoH;QACpH,sDAAsD;QACtD,8FAA8F;QAC9F,8FAA8F;QAC9F,oEAAoE;QACpE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QACrF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QACrF,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,YAAY,GAAG,EAAE,GAAG,KAAK,CAAC;IAC7H,CAAC;IAEO,aAAa,CAAC,QAAgB,EAAE,IAAa,EAAE,aAAqB,EAAE,kBAA0B;QACtG,gIAAgI;QAChI,gIAAgI;QAChI,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAC,MAAM,CAAC,GAAG,aAAa,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC;QAChF,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC,CAAC;QAC1D,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAC,MAAM,GAAC,CAAC,CAAC,GAAG,kBAAkB,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAC7F,CAAC;IAEM,MAAM,CAAC,MAAc;QAC1B,
|
|
1
|
+
{"version":3,"file":"ContourUniforms.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ContourUniforms.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { ContourDisplay, RgbColor } from \"@itwin/core-common\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { desync, sync } from \"./Sync\";\nimport { Target } from \"./Target\";\nimport { LineCode } from \"./LineCode\";\n\n/** Maintains state for uniforms related to contour display.\n * @internal\n */\nexport class ContourUniforms {\n // We use 1.5x ContourDisplay.maxContourGroups of indexable vec4 uniforms, also limited to 14 by the feature lookup texture packing scheme\n private readonly _contourDefsSize = Math.ceil(ContourDisplay.maxContourGroups * 1.5);\n private readonly _contourDefs = new Float32Array(this._contourDefsSize * 4);\n private _contourDisplay?: ContourDisplay;\n\n public syncKey = 0;\n\n public get contourDisplay(): ContourDisplay | undefined {\n return this._contourDisplay;\n }\n\n private packColor(startNdx: number, majorColor: RgbColor, minorColor: RgbColor) {\n // pack 2 bytes major (upper) minor (lower) into each float\n this._contourDefs[startNdx] = majorColor.r * 256 + minorColor.r;\n this._contourDefs[startNdx+1] = majorColor.g * 256 + minorColor.g;\n this._contourDefs[startNdx+2] = majorColor.b * 256 + minorColor.b;\n }\n\n private packPatWidth(startNdx: number, majorPattern: number, minorPattern: number, majorWidth: number, minorWidth: number, showGeometry: boolean) {\n // pack 2 bytes into this float, which is 4th float of vec4\n // width is a 4-bit value that is biased by 1.0 and has 3-bits value with one fraction bit, so range is 1.0 to 8.5\n // pattern is a line code index 0 to 10 (0 is solid)\n // pack major into upper byte (upper nibble -> pattern, lower nibble -> 4-bit encoded width)\n // pack minor into lower byte (upper nibble -> pattern, lower nibble -> 4-bit encoded width)\n // NB: showGeometry flag is packed into bit 16 (above major pattern)\n const majWt = Math.floor((Math.min(8.5, Math.max(1.0, majorWidth)) - 1.0) * 2 + 0.5);\n const minWt = Math.floor((Math.min(8.5, Math.max(1.0, minorWidth)) - 1.0) * 2 + 0.5);\n this._contourDefs[startNdx+3] = (showGeometry ? 65536 : 0) + majorPattern * 4096 + majWt * 256 + minorPattern * 16 + minWt;\n }\n\n private packIntervals(startNdx: number, even: boolean, minorInterval: number, majorIntervalCount: number) {\n // minorInterval is a float of interval in meters, majorIntervalCount is an int > 0 count of minor inteverals per major interval\n // minorInterval is stored in r or b (0 or 2) and majorIntervalCount is stored in g or a (1 or 3) depending on even or odd index\n const offset = (even ? 0 : 1) * 2;\n this._contourDefs[startNdx+offset] = minorInterval <= 0.0 ? 1.0 : minorInterval;\n majorIntervalCount = Math.floor(majorIntervalCount + 0.5);\n this._contourDefs[startNdx+offset+1] = majorIntervalCount < 1.0 ? 1.0 : majorIntervalCount;\n }\n\n public update(target: Target): void {\n if (this.contourDisplay && target.currentContours && this.contourDisplay.equals(target.currentContours)) {\n return;\n }\n\n desync(this);\n\n this._contourDisplay = target.currentContours;\n\n if (undefined === this.contourDisplay)\n return;\n\n /* uniform packing for contourDefs:\n The line pattern code is put into 4 bits, and the width is packed into 4 bits, so together with the pattern use 8 bits.\n This and the color bytes are then packed 2 bytes per float component, major in upper, as a float (e.g.: majorByte * 256 + minorByte)\n The minorInterval and majorCount each take a full float component, so they are combined with a second entry to use a full vec4\n Because of this, the overal indexing for a given contourDef is a bit different\n E.g.: the first 2 contour definitions (if both used) are packed into the first 3 vec4 uniform indexes like so:\n 0.r = majCol[0].r << 8 | minCol[0].r (0 to 65535 as float)\n 0.g = majCol[0].g << 8 | minCol[0].g (0 to 65535 as float)\n 0.r = majCol[0].b << 8 | minCol[0].b (0 to 65535 as float)\n 0.r = (majPat[0] << 12 | majW[0] << 8) | (minPat[0] << 4 | minW[0]) (0 to 65535 as float)\n 1.r = minorInterval[0] (as float)\n 1.g = majorCount[0] (int, as float)\n 1.b = minorInterval[1] (as float)\n 1.a = majorCount[1] (int, as float)\n 2.r = majCol[1].r << 8 | minCol[1].r (0 to 65535 as float)\n 2.g = majCol[1].g << 8 | minCol[1].g (0 to 65535 as float)\n 2.r = majCol[1].b << 8 | minCol[1].b (0 to 65535 as float)\n 2.r = (majPat[1] << 12 | majW[1] << 8) | (minPat[1] << 4 | minW[1]) (0 to 65535 as float)\n Then this usage pattern repeats the same way with every 2 contour definitions used taking 3 vec4 uniforms.\n (If just 1 contour def remains then it takes 2 vec4 uniforms, of which 1.5 is actually used.)\n */\n\n for (let index = 0, len = this.contourDisplay.groups.length; index < len && index < ContourDisplay.maxContourGroups; ++index) {\n const contourDef = this.contourDisplay.groups[index].contourDef;\n const even = (index & 1) === 0;\n const colorDefsNdx = (even ? index * 1.5 : (index - 1) * 1.5 + 2) * 4;\n this.packColor (colorDefsNdx, contourDef.majorStyle.color, contourDef.minorStyle.color);\n this.packPatWidth (colorDefsNdx, LineCode.valueFromLinePixels(contourDef.majorStyle.pattern), LineCode.valueFromLinePixels(contourDef.minorStyle.pattern), contourDef.majorStyle.pixelWidth, contourDef.minorStyle.pixelWidth, contourDef.showGeometry);\n const intervalsPairNdx = (Math.floor(index * 0.5) * 3 + 1) * 4;\n this.packIntervals (intervalsPairNdx, even, contourDef.minorInterval, contourDef.majorIntervalCount);\n }\n }\n\n public bindcontourDefs(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setUniform4fv(this._contourDefs);\n }\n}\n"]}
|
|
@@ -27,14 +27,14 @@ export class Contours {
|
|
|
27
27
|
return target === this.target && this._numFeatures === map.numFeatures;
|
|
28
28
|
}
|
|
29
29
|
matchesSubCategories() {
|
|
30
|
-
if (this._contours === undefined && this.target.
|
|
30
|
+
if (this._contours === undefined && this.target.currentContours === undefined)
|
|
31
31
|
return true;
|
|
32
|
-
if (this._contours === undefined || this.target.
|
|
32
|
+
if (this._contours === undefined || this.target.currentContours === undefined)
|
|
33
33
|
return false;
|
|
34
|
-
if (this._contours.groups.length !== this.target.
|
|
34
|
+
if (this._contours.groups.length !== this.target.currentContours.groups.length)
|
|
35
35
|
return false;
|
|
36
36
|
for (let index = 0, len = this._contours.groups.length; index < len && index < ContourDisplay.maxContourGroups; ++index) {
|
|
37
|
-
if (!this._contours.groups[index].subCategoriesEqual(this.target.
|
|
37
|
+
if (!this._contours.groups[index].subCategoriesEqual(this.target.currentContours.groups[index]))
|
|
38
38
|
return false;
|
|
39
39
|
}
|
|
40
40
|
return true;
|
|
@@ -48,14 +48,14 @@ export class Contours {
|
|
|
48
48
|
assert(width * height * 8 >= this._numFeatures);
|
|
49
49
|
const data = new Uint8Array(width * height * 4);
|
|
50
50
|
const creator = new Texture2DDataUpdater(data);
|
|
51
|
-
this.buildLookupTable(creator, map, this.target.
|
|
51
|
+
this.buildLookupTable(creator, map, this.target.currentContours);
|
|
52
52
|
this._lut = TextureHandle.createForData(width, height, data, true, GL.Texture.WrapMode.ClampToEdge);
|
|
53
53
|
this._lutWidth = width;
|
|
54
54
|
}
|
|
55
55
|
_update(map, lut) {
|
|
56
56
|
assert(this._numFeatures === map.numFeatures);
|
|
57
57
|
const updater = new Texture2DDataUpdater(lut.dataBytes);
|
|
58
|
-
this.buildLookupTable(updater, map, this.target.
|
|
58
|
+
this.buildLookupTable(updater, map, this.target.currentContours);
|
|
59
59
|
lut.update(updater);
|
|
60
60
|
}
|
|
61
61
|
buildLookupTable(data, map, contours) {
|
|
@@ -93,7 +93,7 @@ export class Contours {
|
|
|
93
93
|
constructor(target, options) {
|
|
94
94
|
this.target = target;
|
|
95
95
|
this._options = options;
|
|
96
|
-
this._contours = target.
|
|
96
|
+
this._contours = target.currentContours;
|
|
97
97
|
}
|
|
98
98
|
static createFromTarget(target, options) {
|
|
99
99
|
return new Contours(target, options);
|
|
@@ -110,7 +110,7 @@ export class Contours {
|
|
|
110
110
|
update(features) {
|
|
111
111
|
if (this.matchesSubCategories())
|
|
112
112
|
return;
|
|
113
|
-
this._contours = this.target.
|
|
113
|
+
this._contours = this.target.currentContours;
|
|
114
114
|
// _lut can be undefined if context was lost, (gl.createTexture returns null)
|
|
115
115
|
if (this._lut) {
|
|
116
116
|
this._update(features, this._lut);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Contours.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/Contours.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose, Id64, OrderedId64Iterable } from \"@itwin/core-bentley\";\nimport { ContourDisplay, PackedFeature, RenderFeatureTable } from \"@itwin/core-common\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { GL } from \"./GL\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { TextureUnit } from \"./RenderFlags\";\nimport { System } from \"./System\";\nimport { Target } from \"./Target\";\nimport { Texture2DDataUpdater, Texture2DHandle, TextureHandle } from \"./Texture\";\nimport { BatchOptions } from \"../../../common/render/BatchOptions\";\nimport { computeDimensions } from \"../../../common/internal/render/VertexTable\";\n\n/** @internal */\nexport type ContoursCleanup = () => void;\n\nconst scratchPackedFeature = PackedFeature.createWithIndex();\n\n/** @internal */\nexport class Contours implements WebGLDisposable {\n public readonly target: Target;\n private readonly _options: BatchOptions;\n private _contours?: ContourDisplay;\n private _lut?: Texture2DHandle;\n private _lutWidth = 0;\n private _numFeatures = 0;\n\n public get byteLength(): number { return undefined !== this._lut ? this._lut.bytesUsed : 0; }\n\n public matchesTargetAndFeatureCount(target: Target, map: RenderFeatureTable): boolean {\n // checking for target change or texture size requirement change\n return target === this.target && this._numFeatures === map.numFeatures;\n }\n\n private matchesSubCategories(): boolean {\n if (this._contours === undefined && this.target.plan.contours === undefined)\n return true;\n if (this._contours === undefined || this.target.plan.contours === undefined)\n return false;\n if (this._contours.groups.length !== this.target.plan.contours.groups.length)\n return false;\n for (let index = 0, len = this._contours.groups.length; index < len && index < ContourDisplay.maxContourGroups; ++index) {\n if (!this._contours.groups[index].subCategoriesEqual(this.target.plan.contours.groups[index]))\n return false;\n }\n return true;\n }\n\n private _initialize(map: RenderFeatureTable) {\n assert(0 < map.numFeatures);\n this._numFeatures = map.numFeatures;\n const dims = computeDimensions(this._numFeatures, 1 / 8, 0, System.instance.maxTextureSize);\n const width = dims.width;\n const height = dims.height;\n assert(width * height * 8 >= this._numFeatures);\n\n const data = new Uint8Array(width * height * 4);\n const creator = new Texture2DDataUpdater(data);\n this.buildLookupTable(creator, map, this.target.plan.contours!);\n this._lut = TextureHandle.createForData(width, height, data, true, GL.Texture.WrapMode.ClampToEdge);\n this._lutWidth = width;\n }\n\n private _update(map: RenderFeatureTable, lut: Texture2DHandle) {\n assert(this._numFeatures === map.numFeatures);\n const updater = new Texture2DDataUpdater(lut.dataBytes!);\n this.buildLookupTable(updater, map, this.target.plan.contours!);\n lut.update(updater);\n }\n\n private buildLookupTable(data: Texture2DDataUpdater, map: RenderFeatureTable, contours: ContourDisplay) {\n // setup an efficient way to compare feature subcategories with lists in terrains\n const subCatMap = new Id64.Uint32Map<number>();\n let defaultNdx = 0xf; // default for unmatched subcategories is to not show contours\n // NB: index also has to be a max of 14 - has to fit in 4 bits with value 15 reserved for no terrain def\n for (let index = 0, len = contours.groups.length; index < len && index < ContourDisplay.maxContourGroups; ++index) {\n const subCats = contours.groups[index].subCategories;\n if (OrderedId64Iterable.isEmptySet(subCats)) {\n defaultNdx = index; // change default for unmatched subcategories to this definition\n } else {\n for (const subCat of subCats)\n subCatMap.setById(subCat, index);\n }\n }\n\n // NB: We currently use 1/2 of one component of RGBA value per feature as follows:\n // [0] R/G/B/A = index pair - lower 4 bits = ndx n, upper 4 bits = ndx n+1\n let even = false;\n let byteOut = 0;\n let dataIndex = 0;\n for (const feature of map.iterable(scratchPackedFeature)) {\n dataIndex = Math.floor(feature.index * 0.5);\n even = (feature.index & 1) === 0;\n const terrainNdx = subCatMap.get(feature.subCategoryId.lower, feature.subCategoryId.upper) ?? defaultNdx;\n if (even)\n byteOut = terrainNdx;\n else\n data.setByteAtIndex(dataIndex, (terrainNdx << 4) | byteOut);\n }\n if (even) // not written\n data.setByteAtIndex(dataIndex, byteOut);\n }\n\n private constructor(target: Target, options: BatchOptions) {\n this.target = target;\n this._options = options;\n this._contours = target.plan.contours;\n }\n\n public static createFromTarget(target: Target, options: BatchOptions) {\n return new Contours(target, options);\n }\n\n public get isDisposed(): boolean { return undefined === this._lut; }\n\n public [Symbol.dispose]() {\n this._lut = dispose(this._lut);\n return undefined;\n }\n\n public initFromMap(map: RenderFeatureTable) {\n this._lut = dispose(this._lut);\n this._initialize(map);\n }\n\n public update(features: RenderFeatureTable) {\n if (this.matchesSubCategories())\n return;\n this._contours = this.target.plan.contours;\n\n // _lut can be undefined if context was lost, (gl.createTexture returns null)\n if (this._lut) {\n this._update(features, this._lut);\n }\n }\n\n public bindContourLUTWidth(uniform: UniformHandle): void {\n uniform.setUniform1ui(this._lutWidth);\n }\n\n public bindContourLUT(uniform: UniformHandle): void {\n if (this._lut)\n this._lut.bindSampler(uniform, TextureUnit.Contours);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Contours.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/Contours.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose, Id64, OrderedId64Iterable } from \"@itwin/core-bentley\";\nimport { ContourDisplay, PackedFeature, RenderFeatureTable } from \"@itwin/core-common\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { GL } from \"./GL\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { TextureUnit } from \"./RenderFlags\";\nimport { System } from \"./System\";\nimport { Target } from \"./Target\";\nimport { Texture2DDataUpdater, Texture2DHandle, TextureHandle } from \"./Texture\";\nimport { BatchOptions } from \"../../../common/render/BatchOptions\";\nimport { computeDimensions } from \"../../../common/internal/render/VertexTable\";\n\n/** @internal */\nexport type ContoursCleanup = () => void;\n\nconst scratchPackedFeature = PackedFeature.createWithIndex();\n\n/** @internal */\nexport class Contours implements WebGLDisposable {\n public readonly target: Target;\n private readonly _options: BatchOptions;\n private _contours?: ContourDisplay;\n private _lut?: Texture2DHandle;\n private _lutWidth = 0;\n private _numFeatures = 0;\n\n public get byteLength(): number { return undefined !== this._lut ? this._lut.bytesUsed : 0; }\n\n public matchesTargetAndFeatureCount(target: Target, map: RenderFeatureTable): boolean {\n // checking for target change or texture size requirement change\n return target === this.target && this._numFeatures === map.numFeatures;\n }\n\n private matchesSubCategories(): boolean {\n if (this._contours === undefined && this.target.currentContours === undefined)\n return true;\n if (this._contours === undefined || this.target.currentContours === undefined)\n return false;\n if (this._contours.groups.length !== this.target.currentContours.groups.length)\n return false;\n for (let index = 0, len = this._contours.groups.length; index < len && index < ContourDisplay.maxContourGroups; ++index) {\n if (!this._contours.groups[index].subCategoriesEqual(this.target.currentContours.groups[index]))\n return false;\n }\n return true;\n }\n\n private _initialize(map: RenderFeatureTable) {\n assert(0 < map.numFeatures);\n this._numFeatures = map.numFeatures;\n const dims = computeDimensions(this._numFeatures, 1 / 8, 0, System.instance.maxTextureSize);\n const width = dims.width;\n const height = dims.height;\n assert(width * height * 8 >= this._numFeatures);\n\n const data = new Uint8Array(width * height * 4);\n const creator = new Texture2DDataUpdater(data);\n this.buildLookupTable(creator, map, this.target.currentContours!);\n this._lut = TextureHandle.createForData(width, height, data, true, GL.Texture.WrapMode.ClampToEdge);\n this._lutWidth = width;\n }\n\n private _update(map: RenderFeatureTable, lut: Texture2DHandle) {\n assert(this._numFeatures === map.numFeatures);\n const updater = new Texture2DDataUpdater(lut.dataBytes!);\n this.buildLookupTable(updater, map, this.target.currentContours!);\n lut.update(updater);\n }\n\n private buildLookupTable(data: Texture2DDataUpdater, map: RenderFeatureTable, contours: ContourDisplay) {\n // setup an efficient way to compare feature subcategories with lists in terrains\n const subCatMap = new Id64.Uint32Map<number>();\n let defaultNdx = 0xf; // default for unmatched subcategories is to not show contours\n // NB: index also has to be a max of 14 - has to fit in 4 bits with value 15 reserved for no terrain def\n for (let index = 0, len = contours.groups.length; index < len && index < ContourDisplay.maxContourGroups; ++index) {\n const subCats = contours.groups[index].subCategories;\n if (OrderedId64Iterable.isEmptySet(subCats)) {\n defaultNdx = index; // change default for unmatched subcategories to this definition\n } else {\n for (const subCat of subCats)\n subCatMap.setById(subCat, index);\n }\n }\n\n // NB: We currently use 1/2 of one component of RGBA value per feature as follows:\n // [0] R/G/B/A = index pair - lower 4 bits = ndx n, upper 4 bits = ndx n+1\n let even = false;\n let byteOut = 0;\n let dataIndex = 0;\n for (const feature of map.iterable(scratchPackedFeature)) {\n dataIndex = Math.floor(feature.index * 0.5);\n even = (feature.index & 1) === 0;\n const terrainNdx = subCatMap.get(feature.subCategoryId.lower, feature.subCategoryId.upper) ?? defaultNdx;\n if (even)\n byteOut = terrainNdx;\n else\n data.setByteAtIndex(dataIndex, (terrainNdx << 4) | byteOut);\n }\n if (even) // not written\n data.setByteAtIndex(dataIndex, byteOut);\n }\n\n private constructor(target: Target, options: BatchOptions) {\n this.target = target;\n this._options = options;\n this._contours = target.currentContours;\n }\n\n public static createFromTarget(target: Target, options: BatchOptions) {\n return new Contours(target, options);\n }\n\n public get isDisposed(): boolean { return undefined === this._lut; }\n\n public [Symbol.dispose]() {\n this._lut = dispose(this._lut);\n return undefined;\n }\n\n public initFromMap(map: RenderFeatureTable) {\n this._lut = dispose(this._lut);\n this._initialize(map);\n }\n\n public update(features: RenderFeatureTable) {\n if (this.matchesSubCategories())\n return;\n this._contours = this.target.currentContours;\n\n // _lut can be undefined if context was lost, (gl.createTexture returns null)\n if (this._lut) {\n this._update(features, this._lut);\n }\n }\n\n public bindContourLUTWidth(uniform: UniformHandle): void {\n uniform.setUniform1ui(this._lutWidth);\n }\n\n public bindContourLUT(uniform: UniformHandle): void {\n if (this._lut)\n this._lut.bindSampler(uniform, TextureUnit.Contours);\n }\n}\n"]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @module WebGL
|
|
3
3
|
*/
|
|
4
4
|
import { Id64String } from "@itwin/core-bentley";
|
|
5
|
-
import { ElementAlignedBox3d, FeatureAppearanceProvider, RenderFeatureTable, ViewFlags } from "@itwin/core-common";
|
|
5
|
+
import { ContourDisplay, ElementAlignedBox3d, FeatureAppearanceProvider, RenderFeatureTable, ViewFlags } from "@itwin/core-common";
|
|
6
6
|
import { Range3d, Transform } from "@itwin/core-geometry";
|
|
7
7
|
import { IModelConnection } from "../../../IModelConnection";
|
|
8
8
|
import { FeatureSymbology } from "../../../render/FeatureSymbology";
|
|
@@ -138,6 +138,7 @@ export declare class Branch extends Graphic {
|
|
|
138
138
|
readonly inSectionDrawingAttachment?: boolean;
|
|
139
139
|
disableClipStyle?: true;
|
|
140
140
|
readonly transformFromExternalIModel?: Transform;
|
|
141
|
+
contourLine?: ContourDisplay;
|
|
141
142
|
constructor(branch: GraphicBranch, localToWorld: Transform, viewFlags?: ViewFlags, opts?: GraphicBranchOptions);
|
|
142
143
|
get isDisposed(): boolean;
|
|
143
144
|
dispose(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Graphic.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/Graphic.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAmB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,kBAAkB,EAAuB,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"Graphic.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/Graphic.ts"],"names":[],"mappings":"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"}
|
|
@@ -268,6 +268,7 @@ export class Branch extends Graphic {
|
|
|
268
268
|
inSectionDrawingAttachment;
|
|
269
269
|
disableClipStyle;
|
|
270
270
|
transformFromExternalIModel;
|
|
271
|
+
contourLine;
|
|
271
272
|
constructor(branch, localToWorld, viewFlags, opts) {
|
|
272
273
|
super();
|
|
273
274
|
this.branch = branch;
|
|
@@ -284,6 +285,7 @@ export class Branch extends Graphic {
|
|
|
284
285
|
this.inSectionDrawingAttachment = opts.inSectionDrawingAttachment;
|
|
285
286
|
this.disableClipStyle = opts.disableClipStyle;
|
|
286
287
|
this.transformFromExternalIModel = opts.transformFromIModel;
|
|
288
|
+
this.contourLine = opts.contours;
|
|
287
289
|
if (opts.hline)
|
|
288
290
|
this.edgeSettings = EdgeSettings.create(opts.hline);
|
|
289
291
|
if (opts.classifierOrDrape instanceof PlanarClassifier)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Graphic.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/Graphic.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose, Id64String } from \"@itwin/core-bentley\";\nimport { ElementAlignedBox3d, FeatureAppearanceProvider, RenderFeatureTable, ThematicDisplayMode, ViewFlags } from \"@itwin/core-common\";\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\nimport { IModelConnection } from \"../../../IModelConnection\";\nimport { FeatureSymbology } from \"../../../render/FeatureSymbology\";\nimport { GraphicBranch, GraphicBranchOptions } from \"../../../render/GraphicBranch\";\nimport { GraphicList, RenderGraphic } from \"../../../render/RenderGraphic\";\nimport { RenderMemory } from \"../../../render/RenderMemory\";\nimport { ClipVolume } from \"./ClipVolume\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { EdgeSettings } from \"./EdgeSettings\";\nimport { FeatureOverrides } from \"./FeatureOverrides\";\nimport { PlanarClassifier } from \"./PlanarClassifier\";\nimport { Primitive } from \"./Primitive\";\nimport { RenderCommands } from \"./RenderCommands\";\nimport { RenderPass } from \"./RenderFlags\";\nimport { Target } from \"./Target\";\nimport { TextureDrape } from \"./TextureDrape\";\nimport { ThematicSensors } from \"./ThematicSensors\";\nimport { BranchState } from \"./BranchState\";\nimport { BatchOptions } from \"../../../common/render/BatchOptions\";\nimport { Contours } from \"./Contours\";\nimport { GraphicBranchFrustum } from \"../GraphicBranchFrustum\";\n\n/** @internal */\nexport abstract class Graphic extends RenderGraphic implements WebGLDisposable {\n public abstract addCommands(_commands: RenderCommands): void;\n public abstract get isDisposed(): boolean;\n public abstract get isPickable(): boolean;\n public addHiliteCommands(_commands: RenderCommands, _pass: RenderPass): void { assert(false); }\n public toPrimitive(): Primitive | undefined { return undefined; }\n}\n\nexport class GraphicOwner extends Graphic {\n private readonly _graphic: Graphic;\n\n public constructor(graphic: Graphic) {\n super();\n this._graphic = graphic;\n }\n\n public get graphic(): RenderGraphic { return this._graphic; }\n\n private _isDisposed = false;\n public get isDisposed(): boolean { return this._isDisposed; }\n public dispose(): void { this._isDisposed = true; }\n public disposeGraphic(): void {\n this.graphic[Symbol.dispose]();\n }\n public collectStatistics(stats: RenderMemory.Statistics): void {\n this.graphic.collectStatistics(stats);\n }\n\n public override unionRange(range: Range3d) {\n this.graphic.unionRange(range);\n }\n\n public addCommands(commands: RenderCommands): void {\n this._graphic.addCommands(commands);\n }\n public override get isPickable(): boolean {\n return this._graphic.isPickable;\n }\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\n this._graphic.addHiliteCommands(commands, pass);\n }\n public override toPrimitive(): Primitive | undefined {\n return this._graphic.toPrimitive();\n }\n}\n\n/** Transiently assigned to a Batch while rendering a frame, reset afterward. Used to provide context for pick IDs.\n * @internal\n */\nexport interface BatchContext {\n batchId: number;\n iModel?: IModelConnection;\n transformFromIModel?: Transform;\n viewAttachmentId?: Id64String;\n inSectionDrawingAttachment?: boolean;\n}\n\n/** @internal exported strictly for tests. */\nexport class PerTargetBatchData {\n public readonly target: Target;\n protected readonly _featureOverrides = new Map<FeatureSymbology.Source | undefined, FeatureOverrides>();\n protected _contours?: Contours;\n protected _thematicSensors?: ThematicSensors;\n\n public constructor(target: Target) {\n this.target = target;\n }\n\n public [Symbol.dispose](): void {\n this._thematicSensors = dispose(this._thematicSensors);\n this._contours = this._contours?.[Symbol.dispose]();\n for (const value of this._featureOverrides.values())\n dispose(value);\n\n this._featureOverrides.clear();\n }\n\n public getThematicSensors(batch: Batch): ThematicSensors {\n if (this._thematicSensors && !this._thematicSensors.matchesTarget(this.target))\n this._thematicSensors = dispose(this._thematicSensors);\n\n if (!this._thematicSensors)\n this._thematicSensors = ThematicSensors.create(this.target, batch.range);\n\n this._thematicSensors.update(this.target.uniforms.frustum.viewMatrix);\n return this._thematicSensors;\n }\n\n public getFeatureOverrides(batch: Batch): FeatureOverrides {\n const source = this.target.currentFeatureSymbologyOverrides?.source;\n let ovrs = this._featureOverrides.get(source);\n if (!ovrs) {\n const cleanup = source ? source.onSourceDisposed.addOnce(() => this.onSourceDisposed(source)) : undefined;\n this._featureOverrides.set(source, ovrs = FeatureOverrides.createFromTarget(this.target, batch.options, cleanup));\n ovrs.initFromMap(batch.featureTable);\n }\n\n ovrs.update(batch.featureTable);\n return ovrs;\n }\n\n public getContours(batch: Batch): Contours {\n if (this._contours && !this._contours.matchesTargetAndFeatureCount(this.target, batch.featureTable))\n this._contours = this._contours[Symbol.dispose]();\n\n if (!this._contours) {\n this._contours = Contours.createFromTarget(this.target, batch.options);\n this._contours.initFromMap(batch.featureTable);\n } else {\n this._contours.update(batch.featureTable);\n }\n return this._contours;\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n if (this._thematicSensors)\n stats.addThematicTexture(this._thematicSensors.bytesUsed);\n\n for (const ovrs of this._featureOverrides.values())\n stats.addFeatureOverrides(ovrs.byteLength);\n\n if (this._contours)\n stats.addContours(this._contours.byteLength);\n }\n\n /** Exposed strictly for tests. */\n public get featureOverrides() { return this._featureOverrides; }\n\n private onSourceDisposed(source: FeatureSymbology.Source): void {\n const ovrs = this._featureOverrides.get(source);\n if (ovrs) {\n this._featureOverrides.delete(source);\n ovrs[Symbol.dispose]();\n }\n }\n}\n\n/** @internal exported strictly for tests. */\nexport class PerTargetData {\n private readonly _batch: Batch;\n private readonly _data: PerTargetBatchData[] = [];\n\n public constructor(batch: Batch) {\n this._batch = batch;\n }\n\n public [Symbol.dispose](): void {\n for (const data of this._data) {\n data.target.onBatchDisposed(this._batch);\n data[Symbol.dispose]();\n }\n\n this._data.length = 0;\n }\n\n public get isDisposed(): boolean {\n return this._data.length === 0;\n }\n\n /** Exposed strictly for tests. */\n public get data(): PerTargetBatchData[] { return this._data; }\n\n public onTargetDisposed(target: Target): void {\n const index = this._data.findIndex((x) => x.target === target);\n if (-1 === index)\n return;\n\n const data = this._data[index];\n data[Symbol.dispose]();\n this._data.splice(index, 1);\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n for (const data of this._data)\n data.collectStatistics(stats);\n }\n\n public getThematicSensors(target: Target): ThematicSensors {\n return this.getBatchData(target).getThematicSensors(this._batch);\n }\n\n public getFeatureOverrides(target: Target): FeatureOverrides {\n return this.getBatchData(target).getFeatureOverrides(this._batch);\n }\n\n public getContours(target: Target): Contours {\n return this.getBatchData(target).getContours(this._batch);\n }\n\n private getBatchData(target: Target): PerTargetBatchData {\n let data = this._data.find((x) => x.target === target);\n if (!data) {\n this._data.push(data = new PerTargetBatchData(target));\n target.addBatch(this._batch);\n }\n\n return data;\n }\n}\n\n/** @internal */\nexport class Batch extends Graphic {\n public readonly graphic: RenderGraphic;\n public readonly featureTable: RenderFeatureTable;\n public readonly range: ElementAlignedBox3d;\n private readonly _context: BatchContext = { batchId: 0 };\n /** Public strictly for tests. */\n public readonly perTargetData = new PerTargetData(this);\n public readonly options: BatchOptions;\n\n // Chiefly for debugging.\n public get tileId(): string | undefined {\n return this.options.tileId;\n }\n\n public get locateOnly(): boolean {\n return true === this.options.locateOnly;\n }\n\n /** The following are valid only during a draw and reset afterward. */\n public get batchId() { return this._context.batchId; }\n public get batchIModel() { return this._context.iModel; }\n public get transformFromBatchIModel() { return this._context.transformFromIModel; }\n public get viewAttachmentId() { return this._context.viewAttachmentId; }\n public get inSectionDrawingAttachment() { return this._context.inSectionDrawingAttachment; }\n\n public setContext(batchId: number, branch: BranchState) {\n this._context.batchId = batchId;\n this._context.iModel = branch.iModel;\n this._context.transformFromIModel = branch.transformFromIModel;\n this._context.viewAttachmentId = branch.viewAttachmentId;\n this._context.inSectionDrawingAttachment = branch.inSectionDrawingAttachment;\n }\n\n public resetContext() {\n this._context.batchId = 0;\n this._context.iModel = undefined;\n this._context.transformFromIModel = undefined;\n this._context.viewAttachmentId = undefined;\n this._context.inSectionDrawingAttachment = undefined;\n }\n\n public constructor(graphic: RenderGraphic, features: RenderFeatureTable, range: ElementAlignedBox3d, options?: BatchOptions) {\n super();\n this.graphic = graphic;\n this.featureTable = features;\n this.range = range;\n this.options = options ?? {};\n }\n\n private _isDisposed = false;\n public get isDisposed(): boolean {\n return this._isDisposed && this.perTargetData.isDisposed;\n }\n\n // Note: This does not remove FeatureOverrides from the array, but rather disposes of the WebGL resources they contain\n public dispose() {\n dispose(this.graphic);\n\n this.perTargetData[Symbol.dispose]();\n this._isDisposed = true;\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n this.graphic.collectStatistics(stats);\n stats.addFeatureTable(this.featureTable.byteLength);\n this.perTargetData.collectStatistics(stats);\n }\n\n public override unionRange(range: Range3d) {\n range.extendRange(this.range);\n }\n\n public addCommands(commands: RenderCommands): void {\n commands.addBatch(this);\n }\n\n public override get isPickable(): boolean {\n return true;\n }\n\n public getThematicSensors(target: Target): ThematicSensors {\n assert(target.plan.thematic !== undefined, \"thematic display settings must exist\");\n assert(target.plan.thematic.displayMode === ThematicDisplayMode.InverseDistanceWeightedSensors, \"thematic display mode must be sensor-based\");\n assert(target.plan.thematic.sensorSettings.sensors.length > 0, \"must have at least one sensor to process\");\n\n return this.perTargetData.getThematicSensors(target);\n }\n\n public getOverrides(target: Target): FeatureOverrides {\n return this.perTargetData.getFeatureOverrides(target);\n }\n\n public getContours(target: Target): Contours {\n return this.perTargetData.getContours(target);\n }\n\n public onTargetDisposed(target: Target) {\n this.perTargetData.onTargetDisposed(target);\n }\n}\n\n/** @internal */\nexport class Branch extends Graphic {\n public readonly branch: GraphicBranch;\n public localToWorldTransform: Transform;\n public readonly clips?: ClipVolume;\n public readonly planarClassifier?: PlanarClassifier;\n public readonly textureDrape?: TextureDrape;\n public readonly layerClassifiers?: Map<number, PlanarClassifier>;\n public readonly edgeSettings?: EdgeSettings;\n public readonly iModel?: IModelConnection; // used chiefly for readPixels to identify context of picked Ids.\n public readonly frustum?: GraphicBranchFrustum;\n public readonly appearanceProvider?: FeatureAppearanceProvider;\n public readonly secondaryClassifiers?: PlanarClassifier[];\n public readonly viewAttachmentId?: Id64String;\n public readonly inSectionDrawingAttachment?: boolean;\n public disableClipStyle?: true;\n public readonly transformFromExternalIModel?: Transform;\n\n public constructor(branch: GraphicBranch, localToWorld: Transform, viewFlags?: ViewFlags, opts?: GraphicBranchOptions) {\n super();\n this.branch = branch;\n this.localToWorldTransform = localToWorld;\n\n if (undefined !== viewFlags)\n branch.setViewFlags(viewFlags);\n\n if (!opts)\n return;\n\n this.appearanceProvider = opts.appearanceProvider;\n this.clips = opts.clipVolume as ClipVolume | undefined;\n this.iModel = opts.iModel;\n this.frustum = opts.frustum;\n this.viewAttachmentId = opts.viewAttachmentId;\n this.inSectionDrawingAttachment = opts.inSectionDrawingAttachment;\n this.disableClipStyle = opts.disableClipStyle;\n this.transformFromExternalIModel = opts.transformFromIModel;\n\n if (opts.hline)\n this.edgeSettings = EdgeSettings.create(opts.hline);\n\n if (opts.classifierOrDrape instanceof PlanarClassifier)\n this.planarClassifier = opts.classifierOrDrape;\n else if (opts.classifierOrDrape instanceof TextureDrape)\n this.textureDrape = opts.classifierOrDrape;\n\n if (opts.secondaryClassifiers) {\n this.secondaryClassifiers = new Array<PlanarClassifier>();\n opts.secondaryClassifiers.forEach((classifier) => {\n if (classifier instanceof PlanarClassifier)\n this.secondaryClassifiers?.push(classifier);\n });\n }\n }\n\n public get isDisposed(): boolean {\n return 0 === this.branch.entries.length;\n }\n\n public dispose() {\n this.branch[Symbol.dispose]();\n }\n\n public override get isPickable(): boolean {\n return this.branch.entries.some((gf) => (gf as Graphic).isPickable);\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n this.branch.collectStatistics(stats);\n }\n\n public override unionRange(range: Range3d) {\n const thisRange = new Range3d();\n for (const graphic of this.branch.entries)\n graphic.unionRange(thisRange);\n\n this.localToWorldTransform.multiplyRange(thisRange, thisRange);\n range.extendRange(thisRange);\n }\n\n private shouldAddCommands(commands: RenderCommands): boolean {\n const group = commands.target.currentBranch.groupNodeId;\n if (undefined !== group && undefined !== this.branch.groupNodeId && this.branch.groupNodeId !== group)\n return false;\n\n const nodeId = commands.target.getAnimationTransformNodeId(this.branch.animationNodeId);\n return undefined === nodeId || nodeId === commands.target.currentAnimationTransformNodeId;\n }\n\n public addCommands(commands: RenderCommands): void {\n if (this.shouldAddCommands(commands))\n commands.addBranch(this);\n }\n\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\n if (this.shouldAddCommands(commands))\n commands.addHiliteBranch(this, pass);\n }\n}\n\n/** @internal */\nexport class AnimationTransformBranch extends Graphic {\n public readonly nodeId: number;\n public readonly graphic: Graphic;\n\n public constructor(graphic: RenderGraphic, nodeId: number) {\n super();\n assert(graphic instanceof Graphic);\n this.graphic = graphic;\n this.nodeId = nodeId;\n }\n\n public override dispose() {\n this.graphic[Symbol.dispose]();\n }\n\n public override get isDisposed() {\n return this.graphic.isDisposed;\n }\n\n public override get isPickable() {\n return this.graphic.isPickable;\n }\n\n public override collectStatistics(stats: RenderMemory.Statistics) {\n this.graphic.collectStatistics(stats);\n }\n\n public override unionRange(range: Range3d) {\n this.graphic.unionRange(range);\n }\n\n public override addCommands(commands: RenderCommands) {\n commands.target.currentAnimationTransformNodeId = this.nodeId;\n this.graphic.addCommands(commands);\n commands.target.currentAnimationTransformNodeId = undefined;\n }\n\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass) {\n commands.target.currentAnimationTransformNodeId = this.nodeId;\n this.graphic.addHiliteCommands(commands, pass);\n commands.target.currentAnimationTransformNodeId = undefined;\n }\n}\n\n/** @internal */\nexport class WorldDecorations extends Branch {\n public constructor(viewFlags: ViewFlags) {\n super(new GraphicBranch(), Transform.identity, viewFlags);\n\n // World decorations ignore all the symbology overrides for the \"scene\" geometry...\n this.branch.symbologyOverrides = new FeatureSymbology.Overrides();\n // Make all subcategories visible.\n this.branch.symbologyOverrides.ignoreSubCategory = true;\n }\n\n public init(decs: GraphicList): void {\n this.branch.clear();\n for (const dec of decs) {\n this.branch.add(dec);\n }\n }\n}\n/** @internal */\nexport class GraphicsArray extends Graphic {\n // Note: We assume the graphics array we get contains undisposed graphics to start\n constructor(public graphics: RenderGraphic[]) { super(); }\n\n public get isDisposed(): boolean { return 0 === this.graphics.length; }\n\n public override get isPickable(): boolean {\n return this.graphics.some((x) => (x as Graphic).isPickable);\n }\n\n public dispose() {\n for (const graphic of this.graphics)\n dispose(graphic);\n this.graphics.length = 0;\n }\n\n public addCommands(commands: RenderCommands): void {\n for (const graphic of this.graphics) {\n (graphic as Graphic).addCommands(commands);\n }\n }\n\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\n for (const graphic of this.graphics) {\n (graphic as Graphic).addHiliteCommands(commands, pass);\n }\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n for (const graphic of this.graphics)\n graphic.collectStatistics(stats);\n }\n\n public override unionRange(range: Range3d) {\n for (const graphic of this.graphics)\n graphic.unionRange(range);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Graphic.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/Graphic.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose, Id64String } from \"@itwin/core-bentley\";\nimport { ContourDisplay, ElementAlignedBox3d, FeatureAppearanceProvider, RenderFeatureTable, ThematicDisplayMode, ViewFlags } from \"@itwin/core-common\";\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\nimport { IModelConnection } from \"../../../IModelConnection\";\nimport { FeatureSymbology } from \"../../../render/FeatureSymbology\";\nimport { GraphicBranch, GraphicBranchOptions } from \"../../../render/GraphicBranch\";\nimport { GraphicList, RenderGraphic } from \"../../../render/RenderGraphic\";\nimport { RenderMemory } from \"../../../render/RenderMemory\";\nimport { ClipVolume } from \"./ClipVolume\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { EdgeSettings } from \"./EdgeSettings\";\nimport { FeatureOverrides } from \"./FeatureOverrides\";\nimport { PlanarClassifier } from \"./PlanarClassifier\";\nimport { Primitive } from \"./Primitive\";\nimport { RenderCommands } from \"./RenderCommands\";\nimport { RenderPass } from \"./RenderFlags\";\nimport { Target } from \"./Target\";\nimport { TextureDrape } from \"./TextureDrape\";\nimport { ThematicSensors } from \"./ThematicSensors\";\nimport { BranchState } from \"./BranchState\";\nimport { BatchOptions } from \"../../../common/render/BatchOptions\";\nimport { Contours } from \"./Contours\";\nimport { GraphicBranchFrustum } from \"../GraphicBranchFrustum\";\n\n/** @internal */\nexport abstract class Graphic extends RenderGraphic implements WebGLDisposable {\n public abstract addCommands(_commands: RenderCommands): void;\n public abstract get isDisposed(): boolean;\n public abstract get isPickable(): boolean;\n public addHiliteCommands(_commands: RenderCommands, _pass: RenderPass): void { assert(false); }\n public toPrimitive(): Primitive | undefined { return undefined; }\n}\n\nexport class GraphicOwner extends Graphic {\n private readonly _graphic: Graphic;\n\n public constructor(graphic: Graphic) {\n super();\n this._graphic = graphic;\n }\n\n public get graphic(): RenderGraphic { return this._graphic; }\n\n private _isDisposed = false;\n public get isDisposed(): boolean { return this._isDisposed; }\n public dispose(): void { this._isDisposed = true; }\n public disposeGraphic(): void {\n this.graphic[Symbol.dispose]();\n }\n public collectStatistics(stats: RenderMemory.Statistics): void {\n this.graphic.collectStatistics(stats);\n }\n\n public override unionRange(range: Range3d) {\n this.graphic.unionRange(range);\n }\n\n public addCommands(commands: RenderCommands): void {\n this._graphic.addCommands(commands);\n }\n public override get isPickable(): boolean {\n return this._graphic.isPickable;\n }\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\n this._graphic.addHiliteCommands(commands, pass);\n }\n public override toPrimitive(): Primitive | undefined {\n return this._graphic.toPrimitive();\n }\n}\n\n/** Transiently assigned to a Batch while rendering a frame, reset afterward. Used to provide context for pick IDs.\n * @internal\n */\nexport interface BatchContext {\n batchId: number;\n iModel?: IModelConnection;\n transformFromIModel?: Transform;\n viewAttachmentId?: Id64String;\n inSectionDrawingAttachment?: boolean;\n}\n\n/** @internal exported strictly for tests. */\nexport class PerTargetBatchData {\n public readonly target: Target;\n protected readonly _featureOverrides = new Map<FeatureSymbology.Source | undefined, FeatureOverrides>();\n protected _contours?: Contours;\n protected _thematicSensors?: ThematicSensors;\n\n public constructor(target: Target) {\n this.target = target;\n }\n\n public [Symbol.dispose](): void {\n this._thematicSensors = dispose(this._thematicSensors);\n this._contours = this._contours?.[Symbol.dispose]();\n for (const value of this._featureOverrides.values())\n dispose(value);\n\n this._featureOverrides.clear();\n }\n\n public getThematicSensors(batch: Batch): ThematicSensors {\n if (this._thematicSensors && !this._thematicSensors.matchesTarget(this.target))\n this._thematicSensors = dispose(this._thematicSensors);\n\n if (!this._thematicSensors)\n this._thematicSensors = ThematicSensors.create(this.target, batch.range);\n\n this._thematicSensors.update(this.target.uniforms.frustum.viewMatrix);\n return this._thematicSensors;\n }\n\n public getFeatureOverrides(batch: Batch): FeatureOverrides {\n const source = this.target.currentFeatureSymbologyOverrides?.source;\n let ovrs = this._featureOverrides.get(source);\n if (!ovrs) {\n const cleanup = source ? source.onSourceDisposed.addOnce(() => this.onSourceDisposed(source)) : undefined;\n this._featureOverrides.set(source, ovrs = FeatureOverrides.createFromTarget(this.target, batch.options, cleanup));\n ovrs.initFromMap(batch.featureTable);\n }\n\n ovrs.update(batch.featureTable);\n return ovrs;\n }\n\n public getContours(batch: Batch): Contours {\n if (this._contours && !this._contours.matchesTargetAndFeatureCount(this.target, batch.featureTable))\n this._contours = this._contours[Symbol.dispose]();\n\n if (!this._contours) {\n this._contours = Contours.createFromTarget(this.target, batch.options);\n this._contours.initFromMap(batch.featureTable);\n } else {\n this._contours.update(batch.featureTable);\n }\n return this._contours;\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n if (this._thematicSensors)\n stats.addThematicTexture(this._thematicSensors.bytesUsed);\n\n for (const ovrs of this._featureOverrides.values())\n stats.addFeatureOverrides(ovrs.byteLength);\n\n if (this._contours)\n stats.addContours(this._contours.byteLength);\n }\n\n /** Exposed strictly for tests. */\n public get featureOverrides() { return this._featureOverrides; }\n\n private onSourceDisposed(source: FeatureSymbology.Source): void {\n const ovrs = this._featureOverrides.get(source);\n if (ovrs) {\n this._featureOverrides.delete(source);\n ovrs[Symbol.dispose]();\n }\n }\n}\n\n/** @internal exported strictly for tests. */\nexport class PerTargetData {\n private readonly _batch: Batch;\n private readonly _data: PerTargetBatchData[] = [];\n\n public constructor(batch: Batch) {\n this._batch = batch;\n }\n\n public [Symbol.dispose](): void {\n for (const data of this._data) {\n data.target.onBatchDisposed(this._batch);\n data[Symbol.dispose]();\n }\n\n this._data.length = 0;\n }\n\n public get isDisposed(): boolean {\n return this._data.length === 0;\n }\n\n /** Exposed strictly for tests. */\n public get data(): PerTargetBatchData[] { return this._data; }\n\n public onTargetDisposed(target: Target): void {\n const index = this._data.findIndex((x) => x.target === target);\n if (-1 === index)\n return;\n\n const data = this._data[index];\n data[Symbol.dispose]();\n this._data.splice(index, 1);\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n for (const data of this._data)\n data.collectStatistics(stats);\n }\n\n public getThematicSensors(target: Target): ThematicSensors {\n return this.getBatchData(target).getThematicSensors(this._batch);\n }\n\n public getFeatureOverrides(target: Target): FeatureOverrides {\n return this.getBatchData(target).getFeatureOverrides(this._batch);\n }\n\n public getContours(target: Target): Contours {\n return this.getBatchData(target).getContours(this._batch);\n }\n\n private getBatchData(target: Target): PerTargetBatchData {\n let data = this._data.find((x) => x.target === target);\n if (!data) {\n this._data.push(data = new PerTargetBatchData(target));\n target.addBatch(this._batch);\n }\n\n return data;\n }\n}\n\n/** @internal */\nexport class Batch extends Graphic {\n public readonly graphic: RenderGraphic;\n public readonly featureTable: RenderFeatureTable;\n public readonly range: ElementAlignedBox3d;\n private readonly _context: BatchContext = { batchId: 0 };\n /** Public strictly for tests. */\n public readonly perTargetData = new PerTargetData(this);\n public readonly options: BatchOptions;\n\n // Chiefly for debugging.\n public get tileId(): string | undefined {\n return this.options.tileId;\n }\n\n public get locateOnly(): boolean {\n return true === this.options.locateOnly;\n }\n\n /** The following are valid only during a draw and reset afterward. */\n public get batchId() { return this._context.batchId; }\n public get batchIModel() { return this._context.iModel; }\n public get transformFromBatchIModel() { return this._context.transformFromIModel; }\n public get viewAttachmentId() { return this._context.viewAttachmentId; }\n public get inSectionDrawingAttachment() { return this._context.inSectionDrawingAttachment; }\n\n public setContext(batchId: number, branch: BranchState) {\n this._context.batchId = batchId;\n this._context.iModel = branch.iModel;\n this._context.transformFromIModel = branch.transformFromIModel;\n this._context.viewAttachmentId = branch.viewAttachmentId;\n this._context.inSectionDrawingAttachment = branch.inSectionDrawingAttachment;\n }\n\n public resetContext() {\n this._context.batchId = 0;\n this._context.iModel = undefined;\n this._context.transformFromIModel = undefined;\n this._context.viewAttachmentId = undefined;\n this._context.inSectionDrawingAttachment = undefined;\n }\n\n public constructor(graphic: RenderGraphic, features: RenderFeatureTable, range: ElementAlignedBox3d, options?: BatchOptions) {\n super();\n this.graphic = graphic;\n this.featureTable = features;\n this.range = range;\n this.options = options ?? {};\n }\n\n private _isDisposed = false;\n public get isDisposed(): boolean {\n return this._isDisposed && this.perTargetData.isDisposed;\n }\n\n // Note: This does not remove FeatureOverrides from the array, but rather disposes of the WebGL resources they contain\n public dispose() {\n dispose(this.graphic);\n\n this.perTargetData[Symbol.dispose]();\n this._isDisposed = true;\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n this.graphic.collectStatistics(stats);\n stats.addFeatureTable(this.featureTable.byteLength);\n this.perTargetData.collectStatistics(stats);\n }\n\n public override unionRange(range: Range3d) {\n range.extendRange(this.range);\n }\n\n public addCommands(commands: RenderCommands): void {\n commands.addBatch(this);\n }\n\n public override get isPickable(): boolean {\n return true;\n }\n\n public getThematicSensors(target: Target): ThematicSensors {\n assert(target.plan.thematic !== undefined, \"thematic display settings must exist\");\n assert(target.plan.thematic.displayMode === ThematicDisplayMode.InverseDistanceWeightedSensors, \"thematic display mode must be sensor-based\");\n assert(target.plan.thematic.sensorSettings.sensors.length > 0, \"must have at least one sensor to process\");\n\n return this.perTargetData.getThematicSensors(target);\n }\n\n public getOverrides(target: Target): FeatureOverrides {\n return this.perTargetData.getFeatureOverrides(target);\n }\n\n public getContours(target: Target): Contours {\n return this.perTargetData.getContours(target);\n }\n\n public onTargetDisposed(target: Target) {\n this.perTargetData.onTargetDisposed(target);\n }\n}\n\n/** @internal */\nexport class Branch extends Graphic {\n public readonly branch: GraphicBranch;\n public localToWorldTransform: Transform;\n public readonly clips?: ClipVolume;\n public readonly planarClassifier?: PlanarClassifier;\n public readonly textureDrape?: TextureDrape;\n public readonly layerClassifiers?: Map<number, PlanarClassifier>;\n public readonly edgeSettings?: EdgeSettings;\n public readonly iModel?: IModelConnection; // used chiefly for readPixels to identify context of picked Ids.\n public readonly frustum?: GraphicBranchFrustum;\n public readonly appearanceProvider?: FeatureAppearanceProvider;\n public readonly secondaryClassifiers?: PlanarClassifier[];\n public readonly viewAttachmentId?: Id64String;\n public readonly inSectionDrawingAttachment?: boolean;\n public disableClipStyle?: true;\n public readonly transformFromExternalIModel?: Transform;\n public contourLine?: ContourDisplay;\n\n public constructor(branch: GraphicBranch, localToWorld: Transform, viewFlags?: ViewFlags, opts?: GraphicBranchOptions) {\n super();\n this.branch = branch;\n this.localToWorldTransform = localToWorld;\n\n if (undefined !== viewFlags)\n branch.setViewFlags(viewFlags);\n\n if (!opts)\n return;\n\n this.appearanceProvider = opts.appearanceProvider;\n this.clips = opts.clipVolume as ClipVolume | undefined;\n this.iModel = opts.iModel;\n this.frustum = opts.frustum;\n this.viewAttachmentId = opts.viewAttachmentId;\n this.inSectionDrawingAttachment = opts.inSectionDrawingAttachment;\n this.disableClipStyle = opts.disableClipStyle;\n this.transformFromExternalIModel = opts.transformFromIModel;\n this.contourLine = opts.contours;\n\n if (opts.hline)\n this.edgeSettings = EdgeSettings.create(opts.hline);\n\n if (opts.classifierOrDrape instanceof PlanarClassifier)\n this.planarClassifier = opts.classifierOrDrape;\n else if (opts.classifierOrDrape instanceof TextureDrape)\n this.textureDrape = opts.classifierOrDrape;\n\n if (opts.secondaryClassifiers) {\n this.secondaryClassifiers = new Array<PlanarClassifier>();\n opts.secondaryClassifiers.forEach((classifier) => {\n if (classifier instanceof PlanarClassifier)\n this.secondaryClassifiers?.push(classifier);\n });\n }\n }\n\n public get isDisposed(): boolean {\n return 0 === this.branch.entries.length;\n }\n\n public dispose() {\n this.branch[Symbol.dispose]();\n }\n\n public override get isPickable(): boolean {\n return this.branch.entries.some((gf) => (gf as Graphic).isPickable);\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n this.branch.collectStatistics(stats);\n }\n\n public override unionRange(range: Range3d) {\n const thisRange = new Range3d();\n for (const graphic of this.branch.entries)\n graphic.unionRange(thisRange);\n\n this.localToWorldTransform.multiplyRange(thisRange, thisRange);\n range.extendRange(thisRange);\n }\n\n private shouldAddCommands(commands: RenderCommands): boolean {\n const group = commands.target.currentBranch.groupNodeId;\n if (undefined !== group && undefined !== this.branch.groupNodeId && this.branch.groupNodeId !== group)\n return false;\n\n const nodeId = commands.target.getAnimationTransformNodeId(this.branch.animationNodeId);\n return undefined === nodeId || nodeId === commands.target.currentAnimationTransformNodeId;\n }\n\n public addCommands(commands: RenderCommands): void {\n if (this.shouldAddCommands(commands))\n commands.addBranch(this);\n }\n\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\n if (this.shouldAddCommands(commands))\n commands.addHiliteBranch(this, pass);\n }\n}\n\n/** @internal */\nexport class AnimationTransformBranch extends Graphic {\n public readonly nodeId: number;\n public readonly graphic: Graphic;\n\n public constructor(graphic: RenderGraphic, nodeId: number) {\n super();\n assert(graphic instanceof Graphic);\n this.graphic = graphic;\n this.nodeId = nodeId;\n }\n\n public override dispose() {\n this.graphic[Symbol.dispose]();\n }\n\n public override get isDisposed() {\n return this.graphic.isDisposed;\n }\n\n public override get isPickable() {\n return this.graphic.isPickable;\n }\n\n public override collectStatistics(stats: RenderMemory.Statistics) {\n this.graphic.collectStatistics(stats);\n }\n\n public override unionRange(range: Range3d) {\n this.graphic.unionRange(range);\n }\n\n public override addCommands(commands: RenderCommands) {\n commands.target.currentAnimationTransformNodeId = this.nodeId;\n this.graphic.addCommands(commands);\n commands.target.currentAnimationTransformNodeId = undefined;\n }\n\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass) {\n commands.target.currentAnimationTransformNodeId = this.nodeId;\n this.graphic.addHiliteCommands(commands, pass);\n commands.target.currentAnimationTransformNodeId = undefined;\n }\n}\n\n/** @internal */\nexport class WorldDecorations extends Branch {\n public constructor(viewFlags: ViewFlags) {\n super(new GraphicBranch(), Transform.identity, viewFlags);\n\n // World decorations ignore all the symbology overrides for the \"scene\" geometry...\n this.branch.symbologyOverrides = new FeatureSymbology.Overrides();\n // Make all subcategories visible.\n this.branch.symbologyOverrides.ignoreSubCategory = true;\n }\n\n public init(decs: GraphicList): void {\n this.branch.clear();\n for (const dec of decs) {\n this.branch.add(dec);\n }\n }\n}\n/** @internal */\nexport class GraphicsArray extends Graphic {\n // Note: We assume the graphics array we get contains undisposed graphics to start\n constructor(public graphics: RenderGraphic[]) { super(); }\n\n public get isDisposed(): boolean { return 0 === this.graphics.length; }\n\n public override get isPickable(): boolean {\n return this.graphics.some((x) => (x as Graphic).isPickable);\n }\n\n public dispose() {\n for (const graphic of this.graphics)\n dispose(graphic);\n this.graphics.length = 0;\n }\n\n public addCommands(commands: RenderCommands): void {\n for (const graphic of this.graphics) {\n (graphic as Graphic).addCommands(commands);\n }\n }\n\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\n for (const graphic of this.graphics) {\n (graphic as Graphic).addHiliteCommands(commands, pass);\n }\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n for (const graphic of this.graphics)\n graphic.collectStatistics(stats);\n }\n\n public override unionRange(range: Range3d) {\n for (const graphic of this.graphics)\n graphic.unionRange(range);\n }\n}\n"]}
|
|
@@ -1414,7 +1414,7 @@ class Compositor extends SceneCompositor {
|
|
|
1414
1414
|
}
|
|
1415
1415
|
readContours(rect) {
|
|
1416
1416
|
// Are we actually drawing any contours? If not, don't bother reading an array of all zeroes off the GPU.
|
|
1417
|
-
const contours = this.target.
|
|
1417
|
+
const contours = this.target.currentContours;
|
|
1418
1418
|
if (!contours || !contours.displayContours || contours.groups.length === 0) {
|
|
1419
1419
|
return undefined;
|
|
1420
1420
|
}
|
|
@@ -1592,6 +1592,7 @@ class Compositor extends SceneCompositor {
|
|
|
1592
1592
|
iModel: top.iModel,
|
|
1593
1593
|
is3d: top.is3d,
|
|
1594
1594
|
edgeSettings: top.edgeSettings,
|
|
1595
|
+
contourLine: top.contourLine,
|
|
1595
1596
|
});
|
|
1596
1597
|
this._vcSetStencilRenderState = new RenderState();
|
|
1597
1598
|
this._vcCopyZRenderState = new RenderState();
|