@itwin/core-frontend 3.0.0-dev.151 → 3.0.0-dev.155

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 (274) hide show
  1. package/lib/cjs/Marker.d.ts +9 -2
  2. package/lib/cjs/Marker.d.ts.map +1 -1
  3. package/lib/cjs/Marker.js +33 -5
  4. package/lib/cjs/Marker.js.map +1 -1
  5. package/lib/cjs/RealityDataSource.js +1 -12
  6. package/lib/cjs/RealityDataSource.js.map +1 -1
  7. package/lib/cjs/render/RenderMemory.d.ts +21 -15
  8. package/lib/cjs/render/RenderMemory.d.ts.map +1 -1
  9. package/lib/cjs/render/RenderMemory.js +21 -15
  10. package/lib/cjs/render/RenderMemory.js.map +1 -1
  11. package/lib/cjs/render/RenderSystem.d.ts +2 -0
  12. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  13. package/lib/cjs/render/RenderSystem.js +2 -0
  14. package/lib/cjs/render/RenderSystem.js.map +1 -1
  15. package/lib/cjs/render/primitives/EdgeParams.d.ts +35 -1
  16. package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -1
  17. package/lib/cjs/render/primitives/EdgeParams.js +114 -10
  18. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
  19. package/lib/cjs/render/primitives/VertexTable.d.ts +1 -0
  20. package/lib/cjs/render/primitives/VertexTable.d.ts.map +1 -1
  21. package/lib/cjs/render/primitives/VertexTable.js +6 -1
  22. package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
  23. package/lib/cjs/render/webgl/AttributeMap.js +5 -5
  24. package/lib/cjs/render/webgl/CachedGeometry.d.ts +2 -0
  25. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  26. package/lib/cjs/render/webgl/CachedGeometry.js +14 -13
  27. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  28. package/lib/cjs/render/webgl/DrawCommand.js +2 -2
  29. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts +51 -0
  30. package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -0
  31. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js +90 -0
  32. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -0
  33. package/lib/cjs/render/webgl/InstancedGeometry.d.ts +1 -0
  34. package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
  35. package/lib/cjs/render/webgl/InstancedGeometry.js +1 -0
  36. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  37. package/lib/cjs/render/webgl/Mesh.d.ts +2 -0
  38. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  39. package/lib/cjs/render/webgl/Mesh.js +7 -1
  40. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  41. package/lib/cjs/render/webgl/PlanarClassifier.js +1 -1
  42. package/lib/cjs/render/webgl/PlanarGrid.js +2 -2
  43. package/lib/cjs/render/webgl/RealityMesh.js +5 -5
  44. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  45. package/lib/cjs/render/webgl/RenderFlags.d.ts +4 -1
  46. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  47. package/lib/cjs/render/webgl/RenderFlags.js +6 -1
  48. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  49. package/lib/cjs/render/webgl/SceneCompositor.js +6 -6
  50. package/lib/cjs/render/webgl/ScreenSpaceEffect.js +1 -1
  51. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +16 -14
  52. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  53. package/lib/cjs/render/webgl/ShaderBuilder.js +19 -15
  54. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  55. package/lib/cjs/render/webgl/System.d.ts +2 -0
  56. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  57. package/lib/cjs/render/webgl/System.js +2 -0
  58. package/lib/cjs/render/webgl/System.js.map +1 -1
  59. package/lib/cjs/render/webgl/Target.js +1 -1
  60. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  61. package/lib/cjs/render/webgl/Technique.js +72 -57
  62. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  63. package/lib/cjs/render/webgl/TechniqueId.d.ts +29 -28
  64. package/lib/cjs/render/webgl/TechniqueId.d.ts.map +1 -1
  65. package/lib/cjs/render/webgl/TechniqueId.js +7 -7
  66. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  67. package/lib/cjs/render/webgl/glsl/Animation.js +1 -1
  68. package/lib/cjs/render/webgl/glsl/Color.js +1 -1
  69. package/lib/cjs/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  70. package/lib/cjs/render/webgl/glsl/CopyStencil.js +4 -7
  71. package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
  72. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +1 -1
  73. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  74. package/lib/cjs/render/webgl/glsl/Edge.d.ts +2 -1
  75. package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
  76. package/lib/cjs/render/webgl/glsl/Edge.js +132 -14
  77. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  78. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  79. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +13 -10
  80. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  81. package/lib/cjs/render/webgl/glsl/Fragment.d.ts.map +1 -1
  82. package/lib/cjs/render/webgl/glsl/Fragment.js +9 -1
  83. package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
  84. package/lib/cjs/render/webgl/glsl/LookupTable.d.ts +4 -2
  85. package/lib/cjs/render/webgl/glsl/LookupTable.d.ts.map +1 -1
  86. package/lib/cjs/render/webgl/glsl/LookupTable.js +7 -3
  87. package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
  88. package/lib/cjs/render/webgl/glsl/PlanarGrid.js +2 -2
  89. package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
  90. package/lib/cjs/render/webgl/glsl/PointCloud.js +2 -2
  91. package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
  92. package/lib/cjs/render/webgl/glsl/PointString.js +1 -1
  93. package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
  94. package/lib/cjs/render/webgl/glsl/Polyline.js +1 -1
  95. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  96. package/lib/cjs/render/webgl/glsl/RealityMesh.js +4 -4
  97. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  98. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
  99. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  100. package/lib/cjs/render/webgl/glsl/SkyBox.js +1 -1
  101. package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
  102. package/lib/cjs/render/webgl/glsl/SkySphere.js +1 -1
  103. package/lib/cjs/render/webgl/glsl/Surface.js +3 -3
  104. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  105. package/lib/cjs/render/webgl/glsl/Vertex.js +1 -1
  106. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  107. package/lib/cjs/render/webgl/glsl/ViewportQuad.js +1 -1
  108. package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
  109. package/lib/cjs/tile/IModelTile.d.ts.map +1 -1
  110. package/lib/cjs/tile/IModelTile.js +1 -0
  111. package/lib/cjs/tile/IModelTile.js.map +1 -1
  112. package/lib/cjs/tile/ImdlReader.d.ts +1 -0
  113. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  114. package/lib/cjs/tile/ImdlReader.js +21 -1
  115. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  116. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  117. package/lib/cjs/tile/PrimaryTileTree.js +4 -3
  118. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  119. package/lib/cjs/tile/TileAdmin.d.ts +9 -0
  120. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  121. package/lib/cjs/tile/TileAdmin.js +18 -13
  122. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  123. package/lib/cjs/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  124. package/lib/cjs/tile/map/CesiumTerrainProvider.js +16 -5
  125. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  126. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  127. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +4 -3
  128. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  129. package/lib/cjs/tile/map/MapTileTree.d.ts +1 -1
  130. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  131. package/lib/cjs/tile/map/MapTileTree.js +12 -13
  132. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  133. package/lib/cjs/webgl.d.ts +1 -0
  134. package/lib/cjs/webgl.d.ts.map +1 -1
  135. package/lib/cjs/webgl.js +1 -0
  136. package/lib/cjs/webgl.js.map +1 -1
  137. package/lib/esm/Marker.d.ts +9 -2
  138. package/lib/esm/Marker.d.ts.map +1 -1
  139. package/lib/esm/Marker.js +34 -6
  140. package/lib/esm/Marker.js.map +1 -1
  141. package/lib/esm/RealityDataSource.js +2 -13
  142. package/lib/esm/RealityDataSource.js.map +1 -1
  143. package/lib/esm/render/RenderMemory.d.ts +21 -15
  144. package/lib/esm/render/RenderMemory.d.ts.map +1 -1
  145. package/lib/esm/render/RenderMemory.js +21 -15
  146. package/lib/esm/render/RenderMemory.js.map +1 -1
  147. package/lib/esm/render/RenderSystem.d.ts +2 -0
  148. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  149. package/lib/esm/render/RenderSystem.js +2 -0
  150. package/lib/esm/render/RenderSystem.js.map +1 -1
  151. package/lib/esm/render/primitives/EdgeParams.d.ts +35 -1
  152. package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -1
  153. package/lib/esm/render/primitives/EdgeParams.js +114 -10
  154. package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
  155. package/lib/esm/render/primitives/VertexTable.d.ts +1 -0
  156. package/lib/esm/render/primitives/VertexTable.d.ts.map +1 -1
  157. package/lib/esm/render/primitives/VertexTable.js +6 -1
  158. package/lib/esm/render/primitives/VertexTable.js.map +1 -1
  159. package/lib/esm/render/webgl/AttributeMap.js +5 -5
  160. package/lib/esm/render/webgl/CachedGeometry.d.ts +2 -0
  161. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  162. package/lib/esm/render/webgl/CachedGeometry.js +14 -13
  163. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  164. package/lib/esm/render/webgl/DrawCommand.js +2 -2
  165. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts +51 -0
  166. package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -0
  167. package/lib/esm/render/webgl/IndexedEdgeGeometry.js +85 -0
  168. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -0
  169. package/lib/esm/render/webgl/InstancedGeometry.d.ts +1 -0
  170. package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
  171. package/lib/esm/render/webgl/InstancedGeometry.js +1 -0
  172. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  173. package/lib/esm/render/webgl/Mesh.d.ts +2 -0
  174. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  175. package/lib/esm/render/webgl/Mesh.js +7 -1
  176. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  177. package/lib/esm/render/webgl/PlanarClassifier.js +1 -1
  178. package/lib/esm/render/webgl/PlanarGrid.js +2 -2
  179. package/lib/esm/render/webgl/RealityMesh.js +5 -5
  180. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  181. package/lib/esm/render/webgl/RenderFlags.d.ts +4 -1
  182. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  183. package/lib/esm/render/webgl/RenderFlags.js +6 -1
  184. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  185. package/lib/esm/render/webgl/SceneCompositor.js +6 -6
  186. package/lib/esm/render/webgl/ScreenSpaceEffect.js +1 -1
  187. package/lib/esm/render/webgl/ShaderBuilder.d.ts +16 -14
  188. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  189. package/lib/esm/render/webgl/ShaderBuilder.js +19 -15
  190. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  191. package/lib/esm/render/webgl/System.d.ts +2 -0
  192. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  193. package/lib/esm/render/webgl/System.js +2 -0
  194. package/lib/esm/render/webgl/System.js.map +1 -1
  195. package/lib/esm/render/webgl/Target.js +1 -1
  196. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  197. package/lib/esm/render/webgl/Technique.js +72 -57
  198. package/lib/esm/render/webgl/Technique.js.map +1 -1
  199. package/lib/esm/render/webgl/TechniqueId.d.ts +29 -28
  200. package/lib/esm/render/webgl/TechniqueId.d.ts.map +1 -1
  201. package/lib/esm/render/webgl/TechniqueId.js +7 -7
  202. package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
  203. package/lib/esm/render/webgl/glsl/Animation.js +1 -1
  204. package/lib/esm/render/webgl/glsl/Color.js +1 -1
  205. package/lib/esm/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  206. package/lib/esm/render/webgl/glsl/CopyStencil.js +4 -7
  207. package/lib/esm/render/webgl/glsl/CopyStencil.js.map +1 -1
  208. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +1 -1
  209. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  210. package/lib/esm/render/webgl/glsl/Edge.d.ts +2 -1
  211. package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
  212. package/lib/esm/render/webgl/glsl/Edge.js +132 -14
  213. package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
  214. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  215. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +13 -10
  216. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  217. package/lib/esm/render/webgl/glsl/Fragment.d.ts.map +1 -1
  218. package/lib/esm/render/webgl/glsl/Fragment.js +9 -1
  219. package/lib/esm/render/webgl/glsl/Fragment.js.map +1 -1
  220. package/lib/esm/render/webgl/glsl/LookupTable.d.ts +4 -2
  221. package/lib/esm/render/webgl/glsl/LookupTable.d.ts.map +1 -1
  222. package/lib/esm/render/webgl/glsl/LookupTable.js +7 -3
  223. package/lib/esm/render/webgl/glsl/LookupTable.js.map +1 -1
  224. package/lib/esm/render/webgl/glsl/PlanarGrid.js +2 -2
  225. package/lib/esm/render/webgl/glsl/PlanarGrid.js.map +1 -1
  226. package/lib/esm/render/webgl/glsl/PointCloud.js +2 -2
  227. package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
  228. package/lib/esm/render/webgl/glsl/PointString.js +1 -1
  229. package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
  230. package/lib/esm/render/webgl/glsl/Polyline.js +1 -1
  231. package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
  232. package/lib/esm/render/webgl/glsl/RealityMesh.js +4 -4
  233. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  234. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
  235. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  236. package/lib/esm/render/webgl/glsl/SkyBox.js +1 -1
  237. package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
  238. package/lib/esm/render/webgl/glsl/SkySphere.js +1 -1
  239. package/lib/esm/render/webgl/glsl/Surface.js +3 -3
  240. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  241. package/lib/esm/render/webgl/glsl/Vertex.js +1 -1
  242. package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
  243. package/lib/esm/render/webgl/glsl/ViewportQuad.js +1 -1
  244. package/lib/esm/render/webgl/glsl/ViewportQuad.js.map +1 -1
  245. package/lib/esm/tile/IModelTile.d.ts.map +1 -1
  246. package/lib/esm/tile/IModelTile.js +1 -0
  247. package/lib/esm/tile/IModelTile.js.map +1 -1
  248. package/lib/esm/tile/ImdlReader.d.ts +1 -0
  249. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  250. package/lib/esm/tile/ImdlReader.js +21 -1
  251. package/lib/esm/tile/ImdlReader.js.map +1 -1
  252. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  253. package/lib/esm/tile/PrimaryTileTree.js +5 -4
  254. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  255. package/lib/esm/tile/TileAdmin.d.ts +9 -0
  256. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  257. package/lib/esm/tile/TileAdmin.js +19 -14
  258. package/lib/esm/tile/TileAdmin.js.map +1 -1
  259. package/lib/esm/tile/map/CesiumTerrainProvider.d.ts.map +1 -1
  260. package/lib/esm/tile/map/CesiumTerrainProvider.js +16 -5
  261. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  262. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  263. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +4 -3
  264. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  265. package/lib/esm/tile/map/MapTileTree.d.ts +1 -1
  266. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  267. package/lib/esm/tile/map/MapTileTree.js +12 -13
  268. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  269. package/lib/esm/webgl.d.ts +1 -0
  270. package/lib/esm/webgl.d.ts.map +1 -1
  271. package/lib/esm/webgl.js +1 -0
  272. package/lib/esm/webgl.js.map +1 -1
  273. package/lib/public/locales/en/iModelJs.json +3 -1
  274. package/package.json +22 -22
