@itwin/core-frontend 5.1.0-dev.60 → 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.
Files changed (79) hide show
  1. package/lib/cjs/DrawingViewState.d.ts.map +1 -1
  2. package/lib/cjs/DrawingViewState.js +1 -0
  3. package/lib/cjs/DrawingViewState.js.map +1 -1
  4. package/lib/cjs/internal/render/webgl/BatchUniforms.js +1 -1
  5. package/lib/cjs/internal/render/webgl/BatchUniforms.js.map +1 -1
  6. package/lib/cjs/internal/render/webgl/BranchStack.d.ts +2 -2
  7. package/lib/cjs/internal/render/webgl/BranchStack.d.ts.map +1 -1
  8. package/lib/cjs/internal/render/webgl/BranchStack.js +3 -2
  9. package/lib/cjs/internal/render/webgl/BranchStack.js.map +1 -1
  10. package/lib/cjs/internal/render/webgl/BranchState.d.ts +4 -2
  11. package/lib/cjs/internal/render/webgl/BranchState.d.ts.map +1 -1
  12. package/lib/cjs/internal/render/webgl/BranchState.js +4 -1
  13. package/lib/cjs/internal/render/webgl/BranchState.js.map +1 -1
  14. package/lib/cjs/internal/render/webgl/BranchUniforms.d.ts +2 -2
  15. package/lib/cjs/internal/render/webgl/BranchUniforms.d.ts.map +1 -1
  16. package/lib/cjs/internal/render/webgl/BranchUniforms.js +2 -2
  17. package/lib/cjs/internal/render/webgl/BranchUniforms.js.map +1 -1
  18. package/lib/cjs/internal/render/webgl/ContourUniforms.d.ts.map +1 -1
  19. package/lib/cjs/internal/render/webgl/ContourUniforms.js +2 -3
  20. package/lib/cjs/internal/render/webgl/ContourUniforms.js.map +1 -1
  21. package/lib/cjs/internal/render/webgl/Contours.js +8 -8
  22. package/lib/cjs/internal/render/webgl/Contours.js.map +1 -1
  23. package/lib/cjs/internal/render/webgl/Graphic.d.ts +2 -1
  24. package/lib/cjs/internal/render/webgl/Graphic.d.ts.map +1 -1
  25. package/lib/cjs/internal/render/webgl/Graphic.js +2 -0
  26. package/lib/cjs/internal/render/webgl/Graphic.js.map +1 -1
  27. package/lib/cjs/internal/render/webgl/SceneCompositor.js +2 -1
  28. package/lib/cjs/internal/render/webgl/SceneCompositor.js.map +1 -1
  29. package/lib/cjs/internal/render/webgl/Target.d.ts +2 -1
  30. package/lib/cjs/internal/render/webgl/Target.d.ts.map +1 -1
  31. package/lib/cjs/internal/render/webgl/Target.js +3 -1
  32. package/lib/cjs/internal/render/webgl/Target.js.map +1 -1
  33. package/lib/cjs/render/GraphicBranch.d.ts +3 -1
  34. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  35. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  36. package/lib/cjs/render/RenderSystem.d.ts +1 -1
  37. package/lib/cjs/render/RenderSystem.js.map +1 -1
  38. package/lib/cjs/render/ScreenSpaceEffectBuilder.d.ts +1 -1
  39. package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
  40. package/lib/esm/DrawingViewState.d.ts.map +1 -1
  41. package/lib/esm/DrawingViewState.js +1 -0
  42. package/lib/esm/DrawingViewState.js.map +1 -1
  43. package/lib/esm/internal/render/webgl/BatchUniforms.js +1 -1
  44. package/lib/esm/internal/render/webgl/BatchUniforms.js.map +1 -1
  45. package/lib/esm/internal/render/webgl/BranchStack.d.ts +2 -2
  46. package/lib/esm/internal/render/webgl/BranchStack.d.ts.map +1 -1
  47. package/lib/esm/internal/render/webgl/BranchStack.js +3 -2
  48. package/lib/esm/internal/render/webgl/BranchStack.js.map +1 -1
  49. package/lib/esm/internal/render/webgl/BranchState.d.ts +4 -2
  50. package/lib/esm/internal/render/webgl/BranchState.d.ts.map +1 -1
  51. package/lib/esm/internal/render/webgl/BranchState.js +4 -1
  52. package/lib/esm/internal/render/webgl/BranchState.js.map +1 -1
  53. package/lib/esm/internal/render/webgl/BranchUniforms.d.ts +2 -2
  54. package/lib/esm/internal/render/webgl/BranchUniforms.d.ts.map +1 -1
  55. package/lib/esm/internal/render/webgl/BranchUniforms.js +2 -2
  56. package/lib/esm/internal/render/webgl/BranchUniforms.js.map +1 -1
  57. package/lib/esm/internal/render/webgl/ContourUniforms.d.ts.map +1 -1
  58. package/lib/esm/internal/render/webgl/ContourUniforms.js +2 -3
  59. package/lib/esm/internal/render/webgl/ContourUniforms.js.map +1 -1
  60. package/lib/esm/internal/render/webgl/Contours.js +8 -8
  61. package/lib/esm/internal/render/webgl/Contours.js.map +1 -1
  62. package/lib/esm/internal/render/webgl/Graphic.d.ts +2 -1
  63. package/lib/esm/internal/render/webgl/Graphic.d.ts.map +1 -1
  64. package/lib/esm/internal/render/webgl/Graphic.js +2 -0
  65. package/lib/esm/internal/render/webgl/Graphic.js.map +1 -1
  66. package/lib/esm/internal/render/webgl/SceneCompositor.js +2 -1
  67. package/lib/esm/internal/render/webgl/SceneCompositor.js.map +1 -1
  68. package/lib/esm/internal/render/webgl/Target.d.ts +2 -1
  69. package/lib/esm/internal/render/webgl/Target.d.ts.map +1 -1
  70. package/lib/esm/internal/render/webgl/Target.js +3 -1
  71. package/lib/esm/internal/render/webgl/Target.js.map +1 -1
  72. package/lib/esm/render/GraphicBranch.d.ts +3 -1
  73. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  74. package/lib/esm/render/GraphicBranch.js.map +1 -1
  75. package/lib/esm/render/RenderSystem.d.ts +1 -1
  76. package/lib/esm/render/RenderSystem.js.map +1 -1
  77. package/lib/esm/render/ScreenSpaceEffectBuilder.d.ts +1 -1
  78. package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
  79. package/package.json +23 -22
