@itwin/core-frontend 4.10.0-dev.2 → 4.10.0-dev.22

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 (546) 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/ElementLocateManager.d.ts +7 -1
  9. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  10. package/lib/cjs/ElementLocateManager.js +34 -10
  11. package/lib/cjs/ElementLocateManager.js.map +1 -1
  12. package/lib/cjs/HitDetail.d.ts +4 -0
  13. package/lib/cjs/HitDetail.d.ts.map +1 -1
  14. package/lib/cjs/HitDetail.js +3 -0
  15. package/lib/cjs/HitDetail.js.map +1 -1
  16. package/lib/cjs/IModelConnection.d.ts +1 -0
  17. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  18. package/lib/cjs/IModelConnection.js +2 -1
  19. package/lib/cjs/IModelConnection.js.map +1 -1
  20. package/lib/cjs/NoRenderApp.d.ts +1 -0
  21. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  22. package/lib/cjs/NoRenderApp.js +1 -0
  23. package/lib/cjs/NoRenderApp.js.map +1 -1
  24. package/lib/cjs/SheetViewState.d.ts +0 -1
  25. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  26. package/lib/cjs/SheetViewState.js +0 -1
  27. package/lib/cjs/SheetViewState.js.map +1 -1
  28. package/lib/cjs/Viewport.d.ts +25 -1
  29. package/lib/cjs/Viewport.d.ts.map +1 -1
  30. package/lib/cjs/Viewport.js +20 -12
  31. package/lib/cjs/Viewport.js.map +1 -1
  32. package/lib/cjs/common/WorkerProxy.d.ts +8 -4
  33. package/lib/cjs/common/WorkerProxy.d.ts.map +1 -1
  34. package/lib/cjs/common/WorkerProxy.js.map +1 -1
  35. package/lib/cjs/common/imdl/ImdlModel.d.ts +3 -8
  36. package/lib/cjs/common/imdl/ImdlModel.d.ts.map +1 -1
  37. package/lib/cjs/common/imdl/ImdlModel.js.map +1 -1
  38. package/lib/cjs/common/internal/Symbols.d.ts +7 -0
  39. package/lib/cjs/common/internal/Symbols.d.ts.map +1 -1
  40. package/lib/cjs/common/internal/Symbols.js +8 -1
  41. package/lib/cjs/common/internal/Symbols.js.map +1 -1
  42. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts +15 -0
  43. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -0
  44. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js +95 -0
  45. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -0
  46. package/lib/cjs/common/internal/render/LineCode.d.ts +9 -0
  47. package/lib/cjs/common/internal/render/LineCode.d.ts.map +1 -0
  48. package/lib/cjs/common/internal/render/LineCode.js +31 -0
  49. package/lib/cjs/common/internal/render/LineCode.js.map +1 -0
  50. package/lib/cjs/common/internal/render/OvrFlags.d.ts +27 -0
  51. package/lib/cjs/common/internal/render/OvrFlags.d.ts.map +1 -0
  52. package/lib/cjs/common/internal/render/OvrFlags.js +10 -0
  53. package/lib/cjs/common/internal/render/OvrFlags.js.map +1 -0
  54. package/lib/cjs/common/internal/render/VertexTable.d.ts.map +1 -1
  55. package/lib/cjs/common/internal/render/VertexTable.js +3 -5
  56. package/lib/cjs/common/internal/render/VertexTable.js.map +1 -1
  57. package/lib/cjs/common/render/InstancedGraphicParams.d.ts +25 -1
  58. package/lib/cjs/common/render/InstancedGraphicParams.d.ts.map +1 -1
  59. package/lib/cjs/common/render/InstancedGraphicParams.js +59 -0
  60. package/lib/cjs/common/render/InstancedGraphicParams.js.map +1 -1
  61. package/lib/cjs/common/render/RenderInstancesParams.d.ts +76 -0
  62. package/lib/cjs/common/render/RenderInstancesParams.d.ts.map +1 -0
  63. package/lib/cjs/common/render/RenderInstancesParams.js +33 -0
  64. package/lib/cjs/common/render/RenderInstancesParams.js.map +1 -0
  65. package/lib/cjs/common.d.ts +1 -0
  66. package/lib/cjs/common.d.ts.map +1 -1
  67. package/lib/cjs/common.js +1 -0
  68. package/lib/cjs/common.js.map +1 -1
  69. package/lib/cjs/core-frontend.d.ts +1 -0
  70. package/lib/cjs/core-frontend.d.ts.map +1 -1
  71. package/lib/cjs/core-frontend.js +1 -0
  72. package/lib/cjs/core-frontend.js.map +1 -1
  73. package/lib/cjs/internal/render/PrimitiveBuilder.d.ts +4 -1
  74. package/lib/cjs/internal/render/PrimitiveBuilder.d.ts.map +1 -1
  75. package/lib/cjs/internal/render/PrimitiveBuilder.js +82 -35
  76. package/lib/cjs/internal/render/PrimitiveBuilder.js.map +1 -1
  77. package/lib/cjs/internal/render/RenderGeometry.d.ts +20 -0
  78. package/lib/cjs/internal/render/RenderGeometry.d.ts.map +1 -0
  79. package/lib/cjs/internal/render/RenderGeometry.js +10 -0
  80. package/lib/cjs/internal/render/RenderGeometry.js.map +1 -0
  81. package/lib/cjs/internal/render/RenderInstancesParamsImpl.d.ts +24 -0
  82. package/lib/cjs/internal/render/RenderInstancesParamsImpl.d.ts.map +1 -0
  83. package/lib/cjs/internal/render/RenderInstancesParamsImpl.js +69 -0
  84. package/lib/cjs/internal/render/RenderInstancesParamsImpl.js.map +1 -0
  85. package/lib/cjs/render/GraphicBranch.d.ts +10 -1
  86. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  87. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  88. package/lib/cjs/render/GraphicBuilder.d.ts +17 -3
  89. package/lib/cjs/render/GraphicBuilder.d.ts.map +1 -1
  90. package/lib/cjs/render/GraphicBuilder.js +7 -1
  91. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  92. package/lib/cjs/render/GraphicTemplate.d.ts +76 -0
  93. package/lib/cjs/render/GraphicTemplate.d.ts.map +1 -0
  94. package/lib/cjs/render/GraphicTemplate.js +41 -0
  95. package/lib/cjs/render/GraphicTemplate.js.map +1 -0
  96. package/lib/cjs/render/MockRender.d.ts +12 -2
  97. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  98. package/lib/cjs/render/MockRender.js +19 -5
  99. package/lib/cjs/render/MockRender.js.map +1 -1
  100. package/lib/cjs/render/Pixel.d.ts +6 -0
  101. package/lib/cjs/render/Pixel.d.ts.map +1 -1
  102. package/lib/cjs/render/Pixel.js +2 -0
  103. package/lib/cjs/render/Pixel.js.map +1 -1
  104. package/lib/cjs/render/RealityMeshGraphicParams.d.ts +1 -0
  105. package/lib/cjs/render/RealityMeshGraphicParams.d.ts.map +1 -1
  106. package/lib/cjs/render/RealityMeshGraphicParams.js.map +1 -1
  107. package/lib/cjs/render/RenderMemory.d.ts +2 -0
  108. package/lib/cjs/render/RenderMemory.d.ts.map +1 -1
  109. package/lib/cjs/render/RenderMemory.js +2 -0
  110. package/lib/cjs/render/RenderMemory.js.map +1 -1
  111. package/lib/cjs/render/RenderPlan.d.ts +2 -1
  112. package/lib/cjs/render/RenderPlan.d.ts.map +1 -1
  113. package/lib/cjs/render/RenderPlan.js +2 -0
  114. package/lib/cjs/render/RenderPlan.js.map +1 -1
  115. package/lib/cjs/render/RenderSystem.d.ts +59 -11
  116. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  117. package/lib/cjs/render/RenderSystem.js +44 -6
  118. package/lib/cjs/render/RenderSystem.js.map +1 -1
  119. package/lib/cjs/render/RenderTarget.d.ts +1 -1
  120. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  121. package/lib/cjs/render/RenderTarget.js.map +1 -1
  122. package/lib/cjs/render/webgl/BatchUniforms.d.ts +4 -0
  123. package/lib/cjs/render/webgl/BatchUniforms.d.ts.map +1 -1
  124. package/lib/cjs/render/webgl/BatchUniforms.js +18 -0
  125. package/lib/cjs/render/webgl/BatchUniforms.js.map +1 -1
  126. package/lib/cjs/render/webgl/BranchState.d.ts +7 -0
  127. package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
  128. package/lib/cjs/render/webgl/BranchState.js +4 -0
  129. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  130. package/lib/cjs/render/webgl/BranchUniforms.d.ts +1 -0
  131. package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
  132. package/lib/cjs/render/webgl/BranchUniforms.js +14 -1
  133. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  134. package/lib/cjs/render/webgl/ContourUniforms.d.ts +22 -0
  135. package/lib/cjs/render/webgl/ContourUniforms.d.ts.map +1 -0
  136. package/lib/cjs/render/webgl/ContourUniforms.js +98 -0
  137. package/lib/cjs/render/webgl/ContourUniforms.js.map +1 -0
  138. package/lib/cjs/render/webgl/Contours.d.ts +34 -0
  139. package/lib/cjs/render/webgl/Contours.d.ts.map +1 -0
  140. package/lib/cjs/render/webgl/Contours.js +127 -0
  141. package/lib/cjs/render/webgl/Contours.js.map +1 -0
  142. package/lib/cjs/render/webgl/EdgeSettings.d.ts +2 -1
  143. package/lib/cjs/render/webgl/EdgeSettings.d.ts.map +1 -1
  144. package/lib/cjs/render/webgl/EdgeSettings.js +1 -1
  145. package/lib/cjs/render/webgl/EdgeSettings.js.map +1 -1
  146. package/lib/cjs/render/webgl/FeatureOverrides.d.ts +2 -0
  147. package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
  148. package/lib/cjs/render/webgl/FeatureOverrides.js +83 -69
  149. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  150. package/lib/cjs/render/webgl/GL.d.ts +2 -1
  151. package/lib/cjs/render/webgl/GL.d.ts.map +1 -1
  152. package/lib/cjs/render/webgl/GL.js +1 -0
  153. package/lib/cjs/render/webgl/GL.js.map +1 -1
  154. package/lib/cjs/render/webgl/Graphic.d.ts +9 -0
  155. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  156. package/lib/cjs/render/webgl/Graphic.js +27 -0
  157. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  158. package/lib/cjs/render/webgl/InstancedGeometry.d.ts +40 -10
  159. package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
  160. package/lib/cjs/render/webgl/InstancedGeometry.js +99 -31
  161. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  162. package/lib/cjs/render/webgl/LineCode.d.ts.map +1 -1
  163. package/lib/cjs/render/webgl/LineCode.js +2 -14
  164. package/lib/cjs/render/webgl/LineCode.js.map +1 -1
  165. package/lib/cjs/render/webgl/Mesh.d.ts +9 -4
  166. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  167. package/lib/cjs/render/webgl/Mesh.js +18 -16
  168. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  169. package/lib/cjs/render/webgl/PointCloud.d.ts +5 -1
  170. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  171. package/lib/cjs/render/webgl/PointCloud.js +7 -2
  172. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  173. package/lib/cjs/render/webgl/PointString.d.ts +5 -1
  174. package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
  175. package/lib/cjs/render/webgl/PointString.js +8 -3
  176. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  177. package/lib/cjs/render/webgl/Polyline.d.ts +5 -1
  178. package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
  179. package/lib/cjs/render/webgl/Polyline.js +7 -2
  180. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  181. package/lib/cjs/render/webgl/Primitive.d.ts +1 -3
  182. package/lib/cjs/render/webgl/Primitive.d.ts.map +1 -1
  183. package/lib/cjs/render/webgl/Primitive.js +1 -6
  184. package/lib/cjs/render/webgl/Primitive.js.map +1 -1
  185. package/lib/cjs/render/webgl/RealityMesh.d.ts +5 -1
  186. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  187. package/lib/cjs/render/webgl/RealityMesh.js +7 -1
  188. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  189. package/lib/cjs/render/webgl/RenderFlags.d.ts +2 -19
  190. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  191. package/lib/cjs/render/webgl/RenderFlags.js +2 -0
  192. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  193. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  194. package/lib/cjs/render/webgl/SceneCompositor.js +12 -3
  195. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  196. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +15 -13
  197. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  198. package/lib/cjs/render/webgl/ShaderBuilder.js +18 -10
  199. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  200. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  201. package/lib/cjs/render/webgl/ShaderProgram.js +26 -0
  202. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  203. package/lib/cjs/render/webgl/System.d.ts +11 -5
  204. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  205. package/lib/cjs/render/webgl/System.js +81 -13
  206. package/lib/cjs/render/webgl/System.js.map +1 -1
  207. package/lib/cjs/render/webgl/Target.d.ts +6 -2
  208. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  209. package/lib/cjs/render/webgl/Target.js +24 -1
  210. package/lib/cjs/render/webgl/Target.js.map +1 -1
  211. package/lib/cjs/render/webgl/TargetUniforms.d.ts +2 -0
  212. package/lib/cjs/render/webgl/TargetUniforms.d.ts.map +1 -1
  213. package/lib/cjs/render/webgl/TargetUniforms.js +2 -0
  214. package/lib/cjs/render/webgl/TargetUniforms.js.map +1 -1
  215. package/lib/cjs/render/webgl/Texture.d.ts +2 -1
  216. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  217. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  218. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +1 -1
  219. package/lib/cjs/render/webgl/glsl/Atmosphere.js +1 -1
  220. package/lib/cjs/render/webgl/glsl/Blur.js +1 -1
  221. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +1 -1
  222. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +1 -1
  223. package/lib/cjs/render/webgl/glsl/Clipping.js +1 -1
  224. package/lib/cjs/render/webgl/glsl/Combine3Textures.js +1 -1
  225. package/lib/cjs/render/webgl/glsl/CombineTextures.js +1 -1
  226. package/lib/cjs/render/webgl/glsl/Composite.js +1 -1
  227. package/lib/cjs/render/webgl/glsl/Contours.d.ts +4 -0
  228. package/lib/cjs/render/webgl/glsl/Contours.d.ts.map +1 -0
  229. package/lib/cjs/render/webgl/glsl/Contours.js +138 -0
  230. package/lib/cjs/render/webgl/glsl/Contours.js.map +1 -0
  231. package/lib/cjs/render/webgl/glsl/CopyColor.js +1 -1
  232. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +1 -1
  233. package/lib/cjs/render/webgl/glsl/CopyStencil.js +5 -5
  234. package/lib/cjs/render/webgl/glsl/EDL.js +4 -4
  235. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +1 -1
  236. package/lib/cjs/render/webgl/glsl/Edge.js +1 -1
  237. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts +2 -1
  238. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  239. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +28 -15
  240. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  241. package/lib/cjs/render/webgl/glsl/Fragment.js +9 -9
  242. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  243. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +4 -4
  244. package/lib/cjs/render/webgl/glsl/PointCloud.js +1 -1
  245. package/lib/cjs/render/webgl/glsl/RealityMesh.js +3 -3
  246. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
  247. package/lib/cjs/render/webgl/glsl/SkyBox.js +1 -1
  248. package/lib/cjs/render/webgl/glsl/SkySphere.js +1 -1
  249. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +1 -1
  250. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  251. package/lib/cjs/render/webgl/glsl/Surface.js +5 -3
  252. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  253. package/lib/cjs/render/webgl/glsl/Translucency.js +1 -1
  254. package/lib/cjs/render/webgl/glsl/Wiremesh.js +1 -1
  255. package/lib/cjs/tile/GltfReader.d.ts +27 -7
  256. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  257. package/lib/cjs/tile/GltfReader.js +84 -68
  258. package/lib/cjs/tile/GltfReader.js.map +1 -1
  259. package/lib/cjs/tile/ImdlGraphicsCreator.d.ts +4 -1
  260. package/lib/cjs/tile/ImdlGraphicsCreator.d.ts.map +1 -1
  261. package/lib/cjs/tile/ImdlGraphicsCreator.js +32 -22
  262. package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -1
  263. package/lib/cjs/tile/TileDrawArgs.d.ts +4 -0
  264. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  265. package/lib/cjs/tile/TileDrawArgs.js +2 -0
  266. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  267. package/lib/cjs/tile/TileTreeReference.d.ts +2 -0
  268. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  269. package/lib/cjs/tile/TileTreeReference.js +3 -0
  270. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  271. package/lib/cjs/tile/map/MapTile.js +1 -1
  272. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  273. package/lib/esm/AccuSnap.d.ts.map +1 -1
  274. package/lib/esm/AccuSnap.js +9 -5
  275. package/lib/esm/AccuSnap.js.map +1 -1
  276. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  277. package/lib/esm/DisplayStyleState.js +5 -1
  278. package/lib/esm/DisplayStyleState.js.map +1 -1
  279. package/lib/esm/ElementLocateManager.d.ts +7 -1
  280. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  281. package/lib/esm/ElementLocateManager.js +34 -10
  282. package/lib/esm/ElementLocateManager.js.map +1 -1
  283. package/lib/esm/HitDetail.d.ts +4 -0
  284. package/lib/esm/HitDetail.d.ts.map +1 -1
  285. package/lib/esm/HitDetail.js +3 -0
  286. package/lib/esm/HitDetail.js.map +1 -1
  287. package/lib/esm/IModelConnection.d.ts +1 -0
  288. package/lib/esm/IModelConnection.d.ts.map +1 -1
  289. package/lib/esm/IModelConnection.js +2 -1
  290. package/lib/esm/IModelConnection.js.map +1 -1
  291. package/lib/esm/NoRenderApp.d.ts +1 -0
  292. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  293. package/lib/esm/NoRenderApp.js +1 -0
  294. package/lib/esm/NoRenderApp.js.map +1 -1
  295. package/lib/esm/SheetViewState.d.ts +0 -1
  296. package/lib/esm/SheetViewState.d.ts.map +1 -1
  297. package/lib/esm/SheetViewState.js +0 -1
  298. package/lib/esm/SheetViewState.js.map +1 -1
  299. package/lib/esm/Viewport.d.ts +25 -1
  300. package/lib/esm/Viewport.d.ts.map +1 -1
  301. package/lib/esm/Viewport.js +20 -12
  302. package/lib/esm/Viewport.js.map +1 -1
  303. package/lib/esm/common/WorkerProxy.d.ts +8 -4
  304. package/lib/esm/common/WorkerProxy.d.ts.map +1 -1
  305. package/lib/esm/common/WorkerProxy.js.map +1 -1
  306. package/lib/esm/common/imdl/ImdlModel.d.ts +3 -8
  307. package/lib/esm/common/imdl/ImdlModel.d.ts.map +1 -1
  308. package/lib/esm/common/imdl/ImdlModel.js.map +1 -1
  309. package/lib/esm/common/internal/Symbols.d.ts +7 -0
  310. package/lib/esm/common/internal/Symbols.d.ts.map +1 -1
  311. package/lib/esm/common/internal/Symbols.js +7 -0
  312. package/lib/esm/common/internal/Symbols.js.map +1 -1
  313. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts +15 -0
  314. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -0
  315. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js +91 -0
  316. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -0
  317. package/lib/esm/common/internal/render/LineCode.d.ts +9 -0
  318. package/lib/esm/common/internal/render/LineCode.d.ts.map +1 -0
  319. package/lib/esm/common/internal/render/LineCode.js +27 -0
  320. package/lib/esm/common/internal/render/LineCode.js.map +1 -0
  321. package/lib/esm/common/internal/render/OvrFlags.d.ts +27 -0
  322. package/lib/esm/common/internal/render/OvrFlags.d.ts.map +1 -0
  323. package/lib/esm/common/internal/render/OvrFlags.js +9 -0
  324. package/lib/esm/common/internal/render/OvrFlags.js.map +1 -0
  325. package/lib/esm/common/internal/render/VertexTable.d.ts.map +1 -1
  326. package/lib/esm/common/internal/render/VertexTable.js +3 -5
  327. package/lib/esm/common/internal/render/VertexTable.js.map +1 -1
  328. package/lib/esm/common/render/InstancedGraphicParams.d.ts +25 -1
  329. package/lib/esm/common/render/InstancedGraphicParams.d.ts.map +1 -1
  330. package/lib/esm/common/render/InstancedGraphicParams.js +58 -1
  331. package/lib/esm/common/render/InstancedGraphicParams.js.map +1 -1
  332. package/lib/esm/common/render/RenderInstancesParams.d.ts +76 -0
  333. package/lib/esm/common/render/RenderInstancesParams.d.ts.map +1 -0
  334. package/lib/esm/common/render/RenderInstancesParams.js +30 -0
  335. package/lib/esm/common/render/RenderInstancesParams.js.map +1 -0
  336. package/lib/esm/common.d.ts +1 -0
  337. package/lib/esm/common.d.ts.map +1 -1
  338. package/lib/esm/common.js +1 -0
  339. package/lib/esm/common.js.map +1 -1
  340. package/lib/esm/core-frontend.d.ts +1 -0
  341. package/lib/esm/core-frontend.d.ts.map +1 -1
  342. package/lib/esm/core-frontend.js +1 -0
  343. package/lib/esm/core-frontend.js.map +1 -1
  344. package/lib/esm/internal/render/PrimitiveBuilder.d.ts +4 -1
  345. package/lib/esm/internal/render/PrimitiveBuilder.d.ts.map +1 -1
  346. package/lib/esm/internal/render/PrimitiveBuilder.js +82 -35
  347. package/lib/esm/internal/render/PrimitiveBuilder.js.map +1 -1
  348. package/lib/esm/internal/render/RenderGeometry.d.ts +20 -0
  349. package/lib/esm/internal/render/RenderGeometry.d.ts.map +1 -0
  350. package/lib/esm/internal/render/RenderGeometry.js +9 -0
  351. package/lib/esm/internal/render/RenderGeometry.js.map +1 -0
  352. package/lib/esm/internal/render/RenderInstancesParamsImpl.d.ts +24 -0
  353. package/lib/esm/internal/render/RenderInstancesParamsImpl.d.ts.map +1 -0
  354. package/lib/esm/internal/render/RenderInstancesParamsImpl.js +64 -0
  355. package/lib/esm/internal/render/RenderInstancesParamsImpl.js.map +1 -0
  356. package/lib/esm/render/GraphicBranch.d.ts +10 -1
  357. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  358. package/lib/esm/render/GraphicBranch.js.map +1 -1
  359. package/lib/esm/render/GraphicBuilder.d.ts +17 -3
  360. package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
  361. package/lib/esm/render/GraphicBuilder.js +7 -1
  362. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  363. package/lib/esm/render/GraphicTemplate.d.ts +76 -0
  364. package/lib/esm/render/GraphicTemplate.d.ts.map +1 -0
  365. package/lib/esm/render/GraphicTemplate.js +37 -0
  366. package/lib/esm/render/GraphicTemplate.js.map +1 -0
  367. package/lib/esm/render/MockRender.d.ts +12 -2
  368. package/lib/esm/render/MockRender.d.ts.map +1 -1
  369. package/lib/esm/render/MockRender.js +19 -5
  370. package/lib/esm/render/MockRender.js.map +1 -1
  371. package/lib/esm/render/Pixel.d.ts +6 -0
  372. package/lib/esm/render/Pixel.d.ts.map +1 -1
  373. package/lib/esm/render/Pixel.js +2 -0
  374. package/lib/esm/render/Pixel.js.map +1 -1
  375. package/lib/esm/render/RealityMeshGraphicParams.d.ts +1 -0
  376. package/lib/esm/render/RealityMeshGraphicParams.d.ts.map +1 -1
  377. package/lib/esm/render/RealityMeshGraphicParams.js.map +1 -1
  378. package/lib/esm/render/RenderMemory.d.ts +2 -0
  379. package/lib/esm/render/RenderMemory.d.ts.map +1 -1
  380. package/lib/esm/render/RenderMemory.js +2 -0
  381. package/lib/esm/render/RenderMemory.js.map +1 -1
  382. package/lib/esm/render/RenderPlan.d.ts +2 -1
  383. package/lib/esm/render/RenderPlan.d.ts.map +1 -1
  384. package/lib/esm/render/RenderPlan.js +2 -0
  385. package/lib/esm/render/RenderPlan.js.map +1 -1
  386. package/lib/esm/render/RenderSystem.d.ts +59 -11
  387. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  388. package/lib/esm/render/RenderSystem.js +46 -8
  389. package/lib/esm/render/RenderSystem.js.map +1 -1
  390. package/lib/esm/render/RenderTarget.d.ts +1 -1
  391. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  392. package/lib/esm/render/RenderTarget.js.map +1 -1
  393. package/lib/esm/render/webgl/BatchUniforms.d.ts +4 -0
  394. package/lib/esm/render/webgl/BatchUniforms.d.ts.map +1 -1
  395. package/lib/esm/render/webgl/BatchUniforms.js +18 -0
  396. package/lib/esm/render/webgl/BatchUniforms.js.map +1 -1
  397. package/lib/esm/render/webgl/BranchState.d.ts +7 -0
  398. package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
  399. package/lib/esm/render/webgl/BranchState.js +4 -0
  400. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  401. package/lib/esm/render/webgl/BranchUniforms.d.ts +1 -0
  402. package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
  403. package/lib/esm/render/webgl/BranchUniforms.js +14 -1
  404. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  405. package/lib/esm/render/webgl/ContourUniforms.d.ts +22 -0
  406. package/lib/esm/render/webgl/ContourUniforms.d.ts.map +1 -0
  407. package/lib/esm/render/webgl/ContourUniforms.js +94 -0
  408. package/lib/esm/render/webgl/ContourUniforms.js.map +1 -0
  409. package/lib/esm/render/webgl/Contours.d.ts +34 -0
  410. package/lib/esm/render/webgl/Contours.d.ts.map +1 -0
  411. package/lib/esm/render/webgl/Contours.js +123 -0
  412. package/lib/esm/render/webgl/Contours.js.map +1 -0
  413. package/lib/esm/render/webgl/EdgeSettings.d.ts +2 -1
  414. package/lib/esm/render/webgl/EdgeSettings.d.ts.map +1 -1
  415. package/lib/esm/render/webgl/EdgeSettings.js +1 -1
  416. package/lib/esm/render/webgl/EdgeSettings.js.map +1 -1
  417. package/lib/esm/render/webgl/FeatureOverrides.d.ts +2 -0
  418. package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
  419. package/lib/esm/render/webgl/FeatureOverrides.js +83 -69
  420. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  421. package/lib/esm/render/webgl/GL.d.ts +2 -1
  422. package/lib/esm/render/webgl/GL.d.ts.map +1 -1
  423. package/lib/esm/render/webgl/GL.js +1 -0
  424. package/lib/esm/render/webgl/GL.js.map +1 -1
  425. package/lib/esm/render/webgl/Graphic.d.ts +9 -0
  426. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  427. package/lib/esm/render/webgl/Graphic.js +27 -0
  428. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  429. package/lib/esm/render/webgl/InstancedGeometry.d.ts +40 -10
  430. package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
  431. package/lib/esm/render/webgl/InstancedGeometry.js +97 -30
  432. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  433. package/lib/esm/render/webgl/LineCode.d.ts.map +1 -1
  434. package/lib/esm/render/webgl/LineCode.js +2 -14
  435. package/lib/esm/render/webgl/LineCode.js.map +1 -1
  436. package/lib/esm/render/webgl/Mesh.d.ts +9 -4
  437. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  438. package/lib/esm/render/webgl/Mesh.js +19 -17
  439. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  440. package/lib/esm/render/webgl/PointCloud.d.ts +5 -1
  441. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  442. package/lib/esm/render/webgl/PointCloud.js +7 -2
  443. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  444. package/lib/esm/render/webgl/PointString.d.ts +5 -1
  445. package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
  446. package/lib/esm/render/webgl/PointString.js +8 -3
  447. package/lib/esm/render/webgl/PointString.js.map +1 -1
  448. package/lib/esm/render/webgl/Polyline.d.ts +5 -1
  449. package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
  450. package/lib/esm/render/webgl/Polyline.js +7 -2
  451. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  452. package/lib/esm/render/webgl/Primitive.d.ts +1 -3
  453. package/lib/esm/render/webgl/Primitive.d.ts.map +1 -1
  454. package/lib/esm/render/webgl/Primitive.js +2 -7
  455. package/lib/esm/render/webgl/Primitive.js.map +1 -1
  456. package/lib/esm/render/webgl/RealityMesh.d.ts +5 -1
  457. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  458. package/lib/esm/render/webgl/RealityMesh.js +7 -1
  459. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  460. package/lib/esm/render/webgl/RenderFlags.d.ts +2 -19
  461. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  462. package/lib/esm/render/webgl/RenderFlags.js +2 -0
  463. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  464. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  465. package/lib/esm/render/webgl/SceneCompositor.js +12 -3
  466. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  467. package/lib/esm/render/webgl/ShaderBuilder.d.ts +15 -13
  468. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  469. package/lib/esm/render/webgl/ShaderBuilder.js +18 -10
  470. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  471. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  472. package/lib/esm/render/webgl/ShaderProgram.js +26 -0
  473. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  474. package/lib/esm/render/webgl/System.d.ts +11 -5
  475. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  476. package/lib/esm/render/webgl/System.js +82 -14
  477. package/lib/esm/render/webgl/System.js.map +1 -1
  478. package/lib/esm/render/webgl/Target.d.ts +6 -2
  479. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  480. package/lib/esm/render/webgl/Target.js +24 -1
  481. package/lib/esm/render/webgl/Target.js.map +1 -1
  482. package/lib/esm/render/webgl/TargetUniforms.d.ts +2 -0
  483. package/lib/esm/render/webgl/TargetUniforms.d.ts.map +1 -1
  484. package/lib/esm/render/webgl/TargetUniforms.js +2 -0
  485. package/lib/esm/render/webgl/TargetUniforms.js.map +1 -1
  486. package/lib/esm/render/webgl/Texture.d.ts +2 -1
  487. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  488. package/lib/esm/render/webgl/Texture.js.map +1 -1
  489. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +1 -1
  490. package/lib/esm/render/webgl/glsl/Atmosphere.js +1 -1
  491. package/lib/esm/render/webgl/glsl/Blur.js +1 -1
  492. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +1 -1
  493. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +1 -1
  494. package/lib/esm/render/webgl/glsl/Clipping.js +1 -1
  495. package/lib/esm/render/webgl/glsl/Combine3Textures.js +1 -1
  496. package/lib/esm/render/webgl/glsl/CombineTextures.js +1 -1
  497. package/lib/esm/render/webgl/glsl/Composite.js +1 -1
  498. package/lib/esm/render/webgl/glsl/Contours.d.ts +4 -0
  499. package/lib/esm/render/webgl/glsl/Contours.d.ts.map +1 -0
  500. package/lib/esm/render/webgl/glsl/Contours.js +134 -0
  501. package/lib/esm/render/webgl/glsl/Contours.js.map +1 -0
  502. package/lib/esm/render/webgl/glsl/CopyColor.js +1 -1
  503. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +1 -1
  504. package/lib/esm/render/webgl/glsl/CopyStencil.js +5 -5
  505. package/lib/esm/render/webgl/glsl/EDL.js +4 -4
  506. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +1 -1
  507. package/lib/esm/render/webgl/glsl/Edge.js +1 -1
  508. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts +2 -1
  509. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  510. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +27 -15
  511. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  512. package/lib/esm/render/webgl/glsl/Fragment.js +9 -9
  513. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  514. package/lib/esm/render/webgl/glsl/PlanarClassification.js +4 -4
  515. package/lib/esm/render/webgl/glsl/PointCloud.js +1 -1
  516. package/lib/esm/render/webgl/glsl/RealityMesh.js +3 -3
  517. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
  518. package/lib/esm/render/webgl/glsl/SkyBox.js +1 -1
  519. package/lib/esm/render/webgl/glsl/SkySphere.js +1 -1
  520. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +1 -1
  521. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  522. package/lib/esm/render/webgl/glsl/Surface.js +5 -3
  523. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  524. package/lib/esm/render/webgl/glsl/Translucency.js +1 -1
  525. package/lib/esm/render/webgl/glsl/Wiremesh.js +1 -1
  526. package/lib/esm/tile/GltfReader.d.ts +27 -7
  527. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  528. package/lib/esm/tile/GltfReader.js +82 -67
  529. package/lib/esm/tile/GltfReader.js.map +1 -1
  530. package/lib/esm/tile/ImdlGraphicsCreator.d.ts +4 -1
  531. package/lib/esm/tile/ImdlGraphicsCreator.d.ts.map +1 -1
  532. package/lib/esm/tile/ImdlGraphicsCreator.js +31 -22
  533. package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -1
  534. package/lib/esm/tile/TileDrawArgs.d.ts +4 -0
  535. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  536. package/lib/esm/tile/TileDrawArgs.js +2 -0
  537. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  538. package/lib/esm/tile/TileTreeReference.d.ts +2 -0
  539. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  540. package/lib/esm/tile/TileTreeReference.js +3 -0
  541. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  542. package/lib/esm/tile/map/MapTile.js +1 -1
  543. package/lib/esm/tile/map/MapTile.js.map +1 -1
  544. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  545. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  546. package/package.json +18 -18
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addApplyContours = void 0;
4
+ /*---------------------------------------------------------------------------------------------
5
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
+ * See LICENSE.md in the project root for license terms and full copyright notice.
7
+ *--------------------------------------------------------------------------------------------*/
8
+ /** @packageDocumentation
9
+ * @module WebGL
10
+ */
11
+ const core_common_1 = require("@itwin/core-common");
12
+ const RenderFlags_1 = require("../RenderFlags");
13
+ const FeatureSymbology_1 = require("./FeatureSymbology");
14
+ const Vertex_1 = require("./Vertex");
15
+ const computeContourNdx = `
16
+ if (u_contourLUTWidth == 0u)
17
+ return 15.0;
18
+ uint lutIndex = uint(getFeatureIndex());
19
+ bool odd = bool(lutIndex & 1u);
20
+ lutIndex /= 2u;
21
+ uint byteSel = lutIndex & 0x3u;
22
+ lutIndex /= 4u;
23
+ ivec2 coords = ivec2(lutIndex % u_contourLUTWidth, lutIndex / u_contourLUTWidth);
24
+ uvec4 contourNdx4 = uvec4(texelFetch(u_contourLUT, coords, 0) * 255.0 + 0.5);
25
+ uvec2 contourNdx2 = bool(byteSel & 2u) ? contourNdx4.ba : contourNdx4.rg;
26
+ uint contourNdx = bool(byteSel & 1u) ? contourNdx2.g : contourNdx2.r;
27
+ return float(odd ? contourNdx >> 4u : contourNdx & 0xFu);
28
+ `;
29
+ const unpack2BytesVec4 = `
30
+ vec4 unpack2BytesVec4(vec4 f, bool upper) {
31
+ f = floor(f + 0.5);
32
+ vec4 outUpper = floor(f / 256.0);
33
+ vec4 outLower = floor(f - outUpper * 256.0);
34
+ return upper ? outUpper : outLower;
35
+ }
36
+ `;
37
+ const unpackAndNormalize2BytesVec4 = `
38
+ vec4 unpackAndNormalize2BytesVec4(vec4 f, bool upper) {
39
+ return unpack2BytesVec4(f, upper) / 255.0;
40
+ }
41
+ `;
42
+ const applyContours = `
43
+ int contourNdx = int(v_contourNdx + 0.5);
44
+ if (contourNdx > 14) // 15 => no contours
45
+ return baseColor;
46
+
47
+ const int maxDefs = ${core_common_1.ContourDisplay.maxContourGroups}; // max number of contour definitions allowed, have to change index arrays if this changes
48
+ int contourNdxC = clamp(contourNdx, 0, maxDefs - 1);
49
+
50
+ bool even = (contourNdxC & 1) == 0;
51
+ vec4 rgbfp = u_contourDefs[even ? contourNdxC * 3 / 2 : (contourNdxC - 1) * 3 / 2 + 2];
52
+ vec4 intervalsPair = u_contourDefs[(contourNdxC / 2) * 3 + 1];
53
+ // intervals.r => minor interval distance, intervals.g => major index count
54
+ vec2 intervals = even ? intervalsPair.rg : intervalsPair.ba;
55
+
56
+ float coord = v_height / intervals.r;
57
+ // determine if this is in the vicinity of a major contour line (1/2 an interval either way, which is one limit of drawing width)
58
+ bool maj = (fract((abs(coord) + 0.5) / intervals.g) < (1.0 / intervals.g));
59
+ vec4 rgbf = unpackAndNormalize2BytesVec4(rgbfp, maj);
60
+ // rgbf.a => (4-bit linecode / 4-bit weight) maj/min, where the 4-bit weight is a 3-bit weight value with one fraction bit and a 1.5 offset.
61
+ // This gives a weight range of 1.5 to 9 in 0.5 increments.
62
+ // NB: the showGeometry bit flag is stuck in at bit 16 of this, so the major line code has an extra bit in it that needs to be masked out
63
+ int lineCodeWt = int((rgbf.a * 255.0) + 0.5);
64
+ // first * 0.5 is for fractional part of width, then have to add 1.0 for offset, then another 1.0 for actual width bias
65
+ float lineRadius = (float(lineCodeWt & 0xf) * 0.5 + 2.0) * 0.5;
66
+
67
+ // abs(fract(coord - 0.5) - 0.5) will produce 0.0 at the contour line, and 0.5 at the mid-point between contour lines
68
+ // fwidth(coord) is sum of absolute diffs in coord in adjacent pixels
69
+ float line = abs(fract(coord - 0.5) - 0.5) / fwidth(coord);
70
+ // If line is 0 (like at contour line), contourAlpha = lineRadius, so will use draw in contour color
71
+ // If line >= lineRadius, contourAlpha = 0, so won't show contour
72
+ float contourAlpha = lineRadius - min(line, lineRadius);
73
+
74
+ // figure out which direction line is going, to know which screen pattern offset to use
75
+ float dx = dFdx(contourAlpha);
76
+ float dy = dFdy(contourAlpha);
77
+
78
+ const float patLength = 32.0;
79
+ uint patterns[10] = uint[](0xffffffffu, 0x80808080u, 0xf8f8f8f8u, 0xffe0ffe0u, 0xfe10fe10u, 0xe0e0e0e0u, 0xf888f888u, 0xff18ff18u, 0xccccccccu, 0x00000001u);
80
+
81
+ float offset = trunc((abs(dx) > abs(dy)) ? gl_FragCoord.y : gl_FragCoord.x);
82
+ offset = mod(offset, patLength);
83
+ uint msk = 1u << uint(offset);
84
+ contourAlpha *= (patterns[(lineCodeWt / 16) & 0xf] & msk) > 0u ? 1.0 : 0.0;
85
+ contourAlpha = min(contourAlpha, 1.0);
86
+ if (rgbfp.a / 65536.0 < 0.5) { // showGeometry == 0
87
+ if (contourAlpha < 0.5)
88
+ discard;
89
+ return vec4(rgbf.rgb, 1.0);
90
+ }
91
+ // set contour opaque even if base color is transparent
92
+ float alpha = contourAlpha >= 0.5 ? 1.0 : baseColor.a;
93
+ return vec4(mix(baseColor.rgb, rgbf.rgb, contourAlpha), alpha);
94
+ `;
95
+ /** @internal */
96
+ function addApplyContours(builder) {
97
+ const modelPos = builder.vert.usesInstancedGeometry ? "(g_instancedRtcMatrix * rawPosition)" : "rawPosition";
98
+ const computeWorldHeight = `
99
+ float computeWorldHeight(vec4 rawPosition) {
100
+ float height = (u_modelToWorldC * ${modelPos}).z;
101
+ // TODO: apply ECEF correction to height
102
+ return height;
103
+ }
104
+ `;
105
+ (0, FeatureSymbology_1.addFeatureIndex)(builder.vert);
106
+ builder.addFunctionComputedVarying("v_contourNdx", 2 /* VariableType.Float */, "computeContourNdx", computeContourNdx);
107
+ builder.addFunctionComputedVaryingWithArgs("v_height", 2 /* VariableType.Float */, "computeWorldHeight(rawPosition)", computeWorldHeight);
108
+ if (builder.vert.usesInstancedGeometry)
109
+ (0, Vertex_1.addInstancedRtcMatrix)(builder.vert);
110
+ builder.vert.addUniform("u_contourLUT", 8 /* VariableType.Sampler2D */, (prog) => {
111
+ prog.addGraphicUniform("u_contourLUT", (uniform, params) => {
112
+ // set this uniform here so that it won't cause problems (e.g.: loopback) if it does not end up being set by bindContourLUT call
113
+ uniform.setUniform1i(RenderFlags_1.TextureUnit.Contours - RenderFlags_1.TextureUnit.Zero);
114
+ params.target.uniforms.batch.bindContourLUT(uniform);
115
+ });
116
+ });
117
+ builder.vert.addUniform("u_contourLUTWidth", 10 /* VariableType.Uint */, (prog) => {
118
+ prog.addGraphicUniform("u_contourLUTWidth", (uniform, params) => {
119
+ params.target.uniforms.batch.bindContourLUTWidth(uniform);
120
+ });
121
+ });
122
+ builder.vert.addUniform("u_modelToWorldC", 7 /* VariableType.Mat4 */, (prog) => {
123
+ prog.addGraphicUniform("u_modelToWorldC", (uniform, params) => {
124
+ params.target.uniforms.branch.bindModelToWorldTransform(uniform, params.geometry, false);
125
+ });
126
+ });
127
+ const contourDefsSize = 8;
128
+ builder.frag.addUniformArray("u_contourDefs", 5 /* VariableType.Vec4 */, contourDefsSize, (prog) => {
129
+ prog.addGraphicUniform("u_contourDefs", (uniform, params) => {
130
+ params.target.uniforms.contours.bindcontourDefs(uniform);
131
+ });
132
+ });
133
+ builder.frag.addFunction(unpack2BytesVec4);
134
+ builder.frag.addFunction(unpackAndNormalize2BytesVec4);
135
+ builder.frag.set(11 /* FragmentShaderComponent.ApplyContours */, applyContours);
136
+ }
137
+ exports.addApplyContours = addApplyContours;
138
+ //# sourceMappingURL=Contours.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Contours.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Contours.ts"],"names":[],"mappings":";;;AAAA;;;+FAG+F;AAC/F;;GAEG;AACH,oDAAoD;AACpD,gDAA6C;AAI7C,yDAAqD;AACrD,qCAAiD;AAEjD,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;CAazB,CAAC;AAEF,MAAM,gBAAgB,GAAG;;;;;;;CAOxB,CAAC;AAEF,MAAM,4BAA4B,GAAG;;;;CAIpC,CAAC;AAEF,MAAM,aAAa,GAAG;;;;;wBAKE,4BAAc,CAAC,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CtD,CAAC;AAEF,gBAAgB;AAChB,SAAgB,gBAAgB,CAAC,OAAuB;IACtD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,aAAa,CAAC;IAE7G,MAAM,kBAAkB,GAAG;;sCAES,QAAQ;;;;CAI7C,CAAC;IAEA,IAAA,kCAAe,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9B,OAAO,CAAC,0BAA0B,CAAC,cAAc,8BAAsB,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;IAC/G,OAAO,CAAC,kCAAkC,CAAC,UAAU,8BAAsB,iCAAiC,EAAE,kBAAkB,CAAC,CAAC;IAElI,IAAI,OAAO,CAAC,IAAI,CAAC,qBAAqB;QACpC,IAAA,8BAAqB,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,kCAA0B,CAAC,IAAI,EAAE,EAAE;QACvE,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzD,gIAAgI;YAChI,OAAO,CAAC,YAAY,CAAC,yBAAW,CAAC,QAAQ,GAAG,yBAAW,CAAC,IAAI,CAAC,CAAC;YAC9D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,8BAAqB,CAAC,IAAI,EAAE,EAAE;QACvE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,6BAAqB,CAAC,IAAI,EAAE,EAAE;QACrE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,yBAAyB,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,CAAC,CAAC;IAC1B,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,6BAAqB,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE;QACzF,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC;IACvD,OAAO,CAAC,IAAI,CAAC,GAAG,iDAAwC,aAAa,CAAC,CAAC;AACzE,CAAC;AAjDD,4CAiDC","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\nimport { ContourDisplay } from \"@itwin/core-common\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport {\r\n FragmentShaderComponent, ProgramBuilder, VariableType,\r\n} from \"../ShaderBuilder\";\r\nimport { addFeatureIndex } from \"./FeatureSymbology\";\r\nimport { addInstancedRtcMatrix } from \"./Vertex\";\r\n\r\nconst computeContourNdx = `\r\n if (u_contourLUTWidth == 0u)\r\n return 15.0;\r\n uint lutIndex = uint(getFeatureIndex());\r\n bool odd = bool(lutIndex & 1u);\r\n lutIndex /= 2u;\r\n uint byteSel = lutIndex & 0x3u;\r\n lutIndex /= 4u;\r\n ivec2 coords = ivec2(lutIndex % u_contourLUTWidth, lutIndex / u_contourLUTWidth);\r\n uvec4 contourNdx4 = uvec4(texelFetch(u_contourLUT, coords, 0) * 255.0 + 0.5);\r\n uvec2 contourNdx2 = bool(byteSel & 2u) ? contourNdx4.ba : contourNdx4.rg;\r\n uint contourNdx = bool(byteSel & 1u) ? contourNdx2.g : contourNdx2.r;\r\n return float(odd ? contourNdx >> 4u : contourNdx & 0xFu);\r\n`;\r\n\r\nconst unpack2BytesVec4 = `\r\nvec4 unpack2BytesVec4(vec4 f, bool upper) {\r\n f = floor(f + 0.5);\r\n vec4 outUpper = floor(f / 256.0);\r\n vec4 outLower = floor(f - outUpper * 256.0);\r\n return upper ? outUpper : outLower;\r\n}\r\n`;\r\n\r\nconst unpackAndNormalize2BytesVec4 = `\r\nvec4 unpackAndNormalize2BytesVec4(vec4 f, bool upper) {\r\n return unpack2BytesVec4(f, upper) / 255.0;\r\n}\r\n`;\r\n\r\nconst applyContours = `\r\n int contourNdx = int(v_contourNdx + 0.5);\r\n if (contourNdx > 14) // 15 => no contours\r\n return baseColor;\r\n\r\n const int maxDefs = ${ContourDisplay.maxContourGroups}; // max number of contour definitions allowed, have to change index arrays if this changes\r\n int contourNdxC = clamp(contourNdx, 0, maxDefs - 1);\r\n\r\n bool even = (contourNdxC & 1) == 0;\r\n vec4 rgbfp = u_contourDefs[even ? contourNdxC * 3 / 2 : (contourNdxC - 1) * 3 / 2 + 2];\r\n vec4 intervalsPair = u_contourDefs[(contourNdxC / 2) * 3 + 1];\r\n // intervals.r => minor interval distance, intervals.g => major index count\r\n vec2 intervals = even ? intervalsPair.rg : intervalsPair.ba;\r\n\r\n float coord = v_height / intervals.r;\r\n // determine if this is in the vicinity of a major contour line (1/2 an interval either way, which is one limit of drawing width)\r\n bool maj = (fract((abs(coord) + 0.5) / intervals.g) < (1.0 / intervals.g));\r\n vec4 rgbf = unpackAndNormalize2BytesVec4(rgbfp, maj);\r\n // rgbf.a => (4-bit linecode / 4-bit weight) maj/min, where the 4-bit weight is a 3-bit weight value with one fraction bit and a 1.5 offset.\r\n // This gives a weight range of 1.5 to 9 in 0.5 increments.\r\n // NB: the showGeometry bit flag is stuck in at bit 16 of this, so the major line code has an extra bit in it that needs to be masked out\r\n int lineCodeWt = int((rgbf.a * 255.0) + 0.5);\r\n // first * 0.5 is for fractional part of width, then have to add 1.0 for offset, then another 1.0 for actual width bias\r\n float lineRadius = (float(lineCodeWt & 0xf) * 0.5 + 2.0) * 0.5;\r\n\r\n // abs(fract(coord - 0.5) - 0.5) will produce 0.0 at the contour line, and 0.5 at the mid-point between contour lines\r\n // fwidth(coord) is sum of absolute diffs in coord in adjacent pixels\r\n float line = abs(fract(coord - 0.5) - 0.5) / fwidth(coord);\r\n // If line is 0 (like at contour line), contourAlpha = lineRadius, so will use draw in contour color\r\n\t// If line >= lineRadius, contourAlpha = 0, so won't show contour\r\n float contourAlpha = lineRadius - min(line, lineRadius);\r\n\r\n // figure out which direction line is going, to know which screen pattern offset to use\r\n float dx = dFdx(contourAlpha);\r\n float dy = dFdy(contourAlpha);\r\n\r\n const float patLength = 32.0;\r\n uint patterns[10] = uint[](0xffffffffu, 0x80808080u, 0xf8f8f8f8u, 0xffe0ffe0u, 0xfe10fe10u, 0xe0e0e0e0u, 0xf888f888u, 0xff18ff18u, 0xccccccccu, 0x00000001u);\r\n\r\n float offset = trunc((abs(dx) > abs(dy)) ? gl_FragCoord.y : gl_FragCoord.x);\r\n offset = mod(offset, patLength);\r\n uint msk = 1u << uint(offset);\r\n contourAlpha *= (patterns[(lineCodeWt / 16) & 0xf] & msk) > 0u ? 1.0 : 0.0;\r\n contourAlpha = min(contourAlpha, 1.0);\r\n if (rgbfp.a / 65536.0 < 0.5) { // showGeometry == 0\r\n if (contourAlpha < 0.5)\r\n discard;\r\n return vec4(rgbf.rgb, 1.0);\r\n }\r\n // set contour opaque even if base color is transparent\r\n float alpha = contourAlpha >= 0.5 ? 1.0 : baseColor.a;\r\n return vec4(mix(baseColor.rgb, rgbf.rgb, contourAlpha), alpha);\r\n`;\r\n\r\n/** @internal */\r\nexport function addApplyContours(builder: ProgramBuilder) {\r\n const modelPos = builder.vert.usesInstancedGeometry ? \"(g_instancedRtcMatrix * rawPosition)\" : \"rawPosition\";\r\n\r\n const computeWorldHeight = `\r\nfloat computeWorldHeight(vec4 rawPosition) {\r\n float height = (u_modelToWorldC * ${modelPos}).z;\r\n // TODO: apply ECEF correction to height\r\n return height;\r\n}\r\n`;\r\n\r\n addFeatureIndex(builder.vert);\r\n\r\n builder.addFunctionComputedVarying(\"v_contourNdx\", VariableType.Float, \"computeContourNdx\", computeContourNdx);\r\n builder.addFunctionComputedVaryingWithArgs(\"v_height\", VariableType.Float, \"computeWorldHeight(rawPosition)\", computeWorldHeight);\r\n\r\n if (builder.vert.usesInstancedGeometry)\r\n addInstancedRtcMatrix(builder.vert);\r\n\r\n builder.vert.addUniform(\"u_contourLUT\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_contourLUT\", (uniform, params) => {\r\n // set this uniform here so that it won't cause problems (e.g.: loopback) if it does not end up being set by bindContourLUT call\r\n uniform.setUniform1i(TextureUnit.Contours - TextureUnit.Zero);\r\n params.target.uniforms.batch.bindContourLUT(uniform);\r\n });\r\n });\r\n\r\n builder.vert.addUniform(\"u_contourLUTWidth\", VariableType.Uint, (prog) => {\r\n prog.addGraphicUniform(\"u_contourLUTWidth\", (uniform, params) => {\r\n params.target.uniforms.batch.bindContourLUTWidth(uniform);\r\n });\r\n });\r\n\r\n builder.vert.addUniform(\"u_modelToWorldC\", VariableType.Mat4, (prog) => {\r\n prog.addGraphicUniform(\"u_modelToWorldC\", (uniform, params) => {\r\n params.target.uniforms.branch.bindModelToWorldTransform(uniform, params.geometry, false);\r\n });\r\n });\r\n\r\n const contourDefsSize = 8;\r\n builder.frag.addUniformArray(\"u_contourDefs\", VariableType.Vec4, contourDefsSize, (prog) => {\r\n prog.addGraphicUniform(\"u_contourDefs\", (uniform, params) => {\r\n params.target.uniforms.contours.bindcontourDefs(uniform);\r\n });\r\n });\r\n\r\n builder.frag.addFunction(unpack2BytesVec4);\r\n builder.frag.addFunction(unpackAndNormalize2BytesVec4);\r\n builder.frag.set(FragmentShaderComponent.ApplyContours, applyContours);\r\n}\r\n"]}
@@ -27,7 +27,7 @@ function createCopyColorProgram(context, copyAlpha = true) {
27
27
  const builder = (0, ViewportQuad_1.createViewportQuadBuilder)(true);
28
28
  const frag = builder.frag;
29
29
  frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, copyAlpha ? computeColor : computeColorNoAlpha);
