@itwin/core-frontend 3.5.0-dev.4 → 3.5.0-dev.5

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 (135) hide show
  1. package/lib/cjs/ContextRealityModelState.d.ts.map +1 -1
  2. package/lib/cjs/ContextRealityModelState.js +2 -0
  3. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  4. package/lib/cjs/ModelState.d.ts.map +1 -1
  5. package/lib/cjs/ModelState.js +5 -0
  6. package/lib/cjs/ModelState.js.map +1 -1
  7. package/lib/cjs/Viewport.d.ts.map +1 -1
  8. package/lib/cjs/Viewport.js +1 -0
  9. package/lib/cjs/Viewport.js.map +1 -1
  10. package/lib/cjs/render/GraphicBranch.d.ts +5 -1
  11. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  12. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  13. package/lib/cjs/render/primitives/PointCloudPrimitive.d.ts +4 -8
  14. package/lib/cjs/render/primitives/PointCloudPrimitive.d.ts.map +1 -1
  15. package/lib/cjs/render/primitives/PointCloudPrimitive.js +0 -16
  16. package/lib/cjs/render/primitives/PointCloudPrimitive.js.map +1 -1
  17. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +1 -1
  18. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  19. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +3 -1
  20. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  21. package/lib/cjs/render/webgl/BranchState.d.ts +3 -1
  22. package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
  23. package/lib/cjs/render/webgl/BranchState.js +18 -15
  24. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  25. package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
  26. package/lib/cjs/render/webgl/BranchUniforms.js +4 -0
  27. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  28. package/lib/cjs/render/webgl/PointCloud.d.ts +1 -2
  29. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  30. package/lib/cjs/render/webgl/PointCloud.js +7 -7
  31. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  32. package/lib/cjs/render/webgl/RealityModelUniforms.d.ts +35 -0
  33. package/lib/cjs/render/webgl/RealityModelUniforms.d.ts.map +1 -0
  34. package/lib/cjs/render/webgl/RealityModelUniforms.js +73 -0
  35. package/lib/cjs/render/webgl/RealityModelUniforms.js.map +1 -0
  36. package/lib/cjs/render/webgl/TargetUniforms.d.ts +2 -0
  37. package/lib/cjs/render/webgl/TargetUniforms.d.ts.map +1 -1
  38. package/lib/cjs/render/webgl/TargetUniforms.js +2 -0
  39. package/lib/cjs/render/webgl/TargetUniforms.js.map +1 -1
  40. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  41. package/lib/cjs/render/webgl/Technique.js +3 -30
  42. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  43. package/lib/cjs/render/webgl/glsl/PointCloud.d.ts.map +1 -1
  44. package/lib/cjs/render/webgl/glsl/PointCloud.js +43 -20
  45. package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
  46. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts +4 -2
  47. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  48. package/lib/cjs/render/webgl/glsl/RealityMesh.js +5 -3
  49. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  50. package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
  51. package/lib/cjs/tile/OrbitGtTileTree.js +8 -2
  52. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  53. package/lib/cjs/tile/PntsReader.d.ts.map +1 -1
  54. package/lib/cjs/tile/PntsReader.js +8 -2
  55. package/lib/cjs/tile/PntsReader.js.map +1 -1
  56. package/lib/cjs/tile/RealityModelTileTree.d.ts +4 -1
  57. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  58. package/lib/cjs/tile/RealityModelTileTree.js +8 -0
  59. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  60. package/lib/cjs/tile/TileAdmin.d.ts +1 -0
  61. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  62. package/lib/cjs/tile/TileAdmin.js +19 -12
  63. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  64. package/lib/cjs/webgl.d.ts +1 -0
  65. package/lib/cjs/webgl.d.ts.map +1 -1
  66. package/lib/cjs/webgl.js +1 -0
  67. package/lib/cjs/webgl.js.map +1 -1
  68. package/lib/esm/ContextRealityModelState.d.ts.map +1 -1
  69. package/lib/esm/ContextRealityModelState.js +2 -0
  70. package/lib/esm/ContextRealityModelState.js.map +1 -1
  71. package/lib/esm/ModelState.d.ts.map +1 -1
  72. package/lib/esm/ModelState.js +6 -1
  73. package/lib/esm/ModelState.js.map +1 -1
  74. package/lib/esm/Viewport.d.ts.map +1 -1
  75. package/lib/esm/Viewport.js +1 -0
  76. package/lib/esm/Viewport.js.map +1 -1
  77. package/lib/esm/render/GraphicBranch.d.ts +5 -1
  78. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  79. package/lib/esm/render/GraphicBranch.js.map +1 -1
  80. package/lib/esm/render/primitives/PointCloudPrimitive.d.ts +4 -8
  81. package/lib/esm/render/primitives/PointCloudPrimitive.d.ts.map +1 -1
  82. package/lib/esm/render/primitives/PointCloudPrimitive.js +1 -14
  83. package/lib/esm/render/primitives/PointCloudPrimitive.js.map +1 -1
  84. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +1 -1
  85. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  86. package/lib/esm/render/primitives/mesh/MeshPrimitives.js +3 -1
  87. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  88. package/lib/esm/render/webgl/BranchState.d.ts +3 -1
  89. package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
  90. package/lib/esm/render/webgl/BranchState.js +18 -15
  91. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  92. package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
  93. package/lib/esm/render/webgl/BranchUniforms.js +4 -0
  94. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  95. package/lib/esm/render/webgl/PointCloud.d.ts +1 -2
  96. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  97. package/lib/esm/render/webgl/PointCloud.js +7 -7
  98. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  99. package/lib/esm/render/webgl/RealityModelUniforms.d.ts +35 -0
  100. package/lib/esm/render/webgl/RealityModelUniforms.d.ts.map +1 -0
  101. package/lib/esm/render/webgl/RealityModelUniforms.js +68 -0
  102. package/lib/esm/render/webgl/RealityModelUniforms.js.map +1 -0
  103. package/lib/esm/render/webgl/TargetUniforms.d.ts +2 -0
  104. package/lib/esm/render/webgl/TargetUniforms.d.ts.map +1 -1
  105. package/lib/esm/render/webgl/TargetUniforms.js +2 -0
  106. package/lib/esm/render/webgl/TargetUniforms.js.map +1 -1
  107. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  108. package/lib/esm/render/webgl/Technique.js +2 -10
  109. package/lib/esm/render/webgl/Technique.js.map +1 -1
  110. package/lib/esm/render/webgl/glsl/PointCloud.d.ts.map +1 -1
  111. package/lib/esm/render/webgl/glsl/PointCloud.js +44 -21
  112. package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
  113. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts +4 -2
  114. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  115. package/lib/esm/render/webgl/glsl/RealityMesh.js +4 -3
  116. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  117. package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
  118. package/lib/esm/tile/OrbitGtTileTree.js +8 -2
  119. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  120. package/lib/esm/tile/PntsReader.d.ts.map +1 -1
  121. package/lib/esm/tile/PntsReader.js +8 -2
  122. package/lib/esm/tile/PntsReader.js.map +1 -1
  123. package/lib/esm/tile/RealityModelTileTree.d.ts +4 -1
  124. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  125. package/lib/esm/tile/RealityModelTileTree.js +9 -1
  126. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  127. package/lib/esm/tile/TileAdmin.d.ts +1 -0
  128. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  129. package/lib/esm/tile/TileAdmin.js +19 -12
  130. package/lib/esm/tile/TileAdmin.js.map +1 -1
  131. package/lib/esm/webgl.d.ts +1 -0
  132. package/lib/esm/webgl.d.ts.map +1 -1
  133. package/lib/esm/webgl.js +1 -0
  134. package/lib/esm/webgl.js.map +1 -1
  135. package/package.json +20 -20
