@itwin/core-frontend 3.5.0-dev.4 → 3.5.0-dev.41

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 (496) hide show
  1. package/CHANGELOG.md +55 -1
  2. package/lib/cjs/AccuSnap.d.ts +7 -1
  3. package/lib/cjs/AccuSnap.d.ts.map +1 -1
  4. package/lib/cjs/AccuSnap.js +26 -3
  5. package/lib/cjs/AccuSnap.js.map +1 -1
  6. package/lib/cjs/BriefcaseConnection.d.ts +28 -1
  7. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  8. package/lib/cjs/BriefcaseConnection.js +29 -8
  9. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  10. package/lib/cjs/BriefcaseTxns.js +9 -9
  11. package/lib/cjs/BriefcaseTxns.js.map +1 -1
  12. package/lib/cjs/ContextRealityModelState.d.ts.map +1 -1
  13. package/lib/cjs/ContextRealityModelState.js +2 -0
  14. package/lib/cjs/ContextRealityModelState.js.map +1 -1
  15. package/lib/cjs/GraphicalEditingScope.js +2 -2
  16. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  17. package/lib/cjs/IModelApp.d.ts +6 -0
  18. package/lib/cjs/IModelApp.d.ts.map +1 -1
  19. package/lib/cjs/IModelApp.js +6 -0
  20. package/lib/cjs/IModelApp.js.map +1 -1
  21. package/lib/cjs/IModelConnection.d.ts +15 -2
  22. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  23. package/lib/cjs/IModelConnection.js +21 -1
  24. package/lib/cjs/IModelConnection.js.map +1 -1
  25. package/lib/cjs/IpcApp.d.ts +14 -1
  26. package/lib/cjs/IpcApp.d.ts.map +1 -1
  27. package/lib/cjs/IpcApp.js +25 -0
  28. package/lib/cjs/IpcApp.js.map +1 -1
  29. package/lib/cjs/MarginPercent.d.ts +27 -2
  30. package/lib/cjs/MarginPercent.d.ts.map +1 -1
  31. package/lib/cjs/MarginPercent.js +8 -2
  32. package/lib/cjs/MarginPercent.js.map +1 -1
  33. package/lib/cjs/ModelState.d.ts +2 -1
  34. package/lib/cjs/ModelState.d.ts.map +1 -1
  35. package/lib/cjs/ModelState.js +10 -3
  36. package/lib/cjs/ModelState.js.map +1 -1
  37. package/lib/cjs/NativeApp.d.ts +5 -1
  38. package/lib/cjs/NativeApp.d.ts.map +1 -1
  39. package/lib/cjs/NativeApp.js +25 -20
  40. package/lib/cjs/NativeApp.js.map +1 -1
  41. package/lib/cjs/NativeAppLogger.js +1 -1
  42. package/lib/cjs/NativeAppLogger.js.map +1 -1
  43. package/lib/cjs/RealityDataSource.d.ts +44 -1
  44. package/lib/cjs/RealityDataSource.d.ts.map +1 -1
  45. package/lib/cjs/RealityDataSource.js +41 -14
  46. package/lib/cjs/RealityDataSource.js.map +1 -1
  47. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.d.ts +1 -0
  48. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.d.ts.map +1 -1
  49. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js +3 -0
  50. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  51. package/lib/cjs/RealityDataSourceContextShareImpl.d.ts +1 -0
  52. package/lib/cjs/RealityDataSourceContextShareImpl.d.ts.map +1 -1
  53. package/lib/cjs/RealityDataSourceContextShareImpl.js +3 -0
  54. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
  55. package/lib/cjs/RealityDataSourceTilesetUrlImpl.d.ts +1 -0
  56. package/lib/cjs/RealityDataSourceTilesetUrlImpl.d.ts.map +1 -1
  57. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js +3 -0
  58. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  59. package/lib/cjs/ViewAnimation.d.ts +10 -2
  60. package/lib/cjs/ViewAnimation.d.ts.map +1 -1
  61. package/lib/cjs/ViewAnimation.js.map +1 -1
  62. package/lib/cjs/ViewCreator2d.js +3 -2
  63. package/lib/cjs/ViewCreator2d.js.map +1 -1
  64. package/lib/cjs/ViewState.d.ts.map +1 -1
  65. package/lib/cjs/ViewState.js +22 -2
  66. package/lib/cjs/ViewState.js.map +1 -1
  67. package/lib/cjs/Viewport.d.ts.map +1 -1
  68. package/lib/cjs/Viewport.js +5 -2
  69. package/lib/cjs/Viewport.js.map +1 -1
  70. package/lib/cjs/extension/ExtensionRuntime.js +11 -0
  71. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  72. package/lib/cjs/render/GraphicBranch.d.ts +5 -1
  73. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  74. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  75. package/lib/cjs/render/RenderMaterial.d.ts +57 -30
  76. package/lib/cjs/render/RenderMaterial.d.ts.map +1 -1
  77. package/lib/cjs/render/RenderMaterial.js.map +1 -1
  78. package/lib/cjs/render/primitives/PointCloudPrimitive.d.ts +4 -8
  79. package/lib/cjs/render/primitives/PointCloudPrimitive.d.ts.map +1 -1
  80. package/lib/cjs/render/primitives/PointCloudPrimitive.js +0 -16
  81. package/lib/cjs/render/primitives/PointCloudPrimitive.js.map +1 -1
  82. package/lib/cjs/render/primitives/SurfaceParams.d.ts +0 -1
  83. package/lib/cjs/render/primitives/SurfaceParams.d.ts.map +1 -1
  84. package/lib/cjs/render/primitives/SurfaceParams.js.map +1 -1
  85. package/lib/cjs/render/primitives/VertexTable.d.ts.map +1 -1
  86. package/lib/cjs/render/primitives/VertexTable.js +0 -1
  87. package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
  88. package/lib/cjs/render/primitives/VertexTableSplitter.d.ts.map +1 -1
  89. package/lib/cjs/render/primitives/VertexTableSplitter.js +0 -1
  90. package/lib/cjs/render/primitives/VertexTableSplitter.js.map +1 -1
  91. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts +1 -2
  92. package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  93. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js +3 -2
  94. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  95. package/lib/cjs/render/webgl/BranchState.d.ts +3 -1
  96. package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
  97. package/lib/cjs/render/webgl/BranchState.js +18 -15
  98. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  99. package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
  100. package/lib/cjs/render/webgl/BranchUniforms.js +4 -0
  101. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  102. package/lib/cjs/render/webgl/FeatureOverrides.d.ts +0 -1
  103. package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
  104. package/lib/cjs/render/webgl/FeatureOverrides.js +16 -11
  105. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  106. package/lib/cjs/render/webgl/MeshData.d.ts +0 -1
  107. package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -1
  108. package/lib/cjs/render/webgl/MeshData.js +0 -1
  109. package/lib/cjs/render/webgl/MeshData.js.map +1 -1
  110. package/lib/cjs/render/webgl/MeshGeometry.d.ts +0 -1
  111. package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -1
  112. package/lib/cjs/render/webgl/MeshGeometry.js +0 -1
  113. package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -1
  114. package/lib/cjs/render/webgl/PointCloud.d.ts +1 -2
  115. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  116. package/lib/cjs/render/webgl/PointCloud.js +7 -7
  117. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  118. package/lib/cjs/render/webgl/RealityModelUniforms.d.ts +35 -0
  119. package/lib/cjs/render/webgl/RealityModelUniforms.d.ts.map +1 -0
  120. package/lib/cjs/render/webgl/RealityModelUniforms.js +73 -0
  121. package/lib/cjs/render/webgl/RealityModelUniforms.js.map +1 -0
  122. package/lib/cjs/render/webgl/RenderFlags.d.ts +12 -3
  123. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  124. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  125. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +0 -1
  126. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  127. package/lib/cjs/render/webgl/SurfaceGeometry.js +2 -6
  128. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  129. package/lib/cjs/render/webgl/System.d.ts +1 -1
  130. package/lib/cjs/render/webgl/TargetUniforms.d.ts +2 -0
  131. package/lib/cjs/render/webgl/TargetUniforms.d.ts.map +1 -1
  132. package/lib/cjs/render/webgl/TargetUniforms.js +2 -0
  133. package/lib/cjs/render/webgl/TargetUniforms.js.map +1 -1
  134. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  135. package/lib/cjs/render/webgl/Technique.js +3 -30
  136. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  137. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  138. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +9 -1
  139. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  140. package/lib/cjs/render/webgl/glsl/Lighting.js +1 -1
  141. package/lib/cjs/render/webgl/glsl/Lighting.js.map +1 -1
  142. package/lib/cjs/render/webgl/glsl/PointCloud.d.ts.map +1 -1
  143. package/lib/cjs/render/webgl/glsl/PointCloud.js +50 -22
  144. package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
  145. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts +4 -2
  146. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  147. package/lib/cjs/render/webgl/glsl/RealityMesh.js +5 -3
  148. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  149. package/lib/cjs/render/webgl/glsl/Surface.js +1 -1
  150. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  151. package/lib/cjs/tile/GltfReader.d.ts +9 -0
  152. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  153. package/lib/cjs/tile/GltfReader.js +4 -1
  154. package/lib/cjs/tile/GltfReader.js.map +1 -1
  155. package/lib/cjs/tile/IModelTileRequestChannels.js +1 -1
  156. package/lib/cjs/tile/IModelTileRequestChannels.js.map +1 -1
  157. package/lib/cjs/tile/ImdlReader.d.ts +5 -0
  158. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  159. package/lib/cjs/tile/ImdlReader.js +8 -2
  160. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  161. package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
  162. package/lib/cjs/tile/OrbitGtTileTree.js +8 -2
  163. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  164. package/lib/cjs/tile/PntsReader.d.ts.map +1 -1
  165. package/lib/cjs/tile/PntsReader.js +8 -2
  166. package/lib/cjs/tile/PntsReader.js.map +1 -1
  167. package/lib/cjs/tile/PrimaryTileTree.js +2 -2
  168. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  169. package/lib/cjs/tile/RealityModelTileTree.d.ts +4 -1
  170. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  171. package/lib/cjs/tile/RealityModelTileTree.js +58 -19
  172. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  173. package/lib/cjs/tile/RealityTile.d.ts +2 -2
  174. package/lib/cjs/tile/RealityTile.d.ts.map +1 -1
  175. package/lib/cjs/tile/RealityTile.js +8 -1
  176. package/lib/cjs/tile/RealityTile.js.map +1 -1
  177. package/lib/cjs/tile/RealityTileLoader.d.ts +1 -0
  178. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  179. package/lib/cjs/tile/RealityTileLoader.js +13 -0
  180. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  181. package/lib/cjs/tile/RealityTileTree.js +1 -1
  182. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  183. package/lib/cjs/tile/TileAdmin.d.ts +1 -0
  184. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  185. package/lib/cjs/tile/TileAdmin.js +29 -15
  186. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  187. package/lib/cjs/tile/TileDrawArgs.d.ts +5 -1
  188. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  189. package/lib/cjs/tile/TileDrawArgs.js +2 -0
  190. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  191. package/lib/cjs/tile/TileRequestChannels.js +1 -1
  192. package/lib/cjs/tile/TileRequestChannels.js.map +1 -1
  193. package/lib/cjs/tile/TileStorage.d.ts.map +1 -1
  194. package/lib/cjs/tile/TileStorage.js +12 -6
  195. package/lib/cjs/tile/TileStorage.js.map +1 -1
  196. package/lib/cjs/tile/internal.d.ts +1 -0
  197. package/lib/cjs/tile/internal.d.ts.map +1 -1
  198. package/lib/cjs/tile/internal.js +1 -0
  199. package/lib/cjs/tile/internal.js.map +1 -1
  200. package/lib/cjs/tile/map/ArcGISTileMap.d.ts +5 -2
  201. package/lib/cjs/tile/map/ArcGISTileMap.d.ts.map +1 -1
  202. package/lib/cjs/tile/map/ArcGISTileMap.js +17 -2
  203. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
  204. package/lib/cjs/tile/map/ArcGisUtilities.d.ts +50 -5
  205. package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
  206. package/lib/cjs/tile/map/ArcGisUtilities.js +119 -48
  207. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  208. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts +26 -0
  209. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -0
  210. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +97 -0
  211. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -0
  212. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -4
  213. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  214. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +11 -96
  215. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  216. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  217. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +2 -1
  218. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  219. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +18 -4
  220. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  221. package/lib/cjs/tile/map/MapLayerFormatRegistry.js +25 -5
  222. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  223. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts +6 -4
  224. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  225. package/lib/cjs/tile/map/MapLayerImageryFormats.js +12 -16
  226. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  227. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +26 -5
  228. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  229. package/lib/cjs/tile/map/MapLayerImageryProvider.js +69 -48
  230. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  231. package/lib/cjs/tile/map/MapLayerSources.js +1 -1
  232. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  233. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  234. package/lib/cjs/tile/map/MapTileTree.js +10 -7
  235. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  236. package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
  237. package/lib/cjs/tile/map/WmsCapabilities.js +4 -1
  238. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  239. package/lib/cjs/tools/EditManipulator.d.ts.map +1 -1
  240. package/lib/cjs/tools/EditManipulator.js +2 -1
  241. package/lib/cjs/tools/EditManipulator.js.map +1 -1
  242. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  243. package/lib/cjs/tools/ToolAdmin.js +6 -4
  244. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  245. package/lib/cjs/webgl.d.ts +1 -0
  246. package/lib/cjs/webgl.d.ts.map +1 -1
  247. package/lib/cjs/webgl.js +1 -0
  248. package/lib/cjs/webgl.js.map +1 -1
  249. package/lib/esm/AccuSnap.d.ts +7 -1
  250. package/lib/esm/AccuSnap.d.ts.map +1 -1
  251. package/lib/esm/AccuSnap.js +27 -4
  252. package/lib/esm/AccuSnap.js.map +1 -1
  253. package/lib/esm/BriefcaseConnection.d.ts +28 -1
  254. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  255. package/lib/esm/BriefcaseConnection.js +30 -9
  256. package/lib/esm/BriefcaseConnection.js.map +1 -1
  257. package/lib/esm/BriefcaseTxns.js +9 -9
  258. package/lib/esm/BriefcaseTxns.js.map +1 -1
  259. package/lib/esm/ContextRealityModelState.d.ts.map +1 -1
  260. package/lib/esm/ContextRealityModelState.js +2 -0
  261. package/lib/esm/ContextRealityModelState.js.map +1 -1
  262. package/lib/esm/GraphicalEditingScope.js +2 -2
  263. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  264. package/lib/esm/IModelApp.d.ts +6 -0
  265. package/lib/esm/IModelApp.d.ts.map +1 -1
  266. package/lib/esm/IModelApp.js +6 -0
  267. package/lib/esm/IModelApp.js.map +1 -1
  268. package/lib/esm/IModelConnection.d.ts +15 -2
  269. package/lib/esm/IModelConnection.d.ts.map +1 -1
  270. package/lib/esm/IModelConnection.js +21 -1
  271. package/lib/esm/IModelConnection.js.map +1 -1
  272. package/lib/esm/IpcApp.d.ts +14 -1
  273. package/lib/esm/IpcApp.d.ts.map +1 -1
  274. package/lib/esm/IpcApp.js +25 -0
  275. package/lib/esm/IpcApp.js.map +1 -1
  276. package/lib/esm/MarginPercent.d.ts +27 -2
  277. package/lib/esm/MarginPercent.d.ts.map +1 -1
  278. package/lib/esm/MarginPercent.js +8 -2
  279. package/lib/esm/MarginPercent.js.map +1 -1
  280. package/lib/esm/ModelState.d.ts +2 -1
  281. package/lib/esm/ModelState.d.ts.map +1 -1
  282. package/lib/esm/ModelState.js +11 -4
  283. package/lib/esm/ModelState.js.map +1 -1
  284. package/lib/esm/NativeApp.d.ts +5 -1
  285. package/lib/esm/NativeApp.d.ts.map +1 -1
  286. package/lib/esm/NativeApp.js +25 -20
  287. package/lib/esm/NativeApp.js.map +1 -1
  288. package/lib/esm/NativeAppLogger.js +1 -1
  289. package/lib/esm/NativeAppLogger.js.map +1 -1
  290. package/lib/esm/RealityDataSource.d.ts +44 -1
  291. package/lib/esm/RealityDataSource.d.ts.map +1 -1
  292. package/lib/esm/RealityDataSource.js +39 -13
  293. package/lib/esm/RealityDataSource.js.map +1 -1
  294. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.d.ts +1 -0
  295. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.d.ts.map +1 -1
  296. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js +3 -0
  297. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  298. package/lib/esm/RealityDataSourceContextShareImpl.d.ts +1 -0
  299. package/lib/esm/RealityDataSourceContextShareImpl.d.ts.map +1 -1
  300. package/lib/esm/RealityDataSourceContextShareImpl.js +3 -0
  301. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
  302. package/lib/esm/RealityDataSourceTilesetUrlImpl.d.ts +1 -0
  303. package/lib/esm/RealityDataSourceTilesetUrlImpl.d.ts.map +1 -1
  304. package/lib/esm/RealityDataSourceTilesetUrlImpl.js +3 -0
  305. package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  306. package/lib/esm/ViewAnimation.d.ts +10 -2
  307. package/lib/esm/ViewAnimation.d.ts.map +1 -1
  308. package/lib/esm/ViewAnimation.js.map +1 -1
  309. package/lib/esm/ViewCreator2d.js +3 -2
  310. package/lib/esm/ViewCreator2d.js.map +1 -1
  311. package/lib/esm/ViewState.d.ts.map +1 -1
  312. package/lib/esm/ViewState.js +22 -2
  313. package/lib/esm/ViewState.js.map +1 -1
  314. package/lib/esm/Viewport.d.ts.map +1 -1
  315. package/lib/esm/Viewport.js +5 -2
  316. package/lib/esm/Viewport.js.map +1 -1
  317. package/lib/esm/extension/ExtensionRuntime.js +12 -1
  318. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  319. package/lib/esm/render/GraphicBranch.d.ts +5 -1
  320. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  321. package/lib/esm/render/GraphicBranch.js.map +1 -1
  322. package/lib/esm/render/RenderMaterial.d.ts +57 -30
  323. package/lib/esm/render/RenderMaterial.d.ts.map +1 -1
  324. package/lib/esm/render/RenderMaterial.js.map +1 -1
  325. package/lib/esm/render/primitives/PointCloudPrimitive.d.ts +4 -8
  326. package/lib/esm/render/primitives/PointCloudPrimitive.d.ts.map +1 -1
  327. package/lib/esm/render/primitives/PointCloudPrimitive.js +1 -14
  328. package/lib/esm/render/primitives/PointCloudPrimitive.js.map +1 -1
  329. package/lib/esm/render/primitives/SurfaceParams.d.ts +0 -1
  330. package/lib/esm/render/primitives/SurfaceParams.d.ts.map +1 -1
  331. package/lib/esm/render/primitives/SurfaceParams.js.map +1 -1
  332. package/lib/esm/render/primitives/VertexTable.d.ts.map +1 -1
  333. package/lib/esm/render/primitives/VertexTable.js +0 -1
  334. package/lib/esm/render/primitives/VertexTable.js.map +1 -1
  335. package/lib/esm/render/primitives/VertexTableSplitter.d.ts.map +1 -1
  336. package/lib/esm/render/primitives/VertexTableSplitter.js +0 -1
  337. package/lib/esm/render/primitives/VertexTableSplitter.js.map +1 -1
  338. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts +1 -2
  339. package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +1 -1
  340. package/lib/esm/render/primitives/mesh/MeshPrimitives.js +3 -2
  341. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  342. package/lib/esm/render/webgl/BranchState.d.ts +3 -1
  343. package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
  344. package/lib/esm/render/webgl/BranchState.js +18 -15
  345. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  346. package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
  347. package/lib/esm/render/webgl/BranchUniforms.js +4 -0
  348. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  349. package/lib/esm/render/webgl/FeatureOverrides.d.ts +0 -1
  350. package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
  351. package/lib/esm/render/webgl/FeatureOverrides.js +16 -11
  352. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  353. package/lib/esm/render/webgl/MeshData.d.ts +0 -1
  354. package/lib/esm/render/webgl/MeshData.d.ts.map +1 -1
  355. package/lib/esm/render/webgl/MeshData.js +0 -1
  356. package/lib/esm/render/webgl/MeshData.js.map +1 -1
  357. package/lib/esm/render/webgl/MeshGeometry.d.ts +0 -1
  358. package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -1
  359. package/lib/esm/render/webgl/MeshGeometry.js +0 -1
  360. package/lib/esm/render/webgl/MeshGeometry.js.map +1 -1
  361. package/lib/esm/render/webgl/PointCloud.d.ts +1 -2
  362. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  363. package/lib/esm/render/webgl/PointCloud.js +7 -7
  364. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  365. package/lib/esm/render/webgl/RealityModelUniforms.d.ts +35 -0
  366. package/lib/esm/render/webgl/RealityModelUniforms.d.ts.map +1 -0
  367. package/lib/esm/render/webgl/RealityModelUniforms.js +68 -0
  368. package/lib/esm/render/webgl/RealityModelUniforms.js.map +1 -0
  369. package/lib/esm/render/webgl/RenderFlags.d.ts +12 -3
  370. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  371. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  372. package/lib/esm/render/webgl/SurfaceGeometry.d.ts +0 -1
  373. package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  374. package/lib/esm/render/webgl/SurfaceGeometry.js +2 -6
  375. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
  376. package/lib/esm/render/webgl/System.d.ts +1 -1
  377. package/lib/esm/render/webgl/TargetUniforms.d.ts +2 -0
  378. package/lib/esm/render/webgl/TargetUniforms.d.ts.map +1 -1
  379. package/lib/esm/render/webgl/TargetUniforms.js +2 -0
  380. package/lib/esm/render/webgl/TargetUniforms.js.map +1 -1
  381. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  382. package/lib/esm/render/webgl/Technique.js +2 -10
  383. package/lib/esm/render/webgl/Technique.js.map +1 -1
  384. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  385. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +9 -1
  386. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  387. package/lib/esm/render/webgl/glsl/Lighting.js +1 -1
  388. package/lib/esm/render/webgl/glsl/Lighting.js.map +1 -1
  389. package/lib/esm/render/webgl/glsl/PointCloud.d.ts.map +1 -1
  390. package/lib/esm/render/webgl/glsl/PointCloud.js +51 -23
  391. package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
  392. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts +4 -2
  393. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  394. package/lib/esm/render/webgl/glsl/RealityMesh.js +4 -3
  395. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  396. package/lib/esm/render/webgl/glsl/Surface.js +1 -1
  397. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  398. package/lib/esm/tile/GltfReader.d.ts +9 -0
  399. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  400. package/lib/esm/tile/GltfReader.js +4 -1
  401. package/lib/esm/tile/GltfReader.js.map +1 -1
  402. package/lib/esm/tile/IModelTileRequestChannels.js +1 -1
  403. package/lib/esm/tile/IModelTileRequestChannels.js.map +1 -1
  404. package/lib/esm/tile/ImdlReader.d.ts +5 -0
  405. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  406. package/lib/esm/tile/ImdlReader.js +8 -2
  407. package/lib/esm/tile/ImdlReader.js.map +1 -1
  408. package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
  409. package/lib/esm/tile/OrbitGtTileTree.js +8 -2
  410. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  411. package/lib/esm/tile/PntsReader.d.ts.map +1 -1
  412. package/lib/esm/tile/PntsReader.js +8 -2
  413. package/lib/esm/tile/PntsReader.js.map +1 -1
  414. package/lib/esm/tile/PrimaryTileTree.js +2 -2
  415. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  416. package/lib/esm/tile/RealityModelTileTree.d.ts +4 -1
  417. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  418. package/lib/esm/tile/RealityModelTileTree.js +59 -20
  419. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  420. package/lib/esm/tile/RealityTile.d.ts +2 -2
  421. package/lib/esm/tile/RealityTile.d.ts.map +1 -1
  422. package/lib/esm/tile/RealityTile.js +8 -1
  423. package/lib/esm/tile/RealityTile.js.map +1 -1
  424. package/lib/esm/tile/RealityTileLoader.d.ts +1 -0
  425. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  426. package/lib/esm/tile/RealityTileLoader.js +14 -1
  427. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  428. package/lib/esm/tile/RealityTileTree.js +1 -1
  429. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  430. package/lib/esm/tile/TileAdmin.d.ts +1 -0
  431. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  432. package/lib/esm/tile/TileAdmin.js +29 -15
  433. package/lib/esm/tile/TileAdmin.js.map +1 -1
  434. package/lib/esm/tile/TileDrawArgs.d.ts +5 -1
  435. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  436. package/lib/esm/tile/TileDrawArgs.js +2 -0
  437. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  438. package/lib/esm/tile/TileRequestChannels.js +1 -1
  439. package/lib/esm/tile/TileRequestChannels.js.map +1 -1
  440. package/lib/esm/tile/TileStorage.d.ts.map +1 -1
  441. package/lib/esm/tile/TileStorage.js +12 -6
  442. package/lib/esm/tile/TileStorage.js.map +1 -1
  443. package/lib/esm/tile/internal.d.ts +1 -0
  444. package/lib/esm/tile/internal.d.ts.map +1 -1
  445. package/lib/esm/tile/internal.js +1 -0
  446. package/lib/esm/tile/internal.js.map +1 -1
  447. package/lib/esm/tile/map/ArcGISTileMap.d.ts +5 -2
  448. package/lib/esm/tile/map/ArcGISTileMap.d.ts.map +1 -1
  449. package/lib/esm/tile/map/ArcGISTileMap.js +18 -3
  450. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
  451. package/lib/esm/tile/map/ArcGisUtilities.d.ts +50 -5
  452. package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
  453. package/lib/esm/tile/map/ArcGisUtilities.js +120 -49
  454. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  455. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts +26 -0
  456. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -0
  457. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +93 -0
  458. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -0
  459. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -4
  460. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  461. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +10 -95
  462. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  463. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  464. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +2 -1
  465. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  466. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +18 -4
  467. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  468. package/lib/esm/tile/map/MapLayerFormatRegistry.js +26 -6
  469. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  470. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts +6 -4
  471. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  472. package/lib/esm/tile/map/MapLayerImageryFormats.js +12 -16
  473. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  474. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +26 -5
  475. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  476. package/lib/esm/tile/map/MapLayerImageryProvider.js +70 -49
  477. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  478. package/lib/esm/tile/map/MapLayerSources.js +1 -1
  479. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  480. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  481. package/lib/esm/tile/map/MapTileTree.js +10 -7
  482. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  483. package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
  484. package/lib/esm/tile/map/WmsCapabilities.js +4 -1
  485. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  486. package/lib/esm/tools/EditManipulator.d.ts.map +1 -1
  487. package/lib/esm/tools/EditManipulator.js +2 -1
  488. package/lib/esm/tools/EditManipulator.js.map +1 -1
  489. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  490. package/lib/esm/tools/ToolAdmin.js +6 -4
  491. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  492. package/lib/esm/webgl.d.ts +1 -0
  493. package/lib/esm/webgl.d.ts.map +1 -1
  494. package/lib/esm/webgl.js +1 -0
  495. package/lib/esm/webgl.js.map +1 -1
  496. package/package.json +22 -20