30
- frag.set(16 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
30
+ frag.set(17 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
31
31
  frag.addUniform("u_color", 8 /* VariableType.Sampler2D */, (prog) => {
32
32
  prog.addGraphicUniform("u_color", (uniform, params) => {
33
33
  const geom = params.geometry;
@@ -32,7 +32,7 @@ function createCopyPickBuffersProgram(context) {
32
32
  });
33
33
  }, 3 /* VariablePrecision.High */);
34
34
  frag.addDrawBuffersExtension(2);
35
- frag.set(16 /* FragmentShaderComponent.AssignFragData */, assignFragData);
35
+ frag.set(17 /* FragmentShaderComponent.AssignFragData */, assignFragData);
36
36
  builder.vert.headerComment = "//!V! CopyPickBuffers";
37
37
  builder.frag.headerComment = "//!F! CopyPickBuffers";
38
38
  return builder.buildProgram(context);
@@ -55,7 +55,7 @@ function createVolClassColorUsingStencilProgram(context) {
55
55
  const builder = (0, ViewportQuad_1.createViewportQuadBuilder)(false);
56
56
  const frag = builder.frag;
57
57
  frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, computehiliteColor);
58
- frag.set(16 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
58
+ frag.set(17 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
59
59
  frag.addUniform("u_hilite_color", 5 /* VariableType.Vec4 */, (prog) => {
60
60
  prog.addGraphicUniform("u_hilite_color", (uniform, params) => {
61
61
  const useLighting = params.geometry.getFlashMode(params);
@@ -79,7 +79,7 @@ function createVolClassCopyZProgram(context) {
79
79
  builder.addInlineComputedVarying("v_texCoord", 3 /* VariableType.Vec2 */, computeTexCoord); // TODO: I think this is not necessary because it's already added from the create above
80
80
  const frag = builder.frag;
81
81
  frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, computeSetBlendColor);
82
- frag.set(16 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
82
+ frag.set(17 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
83
83
  frag.addUniform("u_blend_color", 5 /* VariableType.Vec4 */, (prog) => {
84
84
  prog.addGraphicUniform("u_blend_color", (uniform, _params) => {
85
85
  scratchColor.set(0.0, 0.0, 0.0, 0.0);
@@ -92,7 +92,7 @@ function createVolClassCopyZProgram(context) {
92
92
  Texture_1.Texture2DHandle.bindSampler(uniform, geom.texture, RenderFlags_1.TextureUnit.Zero);
93
93
  });
94
94
  });
95
- frag.set(18 /* FragmentShaderComponent.FinalizeDepth */, depthFromTexture);
95
+ frag.set(19 /* FragmentShaderComponent.FinalizeDepth */, depthFromTexture);
96
96
  builder.vert.headerComment = "//!V! VolClassCopyZ";
97
97
  builder.frag.headerComment = "//!F! VolClassCopyZ";
98
98
  return builder.buildProgram(context);
@@ -106,7 +106,7 @@ function createVolClassSetBlendProgram(context) {
106
106
  addBoundaryTypeConstants(frag);
107
107
  frag.set(0 /* FragmentShaderComponent.CheckForEarlyDiscard */, checkDiscardBackgroundByZ);
108
108
  frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, computeSetBlendColor);
109
- frag.set(16 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
109
+ frag.set(17 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
110
110
  frag.addUniform("u_boundaryType", 1 /* VariableType.Int */, (prog) => {
111
111
  prog.addGraphicUniform("u_boundaryType", (uniform, params) => {
112
112
  const geom = params.geometry;
@@ -150,7 +150,7 @@ function createVolClassBlendProgram(context) {
150
150
  builder.addInlineComputedVarying("v_texCoord", 3 /* VariableType.Vec2 */, computeTexCoord);
151
151
  const frag = builder.frag;
152
152
  frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, computeBlendTextureColor);
153
- frag.set(16 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
153
+ frag.set(17 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
154
154
  frag.addUniform("u_blendTexture", 8 /* VariableType.Sampler2D */, (prog) => {
155
155
  prog.addGraphicUniform("u_blendTexture", (uniform, params) => {
156
156
  const geom = params.geometry;
@@ -48,7 +48,7 @@ function createEDLCalcBasicProgram(context) {
48
48
  const builder = (0, ViewportQuad_1.createViewportQuadBuilder)(true);
49
49
  const frag = builder.frag;
50
50
  frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, calcBasicEDL);
51
- frag.set(16 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
51
+ frag.set(17 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
52
52
  frag.addUniform("u_texInfo", 4 /* VariableType.Vec3 */, (prog) => {
53
53
  prog.addGraphicUniform("u_texInfo", (uniform, params) => {
54
54
  const geom = params.geometry;
@@ -115,7 +115,7 @@ function createEDLCalcFullProgram(context) {
115
115
  const builder = (0, ViewportQuad_1.createViewportQuadBuilder)(true);
116
116
  const frag = builder.frag;
117
117
  frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, calcFullEDL);
118
- frag.set(16 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
118
+ frag.set(17 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
119
119
  frag.addUniform("u_texInfo", 4 /* VariableType.Vec3 */, (prog) => {
120
120
  prog.addGraphicUniform("u_texInfo", (uniform, params) => {
121
121
  const geom = params.geometry;
@@ -187,7 +187,7 @@ function createEDLFilterProgram(context) {
187
187
  const builder = (0, ViewportQuad_1.createViewportQuadBuilder)(true);
188
188
  const frag = builder.frag;
189
189
  frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, filterEDL);
190
- frag.set(16 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
190
+ frag.set(17 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
191
191
  frag.addUniform("u_texInfo", 4 /* VariableType.Vec3 */, (prog) => {
192
192
  prog.addGraphicUniform("u_texInfo", (uniform, params) => {
193
193
  const geom = params.geometry;
@@ -227,7 +227,7 @@ function createEDLMixProgram(context) {
227
227
  const builder = (0, ViewportQuad_1.createViewportQuadBuilder)(true);
228
228
  const frag = builder.frag;
229
229
  frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, mixEDL);
230
- frag.set(16 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
230
+ frag.set(17 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
231
231
  frag.addUniform("u_colorTexture1", 8 /* VariableType.Sampler2D */, (prog) => {
232
232
  prog.addGraphicUniform("u_colorTexture1", (uniform, params) => {
233
233
  const geom = params.geometry;
@@ -66,7 +66,7 @@ function createEVSMProgram(context) {
66
66
  (0, SolarShadowMapping_1.addEvsmExponent)(frag);
67
67
  frag.addFunction(SolarShadowMapping_1.warpDepth);
68
68
  frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, computeEVSM);
69
- frag.set(16 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
69
+ frag.set(17 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
70
70
  builder.vert.headerComment = "//!V! EVSMFromDepth";
71
71
  builder.frag.headerComment = "//!F! EVSMFromDepth";
72
72
  return builder.buildProgram(context);
@@ -241,7 +241,7 @@ function createBase(type, instanced, isAnimated, positionType) {
241
241
  (0, FeatureSymbology_1.addRenderOrder)(vert);
242
242
  (0, FeatureSymbology_1.addRenderOrderConstants)(vert);
243
243
  builder.addInlineComputedVarying("v_renderOrder", 2 /* VariableType.Float */, computeIndexedRenderOrder);
244
- builder.frag.set(20 /* FragmentShaderComponent.OverrideRenderOrder */, "return v_renderOrder;");
244
+ builder.frag.set(21 /* FragmentShaderComponent.OverrideRenderOrder */, "return v_renderOrder;");
245
245
  }
246
246
  else {
247
247
  vert.addInitializer(decodeEndPointAndQuadIndices);
@@ -1,7 +1,7 @@
1
1
  /** @packageDocumentation
2
2
  * @module WebGL
3
3
  */
4
- import { FragmentShaderBuilder, ProgramBuilder, ShaderBuilder } from "../ShaderBuilder";
4
+ import { FragmentShaderBuilder, ProgramBuilder, ShaderBuilder, VertexShaderBuilder } from "../ShaderBuilder";
5
5
  import { FeatureMode, TechniqueFlags } from "../TechniqueFlags";
6
6
  /** @internal */
7
7
  export declare const enum FeatureSymbologyOptions {
@@ -17,6 +17,7 @@ export declare const enum FeatureSymbologyOptions {
17
17
  }
18
18
  /** @internal */
19
19
  export declare function addOvrFlagConstants(builder: ShaderBuilder): void;
20
+ export declare function addFeatureIndex(vert: VertexShaderBuilder): void;
20
21
  export declare function addMaxAlpha(builder: ShaderBuilder): void;
21
22
  /** @internal */
22
23
  export declare function addSurfaceHiliter(builder: ProgramBuilder, wantWeight?: boolean): void;
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureSymbology.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/FeatureSymbology.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EACL,qBAAqB,EAA2B,cAAc,EAAE,aAAa,EAE9E,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAUhE,gBAAgB;AAChB,0BAAkB,uBAAuB;IACvC,IAAI,IAAI;IACR,MAAM,IAAS;IACf,QAAQ,IAAS;IACjB,YAAY,IAAS;IACrB,KAAK,IAAS;IACd,KAAK,KAAS;IAEd,OAAO,KAA+B;IACtC,KAAK,KAAwC;IAC7C,MAAM,KAAmD;CAC1D;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAehE;AAmOD,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAIxD;AA6DD,gBAAgB;AAChB,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI,CAG5F;AAED,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI,CAkBrF;AAkBD,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,yLAM7B,CAAC;AAuEF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,aAAa,QAa7D;AAED,gBAAgB;AAChB,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,QAOpD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,QAMzD;AAgBD,gBAAgB;AAChB,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,QAiB3E;AASD,gBAAgB;AAChB,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,QA4D/E;AA4DD,eAAO,MAAM,eAAe,sOAIzB,CAAC;AAwCJ,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAIpE;AAoBD,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAoBnH;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAW/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI,CA0ClG"}
1
+ {"version":3,"file":"FeatureSymbology.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/FeatureSymbology.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EACL,qBAAqB,EAA2B,cAAc,EAAE,aAAa,EAAmC,mBAAmB,EAEpI,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAWhE,gBAAgB;AAChB,0BAAkB,uBAAuB;IACvC,IAAI,IAAI;IACR,MAAM,IAAS;IACf,QAAQ,IAAS;IACjB,YAAY,IAAS;IACrB,KAAK,IAAS;IACd,KAAK,KAAS;IAEd,OAAO,KAA+B;IACtC,KAAK,KAAwC;IAC7C,MAAM,KAAmD;CAC1D;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAkBhE;AAwED,wBAAgB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAK/D;AAsJD,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAIxD;AA6DD,gBAAgB;AAChB,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI,CAG5F;AAED,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI,CAkBrF;AAkBD,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,yLAM7B,CAAC;AAuEF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,aAAa,QAc7D;AAED,gBAAgB;AAChB,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,QAOpD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,QAMzD;AAgBD,gBAAgB;AAChB,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,QAiB3E;AASD,gBAAgB;AAChB,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,QA4D/E;AAkED,eAAO,MAAM,eAAe,sOAIzB,CAAC;AAwCJ,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAIpE;AAoBD,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAsBnH;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAW/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI,CA0ClG"}
@@ -7,7 +7,7 @@
7
7
  * @module WebGL
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.addUniformFeatureSymbology = exports.addUniformHiliter = exports.addFeatureSymbology = exports.addClassifierFlash = exports.mixFeatureColor = exports.addSurfaceDiscard = exports.addFeatureId = exports.addPixelWidthFactor = exports.addRenderOrder = exports.addRenderOrderConstants = exports.readDepthAndOrder = exports.addHiliter = exports.addSurfaceHiliter = exports.addMaxAlpha = exports.addOvrFlagConstants = void 0;
10
+ exports.addUniformFeatureSymbology = exports.addUniformHiliter = exports.addFeatureSymbology = exports.addClassifierFlash = exports.mixFeatureColor = exports.addSurfaceDiscard = exports.addFeatureId = exports.addPixelWidthFactor = exports.addRenderOrder = exports.addRenderOrderConstants = exports.readDepthAndOrder = exports.addHiliter = exports.addSurfaceHiliter = exports.addMaxAlpha = exports.addFeatureIndex = exports.addOvrFlagConstants = void 0;
11
11
  const core_bentley_1 = require("@itwin/core-bentley");
12
12
  const RenderFlags_1 = require("../RenderFlags");
13
13
  const Common_1 = require("./Common");
@@ -19,10 +19,10 @@ const Vertex_1 = require("./Vertex");
19
19
  /** @internal */
20
20
  function addOvrFlagConstants(builder) {
21
21
  // NB: These are the bit positions of each flag in OvrFlags enum - not the flag values
22
- builder.addBitFlagConstant("kOvrBit_Visibility", 0);
22
+ builder.addBitFlagConstant("kOvrBit_LineRgb", 0);
23
23
  builder.addBitFlagConstant("kOvrBit_Rgb", 1);
24
24
  builder.addBitFlagConstant("kOvrBit_Alpha", 2);
25
- builder.addBitFlagConstant("kOvrBit_IgnoreMaterial", 3);
25
+ builder.addBitFlagConstant("kOvrBit_LineAlpha", 3);
26
26
  builder.addBitFlagConstant("kOvrBit_Flashed", 4);
27
27
  builder.addBitFlagConstant("kOvrBit_NonLocatable", 5);
28
28
  builder.addBitFlagConstant("kOvrBit_LineCode", 6);
@@ -31,6 +31,9 @@ function addOvrFlagConstants(builder) {
31
31
  builder.addBitFlagConstant("kOvrBit_Hilited", 0);
32
32
  builder.addBitFlagConstant("kOvrBit_Emphasized", 1);
33
33
  builder.addBitFlagConstant("kOvrBit_ViewIndependentTransparency", 2);
34
+ builder.addBitFlagConstant("kOvrBit_InvisibleDuringPick", 3);
35
+ builder.addBitFlagConstant("kOvrBit_Visibility", 4);
36
+ builder.addBitFlagConstant("kOvrBit_IgnoreMaterial", 5);
34
37
  }
35
38
  exports.addOvrFlagConstants = addOvrFlagConstants;
36
39
  const computeLUTFeatureIndex = `g_featureAndMaterialIndex.xyz`;
@@ -77,9 +80,9 @@ vec4 getFirstFeatureRgba() {
77
80
  }
78
81
  `;
79
82
  const getSecondFeatureRgba = `
80
- vec4 getSecondFeatureRgba() {
83
+ vec4 getSecondFeatureRgba(bool isLinear) {
81
84
  vec2 coord = feature_texCoord;
82
- coord.x += g_feature_stepX;
85
+ coord.x += g_feature_stepX * (isLinear ? 2.0 : 1.0);
83
86
  return TEXTURE(u_featureLUT, coord);
84
87
  }
85
88
  `;
@@ -98,6 +101,7 @@ function addFeatureIndex(vert) {
98
101
  vert.addFunction(Decode_1.decodeUint24);
99
102
  vert.addFunction(getFeatureIndex(vert));
100
103
  }
104
+ exports.addFeatureIndex = addFeatureIndex;
101
105
  // Discards vertex if feature is invisible; or rendering opaque during translucent pass or vice-versa
102
106
  // (The latter occurs when some translucent feature is overridden to be opaque, or vice-versa)
103
107
  const checkVertexDiscard = `
@@ -197,7 +201,7 @@ function addCommon(builder, mode, opts, wantGlobalOvrFlags = true) {
197
201
  });
198
202
  });
199
203
  }
200
- (0, LookupTable_1.addLookupTable)(vert, "feature", "2.0");
204
+ (0, LookupTable_1.addLookupTable)(vert, "feature", "3.0");
201
205
  vert.addGlobal("feature_texCoord", 3 /* VariableType.Vec2 */);
202
206
  vert.addFunction(computeFeatureTextureCoords);
203
207
  vert.addFunction(getFirstFeatureRgba);
@@ -300,7 +304,7 @@ function addHiliter(builder, wantWeight = false) {
300
304
  addEmphasisFlags(builder.frag);
301
305
  (0, Common_1.addExtractNthBit)(builder.frag);
302
306
  builder.frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, computeHiliteColor);
303
- builder.frag.set(16 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
307
+ builder.frag.set(17 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
304
308
  }
305
309
  exports.addHiliter = addHiliter;
306
310
  function addSamplers(frag, testFeatureId) {
@@ -395,6 +399,7 @@ const checkForEarlySurfaceDiscardWithFeatureID = `
395
399
  function addRenderOrderConstants(builder) {
396
400
  builder.addConstant("kRenderOrder_BlankingRegion", 2 /* VariableType.Float */, 2 /* RenderOrder.BlankingRegion */.toFixed(1));
397
401
  builder.addConstant("kRenderOrder_Linear", 2 /* VariableType.Float */, 5 /* RenderOrder.Linear */.toFixed(1));
402
+ builder.addConstant("kRenderOrder_PlanarLinear", 2 /* VariableType.Float */, 13 /* RenderOrder.PlanarLinear */.toFixed(1));
398
403
  builder.addConstant("kRenderOrder_Edge", 2 /* VariableType.Float */, 6 /* RenderOrder.Edge */.toFixed(1));
399
404
  builder.addConstant("kRenderOrder_PlanarEdge", 2 /* VariableType.Float */, 14 /* RenderOrder.PlanarEdge */.toFixed(1));
400
405
  builder.addConstant("kRenderOrder_Silhouette", 2 /* VariableType.Float */, 7 /* RenderOrder.Silhouette */.toFixed(1));
@@ -527,23 +532,29 @@ const computeFeatureOverrides = `
527
532
  vec4 value = getFirstFeatureRgba();
528
533
 
529
534
  float emphFlags = value.y * 256.0;
535
+ if (nthFeatureBitSet(emphFlags, kOvrBit_InvisibleDuringPick)) {
536
+ feature_invisible = true;
537
+ return;
538
+ }
539
+
530
540
  v_feature_emphasis = kEmphFlag_Hilite * extractNthBit(emphFlags, kOvrBit_Hilited) + kEmphFlag_Emphasize * extractNthBit(emphFlags, kOvrBit_Emphasized);
531
541
 
532
542
  float flags = value.x * 256.0;
533
- if (0.0 == flags)
543
+ if (0.0 == flags && 0.0 == emphFlags)
534
544
  return; // nothing overridden for this feature
535
545
 
536
546
  bool nonLocatable = (u_shaderFlags[kShaderBit_IgnoreNonLocatable] ? nthFeatureBitSet(flags, kOvrBit_NonLocatable) : false);
537
547
  v_feature_emphasis += kEmphFlag_NonLocatable * float(nthFeatureBitSet(flags, kOvrBit_NonLocatable));
538
- bool invisible = nthFeatureBitSet(flags, kOvrBit_Visibility);
548
+ bool invisible = nthFeatureBitSet(emphFlags, kOvrBit_Visibility);
539
549
  feature_invisible = invisible || nonLocatable;
540
550
  if (feature_invisible)
541
551
  return;
542
552
 
543
- bool rgbOverridden = nthFeatureBitSet(flags, kOvrBit_Rgb);
544
- bool alphaOverridden = nthFeatureBitSet(flags, kOvrBit_Alpha);
553
+ bool isLinear = u_renderOrder == kRenderOrder_Linear || u_renderOrder == kRenderOrder_PlanarLinear || u_renderOrder == kRenderOrder_PlanarEdge;
554
+ bool rgbOverridden = isLinear ? nthFeatureBitSet(flags, kOvrBit_LineRgb) : nthFeatureBitSet(flags, kOvrBit_Rgb);
555
+ bool alphaOverridden = isLinear ? nthFeatureBitSet(flags, kOvrBit_LineAlpha) : nthFeatureBitSet(flags, kOvrBit_Alpha);
545
556
  if (alphaOverridden || rgbOverridden) {
546
- vec4 rgba = getSecondFeatureRgba();
557
+ vec4 rgba = getSecondFeatureRgba(isLinear);
547
558
  if (rgbOverridden)
548
559
  feature_rgb = rgba.rgb;
549
560
 
@@ -558,7 +569,7 @@ const computeFeatureOverrides = `
558
569
  nthFeatureBitSet(flags, kOvrBit_LineCode),
559
570
  value.z * 256.0);
560
571
 
561
- feature_ignore_material = nthFeatureBitSet(flags, kOvrBit_IgnoreMaterial);
572
+ feature_ignore_material = nthFeatureBitSet(emphFlags, kOvrBit_IgnoreMaterial);
562
573
  use_material = use_material && !feature_ignore_material;
563
574
 
564
575
  v_feature_emphasis += kEmphFlag_Flash * extractNthFeatureBit(flags, kOvrBit_Flashed);
@@ -631,7 +642,7 @@ function addApplyFlash(frag) {
631
642
  addEmphasisFlags(frag);
632
643
  (0, Common_1.addExtractNthBit)(frag);
633
644
  frag.addFunction(doApplyFlash);
634
- frag.set(11 /* FragmentShaderComponent.ApplyFlash */, applyFlash);
645
+ frag.set(12 /* FragmentShaderComponent.ApplyFlash */, applyFlash);
635
646
  addFlashIntensity(frag);
636
647
  }
637
648
  /** @internal */
@@ -647,6 +658,8 @@ function addFeatureSymbology(builder, feat, opts) {
647
658
  vert.addGlobal("feature_viewIndependentTransparency", 0 /* VariableType.Boolean */, "false");
648
659
  addEmphasisFlags(vert);
649
660
  vert.addGlobal("use_material", 0 /* VariableType.Boolean */, "true");
661
+ addRenderOrder(vert);
662
+ addRenderOrderConstants(vert);
650
663
  vert.set(3 /* VertexShaderComponent.ComputeFeatureOverrides */, computeFeatureOverrides);
651
664
  vert.set(7 /* VertexShaderComponent.ApplyFeatureColor */, applyFeatureColor);
652
665
  addApplyFlash(builder.frag);
@@ -665,7 +678,7 @@ function addUniformHiliter(builder) {
665
678
  addEmphasisFlags(builder.frag);
666
679
  (0, Common_1.addExtractNthBit)(builder.frag);
667
680
  builder.frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, computeHiliteColor);
668
- builder.frag.set(16 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
681
+ builder.frag.set(17 /* FragmentShaderComponent.AssignFragData */, Fragment_1.assignFragColor);
669
682
  }
670
683
  exports.addUniformHiliter = addUniformHiliter;
671
684
  /** For a uniform feature table, the feature ID output to pick buffers is equal to the batch ID.