@itwin/core-frontend 4.10.0-dev.3 → 4.10.0-dev.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (574) hide show
  1. package/CHANGELOG.md +33 -1
  2. package/lib/cjs/AccuSnap.d.ts.map +1 -1
  3. package/lib/cjs/AccuSnap.js +9 -5
  4. package/lib/cjs/AccuSnap.js.map +1 -1
  5. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  6. package/lib/cjs/DisplayStyleState.js +5 -1
  7. package/lib/cjs/DisplayStyleState.js.map +1 -1
  8. package/lib/cjs/DrawingViewState.d.ts +7 -2
  9. package/lib/cjs/DrawingViewState.d.ts.map +1 -1
  10. package/lib/cjs/DrawingViewState.js +18 -6
  11. package/lib/cjs/DrawingViewState.js.map +1 -1
  12. package/lib/cjs/ElementLocateManager.d.ts +7 -1
  13. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  14. package/lib/cjs/ElementLocateManager.js +34 -10
  15. package/lib/cjs/ElementLocateManager.js.map +1 -1
  16. package/lib/cjs/HitDetail.d.ts +10 -7
  17. package/lib/cjs/HitDetail.d.ts.map +1 -1
  18. package/lib/cjs/HitDetail.js +4 -2
  19. package/lib/cjs/HitDetail.js.map +1 -1
  20. package/lib/cjs/IModelConnection.d.ts +1 -0
  21. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  22. package/lib/cjs/IModelConnection.js +2 -1
  23. package/lib/cjs/IModelConnection.js.map +1 -1
  24. package/lib/cjs/NoRenderApp.d.ts +1 -0
  25. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  26. package/lib/cjs/NoRenderApp.js +1 -0
  27. package/lib/cjs/NoRenderApp.js.map +1 -1
  28. package/lib/cjs/SheetViewState.d.ts +0 -1
  29. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  30. package/lib/cjs/SheetViewState.js +0 -1
  31. package/lib/cjs/SheetViewState.js.map +1 -1
  32. package/lib/cjs/ViewState.d.ts +6 -2
  33. package/lib/cjs/ViewState.d.ts.map +1 -1
  34. package/lib/cjs/ViewState.js +3 -1
  35. package/lib/cjs/ViewState.js.map +1 -1
  36. package/lib/cjs/ViewingSpace.d.ts.map +1 -1
  37. package/lib/cjs/ViewingSpace.js +3 -0
  38. package/lib/cjs/ViewingSpace.js.map +1 -1
  39. package/lib/cjs/Viewport.d.ts +25 -1
  40. package/lib/cjs/Viewport.d.ts.map +1 -1
  41. package/lib/cjs/Viewport.js +20 -12
  42. package/lib/cjs/Viewport.js.map +1 -1
  43. package/lib/cjs/common/WorkerProxy.d.ts +8 -4
  44. package/lib/cjs/common/WorkerProxy.d.ts.map +1 -1
  45. package/lib/cjs/common/WorkerProxy.js.map +1 -1
  46. package/lib/cjs/common/imdl/ImdlModel.d.ts +3 -8
  47. package/lib/cjs/common/imdl/ImdlModel.d.ts.map +1 -1
  48. package/lib/cjs/common/imdl/ImdlModel.js.map +1 -1
  49. package/lib/cjs/common/internal/Symbols.d.ts +7 -0
  50. package/lib/cjs/common/internal/Symbols.d.ts.map +1 -1
  51. package/lib/cjs/common/internal/Symbols.js +8 -1
  52. package/lib/cjs/common/internal/Symbols.js.map +1 -1
  53. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts +15 -0
  54. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -0
  55. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js +95 -0
  56. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -0
  57. package/lib/cjs/common/internal/render/LineCode.d.ts +9 -0
  58. package/lib/cjs/common/internal/render/LineCode.d.ts.map +1 -0
  59. package/lib/cjs/common/internal/render/LineCode.js +31 -0
  60. package/lib/cjs/common/internal/render/LineCode.js.map +1 -0
  61. package/lib/cjs/common/internal/render/OvrFlags.d.ts +27 -0
  62. package/lib/cjs/common/internal/render/OvrFlags.d.ts.map +1 -0
  63. package/lib/cjs/common/internal/render/OvrFlags.js +10 -0
  64. package/lib/cjs/common/internal/render/OvrFlags.js.map +1 -0
  65. package/lib/cjs/common/internal/render/VertexTable.d.ts.map +1 -1
  66. package/lib/cjs/common/internal/render/VertexTable.js +3 -5
  67. package/lib/cjs/common/internal/render/VertexTable.js.map +1 -1
  68. package/lib/cjs/common/render/InstancedGraphicParams.d.ts +25 -1
  69. package/lib/cjs/common/render/InstancedGraphicParams.d.ts.map +1 -1
  70. package/lib/cjs/common/render/InstancedGraphicParams.js +59 -0
  71. package/lib/cjs/common/render/InstancedGraphicParams.js.map +1 -1
  72. package/lib/cjs/common/render/RenderInstancesParams.d.ts +76 -0
  73. package/lib/cjs/common/render/RenderInstancesParams.d.ts.map +1 -0
  74. package/lib/cjs/common/render/RenderInstancesParams.js +33 -0
  75. package/lib/cjs/common/render/RenderInstancesParams.js.map +1 -0
  76. package/lib/cjs/common.d.ts +1 -0
  77. package/lib/cjs/common.d.ts.map +1 -1
  78. package/lib/cjs/common.js +1 -0
  79. package/lib/cjs/common.js.map +1 -1
  80. package/lib/cjs/core-frontend.d.ts +1 -0
  81. package/lib/cjs/core-frontend.d.ts.map +1 -1
  82. package/lib/cjs/core-frontend.js +1 -0
  83. package/lib/cjs/core-frontend.js.map +1 -1
  84. package/lib/cjs/internal/render/PrimitiveBuilder.d.ts +4 -1
  85. package/lib/cjs/internal/render/PrimitiveBuilder.d.ts.map +1 -1
  86. package/lib/cjs/internal/render/PrimitiveBuilder.js +82 -35
  87. package/lib/cjs/internal/render/PrimitiveBuilder.js.map +1 -1
  88. package/lib/cjs/internal/render/RenderGeometry.d.ts +20 -0
  89. package/lib/cjs/internal/render/RenderGeometry.d.ts.map +1 -0
  90. package/lib/cjs/internal/render/RenderGeometry.js +10 -0
  91. package/lib/cjs/internal/render/RenderGeometry.js.map +1 -0
  92. package/lib/cjs/internal/render/RenderInstancesParamsImpl.d.ts +24 -0
  93. package/lib/cjs/internal/render/RenderInstancesParamsImpl.d.ts.map +1 -0
  94. package/lib/cjs/internal/render/RenderInstancesParamsImpl.js +69 -0
  95. package/lib/cjs/internal/render/RenderInstancesParamsImpl.js.map +1 -0
  96. package/lib/cjs/render/GraphicBranch.d.ts +11 -2
  97. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  98. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  99. package/lib/cjs/render/GraphicBuilder.d.ts +17 -3
  100. package/lib/cjs/render/GraphicBuilder.d.ts.map +1 -1
  101. package/lib/cjs/render/GraphicBuilder.js +7 -1
  102. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  103. package/lib/cjs/render/GraphicTemplate.d.ts +76 -0
  104. package/lib/cjs/render/GraphicTemplate.d.ts.map +1 -0
  105. package/lib/cjs/render/GraphicTemplate.js +41 -0
  106. package/lib/cjs/render/GraphicTemplate.js.map +1 -0
  107. package/lib/cjs/render/MockRender.d.ts +12 -2
  108. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  109. package/lib/cjs/render/MockRender.js +19 -5
  110. package/lib/cjs/render/MockRender.js.map +1 -1
  111. package/lib/cjs/render/Pixel.d.ts +9 -1
  112. package/lib/cjs/render/Pixel.d.ts.map +1 -1
  113. package/lib/cjs/render/Pixel.js +2 -0
  114. package/lib/cjs/render/Pixel.js.map +1 -1
  115. package/lib/cjs/render/RealityMeshGraphicParams.d.ts +1 -0
  116. package/lib/cjs/render/RealityMeshGraphicParams.d.ts.map +1 -1
  117. package/lib/cjs/render/RealityMeshGraphicParams.js.map +1 -1
  118. package/lib/cjs/render/RenderMemory.d.ts +2 -0
  119. package/lib/cjs/render/RenderMemory.d.ts.map +1 -1
  120. package/lib/cjs/render/RenderMemory.js +2 -0
  121. package/lib/cjs/render/RenderMemory.js.map +1 -1
  122. package/lib/cjs/render/RenderPlan.d.ts +2 -1
  123. package/lib/cjs/render/RenderPlan.d.ts.map +1 -1
  124. package/lib/cjs/render/RenderPlan.js +2 -0
  125. package/lib/cjs/render/RenderPlan.js.map +1 -1
  126. package/lib/cjs/render/RenderSystem.d.ts +59 -11
  127. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  128. package/lib/cjs/render/RenderSystem.js +44 -6
  129. package/lib/cjs/render/RenderSystem.js.map +1 -1
  130. package/lib/cjs/render/RenderTarget.d.ts +1 -1
  131. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  132. package/lib/cjs/render/RenderTarget.js.map +1 -1
  133. package/lib/cjs/render/webgl/BatchUniforms.d.ts +4 -0
  134. package/lib/cjs/render/webgl/BatchUniforms.d.ts.map +1 -1
  135. package/lib/cjs/render/webgl/BatchUniforms.js +18 -0
  136. package/lib/cjs/render/webgl/BatchUniforms.js.map +1 -1
  137. package/lib/cjs/render/webgl/BranchState.d.ts +7 -0
  138. package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
  139. package/lib/cjs/render/webgl/BranchState.js +4 -0
  140. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  141. package/lib/cjs/render/webgl/BranchUniforms.d.ts +1 -0
  142. package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
  143. package/lib/cjs/render/webgl/BranchUniforms.js +14 -1
  144. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  145. package/lib/cjs/render/webgl/ContourUniforms.d.ts +22 -0
  146. package/lib/cjs/render/webgl/ContourUniforms.d.ts.map +1 -0
  147. package/lib/cjs/render/webgl/ContourUniforms.js +98 -0
  148. package/lib/cjs/render/webgl/ContourUniforms.js.map +1 -0
  149. package/lib/cjs/render/webgl/Contours.d.ts +34 -0
  150. package/lib/cjs/render/webgl/Contours.d.ts.map +1 -0
  151. package/lib/cjs/render/webgl/Contours.js +127 -0
  152. package/lib/cjs/render/webgl/Contours.js.map +1 -0
  153. package/lib/cjs/render/webgl/EdgeSettings.d.ts +2 -1
  154. package/lib/cjs/render/webgl/EdgeSettings.d.ts.map +1 -1
  155. package/lib/cjs/render/webgl/EdgeSettings.js +1 -1
  156. package/lib/cjs/render/webgl/EdgeSettings.js.map +1 -1
  157. package/lib/cjs/render/webgl/FeatureOverrides.d.ts +2 -0
  158. package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
  159. package/lib/cjs/render/webgl/FeatureOverrides.js +83 -69
  160. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  161. package/lib/cjs/render/webgl/GL.d.ts +2 -1
  162. package/lib/cjs/render/webgl/GL.d.ts.map +1 -1
  163. package/lib/cjs/render/webgl/GL.js +1 -0
  164. package/lib/cjs/render/webgl/GL.js.map +1 -1
  165. package/lib/cjs/render/webgl/Graphic.d.ts +9 -0
  166. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  167. package/lib/cjs/render/webgl/Graphic.js +27 -0
  168. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  169. package/lib/cjs/render/webgl/InstancedGeometry.d.ts +40 -10
  170. package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
  171. package/lib/cjs/render/webgl/InstancedGeometry.js +99 -31
  172. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  173. package/lib/cjs/render/webgl/LineCode.d.ts.map +1 -1
  174. package/lib/cjs/render/webgl/LineCode.js +2 -14
  175. package/lib/cjs/render/webgl/LineCode.js.map +1 -1
  176. package/lib/cjs/render/webgl/Mesh.d.ts +9 -4
  177. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  178. package/lib/cjs/render/webgl/Mesh.js +18 -16
  179. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  180. package/lib/cjs/render/webgl/PointCloud.d.ts +5 -1
  181. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  182. package/lib/cjs/render/webgl/PointCloud.js +7 -2
  183. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  184. package/lib/cjs/render/webgl/PointString.d.ts +5 -1
  185. package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
  186. package/lib/cjs/render/webgl/PointString.js +8 -3
  187. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  188. package/lib/cjs/render/webgl/Polyline.d.ts +5 -1
  189. package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
  190. package/lib/cjs/render/webgl/Polyline.js +7 -2
  191. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  192. package/lib/cjs/render/webgl/Primitive.d.ts +1 -3
  193. package/lib/cjs/render/webgl/Primitive.d.ts.map +1 -1
  194. package/lib/cjs/render/webgl/Primitive.js +1 -6
  195. package/lib/cjs/render/webgl/Primitive.js.map +1 -1
  196. package/lib/cjs/render/webgl/RealityMesh.d.ts +5 -1
  197. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  198. package/lib/cjs/render/webgl/RealityMesh.js +7 -1
  199. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  200. package/lib/cjs/render/webgl/RenderFlags.d.ts +2 -19
  201. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  202. package/lib/cjs/render/webgl/RenderFlags.js +2 -0
  203. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  204. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  205. package/lib/cjs/render/webgl/SceneCompositor.js +12 -3
  206. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  207. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +15 -13
  208. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  209. package/lib/cjs/render/webgl/ShaderBuilder.js +18 -10
  210. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  211. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  212. package/lib/cjs/render/webgl/ShaderProgram.js +26 -0
  213. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  214. package/lib/cjs/render/webgl/System.d.ts +11 -5
  215. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  216. package/lib/cjs/render/webgl/System.js +81 -13
  217. package/lib/cjs/render/webgl/System.js.map +1 -1
  218. package/lib/cjs/render/webgl/Target.d.ts +6 -2
  219. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  220. package/lib/cjs/render/webgl/Target.js +24 -1
  221. package/lib/cjs/render/webgl/Target.js.map +1 -1
  222. package/lib/cjs/render/webgl/TargetUniforms.d.ts +2 -0
  223. package/lib/cjs/render/webgl/TargetUniforms.d.ts.map +1 -1
  224. package/lib/cjs/render/webgl/TargetUniforms.js +2 -0
  225. package/lib/cjs/render/webgl/TargetUniforms.js.map +1 -1
  226. package/lib/cjs/render/webgl/Texture.d.ts +2 -1
  227. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  228. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  229. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +1 -1
  230. package/lib/cjs/render/webgl/glsl/Atmosphere.js +1 -1
  231. package/lib/cjs/render/webgl/glsl/Blur.js +1 -1
  232. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +1 -1
  233. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +1 -1
  234. package/lib/cjs/render/webgl/glsl/Clipping.js +1 -1
  235. package/lib/cjs/render/webgl/glsl/Combine3Textures.js +1 -1
  236. package/lib/cjs/render/webgl/glsl/CombineTextures.js +1 -1
  237. package/lib/cjs/render/webgl/glsl/Composite.js +1 -1
  238. package/lib/cjs/render/webgl/glsl/Contours.d.ts +4 -0
  239. package/lib/cjs/render/webgl/glsl/Contours.d.ts.map +1 -0
  240. package/lib/cjs/render/webgl/glsl/Contours.js +138 -0
  241. package/lib/cjs/render/webgl/glsl/Contours.js.map +1 -0
  242. package/lib/cjs/render/webgl/glsl/CopyColor.js +1 -1
  243. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +1 -1
  244. package/lib/cjs/render/webgl/glsl/CopyStencil.js +5 -5
  245. package/lib/cjs/render/webgl/glsl/EDL.js +4 -4
  246. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +1 -1
  247. package/lib/cjs/render/webgl/glsl/Edge.js +1 -1
  248. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts +2 -1
  249. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  250. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +28 -15
  251. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  252. package/lib/cjs/render/webgl/glsl/Fragment.js +9 -9
  253. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  254. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +4 -4
  255. package/lib/cjs/render/webgl/glsl/PointCloud.js +1 -1
  256. package/lib/cjs/render/webgl/glsl/RealityMesh.js +3 -3
  257. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
  258. package/lib/cjs/render/webgl/glsl/SkyBox.js +1 -1
  259. package/lib/cjs/render/webgl/glsl/SkySphere.js +1 -1
  260. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +1 -1
  261. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  262. package/lib/cjs/render/webgl/glsl/Surface.js +5 -3
  263. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  264. package/lib/cjs/render/webgl/glsl/Translucency.js +1 -1
  265. package/lib/cjs/render/webgl/glsl/Wiremesh.js +1 -1
  266. package/lib/cjs/tile/GltfReader.d.ts +27 -7
  267. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  268. package/lib/cjs/tile/GltfReader.js +84 -68
  269. package/lib/cjs/tile/GltfReader.js.map +1 -1
  270. package/lib/cjs/tile/ImdlGraphicsCreator.d.ts +4 -1
  271. package/lib/cjs/tile/ImdlGraphicsCreator.d.ts.map +1 -1
  272. package/lib/cjs/tile/ImdlGraphicsCreator.js +32 -22
  273. package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -1
  274. package/lib/cjs/tile/TileDrawArgs.d.ts +4 -0
  275. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  276. package/lib/cjs/tile/TileDrawArgs.js +2 -0
  277. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  278. package/lib/cjs/tile/TileTreeReference.d.ts +2 -0
  279. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  280. package/lib/cjs/tile/TileTreeReference.js +3 -0
  281. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  282. package/lib/cjs/tile/map/MapTile.js +1 -1
  283. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  284. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  285. package/lib/cjs/tile/map/MapTilingScheme.js +4 -0
  286. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  287. package/lib/esm/AccuSnap.d.ts.map +1 -1
  288. package/lib/esm/AccuSnap.js +9 -5
  289. package/lib/esm/AccuSnap.js.map +1 -1
  290. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  291. package/lib/esm/DisplayStyleState.js +5 -1
  292. package/lib/esm/DisplayStyleState.js.map +1 -1
  293. package/lib/esm/DrawingViewState.d.ts +7 -2
  294. package/lib/esm/DrawingViewState.d.ts.map +1 -1
  295. package/lib/esm/DrawingViewState.js +18 -6
  296. package/lib/esm/DrawingViewState.js.map +1 -1
  297. package/lib/esm/ElementLocateManager.d.ts +7 -1
  298. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  299. package/lib/esm/ElementLocateManager.js +34 -10
  300. package/lib/esm/ElementLocateManager.js.map +1 -1
  301. package/lib/esm/HitDetail.d.ts +10 -7
  302. package/lib/esm/HitDetail.d.ts.map +1 -1
  303. package/lib/esm/HitDetail.js +4 -2
  304. package/lib/esm/HitDetail.js.map +1 -1
  305. package/lib/esm/IModelConnection.d.ts +1 -0
  306. package/lib/esm/IModelConnection.d.ts.map +1 -1
  307. package/lib/esm/IModelConnection.js +2 -1
  308. package/lib/esm/IModelConnection.js.map +1 -1
  309. package/lib/esm/NoRenderApp.d.ts +1 -0
  310. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  311. package/lib/esm/NoRenderApp.js +1 -0
  312. package/lib/esm/NoRenderApp.js.map +1 -1
  313. package/lib/esm/SheetViewState.d.ts +0 -1
  314. package/lib/esm/SheetViewState.d.ts.map +1 -1
  315. package/lib/esm/SheetViewState.js +0 -1
  316. package/lib/esm/SheetViewState.js.map +1 -1
  317. package/lib/esm/ViewState.d.ts +6 -2
  318. package/lib/esm/ViewState.d.ts.map +1 -1
  319. package/lib/esm/ViewState.js +3 -1
  320. package/lib/esm/ViewState.js.map +1 -1
  321. package/lib/esm/ViewingSpace.d.ts.map +1 -1
  322. package/lib/esm/ViewingSpace.js +3 -0
  323. package/lib/esm/ViewingSpace.js.map +1 -1
  324. package/lib/esm/Viewport.d.ts +25 -1
  325. package/lib/esm/Viewport.d.ts.map +1 -1
  326. package/lib/esm/Viewport.js +20 -12
  327. package/lib/esm/Viewport.js.map +1 -1
  328. package/lib/esm/common/WorkerProxy.d.ts +8 -4
  329. package/lib/esm/common/WorkerProxy.d.ts.map +1 -1
  330. package/lib/esm/common/WorkerProxy.js.map +1 -1
  331. package/lib/esm/common/imdl/ImdlModel.d.ts +3 -8
  332. package/lib/esm/common/imdl/ImdlModel.d.ts.map +1 -1
  333. package/lib/esm/common/imdl/ImdlModel.js.map +1 -1
  334. package/lib/esm/common/internal/Symbols.d.ts +7 -0
  335. package/lib/esm/common/internal/Symbols.d.ts.map +1 -1
  336. package/lib/esm/common/internal/Symbols.js +7 -0
  337. package/lib/esm/common/internal/Symbols.js.map +1 -1
  338. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts +15 -0
  339. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -0
  340. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js +91 -0
  341. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -0
  342. package/lib/esm/common/internal/render/LineCode.d.ts +9 -0
  343. package/lib/esm/common/internal/render/LineCode.d.ts.map +1 -0
  344. package/lib/esm/common/internal/render/LineCode.js +27 -0
  345. package/lib/esm/common/internal/render/LineCode.js.map +1 -0
  346. package/lib/esm/common/internal/render/OvrFlags.d.ts +27 -0
  347. package/lib/esm/common/internal/render/OvrFlags.d.ts.map +1 -0
  348. package/lib/esm/common/internal/render/OvrFlags.js +9 -0
  349. package/lib/esm/common/internal/render/OvrFlags.js.map +1 -0
  350. package/lib/esm/common/internal/render/VertexTable.d.ts.map +1 -1
  351. package/lib/esm/common/internal/render/VertexTable.js +3 -5
  352. package/lib/esm/common/internal/render/VertexTable.js.map +1 -1
  353. package/lib/esm/common/render/InstancedGraphicParams.d.ts +25 -1
  354. package/lib/esm/common/render/InstancedGraphicParams.d.ts.map +1 -1
  355. package/lib/esm/common/render/InstancedGraphicParams.js +58 -1
  356. package/lib/esm/common/render/InstancedGraphicParams.js.map +1 -1
  357. package/lib/esm/common/render/RenderInstancesParams.d.ts +76 -0
  358. package/lib/esm/common/render/RenderInstancesParams.d.ts.map +1 -0
  359. package/lib/esm/common/render/RenderInstancesParams.js +30 -0
  360. package/lib/esm/common/render/RenderInstancesParams.js.map +1 -0
  361. package/lib/esm/common.d.ts +1 -0
  362. package/lib/esm/common.d.ts.map +1 -1
  363. package/lib/esm/common.js +1 -0
  364. package/lib/esm/common.js.map +1 -1
  365. package/lib/esm/core-frontend.d.ts +1 -0
  366. package/lib/esm/core-frontend.d.ts.map +1 -1
  367. package/lib/esm/core-frontend.js +1 -0
  368. package/lib/esm/core-frontend.js.map +1 -1
  369. package/lib/esm/internal/render/PrimitiveBuilder.d.ts +4 -1
  370. package/lib/esm/internal/render/PrimitiveBuilder.d.ts.map +1 -1
  371. package/lib/esm/internal/render/PrimitiveBuilder.js +82 -35
  372. package/lib/esm/internal/render/PrimitiveBuilder.js.map +1 -1
  373. package/lib/esm/internal/render/RenderGeometry.d.ts +20 -0
  374. package/lib/esm/internal/render/RenderGeometry.d.ts.map +1 -0
  375. package/lib/esm/internal/render/RenderGeometry.js +9 -0
  376. package/lib/esm/internal/render/RenderGeometry.js.map +1 -0
  377. package/lib/esm/internal/render/RenderInstancesParamsImpl.d.ts +24 -0
  378. package/lib/esm/internal/render/RenderInstancesParamsImpl.d.ts.map +1 -0
  379. package/lib/esm/internal/render/RenderInstancesParamsImpl.js +64 -0
  380. package/lib/esm/internal/render/RenderInstancesParamsImpl.js.map +1 -0
  381. package/lib/esm/render/GraphicBranch.d.ts +11 -2
  382. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  383. package/lib/esm/render/GraphicBranch.js.map +1 -1
  384. package/lib/esm/render/GraphicBuilder.d.ts +17 -3
  385. package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
  386. package/lib/esm/render/GraphicBuilder.js +7 -1
  387. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  388. package/lib/esm/render/GraphicTemplate.d.ts +76 -0
  389. package/lib/esm/render/GraphicTemplate.d.ts.map +1 -0
  390. package/lib/esm/render/GraphicTemplate.js +37 -0
  391. package/lib/esm/render/GraphicTemplate.js.map +1 -0
  392. package/lib/esm/render/MockRender.d.ts +12 -2
  393. package/lib/esm/render/MockRender.d.ts.map +1 -1
  394. package/lib/esm/render/MockRender.js +19 -5
  395. package/lib/esm/render/MockRender.js.map +1 -1
  396. package/lib/esm/render/Pixel.d.ts +9 -1
  397. package/lib/esm/render/Pixel.d.ts.map +1 -1
  398. package/lib/esm/render/Pixel.js +2 -0
  399. package/lib/esm/render/Pixel.js.map +1 -1
  400. package/lib/esm/render/RealityMeshGraphicParams.d.ts +1 -0
  401. package/lib/esm/render/RealityMeshGraphicParams.d.ts.map +1 -1
  402. package/lib/esm/render/RealityMeshGraphicParams.js.map +1 -1
  403. package/lib/esm/render/RenderMemory.d.ts +2 -0
  404. package/lib/esm/render/RenderMemory.d.ts.map +1 -1
  405. package/lib/esm/render/RenderMemory.js +2 -0
  406. package/lib/esm/render/RenderMemory.js.map +1 -1
  407. package/lib/esm/render/RenderPlan.d.ts +2 -1
  408. package/lib/esm/render/RenderPlan.d.ts.map +1 -1
  409. package/lib/esm/render/RenderPlan.js +2 -0
  410. package/lib/esm/render/RenderPlan.js.map +1 -1
  411. package/lib/esm/render/RenderSystem.d.ts +59 -11
  412. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  413. package/lib/esm/render/RenderSystem.js +46 -8
  414. package/lib/esm/render/RenderSystem.js.map +1 -1
  415. package/lib/esm/render/RenderTarget.d.ts +1 -1
  416. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  417. package/lib/esm/render/RenderTarget.js.map +1 -1
  418. package/lib/esm/render/webgl/BatchUniforms.d.ts +4 -0
  419. package/lib/esm/render/webgl/BatchUniforms.d.ts.map +1 -1
  420. package/lib/esm/render/webgl/BatchUniforms.js +18 -0
  421. package/lib/esm/render/webgl/BatchUniforms.js.map +1 -1
  422. package/lib/esm/render/webgl/BranchState.d.ts +7 -0
  423. package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
  424. package/lib/esm/render/webgl/BranchState.js +4 -0
  425. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  426. package/lib/esm/render/webgl/BranchUniforms.d.ts +1 -0
  427. package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
  428. package/lib/esm/render/webgl/BranchUniforms.js +14 -1
  429. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  430. package/lib/esm/render/webgl/ContourUniforms.d.ts +22 -0
  431. package/lib/esm/render/webgl/ContourUniforms.d.ts.map +1 -0
  432. package/lib/esm/render/webgl/ContourUniforms.js +94 -0
  433. package/lib/esm/render/webgl/ContourUniforms.js.map +1 -0
  434. package/lib/esm/render/webgl/Contours.d.ts +34 -0
  435. package/lib/esm/render/webgl/Contours.d.ts.map +1 -0
  436. package/lib/esm/render/webgl/Contours.js +123 -0
  437. package/lib/esm/render/webgl/Contours.js.map +1 -0
  438. package/lib/esm/render/webgl/EdgeSettings.d.ts +2 -1
  439. package/lib/esm/render/webgl/EdgeSettings.d.ts.map +1 -1
  440. package/lib/esm/render/webgl/EdgeSettings.js +1 -1
  441. package/lib/esm/render/webgl/EdgeSettings.js.map +1 -1
  442. package/lib/esm/render/webgl/FeatureOverrides.d.ts +2 -0
  443. package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
  444. package/lib/esm/render/webgl/FeatureOverrides.js +83 -69
  445. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  446. package/lib/esm/render/webgl/GL.d.ts +2 -1
  447. package/lib/esm/render/webgl/GL.d.ts.map +1 -1
  448. package/lib/esm/render/webgl/GL.js +1 -0
  449. package/lib/esm/render/webgl/GL.js.map +1 -1
  450. package/lib/esm/render/webgl/Graphic.d.ts +9 -0
  451. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  452. package/lib/esm/render/webgl/Graphic.js +27 -0
  453. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  454. package/lib/esm/render/webgl/InstancedGeometry.d.ts +40 -10
  455. package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
  456. package/lib/esm/render/webgl/InstancedGeometry.js +97 -30
  457. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  458. package/lib/esm/render/webgl/LineCode.d.ts.map +1 -1
  459. package/lib/esm/render/webgl/LineCode.js +2 -14
  460. package/lib/esm/render/webgl/LineCode.js.map +1 -1
  461. package/lib/esm/render/webgl/Mesh.d.ts +9 -4
  462. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  463. package/lib/esm/render/webgl/Mesh.js +19 -17
  464. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  465. package/lib/esm/render/webgl/PointCloud.d.ts +5 -1
  466. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  467. package/lib/esm/render/webgl/PointCloud.js +7 -2
  468. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  469. package/lib/esm/render/webgl/PointString.d.ts +5 -1
  470. package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
  471. package/lib/esm/render/webgl/PointString.js +8 -3
  472. package/lib/esm/render/webgl/PointString.js.map +1 -1
  473. package/lib/esm/render/webgl/Polyline.d.ts +5 -1
  474. package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
  475. package/lib/esm/render/webgl/Polyline.js +7 -2
  476. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  477. package/lib/esm/render/webgl/Primitive.d.ts +1 -3
  478. package/lib/esm/render/webgl/Primitive.d.ts.map +1 -1
  479. package/lib/esm/render/webgl/Primitive.js +2 -7
  480. package/lib/esm/render/webgl/Primitive.js.map +1 -1
  481. package/lib/esm/render/webgl/RealityMesh.d.ts +5 -1
  482. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  483. package/lib/esm/render/webgl/RealityMesh.js +7 -1
  484. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  485. package/lib/esm/render/webgl/RenderFlags.d.ts +2 -19
  486. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  487. package/lib/esm/render/webgl/RenderFlags.js +2 -0
  488. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  489. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  490. package/lib/esm/render/webgl/SceneCompositor.js +12 -3
  491. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  492. package/lib/esm/render/webgl/ShaderBuilder.d.ts +15 -13
  493. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  494. package/lib/esm/render/webgl/ShaderBuilder.js +18 -10
  495. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  496. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  497. package/lib/esm/render/webgl/ShaderProgram.js +26 -0
  498. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  499. package/lib/esm/render/webgl/System.d.ts +11 -5
  500. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  501. package/lib/esm/render/webgl/System.js +82 -14
  502. package/lib/esm/render/webgl/System.js.map +1 -1
  503. package/lib/esm/render/webgl/Target.d.ts +6 -2
  504. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  505. package/lib/esm/render/webgl/Target.js +24 -1
  506. package/lib/esm/render/webgl/Target.js.map +1 -1
  507. package/lib/esm/render/webgl/TargetUniforms.d.ts +2 -0
  508. package/lib/esm/render/webgl/TargetUniforms.d.ts.map +1 -1
  509. package/lib/esm/render/webgl/TargetUniforms.js +2 -0
  510. package/lib/esm/render/webgl/TargetUniforms.js.map +1 -1
  511. package/lib/esm/render/webgl/Texture.d.ts +2 -1
  512. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  513. package/lib/esm/render/webgl/Texture.js.map +1 -1
  514. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +1 -1
  515. package/lib/esm/render/webgl/glsl/Atmosphere.js +1 -1
  516. package/lib/esm/render/webgl/glsl/Blur.js +1 -1
  517. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +1 -1
  518. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +1 -1
  519. package/lib/esm/render/webgl/glsl/Clipping.js +1 -1
  520. package/lib/esm/render/webgl/glsl/Combine3Textures.js +1 -1
  521. package/lib/esm/render/webgl/glsl/CombineTextures.js +1 -1
  522. package/lib/esm/render/webgl/glsl/Composite.js +1 -1
  523. package/lib/esm/render/webgl/glsl/Contours.d.ts +4 -0
  524. package/lib/esm/render/webgl/glsl/Contours.d.ts.map +1 -0
  525. package/lib/esm/render/webgl/glsl/Contours.js +134 -0
  526. package/lib/esm/render/webgl/glsl/Contours.js.map +1 -0
  527. package/lib/esm/render/webgl/glsl/CopyColor.js +1 -1
  528. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +1 -1
  529. package/lib/esm/render/webgl/glsl/CopyStencil.js +5 -5
  530. package/lib/esm/render/webgl/glsl/EDL.js +4 -4
  531. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +1 -1
  532. package/lib/esm/render/webgl/glsl/Edge.js +1 -1
  533. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts +2 -1
  534. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  535. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +27 -15
  536. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  537. package/lib/esm/render/webgl/glsl/Fragment.js +9 -9
  538. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  539. package/lib/esm/render/webgl/glsl/PlanarClassification.js +4 -4
  540. package/lib/esm/render/webgl/glsl/PointCloud.js +1 -1
  541. package/lib/esm/render/webgl/glsl/RealityMesh.js +3 -3
  542. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
  543. package/lib/esm/render/webgl/glsl/SkyBox.js +1 -1
  544. package/lib/esm/render/webgl/glsl/SkySphere.js +1 -1
  545. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +1 -1
  546. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  547. package/lib/esm/render/webgl/glsl/Surface.js +5 -3
  548. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  549. package/lib/esm/render/webgl/glsl/Translucency.js +1 -1
  550. package/lib/esm/render/webgl/glsl/Wiremesh.js +1 -1
  551. package/lib/esm/tile/GltfReader.d.ts +27 -7
  552. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  553. package/lib/esm/tile/GltfReader.js +82 -67
  554. package/lib/esm/tile/GltfReader.js.map +1 -1
  555. package/lib/esm/tile/ImdlGraphicsCreator.d.ts +4 -1
  556. package/lib/esm/tile/ImdlGraphicsCreator.d.ts.map +1 -1
  557. package/lib/esm/tile/ImdlGraphicsCreator.js +31 -22
  558. package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -1
  559. package/lib/esm/tile/TileDrawArgs.d.ts +4 -0
  560. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  561. package/lib/esm/tile/TileDrawArgs.js +2 -0
  562. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  563. package/lib/esm/tile/TileTreeReference.d.ts +2 -0
  564. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  565. package/lib/esm/tile/TileTreeReference.js +3 -0
  566. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  567. package/lib/esm/tile/map/MapTile.js +1 -1
  568. package/lib/esm/tile/map/MapTile.js.map +1 -1
  569. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  570. package/lib/esm/tile/map/MapTilingScheme.js +4 -0
  571. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  572. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  573. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  574. package/package.json +26 -32