@@ -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 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 \"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 \"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 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 1 guarantees a minimum of 8 vertex texture units, and iOS provides no more than that.\r\n * WebGL 2 guarantees a minimum of 15 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, // Last one guaranteed available for WebGL 1\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 3 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\r\n // If more than 8 texture units are available, 3 additional background or overlay map layers.\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 - used only if WebGL 2 is available.\r\n EdgeLUT = WebGLRenderingContext.TEXTURE12,\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 NoFaceFront,\r\n HasMaterialAtlas,\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 NoFaceFront = 1 << SurfaceBitIndex.NoFaceFront,\r\n HasMaterialAtlas = 1 << SurfaceBitIndex.HasMaterialAtlas,\r\n}\r\n\r\n/** @internal */\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/** @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":"AAAA;;;+FAG+F;AAC/F;;GAEG;AACH,yCAAyC;AAyEzC,gBAAgB;AAChB,MAAM,KAAW,IAAI,CAqDpB;AArDD,WAAiB,IAAI;IACnB,iEAAiE;IACjE,SAAgB,YAAY,CAAC,IAAgB;QAC3C,QAAQ,IAAI,EAAE;YACZ,KAAK,QAAQ,CAAC,CAAC,uBAAyB;YACxC,KAAK,QAAQ,CAAC,CAAC,6BAAgC;YAC/C,KAAK,eAAe,CAAC,CAAC,4BAA+B;YACrD,KAAK,eAAe,CAAC,CAAC,4BAA+B;YACrD,KAAK,aAAa,CAAC,CAAC,2BAA8B;YAClD,KAAK,cAAc,CAAC,CAAC,4BAA8B;YACnD,KAAK,gBAAgB,CAAC,CAAC,8BAAiC;YACxD,KAAK,MAAM,CAAC,CAAC,sBAAuB;SACrC;IACH,CAAC;IAXe,iBAAY,eAW3B,CAAA;IAED;;OAEG;IACH,SAAgB,kBAAkB,CAAC,IAAU;QAC3C,QAAQ,IAAI,EAAE;YACZ,KAAK,aAAa,CAAC;YACnB,KAAK,oBAAoB,CAAC;YAC1B,KAAK,2BAA2B;gBAC9B,OAAO,IAAI,CAAC;YACd;gBACE,OAAO,KAAK,CAAC;SAChB;IACH,CAAC;IATe,uBAAkB,qBASjC,CAAA;IAED;;OAEG;IACH,SAAgB,aAAa,CAAC,IAAU;QACtC,QAAQ,IAAI,EAAE;YACZ,KAAK,oBAAoB,CAAC;YAC1B,KAAK,2BAA2B,CAAC;YACjC,KAAK,QAAQ,CAAC;YACd,KAAK,eAAe,CAAC;YACrB,KAAK,eAAe;gBAClB,OAAO,IAAI,CAAC;YACd;gBACE,OAAO,KAAK,CAAC;SAChB;IACH,CAAC;IAXe,kBAAa,gBAW5B,CAAA;IAED,uHAAuH;IACvH,SAAgB,2BAA2B,CAAC,IAAU;QACpD,OAAO,oBAAoB,KAAK,IAAI,IAAI,2BAA2B,KAAK,IAAI,CAAC;IAC/E,CAAC;IAFe,gCAA2B,8BAE1C,CAAA;IAED,SAAgB,YAAY,CAAC,IAAgB;QAC3C,OAAO,oBAAoB,KAAK,IAAI,CAAC,CAAC,uBAA0B,CAAC,qBAAwB,CAAC;IAC5F,CAAC;IAFe,iBAAY,eAE3B,CAAA;AACH,CAAC,EArDgB,IAAI,KAAJ,IAAI,QAqDpB;AAED;;;;GAIG;AACH,MAAM,CAAN,IAAY,WA4CX;AA5CD,WAAY,WAAW;IACrB,6DAA6D;IAC7D,kCAAO,qBAAqB,CAAC,QAAQ,UAAA,CAAA;IACrC,iCAAM,qBAAqB,CAAC,QAAQ,SAAA,CAAA;IACpC,iCAAM,qBAAqB,CAAC,QAAQ,SAAA,CAAA;IACpC,mCAAQ,qBAAqB,CAAC,QAAQ,WAAA,CAAA;IACtC,kCAAO,qBAAqB,CAAC,QAAQ,UAAA,CAAA;IACrC,kCAAO,qBAAqB,CAAC,QAAQ,UAAA,CAAA;IACrC,iCAAM,qBAAqB,CAAC,QAAQ,SAAA,CAAA;IACpC,mCAAQ,qBAAqB,CAAC,QAAQ,WAAA,CAAA;IAEtC,wCAAa,YAAA,IAAI,gBAAA,CAAA;IACjB,8CAAmB,YAAA,GAAG,sBAAA,CAAA;IACtB,4CAAiB,YAAA,GAAG,oBAAA,CAAA;IACpB,sCAAW,YAAA,GAAG,cAAA,CAAA;IAEd,2CAAgB,YAAA,KAAK,mBAAA,CAAA;IACrB,+CAAoB,YAAA,IAAI,uBAAA,CAAA;IAExB,uCAAY,YAAA,IAAI,eAAA,CAAA;IAEhB,6HAA6H;IAC7H,2CAAgB,YAAA,GAAG,mBAAA,CAAA;IACnB,kDAAuB,YAAA,GAAG,0BAAA,CAAA;IAC1B,wDAA6B,YAAA,GAAG,gCAAA,CAAA;IAEhC,yGAAyG;IACzG,uCAAY,YAAA,KAAK,eAAA,CAAA;IACjB,6CAAkB,YAAA,KAAK,qBAAA,CAAA;IAEvB,8DAA8D;IAC9D,0CAAe,YAAA,GAAG,kBAAA,CAAA;IAClB,0CAAe,YAAA,SAAS,kBAAA,CAAA;IACxB,0CAAe,YAAA,SAAS,kBAAA,CAAA;IAExB,6FAA6F;IAC7F,0CAAe,qBAAqB,CAAC,QAAQ,kBAAA,CAAA;IAC7C,0CAAe,qBAAqB,CAAC,QAAQ,kBAAA,CAAA;IAC7C,0CAAe,qBAAqB,CAAC,SAAS,kBAAA,CAAA;IAE9C,yDAA8B,qBAAqB,CAAC,SAAS,iCAAA,CAAA;IAE7D,sEAAsE;IACtE,qCAAU,qBAAqB,CAAC,SAAS,aAAA,CAAA;AAC3C,CAAC,EA5CW,WAAW,KAAX,WAAW,QA4CtB;AAgCD,gBAAgB;AAChB,MAAM,UAAU,QAAQ,CAAC,KAAkB;IACzC,OAAO,KAAK,qBAAyB,CAAC;AACxC,CAAC","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 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 \"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 \"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 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 1 guarantees a minimum of 8 vertex texture units, and iOS provides no more than that.\r\n * WebGL 2 guarantees a minimum of 15 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, // Last one guaranteed available for WebGL 1\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 3 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\r\n // If more than 8 texture units are available, 3 additional background or overlay map layers.\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 - used only if WebGL 2 is available.\r\n EdgeLUT = WebGLRenderingContext.TEXTURE12,\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 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"]}
@@ -40,7 +40,6 @@ export declare class SurfaceGeometry extends MeshGeometry {
40
40
  get techniqueId(): TechniqueId;
41
41
  get isLitSurface(): boolean;
42
42
  get hasBakedLighting(): boolean;
43
- get hasFixedNormals(): boolean;
44
43
  get renderOrder(): RenderOrder;
45
44
  getColor(target: Target): import("./ColorInfo").ColorInfo;
46
45
  getPass(target: Target): Pass;
@@ -1 +1 @@
1
- {"version":3,"file":"SurfaceGeometry.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/SurfaceGeometry.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAA8C,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE3F,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAkC,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,WAAW,EAA+B,MAAM,eAAe,CAAC;AAE/E,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,gBAAgB;AAChB,wBAAgB,aAAa,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAEpD;AAMD,gBAAgB;AAChB,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IAExC,IAAW,UAAU,qBAA4B;WAEnC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,GAAG,eAAe,GAAG,SAAS;IAKzF,IAAW,UAAU,IAAI,OAAO,CAG/B;IAEM,OAAO;IAKP,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAI9D,IAAW,KAAK,YAAmG;IACnH,IAAW,cAAc,YAAwG;IACjI,IAAW,UAAU,YAAgE;IACrF,IAAW,OAAO,YAAgC;IAClD,IAAoB,uBAAuB,YAA2B;IACtE,IAAW,aAAa,YAAuE;IAC/F,IAAW,YAAY,YAAgE;IACvF,IAAoB,uBAAuB,YAE1C;IAED,IAAoB,kBAAkB,YAKrC;IAED,IAAoB,SAAS,SAAmB;IAChD,IAAoB,MAAM,cAAwB;IAClD,IAAoB,YAAY,cAAwB;IAExD,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,wBAAwB,CAAC,EAAE,gBAAgB,GAAG,IAAI;IAmBxE,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAK/D,IAAW,WAAW,IAAI,WAAW,CAAgC;IACrE,IAAoB,YAAY,YAAyB;IACzD,IAAoB,gBAAgB,YAAyC;IAC7E,IAAoB,eAAe,YAAwC;IAC3E,IAAW,WAAW,IAAI,WAAW,CASpC;IAEe,QAAQ,CAAC,MAAM,EAAE,MAAM;IAOvB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAwD7C,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAmBnD,IAAoB,YAAY,IAAI,YAAY,GAAG,SAAS,CAAmC;IAExF,UAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO;IAIhD,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAyDhF,OAAO;IASP,OAAO,CAAC,YAAY;CA0BrB"}
1
+ {"version":3,"file":"SurfaceGeometry.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/SurfaceGeometry.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAA8C,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE3F,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAkC,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,WAAW,EAA+B,MAAM,eAAe,CAAC;AAE/E,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,gBAAgB;AAChB,wBAAgB,aAAa,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAEpD;AAMD,gBAAgB;AAChB,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IAExC,IAAW,UAAU,qBAA4B;WAEnC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,GAAG,eAAe,GAAG,SAAS;IAKzF,IAAW,UAAU,IAAI,OAAO,CAG/B;IAEM,OAAO;IAKP,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAI9D,IAAW,KAAK,YAAmG;IACnH,IAAW,cAAc,YAAwG;IACjI,IAAW,UAAU,YAAgE;IACrF,IAAW,OAAO,YAAgC;IAClD,IAAoB,uBAAuB,YAA2B;IACtE,IAAW,aAAa,YAAuE;IAC/F,IAAW,YAAY,YAAgE;IACvF,IAAoB,uBAAuB,YAE1C;IAED,IAAoB,kBAAkB,YAKrC;IAED,IAAoB,SAAS,SAAmB;IAChD,IAAoB,MAAM,cAAwB;IAClD,IAAoB,YAAY,cAAwB;IAExD,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,wBAAwB,CAAC,EAAE,gBAAgB,GAAG,IAAI;IAmBxE,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAK/D,IAAW,WAAW,IAAI,WAAW,CAAgC;IACrE,IAAoB,YAAY,YAAyB;IACzD,IAAoB,gBAAgB,YAAyC;IAC7E,IAAW,WAAW,IAAI,WAAW,CASpC;IAEe,QAAQ,CAAC,MAAM,EAAE,MAAM;IAOvB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAwD7C,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAmBnD,IAAoB,YAAY,IAAI,YAAY,GAAG,SAAS,CAAmC;IAExF,UAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO;IAIhD,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAsDhF,OAAO;IASP,OAAO,CAAC,YAAY;CA0BrB"}
@@ -87,7 +87,6 @@ export class SurfaceGeometry extends MeshGeometry {
87
87
  get techniqueId() { return 0 /* Surface */; }
88
88
  get isLitSurface() { return this.isLit; }
89
89
  get hasBakedLighting() { return this.mesh.hasBakedLighting; }
90
- get hasFixedNormals() { return this.mesh.hasFixedNormals; }
91
90
  get renderOrder() {
92
91
  if (FillFlags.Behind === (this.fillFlags & FillFlags.Behind))
93
92
  return 2 /* BlankingRegion */;
@@ -173,15 +172,12 @@ export class SurfaceGeometry extends MeshGeometry {
173
172
  flags[3 /* IgnoreMaterial */] = useMaterial ? 0 : 1;
174
173
  flags[9 /* HasMaterialAtlas */] = useMaterial && this.hasMaterialAtlas ? 1 : 0;
175
174
  flags[1 /* ApplyLighting */] = 0;
176
- flags[8 /* NoFaceFront */] = 0;
175
+ flags[8 /* HasNormalMap */] = 0;
177
176
  flags[6 /* HasColorAndNormal */] = 0;
178
177
  if (this.isLit) {
179
178
  flags[2 /* HasNormals */] = 1;
180
- if (wantLighting(vf)) {
179
+ if (wantLighting(vf))
181
180
  flags[1 /* ApplyLighting */] = 1;
182
- if (this.hasFixedNormals)
183
- flags[8 /* NoFaceFront */] = 1;
184
- }
185
181
  // Textured meshes store normal in place of color index.
186
182
  // Untextured lit meshes store normal where textured meshes would store UV coords.
187
183
  // Tell shader where to find normal.
@@ -1 +1 @@
1
- {"version":3,"file":"SurfaceGeometry.js","sourceRoot":"","sources":["../../../../src/render/webgl/SurfaceGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { FillFlags, RenderMode, TextureTransparency, ViewFlags } from \"@itwin/core-common\";\r\nimport { SurfaceType } from \"../primitives/SurfaceParams\";\r\nimport { VertexIndices } from \"../primitives/VertexTable\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { ShaderProgramParams } from \"./DrawCommand\";\r\nimport { GL } from \"./GL\";\r\nimport { BufferHandle, BufferParameters, BuffersContainer } from \"./AttributeBuffers\";\r\nimport { MaterialInfo } from \"./Material\";\r\nimport { Pass, RenderOrder, RenderPass, SurfaceBitIndex } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { MeshData } from \"./MeshData\";\r\nimport { MeshGeometry } from \"./MeshGeometry\";\r\n\r\n/** @internal */\r\nexport function wantMaterials(vf: ViewFlags): boolean {\r\n return vf.materials && RenderMode.SmoothShade === vf.renderMode;\r\n}\r\n\r\nfunction wantLighting(vf: ViewFlags) {\r\n return RenderMode.SmoothShade === vf.renderMode && vf.lighting;\r\n}\r\n\r\n/** @internal */\r\nexport class SurfaceGeometry extends MeshGeometry {\r\n private readonly _buffers: BuffersContainer;\r\n private readonly _indices: BufferHandle;\r\n\r\n public get lutBuffers() { return this._buffers; }\r\n\r\n public static create(mesh: MeshData, indices: VertexIndices): SurfaceGeometry | undefined {\r\n const indexBuffer = BufferHandle.createArrayBuffer(indices.data);\r\n return undefined !== indexBuffer ? new SurfaceGeometry(indexBuffer, indices.length, mesh) : undefined;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._buffers.isDisposed\r\n && this._indices.isDisposed;\r\n }\r\n\r\n public dispose() {\r\n dispose(this._buffers);\r\n dispose(this._indices);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n stats.addSurface(this._indices.bytesUsed);\r\n }\r\n\r\n public get isLit() { return SurfaceType.Lit === this.surfaceType || SurfaceType.TexturedLit === this.surfaceType; }\r\n public get isTexturedType() { return SurfaceType.Textured === this.surfaceType || SurfaceType.TexturedLit === this.surfaceType; }\r\n public get hasTexture() { return this.isTexturedType && undefined !== this.texture; }\r\n public get isGlyph() { return this.mesh.isGlyph; }\r\n public override get alwaysRenderTranslucent() { return this.isGlyph; }\r\n public get isTileSection() { return undefined !== this.texture && this.texture.isTileSection; }\r\n public get isClassifier() { return SurfaceType.VolumeClassifier === this.surfaceType; }\r\n public override get supportsThematicDisplay() {\r\n return !this.isGlyph;\r\n }\r\n\r\n public override get allowColorOverride() {\r\n // Text background color should not be overridden by feature symbology overrides - otherwise it becomes unreadable...\r\n // We don't actually know if we have text.\r\n // We do know that text background color uses blanking fill. So do ImageGraphics, so they're also going to forbid overriding their color.\r\n return FillFlags.Blanking !== (this.fillFlags & FillFlags.Blanking);\r\n }\r\n\r\n public override get asSurface() { return this; }\r\n public override get asEdge() { return undefined; }\r\n public override get asSilhouette() { return undefined; }\r\n\r\n protected _draw(numInstances: number, instanceBuffersContainer?: BuffersContainer): void {\r\n const system = System.instance;\r\n\r\n // If we can't write depth in the fragment shader, use polygonOffset to force blanking regions to draw behind.\r\n const offset = RenderOrder.BlankingRegion === this.renderOrder && !system.supportsLogZBuffer;\r\n if (offset) {\r\n system.context.enable(GL.POLYGON_OFFSET_FILL);\r\n system.context.polygonOffset(1.0, 1.0);\r\n }\r\n\r\n const bufs = instanceBuffersContainer !== undefined ? instanceBuffersContainer : this._buffers;\r\n bufs.bind();\r\n system.drawArrays(GL.PrimitiveType.Triangles, 0, this._numIndices, numInstances);\r\n bufs.unbind();\r\n\r\n if (offset)\r\n system.context.disable(GL.POLYGON_OFFSET_FILL);\r\n }\r\n\r\n public override wantMixMonochromeColor(target: Target): boolean {\r\n // Text relies on white-on-white reversal.\r\n return !this.isGlyph && (this.isLitSurface || this.wantTextures(target, this.hasTexture));\r\n }\r\n\r\n public get techniqueId(): TechniqueId { return TechniqueId.Surface; }\r\n public override get isLitSurface() { return this.isLit; }\r\n public override get hasBakedLighting() { return this.mesh.hasBakedLighting; }\r\n public override get hasFixedNormals() { return this.mesh.hasFixedNormals; }\r\n public get renderOrder(): RenderOrder {\r\n if (FillFlags.Behind === (this.fillFlags & FillFlags.Behind))\r\n return RenderOrder.BlankingRegion;\r\n\r\n let order = this.isLit ? RenderOrder.LitSurface : RenderOrder.UnlitSurface;\r\n if (this.isPlanar)\r\n order = order | RenderOrder.PlanarBit;\r\n\r\n return order;\r\n }\r\n\r\n public override getColor(target: Target) {\r\n if (FillFlags.Background === (this.fillFlags & FillFlags.Background))\r\n return target.uniforms.style.backgroundColorInfo;\r\n else\r\n return this.colorInfo;\r\n }\r\n\r\n public override getPass(target: Target): Pass {\r\n // Classifiers have a dedicated pass\r\n if (this.isClassifier)\r\n return \"classification\";\r\n\r\n let opaquePass: Pass = this.isPlanar ? \"opaque-planar\" : \"opaque\";\r\n\r\n // When reading pixels, glyphs are always opaque. Otherwise always transparent (for anti-aliasing).\r\n if (this.isGlyph)\r\n return target.isReadPixelsInProgress ? opaquePass : \"translucent\";\r\n\r\n const vf = target.currentViewFlags;\r\n\r\n // When rendering thematic isolines, we need translucency because they have anti-aliasing.\r\n if (target.wantThematicDisplay && this.supportsThematicDisplay && target.uniforms.thematic.wantIsoLines)\r\n return \"translucent\";\r\n\r\n // In wireframe, unless fill is explicitly enabled for planar region, surface does not draw\r\n if (RenderMode.Wireframe === vf.renderMode && !this.mesh.isTextureAlwaysDisplayed) {\r\n const fillFlags = this.fillFlags;\r\n const showFill = FillFlags.Always === (fillFlags & FillFlags.Always) || (vf.fill && FillFlags.ByView === (fillFlags & FillFlags.ByView));\r\n if (!showFill)\r\n return \"none\";\r\n }\r\n\r\n // If transparency disabled by render mode or view flag, always draw opaque.\r\n if (!vf.transparency || RenderMode.SolidFill === vf.renderMode || RenderMode.HiddenLine === vf.renderMode)\r\n return opaquePass;\r\n\r\n // We have 3 sources of alpha: the material, the texture, and the color.\r\n // Base alpha comes from the material if it overrides it; otherwise from the color.\r\n // The texture's alpha is multiplied by the base alpha.\r\n // So we must draw in the translucent pass if the texture has transparency OR the base alpha is less than 1.\r\n let hasAlpha = false;\r\n const mat = wantMaterials(vf) ? this.mesh.materialInfo : undefined;\r\n if (undefined !== mat && mat.overridesAlpha)\r\n hasAlpha = mat.hasTranslucency;\r\n else\r\n hasAlpha = this.getColor(target).hasTranslucency;\r\n\r\n if (!hasAlpha) {\r\n // ###TODO handle TextureTransparency.Mixed; remove Texture.hasTranslucency.\r\n const tex = this.wantTextures(target, true) ? this.texture : undefined;\r\n switch (tex?.transparency) {\r\n case TextureTransparency.Translucent:\r\n hasAlpha = true;\r\n break;\r\n case TextureTransparency.Mixed:\r\n opaquePass = `${opaquePass}-translucent`;\r\n break;\r\n }\r\n }\r\n\r\n return hasAlpha ? \"translucent\" : opaquePass;\r\n }\r\n\r\n protected _wantWoWReversal(target: Target): boolean {\r\n const fillFlags = this.fillFlags;\r\n if (FillFlags.None !== (fillFlags & FillFlags.Background))\r\n return false; // fill color explicitly from background\r\n\r\n if (FillFlags.None !== (fillFlags & FillFlags.Always))\r\n return true; // fill displayed even in wireframe\r\n\r\n const vf = target.currentViewFlags;\r\n if (RenderMode.Wireframe === vf.renderMode || vf.visibleEdges)\r\n return false; // never invert surfaces when edges are displayed\r\n\r\n if (this.isLit && wantLighting(vf))\r\n return false;\r\n\r\n // Don't invert white pixels of textures...\r\n return !this.wantTextures(target, this.hasTexture);\r\n }\r\n\r\n public override get materialInfo(): MaterialInfo | undefined { return this.mesh.materialInfo; }\r\n\r\n public useTexture(params: ShaderProgramParams): boolean {\r\n return this.wantTextures(params.target, this.hasTexture);\r\n }\r\n\r\n public computeSurfaceFlags(params: ShaderProgramParams, flags: Int32Array): void {\r\n const target = params.target;\r\n const vf = target.currentViewFlags;\r\n\r\n const useMaterial = wantMaterials(vf);\r\n flags[SurfaceBitIndex.IgnoreMaterial] = useMaterial ? 0 : 1;\r\n flags[SurfaceBitIndex.HasMaterialAtlas] = useMaterial && this.hasMaterialAtlas ? 1 : 0;\r\n\r\n flags[SurfaceBitIndex.ApplyLighting] = 0;\r\n flags[SurfaceBitIndex.NoFaceFront] = 0;\r\n flags[SurfaceBitIndex.HasColorAndNormal] = 0;\r\n if (this.isLit) {\r\n flags[SurfaceBitIndex.HasNormals] = 1;\r\n if (wantLighting(vf)) {\r\n flags[SurfaceBitIndex.ApplyLighting] = 1;\r\n if (this.hasFixedNormals)\r\n flags[SurfaceBitIndex.NoFaceFront] = 1;\r\n }\r\n\r\n // Textured meshes store normal in place of color index.\r\n // Untextured lit meshes store normal where textured meshes would store UV coords.\r\n // Tell shader where to find normal.\r\n if (!this.isTexturedType) {\r\n flags[SurfaceBitIndex.HasColorAndNormal] = 1;\r\n }\r\n } else {\r\n flags[SurfaceBitIndex.HasNormals] = 0;\r\n }\r\n\r\n flags[SurfaceBitIndex.HasTexture] = this.useTexture(params) ? 1 : 0;\r\n\r\n // The transparency threshold controls how transparent a surface must be to allow light to pass through; more opaque surfaces cast shadows.\r\n flags[SurfaceBitIndex.TransparencyThreshold] = params.target.isDrawingShadowMap ? 1 : 0;\r\n flags[SurfaceBitIndex.BackgroundFill] = 0;\r\n switch (params.renderPass) {\r\n // NB: We need this for opaque pass due to SolidFill (must compute transparency, discard below threshold, render opaque at or above threshold)\r\n case RenderPass.OpaqueLinear:\r\n case RenderPass.OpaquePlanar:\r\n case RenderPass.OpaqueGeneral:\r\n case RenderPass.Translucent:\r\n case RenderPass.WorldOverlay:\r\n case RenderPass.OpaqueLayers:\r\n case RenderPass.TranslucentLayers:\r\n case RenderPass.OverlayLayers: {\r\n const mode = vf.renderMode;\r\n if (!this.isGlyph && (RenderMode.HiddenLine === mode || RenderMode.SolidFill === mode)) {\r\n flags[SurfaceBitIndex.TransparencyThreshold] = 1;\r\n if (RenderMode.HiddenLine === mode && FillFlags.Always !== (this.fillFlags & FillFlags.Always)) {\r\n // fill flags test for text - doesn't render with bg fill in hidden line mode.\r\n flags[SurfaceBitIndex.BackgroundFill] = 1;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private constructor(indices: BufferHandle, numIndices: number, mesh: MeshData) {\r\n super(mesh, numIndices);\r\n this._buffers = BuffersContainer.create();\r\n const attrPos = AttributeMap.findAttribute(\"a_pos\", TechniqueId.Surface, false);\r\n assert(undefined !== attrPos);\r\n this._buffers.addBuffer(indices, [BufferParameters.create(attrPos.location, 3, GL.DataType.UnsignedByte, false, 0, 0, false)]);\r\n this._indices = indices;\r\n }\r\n\r\n private wantTextures(target: Target, surfaceTextureExists: boolean): boolean {\r\n if (this.hasScalarAnimation && undefined !== target.analysisTexture)\r\n return true;\r\n\r\n if (!surfaceTextureExists)\r\n return false;\r\n\r\n if (this.mesh.isTextureAlwaysDisplayed)\r\n return true;\r\n\r\n if (this.supportsThematicDisplay && target.wantThematicDisplay)\r\n return false;\r\n\r\n const fill = this.fillFlags;\r\n const flags = target.currentViewFlags;\r\n\r\n // ###TODO need to distinguish between gradient fill and actual textures...\r\n switch (flags.renderMode) {\r\n case RenderMode.SmoothShade:\r\n return flags.textures;\r\n case RenderMode.Wireframe:\r\n return FillFlags.Always === (fill & FillFlags.Always) || (flags.fill && FillFlags.ByView === (fill & FillFlags.ByView));\r\n default:\r\n return FillFlags.Always === (fill & FillFlags.Always);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"SurfaceGeometry.js","sourceRoot":"","sources":["../../../../src/render/webgl/SurfaceGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { FillFlags, RenderMode, TextureTransparency, ViewFlags } from \"@itwin/core-common\";\r\nimport { SurfaceType } from \"../primitives/SurfaceParams\";\r\nimport { VertexIndices } from \"../primitives/VertexTable\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { ShaderProgramParams } from \"./DrawCommand\";\r\nimport { GL } from \"./GL\";\r\nimport { BufferHandle, BufferParameters, BuffersContainer } from \"./AttributeBuffers\";\r\nimport { MaterialInfo } from \"./Material\";\r\nimport { Pass, RenderOrder, RenderPass, SurfaceBitIndex } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { MeshData } from \"./MeshData\";\r\nimport { MeshGeometry } from \"./MeshGeometry\";\r\n\r\n/** @internal */\r\nexport function wantMaterials(vf: ViewFlags): boolean {\r\n return vf.materials && RenderMode.SmoothShade === vf.renderMode;\r\n}\r\n\r\nfunction wantLighting(vf: ViewFlags) {\r\n return RenderMode.SmoothShade === vf.renderMode && vf.lighting;\r\n}\r\n\r\n/** @internal */\r\nexport class SurfaceGeometry extends MeshGeometry {\r\n private readonly _buffers: BuffersContainer;\r\n private readonly _indices: BufferHandle;\r\n\r\n public get lutBuffers() { return this._buffers; }\r\n\r\n public static create(mesh: MeshData, indices: VertexIndices): SurfaceGeometry | undefined {\r\n const indexBuffer = BufferHandle.createArrayBuffer(indices.data);\r\n return undefined !== indexBuffer ? new SurfaceGeometry(indexBuffer, indices.length, mesh) : undefined;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._buffers.isDisposed\r\n && this._indices.isDisposed;\r\n }\r\n\r\n public dispose() {\r\n dispose(this._buffers);\r\n dispose(this._indices);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n stats.addSurface(this._indices.bytesUsed);\r\n }\r\n\r\n public get isLit() { return SurfaceType.Lit === this.surfaceType || SurfaceType.TexturedLit === this.surfaceType; }\r\n public get isTexturedType() { return SurfaceType.Textured === this.surfaceType || SurfaceType.TexturedLit === this.surfaceType; }\r\n public get hasTexture() { return this.isTexturedType && undefined !== this.texture; }\r\n public get isGlyph() { return this.mesh.isGlyph; }\r\n public override get alwaysRenderTranslucent() { return this.isGlyph; }\r\n public get isTileSection() { return undefined !== this.texture && this.texture.isTileSection; }\r\n public get isClassifier() { return SurfaceType.VolumeClassifier === this.surfaceType; }\r\n public override get supportsThematicDisplay() {\r\n return !this.isGlyph;\r\n }\r\n\r\n public override get allowColorOverride() {\r\n // Text background color should not be overridden by feature symbology overrides - otherwise it becomes unreadable...\r\n // We don't actually know if we have text.\r\n // We do know that text background color uses blanking fill. So do ImageGraphics, so they're also going to forbid overriding their color.\r\n return FillFlags.Blanking !== (this.fillFlags & FillFlags.Blanking);\r\n }\r\n\r\n public override get asSurface() { return this; }\r\n public override get asEdge() { return undefined; }\r\n public override get asSilhouette() { return undefined; }\r\n\r\n protected _draw(numInstances: number, instanceBuffersContainer?: BuffersContainer): void {\r\n const system = System.instance;\r\n\r\n // If we can't write depth in the fragment shader, use polygonOffset to force blanking regions to draw behind.\r\n const offset = RenderOrder.BlankingRegion === this.renderOrder && !system.supportsLogZBuffer;\r\n if (offset) {\r\n system.context.enable(GL.POLYGON_OFFSET_FILL);\r\n system.context.polygonOffset(1.0, 1.0);\r\n }\r\n\r\n const bufs = instanceBuffersContainer !== undefined ? instanceBuffersContainer : this._buffers;\r\n bufs.bind();\r\n system.drawArrays(GL.PrimitiveType.Triangles, 0, this._numIndices, numInstances);\r\n bufs.unbind();\r\n\r\n if (offset)\r\n system.context.disable(GL.POLYGON_OFFSET_FILL);\r\n }\r\n\r\n public override wantMixMonochromeColor(target: Target): boolean {\r\n // Text relies on white-on-white reversal.\r\n return !this.isGlyph && (this.isLitSurface || this.wantTextures(target, this.hasTexture));\r\n }\r\n\r\n public get techniqueId(): TechniqueId { return TechniqueId.Surface; }\r\n public override get isLitSurface() { return this.isLit; }\r\n public override get hasBakedLighting() { return this.mesh.hasBakedLighting; }\r\n public get renderOrder(): RenderOrder {\r\n if (FillFlags.Behind === (this.fillFlags & FillFlags.Behind))\r\n return RenderOrder.BlankingRegion;\r\n\r\n let order = this.isLit ? RenderOrder.LitSurface : RenderOrder.UnlitSurface;\r\n if (this.isPlanar)\r\n order = order | RenderOrder.PlanarBit;\r\n\r\n return order;\r\n }\r\n\r\n public override getColor(target: Target) {\r\n if (FillFlags.Background === (this.fillFlags & FillFlags.Background))\r\n return target.uniforms.style.backgroundColorInfo;\r\n else\r\n return this.colorInfo;\r\n }\r\n\r\n public override getPass(target: Target): Pass {\r\n // Classifiers have a dedicated pass\r\n if (this.isClassifier)\r\n return \"classification\";\r\n\r\n let opaquePass: Pass = this.isPlanar ? \"opaque-planar\" : \"opaque\";\r\n\r\n // When reading pixels, glyphs are always opaque. Otherwise always transparent (for anti-aliasing).\r\n if (this.isGlyph)\r\n return target.isReadPixelsInProgress ? opaquePass : \"translucent\";\r\n\r\n const vf = target.currentViewFlags;\r\n\r\n // When rendering thematic isolines, we need translucency because they have anti-aliasing.\r\n if (target.wantThematicDisplay && this.supportsThematicDisplay && target.uniforms.thematic.wantIsoLines)\r\n return \"translucent\";\r\n\r\n // In wireframe, unless fill is explicitly enabled for planar region, surface does not draw\r\n if (RenderMode.Wireframe === vf.renderMode && !this.mesh.isTextureAlwaysDisplayed) {\r\n const fillFlags = this.fillFlags;\r\n const showFill = FillFlags.Always === (fillFlags & FillFlags.Always) || (vf.fill && FillFlags.ByView === (fillFlags & FillFlags.ByView));\r\n if (!showFill)\r\n return \"none\";\r\n }\r\n\r\n // If transparency disabled by render mode or view flag, always draw opaque.\r\n if (!vf.transparency || RenderMode.SolidFill === vf.renderMode || RenderMode.HiddenLine === vf.renderMode)\r\n return opaquePass;\r\n\r\n // We have 3 sources of alpha: the material, the texture, and the color.\r\n // Base alpha comes from the material if it overrides it; otherwise from the color.\r\n // The texture's alpha is multiplied by the base alpha.\r\n // So we must draw in the translucent pass if the texture has transparency OR the base alpha is less than 1.\r\n let hasAlpha = false;\r\n const mat = wantMaterials(vf) ? this.mesh.materialInfo : undefined;\r\n if (undefined !== mat && mat.overridesAlpha)\r\n hasAlpha = mat.hasTranslucency;\r\n else\r\n hasAlpha = this.getColor(target).hasTranslucency;\r\n\r\n if (!hasAlpha) {\r\n // ###TODO handle TextureTransparency.Mixed; remove Texture.hasTranslucency.\r\n const tex = this.wantTextures(target, true) ? this.texture : undefined;\r\n switch (tex?.transparency) {\r\n case TextureTransparency.Translucent:\r\n hasAlpha = true;\r\n break;\r\n case TextureTransparency.Mixed:\r\n opaquePass = `${opaquePass}-translucent`;\r\n break;\r\n }\r\n }\r\n\r\n return hasAlpha ? \"translucent\" : opaquePass;\r\n }\r\n\r\n protected _wantWoWReversal(target: Target): boolean {\r\n const fillFlags = this.fillFlags;\r\n if (FillFlags.None !== (fillFlags & FillFlags.Background))\r\n return false; // fill color explicitly from background\r\n\r\n if (FillFlags.None !== (fillFlags & FillFlags.Always))\r\n return true; // fill displayed even in wireframe\r\n\r\n const vf = target.currentViewFlags;\r\n if (RenderMode.Wireframe === vf.renderMode || vf.visibleEdges)\r\n return false; // never invert surfaces when edges are displayed\r\n\r\n if (this.isLit && wantLighting(vf))\r\n return false;\r\n\r\n // Don't invert white pixels of textures...\r\n return !this.wantTextures(target, this.hasTexture);\r\n }\r\n\r\n public override get materialInfo(): MaterialInfo | undefined { return this.mesh.materialInfo; }\r\n\r\n public useTexture(params: ShaderProgramParams): boolean {\r\n return this.wantTextures(params.target, this.hasTexture);\r\n }\r\n\r\n public computeSurfaceFlags(params: ShaderProgramParams, flags: Int32Array): void {\r\n const target = params.target;\r\n const vf = target.currentViewFlags;\r\n\r\n const useMaterial = wantMaterials(vf);\r\n flags[SurfaceBitIndex.IgnoreMaterial] = useMaterial ? 0 : 1;\r\n flags[SurfaceBitIndex.HasMaterialAtlas] = useMaterial && this.hasMaterialAtlas ? 1 : 0;\r\n\r\n flags[SurfaceBitIndex.ApplyLighting] = 0;\r\n flags[SurfaceBitIndex.HasNormalMap] = 0;\r\n flags[SurfaceBitIndex.HasColorAndNormal] = 0;\r\n if (this.isLit) {\r\n flags[SurfaceBitIndex.HasNormals] = 1;\r\n if (wantLighting(vf))\r\n flags[SurfaceBitIndex.ApplyLighting] = 1;\r\n\r\n // Textured meshes store normal in place of color index.\r\n // Untextured lit meshes store normal where textured meshes would store UV coords.\r\n // Tell shader where to find normal.\r\n if (!this.isTexturedType) {\r\n flags[SurfaceBitIndex.HasColorAndNormal] = 1;\r\n }\r\n } else {\r\n flags[SurfaceBitIndex.HasNormals] = 0;\r\n }\r\n\r\n flags[SurfaceBitIndex.HasTexture] = this.useTexture(params) ? 1 : 0;\r\n\r\n // The transparency threshold controls how transparent a surface must be to allow light to pass through; more opaque surfaces cast shadows.\r\n flags[SurfaceBitIndex.TransparencyThreshold] = params.target.isDrawingShadowMap ? 1 : 0;\r\n flags[SurfaceBitIndex.BackgroundFill] = 0;\r\n switch (params.renderPass) {\r\n // NB: We need this for opaque pass due to SolidFill (must compute transparency, discard below threshold, render opaque at or above threshold)\r\n case RenderPass.OpaqueLinear:\r\n case RenderPass.OpaquePlanar:\r\n case RenderPass.OpaqueGeneral:\r\n case RenderPass.Translucent:\r\n case RenderPass.WorldOverlay:\r\n case RenderPass.OpaqueLayers:\r\n case RenderPass.TranslucentLayers:\r\n case RenderPass.OverlayLayers: {\r\n const mode = vf.renderMode;\r\n if (!this.isGlyph && (RenderMode.HiddenLine === mode || RenderMode.SolidFill === mode)) {\r\n flags[SurfaceBitIndex.TransparencyThreshold] = 1;\r\n if (RenderMode.HiddenLine === mode && FillFlags.Always !== (this.fillFlags & FillFlags.Always)) {\r\n // fill flags test for text - doesn't render with bg fill in hidden line mode.\r\n flags[SurfaceBitIndex.BackgroundFill] = 1;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private constructor(indices: BufferHandle, numIndices: number, mesh: MeshData) {\r\n super(mesh, numIndices);\r\n this._buffers = BuffersContainer.create();\r\n const attrPos = AttributeMap.findAttribute(\"a_pos\", TechniqueId.Surface, false);\r\n assert(undefined !== attrPos);\r\n this._buffers.addBuffer(indices, [BufferParameters.create(attrPos.location, 3, GL.DataType.UnsignedByte, false, 0, 0, false)]);\r\n this._indices = indices;\r\n }\r\n\r\n private wantTextures(target: Target, surfaceTextureExists: boolean): boolean {\r\n if (this.hasScalarAnimation && undefined !== target.analysisTexture)\r\n return true;\r\n\r\n if (!surfaceTextureExists)\r\n return false;\r\n\r\n if (this.mesh.isTextureAlwaysDisplayed)\r\n return true;\r\n\r\n if (this.supportsThematicDisplay && target.wantThematicDisplay)\r\n return false;\r\n\r\n const fill = this.fillFlags;\r\n const flags = target.currentViewFlags;\r\n\r\n // ###TODO need to distinguish between gradient fill and actual textures...\r\n switch (flags.renderMode) {\r\n case RenderMode.SmoothShade:\r\n return flags.textures;\r\n case RenderMode.Wireframe:\r\n return FillFlags.Always === (fill & FillFlags.Always) || (flags.fill && FillFlags.ByView === (fill & FillFlags.ByView));\r\n default:\r\n return FillFlags.Always === (fill & FillFlags.Always);\r\n }\r\n }\r\n}\r\n"]}
@@ -185,7 +185,7 @@ export declare class System extends RenderSystem implements RenderSystemDebugCon
185
185
  /** Bind the specified texture to the specified unit. This *always* makes the texture *active* */
186
186
  activateTextureCubeMap(unit: TextureUnit, texture: TextureBinding): void;
187
187
  ensureSamplerBound(uniform: UniformHandle, unit: TextureUnit): void;
188
- get maxRealityImageryLayers(): 6 | 3;
188
+ get maxRealityImageryLayers(): 3 | 6;
189
189
  disposeTexture(texture: WebGLTexture): void;
190
190
  enableVertexAttribArray(id: number, instanced: boolean): void;
191
191
  updateVertexAttribArrays(): void;
@@ -15,6 +15,7 @@ import { StyleUniforms } from "./StyleUniforms";
15
15
  import { Target } from "./Target";
16
16
  import { ThematicUniforms } from "./ThematicUniforms";
17
17
  import { ViewRectUniforms } from "./ViewRectUniforms";
18
+ import { RealityModelUniforms } from "./RealityModelUniforms";
18
19
  /** Holds state for commonly-used uniforms to avoid unnecessary recomputation, owned by a Target.
19
20
  * DO NOT directly modify exposed members of the objects exposed by this class. Use their APIs.
20
21
  * e.g., code like `target.uniforms.frustum.projectionMatrix.setFrom(someOtherMatrix)` or `target.uniforms.branch.top.setViewFlags(blah)` will cause bugs.
@@ -30,6 +31,7 @@ export declare class TargetUniforms {
30
31
  readonly branch: BranchUniforms;
31
32
  readonly batch: BatchUniforms;
32
33
  readonly shadow: ShadowUniforms;
34
+ readonly realityModel: RealityModelUniforms;
33
35
  private readonly _pixelWidthFactor;
34
36
  private readonly _sunDirection;
35
37
  constructor(target: Target);
@@ -1 +1 @@
1
- {"version":3,"file":"TargetUniforms.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/TargetUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAY,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAsB,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAgGtD;;;;GAIG;AACH,qBAAa,cAAc;IACzB,SAAgB,OAAO,EAAE,eAAe,CAAC;IACzC,SAAgB,QAAQ,mBAA0B;IAClD,SAAgB,MAAM,iBAAwB;IAC9C,SAAgB,KAAK,gBAAuB;IAC5C,SAAgB,MAAM,mBAA0B;IAChD,SAAgB,QAAQ,mBAA0B;IAClD,SAAgB,MAAM,EAAE,cAAc,CAAC;IACvC,SAAgB,KAAK,EAAE,aAAa,CAAC;IACrC,SAAgB,MAAM,EAAE,cAAc,CAAC;IACvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA0B;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;gBAEjC,MAAM,EAAE,MAAM;IAO1B,mBAAmB,CAAC,aAAa,EAAE,OAAO,GAAG,QAAQ;IAIrD,qBAAqB,CAAC,aAAa,EAAE,OAAO,GAAG,OAAO;IAItD,oBAAoB,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI;IAO1E,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAIlD,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAI9C,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;CAehD"}
1
+ {"version":3,"file":"TargetUniforms.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/TargetUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAY,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAsB,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAgG9D;;;;GAIG;AACH,qBAAa,cAAc;IACzB,SAAgB,OAAO,EAAE,eAAe,CAAC;IACzC,SAAgB,QAAQ,mBAA0B;IAClD,SAAgB,MAAM,iBAAwB;IAC9C,SAAgB,KAAK,gBAAuB;IAC5C,SAAgB,MAAM,mBAA0B;IAChD,SAAgB,QAAQ,mBAA0B;IAClD,SAAgB,MAAM,EAAE,cAAc,CAAC;IACvC,SAAgB,KAAK,EAAE,aAAa,CAAC;IACrC,SAAgB,MAAM,EAAE,cAAc,CAAC;IACvC,SAAgB,YAAY,uBAA8B;IAC1D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA0B;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;gBAEjC,MAAM,EAAE,MAAM;IAO1B,mBAAmB,CAAC,aAAa,EAAE,OAAO,GAAG,QAAQ;IAIrD,qBAAqB,CAAC,aAAa,EAAE,OAAO,GAAG,OAAO;IAItD,oBAAoB,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI;IAO1E,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAIlD,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAI9C,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;CAehD"}
@@ -16,6 +16,7 @@ import { StyleUniforms } from "./StyleUniforms";
16
16
  import { desync, sync } from "./Sync";
17
17
  import { ThematicUniforms } from "./ThematicUniforms";
18
18
  import { ViewRectUniforms } from "./ViewRectUniforms";
19
+ import { RealityModelUniforms } from "./RealityModelUniforms";
19
20
  class PixelWidthFactor {
20
21
  constructor() {
21
22
  /** The pixel width factor depends on both the frustum and the view rect. It also depends on the frustum scale associated with the current Branch. */
@@ -109,6 +110,7 @@ export class TargetUniforms {
109
110
  this.style = new StyleUniforms();
110
111
  this.lights = new LightingUniforms();
111
112
  this.thematic = new ThematicUniforms();
113
+ this.realityModel = new RealityModelUniforms();
112
114
  this._pixelWidthFactor = new PixelWidthFactor();
113
115
  this._sunDirection = new SunDirection();
114
116
  this.frustum = new FrustumUniforms();
@@ -1 +1 @@
1
- {"version":3,"file":"TargetUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/TargetUniforms.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { Matrix4d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { RenderPlan } from \"../RenderPlan\";\r\nimport { BatchUniforms } from \"./BatchUniforms\";\r\nimport { BranchUniforms } from \"./BranchUniforms\";\r\nimport { FrustumUniforms, FrustumUniformType } from \"./FrustumUniforms\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { HiliteUniforms } from \"./HiliteUniforms\";\r\nimport { LightingUniforms } from \"./LightingUniforms\";\r\nimport { Matrix4 } from \"./Matrix\";\r\nimport { ShadowUniforms } from \"./ShadowUniforms\";\r\nimport { StyleUniforms } from \"./StyleUniforms\";\r\nimport { desync, sync, SyncObserver, SyncToken } from \"./Sync\";\r\nimport { Target } from \"./Target\";\r\nimport { ThematicUniforms } from \"./ThematicUniforms\";\r\nimport { ViewRectUniforms } from \"./ViewRectUniforms\";\r\n\r\nclass PixelWidthFactor {\r\n /** The pixel width factor depends on both the frustum and the view rect. It also depends on the frustum scale associated with the current Branch. */\r\n private readonly _rectSync: SyncObserver = {};\r\n private readonly _frustumSync: SyncObserver = {};\r\n private readonly _branchSync: SyncObserver = {};\r\n private _factor = 0;\r\n public syncKey = 0;\r\n\r\n public bind(uniform: UniformHandle, uniforms: TargetUniforms): void {\r\n if (!sync(uniforms.frustum, this._frustumSync) || !sync(uniforms.viewRect, this._rectSync) || !sync(uniforms.branch, this._branchSync))\r\n this.compute(uniforms.frustum, uniforms.viewRect.width, uniforms.viewRect.height, uniforms.branch.top.frustumScale);\r\n\r\n if (!sync(this, uniform))\r\n uniform.setUniform1f(this._factor);\r\n }\r\n\r\n private compute(frustumUniforms: FrustumUniforms, width: number, height: number, scale: { x: number, y: number }): void {\r\n desync(this);\r\n\r\n const frustumPlanes = frustumUniforms.planes;\r\n const top = frustumPlanes[0];\r\n const bottom = frustumPlanes[1];\r\n const left = frustumPlanes[2];\r\n const right = frustumPlanes[3];\r\n\r\n let halfPixelWidth: number;\r\n let halfPixelHeight: number;\r\n\r\n const frustum = frustumUniforms.frustum;\r\n\r\n if (FrustumUniformType.Perspective === frustumUniforms.type) {\r\n const inverseNear = 1.0 / frustum[0];\r\n const tanTheta = top * inverseNear;\r\n halfPixelHeight = scale.x * tanTheta / height;\r\n halfPixelWidth = scale.y * tanTheta / width;\r\n } else {\r\n halfPixelWidth = scale.x * 0.5 * (right - left) / width;\r\n halfPixelHeight = scale.y * 0.5 * (top - bottom) / height;\r\n }\r\n\r\n this._factor = Math.sqrt(halfPixelWidth * halfPixelWidth + halfPixelHeight * halfPixelHeight);\r\n }\r\n}\r\n\r\n// Direction in view space used if solar shadows are disabled and LightSettings.useSolarLighting is false.\r\nconst defaultSunDirectionView = new Vector3d(0.272166, 0.680414, 0.680414);\r\n\r\nclass SunDirection {\r\n // Sun direction is passed to shader in view coords so depends upon frustum.\r\n public syncToken?: SyncToken;\r\n public syncKey = 0;\r\n private _haveWorldDir = false;\r\n private readonly _worldDir = Vector3d.unitZ();\r\n private readonly _viewDir = defaultSunDirectionView.clone();\r\n private readonly _viewDir32 = new Float32Array(3);\r\n private _updated = true;\r\n\r\n public update(sunDir: Vector3d | undefined): void {\r\n const haveWorldDir = undefined !== sunDir;\r\n if (haveWorldDir !== this._haveWorldDir || (sunDir && !sunDir.isExactEqual(this._worldDir))) {\r\n this._updated = true;\r\n desync(this);\r\n\r\n this._haveWorldDir = haveWorldDir;\r\n if (sunDir) {\r\n sunDir.clone(this._worldDir);\r\n this._worldDir.normalizeInPlace();\r\n }\r\n }\r\n }\r\n\r\n public bind(uniform: UniformHandle, uniforms: TargetUniforms): void {\r\n if (!sync(uniforms.frustum, this) || this._updated) {\r\n if (this._haveWorldDir) {\r\n uniforms.frustum.viewMatrix.multiplyVector(this._worldDir, this._viewDir);\r\n this._viewDir.negate(this._viewDir);\r\n } else {\r\n defaultSunDirectionView.clone(this._viewDir);\r\n }\r\n\r\n this._viewDir.normalizeInPlace();\r\n this._viewDir32[0] = this._viewDir.x;\r\n this._viewDir32[1] = this._viewDir.y;\r\n this._viewDir32[2] = this._viewDir.z;\r\n\r\n desync(this);\r\n this._updated = false;\r\n }\r\n\r\n if (!sync(this, uniform))\r\n uniform.setUniform3fv(this._viewDir32);\r\n }\r\n}\r\n\r\n/** Holds state for commonly-used uniforms to avoid unnecessary recomputation, owned by a Target.\r\n * DO NOT directly modify exposed members of the objects exposed by this class. Use their APIs.\r\n * e.g., code like `target.uniforms.frustum.projectionMatrix.setFrom(someOtherMatrix)` or `target.uniforms.branch.top.setViewFlags(blah)` will cause bugs.\r\n * @internal\r\n */\r\nexport class TargetUniforms {\r\n public readonly frustum: FrustumUniforms;\r\n public readonly viewRect = new ViewRectUniforms();\r\n public readonly hilite = new HiliteUniforms();\r\n public readonly style = new StyleUniforms();\r\n public readonly lights = new LightingUniforms();\r\n public readonly thematic = new ThematicUniforms();\r\n public readonly branch: BranchUniforms;\r\n public readonly batch: BatchUniforms;\r\n public readonly shadow: ShadowUniforms;\r\n private readonly _pixelWidthFactor = new PixelWidthFactor();\r\n private readonly _sunDirection = new SunDirection();\r\n\r\n public constructor(target: Target) {\r\n this.frustum = new FrustumUniforms();\r\n this.branch = new BranchUniforms(target);\r\n this.batch = new BatchUniforms(target, this.branch.createBatchState());\r\n this.shadow = new ShadowUniforms(target);\r\n }\r\n\r\n public getProjectionMatrix(forViewCoords: boolean): Matrix4d {\r\n return forViewCoords ? this.viewRect.projectionMatrix : this.frustum.projectionMatrix;\r\n }\r\n\r\n public getProjectionMatrix32(forViewCoords: boolean): Matrix4 {\r\n return forViewCoords ? this.viewRect.projectionMatrix32 : this.frustum.projectionMatrix32;\r\n }\r\n\r\n public bindProjectionMatrix(uniform: UniformHandle, forViewCoords: boolean): void {\r\n if (forViewCoords)\r\n this.viewRect.bindProjectionMatrix(uniform);\r\n else\r\n this.frustum.bindProjectionMatrix(uniform);\r\n }\r\n\r\n public bindPixelWidthFactor(uniform: UniformHandle): void {\r\n this._pixelWidthFactor.bind(uniform, this);\r\n }\r\n\r\n public bindSunDirection(uniform: UniformHandle): void {\r\n this._sunDirection.bind(uniform, this);\r\n }\r\n\r\n public updateRenderPlan(plan: RenderPlan): void {\r\n this.style.update(plan);\r\n this.hilite.update(plan.hiliteSettings, plan.emphasisSettings);\r\n\r\n let sunDir;\r\n if (plan.lights) {\r\n this.lights.update(plan.lights);\r\n\r\n const useSunDir = plan.viewFlags.shadows || plan.lights.solar.alwaysEnabled;\r\n if (useSunDir)\r\n sunDir = plan.lights.solar.direction;\r\n }\r\n\r\n this._sunDirection.update(sunDir);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"TargetUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/TargetUniforms.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { Matrix4d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { RenderPlan } from \"../RenderPlan\";\r\nimport { BatchUniforms } from \"./BatchUniforms\";\r\nimport { BranchUniforms } from \"./BranchUniforms\";\r\nimport { FrustumUniforms, FrustumUniformType } from \"./FrustumUniforms\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { HiliteUniforms } from \"./HiliteUniforms\";\r\nimport { LightingUniforms } from \"./LightingUniforms\";\r\nimport { Matrix4 } from \"./Matrix\";\r\nimport { ShadowUniforms } from \"./ShadowUniforms\";\r\nimport { StyleUniforms } from \"./StyleUniforms\";\r\nimport { desync, sync, SyncObserver, SyncToken } from \"./Sync\";\r\nimport { Target } from \"./Target\";\r\nimport { ThematicUniforms } from \"./ThematicUniforms\";\r\nimport { ViewRectUniforms } from \"./ViewRectUniforms\";\r\nimport { RealityModelUniforms } from \"./RealityModelUniforms\";\r\n\r\nclass PixelWidthFactor {\r\n /** The pixel width factor depends on both the frustum and the view rect. It also depends on the frustum scale associated with the current Branch. */\r\n private readonly _rectSync: SyncObserver = {};\r\n private readonly _frustumSync: SyncObserver = {};\r\n private readonly _branchSync: SyncObserver = {};\r\n private _factor = 0;\r\n public syncKey = 0;\r\n\r\n public bind(uniform: UniformHandle, uniforms: TargetUniforms): void {\r\n if (!sync(uniforms.frustum, this._frustumSync) || !sync(uniforms.viewRect, this._rectSync) || !sync(uniforms.branch, this._branchSync))\r\n this.compute(uniforms.frustum, uniforms.viewRect.width, uniforms.viewRect.height, uniforms.branch.top.frustumScale);\r\n\r\n if (!sync(this, uniform))\r\n uniform.setUniform1f(this._factor);\r\n }\r\n\r\n private compute(frustumUniforms: FrustumUniforms, width: number, height: number, scale: { x: number, y: number }): void {\r\n desync(this);\r\n\r\n const frustumPlanes = frustumUniforms.planes;\r\n const top = frustumPlanes[0];\r\n const bottom = frustumPlanes[1];\r\n const left = frustumPlanes[2];\r\n const right = frustumPlanes[3];\r\n\r\n let halfPixelWidth: number;\r\n let halfPixelHeight: number;\r\n\r\n const frustum = frustumUniforms.frustum;\r\n\r\n if (FrustumUniformType.Perspective === frustumUniforms.type) {\r\n const inverseNear = 1.0 / frustum[0];\r\n const tanTheta = top * inverseNear;\r\n halfPixelHeight = scale.x * tanTheta / height;\r\n halfPixelWidth = scale.y * tanTheta / width;\r\n } else {\r\n halfPixelWidth = scale.x * 0.5 * (right - left) / width;\r\n halfPixelHeight = scale.y * 0.5 * (top - bottom) / height;\r\n }\r\n\r\n this._factor = Math.sqrt(halfPixelWidth * halfPixelWidth + halfPixelHeight * halfPixelHeight);\r\n }\r\n}\r\n\r\n// Direction in view space used if solar shadows are disabled and LightSettings.useSolarLighting is false.\r\nconst defaultSunDirectionView = new Vector3d(0.272166, 0.680414, 0.680414);\r\n\r\nclass SunDirection {\r\n // Sun direction is passed to shader in view coords so depends upon frustum.\r\n public syncToken?: SyncToken;\r\n public syncKey = 0;\r\n private _haveWorldDir = false;\r\n private readonly _worldDir = Vector3d.unitZ();\r\n private readonly _viewDir = defaultSunDirectionView.clone();\r\n private readonly _viewDir32 = new Float32Array(3);\r\n private _updated = true;\r\n\r\n public update(sunDir: Vector3d | undefined): void {\r\n const haveWorldDir = undefined !== sunDir;\r\n if (haveWorldDir !== this._haveWorldDir || (sunDir && !sunDir.isExactEqual(this._worldDir))) {\r\n this._updated = true;\r\n desync(this);\r\n\r\n this._haveWorldDir = haveWorldDir;\r\n if (sunDir) {\r\n sunDir.clone(this._worldDir);\r\n this._worldDir.normalizeInPlace();\r\n }\r\n }\r\n }\r\n\r\n public bind(uniform: UniformHandle, uniforms: TargetUniforms): void {\r\n if (!sync(uniforms.frustum, this) || this._updated) {\r\n if (this._haveWorldDir) {\r\n uniforms.frustum.viewMatrix.multiplyVector(this._worldDir, this._viewDir);\r\n this._viewDir.negate(this._viewDir);\r\n } else {\r\n defaultSunDirectionView.clone(this._viewDir);\r\n }\r\n\r\n this._viewDir.normalizeInPlace();\r\n this._viewDir32[0] = this._viewDir.x;\r\n this._viewDir32[1] = this._viewDir.y;\r\n this._viewDir32[2] = this._viewDir.z;\r\n\r\n desync(this);\r\n this._updated = false;\r\n }\r\n\r\n if (!sync(this, uniform))\r\n uniform.setUniform3fv(this._viewDir32);\r\n }\r\n}\r\n\r\n/** Holds state for commonly-used uniforms to avoid unnecessary recomputation, owned by a Target.\r\n * DO NOT directly modify exposed members of the objects exposed by this class. Use their APIs.\r\n * e.g., code like `target.uniforms.frustum.projectionMatrix.setFrom(someOtherMatrix)` or `target.uniforms.branch.top.setViewFlags(blah)` will cause bugs.\r\n * @internal\r\n */\r\nexport class TargetUniforms {\r\n public readonly frustum: FrustumUniforms;\r\n public readonly viewRect = new ViewRectUniforms();\r\n public readonly hilite = new HiliteUniforms();\r\n public readonly style = new StyleUniforms();\r\n public readonly lights = new LightingUniforms();\r\n public readonly thematic = new ThematicUniforms();\r\n public readonly branch: BranchUniforms;\r\n public readonly batch: BatchUniforms;\r\n public readonly shadow: ShadowUniforms;\r\n public readonly realityModel = new RealityModelUniforms();\r\n private readonly _pixelWidthFactor = new PixelWidthFactor();\r\n private readonly _sunDirection = new SunDirection();\r\n\r\n public constructor(target: Target) {\r\n this.frustum = new FrustumUniforms();\r\n this.branch = new BranchUniforms(target);\r\n this.batch = new BatchUniforms(target, this.branch.createBatchState());\r\n this.shadow = new ShadowUniforms(target);\r\n }\r\n\r\n public getProjectionMatrix(forViewCoords: boolean): Matrix4d {\r\n return forViewCoords ? this.viewRect.projectionMatrix : this.frustum.projectionMatrix;\r\n }\r\n\r\n public getProjectionMatrix32(forViewCoords: boolean): Matrix4 {\r\n return forViewCoords ? this.viewRect.projectionMatrix32 : this.frustum.projectionMatrix32;\r\n }\r\n\r\n public bindProjectionMatrix(uniform: UniformHandle, forViewCoords: boolean): void {\r\n if (forViewCoords)\r\n this.viewRect.bindProjectionMatrix(uniform);\r\n else\r\n this.frustum.bindProjectionMatrix(uniform);\r\n }\r\n\r\n public bindPixelWidthFactor(uniform: UniformHandle): void {\r\n this._pixelWidthFactor.bind(uniform, this);\r\n }\r\n\r\n public bindSunDirection(uniform: UniformHandle): void {\r\n this._sunDirection.bind(uniform, this);\r\n }\r\n\r\n public updateRenderPlan(plan: RenderPlan): void {\r\n this.style.update(plan);\r\n this.hilite.update(plan.hiliteSettings, plan.emphasisSettings);\r\n\r\n let sunDir;\r\n if (plan.lights) {\r\n this.lights.update(plan.lights);\r\n\r\n const useSunDir = plan.viewFlags.shadows || plan.lights.solar.alwaysEnabled;\r\n if (useSunDir)\r\n sunDir = plan.lights.solar.direction;\r\n }\r\n\r\n this._sunDirection.update(sunDir);\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Technique.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Technique.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Technique.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Technique.ts"],"names":[],"mappings":"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"}
@@ -29,7 +29,7 @@ import createPlanarGridProgram from "./glsl/PlanarGrid";
29
29
  import { createPointCloudBuilder, createPointCloudHiliter } from "./glsl/PointCloud";
30
30
  import { createPointStringBuilder, createPointStringHiliter } from "./glsl/PointString";
31
31
  import { createPolylineBuilder, createPolylineHiliter } from "./glsl/Polyline";
32
- import createRealityMeshBuilder, { createClassifierRealityMeshHiliter, createRealityMeshHiliter } from "./glsl/RealityMesh";
32
+ import { addColorOverrideMix, createClassifierRealityMeshHiliter, createRealityMeshBuilder, createRealityMeshHiliter, } from "./glsl/RealityMesh";
33
33
  import { createSkyBoxProgram } from "./glsl/SkyBox";
34
34
  import { createSkySphereProgram } from "./glsl/SkySphere";
35
35
  import { createSurfaceBuilder, createSurfaceHiliter } from "./glsl/Surface";
@@ -493,10 +493,6 @@ PointStringTechnique._kUnquantized = PointStringTechnique._kHilite + numHiliteVa
493
493
  class PointCloudTechnique extends VariedTechnique {
494
494
  constructor(gl) {
495
495
  super(PointCloudTechnique._kHilite + 2);
496
- this._earlyZFlags = [
497
- TechniqueFlags.fromDescription("Opaque-Hilite-Overrides"),
498
- TechniqueFlags.fromDescription("Opaque-Hilite-Classified"),
499
- ];
500
496
  for (let iClassified = 0 /* No */; iClassified <= 1 /* Yes */; iClassified++) {
501
497
  this.addHiliteShader(gl, 0 /* No */, iClassified, "quantized", (_inst, classified) => createPointCloudHiliter(classified));
502
498
  const flags = scratchTechniqueFlags;
@@ -508,11 +504,7 @@ class PointCloudTechnique extends VariedTechnique {
508
504
  const builder = createPointCloudBuilder(flags.isClassified, featureMode, thematic);
509
505
  if (2 /* Overrides */ === featureMode) {
510
506
  addUniformFeatureSymbology(builder, true);
511
- builder.vert.addUniform("u_overrideColorMix", 2 /* Float */, (prog) => {
512
- prog.addGraphicUniform("u_overrideColorMix", (uniform, params) => {
513
- uniform.setUniform1f(params.geometry.asPointCloud.overrideColorMix);
514
- });
515
- });
507
+ addColorOverrideMix(builder.vert);
516
508
  builder.vert.set(7 /* ApplyFeatureColor */, mixFeatureColor);
517
509
  }
518
510
  this.addFeatureId(builder, featureMode);