@@ -1 +1 @@
1
- {"version":3,"file":"EdgeParams.js","sourceRoot":"","sources":["../../../../src/render/primitives/EdgeParams.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 Rendering\r\n */\r\n\r\nimport { LinePixels, MeshEdge, OctEncodedNormalPair, PolylineData } from \"@itwin/core-common\";\r\nimport { MeshArgs } from \"./mesh/MeshPrimitives\";\r\nimport { VertexIndices } from \"./VertexTable\";\r\nimport { TesselatedPolyline, wantJointTriangles } from \"./PolylineParams\";\r\n\r\n/**\r\n * Describes a set of line segments representing edges of a mesh.\r\n * Each segment is expanded into a quad defined by two triangles.\r\n * The positions are adjusted in the shader to account for the edge width.\r\n * @internal\r\n */\r\nexport interface SegmentEdgeParams {\r\n /** The 24-bit indices of the tesselated line segment */\r\n readonly indices: VertexIndices;\r\n /**\r\n * For each 24-bit index, 4 bytes:\r\n * the 24-bit index of the vertex at the other end of the segment, followed by\r\n * an 8-bit 'quad index' in [0..3] indicating which point in the expanded quad the vertex represents.\r\n */\r\n readonly endPointAndQuadIndices: Uint8Array;\r\n}\r\n\r\nfunction convertPolylinesAndEdges(polylines?: PolylineData[], edges?: MeshEdge[]): SegmentEdgeParams | undefined {\r\n let numIndices = undefined !== edges ? edges.length : 0;\r\n if (undefined !== polylines)\r\n for (const pd of polylines)\r\n numIndices += (pd.vertIndices.length - 1);\r\n\r\n if (0 === numIndices)\r\n return undefined;\r\n\r\n numIndices *= 6;\r\n const indexBytes = new Uint8Array(numIndices * 3);\r\n const endPointAndQuadIndexBytes = new Uint8Array(numIndices * 4);\r\n\r\n let ndx: number = 0;\r\n let ndx2: number = 0;\r\n\r\n const addPoint = (p0: number, p1: number, quadIndex: number) => {\r\n VertexIndices.encodeIndex(p0, indexBytes, ndx);\r\n ndx += 3;\r\n VertexIndices.encodeIndex(p1, endPointAndQuadIndexBytes, ndx2);\r\n endPointAndQuadIndexBytes[ndx2 + 3] = quadIndex;\r\n ndx2 += 4;\r\n };\r\n\r\n if (undefined !== polylines) {\r\n for (const pd of polylines) {\r\n const num = pd.vertIndices.length - 1;\r\n for (let i = 0; i < num; ++i) {\r\n let p0 = pd.vertIndices[i];\r\n let p1 = pd.vertIndices[i + 1];\r\n if (p1 < p0) { // swap so that lower index is first.\r\n p0 = p1;\r\n p1 = pd.vertIndices[i];\r\n }\r\n addPoint(p0, p1, 0);\r\n addPoint(p1, p0, 2);\r\n addPoint(p0, p1, 1);\r\n addPoint(p0, p1, 1);\r\n addPoint(p1, p0, 2);\r\n addPoint(p1, p0, 3);\r\n }\r\n }\r\n }\r\n\r\n if (undefined !== edges) {\r\n for (const meshEdge of edges) {\r\n const p0 = meshEdge.indices[0];\r\n const p1 = meshEdge.indices[1];\r\n addPoint(p0, p1, 0);\r\n addPoint(p1, p0, 2);\r\n addPoint(p0, p1, 1);\r\n addPoint(p0, p1, 1);\r\n addPoint(p1, p0, 2);\r\n addPoint(p1, p0, 3);\r\n }\r\n }\r\n\r\n return {\r\n indices: new VertexIndices(indexBytes),\r\n endPointAndQuadIndices: endPointAndQuadIndexBytes,\r\n };\r\n}\r\n\r\n/**\r\n * A set of line segments representing edges of curved portions of a mesh.\r\n * Each vertex is augmented with a pair of oct-encoded normals used in the shader\r\n * to determine whether or not the edge should be displayed.\r\n * @internal\r\n */\r\nexport interface SilhouetteParams extends SegmentEdgeParams {\r\n /** Per index, 2 16-bit oct-encoded normals */\r\n readonly normalPairs: Uint8Array;\r\n}\r\n\r\nfunction convertSilhouettes(edges: MeshEdge[], normalPairs: OctEncodedNormalPair[]): SilhouetteParams | undefined {\r\n const base = convertPolylinesAndEdges(undefined, edges);\r\n if (undefined === base)\r\n return undefined;\r\n\r\n const normalPairBytes = new Uint8Array(normalPairs.length * 6 * 4);\r\n const normalPair16 = new Uint16Array(normalPairBytes.buffer);\r\n\r\n let ndx = 0;\r\n for (const pair of normalPairs) {\r\n for (let i = 0; i < 6; i++) {\r\n normalPair16[ndx++] = pair.first.value;\r\n normalPair16[ndx++] = pair.second.value;\r\n }\r\n }\r\n\r\n return {\r\n indices: base.indices,\r\n endPointAndQuadIndices: base.endPointAndQuadIndices,\r\n normalPairs: normalPairBytes,\r\n };\r\n}\r\n\r\n/** Describes the edges of a mesh. */\r\nexport interface EdgeParams {\r\n /** The edge width in pixels. */\r\n readonly weight: number;\r\n /** The line pattern in which edges are drawn. */\r\n readonly linePixels: LinePixels;\r\n /** Simple single-segment edges, always displayed when edge display is enabled. */\r\n readonly segments?: SegmentEdgeParams;\r\n /** Single-segment edges of curved surfaces, displayed based on edge normal relative to eye. */\r\n readonly silhouettes?: SilhouetteParams;\r\n /** Polyline edges, always displayed when edge display is enabled. */\r\n readonly polylines?: TesselatedPolyline;\r\n}\r\n\r\nexport namespace EdgeParams {\r\n export function fromMeshArgs(meshArgs: MeshArgs): EdgeParams | undefined {\r\n const args = meshArgs.edges;\r\n if (undefined === args)\r\n return undefined;\r\n\r\n let polylines: TesselatedPolyline | undefined;\r\n let segments: SegmentEdgeParams | undefined;\r\n if (wantJointTriangles(args.width, meshArgs.is2d)) {\r\n segments = convertPolylinesAndEdges(args.polylines.lines, args.edges.edges);\r\n } else {\r\n segments = convertPolylinesAndEdges(undefined, args.edges.edges);\r\n polylines = TesselatedPolyline.fromMesh(meshArgs);\r\n }\r\n\r\n // ###TODO: why the heck are the edges and normals of SilhouetteEdgeArgs potentially undefined???\r\n const silhouettes = undefined !== args.silhouettes.edges && undefined !== args.silhouettes.normals ? convertSilhouettes(args.silhouettes.edges, args.silhouettes.normals) : undefined;\r\n if (undefined === segments && undefined === silhouettes && undefined === polylines)\r\n return undefined;\r\n\r\n return {\r\n weight: args.width,\r\n linePixels: args.linePixels,\r\n segments,\r\n silhouettes,\r\n polylines,\r\n };\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"EdgeParams.js","sourceRoot":"","sources":["../../../../src/render/primitives/EdgeParams.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 Rendering\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { LinePixels, MeshEdge, OctEncodedNormalPair, PolylineData } from \"@itwin/core-common\";\r\nimport { MeshArgs, MeshArgsEdges } from \"./mesh/MeshPrimitives\";\r\nimport { VertexIndices } from \"./VertexTable\";\r\nimport { TesselatedPolyline, wantJointTriangles } from \"./PolylineParams\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\n\r\n/**\r\n * Describes a set of line segments representing edges of a mesh.\r\n * Each segment is expanded into a quad defined by two triangles.\r\n * The positions are adjusted in the shader to account for the edge width.\r\n * @internal\r\n */\r\nexport interface SegmentEdgeParams {\r\n /** The 24-bit indices of the tesselated line segment */\r\n readonly indices: VertexIndices;\r\n /**\r\n * For each 24-bit index, 4 bytes:\r\n * the 24-bit index of the vertex at the other end of the segment, followed by\r\n * an 8-bit 'quad index' in [0..3] indicating which point in the expanded quad the vertex represents.\r\n */\r\n readonly endPointAndQuadIndices: Uint8Array;\r\n}\r\n\r\nfunction convertPolylinesAndEdges(polylines?: PolylineData[], edges?: MeshEdge[]): SegmentEdgeParams | undefined {\r\n let numIndices = undefined !== edges ? edges.length : 0;\r\n if (undefined !== polylines)\r\n for (const pd of polylines)\r\n numIndices += (pd.vertIndices.length - 1);\r\n\r\n if (0 === numIndices)\r\n return undefined;\r\n\r\n numIndices *= 6;\r\n const indexBytes = new Uint8Array(numIndices * 3);\r\n const endPointAndQuadIndexBytes = new Uint8Array(numIndices * 4);\r\n\r\n let ndx: number = 0;\r\n let ndx2: number = 0;\r\n\r\n const addPoint = (p0: number, p1: number, quadIndex: number) => {\r\n VertexIndices.encodeIndex(p0, indexBytes, ndx);\r\n ndx += 3;\r\n VertexIndices.encodeIndex(p1, endPointAndQuadIndexBytes, ndx2);\r\n endPointAndQuadIndexBytes[ndx2 + 3] = quadIndex;\r\n ndx2 += 4;\r\n };\r\n\r\n if (undefined !== polylines) {\r\n for (const pd of polylines) {\r\n const num = pd.vertIndices.length - 1;\r\n for (let i = 0; i < num; ++i) {\r\n let p0 = pd.vertIndices[i];\r\n let p1 = pd.vertIndices[i + 1];\r\n if (p1 < p0) { // swap so that lower index is first.\r\n p0 = p1;\r\n p1 = pd.vertIndices[i];\r\n }\r\n addPoint(p0, p1, 0);\r\n addPoint(p1, p0, 2);\r\n addPoint(p0, p1, 1);\r\n addPoint(p0, p1, 1);\r\n addPoint(p1, p0, 2);\r\n addPoint(p1, p0, 3);\r\n }\r\n }\r\n }\r\n\r\n if (undefined !== edges) {\r\n for (const meshEdge of edges) {\r\n const p0 = meshEdge.indices[0];\r\n const p1 = meshEdge.indices[1];\r\n addPoint(p0, p1, 0);\r\n addPoint(p1, p0, 2);\r\n addPoint(p0, p1, 1);\r\n addPoint(p0, p1, 1);\r\n addPoint(p1, p0, 2);\r\n addPoint(p1, p0, 3);\r\n }\r\n }\r\n\r\n return {\r\n indices: new VertexIndices(indexBytes),\r\n endPointAndQuadIndices: endPointAndQuadIndexBytes,\r\n };\r\n}\r\n\r\n/**\r\n * A set of line segments representing edges of curved portions of a mesh.\r\n * Each vertex is augmented with a pair of oct-encoded normals used in the shader\r\n * to determine whether or not the edge should be displayed.\r\n * @internal\r\n */\r\nexport interface SilhouetteParams extends SegmentEdgeParams {\r\n /** Per index, 2 16-bit oct-encoded normals */\r\n readonly normalPairs: Uint8Array;\r\n}\r\n\r\nfunction convertSilhouettes(edges: MeshEdge[], normalPairs: OctEncodedNormalPair[]): SilhouetteParams | undefined {\r\n const base = convertPolylinesAndEdges(undefined, edges);\r\n if (undefined === base)\r\n return undefined;\r\n\r\n const normalPairBytes = new Uint8Array(normalPairs.length * 6 * 4);\r\n const normalPair16 = new Uint16Array(normalPairBytes.buffer);\r\n\r\n let ndx = 0;\r\n for (const pair of normalPairs) {\r\n for (let i = 0; i < 6; i++) {\r\n normalPair16[ndx++] = pair.first.value;\r\n normalPair16[ndx++] = pair.second.value;\r\n }\r\n }\r\n\r\n return {\r\n indices: base.indices,\r\n endPointAndQuadIndices: base.endPointAndQuadIndices,\r\n normalPairs: normalPairBytes,\r\n };\r\n}\r\n\r\n/** A lookup table of edges for a mesh. The table is partitioned such that the lower partition contains simple segment edges\r\n * and the upper partition contains silhouette edges. Each entry in the lower partition consists of 2 24-bit indices into\r\n * a [[VertexTable]] from which to obtain the endpoints of the edge. Each entry in the upper partition consists of 2 24-bit\r\n * vertex indices followed by two 16-bit [[OctEncodedNormal]]s.\r\n * If both partitions exist then one row may exist between them containing a mix of segments and silhouettes; in this case a handful\r\n * of padding bytes may exist between the last segment and the first silhouette.\r\n * @see [[IndexedEdgeParams.edges]].\r\n * @internal\r\n */\r\nexport interface EdgeTable {\r\n /** The rectangular lookup table. */\r\n readonly data: Uint8Array;\r\n /** Width of the table. */\r\n readonly width: number;\r\n /** Height of the table. */\r\n readonly height: number;\r\n /** The number of segments in the lower partition. */\r\n readonly numSegments: number;\r\n /** The number of padding bytes inserted between the partitions to preserve alignment of data. */\r\n readonly silhouettePadding: number;\r\n}\r\n\r\n/** Describes the edges of a surface as a lookup table. Each edge consists of six identical indices into the lookup table, forming a quad.\r\n * @see [[EdgeParams.indexed]].\r\n * @internal\r\n */\r\nexport interface IndexedEdgeParams {\r\n /** The indices into [[edges]]. */\r\n readonly indices: VertexIndices;\r\n /** The lookup table indexed by [[indices]]. */\r\n readonly edges: EdgeTable;\r\n}\r\n\r\nfunction buildIndexedEdges(args: MeshArgsEdges, doPolylines: boolean, maxSize: number): IndexedEdgeParams | undefined {\r\n const hardEdges = args.edges?.edges;\r\n const silhouettes = args.silhouettes;\r\n const polylines = doPolylines ? args.polylines?.lines : undefined;\r\n\r\n const numHardEdges = hardEdges?.length ?? 0;\r\n const numSilhouettes = silhouettes?.edges?.length ?? 0;\r\n const numPolylines = polylines ? polylines.reduce((count: number, pd: PolylineData) => count + Math.max(0, pd.vertIndices.length - 1), 0) : 0;\r\n const numSegmentEdges = numHardEdges + numPolylines;\r\n const numTotalEdges = numSegmentEdges + numSilhouettes;\r\n if (numTotalEdges === 0)\r\n return undefined;\r\n\r\n // Each edge is a quad consisting of six vertices. Each vertex is an identical 24-bit index into the lookup table.\r\n const indices = new VertexIndices(new Uint8Array(numTotalEdges * 6 * 3));\r\n for (let i = 0; i < numTotalEdges; i++)\r\n for (let j = 0; j < 6; j++)\r\n indices.setNthIndex(i * 6 + j, i);\r\n\r\n // Each segment edge requires 2 24-bit indices = 6 bytes = 1.5 RGBA values.\r\n // Each silhouette requires the same as segment edge plus 2 16-bit oct-encoded normals = 10 bytes = 2.5 RGBA values.\r\n let nRgbaRequired = Math.ceil(1.5 * numSegmentEdges + 2.5 * numSilhouettes);\r\n let dimensions;\r\n const silhouetteStartByteIndex = numSegmentEdges * 6;\r\n let silhouettePadding = 0;\r\n if (nRgbaRequired < maxSize) {\r\n dimensions = { width: nRgbaRequired, height: 1 };\r\n } else {\r\n // Make roughly square to reduce unused space in last row.\r\n let width = Math.ceil(Math.sqrt(nRgbaRequired));\r\n // Each entry's data must fit on the same row. 15 RGBA = 60 bytes = lowest common multiple of 6, 10, and 4.\r\n const remainder = width % 15;\r\n if (0 !== remainder)\r\n width += 15 - remainder;\r\n\r\n // If the table contains both segments and silhouettes, there may be one row containing a mix of the two where padding\r\n // is required between them.\r\n if (numSilhouettes > 0 && numSegmentEdges > 0) {\r\n const silOffset = silhouetteStartByteIndex % 60; // some multiple of 6.\r\n silhouettePadding = (60 - silOffset) % 10;\r\n nRgbaRequired += Math.ceil(silhouettePadding / 4);\r\n }\r\n\r\n let height = Math.ceil(nRgbaRequired / width);\r\n if (width * height < nRgbaRequired)\r\n height++;\r\n\r\n dimensions = { width, height };\r\n }\r\n\r\n const data = new Uint8Array(dimensions.width * dimensions.height * 4);\r\n function setUint24(byteIndex: number, value: number): void {\r\n data[byteIndex + 0] = value & 0x0000ff;\r\n data[byteIndex + 1] = (value & 0x00ff00) >>> 8;\r\n data[byteIndex + 2] = (value & 0xff0000) >>> 16;\r\n }\r\n\r\n function setEdge(index: number, startPointIndex: number, endPointIndex: number): void {\r\n const byteIndex = index * 6;\r\n setUint24(byteIndex, startPointIndex);\r\n setUint24(byteIndex + 3, endPointIndex);\r\n }\r\n\r\n let curIndex = 0;\r\n if (hardEdges)\r\n for (const edge of hardEdges)\r\n setEdge(curIndex++, edge.indices[0], edge.indices[1]);\r\n\r\n if (polylines) {\r\n for (const pd of polylines) {\r\n const num = pd.vertIndices.length - 1;\r\n for (let i = 0; i < num; i++) {\r\n const p0 = pd.vertIndices[i];\r\n const p1 = pd.vertIndices[i + 1];\r\n // Ensure lower index is first.\r\n if (p0 < p1)\r\n setEdge(curIndex++, p0, p1);\r\n else\r\n setEdge(curIndex++, p1, p0);\r\n }\r\n }\r\n }\r\n\r\n if (silhouettes?.edges) {\r\n assert(undefined !== silhouettes.normals);\r\n assert(silhouettes.normals.length === silhouettes.edges.length);\r\n function setSilhouette(index: number, start: number, end: number, normals: OctEncodedNormalPair): void {\r\n const byteIndex = silhouetteStartByteIndex + silhouettePadding + index * 10;\r\n setUint24(byteIndex, start);\r\n setUint24(byteIndex + 3, end);\r\n data[byteIndex + 6] = normals.first.value & 0xff;\r\n data[byteIndex + 7] = (normals.first.value & 0xff00) >>> 8;\r\n data[byteIndex + 8] = normals.second.value & 0xff;\r\n data[byteIndex + 9] = (normals.second.value & 0xff00) >>> 8;\r\n }\r\n\r\n curIndex = 0;\r\n for (let i = 0; i < silhouettes.edges.length; i++)\r\n setSilhouette(curIndex++, silhouettes.edges[i].indices[0], silhouettes.edges[i].indices[1], silhouettes.normals[i]);\r\n }\r\n\r\n return {\r\n indices,\r\n edges: {\r\n data,\r\n width: dimensions.width,\r\n height: dimensions.height,\r\n numSegments: numSegmentEdges,\r\n silhouettePadding,\r\n },\r\n };\r\n}\r\n\r\n/** Describes the edges of a mesh. */\r\nexport interface EdgeParams {\r\n /** The edge width in pixels. */\r\n readonly weight: number;\r\n /** The line pattern in which edges are drawn. */\r\n readonly linePixels: LinePixels;\r\n /** Simple single-segment edges, always displayed when edge display is enabled. */\r\n readonly segments?: SegmentEdgeParams;\r\n /** Single-segment edges of curved surfaces, displayed based on edge normal relative to eye. */\r\n readonly silhouettes?: SilhouetteParams;\r\n /** Polyline edges, always displayed when edge display is enabled. */\r\n readonly polylines?: TesselatedPolyline;\r\n /** Silhouettes and simple-segment edges, compactly represented as indices into a lookup table. */\r\n readonly indexed?: IndexedEdgeParams;\r\n}\r\n\r\n/** @internal */\r\nexport namespace EdgeParams {\r\n export function fromMeshArgs(meshArgs: MeshArgs, maxWidth?: number): EdgeParams | undefined {\r\n const args = meshArgs.edges;\r\n const doJoints = wantJointTriangles(args.width, meshArgs.is2d);\r\n const polylines = doJoints ? TesselatedPolyline.fromMesh(meshArgs) : undefined;\r\n\r\n let segments: SegmentEdgeParams | undefined;\r\n let silhouettes: SilhouetteParams | undefined;\r\n let indexed: IndexedEdgeParams | undefined;\r\n\r\n if (IModelApp.tileAdmin.enableIndexedEdges) {\r\n indexed = buildIndexedEdges(args, !doJoints, maxWidth ?? IModelApp.renderSystem.maxTextureSize);\r\n } else {\r\n segments = convertPolylinesAndEdges(undefined, args.edges.edges);\r\n silhouettes = args.silhouettes.edges && args.silhouettes.normals ? convertSilhouettes(args.silhouettes.edges, args.silhouettes.normals) : undefined;\r\n }\r\n\r\n if (!segments && !silhouettes && !polylines && !indexed)\r\n return undefined;\r\n\r\n return {\r\n weight: args.width,\r\n linePixels: args.linePixels,\r\n segments,\r\n silhouettes,\r\n polylines,\r\n indexed,\r\n };\r\n }\r\n}\r\n"]}
@@ -23,6 +23,7 @@ export declare class VertexIndices {
23
23
  /** Convert an array of 24-bit unsigned integer values into a VertexIndices object. */
24
24
  static fromArray(indices: number[]): VertexIndices;
25
25
  static encodeIndex(index: number, bytes: Uint8Array, byteIndex: number): void;
26
+ setNthIndex(n: number, value: number): void;
26
27
  decodeIndex(index: number): number;
27
28
  decodeIndices(): number[];
28
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VertexTable.d.ts","sourceRoot":"","sources":["../../../../src/render/primitives/VertexTable.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VertexTable.d.ts","sourceRoot":"","sources":["../../../../src/render/primitives/VertexTable.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,9 @@ export class VertexIndices {
41
41
  bytes[byteIndex + 1] = (index & 0x0000ff00) >> 8;
42
42
  bytes[byteIndex + 2] = (index & 0x00ff0000) >> 16;
43
43
  }
44
+ setNthIndex(n, value) {
45
+ VertexIndices.encodeIndex(value, this.data, n * 3);
46
+ }
44
47
  decodeIndex(index) {
45
48
  assert(index < this.length);
46
49
  const byteIndex = index * 3;
@@ -67,7 +70,9 @@ export function computeDimensions(nEntries, nRgbaPerEntry, nExtraRgba) {
67
70
  width += nRgbaPerEntry - remainder;
68
71
  }
69
72
  // Compute height
70
- const height = Math.ceil(nRgba / width);
73
+ let height = Math.ceil(nRgba / width);
74
+ if (width * height < nRgba)
75
+ ++height;
71
76
  assert(height <= maxSize);
72
77
  assert(width <= maxSize);
73
78
  assert(width * height >= nRgba);
@@ -1 +1 @@
1
- {"version":3,"file":"VertexTable.js","sourceRoot":"","sources":["../../../../src/render/primitives/VertexTable.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 Rendering\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Point2d, Range2d } from \"@itwin/core-geometry\";\r\nimport { ColorDef, ColorIndex, FeatureIndex, FeatureIndexType, QParams2d, QParams3d, QPoint2d } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { AuxChannelTable } from \"./AuxChannelTable\";\r\nimport { MeshArgs, PolylineArgs } from \"./mesh/MeshPrimitives\";\r\nimport { createSurfaceMaterial, SurfaceParams, SurfaceType } from \"./SurfaceParams\";\r\nimport { EdgeParams } from \"./EdgeParams\";\r\n\r\n/**\r\n * Holds an array of indices into a VertexTable. Each index is a 24-bit unsigned integer.\r\n * The order of the indices specifies the order in which vertices are drawn.\r\n * @internal\r\n */\r\nexport class VertexIndices {\r\n public readonly data: Uint8Array;\r\n\r\n /**\r\n * Directly construct from an array of bytes in which each index occupies 3 contiguous bytes.\r\n * The length of the array must be a multiple of 3. This object takes ownership of the array.\r\n */\r\n public constructor(data: Uint8Array) {\r\n this.data = data;\r\n assert(0 === this.data.length % 3);\r\n }\r\n\r\n /** Get the number of 24-bit indices. */\r\n public get length(): number { return this.data.length / 3; }\r\n\r\n /** Convert an array of 24-bit unsigned integer values into a VertexIndices object. */\r\n public static fromArray(indices: number[]): VertexIndices {\r\n const bytes = new Uint8Array(indices.length * 3);\r\n for (let i = 0; i < indices.length; i++)\r\n this.encodeIndex(indices[i], bytes, i * 3);\r\n\r\n return new VertexIndices(bytes);\r\n }\r\n\r\n public static encodeIndex(index: number, bytes: Uint8Array, byteIndex: number): void {\r\n assert(byteIndex + 2 < bytes.length);\r\n bytes[byteIndex + 0] = index & 0x000000ff;\r\n bytes[byteIndex + 1] = (index & 0x0000ff00) >> 8;\r\n bytes[byteIndex + 2] = (index & 0x00ff0000) >> 16;\r\n }\r\n\r\n public decodeIndex(index: number): number {\r\n assert(index < this.length);\r\n const byteIndex = index * 3;\r\n return this.data[byteIndex] | (this.data[byteIndex + 1] << 8) | (this.data[byteIndex + 2] << 16);\r\n }\r\n\r\n public decodeIndices(): number[] {\r\n const indices = [];\r\n for (let i = 0; i < this.length; i++)\r\n indices.push(this.decodeIndex(i));\r\n\r\n return indices;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface Dimensions {\r\n width: number;\r\n height: number;\r\n}\r\n\r\n/** @internal */\r\nexport function computeDimensions(nEntries: number, nRgbaPerEntry: number, nExtraRgba: number): Dimensions {\r\n const maxSize = IModelApp.renderSystem.maxTextureSize;\r\n const nRgba = nEntries * nRgbaPerEntry + 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\n/** Describes a VertexTable.\r\n * @internal\r\n */\r\nexport interface VertexTableProps {\r\n /** The rectangular array of vertex data, of size width*height*numRgbaPerVertex bytes. */\r\n readonly data: Uint8Array;\r\n /** Quantization parameters for the vertex positions encoded into the array. */\r\n readonly qparams: QParams3d;\r\n /** The number of 4-byte 'RGBA' values in each row of the array. Must be divisible by numRgbaPerVertex. */\r\n readonly width: number;\r\n /** The number of rows in the array. */\r\n readonly height: number;\r\n /** Whether or not the vertex colors contain translucent colors. */\r\n readonly hasTranslucency: boolean;\r\n /** If no color table exists, the color to use for all vertices. */\r\n readonly uniformColor?: ColorDef;\r\n /** Describes the number of features (none, one, or multiple) contained. */\r\n readonly featureIndexType: FeatureIndexType;\r\n /** If featureIndexType is 'Uniform', the feature ID associated with all vertices. */\r\n readonly uniformFeatureID?: number;\r\n /** The number of vertices in the table. Must be less than (width*height)/numRgbaPerVertex. */\r\n readonly numVertices: number;\r\n /** The number of 4-byte 'RGBA' values associated with each vertex. */\r\n readonly numRgbaPerVertex: number;\r\n /** If vertex data include texture UV coordinates, the quantization params for those coordinates. */\r\n readonly uvParams?: QParams2d;\r\n}\r\n\r\n/**\r\n * Represents vertex data (position, color, normal, UV params, etc) in a rectangular array.\r\n * Each vertex is described by one or more contiguous 4-byte ('RGBA') values.\r\n * This allows vertex data to be uploaded to the GPU as a texture and vertex data to be sampled\r\n * from that texture using a single vertex ID representing an index into the array.\r\n * Vertex color is identified by a 16-bit index into a color table appended to the vertex data.\r\n * @internal\r\n */\r\nexport class VertexTable implements VertexTableProps {\r\n /** The rectangular array of vertex data, of size width*height*numRgbaPerVertex bytes. */\r\n public readonly data: Uint8Array;\r\n /** Quantization parameters for the vertex positions encoded into the array. */\r\n public readonly qparams: QParams3d;\r\n /** The number of 4-byte 'RGBA' values in each row of the array. Must be divisible by numRgbaPerVertex. */\r\n public readonly width: number;\r\n /** The number of rows in the array. */\r\n public readonly height: number;\r\n /** Whether or not the vertex colors contain translucent colors. */\r\n public readonly hasTranslucency: boolean;\r\n /** If no color table exists, the color to use for all vertices. */\r\n public readonly uniformColor?: ColorDef;\r\n /** Describes the number of features (none, one, or multiple) contained. */\r\n public readonly featureIndexType: FeatureIndexType;\r\n /** If featureIndexType is 'Uniform', the feature ID associated with all vertices. */\r\n public readonly uniformFeatureID?: number;\r\n /** The number of vertices in the table. Must be less than (width*height)/numRgbaPerVertex. */\r\n public readonly numVertices: number;\r\n /** The number of 4-byte 'RGBA' values associated with each vertex. */\r\n public readonly numRgbaPerVertex: number;\r\n /** If vertex data include texture UV coordinates, the quantization params for those coordinates. */\r\n public readonly uvParams?: QParams2d;\r\n\r\n /** Construct a VertexTable. The VertexTable takes ownership of all input data - it must not be later modified by the caller. */\r\n public constructor(props: VertexTableProps) {\r\n this.data = props.data;\r\n this.qparams = props.qparams;\r\n this.width = props.width;\r\n this.height = props.height;\r\n this.hasTranslucency = true === props.hasTranslucency;\r\n this.uniformColor = props.uniformColor;\r\n this.featureIndexType = props.featureIndexType;\r\n this.uniformFeatureID = props.uniformFeatureID;\r\n this.numVertices = props.numVertices;\r\n this.numRgbaPerVertex = props.numRgbaPerVertex;\r\n this.uvParams = props.uvParams;\r\n }\r\n\r\n public static buildFrom(builder: VertexTableBuilder, colorIndex: ColorIndex, featureIndex: FeatureIndex): VertexTable {\r\n const { numVertices, numRgbaPerVertex } = builder;\r\n const numColors = colorIndex.isUniform ? 0 : colorIndex.numColors;\r\n const dimensions = computeDimensions(numVertices, numRgbaPerVertex, numColors);\r\n assert(0 === dimensions.width % numRgbaPerVertex || (0 < numColors && 1 === dimensions.height));\r\n\r\n const data = new Uint8Array(dimensions.width * dimensions.height * 4);\r\n\r\n builder.data = data;\r\n for (let i = 0; i < numVertices; i++)\r\n builder.appendVertex(i);\r\n\r\n builder.appendColorTable(colorIndex);\r\n\r\n builder.data = undefined;\r\n\r\n return new VertexTable({\r\n data,\r\n qparams: builder.qparams,\r\n width: dimensions.width,\r\n height: dimensions.height,\r\n hasTranslucency: colorIndex.hasAlpha,\r\n uniformColor: colorIndex.uniform,\r\n numVertices,\r\n numRgbaPerVertex,\r\n uvParams: builder.uvParams,\r\n featureIndexType: featureIndex.type,\r\n uniformFeatureID: featureIndex.type === FeatureIndexType.Uniform ? featureIndex.featureID : undefined,\r\n });\r\n }\r\n\r\n public static createForPolylines(args: PolylineArgs): VertexTable | undefined {\r\n const polylines = args.polylines;\r\n if (0 < polylines.length)\r\n return this.buildFrom(new SimpleBuilder(args), args.colors, args.features);\r\n else\r\n return undefined;\r\n }\r\n}\r\n\r\n/**\r\n * Describes mesh geometry to be submitted to the rendering system.\r\n * A mesh consists of a surface and its edges, which may include any combination of silhouettes, polylines, and single segments.\r\n * The surface and edges all refer to the same vertex table.\r\n */\r\nexport class MeshParams {\r\n public readonly vertices: VertexTable;\r\n public readonly surface: SurfaceParams;\r\n public readonly edges?: EdgeParams;\r\n public readonly isPlanar: boolean;\r\n public readonly auxChannels?: AuxChannelTable;\r\n\r\n /** Directly construct a MeshParams. The MeshParams takes ownership of all input data. */\r\n public constructor(vertices: VertexTable, surface: SurfaceParams, edges?: EdgeParams, isPlanar?: boolean, auxChannels?: AuxChannelTable) {\r\n this.vertices = vertices;\r\n this.surface = surface;\r\n this.edges = edges;\r\n this.isPlanar = !!isPlanar;\r\n this.auxChannels = auxChannels;\r\n }\r\n\r\n /** Construct from a MeshArgs. */\r\n public static create(args: MeshArgs): MeshParams {\r\n const builder = MeshBuilder.create(args);\r\n const vertices = VertexTable.buildFrom(builder, args.colors, args.features);\r\n\r\n const surfaceIndices = VertexIndices.fromArray(args.vertIndices!);\r\n\r\n const surface: SurfaceParams = {\r\n type: builder.type,\r\n indices: surfaceIndices,\r\n fillFlags: args.fillFlags,\r\n hasBakedLighting: args.hasBakedLighting,\r\n hasFixedNormals: args.hasFixedNormals,\r\n textureMapping: undefined !== args.texture ? { texture: args.texture, alwaysDisplayed: false } : undefined,\r\n material: createSurfaceMaterial(args.material),\r\n };\r\n\r\n const channels = undefined !== args.auxChannels ? AuxChannelTable.fromChannels(args.auxChannels, vertices.numVertices) : undefined;\r\n const edges = EdgeParams.fromMeshArgs(args);\r\n return new MeshParams(vertices, surface, edges, args.isPlanar, channels);\r\n }\r\n}\r\n\r\n/** Builds a VertexTable from some data type supplying the vertex data. */\r\nexport abstract class VertexTableBuilder {\r\n public data?: Uint8Array;\r\n private _curIndex: number = 0;\r\n\r\n public abstract get numVertices(): number;\r\n public abstract get numRgbaPerVertex(): number;\r\n public abstract get qparams(): QParams3d;\r\n public get uvParams(): QParams2d | undefined { return undefined; }\r\n public abstract appendVertex(vertIndex: number): void;\r\n\r\n public appendColorTable(colorIndex: ColorIndex) {\r\n if (undefined !== colorIndex.nonUniform) {\r\n for (const color of colorIndex.nonUniform.colors) {\r\n this.appendColor(color);\r\n }\r\n }\r\n }\r\n\r\n protected advance(nBytes: number) {\r\n this._curIndex += nBytes;\r\n assert(this._curIndex <= this.data!.length);\r\n }\r\n\r\n protected append8(val: number) {\r\n assert(0 <= val);\r\n assert(val <= 0xff);\r\n assert(val === Math.floor(val));\r\n\r\n this.data![this._curIndex] = val;\r\n this.advance(1);\r\n }\r\n protected append16(val: number) {\r\n this.append8(val & 0x00ff);\r\n this.append8(val >>> 8);\r\n }\r\n protected append32(val: number) {\r\n this.append16(val & 0x0000ffff);\r\n this.append16(val >>> 16);\r\n }\r\n\r\n private appendColor(tbgr: number) {\r\n const colors = ColorDef.getColors(tbgr);\r\n\r\n // invert transparency => alpha\r\n colors.t = 255 - colors.t;\r\n\r\n // premultiply alpha...\r\n switch (colors.t) {\r\n case 0:\r\n colors.r = colors.g = colors.b = 0;\r\n break;\r\n case 255:\r\n break;\r\n default: {\r\n const f = colors.t / 255.0;\r\n colors.r = Math.floor(colors.r * f + 0.5);\r\n colors.g = Math.floor(colors.g * f + 0.5);\r\n colors.b = Math.floor(colors.b * f + 0.5);\r\n break;\r\n }\r\n }\r\n\r\n // Store 32-bit value in little-endian order (red first)\r\n this.append8(colors.r);\r\n this.append8(colors.g);\r\n this.append8(colors.b);\r\n this.append8(colors.t);\r\n }\r\n}\r\n\r\ntype SimpleVertexData = PolylineArgs | MeshArgs;\r\n\r\n/**\r\n * Supplies vertex data from a PolylineArgs or MeshArgs. Each vertex consists of 12 bytes:\r\n * pos.x 00\r\n * pos.y 02\r\n * pos.z 04\r\n * colorIndex 06\r\n * featureIndex 08\r\n */\r\nclass SimpleBuilder<T extends SimpleVertexData> extends VertexTableBuilder {\r\n public args: T;\r\n\r\n public constructor(args: T) {\r\n super();\r\n this.args = args;\r\n assert(undefined !== this.args.points);\r\n }\r\n\r\n public get numVertices() { return this.args.points!.length; }\r\n public get numRgbaPerVertex() { return 3; }\r\n public get qparams() { return this.args.points!.params; }\r\n\r\n public appendVertex(vertIndex: number): void {\r\n this.appendPosition(vertIndex);\r\n this.appendColorIndex(vertIndex);\r\n this.appendFeatureIndex(vertIndex);\r\n }\r\n\r\n protected appendPosition(vertIndex: number) {\r\n const points = this.args.points!;\r\n this.append16(points.list[vertIndex].x);\r\n this.append16(points.list[vertIndex].y);\r\n this.append16(points.list[vertIndex].z);\r\n }\r\n\r\n protected appendColorIndex(vertIndex: number) {\r\n if (undefined !== this.args.colors.nonUniform) {\r\n this.append16(this.args.colors.nonUniform.indices[vertIndex]);\r\n } else {\r\n this.advance(2);\r\n }\r\n }\r\n\r\n protected appendFeatureIndex(vertIndex: number) {\r\n if (undefined !== this.args.features.featureIDs) {\r\n this.append32(this.args.features.featureIDs[vertIndex]);\r\n } else {\r\n this.advance(4);\r\n }\r\n }\r\n}\r\n\r\n/** Supplies vertex data from a MeshArgs. */\r\nclass MeshBuilder extends SimpleBuilder<MeshArgs> {\r\n public readonly type: SurfaceType;\r\n\r\n protected constructor(args: MeshArgs, type: SurfaceType) {\r\n super(args);\r\n this.type = type;\r\n }\r\n\r\n public static create(args: MeshArgs): MeshBuilder {\r\n if (args.isVolumeClassifier)\r\n return new MeshBuilder(args, SurfaceType.VolumeClassifier);\r\n\r\n const isLit = undefined !== args.normals && 0 < args.normals.length;\r\n const isTextured = undefined !== args.texture;\r\n\r\n let uvParams: QParams2d | undefined;\r\n\r\n if (isTextured) {\r\n const uvRange = Range2d.createNull();\r\n const fpts = args.textureUv;\r\n const pt2d = new Point2d();\r\n if (undefined !== fpts && fpts.length > 0)\r\n for (let i = 0; i < args.points!.length; i++)\r\n uvRange.extendPoint(Point2d.create(fpts[i].x, fpts[i].y, pt2d));\r\n\r\n uvParams = QParams2d.fromRange(uvRange);\r\n }\r\n\r\n if (isLit)\r\n return isTextured ? new TexturedLitMeshBuilder(args, uvParams!) : new LitMeshBuilder(args);\r\n else\r\n return isTextured ? new TexturedMeshBuilder(args, uvParams!) : new MeshBuilder(args, SurfaceType.Unlit);\r\n }\r\n}\r\n\r\n/** Supplies vertex data from a MeshArgs where each vertex consists of 16 bytes.\r\n * In addition to the SimpleBuilder data, the final 4 bytes hold the quantized UV params\r\n * The color index is left uninitialized as it is unused.\r\n */\r\nclass TexturedMeshBuilder extends MeshBuilder {\r\n private _qparams: QParams2d;\r\n private _qpoint = new QPoint2d();\r\n\r\n public constructor(args: MeshArgs, qparams: QParams2d, type: SurfaceType = SurfaceType.Textured) {\r\n super(args, type);\r\n this._qparams = qparams;\r\n assert(undefined !== args.textureUv);\r\n }\r\n\r\n public override get numRgbaPerVertex() { return 4; }\r\n public override get uvParams() { return this._qparams; }\r\n\r\n public override appendVertex(vertIndex: number) {\r\n this.appendPosition(vertIndex);\r\n this.appendNormal(vertIndex);\r\n this.appendFeatureIndex(vertIndex);\r\n this.appendUVParams(vertIndex);\r\n }\r\n\r\n protected appendNormal(_vertIndex: number): void { this.advance(2); } // no normal for unlit meshes\r\n\r\n protected appendUVParams(vertIndex: number) {\r\n this._qpoint.init(this.args.textureUv![vertIndex], this._qparams);\r\n this.append16(this._qpoint.x);\r\n this.append16(this._qpoint.y);\r\n }\r\n}\r\n\r\n/** As with TexturedMeshBuilder, but the color index is replaced with the oct-encoded normal value. */\r\nclass TexturedLitMeshBuilder extends TexturedMeshBuilder {\r\n public constructor(args: MeshArgs, qparams: QParams2d) {\r\n super(args, qparams, SurfaceType.TexturedLit);\r\n assert(undefined !== args.normals);\r\n }\r\n\r\n protected override appendNormal(vertIndex: number) { this.append16(this.args.normals![vertIndex].value); }\r\n}\r\n\r\n/** 16 bytes. The last 2 bytes are unused; the 2 immediately preceding it hold the oct-encoded normal value. */\r\nclass LitMeshBuilder extends MeshBuilder {\r\n public constructor(args: MeshArgs) {\r\n super(args, SurfaceType.Lit);\r\n assert(undefined !== args.normals);\r\n }\r\n\r\n public override get numRgbaPerVertex() { return 4; }\r\n\r\n public override appendVertex(vertIndex: number) {\r\n super.appendVertex(vertIndex);\r\n this.append16(this.args.normals![vertIndex].value);\r\n this.advance(2); // 2 unused bytes\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"VertexTable.js","sourceRoot":"","sources":["../../../../src/render/primitives/VertexTable.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 Rendering\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Point2d, Range2d } from \"@itwin/core-geometry\";\r\nimport { ColorDef, ColorIndex, FeatureIndex, FeatureIndexType, QParams2d, QParams3d, QPoint2d } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\nimport { AuxChannelTable } from \"./AuxChannelTable\";\r\nimport { MeshArgs, PolylineArgs } from \"./mesh/MeshPrimitives\";\r\nimport { createSurfaceMaterial, SurfaceParams, SurfaceType } from \"./SurfaceParams\";\r\nimport { EdgeParams } from \"./EdgeParams\";\r\n\r\n/**\r\n * Holds an array of indices into a VertexTable. Each index is a 24-bit unsigned integer.\r\n * The order of the indices specifies the order in which vertices are drawn.\r\n * @internal\r\n */\r\nexport class VertexIndices {\r\n public readonly data: Uint8Array;\r\n\r\n /**\r\n * Directly construct from an array of bytes in which each index occupies 3 contiguous bytes.\r\n * The length of the array must be a multiple of 3. This object takes ownership of the array.\r\n */\r\n public constructor(data: Uint8Array) {\r\n this.data = data;\r\n assert(0 === this.data.length % 3);\r\n }\r\n\r\n /** Get the number of 24-bit indices. */\r\n public get length(): number { return this.data.length / 3; }\r\n\r\n /** Convert an array of 24-bit unsigned integer values into a VertexIndices object. */\r\n public static fromArray(indices: number[]): VertexIndices {\r\n const bytes = new Uint8Array(indices.length * 3);\r\n for (let i = 0; i < indices.length; i++)\r\n this.encodeIndex(indices[i], bytes, i * 3);\r\n\r\n return new VertexIndices(bytes);\r\n }\r\n\r\n public static encodeIndex(index: number, bytes: Uint8Array, byteIndex: number): void {\r\n assert(byteIndex + 2 < bytes.length);\r\n bytes[byteIndex + 0] = index & 0x000000ff;\r\n bytes[byteIndex + 1] = (index & 0x0000ff00) >> 8;\r\n bytes[byteIndex + 2] = (index & 0x00ff0000) >> 16;\r\n }\r\n\r\n public setNthIndex(n: number, value: number): void {\r\n VertexIndices.encodeIndex(value, this.data, n * 3);\r\n }\r\n\r\n public decodeIndex(index: number): number {\r\n assert(index < this.length);\r\n const byteIndex = index * 3;\r\n return this.data[byteIndex] | (this.data[byteIndex + 1] << 8) | (this.data[byteIndex + 2] << 16);\r\n }\r\n\r\n public decodeIndices(): number[] {\r\n const indices = [];\r\n for (let i = 0; i < this.length; i++)\r\n indices.push(this.decodeIndex(i));\r\n\r\n return indices;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface Dimensions {\r\n width: number;\r\n height: number;\r\n}\r\n\r\n/** @internal */\r\nexport function computeDimensions(nEntries: number, nRgbaPerEntry: number, nExtraRgba: number): Dimensions {\r\n const maxSize = IModelApp.renderSystem.maxTextureSize;\r\n const nRgba = nEntries * nRgbaPerEntry + 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 let height = Math.ceil(nRgba / width);\r\n if (width * height < nRgba)\r\n ++height;\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\n/** Describes a VertexTable.\r\n * @internal\r\n */\r\nexport interface VertexTableProps {\r\n /** The rectangular array of vertex data, of size width*height*numRgbaPerVertex bytes. */\r\n readonly data: Uint8Array;\r\n /** Quantization parameters for the vertex positions encoded into the array. */\r\n readonly qparams: QParams3d;\r\n /** The number of 4-byte 'RGBA' values in each row of the array. Must be divisible by numRgbaPerVertex. */\r\n readonly width: number;\r\n /** The number of rows in the array. */\r\n readonly height: number;\r\n /** Whether or not the vertex colors contain translucent colors. */\r\n readonly hasTranslucency: boolean;\r\n /** If no color table exists, the color to use for all vertices. */\r\n readonly uniformColor?: ColorDef;\r\n /** Describes the number of features (none, one, or multiple) contained. */\r\n readonly featureIndexType: FeatureIndexType;\r\n /** If featureIndexType is 'Uniform', the feature ID associated with all vertices. */\r\n readonly uniformFeatureID?: number;\r\n /** The number of vertices in the table. Must be less than (width*height)/numRgbaPerVertex. */\r\n readonly numVertices: number;\r\n /** The number of 4-byte 'RGBA' values associated with each vertex. */\r\n readonly numRgbaPerVertex: number;\r\n /** If vertex data include texture UV coordinates, the quantization params for those coordinates. */\r\n readonly uvParams?: QParams2d;\r\n}\r\n\r\n/**\r\n * Represents vertex data (position, color, normal, UV params, etc) in a rectangular array.\r\n * Each vertex is described by one or more contiguous 4-byte ('RGBA') values.\r\n * This allows vertex data to be uploaded to the GPU as a texture and vertex data to be sampled\r\n * from that texture using a single vertex ID representing an index into the array.\r\n * Vertex color is identified by a 16-bit index into a color table appended to the vertex data.\r\n * @internal\r\n */\r\nexport class VertexTable implements VertexTableProps {\r\n /** The rectangular array of vertex data, of size width*height*numRgbaPerVertex bytes. */\r\n public readonly data: Uint8Array;\r\n /** Quantization parameters for the vertex positions encoded into the array. */\r\n public readonly qparams: QParams3d;\r\n /** The number of 4-byte 'RGBA' values in each row of the array. Must be divisible by numRgbaPerVertex. */\r\n public readonly width: number;\r\n /** The number of rows in the array. */\r\n public readonly height: number;\r\n /** Whether or not the vertex colors contain translucent colors. */\r\n public readonly hasTranslucency: boolean;\r\n /** If no color table exists, the color to use for all vertices. */\r\n public readonly uniformColor?: ColorDef;\r\n /** Describes the number of features (none, one, or multiple) contained. */\r\n public readonly featureIndexType: FeatureIndexType;\r\n /** If featureIndexType is 'Uniform', the feature ID associated with all vertices. */\r\n public readonly uniformFeatureID?: number;\r\n /** The number of vertices in the table. Must be less than (width*height)/numRgbaPerVertex. */\r\n public readonly numVertices: number;\r\n /** The number of 4-byte 'RGBA' values associated with each vertex. */\r\n public readonly numRgbaPerVertex: number;\r\n /** If vertex data include texture UV coordinates, the quantization params for those coordinates. */\r\n public readonly uvParams?: QParams2d;\r\n\r\n /** Construct a VertexTable. The VertexTable takes ownership of all input data - it must not be later modified by the caller. */\r\n public constructor(props: VertexTableProps) {\r\n this.data = props.data;\r\n this.qparams = props.qparams;\r\n this.width = props.width;\r\n this.height = props.height;\r\n this.hasTranslucency = true === props.hasTranslucency;\r\n this.uniformColor = props.uniformColor;\r\n this.featureIndexType = props.featureIndexType;\r\n this.uniformFeatureID = props.uniformFeatureID;\r\n this.numVertices = props.numVertices;\r\n this.numRgbaPerVertex = props.numRgbaPerVertex;\r\n this.uvParams = props.uvParams;\r\n }\r\n\r\n public static buildFrom(builder: VertexTableBuilder, colorIndex: ColorIndex, featureIndex: FeatureIndex): VertexTable {\r\n const { numVertices, numRgbaPerVertex } = builder;\r\n const numColors = colorIndex.isUniform ? 0 : colorIndex.numColors;\r\n const dimensions = computeDimensions(numVertices, numRgbaPerVertex, numColors);\r\n assert(0 === dimensions.width % numRgbaPerVertex || (0 < numColors && 1 === dimensions.height));\r\n\r\n const data = new Uint8Array(dimensions.width * dimensions.height * 4);\r\n\r\n builder.data = data;\r\n for (let i = 0; i < numVertices; i++)\r\n builder.appendVertex(i);\r\n\r\n builder.appendColorTable(colorIndex);\r\n\r\n builder.data = undefined;\r\n\r\n return new VertexTable({\r\n data,\r\n qparams: builder.qparams,\r\n width: dimensions.width,\r\n height: dimensions.height,\r\n hasTranslucency: colorIndex.hasAlpha,\r\n uniformColor: colorIndex.uniform,\r\n numVertices,\r\n numRgbaPerVertex,\r\n uvParams: builder.uvParams,\r\n featureIndexType: featureIndex.type,\r\n uniformFeatureID: featureIndex.type === FeatureIndexType.Uniform ? featureIndex.featureID : undefined,\r\n });\r\n }\r\n\r\n public static createForPolylines(args: PolylineArgs): VertexTable | undefined {\r\n const polylines = args.polylines;\r\n if (0 < polylines.length)\r\n return this.buildFrom(new SimpleBuilder(args), args.colors, args.features);\r\n else\r\n return undefined;\r\n }\r\n}\r\n\r\n/**\r\n * Describes mesh geometry to be submitted to the rendering system.\r\n * A mesh consists of a surface and its edges, which may include any combination of silhouettes, polylines, and single segments.\r\n * The surface and edges all refer to the same vertex table.\r\n */\r\nexport class MeshParams {\r\n public readonly vertices: VertexTable;\r\n public readonly surface: SurfaceParams;\r\n public readonly edges?: EdgeParams;\r\n public readonly isPlanar: boolean;\r\n public readonly auxChannels?: AuxChannelTable;\r\n\r\n /** Directly construct a MeshParams. The MeshParams takes ownership of all input data. */\r\n public constructor(vertices: VertexTable, surface: SurfaceParams, edges?: EdgeParams, isPlanar?: boolean, auxChannels?: AuxChannelTable) {\r\n this.vertices = vertices;\r\n this.surface = surface;\r\n this.edges = edges;\r\n this.isPlanar = !!isPlanar;\r\n this.auxChannels = auxChannels;\r\n }\r\n\r\n /** Construct from a MeshArgs. */\r\n public static create(args: MeshArgs): MeshParams {\r\n const builder = MeshBuilder.create(args);\r\n const vertices = VertexTable.buildFrom(builder, args.colors, args.features);\r\n\r\n const surfaceIndices = VertexIndices.fromArray(args.vertIndices!);\r\n\r\n const surface: SurfaceParams = {\r\n type: builder.type,\r\n indices: surfaceIndices,\r\n fillFlags: args.fillFlags,\r\n hasBakedLighting: args.hasBakedLighting,\r\n hasFixedNormals: args.hasFixedNormals,\r\n textureMapping: undefined !== args.texture ? { texture: args.texture, alwaysDisplayed: false } : undefined,\r\n material: createSurfaceMaterial(args.material),\r\n };\r\n\r\n const channels = undefined !== args.auxChannels ? AuxChannelTable.fromChannels(args.auxChannels, vertices.numVertices) : undefined;\r\n const edges = EdgeParams.fromMeshArgs(args);\r\n return new MeshParams(vertices, surface, edges, args.isPlanar, channels);\r\n }\r\n}\r\n\r\n/** Builds a VertexTable from some data type supplying the vertex data. */\r\nexport abstract class VertexTableBuilder {\r\n public data?: Uint8Array;\r\n private _curIndex: number = 0;\r\n\r\n public abstract get numVertices(): number;\r\n public abstract get numRgbaPerVertex(): number;\r\n public abstract get qparams(): QParams3d;\r\n public get uvParams(): QParams2d | undefined { return undefined; }\r\n public abstract appendVertex(vertIndex: number): void;\r\n\r\n public appendColorTable(colorIndex: ColorIndex) {\r\n if (undefined !== colorIndex.nonUniform) {\r\n for (const color of colorIndex.nonUniform.colors) {\r\n this.appendColor(color);\r\n }\r\n }\r\n }\r\n\r\n protected advance(nBytes: number) {\r\n this._curIndex += nBytes;\r\n assert(this._curIndex <= this.data!.length);\r\n }\r\n\r\n protected append8(val: number) {\r\n assert(0 <= val);\r\n assert(val <= 0xff);\r\n assert(val === Math.floor(val));\r\n\r\n this.data![this._curIndex] = val;\r\n this.advance(1);\r\n }\r\n protected append16(val: number) {\r\n this.append8(val & 0x00ff);\r\n this.append8(val >>> 8);\r\n }\r\n protected append32(val: number) {\r\n this.append16(val & 0x0000ffff);\r\n this.append16(val >>> 16);\r\n }\r\n\r\n private appendColor(tbgr: number) {\r\n const colors = ColorDef.getColors(tbgr);\r\n\r\n // invert transparency => alpha\r\n colors.t = 255 - colors.t;\r\n\r\n // premultiply alpha...\r\n switch (colors.t) {\r\n case 0:\r\n colors.r = colors.g = colors.b = 0;\r\n break;\r\n case 255:\r\n break;\r\n default: {\r\n const f = colors.t / 255.0;\r\n colors.r = Math.floor(colors.r * f + 0.5);\r\n colors.g = Math.floor(colors.g * f + 0.5);\r\n colors.b = Math.floor(colors.b * f + 0.5);\r\n break;\r\n }\r\n }\r\n\r\n // Store 32-bit value in little-endian order (red first)\r\n this.append8(colors.r);\r\n this.append8(colors.g);\r\n this.append8(colors.b);\r\n this.append8(colors.t);\r\n }\r\n}\r\n\r\ntype SimpleVertexData = PolylineArgs | MeshArgs;\r\n\r\n/**\r\n * Supplies vertex data from a PolylineArgs or MeshArgs. Each vertex consists of 12 bytes:\r\n * pos.x 00\r\n * pos.y 02\r\n * pos.z 04\r\n * colorIndex 06\r\n * featureIndex 08\r\n */\r\nclass SimpleBuilder<T extends SimpleVertexData> extends VertexTableBuilder {\r\n public args: T;\r\n\r\n public constructor(args: T) {\r\n super();\r\n this.args = args;\r\n assert(undefined !== this.args.points);\r\n }\r\n\r\n public get numVertices() { return this.args.points!.length; }\r\n public get numRgbaPerVertex() { return 3; }\r\n public get qparams() { return this.args.points!.params; }\r\n\r\n public appendVertex(vertIndex: number): void {\r\n this.appendPosition(vertIndex);\r\n this.appendColorIndex(vertIndex);\r\n this.appendFeatureIndex(vertIndex);\r\n }\r\n\r\n protected appendPosition(vertIndex: number) {\r\n const points = this.args.points!;\r\n this.append16(points.list[vertIndex].x);\r\n this.append16(points.list[vertIndex].y);\r\n this.append16(points.list[vertIndex].z);\r\n }\r\n\r\n protected appendColorIndex(vertIndex: number) {\r\n if (undefined !== this.args.colors.nonUniform) {\r\n this.append16(this.args.colors.nonUniform.indices[vertIndex]);\r\n } else {\r\n this.advance(2);\r\n }\r\n }\r\n\r\n protected appendFeatureIndex(vertIndex: number) {\r\n if (undefined !== this.args.features.featureIDs) {\r\n this.append32(this.args.features.featureIDs[vertIndex]);\r\n } else {\r\n this.advance(4);\r\n }\r\n }\r\n}\r\n\r\n/** Supplies vertex data from a MeshArgs. */\r\nclass MeshBuilder extends SimpleBuilder<MeshArgs> {\r\n public readonly type: SurfaceType;\r\n\r\n protected constructor(args: MeshArgs, type: SurfaceType) {\r\n super(args);\r\n this.type = type;\r\n }\r\n\r\n public static create(args: MeshArgs): MeshBuilder {\r\n if (args.isVolumeClassifier)\r\n return new MeshBuilder(args, SurfaceType.VolumeClassifier);\r\n\r\n const isLit = undefined !== args.normals && 0 < args.normals.length;\r\n const isTextured = undefined !== args.texture;\r\n\r\n let uvParams: QParams2d | undefined;\r\n\r\n if (isTextured) {\r\n const uvRange = Range2d.createNull();\r\n const fpts = args.textureUv;\r\n const pt2d = new Point2d();\r\n if (undefined !== fpts && fpts.length > 0)\r\n for (let i = 0; i < args.points!.length; i++)\r\n uvRange.extendPoint(Point2d.create(fpts[i].x, fpts[i].y, pt2d));\r\n\r\n uvParams = QParams2d.fromRange(uvRange);\r\n }\r\n\r\n if (isLit)\r\n return isTextured ? new TexturedLitMeshBuilder(args, uvParams!) : new LitMeshBuilder(args);\r\n else\r\n return isTextured ? new TexturedMeshBuilder(args, uvParams!) : new MeshBuilder(args, SurfaceType.Unlit);\r\n }\r\n}\r\n\r\n/** Supplies vertex data from a MeshArgs where each vertex consists of 16 bytes.\r\n * In addition to the SimpleBuilder data, the final 4 bytes hold the quantized UV params\r\n * The color index is left uninitialized as it is unused.\r\n */\r\nclass TexturedMeshBuilder extends MeshBuilder {\r\n private _qparams: QParams2d;\r\n private _qpoint = new QPoint2d();\r\n\r\n public constructor(args: MeshArgs, qparams: QParams2d, type: SurfaceType = SurfaceType.Textured) {\r\n super(args, type);\r\n this._qparams = qparams;\r\n assert(undefined !== args.textureUv);\r\n }\r\n\r\n public override get numRgbaPerVertex() { return 4; }\r\n public override get uvParams() { return this._qparams; }\r\n\r\n public override appendVertex(vertIndex: number) {\r\n this.appendPosition(vertIndex);\r\n this.appendNormal(vertIndex);\r\n this.appendFeatureIndex(vertIndex);\r\n this.appendUVParams(vertIndex);\r\n }\r\n\r\n protected appendNormal(_vertIndex: number): void { this.advance(2); } // no normal for unlit meshes\r\n\r\n protected appendUVParams(vertIndex: number) {\r\n this._qpoint.init(this.args.textureUv![vertIndex], this._qparams);\r\n this.append16(this._qpoint.x);\r\n this.append16(this._qpoint.y);\r\n }\r\n}\r\n\r\n/** As with TexturedMeshBuilder, but the color index is replaced with the oct-encoded normal value. */\r\nclass TexturedLitMeshBuilder extends TexturedMeshBuilder {\r\n public constructor(args: MeshArgs, qparams: QParams2d) {\r\n super(args, qparams, SurfaceType.TexturedLit);\r\n assert(undefined !== args.normals);\r\n }\r\n\r\n protected override appendNormal(vertIndex: number) { this.append16(this.args.normals![vertIndex].value); }\r\n}\r\n\r\n/** 16 bytes. The last 2 bytes are unused; the 2 immediately preceding it hold the oct-encoded normal value. */\r\nclass LitMeshBuilder extends MeshBuilder {\r\n public constructor(args: MeshArgs) {\r\n super(args, SurfaceType.Lit);\r\n assert(undefined !== args.normals);\r\n }\r\n\r\n public override get numRgbaPerVertex() { return 4; }\r\n\r\n public override appendVertex(vertIndex: number) {\r\n super.appendVertex(vertIndex);\r\n this.append16(this.args.normals![vertIndex].value);\r\n this.advance(2); // 2 unused bytes\r\n }\r\n}\r\n"]}
@@ -76,15 +76,15 @@ export class AttributeMap {
76
76
  ]);
