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

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 (293) hide show
  1. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  2. package/lib/cjs/DisplayStyleState.js +5 -1
  3. package/lib/cjs/DisplayStyleState.js.map +1 -1
  4. package/lib/cjs/ElementLocateManager.d.ts +7 -1
  5. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  6. package/lib/cjs/ElementLocateManager.js +34 -10
  7. package/lib/cjs/ElementLocateManager.js.map +1 -1
  8. package/lib/cjs/NoRenderApp.d.ts +1 -0
  9. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  10. package/lib/cjs/NoRenderApp.js +1 -0
  11. package/lib/cjs/NoRenderApp.js.map +1 -1
  12. package/lib/cjs/Viewport.d.ts +25 -1
  13. package/lib/cjs/Viewport.d.ts.map +1 -1
  14. package/lib/cjs/Viewport.js +20 -12
  15. package/lib/cjs/Viewport.js.map +1 -1
  16. package/lib/cjs/common/imdl/ImdlModel.d.ts +3 -8
  17. package/lib/cjs/common/imdl/ImdlModel.d.ts.map +1 -1
  18. package/lib/cjs/common/imdl/ImdlModel.js.map +1 -1
  19. package/lib/cjs/common/internal/Symbols.d.ts +7 -0
  20. package/lib/cjs/common/internal/Symbols.d.ts.map +1 -1
  21. package/lib/cjs/common/internal/Symbols.js +8 -1
  22. package/lib/cjs/common/internal/Symbols.js.map +1 -1
  23. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts +15 -0
  24. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -0
  25. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js +95 -0
  26. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -0
  27. package/lib/cjs/common/internal/render/LineCode.d.ts +9 -0
  28. package/lib/cjs/common/internal/render/LineCode.d.ts.map +1 -0
  29. package/lib/cjs/common/internal/render/LineCode.js +31 -0
  30. package/lib/cjs/common/internal/render/LineCode.js.map +1 -0
  31. package/lib/cjs/common/internal/render/OvrFlags.d.ts +25 -0
  32. package/lib/cjs/common/internal/render/OvrFlags.d.ts.map +1 -0
  33. package/lib/cjs/common/internal/render/OvrFlags.js +10 -0
  34. package/lib/cjs/common/internal/render/OvrFlags.js.map +1 -0
  35. package/lib/cjs/common/render/InstancedGraphicParams.d.ts +25 -1
  36. package/lib/cjs/common/render/InstancedGraphicParams.d.ts.map +1 -1
  37. package/lib/cjs/common/render/InstancedGraphicParams.js +59 -0
  38. package/lib/cjs/common/render/InstancedGraphicParams.js.map +1 -1
  39. package/lib/cjs/common/render/RenderInstancesParams.d.ts +76 -0
  40. package/lib/cjs/common/render/RenderInstancesParams.d.ts.map +1 -0
  41. package/lib/cjs/common/render/RenderInstancesParams.js +33 -0
  42. package/lib/cjs/common/render/RenderInstancesParams.js.map +1 -0
  43. package/lib/cjs/common.d.ts +1 -0
  44. package/lib/cjs/common.d.ts.map +1 -1
  45. package/lib/cjs/common.js +1 -0
  46. package/lib/cjs/common.js.map +1 -1
  47. package/lib/cjs/core-frontend.d.ts +1 -0
  48. package/lib/cjs/core-frontend.d.ts.map +1 -1
  49. package/lib/cjs/core-frontend.js +1 -0
  50. package/lib/cjs/core-frontend.js.map +1 -1
  51. package/lib/cjs/internal/render/PrimitiveBuilder.d.ts +4 -1
  52. package/lib/cjs/internal/render/PrimitiveBuilder.d.ts.map +1 -1
  53. package/lib/cjs/internal/render/PrimitiveBuilder.js +82 -35
  54. package/lib/cjs/internal/render/PrimitiveBuilder.js.map +1 -1
  55. package/lib/cjs/internal/render/RenderGeometry.d.ts +20 -0
  56. package/lib/cjs/internal/render/RenderGeometry.d.ts.map +1 -0
  57. package/lib/cjs/internal/render/RenderGeometry.js +10 -0
  58. package/lib/cjs/internal/render/RenderGeometry.js.map +1 -0
  59. package/lib/cjs/internal/render/RenderInstancesParamsImpl.d.ts +24 -0
  60. package/lib/cjs/internal/render/RenderInstancesParamsImpl.d.ts.map +1 -0
  61. package/lib/cjs/internal/render/RenderInstancesParamsImpl.js +69 -0
  62. package/lib/cjs/internal/render/RenderInstancesParamsImpl.js.map +1 -0
  63. package/lib/cjs/render/GraphicBuilder.d.ts +17 -3
  64. package/lib/cjs/render/GraphicBuilder.d.ts.map +1 -1
  65. package/lib/cjs/render/GraphicBuilder.js +7 -1
  66. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  67. package/lib/cjs/render/GraphicTemplate.d.ts +76 -0
  68. package/lib/cjs/render/GraphicTemplate.d.ts.map +1 -0
  69. package/lib/cjs/render/GraphicTemplate.js +41 -0
  70. package/lib/cjs/render/GraphicTemplate.js.map +1 -0
  71. package/lib/cjs/render/MockRender.d.ts +12 -2
  72. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  73. package/lib/cjs/render/MockRender.js +19 -5
  74. package/lib/cjs/render/MockRender.js.map +1 -1
  75. package/lib/cjs/render/RenderSystem.d.ts +58 -10
  76. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  77. package/lib/cjs/render/RenderSystem.js +42 -4
  78. package/lib/cjs/render/RenderSystem.js.map +1 -1
  79. package/lib/cjs/render/RenderTarget.d.ts +1 -1
  80. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  81. package/lib/cjs/render/RenderTarget.js.map +1 -1
  82. package/lib/cjs/render/webgl/BatchUniforms.js.map +1 -1
  83. package/lib/cjs/render/webgl/EdgeSettings.d.ts +2 -1
  84. package/lib/cjs/render/webgl/EdgeSettings.d.ts.map +1 -1
  85. package/lib/cjs/render/webgl/EdgeSettings.js.map +1 -1
  86. package/lib/cjs/render/webgl/FeatureOverrides.d.ts +1 -0
  87. package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
  88. package/lib/cjs/render/webgl/FeatureOverrides.js +37 -20
  89. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  90. package/lib/cjs/render/webgl/InstancedGeometry.d.ts +40 -10
  91. package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
  92. package/lib/cjs/render/webgl/InstancedGeometry.js +99 -31
  93. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  94. package/lib/cjs/render/webgl/LineCode.d.ts.map +1 -1
  95. package/lib/cjs/render/webgl/LineCode.js +2 -14
  96. package/lib/cjs/render/webgl/LineCode.js.map +1 -1
  97. package/lib/cjs/render/webgl/Mesh.d.ts +9 -4
  98. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  99. package/lib/cjs/render/webgl/Mesh.js +18 -16
  100. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  101. package/lib/cjs/render/webgl/PointCloud.d.ts +5 -1
  102. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  103. package/lib/cjs/render/webgl/PointCloud.js +7 -2
  104. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  105. package/lib/cjs/render/webgl/PointString.d.ts +5 -1
  106. package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
  107. package/lib/cjs/render/webgl/PointString.js +8 -3
  108. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  109. package/lib/cjs/render/webgl/Polyline.d.ts +5 -1
  110. package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
  111. package/lib/cjs/render/webgl/Polyline.js +7 -2
  112. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  113. package/lib/cjs/render/webgl/Primitive.d.ts +1 -3
  114. package/lib/cjs/render/webgl/Primitive.d.ts.map +1 -1
  115. package/lib/cjs/render/webgl/Primitive.js +1 -6
  116. package/lib/cjs/render/webgl/Primitive.js.map +1 -1
  117. package/lib/cjs/render/webgl/RealityMesh.d.ts +5 -1
  118. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  119. package/lib/cjs/render/webgl/RealityMesh.js +6 -0
  120. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  121. package/lib/cjs/render/webgl/RenderFlags.d.ts +0 -18
  122. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  123. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  124. package/lib/cjs/render/webgl/System.d.ts +11 -5
  125. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  126. package/lib/cjs/render/webgl/System.js +81 -13
  127. package/lib/cjs/render/webgl/System.js.map +1 -1
  128. package/lib/cjs/render/webgl/Target.d.ts +6 -2
  129. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  130. package/lib/cjs/render/webgl/Target.js +23 -1
  131. package/lib/cjs/render/webgl/Target.js.map +1 -1
  132. package/lib/cjs/render/webgl/Texture.d.ts +2 -1
  133. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  134. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  135. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  136. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +6 -0
  137. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  138. package/lib/cjs/tile/GltfReader.d.ts +27 -7
  139. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  140. package/lib/cjs/tile/GltfReader.js +84 -68
  141. package/lib/cjs/tile/GltfReader.js.map +1 -1
  142. package/lib/cjs/tile/ImdlGraphicsCreator.d.ts +4 -1
  143. package/lib/cjs/tile/ImdlGraphicsCreator.d.ts.map +1 -1
  144. package/lib/cjs/tile/ImdlGraphicsCreator.js +32 -22
  145. package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -1
  146. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  147. package/lib/esm/DisplayStyleState.js +5 -1
  148. package/lib/esm/DisplayStyleState.js.map +1 -1
  149. package/lib/esm/ElementLocateManager.d.ts +7 -1
  150. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  151. package/lib/esm/ElementLocateManager.js +34 -10
  152. package/lib/esm/ElementLocateManager.js.map +1 -1
  153. package/lib/esm/NoRenderApp.d.ts +1 -0
  154. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  155. package/lib/esm/NoRenderApp.js +1 -0
  156. package/lib/esm/NoRenderApp.js.map +1 -1
  157. package/lib/esm/Viewport.d.ts +25 -1
  158. package/lib/esm/Viewport.d.ts.map +1 -1
  159. package/lib/esm/Viewport.js +20 -12
  160. package/lib/esm/Viewport.js.map +1 -1
  161. package/lib/esm/common/imdl/ImdlModel.d.ts +3 -8
  162. package/lib/esm/common/imdl/ImdlModel.d.ts.map +1 -1
  163. package/lib/esm/common/imdl/ImdlModel.js.map +1 -1
  164. package/lib/esm/common/internal/Symbols.d.ts +7 -0
  165. package/lib/esm/common/internal/Symbols.d.ts.map +1 -1
  166. package/lib/esm/common/internal/Symbols.js +7 -0
  167. package/lib/esm/common/internal/Symbols.js.map +1 -1
  168. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts +15 -0
  169. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -0
  170. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js +91 -0
  171. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -0
  172. package/lib/esm/common/internal/render/LineCode.d.ts +9 -0
  173. package/lib/esm/common/internal/render/LineCode.d.ts.map +1 -0
  174. package/lib/esm/common/internal/render/LineCode.js +27 -0
  175. package/lib/esm/common/internal/render/LineCode.js.map +1 -0
  176. package/lib/esm/common/internal/render/OvrFlags.d.ts +25 -0
  177. package/lib/esm/common/internal/render/OvrFlags.d.ts.map +1 -0
  178. package/lib/esm/common/internal/render/OvrFlags.js +9 -0
  179. package/lib/esm/common/internal/render/OvrFlags.js.map +1 -0
  180. package/lib/esm/common/render/InstancedGraphicParams.d.ts +25 -1
  181. package/lib/esm/common/render/InstancedGraphicParams.d.ts.map +1 -1
  182. package/lib/esm/common/render/InstancedGraphicParams.js +58 -1
  183. package/lib/esm/common/render/InstancedGraphicParams.js.map +1 -1
  184. package/lib/esm/common/render/RenderInstancesParams.d.ts +76 -0
  185. package/lib/esm/common/render/RenderInstancesParams.d.ts.map +1 -0
  186. package/lib/esm/common/render/RenderInstancesParams.js +30 -0
  187. package/lib/esm/common/render/RenderInstancesParams.js.map +1 -0
  188. package/lib/esm/common.d.ts +1 -0
  189. package/lib/esm/common.d.ts.map +1 -1
  190. package/lib/esm/common.js +1 -0
  191. package/lib/esm/common.js.map +1 -1
  192. package/lib/esm/core-frontend.d.ts +1 -0
  193. package/lib/esm/core-frontend.d.ts.map +1 -1
  194. package/lib/esm/core-frontend.js +1 -0
  195. package/lib/esm/core-frontend.js.map +1 -1
  196. package/lib/esm/internal/render/PrimitiveBuilder.d.ts +4 -1
  197. package/lib/esm/internal/render/PrimitiveBuilder.d.ts.map +1 -1
  198. package/lib/esm/internal/render/PrimitiveBuilder.js +82 -35
  199. package/lib/esm/internal/render/PrimitiveBuilder.js.map +1 -1
  200. package/lib/esm/internal/render/RenderGeometry.d.ts +20 -0
  201. package/lib/esm/internal/render/RenderGeometry.d.ts.map +1 -0
  202. package/lib/esm/internal/render/RenderGeometry.js +9 -0
  203. package/lib/esm/internal/render/RenderGeometry.js.map +1 -0
  204. package/lib/esm/internal/render/RenderInstancesParamsImpl.d.ts +24 -0
  205. package/lib/esm/internal/render/RenderInstancesParamsImpl.d.ts.map +1 -0
  206. package/lib/esm/internal/render/RenderInstancesParamsImpl.js +64 -0
  207. package/lib/esm/internal/render/RenderInstancesParamsImpl.js.map +1 -0
  208. package/lib/esm/render/GraphicBuilder.d.ts +17 -3
  209. package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
  210. package/lib/esm/render/GraphicBuilder.js +7 -1
  211. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  212. package/lib/esm/render/GraphicTemplate.d.ts +76 -0
  213. package/lib/esm/render/GraphicTemplate.d.ts.map +1 -0
  214. package/lib/esm/render/GraphicTemplate.js +37 -0
  215. package/lib/esm/render/GraphicTemplate.js.map +1 -0
  216. package/lib/esm/render/MockRender.d.ts +12 -2
  217. package/lib/esm/render/MockRender.d.ts.map +1 -1
  218. package/lib/esm/render/MockRender.js +19 -5
  219. package/lib/esm/render/MockRender.js.map +1 -1
  220. package/lib/esm/render/RenderSystem.d.ts +58 -10
  221. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  222. package/lib/esm/render/RenderSystem.js +44 -6
  223. package/lib/esm/render/RenderSystem.js.map +1 -1
  224. package/lib/esm/render/RenderTarget.d.ts +1 -1
  225. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  226. package/lib/esm/render/RenderTarget.js.map +1 -1
  227. package/lib/esm/render/webgl/BatchUniforms.js.map +1 -1
  228. package/lib/esm/render/webgl/EdgeSettings.d.ts +2 -1
  229. package/lib/esm/render/webgl/EdgeSettings.d.ts.map +1 -1
  230. package/lib/esm/render/webgl/EdgeSettings.js.map +1 -1
  231. package/lib/esm/render/webgl/FeatureOverrides.d.ts +1 -0
  232. package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
  233. package/lib/esm/render/webgl/FeatureOverrides.js +37 -20
  234. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  235. package/lib/esm/render/webgl/InstancedGeometry.d.ts +40 -10
  236. package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
  237. package/lib/esm/render/webgl/InstancedGeometry.js +97 -30
  238. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  239. package/lib/esm/render/webgl/LineCode.d.ts.map +1 -1
  240. package/lib/esm/render/webgl/LineCode.js +2 -14
  241. package/lib/esm/render/webgl/LineCode.js.map +1 -1
  242. package/lib/esm/render/webgl/Mesh.d.ts +9 -4
  243. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  244. package/lib/esm/render/webgl/Mesh.js +19 -17
  245. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  246. package/lib/esm/render/webgl/PointCloud.d.ts +5 -1
  247. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  248. package/lib/esm/render/webgl/PointCloud.js +7 -2
  249. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  250. package/lib/esm/render/webgl/PointString.d.ts +5 -1
  251. package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
  252. package/lib/esm/render/webgl/PointString.js +8 -3
  253. package/lib/esm/render/webgl/PointString.js.map +1 -1
  254. package/lib/esm/render/webgl/Polyline.d.ts +5 -1
  255. package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
  256. package/lib/esm/render/webgl/Polyline.js +7 -2
  257. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  258. package/lib/esm/render/webgl/Primitive.d.ts +1 -3
  259. package/lib/esm/render/webgl/Primitive.d.ts.map +1 -1
  260. package/lib/esm/render/webgl/Primitive.js +2 -7
  261. package/lib/esm/render/webgl/Primitive.js.map +1 -1
  262. package/lib/esm/render/webgl/RealityMesh.d.ts +5 -1
  263. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  264. package/lib/esm/render/webgl/RealityMesh.js +6 -0
  265. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  266. package/lib/esm/render/webgl/RenderFlags.d.ts +0 -18
  267. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  268. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  269. package/lib/esm/render/webgl/System.d.ts +11 -5
  270. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  271. package/lib/esm/render/webgl/System.js +82 -14
  272. package/lib/esm/render/webgl/System.js.map +1 -1
  273. package/lib/esm/render/webgl/Target.d.ts +6 -2
  274. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  275. package/lib/esm/render/webgl/Target.js +23 -1
  276. package/lib/esm/render/webgl/Target.js.map +1 -1
  277. package/lib/esm/render/webgl/Texture.d.ts +2 -1
  278. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  279. package/lib/esm/render/webgl/Texture.js.map +1 -1
  280. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  281. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +6 -0
  282. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  283. package/lib/esm/tile/GltfReader.d.ts +27 -7
  284. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  285. package/lib/esm/tile/GltfReader.js +82 -67
  286. package/lib/esm/tile/GltfReader.js.map +1 -1
  287. package/lib/esm/tile/ImdlGraphicsCreator.d.ts +4 -1
  288. package/lib/esm/tile/ImdlGraphicsCreator.d.ts.map +1 -1
  289. package/lib/esm/tile/ImdlGraphicsCreator.js +31 -22
  290. package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -1
  291. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  292. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  293. package/package.json +18 -18
