@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
@@ -6,8 +6,9 @@
6
6
  /** @packageDocumentation
7
7
  * @module WebGL
8
8
  */
9
+ var _a;
9
10
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.InstancedGeometry = exports.PatternBuffers = exports.InstanceBuffers = exports.isInstancedGraphicParams = void 0;
11
+ exports.InstancedGeometry = exports.PatternBuffers = exports.InstanceBuffers = exports.RenderInstancesImpl = exports.InstanceBuffersData = exports.isInstancedGraphicParams = void 0;
11
12
  const core_bentley_1 = require("@itwin/core-bentley");
12
13
  const core_geometry_1 = require("@itwin/core-geometry");
13
14
  const AttributeMap_1 = require("./AttributeMap");
@@ -15,17 +16,18 @@ const CachedGeometry_1 = require("./CachedGeometry");
15
16
  const GL_1 = require("./GL");
16
17
  const AttributeBuffers_1 = require("./AttributeBuffers");
17
18
  const Matrix_1 = require("./Matrix");
19
+ const Symbols_1 = require("../../common/internal/Symbols");
20
+ const core_common_1 = require("@itwin/core-common");
18
21
  /** @internal */
19
22
  function isInstancedGraphicParams(params) {
20
23
  return typeof params === "object" && typeof params.count === "number" && params.transforms instanceof Float32Array && params.transformCenter instanceof core_geometry_1.Point3d;
21
24
  }
22
25
  exports.isInstancedGraphicParams = isInstancedGraphicParams;