@@ -1 +1 @@
1
- {"version":3,"file":"BranchUniforms.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/BranchUniforms.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 } from \"@itwin/core-bentley\";\nimport { ClipVector, Matrix3d, Matrix4d, Point3d, Transform, XYZ } from \"@itwin/core-geometry\";\nimport { ClipStyle, HiddenLine, ViewFlags } from \"@itwin/core-common\";\nimport { FeatureSymbology } from \"../../../render/FeatureSymbology\";\nimport { BranchState } from \"./BranchState\";\nimport { BranchStack } from \"./BranchStack\";\nimport { BatchState } from \"./BatchState\";\nimport { CachedGeometry } from \"./CachedGeometry\";\nimport { Branch } from \"./Graphic\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { Matrix3, Matrix4 } from \"./Matrix\";\nimport { RenderCommands } from \"./RenderCommands\";\nimport { desync, sync, SyncToken } from \"./Sync\";\nimport { Target } from \"./Target\";\nimport { ClipStack } from \"./ClipStack\";\nimport { IModelApp } from \"../../../IModelApp\";\n\nfunction equalXYZs(a: XYZ | undefined, b: XYZ | undefined): boolean {\n if (a === b)\n return true;\n\n if ((undefined === a) !== (undefined === b))\n return false;\n\n if (undefined !== a && undefined !== b)\n return a.isExactEqual(b);\n\n assert(undefined === a && undefined === b);\n return true;\n}\n\n/** Maintains uniform variable state associated with the Branch currently being drawn by a Target.\n * @internal\n */\nexport class BranchUniforms {\n public readonly clipStack: ClipStack;\n private _viewClipEnabled = false;\n\n // The model-view and model-view-projection matrices depend on the frustum.\n public syncToken?: SyncToken;\n public syncKey = 0;\n private readonly _stack = new BranchStack();\n private readonly _target: Target;\n\n // Parameters that affect synchronization.\n private _isInstanced = false;\n private _viewIndependentOrigin?: Point3d;\n\n // CPU state\n private readonly _mv = Matrix4d.createIdentity();\n private readonly _mvp = Matrix4d.createIdentity();\n\n // GPU state\n private readonly _mv32 = new Matrix4();\n private readonly _mvp32 = new Matrix4();\n private readonly _m32 = new Matrix4();\n private readonly _v32 = new Matrix3();\n\n // Working state\n private readonly _scratchTransform = Transform.createIdentity();\n private readonly _scratchTransform2 = Transform.createIdentity();\n private readonly _scratchViewToWorld = Matrix3d.createIdentity();\n private readonly _scratchVIModelMatrix = Transform.createIdentity();\n private readonly _zeroPoint = new Point3d(0, 0, 0);\n\n public get stack(): BranchStack { return this._stack; }\n\n public constructor(target: Target) {\n this._target = target;\n this.clipStack = new ClipStack(\n () => target.uniforms.frustum.viewMatrix,\n () => this._viewClipEnabled && this.top.viewFlags.clipVolume,\n );\n }\n\n public createBatchState(): BatchState {\n return new BatchState(this._stack);\n }\n\n public createRenderCommands(batchState: BatchState): RenderCommands {\n return new RenderCommands(this._target, this._stack, batchState);\n }\n\n public get modelViewMatrix(): Matrix4d {\n return this._mv;\n }\n\n public get top(): BranchState {\n return this._stack.top;\n }\n\n public get length(): number {\n return this._stack.length;\n }\n\n public pushBranch(branch: Branch): void {\n desync(this);\n this._stack.pushBranch(branch);\n\n this.setClipStyle(this.top.disableClipStyle);\n\n if (this.top.clipVolume)\n this.clipStack.push(this.top.clipVolume);\n\n if (branch.branch.realityModelDisplaySettings)\n this._target.uniforms.realityModel.update(branch.branch.realityModelDisplaySettings);\n }\n\n public pushState(state: BranchState): void {\n desync(this);\n this._stack.pushState(state);\n if (this.top.clipVolume)\n this.clipStack.push(this.top.clipVolume);\n\n if (state.realityModelDisplaySettings)\n this._target.uniforms.realityModel.update(state.realityModelDisplaySettings);\n }\n\n public pop(): void {\n desync(this);\n if (this.top.clipVolume)\n this.clipStack.pop();\n\n this._stack.pop();\n this.setClipStyle(this.top.disableClipStyle);\n }\n\n public pushViewClip(): void {\n assert(!this._viewClipEnabled);\n this._viewClipEnabled = true;\n\n // Target.readPixels() pushes another BranchState before pushing view clip...\n assert((this._target.isReadPixelsInProgress ? 2 : 1) === this._stack.length);\n }\n\n public popViewClip(): void {\n assert(this._viewClipEnabled);\n this._viewClipEnabled = false;\n assert((this._target.isReadPixelsInProgress ? 2 : 1) === this._stack.length);\n }\n\n public changeRenderPlan(vf: ViewFlags, is3d: boolean, hline: HiddenLine.Settings | undefined): void {\n this._stack.changeRenderPlan(vf, is3d, hline);\n }\n\n public updateViewClip(clip: ClipVector | undefined, style: ClipStyle): void {\n this.clipStack.setViewClip(clip, style);\n }\n\n public overrideFeatureSymbology(ovr: FeatureSymbology.Overrides): void {\n this._stack.setSymbologyOverrides(ovr);\n }\n\n public bindModelViewMatrix(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean): void {\n if (this.update(uniform, geom, isViewCoords))\n uniform.setMatrix4(this._mv32);\n }\n\n public bindModelViewProjectionMatrix(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean): void {\n if (this.update(uniform, geom, isViewCoords))\n uniform.setMatrix4(this._mvp32);\n }\n\n public bindModelToWorldTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\n if (this.update(uniform, geom, isViewCoords))\n uniform.setMatrix4(this._m32);\n }\n\n public bindWorldToViewNTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\n if (this.update(uniform, geom, isViewCoords))\n uniform.setMatrix3(this._v32);\n }\n\n private update(uniform: UniformHandle, geometry: CachedGeometry, isViewCoords: boolean): boolean {\n const uniforms = this._target.uniforms[isViewCoords ? \"viewRect\" : \"frustum\"];\n if (!sync(uniforms, this))\n desync(this);\n\n const instancedGeom = geometry.asInstanced;\n if (undefined !== instancedGeom || this._isInstanced) {\n this._isInstanced = undefined !== instancedGeom;\n desync(this);\n }\n\n const vio = geometry.viewIndependentOrigin;\n if (!equalXYZs(vio, this._viewIndependentOrigin)) {\n this._viewIndependentOrigin = vio;\n desync(this);\n }\n\n if (sync(this, uniform))\n return false;\n\n let mv;\n const modelMatrix = this._target.currentTransform;\n if (isViewCoords) {\n // Zero out Z for silly clipping tools...\n mv = modelMatrix.clone(this._scratchTransform);\n mv.matrix.coffs[2] = mv.matrix.coffs[5] = mv.matrix.coffs[8] = 0.0;\n if (instancedGeom)\n mv = instancedGeom.getRtcModelTransform(mv);\n\n // Scale based on device-pixel ratio.\n const scale = this._target.devicePixelRatio;\n const viewMatrix = Transform.createScaleAboutPoint(this._zeroPoint, scale, this._scratchTransform2);\n viewMatrix.multiplyTransformTransform(mv, mv);\n } else {\n const viewMatrix = this._target.uniforms.frustum.viewMatrix;\n\n if (undefined !== instancedGeom) {\n // For instanced geometry, the \"model view\" matrix is really a transform from center of instanced geometry range to view.\n // Shader will compute final model-view matrix based on this and the per-instance transform.\n if (vio) {\n const viewToWorldRot = viewMatrix.matrix.inverse(this._scratchViewToWorld)!;\n const rotateAboutOrigin = Transform.createFixedPointAndMatrix(vio, viewToWorldRot, this._scratchTransform2);\n const viModelMatrix = rotateAboutOrigin.multiplyTransformTransform(instancedGeom.getRtcModelTransform(modelMatrix), this._scratchVIModelMatrix);\n mv = viewMatrix.multiplyTransformTransform(viModelMatrix, this._scratchTransform);\n } else {\n mv = viewMatrix.multiplyTransformTransform(instancedGeom.getRtcModelTransform(modelMatrix), this._scratchTransform);\n }\n } else {\n if (undefined !== vio) {\n const viewToWorldRot = viewMatrix.matrix.inverse(this._scratchViewToWorld)!;\n const rotateAboutOrigin = Transform.createFixedPointAndMatrix(vio, viewToWorldRot, this._scratchTransform2);\n const viModelMatrix = rotateAboutOrigin.multiplyTransformTransform(modelMatrix, this._scratchVIModelMatrix);\n mv = viewMatrix.multiplyTransformTransform(viModelMatrix, this._scratchTransform);\n } else {\n mv = viewMatrix.multiplyTransformTransform(modelMatrix, this._scratchTransform);\n }\n }\n }\n\n if (this._target.wantThematicDisplay) {\n this._m32.initFromTransform(modelMatrix);\n this._v32.initFromMatrix3d(this._target.uniforms.frustum.viewMatrix.matrix);\n } else if (undefined !== geometry.asSurface?.mesh.constantLodVParams || this._target.uniforms.batch.wantContourLines) {\n this._m32.initFromTransform(modelMatrix);\n }\n\n Matrix4d.createTransform(mv, this._mv);\n this._mv32.initFromTransform(mv);\n\n // Don't bother computing mvp for instanced geometry - it's not used.\n if (!this._isInstanced) {\n uniforms.projectionMatrix.multiplyMatrixMatrix(this._mv, this._mvp);\n this._mvp32.initFromMatrix4d(this._mvp);\n }\n\n return true;\n }\n\n // set the clip style based on disableClipStyle\n private setClipStyle(disableClipStyle: true | undefined) {\n const vp = IModelApp.viewManager.selectedView;\n if (vp) {\n const style = vp.view.displayStyle.settings.clipStyle;\n this.clipStack.insideColor.alpha = disableClipStyle ? 0 : (style.insideColor ? 1 : 0);\n this.clipStack.outsideColor.alpha = disableClipStyle ? 0 : (style.outsideColor ? 1 : 0);\n this.clipStack.intersectionStyle.alpha = disableClipStyle ? 0 : (style.intersectionStyle ? style.intersectionStyle.width : 0);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"BranchUniforms.js","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/BranchUniforms.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA6C;AAC7C,wDAA+F;AAI/F,+CAA4C;AAC5C,6CAA0C;AAI1C,qCAA4C;AAC5C,qDAAkD;AAClD,iCAAiD;AAEjD,2CAAwC;AACxC,kDAA+C;AAE/C,SAAS,SAAS,CAAC,CAAkB,EAAE,CAAkB;IACvD,IAAI,CAAC,KAAK,CAAC;QACT,OAAO,IAAI,CAAC;IAEd,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC;IAEf,IAAI,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC;QACpC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAE3B,IAAA,qBAAM,EAAC,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAa,cAAc;IACT,SAAS,CAAY;IAC7B,gBAAgB,GAAG,KAAK,CAAC;IAEjC,2EAA2E;IACpE,SAAS,CAAa;IACtB,OAAO,GAAG,CAAC,CAAC;IACF,MAAM,GAAG,IAAI,yBAAW,EAAE,CAAC;IAC3B,OAAO,CAAS;IAEjC,0CAA0C;IAClC,YAAY,GAAG,KAAK,CAAC;IACrB,sBAAsB,CAAW;IAEzC,YAAY;IACK,GAAG,GAAG,wBAAQ,CAAC,cAAc,EAAE,CAAC;IAChC,IAAI,GAAG,wBAAQ,CAAC,cAAc,EAAE,CAAC;IAElD,YAAY;IACK,KAAK,GAAG,IAAI,gBAAO,EAAE,CAAC;IACtB,MAAM,GAAG,IAAI,gBAAO,EAAE,CAAC;IACvB,IAAI,GAAG,IAAI,gBAAO,EAAE,CAAC;IACrB,IAAI,GAAG,IAAI,gBAAO,EAAE,CAAC;IAEtC,gBAAgB;IACC,iBAAiB,GAAG,yBAAS,CAAC,cAAc,EAAE,CAAC;IAC/C,kBAAkB,GAAG,yBAAS,CAAC,cAAc,EAAE,CAAC;IAChD,mBAAmB,GAAG,wBAAQ,CAAC,cAAc,EAAE,CAAC;IAChD,qBAAqB,GAAG,yBAAS,CAAC,cAAc,EAAE,CAAC;IACnD,UAAU,GAAG,IAAI,uBAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAEnD,IAAW,KAAK,KAAkB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvD,YAAmB,MAAc;QAC/B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAS,CAC5B,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EACxC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAC7D,CAAC;IACJ,CAAC;IAEM,gBAAgB;QACrB,OAAO,IAAI,uBAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAEM,oBAAoB,CAAC,UAAsB;QAChD,OAAO,IAAI,+BAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnE,CAAC;IAED,IAAW,eAAe;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IACzB,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAEM,UAAU,CAAC,MAAc;QAC9B,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC;QACb,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAE/B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU;YACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE3C,IAAI,MAAM,CAAC,MAAM,CAAC,2BAA2B;YAC3C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;IACzF,CAAC;IAEM,SAAS,CAAC,KAAkB;QACjC,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC;QACb,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU;YACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE3C,IAAI,KAAK,CAAC,2BAA2B;YACnC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACjF,CAAC;IAEM,GAAG;QACR,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC;QACb,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU;YACrB,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/C,CAAC;IAEM,YAAY;QACjB,IAAA,qBAAM,EAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE7B,6EAA6E;QAC7E,IAAA,qBAAM,EAAC,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/E,CAAC;IAEM,WAAW;QAChB,IAAA,qBAAM,EAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAA,qBAAM,EAAC,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/E,CAAC;IAEM,gBAAgB,CAAC,EAAa,EAAE,IAAa,EAAE,KAAsC,EAAE,WAAwC;QACpI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAC7D,CAAC;IAEM,cAAc,CAAC,IAA4B,EAAE,KAAgB;QAClE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAEM,wBAAwB,CAAC,GAA+B;QAC7D,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAEM,mBAAmB,CAAC,OAAsB,EAAE,IAAoB,EAAE,YAAqB;QAC5F,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC;YAC1C,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAEM,6BAA6B,CAAC,OAAsB,EAAE,IAAoB,EAAE,YAAqB;QACtG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC;YAC1C,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAEM,yBAAyB,CAAC,OAAsB,EAAE,IAAoB,EAAE,YAAqB;QAClG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC;YAC1C,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEM,yBAAyB,CAAC,OAAsB,EAAE,IAAoB,EAAE,YAAqB;QAClG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC;YAC1C,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEO,MAAM,CAAC,OAAsB,EAAE,QAAwB,EAAE,YAAqB;QACpF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9E,IAAI,CAAC,IAAA,WAAI,EAAC,QAAQ,EAAE,IAAI,CAAC;YACvB,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC;QAEf,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC;QAC3C,IAAI,SAAS,KAAK,aAAa,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACrD,IAAI,CAAC,YAAY,GAAG,SAAS,KAAK,aAAa,CAAC;YAChD,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC;QACf,CAAC;QAED,MAAM,GAAG,GAAG,QAAQ,CAAC,qBAAqB,CAAC;QAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,sBAAsB,GAAG,GAAG,CAAC;YAClC,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC;QACf,CAAC;QAED,IAAI,IAAA,WAAI,EAAC,IAAI,EAAE,OAAO,CAAC;YACrB,OAAO,KAAK,CAAC;QAEf,IAAI,EAAE,CAAC;QACP,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAClD,IAAI,YAAY,EAAE,CAAC;YACjB,yCAAyC;YACzC,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC/C,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YACnE,IAAI,aAAa;gBACf,EAAE,GAAG,aAAa,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;YAE9C,qCAAqC;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAC5C,MAAM,UAAU,GAAG,yBAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACpG,UAAU,CAAC,0BAA0B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;YAE5D,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;gBAChC,yHAAyH;gBACzH,4FAA4F;gBAC5F,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAE,CAAC;oBAC5E,MAAM,iBAAiB,GAAG,yBAAS,CAAC,yBAAyB,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBAC5G,MAAM,aAAa,GAAG,iBAAiB,CAAC,0BAA0B,CAAC,aAAa,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;oBAChJ,EAAE,GAAG,UAAU,CAAC,0BAA0B,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBACpF,CAAC;qBAAM,CAAC;oBACN,EAAE,GAAG,UAAU,CAAC,0BAA0B,CAAC,aAAa,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBACtH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;oBACtB,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAE,CAAC;oBAC5E,MAAM,iBAAiB,GAAG,yBAAS,CAAC,yBAAyB,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBAC5G,MAAM,aAAa,GAAG,iBAAiB,CAAC,0BAA0B,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;oBAC5G,EAAE,GAAG,UAAU,CAAC,0BAA0B,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBACpF,CAAC;qBAAM,CAAC;oBACN,EAAE,GAAG,UAAU,CAAC,0BAA0B,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9E,CAAC;aAAM,IAAI,SAAS,KAAK,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACrH,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC3C,CAAC;QAED,wBAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAEjC,qEAAqE;QACrE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,QAAQ,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,+CAA+C;IACvC,YAAY,CAAC,gBAAkC;QACrD,MAAM,EAAE,GAAG,qBAAS,CAAC,WAAW,CAAC,YAAY,CAAC;QAC9C,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;YACtD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtF,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxF,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChI,CAAC;IACH,CAAC;CACF;AAlOD,wCAkOC","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 } from \"@itwin/core-bentley\";\nimport { ClipVector, Matrix3d, Matrix4d, Point3d, Transform, XYZ } from \"@itwin/core-geometry\";\nimport { ClipStyle, ContourDisplay, HiddenLine, ViewFlags } from \"@itwin/core-common\";\nimport { FeatureSymbology } from \"../../../render/FeatureSymbology\";\nimport { BranchState } from \"./BranchState\";\nimport { BranchStack } from \"./BranchStack\";\nimport { BatchState } from \"./BatchState\";\nimport { CachedGeometry } from \"./CachedGeometry\";\nimport { Branch } from \"./Graphic\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { Matrix3, Matrix4 } from \"./Matrix\";\nimport { RenderCommands } from \"./RenderCommands\";\nimport { desync, sync, SyncToken } from \"./Sync\";\nimport { Target } from \"./Target\";\nimport { ClipStack } from \"./ClipStack\";\nimport { IModelApp } from \"../../../IModelApp\";\n\nfunction equalXYZs(a: XYZ | undefined, b: XYZ | undefined): boolean {\n if (a === b)\n return true;\n\n if ((undefined === a) !== (undefined === b))\n return false;\n\n if (undefined !== a && undefined !== b)\n return a.isExactEqual(b);\n\n assert(undefined === a && undefined === b);\n return true;\n}\n\n/** Maintains uniform variable state associated with the Branch currently being drawn by a Target.\n * @internal\n */\nexport class BranchUniforms {\n public readonly clipStack: ClipStack;\n private _viewClipEnabled = false;\n\n // The model-view and model-view-projection matrices depend on the frustum.\n public syncToken?: SyncToken;\n public syncKey = 0;\n private readonly _stack = new BranchStack();\n private readonly _target: Target;\n\n // Parameters that affect synchronization.\n private _isInstanced = false;\n private _viewIndependentOrigin?: Point3d;\n\n // CPU state\n private readonly _mv = Matrix4d.createIdentity();\n private readonly _mvp = Matrix4d.createIdentity();\n\n // GPU state\n private readonly _mv32 = new Matrix4();\n private readonly _mvp32 = new Matrix4();\n private readonly _m32 = new Matrix4();\n private readonly _v32 = new Matrix3();\n\n // Working state\n private readonly _scratchTransform = Transform.createIdentity();\n private readonly _scratchTransform2 = Transform.createIdentity();\n private readonly _scratchViewToWorld = Matrix3d.createIdentity();\n private readonly _scratchVIModelMatrix = Transform.createIdentity();\n private readonly _zeroPoint = new Point3d(0, 0, 0);\n\n public get stack(): BranchStack { return this._stack; }\n\n public constructor(target: Target) {\n this._target = target;\n this.clipStack = new ClipStack(\n () => target.uniforms.frustum.viewMatrix,\n () => this._viewClipEnabled && this.top.viewFlags.clipVolume,\n );\n }\n\n public createBatchState(): BatchState {\n return new BatchState(this._stack);\n }\n\n public createRenderCommands(batchState: BatchState): RenderCommands {\n return new RenderCommands(this._target, this._stack, batchState);\n }\n\n public get modelViewMatrix(): Matrix4d {\n return this._mv;\n }\n\n public get top(): BranchState {\n return this._stack.top;\n }\n\n public get length(): number {\n return this._stack.length;\n }\n\n public pushBranch(branch: Branch): void {\n desync(this);\n this._stack.pushBranch(branch);\n\n this.setClipStyle(this.top.disableClipStyle);\n if (this.top.clipVolume)\n this.clipStack.push(this.top.clipVolume);\n\n if (branch.branch.realityModelDisplaySettings)\n this._target.uniforms.realityModel.update(branch.branch.realityModelDisplaySettings);\n }\n\n public pushState(state: BranchState): void {\n desync(this);\n this._stack.pushState(state);\n if (this.top.clipVolume)\n this.clipStack.push(this.top.clipVolume);\n\n if (state.realityModelDisplaySettings)\n this._target.uniforms.realityModel.update(state.realityModelDisplaySettings);\n }\n\n public pop(): void {\n desync(this);\n if (this.top.clipVolume)\n this.clipStack.pop();\n\n this._stack.pop();\n this.setClipStyle(this.top.disableClipStyle);\n }\n\n public pushViewClip(): void {\n assert(!this._viewClipEnabled);\n this._viewClipEnabled = true;\n\n // Target.readPixels() pushes another BranchState before pushing view clip...\n assert((this._target.isReadPixelsInProgress ? 2 : 1) === this._stack.length);\n }\n\n public popViewClip(): void {\n assert(this._viewClipEnabled);\n this._viewClipEnabled = false;\n assert((this._target.isReadPixelsInProgress ? 2 : 1) === this._stack.length);\n }\n\n public changeRenderPlan(vf: ViewFlags, is3d: boolean, hline: HiddenLine.Settings | undefined, contourLine?: ContourDisplay | undefined): void {\n this._stack.changeRenderPlan(vf, is3d, hline, contourLine);\n }\n\n public updateViewClip(clip: ClipVector | undefined, style: ClipStyle): void {\n this.clipStack.setViewClip(clip, style);\n }\n\n public overrideFeatureSymbology(ovr: FeatureSymbology.Overrides): void {\n this._stack.setSymbologyOverrides(ovr);\n }\n\n public bindModelViewMatrix(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean): void {\n if (this.update(uniform, geom, isViewCoords))\n uniform.setMatrix4(this._mv32);\n }\n\n public bindModelViewProjectionMatrix(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean): void {\n if (this.update(uniform, geom, isViewCoords))\n uniform.setMatrix4(this._mvp32);\n }\n\n public bindModelToWorldTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\n if (this.update(uniform, geom, isViewCoords))\n uniform.setMatrix4(this._m32);\n }\n\n public bindWorldToViewNTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\n if (this.update(uniform, geom, isViewCoords))\n uniform.setMatrix3(this._v32);\n }\n\n private update(uniform: UniformHandle, geometry: CachedGeometry, isViewCoords: boolean): boolean {\n const uniforms = this._target.uniforms[isViewCoords ? \"viewRect\" : \"frustum\"];\n if (!sync(uniforms, this))\n desync(this);\n\n const instancedGeom = geometry.asInstanced;\n if (undefined !== instancedGeom || this._isInstanced) {\n this._isInstanced = undefined !== instancedGeom;\n desync(this);\n }\n\n const vio = geometry.viewIndependentOrigin;\n if (!equalXYZs(vio, this._viewIndependentOrigin)) {\n this._viewIndependentOrigin = vio;\n desync(this);\n }\n\n if (sync(this, uniform))\n return false;\n\n let mv;\n const modelMatrix = this._target.currentTransform;\n if (isViewCoords) {\n // Zero out Z for silly clipping tools...\n mv = modelMatrix.clone(this._scratchTransform);\n mv.matrix.coffs[2] = mv.matrix.coffs[5] = mv.matrix.coffs[8] = 0.0;\n if (instancedGeom)\n mv = instancedGeom.getRtcModelTransform(mv);\n\n // Scale based on device-pixel ratio.\n const scale = this._target.devicePixelRatio;\n const viewMatrix = Transform.createScaleAboutPoint(this._zeroPoint, scale, this._scratchTransform2);\n viewMatrix.multiplyTransformTransform(mv, mv);\n } else {\n const viewMatrix = this._target.uniforms.frustum.viewMatrix;\n\n if (undefined !== instancedGeom) {\n // For instanced geometry, the \"model view\" matrix is really a transform from center of instanced geometry range to view.\n // Shader will compute final model-view matrix based on this and the per-instance transform.\n if (vio) {\n const viewToWorldRot = viewMatrix.matrix.inverse(this._scratchViewToWorld)!;\n const rotateAboutOrigin = Transform.createFixedPointAndMatrix(vio, viewToWorldRot, this._scratchTransform2);\n const viModelMatrix = rotateAboutOrigin.multiplyTransformTransform(instancedGeom.getRtcModelTransform(modelMatrix), this._scratchVIModelMatrix);\n mv = viewMatrix.multiplyTransformTransform(viModelMatrix, this._scratchTransform);\n } else {\n mv = viewMatrix.multiplyTransformTransform(instancedGeom.getRtcModelTransform(modelMatrix), this._scratchTransform);\n }\n } else {\n if (undefined !== vio) {\n const viewToWorldRot = viewMatrix.matrix.inverse(this._scratchViewToWorld)!;\n const rotateAboutOrigin = Transform.createFixedPointAndMatrix(vio, viewToWorldRot, this._scratchTransform2);\n const viModelMatrix = rotateAboutOrigin.multiplyTransformTransform(modelMatrix, this._scratchVIModelMatrix);\n mv = viewMatrix.multiplyTransformTransform(viModelMatrix, this._scratchTransform);\n } else {\n mv = viewMatrix.multiplyTransformTransform(modelMatrix, this._scratchTransform);\n }\n }\n }\n\n if (this._target.wantThematicDisplay) {\n this._m32.initFromTransform(modelMatrix);\n this._v32.initFromMatrix3d(this._target.uniforms.frustum.viewMatrix.matrix);\n } else if (undefined !== geometry.asSurface?.mesh.constantLodVParams || this._target.uniforms.batch.wantContourLines) {\n this._m32.initFromTransform(modelMatrix);\n }\n\n Matrix4d.createTransform(mv, this._mv);\n this._mv32.initFromTransform(mv);\n\n // Don't bother computing mvp for instanced geometry - it's not used.\n if (!this._isInstanced) {\n uniforms.projectionMatrix.multiplyMatrixMatrix(this._mv, this._mvp);\n this._mvp32.initFromMatrix4d(this._mvp);\n }\n\n return true;\n }\n\n // set the clip style based on disableClipStyle\n private setClipStyle(disableClipStyle: true | undefined) {\n const vp = IModelApp.viewManager.selectedView;\n if (vp) {\n const style = vp.view.displayStyle.settings.clipStyle;\n this.clipStack.insideColor.alpha = disableClipStyle ? 0 : (style.insideColor ? 1 : 0);\n this.clipStack.outsideColor.alpha = disableClipStyle ? 0 : (style.outsideColor ? 1 : 0);\n this.clipStack.intersectionStyle.alpha = disableClipStyle ? 0 : (style.intersectionStyle ? style.intersectionStyle.width : 0);\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ContourUniforms.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ContourUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAY,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC;;GAEG;AACH,qBAAa,eAAe;IAE1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoD;IACrF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA+C;IAC5E,OAAO,CAAC,eAAe,CAAC,CAAiB;IAElC,OAAO,SAAK;IAEnB,IAAW,cAAc,IAAI,cAAc,GAAG,SAAS,CAEtD;IAED,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,aAAa;IASd,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA8C5B,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;CAIrD"}
1
+ {"version":3,"file":"ContourUniforms.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/ContourUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAY,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC;;GAEG;AACH,qBAAa,eAAe;IAE1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoD;IACrF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA+C;IAC5E,OAAO,CAAC,eAAe,CAAC,CAAiB;IAElC,OAAO,SAAK;IAEnB,IAAW,cAAc,IAAI,cAAc,GAAG,SAAS,CAEtD;IAED,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,aAAa;IASd,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA6C5B,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;CAIrD"}
@@ -49,12 +49,11 @@ class ContourUniforms {
49
49
  this._contourDefs[startNdx + offset + 1] = majorIntervalCount < 1.0 ? 1.0 : majorIntervalCount;
50
50
  }