@@ -1 +1 @@
1
- {"version":3,"file":"BranchUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/BranchUniforms.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { ClipVector, Matrix3d, Matrix4d, Point3d, Transform, XYZ } from \"@itwin/core-geometry\";\r\nimport { ClipStyle, HiddenLine, ViewFlags } from \"@itwin/core-common\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { BranchState } from \"./BranchState\";\r\nimport { BranchStack } from \"./BranchStack\";\r\nimport { BatchState } from \"./BatchState\";\r\nimport { CachedGeometry } from \"./CachedGeometry\";\r\nimport { Branch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { Matrix3, Matrix4 } from \"./Matrix\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { desync, sync, SyncToken } from \"./Sync\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { ClipStack } from \"./ClipStack\";\r\n\r\nfunction equalXYZs(a: XYZ | undefined, b: XYZ | undefined): boolean {\r\n if (a === b)\r\n return true;\r\n\r\n if ((undefined === a) !== (undefined === b))\r\n return false;\r\n\r\n if (undefined !== a && undefined !== b)\r\n return a.isExactEqual(b);\r\n\r\n assert(undefined === a && undefined === b);\r\n return true;\r\n}\r\n\r\n/** Maintains uniform variable state associated with the Branch currently being drawn by a Target.\r\n * @internal\r\n */\r\nexport class BranchUniforms {\r\n public readonly clipStack: ClipStack;\r\n private _viewClipEnabled = false;\r\n\r\n // The model-view and model-view-projection matrices depend on the frustum.\r\n public syncToken?: SyncToken;\r\n public syncKey = 0;\r\n private readonly _stack = new BranchStack();\r\n private readonly _target: Target;\r\n\r\n // Parameters that affect synchronization.\r\n private _isInstanced = false;\r\n private _viewIndependentOrigin?: Point3d;\r\n\r\n // CPU state\r\n private readonly _mv = Matrix4d.createIdentity();\r\n private readonly _mvp = Matrix4d.createIdentity();\r\n\r\n // GPU state\r\n private readonly _mv32 = new Matrix4();\r\n private readonly _mvp32 = new Matrix4();\r\n private readonly _m32 = new Matrix4();\r\n private readonly _v32 = new Matrix3();\r\n private readonly _mvn32 = new Matrix3();\r\n\r\n // Working state\r\n private readonly _scratchTransform = Transform.createIdentity();\r\n private readonly _scratchTransform2 = Transform.createIdentity();\r\n private readonly _scratchViewToWorld = Matrix3d.createIdentity();\r\n private readonly _scratchVIModelMatrix = Transform.createIdentity();\r\n private readonly _zeroPoint = new Point3d(0, 0, 0);\r\n\r\n public get stack(): BranchStack { return this._stack; }\r\n\r\n public constructor(target: Target) {\r\n this._target = target;\r\n this.clipStack = new ClipStack(\r\n () => target.uniforms.frustum.viewMatrix,\r\n () => this._viewClipEnabled && this.top.viewFlags.clipVolume,\r\n );\r\n }\r\n\r\n public createBatchState(): BatchState {\r\n return new BatchState(this._stack);\r\n }\r\n\r\n public createRenderCommands(batchState: BatchState): RenderCommands {\r\n return new RenderCommands(this._target, this._stack, batchState);\r\n }\r\n\r\n public get modelViewMatrix(): Matrix4d {\r\n return this._mv;\r\n }\r\n\r\n public get top(): BranchState {\r\n return this._stack.top;\r\n }\r\n\r\n public get length(): number {\r\n return this._stack.length;\r\n }\r\n\r\n public pushBranch(branch: Branch): void {\r\n desync(this);\r\n this._stack.pushBranch(branch);\r\n if (this.top.clipVolume)\r\n this.clipStack.push(this.top.clipVolume);\r\n }\r\n\r\n public pushState(state: BranchState): void {\r\n desync(this);\r\n this._stack.pushState(state);\r\n if (this.top.clipVolume)\r\n this.clipStack.push(this.top.clipVolume);\r\n }\r\n\r\n public pop(): void {\r\n desync(this);\r\n if (this.top.clipVolume)\r\n this.clipStack.pop();\r\n\r\n this._stack.pop();\r\n }\r\n\r\n public pushViewClip(): void {\r\n assert(!this._viewClipEnabled);\r\n this._viewClipEnabled = true;\r\n\r\n // Target.readPixels() pushes another BranchState before pushing view clip...\r\n assert((this._target.isReadPixelsInProgress ? 2 : 1) === this._stack.length);\r\n }\r\n\r\n public popViewClip(): void {\r\n assert(this._viewClipEnabled);\r\n this._viewClipEnabled = false;\r\n assert((this._target.isReadPixelsInProgress ? 2 : 1) === this._stack.length);\r\n }\r\n\r\n public changeRenderPlan(vf: ViewFlags, is3d: boolean, hline: HiddenLine.Settings | undefined): void {\r\n this._stack.changeRenderPlan(vf, is3d, hline);\r\n }\r\n\r\n public updateViewClip(clip: ClipVector | undefined, style: ClipStyle): void {\r\n this.clipStack.setViewClip(clip, style);\r\n }\r\n\r\n public overrideFeatureSymbology(ovr: FeatureSymbology.Overrides): void {\r\n this._stack.setSymbologyOverrides(ovr);\r\n }\r\n\r\n public bindModelViewMatrix(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean): void {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._mv32);\r\n }\r\n\r\n public bindModelViewProjectionMatrix(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean): void {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._mvp32);\r\n }\r\n\r\n public bindModelToWorldTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._m32);\r\n }\r\n\r\n public bindWorldToViewNTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix3(this._v32);\r\n }\r\n\r\n public bindModelViewNTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix3(this._mvn32);\r\n }\r\n\r\n private update(uniform: UniformHandle, geometry: CachedGeometry, isViewCoords: boolean): boolean {\r\n const uniforms = this._target.uniforms[isViewCoords ? \"viewRect\" : \"frustum\"];\r\n if (!sync(uniforms, this))\r\n desync(this);\r\n\r\n const instancedGeom = geometry.asInstanced;\r\n if (undefined !== instancedGeom || this._isInstanced) {\r\n this._isInstanced = undefined !== instancedGeom;\r\n desync(this);\r\n }\r\n\r\n const vio = geometry.viewIndependentOrigin;\r\n if (!equalXYZs(vio, this._viewIndependentOrigin)) {\r\n this._viewIndependentOrigin = vio;\r\n desync(this);\r\n }\r\n\r\n if (sync(this, uniform))\r\n return false;\r\n\r\n let mv;\r\n const modelMatrix = this._target.currentTransform;\r\n if (isViewCoords) {\r\n // Zero out Z for silly clipping tools...\r\n mv = modelMatrix.clone(this._scratchTransform);\r\n mv.matrix.coffs[2] = mv.matrix.coffs[5] = mv.matrix.coffs[8] = 0.0;\r\n if (instancedGeom)\r\n mv = instancedGeom.getRtcModelTransform(mv);\r\n\r\n // Scale based on device-pixel ratio.\r\n const scale = this._target.devicePixelRatio;\r\n const viewMatrix = Transform.createScaleAboutPoint(this._zeroPoint, scale, this._scratchTransform2);\r\n viewMatrix.multiplyTransformTransform(mv, mv);\r\n } else {\r\n const viewMatrix = this._target.uniforms.frustum.viewMatrix;\r\n mv = viewMatrix.clone(this._scratchTransform);\r\n\r\n if (undefined !== instancedGeom) {\r\n // For instanced geometry, the \"model view\" matrix is really a transform from center of instanced geometry range to view.\r\n // Shader will compute final model-view matrix based on this and the per-instance transform.\r\n if (vio) {\r\n const viewToWorldRot = viewMatrix.matrix.inverse(this._scratchViewToWorld)!;\r\n const rotateAboutOrigin = Transform.createFixedPointAndMatrix(vio, viewToWorldRot, this._scratchTransform2);\r\n const viModelMatrix = rotateAboutOrigin.multiplyTransformTransform(instancedGeom.getRtcModelTransform(modelMatrix), this._scratchVIModelMatrix);\r\n mv.multiplyTransformTransform(viModelMatrix, mv);\r\n } else {\r\n mv.multiplyTransformTransform(instancedGeom.getRtcModelTransform(modelMatrix), mv);\r\n }\r\n } else {\r\n if (undefined !== vio) {\r\n const viewToWorldRot = viewMatrix.matrix.inverse(this._scratchViewToWorld)!;\r\n const rotateAboutOrigin = Transform.createFixedPointAndMatrix(vio, viewToWorldRot, this._scratchTransform2);\r\n const viModelMatrix = rotateAboutOrigin.multiplyTransformTransform(modelMatrix, this._scratchVIModelMatrix);\r\n mv.multiplyTransformTransform(viModelMatrix, mv);\r\n } else {\r\n mv = mv.multiplyTransformTransform(modelMatrix, mv);\r\n }\r\n }\r\n }\r\n\r\n if (this._target.wantThematicDisplay) {\r\n this._m32.initFromTransform(modelMatrix);\r\n this._v32.initFromMatrix3d(this._target.uniforms.frustum.viewMatrix.matrix);\r\n }\r\n\r\n Matrix4d.createTransform(mv, this._mv);\r\n this._mv32.initFromTransform(mv);\r\n\r\n // Don't bother computing mvp for instanced geometry - it's not used.\r\n if (!this._isInstanced) {\r\n uniforms.projectionMatrix.multiplyMatrixMatrix(this._mv, this._mvp);\r\n this._mvp32.initFromMatrix4d(this._mvp);\r\n if (!System.instance.capabilities.isWebGL2) { // inverse model to view is only used if not instanced and not WebGL2\r\n const inv = this._mv.createInverse();\r\n if (undefined !== inv) {\r\n const invTr = inv.cloneTransposed();\r\n this._mvn32.initFromMatrix3d(invTr.matrixPart());\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"BranchUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/BranchUniforms.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { ClipVector, Matrix3d, Matrix4d, Point3d, Transform, XYZ } from \"@itwin/core-geometry\";\r\nimport { ClipStyle, HiddenLine, ViewFlags } from \"@itwin/core-common\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { BranchState } from \"./BranchState\";\r\nimport { BranchStack } from \"./BranchStack\";\r\nimport { BatchState } from \"./BatchState\";\r\nimport { CachedGeometry } from \"./CachedGeometry\";\r\nimport { Branch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { Matrix3, Matrix4 } from \"./Matrix\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { desync, sync, SyncToken } from \"./Sync\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { ClipStack } from \"./ClipStack\";\r\n\r\nfunction equalXYZs(a: XYZ | undefined, b: XYZ | undefined): boolean {\r\n if (a === b)\r\n return true;\r\n\r\n if ((undefined === a) !== (undefined === b))\r\n return false;\r\n\r\n if (undefined !== a && undefined !== b)\r\n return a.isExactEqual(b);\r\n\r\n assert(undefined === a && undefined === b);\r\n return true;\r\n}\r\n\r\n/** Maintains uniform variable state associated with the Branch currently being drawn by a Target.\r\n * @internal\r\n */\r\nexport class BranchUniforms {\r\n public readonly clipStack: ClipStack;\r\n private _viewClipEnabled = false;\r\n\r\n // The model-view and model-view-projection matrices depend on the frustum.\r\n public syncToken?: SyncToken;\r\n public syncKey = 0;\r\n private readonly _stack = new BranchStack();\r\n private readonly _target: Target;\r\n\r\n // Parameters that affect synchronization.\r\n private _isInstanced = false;\r\n private _viewIndependentOrigin?: Point3d;\r\n\r\n // CPU state\r\n private readonly _mv = Matrix4d.createIdentity();\r\n private readonly _mvp = Matrix4d.createIdentity();\r\n\r\n // GPU state\r\n private readonly _mv32 = new Matrix4();\r\n private readonly _mvp32 = new Matrix4();\r\n private readonly _m32 = new Matrix4();\r\n private readonly _v32 = new Matrix3();\r\n private readonly _mvn32 = new Matrix3();\r\n\r\n // Working state\r\n private readonly _scratchTransform = Transform.createIdentity();\r\n private readonly _scratchTransform2 = Transform.createIdentity();\r\n private readonly _scratchViewToWorld = Matrix3d.createIdentity();\r\n private readonly _scratchVIModelMatrix = Transform.createIdentity();\r\n private readonly _zeroPoint = new Point3d(0, 0, 0);\r\n\r\n public get stack(): BranchStack { return this._stack; }\r\n\r\n public constructor(target: Target) {\r\n this._target = target;\r\n this.clipStack = new ClipStack(\r\n () => target.uniforms.frustum.viewMatrix,\r\n () => this._viewClipEnabled && this.top.viewFlags.clipVolume,\r\n );\r\n }\r\n\r\n public createBatchState(): BatchState {\r\n return new BatchState(this._stack);\r\n }\r\n\r\n public createRenderCommands(batchState: BatchState): RenderCommands {\r\n return new RenderCommands(this._target, this._stack, batchState);\r\n }\r\n\r\n public get modelViewMatrix(): Matrix4d {\r\n return this._mv;\r\n }\r\n\r\n public get top(): BranchState {\r\n return this._stack.top;\r\n }\r\n\r\n public get length(): number {\r\n return this._stack.length;\r\n }\r\n\r\n public pushBranch(branch: Branch): void {\r\n desync(this);\r\n this._stack.pushBranch(branch);\r\n if (this.top.clipVolume)\r\n this.clipStack.push(this.top.clipVolume);\r\n\r\n if (branch.branch.realityModelDisplaySettings)\r\n this._target.uniforms.realityModel.update(branch.branch.realityModelDisplaySettings);\r\n }\r\n\r\n public pushState(state: BranchState): void {\r\n desync(this);\r\n this._stack.pushState(state);\r\n if (this.top.clipVolume)\r\n this.clipStack.push(this.top.clipVolume);\r\n\r\n if (state.realityModelDisplaySettings)\r\n this._target.uniforms.realityModel.update(state.realityModelDisplaySettings);\r\n }\r\n\r\n public pop(): void {\r\n desync(this);\r\n if (this.top.clipVolume)\r\n this.clipStack.pop();\r\n\r\n this._stack.pop();\r\n }\r\n\r\n public pushViewClip(): void {\r\n assert(!this._viewClipEnabled);\r\n this._viewClipEnabled = true;\r\n\r\n // Target.readPixels() pushes another BranchState before pushing view clip...\r\n assert((this._target.isReadPixelsInProgress ? 2 : 1) === this._stack.length);\r\n }\r\n\r\n public popViewClip(): void {\r\n assert(this._viewClipEnabled);\r\n this._viewClipEnabled = false;\r\n assert((this._target.isReadPixelsInProgress ? 2 : 1) === this._stack.length);\r\n }\r\n\r\n public changeRenderPlan(vf: ViewFlags, is3d: boolean, hline: HiddenLine.Settings | undefined): void {\r\n this._stack.changeRenderPlan(vf, is3d, hline);\r\n }\r\n\r\n public updateViewClip(clip: ClipVector | undefined, style: ClipStyle): void {\r\n this.clipStack.setViewClip(clip, style);\r\n }\r\n\r\n public overrideFeatureSymbology(ovr: FeatureSymbology.Overrides): void {\r\n this._stack.setSymbologyOverrides(ovr);\r\n }\r\n\r\n public bindModelViewMatrix(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean): void {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._mv32);\r\n }\r\n\r\n public bindModelViewProjectionMatrix(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean): void {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._mvp32);\r\n }\r\n\r\n public bindModelToWorldTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._m32);\r\n }\r\n\r\n public bindWorldToViewNTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix3(this._v32);\r\n }\r\n\r\n public bindModelViewNTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix3(this._mvn32);\r\n }\r\n\r\n private update(uniform: UniformHandle, geometry: CachedGeometry, isViewCoords: boolean): boolean {\r\n const uniforms = this._target.uniforms[isViewCoords ? \"viewRect\" : \"frustum\"];\r\n if (!sync(uniforms, this))\r\n desync(this);\r\n\r\n const instancedGeom = geometry.asInstanced;\r\n if (undefined !== instancedGeom || this._isInstanced) {\r\n this._isInstanced = undefined !== instancedGeom;\r\n desync(this);\r\n }\r\n\r\n const vio = geometry.viewIndependentOrigin;\r\n if (!equalXYZs(vio, this._viewIndependentOrigin)) {\r\n this._viewIndependentOrigin = vio;\r\n desync(this);\r\n }\r\n\r\n if (sync(this, uniform))\r\n return false;\r\n\r\n let mv;\r\n const modelMatrix = this._target.currentTransform;\r\n if (isViewCoords) {\r\n // Zero out Z for silly clipping tools...\r\n mv = modelMatrix.clone(this._scratchTransform);\r\n mv.matrix.coffs[2] = mv.matrix.coffs[5] = mv.matrix.coffs[8] = 0.0;\r\n if (instancedGeom)\r\n mv = instancedGeom.getRtcModelTransform(mv);\r\n\r\n // Scale based on device-pixel ratio.\r\n const scale = this._target.devicePixelRatio;\r\n const viewMatrix = Transform.createScaleAboutPoint(this._zeroPoint, scale, this._scratchTransform2);\r\n viewMatrix.multiplyTransformTransform(mv, mv);\r\n } else {\r\n const viewMatrix = this._target.uniforms.frustum.viewMatrix;\r\n mv = viewMatrix.clone(this._scratchTransform);\r\n\r\n if (undefined !== instancedGeom) {\r\n // For instanced geometry, the \"model view\" matrix is really a transform from center of instanced geometry range to view.\r\n // Shader will compute final model-view matrix based on this and the per-instance transform.\r\n if (vio) {\r\n const viewToWorldRot = viewMatrix.matrix.inverse(this._scratchViewToWorld)!;\r\n const rotateAboutOrigin = Transform.createFixedPointAndMatrix(vio, viewToWorldRot, this._scratchTransform2);\r\n const viModelMatrix = rotateAboutOrigin.multiplyTransformTransform(instancedGeom.getRtcModelTransform(modelMatrix), this._scratchVIModelMatrix);\r\n mv.multiplyTransformTransform(viModelMatrix, mv);\r\n } else {\r\n mv.multiplyTransformTransform(instancedGeom.getRtcModelTransform(modelMatrix), mv);\r\n }\r\n } else {\r\n if (undefined !== vio) {\r\n const viewToWorldRot = viewMatrix.matrix.inverse(this._scratchViewToWorld)!;\r\n const rotateAboutOrigin = Transform.createFixedPointAndMatrix(vio, viewToWorldRot, this._scratchTransform2);\r\n const viModelMatrix = rotateAboutOrigin.multiplyTransformTransform(modelMatrix, this._scratchVIModelMatrix);\r\n mv.multiplyTransformTransform(viModelMatrix, mv);\r\n } else {\r\n mv = mv.multiplyTransformTransform(modelMatrix, mv);\r\n }\r\n }\r\n }\r\n\r\n if (this._target.wantThematicDisplay) {\r\n this._m32.initFromTransform(modelMatrix);\r\n this._v32.initFromMatrix3d(this._target.uniforms.frustum.viewMatrix.matrix);\r\n }\r\n\r\n Matrix4d.createTransform(mv, this._mv);\r\n this._mv32.initFromTransform(mv);\r\n\r\n // Don't bother computing mvp for instanced geometry - it's not used.\r\n if (!this._isInstanced) {\r\n uniforms.projectionMatrix.multiplyMatrixMatrix(this._mv, this._mvp);\r\n this._mvp32.initFromMatrix4d(this._mvp);\r\n if (!System.instance.capabilities.isWebGL2) { // inverse model to view is only used if not instanced and not WebGL2\r\n const inv = this._mv.createInverse();\r\n if (undefined !== inv) {\r\n const invTr = inv.cloneTransposed();\r\n this._mvn32.initFromMatrix3d(invTr.matrixPart());\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n"]}
@@ -13,9 +13,8 @@ export declare class PointCloudGeometry extends CachedGeometry {
13
13
  private readonly _vertexCount;
14
14
  private readonly _colorHandle;
15
15
  private readonly _hasFeatures;
16
- private readonly _voxelSize;
16
+ readonly voxelSize: number;
17
17
  readonly colorIsBgr: boolean;
18
- readonly minimumPointSize: number;
19
18
  get isDisposed(): boolean;
20
19
  get asPointCloud(): PointCloudGeometry | undefined;
21
20
  get supportsThematicDisplay(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"PointCloud.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/PointCloud.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAoB,gBAAgB,EAAmB,MAAM,oBAAoB,CAAC;AACvG,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,gBAAgB;AAChB,qBAAa,kBAAmB,SAAQ,cAAc;IACpD,SAAgB,OAAO,EAAE,gBAAgB,CAAC;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuC;IACpE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IAEvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,SAAgB,UAAU,EAAE,OAAO,CAAC;IACpC,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IAEzC,IAAW,UAAU,IAAI,OAAO,CAAiE;IACjG,IAAoB,YAAY,IAAI,kBAAkB,GAAG,SAAS,CAAiB;IACnF,IAAoB,uBAAuB,YAAmB;IAC9D,IAAW,gBAAgB,WAAiB;IAErC,OAAO;gBAKF,UAAU,EAAE,cAAc;IAsB/B,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAK9D,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAEpD,IAAW,WAAW,IAAI,WAAW,CAAmC;IACxD,OAAO,CAAC,MAAM,EAAE,MAAM;IAItC,IAAW,WAAW,IAAI,WAAW,CAA+B;IACpE,IAAW,OAAO,IAAI,YAAY,CAAkC;IACpE,IAAW,MAAM,IAAI,YAAY,CAAiC;IAClE,IAAW,MAAM,IAAI,YAAY,GAAG,SAAS,CAA8B;IAC3E,IAAoB,WAAW,YAAgC;IAC/D,IAAoB,gBAAgB,YAAmB;IAEhD,IAAI,IAAI,IAAI;IAKH,aAAa,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM;CAIpE"}
1
+ {"version":3,"file":"PointCloud.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/PointCloud.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAoB,gBAAgB,EAAmB,MAAM,oBAAoB,CAAC;AACvG,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,gBAAgB;AAChB,qBAAa,kBAAmB,SAAQ,cAAc;IACpD,SAAgB,OAAO,EAAE,gBAAgB,CAAC;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuC;IACpE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IAEvC,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,UAAU,EAAE,OAAO,CAAC;IAEpC,IAAW,UAAU,IAAI,OAAO,CAAiE;IACjG,IAAoB,YAAY,IAAI,kBAAkB,GAAG,SAAS,CAAiB;IACnF,IAAoB,uBAAuB,YAAmB;IAC9D,IAAW,gBAAgB,WAAiB;IAErC,OAAO;gBAKF,UAAU,EAAE,cAAc;IAqB/B,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAK9D,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAEpD,IAAW,WAAW,IAAI,WAAW,CAAmC;IACxD,OAAO,CAAC,MAAM,EAAE,MAAM;IAItC,IAAW,WAAW,IAAI,WAAW,CAA+B;IACpE,IAAW,OAAO,IAAI,YAAY,CAAkC;IACpE,IAAW,MAAM,IAAI,YAAY,CAAiC;IAClE,IAAW,MAAM,IAAI,YAAY,GAAG,SAAS,CAA8B;IAC3E,IAAoB,WAAW,YAAgC;IAC/D,IAAoB,gBAAgB,YAAmB;IAEhD,IAAI,IAAI,IAAI;IAOH,aAAa,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM;CAIpE"}
@@ -21,16 +21,15 @@ class PointCloudGeometry extends CachedGeometry_1.CachedGeometry {
21
21
  super();
22
22
  this._colorHandle = undefined;
23
23
  this.buffers = AttributeBuffers_1.BuffersContainer.create();
24
- this._vertices = AttributeBuffers_1.QBufferHandle3d.create(pointCloud.pointParams, pointCloud.points);
24
+ this._vertices = AttributeBuffers_1.QBufferHandle3d.create(pointCloud.qparams, pointCloud.positions);
25
25
  const attrPos = AttributeMap_1.AttributeMap.findAttribute("a_pos", 2 /* PointCloud */, false);
26
26
  (0, core_bentley_1.assert)(undefined !== attrPos);
27
- const vertexDataType = (pointCloud.points instanceof Uint8Array) ? GL_1.GL.DataType.UnsignedByte : GL_1.GL.DataType.UnsignedShort;
27
+ const vertexDataType = (pointCloud.positions instanceof Uint8Array) ? GL_1.GL.DataType.UnsignedByte : GL_1.GL.DataType.UnsignedShort;
28
28
  this.buffers.addBuffer(this._vertices, [AttributeBuffers_1.BufferParameters.create(attrPos.location, 3, vertexDataType, false, 0, 0, false)]);
29
- this._vertexCount = pointCloud.points.length / 3;
29
+ this._vertexCount = pointCloud.positions.length / 3;
30
30
  this._hasFeatures = core_common_1.FeatureIndexType.Empty !== pointCloud.features.type;
31
- this._voxelSize = pointCloud.voxelSize;
32
- this.colorIsBgr = pointCloud.colorIsBgr;
33
- this.minimumPointSize = pointCloud.minimumPointSize;
31
+ this.voxelSize = pointCloud.voxelSize;
32
+ this.colorIsBgr = "bgr" === pointCloud.colorFormat;
34
33
  if (undefined !== pointCloud.colors) {
35
34
  this._colorHandle = AttributeBuffers_1.BufferHandle.createArrayBuffer(pointCloud.colors);
36
35
  const attrColor = AttributeMap_1.AttributeMap.findAttribute("a_color", 2 /* PointCloud */, false);
@@ -67,9 +66,10 @@ class PointCloudGeometry extends CachedGeometry_1.CachedGeometry {
67
66
  System_1.System.instance.context.drawArrays(GL_1.GL.PrimitiveType.Points, 0, this._vertexCount);
68
67
  this.buffers.unbind();
69
68
  }
69
+ // ###TODO delete this.
70
70
  getLineWeight(_params) {
71
71
  // If line weight < 0 it is real size in meters (voxel size).
72
- return (this._voxelSize > 0) ? -this._voxelSize : 1;
72
+ return (this.voxelSize > 0) ? -this.voxelSize : 1;
73
73
  }
74
74
  }
75
75
  exports.PointCloudGeometry = PointCloudGeometry;
@@ -1 +1 @@
1
- {"version":3,"file":"PointCloud.js","sourceRoot":"","sources":["../../../../src/render/webgl/PointCloud.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { FeatureIndexType } from \"@itwin/core-common\";\r\nimport { PointCloudArgs } from \"../primitives/PointCloudPrimitive\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { CachedGeometry } from \"./CachedGeometry\";\r\nimport { ShaderProgramParams } from \"./DrawCommand\";\r\nimport { GL } from \"./GL\";\r\nimport { BufferHandle, BufferParameters, BuffersContainer, QBufferHandle3d } from \"./AttributeBuffers\";\r\nimport { RenderOrder } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\n\r\n/** @internal */\r\nexport class PointCloudGeometry extends CachedGeometry {\r\n public readonly buffers: BuffersContainer;\r\n private readonly _vertices: QBufferHandle3d;\r\n private readonly _vertexCount: number;\r\n private readonly _colorHandle: BufferHandle | undefined = undefined;\r\n private readonly _hasFeatures: boolean;\r\n\r\n private readonly _voxelSize: number;\r\n public readonly colorIsBgr: boolean;\r\n public readonly minimumPointSize: number;\r\n\r\n public get isDisposed(): boolean { return this.buffers.isDisposed && this._vertices.isDisposed; }\r\n public override get asPointCloud(): PointCloudGeometry | undefined { return this; }\r\n public override get supportsThematicDisplay() { return true; }\r\n public get overrideColorMix() { return .5; } // This could be a setting from either the mesh or the override if required.\r\n\r\n public dispose() {\r\n dispose(this.buffers);\r\n dispose(this._vertices);\r\n }\r\n\r\n constructor(pointCloud: PointCloudArgs) {\r\n super();\r\n this.buffers = BuffersContainer.create();\r\n this._vertices = QBufferHandle3d.create(pointCloud.pointParams, pointCloud.points) as QBufferHandle3d;\r\n const attrPos = AttributeMap.findAttribute(\"a_pos\", TechniqueId.PointCloud, false);\r\n assert(undefined !== attrPos);\r\n const vertexDataType = (pointCloud.points instanceof Uint8Array) ? GL.DataType.UnsignedByte : GL.DataType.UnsignedShort;\r\n this.buffers.addBuffer(this._vertices, [BufferParameters.create(attrPos.location, 3, vertexDataType, false, 0, 0, false)]);\r\n this._vertexCount = pointCloud.points.length / 3;\r\n this._hasFeatures = FeatureIndexType.Empty !== pointCloud.features.type;\r\n this._voxelSize = pointCloud.voxelSize;\r\n this.colorIsBgr = pointCloud.colorIsBgr;\r\n this.minimumPointSize = pointCloud.minimumPointSize;\r\n\r\n if (undefined !== pointCloud.colors) {\r\n this._colorHandle = BufferHandle.createArrayBuffer(pointCloud.colors);\r\n const attrColor = AttributeMap.findAttribute(\"a_color\", TechniqueId.PointCloud, false);\r\n assert(undefined !== attrColor);\r\n this.buffers.addBuffer(this._colorHandle!, [BufferParameters.create(attrColor.location, 3, GL.DataType.UnsignedByte, true, 0, 0, false)]);\r\n }\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n const bytesUsed = this._vertices.bytesUsed + (undefined !== this._colorHandle ? this._colorHandle.bytesUsed : 0);\r\n stats.addPointCloud(bytesUsed);\r\n }\r\n\r\n protected _wantWoWReversal(_target: Target): boolean { return false; }\r\n\r\n public get techniqueId(): TechniqueId { return TechniqueId.PointCloud; }\r\n public override getPass(target: Target) {\r\n // Point clouds don't cast shadows.\r\n return target.isDrawingShadowMap ? \"none\" : \"opaque\";\r\n }\r\n public get renderOrder(): RenderOrder { return RenderOrder.Linear; }\r\n public get qOrigin(): Float32Array { return this._vertices.origin; }\r\n public get qScale(): Float32Array { return this._vertices.scale; }\r\n public get colors(): BufferHandle | undefined { return this._colorHandle; }\r\n public override get hasFeatures() { return this._hasFeatures; }\r\n public override get hasBakedLighting() { return true; }\r\n\r\n public draw(): void {\r\n this.buffers.bind();\r\n System.instance.context.drawArrays(GL.PrimitiveType.Points, 0, this._vertexCount);\r\n this.buffers.unbind();\r\n }\r\n public override getLineWeight(_params: ShaderProgramParams): number {\r\n // If line weight < 0 it is real size in meters (voxel size).\r\n return (this._voxelSize > 0) ? - this._voxelSize : 1;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"PointCloud.js","sourceRoot":"","sources":["../../../../src/render/webgl/PointCloud.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { FeatureIndexType } from \"@itwin/core-common\";\r\nimport { PointCloudArgs } from \"../primitives/PointCloudPrimitive\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { CachedGeometry } from \"./CachedGeometry\";\r\nimport { ShaderProgramParams } from \"./DrawCommand\";\r\nimport { GL } from \"./GL\";\r\nimport { BufferHandle, BufferParameters, BuffersContainer, QBufferHandle3d } from \"./AttributeBuffers\";\r\nimport { RenderOrder } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\n\r\n/** @internal */\r\nexport class PointCloudGeometry extends CachedGeometry {\r\n public readonly buffers: BuffersContainer;\r\n private readonly _vertices: QBufferHandle3d;\r\n private readonly _vertexCount: number;\r\n private readonly _colorHandle: BufferHandle | undefined = undefined;\r\n private readonly _hasFeatures: boolean;\r\n\r\n public readonly voxelSize: number;\r\n public readonly colorIsBgr: boolean;\r\n\r\n public get isDisposed(): boolean { return this.buffers.isDisposed && this._vertices.isDisposed; }\r\n public override get asPointCloud(): PointCloudGeometry | undefined { return this; }\r\n public override get supportsThematicDisplay() { return true; }\r\n public get overrideColorMix() { return .5; } // This could be a setting from either the mesh or the override if required.\r\n\r\n public dispose() {\r\n dispose(this.buffers);\r\n dispose(this._vertices);\r\n }\r\n\r\n constructor(pointCloud: PointCloudArgs) {\r\n super();\r\n this.buffers = BuffersContainer.create();\r\n this._vertices = QBufferHandle3d.create(pointCloud.qparams, pointCloud.positions) as QBufferHandle3d;\r\n const attrPos = AttributeMap.findAttribute(\"a_pos\", TechniqueId.PointCloud, false);\r\n assert(undefined !== attrPos);\r\n const vertexDataType = (pointCloud.positions instanceof Uint8Array) ? GL.DataType.UnsignedByte : GL.DataType.UnsignedShort;\r\n this.buffers.addBuffer(this._vertices, [BufferParameters.create(attrPos.location, 3, vertexDataType, false, 0, 0, false)]);\r\n this._vertexCount = pointCloud.positions.length / 3;\r\n this._hasFeatures = FeatureIndexType.Empty !== pointCloud.features.type;\r\n this.voxelSize = pointCloud.voxelSize;\r\n this.colorIsBgr = \"bgr\" === pointCloud.colorFormat;\r\n\r\n if (undefined !== pointCloud.colors) {\r\n this._colorHandle = BufferHandle.createArrayBuffer(pointCloud.colors);\r\n const attrColor = AttributeMap.findAttribute(\"a_color\", TechniqueId.PointCloud, false);\r\n assert(undefined !== attrColor);\r\n this.buffers.addBuffer(this._colorHandle!, [BufferParameters.create(attrColor.location, 3, GL.DataType.UnsignedByte, true, 0, 0, false)]);\r\n }\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n const bytesUsed = this._vertices.bytesUsed + (undefined !== this._colorHandle ? this._colorHandle.bytesUsed : 0);\r\n stats.addPointCloud(bytesUsed);\r\n }\r\n\r\n protected _wantWoWReversal(_target: Target): boolean { return false; }\r\n\r\n public get techniqueId(): TechniqueId { return TechniqueId.PointCloud; }\r\n public override getPass(target: Target) {\r\n // Point clouds don't cast shadows.\r\n return target.isDrawingShadowMap ? \"none\" : \"opaque\";\r\n }\r\n public get renderOrder(): RenderOrder { return RenderOrder.Linear; }\r\n public get qOrigin(): Float32Array { return this._vertices.origin; }\r\n public get qScale(): Float32Array { return this._vertices.scale; }\r\n public get colors(): BufferHandle | undefined { return this._colorHandle; }\r\n public override get hasFeatures() { return this._hasFeatures; }\r\n public override get hasBakedLighting() { return true; }\r\n\r\n public draw(): void {\r\n this.buffers.bind();\r\n System.instance.context.drawArrays(GL.PrimitiveType.Points, 0, this._vertexCount);\r\n this.buffers.unbind();\r\n }\r\n\r\n // ###TODO delete this.\r\n public override getLineWeight(_params: ShaderProgramParams): number {\r\n // If line weight < 0 it is real size in meters (voxel size).\r\n return (this.voxelSize > 0) ? - this.voxelSize : 1;\r\n }\r\n}\r\n"]}
@@ -0,0 +1,35 @@
1
+ /** @packageDocumentation
2
+ * @module WebGL
3
+ */
4
+ import { PointCloudDisplaySettings, RealityModelDisplaySettings } from "@itwin/core-common";
5
+ import { UniformHandle } from "./UniformHandle";
6
+ /** A Target keeps track of the current settings for drawing point clouds.
7
+ * Pushing a Branch may *replace* the current settings. Popping the Branch does not reset them. It is expected that every Branch containing
8
+ * a point cloud will also specify the settings for drawing that point cloud.
9
+ * This permits the same point cloud graphics to be rendered differently in different viewports.
10
+ * In future these uniforms will include eye-dome lighting.
11
+ * @internal
12
+ */
13
+ export declare class PointCloudUniforms {
14
+ syncKey: number;
15
+ private _settings;
16
+ private readonly _vec4;
17
+ constructor();
18
+ update(settings: PointCloudDisplaySettings): void;
19
+ bind(uniform: UniformHandle): void;
20
+ private initialize;
21
+ }
22
+ /** Uniforms affecting how reality models are drawn.
23
+ * Pushing a Branch may *replace* the current settings. Popping the Branch does not reset them. It is expected that every Branch containing
24
+ * a reality model will also specify the settings for drawing that reality model.
25
+ * This permits the same reality model graphics to be rendered differently in different viewports.
26
+ * In future these uniforms may include additional settings for reality meshes - currently only the override color ratio applies to them.
27
+ * @internal
28
+ */
29
+ export declare class RealityModelUniforms {
30
+ readonly pointCloud: PointCloudUniforms;
31
+ private _overrideColorMix;
32
+ update(settings: RealityModelDisplaySettings): void;
33
+ bindOverrideColorMix(uniform: UniformHandle): void;
34
+ }
35
+ //# sourceMappingURL=RealityModelUniforms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RealityModelUniforms.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/RealityModelUniforms.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD;;;;;;GAMG;AACH,qBAAa,kBAAkB;IACtB,OAAO,SAAK;IACnB,OAAO,CAAC,SAAS,CAAsC;IAOvD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;;IAMtC,MAAM,CAAC,QAAQ,EAAE,yBAAyB,GAAG,IAAI;IASjD,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKzC,OAAO,CAAC,UAAU;CAMnB;AAED;;;;;;GAMG;AACH,qBAAa,oBAAoB;IAE/B,SAAgB,UAAU,qBAA4B;IACtD,OAAO,CAAC,iBAAiB,CAAO;IAEzB,MAAM,CAAC,QAAQ,EAAE,2BAA2B,GAAG,IAAI;IAKnD,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;CAG1D"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.RealityModelUniforms = exports.PointCloudUniforms = void 0;
8
+ /** @packageDocumentation
9
+ * @module WebGL
10
+ */
11
+ const core_common_1 = require("@itwin/core-common");
12
+ const Sync_1 = require("./Sync");
13
+ /** A Target keeps track of the current settings for drawing point clouds.
14
+ * Pushing a Branch may *replace* the current settings. Popping the Branch does not reset them. It is expected that every Branch containing
15
+ * a point cloud will also specify the settings for drawing that point cloud.
16
+ * This permits the same point cloud graphics to be rendered differently in different viewports.
17
+ * In future these uniforms will include eye-dome lighting.
18
+ * @internal
19
+ */
20
+ class PointCloudUniforms {
21
+ constructor() {
22
+ this.syncKey = 0;
23
+ this._settings = core_common_1.PointCloudDisplaySettings.defaults;
24
+ // vec3 u_pointSize
25
+ // x = fixed point size in pixels if > 0, else scale applied to voxel size (negated).
26
+ // y = minimum size in pixels if using voxel size.
27
+ // z = maximum size in pixels if using voxel size
28
+ // w = 1.0 if drawing square points, 0.0 if round.
29
+ this._vec4 = new Float32Array(4);
30
+ this.initialize(this._settings);
31
+ }
32
+ update(settings) {
33
+ if (this._settings.equals(settings))
34
+ return;
35
+ this._settings = settings;
36
+ (0, Sync_1.desync)(this);
37
+ this.initialize(settings);
38
+ }
39
+ bind(uniform) {
40
+ if (!(0, Sync_1.sync)(this, uniform))
41
+ uniform.setUniform4fv(this._vec4);
42
+ }
43
+ initialize(settings) {
44
+ this._vec4[0] = "pixel" === settings.sizeMode ? settings.pixelSize : -settings.voxelScale;
45
+ this._vec4[1] = settings.minPixelsPerVoxel;
46
+ this._vec4[2] = settings.maxPixelsPerVoxel;
47
+ this._vec4[3] = "square" === settings.shape ? 1 : 0;
48
+ }
49
+ }
50
+ exports.PointCloudUniforms = PointCloudUniforms;
51
+ /** Uniforms affecting how reality models are drawn.
52
+ * Pushing a Branch may *replace* the current settings. Popping the Branch does not reset them. It is expected that every Branch containing
53
+ * a reality model will also specify the settings for drawing that reality model.
54
+ * This permits the same reality model graphics to be rendered differently in different viewports.
55
+ * In future these uniforms may include additional settings for reality meshes - currently only the override color ratio applies to them.
56
+ * @internal
57
+ */
58
+ class RealityModelUniforms {
59
+ constructor() {
60
+ // ###TODO when we need it: public readonly mesh = new RealityMeshUniforms();
61
+ this.pointCloud = new PointCloudUniforms();
62
+ this._overrideColorMix = 0.5;
63
+ }
64
+ update(settings) {
65
+ this._overrideColorMix = settings.overrideColorRatio;
66
+ this.pointCloud.update(settings.pointCloud);
67
+ }
68
+ bindOverrideColorMix(uniform) {
69
+ uniform.setUniform1f(this._overrideColorMix);
70
+ }
71
+ }
72
+ exports.RealityModelUniforms = RealityModelUniforms;
73
+ //# sourceMappingURL=RealityModelUniforms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RealityModelUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/RealityModelUniforms.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F;;GAEG;AAEH,oDAA4F;AAE5F,iCAAsC;AAEtC;;;;;;GAMG;AACH,MAAa,kBAAkB;IAW7B;QAVO,YAAO,GAAG,CAAC,CAAC;QACX,cAAS,GAAG,uCAAyB,CAAC,QAAQ,CAAC;QAEvD,mBAAmB;QACnB,qFAAqF;QACrF,kDAAkD;QAClD,iDAAiD;QACjD,kDAAkD;QACjC,UAAK,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QAG3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAEM,MAAM,CAAC,QAAmC;QAC/C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;YACjC,OAAO;QAET,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC;QACb,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAEM,IAAI,CAAC,OAAsB;QAChC,IAAI,CAAC,IAAA,WAAI,EAAC,IAAI,EAAE,OAAO,CAAC;YACtB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAEO,UAAU,CAAC,QAAmC;QACpD,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC1F,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;CACF;AAnCD,gDAmCC;AAED;;;;;;GAMG;AACH,MAAa,oBAAoB;IAAjC;QACE,6EAA6E;QAC7D,eAAU,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC9C,sBAAiB,GAAG,GAAG,CAAC;IAUlC,CAAC;IARQ,MAAM,CAAC,QAAqC;QACjD,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,kBAAkB,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAEM,oBAAoB,CAAC,OAAsB;QAChD,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC/C,CAAC;CACF;AAbD,oDAaC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { PointCloudDisplaySettings, RealityModelDisplaySettings } from \"@itwin/core-common\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { desync, sync } from \"./Sync\";\r\n\r\n/** A Target keeps track of the current settings for drawing point clouds.\r\n * Pushing a Branch may *replace* the current settings. Popping the Branch does not reset them. It is expected that every Branch containing\r\n * a point cloud will also specify the settings for drawing that point cloud.\r\n * This permits the same point cloud graphics to be rendered differently in different viewports.\r\n * In future these uniforms will include eye-dome lighting.\r\n * @internal\r\n */\r\nexport class PointCloudUniforms {\r\n public syncKey = 0;\r\n private _settings = PointCloudDisplaySettings.defaults;\r\n\r\n // vec3 u_pointSize\r\n // x = fixed point size in pixels if > 0, else scale applied to voxel size (negated).\r\n // y = minimum size in pixels if using voxel size.\r\n // z = maximum size in pixels if using voxel size\r\n // w = 1.0 if drawing square points, 0.0 if round.\r\n private readonly _vec4 = new Float32Array(4);\r\n\r\n public constructor() {\r\n this.initialize(this._settings);\r\n }\r\n\r\n public update(settings: PointCloudDisplaySettings): void {\r\n if (this._settings.equals(settings))\r\n return;\r\n\r\n this._settings = settings;\r\n desync(this);\r\n this.initialize(settings);\r\n }\r\n\r\n public bind(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform4fv(this._vec4);\r\n }\r\n\r\n private initialize(settings: PointCloudDisplaySettings): void {\r\n this._vec4[0] = \"pixel\" === settings.sizeMode ? settings.pixelSize : -settings.voxelScale;\r\n this._vec4[1] = settings.minPixelsPerVoxel;\r\n this._vec4[2] = settings.maxPixelsPerVoxel;\r\n this._vec4[3] = \"square\" === settings.shape ? 1 : 0;\r\n }\r\n}\r\n\r\n/** Uniforms affecting how reality models are drawn.\r\n * Pushing a Branch may *replace* the current settings. Popping the Branch does not reset them. It is expected that every Branch containing\r\n * a reality model will also specify the settings for drawing that reality model.\r\n * This permits the same reality model graphics to be rendered differently in different viewports.\r\n * In future these uniforms may include additional settings for reality meshes - currently only the override color ratio applies to them.\r\n * @internal\r\n */\r\nexport class RealityModelUniforms {\r\n // ###TODO when we need it: public readonly mesh = new RealityMeshUniforms();\r\n public readonly pointCloud = new PointCloudUniforms();\r\n private _overrideColorMix = 0.5;\r\n\r\n public update(settings: RealityModelDisplaySettings): void {\r\n this._overrideColorMix = settings.overrideColorRatio;\r\n this.pointCloud.update(settings.pointCloud);\r\n }\r\n\r\n public bindOverrideColorMix(uniform: UniformHandle): void {\r\n uniform.setUniform1f(this._overrideColorMix);\r\n }\r\n}\r\n"]}
@@ -15,6 +15,7 @@ import { StyleUniforms } from "./StyleUniforms";
15
15
  import { Target } from "./Target";
16
16
  import { ThematicUniforms } from "./ThematicUniforms";
17
17
  import { ViewRectUniforms } from "./ViewRectUniforms";
18
+ import { RealityModelUniforms } from "./RealityModelUniforms";
18
19
  /** Holds state for commonly-used uniforms to avoid unnecessary recomputation, owned by a Target.
19
20
  * DO NOT directly modify exposed members of the objects exposed by this class. Use their APIs.
20
21
  * e.g., code like `target.uniforms.frustum.projectionMatrix.setFrom(someOtherMatrix)` or `target.uniforms.branch.top.setViewFlags(blah)` will cause bugs.
@@ -30,6 +31,7 @@ export declare class TargetUniforms {
30
31
  readonly branch: BranchUniforms;
31
32
  readonly batch: BatchUniforms;
32
33
  readonly shadow: ShadowUniforms;
34
+ readonly realityModel: RealityModelUniforms;
33
35
  private readonly _pixelWidthFactor;
34
36
  private readonly _sunDirection;
35
37
  constructor(target: Target);
@@ -1 +1 @@
1
- {"version":3,"file":"TargetUniforms.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/TargetUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAY,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAsB,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAgGtD;;;;GAIG;AACH,qBAAa,cAAc;IACzB,SAAgB,OAAO,EAAE,eAAe,CAAC;IACzC,SAAgB,QAAQ,mBAA0B;IAClD,SAAgB,MAAM,iBAAwB;IAC9C,SAAgB,KAAK,gBAAuB;IAC5C,SAAgB,MAAM,mBAA0B;IAChD,SAAgB,QAAQ,mBAA0B;IAClD,SAAgB,MAAM,EAAE,cAAc,CAAC;IACvC,SAAgB,KAAK,EAAE,aAAa,CAAC;IACrC,SAAgB,MAAM,EAAE,cAAc,CAAC;IACvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA0B;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;gBAEjC,MAAM,EAAE,MAAM;IAO1B,mBAAmB,CAAC,aAAa,EAAE,OAAO,GAAG,QAAQ;IAIrD,qBAAqB,CAAC,aAAa,EAAE,OAAO,GAAG,OAAO;IAItD,oBAAoB,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI;IAO1E,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAIlD,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAI9C,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;CAehD"}
1
+ {"version":3,"file":"TargetUniforms.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/TargetUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAY,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAsB,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAgG9D;;;;GAIG;AACH,qBAAa,cAAc;IACzB,SAAgB,OAAO,EAAE,eAAe,CAAC;IACzC,SAAgB,QAAQ,mBAA0B;IAClD,SAAgB,MAAM,iBAAwB;IAC9C,SAAgB,KAAK,gBAAuB;IAC5C,SAAgB,MAAM,mBAA0B;IAChD,SAAgB,QAAQ,mBAA0B;IAClD,SAAgB,MAAM,EAAE,cAAc,CAAC;IACvC,SAAgB,KAAK,EAAE,aAAa,CAAC;IACrC,SAAgB,MAAM,EAAE,cAAc,CAAC;IACvC,SAAgB,YAAY,uBAA8B;IAC1D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA0B;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;gBAEjC,MAAM,EAAE,MAAM;IAO1B,mBAAmB,CAAC,aAAa,EAAE,OAAO,GAAG,QAAQ;IAIrD,qBAAqB,CAAC,aAAa,EAAE,OAAO,GAAG,OAAO;IAItD,oBAAoB,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI;IAO1E,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAIlD,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAI9C,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;CAehD"}
@@ -19,6 +19,7 @@ const StyleUniforms_1 = require("./StyleUniforms");
19
19
  const Sync_1 = require("./Sync");
20
20
  const ThematicUniforms_1 = require("./ThematicUniforms");
21
21
  const ViewRectUniforms_1 = require("./ViewRectUniforms");
22
+ const RealityModelUniforms_1 = require("./RealityModelUniforms");
22
23
  class PixelWidthFactor {
23
24
  constructor() {
24
25
  /** The pixel width factor depends on both the frustum and the view rect. It also depends on the frustum scale associated with the current Branch. */
@@ -112,6 +113,7 @@ class TargetUniforms {
112
113
  this.style = new StyleUniforms_1.StyleUniforms();
113
114
  this.lights = new LightingUniforms_1.LightingUniforms();
114
115
  this.thematic = new ThematicUniforms_1.ThematicUniforms();
116
+ this.realityModel = new RealityModelUniforms_1.RealityModelUniforms();
115
117
  this._pixelWidthFactor = new PixelWidthFactor();
116
118
  this._sunDirection = new SunDirection();
117
119
  this.frustum = new FrustumUniforms_1.FrustumUniforms();
@@ -1 +1 @@
1
- {"version":3,"file":"TargetUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/TargetUniforms.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { Matrix4d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { RenderPlan } from \"../RenderPlan\";\r\nimport { BatchUniforms } from \"./BatchUniforms\";\r\nimport { BranchUniforms } from \"./BranchUniforms\";\r\nimport { FrustumUniforms, FrustumUniformType } from \"./FrustumUniforms\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { HiliteUniforms } from \"./HiliteUniforms\";\r\nimport { LightingUniforms } from \"./LightingUniforms\";\r\nimport { Matrix4 } from \"./Matrix\";\r\nimport { ShadowUniforms } from \"./ShadowUniforms\";\r\nimport { StyleUniforms } from \"./StyleUniforms\";\r\nimport { desync, sync, SyncObserver, SyncToken } from \"./Sync\";\r\nimport { Target } from \"./Target\";\r\nimport { ThematicUniforms } from \"./ThematicUniforms\";\r\nimport { ViewRectUniforms } from \"./ViewRectUniforms\";\r\n\r\nclass PixelWidthFactor {\r\n /** The pixel width factor depends on both the frustum and the view rect. It also depends on the frustum scale associated with the current Branch. */\r\n private readonly _rectSync: SyncObserver = {};\r\n private readonly _frustumSync: SyncObserver = {};\r\n private readonly _branchSync: SyncObserver = {};\r\n private _factor = 0;\r\n public syncKey = 0;\r\n\r\n public bind(uniform: UniformHandle, uniforms: TargetUniforms): void {\r\n if (!sync(uniforms.frustum, this._frustumSync) || !sync(uniforms.viewRect, this._rectSync) || !sync(uniforms.branch, this._branchSync))\r\n this.compute(uniforms.frustum, uniforms.viewRect.width, uniforms.viewRect.height, uniforms.branch.top.frustumScale);\r\n\r\n if (!sync(this, uniform))\r\n uniform.setUniform1f(this._factor);\r\n }\r\n\r\n private compute(frustumUniforms: FrustumUniforms, width: number, height: number, scale: { x: number, y: number }): void {\r\n desync(this);\r\n\r\n const frustumPlanes = frustumUniforms.planes;\r\n const top = frustumPlanes[0];\r\n const bottom = frustumPlanes[1];\r\n const left = frustumPlanes[2];\r\n const right = frustumPlanes[3];\r\n\r\n let halfPixelWidth: number;\r\n let halfPixelHeight: number;\r\n\r\n const frustum = frustumUniforms.frustum;\r\n\r\n if (FrustumUniformType.Perspective === frustumUniforms.type) {\r\n const inverseNear = 1.0 / frustum[0];\r\n const tanTheta = top * inverseNear;\r\n halfPixelHeight = scale.x * tanTheta / height;\r\n halfPixelWidth = scale.y * tanTheta / width;\r\n } else {\r\n halfPixelWidth = scale.x * 0.5 * (right - left) / width;\r\n halfPixelHeight = scale.y * 0.5 * (top - bottom) / height;\r\n }\r\n\r\n this._factor = Math.sqrt(halfPixelWidth * halfPixelWidth + halfPixelHeight * halfPixelHeight);\r\n }\r\n}\r\n\r\n// Direction in view space used if solar shadows are disabled and LightSettings.useSolarLighting is false.\r\nconst defaultSunDirectionView = new Vector3d(0.272166, 0.680414, 0.680414);\r\n\r\nclass SunDirection {\r\n // Sun direction is passed to shader in view coords so depends upon frustum.\r\n public syncToken?: SyncToken;\r\n public syncKey = 0;\r\n private _haveWorldDir = false;\r\n private readonly _worldDir = Vector3d.unitZ();\r\n private readonly _viewDir = defaultSunDirectionView.clone();\r\n private readonly _viewDir32 = new Float32Array(3);\r\n private _updated = true;\r\n\r\n public update(sunDir: Vector3d | undefined): void {\r\n const haveWorldDir = undefined !== sunDir;\r\n if (haveWorldDir !== this._haveWorldDir || (sunDir && !sunDir.isExactEqual(this._worldDir))) {\r\n this._updated = true;\r\n desync(this);\r\n\r\n this._haveWorldDir = haveWorldDir;\r\n if (sunDir) {\r\n sunDir.clone(this._worldDir);\r\n this._worldDir.normalizeInPlace();\r\n }\r\n }\r\n }\r\n\r\n public bind(uniform: UniformHandle, uniforms: TargetUniforms): void {\r\n if (!sync(uniforms.frustum, this) || this._updated) {\r\n if (this._haveWorldDir) {\r\n uniforms.frustum.viewMatrix.multiplyVector(this._worldDir, this._viewDir);\r\n this._viewDir.negate(this._viewDir);\r\n } else {\r\n defaultSunDirectionView.clone(this._viewDir);\r\n }\r\n\r\n this._viewDir.normalizeInPlace();\r\n this._viewDir32[0] = this._viewDir.x;\r\n this._viewDir32[1] = this._viewDir.y;\r\n this._viewDir32[2] = this._viewDir.z;\r\n\r\n desync(this);\r\n this._updated = false;\r\n }\r\n\r\n if (!sync(this, uniform))\r\n uniform.setUniform3fv(this._viewDir32);\r\n }\r\n}\r\n\r\n/** Holds state for commonly-used uniforms to avoid unnecessary recomputation, owned by a Target.\r\n * DO NOT directly modify exposed members of the objects exposed by this class. Use their APIs.\r\n * e.g., code like `target.uniforms.frustum.projectionMatrix.setFrom(someOtherMatrix)` or `target.uniforms.branch.top.setViewFlags(blah)` will cause bugs.\r\n * @internal\r\n */\r\nexport class TargetUniforms {\r\n public readonly frustum: FrustumUniforms;\r\n public readonly viewRect = new ViewRectUniforms();\r\n public readonly hilite = new HiliteUniforms();\r\n public readonly style = new StyleUniforms();\r\n public readonly lights = new LightingUniforms();\r\n public readonly thematic = new ThematicUniforms();\r\n public readonly branch: BranchUniforms;\r\n public readonly batch: BatchUniforms;\r\n public readonly shadow: ShadowUniforms;\r\n private readonly _pixelWidthFactor = new PixelWidthFactor();\r\n private readonly _sunDirection = new SunDirection();\r\n\r\n public constructor(target: Target) {\r\n this.frustum = new FrustumUniforms();\r\n this.branch = new BranchUniforms(target);\r\n this.batch = new BatchUniforms(target, this.branch.createBatchState());\r\n this.shadow = new ShadowUniforms(target);\r\n }\r\n\r\n public getProjectionMatrix(forViewCoords: boolean): Matrix4d {\r\n return forViewCoords ? this.viewRect.projectionMatrix : this.frustum.projectionMatrix;\r\n }\r\n\r\n public getProjectionMatrix32(forViewCoords: boolean): Matrix4 {\r\n return forViewCoords ? this.viewRect.projectionMatrix32 : this.frustum.projectionMatrix32;\r\n }\r\n\r\n public bindProjectionMatrix(uniform: UniformHandle, forViewCoords: boolean): void {\r\n if (forViewCoords)\r\n this.viewRect.bindProjectionMatrix(uniform);\r\n else\r\n this.frustum.bindProjectionMatrix(uniform);\r\n }\r\n\r\n public bindPixelWidthFactor(uniform: UniformHandle): void {\r\n this._pixelWidthFactor.bind(uniform, this);\r\n }\r\n\r\n public bindSunDirection(uniform: UniformHandle): void {\r\n this._sunDirection.bind(uniform, this);\r\n }\r\n\r\n public updateRenderPlan(plan: RenderPlan): void {\r\n this.style.update(plan);\r\n this.hilite.update(plan.hiliteSettings, plan.emphasisSettings);\r\n\r\n let sunDir;\r\n if (plan.lights) {\r\n this.lights.update(plan.lights);\r\n\r\n const useSunDir = plan.viewFlags.shadows || plan.lights.solar.alwaysEnabled;\r\n if (useSunDir)\r\n sunDir = plan.lights.solar.direction;\r\n }\r\n\r\n this._sunDirection.update(sunDir);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"TargetUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/TargetUniforms.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { Matrix4d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { RenderPlan } from \"../RenderPlan\";\r\nimport { BatchUniforms } from \"./BatchUniforms\";\r\nimport { BranchUniforms } from \"./BranchUniforms\";\r\nimport { FrustumUniforms, FrustumUniformType } from \"./FrustumUniforms\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { HiliteUniforms } from \"./HiliteUniforms\";\r\nimport { LightingUniforms } from \"./LightingUniforms\";\r\nimport { Matrix4 } from \"./Matrix\";\r\nimport { ShadowUniforms } from \"./ShadowUniforms\";\r\nimport { StyleUniforms } from \"./StyleUniforms\";\r\nimport { desync, sync, SyncObserver, SyncToken } from \"./Sync\";\r\nimport { Target } from \"./Target\";\r\nimport { ThematicUniforms } from \"./ThematicUniforms\";\r\nimport { ViewRectUniforms } from \"./ViewRectUniforms\";\r\nimport { RealityModelUniforms } from \"./RealityModelUniforms\";\r\n\r\nclass PixelWidthFactor {\r\n /** The pixel width factor depends on both the frustum and the view rect. It also depends on the frustum scale associated with the current Branch. */\r\n private readonly _rectSync: SyncObserver = {};\r\n private readonly _frustumSync: SyncObserver = {};\r\n private readonly _branchSync: SyncObserver = {};\r\n private _factor = 0;\r\n public syncKey = 0;\r\n\r\n public bind(uniform: UniformHandle, uniforms: TargetUniforms): void {\r\n if (!sync(uniforms.frustum, this._frustumSync) || !sync(uniforms.viewRect, this._rectSync) || !sync(uniforms.branch, this._branchSync))\r\n this.compute(uniforms.frustum, uniforms.viewRect.width, uniforms.viewRect.height, uniforms.branch.top.frustumScale);\r\n\r\n if (!sync(this, uniform))\r\n uniform.setUniform1f(this._factor);\r\n }\r\n\r\n private compute(frustumUniforms: FrustumUniforms, width: number, height: number, scale: { x: number, y: number }): void {\r\n desync(this);\r\n\r\n const frustumPlanes = frustumUniforms.planes;\r\n const top = frustumPlanes[0];\r\n const bottom = frustumPlanes[1];\r\n const left = frustumPlanes[2];\r\n const right = frustumPlanes[3];\r\n\r\n let halfPixelWidth: number;\r\n let halfPixelHeight: number;\r\n\r\n const frustum = frustumUniforms.frustum;\r\n\r\n if (FrustumUniformType.Perspective === frustumUniforms.type) {\r\n const inverseNear = 1.0 / frustum[0];\r\n const tanTheta = top * inverseNear;\r\n halfPixelHeight = scale.x * tanTheta / height;\r\n halfPixelWidth = scale.y * tanTheta / width;\r\n } else {\r\n halfPixelWidth = scale.x * 0.5 * (right - left) / width;\r\n halfPixelHeight = scale.y * 0.5 * (top - bottom) / height;\r\n }\r\n\r\n this._factor = Math.sqrt(halfPixelWidth * halfPixelWidth + halfPixelHeight * halfPixelHeight);\r\n }\r\n}\r\n\r\n// Direction in view space used if solar shadows are disabled and LightSettings.useSolarLighting is false.\r\nconst defaultSunDirectionView = new Vector3d(0.272166, 0.680414, 0.680414);\r\n\r\nclass SunDirection {\r\n // Sun direction is passed to shader in view coords so depends upon frustum.\r\n public syncToken?: SyncToken;\r\n public syncKey = 0;\r\n private _haveWorldDir = false;\r\n private readonly _worldDir = Vector3d.unitZ();\r\n private readonly _viewDir = defaultSunDirectionView.clone();\r\n private readonly _viewDir32 = new Float32Array(3);\r\n private _updated = true;\r\n\r\n public update(sunDir: Vector3d | undefined): void {\r\n const haveWorldDir = undefined !== sunDir;\r\n if (haveWorldDir !== this._haveWorldDir || (sunDir && !sunDir.isExactEqual(this._worldDir))) {\r\n this._updated = true;\r\n desync(this);\r\n\r\n this._haveWorldDir = haveWorldDir;\r\n if (sunDir) {\r\n sunDir.clone(this._worldDir);\r\n this._worldDir.normalizeInPlace();\r\n }\r\n }\r\n }\r\n\r\n public bind(uniform: UniformHandle, uniforms: TargetUniforms): void {\r\n if (!sync(uniforms.frustum, this) || this._updated) {\r\n if (this._haveWorldDir) {\r\n uniforms.frustum.viewMatrix.multiplyVector(this._worldDir, this._viewDir);\r\n this._viewDir.negate(this._viewDir);\r\n } else {\r\n defaultSunDirectionView.clone(this._viewDir);\r\n }\r\n\r\n this._viewDir.normalizeInPlace();\r\n this._viewDir32[0] = this._viewDir.x;\r\n this._viewDir32[1] = this._viewDir.y;\r\n this._viewDir32[2] = this._viewDir.z;\r\n\r\n desync(this);\r\n this._updated = false;\r\n }\r\n\r\n if (!sync(this, uniform))\r\n uniform.setUniform3fv(this._viewDir32);\r\n }\r\n}\r\n\r\n/** Holds state for commonly-used uniforms to avoid unnecessary recomputation, owned by a Target.\r\n * DO NOT directly modify exposed members of the objects exposed by this class. Use their APIs.\r\n * e.g., code like `target.uniforms.frustum.projectionMatrix.setFrom(someOtherMatrix)` or `target.uniforms.branch.top.setViewFlags(blah)` will cause bugs.\r\n * @internal\r\n */\r\nexport class TargetUniforms {\r\n public readonly frustum: FrustumUniforms;\r\n public readonly viewRect = new ViewRectUniforms();\r\n public readonly hilite = new HiliteUniforms();\r\n public readonly style = new StyleUniforms();\r\n public readonly lights = new LightingUniforms();\r\n public readonly thematic = new ThematicUniforms();\r\n public readonly branch: BranchUniforms;\r\n public readonly batch: BatchUniforms;\r\n public readonly shadow: ShadowUniforms;\r\n public readonly realityModel = new RealityModelUniforms();\r\n private readonly _pixelWidthFactor = new PixelWidthFactor();\r\n private readonly _sunDirection = new SunDirection();\r\n\r\n public constructor(target: Target) {\r\n this.frustum = new FrustumUniforms();\r\n this.branch = new BranchUniforms(target);\r\n this.batch = new BatchUniforms(target, this.branch.createBatchState());\r\n this.shadow = new ShadowUniforms(target);\r\n }\r\n\r\n public getProjectionMatrix(forViewCoords: boolean): Matrix4d {\r\n return forViewCoords ? this.viewRect.projectionMatrix : this.frustum.projectionMatrix;\r\n }\r\n\r\n public getProjectionMatrix32(forViewCoords: boolean): Matrix4 {\r\n return forViewCoords ? this.viewRect.projectionMatrix32 : this.frustum.projectionMatrix32;\r\n }\r\n\r\n public bindProjectionMatrix(uniform: UniformHandle, forViewCoords: boolean): void {\r\n if (forViewCoords)\r\n this.viewRect.bindProjectionMatrix(uniform);\r\n else\r\n this.frustum.bindProjectionMatrix(uniform);\r\n }\r\n\r\n public bindPixelWidthFactor(uniform: UniformHandle): void {\r\n this._pixelWidthFactor.bind(uniform, this);\r\n }\r\n\r\n public bindSunDirection(uniform: UniformHandle): void {\r\n this._sunDirection.bind(uniform, this);\r\n }\r\n\r\n public updateRenderPlan(plan: RenderPlan): void {\r\n this.style.update(plan);\r\n this.hilite.update(plan.hiliteSettings, plan.emphasisSettings);\r\n\r\n let sunDir;\r\n if (plan.lights) {\r\n this.lights.update(plan.lights);\r\n\r\n const useSunDir = plan.viewFlags.shadows || plan.lights.solar.alwaysEnabled;\r\n if (useSunDir)\r\n sunDir = plan.lights.solar.direction;\r\n }\r\n\r\n this._sunDirection.update(sunDir);\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Technique.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Technique.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Technique.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Technique.ts"],"names":[],"mappings":"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"}
@@ -6,25 +6,6 @@
6
6
  /** @packageDocumentation
7
7
  * @module WebGL
8
8
  */
9
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
12
- }) : (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- o[k2] = m[k];
15
- }));
16
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
- Object.defineProperty(o, "default", { enumerable: true, value: v });
18
- }) : function(o, v) {
19
- o["default"] = v;
20
- });
21
- var __importStar = (this && this.__importStar) || function (mod) {
22
- if (mod && mod.__esModule) return mod;
23
- var result = {};
24
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
- __setModuleDefault(result, mod);
26
- return result;
27
- };
28
9
  var __importDefault = (this && this.__importDefault) || function (mod) {
29
10
  return (mod && mod.__esModule) ? mod : { "default": mod };
30
11
  };