77
77
  this._attrMaps = new Map([
78
78
  [undefined, posOnly],
79
- [23 /* SkySphereGradient */, skySphere],
80
- [24 /* SkySphereTexture */, skySphere],
79
+ [24 /* SkySphereGradient */, skySphere],
80
+ [25 /* SkySphereTexture */, skySphere],
81
81
  [1 /* Polyline */, polyline],
82
82
  [4 /* Edge */, edge],
83
83
  [5 /* SilhouetteEdge */, silhouette],
84
84
  [2 /* PointCloud */, pointCloud],
85
- [29 /* VolClassCopyZ */, screenPoints],
86
- [6 /* RealityMesh */, realityMesh],
87
- [7 /* PlanarGrid */, planarGrid],
85
+ [30 /* VolClassCopyZ */, screenPoints],
86
+ [7 /* RealityMesh */, realityMesh],
87
+ [8 /* PlanarGrid */, planarGrid],
88
88
  ]);
89
89
  }
90
90
  static findAttributeMap(techniqueId, instanced) {
@@ -15,6 +15,7 @@ import { InstancedGeometry } from "./InstancedGeometry";
15
15
  import { MaterialInfo } from "./Material";
16
16
  import { MeshGeometry } from "./MeshGeometry";
17
17
  import { EdgeGeometry, SilhouetteEdgeGeometry } from "./EdgeGeometry";
18
+ import { IndexedEdgeGeometry } from "./IndexedEdgeGeometry";
18
19
  import { SurfaceGeometry } from "./SurfaceGeometry";
19
20
  import { PointCloudGeometry } from "./PointCloud";
20
21
  import { CompositeFlags, RenderOrder, RenderPass } from "./RenderFlags";
@@ -38,6 +39,7 @@ export declare abstract class CachedGeometry implements WebGLDisposable, RenderM
38
39
  get asSurface(): SurfaceGeometry | undefined;
39
40
  get asMesh(): MeshGeometry | undefined;
40
41
  get asEdge(): EdgeGeometry | undefined;
42
+ get asIndexedEdge(): IndexedEdgeGeometry | undefined;
41
43
  get asRealityMesh(): RealityMeshGeometry | undefined;
42
44
  get asSilhouette(): SilhouetteEdgeGeometry | undefined;
43
45
  get asInstanced(): InstancedGeometry | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"CachedGeometry.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/CachedGeometry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CachedGeometry.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/CachedGeometry.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,7 @@ export class CachedGeometry {
39
39
  get asSurface() { return undefined; }
40
40
  get asMesh() { return undefined; }
41
41
  get asEdge() { return undefined; }
42
+ get asIndexedEdge() { return undefined; }
42
43
  get asRealityMesh() { return undefined; }
43
44
  get asSilhouette() { return undefined; }
44
45
  get asInstanced() { return undefined; }
@@ -293,7 +294,7 @@ export class SkyBoxQuadsGeometry extends CachedGeometry {
293
294
  constructor(ndxGeomParams, texture) {
294
295
  super();
295
296
  this.cube = texture;
296
- this._techniqueId = 22 /* SkyBox */;
297
+ this._techniqueId = 23 /* SkyBox */;
297
298
  this._params = ndxGeomParams;
298
299
  }
299
300
  static create(texture) {
@@ -466,7 +467,7 @@ export class SkySphereViewportQuadGeometry extends ViewportQuadGeometry {
466
467
  this._isWorldPosSet = true;
467
468
  this._setPointsFromFrustum(target);
468
469
  this._worldPosBuff.bindData(this.worldPos, GL.Buffer.Usage.StreamDraw);
469
- const attrWorldPos = AttributeMap.findAttribute("a_worldPos", 23 /* SkySphereGradient */, false);
470
+ const attrWorldPos = AttributeMap.findAttribute("a_worldPos", 24 /* SkySphereGradient */, false);
470
471
  assert(attrWorldPos !== undefined);
471
472
  this._params.buffers.addBuffer(this._worldPosBuff, [BufferParameters.create(attrWorldPos.location, 3, GL.DataType.Float, false, 0, 0, false)]);
472
473
  }
@@ -554,7 +555,7 @@ export class SkySphereViewportQuadGeometry extends ViewportQuadGeometry {
554
555
  const params = ViewportQuad.getInstance().createParams();
555
556
  if (undefined === params)
556
557
  return undefined;
557
- const technique = "sphere" === skybox.type ? 24 /* SkySphereTexture */ : 23 /* SkySphereGradient */;
558
+ const technique = "sphere" === skybox.type ? 25 /* SkySphereTexture */ : 24 /* SkySphereGradient */;
558
559
  return new SkySphereViewportQuadGeometry(params, skybox, technique);
559
560
  }
560
561
  get isDisposed() { return super.isDisposed && this._worldPosBuff.isDisposed; }
@@ -578,13 +579,13 @@ export class AmbientOcclusionGeometry extends TexturedViewportQuadGeometry {
578
579
  get depthAndOrder() { return this._textures[0]; }
579
580
  get noise() { return System.instance.noiseTexture.getHandle(); }
580
581
  constructor(params, textures) {
581
- super(params, 25 /* AmbientOcclusion */, textures);
582
+ super(params, 26 /* AmbientOcclusion */, textures);
582
583
  }
583
584
  }
584
585
  /** @internal */
585
586
  export class BlurGeometry extends TexturedViewportQuadGeometry {
586
587
  constructor(params, textures, blurDir) {
587
- super(params, 26 /* Blur */, textures);
588
+ super(params, 27 /* Blur */, textures);
588
589
  this.blurDir = blurDir;
589
590
  }
590
591
  static createGeometry(texToBlur, depthAndOrder, blurDir) {
@@ -600,7 +601,7 @@ export class BlurGeometry extends TexturedViewportQuadGeometry {
600
601
  /** @internal */
601
602
  export class EVSMGeometry extends TexturedViewportQuadGeometry {
602
603
  constructor(params, textures, width, height) {
603
- super(params, 21 /* EVSMFromDepth */, textures);
604
+ super(params, 22 /* EVSMFromDepth */, textures);
604
605
  this.stepSize = new Float32Array(2);
605
606
  this.stepSize[0] = 1.0 / width;
606
607
  this.stepSize[1] = 1.0 / height;
@@ -644,7 +645,7 @@ export class CompositeGeometry extends TexturedViewportQuadGeometry {
644
645
  return computeCompositeTechniqueId(flags);
645
646
  }
646
647
  constructor(params, textures) {
647
- super(params, 8 /* CompositeHilite */, textures);
648
+ super(params, 9 /* CompositeHilite */, textures);
648
649
  assert(4 <= this._textures.length);
649
650
  }
650
651
  }
@@ -664,7 +665,7 @@ export class CopyPickBufferGeometry extends TexturedViewportQuadGeometry {
664
665
  get featureId() { return this._textures[0]; }
665
666
  get depthAndOrder() { return this._textures[1]; }
666
667
  constructor(params, textures) {
667
- super(params, 16 /* CopyPickBuffers */, textures);
668
+ super(params, 17 /* CopyPickBuffers */, textures);
668
669
  }
669
670
  }
670
671
  export class CombineTexturesGeometry extends TexturedViewportQuadGeometry {
@@ -680,7 +681,7 @@ export class CombineTexturesGeometry extends TexturedViewportQuadGeometry {
680
681
  get texture0() { return this._textures[0]; }
681
682
  get texture1() { return this._textures[1]; }
682
683
  constructor(params, textures) {
683
- super(params, 27 /* CombineTextures */, textures);
684
+ super(params, 28 /* CombineTextures */, textures);
684
685
  }
685
686
  }
686
687
  export class Combine3TexturesGeometry extends TexturedViewportQuadGeometry {
@@ -697,7 +698,7 @@ export class Combine3TexturesGeometry extends TexturedViewportQuadGeometry {
697
698
  get texture1() { return this._textures[1]; }
698
699
  get texture2() { return this._textures[2]; }
699
700
  constructor(params, textures) {
700
- super(params, 28 /* Combine3Textures */, textures);
701
+ super(params, 29 /* Combine3Textures */, textures);
701
702
  }
702
703
  }
703
704
  /** @internal */
@@ -725,7 +726,7 @@ export var BoundaryType;
725
726
  /** @internal */
726
727
  export class VolumeClassifierGeometry extends SingleTexturedViewportQuadGeometry {
727
728
  constructor(params, texture) {
728
- super(params, texture, 30 /* VolClassSetBlend */);
729
+ super(params, texture, 31 /* VolClassSetBlend */);
729
730
  this.boundaryType = BoundaryType.Inside;
730
731
  }
731
732
  static createVCGeometry(texture) {
@@ -753,7 +754,7 @@ export class ScreenPointsGeometry extends CachedGeometry {
753
754
  this._scale[1] = this._positions.params[3];
754
755
  this._scale[2] = this._positions.params[3]; // just copy the scale from y
755
756
  this.buffers = BuffersContainer.create();
756
- const attrPos = AttributeMap.findAttribute("a_pos", 29 /* VolClassCopyZ */, false);
757
+ const attrPos = AttributeMap.findAttribute("a_pos", 30 /* VolClassCopyZ */, false);
757
758
  assert(attrPos !== undefined);
758
759
  this.buffers.addBuffer(this._positions, [BufferParameters.create(attrPos.location, 2, GL.DataType.UnsignedShort, false, 0, 0, false)]);
759
760
  }
@@ -788,7 +789,7 @@ export class ScreenPointsGeometry extends CachedGeometry {
788
789
  stats.addBuffer(RenderMemory.BufferType.PointStrings, this._positions.bytesUsed);
789
790
  }
790
791
  _wantWoWReversal(_target) { return false; }
791
- get techniqueId() { return 29 /* VolClassCopyZ */; }
792
+ get techniqueId() { return 30 /* VolClassCopyZ */; }
792
793
  getRenderPass(_target) { return 5 /* Classification */; }
793
794
  get renderOrder() { return 0 /* None */; }
794
795
  get qOrigin() { return this._origin; }