51
51
  update(target) {
52
- const plan = target.plan;
53
- if (this.contourDisplay && plan.contours && this.contourDisplay.equals(plan.contours)) {
52
+ if (this.contourDisplay && target.currentContours && this.contourDisplay.equals(target.currentContours)) {
54
53
  return;
55
54
  }
56
55
  (0, Sync_1.desync)(this);
57
- this._contourDisplay = plan.contours;
56
+ this._contourDisplay = target.currentContours;
58
57
  if (undefined === this.contourDisplay)
59
58
  return;
60
59
  /* 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,oDAA8D;AAE9D,iCAAsC;AAEtC,yCAAsC;AAEtC;;GAEG;AACH,MAAa,eAAe;IAC1B,0IAA0I;IACzH,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,4BAAc,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,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAEzB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtF,OAAO;QACT,CAAC;QAED,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC;QAEb,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;QACrC,IAAI,SAAS,KAAK,IAAI,CAAC,cAAc;YACnC,OAAO;QAET;;;;;;;;;;;;;;;;;;;;UAoBE;QAEF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,4BAAc,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,CAAC;YAC7H,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;YAChE,MAAM,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YAC/B,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACtE,IAAI,CAAC,SAAS,CAAE,YAAY,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACxF,IAAI,CAAC,YAAY,CAAE,YAAY,EAAE,mBAAQ,CAAC,mBAAmB,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,mBAAQ,CAAC,mBAAmB,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;YACxP,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/D,IAAI,CAAC,aAAa,CAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC;QACvG,CAAC;IACH,CAAC;IAEM,eAAe,CAAC,OAAsB;QAC3C,IAAI,CAAC,IAAA,WAAI,EAAC,IAAI,EAAE,OAAO,CAAC;YACtB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;CACF;AA1FD,0CA0FC","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 const plan = target.plan;\n\n if (this.contourDisplay && plan.contours && this.contourDisplay.equals(plan.contours)) {\n return;\n }\n\n desync(this);\n\n this._contourDisplay = plan.contours;\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"]}
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"]}
@@ -30,14 +30,14 @@ class Contours {
30
30
  return target === this.target && this._numFeatures === map.numFeatures;
31
31
  }
32
32
  matchesSubCategories() {
33
- if (this._contours === undefined && this.target.plan.contours === undefined)
33
+ if (this._contours === undefined && this.target.currentContours === undefined)
34
34
  return true;
35
- if (this._contours === undefined || this.target.plan.contours === undefined)
35
+ if (this._contours === undefined || this.target.currentContours === undefined)
36
36
  return false;
37
- if (this._contours.groups.length !== this.target.plan.contours.groups.length)
37
+ if (this._contours.groups.length !== this.target.currentContours.groups.length)
38
38
  return false;
39
39
  for (let index = 0, len = this._contours.groups.length; index < len && index < core_common_1.ContourDisplay.maxContourGroups; ++index) {
40
- if (!this._contours.groups[index].subCategoriesEqual(this.target.plan.contours.groups[index]))
40
+ if (!this._contours.groups[index].subCategoriesEqual(this.target.currentContours.groups[index]))
41
41
  return false;
42
42
  }
43
43
  return true;
@@ -51,14 +51,14 @@ class Contours {
51
51
  (0, core_bentley_1.assert)(width * height * 8 >= this._numFeatures);
52
52
  const data = new Uint8Array(width * height * 4);
53
53
  const creator = new Texture_1.Texture2DDataUpdater(data);
54
- this.buildLookupTable(creator, map, this.target.plan.contours);
54
+ this.buildLookupTable(creator, map, this.target.currentContours);
55
55
  this._lut = Texture_1.TextureHandle.createForData(width, height, data, true, GL_1.GL.Texture.WrapMode.ClampToEdge);
56
56
  this._lutWidth = width;
57
57
  }
58
58
  _update(map, lut) {
59
59
  (0, core_bentley_1.assert)(this._numFeatures === map.numFeatures);
60
60
  const updater = new Texture_1.Texture2DDataUpdater(lut.dataBytes);
61
- this.buildLookupTable(updater, map, this.target.plan.contours);
61
+ this.buildLookupTable(updater, map, this.target.currentContours);
62
62
  lut.update(updater);
63
63
  }
64
64
  buildLookupTable(data, map, contours) {
@@ -96,7 +96,7 @@ class Contours {
96
96
  constructor(target, options) {
97
97
  this.target = target;
98
98
  this._options = options;
99
- this._contours = target.plan.contours;
99
+ this._contours = target.currentContours;
100
100
  }
101
101
  static createFromTarget(target, options) {
102
102
  return new Contours(target, options);
@@ -113,7 +113,7 @@ class Contours {
113
113
  update(features) {
114
114
  if (this.matchesSubCategories())
115
115
  return;
116
- this._contours = this.target.plan.contours;
116
+ this._contours = this.target.currentContours;
117
117
  // _lut can be undefined if context was lost, (gl.createTexture returns null)
118
118
  if (this._lut) {
119
119
  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":"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"}
1
+ {"version":3,"file":"Graphic.d.ts","sourceRoot":"","sources":["../../../../../src/internal/render/webgl/Graphic.ts"],"names":[],"mappings":"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"}
@@ -276,6 +276,7 @@ class Branch extends Graphic {
276
276
  inSectionDrawingAttachment;
277
277
  disableClipStyle;
278
278
  transformFromExternalIModel;
279
+ contourLine;
279
280
  constructor(branch, localToWorld, viewFlags, opts) {
280
281
  super();
281
282
  this.branch = branch;
@@ -292,6 +293,7 @@ class Branch extends Graphic {
292
293
  this.inSectionDrawingAttachment = opts.inSectionDrawingAttachment;
293
294
  this.disableClipStyle = opts.disableClipStyle;
294
295
  this.transformFromExternalIModel = opts.transformFromIModel;
296
+ this.contourLine = opts.contours;
295
297
  if (opts.hline)
296
298
  this.edgeSettings = EdgeSettings_1.EdgeSettings.create(opts.hline);
297
299
  if (opts.classifierOrDrape instanceof PlanarClassifier_1.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"]}
@@ -1420,7 +1420,7 @@ class Compositor extends SceneCompositor {
1420
1420
  }
1421
1421
  readContours(rect) {
1422
1422
  // Are we actually drawing any contours? If not, don't bother reading an array of all zeroes off the GPU.
1423
- const contours = this.target.plan.contours;
1423
+ const contours = this.target.currentContours;
1424
1424
  if (!contours || !contours.displayContours || contours.groups.length === 0) {
1425
1425
  return undefined;
1426
1426
  }
@@ -1598,6 +1598,7 @@ class Compositor extends SceneCompositor {
1598
1598
  iModel: top.iModel,
1599
1599
  is3d: top.is3d,
1600
1600
  edgeSettings: top.edgeSettings,
1601
+ contourLine: top.contourLine,
1601
1602
  });
1602
1603
  this._vcSetStencilRenderState = new RenderState_1.RenderState();
1603
1604
  this._vcCopyZRenderState = new RenderState_1.RenderState();