@@ -54,7 +35,7 @@ const PlanarGrid_1 = __importDefault(require("./glsl/PlanarGrid"));
54
35
  const PointCloud_1 = require("./glsl/PointCloud");
55
36
  const PointString_1 = require("./glsl/PointString");
56
37
  const Polyline_1 = require("./glsl/Polyline");
57
- const RealityMesh_1 = __importStar(require("./glsl/RealityMesh"));
38
+ const RealityMesh_1 = require("./glsl/RealityMesh");
58
39
  const SkyBox_1 = require("./glsl/SkyBox");
59
40
  const SkySphere_1 = require("./glsl/SkySphere");
60
41
  const Surface_1 = require("./glsl/Surface");
@@ -520,10 +501,6 @@ PointStringTechnique._kUnquantized = PointStringTechnique._kHilite + numHiliteVa
520
501
  class PointCloudTechnique extends VariedTechnique {
521
502
  constructor(gl) {
522
503
  super(PointCloudTechnique._kHilite + 2);
523
- this._earlyZFlags = [
524
- TechniqueFlags_1.TechniqueFlags.fromDescription("Opaque-Hilite-Overrides"),
525
- TechniqueFlags_1.TechniqueFlags.fromDescription("Opaque-Hilite-Classified"),
526
- ];
527
504
  for (let iClassified = 0 /* No */; iClassified <= 1 /* Yes */; iClassified++) {
528
505
  this.addHiliteShader(gl, 0 /* No */, iClassified, "quantized", (_inst, classified) => (0, PointCloud_1.createPointCloudHiliter)(classified));
529
506
  const flags = scratchTechniqueFlags;
@@ -535,11 +512,7 @@ class PointCloudTechnique extends VariedTechnique {
535
512
  const builder = (0, PointCloud_1.createPointCloudBuilder)(flags.isClassified, featureMode, thematic);
536
513
  if (2 /* Overrides */ === featureMode) {
537
514
  (0, FeatureSymbology_1.addUniformFeatureSymbology)(builder, true);
538
- builder.vert.addUniform("u_overrideColorMix", 2 /* Float */, (prog) => {
539
- prog.addGraphicUniform("u_overrideColorMix", (uniform, params) => {
540
- uniform.setUniform1f(params.geometry.asPointCloud.overrideColorMix);
541
- });
542
- });
515
+ (0, RealityMesh_1.addColorOverrideMix)(builder.vert);
543
516
  builder.vert.set(7 /* ApplyFeatureColor */, FeatureSymbology_1.mixFeatureColor);
544
517
  }
545
518
  this.addFeatureId(builder, featureMode);
@@ -587,7 +560,7 @@ class RealityMeshTechnique extends VariedTechnique {
587
560
  flags.isClassified = iClassified;
588
561
  flags.isWiremesh = wiremesh;
589
562
  flags.isTranslucent = 1 === iTranslucent;
590
- const builder = (0, RealityMesh_1.default)(flags);
563
+ const builder = (0, RealityMesh_1.createRealityMeshBuilder)(flags);
591
564
  if (flags.isTranslucent) {
592
565
  (0, Common_1.addShaderFlags)(builder);
593
566
  (0, Translucency_1.addTranslucency)(builder);