@@ -59,7 +59,7 @@ class EdgeSettings {
59
59
  if (!this.isOverridden(vf))
60
60
  return 0 /* OvrFlags.None */;
61
61
  // Alpha always overridden - transparent edges only supported in wireframe mode.
62
- let flags = this.getColor(vf) ? 6 /* OvrFlags.Rgba */ : 4 /* OvrFlags.Alpha */;
62
+ let flags = this.getColor(vf) ? (6 /* OvrFlags.Rgba */ | 1 /* OvrFlags.LineRgb */ | 8 /* OvrFlags.LineAlpha */) : (4 /* OvrFlags.Alpha */ | 8 /* OvrFlags.LineAlpha */);
63
63
  if (undefined !== this.getLineCode(pass, vf))
64
64
  flags |= 64 /* OvrFlags.LineCode */;
65
65
  if (undefined !== this.getWeight(pass, vf))
@@ -1 +1 @@
1
- {"version":3,"file":"EdgeSettings.js","sourceRoot":"","sources":["../../../../src/render/webgl/EdgeSettings.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 { ColorDef, HiddenLine, RenderMode, ViewFlags } from \"@itwin/core-common\";\r\nimport { FloatRgba } from \"./FloatRGBA\";\r\nimport { OvrFlags, RenderPass } from \"./RenderFlags\";\r\nimport { LineCode } from \"./LineCode\";\r\n\r\n/** Controls symbology of edges based on ViewFlags and HiddenLine.Settings. Typically these come from the Target's\r\n * RenderPlan, but a GraphicBranch may override those settings.\r\n * @internal\r\n */\r\nexport class EdgeSettings {\r\n /** The color applies to both hidden and visible edges. */\r\n private readonly _color = FloatRgba.fromColorDef(ColorDef.white);\r\n private _colorOverridden = false;\r\n private _visibleLineCode?: number;\r\n private _visibleWeight?: number;\r\n private _hiddenLineCode?: number;\r\n private _hiddenWeight?: number;\r\n /** Controls how opaque a surface must be to be displayed in SolidFill or HiddenLine modes; or how opaque it must be to\r\n * block shadow-casting lights in SmoothShade mode.\r\n */\r\n private _transparencyThreshold = 0;\r\n\r\n public static create(hline: HiddenLine.Settings | undefined): EdgeSettings {\r\n const settings = new EdgeSettings();\r\n settings.init(hline);\r\n return settings;\r\n }\r\n\r\n public init(hline: HiddenLine.Settings | undefined): void {\r\n this.clear();\r\n if (!hline)\r\n return;\r\n\r\n // The threshold is HiddenLine.Settings is a transparency value. Convert it to an alpha value and clamp to [0..1].\r\n let threshold = hline.transparencyThreshold;\r\n threshold = Math.min(1, Math.max(0, threshold));\r\n this._transparencyThreshold = 1.0 - threshold;\r\n\r\n const vis = hline.visible;\r\n if (vis.color) {\r\n this._colorOverridden = true;\r\n this._color.setColorDef(vis.color);\r\n }\r\n\r\n this._visibleLineCode = (undefined !== vis.pattern ? LineCode.valueFromLinePixels(vis.pattern) : undefined);\r\n this._visibleWeight = vis.width;\r\n\r\n // Hidden edge settings default to matching visible edge settings.\r\n const hid = hline.hidden;\r\n this._hiddenLineCode = undefined !== hid.pattern ? LineCode.valueFromLinePixels(hid.pattern) : this._visibleLineCode;\r\n\r\n this._hiddenWeight = undefined !== hid.width ? hid.width : this._visibleWeight;\r\n if (undefined !== this._hiddenWeight && undefined !== this._visibleWeight) {\r\n // Hidden edges cannot be wider than visible edges.\r\n this._hiddenWeight = Math.min(this._visibleWeight, this._hiddenWeight);\r\n }\r\n }\r\n\r\n public computeOvrFlags(pass: RenderPass, vf: ViewFlags): OvrFlags {\r\n // Edge overrides never apply in wireframe mode\r\n if (!this.isOverridden(vf))\r\n return OvrFlags.None;\r\n\r\n // Alpha always overridden - transparent edges only supported in wireframe mode.\r\n let flags = this.getColor(vf) ? OvrFlags.Rgba : OvrFlags.Alpha;\r\n\r\n if (undefined !== this.getLineCode(pass, vf))\r\n flags |= OvrFlags.LineCode;\r\n\r\n if (undefined !== this.getWeight(pass, vf))\r\n flags |= OvrFlags.Weight;\r\n\r\n return flags;\r\n }\r\n\r\n public get transparencyThreshold(): number {\r\n return this._transparencyThreshold;\r\n }\r\n\r\n public getColor(vf: ViewFlags): FloatRgba | undefined {\r\n return this._colorOverridden && this.isOverridden(vf) ? this._color : undefined;\r\n }\r\n\r\n public getLineCode(pass: RenderPass, vf: ViewFlags): number | undefined {\r\n if (!this.isOverridden(vf))\r\n return undefined;\r\n\r\n return RenderPass.HiddenEdge === pass ? this._hiddenLineCode : this._visibleLineCode;\r\n }\r\n\r\n public getWeight(pass: RenderPass, vf: ViewFlags): number | undefined {\r\n if (!this.isOverridden(vf))\r\n return undefined;\r\n\r\n return RenderPass.HiddenEdge === pass ? this._hiddenWeight : this._visibleWeight;\r\n }\r\n\r\n private clear(): void {\r\n this._colorOverridden = false;\r\n this._visibleLineCode = this._visibleWeight = undefined;\r\n this._hiddenLineCode = this._hiddenWeight = undefined;\r\n this._transparencyThreshold = 0;\r\n }\r\n\r\n public wantContrastingColor(renderMode: RenderMode): boolean {\r\n return !this._colorOverridden && RenderMode.SolidFill === renderMode;\r\n }\r\n\r\n private isOverridden(vf: ViewFlags): boolean {\r\n switch (vf.renderMode) {\r\n case RenderMode.Wireframe:\r\n return false; // edge overrides don't apply in wireframe mode\r\n case RenderMode.SmoothShade:\r\n return vf.visibleEdges;\r\n default:\r\n return true; // Edges always displayed in solid fill and hidden line modes\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"EdgeSettings.js","sourceRoot":"","sources":["../../../../src/render/webgl/EdgeSettings.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 { ColorDef, HiddenLine, RenderMode, ViewFlags } from \"@itwin/core-common\";\r\nimport { FloatRgba } from \"./FloatRGBA\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { LineCode } from \"./LineCode\";\r\nimport { OvrFlags } from \"../../common/internal/render/OvrFlags\";\r\n\r\n/** Controls symbology of edges based on ViewFlags and HiddenLine.Settings. Typically these come from the Target's\r\n * RenderPlan, but a GraphicBranch may override those settings.\r\n * @internal\r\n */\r\nexport class EdgeSettings {\r\n /** The color applies to both hidden and visible edges. */\r\n private readonly _color = FloatRgba.fromColorDef(ColorDef.white);\r\n private _colorOverridden = false;\r\n private _visibleLineCode?: number;\r\n private _visibleWeight?: number;\r\n private _hiddenLineCode?: number;\r\n private _hiddenWeight?: number;\r\n /** Controls how opaque a surface must be to be displayed in SolidFill or HiddenLine modes; or how opaque it must be to\r\n * block shadow-casting lights in SmoothShade mode.\r\n */\r\n private _transparencyThreshold = 0;\r\n\r\n public static create(hline: HiddenLine.Settings | undefined): EdgeSettings {\r\n const settings = new EdgeSettings();\r\n settings.init(hline);\r\n return settings;\r\n }\r\n\r\n public init(hline: HiddenLine.Settings | undefined): void {\r\n this.clear();\r\n if (!hline)\r\n return;\r\n\r\n // The threshold is HiddenLine.Settings is a transparency value. Convert it to an alpha value and clamp to [0..1].\r\n let threshold = hline.transparencyThreshold;\r\n threshold = Math.min(1, Math.max(0, threshold));\r\n this._transparencyThreshold = 1.0 - threshold;\r\n\r\n const vis = hline.visible;\r\n if (vis.color) {\r\n this._colorOverridden = true;\r\n this._color.setColorDef(vis.color);\r\n }\r\n\r\n this._visibleLineCode = (undefined !== vis.pattern ? LineCode.valueFromLinePixels(vis.pattern) : undefined);\r\n this._visibleWeight = vis.width;\r\n\r\n // Hidden edge settings default to matching visible edge settings.\r\n const hid = hline.hidden;\r\n this._hiddenLineCode = undefined !== hid.pattern ? LineCode.valueFromLinePixels(hid.pattern) : this._visibleLineCode;\r\n\r\n this._hiddenWeight = undefined !== hid.width ? hid.width : this._visibleWeight;\r\n if (undefined !== this._hiddenWeight && undefined !== this._visibleWeight) {\r\n // Hidden edges cannot be wider than visible edges.\r\n this._hiddenWeight = Math.min(this._visibleWeight, this._hiddenWeight);\r\n }\r\n }\r\n\r\n public computeOvrFlags(pass: RenderPass, vf: ViewFlags): OvrFlags {\r\n // Edge overrides never apply in wireframe mode\r\n if (!this.isOverridden(vf))\r\n return OvrFlags.None;\r\n\r\n // Alpha always overridden - transparent edges only supported in wireframe mode.\r\n let flags = this.getColor(vf) ? (OvrFlags.Rgba | OvrFlags.LineRgb | OvrFlags.LineAlpha) : (OvrFlags.Alpha | OvrFlags.LineAlpha);\r\n\r\n if (undefined !== this.getLineCode(pass, vf))\r\n flags |= OvrFlags.LineCode;\r\n\r\n if (undefined !== this.getWeight(pass, vf))\r\n flags |= OvrFlags.Weight;\r\n\r\n return flags;\r\n }\r\n\r\n public get transparencyThreshold(): number {\r\n return this._transparencyThreshold;\r\n }\r\n\r\n public getColor(vf: ViewFlags): FloatRgba | undefined {\r\n return this._colorOverridden && this.isOverridden(vf) ? this._color : undefined;\r\n }\r\n\r\n public getLineCode(pass: RenderPass, vf: ViewFlags): number | undefined {\r\n if (!this.isOverridden(vf))\r\n return undefined;\r\n\r\n return RenderPass.HiddenEdge === pass ? this._hiddenLineCode : this._visibleLineCode;\r\n }\r\n\r\n public getWeight(pass: RenderPass, vf: ViewFlags): number | undefined {\r\n if (!this.isOverridden(vf))\r\n return undefined;\r\n\r\n return RenderPass.HiddenEdge === pass ? this._hiddenWeight : this._visibleWeight;\r\n }\r\n\r\n private clear(): void {\r\n this._colorOverridden = false;\r\n this._visibleLineCode = this._visibleWeight = undefined;\r\n this._hiddenLineCode = this._hiddenWeight = undefined;\r\n this._transparencyThreshold = 0;\r\n }\r\n\r\n public wantContrastingColor(renderMode: RenderMode): boolean {\r\n return !this._colorOverridden && RenderMode.SolidFill === renderMode;\r\n }\r\n\r\n private isOverridden(vf: ViewFlags): boolean {\r\n switch (vf.renderMode) {\r\n case RenderMode.Wireframe:\r\n return false; // edge overrides don't apply in wireframe mode\r\n case RenderMode.SmoothShade:\r\n return vf.visibleEdges;\r\n default:\r\n return true; // Edges always displayed in solid fill and hidden line modes\r\n }\r\n }\r\n}\r\n"]}
@@ -17,6 +17,7 @@ export declare class FeatureOverrides implements WebGLDisposable {
17
17
  private _mostRecentSymbologyOverrides?;
18
18
  private _lastFlashId;
19
19
  private _hiliteSyncObserver;
20
+ private _pickExclusionsSyncObserver;
20
21
  private _anyOverridden;
21
22
  private _allHidden;
22
23
  private _anyTranslucent;
@@ -40,6 +41,7 @@ export declare class FeatureOverrides implements WebGLDisposable {
40
41
  getUniformOverrides(): Uint8Array;
41
42
  private _initialize;
42
43
  private _update;
44
+ private setTransparency;
43
45
  private buildLookupTable;
44
46
  private updateFlashedAndHilited;
45
47
  private updateFlashed;
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureOverrides.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/FeatureOverrides.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIhD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAkChE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,CAQ3G;AAED,gBAAgB;AAChB,MAAM,MAAM,uBAAuB,GAAG,MAAM,IAAI,CAAC;AAIjD,gBAAgB;AAChB,qBAAa,gBAAiB,YAAW,eAAe;IACtD,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,IAAI,CAAC,CAAkB;IAC/B,OAAO,CAAC,6BAA6B,CAAC,CAA6B;IACnE,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,mBAAmB,CAAoB;IAC/C,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,8BAA8B,CAAQ;IAC9C,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,sBAAsB,CAAqC;IACnE,OAAO,CAAC,QAAQ,CAAC,CAA0B;IAE3C,IAAW,aAAa,YAAkC;IAC1D,IAAW,SAAS,YAA8B;IAClD,IAAW,cAAc,YAAmC;IAC5D,IAAW,6BAA6B,YAAkD;IAC1F,IAAW,SAAS,YAA8B;IAClD,IAAW,UAAU,YAA+B;IAEpD,iBAAiB;IACjB,IAAW,OAAO,IAAI,UAAU,GAAG,SAAS,CAAiC;IAC7E,IAAW,UAAU,IAAI,MAAM,CAA8D;IAC7F,IAAW,SAAS,YAAmE;IAEvF,OAAO,CAAC,2BAA2B;IAuB5B,mBAAmB,IAAI,UAAU;IAOxC,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,OAAO;IAaf,OAAO,CAAC,gBAAgB;IA0HxB,OAAO,CAAC,uBAAuB;IA6C/B,OAAO,CAAC,aAAa;IA8BrB,OAAO;WAMO,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,uBAAuB,GAAG,SAAS;IAIlH,IAAW,UAAU,IAAI,OAAO,CAAoC;IAE7D,OAAO;IAQP,WAAW,CAAC,GAAG,EAAE,kBAAkB;IAcnC,MAAM,CAAC,QAAQ,EAAE,kBAAkB;IAuBnC,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAI3C,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKrC,yBAAyB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;CAG/D"}
1
+ {"version":3,"file":"FeatureOverrides.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/FeatureOverrides.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIhD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAKhE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,CAQ3G;AAED,gBAAgB;AAChB,MAAM,MAAM,uBAAuB,GAAG,MAAM,IAAI,CAAC;AAIjD,gBAAgB;AAChB,qBAAa,gBAAiB,YAAW,eAAe;IACtD,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,IAAI,CAAC,CAAkB;IAC/B,OAAO,CAAC,6BAA6B,CAAC,CAA6B;IACnE,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,mBAAmB,CAAoB;IAC/C,OAAO,CAAC,2BAA2B,CAAoB;IACvD,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,8BAA8B,CAAQ;IAC9C,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,sBAAsB,CAAqC;IACnE,OAAO,CAAC,QAAQ,CAAC,CAA0B;IAE3C,IAAW,aAAa,YAAkC;IAC1D,IAAW,SAAS,YAA8B;IAClD,IAAW,cAAc,YAAmC;IAC5D,IAAW,6BAA6B,YAAkD;IAC1F,IAAW,SAAS,YAA8B;IAClD,IAAW,UAAU,YAA+B;IAEpD,iBAAiB;IACjB,IAAW,OAAO,IAAI,UAAU,GAAG,SAAS,CAAiC;IAC7E,IAAW,UAAU,IAAI,MAAM,CAA8D;IAC7F,IAAW,SAAS,YAAmE;IAEvF,OAAO,CAAC,2BAA2B;IAuB5B,mBAAmB,IAAI,UAAU;IAOxC,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,OAAO;IAaf,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,gBAAgB;IAiIxB,OAAO,CAAC,uBAAuB;IAgD/B,OAAO,CAAC,aAAa;IAuCrB,OAAO;WAMO,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,uBAAuB,GAAG,SAAS;IAIlH,IAAW,UAAU,IAAI,OAAO,CAAoC;IAE7D,OAAO;IAQP,WAAW,CAAC,GAAG,EAAE,kBAAkB;IAenC,MAAM,CAAC,QAAQ,EAAE,kBAAkB;IA8BnC,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAI3C,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKrC,yBAAyB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;CAG/D"}
@@ -17,29 +17,7 @@ const Sync_1 = require("./Sync");
17
17
  const System_1 = require("./System");
18
18
  const Texture_1 = require("./Texture");
19
19
  const DisplayParams_1 = require("../../common/internal/render/DisplayParams");
20
- function computeWidthAndHeight(nEntries, nRgbaPerEntry, nExtraRgba = 0, nTables = 1) {
21
- const maxSize = System_1.System.instance.maxTextureSize;
22
- const nRgba = nEntries * nRgbaPerEntry * nTables + nExtraRgba;
23
- if (nRgba < maxSize)
24
- return { width: nRgba, height: 1 };
25
- // Make roughly square to reduce unused space in last row
26
- let width = Math.ceil(Math.sqrt(nRgba));
27
- // Ensure a given entry's RGBA values all fit on the same row.
28
- const remainder = width % nRgbaPerEntry;
29
- if (0 !== remainder) {
30
- width += nRgbaPerEntry - remainder;
31
- }
32
- // Compute height
33
- const height = Math.ceil(nRgba / width);
34
- (0, core_bentley_1.assert)(height <= maxSize);
35
- (0, core_bentley_1.assert)(width <= maxSize);
36
- (0, core_bentley_1.assert)(width * height >= nRgba);
37
- (0, core_bentley_1.assert)(Math.floor(height) === height);
38
- (0, core_bentley_1.assert)(Math.floor(width) === width);
39
- // Row padding should never be necessary...
40
- (0, core_bentley_1.assert)(0 === width % nRgbaPerEntry);
41
- return { width, height };
42
- }
20
+ const VertexTable_1 = require("../../common/internal/render/VertexTable");
43
21
  function isFeatureHilited(feature, hilites, isModelHilited) {
44
22
  if (hilites.isEmpty)
45
23
  return false;
@@ -60,7 +38,7 @@ class FeatureOverrides {
60
38
  /** For tests. */
61
39
  get lutData() { return this._lut?.dataBytes; }
62
40
  get byteLength() { return undefined !== this._lut ? this._lut.bytesUsed : 0; }
63
- get isUniform() { return 2 === this._lutParams[0] && 1 === this._lutParams[1]; }
41
+ get isUniform() { return 3 === this._lutParams[0] && 1 === this._lutParams[1]; }
64
42
  updateUniformSymbologyFlags() {
65
43
  this._uniformSymbologyFlags = 0 /* EmphasisFlags.None */;
66
44
  if (!this.isUniform || !this._lut)
@@ -84,9 +62,9 @@ class FeatureOverrides {
84
62
  (0, core_bentley_1.assert)(undefined !== this._lut.dataBytes);
85
63
  return this._lut.dataBytes;
86
64
  }
87
- _initialize(map, ovrs, hilite, flashed) {
65
+ _initialize(map, ovrs, pickExcludes, hilite, flashed) {
88
66
  const nFeatures = map.numFeatures;
89
- const dims = computeWidthAndHeight(nFeatures, 2);
67
+ const dims = (0, VertexTable_1.computeDimensions)(nFeatures, 3, 0, System_1.System.instance.maxTextureSize);
90
68
  const width = dims.width;
91
69
  const height = dims.height;
92
70
  (0, core_bentley_1.assert)(width * height >= nFeatures);
@@ -94,21 +72,40 @@ class FeatureOverrides {
94
72
  this._lutParams[1] = height;
95
73
  const data = new Uint8Array(width * height * 4);
96
74
  const creator = new Texture_1.Texture2DDataUpdater(data);
97
- this.buildLookupTable(creator, map, ovrs, flashed, hilite);
75
+ this.buildLookupTable(creator, map, ovrs, pickExcludes, flashed, hilite);
98
76
  return Texture_1.TextureHandle.createForData(width, height, data, true, GL_1.GL.Texture.WrapMode.ClampToEdge);
99
77
  }
100
- _update(map, lut, flashed, hilites, ovrs) {
78
+ _update(map, lut, pickExcludes, flashed, hilites, ovrs) {
101
79
  const updater = new Texture_1.Texture2DDataUpdater(lut.dataBytes);
102
80
  if (undefined === ovrs) {
103
- this.updateFlashedAndHilited(updater, map, flashed, hilites);
81
+ this.updateFlashedAndHilited(updater, map, pickExcludes, flashed, hilites);
104
82
  }
105
83
  else {
106
84
  (0, core_bentley_1.assert)(undefined !== hilites);
107
- this.buildLookupTable(updater, map, ovrs, flashed, hilites);
85
+ this.buildLookupTable(updater, map, ovrs, pickExcludes, flashed, hilites);
108
86
  }
109
87
  lut.update(updater);
110
88
  }
111
- buildLookupTable(data, map, ovr, flashedIdParts, hilites) {
89
+ setTransparency(transparency, viewDependentTransparency, data, transparencyByteIndex, curFlags) {
90
+ // transparency in range [0, 1]...convert to byte and invert so 0=transparent...
91
+ let alpha = 1.0 - transparency;
92
+ alpha = Math.floor(0xff * alpha + 0.5);
93
+ if ((0xff - alpha) < DisplayParams_1.DisplayParams.minTransparency)
94
+ alpha = 0xff;
95
+ data.setByteAtIndex(transparencyByteIndex, alpha);
96
+ if (0xff === alpha) {
97
+ this._anyOpaque = true;
98
+ }
99
+ else {
100
+ this._anyTranslucent = true;
101
+ if (!viewDependentTransparency) {
102
+ curFlags |= 1024 /* OvrFlags.ViewIndependentTransparency */;
103
+ this._anyViewIndependentTranslucent = true;
104
+ }
105
+ }
106
+ return curFlags;
107
+ }
108
+ buildLookupTable(data, map, ovr, pickExclude, flashedIdParts, hilites) {
112
109
  const allowHilite = true !== this._options.noHilite;
113
110
  const allowFlash = true !== this._options.noFlash;
114
111
  const allowEmphasis = true !== this._options.noEmphasis;
@@ -117,7 +114,7 @@ class FeatureOverrides {
117
114
  this._anyOpaque = this._anyTranslucent = this._anyViewIndependentTranslucent = this._anyHilited = false;
118
115
  let nHidden = 0;
119
116
  let nOverridden = 0;
120
- // NB: We currently use 2 RGBA values per feature as follows:
117
+ // NB: We currently use 3 RGBA values per feature as follows:
121
118
  // [0]
122
119
  // RG = override flags (see OvrFlags enum)
123
120
  // B = line code
@@ -125,9 +122,12 @@ class FeatureOverrides {
125
122
  // [1]
126
123
  // RGB = rgb
127
124
  // A = alpha
125
+ // [2]
126
+ // RGB = line rgb
127
+ // A = line alpha
128
128
  for (const feature of map.iterable(scratchPackedFeature)) {
129
129
  const i = feature.index;
130
- const dataIndex = i * 4 * 2;
130
+ const dataIndex = i * 4 * 3;
131
131
  if (prevModelId.lower !== feature.modelId.lower || prevModelId.upper !== feature.modelId.upper) {
132
132
  prevModelId.lower = feature.modelId.lower;
133
133
  prevModelId.upper = feature.modelId.upper;
@@ -140,7 +140,7 @@ class FeatureOverrides {
140
140
  // (The latter is how we clip the classified model using the classifiers).
141
141
  if (undefined === app) {
142
142
  // The feature is not visible. We don't care about any of the other overrides, because we're not going to render it.
143
- data.setOvrFlagsAtIndex(dataIndex, 1 /* OvrFlags.Visibility */);
143
+ data.setOvrFlagsAtIndex(dataIndex, 4096 /* OvrFlags.Visibility */);
144
144
  nHidden++;
145
145
  nOverridden++;
146
146
  continue;
@@ -162,23 +162,20 @@ class FeatureOverrides {
162
162
  data.setByteAtIndex(dataIndex + 6, rgb.b);
163
163
  }
164
164
  if (undefined !== app.transparency) {
165
- // transparency in range [0, 1]...convert to byte and invert so 0=transparent...
166
165
  flags |= 4 /* OvrFlags.Alpha */;
167
- let alpha = 1.0 - app.transparency;
168
- alpha = Math.floor(0xff * alpha + 0.5);
169
- if ((0xff - alpha) < DisplayParams_1.DisplayParams.minTransparency)
170
- alpha = 0xff;
171
- data.setByteAtIndex(dataIndex + 7, alpha);
172
- if (0xff === alpha) {
173
- this._anyOpaque = true;
174
- }
175
- else {
176
- this._anyTranslucent = true;
177
- if (!app.viewDependentTransparency) {
178
- flags |= 1024 /* OvrFlags.ViewIndependentTransparency */;
179
- this._anyViewIndependentTranslucent = true;
180
- }
181
- }
166
+ flags = this.setTransparency(app.transparency, app.viewDependentTransparency, data, dataIndex + 7, flags);
167
+ }
168
+ const lineRgb = app.getLineRgb();
169
+ if (lineRgb) {
170
+ flags |= 1 /* OvrFlags.LineRgb */;
171
+ data.setByteAtIndex(dataIndex + 8, lineRgb.r);
172
+ data.setByteAtIndex(dataIndex + 9, lineRgb.g);
173
+ data.setByteAtIndex(dataIndex + 10, lineRgb.b);
174
+ }
175
+ const lineTransp = app.getLineTransparency();
176
+ if (undefined !== lineTransp) {
177
+ flags |= 8 /* OvrFlags.LineAlpha */;
178
+ flags = this.setTransparency(lineTransp, app.viewDependentTransparency, data, dataIndex + 11, flags);
182
179
  }
183
180
  if (app.overridesWeight && app.weight) {
184
181
  flags |= 128 /* OvrFlags.Weight */;
@@ -193,9 +190,13 @@ class FeatureOverrides {
193
190
  data.setByteAtIndex(dataIndex + 2, lineCode);
194
191
  }
195
192
  if (app.ignoresMaterial)
196
- flags |= 8 /* OvrFlags.IgnoreMaterial */;
193
+ flags |= 8192 /* OvrFlags.IgnoreMaterial */;
197
194
  if (allowFlash && undefined !== flashedIdParts && feature.elementId.lower === flashedIdParts.lower && feature.elementId.upper === flashedIdParts.upper)
198
195
  flags |= 16 /* OvrFlags.Flashed */;
196
+ if (pickExclude?.hasPair(feature.elementId)) {
197
+ flags |= 2048 /* OvrFlags.InvisibleDuringPick */;
198
+ ++nHidden;
199
+ }
199
200
  data.setOvrFlagsAtIndex(dataIndex, flags);
200
201
  if (0 /* OvrFlags.None */ !== flags)
201
202
  nOverridden++;
@@ -205,18 +206,18 @@ class FeatureOverrides {
205
206
  this.updateUniformSymbologyFlags();
206
207
  }
207
208
  // NB: If hilites is undefined, it means that the hilited set has not changed.
208
- updateFlashedAndHilited(data, map, flashed, hilites) {
209
+ updateFlashedAndHilited(data, map, pickExcludes, flashed, hilites) {
209
210
  if (!hilites || true === this._options.noHilite) {
210
- this.updateFlashed(data, map, flashed);
211
+ this.updateFlashed(data, map, pickExcludes, flashed);
211
212
  return;
212
213
  }
213
214
  const allowFlash = true !== this._options.noFlash;
214
215
  const intersect = "intersection" === hilites.modelSubCategoryMode;
215
216
  this._anyOverridden = this._anyHilited = false;
216
217
  for (const feature of map.iterable(scratchPackedFeature)) {
217
- const dataIndex = feature.index * 4 * 2;
218
+ const dataIndex = feature.index * 4 * 3;
218
219
  const oldFlags = data.getOvrFlagsAtIndex(dataIndex);
219
- if (0 /* OvrFlags.None */ !== (oldFlags & 1 /* OvrFlags.Visibility */)) {
220
+ if (0 /* OvrFlags.None */ !== (oldFlags & 4096 /* OvrFlags.Visibility */)) {
220
221
  // If it's invisible, none of the other flags matter. We can't flash it and don't want to hilite it.
221
222
  this._anyOverridden = true;
222
223
  continue;
@@ -233,6 +234,9 @@ class FeatureOverrides {
233
234
  isFlashed = feature.elementId.lower === flashed.lower && feature.elementId.upper === flashed.upper;
234
235
  let newFlags = isFlashed ? (oldFlags | 16 /* OvrFlags.Flashed */) : (oldFlags & ~16 /* OvrFlags.Flashed */);
235
236
  newFlags = isHilited ? (newFlags | 256 /* OvrFlags.Hilited */) : (newFlags & ~256 /* OvrFlags.Hilited */);
237
+ if (pickExcludes) {
238
+ newFlags = pickExcludes.hasPair(feature.elementId) ? (newFlags | 2048 /* OvrFlags.InvisibleDuringPick */) : (newFlags & ~2048 /* OvrFlags.InvisibleDuringPick */);
239
+ }
236
240
  data.setOvrFlagsAtIndex(dataIndex, newFlags);
237
241
  if (0 /* OvrFlags.None */ !== newFlags) {
238
242
  this._anyOverridden = true;
@@ -241,25 +245,32 @@ class FeatureOverrides {
241
245
  }
242
246
  this.updateUniformSymbologyFlags();
243
247
  }
244
- updateFlashed(data, map, flashed) {
245
- if (true === this._options.noFlash)
248
+ updateFlashed(data, map, pickExcludes, flashed) {
249
+ if (true === this._options.noFlash && !pickExcludes)
246
250
  return;
247
251
  this._anyOverridden = false;
248
252
  const elemId = { lower: 0, upper: 0 };
249
253
  for (let i = 0; i < map.numFeatures; i++) {
250
- const dataIndex = i * 4 * 2;
254
+ const dataIndex = i * 4 * 3;
251
255
  const oldFlags = data.getOvrFlagsAtIndex(dataIndex);
252
- if (0 /* OvrFlags.None */ !== (oldFlags & 1 /* OvrFlags.Visibility */)) {
256
+ if (0 /* OvrFlags.None */ !== (oldFlags & 4096 /* OvrFlags.Visibility */)) {
253
257
  // If it's invisible, none of the other flags matter and we can't flash it.
254
258
  this._anyOverridden = true;
255
259
  continue;
256
260
  }
257
261
  let isFlashed = false;
258
- if (flashed) {
259
- map.getElementIdPair(i, elemId);
260
- isFlashed = elemId.lower === flashed.lower && elemId.upper === flashed.upper;
262
+ let thisElemId;
263
+ if (flashed && !this._options.noFlash) {
264
+ thisElemId = map.getElementIdPair(i, elemId);
265
+ isFlashed = thisElemId.lower === flashed.lower && thisElemId.upper === flashed.upper;
266
+ }
267
+ let newFlags = isFlashed ? (oldFlags | 16 /* OvrFlags.Flashed */) : (oldFlags & ~16 /* OvrFlags.Flashed */);
268
+ if (pickExcludes) {
269
+ if (!thisElemId) {
270
+ thisElemId = map.getElementIdPair(i, elemId);
271
+ }
272
+ newFlags = pickExcludes.hasPair(thisElemId) ? (newFlags | 2048 /* OvrFlags.InvisibleDuringPick */) : (newFlags & ~2048 /* OvrFlags.InvisibleDuringPick */);
261
273
  }
262
- const newFlags = isFlashed ? (oldFlags | 16 /* OvrFlags.Flashed */) : (oldFlags & ~16 /* OvrFlags.Flashed */);
263
274
  data.setOvrFlagsAtIndex(dataIndex, newFlags);
264
275
  if (0 /* OvrFlags.None */ !== newFlags)
265
276
  this._anyOverridden = true;
@@ -269,6 +280,7 @@ class FeatureOverrides {
269
280
  constructor(target, options, cleanup) {
270
281
  this._lastFlashId = core_bentley_1.Id64.invalid;
271
282
  this._hiliteSyncObserver = {};
283
+ this._pickExclusionsSyncObserver = {};
272
284
  this._anyOverridden = true;
273
285
  this._allHidden = true;
274
286
  this._anyTranslucent = true;
@@ -299,9 +311,10 @@ class FeatureOverrides {
299
311
  const ovrs = this.target.currentFeatureSymbologyOverrides;
300
312
  this._mostRecentSymbologyOverrides = ovrs;
301
313
  const hilite = this.target.hilites;
302
- this._lut = this._initialize(map, ovrs, hilite, this.target.flashed);
314
+ this._lut = this._initialize(map, ovrs, this.target.pickExclusions, hilite, this.target.flashed);
303
315
  this._lastFlashId = core_bentley_1.Id64.invalid;
304
316
  this._hiliteSyncObserver = {};
317
+ this._pickExclusionsSyncObserver = {};
305
318
  }
306
319
  update(features) {
307
320
  let ovrs = this.target.currentFeatureSymbologyOverrides;
@@ -311,13 +324,14 @@ class FeatureOverrides {
311
324
  else
312
325
  ovrs = undefined;
313
326
  const flashedId = this.target.flashedId;
314
- const hiliteSyncTarget = this.target.hiliteSyncTarget;
315
- const hiliteUpdated = !(0, Sync_1.sync)(hiliteSyncTarget, this._hiliteSyncObserver);
316
327
  const hilite = this.target.hilites;
317
- if (ovrsUpdated || hiliteUpdated || flashedId !== this._lastFlashId) {
328
+ const hiliteUpdated = !(0, Sync_1.sync)(this.target.hiliteSyncTarget, this._hiliteSyncObserver);
329
+ const pickExcludesUpdated = !(0, Sync_1.sync)(this.target.pickExclusionsSyncTarget, this._pickExclusionsSyncObserver);
330
+ if (ovrsUpdated || hiliteUpdated || flashedId !== this._lastFlashId || pickExcludesUpdated) {
318
331
  // _lut can be undefined if context was lost, (gl.createTexture returns null)
319
- if (this._lut)
320
- this._update(features, this._lut, this.target.flashed, undefined !== ovrs || hiliteUpdated ? hilite : undefined, ovrs);
332
+ if (this._lut) {
333
+ this._update(features, this._lut, undefined !== ovrs || pickExcludesUpdated ? this.target.pickExclusions : undefined, this.target.flashed, undefined !== ovrs || hiliteUpdated ? hilite : undefined, ovrs);
334
+ }
321
335
  this._lastFlashId = flashedId;
322
336
  }
323
337
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureOverrides.js","sourceRoot":"","sources":["../../../../src/render/webgl/FeatureOverrides.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, dispose, Id64 } from \"@itwin/core-bentley\";\r\nimport { PackedFeature, RenderFeatureTable } from \"@itwin/core-common\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { LineCode } from \"./LineCode\";\r\nimport { GL } from \"./GL\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { EmphasisFlags, OvrFlags, TextureUnit } from \"./RenderFlags\";\r\nimport { sync, SyncObserver } from \"./Sync\";\r\nimport { System } from \"./System\";\r\nimport { Hilites, Target } from \"./Target\";\r\nimport { Texture2DDataUpdater, Texture2DHandle, TextureHandle } from \"./Texture\";\r\nimport { BatchOptions } from \"../../common/render/BatchOptions\";\r\nimport { DisplayParams } from \"../../common/internal/render/DisplayParams\";\r\n\r\nfunction computeWidthAndHeight(nEntries: number, nRgbaPerEntry: number, nExtraRgba: number = 0, nTables: number = 1): { width: number, height: number } {\r\n const maxSize = System.instance.maxTextureSize;\r\n const nRgba = nEntries * nRgbaPerEntry * nTables + nExtraRgba;\r\n\r\n if (nRgba < maxSize)\r\n return { width: nRgba, height: 1 };\r\n\r\n // Make roughly square to reduce unused space in last row\r\n let width = Math.ceil(Math.sqrt(nRgba));\r\n\r\n // Ensure a given entry's RGBA values all fit on the same row.\r\n const remainder = width % nRgbaPerEntry;\r\n if (0 !== remainder) {\r\n width += nRgbaPerEntry - remainder;\r\n }\r\n\r\n // Compute height\r\n const height = Math.ceil(nRgba / width);\r\n\r\n assert(height <= maxSize);\r\n assert(width <= maxSize);\r\n assert(width * height >= nRgba);\r\n assert(Math.floor(height) === height);\r\n assert(Math.floor(width) === width);\r\n\r\n // Row padding should never be necessary...\r\n assert(0 === width % nRgbaPerEntry);\r\n\r\n return { width, height };\r\n}\r\n\r\nexport function isFeatureHilited(feature: PackedFeature, hilites: Hilites, isModelHilited: boolean): boolean {\r\n if (hilites.isEmpty)\r\n return false;\r\n\r\n if (\"union\" === hilites.modelSubCategoryMode)\r\n return isModelHilited || hilites.elements.hasPair(feature.elementId) || hilites.subcategories.hasPair(feature.subCategoryId);\r\n\r\n return hilites.elements.hasPair(feature.elementId) || (isModelHilited && hilites.subcategories.hasPair(feature.subCategoryId));\r\n}\r\n\r\n/** @internal */\r\nexport type FeatureOverridesCleanup = () => void;\r\n\r\nconst scratchPackedFeature = PackedFeature.createWithIndex();\r\n\r\n/** @internal */\r\nexport class FeatureOverrides implements WebGLDisposable {\r\n public readonly target: Target;\r\n private readonly _options: BatchOptions;\r\n private _lut?: Texture2DHandle;\r\n private _mostRecentSymbologyOverrides?: FeatureSymbology.Overrides;\r\n private _lastFlashId = Id64.invalid;\r\n private _hiliteSyncObserver: SyncObserver = {};\r\n private _anyOverridden = true;\r\n private _allHidden = true;\r\n private _anyTranslucent = true;\r\n private _anyViewIndependentTranslucent = true;\r\n private _anyOpaque = true;\r\n private _anyHilited = true;\r\n private _lutParams = new Float32Array(2);\r\n private _uniformSymbologyFlags: EmphasisFlags = EmphasisFlags.None;\r\n private _cleanup?: FeatureOverridesCleanup;\r\n\r\n public get anyOverridden() { return this._anyOverridden; }\r\n public get allHidden() { return this._allHidden; }\r\n public get anyTranslucent() { return this._anyTranslucent; }\r\n public get anyViewIndependentTranslucent() { return this._anyViewIndependentTranslucent; }\r\n public get anyOpaque() { return this._anyOpaque; }\r\n public get anyHilited() { return this._anyHilited; }\r\n\r\n /** For tests. */\r\n public get lutData(): Uint8Array | undefined { return this._lut?.dataBytes; }\r\n public get byteLength(): number { return undefined !== this._lut ? this._lut.bytesUsed : 0; }\r\n public get isUniform() { return 2 === this._lutParams[0] && 1 === this._lutParams[1]; }\r\n\r\n private updateUniformSymbologyFlags(): void {\r\n this._uniformSymbologyFlags = EmphasisFlags.None;\r\n if (!this.isUniform || !this._lut)\r\n return;\r\n\r\n let flags = this._lut.dataBytes![0];\r\n if (0 !== (flags & OvrFlags.Flashed))\r\n this._uniformSymbologyFlags |= EmphasisFlags.Flashed;\r\n\r\n if (0 !== (flags & OvrFlags.NonLocatable))\r\n this._uniformSymbologyFlags |= EmphasisFlags.NonLocatable;\r\n\r\n if (!this._anyHilited)\r\n return;\r\n\r\n flags = this._lut.dataBytes![1] << 8;\r\n if (0 !== (flags & OvrFlags.Hilited))\r\n this._uniformSymbologyFlags |= EmphasisFlags.Hilite;\r\n\r\n if (0 !== (flags & OvrFlags.Emphasized))\r\n this._uniformSymbologyFlags |= EmphasisFlags.Emphasized;\r\n }\r\n\r\n public getUniformOverrides(): Uint8Array {\r\n assert(this.isUniform);\r\n assert(undefined !== this._lut);\r\n assert(undefined !== this._lut.dataBytes);\r\n return this._lut.dataBytes;\r\n }\r\n\r\n private _initialize(map: RenderFeatureTable, ovrs: FeatureSymbology.Overrides, hilite: Hilites, flashed?: Id64.Uint32Pair): Texture2DHandle | undefined {\r\n const nFeatures = map.numFeatures;\r\n const dims = computeWidthAndHeight(nFeatures, 2);\r\n const width = dims.width;\r\n const height = dims.height;\r\n assert(width * height >= nFeatures);\r\n\r\n this._lutParams[0] = width;\r\n this._lutParams[1] = height;\r\n\r\n const data = new Uint8Array(width * height * 4);\r\n const creator = new Texture2DDataUpdater(data);\r\n this.buildLookupTable(creator, map, ovrs, flashed, hilite);\r\n\r\n return TextureHandle.createForData(width, height, data, true, GL.Texture.WrapMode.ClampToEdge);\r\n }\r\n\r\n private _update(map: RenderFeatureTable, lut: Texture2DHandle, flashed?: Id64.Uint32Pair, hilites?: Hilites, ovrs?: FeatureSymbology.Overrides) {\r\n const updater = new Texture2DDataUpdater(lut.dataBytes!);\r\n\r\n if (undefined === ovrs) {\r\n this.updateFlashedAndHilited(updater, map, flashed, hilites);\r\n } else {\r\n assert(undefined !== hilites);\r\n this.buildLookupTable(updater, map, ovrs, flashed, hilites);\r\n }\r\n\r\n lut.update(updater);\r\n }\r\n\r\n private buildLookupTable(data: Texture2DDataUpdater, map: RenderFeatureTable, ovr: FeatureSymbology.Overrides, flashedIdParts: Id64.Uint32Pair | undefined, hilites: Hilites) {\r\n const allowHilite = true !== this._options.noHilite;\r\n const allowFlash = true !== this._options.noFlash;\r\n const allowEmphasis = true !== this._options.noEmphasis;\r\n\r\n let isModelHilited = false;\r\n const prevModelId = { lower: -1, upper: -1 };\r\n\r\n this._anyOpaque = this._anyTranslucent = this._anyViewIndependentTranslucent = this._anyHilited = false;\r\n\r\n let nHidden = 0;\r\n let nOverridden = 0;\r\n\r\n // NB: We currently use 2 RGBA values per feature as follows:\r\n // [0]\r\n // RG = override flags (see OvrFlags enum)\r\n // B = line code\r\n // A = line weight (if we need an extra byte in future, could combine code+weight into a single byte).\r\n // [1]\r\n // RGB = rgb\r\n // A = alpha\r\n for (const feature of map.iterable(scratchPackedFeature)) {\r\n const i = feature.index;\r\n const dataIndex = i * 4 * 2;\r\n\r\n if (prevModelId.lower !== feature.modelId.lower || prevModelId.upper !== feature.modelId.upper) {\r\n prevModelId.lower = feature.modelId.lower;\r\n prevModelId.upper = feature.modelId.upper;\r\n isModelHilited = allowHilite && hilites.models.hasPair(feature.modelId);\r\n }\r\n\r\n const app = this.target.currentBranch.getFeatureAppearance(\r\n ovr,\r\n feature.elementId.lower, feature.elementId.upper,\r\n feature.subCategoryId.lower, feature.subCategoryId.upper,\r\n feature.geometryClass,\r\n feature.modelId.lower, feature.modelId.upper,\r\n map.type, feature.animationNodeId);\r\n\r\n // NB: If the appearance is fully transparent, then:\r\n // - For normal (\"primary\") models, getAppearance() returns undefined.\r\n // - For classifier models, getAppearance() returns the appearance, and classification shader will discard fully-transparent classified pixels.\r\n // (The latter is how we clip the classified model using the classifiers).\r\n if (undefined === app) {\r\n // The feature is not visible. We don't care about any of the other overrides, because we're not going to render it.\r\n data.setOvrFlagsAtIndex(dataIndex, OvrFlags.Visibility);\r\n nHidden++;\r\n nOverridden++;\r\n continue;\r\n }\r\n\r\n let flags = app.nonLocatable ? OvrFlags.NonLocatable : OvrFlags.None;\r\n if (allowHilite && isFeatureHilited(feature, hilites, isModelHilited)) {\r\n flags |= OvrFlags.Hilited;\r\n this._anyHilited = true;\r\n }\r\n\r\n if (allowEmphasis && app.emphasized) {\r\n flags |= OvrFlags.Emphasized;\r\n this._anyHilited = true;\r\n }\r\n\r\n if (app.overridesRgb && app.rgb) {\r\n flags |= OvrFlags.Rgb;\r\n const rgb = app.rgb;\r\n data.setByteAtIndex(dataIndex + 4, rgb.r);\r\n data.setByteAtIndex(dataIndex + 5, rgb.g);\r\n data.setByteAtIndex(dataIndex + 6, rgb.b);\r\n }\r\n\r\n if (undefined !== app.transparency) {\r\n // transparency in range [0, 1]...convert to byte and invert so 0=transparent...\r\n flags |= OvrFlags.Alpha;\r\n let alpha = 1.0 - app.transparency;\r\n alpha = Math.floor(0xff * alpha + 0.5);\r\n if ((0xff - alpha) < DisplayParams.minTransparency)\r\n alpha = 0xff;\r\n\r\n data.setByteAtIndex(dataIndex + 7, alpha);\r\n if (0xff === alpha) {\r\n this._anyOpaque = true;\r\n } else {\r\n this._anyTranslucent = true;\r\n if (!app.viewDependentTransparency) {\r\n flags |= OvrFlags.ViewIndependentTransparency;\r\n this._anyViewIndependentTranslucent = true;\r\n }\r\n }\r\n }\r\n\r\n if (app.overridesWeight && app.weight) {\r\n flags |= OvrFlags.Weight;\r\n let weight = app.weight;\r\n weight = Math.min(31, weight);\r\n weight = Math.max(1, weight);\r\n data.setByteAtIndex(dataIndex + 3, weight);\r\n }\r\n\r\n if (app.overridesLinePixels && app.linePixels) {\r\n flags |= OvrFlags.LineCode;\r\n const lineCode = LineCode.valueFromLinePixels(app.linePixels);\r\n data.setByteAtIndex(dataIndex + 2, lineCode);\r\n }\r\n\r\n if (app.ignoresMaterial)\r\n flags |= OvrFlags.IgnoreMaterial;\r\n\r\n if (allowFlash && undefined !== flashedIdParts && feature.elementId.lower === flashedIdParts.lower && feature.elementId.upper === flashedIdParts.upper)\r\n flags |= OvrFlags.Flashed;\r\n\r\n data.setOvrFlagsAtIndex(dataIndex, flags);\r\n if (OvrFlags.None !== flags)\r\n nOverridden++;\r\n }\r\n\r\n this._allHidden = (nHidden === map.numFeatures);\r\n this._anyOverridden = (nOverridden > 0);\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n // NB: If hilites is undefined, it means that the hilited set has not changed.\r\n private updateFlashedAndHilited(data: Texture2DDataUpdater, map: RenderFeatureTable, flashed?: Id64.Uint32Pair, hilites?: Hilites) {\r\n if (!hilites || true === this._options.noHilite) {\r\n this.updateFlashed(data, map, flashed);\r\n return;\r\n }\r\n\r\n const allowFlash = true !== this._options.noFlash;\r\n const intersect = \"intersection\" === hilites.modelSubCategoryMode;\r\n\r\n this._anyOverridden = this._anyHilited = false;\r\n for (const feature of map.iterable(scratchPackedFeature)) {\r\n const dataIndex = feature.index * 4 * 2;\r\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\r\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\r\n // If it's invisible, none of the other flags matter. We can't flash it and don't want to hilite it.\r\n this._anyOverridden = true;\r\n continue;\r\n }\r\n\r\n const isModelHilited = hilites.models.hasPair(feature.modelId);\r\n let isHilited = isModelHilited && !intersect;\r\n if (!isHilited)\r\n isHilited = hilites.elements.hasPair(feature.elementId);\r\n\r\n if (!isHilited)\r\n if (isModelHilited || !intersect)\r\n isHilited = hilites.subcategories.hasPair(feature.subCategoryId);\r\n\r\n let isFlashed = false;\r\n if (flashed && allowFlash)\r\n isFlashed = feature.elementId.lower === flashed.lower && feature.elementId.upper === flashed.upper;\r\n\r\n let newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\r\n newFlags = isHilited ? (newFlags | OvrFlags.Hilited) : (newFlags & ~OvrFlags.Hilited);\r\n\r\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\r\n if (OvrFlags.None !== newFlags) {\r\n this._anyOverridden = true;\r\n this._anyHilited = this._anyHilited || isHilited || OvrFlags.None !== (newFlags & OvrFlags.Emphasized);\r\n }\r\n }\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n private updateFlashed(data: Texture2DDataUpdater, map: RenderFeatureTable, flashed?: Id64.Uint32Pair): void {\r\n if (true === this._options.noFlash)\r\n return;\r\n\r\n this._anyOverridden = false;\r\n const elemId = { lower: 0, upper: 0 };\r\n for (let i = 0; i < map.numFeatures; i++) {\r\n const dataIndex = i * 4 * 2;\r\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\r\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\r\n // If it's invisible, none of the other flags matter and we can't flash it.\r\n this._anyOverridden = true;\r\n continue;\r\n }\r\n\r\n let isFlashed = false;\r\n if (flashed) {\r\n map.getElementIdPair(i, elemId);\r\n isFlashed = elemId.lower === flashed.lower && elemId.upper === flashed.upper;\r\n }\r\n\r\n const newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\r\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\r\n if (OvrFlags.None !== newFlags)\r\n this._anyOverridden = true;\r\n }\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n private constructor(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\r\n this.target = target;\r\n this._options = options;\r\n this._cleanup = cleanup;\r\n }\r\n\r\n public static createFromTarget(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\r\n return new FeatureOverrides(target, options, cleanup);\r\n }\r\n\r\n public get isDisposed(): boolean { return undefined === this._lut; }\r\n\r\n public dispose() {\r\n this._lut = dispose(this._lut);\r\n if (this._cleanup) {\r\n this._cleanup();\r\n this._cleanup = undefined;\r\n }\r\n }\r\n\r\n public initFromMap(map: RenderFeatureTable) {\r\n const nFeatures = map.numFeatures;\r\n assert(0 < nFeatures);\r\n\r\n this._lut = dispose(this._lut);\r\n\r\n const ovrs: FeatureSymbology.Overrides = this.target.currentFeatureSymbologyOverrides;\r\n this._mostRecentSymbologyOverrides = ovrs;\r\n const hilite = this.target.hilites;\r\n this._lut = this._initialize(map, ovrs, hilite, this.target.flashed);\r\n this._lastFlashId = Id64.invalid;\r\n this._hiliteSyncObserver = {};\r\n }\r\n\r\n public update(features: RenderFeatureTable) {\r\n let ovrs: FeatureSymbology.Overrides | undefined = this.target.currentFeatureSymbologyOverrides;\r\n const ovrsUpdated = ovrs !== this._mostRecentSymbologyOverrides;\r\n if (ovrsUpdated)\r\n this._mostRecentSymbologyOverrides = ovrs;\r\n else\r\n ovrs = undefined;\r\n\r\n const flashedId = this.target.flashedId;\r\n\r\n const hiliteSyncTarget = this.target.hiliteSyncTarget;\r\n const hiliteUpdated = !sync(hiliteSyncTarget, this._hiliteSyncObserver);\r\n\r\n const hilite = this.target.hilites;\r\n if (ovrsUpdated || hiliteUpdated || flashedId !== this._lastFlashId) {\r\n // _lut can be undefined if context was lost, (gl.createTexture returns null)\r\n if (this._lut)\r\n this._update(features, this._lut, this.target.flashed, undefined !== ovrs || hiliteUpdated ? hilite : undefined, ovrs);\r\n\r\n this._lastFlashId = flashedId;\r\n }\r\n }\r\n\r\n public bindLUTParams(uniform: UniformHandle): void {\r\n uniform.setUniform2fv(this._lutParams);\r\n }\r\n\r\n public bindLUT(uniform: UniformHandle): void {\r\n if (this._lut)\r\n this._lut.bindSampler(uniform, TextureUnit.FeatureSymbology);\r\n }\r\n\r\n public bindUniformSymbologyFlags(uniform: UniformHandle): void {\r\n uniform.setUniform1f(this._uniformSymbologyFlags);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"FeatureOverrides.js","sourceRoot":"","sources":["../../../../src/render/webgl/FeatureOverrides.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA4D;AAC5D,oDAAuE;AAGvE,yCAAsC;AACtC,6BAA0B;AAE1B,+CAA2D;AAC3D,iCAA4C;AAC5C,qCAAkC;AAElC,uCAAiF;AAEjF,8EAA2E;AAE3E,0EAA6E;AAE7E,SAAgB,gBAAgB,CAAC,OAAsB,EAAE,OAAgB,EAAE,cAAuB;IAChG,IAAI,OAAO,CAAC,OAAO;QACjB,OAAO,KAAK,CAAC;IAEf,IAAI,OAAO,KAAK,OAAO,CAAC,oBAAoB;QAC1C,OAAO,cAAc,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAE/H,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AACjI,CAAC;AARD,4CAQC;AAKD,MAAM,oBAAoB,GAAG,2BAAa,CAAC,eAAe,EAAE,CAAC;AAE7D,gBAAgB;AAChB,MAAa,gBAAgB;IAkB3B,IAAW,aAAa,KAAK,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAC1D,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,IAAW,cAAc,KAAK,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAC5D,IAAW,6BAA6B,KAAK,OAAO,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAC1F,IAAW,SAAS,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,IAAW,UAAU,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAEpD,iBAAiB;IACjB,IAAW,OAAO,KAA6B,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAC7E,IAAW,UAAU,KAAa,OAAO,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,IAAW,SAAS,KAAK,OAAO,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/E,2BAA2B;QACjC,IAAI,CAAC,sBAAsB,6BAAqB,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI;YAC/B,OAAO;QAET,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAU,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,KAAK,4BAAmB,CAAC;YAClC,IAAI,CAAC,sBAAsB,iCAAyB,CAAC;QAEvD,IAAI,CAAC,KAAK,CAAC,KAAK,iCAAwB,CAAC;YACvC,IAAI,CAAC,sBAAsB,sCAA8B,CAAC;QAE5D,IAAI,CAAC,IAAI,CAAC,WAAW;YACnB,OAAO;QAET,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,KAAK,6BAAmB,CAAC;YAClC,IAAI,CAAC,sBAAsB,gCAAwB,CAAC;QAEtD,IAAI,CAAC,KAAK,CAAC,KAAK,gCAAsB,CAAC;YACrC,IAAI,CAAC,sBAAsB,oCAA4B,CAAC;IAC5D,CAAC;IAEM,mBAAmB;QACxB,IAAA,qBAAM,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC7B,CAAC;IAEO,WAAW,CAAC,GAAuB,EAAE,IAAgC,EAAE,YAA4B,EAAE,MAAe,EAAE,OAAyB;QACrJ,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC;QAClC,MAAM,IAAI,GAAG,IAAA,+BAAiB,EAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,eAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAChF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAA,qBAAM,EAAC,KAAK,GAAG,MAAM,IAAI,SAAS,CAAC,CAAC;QAEpC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QAE5B,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,8BAAoB,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAEzE,OAAO,uBAAa,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACjG,CAAC;IAEO,OAAO,CAAC,GAAuB,EAAE,GAAoB,EAAE,YAAwC,EAAE,OAAyB,EAAE,OAAiB,EAAE,IAAiC;QACtL,MAAM,OAAO,GAAG,IAAI,8BAAoB,CAAC,GAAG,CAAC,SAAU,CAAC,CAAC;QAEzD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,IAAA,qBAAM,EAAC,SAAS,KAAK,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5E,CAAC;QAED,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IAEO,eAAe,CAAC,YAAoB,EAAE,yBAA2C,EAAE,IAA0B,EAAE,qBAA6B,EAAE,QAAkB;QACtK,gFAAgF;QAChF,IAAI,KAAK,GAAG,GAAG,GAAG,YAAY,CAAC;QAC/B,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,6BAAa,CAAC,eAAe;YAChD,KAAK,GAAG,IAAI,CAAC;QAEf,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAClD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBAC/B,QAAQ,mDAAwC,CAAC;gBACjD,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,gBAAgB,CAAC,IAA0B,EAAE,GAAuB,EAAE,GAA+B,EAAE,WAAuC,EAAE,cAA2C,EAAE,OAAgB;QACnN,MAAM,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACpD,MAAM,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAClD,MAAM,aAAa,GAAG,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QAExD,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,MAAM,WAAW,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;QAE7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAExG,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,6DAA6D;QAC7D,OAAO;QACP,+CAA+C;QAC/C,qBAAqB;QACrB,2GAA2G;QAC3G,OAAO;QACP,iBAAiB;QACjB,iBAAiB;QACjB,OAAO;QACP,sBAAsB;QACtB,sBAAsB;QACtB,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACzD,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;YACxB,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAE5B,IAAI,WAAW,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC/F,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC1C,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC1C,cAAc,GAAG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1E,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,oBAAoB,CACxD,GAAG,EACH,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,EAChD,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,EACxD,OAAO,CAAC,aAAa,EACrB,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAC5C,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;YAErC,oDAAoD;YACpD,uEAAuE;YACvE,gJAAgJ;YAChJ,0EAA0E;YAC1E,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;gBACtB,oHAAoH;gBACpH,IAAI,CAAC,kBAAkB,CAAC,SAAS,iCAAsB,CAAC;gBACxD,OAAO,EAAE,CAAC;gBACV,WAAW,EAAE,CAAC;gBACd,SAAS;YACX,CAAC;YAED,IAAI,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,gCAAuB,CAAC,sBAAc,CAAC;YACrE,IAAI,WAAW,IAAI,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,CAAC;gBACtE,KAAK,8BAAoB,CAAC;gBAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC1B,CAAC;YAED,IAAI,aAAa,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBACpC,KAAK,iCAAuB,CAAC;gBAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC1B,CAAC;YAED,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;gBAChC,KAAK,wBAAgB,CAAC;gBACtB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;gBACpB,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC1C,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC1C,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5C,CAAC;YAED,IAAI,SAAS,KAAK,GAAG,CAAC,YAAY,EAAE,CAAC;gBACnC,KAAK,0BAAkB,CAAC;gBACxB,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,yBAAyB,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YAC5G,CAAC;YAED,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;YACjC,IAAI,OAAO,EAAE,CAAC;gBACZ,KAAK,4BAAoB,CAAC;gBAC1B,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC9C,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC9C,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,UAAU,GAAG,GAAG,CAAC,mBAAmB,EAAE,CAAC;YAC7C,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;gBAC7B,KAAK,8BAAsB,CAAC;gBAC5B,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,GAAG,CAAC,yBAAyB,EAAE,IAAI,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;YACvG,CAAC;YAED,IAAI,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACtC,KAAK,6BAAmB,CAAC;gBACzB,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;gBACxB,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBAC9B,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC7B,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;YAC7C,CAAC;YAED,IAAI,GAAG,CAAC,mBAAmB,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBAC9C,KAAK,8BAAqB,CAAC;gBAC3B,MAAM,QAAQ,GAAG,mBAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAC9D,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC/C,CAAC;YAED,IAAI,GAAG,CAAC,eAAe;gBACrB,KAAK,sCAA2B,CAAC;YAEnC,IAAI,UAAU,IAAI,SAAS,KAAK,cAAc,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,cAAc,CAAC,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,cAAc,CAAC,KAAK;gBACpJ,KAAK,6BAAoB,CAAC;YAE5B,IAAI,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5C,KAAK,2CAAgC,CAAC;gBACtC,EAAE,OAAO,CAAC;YACZ,CAAC;YAED,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC1C,IAAI,0BAAkB,KAAK;gBACzB,WAAW,EAAE,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,cAAc,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QAExC,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAED,8EAA8E;IACtE,uBAAuB,CAAC,IAA0B,EAAE,GAAuB,EAAE,YAAwC,EAAE,OAAyB,EAAE,OAAiB;QACzK,IAAI,CAAC,OAAO,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YACrD,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAClD,MAAM,SAAS,GAAG,cAAc,KAAK,OAAO,CAAC,oBAAoB,CAAC;QAElE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC/C,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACzD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,0BAAkB,CAAC,QAAQ,iCAAsB,CAAC,EAAE,CAAC;gBACvD,oGAAoG;gBACpG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,SAAS;YACX,CAAC;YAED,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/D,IAAI,SAAS,GAAG,cAAc,IAAI,CAAC,SAAS,CAAC;YAC7C,IAAI,CAAC,SAAS;gBACZ,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAE1D,IAAI,CAAC,SAAS;gBACZ,IAAI,cAAc,IAAI,CAAC,SAAS;oBAC9B,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAErE,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,OAAO,IAAI,UAAU;gBACvB,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC;YAErG,IAAI,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,4BAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,0BAAiB,CAAC,CAAC;YAC1F,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,6BAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,2BAAiB,CAAC,CAAC;YACtF,IAAI,YAAY,EAAE,CAAC;gBACjB,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,0CAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,wCAA6B,CAAC,CAAC;YAC9I,CAAC;YAED,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC7C,IAAI,0BAAkB,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,SAAS,IAAI,0BAAkB,CAAC,QAAQ,gCAAsB,CAAC,CAAC;YACzG,CAAC;QACH,CAAC;QAED,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAEO,aAAa,CAAC,IAA0B,EAAE,GAAuB,EAAE,YAAwC,EAAE,OAAyB;QAC5I,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,YAAY;YACjD,OAAO;QAET,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,0BAAkB,CAAC,QAAQ,iCAAsB,CAAC,EAAE,CAAC;gBACvD,2EAA2E;gBAC3E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,SAAS;YACX,CAAC;YAED,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,UAAuC,CAAC;YAC5C,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACtC,UAAU,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC7C,SAAS,GAAG,UAAU,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC;YACvF,CAAC;YAED,IAAI,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,4BAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,0BAAiB,CAAC,CAAC;YAC1F,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,UAAU,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC/C,CAAC;gBAED,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,0CAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,wCAA6B,CAAC,CAAC;YACvI,CAAC;YAED,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC7C,IAAI,0BAAkB,QAAQ;gBAC5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAED,YAAoB,MAAc,EAAE,OAAqB,EAAE,OAA4C;QAlU/F,iBAAY,GAAG,mBAAI,CAAC,OAAO,CAAC;QAC5B,wBAAmB,GAAiB,EAAE,CAAC;QACvC,gCAA2B,GAAiB,EAAE,CAAC;QAC/C,mBAAc,GAAG,IAAI,CAAC;QACtB,eAAU,GAAG,IAAI,CAAC;QAClB,oBAAe,GAAG,IAAI,CAAC;QACvB,mCAA8B,GAAG,IAAI,CAAC;QACtC,eAAU,GAAG,IAAI,CAAC;QAClB,gBAAW,GAAG,IAAI,CAAC;QACnB,eAAU,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,2BAAsB,8BAAqC;QAyTjE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,MAAc,EAAE,OAAqB,EAAE,OAA4C;QAChH,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,IAAW,UAAU,KAAc,OAAO,SAAS,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE7D,OAAO;QACZ,IAAI,CAAC,IAAI,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC5B,CAAC;IACH,CAAC;IAEM,WAAW,CAAC,GAAuB;QACxC,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC;QAClC,IAAA,qBAAM,EAAC,CAAC,GAAG,SAAS,CAAC,CAAC;QAEtB,IAAI,CAAC,IAAI,GAAG,IAAA,sBAAO,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/B,MAAM,IAAI,GAA+B,IAAI,CAAC,MAAM,CAAC,gCAAgC,CAAC;QACtF,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjG,IAAI,CAAC,YAAY,GAAG,mBAAI,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,2BAA2B,GAAG,EAAE,CAAC;IACxC,CAAC;IAEM,MAAM,CAAC,QAA4B;QACxC,IAAI,IAAI,GAA2C,IAAI,CAAC,MAAM,CAAC,gCAAgC,CAAC;QAChG,MAAM,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC,6BAA6B,CAAC;QAChE,IAAI,WAAW;YACb,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;;YAE1C,IAAI,GAAG,SAAS,CAAC;QAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAExC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACnC,MAAM,aAAa,GAAG,CAAC,IAAA,WAAI,EAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACpF,MAAM,mBAAmB,GAAG,CAAC,IAAA,WAAI,EAAC,IAAI,CAAC,MAAM,CAAC,wBAAwB,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAE1G,IAAI,WAAW,IAAI,aAAa,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,IAAI,mBAAmB,EAAE,CAAC;YAC3F,6EAA6E;YAC7E,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,IAAI,CAAC,OAAO,CACV,QAAQ,EACR,IAAI,CAAC,IAAI,EACT,SAAS,KAAK,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,EAClF,IAAI,CAAC,MAAM,CAAC,OAAO,EACnB,SAAS,KAAK,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAC/D,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAChC,CAAC;IACH,CAAC;IAEM,aAAa,CAAC,OAAsB;QACzC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAEM,OAAO,CAAC,OAAsB;QACnC,IAAI,IAAI,CAAC,IAAI;YACX,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,yBAAW,CAAC,gBAAgB,CAAC,CAAC;IACjE,CAAC;IAEM,yBAAyB,CAAC,OAAsB;QACrD,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACpD,CAAC;CACF;AApZD,4CAoZC","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, dispose, Id64 } from \"@itwin/core-bentley\";\r\nimport { PackedFeature, RenderFeatureTable } from \"@itwin/core-common\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { LineCode } from \"./LineCode\";\r\nimport { GL } from \"./GL\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { EmphasisFlags, TextureUnit } from \"./RenderFlags\";\r\nimport { sync, SyncObserver } from \"./Sync\";\r\nimport { System } from \"./System\";\r\nimport { Hilites, Target } from \"./Target\";\r\nimport { Texture2DDataUpdater, Texture2DHandle, TextureHandle } from \"./Texture\";\r\nimport { BatchOptions } from \"../../common/render/BatchOptions\";\r\nimport { DisplayParams } from \"../../common/internal/render/DisplayParams\";\r\nimport { OvrFlags } from \"../../common/internal/render/OvrFlags\";\r\nimport { computeDimensions } from \"../../common/internal/render/VertexTable\";\r\n\r\nexport function isFeatureHilited(feature: PackedFeature, hilites: Hilites, isModelHilited: boolean): boolean {\r\n if (hilites.isEmpty)\r\n return false;\r\n\r\n if (\"union\" === hilites.modelSubCategoryMode)\r\n return isModelHilited || hilites.elements.hasPair(feature.elementId) || hilites.subcategories.hasPair(feature.subCategoryId);\r\n\r\n return hilites.elements.hasPair(feature.elementId) || (isModelHilited && hilites.subcategories.hasPair(feature.subCategoryId));\r\n}\r\n\r\n/** @internal */\r\nexport type FeatureOverridesCleanup = () => void;\r\n\r\nconst scratchPackedFeature = PackedFeature.createWithIndex();\r\n\r\n/** @internal */\r\nexport class FeatureOverrides implements WebGLDisposable {\r\n public readonly target: Target;\r\n private readonly _options: BatchOptions;\r\n private _lut?: Texture2DHandle;\r\n private _mostRecentSymbologyOverrides?: FeatureSymbology.Overrides;\r\n private _lastFlashId = Id64.invalid;\r\n private _hiliteSyncObserver: SyncObserver = {};\r\n private _pickExclusionsSyncObserver: SyncObserver = {};\r\n private _anyOverridden = true;\r\n private _allHidden = true;\r\n private _anyTranslucent = true;\r\n private _anyViewIndependentTranslucent = true;\r\n private _anyOpaque = true;\r\n private _anyHilited = true;\r\n private _lutParams = new Float32Array(2);\r\n private _uniformSymbologyFlags: EmphasisFlags = EmphasisFlags.None;\r\n private _cleanup?: FeatureOverridesCleanup;\r\n\r\n public get anyOverridden() { return this._anyOverridden; }\r\n public get allHidden() { return this._allHidden; }\r\n public get anyTranslucent() { return this._anyTranslucent; }\r\n public get anyViewIndependentTranslucent() { return this._anyViewIndependentTranslucent; }\r\n public get anyOpaque() { return this._anyOpaque; }\r\n public get anyHilited() { return this._anyHilited; }\r\n\r\n /** For tests. */\r\n public get lutData(): Uint8Array | undefined { return this._lut?.dataBytes; }\r\n public get byteLength(): number { return undefined !== this._lut ? this._lut.bytesUsed : 0; }\r\n public get isUniform() { return 3 === this._lutParams[0] && 1 === this._lutParams[1]; }\r\n\r\n private updateUniformSymbologyFlags(): void {\r\n this._uniformSymbologyFlags = EmphasisFlags.None;\r\n if (!this.isUniform || !this._lut)\r\n return;\r\n\r\n let flags = this._lut.dataBytes![0];\r\n if (0 !== (flags & OvrFlags.Flashed))\r\n this._uniformSymbologyFlags |= EmphasisFlags.Flashed;\r\n\r\n if (0 !== (flags & OvrFlags.NonLocatable))\r\n this._uniformSymbologyFlags |= EmphasisFlags.NonLocatable;\r\n\r\n if (!this._anyHilited)\r\n return;\r\n\r\n flags = this._lut.dataBytes![1] << 8;\r\n if (0 !== (flags & OvrFlags.Hilited))\r\n this._uniformSymbologyFlags |= EmphasisFlags.Hilite;\r\n\r\n if (0 !== (flags & OvrFlags.Emphasized))\r\n this._uniformSymbologyFlags |= EmphasisFlags.Emphasized;\r\n }\r\n\r\n public getUniformOverrides(): Uint8Array {\r\n assert(this.isUniform);\r\n assert(undefined !== this._lut);\r\n assert(undefined !== this._lut.dataBytes);\r\n return this._lut.dataBytes;\r\n }\r\n\r\n private _initialize(map: RenderFeatureTable, ovrs: FeatureSymbology.Overrides, pickExcludes: Id64.Uint32Set, hilite: Hilites, flashed?: Id64.Uint32Pair): Texture2DHandle | undefined {\r\n const nFeatures = map.numFeatures;\r\n const dims = computeDimensions(nFeatures, 3, 0, System.instance.maxTextureSize);\r\n const width = dims.width;\r\n const height = dims.height;\r\n assert(width * height >= nFeatures);\r\n\r\n this._lutParams[0] = width;\r\n this._lutParams[1] = height;\r\n\r\n const data = new Uint8Array(width * height * 4);\r\n const creator = new Texture2DDataUpdater(data);\r\n this.buildLookupTable(creator, map, ovrs, pickExcludes, flashed, hilite);\r\n\r\n return TextureHandle.createForData(width, height, data, true, GL.Texture.WrapMode.ClampToEdge);\r\n }\r\n\r\n private _update(map: RenderFeatureTable, lut: Texture2DHandle, pickExcludes: Id64.Uint32Set | undefined, flashed?: Id64.Uint32Pair, hilites?: Hilites, ovrs?: FeatureSymbology.Overrides) {\r\n const updater = new Texture2DDataUpdater(lut.dataBytes!);\r\n\r\n if (undefined === ovrs) {\r\n this.updateFlashedAndHilited(updater, map, pickExcludes, flashed, hilites);\r\n } else {\r\n assert(undefined !== hilites);\r\n this.buildLookupTable(updater, map, ovrs, pickExcludes, flashed, hilites);\r\n }\r\n\r\n lut.update(updater);\r\n }\r\n\r\n private setTransparency(transparency: number, viewDependentTransparency: true | undefined, data: Texture2DDataUpdater, transparencyByteIndex: number, curFlags: OvrFlags): OvrFlags {\r\n // transparency in range [0, 1]...convert to byte and invert so 0=transparent...\r\n let alpha = 1.0 - transparency;\r\n alpha = Math.floor(0xff * alpha + 0.5);\r\n if ((0xff - alpha) < DisplayParams.minTransparency)\r\n alpha = 0xff;\r\n\r\n data.setByteAtIndex(transparencyByteIndex, alpha);\r\n if (0xff === alpha) {\r\n this._anyOpaque = true;\r\n } else {\r\n this._anyTranslucent = true;\r\n if (!viewDependentTransparency) {\r\n curFlags |= OvrFlags.ViewIndependentTransparency;\r\n this._anyViewIndependentTranslucent = true;\r\n }\r\n }\r\n\r\n return curFlags;\r\n }\r\n\r\n private buildLookupTable(data: Texture2DDataUpdater, map: RenderFeatureTable, ovr: FeatureSymbology.Overrides, pickExclude: Id64.Uint32Set | undefined, flashedIdParts: Id64.Uint32Pair | undefined, hilites: Hilites) {\r\n const allowHilite = true !== this._options.noHilite;\r\n const allowFlash = true !== this._options.noFlash;\r\n const allowEmphasis = true !== this._options.noEmphasis;\r\n\r\n let isModelHilited = false;\r\n const prevModelId = { lower: -1, upper: -1 };\r\n\r\n this._anyOpaque = this._anyTranslucent = this._anyViewIndependentTranslucent = this._anyHilited = false;\r\n\r\n let nHidden = 0;\r\n let nOverridden = 0;\r\n\r\n // NB: We currently use 3 RGBA values per feature as follows:\r\n // [0]\r\n // RG = override flags (see OvrFlags enum)\r\n // B = line code\r\n // A = line weight (if we need an extra byte in future, could combine code+weight into a single byte).\r\n // [1]\r\n // RGB = rgb\r\n // A = alpha\r\n // [2]\r\n // RGB = line rgb\r\n // A = line alpha\r\n for (const feature of map.iterable(scratchPackedFeature)) {\r\n const i = feature.index;\r\n const dataIndex = i * 4 * 3;\r\n\r\n if (prevModelId.lower !== feature.modelId.lower || prevModelId.upper !== feature.modelId.upper) {\r\n prevModelId.lower = feature.modelId.lower;\r\n prevModelId.upper = feature.modelId.upper;\r\n isModelHilited = allowHilite && hilites.models.hasPair(feature.modelId);\r\n }\r\n\r\n const app = this.target.currentBranch.getFeatureAppearance(\r\n ovr,\r\n feature.elementId.lower, feature.elementId.upper,\r\n feature.subCategoryId.lower, feature.subCategoryId.upper,\r\n feature.geometryClass,\r\n feature.modelId.lower, feature.modelId.upper,\r\n map.type, feature.animationNodeId);\r\n\r\n // NB: If the appearance is fully transparent, then:\r\n // - For normal (\"primary\") models, getAppearance() returns undefined.\r\n // - For classifier models, getAppearance() returns the appearance, and classification shader will discard fully-transparent classified pixels.\r\n // (The latter is how we clip the classified model using the classifiers).\r\n if (undefined === app) {\r\n // The feature is not visible. We don't care about any of the other overrides, because we're not going to render it.\r\n data.setOvrFlagsAtIndex(dataIndex, OvrFlags.Visibility);\r\n nHidden++;\r\n nOverridden++;\r\n continue;\r\n }\r\n\r\n let flags = app.nonLocatable ? OvrFlags.NonLocatable : OvrFlags.None;\r\n if (allowHilite && isFeatureHilited(feature, hilites, isModelHilited)) {\r\n flags |= OvrFlags.Hilited;\r\n this._anyHilited = true;\r\n }\r\n\r\n if (allowEmphasis && app.emphasized) {\r\n flags |= OvrFlags.Emphasized;\r\n this._anyHilited = true;\r\n }\r\n\r\n if (app.overridesRgb && app.rgb) {\r\n flags |= OvrFlags.Rgb;\r\n const rgb = app.rgb;\r\n data.setByteAtIndex(dataIndex + 4, rgb.r);\r\n data.setByteAtIndex(dataIndex + 5, rgb.g);\r\n data.setByteAtIndex(dataIndex + 6, rgb.b);\r\n }\r\n\r\n if (undefined !== app.transparency) {\r\n flags |= OvrFlags.Alpha;\r\n flags = this.setTransparency(app.transparency, app.viewDependentTransparency, data, dataIndex + 7, flags);\r\n }\r\n\r\n const lineRgb = app.getLineRgb();\r\n if (lineRgb) {\r\n flags |= OvrFlags.LineRgb;\r\n data.setByteAtIndex(dataIndex + 8, lineRgb.r);\r\n data.setByteAtIndex(dataIndex + 9, lineRgb.g);\r\n data.setByteAtIndex(dataIndex + 10, lineRgb.b);\r\n }\r\n\r\n const lineTransp = app.getLineTransparency();\r\n if (undefined !== lineTransp) {\r\n flags |= OvrFlags.LineAlpha;\r\n flags = this.setTransparency(lineTransp, app.viewDependentTransparency, data, dataIndex + 11, flags);\r\n }\r\n\r\n if (app.overridesWeight && app.weight) {\r\n flags |= OvrFlags.Weight;\r\n let weight = app.weight;\r\n weight = Math.min(31, weight);\r\n weight = Math.max(1, weight);\r\n data.setByteAtIndex(dataIndex + 3, weight);\r\n }\r\n\r\n if (app.overridesLinePixels && app.linePixels) {\r\n flags |= OvrFlags.LineCode;\r\n const lineCode = LineCode.valueFromLinePixels(app.linePixels);\r\n data.setByteAtIndex(dataIndex + 2, lineCode);\r\n }\r\n\r\n if (app.ignoresMaterial)\r\n flags |= OvrFlags.IgnoreMaterial;\r\n\r\n if (allowFlash && undefined !== flashedIdParts && feature.elementId.lower === flashedIdParts.lower && feature.elementId.upper === flashedIdParts.upper)\r\n flags |= OvrFlags.Flashed;\r\n\r\n if (pickExclude?.hasPair(feature.elementId)) {\r\n flags |= OvrFlags.InvisibleDuringPick;\r\n ++nHidden;\r\n }\r\n\r\n data.setOvrFlagsAtIndex(dataIndex, flags);\r\n if (OvrFlags.None !== flags)\r\n nOverridden++;\r\n }\r\n\r\n this._allHidden = (nHidden === map.numFeatures);\r\n this._anyOverridden = (nOverridden > 0);\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n // NB: If hilites is undefined, it means that the hilited set has not changed.\r\n private updateFlashedAndHilited(data: Texture2DDataUpdater, map: RenderFeatureTable, pickExcludes: Id64.Uint32Set | undefined, flashed?: Id64.Uint32Pair, hilites?: Hilites) {\r\n if (!hilites || true === this._options.noHilite) {\r\n this.updateFlashed(data, map, pickExcludes, flashed);\r\n return;\r\n }\r\n\r\n const allowFlash = true !== this._options.noFlash;\r\n const intersect = \"intersection\" === hilites.modelSubCategoryMode;\r\n\r\n this._anyOverridden = this._anyHilited = false;\r\n for (const feature of map.iterable(scratchPackedFeature)) {\r\n const dataIndex = feature.index * 4 * 3;\r\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\r\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\r\n // If it's invisible, none of the other flags matter. We can't flash it and don't want to hilite it.\r\n this._anyOverridden = true;\r\n continue;\r\n }\r\n\r\n const isModelHilited = hilites.models.hasPair(feature.modelId);\r\n let isHilited = isModelHilited && !intersect;\r\n if (!isHilited)\r\n isHilited = hilites.elements.hasPair(feature.elementId);\r\n\r\n if (!isHilited)\r\n if (isModelHilited || !intersect)\r\n isHilited = hilites.subcategories.hasPair(feature.subCategoryId);\r\n\r\n let isFlashed = false;\r\n if (flashed && allowFlash)\r\n isFlashed = feature.elementId.lower === flashed.lower && feature.elementId.upper === flashed.upper;\r\n\r\n let newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\r\n newFlags = isHilited ? (newFlags | OvrFlags.Hilited) : (newFlags & ~OvrFlags.Hilited);\r\n if (pickExcludes) {\r\n newFlags = pickExcludes.hasPair(feature.elementId) ? (newFlags | OvrFlags.InvisibleDuringPick) : (newFlags & ~OvrFlags.InvisibleDuringPick);\r\n }\r\n\r\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\r\n if (OvrFlags.None !== newFlags) {\r\n this._anyOverridden = true;\r\n this._anyHilited = this._anyHilited || isHilited || OvrFlags.None !== (newFlags & OvrFlags.Emphasized);\r\n }\r\n }\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n private updateFlashed(data: Texture2DDataUpdater, map: RenderFeatureTable, pickExcludes: Id64.Uint32Set | undefined, flashed?: Id64.Uint32Pair): void {\r\n if (true === this._options.noFlash && !pickExcludes)\r\n return;\r\n\r\n this._anyOverridden = false;\r\n const elemId = { lower: 0, upper: 0 };\r\n for (let i = 0; i < map.numFeatures; i++) {\r\n const dataIndex = i * 4 * 3;\r\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\r\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\r\n // If it's invisible, none of the other flags matter and we can't flash it.\r\n this._anyOverridden = true;\r\n continue;\r\n }\r\n\r\n let isFlashed = false;\r\n let thisElemId: Id64.Uint32Pair | undefined;\r\n if (flashed && !this._options.noFlash) {\r\n thisElemId = map.getElementIdPair(i, elemId);\r\n isFlashed = thisElemId.lower === flashed.lower && thisElemId.upper === flashed.upper;\r\n }\r\n\r\n let newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\r\n if (pickExcludes) {\r\n if (!thisElemId) {\r\n thisElemId = map.getElementIdPair(i, elemId);\r\n }\r\n\r\n newFlags = pickExcludes.hasPair(thisElemId) ? (newFlags | OvrFlags.InvisibleDuringPick) : (newFlags & ~OvrFlags.InvisibleDuringPick);\r\n }\r\n\r\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\r\n if (OvrFlags.None !== newFlags)\r\n this._anyOverridden = true;\r\n }\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n private constructor(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\r\n this.target = target;\r\n this._options = options;\r\n this._cleanup = cleanup;\r\n }\r\n\r\n public static createFromTarget(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\r\n return new FeatureOverrides(target, options, cleanup);\r\n }\r\n\r\n public get isDisposed(): boolean { return undefined === this._lut; }\r\n\r\n public dispose() {\r\n this._lut = dispose(this._lut);\r\n if (this._cleanup) {\r\n this._cleanup();\r\n this._cleanup = undefined;\r\n }\r\n }\r\n\r\n public initFromMap(map: RenderFeatureTable) {\r\n const nFeatures = map.numFeatures;\r\n assert(0 < nFeatures);\r\n\r\n this._lut = dispose(this._lut);\r\n\r\n const ovrs: FeatureSymbology.Overrides = this.target.currentFeatureSymbologyOverrides;\r\n this._mostRecentSymbologyOverrides = ovrs;\r\n const hilite = this.target.hilites;\r\n this._lut = this._initialize(map, ovrs, this.target.pickExclusions, hilite, this.target.flashed);\r\n this._lastFlashId = Id64.invalid;\r\n this._hiliteSyncObserver = {};\r\n this._pickExclusionsSyncObserver = {};\r\n }\r\n\r\n public update(features: RenderFeatureTable) {\r\n let ovrs: FeatureSymbology.Overrides | undefined = this.target.currentFeatureSymbologyOverrides;\r\n const ovrsUpdated = ovrs !== this._mostRecentSymbologyOverrides;\r\n if (ovrsUpdated)\r\n this._mostRecentSymbologyOverrides = ovrs;\r\n else\r\n ovrs = undefined;\r\n\r\n const flashedId = this.target.flashedId;\r\n\r\n const hilite = this.target.hilites;\r\n const hiliteUpdated = !sync(this.target.hiliteSyncTarget, this._hiliteSyncObserver);\r\n const pickExcludesUpdated = !sync(this.target.pickExclusionsSyncTarget, this._pickExclusionsSyncObserver);\r\n\r\n if (ovrsUpdated || hiliteUpdated || flashedId !== this._lastFlashId || pickExcludesUpdated) {\r\n // _lut can be undefined if context was lost, (gl.createTexture returns null)\r\n if (this._lut) {\r\n this._update(\r\n features,\r\n this._lut,\r\n undefined !== ovrs || pickExcludesUpdated ? this.target.pickExclusions : undefined,\r\n this.target.flashed,\r\n undefined !== ovrs || hiliteUpdated ? hilite : undefined, ovrs,\r\n );\r\n }\r\n\r\n this._lastFlashId = flashedId;\r\n }\r\n }\r\n\r\n public bindLUTParams(uniform: UniformHandle): void {\r\n uniform.setUniform2fv(this._lutParams);\r\n }\r\n\r\n public bindLUT(uniform: UniformHandle): void {\r\n if (this._lut)\r\n this._lut.bindSampler(uniform, TextureUnit.FeatureSymbology);\r\n }\r\n\r\n public bindUniformSymbologyFlags(uniform: UniformHandle): void {\r\n uniform.setUniform1f(this._uniformSymbologyFlags);\r\n }\r\n}\r\n"]}
@@ -168,7 +168,8 @@ export declare namespace GL {
168
168
  CompileStatus
169
169
  }
170
170
  enum ProgramParameter {
171
- LinkStatus
171
+ LinkStatus,
172
+ ActiveUniforms
172
173
  }
173
174
  enum PrimitiveType {
174
175
  Points,
@@ -1 +1 @@
1
- {"version":3,"file":"GL.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/GL.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GL.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/GL.ts"],"names":[],"mappings":"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"}
@@ -206,6 +206,7 @@ var GL;
206
206
  let ProgramParameter;
207
207
  (function (ProgramParameter) {
208
208
  ProgramParameter[ProgramParameter["LinkStatus"] = WebGLRenderingContext.LINK_STATUS] = "LinkStatus";
209
+ ProgramParameter[ProgramParameter["ActiveUniforms"] = WebGLRenderingContext.ACTIVE_UNIFORMS] = "ActiveUniforms";
209
210
  })(ProgramParameter = GL.ProgramParameter || (GL.ProgramParameter = {}));
210
211
  let PrimitiveType;
211
212
  (function (PrimitiveType) {