@@ -212,6 +212,9 @@ class RealityMeshGeometry extends CachedGeometry_1.IndexedGeometry {
212
212
  get transform() { return this._transform; }
213
213
  constructor(props) {
214
214
  super(props.realityMeshParams);
215
+ this.renderGeometryType = "reality-mesh";
216
+ this.isInstanceable = false;
217
+ this.noDispose = false;
215
218
  this._realityMeshParams = props.realityMeshParams;
216
219
  this.textureParams = props.textureParams;
217
220
  this._transform = props.transform;
@@ -224,6 +227,9 @@ class RealityMeshGeometry extends CachedGeometry_1.IndexedGeometry {
224
227
  this._indexType = 1 === bytesPerIndex ? GL_1.GL.DataType.UnsignedByte : (2 === bytesPerIndex ? GL_1.GL.DataType.UnsignedShort : GL_1.GL.DataType.UnsignedInt);
225
228
  }
226
229
  dispose() {
230
+ if (this.noDispose) {
231
+ return;
232
+ }
227
233
  super.dispose();
228
234
  (0, core_bentley_1.dispose)(this._realityMeshParams);
229
235
  if (true !== this._disableTextureDisposal)
@@ -1 +1 @@
1
- {"version":3,"file":"RealityMesh.js","sourceRoot":"","sources":["../../../../src/render/webgl/RealityMesh.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose, disposeArray, IDisposable, UintArray } from \"@itwin/core-bentley\";\r\nimport { ColorDef, Quantization, RenderTexture } from \"@itwin/core-common\";\r\nimport { Matrix4d, Range2d, Range3d, Transform, Vector2d } from \"@itwin/core-geometry\";\r\nimport { GraphicBranch } from \"../GraphicBranch\";\r\nimport { RealityMeshGraphicParams } from \"../RealityMeshGraphicParams\";\r\nimport { RealityMeshParams } from \"../RealityMeshParams\";\r\nimport { RenderGraphic } from \"../RenderGraphic\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { RenderPlanarClassifier } from \"../RenderPlanarClassifier\";\r\nimport { RenderSystem, TerrainTexture } from \"../RenderSystem\";\r\nimport { BufferHandle, BufferParameters, QBufferHandle2d, QBufferHandle3d } from \"./AttributeBuffers\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { IndexedGeometry, IndexedGeometryParams } from \"./CachedGeometry\";\r\nimport { GL } from \"./GL\";\r\nimport { Matrix4 } from \"./Matrix\";\r\nimport { PlanarClassifier } from \"./PlanarClassifier\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { RenderOrder } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\n\r\nconst scratchOverlapRange = Range2d.createNull();\r\nconst scratchBytes = new Uint8Array(4);\r\nconst scratchBatchBaseId = new Uint32Array(scratchBytes.buffer);\r\nconst scratchRange2d = Range2d.createNull();\r\nclass ProjectedTexture {\r\n public classifier: PlanarClassifier;\r\n constructor(classifier: RenderPlanarClassifier, public meshParams: RealityMeshGraphicParams, public targetRectangle: Range2d) {\r\n this.classifier = classifier as PlanarClassifier;\r\n }\r\n public clone(targetRectangle: Range2d) {\r\n return new ProjectedTexture(this.classifier, this.meshParams, targetRectangle.clone());\r\n }\r\n}\r\ntype TerrainOrProjectedTexture = TerrainTexture | ProjectedTexture;\r\n\r\nclass RealityTextureParam implements IDisposable {\r\n constructor(public texture: RenderTexture | undefined, private _projectedTextureOrMatrix: ProjectedTexture | Matrix4) { }\r\n public get isProjected() { return this._projectedTextureOrMatrix instanceof ProjectedTexture; }\r\n\r\n public dispose(): void {\r\n this.texture = dispose(this.texture);\r\n }\r\n\r\n /* There are two methods of applying a texture to a reality mesh. the first member of \"params\" denotes which\r\n method is to be used. A value of zero indicates a standard texture and one represents a classified texture.\r\n\r\n A standard (nonprojected) texture is generated by multiplying v_textCoord by the scaling and translation packed into the first row\r\n of \"matrix\". A clip rectangle is packed into second row of \"matrix\".\r\n\r\n A \"classified\" reality mesh texture is used for map layers. It does not uses v_texCoord, the texture coordinates\r\n are instead generated by a projection of the model position onto the X-Y plane. We only have eye position, not model position\r\n so the matrix in this case is a real transform matrix that contains a mapping from eye to model position\r\n followed by the model to texture projection.\r\n*/\r\n public getProjectionMatrix(): Matrix4d | undefined {\r\n return this._projectedTextureOrMatrix instanceof ProjectedTexture ? this._projectedTextureOrMatrix.classifier.projectionMatrix : undefined;\r\n }\r\n public getTerrainMatrix(): Matrix4 | undefined {\r\n return this._projectedTextureOrMatrix instanceof Matrix4 ? this._projectedTextureOrMatrix : undefined;\r\n }\r\n\r\n public getParams(result: Matrix4): Matrix4 {\r\n /** Entry 0 is 0 for */\r\n if (this._projectedTextureOrMatrix instanceof ProjectedTexture) {\r\n const projectedTexture = this._projectedTextureOrMatrix;\r\n\r\n result.data[0] = 1;\r\n result.data[1] = projectedTexture.classifier.textureImageCount;\r\n result.data[2] = projectedTexture.classifier.sourceTransparency === undefined ? 1.0 : (1.0 - projectedTexture.classifier.sourceTransparency);\r\n scratchBatchBaseId[0] = projectedTexture.classifier.baseBatchId;\r\n result.data[4] = scratchBytes[0];\r\n result.data[5] = scratchBytes[1];\r\n result.data[6] = scratchBytes[2];\r\n result.data[7] = scratchBytes[3];\r\n\r\n const points = [];\r\n const meshParams = projectedTexture.meshParams;\r\n // Calculate range in the tiles local coordinates.\r\n const low = meshParams.tileRectangle.worldToLocal(projectedTexture.targetRectangle.low, scratchRange2d.low)!;\r\n const high = meshParams.tileRectangle.worldToLocal(projectedTexture.targetRectangle.high, scratchRange2d.high)!;\r\n points.push(meshParams.projection.getGlobalPoint(low.x, low.y, 0));\r\n points.push(meshParams.projection.getGlobalPoint(high.x, low.y, 0));\r\n points.push(meshParams.projection.getGlobalPoint(high.x, high.y, 0));\r\n points.push(meshParams.projection.getGlobalPoint(low.x, high.y, 0));\r\n for (let i = 0, j = 8; i < 4; i++) {\r\n const projectedPoint = projectedTexture.classifier.projectionMatrix.multiplyPoint3dQuietNormalize(points[i]);\r\n result.data[j++] = projectedPoint.x;\r\n result.data[j++] = projectedPoint.y;\r\n }\r\n const x0 = result.data[10] - result.data[8], y0 = result.data[11] - result.data[9];\r\n const x1 = result.data[12] - result.data[8], y1 = result.data[13] - result.data[9];\r\n if (x0 * y1 - x1 * y0 < 0) {\r\n const swap = ((i: number, j: number) => {\r\n const temp = result.data[i];\r\n result.data[i] = result.data[j];\r\n result.data[j] = temp;\r\n });\r\n for (let i = 8, j = 14; i <= 10; i += 2, j -= 2) {\r\n swap(i, j);\r\n swap(i + 1, j + 1);\r\n }\r\n }\r\n } else {\r\n result.data[0] = 0;\r\n }\r\n return result;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class RealityTextureParams implements IDisposable {\r\n constructor(public params: RealityTextureParam[]) { }\r\n public static create(textures: TerrainOrProjectedTexture[]) {\r\n const maxTexturesPerMesh = System.instance.maxRealityImageryLayers;\r\n assert(textures.length <= maxTexturesPerMesh);\r\n\r\n const textureParams = new Array<RealityTextureParam>();\r\n for (const texture of textures) {\r\n if (texture instanceof TerrainTexture) {\r\n const terrainTexture = texture;\r\n const matrix = new Matrix4(); // Published as Mat4.\r\n assert(terrainTexture.texture !== undefined, \"Texture not defined in TerrainTextureParams constructor\");\r\n matrix.data[0] = terrainTexture.translate.x;\r\n matrix.data[1] = terrainTexture.translate.y;\r\n matrix.data[2] = terrainTexture.scale.x;\r\n matrix.data[3] = terrainTexture.scale.y;\r\n\r\n if (terrainTexture.clipRectangle) {\r\n matrix.data[4] = terrainTexture.clipRectangle.low.x;\r\n matrix.data[5] = terrainTexture.clipRectangle.low.y;\r\n matrix.data[6] = terrainTexture.clipRectangle.high.x;\r\n matrix.data[7] = terrainTexture.clipRectangle.high.y;\r\n } else {\r\n matrix.data[4] = matrix.data[5] = 0;\r\n matrix.data[6] = matrix.data[7] = 1;\r\n }\r\n matrix.data[8] = (1.0 - terrainTexture.transparency);\r\n matrix.data[9] = terrainTexture.featureId;\r\n textureParams.push(new RealityTextureParam(terrainTexture.texture, matrix));\r\n } else {\r\n const classifier = texture.classifier;\r\n textureParams.push(new RealityTextureParam(classifier.getOrCreateClassifierTexture(), texture));\r\n }\r\n }\r\n\r\n for (let i = textures.length; i < maxTexturesPerMesh; i++) {\r\n const matrix = new Matrix4();\r\n matrix.data[0] = matrix.data[1] = 0.0;\r\n matrix.data[2] = matrix.data[3] = 1.0;\r\n matrix.data[4] = matrix.data[5] = 1;\r\n matrix.data[6] = matrix.data[7] = -1;\r\n matrix.data[15] = 0; // Denotes a terrain texture.\r\n textureParams.push(new RealityTextureParam(undefined, matrix));\r\n }\r\n return new RealityTextureParams(textureParams);\r\n }\r\n\r\n public dispose(): void {\r\n disposeArray(this.params);\r\n }\r\n}\r\n/** @internal */\r\n\r\nexport class RealityMeshGeometryParams extends IndexedGeometryParams {\r\n public readonly uvParams: QBufferHandle2d;\r\n public readonly featureID?: number;\r\n public readonly normals?: BufferHandle;\r\n public readonly numBytesPerIndex: 1 | 2 | 4;\r\n\r\n protected constructor(positions: QBufferHandle3d, normals: BufferHandle | undefined, uvParams: QBufferHandle2d, indices: BufferHandle, numIndices: number, numBytesPerIndex: 1 | 2 | 4, featureID?: number) {\r\n super(positions, indices, numIndices);\r\n this.numBytesPerIndex = numBytesPerIndex;\r\n let attrParams = AttributeMap.findAttribute(\"a_uvParam\", TechniqueId.RealityMesh, false);\r\n assert(attrParams !== undefined);\r\n this.buffers.addBuffer(uvParams, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedShort, false, 0, 0, false)]);\r\n this.uvParams = uvParams;\r\n\r\n if (undefined !== normals) {\r\n attrParams = AttributeMap.findAttribute(\"a_norm\", TechniqueId.RealityMesh, false);\r\n assert(attrParams !== undefined);\r\n if (normals.bytesUsed > 0)\r\n this.buffers.addBuffer(normals, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedByte, false, 0, 0, false)]);\r\n this.normals = normals;\r\n }\r\n this.featureID = featureID;\r\n }\r\n\r\n private static createFromBuffers(posBuf: QBufferHandle3d, uvParamBuf: QBufferHandle2d, indices: UintArray, normBuf: BufferHandle | undefined, featureID: number) {\r\n const indBuf = BufferHandle.createBuffer(GL.Buffer.Target.ElementArrayBuffer, indices);\r\n\r\n if (undefined === indBuf)\r\n return undefined;\r\n\r\n const bytesPerIndex = indices.BYTES_PER_ELEMENT;\r\n assert(1 === bytesPerIndex || 2 === bytesPerIndex || 4 === bytesPerIndex);\r\n return new RealityMeshGeometryParams(posBuf, normBuf, uvParamBuf, indBuf, indices.length, bytesPerIndex, featureID);\r\n\r\n }\r\n\r\n public static fromRealityMesh(params: RealityMeshParams) {\r\n const posBuf = QBufferHandle3d.create(params.positions.params, params.positions.points);\r\n const uvParamBuf = QBufferHandle2d.create(params.uvs.params, params.uvs.points);\r\n const normalBuf = params.normals ? BufferHandle.createArrayBuffer(params.normals) : undefined;\r\n return (undefined === posBuf || undefined === uvParamBuf) ? undefined : this.createFromBuffers(posBuf, uvParamBuf, params.indices, normalBuf, params.featureID ?? 0);\r\n }\r\n\r\n public override get isDisposed(): boolean {\r\n return super.isDisposed && this.uvParams.isDisposed;\r\n }\r\n public get bytesUsed(): number { return this.positions.bytesUsed + (undefined === this.normals ? 0 : this.normals.bytesUsed) + this.uvParams.bytesUsed + this.indices.bytesUsed; }\r\n\r\n public override dispose() {\r\n super.dispose();\r\n dispose(this.uvParams);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class RealityMeshGeometry extends IndexedGeometry implements IDisposable, RenderMemory.Consumer {\r\n public readonly hasTextures: boolean;\r\n public override get asRealityMesh(): RealityMeshGeometry | undefined { return this; }\r\n public override get isDisposed(): boolean { return this._realityMeshParams.isDisposed; }\r\n public get uvQParams() { return this._realityMeshParams.uvParams.params; }\r\n public override get hasFeatures(): boolean { return this._realityMeshParams.featureID !== undefined; }\r\n public override get supportsThematicDisplay() { return true; }\r\n public get overrideColorMix() { return .5; } // This could be a setting from either the mesh or the override if required.\r\n public get transform(): Transform | undefined { return this._transform; }\r\n\r\n private _realityMeshParams: RealityMeshGeometryParams;\r\n private readonly _indexType: GL.DataType;\r\n public textureParams: RealityTextureParams | undefined;\r\n private readonly _transform: Transform | undefined;\r\n public readonly baseColor: ColorDef | undefined;\r\n private _baseIsTransparent: boolean;\r\n private _isTerrain: boolean;\r\n private _disableTextureDisposal: boolean;\r\n\r\n private constructor(props: {\r\n realityMeshParams: RealityMeshGeometryParams;\r\n textureParams?: RealityTextureParams;\r\n transform?: Transform;\r\n baseColor?: ColorDef;\r\n baseIsTransparent: boolean;\r\n isTerrain: boolean;\r\n disableTextureDisposal: boolean;\r\n }) {\r\n super(props.realityMeshParams);\r\n this._realityMeshParams = props.realityMeshParams;\r\n this.textureParams = props.textureParams;\r\n this._transform = props.transform;\r\n this.baseColor = props.baseColor;\r\n this._baseIsTransparent = props.baseIsTransparent;\r\n this._isTerrain = props.isTerrain;\r\n this._disableTextureDisposal = props.disableTextureDisposal;\r\n this.hasTextures = undefined !== this.textureParams && this.textureParams.params.some((x) => undefined !== x.texture);\r\n\r\n const bytesPerIndex = props.realityMeshParams.numBytesPerIndex;\r\n this._indexType = 1 === bytesPerIndex ? GL.DataType.UnsignedByte : (2 === bytesPerIndex ? GL.DataType.UnsignedShort : GL.DataType.UnsignedInt);\r\n }\r\n\r\n public override dispose() {\r\n super.dispose();\r\n dispose(this._realityMeshParams);\r\n if (true !== this._disableTextureDisposal)\r\n dispose(this.textureParams);\r\n }\r\n\r\n public static createForTerrain(mesh: RealityMeshParams, transform: Transform | undefined, disableTextureDisposal = false) {\r\n const params = RealityMeshGeometryParams.fromRealityMesh(mesh);\r\n if (!params)\r\n return undefined;\r\n\r\n return new RealityMeshGeometry({\r\n realityMeshParams: params,\r\n transform,\r\n baseIsTransparent: false,\r\n isTerrain: true,\r\n disableTextureDisposal,\r\n });\r\n }\r\n\r\n public static createFromRealityMesh(realityMesh: RealityMeshParams, disableTextureDisposal = false): RealityMeshGeometry | undefined {\r\n const params = RealityMeshGeometryParams.fromRealityMesh(realityMesh);\r\n if (!params)\r\n return undefined;\r\n const texture = realityMesh.texture ? new TerrainTexture(realityMesh.texture, realityMesh.featureID ?? 0, Vector2d.create(1.0, -1.0), Vector2d.create(0.0, 1.0), Range2d.createXYXY(0, 0, 1, 1), 0, 0) : undefined;\r\n\r\n return new RealityMeshGeometry({ realityMeshParams: params, textureParams: texture ? RealityTextureParams.create([texture]) : undefined, baseIsTransparent: false, isTerrain: false, disableTextureDisposal });\r\n }\r\n\r\n public getRange(): Range3d {\r\n return Range3d.createXYZXYZ(this.qOrigin[0], this.qOrigin[1], this.qOrigin[2], this.qOrigin[0] + Quantization.rangeScale16 * this.qScale[0], this.qOrigin[1] + Quantization.rangeScale16 * this.qScale[1], this.qOrigin[2] + Quantization.rangeScale16 * this.qScale[2]);\r\n }\r\n\r\n public static createGraphic(system: RenderSystem, params: RealityMeshGraphicParams, disableTextureDisposal = false): RenderGraphic | undefined {\r\n const meshes = [];\r\n const textures = params.textures ?? [];\r\n const realityMesh = params.realityMesh as RealityMeshGeometry;\r\n const { baseColor, baseTransparent, featureTable, tileId, layerClassifiers } = params;\r\n\r\n const texturesPerMesh = System.instance.maxRealityImageryLayers;\r\n const layers = new Array<(TerrainTexture | ProjectedTexture)[]>();\r\n // Collate the textures and classifiers layers into a single array.\r\n for (const texture of textures) {\r\n const layer = layers[texture.layerIndex];\r\n if (layer) {\r\n (layer as TerrainTexture[]).push(texture);\r\n } else {\r\n layers[texture.layerIndex] = [texture];\r\n }\r\n }\r\n params.layerClassifiers?.forEach((layerClassifier, layerIndex) => layers[layerIndex] = [new ProjectedTexture(layerClassifier, params, params.tileRectangle)]);\r\n\r\n if (layers.length < 2 && !layerClassifiers?.size && textures.length < texturesPerMesh) {\r\n // If only there is not more than one layer then we can group all of the textures into a single draw call.\r\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: RealityTextureParams.create(textures), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\r\n } else {\r\n let primaryLayer;\r\n while (primaryLayer === undefined)\r\n primaryLayer = layers.shift();\r\n if (!primaryLayer)\r\n return undefined;\r\n for (const primaryTexture of primaryLayer) {\r\n const targetRectangle = primaryTexture.targetRectangle;\r\n const overlapMinimum = 1.0E-5 * (targetRectangle.high.x - targetRectangle.low.x) * (targetRectangle.high.y - targetRectangle.low.y);\r\n let layerTextures = [primaryTexture];\r\n for (const secondaryLayer of layers) {\r\n if (!secondaryLayer)\r\n continue;\r\n for (const secondaryTexture of secondaryLayer) {\r\n if (secondaryTexture instanceof ProjectedTexture) {\r\n layerTextures.push(secondaryTexture.clone(targetRectangle));\r\n } else {\r\n const secondaryRectangle = secondaryTexture.targetRectangle;\r\n const overlap = targetRectangle.intersect(secondaryRectangle, scratchOverlapRange);\r\n if (!overlap.isNull && (overlap.high.x - overlap.low.x) * (overlap.high.y - overlap.low.y) > overlapMinimum) {\r\n const textureRange = Range2d.createXYXY(overlap.low.x, overlap.low.y, overlap.high.x, overlap.high.y);\r\n secondaryRectangle.worldToLocal(textureRange.low, textureRange.low);\r\n secondaryRectangle.worldToLocal(textureRange.high, textureRange.high);\r\n\r\n if (secondaryTexture.clipRectangle)\r\n textureRange.intersect(secondaryTexture.clipRectangle, textureRange);\r\n\r\n if (!textureRange.isNull && textureRange) {\r\n layerTextures.push(secondaryTexture.cloneWithClip(textureRange));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n while (layerTextures.length > texturesPerMesh) {\r\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: RealityTextureParams.create(layerTextures.slice(0, texturesPerMesh)), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\r\n layerTextures = layerTextures.slice(texturesPerMesh);\r\n }\r\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: RealityTextureParams.create(layerTextures), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\r\n }\r\n }\r\n\r\n if (meshes.length === 0)\r\n return undefined;\r\n\r\n const branch = new GraphicBranch(true);\r\n for (const mesh of meshes) {\r\n const primitive = Primitive.create(mesh);\r\n branch.add(system.createBatch(primitive!, featureTable, mesh.getRange(), { tileId }));\r\n }\r\n\r\n return system.createBranch(branch, realityMesh._transform ? realityMesh._transform : Transform.createIdentity());\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this._isTerrain ? stats.addTerrain(this._realityMeshParams.bytesUsed) : stats.addRealityMesh(this._realityMeshParams.bytesUsed);\r\n if (this.textureParams?.params) {\r\n for (const param of this.textureParams.params) {\r\n if (param.texture?.bytesUsed)\r\n stats.addTexture(param.texture.bytesUsed);\r\n }\r\n }\r\n }\r\n\r\n public get techniqueId(): TechniqueId { return TechniqueId.RealityMesh; }\r\n\r\n public override getPass(target: Target) {\r\n if (this._baseIsTransparent || (target.wantThematicDisplay && target.uniforms.thematic.wantIsoLines))\r\n return \"translucent\";\r\n\r\n return \"opaque\";\r\n }\r\n public get renderOrder(): RenderOrder { return RenderOrder.UnlitSurface; }\r\n\r\n public override draw(): void {\r\n this._params.buffers.bind();\r\n System.instance.context.drawElements(GL.PrimitiveType.Triangles, this._params.numIndices, this._indexType, 0);\r\n this._params.buffers.unbind();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RealityMesh.js","sourceRoot":"","sources":["../../../../src/render/webgl/RealityMesh.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose, disposeArray, IDisposable, UintArray } from \"@itwin/core-bentley\";\r\nimport { ColorDef, Quantization, RenderTexture } from \"@itwin/core-common\";\r\nimport { Matrix4d, Range2d, Range3d, Transform, Vector2d } from \"@itwin/core-geometry\";\r\nimport { GraphicBranch } from \"../GraphicBranch\";\r\nimport { RealityMeshGraphicParams } from \"../RealityMeshGraphicParams\";\r\nimport { RealityMeshParams } from \"../RealityMeshParams\";\r\nimport { RenderGraphic } from \"../RenderGraphic\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { RenderPlanarClassifier } from \"../RenderPlanarClassifier\";\r\nimport { RenderSystem, TerrainTexture } from \"../RenderSystem\";\r\nimport { BufferHandle, BufferParameters, QBufferHandle2d, QBufferHandle3d } from \"./AttributeBuffers\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { IndexedGeometry, IndexedGeometryParams } from \"./CachedGeometry\";\r\nimport { GL } from \"./GL\";\r\nimport { Matrix4 } from \"./Matrix\";\r\nimport { PlanarClassifier } from \"./PlanarClassifier\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { RenderOrder } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { RenderGeometry } from \"../../internal/render/RenderGeometry\";\r\n\r\nconst scratchOverlapRange = Range2d.createNull();\r\nconst scratchBytes = new Uint8Array(4);\r\nconst scratchBatchBaseId = new Uint32Array(scratchBytes.buffer);\r\nconst scratchRange2d = Range2d.createNull();\r\nclass ProjectedTexture {\r\n public classifier: PlanarClassifier;\r\n constructor(classifier: RenderPlanarClassifier, public meshParams: RealityMeshGraphicParams, public targetRectangle: Range2d) {\r\n this.classifier = classifier as PlanarClassifier;\r\n }\r\n public clone(targetRectangle: Range2d) {\r\n return new ProjectedTexture(this.classifier, this.meshParams, targetRectangle.clone());\r\n }\r\n}\r\ntype TerrainOrProjectedTexture = TerrainTexture | ProjectedTexture;\r\n\r\nclass RealityTextureParam implements IDisposable {\r\n constructor(public texture: RenderTexture | undefined, private _projectedTextureOrMatrix: ProjectedTexture | Matrix4) { }\r\n public get isProjected() { return this._projectedTextureOrMatrix instanceof ProjectedTexture; }\r\n\r\n public dispose(): void {\r\n this.texture = dispose(this.texture);\r\n }\r\n\r\n /* There are two methods of applying a texture to a reality mesh. the first member of \"params\" denotes which\r\n method is to be used. A value of zero indicates a standard texture and one represents a classified texture.\r\n\r\n A standard (nonprojected) texture is generated by multiplying v_textCoord by the scaling and translation packed into the first row\r\n of \"matrix\". A clip rectangle is packed into second row of \"matrix\".\r\n\r\n A \"classified\" reality mesh texture is used for map layers. It does not uses v_texCoord, the texture coordinates\r\n are instead generated by a projection of the model position onto the X-Y plane. We only have eye position, not model position\r\n so the matrix in this case is a real transform matrix that contains a mapping from eye to model position\r\n followed by the model to texture projection.\r\n*/\r\n public getProjectionMatrix(): Matrix4d | undefined {\r\n return this._projectedTextureOrMatrix instanceof ProjectedTexture ? this._projectedTextureOrMatrix.classifier.projectionMatrix : undefined;\r\n }\r\n public getTerrainMatrix(): Matrix4 | undefined {\r\n return this._projectedTextureOrMatrix instanceof Matrix4 ? this._projectedTextureOrMatrix : undefined;\r\n }\r\n\r\n public getParams(result: Matrix4): Matrix4 {\r\n /** Entry 0 is 0 for */\r\n if (this._projectedTextureOrMatrix instanceof ProjectedTexture) {\r\n const projectedTexture = this._projectedTextureOrMatrix;\r\n\r\n result.data[0] = 1;\r\n result.data[1] = projectedTexture.classifier.textureImageCount;\r\n result.data[2] = projectedTexture.classifier.sourceTransparency === undefined ? 1.0 : (1.0 - projectedTexture.classifier.sourceTransparency);\r\n scratchBatchBaseId[0] = projectedTexture.classifier.baseBatchId;\r\n result.data[4] = scratchBytes[0];\r\n result.data[5] = scratchBytes[1];\r\n result.data[6] = scratchBytes[2];\r\n result.data[7] = scratchBytes[3];\r\n\r\n const points = [];\r\n const meshParams = projectedTexture.meshParams;\r\n // Calculate range in the tiles local coordinates.\r\n const low = meshParams.tileRectangle.worldToLocal(projectedTexture.targetRectangle.low, scratchRange2d.low)!;\r\n const high = meshParams.tileRectangle.worldToLocal(projectedTexture.targetRectangle.high, scratchRange2d.high)!;\r\n points.push(meshParams.projection.getGlobalPoint(low.x, low.y, 0));\r\n points.push(meshParams.projection.getGlobalPoint(high.x, low.y, 0));\r\n points.push(meshParams.projection.getGlobalPoint(high.x, high.y, 0));\r\n points.push(meshParams.projection.getGlobalPoint(low.x, high.y, 0));\r\n for (let i = 0, j = 8; i < 4; i++) {\r\n const projectedPoint = projectedTexture.classifier.projectionMatrix.multiplyPoint3dQuietNormalize(points[i]);\r\n result.data[j++] = projectedPoint.x;\r\n result.data[j++] = projectedPoint.y;\r\n }\r\n const x0 = result.data[10] - result.data[8], y0 = result.data[11] - result.data[9];\r\n const x1 = result.data[12] - result.data[8], y1 = result.data[13] - result.data[9];\r\n if (x0 * y1 - x1 * y0 < 0) {\r\n const swap = ((i: number, j: number) => {\r\n const temp = result.data[i];\r\n result.data[i] = result.data[j];\r\n result.data[j] = temp;\r\n });\r\n for (let i = 8, j = 14; i <= 10; i += 2, j -= 2) {\r\n swap(i, j);\r\n swap(i + 1, j + 1);\r\n }\r\n }\r\n } else {\r\n result.data[0] = 0;\r\n }\r\n return result;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class RealityTextureParams implements IDisposable {\r\n constructor(public params: RealityTextureParam[]) { }\r\n public static create(textures: TerrainOrProjectedTexture[]) {\r\n const maxTexturesPerMesh = System.instance.maxRealityImageryLayers;\r\n assert(textures.length <= maxTexturesPerMesh);\r\n\r\n const textureParams = new Array<RealityTextureParam>();\r\n for (const texture of textures) {\r\n if (texture instanceof TerrainTexture) {\r\n const terrainTexture = texture;\r\n const matrix = new Matrix4(); // Published as Mat4.\r\n assert(terrainTexture.texture !== undefined, \"Texture not defined in TerrainTextureParams constructor\");\r\n matrix.data[0] = terrainTexture.translate.x;\r\n matrix.data[1] = terrainTexture.translate.y;\r\n matrix.data[2] = terrainTexture.scale.x;\r\n matrix.data[3] = terrainTexture.scale.y;\r\n\r\n if (terrainTexture.clipRectangle) {\r\n matrix.data[4] = terrainTexture.clipRectangle.low.x;\r\n matrix.data[5] = terrainTexture.clipRectangle.low.y;\r\n matrix.data[6] = terrainTexture.clipRectangle.high.x;\r\n matrix.data[7] = terrainTexture.clipRectangle.high.y;\r\n } else {\r\n matrix.data[4] = matrix.data[5] = 0;\r\n matrix.data[6] = matrix.data[7] = 1;\r\n }\r\n matrix.data[8] = (1.0 - terrainTexture.transparency);\r\n matrix.data[9] = terrainTexture.featureId;\r\n textureParams.push(new RealityTextureParam(terrainTexture.texture, matrix));\r\n } else {\r\n const classifier = texture.classifier;\r\n textureParams.push(new RealityTextureParam(classifier.getOrCreateClassifierTexture(), texture));\r\n }\r\n }\r\n\r\n for (let i = textures.length; i < maxTexturesPerMesh; i++) {\r\n const matrix = new Matrix4();\r\n matrix.data[0] = matrix.data[1] = 0.0;\r\n matrix.data[2] = matrix.data[3] = 1.0;\r\n matrix.data[4] = matrix.data[5] = 1;\r\n matrix.data[6] = matrix.data[7] = -1;\r\n matrix.data[15] = 0; // Denotes a terrain texture.\r\n textureParams.push(new RealityTextureParam(undefined, matrix));\r\n }\r\n return new RealityTextureParams(textureParams);\r\n }\r\n\r\n public dispose(): void {\r\n disposeArray(this.params);\r\n }\r\n}\r\n/** @internal */\r\n\r\nexport class RealityMeshGeometryParams extends IndexedGeometryParams {\r\n public readonly uvParams: QBufferHandle2d;\r\n public readonly featureID?: number;\r\n public readonly normals?: BufferHandle;\r\n public readonly numBytesPerIndex: 1 | 2 | 4;\r\n\r\n protected constructor(positions: QBufferHandle3d, normals: BufferHandle | undefined, uvParams: QBufferHandle2d, indices: BufferHandle, numIndices: number, numBytesPerIndex: 1 | 2 | 4, featureID?: number) {\r\n super(positions, indices, numIndices);\r\n this.numBytesPerIndex = numBytesPerIndex;\r\n let attrParams = AttributeMap.findAttribute(\"a_uvParam\", TechniqueId.RealityMesh, false);\r\n assert(attrParams !== undefined);\r\n this.buffers.addBuffer(uvParams, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedShort, false, 0, 0, false)]);\r\n this.uvParams = uvParams;\r\n\r\n if (undefined !== normals) {\r\n attrParams = AttributeMap.findAttribute(\"a_norm\", TechniqueId.RealityMesh, false);\r\n assert(attrParams !== undefined);\r\n if (normals.bytesUsed > 0)\r\n this.buffers.addBuffer(normals, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedByte, false, 0, 0, false)]);\r\n this.normals = normals;\r\n }\r\n this.featureID = featureID;\r\n }\r\n\r\n private static createFromBuffers(posBuf: QBufferHandle3d, uvParamBuf: QBufferHandle2d, indices: UintArray, normBuf: BufferHandle | undefined, featureID: number) {\r\n const indBuf = BufferHandle.createBuffer(GL.Buffer.Target.ElementArrayBuffer, indices);\r\n\r\n if (undefined === indBuf)\r\n return undefined;\r\n\r\n const bytesPerIndex = indices.BYTES_PER_ELEMENT;\r\n assert(1 === bytesPerIndex || 2 === bytesPerIndex || 4 === bytesPerIndex);\r\n return new RealityMeshGeometryParams(posBuf, normBuf, uvParamBuf, indBuf, indices.length, bytesPerIndex, featureID);\r\n\r\n }\r\n\r\n public static fromRealityMesh(params: RealityMeshParams) {\r\n const posBuf = QBufferHandle3d.create(params.positions.params, params.positions.points);\r\n const uvParamBuf = QBufferHandle2d.create(params.uvs.params, params.uvs.points);\r\n const normalBuf = params.normals ? BufferHandle.createArrayBuffer(params.normals) : undefined;\r\n return (undefined === posBuf || undefined === uvParamBuf) ? undefined : this.createFromBuffers(posBuf, uvParamBuf, params.indices, normalBuf, params.featureID ?? 0);\r\n }\r\n\r\n public override get isDisposed(): boolean {\r\n return super.isDisposed && this.uvParams.isDisposed;\r\n }\r\n public get bytesUsed(): number { return this.positions.bytesUsed + (undefined === this.normals ? 0 : this.normals.bytesUsed) + this.uvParams.bytesUsed + this.indices.bytesUsed; }\r\n\r\n public override dispose() {\r\n super.dispose();\r\n dispose(this.uvParams);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class RealityMeshGeometry extends IndexedGeometry implements RenderGeometry {\r\n public readonly renderGeometryType: \"reality-mesh\" = \"reality-mesh\" as const;\r\n public readonly isInstanceable = false;\r\n public noDispose = false;\r\n public readonly hasTextures: boolean;\r\n public override get asRealityMesh(): RealityMeshGeometry | undefined { return this; }\r\n public override get isDisposed(): boolean { return this._realityMeshParams.isDisposed; }\r\n public get uvQParams() { return this._realityMeshParams.uvParams.params; }\r\n public override get hasFeatures(): boolean { return this._realityMeshParams.featureID !== undefined; }\r\n public override get supportsThematicDisplay() { return true; }\r\n public get overrideColorMix() { return .5; } // This could be a setting from either the mesh or the override if required.\r\n public get transform(): Transform | undefined { return this._transform; }\r\n\r\n private _realityMeshParams: RealityMeshGeometryParams;\r\n private readonly _indexType: GL.DataType;\r\n public textureParams: RealityTextureParams | undefined;\r\n private readonly _transform: Transform | undefined;\r\n public readonly baseColor: ColorDef | undefined;\r\n private _baseIsTransparent: boolean;\r\n private _isTerrain: boolean;\r\n private _disableTextureDisposal: boolean;\r\n\r\n private constructor(props: {\r\n realityMeshParams: RealityMeshGeometryParams;\r\n textureParams?: RealityTextureParams;\r\n transform?: Transform;\r\n baseColor?: ColorDef;\r\n baseIsTransparent: boolean;\r\n isTerrain: boolean;\r\n disableTextureDisposal: boolean;\r\n }) {\r\n super(props.realityMeshParams);\r\n this._realityMeshParams = props.realityMeshParams;\r\n this.textureParams = props.textureParams;\r\n this._transform = props.transform;\r\n this.baseColor = props.baseColor;\r\n this._baseIsTransparent = props.baseIsTransparent;\r\n this._isTerrain = props.isTerrain;\r\n this._disableTextureDisposal = props.disableTextureDisposal;\r\n this.hasTextures = undefined !== this.textureParams && this.textureParams.params.some((x) => undefined !== x.texture);\r\n\r\n const bytesPerIndex = props.realityMeshParams.numBytesPerIndex;\r\n this._indexType = 1 === bytesPerIndex ? GL.DataType.UnsignedByte : (2 === bytesPerIndex ? GL.DataType.UnsignedShort : GL.DataType.UnsignedInt);\r\n }\r\n\r\n public override dispose() {\r\n if (this.noDispose) {\r\n return;\r\n }\r\n\r\n super.dispose();\r\n dispose(this._realityMeshParams);\r\n if (true !== this._disableTextureDisposal)\r\n dispose(this.textureParams);\r\n }\r\n\r\n public static createForTerrain(mesh: RealityMeshParams, transform: Transform | undefined, disableTextureDisposal = false) {\r\n const params = RealityMeshGeometryParams.fromRealityMesh(mesh);\r\n if (!params)\r\n return undefined;\r\n\r\n return new RealityMeshGeometry({\r\n realityMeshParams: params,\r\n transform,\r\n baseIsTransparent: false,\r\n isTerrain: true,\r\n disableTextureDisposal,\r\n });\r\n }\r\n\r\n public static createFromRealityMesh(realityMesh: RealityMeshParams, disableTextureDisposal = false): RealityMeshGeometry | undefined {\r\n const params = RealityMeshGeometryParams.fromRealityMesh(realityMesh);\r\n if (!params)\r\n return undefined;\r\n const texture = realityMesh.texture ? new TerrainTexture(realityMesh.texture, realityMesh.featureID ?? 0, Vector2d.create(1.0, -1.0), Vector2d.create(0.0, 1.0), Range2d.createXYXY(0, 0, 1, 1), 0, 0) : undefined;\r\n\r\n return new RealityMeshGeometry({ realityMeshParams: params, textureParams: texture ? RealityTextureParams.create([texture]) : undefined, baseIsTransparent: false, isTerrain: false, disableTextureDisposal });\r\n }\r\n\r\n public getRange(): Range3d {\r\n return Range3d.createXYZXYZ(this.qOrigin[0], this.qOrigin[1], this.qOrigin[2], this.qOrigin[0] + Quantization.rangeScale16 * this.qScale[0], this.qOrigin[1] + Quantization.rangeScale16 * this.qScale[1], this.qOrigin[2] + Quantization.rangeScale16 * this.qScale[2]);\r\n }\r\n\r\n public static createGraphic(system: RenderSystem, params: RealityMeshGraphicParams, disableTextureDisposal = false): RenderGraphic | undefined {\r\n const meshes = [];\r\n const textures = params.textures ?? [];\r\n const realityMesh = params.realityMesh as RealityMeshGeometry;\r\n const { baseColor, baseTransparent, featureTable, tileId, layerClassifiers } = params;\r\n\r\n const texturesPerMesh = System.instance.maxRealityImageryLayers;\r\n const layers = new Array<(TerrainTexture | ProjectedTexture)[]>();\r\n // Collate the textures and classifiers layers into a single array.\r\n for (const texture of textures) {\r\n const layer = layers[texture.layerIndex];\r\n if (layer) {\r\n (layer as TerrainTexture[]).push(texture);\r\n } else {\r\n layers[texture.layerIndex] = [texture];\r\n }\r\n }\r\n params.layerClassifiers?.forEach((layerClassifier, layerIndex) => layers[layerIndex] = [new ProjectedTexture(layerClassifier, params, params.tileRectangle)]);\r\n\r\n if (layers.length < 2 && !layerClassifiers?.size && textures.length < texturesPerMesh) {\r\n // If only there is not more than one layer then we can group all of the textures into a single draw call.\r\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: RealityTextureParams.create(textures), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\r\n } else {\r\n let primaryLayer;\r\n while (primaryLayer === undefined)\r\n primaryLayer = layers.shift();\r\n if (!primaryLayer)\r\n return undefined;\r\n for (const primaryTexture of primaryLayer) {\r\n const targetRectangle = primaryTexture.targetRectangle;\r\n const overlapMinimum = 1.0E-5 * (targetRectangle.high.x - targetRectangle.low.x) * (targetRectangle.high.y - targetRectangle.low.y);\r\n let layerTextures = [primaryTexture];\r\n for (const secondaryLayer of layers) {\r\n if (!secondaryLayer)\r\n continue;\r\n for (const secondaryTexture of secondaryLayer) {\r\n if (secondaryTexture instanceof ProjectedTexture) {\r\n layerTextures.push(secondaryTexture.clone(targetRectangle));\r\n } else {\r\n const secondaryRectangle = secondaryTexture.targetRectangle;\r\n const overlap = targetRectangle.intersect(secondaryRectangle, scratchOverlapRange);\r\n if (!overlap.isNull && (overlap.high.x - overlap.low.x) * (overlap.high.y - overlap.low.y) > overlapMinimum) {\r\n const textureRange = Range2d.createXYXY(overlap.low.x, overlap.low.y, overlap.high.x, overlap.high.y);\r\n secondaryRectangle.worldToLocal(textureRange.low, textureRange.low);\r\n secondaryRectangle.worldToLocal(textureRange.high, textureRange.high);\r\n\r\n if (secondaryTexture.clipRectangle)\r\n textureRange.intersect(secondaryTexture.clipRectangle, textureRange);\r\n\r\n if (!textureRange.isNull && textureRange) {\r\n layerTextures.push(secondaryTexture.cloneWithClip(textureRange));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n while (layerTextures.length > texturesPerMesh) {\r\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: RealityTextureParams.create(layerTextures.slice(0, texturesPerMesh)), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\r\n layerTextures = layerTextures.slice(texturesPerMesh);\r\n }\r\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: RealityTextureParams.create(layerTextures), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\r\n }\r\n }\r\n\r\n if (meshes.length === 0)\r\n return undefined;\r\n\r\n const branch = new GraphicBranch(true);\r\n for (const mesh of meshes) {\r\n const primitive = Primitive.create(mesh);\r\n branch.add(system.createBatch(primitive!, featureTable, mesh.getRange(), { tileId }));\r\n }\r\n\r\n return system.createBranch(branch, realityMesh._transform ? realityMesh._transform : Transform.createIdentity());\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this._isTerrain ? stats.addTerrain(this._realityMeshParams.bytesUsed) : stats.addRealityMesh(this._realityMeshParams.bytesUsed);\r\n if (this.textureParams?.params) {\r\n for (const param of this.textureParams.params) {\r\n if (param.texture?.bytesUsed)\r\n stats.addTexture(param.texture.bytesUsed);\r\n }\r\n }\r\n }\r\n\r\n public get techniqueId(): TechniqueId { return TechniqueId.RealityMesh; }\r\n\r\n public override getPass(target: Target) {\r\n if (this._baseIsTransparent || (target.wantThematicDisplay && target.uniforms.thematic.wantIsoLines))\r\n return \"translucent\";\r\n\r\n return \"opaque\";\r\n }\r\n public get renderOrder(): RenderOrder { return RenderOrder.UnlitSurface; }\r\n\r\n public override draw(): void {\r\n this._params.buffers.bind();\r\n System.instance.context.drawElements(GL.PrimitiveType.Triangles, this._params.numIndices, this._indexType, 0);\r\n this._params.buffers.unbind();\r\n }\r\n}\r\n"]}
@@ -188,24 +188,6 @@ export declare const enum SurfaceFlags {
188
188
  HasNormalMap = 256,
189
189
  HasMaterialAtlas = 512
190
190
  }
191
- /** 16-bit flags indicating what aspects of a feature's symbology are overridden.
192
- * @internal
193
- */
194
- export declare const enum OvrFlags {
195
- None = 0,
196
- Visibility = 1,
197
- Rgb = 2,
198
- Alpha = 4,
199
- IgnoreMaterial = 8,// ignore material color, specular properties, and texture.
200
- Flashed = 16,
201
- NonLocatable = 32,// do not draw during pick - allows geometry beneath to be picked.
202
- LineCode = 64,
203
- Weight = 128,
204
- Hilited = 256,
205
- Emphasized = 512,// rendered with "emphasis" hilite settings (silhouette etc).
206
- ViewIndependentTransparency = 1024,
207
- Rgba = 6
208
- }
209
191
  /** 8-bit flags indicating emphasis effects applied to a feature.
210
192
  * @internal
211
193
  */
@@ -1 +1 @@
1
- {"version":3,"file":"RenderFlags.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/RenderFlags.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RenderFlags.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/RenderFlags.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RenderFlags.js","sourceRoot":"","sources":["../../../../src/render/webgl/RenderFlags.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/* eslint-disable no-restricted-syntax */\r\n\r\n/** Ordered list of render passes which produce a rendered frame.\r\n * [[RenderCommands]] organizes its [[DrawCommands]] into a list indexed by RenderPass.\r\n * @see [[Pass]] for the type from which the RenderPass for a [[Primitive]] is derived.\r\n * @internal\r\n */\r\nexport const enum RenderPass {\r\n None = 0xff,\r\n Background = 0,\r\n OpaqueLayers, // XY planar models render without depth-testing in order based on priority\r\n OpaqueLinear, // Linear geometry that is opaque and needs to be written to the pick data buffers\r\n OpaquePlanar, // Planar surface geometry that is opaque and needs to be written to the pick data buffers\r\n PointClouds,\r\n OpaqueGeneral, // All other opaque geometry (including point clouds and reality meshes) which are not written to the pick data buffers\r\n Classification, // Stencil volumes for normal processing of reality data classification.\r\n TranslucentLayers, // like Layers but drawn without depth write, blending with opaque\r\n Translucent,\r\n HiddenEdge,\r\n Hilite,\r\n OverlayLayers, // Like Layers, but drawn atop all other geometry\r\n WorldOverlay, // Decorations\r\n ViewOverlay, // Decorations\r\n SkyBox,\r\n BackgroundMap,\r\n HiliteClassification, // Secondary hilite pass for stencil volumes to process hilited classifiers for reality data\r\n ClassificationByIndex, // Stencil volumes for processing classification one classifier at a time (used for generating pick data Ids and flashing a single classifier).\r\n HilitePlanarClassification,\r\n PlanarClassification,\r\n VolumeClassifiedRealityData,\r\n COUNT,\r\n}\r\n\r\n/** Describes the [[RenderPass]]es in which a [[Primitive]] wants to be rendered.\r\n * Generally, each Pass corresponds to a single RenderPass. However a couple of passes specify that the primitive should be rendered\r\n * twice, in two different render passes.\r\n * [[RenderCommands.addPrimitive]] may ignore the requested Pass. For example, edges typically draw in RenderPass.OpaqueLinear, but\r\n * may also draw in RenderPass.HiddenEdge; and translucent geometry may sometimes be rendered in an opaque render pass instead.\r\n * @see [[CachedGeometry.getPass]].\r\n * @internal\r\n */\r\nexport type Pass =\r\n \"skybox\" | // SkyBox\r\n \"opaque\" | // OpaqueGeneral\r\n \"opaque-linear\" | // OpaqueLinear\r\n \"opaque-planar\" | // OpaquePlanar\r\n \"translucent\" | // Translucent\r\n \"point-clouds\" | // PointClouds\r\n \"view-overlay\" | // ViewOverlay\r\n \"classification\" | // Classification\r\n \"none\" | // None\r\n // The following apply to textured meshes when the texture image contains a mix of opaque and transparent pixels.\r\n // The mesh requests to be rendered in both opaque and transparent passes, with each pass discarding pixels that don't match that pass.\r\n // (i.e., discard transparent pixels during opaque pass and vice-versa).\r\n \"opaque-translucent\" | // OpaqueGeneral and Translucent\r\n \"opaque-planar-translucent\"; // OpaquePlanar and Translucent\r\n\r\n/** [[Pass]]es that map to two [[RenderPass]]es.\r\n * @internal\r\n */\r\nexport type DoublePass = \"opaque-translucent\" | \"opaque-planar-translucent\";\r\n\r\n/** [[Pass]]es that map to a single [[RenderPass]].\r\n * @internal */\r\nexport type SinglePass = Exclude<Pass, DoublePass>;\r\n\r\n/** Describes the type of geometry rendered by a ShaderProgram.\r\n * @internal\r\n */\r\nexport const enum GeometryType {\r\n IndexedTriangles,\r\n IndexedPoints,\r\n ArrayedPoints,\r\n}\r\n\r\n/** @internal */\r\nexport namespace Pass { // eslint-disable-line @typescript-eslint/no-redeclare\r\n /** Return the RenderPass corresponding to the specified Pass. */\r\n export function toRenderPass(pass: SinglePass): RenderPass {\r\n switch (pass) {\r\n case \"skybox\": return RenderPass.SkyBox;\r\n case \"opaque\": return RenderPass.OpaqueGeneral;\r\n case \"opaque-linear\": return RenderPass.OpaqueLinear;\r\n case \"opaque-planar\": return RenderPass.OpaquePlanar;\r\n case \"translucent\": return RenderPass.Translucent;\r\n case \"point-clouds\": return RenderPass.PointClouds;\r\n case \"view-overlay\": return RenderPass.ViewOverlay;\r\n case \"classification\": return RenderPass.Classification;\r\n case \"none\": return RenderPass.None;\r\n }\r\n }\r\n\r\n /** Return true if the specified Pass renders during RenderPass.Translucent.\r\n * @note It is possible for both [[rendersTranslucent]] and [[rendersOpaque]] to return true (or false) for a given Pass.\r\n */\r\n export function rendersTranslucent(pass: Pass): boolean {\r\n switch (pass) {\r\n case \"translucent\":\r\n case \"opaque-translucent\":\r\n case \"opaque-planar-translucent\":\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n /** Return true if the specified Pass renders during one of the opaque RenderPasses.\r\n * @note It is possible for both [[rendersTranslucent]] and [[rendersOpaque]] to return true for a given Pass.\r\n */\r\n export function rendersOpaque(pass: Pass): boolean {\r\n switch (pass) {\r\n case \"opaque-translucent\":\r\n case \"opaque-planar-translucent\":\r\n case \"opaque\":\r\n case \"opaque-planar\":\r\n case \"opaque-linear\":\r\n case \"point-clouds\":\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n /** Return true if the specified Pass renders both during RenderPass.Translucent and one of the opaque RenderPasses. */\r\n export function rendersOpaqueAndTranslucent(pass: Pass): pass is DoublePass {\r\n return \"opaque-translucent\" === pass || \"opaque-planar-translucent\" === pass;\r\n }\r\n\r\n export function toOpaquePass(pass: DoublePass): RenderPass {\r\n return \"opaque-translucent\" === pass ? RenderPass.OpaqueGeneral : RenderPass.OpaquePlanar;\r\n }\r\n}\r\n\r\n/** Reserved texture units for specific sampler variables, to avoid conflicts between shader components which each have their own textures.\r\n * WebGL 2 guarantees a minimum of 16 vertex texture units.\r\n * @internal\r\n */\r\nexport enum TextureUnit {\r\n // For shaders which know exactly which textures will be used\r\n Zero = WebGLRenderingContext.TEXTURE0,\r\n One = WebGLRenderingContext.TEXTURE1,\r\n Two = WebGLRenderingContext.TEXTURE2,\r\n Three = WebGLRenderingContext.TEXTURE3,\r\n Four = WebGLRenderingContext.TEXTURE4,\r\n Five = WebGLRenderingContext.TEXTURE5,\r\n Six = WebGLRenderingContext.TEXTURE6,\r\n Seven = WebGLRenderingContext.TEXTURE7,\r\n\r\n ClipVolume = Zero,\r\n FeatureSymbology = One,\r\n SurfaceTexture = Two,\r\n LineCode = Two,\r\n\r\n PickFeatureId = Three,\r\n PickDepthAndOrder = Four,\r\n\r\n VertexLUT = Five,\r\n\r\n // Texture unit 6 is overloaded. Therefore classification, hilite classification, and aux channel are all mutually exclusive.\r\n AuxChannelLUT = Six,\r\n PlanarClassification = Six,\r\n PlanarClassificationHilite = Six,\r\n\r\n // Texture unit 7 is overloaded. Therefore receiving shadows and thematic display are mutually exclusive.\r\n ShadowMap = Seven,\r\n ThematicSensors = Seven,\r\n\r\n // Textures used for up to 6 background or overlay map layers.\r\n RealityMesh0 = Two,\r\n RealityMesh1 = VertexLUT, // Reality meshes do not use VertexLUT.\r\n RealityMesh2 = ShadowMap, // Shadow map when picking -- PickDepthAndOrder otherwise....\r\n RealityMesh3 = WebGLRenderingContext.TEXTURE8,\r\n RealityMesh4 = WebGLRenderingContext.TEXTURE9,\r\n RealityMesh5 = WebGLRenderingContext.TEXTURE10,\r\n\r\n RealityMeshThematicGradient = WebGLRenderingContext.TEXTURE11,\r\n\r\n // Lookup table for indexed edges.\r\n EdgeLUT = WebGLRenderingContext.TEXTURE12,\r\n\r\n // Normal map texture.\r\n NormalMap = WebGLRenderingContext.TEXTURE13,\r\n}\r\n\r\n/**\r\n * Defines the order in which primitives are rendered within a GLESList. This is chiefly\r\n * used to sort primitives which originate from the same element. e.g., the blanking fill\r\n * associated with a text field must always render behind the text; the edges of a surface\r\n * must render in front of the surface; etc.\r\n * An exception to the 'same element' rule is provided for planar surfaces and edges thereof\r\n * sketched onto non-planar surfaces. When the depth test is ambiguous the planar geometry\r\n * is always on top of the non-planar surface. This addresses z-fighting when shapes are\r\n * sketched onto surfaces, e.g. as part of push-pull modeling workflows.\r\n * @internal\r\n */\r\nexport const enum RenderOrder {\r\n None = 0,\r\n Background = 1, // i.e., background map drawn without depth\r\n BlankingRegion = 2,\r\n UnlitSurface = 3, // Distinction only made for whether or not to apply ambient occlusion.\r\n LitSurface = 4,\r\n Linear = 5,\r\n Edge = 6,\r\n Silhouette = 7,\r\n\r\n PlanarBit = 8,\r\n\r\n PlanarUnlitSurface = UnlitSurface | PlanarBit,\r\n PlanarLitSurface = LitSurface | PlanarBit,\r\n PlanarLinear = Linear | PlanarBit,\r\n PlanarEdge = Edge | PlanarBit,\r\n PlanarSilhouette = Silhouette | PlanarBit,\r\n}\r\n\r\n/** @internal */\r\nexport function isPlanar(order: RenderOrder): boolean {\r\n return order >= RenderOrder.PlanarBit;\r\n}\r\n\r\n/** Flags indicating operations to be performed by the post-process composite step.\r\n * @internal\r\n */\r\nexport const enum CompositeFlags {\r\n None = 0,\r\n Translucent = 1 << 0,\r\n Hilite = 1 << 1,\r\n AmbientOcclusion = 1 << 2,\r\n}\r\n\r\n/** Location in boolean array of SurfaceFlags above.\r\n * @internal\r\n */\r\nexport const enum SurfaceBitIndex {\r\n HasTexture,\r\n ApplyLighting,\r\n HasNormals,\r\n IgnoreMaterial,\r\n TransparencyThreshold,\r\n BackgroundFill,\r\n HasColorAndNormal,\r\n OverrideRgb,\r\n HasNormalMap,\r\n HasMaterialAtlas,\r\n UseConstantLodTextureMapping,\r\n UseConstantLodNormalMapMapping,\r\n Count,\r\n}\r\n\r\n/** Describes attributes of a MeshGeometry object. Used to conditionally execute portion of shader programs.\r\n * @internal\r\n */\r\nexport const enum SurfaceFlags {\r\n None = 0,\r\n HasTexture = 1 << SurfaceBitIndex.HasTexture,\r\n ApplyLighting = 1 << SurfaceBitIndex.ApplyLighting,\r\n HasNormals = 1 << SurfaceBitIndex.HasNormals,\r\n\r\n // NB: In u_surfaceFlags provided to shader, indicates material color/specular/alpha should be ignored. Has no effect on texture.\r\n // If a given feature has the 'ignore material' override set, v_surfaceFlags will be modified to turn on IgnoreMaterial and turn off HasTexture.\r\n IgnoreMaterial = 1 << SurfaceBitIndex.IgnoreMaterial,\r\n\r\n // In HiddenLine and SolidFill modes, a transparency threshold is supplied; surfaces that are more transparent than the threshold are not rendered.\r\n TransparencyThreshold = 1 << SurfaceBitIndex.TransparencyThreshold,\r\n\r\n // For HiddenLine mode\r\n BackgroundFill = 1 << SurfaceBitIndex.BackgroundFill,\r\n\r\n // For textured meshes, the color index in the vertex LUT is unused - we place the normal there instead.\r\n // For untextured lit meshes, the normal is placed after the feature ID.\r\n HasColorAndNormal = 1 << SurfaceBitIndex.HasColorAndNormal,\r\n // For textured meshes, use rgb from v_color instead of from texture.\r\n OverrideRgb = 1 << SurfaceBitIndex.OverrideRgb,\r\n // For geometry with fixed normals (terrain meshes) we must avoid front facing normal reversal or skirts will be incorrectly lit.\r\n HasNormalMap = 1 << SurfaceBitIndex.HasNormalMap,\r\n HasMaterialAtlas = 1 << SurfaceBitIndex.HasMaterialAtlas,\r\n}\r\n\r\n/** 16-bit flags indicating what aspects of a feature's symbology are overridden.\r\n * @internal\r\n */\r\nexport const enum OvrFlags {\r\n None = 0,\r\n Visibility = 1 << 0,\r\n Rgb = 1 << 1,\r\n Alpha = 1 << 2,\r\n IgnoreMaterial = 1 << 3, // ignore material color, specular properties, and texture.\r\n Flashed = 1 << 4,\r\n NonLocatable = 1 << 5, // do not draw during pick - allows geometry beneath to be picked.\r\n LineCode = 1 << 6,\r\n Weight = 1 << 7,\r\n Hilited = 1 << 8,\r\n Emphasized = 1 << 9, // rendered with \"emphasis\" hilite settings (silhouette etc).\r\n ViewIndependentTransparency = 1 << 10,\r\n\r\n Rgba = Rgb | Alpha,\r\n}\r\n\r\n/** 8-bit flags indicating emphasis effects applied to a feature.\r\n * @internal\r\n */\r\nexport const enum EmphasisFlags {\r\n None = 0,\r\n Hilite = 1,\r\n Emphasized = 2,\r\n Flashed = 4,\r\n NonLocatable = 8,\r\n}\r\n\r\n/** @internal */\r\nexport const enum IsTranslucent { No, Yes, Maybe }\r\n"]}
1
+ {"version":3,"file":"RenderFlags.js","sourceRoot":"","sources":["../../../../src/render/webgl/RenderFlags.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/* eslint-disable no-restricted-syntax */\r\n\r\n/** Ordered list of render passes which produce a rendered frame.\r\n * [[RenderCommands]] organizes its [[DrawCommands]] into a list indexed by RenderPass.\r\n * @see [[Pass]] for the type from which the RenderPass for a [[Primitive]] is derived.\r\n * @internal\r\n */\r\nexport const enum RenderPass {\r\n None = 0xff,\r\n Background = 0,\r\n OpaqueLayers, // XY planar models render without depth-testing in order based on priority\r\n OpaqueLinear, // Linear geometry that is opaque and needs to be written to the pick data buffers\r\n OpaquePlanar, // Planar surface geometry that is opaque and needs to be written to the pick data buffers\r\n PointClouds,\r\n OpaqueGeneral, // All other opaque geometry (including point clouds and reality meshes) which are not written to the pick data buffers\r\n Classification, // Stencil volumes for normal processing of reality data classification.\r\n TranslucentLayers, // like Layers but drawn without depth write, blending with opaque\r\n Translucent,\r\n HiddenEdge,\r\n Hilite,\r\n OverlayLayers, // Like Layers, but drawn atop all other geometry\r\n WorldOverlay, // Decorations\r\n ViewOverlay, // Decorations\r\n SkyBox,\r\n BackgroundMap,\r\n HiliteClassification, // Secondary hilite pass for stencil volumes to process hilited classifiers for reality data\r\n ClassificationByIndex, // Stencil volumes for processing classification one classifier at a time (used for generating pick data Ids and flashing a single classifier).\r\n HilitePlanarClassification,\r\n PlanarClassification,\r\n VolumeClassifiedRealityData,\r\n COUNT,\r\n}\r\n\r\n/** Describes the [[RenderPass]]es in which a [[Primitive]] wants to be rendered.\r\n * Generally, each Pass corresponds to a single RenderPass. However a couple of passes specify that the primitive should be rendered\r\n * twice, in two different render passes.\r\n * [[RenderCommands.addPrimitive]] may ignore the requested Pass. For example, edges typically draw in RenderPass.OpaqueLinear, but\r\n * may also draw in RenderPass.HiddenEdge; and translucent geometry may sometimes be rendered in an opaque render pass instead.\r\n * @see [[CachedGeometry.getPass]].\r\n * @internal\r\n */\r\nexport type Pass =\r\n \"skybox\" | // SkyBox\r\n \"opaque\" | // OpaqueGeneral\r\n \"opaque-linear\" | // OpaqueLinear\r\n \"opaque-planar\" | // OpaquePlanar\r\n \"translucent\" | // Translucent\r\n \"point-clouds\" | // PointClouds\r\n \"view-overlay\" | // ViewOverlay\r\n \"classification\" | // Classification\r\n \"none\" | // None\r\n // The following apply to textured meshes when the texture image contains a mix of opaque and transparent pixels.\r\n // The mesh requests to be rendered in both opaque and transparent passes, with each pass discarding pixels that don't match that pass.\r\n // (i.e., discard transparent pixels during opaque pass and vice-versa).\r\n \"opaque-translucent\" | // OpaqueGeneral and Translucent\r\n \"opaque-planar-translucent\"; // OpaquePlanar and Translucent\r\n\r\n/** [[Pass]]es that map to two [[RenderPass]]es.\r\n * @internal\r\n */\r\nexport type DoublePass = \"opaque-translucent\" | \"opaque-planar-translucent\";\r\n\r\n/** [[Pass]]es that map to a single [[RenderPass]].\r\n * @internal */\r\nexport type SinglePass = Exclude<Pass, DoublePass>;\r\n\r\n/** Describes the type of geometry rendered by a ShaderProgram.\r\n * @internal\r\n */\r\nexport const enum GeometryType {\r\n IndexedTriangles,\r\n IndexedPoints,\r\n ArrayedPoints,\r\n}\r\n\r\n/** @internal */\r\nexport namespace Pass { // eslint-disable-line @typescript-eslint/no-redeclare\r\n /** Return the RenderPass corresponding to the specified Pass. */\r\n export function toRenderPass(pass: SinglePass): RenderPass {\r\n switch (pass) {\r\n case \"skybox\": return RenderPass.SkyBox;\r\n case \"opaque\": return RenderPass.OpaqueGeneral;\r\n case \"opaque-linear\": return RenderPass.OpaqueLinear;\r\n case \"opaque-planar\": return RenderPass.OpaquePlanar;\r\n case \"translucent\": return RenderPass.Translucent;\r\n case \"point-clouds\": return RenderPass.PointClouds;\r\n case \"view-overlay\": return RenderPass.ViewOverlay;\r\n case \"classification\": return RenderPass.Classification;\r\n case \"none\": return RenderPass.None;\r\n }\r\n }\r\n\r\n /** Return true if the specified Pass renders during RenderPass.Translucent.\r\n * @note It is possible for both [[rendersTranslucent]] and [[rendersOpaque]] to return true (or false) for a given Pass.\r\n */\r\n export function rendersTranslucent(pass: Pass): boolean {\r\n switch (pass) {\r\n case \"translucent\":\r\n case \"opaque-translucent\":\r\n case \"opaque-planar-translucent\":\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n /** Return true if the specified Pass renders during one of the opaque RenderPasses.\r\n * @note It is possible for both [[rendersTranslucent]] and [[rendersOpaque]] to return true for a given Pass.\r\n */\r\n export function rendersOpaque(pass: Pass): boolean {\r\n switch (pass) {\r\n case \"opaque-translucent\":\r\n case \"opaque-planar-translucent\":\r\n case \"opaque\":\r\n case \"opaque-planar\":\r\n case \"opaque-linear\":\r\n case \"point-clouds\":\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n /** Return true if the specified Pass renders both during RenderPass.Translucent and one of the opaque RenderPasses. */\r\n export function rendersOpaqueAndTranslucent(pass: Pass): pass is DoublePass {\r\n return \"opaque-translucent\" === pass || \"opaque-planar-translucent\" === pass;\r\n }\r\n\r\n export function toOpaquePass(pass: DoublePass): RenderPass {\r\n return \"opaque-translucent\" === pass ? RenderPass.OpaqueGeneral : RenderPass.OpaquePlanar;\r\n }\r\n}\r\n\r\n/** Reserved texture units for specific sampler variables, to avoid conflicts between shader components which each have their own textures.\r\n * WebGL 2 guarantees a minimum of 16 vertex texture units.\r\n * @internal\r\n */\r\nexport enum TextureUnit {\r\n // For shaders which know exactly which textures will be used\r\n Zero = WebGLRenderingContext.TEXTURE0,\r\n One = WebGLRenderingContext.TEXTURE1,\r\n Two = WebGLRenderingContext.TEXTURE2,\r\n Three = WebGLRenderingContext.TEXTURE3,\r\n Four = WebGLRenderingContext.TEXTURE4,\r\n Five = WebGLRenderingContext.TEXTURE5,\r\n Six = WebGLRenderingContext.TEXTURE6,\r\n Seven = WebGLRenderingContext.TEXTURE7,\r\n\r\n ClipVolume = Zero,\r\n FeatureSymbology = One,\r\n SurfaceTexture = Two,\r\n LineCode = Two,\r\n\r\n PickFeatureId = Three,\r\n PickDepthAndOrder = Four,\r\n\r\n VertexLUT = Five,\r\n\r\n // Texture unit 6 is overloaded. Therefore classification, hilite classification, and aux channel are all mutually exclusive.\r\n AuxChannelLUT = Six,\r\n PlanarClassification = Six,\r\n PlanarClassificationHilite = Six,\r\n\r\n // Texture unit 7 is overloaded. Therefore receiving shadows and thematic display are mutually exclusive.\r\n ShadowMap = Seven,\r\n ThematicSensors = Seven,\r\n\r\n // Textures used for up to 6 background or overlay map layers.\r\n RealityMesh0 = Two,\r\n RealityMesh1 = VertexLUT, // Reality meshes do not use VertexLUT.\r\n RealityMesh2 = ShadowMap, // Shadow map when picking -- PickDepthAndOrder otherwise....\r\n RealityMesh3 = WebGLRenderingContext.TEXTURE8,\r\n RealityMesh4 = WebGLRenderingContext.TEXTURE9,\r\n RealityMesh5 = WebGLRenderingContext.TEXTURE10,\r\n\r\n RealityMeshThematicGradient = WebGLRenderingContext.TEXTURE11,\r\n\r\n // Lookup table for indexed edges.\r\n EdgeLUT = WebGLRenderingContext.TEXTURE12,\r\n\r\n // Normal map texture.\r\n NormalMap = WebGLRenderingContext.TEXTURE13,\r\n}\r\n\r\n/**\r\n * Defines the order in which primitives are rendered within a GLESList. This is chiefly\r\n * used to sort primitives which originate from the same element. e.g., the blanking fill\r\n * associated with a text field must always render behind the text; the edges of a surface\r\n * must render in front of the surface; etc.\r\n * An exception to the 'same element' rule is provided for planar surfaces and edges thereof\r\n * sketched onto non-planar surfaces. When the depth test is ambiguous the planar geometry\r\n * is always on top of the non-planar surface. This addresses z-fighting when shapes are\r\n * sketched onto surfaces, e.g. as part of push-pull modeling workflows.\r\n * @internal\r\n */\r\nexport const enum RenderOrder {\r\n None = 0,\r\n Background = 1, // i.e., background map drawn without depth\r\n BlankingRegion = 2,\r\n UnlitSurface = 3, // Distinction only made for whether or not to apply ambient occlusion.\r\n LitSurface = 4,\r\n Linear = 5,\r\n Edge = 6,\r\n Silhouette = 7,\r\n\r\n PlanarBit = 8,\r\n\r\n PlanarUnlitSurface = UnlitSurface | PlanarBit,\r\n PlanarLitSurface = LitSurface | PlanarBit,\r\n PlanarLinear = Linear | PlanarBit,\r\n PlanarEdge = Edge | PlanarBit,\r\n PlanarSilhouette = Silhouette | PlanarBit,\r\n}\r\n\r\n/** @internal */\r\nexport function isPlanar(order: RenderOrder): boolean {\r\n return order >= RenderOrder.PlanarBit;\r\n}\r\n\r\n/** Flags indicating operations to be performed by the post-process composite step.\r\n * @internal\r\n */\r\nexport const enum CompositeFlags {\r\n None = 0,\r\n Translucent = 1 << 0,\r\n Hilite = 1 << 1,\r\n AmbientOcclusion = 1 << 2,\r\n}\r\n\r\n/** Location in boolean array of SurfaceFlags above.\r\n * @internal\r\n */\r\nexport const enum SurfaceBitIndex {\r\n HasTexture,\r\n ApplyLighting,\r\n HasNormals,\r\n IgnoreMaterial,\r\n TransparencyThreshold,\r\n BackgroundFill,\r\n HasColorAndNormal,\r\n OverrideRgb,\r\n HasNormalMap,\r\n HasMaterialAtlas,\r\n UseConstantLodTextureMapping,\r\n UseConstantLodNormalMapMapping,\r\n Count,\r\n}\r\n\r\n/** Describes attributes of a MeshGeometry object. Used to conditionally execute portion of shader programs.\r\n * @internal\r\n */\r\nexport const enum SurfaceFlags {\r\n None = 0,\r\n HasTexture = 1 << SurfaceBitIndex.HasTexture,\r\n ApplyLighting = 1 << SurfaceBitIndex.ApplyLighting,\r\n HasNormals = 1 << SurfaceBitIndex.HasNormals,\r\n\r\n // NB: In u_surfaceFlags provided to shader, indicates material color/specular/alpha should be ignored. Has no effect on texture.\r\n // If a given feature has the 'ignore material' override set, v_surfaceFlags will be modified to turn on IgnoreMaterial and turn off HasTexture.\r\n IgnoreMaterial = 1 << SurfaceBitIndex.IgnoreMaterial,\r\n\r\n // In HiddenLine and SolidFill modes, a transparency threshold is supplied; surfaces that are more transparent than the threshold are not rendered.\r\n TransparencyThreshold = 1 << SurfaceBitIndex.TransparencyThreshold,\r\n\r\n // For HiddenLine mode\r\n BackgroundFill = 1 << SurfaceBitIndex.BackgroundFill,\r\n\r\n // For textured meshes, the color index in the vertex LUT is unused - we place the normal there instead.\r\n // For untextured lit meshes, the normal is placed after the feature ID.\r\n HasColorAndNormal = 1 << SurfaceBitIndex.HasColorAndNormal,\r\n // For textured meshes, use rgb from v_color instead of from texture.\r\n OverrideRgb = 1 << SurfaceBitIndex.OverrideRgb,\r\n // For geometry with fixed normals (terrain meshes) we must avoid front facing normal reversal or skirts will be incorrectly lit.\r\n HasNormalMap = 1 << SurfaceBitIndex.HasNormalMap,\r\n HasMaterialAtlas = 1 << SurfaceBitIndex.HasMaterialAtlas,\r\n}\r\n\r\n/** 8-bit flags indicating emphasis effects applied to a feature.\r\n * @internal\r\n */\r\nexport const enum EmphasisFlags {\r\n None = 0,\r\n Hilite = 1,\r\n Emphasized = 2,\r\n Flashed = 4,\r\n NonLocatable = 8,\r\n}\r\n\r\n/** @internal */\r\nexport const enum IsTranslucent { No, Yes, Maybe }\r\n"]}
@@ -22,7 +22,7 @@ import { RenderGraphic, RenderGraphicOwner } from "../RenderGraphic";
22
22
  import { CreateRenderMaterialArgs } from "../CreateRenderMaterialArgs";
23
23
  import { RenderMemory } from "../RenderMemory";
24
24
  import { RealityMeshParams } from "../RealityMeshParams";
25
- import { DebugShaderFile, GLTimerResultCallback, PlanarGridProps, RenderAreaPattern, RenderDiagnostics, RenderGeometry, RenderSkyBoxParams, RenderSystem, RenderSystemDebugControl } from "../RenderSystem";
25
+ import { CreateGraphicFromTemplateArgs, DebugShaderFile, GLTimerResultCallback, PlanarGridProps, RenderAreaPattern, RenderDiagnostics, RenderInstances, RenderSkyBoxParams, RenderSystem, RenderSystemDebugControl } from "../RenderSystem";
26
26
  import { RenderTarget } from "../RenderTarget";
27
27
  import { CreateTextureArgs, CreateTextureFromSourceArgs } from "../CreateTextureArgs";
28
28
  import { ScreenSpaceEffectBuilder, ScreenSpaceEffectBuilderParams } from "../ScreenSpaceEffectBuilder";
@@ -31,9 +31,10 @@ import { WebGLDisposable } from "./Disposable";
31
31
  import { DepthBuffer, FrameBufferStack } from "./FrameBuffer";
32
32
  import { GL } from "./GL";
33
33
  import { GLTimer } from "./GLTimer";
34
- import { PatternBuffers } from "./InstancedGeometry";
34
+ import { InstanceBuffers, PatternBuffers } from "./InstancedGeometry";
35
35
  import { Layer, LayerContainer } from "./Layer";
36
36
  import { MeshRenderGeometry } from "./Mesh";
37
+ import { PointCloudGeometry } from "./PointCloud";
37
38
  import { PointStringGeometry } from "./PointString";
38
39
  import { PolylineGeometry } from "./Polyline";
39
40
  import { RealityMeshGeometry } from "./RealityMesh";
@@ -44,6 +45,8 @@ import { Techniques } from "./Technique";
44
45
  import { TextureHandle } from "./Texture";
45
46
  import { UniformHandle } from "./UniformHandle";
46
47
  import { BatchOptions } from "../../common/render/BatchOptions";
48
+ import { RenderGeometry } from "../../internal/render/RenderGeometry";
49
+ import { RenderInstancesParams } from "../../common/render/RenderInstancesParams";
47
50
  /** @internal */
48
51
  export declare const enum ContextState {
49
52
  Uninitialized = 0,
@@ -136,13 +139,16 @@ export declare class System extends RenderSystem implements RenderSystemDebugCon
136
139
  createPlanarGrid(frustum: Frustum, grid: PlanarGridProps): RenderGraphic | undefined;
137
140
  createTerrainMesh(params: RealityMeshParams, transform?: Transform, disableTextureDisposal?: boolean): RealityMeshGeometry | undefined;
138
141
  createRealityMeshGraphic(params: RealityMeshGraphicParams, disableTextureDisposal?: boolean): RenderGraphic | undefined;
139
- createRealityMesh(realityMesh: RealityMeshParams, disableTextureDisposal?: boolean): RenderGraphic | undefined;
142
+ createRealityMeshGeometry(realityMesh: RealityMeshParams, disableTextureDisposal?: boolean): RealityMeshGeometry | undefined;
140
143
  createMeshGeometry(params: MeshParams, viOrigin?: Point3d): MeshRenderGeometry | undefined;
141
144
  createPolylineGeometry(params: PolylineParams, viOrigin?: Point3d): PolylineGeometry | undefined;
142
145
  createPointStringGeometry(params: PointStringParams, viOrigin?: Point3d): PointStringGeometry | undefined;
143
146
  createAreaPattern(params: PatternGraphicParams): PatternBuffers | undefined;
144
- createRenderGraphic(geometry: RenderGeometry, instances?: InstancedGraphicParams | RenderAreaPattern): RenderGraphic | undefined;
145
- createPointCloud(args: PointCloudArgs): RenderGraphic | undefined;
147
+ createRenderInstances(params: RenderInstancesParams): RenderInstances | undefined;
148
+ private createInstancedGraphic;
149
+ createGraphicFromTemplate(args: CreateGraphicFromTemplateArgs): RenderGraphic;
150
+ createRenderGraphic(geometry: RenderGeometry, instances?: InstancedGraphicParams | RenderAreaPattern | InstanceBuffers): RenderGraphic | undefined;
151
+ createPointCloudGeometry(args: PointCloudArgs): PointCloudGeometry;
146
152
  createGraphicList(primitives: RenderGraphic[]): RenderGraphic;
147
153
  createGraphicBranch(branch: GraphicBranch, transform: Transform, options?: GraphicBranchOptions): RenderGraphic;
148
154
  createAnimationTransformNode(graphic: RenderGraphic, nodeId: number): RenderGraphic;
@@ -1 +1 @@
1
- {"version":3,"file":"System.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/System.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"System.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/System.ts"],"names":[],"mappings":"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"}
@@ -10,10 +10,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.System = exports.IdMap = void 0;
11
11
  const core_bentley_1 = require("@itwin/core-bentley");
12
12
  const core_common_1 = require("@itwin/core-common");
13
+ const core_geometry_1 = require("@itwin/core-geometry");
13
14
  const webgl_compatibility_1 = require("@itwin/webgl-compatibility");
14
15
  const IModelApp_1 = require("../../IModelApp");
15
16
  const IModelConnection_1 = require("../../IModelConnection");
16
17
  const ImageUtil_1 = require("../../common/ImageUtil");
18
+ const GraphicBranch_1 = require("../GraphicBranch");
17
19
  const PrimitiveBuilder_1 = require("../../internal/render/PrimitiveBuilder");
18
20
  const RenderSystem_1 = require("../RenderSystem");
19
21
  const BackgroundMapDrape_1 = require("./BackgroundMapDrape");
@@ -42,6 +44,7 @@ const ScreenSpaceEffect_1 = require("./ScreenSpaceEffect");
42
44
  const Target_1 = require("./Target");
43
45
  const Technique_1 = require("./Technique");
44
46
  const Texture_1 = require("./Texture");
47
+ const Symbols_1 = require("../../common/internal/Symbols");
45
48
  /** Id map holds key value pairs for both materials and textures, useful for caching such objects.
46
49
  * @internal
47
50
  */
@@ -327,9 +330,8 @@ class System extends RenderSystem_1.RenderSystem {
327
330
  createRealityMeshGraphic(params, disableTextureDisposal = false) {
328
331
  return RealityMesh_1.RealityMeshGeometry.createGraphic(this, params, disableTextureDisposal);
329
332
  }
330
- createRealityMesh(realityMesh, disableTextureDisposal = false) {
331
- const geom = RealityMesh_1.RealityMeshGeometry.createFromRealityMesh(realityMesh, disableTextureDisposal);
332
- return geom ? Primitive_1.Primitive.create(geom) : undefined;
333
+ createRealityMeshGeometry(realityMesh, disableTextureDisposal = false) {
334
+ return RealityMesh_1.RealityMeshGeometry.createFromRealityMesh(realityMesh, disableTextureDisposal);
333
335
  }
334
336
  createMeshGeometry(params, viOrigin) {
335
337
  return Mesh_1.MeshRenderGeometry.create(params, viOrigin);
@@ -343,21 +345,87 @@ class System extends RenderSystem_1.RenderSystem {
343
345
  createAreaPattern(params) {
344
346
  return InstancedGeometry_1.PatternBuffers.create(params);
345
347
  }
348
+ createRenderInstances(params) {
349
+ return InstancedGeometry_1.RenderInstancesImpl.create(params);
350
+ }
351
+ createInstancedGraphic(geometry, instances) {
352
+ const geom = geometry;
353
+ return this.createRenderGraphic(geom, InstancedGeometry_1.InstanceBuffers.fromRenderInstances(instances, geom.computeRange()));
354
+ }
355
+ createGraphicFromTemplate(args) {
356
+ const template = args.template;
357
+ const instances = args.instances;
358
+ if (instances && !template.isInstanceable) {
359
+ throw new Error("GraphicTemplate is not instanceable");
360
+ }
361
+ const graphics = [];
362
+ for (const node of template[Symbols_1._nodes]) {
363
+ const nodeGraphics = [];
364
+ for (const geometry of node.geometry) {
365
+ const gf = instances ? this.createInstancedGraphic(geometry, instances) : this.createRenderGraphic(geometry);
366
+ if (gf) {
367
+ nodeGraphics.push(gf);
368
+ }
369
+ }
370
+ if (nodeGraphics.length === 0) {
371
+ continue;
372
+ }
373
+ if (node.transform) {
374
+ const branch = new GraphicBranch_1.GraphicBranch();
375
+ for (const gf of nodeGraphics) {
376
+ branch.add(gf);
377
+ }
378
+ graphics.push(this.createGraphicBranch(branch, node.transform));
379
+ }
380
+ else {
381
+ graphics.push(this.createGraphicList(nodeGraphics));
382
+ }
383
+ }
384
+ let graphic = this.createGraphicList(graphics);
385
+ if (instances && instances[Symbols_1._featureTable]) {
386
+ const range = new core_geometry_1.Range3d();
387
+ graphic.unionRange(range);
388
+ graphic = this.createBatch(graphic, instances[Symbols_1._featureTable], range);
389
+ }
390
+ else if (template[Symbols_1._batch]) {
391
+ graphic = this.createBatch(graphic, template[Symbols_1._batch].featureTable, template[Symbols_1._batch].range, template[Symbols_1._batch].options);
392
+ }
393
+ const templateBranch = template[Symbols_1._branch];
394
+ if (templateBranch) {
395
+ const branch = new GraphicBranch_1.GraphicBranch(true);
396
+ if (templateBranch.viewFlagOverrides) {
397
+ branch.setViewFlagOverrides(templateBranch.viewFlagOverrides);
398
+ }
399
+ branch.add(graphic);
400
+ graphic = this.createBranch(branch, templateBranch.transform ?? core_geometry_1.Transform.createIdentity());
401
+ }
402
+ return graphic;
403
+ }
346
404
  createRenderGraphic(geometry, instances) {
347
- if (!(geometry instanceof Mesh_1.MeshRenderGeometry)) {
348
- if (geometry instanceof Polyline_1.PolylineGeometry || geometry instanceof PointString_1.PointStringGeometry)
349
- return Primitive_1.Primitive.create(geometry, instances);
350
- (0, core_bentley_1.assert)(false, "Invalid RenderGeometry for System.createRenderGraphic");
351
- return undefined;
405
+ const geom = geometry;
406
+ let buffers;
407
+ if (instances) {
408
+ if (!geometry.isInstanceable) {
409
+ throw new Error("RenderGeometry is not instanceable");
410
+ }
411
+ if (instances instanceof InstancedGeometry_1.PatternBuffers || instances instanceof InstancedGeometry_1.InstanceBuffers) {
412
+ buffers = instances;
413
+ }
414
+ else {
415
+ (0, core_bentley_1.assert)((0, InstancedGeometry_1.isInstancedGraphicParams)(instances));
416
+ buffers = InstancedGeometry_1.InstanceBuffers.fromParams(instances, () => geom.computeRange());
417
+ if (!buffers) {
418
+ return undefined;
419
+ }
420
+ }
352
421
  }
353
- (0, core_bentley_1.assert)(!instances || instances instanceof InstancedGeometry_1.PatternBuffers || (0, InstancedGeometry_1.isInstancedGraphicParams)(instances));
354
- return Mesh_1.MeshGraphic.create(geometry, instances);
422
+ return geom.renderGeometryType === "mesh" ? Mesh_1.MeshGraphic.create(geom, buffers) : Primitive_1.Primitive.create(geom, buffers);
355
423
  }
356
- createPointCloud(args) {
357
- return Primitive_1.Primitive.create(new PointCloud_1.PointCloudGeometry(args));
424
+ createPointCloudGeometry(args) {
425
+ return new PointCloud_1.PointCloudGeometry(args);
358
426
  }
359
427
  createGraphicList(primitives) {
360
- return new Graphic_1.GraphicsArray(primitives);
428
+ return primitives.length === 1 ? primitives[0] : new Graphic_1.GraphicsArray(primitives);
361
429
  }
362
430
  createGraphicBranch(branch, transform, options) {
363
431
  return new Graphic_1.Branch(branch, transform, undefined, options);