23
26
  class InstanceData {
24
- constructor(numInstances, rtcCenter, range) {
27
+ constructor(numInstances, rtcCenter) {
25
28
  // The model matrix from which _rtcModelTransform was previously computed. If it changes, _rtcModelTransform must be recomputed.
26
29
  this._modelMatrix = core_geometry_1.Transform.createIdentity();
27
30
  this.numInstances = numInstances;
28
- this.range = range;
29
31
  this._rtcOnlyTransform = core_geometry_1.Transform.createTranslation(rtcCenter);
30
32
  this._rtcModelTransform = this._rtcOnlyTransform.clone();
31
33
  }
@@ -45,16 +47,85 @@ class InstanceData {
45
47
  }
46
48
  InstanceData._noFeatureId = new Float32Array([0, 0, 0]);
47
49
  /** @internal */
48
- class InstanceBuffers extends InstanceData {
49
- constructor(count, transforms, rtcCenter, range, symbology, featureIds) {
50
- super(count, rtcCenter, range);
51
- this.patternParams = InstanceBuffers._patternParams;
52
- this.patternTransforms = undefined;
53
- this.viewIndependentOrigin = undefined;
50
+ class InstanceBuffersData extends InstanceData {
51
+ constructor(count, transforms, rtcCenter, symbology, featureIds, disableDisposal = false) {
52
+ super(count, rtcCenter);
53
+ this._noDispose = false;
54
54
  this.transforms = transforms;
55
55
  this.featureIds = featureIds;
56
- this.hasFeatures = undefined !== featureIds;
57
56
  this.symbology = symbology;
57
+ this._noDispose = disableDisposal;
58
+ }
59
+ static create(params, disableDisposal = false) {
60
+ const { count, featureIds, symbologyOverrides, transforms } = params;
61
+ (0, core_bentley_1.assert)(count > 0 && Math.floor(count) === count);
62
+ (0, core_bentley_1.assert)(count === transforms.length / 12);
63
+ (0, core_bentley_1.assert)(undefined === featureIds || count === featureIds.length / 3);
64
+ (0, core_bentley_1.assert)(undefined === symbologyOverrides || count * 8 === symbologyOverrides.length);
65
+ let idBuf;
66
+ if (undefined !== featureIds && undefined === (idBuf = AttributeBuffers_1.BufferHandle.createArrayBuffer(featureIds)))
67
+ return undefined;
68
+ let symBuf;
69
+ if (undefined !== symbologyOverrides && undefined === (symBuf = AttributeBuffers_1.BufferHandle.createArrayBuffer(symbologyOverrides)))
70
+ return undefined;
71
+ const tfBuf = AttributeBuffers_1.BufferHandle.createArrayBuffer(transforms);
72
+ const transformCenter = params.transformCenter instanceof core_geometry_1.Point3d ? params.transformCenter : core_geometry_1.Point3d.fromJSON(params.transformCenter);
73
+ if (!tfBuf) {
74
+ return undefined;
75
+ }
76
+ return new InstanceBuffersData(count, tfBuf, transformCenter, symBuf, idBuf, disableDisposal);
77
+ }
78
+ dispose() {
79
+ if (!this._noDispose) {
80
+ (0, core_bentley_1.dispose)(this.transforms);
81
+ (0, core_bentley_1.dispose)(this.featureIds);
82
+ (0, core_bentley_1.dispose)(this.symbology);
83
+ }
84
+ }
85
+ get isDisposed() {
86
+ return this.transforms.isDisposed && (!this.featureIds || this.featureIds.isDisposed) && (!this.symbology || this.symbology.isDisposed);
87
+ }
88
+ }
89
+ exports.InstanceBuffersData = InstanceBuffersData;
90
+ /** @internal */
91
+ var RenderInstancesImpl;
92
+ (function (RenderInstancesImpl) {
93
+ function create(params) {
94
+ const buffers = InstanceBuffersData.create(params.instances, true);
95
+ if (!buffers) {
96
+ return undefined;
97
+ }
98
+ let featureTable;
99
+ if (params.features) {
100
+ // ###TODO permit user to specify batch type and other batch options...
101
+ featureTable = new core_common_1.PackedFeatureTable(params.features.data, params.features.modelId, params.features.count, core_common_1.BatchType.Primary);
102
+ }
103
+ return {
104
+ [Symbols_1._implementationProhibited]: "renderInstances",
105
+ buffers,
106
+ [Symbols_1._transforms]: params.instances.transforms,
107
+ [Symbols_1._transformCenter]: params.instances.transformCenter,
108
+ [Symbols_1._featureTable]: featureTable,
109
+ };
110
+ }
111
+ RenderInstancesImpl.create = create;
112
+ })(RenderInstancesImpl || (exports.RenderInstancesImpl = RenderInstancesImpl = {}));
113
+ /** @internal */
114
+ class InstanceBuffers {
115
+ get numInstances() { return this._data.numInstances; }
116
+ get transforms() { return this._data.transforms; }
117
+ get featureIds() { return this._data.featureIds; }
118
+ get symbology() { return this._data.symbology; }
119
+ get hasFeatures() { return undefined !== this.featureIds; }
120
+ get patternFeatureId() { return this._data.patternFeatureId; }
121
+ getRtcModelTransform(modelMatrix) { return this._data.getRtcModelTransform(modelMatrix); }
122
+ getRtcOnlyTransform() { return this._data.getRtcOnlyTransform(); }
123
+ constructor(data, range) {
124
+ this.patternParams = InstanceBuffers._patternParams;
125
+ this.patternTransforms = undefined;
126
+ this.viewIndependentOrigin = undefined;
127
+ this._data = data;
128
+ this.range = range;
58
129
  }
59
130
  static createTransformBufferParameters(techniqueId) {
60
131
  const params = [];
@@ -83,30 +154,24 @@ class InstanceBuffers extends InstanceData {
83
154
  }
84
155
  return params;
85
156
  }
86
- static create(params, range) {
87
- const { count, featureIds, symbologyOverrides, transforms } = params;
88
- (0, core_bentley_1.assert)(count > 0 && Math.floor(count) === count);
89
- (0, core_bentley_1.assert)(count === transforms.length / 12);
90
- (0, core_bentley_1.assert)(undefined === featureIds || count === featureIds.length / 3);
91
- (0, core_bentley_1.assert)(undefined === symbologyOverrides || count * 8 === symbologyOverrides.length);
92
- let idBuf;
93
- if (undefined !== featureIds && undefined === (idBuf = AttributeBuffers_1.BufferHandle.createArrayBuffer(featureIds)))
94
- return undefined;
95
- let symBuf;
96
- if (undefined !== symbologyOverrides && undefined === (symBuf = AttributeBuffers_1.BufferHandle.createArrayBuffer(symbologyOverrides)))
157
+ static fromParams(params, computeReprRange) {
158
+ const data = InstanceBuffersData.create(params);
159
+ if (!data) {
97
160
  return undefined;
98
- const tfBuf = AttributeBuffers_1.BufferHandle.createArrayBuffer(transforms);
99
- return undefined !== tfBuf ? new InstanceBuffers(count, tfBuf, params.transformCenter, range, symBuf, idBuf) : undefined;
161
+ }
162
+ const range = params.range ?? this.computeRange(computeReprRange(), params.transforms, params.transformCenter);
163
+ return new InstanceBuffers(data, range);
100
164
  }
101
- get isDisposed() {
102
- return this.transforms.isDisposed
103
- && (undefined === this.featureIds || this.featureIds.isDisposed)
104
- && (undefined === this.symbology || this.symbology.isDisposed);
165
+ static fromRenderInstances(arg, reprRange) {
166
+ const instances = arg;
167
+ const range = this.computeRange(reprRange, instances[Symbols_1._transforms], instances[Symbols_1._transformCenter]);
168
+ return new InstanceBuffers(instances.buffers, range);
105
169
  }
106
170
  dispose() {
107
- (0, core_bentley_1.dispose)(this.transforms);
108
- (0, core_bentley_1.dispose)(this.featureIds);
109
- (0, core_bentley_1.dispose)(this.symbology);
171
+ (0, core_bentley_1.dispose)(this._data);
172
+ }
173
+ get isDisposed() {
174
+ return this._data.isDisposed;
110
175
  }
111
176
  collectStatistics(stats) {
112
177
  const featureBytes = undefined !== this.featureIds ? this.featureIds.bytesUsed : 0;
@@ -143,7 +208,8 @@ class PatternBuffers extends InstanceData {
143
208
  constructor(count, rtcCenter, range, patternParams, // [ isAreaPattern, spacingX, spacingY, scale ]
144
209
  origin, // [ x, y ]
145
210
  orgTransform, localToModel, symbolToLocal, offsets, featureId, viewIndependentOrigin) {
146
- super(count, rtcCenter, range);
211
+ super(count, rtcCenter);
212
+ this.range = range;
147
213
  this.patternParams = patternParams;
148
214
  this.origin = origin;
149
215
  this.orgTransform = orgTransform;
@@ -151,6 +217,7 @@ class PatternBuffers extends InstanceData {
151
217
  this.symbolToLocal = symbolToLocal;
152
218
  this.offsets = offsets;
153
219
  this.viewIndependentOrigin = viewIndependentOrigin;
220
+ this[_a] = "renderAreaPattern";
154
221
  this.patternTransforms = this;
155
222
  if (undefined !== featureId) {
156
223
  this._featureId = new Float32Array([
@@ -185,6 +252,7 @@ class PatternBuffers extends InstanceData {
185
252
  }
186
253
  }
187
254
  exports.PatternBuffers = PatternBuffers;
255
+ _a = Symbols_1._implementationProhibited;
188
256
  /** @internal */
189
257
  class InstancedGeometry extends CachedGeometry_1.CachedGeometry {
190
258
  getRtcModelTransform(modelMatrix) { return this._buffers.getRtcModelTransform(modelMatrix); }
@@ -1 +1 @@
1
- {"version":3,"file":"InstancedGeometry.js","sourceRoot":"","sources":["../../../../src/render/webgl/InstancedGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport { InstancedGraphicParams, PatternGraphicParams } from \"../../common/render/InstancedGraphicParams\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { CachedGeometry, LUTGeometry } from \"./CachedGeometry\";\r\nimport { ShaderProgramParams } from \"./DrawCommand\";\r\nimport { GL } from \"./GL\";\r\nimport { BufferHandle, BufferParameters, BuffersContainer } from \"./AttributeBuffers\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { Matrix4 } from \"./Matrix\";\r\n\r\n/** @internal */\r\nexport function isInstancedGraphicParams(params: any): params is InstancedGraphicParams {\r\n return typeof params === \"object\" && typeof params.count === \"number\" && params.transforms instanceof Float32Array && params.transformCenter instanceof Point3d;\r\n}\r\n\r\nclass InstanceData {\r\n public readonly numInstances: number;\r\n public readonly range: Range3d;\r\n // A transform including only rtcCenter.\r\n private readonly _rtcOnlyTransform: Transform;\r\n // A transform from _rtcCenter including model matrix\r\n private readonly _rtcModelTransform: Transform;\r\n // The model matrix from which _rtcModelTransform was previously computed. If it changes, _rtcModelTransform must be recomputed.\r\n private readonly _modelMatrix = Transform.createIdentity();\r\n\r\n protected constructor(numInstances: number, rtcCenter: Point3d, range: Range3d) {\r\n this.numInstances = numInstances;\r\n this.range = range;\r\n this._rtcOnlyTransform = Transform.createTranslation(rtcCenter);\r\n this._rtcModelTransform = this._rtcOnlyTransform.clone();\r\n }\r\n\r\n public getRtcModelTransform(modelMatrix: Transform): Transform {\r\n if (!this._modelMatrix.isAlmostEqual(modelMatrix)) {\r\n modelMatrix.clone(this._modelMatrix);\r\n modelMatrix.multiplyTransformTransform(this._rtcOnlyTransform, this._rtcModelTransform);\r\n }\r\n\r\n return this._rtcModelTransform;\r\n }\r\n\r\n public getRtcOnlyTransform(): Transform {\r\n return this._rtcOnlyTransform;\r\n }\r\n\r\n private static readonly _noFeatureId = new Float32Array([0, 0, 0]);\r\n public get patternFeatureId(): Float32Array {\r\n return InstanceData._noFeatureId;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface PatternTransforms {\r\n readonly orgTransform: Matrix4;\r\n readonly localToModel: Matrix4;\r\n readonly symbolToLocal: Matrix4;\r\n readonly origin: Float32Array;\r\n}\r\n\r\n/** @internal */\r\nexport class InstanceBuffers extends InstanceData {\r\n private static readonly _patternParams = new Float32Array([0, 0, 0, 0]);\r\n\r\n public readonly transforms: BufferHandle;\r\n public readonly featureIds?: BufferHandle;\r\n public readonly hasFeatures: boolean;\r\n public readonly symbology?: BufferHandle;\r\n public readonly patternParams = InstanceBuffers._patternParams;\r\n public readonly patternTransforms = undefined;\r\n public readonly viewIndependentOrigin = undefined;\r\n\r\n private constructor(count: number, transforms: BufferHandle, rtcCenter: Point3d, range: Range3d, symbology?: BufferHandle, featureIds?: BufferHandle) {\r\n super(count, rtcCenter, range);\r\n this.transforms = transforms;\r\n this.featureIds = featureIds;\r\n this.hasFeatures = undefined !== featureIds;\r\n this.symbology = symbology;\r\n }\r\n\r\n public static createTransformBufferParameters(techniqueId: TechniqueId): BufferParameters[] {\r\n const params: BufferParameters[] = [];\r\n const numRows = 3;\r\n let row = 0;\r\n while (row < numRows) {\r\n // 3 rows per instance; 4 floats per row; 4 bytes per float.\r\n const floatsPerRow = 4;\r\n const bytesPerVertex = floatsPerRow * 4;\r\n const offset = row * bytesPerVertex;\r\n const stride = 3 * bytesPerVertex;\r\n const name = `a_instanceMatrixRow${row}`;\r\n const details = AttributeMap.findAttribute(name, techniqueId, true);\r\n assert(details !== undefined);\r\n const bParams: BufferParameters = {\r\n glAttribLoc: details.location,\r\n glSize: floatsPerRow,\r\n glType: GL.DataType.Float,\r\n glNormalized: false,\r\n glStride: stride,\r\n glOffset: offset,\r\n glInstanced: true,\r\n };\r\n params.push(bParams);\r\n row++;\r\n }\r\n return params;\r\n }\r\n\r\n public static create(params: InstancedGraphicParams, range: Range3d): InstanceBuffers | undefined {\r\n const { count, featureIds, symbologyOverrides, transforms } = params;\r\n\r\n assert(count > 0 && Math.floor(count) === count);\r\n assert(count === transforms.length / 12);\r\n assert(undefined === featureIds || count === featureIds.length / 3);\r\n assert(undefined === symbologyOverrides || count * 8 === symbologyOverrides.length);\r\n\r\n let idBuf: BufferHandle | undefined;\r\n if (undefined !== featureIds && undefined === (idBuf = BufferHandle.createArrayBuffer(featureIds)))\r\n return undefined;\r\n\r\n let symBuf: BufferHandle | undefined;\r\n if (undefined !== symbologyOverrides && undefined === (symBuf = BufferHandle.createArrayBuffer(symbologyOverrides)))\r\n return undefined;\r\n\r\n const tfBuf = BufferHandle.createArrayBuffer(transforms);\r\n return undefined !== tfBuf ? new InstanceBuffers(count, tfBuf, params.transformCenter, range, symBuf, idBuf) : undefined;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this.transforms.isDisposed\r\n && (undefined === this.featureIds || this.featureIds.isDisposed)\r\n && (undefined === this.symbology || this.symbology.isDisposed);\r\n }\r\n\r\n public dispose() {\r\n dispose(this.transforms);\r\n dispose(this.featureIds);\r\n dispose(this.symbology);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n const featureBytes = undefined !== this.featureIds ? this.featureIds.bytesUsed : 0;\r\n const symBytes = undefined !== this.symbology ? this.symbology.bytesUsed : 0;\r\n\r\n const bytesUsed = this.transforms.bytesUsed + symBytes + featureBytes;\r\n stats.addInstances(bytesUsed);\r\n }\r\n\r\n private static extendTransformedRange(tfs: Float32Array, i: number, range: Range3d, x: number, y: number, z: number) {\r\n range.extendXYZ(tfs[i + 3] + tfs[i + 0] * x + tfs[i + 1] * y + tfs[i + 2] * z,\r\n tfs[i + 7] + tfs[i + 4] * x + tfs[i + 5] * y + tfs[i + 6] * z,\r\n tfs[i + 11] + tfs[i + 8] * x + tfs[i + 9] * y + tfs[i + 10] * z);\r\n }\r\n\r\n public static computeRange(reprRange: Range3d, tfs: Float32Array, rtcCenter: Point3d, out?: Range3d): Range3d {\r\n const range = out ?? new Range3d();\r\n\r\n const numFloatsPerTransform = 3 * 4;\r\n assert(0 === tfs.length % (3 * 4));\r\n\r\n for (let i = 0; i < tfs.length; i += numFloatsPerTransform) {\r\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.low.y, reprRange.low.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.low.y, reprRange.high.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.high.y, reprRange.low.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.high.y, reprRange.high.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.low.y, reprRange.low.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.low.y, reprRange.high.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.high.y, reprRange.low.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.high.y, reprRange.high.z);\r\n }\r\n\r\n range.low.addInPlace(rtcCenter);\r\n range.high.addInPlace(rtcCenter);\r\n\r\n return range.clone(out);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PatternBuffers extends InstanceData {\r\n private readonly _featureId?: Float32Array;\r\n\r\n private constructor(\r\n count: number,\r\n rtcCenter: Point3d,\r\n range: Range3d,\r\n public readonly patternParams: Float32Array, // [ isAreaPattern, spacingX, spacingY, scale ]\r\n public readonly origin: Float32Array, // [ x, y ]\r\n public readonly orgTransform: Matrix4,\r\n public readonly localToModel: Matrix4,\r\n public readonly symbolToLocal: Matrix4,\r\n public readonly offsets: BufferHandle,\r\n featureId: number | undefined,\r\n public readonly viewIndependentOrigin: Point3d | undefined,\r\n ) {\r\n super(count, rtcCenter, range);\r\n this.patternTransforms = this;\r\n if (undefined !== featureId) {\r\n this._featureId = new Float32Array([\r\n (featureId & 0x0000ff) >>> 0,\r\n (featureId & 0x00ff00) >>> 8,\r\n (featureId & 0xff0000) >>> 16,\r\n ]);\r\n }\r\n }\r\n\r\n public static create(params: PatternGraphicParams): PatternBuffers | undefined {\r\n const count = params.xyOffsets.byteLength / 2;\r\n assert(Math.floor(count) === count);\r\n\r\n const offsets = BufferHandle.createArrayBuffer(params.xyOffsets);\r\n if (!offsets)\r\n return undefined;\r\n\r\n return new PatternBuffers(\r\n count,\r\n new Point3d(),\r\n params.range,\r\n new Float32Array([1, params.spacing.x, params.spacing.y, params.scale]),\r\n new Float32Array([params.origin.x, params.origin.y]),\r\n Matrix4.fromTransform(params.orgTransform),\r\n Matrix4.fromTransform(params.patternToModel),\r\n Matrix4.fromTransform(Transform.createTranslation(params.symbolTranslation)),\r\n offsets,\r\n params.featureId,\r\n params.viewIndependentOrigin,\r\n );\r\n }\r\n\r\n public readonly patternTransforms: PatternTransforms;\r\n\r\n public get hasFeatures(): boolean {\r\n return undefined !== this._featureId;\r\n }\r\n\r\n public override get patternFeatureId(): Float32Array {\r\n return this._featureId ?? super.patternFeatureId;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this.offsets.isDisposed;\r\n }\r\n\r\n public dispose(): void {\r\n dispose(this.offsets);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n stats.addInstances(this.offsets.bytesUsed);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class InstancedGeometry extends CachedGeometry {\r\n private readonly _buffersContainer: BuffersContainer;\r\n private readonly _buffers: InstanceBuffers | PatternBuffers;\r\n private readonly _repr: LUTGeometry;\r\n private readonly _ownsBuffers: boolean;\r\n\r\n public getRtcModelTransform(modelMatrix: Transform) { return this._buffers.getRtcModelTransform(modelMatrix); }\r\n public getRtcOnlyTransform() { return this._buffers.getRtcOnlyTransform(); }\r\n\r\n public override get viewIndependentOrigin(): Point3d | undefined { return this._buffers.viewIndependentOrigin; }\r\n\r\n public override get asInstanced() { return this; }\r\n public override get asLUT() { return this._repr.asLUT; }\r\n public override get asMesh() { return this._repr.asMesh; }\r\n public override get asSurface() { return this._repr.asSurface; }\r\n public override get asEdge() { return this._repr.asEdge; }\r\n public override get asSilhouette() { return this._repr.asSilhouette; }\r\n public override get asIndexedEdge() { return this._repr.asIndexedEdge; }\r\n\r\n public get renderOrder() { return this._repr.renderOrder; }\r\n public override get isLitSurface() { return this._repr.isLitSurface; }\r\n public override get hasBakedLighting() { return this._repr.hasBakedLighting; }\r\n public override get hasAnimation() { return this._repr.hasAnimation; }\r\n public override get usesQuantizedPositions() { return this._repr.usesQuantizedPositions; }\r\n public get qOrigin() { return this._repr.qOrigin; }\r\n public get qScale() { return this._repr.qScale; }\r\n public override get materialInfo() { return this._repr.materialInfo; }\r\n public override get polylineBuffers() { return this._repr.polylineBuffers; }\r\n public override get isEdge() { return this._repr.isEdge; }\r\n public override get hasFeatures() { return this._buffers.hasFeatures; }\r\n public get techniqueId(): TechniqueId { return this._repr.techniqueId; }\r\n public override get supportsThematicDisplay() { return this._repr.supportsThematicDisplay; }\r\n\r\n public override getPass(target: Target) { return this._repr.getPass(target); }\r\n public override wantWoWReversal(params: ShaderProgramParams) { return this._repr.wantWoWReversal(params); }\r\n public override getLineCode(params: ShaderProgramParams) { return this._repr.getLineCode(params); }\r\n public override getLineWeight(params: ShaderProgramParams) { return this._repr.getLineWeight(params); }\r\n public override wantMonochrome(target: Target) { return this._repr.wantMonochrome(target); }\r\n public override wantMixMonochromeColor(target: Target): boolean { return this._repr.wantMixMonochromeColor(target); }\r\n\r\n public static create(repr: LUTGeometry, ownsBuffers: boolean, buffers: InstanceBuffers): InstancedGeometry {\r\n const techId = repr.techniqueId;\r\n const container = BuffersContainer.create();\r\n container.appendLinkages(repr.lutBuffers.linkages);\r\n\r\n container.addBuffer(buffers.transforms, InstanceBuffers.createTransformBufferParameters(repr.techniqueId));\r\n\r\n if (buffers.symbology) {\r\n const attrInstanceOverrides = AttributeMap.findAttribute(\"a_instanceOverrides\", techId, true);\r\n const attrInstanceRgba = AttributeMap.findAttribute(\"a_instanceRgba\", techId, true);\r\n assert(attrInstanceOverrides !== undefined);\r\n assert(attrInstanceRgba !== undefined);\r\n container.addBuffer(buffers.symbology, [\r\n BufferParameters.create(attrInstanceOverrides.location, 4, GL.DataType.UnsignedByte, false, 8, 0, true),\r\n BufferParameters.create(attrInstanceRgba.location, 4, GL.DataType.UnsignedByte, false, 8, 4, true),\r\n ]);\r\n }\r\n if (buffers.featureIds) {\r\n const attrFeatureId = AttributeMap.findAttribute(\"a_featureId\", techId, true);\r\n assert(attrFeatureId !== undefined);\r\n container.addBuffer(buffers.featureIds, [BufferParameters.create(attrFeatureId.location, 3, GL.DataType.UnsignedByte, false, 0, 0, true)]);\r\n }\r\n\r\n return new this(repr, ownsBuffers, buffers, container);\r\n }\r\n\r\n public static createPattern(repr: LUTGeometry, ownsBuffers: boolean, buffers: PatternBuffers): InstancedGeometry {\r\n const techId = repr.techniqueId;\r\n const container = BuffersContainer.create();\r\n container.appendLinkages(repr.lutBuffers.linkages);\r\n\r\n const attrX = AttributeMap.findAttribute(\"a_patternX\", techId, true);\r\n const attrY = AttributeMap.findAttribute(\"a_patternY\", techId, true);\r\n assert(undefined !== attrX && undefined !== attrY);\r\n container.addBuffer(buffers.offsets, [\r\n BufferParameters.create(attrX.location, 1, GL.DataType.Float, false, 8, 0, true),\r\n BufferParameters.create(attrY.location, 1, GL.DataType.Float, false, 8, 4, true),\r\n ]);\r\n\r\n return new this(repr, ownsBuffers, buffers, container);\r\n }\r\n\r\n private constructor(repr: LUTGeometry, ownsBuffers: boolean, buffers: InstanceBuffers | PatternBuffers, container: BuffersContainer) {\r\n super();\r\n this._repr = repr;\r\n this._ownsBuffers = ownsBuffers;\r\n this._buffers = buffers;\r\n this._buffersContainer = container;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n if (!this._repr.isDisposed)\r\n return false;\r\n\r\n return !this._ownsBuffers || this._buffers.isDisposed;\r\n }\r\n\r\n public dispose() {\r\n this._repr.dispose();\r\n if (this._ownsBuffers)\r\n dispose(this._buffers);\r\n }\r\n\r\n protected _wantWoWReversal(_target: Target) {\r\n assert(false, \"Should never be called\");\r\n return false;\r\n }\r\n\r\n public draw() {\r\n this._repr.drawInstanced(this._buffers.numInstances, this._buffersContainer);\r\n }\r\n\r\n public override computeRange(output?: Range3d): Range3d {\r\n return this._buffers.range.clone(output);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics) {\r\n this._repr.collectStatistics(stats);\r\n if (this._ownsBuffers)\r\n this._buffers.collectStatistics(stats);\r\n }\r\n\r\n public get patternParams(): Float32Array { return this._buffers.patternParams; }\r\n public get patternTransforms(): PatternTransforms | undefined { return this._buffers.patternTransforms; }\r\n public get patternFeatureId(): Float32Array { return this._buffers.patternFeatureId; }\r\n}\r\n"]}
1
+ {"version":3,"file":"InstancedGeometry.js","sourceRoot":"","sources":["../../../../src/render/webgl/InstancedGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { Point3d, Range3d, Transform, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { InstancedGraphicParams, InstancedGraphicProps, PatternGraphicParams } from \"../../common/render/InstancedGraphicParams\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { CachedGeometry, LUTGeometry } from \"./CachedGeometry\";\r\nimport { ShaderProgramParams } from \"./DrawCommand\";\r\nimport { GL } from \"./GL\";\r\nimport { BufferHandle, BufferParameters, BuffersContainer } from \"./AttributeBuffers\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { Matrix4 } from \"./Matrix\";\r\nimport { RenderInstances } from \"../RenderSystem\";\r\nimport { _featureTable, _implementationProhibited, _renderSystem, _transformCenter, _transforms } from \"../../common/internal/Symbols\";\r\nimport { BatchType, PackedFeatureTable } from \"@itwin/core-common\";\r\nimport { RenderInstancesParamsImpl } from \"../../internal/render/RenderInstancesParamsImpl\";\r\n\r\n/** @internal */\r\nexport function isInstancedGraphicParams(params: any): params is InstancedGraphicParams {\r\n return typeof params === \"object\" && typeof params.count === \"number\" && params.transforms instanceof Float32Array && params.transformCenter instanceof Point3d;\r\n}\r\n\r\nclass InstanceData {\r\n public readonly numInstances: number;\r\n // A transform including only rtcCenter.\r\n private readonly _rtcOnlyTransform: Transform;\r\n // A transform from _rtcCenter including model matrix\r\n private readonly _rtcModelTransform: Transform;\r\n // The model matrix from which _rtcModelTransform was previously computed. If it changes, _rtcModelTransform must be recomputed.\r\n private readonly _modelMatrix = Transform.createIdentity();\r\n\r\n protected constructor(numInstances: number, rtcCenter: Point3d) {\r\n this.numInstances = numInstances;\r\n this._rtcOnlyTransform = Transform.createTranslation(rtcCenter);\r\n this._rtcModelTransform = this._rtcOnlyTransform.clone();\r\n }\r\n\r\n public getRtcModelTransform(modelMatrix: Transform): Transform {\r\n if (!this._modelMatrix.isAlmostEqual(modelMatrix)) {\r\n modelMatrix.clone(this._modelMatrix);\r\n modelMatrix.multiplyTransformTransform(this._rtcOnlyTransform, this._rtcModelTransform);\r\n }\r\n\r\n return this._rtcModelTransform;\r\n }\r\n\r\n public getRtcOnlyTransform(): Transform {\r\n return this._rtcOnlyTransform;\r\n }\r\n\r\n private static readonly _noFeatureId = new Float32Array([0, 0, 0]);\r\n public get patternFeatureId(): Float32Array {\r\n return InstanceData._noFeatureId;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface PatternTransforms {\r\n readonly orgTransform: Matrix4;\r\n readonly localToModel: Matrix4;\r\n readonly symbolToLocal: Matrix4;\r\n readonly origin: Float32Array;\r\n}\r\n\r\n/** @internal */\r\nexport class InstanceBuffersData extends InstanceData {\r\n public readonly transforms: BufferHandle;\r\n public readonly featureIds?: BufferHandle;\r\n public readonly symbology?: BufferHandle;\r\n private _noDispose = false;\r\n\r\n private constructor(count: number, transforms: BufferHandle, rtcCenter: Point3d, symbology?: BufferHandle, featureIds?: BufferHandle, disableDisposal = false) {\r\n super(count, rtcCenter);\r\n this.transforms = transforms;\r\n this.featureIds = featureIds;\r\n this.symbology = symbology;\r\n this._noDispose = disableDisposal;\r\n }\r\n\r\n public static create(params: InstancedGraphicParams | InstancedGraphicProps, disableDisposal = false): InstanceBuffersData | undefined {\r\n const { count, featureIds, symbologyOverrides, transforms } = params;\r\n\r\n assert(count > 0 && Math.floor(count) === count);\r\n assert(count === transforms.length / 12);\r\n assert(undefined === featureIds || count === featureIds.length / 3);\r\n assert(undefined === symbologyOverrides || count * 8 === symbologyOverrides.length);\r\n\r\n let idBuf: BufferHandle | undefined;\r\n if (undefined !== featureIds && undefined === (idBuf = BufferHandle.createArrayBuffer(featureIds)))\r\n return undefined;\r\n\r\n let symBuf: BufferHandle | undefined;\r\n if (undefined !== symbologyOverrides && undefined === (symBuf = BufferHandle.createArrayBuffer(symbologyOverrides)))\r\n return undefined;\r\n\r\n const tfBuf = BufferHandle.createArrayBuffer(transforms);\r\n const transformCenter = params.transformCenter instanceof Point3d ? params.transformCenter : Point3d.fromJSON(params.transformCenter);\r\n if (!tfBuf) {\r\n return undefined;\r\n }\r\n\r\n return new InstanceBuffersData(count, tfBuf, transformCenter, symBuf, idBuf, disableDisposal);\r\n }\r\n\r\n public dispose(): void {\r\n if (!this._noDispose) {\r\n dispose(this.transforms);\r\n dispose(this.featureIds);\r\n dispose(this.symbology);\r\n }\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this.transforms.isDisposed && (!this.featureIds || this.featureIds.isDisposed) && (!this.symbology || this.symbology.isDisposed);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface RenderInstancesImpl extends RenderInstances {\r\n readonly buffers: InstanceBuffersData;\r\n}\r\n\r\n/** @internal */\r\nexport namespace RenderInstancesImpl {\r\n export function create(params: RenderInstancesParamsImpl): RenderInstancesImpl | undefined {\r\n const buffers = InstanceBuffersData.create(params.instances, true);\r\n if (!buffers) {\r\n return undefined;\r\n }\r\n\r\n let featureTable;\r\n if (params.features) {\r\n // ###TODO permit user to specify batch type and other batch options...\r\n featureTable = new PackedFeatureTable(params.features.data, params.features.modelId, params.features.count, BatchType.Primary);\r\n }\r\n\r\n return {\r\n [_implementationProhibited]: \"renderInstances\",\r\n buffers,\r\n [_transforms]: params.instances.transforms,\r\n [_transformCenter]: params.instances.transformCenter,\r\n [_featureTable]: featureTable,\r\n };\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class InstanceBuffers {\r\n private static readonly _patternParams = new Float32Array([0, 0, 0, 0]);\r\n private readonly _data: InstanceBuffersData;\r\n public readonly patternParams = InstanceBuffers._patternParams;\r\n public readonly patternTransforms = undefined;\r\n public readonly viewIndependentOrigin = undefined;\r\n public readonly range: Range3d;\r\n\r\n public get numInstances() { return this._data.numInstances; }\r\n public get transforms() { return this._data.transforms; }\r\n public get featureIds() { return this._data.featureIds; }\r\n public get symbology() { return this._data.symbology; }\r\n public get hasFeatures() { return undefined !== this.featureIds; }\r\n public get patternFeatureId() { return this._data.patternFeatureId; }\r\n\r\n public getRtcModelTransform(modelMatrix: Transform) { return this._data.getRtcModelTransform(modelMatrix); }\r\n public getRtcOnlyTransform() { return this._data.getRtcOnlyTransform(); }\r\n\r\n private constructor(data: InstanceBuffersData, range: Range3d) {\r\n this._data = data;\r\n this.range = range;\r\n }\r\n\r\n public static createTransformBufferParameters(techniqueId: TechniqueId): BufferParameters[] {\r\n const params: BufferParameters[] = [];\r\n const numRows = 3;\r\n let row = 0;\r\n while (row < numRows) {\r\n // 3 rows per instance; 4 floats per row; 4 bytes per float.\r\n const floatsPerRow = 4;\r\n const bytesPerVertex = floatsPerRow * 4;\r\n const offset = row * bytesPerVertex;\r\n const stride = 3 * bytesPerVertex;\r\n const name = `a_instanceMatrixRow${row}`;\r\n const details = AttributeMap.findAttribute(name, techniqueId, true);\r\n assert(details !== undefined);\r\n const bParams: BufferParameters = {\r\n glAttribLoc: details.location,\r\n glSize: floatsPerRow,\r\n glType: GL.DataType.Float,\r\n glNormalized: false,\r\n glStride: stride,\r\n glOffset: offset,\r\n glInstanced: true,\r\n };\r\n params.push(bParams);\r\n row++;\r\n }\r\n return params;\r\n }\r\n\r\n public static fromParams(params: InstancedGraphicParams, computeReprRange: () => Range3d): InstanceBuffers | undefined {\r\n const data = InstanceBuffersData.create(params);\r\n if (!data) {\r\n return undefined;\r\n }\r\n\r\n const range = params.range ?? this.computeRange(computeReprRange(), params.transforms, params.transformCenter);\r\n return new InstanceBuffers(data, range);\r\n }\r\n\r\n public static fromRenderInstances(arg: RenderInstances, reprRange: Range3d): InstanceBuffers {\r\n const instances = arg as RenderInstancesImpl;\r\n const range = this.computeRange(reprRange, instances[_transforms], instances[_transformCenter]);\r\n return new InstanceBuffers(instances.buffers, range);\r\n }\r\n\r\n public dispose() {\r\n dispose(this._data);\r\n }\r\n\r\n public get isDisposed() {\r\n return this._data.isDisposed;\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n const featureBytes = undefined !== this.featureIds ? this.featureIds.bytesUsed : 0;\r\n const symBytes = undefined !== this.symbology ? this.symbology.bytesUsed : 0;\r\n\r\n const bytesUsed = this.transforms.bytesUsed + symBytes + featureBytes;\r\n stats.addInstances(bytesUsed);\r\n }\r\n\r\n private static extendTransformedRange(tfs: Float32Array, i: number, range: Range3d, x: number, y: number, z: number) {\r\n range.extendXYZ(tfs[i + 3] + tfs[i + 0] * x + tfs[i + 1] * y + tfs[i + 2] * z,\r\n tfs[i + 7] + tfs[i + 4] * x + tfs[i + 5] * y + tfs[i + 6] * z,\r\n tfs[i + 11] + tfs[i + 8] * x + tfs[i + 9] * y + tfs[i + 10] * z);\r\n }\r\n\r\n public static computeRange(reprRange: Range3d, tfs: Float32Array, rtcCenter: XYAndZ, out?: Range3d): Range3d {\r\n const range = out ?? new Range3d();\r\n\r\n const numFloatsPerTransform = 3 * 4;\r\n assert(0 === tfs.length % (3 * 4));\r\n\r\n for (let i = 0; i < tfs.length; i += numFloatsPerTransform) {\r\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.low.y, reprRange.low.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.low.y, reprRange.high.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.high.y, reprRange.low.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.high.y, reprRange.high.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.low.y, reprRange.low.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.low.y, reprRange.high.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.high.y, reprRange.low.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.high.y, reprRange.high.z);\r\n }\r\n\r\n range.low.addInPlace(rtcCenter);\r\n range.high.addInPlace(rtcCenter);\r\n\r\n return range.clone(out);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PatternBuffers extends InstanceData {\r\n private readonly _featureId?: Float32Array;\r\n public readonly [_implementationProhibited] = \"renderAreaPattern\";\r\n\r\n private constructor(\r\n count: number,\r\n rtcCenter: Point3d,\r\n public readonly range: Range3d,\r\n public readonly patternParams: Float32Array, // [ isAreaPattern, spacingX, spacingY, scale ]\r\n public readonly origin: Float32Array, // [ x, y ]\r\n public readonly orgTransform: Matrix4,\r\n public readonly localToModel: Matrix4,\r\n public readonly symbolToLocal: Matrix4,\r\n public readonly offsets: BufferHandle,\r\n featureId: number | undefined,\r\n public readonly viewIndependentOrigin: Point3d | undefined,\r\n ) {\r\n super(count, rtcCenter);\r\n this.patternTransforms = this;\r\n if (undefined !== featureId) {\r\n this._featureId = new Float32Array([\r\n (featureId & 0x0000ff) >>> 0,\r\n (featureId & 0x00ff00) >>> 8,\r\n (featureId & 0xff0000) >>> 16,\r\n ]);\r\n }\r\n }\r\n\r\n public static create(params: PatternGraphicParams): PatternBuffers | undefined {\r\n const count = params.xyOffsets.byteLength / 2;\r\n assert(Math.floor(count) === count);\r\n\r\n const offsets = BufferHandle.createArrayBuffer(params.xyOffsets);\r\n if (!offsets)\r\n return undefined;\r\n\r\n return new PatternBuffers(\r\n count,\r\n new Point3d(),\r\n params.range,\r\n new Float32Array([1, params.spacing.x, params.spacing.y, params.scale]),\r\n new Float32Array([params.origin.x, params.origin.y]),\r\n Matrix4.fromTransform(params.orgTransform),\r\n Matrix4.fromTransform(params.patternToModel),\r\n Matrix4.fromTransform(Transform.createTranslation(params.symbolTranslation)),\r\n offsets,\r\n params.featureId,\r\n params.viewIndependentOrigin,\r\n );\r\n }\r\n\r\n public readonly patternTransforms: PatternTransforms;\r\n\r\n public get hasFeatures(): boolean {\r\n return undefined !== this._featureId;\r\n }\r\n\r\n public override get patternFeatureId(): Float32Array {\r\n return this._featureId ?? super.patternFeatureId;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this.offsets.isDisposed;\r\n }\r\n\r\n public dispose(): void {\r\n dispose(this.offsets);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n stats.addInstances(this.offsets.bytesUsed);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class InstancedGeometry extends CachedGeometry {\r\n private readonly _buffersContainer: BuffersContainer;\r\n private readonly _buffers: InstanceBuffers | PatternBuffers;\r\n private readonly _repr: LUTGeometry;\r\n private readonly _ownsBuffers: boolean;\r\n\r\n public getRtcModelTransform(modelMatrix: Transform) { return this._buffers.getRtcModelTransform(modelMatrix); }\r\n public getRtcOnlyTransform() { return this._buffers.getRtcOnlyTransform(); }\r\n\r\n public override get viewIndependentOrigin(): Point3d | undefined { return this._buffers.viewIndependentOrigin; }\r\n\r\n public override get asInstanced() { return this; }\r\n public override get asLUT() { return this._repr.asLUT; }\r\n public override get asMesh() { return this._repr.asMesh; }\r\n public override get asSurface() { return this._repr.asSurface; }\r\n public override get asEdge() { return this._repr.asEdge; }\r\n public override get asSilhouette() { return this._repr.asSilhouette; }\r\n public override get asIndexedEdge() { return this._repr.asIndexedEdge; }\r\n\r\n public get renderOrder() { return this._repr.renderOrder; }\r\n public override get isLitSurface() { return this._repr.isLitSurface; }\r\n public override get hasBakedLighting() { return this._repr.hasBakedLighting; }\r\n public override get hasAnimation() { return this._repr.hasAnimation; }\r\n public override get usesQuantizedPositions() { return this._repr.usesQuantizedPositions; }\r\n public get qOrigin() { return this._repr.qOrigin; }\r\n public get qScale() { return this._repr.qScale; }\r\n public override get materialInfo() { return this._repr.materialInfo; }\r\n public override get polylineBuffers() { return this._repr.polylineBuffers; }\r\n public override get isEdge() { return this._repr.isEdge; }\r\n public override get hasFeatures() { return this._buffers.hasFeatures; }\r\n public get techniqueId(): TechniqueId { return this._repr.techniqueId; }\r\n public override get supportsThematicDisplay() { return this._repr.supportsThematicDisplay; }\r\n\r\n public override getPass(target: Target) { return this._repr.getPass(target); }\r\n public override wantWoWReversal(params: ShaderProgramParams) { return this._repr.wantWoWReversal(params); }\r\n public override getLineCode(params: ShaderProgramParams) { return this._repr.getLineCode(params); }\r\n public override getLineWeight(params: ShaderProgramParams) { return this._repr.getLineWeight(params); }\r\n public override wantMonochrome(target: Target) { return this._repr.wantMonochrome(target); }\r\n public override wantMixMonochromeColor(target: Target): boolean { return this._repr.wantMixMonochromeColor(target); }\r\n\r\n public static create(repr: LUTGeometry, ownsBuffers: boolean, buffers: InstanceBuffers): InstancedGeometry {\r\n const techId = repr.techniqueId;\r\n const container = BuffersContainer.create();\r\n container.appendLinkages(repr.lutBuffers.linkages);\r\n\r\n container.addBuffer(buffers.transforms, InstanceBuffers.createTransformBufferParameters(repr.techniqueId));\r\n\r\n if (buffers.symbology) {\r\n const attrInstanceOverrides = AttributeMap.findAttribute(\"a_instanceOverrides\", techId, true);\r\n const attrInstanceRgba = AttributeMap.findAttribute(\"a_instanceRgba\", techId, true);\r\n assert(attrInstanceOverrides !== undefined);\r\n assert(attrInstanceRgba !== undefined);\r\n container.addBuffer(buffers.symbology, [\r\n BufferParameters.create(attrInstanceOverrides.location, 4, GL.DataType.UnsignedByte, false, 8, 0, true),\r\n BufferParameters.create(attrInstanceRgba.location, 4, GL.DataType.UnsignedByte, false, 8, 4, true),\r\n ]);\r\n }\r\n if (buffers.featureIds) {\r\n const attrFeatureId = AttributeMap.findAttribute(\"a_featureId\", techId, true);\r\n assert(attrFeatureId !== undefined);\r\n container.addBuffer(buffers.featureIds, [BufferParameters.create(attrFeatureId.location, 3, GL.DataType.UnsignedByte, false, 0, 0, true)]);\r\n }\r\n\r\n return new this(repr, ownsBuffers, buffers, container);\r\n }\r\n\r\n public static createPattern(repr: LUTGeometry, ownsBuffers: boolean, buffers: PatternBuffers): InstancedGeometry {\r\n const techId = repr.techniqueId;\r\n const container = BuffersContainer.create();\r\n container.appendLinkages(repr.lutBuffers.linkages);\r\n\r\n const attrX = AttributeMap.findAttribute(\"a_patternX\", techId, true);\r\n const attrY = AttributeMap.findAttribute(\"a_patternY\", techId, true);\r\n assert(undefined !== attrX && undefined !== attrY);\r\n container.addBuffer(buffers.offsets, [\r\n BufferParameters.create(attrX.location, 1, GL.DataType.Float, false, 8, 0, true),\r\n BufferParameters.create(attrY.location, 1, GL.DataType.Float, false, 8, 4, true),\r\n ]);\r\n\r\n return new this(repr, ownsBuffers, buffers, container);\r\n }\r\n\r\n private constructor(repr: LUTGeometry, ownsBuffers: boolean, buffers: InstanceBuffers | PatternBuffers, container: BuffersContainer) {\r\n super();\r\n this._repr = repr;\r\n this._ownsBuffers = ownsBuffers;\r\n this._buffers = buffers;\r\n this._buffersContainer = container;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n if (!this._repr.isDisposed)\r\n return false;\r\n\r\n return !this._ownsBuffers || this._buffers.isDisposed;\r\n }\r\n\r\n public dispose() {\r\n this._repr.dispose();\r\n if (this._ownsBuffers)\r\n dispose(this._buffers);\r\n }\r\n\r\n protected _wantWoWReversal(_target: Target) {\r\n assert(false, \"Should never be called\");\r\n return false;\r\n }\r\n\r\n public draw() {\r\n this._repr.drawInstanced(this._buffers.numInstances, this._buffersContainer);\r\n }\r\n\r\n public override computeRange(output?: Range3d): Range3d {\r\n return this._buffers.range.clone(output);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics) {\r\n this._repr.collectStatistics(stats);\r\n if (this._ownsBuffers)\r\n this._buffers.collectStatistics(stats);\r\n }\r\n\r\n public get patternParams(): Float32Array { return this._buffers.patternParams; }\r\n public get patternTransforms(): PatternTransforms | undefined { return this._buffers.patternTransforms; }\r\n public get patternFeatureId(): Float32Array { return this._buffers.patternFeatureId; }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"LineCode.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/LineCode.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;GAEG;AACH,yBAAiB,QAAQ,CAAC;IACxB,SAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAc9D;IAEM,MAAM,KAAK,IAAI,CAAC;IAChB,MAAM,KAAK,KAAK,CAAC;IACjB,MAAM,IAAI,KAAK,CAAC;IAIhB,MAAM,YAAY,EAAE,MAAM,EAgBgK,CAAC;CACnM"}
1
+ {"version":3,"file":"LineCode.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/LineCode.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD;;GAEG;AACH,yBAAiB,QAAQ,CAAC;IACxB,SAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAE9D;IAEM,MAAM,KAAK,IAAI,CAAC;IAChB,MAAM,KAAK,KAAK,CAAC;IACjB,MAAM,IAAI,KAAK,CAAC;IAIhB,MAAM,YAAY,EAAE,MAAM,EAgBgK,CAAC;CACnM"}
@@ -8,26 +8,14 @@
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.LineCode = void 0;
11
- const core_common_1 = require("@itwin/core-common");
11
+ const LineCode_1 = require("../../common/internal/render/LineCode");
12
12
  /** Describes one of the pre-defined line patterns. See Render.LinePixels.
13
13
  * @internal
14
14
  */
15
15
  var LineCode;
16
16
  (function (LineCode) {
17
17
  function valueFromLinePixels(pixels) {
18
- switch (pixels) {
19
- case core_common_1.LinePixels.Code0: return 0;
20
- case core_common_1.LinePixels.Code1: return 1;
21
- case core_common_1.LinePixels.Code2: return 2;
22
- case core_common_1.LinePixels.Code3: return 3;
23
- case core_common_1.LinePixels.Code4: return 4;
24
- case core_common_1.LinePixels.Code5: return 5;
25
- case core_common_1.LinePixels.Code6: return 6;
26
- case core_common_1.LinePixels.Code7: return 7;
27
- case core_common_1.LinePixels.HiddenLine: return 8;
28
- case core_common_1.LinePixels.Invisible: return 9;
29
- default: return 0;
30
- }
18
+ return (0, LineCode_1.lineCodeFromLinePixels)(pixels);
31
19
  }
32
20
  LineCode.valueFromLinePixels = valueFromLinePixels;
33
21
  LineCode.solid = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"LineCode.js","sourceRoot":"","sources":["../../../../src/render/webgl/LineCode.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,oDAAgD;AAEhD;;GAEG;AACH,IAAiB,QAAQ,CAwCxB;AAxCD,WAAiB,QAAQ;IACvB,SAAgB,mBAAmB,CAAC,MAAkB;QACpD,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,wBAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,wBAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,wBAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,wBAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,wBAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,wBAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,wBAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,wBAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,wBAAU,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC;YACrC,KAAK,wBAAU,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC;YACpC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAde,4BAAmB,sBAclC,CAAA;IAEY,cAAK,GAAG,CAAC,CAAC;IACV,cAAK,GAAG,EAAE,CAAC,CAAC,mEAAmE;IAC/E,aAAI,GAAG,EAAE,CAAC;IAEvB,qEAAqE;IACrE,iDAAiD;IACpC,qBAAY,GAAa;QACpC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;KAAC,CAAC;AACpM,CAAC,EAxCgB,QAAQ,wBAAR,QAAQ,QAwCxB","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { LinePixels } from \"@itwin/core-common\";\r\n\r\n/** Describes one of the pre-defined line patterns. See Render.LinePixels.\r\n * @internal\r\n */\r\nexport namespace LineCode {\r\n export function valueFromLinePixels(pixels: LinePixels): number {\r\n switch (pixels) {\r\n case LinePixels.Code0: return 0;\r\n case LinePixels.Code1: return 1;\r\n case LinePixels.Code2: return 2;\r\n case LinePixels.Code3: return 3;\r\n case LinePixels.Code4: return 4;\r\n case LinePixels.Code5: return 5;\r\n case LinePixels.Code6: return 6;\r\n case LinePixels.Code7: return 7;\r\n case LinePixels.HiddenLine: return 8;\r\n case LinePixels.Invisible: return 9;\r\n default: return 0;\r\n }\r\n }\r\n\r\n export const solid = 0;\r\n export const count = 16; // only 10 line codes, but pad to 16 to make height a power of two.\r\n export const size = 32;\r\n\r\n // NB: Non-power-of-two textures in WebGL only support clamp-to-edge.\r\n // Make this a power of two so we can use repeat.\r\n export const lineCodeData: number[] = [\r\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,\r\n 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\r\n 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,\r\n 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,\r\n 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\r\n 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff,\r\n 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];\r\n}\r\n"]}
1
+ {"version":3,"file":"LineCode.js","sourceRoot":"","sources":["../../../../src/render/webgl/LineCode.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,oEAA+E;AAE/E;;GAEG;AACH,IAAiB,QAAQ,CA4BxB;AA5BD,WAAiB,QAAQ;IACvB,SAAgB,mBAAmB,CAAC,MAAkB;QACpD,OAAO,IAAA,iCAAsB,EAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAFe,4BAAmB,sBAElC,CAAA;IAEY,cAAK,GAAG,CAAC,CAAC;IACV,cAAK,GAAG,EAAE,CAAC,CAAC,mEAAmE;IAC/E,aAAI,GAAG,EAAE,CAAC;IAEvB,qEAAqE;IACrE,iDAAiD;IACpC,qBAAY,GAAa;QACpC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;KAAC,CAAC;AACpM,CAAC,EA5BgB,QAAQ,wBAAR,QAAQ,QA4BxB","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { LinePixels } from \"@itwin/core-common\";\r\nimport { lineCodeFromLinePixels } from \"../../common/internal/render/LineCode\";\r\n\r\n/** Describes one of the pre-defined line patterns. See Render.LinePixels.\r\n * @internal\r\n */\r\nexport namespace LineCode {\r\n export function valueFromLinePixels(pixels: LinePixels): number {\r\n return lineCodeFromLinePixels(pixels);\r\n }\r\n\r\n export const solid = 0;\r\n export const count = 16; // only 10 line codes, but pad to 16 to make height a power of two.\r\n export const size = 32;\r\n\r\n // NB: Non-power-of-two textures in WebGL only support clamp-to-edge.\r\n // Make this a power of two so we can use repeat.\r\n export const lineCodeData: number[] = [\r\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,\r\n 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\r\n 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,\r\n 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,\r\n 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\r\n 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff,\r\n 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];\r\n}\r\n"]}
@@ -2,12 +2,11 @@
2
2
  * @module WebGL
3
3
  */
4
4
  import { Point3d, Range3d } from "@itwin/core-geometry";
5
- import { InstancedGraphicParams } from "../../common/render/InstancedGraphicParams";
6
5
  import { MeshParams } from "../../common/internal/render/MeshParams";
7
6
  import { SurfaceType } from "../../common/internal/render/SurfaceParams";
8
7
  import { RenderMemory } from "../RenderMemory";
9
8
  import { Graphic } from "./Graphic";
10
- import { PatternBuffers } from "./InstancedGeometry";
9
+ import { InstanceBuffers, PatternBuffers } from "./InstancedGeometry";
11
10
  import { Primitive } from "./Primitive";
12
11
  import { RenderCommands } from "./RenderCommands";
13
12
  import { RenderPass } from "./RenderFlags";
@@ -15,8 +14,12 @@ import { EdgeGeometry, PolylineEdgeGeometry, SilhouetteEdgeGeometry } from "./Ed
15
14
  import { IndexedEdgeGeometry } from "./IndexedEdgeGeometry";
16
15
  import { SurfaceGeometry } from "./SurfaceGeometry";
17
16
  import { MeshData } from "./MeshData";
17
+ import { RenderGeometry } from "../../internal/render/RenderGeometry";
18
18
  /** @internal */
19
- export declare class MeshRenderGeometry {
19
+ export declare class MeshRenderGeometry implements RenderGeometry {
20
+ readonly renderGeometryType: "mesh";
21
+ readonly isInstanceable: boolean;
22
+ noDispose: boolean;
20
23
  readonly data: MeshData;
21
24
  readonly surface?: SurfaceGeometry;
22
25
  readonly segmentEdges?: EdgeGeometry;
@@ -27,7 +30,9 @@ export declare class MeshRenderGeometry {
27
30
  private constructor();
28
31
  static create(params: MeshParams, viewIndependentOrigin: Point3d | undefined): MeshRenderGeometry | undefined;
29
32
  dispose(): void;
33
+ get isDisposed(): boolean;
30
34
  collectStatistics(stats: RenderMemory.Statistics): void;
35
+ computeRange(out?: Range3d): Range3d;
31
36
  }
32
37
  /** @internal */
33
38
  export declare class MeshGraphic extends Graphic {
@@ -37,7 +42,7 @@ export declare class MeshGraphic extends Graphic {
37
42
  private readonly _meshRange;
38
43
  get primitives(): readonly Primitive[];
39
44
  get meshRange(): Readonly<Range3d>;
40
- static create(geometry: MeshRenderGeometry, instances?: InstancedGraphicParams | PatternBuffers): MeshGraphic | undefined;
45
+ static create(geometry: MeshRenderGeometry, instances?: InstanceBuffers | PatternBuffers): MeshGraphic | undefined;
41
46
  private addPrimitive;
42
47
  private constructor();
43
48
  get isDisposed(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"Mesh.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Mesh.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAmB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,gBAAgB;AAChB,qBAAa,kBAAkB;IAC7B,SAAgB,IAAI,EAAE,QAAQ,CAAC;IAC/B,SAAgB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1C,SAAgB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5C,SAAgB,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzD,SAAgB,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrD,SAAgB,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnD,SAAgB,KAAK,EAAE,OAAO,CAAC;IAE/B,OAAO;WAqBO,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,qBAAqB,EAAE,OAAO,GAAG,SAAS,GAAG,kBAAkB,GAAG,SAAS;IAK7G,OAAO;IASP,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU;CAQxD;AAED,gBAAgB;AAChB,qBAAa,WAAY,SAAQ,OAAO;IACtC,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmB;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAmC;IAC/D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IAErC,IAAW,UAAU,IAAI,SAAS,SAAS,EAAE,CAA6B;IAC1E,IAAW,SAAS,IAAI,QAAQ,CAAC,OAAO,CAAC,CAA4B;WAEvD,MAAM,CAAC,QAAQ,EAAE,kBAAkB,EAAE,SAAS,CAAC,EAAE,sBAAsB,GAAG,cAAc,GAAG,WAAW,GAAG,SAAS;IAgBhI,OAAO,CAAC,YAAY;IAUpB,OAAO;IAaP,IAAW,UAAU,IAAI,OAAO,CAAsE;IACtG,IAAW,UAAU,YAAoB;IAElC,OAAO;IASP,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAM9C,UAAU,CAAC,KAAK,EAAE,OAAO;IAOlC,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAC9B,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAE/E,IAAW,WAAW,IAAI,WAAW,CAA+B;CACrE"}
1
+ {"version":3,"file":"Mesh.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Mesh.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtE,gBAAgB;AAChB,qBAAa,kBAAmB,YAAW,cAAc;IACvD,SAAgB,kBAAkB,EAAE,MAAM,CAAmB;IAC7D,SAAgB,cAAc,EAAE,OAAO,CAAC;IACjC,SAAS,UAAS;IACzB,SAAgB,IAAI,EAAE,QAAQ,CAAC;IAC/B,SAAgB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1C,SAAgB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5C,SAAgB,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzD,SAAgB,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrD,SAAgB,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnD,SAAgB,KAAK,EAAE,OAAO,CAAC;IAE/B,OAAO;WAsBO,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,qBAAqB,EAAE,OAAO,GAAG,SAAS,GAAG,kBAAkB,GAAG,SAAS;IAK7G,OAAO;IAad,IAAW,UAAU,YAOpB;IAEM,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU;IAShD,YAAY,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO;CAG5C;AAED,gBAAgB;AAChB,qBAAa,WAAY,SAAQ,OAAO;IACtC,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmB;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAmC;IAC/D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IAErC,IAAW,UAAU,IAAI,SAAS,SAAS,EAAE,CAA6B;IAC1E,IAAW,SAAS,IAAI,QAAQ,CAAC,OAAO,CAAC,CAA4B;WAEvD,MAAM,CAAC,QAAQ,EAAE,kBAAkB,EAAE,SAAS,CAAC,EAAE,eAAe,GAAG,cAAc,GAAG,WAAW,GAAG,SAAS;IAIzH,OAAO,CAAC,YAAY;IASpB,OAAO;IAaP,IAAW,UAAU,IAAI,OAAO,CAAsE;IACtG,IAAW,UAAU,YAAoB;IAElC,OAAO;IASP,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAM9C,UAAU,CAAC,KAAK,EAAE,OAAO;IAOlC,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAC9B,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAE/E,IAAW,WAAW,IAAI,WAAW,CAA+B;CACrE"}
@@ -10,9 +10,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.MeshGraphic = exports.MeshRenderGeometry = void 0;
11
11
  const core_bentley_1 = require("@itwin/core-bentley");
12
12
  const SurfaceParams_1 = require("../../common/internal/render/SurfaceParams");
13
- const CachedGeometry_1 = require("./CachedGeometry");
14
13
  const Graphic_1 = require("./Graphic");
15
- const InstancedGeometry_1 = require("./InstancedGeometry");
16
14
  const Primitive_1 = require("./Primitive");
17
15
  const EdgeGeometry_1 = require("./EdgeGeometry");
18
16
  const IndexedEdgeGeometry_1 = require("./IndexedEdgeGeometry");
@@ -21,7 +19,10 @@ const MeshData_1 = require("./MeshData");
21
19
  /** @internal */
22
20
  class MeshRenderGeometry {
23
21
  constructor(data, params) {
22
+ this.renderGeometryType = "mesh";
23
+ this.noDispose = false;
24
24
  this.data = data;
25
+ this.isInstanceable = data.viewIndependentOrigin === undefined;
25
26
  this.range = params.vertices.qparams.computeRange();
26
27
  this.surface = SurfaceGeometry_1.SurfaceGeometry.create(data, params.surface.indices);
27
28
  const edges = params.edges;
@@ -41,6 +42,9 @@ class MeshRenderGeometry {
41
42
  return data ? new this(data, params) : undefined;
42
43
  }
43
44
  dispose() {
45
+ if (this.noDispose) {
46
+ return;
47
+ }
44
48
  (0, core_bentley_1.dispose)(this.data);
45
49
  (0, core_bentley_1.dispose)(this.surface);
46
50
  (0, core_bentley_1.dispose)(this.segmentEdges);
@@ -48,6 +52,14 @@ class MeshRenderGeometry {
48
52
  (0, core_bentley_1.dispose)(this.polylineEdges);
49
53
  (0, core_bentley_1.dispose)(this.indexedEdges);
50
54
  }
55
+ get isDisposed() {
56
+ return this.data.isDisposed &&
57
+ (!this.surface || this.surface.isDisposed) &&
58
+ (!this.segmentEdges || this.segmentEdges.isDisposed) &&
59
+ (!this.silhouetteEdges || this.silhouetteEdges.isDisposed) &&
60
+ (!this.polylineEdges || this.polylineEdges.isDisposed) &&
61
+ (!this.indexedEdges || this.indexedEdges.isDisposed);
62
+ }
51
63
  collectStatistics(stats) {
52
64
  this.data.collectStatistics(stats);
53
65
  this.surface?.collectStatistics(stats);
@@ -56,6 +68,9 @@ class MeshRenderGeometry {
56
68
  this.polylineEdges?.collectStatistics(stats);
57
69
  this.indexedEdges?.collectStatistics(stats);
58
70
  }
71
+ computeRange(out) {
72
+ return this.range.clone(out);
73
+ }
59
74
  }
60
75
  exports.MeshRenderGeometry = MeshRenderGeometry;
61
76
  /** @internal */
@@ -63,24 +78,11 @@ class MeshGraphic extends Graphic_1.Graphic {
63
78
  get primitives() { return this._primitives; }
64
79
  get meshRange() { return this._meshRange; }
65
80
  static create(geometry, instances) {
66
- let buffers;
67
- if (instances) {
68
- if (instances instanceof InstancedGeometry_1.PatternBuffers) {
69
- buffers = instances;
70
- }
71
- else {
72
- const instancesRange = instances.range ?? InstancedGeometry_1.InstanceBuffers.computeRange(geometry.range, instances.transforms, instances.transformCenter);
73
- buffers = InstancedGeometry_1.InstanceBuffers.create(instances, instancesRange);
74
- if (!buffers)
75
- return undefined;
76
- }
77
- }
78
- return new MeshGraphic(geometry, buffers);
81
+ return new MeshGraphic(geometry, instances);
79
82
  }
80
83
  addPrimitive(geometry) {
81
84
  if (!geometry)
82
85
  return;
83
- (0, core_bentley_1.assert)(geometry instanceof CachedGeometry_1.CachedGeometry);
84
86
  const primitive = Primitive_1.Primitive.createShared(geometry, this._instances);
85
87
  if (primitive)
86
88
  this._primitives.push(primitive);