@itwin/core-frontend 4.10.0-dev.8 → 5.0.0-dev.0

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 (820) hide show
  1. package/CHANGELOG.md +23 -1
  2. package/lib/cjs/AccuDraw.d.ts.map +1 -1
  3. package/lib/cjs/AccuDraw.js +0 -2
  4. package/lib/cjs/AccuDraw.js.map +1 -1
  5. package/lib/cjs/AccuSnap.d.ts.map +1 -1
  6. package/lib/cjs/AccuSnap.js +17 -8
  7. package/lib/cjs/AccuSnap.js.map +1 -1
  8. package/lib/cjs/BackgroundMapGeometry.js +3 -3
  9. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  10. package/lib/cjs/BingLocation.js +1 -1
  11. package/lib/cjs/BingLocation.js.map +1 -1
  12. package/lib/cjs/BriefcaseConnection.d.ts +0 -1
  13. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  14. package/lib/cjs/BriefcaseConnection.js +2 -3
  15. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  16. package/lib/cjs/BriefcaseTxns.d.ts.map +1 -1
  17. package/lib/cjs/ChangeFlags.d.ts +1 -1
  18. package/lib/cjs/ChangeFlags.d.ts.map +1 -1
  19. package/lib/cjs/ChangeFlags.js.map +1 -1
  20. package/lib/cjs/CheckpointConnection.js +1 -1
  21. package/lib/cjs/CheckpointConnection.js.map +1 -1
  22. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  23. package/lib/cjs/DisplayStyleState.js +6 -6
  24. package/lib/cjs/DisplayStyleState.js.map +1 -1
  25. package/lib/cjs/DrawingViewState.d.ts +8 -6
  26. package/lib/cjs/DrawingViewState.d.ts.map +1 -1
  27. package/lib/cjs/DrawingViewState.js +20 -10
  28. package/lib/cjs/DrawingViewState.js.map +1 -1
  29. package/lib/cjs/EnvironmentDecorations.js +1 -1
  30. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  31. package/lib/cjs/GraphicalEditingScope.d.ts.map +1 -1
  32. package/lib/cjs/HitDetail.d.ts +37 -5
  33. package/lib/cjs/HitDetail.d.ts.map +1 -1
  34. package/lib/cjs/HitDetail.js +12 -2
  35. package/lib/cjs/HitDetail.js.map +1 -1
  36. package/lib/cjs/IModelApp.d.ts.map +1 -1
  37. package/lib/cjs/IModelApp.js +1 -2
  38. package/lib/cjs/IModelApp.js.map +1 -1
  39. package/lib/cjs/IModelConnection.d.ts +1 -0
  40. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  41. package/lib/cjs/IModelConnection.js +9 -8
  42. package/lib/cjs/IModelConnection.js.map +1 -1
  43. package/lib/cjs/IpcApp.d.ts.map +1 -1
  44. package/lib/cjs/IpcApp.js +8 -1
  45. package/lib/cjs/IpcApp.js.map +1 -1
  46. package/lib/cjs/LinePlaneIntersect.js +1 -2
  47. package/lib/cjs/LinePlaneIntersect.js.map +1 -1
  48. package/lib/cjs/ModelState.d.ts +0 -8
  49. package/lib/cjs/ModelState.d.ts.map +1 -1
  50. package/lib/cjs/ModelState.js +0 -8
  51. package/lib/cjs/ModelState.js.map +1 -1
  52. package/lib/cjs/NativeApp.d.ts +1 -1
  53. package/lib/cjs/NativeApp.d.ts.map +1 -1
  54. package/lib/cjs/NativeApp.js.map +1 -1
  55. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  56. package/lib/cjs/NotificationManager.d.ts +2 -2
  57. package/lib/cjs/NotificationManager.d.ts.map +1 -1
  58. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.d.ts.map +1 -1
  59. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js +1 -2
  60. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  61. package/lib/cjs/RealityDataSourceContextShareImpl.d.ts.map +1 -1
  62. package/lib/cjs/RealityDataSourceContextShareImpl.js +2 -3
  63. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
  64. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js +1 -1
  65. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  66. package/lib/cjs/SheetViewState.d.ts +4 -11
  67. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  68. package/lib/cjs/SheetViewState.js +18 -12
  69. package/lib/cjs/SheetViewState.js.map +1 -1
  70. package/lib/cjs/SpatialViewState.d.ts +0 -1
  71. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  72. package/lib/cjs/SpatialViewState.js +1 -2
  73. package/lib/cjs/SpatialViewState.js.map +1 -1
  74. package/lib/cjs/SubCategoriesCache.js +1 -1
  75. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  76. package/lib/cjs/TentativePoint.js +1 -1
  77. package/lib/cjs/TentativePoint.js.map +1 -1
  78. package/lib/cjs/ViewCreator3d.js +1 -1
  79. package/lib/cjs/ViewCreator3d.js.map +1 -1
  80. package/lib/cjs/ViewGlobalLocation.js +9 -9
  81. package/lib/cjs/ViewGlobalLocation.js.map +1 -1
  82. package/lib/cjs/ViewState.d.ts +14 -1
  83. package/lib/cjs/ViewState.d.ts.map +1 -1
  84. package/lib/cjs/ViewState.js +4 -2
  85. package/lib/cjs/ViewState.js.map +1 -1
  86. package/lib/cjs/ViewingSpace.d.ts.map +1 -1
  87. package/lib/cjs/ViewingSpace.js +3 -0
  88. package/lib/cjs/ViewingSpace.js.map +1 -1
  89. package/lib/cjs/Viewport.d.ts.map +1 -1
  90. package/lib/cjs/Viewport.js +2 -4
  91. package/lib/cjs/Viewport.js.map +1 -1
  92. package/lib/cjs/ViewportSync.js +6 -6
  93. package/lib/cjs/ViewportSync.js.map +1 -1
  94. package/lib/cjs/common/ImageUtil.js +15 -16
  95. package/lib/cjs/common/ImageUtil.js.map +1 -1
  96. package/lib/cjs/common/WorkerProxy.d.ts +8 -4
  97. package/lib/cjs/common/WorkerProxy.d.ts.map +1 -1
  98. package/lib/cjs/common/WorkerProxy.js +1 -2
  99. package/lib/cjs/common/WorkerProxy.js.map +1 -1
  100. package/lib/cjs/common/gltf/GltfParser.js +7 -8
  101. package/lib/cjs/common/gltf/GltfParser.js.map +1 -1
  102. package/lib/cjs/common/gltf/GltfSchema.d.ts +1 -1
  103. package/lib/cjs/common/gltf/GltfSchema.d.ts.map +1 -1
  104. package/lib/cjs/common/gltf/GltfSchema.js +5 -5
  105. package/lib/cjs/common/gltf/GltfSchema.js.map +1 -1
  106. package/lib/cjs/common/imdl/CompactEdges.js +1 -2
  107. package/lib/cjs/common/imdl/CompactEdges.js.map +1 -1
  108. package/lib/cjs/common/imdl/ImdlModel.js +2 -3
  109. package/lib/cjs/common/imdl/ImdlModel.js.map +1 -1
  110. package/lib/cjs/common/imdl/ImdlSchema.d.ts.map +1 -1
  111. package/lib/cjs/common/imdl/ImdlSchema.js.map +1 -1
  112. package/lib/cjs/common/imdl/ParseImdlDocument.d.ts.map +1 -1
  113. package/lib/cjs/common/imdl/ParseImdlDocument.js +10 -12
  114. package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -1
  115. package/lib/cjs/common/internal/render/DisplayParams.js.map +1 -1
  116. package/lib/cjs/common/internal/render/EdgeParams.js +2 -3
  117. package/lib/cjs/common/internal/render/EdgeParams.js.map +1 -1
  118. package/lib/cjs/common/internal/render/GeometryList.d.ts +1 -1
  119. package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js +3 -3
  120. package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
  121. package/lib/cjs/common/internal/render/LineCode.js +1 -2
  122. package/lib/cjs/common/internal/render/LineCode.js.map +1 -1
  123. package/lib/cjs/common/internal/render/MeshBuilder.js.map +1 -1
  124. package/lib/cjs/common/internal/render/MeshBuilderMap.js.map +1 -1
  125. package/lib/cjs/common/internal/render/MeshPrimitives.js +3 -3
  126. package/lib/cjs/common/internal/render/MeshPrimitives.js.map +1 -1
  127. package/lib/cjs/common/internal/render/OvrFlags.d.ts +4 -2
  128. package/lib/cjs/common/internal/render/OvrFlags.d.ts.map +1 -1
  129. package/lib/cjs/common/internal/render/OvrFlags.js.map +1 -1
  130. package/lib/cjs/common/internal/render/PointStringParams.js +1 -2
  131. package/lib/cjs/common/internal/render/PointStringParams.js.map +1 -1
  132. package/lib/cjs/common/internal/render/PolylineParams.js +4 -5
  133. package/lib/cjs/common/internal/render/PolylineParams.js.map +1 -1
  134. package/lib/cjs/common/internal/render/SurfaceParams.js +3 -3
  135. package/lib/cjs/common/internal/render/SurfaceParams.js.map +1 -1
  136. package/lib/cjs/common/internal/render/VertexTable.d.ts.map +1 -1
  137. package/lib/cjs/common/internal/render/VertexTable.js +4 -7
  138. package/lib/cjs/common/internal/render/VertexTable.js.map +1 -1
  139. package/lib/cjs/common/internal/render/VertexTableBuilder.js +2 -2
  140. package/lib/cjs/common/internal/render/VertexTableBuilder.js.map +1 -1
  141. package/lib/cjs/common/internal/render/VertexTableSplitter.js +4 -4
  142. package/lib/cjs/common/internal/render/VertexTableSplitter.js.map +1 -1
  143. package/lib/cjs/common/render/InstancedGraphicParams.js.map +1 -1
  144. package/lib/cjs/extension/providers/ExtensionLoadScript.js +1 -2
  145. package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -1
  146. package/lib/cjs/internal/render/RenderInstancesParamsImpl.js +2 -3
  147. package/lib/cjs/internal/render/RenderInstancesParamsImpl.js.map +1 -1
  148. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  149. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +1 -1
  150. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  151. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js +2 -2
  152. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  153. package/lib/cjs/quantity-formatting/LocalUnitFormatProvider.js +2 -2
  154. package/lib/cjs/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
  155. package/lib/cjs/quantity-formatting/QuantityFormatter.js +3 -3
  156. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  157. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.d.ts.map +1 -1
  158. package/lib/cjs/render/GraphicBranch.d.ts +12 -1
  159. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  160. package/lib/cjs/render/GraphicBranch.js +2 -2
  161. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  162. package/lib/cjs/render/GraphicTemplate.js +1 -2
  163. package/lib/cjs/render/GraphicTemplate.js.map +1 -1
  164. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  165. package/lib/cjs/render/Pixel.d.ts +14 -4
  166. package/lib/cjs/render/Pixel.d.ts.map +1 -1
  167. package/lib/cjs/render/Pixel.js +22 -5
  168. package/lib/cjs/render/Pixel.js.map +1 -1
  169. package/lib/cjs/render/RealityMeshGraphicParams.d.ts +1 -0
  170. package/lib/cjs/render/RealityMeshGraphicParams.d.ts.map +1 -1
  171. package/lib/cjs/render/RealityMeshGraphicParams.js.map +1 -1
  172. package/lib/cjs/render/RenderMemory.d.ts +2 -0
  173. package/lib/cjs/render/RenderMemory.d.ts.map +1 -1
  174. package/lib/cjs/render/RenderMemory.js +2 -0
  175. package/lib/cjs/render/RenderMemory.js.map +1 -1
  176. package/lib/cjs/render/RenderPlan.d.ts +2 -1
  177. package/lib/cjs/render/RenderPlan.d.ts.map +1 -1
  178. package/lib/cjs/render/RenderPlan.js +5 -3
  179. package/lib/cjs/render/RenderPlan.js.map +1 -1
  180. package/lib/cjs/render/RenderSystem.d.ts +1 -1
  181. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  182. package/lib/cjs/render/RenderSystem.js +8 -9
  183. package/lib/cjs/render/RenderSystem.js.map +1 -1
  184. package/lib/cjs/render/UpsampleRealityMeshParams.js +1 -2
  185. package/lib/cjs/render/UpsampleRealityMeshParams.js.map +1 -1
  186. package/lib/cjs/render/VisibleFeature.js +1 -2
  187. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  188. package/lib/cjs/render/webgl/AttributeBuffers.js +5 -5
  189. package/lib/cjs/render/webgl/AttributeBuffers.js.map +1 -1
  190. package/lib/cjs/render/webgl/BatchUniforms.d.ts +4 -0
  191. package/lib/cjs/render/webgl/BatchUniforms.d.ts.map +1 -1
  192. package/lib/cjs/render/webgl/BatchUniforms.js +18 -0
  193. package/lib/cjs/render/webgl/BatchUniforms.js.map +1 -1
  194. package/lib/cjs/render/webgl/BranchState.d.ts +9 -0
  195. package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
  196. package/lib/cjs/render/webgl/BranchState.js +6 -0
  197. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  198. package/lib/cjs/render/webgl/BranchUniforms.d.ts +1 -0
  199. package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
  200. package/lib/cjs/render/webgl/BranchUniforms.js +14 -1
  201. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  202. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  203. package/lib/cjs/render/webgl/ClippingProgram.js +2 -2
  204. package/lib/cjs/render/webgl/ClippingProgram.js.map +1 -1
  205. package/lib/cjs/render/webgl/ContourUniforms.d.ts +22 -0
  206. package/lib/cjs/render/webgl/ContourUniforms.d.ts.map +1 -0
  207. package/lib/cjs/render/webgl/ContourUniforms.js +98 -0
  208. package/lib/cjs/render/webgl/ContourUniforms.js.map +1 -0
  209. package/lib/cjs/render/webgl/Contours.d.ts +34 -0
  210. package/lib/cjs/render/webgl/Contours.d.ts.map +1 -0
  211. package/lib/cjs/render/webgl/Contours.js +127 -0
  212. package/lib/cjs/render/webgl/Contours.js.map +1 -0
  213. package/lib/cjs/render/webgl/DrawCommand.js +3 -3
  214. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  215. package/lib/cjs/render/webgl/EdgeSettings.js +1 -1
  216. package/lib/cjs/render/webgl/EdgeSettings.js.map +1 -1
  217. package/lib/cjs/render/webgl/FeatureOverrides.d.ts +1 -0
  218. package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
  219. package/lib/cjs/render/webgl/FeatureOverrides.js +48 -51
  220. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  221. package/lib/cjs/render/webgl/FrustumUniforms.js +2 -2
  222. package/lib/cjs/render/webgl/FrustumUniforms.js.map +1 -1
  223. package/lib/cjs/render/webgl/GL.d.ts +2 -1
  224. package/lib/cjs/render/webgl/GL.d.ts.map +1 -1
  225. package/lib/cjs/render/webgl/GL.js +1 -0
  226. package/lib/cjs/render/webgl/GL.js.map +1 -1
  227. package/lib/cjs/render/webgl/Graphic.d.ts +12 -0
  228. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  229. package/lib/cjs/render/webgl/Graphic.js +31 -0
  230. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  231. package/lib/cjs/render/webgl/InstancedGeometry.js +2 -2
  232. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  233. package/lib/cjs/render/webgl/Material.js +4 -4
  234. package/lib/cjs/render/webgl/Material.js.map +1 -1
  235. package/lib/cjs/render/webgl/Matrix.js +3 -3
  236. package/lib/cjs/render/webgl/Matrix.js.map +1 -1
  237. package/lib/cjs/render/webgl/RealityMesh.js +1 -1
  238. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  239. package/lib/cjs/render/webgl/RenderFlags.d.ts +2 -1
  240. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  241. package/lib/cjs/render/webgl/RenderFlags.js +4 -2
  242. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  243. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  244. package/lib/cjs/render/webgl/SceneCompositor.js +19 -7
  245. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  246. package/lib/cjs/render/webgl/ScratchDrawParams.js +2 -3
  247. package/lib/cjs/render/webgl/ScratchDrawParams.js.map +1 -1
  248. package/lib/cjs/render/webgl/ScreenSpaceEffect.js +2 -2
  249. package/lib/cjs/render/webgl/ScreenSpaceEffect.js.map +1 -1
  250. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +15 -13
  251. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  252. package/lib/cjs/render/webgl/ShaderBuilder.js +18 -10
  253. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  254. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  255. package/lib/cjs/render/webgl/ShaderProgram.js +26 -0
  256. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  257. package/lib/cjs/render/webgl/SurfaceGeometry.js +2 -2
  258. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  259. package/lib/cjs/render/webgl/Sync.js +3 -4
  260. package/lib/cjs/render/webgl/Sync.js.map +1 -1
  261. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  262. package/lib/cjs/render/webgl/System.js +7 -7
  263. package/lib/cjs/render/webgl/System.js.map +1 -1
  264. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  265. package/lib/cjs/render/webgl/Target.js +2 -1
  266. package/lib/cjs/render/webgl/Target.js.map +1 -1
  267. package/lib/cjs/render/webgl/TargetUniforms.d.ts +2 -0
  268. package/lib/cjs/render/webgl/TargetUniforms.d.ts.map +1 -1
  269. package/lib/cjs/render/webgl/TargetUniforms.js +2 -0
  270. package/lib/cjs/render/webgl/TargetUniforms.js.map +1 -1
  271. package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
  272. package/lib/cjs/render/webgl/TechniqueId.js +1 -2
  273. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  274. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  275. package/lib/cjs/render/webgl/Texture.js +2 -2
  276. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  277. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  278. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +2 -3
  279. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  280. package/lib/cjs/render/webgl/glsl/Animation.js +1 -2
  281. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  282. package/lib/cjs/render/webgl/glsl/Atmosphere.js +2 -3
  283. package/lib/cjs/render/webgl/glsl/Atmosphere.js.map +1 -1
  284. package/lib/cjs/render/webgl/glsl/Blur.js +2 -3
  285. package/lib/cjs/render/webgl/glsl/Blur.js.map +1 -1
  286. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +2 -3
  287. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  288. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +2 -3
  289. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  290. package/lib/cjs/render/webgl/glsl/Clipping.js +3 -3
  291. package/lib/cjs/render/webgl/glsl/Clipping.js.map +1 -1
  292. package/lib/cjs/render/webgl/glsl/Color.js +2 -3
  293. package/lib/cjs/render/webgl/glsl/Color.js.map +1 -1
  294. package/lib/cjs/render/webgl/glsl/Combine3Textures.js +2 -3
  295. package/lib/cjs/render/webgl/glsl/Combine3Textures.js.map +1 -1
  296. package/lib/cjs/render/webgl/glsl/CombineTextures.js +2 -3
  297. package/lib/cjs/render/webgl/glsl/CombineTextures.js.map +1 -1
  298. package/lib/cjs/render/webgl/glsl/Common.js +7 -7
  299. package/lib/cjs/render/webgl/glsl/Common.js.map +1 -1
  300. package/lib/cjs/render/webgl/glsl/Composite.js +2 -3
  301. package/lib/cjs/render/webgl/glsl/Composite.js.map +1 -1
  302. package/lib/cjs/render/webgl/glsl/Contours.d.ts +4 -0
  303. package/lib/cjs/render/webgl/glsl/Contours.d.ts.map +1 -0
  304. package/lib/cjs/render/webgl/glsl/Contours.js +137 -0
  305. package/lib/cjs/render/webgl/glsl/Contours.js.map +1 -0
  306. package/lib/cjs/render/webgl/glsl/CopyColor.js +2 -3
  307. package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
  308. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +2 -3
  309. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  310. package/lib/cjs/render/webgl/glsl/CopyStencil.js +9 -10
  311. package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
  312. package/lib/cjs/render/webgl/glsl/Decode.js +2 -2
  313. package/lib/cjs/render/webgl/glsl/Decode.js.map +1 -1
  314. package/lib/cjs/render/webgl/glsl/EDL.js +8 -9
  315. package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -1
  316. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +2 -3
  317. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  318. package/lib/cjs/render/webgl/glsl/Edge.js +3 -4
  319. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  320. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts +2 -1
  321. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  322. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +35 -28
  323. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  324. package/lib/cjs/render/webgl/glsl/Fragment.js +15 -15
  325. package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
  326. package/lib/cjs/render/webgl/glsl/Instancing.js +3 -4
  327. package/lib/cjs/render/webgl/glsl/Instancing.js.map +1 -1
  328. package/lib/cjs/render/webgl/glsl/Lighting.js +1 -2
  329. package/lib/cjs/render/webgl/glsl/Lighting.js.map +1 -1
  330. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +2 -3
  331. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  332. package/lib/cjs/render/webgl/glsl/LookupTable.js +1 -2
  333. package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
  334. package/lib/cjs/render/webgl/glsl/Monochrome.js +2 -3
  335. package/lib/cjs/render/webgl/glsl/Monochrome.js.map +1 -1
  336. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +9 -9
  337. package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
  338. package/lib/cjs/render/webgl/glsl/PlanarGrid.js +1 -1
  339. package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
  340. package/lib/cjs/render/webgl/glsl/PointCloud.js +3 -4
  341. package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
  342. package/lib/cjs/render/webgl/glsl/PointString.js +2 -3
  343. package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
  344. package/lib/cjs/render/webgl/glsl/Polyline.js +6 -6
  345. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  346. package/lib/cjs/render/webgl/glsl/RealityMesh.js +8 -8
  347. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  348. package/lib/cjs/render/webgl/glsl/RenderPass.js +1 -2
  349. package/lib/cjs/render/webgl/glsl/RenderPass.js.map +1 -1
  350. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +2 -3
  351. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  352. package/lib/cjs/render/webgl/glsl/SkyBox.js +2 -3
  353. package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
  354. package/lib/cjs/render/webgl/glsl/SkySphere.js +2 -3
  355. package/lib/cjs/render/webgl/glsl/SkySphere.js.map +1 -1
  356. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +4 -4
  357. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  358. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  359. package/lib/cjs/render/webgl/glsl/Surface.js +11 -9
  360. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  361. package/lib/cjs/render/webgl/glsl/Thematic.js +2 -3
  362. package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
  363. package/lib/cjs/render/webgl/glsl/Translucency.js +3 -3
  364. package/lib/cjs/render/webgl/glsl/Translucency.js.map +1 -1
  365. package/lib/cjs/render/webgl/glsl/Vertex.js +13 -13
  366. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  367. package/lib/cjs/render/webgl/glsl/Viewport.js +3 -4
  368. package/lib/cjs/render/webgl/glsl/Viewport.js.map +1 -1
  369. package/lib/cjs/render/webgl/glsl/ViewportQuad.js +1 -2
  370. package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
  371. package/lib/cjs/render/webgl/glsl/Wiremesh.js +2 -3
  372. package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -1
  373. package/lib/cjs/request/Request.d.ts.map +1 -1
  374. package/lib/cjs/request/Request.js +2 -2
  375. package/lib/cjs/request/Request.js.map +1 -1
  376. package/lib/cjs/request/utils.js +3 -4
  377. package/lib/cjs/request/utils.js.map +1 -1
  378. package/lib/cjs/tile/ClassifierTileTree.js +3 -3
  379. package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
  380. package/lib/cjs/tile/ContextShareProvider.js +2 -2
  381. package/lib/cjs/tile/ContextShareProvider.js.map +1 -1
  382. package/lib/cjs/tile/GltfReader.d.ts +1 -1
  383. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  384. package/lib/cjs/tile/GltfReader.js +18 -16
  385. package/lib/cjs/tile/GltfReader.js.map +1 -1
  386. package/lib/cjs/tile/IModelTile.js +2 -2
  387. package/lib/cjs/tile/IModelTile.js.map +1 -1
  388. package/lib/cjs/tile/IModelTileTree.js +2 -2
  389. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  390. package/lib/cjs/tile/ImdlDecoder.js +1 -2
  391. package/lib/cjs/tile/ImdlDecoder.js.map +1 -1
  392. package/lib/cjs/tile/ImdlGraphicsCreator.js +7 -8
  393. package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -1
  394. package/lib/cjs/tile/ImdlParser.js +1 -2
  395. package/lib/cjs/tile/ImdlParser.js.map +1 -1
  396. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  397. package/lib/cjs/tile/ImdlReader.js +3 -3
  398. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  399. package/lib/cjs/tile/MeshoptCompression.js +1 -2
  400. package/lib/cjs/tile/MeshoptCompression.js.map +1 -1
  401. package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
  402. package/lib/cjs/tile/OrbitGtTileTree.js +3 -4
  403. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  404. package/lib/cjs/tile/PntsReader.js +2 -3
  405. package/lib/cjs/tile/PntsReader.js.map +1 -1
  406. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  407. package/lib/cjs/tile/PrimaryTileTree.js +12 -12
  408. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  409. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  410. package/lib/cjs/tile/RealityModelTileTree.js +3 -4
  411. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  412. package/lib/cjs/tile/RealityTileDrawArgs.d.ts.map +1 -1
  413. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  414. package/lib/cjs/tile/RealityTileLoader.js +1 -1
  415. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  416. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  417. package/lib/cjs/tile/RenderGraphicTileTree.js +1 -2
  418. package/lib/cjs/tile/RenderGraphicTileTree.js.map +1 -1
  419. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js +1 -1
  420. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  421. package/lib/cjs/tile/Tile.js +2 -2
  422. package/lib/cjs/tile/Tile.js.map +1 -1
  423. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  424. package/lib/cjs/tile/TileAdmin.js +3 -4
  425. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  426. package/lib/cjs/tile/TileDrawArgs.d.ts +4 -0
  427. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  428. package/lib/cjs/tile/TileDrawArgs.js +2 -0
  429. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  430. package/lib/cjs/tile/TileRequest.js +1 -1
  431. package/lib/cjs/tile/TileRequest.js.map +1 -1
  432. package/lib/cjs/tile/TileRequestChannel.js +1 -1
  433. package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
  434. package/lib/cjs/tile/TileStorage.js +1 -1
  435. package/lib/cjs/tile/TileStorage.js.map +1 -1
  436. package/lib/cjs/tile/TileTreeReference.d.ts +2 -0
  437. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  438. package/lib/cjs/tile/TileTreeReference.js +3 -0
  439. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  440. package/lib/cjs/tile/ViewFlagOverrides.js +1 -2
  441. package/lib/cjs/tile/ViewFlagOverrides.js.map +1 -1
  442. package/lib/cjs/tile/map/ArcGISTileMap.d.ts.map +1 -1
  443. package/lib/cjs/tile/map/ArcGISTileMap.js +0 -1
  444. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
  445. package/lib/cjs/tile/map/ArcGisUtilities.js +1 -1
  446. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  447. package/lib/cjs/tile/map/BingElevation.js +3 -3
  448. package/lib/cjs/tile/map/BingElevation.js.map +1 -1
  449. package/lib/cjs/tile/map/CesiumTerrainProvider.js +7 -8
  450. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  451. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +1 -1
  452. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  453. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  454. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +4 -5
  455. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  456. package/lib/cjs/tile/map/ImageryProviders/CoordinatesUtils.js +1 -2
  457. package/lib/cjs/tile/map/ImageryProviders/CoordinatesUtils.js.map +1 -1
  458. package/lib/cjs/tile/map/ImageryProviders/FeatureGraphicsRenderer.js +1 -1
  459. package/lib/cjs/tile/map/ImageryProviders/FeatureGraphicsRenderer.js.map +1 -1
  460. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  461. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  462. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  463. package/lib/cjs/tile/map/MapLayerTileTreeReference.js +2 -2
  464. package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
  465. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  466. package/lib/cjs/tile/map/MapTile.js +1 -1
  467. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  468. package/lib/cjs/tile/map/MapTileLoader.js +1 -1
  469. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  470. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  471. package/lib/cjs/tile/map/MapTileTree.js +2 -2
  472. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  473. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  474. package/lib/cjs/tile/map/MapTilingScheme.js +4 -0
  475. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  476. package/lib/cjs/tile/map/UrlUtils.js +1 -2
  477. package/lib/cjs/tile/map/UrlUtils.js.map +1 -1
  478. package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
  479. package/lib/cjs/tools/ClipViewTool.d.ts.map +1 -1
  480. package/lib/cjs/tools/MeasureTool.js +2 -2
  481. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  482. package/lib/cjs/tools/Tool.d.ts +1 -1
  483. package/lib/cjs/tools/Tool.d.ts.map +1 -1
  484. package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
  485. package/lib/cjs/tools/ViewTool.js +2 -2
  486. package/lib/cjs/tools/ViewTool.js.map +1 -1
  487. package/lib/cjs/workers/RegisterWorker.js +1 -2
  488. package/lib/cjs/workers/RegisterWorker.js.map +1 -1
  489. package/lib/esm/AccuDraw.d.ts.map +1 -1
  490. package/lib/esm/AccuDraw.js +0 -2
  491. package/lib/esm/AccuDraw.js.map +1 -1
  492. package/lib/esm/AccuSnap.d.ts.map +1 -1
  493. package/lib/esm/AccuSnap.js +17 -8
  494. package/lib/esm/AccuSnap.js.map +1 -1
  495. package/lib/esm/BingLocation.js +1 -1
  496. package/lib/esm/BingLocation.js.map +1 -1
  497. package/lib/esm/BriefcaseConnection.d.ts +0 -1
  498. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  499. package/lib/esm/BriefcaseConnection.js +2 -3
  500. package/lib/esm/BriefcaseConnection.js.map +1 -1
  501. package/lib/esm/BriefcaseTxns.d.ts.map +1 -1
  502. package/lib/esm/ChangeFlags.d.ts +1 -1
  503. package/lib/esm/ChangeFlags.d.ts.map +1 -1
  504. package/lib/esm/ChangeFlags.js.map +1 -1
  505. package/lib/esm/CheckpointConnection.js +1 -1
  506. package/lib/esm/CheckpointConnection.js.map +1 -1
  507. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  508. package/lib/esm/DisplayStyleState.js +6 -6
  509. package/lib/esm/DisplayStyleState.js.map +1 -1
  510. package/lib/esm/DrawingViewState.d.ts +8 -6
  511. package/lib/esm/DrawingViewState.d.ts.map +1 -1
  512. package/lib/esm/DrawingViewState.js +20 -10
  513. package/lib/esm/DrawingViewState.js.map +1 -1
  514. package/lib/esm/EnvironmentDecorations.js +1 -1
  515. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  516. package/lib/esm/GraphicalEditingScope.d.ts.map +1 -1
  517. package/lib/esm/HitDetail.d.ts +37 -5
  518. package/lib/esm/HitDetail.d.ts.map +1 -1
  519. package/lib/esm/HitDetail.js +12 -2
  520. package/lib/esm/HitDetail.js.map +1 -1
  521. package/lib/esm/IModelApp.d.ts.map +1 -1
  522. package/lib/esm/IModelApp.js +1 -2
  523. package/lib/esm/IModelApp.js.map +1 -1
  524. package/lib/esm/IModelConnection.d.ts +1 -0
  525. package/lib/esm/IModelConnection.d.ts.map +1 -1
  526. package/lib/esm/IModelConnection.js +9 -8
  527. package/lib/esm/IModelConnection.js.map +1 -1
  528. package/lib/esm/IpcApp.d.ts.map +1 -1
  529. package/lib/esm/IpcApp.js +8 -1
  530. package/lib/esm/IpcApp.js.map +1 -1
  531. package/lib/esm/ModelState.d.ts +0 -8
  532. package/lib/esm/ModelState.d.ts.map +1 -1
  533. package/lib/esm/ModelState.js +0 -8
  534. package/lib/esm/ModelState.js.map +1 -1
  535. package/lib/esm/NativeApp.d.ts +1 -1
  536. package/lib/esm/NativeApp.d.ts.map +1 -1
  537. package/lib/esm/NativeApp.js.map +1 -1
  538. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  539. package/lib/esm/NotificationManager.d.ts +2 -2
  540. package/lib/esm/NotificationManager.d.ts.map +1 -1
  541. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.d.ts.map +1 -1
  542. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js +1 -2
  543. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  544. package/lib/esm/RealityDataSourceContextShareImpl.d.ts.map +1 -1
  545. package/lib/esm/RealityDataSourceContextShareImpl.js +2 -3
  546. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
  547. package/lib/esm/RealityDataSourceTilesetUrlImpl.js +1 -1
  548. package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  549. package/lib/esm/SheetViewState.d.ts +4 -11
  550. package/lib/esm/SheetViewState.d.ts.map +1 -1
  551. package/lib/esm/SheetViewState.js +18 -12
  552. package/lib/esm/SheetViewState.js.map +1 -1
  553. package/lib/esm/SpatialViewState.d.ts +0 -1
  554. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  555. package/lib/esm/SpatialViewState.js +1 -2
  556. package/lib/esm/SpatialViewState.js.map +1 -1
  557. package/lib/esm/SubCategoriesCache.js +1 -1
  558. package/lib/esm/SubCategoriesCache.js.map +1 -1
  559. package/lib/esm/TentativePoint.js +1 -1
  560. package/lib/esm/TentativePoint.js.map +1 -1
  561. package/lib/esm/ViewCreator3d.js +1 -1
  562. package/lib/esm/ViewCreator3d.js.map +1 -1
  563. package/lib/esm/ViewState.d.ts +14 -1
  564. package/lib/esm/ViewState.d.ts.map +1 -1
  565. package/lib/esm/ViewState.js +4 -2
  566. package/lib/esm/ViewState.js.map +1 -1
  567. package/lib/esm/ViewingSpace.d.ts.map +1 -1
  568. package/lib/esm/ViewingSpace.js +3 -0
  569. package/lib/esm/ViewingSpace.js.map +1 -1
  570. package/lib/esm/Viewport.d.ts.map +1 -1
  571. package/lib/esm/Viewport.js +2 -4
  572. package/lib/esm/Viewport.js.map +1 -1
  573. package/lib/esm/common/WorkerProxy.d.ts +8 -4
  574. package/lib/esm/common/WorkerProxy.d.ts.map +1 -1
  575. package/lib/esm/common/WorkerProxy.js.map +1 -1
  576. package/lib/esm/common/gltf/GltfParser.js +6 -6
  577. package/lib/esm/common/gltf/GltfParser.js.map +1 -1
  578. package/lib/esm/common/gltf/GltfSchema.d.ts +1 -1
  579. package/lib/esm/common/gltf/GltfSchema.d.ts.map +1 -1
  580. package/lib/esm/common/gltf/GltfSchema.js.map +1 -1
  581. package/lib/esm/common/imdl/ImdlSchema.d.ts.map +1 -1
  582. package/lib/esm/common/imdl/ImdlSchema.js.map +1 -1
  583. package/lib/esm/common/imdl/ParseImdlDocument.d.ts.map +1 -1
  584. package/lib/esm/common/imdl/ParseImdlDocument.js +4 -5
  585. package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -1
  586. package/lib/esm/common/internal/render/DisplayParams.js.map +1 -1
  587. package/lib/esm/common/internal/render/GeometryList.d.ts +1 -1
  588. package/lib/esm/common/internal/render/MeshBuilder.js.map +1 -1
  589. package/lib/esm/common/internal/render/MeshBuilderMap.js.map +1 -1
  590. package/lib/esm/common/internal/render/MeshPrimitives.js.map +1 -1
  591. package/lib/esm/common/internal/render/OvrFlags.d.ts +4 -2
  592. package/lib/esm/common/internal/render/OvrFlags.d.ts.map +1 -1
  593. package/lib/esm/common/internal/render/OvrFlags.js.map +1 -1
  594. package/lib/esm/common/internal/render/VertexTable.d.ts.map +1 -1
  595. package/lib/esm/common/internal/render/VertexTable.js +3 -5
  596. package/lib/esm/common/internal/render/VertexTable.js.map +1 -1
  597. package/lib/esm/common/render/InstancedGraphicParams.js.map +1 -1
  598. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  599. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +1 -1
  600. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  601. package/lib/esm/quantity-formatting/LocalUnitFormatProvider.js +2 -2
  602. package/lib/esm/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
  603. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.d.ts.map +1 -1
  604. package/lib/esm/render/GraphicBranch.d.ts +12 -1
  605. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  606. package/lib/esm/render/GraphicBranch.js.map +1 -1
  607. package/lib/esm/render/MockRender.d.ts.map +1 -1
  608. package/lib/esm/render/Pixel.d.ts +14 -4
  609. package/lib/esm/render/Pixel.d.ts.map +1 -1
  610. package/lib/esm/render/Pixel.js +22 -5
  611. package/lib/esm/render/Pixel.js.map +1 -1
  612. package/lib/esm/render/RealityMeshGraphicParams.d.ts +1 -0
  613. package/lib/esm/render/RealityMeshGraphicParams.d.ts.map +1 -1
  614. package/lib/esm/render/RealityMeshGraphicParams.js.map +1 -1
  615. package/lib/esm/render/RenderMemory.d.ts +2 -0
  616. package/lib/esm/render/RenderMemory.d.ts.map +1 -1
  617. package/lib/esm/render/RenderMemory.js +2 -0
  618. package/lib/esm/render/RenderMemory.js.map +1 -1
  619. package/lib/esm/render/RenderPlan.d.ts +2 -1
  620. package/lib/esm/render/RenderPlan.d.ts.map +1 -1
  621. package/lib/esm/render/RenderPlan.js +2 -0
  622. package/lib/esm/render/RenderPlan.js.map +1 -1
  623. package/lib/esm/render/RenderSystem.d.ts +1 -1
  624. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  625. package/lib/esm/render/RenderSystem.js +8 -9
  626. package/lib/esm/render/RenderSystem.js.map +1 -1
  627. package/lib/esm/render/webgl/BatchUniforms.d.ts +4 -0
  628. package/lib/esm/render/webgl/BatchUniforms.d.ts.map +1 -1
  629. package/lib/esm/render/webgl/BatchUniforms.js +18 -0
  630. package/lib/esm/render/webgl/BatchUniforms.js.map +1 -1
  631. package/lib/esm/render/webgl/BranchState.d.ts +9 -0
  632. package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
  633. package/lib/esm/render/webgl/BranchState.js +6 -0
  634. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  635. package/lib/esm/render/webgl/BranchUniforms.d.ts +1 -0
  636. package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
  637. package/lib/esm/render/webgl/BranchUniforms.js +14 -1
  638. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  639. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  640. package/lib/esm/render/webgl/ContourUniforms.d.ts +22 -0
  641. package/lib/esm/render/webgl/ContourUniforms.d.ts.map +1 -0
  642. package/lib/esm/render/webgl/ContourUniforms.js +94 -0
  643. package/lib/esm/render/webgl/ContourUniforms.js.map +1 -0
  644. package/lib/esm/render/webgl/Contours.d.ts +34 -0
  645. package/lib/esm/render/webgl/Contours.d.ts.map +1 -0
  646. package/lib/esm/render/webgl/Contours.js +123 -0
  647. package/lib/esm/render/webgl/Contours.js.map +1 -0
  648. package/lib/esm/render/webgl/EdgeSettings.js +1 -1
  649. package/lib/esm/render/webgl/EdgeSettings.js.map +1 -1
  650. package/lib/esm/render/webgl/FeatureOverrides.d.ts +1 -0
  651. package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
  652. package/lib/esm/render/webgl/FeatureOverrides.js +46 -49
  653. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  654. package/lib/esm/render/webgl/GL.d.ts +2 -1
  655. package/lib/esm/render/webgl/GL.d.ts.map +1 -1
  656. package/lib/esm/render/webgl/GL.js +1 -0
  657. package/lib/esm/render/webgl/GL.js.map +1 -1
  658. package/lib/esm/render/webgl/Graphic.d.ts +12 -0
  659. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  660. package/lib/esm/render/webgl/Graphic.js +31 -0
  661. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  662. package/lib/esm/render/webgl/Material.js +2 -2
  663. package/lib/esm/render/webgl/Material.js.map +1 -1
  664. package/lib/esm/render/webgl/RealityMesh.js +1 -1
  665. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  666. package/lib/esm/render/webgl/RenderFlags.d.ts +2 -1
  667. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  668. package/lib/esm/render/webgl/RenderFlags.js +2 -0
  669. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  670. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  671. package/lib/esm/render/webgl/SceneCompositor.js +16 -4
  672. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  673. package/lib/esm/render/webgl/ShaderBuilder.d.ts +15 -13
  674. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  675. package/lib/esm/render/webgl/ShaderBuilder.js +18 -10
  676. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  677. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  678. package/lib/esm/render/webgl/ShaderProgram.js +26 -0
  679. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  680. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  681. package/lib/esm/render/webgl/System.js +7 -7
  682. package/lib/esm/render/webgl/System.js.map +1 -1
  683. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  684. package/lib/esm/render/webgl/Target.js +2 -1
  685. package/lib/esm/render/webgl/Target.js.map +1 -1
  686. package/lib/esm/render/webgl/TargetUniforms.d.ts +2 -0
  687. package/lib/esm/render/webgl/TargetUniforms.d.ts.map +1 -1
  688. package/lib/esm/render/webgl/TargetUniforms.js +2 -0
  689. package/lib/esm/render/webgl/TargetUniforms.js.map +1 -1
  690. package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
  691. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  692. package/lib/esm/render/webgl/Texture.js +2 -2
  693. package/lib/esm/render/webgl/Texture.js.map +1 -1
  694. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  695. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +1 -1
  696. package/lib/esm/render/webgl/glsl/Atmosphere.js +1 -1
  697. package/lib/esm/render/webgl/glsl/Blur.js +1 -1
  698. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +1 -1
  699. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +1 -1
  700. package/lib/esm/render/webgl/glsl/Clipping.js +1 -1
  701. package/lib/esm/render/webgl/glsl/Combine3Textures.js +1 -1
  702. package/lib/esm/render/webgl/glsl/CombineTextures.js +1 -1
  703. package/lib/esm/render/webgl/glsl/Composite.js +1 -1
  704. package/lib/esm/render/webgl/glsl/Contours.d.ts +4 -0
  705. package/lib/esm/render/webgl/glsl/Contours.d.ts.map +1 -0
  706. package/lib/esm/render/webgl/glsl/Contours.js +134 -0
  707. package/lib/esm/render/webgl/glsl/Contours.js.map +1 -0
  708. package/lib/esm/render/webgl/glsl/CopyColor.js +1 -1
  709. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +1 -1
  710. package/lib/esm/render/webgl/glsl/CopyStencil.js +5 -5
  711. package/lib/esm/render/webgl/glsl/EDL.js +4 -4
  712. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +1 -1
  713. package/lib/esm/render/webgl/glsl/Edge.js +1 -1
  714. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts +2 -1
  715. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  716. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +21 -15
  717. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  718. package/lib/esm/render/webgl/glsl/Fragment.js +9 -9
  719. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  720. package/lib/esm/render/webgl/glsl/PlanarClassification.js +4 -4
  721. package/lib/esm/render/webgl/glsl/PointCloud.js +1 -1
  722. package/lib/esm/render/webgl/glsl/RealityMesh.js +3 -3
  723. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
  724. package/lib/esm/render/webgl/glsl/SkyBox.js +1 -1
  725. package/lib/esm/render/webgl/glsl/SkySphere.js +1 -1
  726. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +1 -1
  727. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  728. package/lib/esm/render/webgl/glsl/Surface.js +5 -3
  729. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  730. package/lib/esm/render/webgl/glsl/Translucency.js +1 -1
  731. package/lib/esm/render/webgl/glsl/Wiremesh.js +1 -1
  732. package/lib/esm/request/Request.d.ts.map +1 -1
  733. package/lib/esm/request/Request.js.map +1 -1
  734. package/lib/esm/tile/ClassifierTileTree.js +1 -1
  735. package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
  736. package/lib/esm/tile/ContextShareProvider.js +2 -2
  737. package/lib/esm/tile/ContextShareProvider.js.map +1 -1
  738. package/lib/esm/tile/GltfReader.d.ts +1 -1
  739. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  740. package/lib/esm/tile/GltfReader.js +14 -12
  741. package/lib/esm/tile/GltfReader.js.map +1 -1
  742. package/lib/esm/tile/ImdlGraphicsCreator.js +4 -4
  743. package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -1
  744. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  745. package/lib/esm/tile/ImdlReader.js.map +1 -1
  746. package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
  747. package/lib/esm/tile/OrbitGtTileTree.js +1 -2
  748. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  749. package/lib/esm/tile/PntsReader.js +1 -1
  750. package/lib/esm/tile/PntsReader.js.map +1 -1
  751. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  752. package/lib/esm/tile/PrimaryTileTree.js +6 -6
  753. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  754. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  755. package/lib/esm/tile/RealityModelTileTree.js +1 -2
  756. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  757. package/lib/esm/tile/RealityTileDrawArgs.d.ts.map +1 -1
  758. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  759. package/lib/esm/tile/RealityTileLoader.js +1 -1
  760. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  761. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  762. package/lib/esm/tile/ThreeDTileFormatInterpreter.js +1 -1
  763. package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  764. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  765. package/lib/esm/tile/TileAdmin.js +1 -2
  766. package/lib/esm/tile/TileAdmin.js.map +1 -1
  767. package/lib/esm/tile/TileDrawArgs.d.ts +4 -0
  768. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  769. package/lib/esm/tile/TileDrawArgs.js +2 -0
  770. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  771. package/lib/esm/tile/TileRequest.js +1 -1
  772. package/lib/esm/tile/TileRequest.js.map +1 -1
  773. package/lib/esm/tile/TileRequestChannel.js +1 -1
  774. package/lib/esm/tile/TileRequestChannel.js.map +1 -1
  775. package/lib/esm/tile/TileStorage.js +1 -1
  776. package/lib/esm/tile/TileStorage.js.map +1 -1
  777. package/lib/esm/tile/TileTreeReference.d.ts +2 -0
  778. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  779. package/lib/esm/tile/TileTreeReference.js +3 -0
  780. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  781. package/lib/esm/tile/map/ArcGISTileMap.d.ts.map +1 -1
  782. package/lib/esm/tile/map/ArcGISTileMap.js +0 -1
  783. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
  784. package/lib/esm/tile/map/ArcGisUtilities.js +1 -1
  785. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  786. package/lib/esm/tile/map/BingElevation.js +3 -3
  787. package/lib/esm/tile/map/BingElevation.js.map +1 -1
  788. package/lib/esm/tile/map/CesiumTerrainProvider.js +3 -3
  789. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  790. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +1 -1
  791. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  792. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  793. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +4 -5
  794. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  795. package/lib/esm/tile/map/ImageryProviders/FeatureGraphicsRenderer.js +1 -1
  796. package/lib/esm/tile/map/ImageryProviders/FeatureGraphicsRenderer.js.map +1 -1
  797. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  798. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  799. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  800. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  801. package/lib/esm/tile/map/MapTile.js +1 -1
  802. package/lib/esm/tile/map/MapTile.js.map +1 -1
  803. package/lib/esm/tile/map/MapTileLoader.js +1 -1
  804. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  805. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  806. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  807. package/lib/esm/tile/map/MapTilingScheme.js +4 -0
  808. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  809. package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
  810. package/lib/esm/tools/ClipViewTool.d.ts.map +1 -1
  811. package/lib/esm/tools/MeasureTool.js +2 -2
  812. package/lib/esm/tools/MeasureTool.js.map +1 -1
  813. package/lib/esm/tools/Tool.d.ts +1 -1
  814. package/lib/esm/tools/Tool.d.ts.map +1 -1
  815. package/lib/esm/tools/ViewTool.d.ts.map +1 -1
  816. package/lib/esm/tools/ViewTool.js +2 -2
  817. package/lib/esm/tools/ViewTool.js.map +1 -1
  818. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  819. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  820. package/package.json +30 -36
@@ -7,7 +7,8 @@
7
7
  * @module WebGL
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.FeatureOverrides = exports.isFeatureHilited = void 0;
10
+ exports.FeatureOverrides = void 0;
11
+ exports.isFeatureHilited = isFeatureHilited;
11
12
  const core_bentley_1 = require("@itwin/core-bentley");
12
13
  const core_common_1 = require("@itwin/core-common");
13
14
  const LineCode_1 = require("./LineCode");
@@ -17,29 +18,7 @@ const Sync_1 = require("./Sync");
17
18
  const System_1 = require("./System");
18
19
  const Texture_1 = require("./Texture");
19
20
  const DisplayParams_1 = require("../../common/internal/render/DisplayParams");
20
- function computeWidthAndHeight(nEntries, nRgbaPerEntry, nExtraRgba = 0, nTables = 1) {
21
- const maxSize = System_1.System.instance.maxTextureSize;
22
- const nRgba = nEntries * nRgbaPerEntry * nTables + nExtraRgba;
23
- if (nRgba < maxSize)
24
- return { width: nRgba, height: 1 };
25
- // Make roughly square to reduce unused space in last row
26
- let width = Math.ceil(Math.sqrt(nRgba));
27
- // Ensure a given entry's RGBA values all fit on the same row.
28
- const remainder = width % nRgbaPerEntry;
29
- if (0 !== remainder) {
30
- width += nRgbaPerEntry - remainder;
31
- }
32
- // Compute height
33
- const height = Math.ceil(nRgba / width);
34
- (0, core_bentley_1.assert)(height <= maxSize);
35
- (0, core_bentley_1.assert)(width <= maxSize);
36
- (0, core_bentley_1.assert)(width * height >= nRgba);
37
- (0, core_bentley_1.assert)(Math.floor(height) === height);
38
- (0, core_bentley_1.assert)(Math.floor(width) === width);
39
- // Row padding should never be necessary...
40
- (0, core_bentley_1.assert)(0 === width % nRgbaPerEntry);
41
- return { width, height };
42
- }
21
+ const VertexTable_1 = require("../../common/internal/render/VertexTable");
43
22
  function isFeatureHilited(feature, hilites, isModelHilited) {
44
23
  if (hilites.isEmpty)
45
24
  return false;
@@ -47,7 +26,6 @@ function isFeatureHilited(feature, hilites, isModelHilited) {
47
26
  return isModelHilited || hilites.elements.hasPair(feature.elementId) || hilites.subcategories.hasPair(feature.subCategoryId);
48
27
  return hilites.elements.hasPair(feature.elementId) || (isModelHilited && hilites.subcategories.hasPair(feature.subCategoryId));
49
28
  }
50
- exports.isFeatureHilited = isFeatureHilited;
51
29
  const scratchPackedFeature = core_common_1.PackedFeature.createWithIndex();
52
30
  /** @internal */
53
31
  class FeatureOverrides {
@@ -60,7 +38,7 @@ class FeatureOverrides {
60
38
  /** For tests. */
61
39
  get lutData() { return this._lut?.dataBytes; }
62
40
  get byteLength() { return undefined !== this._lut ? this._lut.bytesUsed : 0; }
63
- get isUniform() { return 2 === this._lutParams[0] && 1 === this._lutParams[1]; }
41
+ get isUniform() { return 3 === this._lutParams[0] && 1 === this._lutParams[1]; }
64
42
  updateUniformSymbologyFlags() {
65
43
  this._uniformSymbologyFlags = 0 /* EmphasisFlags.None */;
66
44
  if (!this.isUniform || !this._lut)
@@ -86,7 +64,7 @@ class FeatureOverrides {
86
64
  }
87
65
  _initialize(map, ovrs, pickExcludes, hilite, flashed) {
88
66
  const nFeatures = map.numFeatures;
89
- const dims = computeWidthAndHeight(nFeatures, 2);
67
+ const dims = (0, VertexTable_1.computeDimensions)(nFeatures, 3, 0, System_1.System.instance.maxTextureSize);
90
68
  const width = dims.width;
91
69
  const height = dims.height;
92
70
  (0, core_bentley_1.assert)(width * height >= nFeatures);
@@ -108,6 +86,25 @@ class FeatureOverrides {
108
86
  }
109
87
  lut.update(updater);
110
88
  }
89
+ setTransparency(transparency, viewDependentTransparency, data, transparencyByteIndex, curFlags) {
90
+ // transparency in range [0, 1]...convert to byte and invert so 0=transparent...
91
+ let alpha = 1.0 - transparency;
92
+ alpha = Math.floor(0xff * alpha + 0.5);
93
+ if ((0xff - alpha) < DisplayParams_1.DisplayParams.minTransparency)
94
+ alpha = 0xff;
95
+ data.setByteAtIndex(transparencyByteIndex, alpha);
96
+ if (0xff === alpha) {
97
+ this._anyOpaque = true;
98
+ }
99
+ else {
100
+ this._anyTranslucent = true;
101
+ if (!viewDependentTransparency) {
102
+ curFlags |= 1024 /* OvrFlags.ViewIndependentTransparency */;
103
+ this._anyViewIndependentTranslucent = true;
104
+ }
105
+ }
106
+ return curFlags;
107
+ }
111
108
  buildLookupTable(data, map, ovr, pickExclude, flashedIdParts, hilites) {
112
109
  const allowHilite = true !== this._options.noHilite;
113
110
  const allowFlash = true !== this._options.noFlash;
@@ -117,7 +114,7 @@ class FeatureOverrides {
117
114
  this._anyOpaque = this._anyTranslucent = this._anyViewIndependentTranslucent = this._anyHilited = false;
118
115
  let nHidden = 0;
119
116
  let nOverridden = 0;
120
- // NB: We currently use 2 RGBA values per feature as follows:
117
+ // NB: We currently use 3 RGBA values per feature as follows:
121
118
  // [0]
122
119
  // RG = override flags (see OvrFlags enum)
123
120
  // B = line code
@@ -125,9 +122,12 @@ class FeatureOverrides {
125
122
  // [1]
126
123
  // RGB = rgb
127
124
  // A = alpha
125
+ // [2]
126
+ // RGB = line rgb
127
+ // A = line alpha
128
128
  for (const feature of map.iterable(scratchPackedFeature)) {
129
129
  const i = feature.index;
130
- const dataIndex = i * 4 * 2;
130
+ const dataIndex = i * 4 * 3;
131
131
  if (prevModelId.lower !== feature.modelId.lower || prevModelId.upper !== feature.modelId.upper) {
132
132
  prevModelId.lower = feature.modelId.lower;
133
133
  prevModelId.upper = feature.modelId.upper;
@@ -140,7 +140,7 @@ class FeatureOverrides {
140
140
  // (The latter is how we clip the classified model using the classifiers).
141
141
  if (undefined === app) {
142
142
  // The feature is not visible. We don't care about any of the other overrides, because we're not going to render it.
143
- data.setOvrFlagsAtIndex(dataIndex, 1 /* OvrFlags.Visibility */);
143
+ data.setOvrFlagsAtIndex(dataIndex, 4096 /* OvrFlags.Visibility */);
144
144
  nHidden++;
145
145
  nOverridden++;
146
146
  continue;
@@ -162,23 +162,20 @@ class FeatureOverrides {
162
162
  data.setByteAtIndex(dataIndex + 6, rgb.b);
163
163
  }
164
164
  if (undefined !== app.transparency) {
165
- // transparency in range [0, 1]...convert to byte and invert so 0=transparent...
166
165
  flags |= 4 /* OvrFlags.Alpha */;
167
- let alpha = 1.0 - app.transparency;
168
- alpha = Math.floor(0xff * alpha + 0.5);
169
- if ((0xff - alpha) < DisplayParams_1.DisplayParams.minTransparency)
170
- alpha = 0xff;
171
- data.setByteAtIndex(dataIndex + 7, alpha);
172
- if (0xff === alpha) {
173
- this._anyOpaque = true;
174
- }
175
- else {
176
- this._anyTranslucent = true;
177
- if (!app.viewDependentTransparency) {
178
- flags |= 1024 /* OvrFlags.ViewIndependentTransparency */;
179
- this._anyViewIndependentTranslucent = true;
180
- }
181
- }
166
+ flags = this.setTransparency(app.transparency, app.viewDependentTransparency, data, dataIndex + 7, flags);
167
+ }
168
+ const lineRgb = app.getLineRgb();
169
+ if (lineRgb) {
170
+ flags |= 1 /* OvrFlags.LineRgb */;
171
+ data.setByteAtIndex(dataIndex + 8, lineRgb.r);
172
+ data.setByteAtIndex(dataIndex + 9, lineRgb.g);
173
+ data.setByteAtIndex(dataIndex + 10, lineRgb.b);
174
+ }
175
+ const lineTransp = app.getLineTransparency();
176
+ if (undefined !== lineTransp) {
177
+ flags |= 8 /* OvrFlags.LineAlpha */;
178
+ flags = this.setTransparency(lineTransp, app.viewDependentTransparency, data, dataIndex + 11, flags);
182
179
  }
183
180
  if (app.overridesWeight && app.weight) {
184
181
  flags |= 128 /* OvrFlags.Weight */;
@@ -193,7 +190,7 @@ class FeatureOverrides {
193
190
  data.setByteAtIndex(dataIndex + 2, lineCode);
194
191
  }
195
192
  if (app.ignoresMaterial)
196
- flags |= 8 /* OvrFlags.IgnoreMaterial */;
193
+ flags |= 8192 /* OvrFlags.IgnoreMaterial */;
197
194
  if (allowFlash && undefined !== flashedIdParts && feature.elementId.lower === flashedIdParts.lower && feature.elementId.upper === flashedIdParts.upper)
198
195
  flags |= 16 /* OvrFlags.Flashed */;
199
196
  if (pickExclude?.hasPair(feature.elementId)) {
@@ -218,9 +215,9 @@ class FeatureOverrides {
218
215
  const intersect = "intersection" === hilites.modelSubCategoryMode;
219
216
  this._anyOverridden = this._anyHilited = false;
220
217
  for (const feature of map.iterable(scratchPackedFeature)) {
221
- const dataIndex = feature.index * 4 * 2;
218
+ const dataIndex = feature.index * 4 * 3;
222
219
  const oldFlags = data.getOvrFlagsAtIndex(dataIndex);
223
- if (0 /* OvrFlags.None */ !== (oldFlags & 1 /* OvrFlags.Visibility */)) {
220
+ if (0 /* OvrFlags.None */ !== (oldFlags & 4096 /* OvrFlags.Visibility */)) {
224
221
  // If it's invisible, none of the other flags matter. We can't flash it and don't want to hilite it.
225
222
  this._anyOverridden = true;
226
223
  continue;
@@ -254,9 +251,9 @@ class FeatureOverrides {
254
251
  this._anyOverridden = false;
255
252
  const elemId = { lower: 0, upper: 0 };
256
253
  for (let i = 0; i < map.numFeatures; i++) {
257
- const dataIndex = i * 4 * 2;
254
+ const dataIndex = i * 4 * 3;
258
255
  const oldFlags = data.getOvrFlagsAtIndex(dataIndex);
259
- if (0 /* OvrFlags.None */ !== (oldFlags & 1 /* OvrFlags.Visibility */)) {
256
+ if (0 /* OvrFlags.None */ !== (oldFlags & 4096 /* OvrFlags.Visibility */)) {
260
257
  // If it's invisible, none of the other flags matter and we can't flash it.
261
258
  this._anyOverridden = true;
262
259
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureOverrides.js","sourceRoot":"","sources":["../../../../src/render/webgl/FeatureOverrides.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, Id64 } from \"@itwin/core-bentley\";\r\nimport { PackedFeature, RenderFeatureTable } from \"@itwin/core-common\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { LineCode } from \"./LineCode\";\r\nimport { GL } from \"./GL\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { EmphasisFlags, TextureUnit } from \"./RenderFlags\";\r\nimport { sync, SyncObserver } from \"./Sync\";\r\nimport { System } from \"./System\";\r\nimport { Hilites, Target } from \"./Target\";\r\nimport { Texture2DDataUpdater, Texture2DHandle, TextureHandle } from \"./Texture\";\r\nimport { BatchOptions } from \"../../common/render/BatchOptions\";\r\nimport { DisplayParams } from \"../../common/internal/render/DisplayParams\";\r\nimport { OvrFlags } from \"../../common/internal/render/OvrFlags\";\r\n\r\nfunction computeWidthAndHeight(nEntries: number, nRgbaPerEntry: number, nExtraRgba: number = 0, nTables: number = 1): { width: number, height: number } {\r\n const maxSize = System.instance.maxTextureSize;\r\n const nRgba = nEntries * nRgbaPerEntry * nTables + nExtraRgba;\r\n\r\n if (nRgba < maxSize)\r\n return { width: nRgba, height: 1 };\r\n\r\n // Make roughly square to reduce unused space in last row\r\n let width = Math.ceil(Math.sqrt(nRgba));\r\n\r\n // Ensure a given entry's RGBA values all fit on the same row.\r\n const remainder = width % nRgbaPerEntry;\r\n if (0 !== remainder) {\r\n width += nRgbaPerEntry - remainder;\r\n }\r\n\r\n // Compute height\r\n const height = Math.ceil(nRgba / width);\r\n\r\n assert(height <= maxSize);\r\n assert(width <= maxSize);\r\n assert(width * height >= nRgba);\r\n assert(Math.floor(height) === height);\r\n assert(Math.floor(width) === width);\r\n\r\n // Row padding should never be necessary...\r\n assert(0 === width % nRgbaPerEntry);\r\n\r\n return { width, height };\r\n}\r\n\r\nexport function isFeatureHilited(feature: PackedFeature, hilites: Hilites, isModelHilited: boolean): boolean {\r\n if (hilites.isEmpty)\r\n return false;\r\n\r\n if (\"union\" === hilites.modelSubCategoryMode)\r\n return isModelHilited || hilites.elements.hasPair(feature.elementId) || hilites.subcategories.hasPair(feature.subCategoryId);\r\n\r\n return hilites.elements.hasPair(feature.elementId) || (isModelHilited && hilites.subcategories.hasPair(feature.subCategoryId));\r\n}\r\n\r\n/** @internal */\r\nexport type FeatureOverridesCleanup = () => void;\r\n\r\nconst scratchPackedFeature = PackedFeature.createWithIndex();\r\n\r\n/** @internal */\r\nexport class FeatureOverrides implements WebGLDisposable {\r\n public readonly target: Target;\r\n private readonly _options: BatchOptions;\r\n private _lut?: Texture2DHandle;\r\n private _mostRecentSymbologyOverrides?: FeatureSymbology.Overrides;\r\n private _lastFlashId = Id64.invalid;\r\n private _hiliteSyncObserver: SyncObserver = {};\r\n private _pickExclusionsSyncObserver: SyncObserver = {};\r\n private _anyOverridden = true;\r\n private _allHidden = true;\r\n private _anyTranslucent = true;\r\n private _anyViewIndependentTranslucent = true;\r\n private _anyOpaque = true;\r\n private _anyHilited = true;\r\n private _lutParams = new Float32Array(2);\r\n private _uniformSymbologyFlags: EmphasisFlags = EmphasisFlags.None;\r\n private _cleanup?: FeatureOverridesCleanup;\r\n\r\n public get anyOverridden() { return this._anyOverridden; }\r\n public get allHidden() { return this._allHidden; }\r\n public get anyTranslucent() { return this._anyTranslucent; }\r\n public get anyViewIndependentTranslucent() { return this._anyViewIndependentTranslucent; }\r\n public get anyOpaque() { return this._anyOpaque; }\r\n public get anyHilited() { return this._anyHilited; }\r\n\r\n /** For tests. */\r\n public get lutData(): Uint8Array | undefined { return this._lut?.dataBytes; }\r\n public get byteLength(): number { return undefined !== this._lut ? this._lut.bytesUsed : 0; }\r\n public get isUniform() { return 2 === this._lutParams[0] && 1 === this._lutParams[1]; }\r\n\r\n private updateUniformSymbologyFlags(): void {\r\n this._uniformSymbologyFlags = EmphasisFlags.None;\r\n if (!this.isUniform || !this._lut)\r\n return;\r\n\r\n let flags = this._lut.dataBytes![0];\r\n if (0 !== (flags & OvrFlags.Flashed))\r\n this._uniformSymbologyFlags |= EmphasisFlags.Flashed;\r\n\r\n if (0 !== (flags & OvrFlags.NonLocatable))\r\n this._uniformSymbologyFlags |= EmphasisFlags.NonLocatable;\r\n\r\n if (!this._anyHilited)\r\n return;\r\n\r\n flags = this._lut.dataBytes![1] << 8;\r\n if (0 !== (flags & OvrFlags.Hilited))\r\n this._uniformSymbologyFlags |= EmphasisFlags.Hilite;\r\n\r\n if (0 !== (flags & OvrFlags.Emphasized))\r\n this._uniformSymbologyFlags |= EmphasisFlags.Emphasized;\r\n }\r\n\r\n public getUniformOverrides(): Uint8Array {\r\n assert(this.isUniform);\r\n assert(undefined !== this._lut);\r\n assert(undefined !== this._lut.dataBytes);\r\n return this._lut.dataBytes;\r\n }\r\n\r\n private _initialize(map: RenderFeatureTable, ovrs: FeatureSymbology.Overrides, pickExcludes: Id64.Uint32Set, hilite: Hilites, flashed?: Id64.Uint32Pair): Texture2DHandle | undefined {\r\n const nFeatures = map.numFeatures;\r\n const dims = computeWidthAndHeight(nFeatures, 2);\r\n const width = dims.width;\r\n const height = dims.height;\r\n assert(width * height >= nFeatures);\r\n\r\n this._lutParams[0] = width;\r\n this._lutParams[1] = height;\r\n\r\n const data = new Uint8Array(width * height * 4);\r\n const creator = new Texture2DDataUpdater(data);\r\n this.buildLookupTable(creator, map, ovrs, pickExcludes, flashed, hilite);\r\n\r\n return TextureHandle.createForData(width, height, data, true, GL.Texture.WrapMode.ClampToEdge);\r\n }\r\n\r\n private _update(map: RenderFeatureTable, lut: Texture2DHandle, pickExcludes: Id64.Uint32Set | undefined, flashed?: Id64.Uint32Pair, hilites?: Hilites, ovrs?: FeatureSymbology.Overrides) {\r\n const updater = new Texture2DDataUpdater(lut.dataBytes!);\r\n\r\n if (undefined === ovrs) {\r\n this.updateFlashedAndHilited(updater, map, pickExcludes, flashed, hilites);\r\n } else {\r\n assert(undefined !== hilites);\r\n this.buildLookupTable(updater, map, ovrs, pickExcludes, flashed, hilites);\r\n }\r\n\r\n lut.update(updater);\r\n }\r\n\r\n private buildLookupTable(data: Texture2DDataUpdater, map: RenderFeatureTable, ovr: FeatureSymbology.Overrides, pickExclude: Id64.Uint32Set | undefined, flashedIdParts: Id64.Uint32Pair | undefined, hilites: Hilites) {\r\n const allowHilite = true !== this._options.noHilite;\r\n const allowFlash = true !== this._options.noFlash;\r\n const allowEmphasis = true !== this._options.noEmphasis;\r\n\r\n let isModelHilited = false;\r\n const prevModelId = { lower: -1, upper: -1 };\r\n\r\n this._anyOpaque = this._anyTranslucent = this._anyViewIndependentTranslucent = this._anyHilited = false;\r\n\r\n let nHidden = 0;\r\n let nOverridden = 0;\r\n\r\n // NB: We currently use 2 RGBA values per feature as follows:\r\n // [0]\r\n // RG = override flags (see OvrFlags enum)\r\n // B = line code\r\n // A = line weight (if we need an extra byte in future, could combine code+weight into a single byte).\r\n // [1]\r\n // RGB = rgb\r\n // A = alpha\r\n for (const feature of map.iterable(scratchPackedFeature)) {\r\n const i = feature.index;\r\n const dataIndex = i * 4 * 2;\r\n\r\n if (prevModelId.lower !== feature.modelId.lower || prevModelId.upper !== feature.modelId.upper) {\r\n prevModelId.lower = feature.modelId.lower;\r\n prevModelId.upper = feature.modelId.upper;\r\n isModelHilited = allowHilite && hilites.models.hasPair(feature.modelId);\r\n }\r\n\r\n const app = this.target.currentBranch.getFeatureAppearance(\r\n ovr,\r\n feature.elementId.lower, feature.elementId.upper,\r\n feature.subCategoryId.lower, feature.subCategoryId.upper,\r\n feature.geometryClass,\r\n feature.modelId.lower, feature.modelId.upper,\r\n map.type, feature.animationNodeId);\r\n\r\n // NB: If the appearance is fully transparent, then:\r\n // - For normal (\"primary\") models, getAppearance() returns undefined.\r\n // - For classifier models, getAppearance() returns the appearance, and classification shader will discard fully-transparent classified pixels.\r\n // (The latter is how we clip the classified model using the classifiers).\r\n if (undefined === app) {\r\n // The feature is not visible. We don't care about any of the other overrides, because we're not going to render it.\r\n data.setOvrFlagsAtIndex(dataIndex, OvrFlags.Visibility);\r\n nHidden++;\r\n nOverridden++;\r\n continue;\r\n }\r\n\r\n let flags = app.nonLocatable ? OvrFlags.NonLocatable : OvrFlags.None;\r\n if (allowHilite && isFeatureHilited(feature, hilites, isModelHilited)) {\r\n flags |= OvrFlags.Hilited;\r\n this._anyHilited = true;\r\n }\r\n\r\n if (allowEmphasis && app.emphasized) {\r\n flags |= OvrFlags.Emphasized;\r\n this._anyHilited = true;\r\n }\r\n\r\n if (app.overridesRgb && app.rgb) {\r\n flags |= OvrFlags.Rgb;\r\n const rgb = app.rgb;\r\n data.setByteAtIndex(dataIndex + 4, rgb.r);\r\n data.setByteAtIndex(dataIndex + 5, rgb.g);\r\n data.setByteAtIndex(dataIndex + 6, rgb.b);\r\n }\r\n\r\n if (undefined !== app.transparency) {\r\n // transparency in range [0, 1]...convert to byte and invert so 0=transparent...\r\n flags |= OvrFlags.Alpha;\r\n let alpha = 1.0 - app.transparency;\r\n alpha = Math.floor(0xff * alpha + 0.5);\r\n if ((0xff - alpha) < DisplayParams.minTransparency)\r\n alpha = 0xff;\r\n\r\n data.setByteAtIndex(dataIndex + 7, alpha);\r\n if (0xff === alpha) {\r\n this._anyOpaque = true;\r\n } else {\r\n this._anyTranslucent = true;\r\n if (!app.viewDependentTransparency) {\r\n flags |= OvrFlags.ViewIndependentTransparency;\r\n this._anyViewIndependentTranslucent = true;\r\n }\r\n }\r\n }\r\n\r\n if (app.overridesWeight && app.weight) {\r\n flags |= OvrFlags.Weight;\r\n let weight = app.weight;\r\n weight = Math.min(31, weight);\r\n weight = Math.max(1, weight);\r\n data.setByteAtIndex(dataIndex + 3, weight);\r\n }\r\n\r\n if (app.overridesLinePixels && app.linePixels) {\r\n flags |= OvrFlags.LineCode;\r\n const lineCode = LineCode.valueFromLinePixels(app.linePixels);\r\n data.setByteAtIndex(dataIndex + 2, lineCode);\r\n }\r\n\r\n if (app.ignoresMaterial)\r\n flags |= OvrFlags.IgnoreMaterial;\r\n\r\n if (allowFlash && undefined !== flashedIdParts && feature.elementId.lower === flashedIdParts.lower && feature.elementId.upper === flashedIdParts.upper)\r\n flags |= OvrFlags.Flashed;\r\n\r\n if (pickExclude?.hasPair(feature.elementId)) {\r\n flags |= OvrFlags.InvisibleDuringPick;\r\n ++nHidden;\r\n }\r\n\r\n data.setOvrFlagsAtIndex(dataIndex, flags);\r\n if (OvrFlags.None !== flags)\r\n nOverridden++;\r\n }\r\n\r\n this._allHidden = (nHidden === map.numFeatures);\r\n this._anyOverridden = (nOverridden > 0);\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n // NB: If hilites is undefined, it means that the hilited set has not changed.\r\n private updateFlashedAndHilited(data: Texture2DDataUpdater, map: RenderFeatureTable, pickExcludes: Id64.Uint32Set | undefined, flashed?: Id64.Uint32Pair, hilites?: Hilites) {\r\n if (!hilites || true === this._options.noHilite) {\r\n this.updateFlashed(data, map, pickExcludes, flashed);\r\n return;\r\n }\r\n\r\n const allowFlash = true !== this._options.noFlash;\r\n const intersect = \"intersection\" === hilites.modelSubCategoryMode;\r\n\r\n this._anyOverridden = this._anyHilited = false;\r\n for (const feature of map.iterable(scratchPackedFeature)) {\r\n const dataIndex = feature.index * 4 * 2;\r\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\r\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\r\n // If it's invisible, none of the other flags matter. We can't flash it and don't want to hilite it.\r\n this._anyOverridden = true;\r\n continue;\r\n }\r\n\r\n const isModelHilited = hilites.models.hasPair(feature.modelId);\r\n let isHilited = isModelHilited && !intersect;\r\n if (!isHilited)\r\n isHilited = hilites.elements.hasPair(feature.elementId);\r\n\r\n if (!isHilited)\r\n if (isModelHilited || !intersect)\r\n isHilited = hilites.subcategories.hasPair(feature.subCategoryId);\r\n\r\n let isFlashed = false;\r\n if (flashed && allowFlash)\r\n isFlashed = feature.elementId.lower === flashed.lower && feature.elementId.upper === flashed.upper;\r\n\r\n let newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\r\n newFlags = isHilited ? (newFlags | OvrFlags.Hilited) : (newFlags & ~OvrFlags.Hilited);\r\n if (pickExcludes) {\r\n newFlags = pickExcludes.hasPair(feature.elementId) ? (newFlags | OvrFlags.InvisibleDuringPick) : (newFlags & ~OvrFlags.InvisibleDuringPick);\r\n }\r\n\r\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\r\n if (OvrFlags.None !== newFlags) {\r\n this._anyOverridden = true;\r\n this._anyHilited = this._anyHilited || isHilited || OvrFlags.None !== (newFlags & OvrFlags.Emphasized);\r\n }\r\n }\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n private updateFlashed(data: Texture2DDataUpdater, map: RenderFeatureTable, pickExcludes: Id64.Uint32Set | undefined, flashed?: Id64.Uint32Pair): void {\r\n if (true === this._options.noFlash && !pickExcludes)\r\n return;\r\n\r\n this._anyOverridden = false;\r\n const elemId = { lower: 0, upper: 0 };\r\n for (let i = 0; i < map.numFeatures; i++) {\r\n const dataIndex = i * 4 * 2;\r\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\r\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\r\n // If it's invisible, none of the other flags matter and we can't flash it.\r\n this._anyOverridden = true;\r\n continue;\r\n }\r\n\r\n let isFlashed = false;\r\n let thisElemId: Id64.Uint32Pair | undefined;\r\n if (flashed && !this._options.noFlash) {\r\n thisElemId = map.getElementIdPair(i, elemId);\r\n isFlashed = thisElemId.lower === flashed.lower && thisElemId.upper === flashed.upper;\r\n }\r\n\r\n let newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\r\n if (pickExcludes) {\r\n if (!thisElemId) {\r\n thisElemId = map.getElementIdPair(i, elemId);\r\n }\r\n\r\n newFlags = pickExcludes.hasPair(thisElemId) ? (newFlags | OvrFlags.InvisibleDuringPick) : (newFlags & ~OvrFlags.InvisibleDuringPick);\r\n }\r\n\r\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\r\n if (OvrFlags.None !== newFlags)\r\n this._anyOverridden = true;\r\n }\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n private constructor(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\r\n this.target = target;\r\n this._options = options;\r\n this._cleanup = cleanup;\r\n }\r\n\r\n public static createFromTarget(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\r\n return new FeatureOverrides(target, options, cleanup);\r\n }\r\n\r\n public get isDisposed(): boolean { return undefined === this._lut; }\r\n\r\n public dispose() {\r\n this._lut = dispose(this._lut);\r\n if (this._cleanup) {\r\n this._cleanup();\r\n this._cleanup = undefined;\r\n }\r\n }\r\n\r\n public initFromMap(map: RenderFeatureTable) {\r\n const nFeatures = map.numFeatures;\r\n assert(0 < nFeatures);\r\n\r\n this._lut = dispose(this._lut);\r\n\r\n const ovrs: FeatureSymbology.Overrides = this.target.currentFeatureSymbologyOverrides;\r\n this._mostRecentSymbologyOverrides = ovrs;\r\n const hilite = this.target.hilites;\r\n this._lut = this._initialize(map, ovrs, this.target.pickExclusions, hilite, this.target.flashed);\r\n this._lastFlashId = Id64.invalid;\r\n this._hiliteSyncObserver = {};\r\n this._pickExclusionsSyncObserver = {};\r\n }\r\n\r\n public update(features: RenderFeatureTable) {\r\n let ovrs: FeatureSymbology.Overrides | undefined = this.target.currentFeatureSymbologyOverrides;\r\n const ovrsUpdated = ovrs !== this._mostRecentSymbologyOverrides;\r\n if (ovrsUpdated)\r\n this._mostRecentSymbologyOverrides = ovrs;\r\n else\r\n ovrs = undefined;\r\n\r\n const flashedId = this.target.flashedId;\r\n\r\n const hilite = this.target.hilites;\r\n const hiliteUpdated = !sync(this.target.hiliteSyncTarget, this._hiliteSyncObserver);\r\n const pickExcludesUpdated = !sync(this.target.pickExclusionsSyncTarget, this._pickExclusionsSyncObserver);\r\n\r\n if (ovrsUpdated || hiliteUpdated || flashedId !== this._lastFlashId || pickExcludesUpdated) {\r\n // _lut can be undefined if context was lost, (gl.createTexture returns null)\r\n if (this._lut) {\r\n this._update(\r\n features,\r\n this._lut,\r\n undefined !== ovrs || pickExcludesUpdated ? this.target.pickExclusions : undefined,\r\n this.target.flashed,\r\n undefined !== ovrs || hiliteUpdated ? hilite : undefined, ovrs,\r\n );\r\n }\r\n\r\n this._lastFlashId = flashedId;\r\n }\r\n }\r\n\r\n public bindLUTParams(uniform: UniformHandle): void {\r\n uniform.setUniform2fv(this._lutParams);\r\n }\r\n\r\n public bindLUT(uniform: UniformHandle): void {\r\n if (this._lut)\r\n this._lut.bindSampler(uniform, TextureUnit.FeatureSymbology);\r\n }\r\n\r\n public bindUniformSymbologyFlags(uniform: UniformHandle): void {\r\n uniform.setUniform1f(this._uniformSymbologyFlags);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"FeatureOverrides.js","sourceRoot":"","sources":["../../../../src/render/webgl/FeatureOverrides.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, Id64 } from \"@itwin/core-bentley\";\r\nimport { PackedFeature, RenderFeatureTable } from \"@itwin/core-common\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { LineCode } from \"./LineCode\";\r\nimport { GL } from \"./GL\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { EmphasisFlags, TextureUnit } from \"./RenderFlags\";\r\nimport { sync, SyncObserver } from \"./Sync\";\r\nimport { System } from \"./System\";\r\nimport { Hilites, Target } from \"./Target\";\r\nimport { Texture2DDataUpdater, Texture2DHandle, TextureHandle } from \"./Texture\";\r\nimport { BatchOptions } from \"../../common/render/BatchOptions\";\r\nimport { DisplayParams } from \"../../common/internal/render/DisplayParams\";\r\nimport { OvrFlags } from \"../../common/internal/render/OvrFlags\";\r\nimport { computeDimensions } from \"../../common/internal/render/VertexTable\";\r\n\r\nexport function isFeatureHilited(feature: PackedFeature, hilites: Hilites, isModelHilited: boolean): boolean {\r\n if (hilites.isEmpty)\r\n return false;\r\n\r\n if (\"union\" === hilites.modelSubCategoryMode)\r\n return isModelHilited || hilites.elements.hasPair(feature.elementId) || hilites.subcategories.hasPair(feature.subCategoryId);\r\n\r\n return hilites.elements.hasPair(feature.elementId) || (isModelHilited && hilites.subcategories.hasPair(feature.subCategoryId));\r\n}\r\n\r\n/** @internal */\r\nexport type FeatureOverridesCleanup = () => void;\r\n\r\nconst scratchPackedFeature = PackedFeature.createWithIndex();\r\n\r\n/** @internal */\r\nexport class FeatureOverrides implements WebGLDisposable {\r\n public readonly target: Target;\r\n private readonly _options: BatchOptions;\r\n private _lut?: Texture2DHandle;\r\n private _mostRecentSymbologyOverrides?: FeatureSymbology.Overrides;\r\n private _lastFlashId = Id64.invalid;\r\n private _hiliteSyncObserver: SyncObserver = {};\r\n private _pickExclusionsSyncObserver: SyncObserver = {};\r\n private _anyOverridden = true;\r\n private _allHidden = true;\r\n private _anyTranslucent = true;\r\n private _anyViewIndependentTranslucent = true;\r\n private _anyOpaque = true;\r\n private _anyHilited = true;\r\n private _lutParams = new Float32Array(2);\r\n private _uniformSymbologyFlags: EmphasisFlags = EmphasisFlags.None;\r\n private _cleanup?: FeatureOverridesCleanup;\r\n\r\n public get anyOverridden() { return this._anyOverridden; }\r\n public get allHidden() { return this._allHidden; }\r\n public get anyTranslucent() { return this._anyTranslucent; }\r\n public get anyViewIndependentTranslucent() { return this._anyViewIndependentTranslucent; }\r\n public get anyOpaque() { return this._anyOpaque; }\r\n public get anyHilited() { return this._anyHilited; }\r\n\r\n /** For tests. */\r\n public get lutData(): Uint8Array | undefined { return this._lut?.dataBytes; }\r\n public get byteLength(): number { return undefined !== this._lut ? this._lut.bytesUsed : 0; }\r\n public get isUniform() { return 3 === this._lutParams[0] && 1 === this._lutParams[1]; }\r\n\r\n private updateUniformSymbologyFlags(): void {\r\n this._uniformSymbologyFlags = EmphasisFlags.None;\r\n if (!this.isUniform || !this._lut)\r\n return;\r\n\r\n let flags = this._lut.dataBytes![0];\r\n if (0 !== (flags & OvrFlags.Flashed))\r\n this._uniformSymbologyFlags |= EmphasisFlags.Flashed;\r\n\r\n if (0 !== (flags & OvrFlags.NonLocatable))\r\n this._uniformSymbologyFlags |= EmphasisFlags.NonLocatable;\r\n\r\n if (!this._anyHilited)\r\n return;\r\n\r\n flags = this._lut.dataBytes![1] << 8;\r\n if (0 !== (flags & OvrFlags.Hilited))\r\n this._uniformSymbologyFlags |= EmphasisFlags.Hilite;\r\n\r\n if (0 !== (flags & OvrFlags.Emphasized))\r\n this._uniformSymbologyFlags |= EmphasisFlags.Emphasized;\r\n }\r\n\r\n public getUniformOverrides(): Uint8Array {\r\n assert(this.isUniform);\r\n assert(undefined !== this._lut);\r\n assert(undefined !== this._lut.dataBytes);\r\n return this._lut.dataBytes;\r\n }\r\n\r\n private _initialize(map: RenderFeatureTable, ovrs: FeatureSymbology.Overrides, pickExcludes: Id64.Uint32Set, hilite: Hilites, flashed?: Id64.Uint32Pair): Texture2DHandle | undefined {\r\n const nFeatures = map.numFeatures;\r\n const dims = computeDimensions(nFeatures, 3, 0, System.instance.maxTextureSize);\r\n const width = dims.width;\r\n const height = dims.height;\r\n assert(width * height >= nFeatures);\r\n\r\n this._lutParams[0] = width;\r\n this._lutParams[1] = height;\r\n\r\n const data = new Uint8Array(width * height * 4);\r\n const creator = new Texture2DDataUpdater(data);\r\n this.buildLookupTable(creator, map, ovrs, pickExcludes, flashed, hilite);\r\n\r\n return TextureHandle.createForData(width, height, data, true, GL.Texture.WrapMode.ClampToEdge);\r\n }\r\n\r\n private _update(map: RenderFeatureTable, lut: Texture2DHandle, pickExcludes: Id64.Uint32Set | undefined, flashed?: Id64.Uint32Pair, hilites?: Hilites, ovrs?: FeatureSymbology.Overrides) {\r\n const updater = new Texture2DDataUpdater(lut.dataBytes!);\r\n\r\n if (undefined === ovrs) {\r\n this.updateFlashedAndHilited(updater, map, pickExcludes, flashed, hilites);\r\n } else {\r\n assert(undefined !== hilites);\r\n this.buildLookupTable(updater, map, ovrs, pickExcludes, flashed, hilites);\r\n }\r\n\r\n lut.update(updater);\r\n }\r\n\r\n private setTransparency(transparency: number, viewDependentTransparency: true | undefined, data: Texture2DDataUpdater, transparencyByteIndex: number, curFlags: OvrFlags): OvrFlags {\r\n // transparency in range [0, 1]...convert to byte and invert so 0=transparent...\r\n let alpha = 1.0 - transparency;\r\n alpha = Math.floor(0xff * alpha + 0.5);\r\n if ((0xff - alpha) < DisplayParams.minTransparency)\r\n alpha = 0xff;\r\n\r\n data.setByteAtIndex(transparencyByteIndex, alpha);\r\n if (0xff === alpha) {\r\n this._anyOpaque = true;\r\n } else {\r\n this._anyTranslucent = true;\r\n if (!viewDependentTransparency) {\r\n curFlags |= OvrFlags.ViewIndependentTransparency;\r\n this._anyViewIndependentTranslucent = true;\r\n }\r\n }\r\n\r\n return curFlags;\r\n }\r\n\r\n private buildLookupTable(data: Texture2DDataUpdater, map: RenderFeatureTable, ovr: FeatureSymbology.Overrides, pickExclude: Id64.Uint32Set | undefined, flashedIdParts: Id64.Uint32Pair | undefined, hilites: Hilites) {\r\n const allowHilite = true !== this._options.noHilite;\r\n const allowFlash = true !== this._options.noFlash;\r\n const allowEmphasis = true !== this._options.noEmphasis;\r\n\r\n let isModelHilited = false;\r\n const prevModelId = { lower: -1, upper: -1 };\r\n\r\n this._anyOpaque = this._anyTranslucent = this._anyViewIndependentTranslucent = this._anyHilited = false;\r\n\r\n let nHidden = 0;\r\n let nOverridden = 0;\r\n\r\n // NB: We currently use 3 RGBA values per feature as follows:\r\n // [0]\r\n // RG = override flags (see OvrFlags enum)\r\n // B = line code\r\n // A = line weight (if we need an extra byte in future, could combine code+weight into a single byte).\r\n // [1]\r\n // RGB = rgb\r\n // A = alpha\r\n // [2]\r\n // RGB = line rgb\r\n // A = line alpha\r\n for (const feature of map.iterable(scratchPackedFeature)) {\r\n const i = feature.index;\r\n const dataIndex = i * 4 * 3;\r\n\r\n if (prevModelId.lower !== feature.modelId.lower || prevModelId.upper !== feature.modelId.upper) {\r\n prevModelId.lower = feature.modelId.lower;\r\n prevModelId.upper = feature.modelId.upper;\r\n isModelHilited = allowHilite && hilites.models.hasPair(feature.modelId);\r\n }\r\n\r\n const app = this.target.currentBranch.getFeatureAppearance(\r\n ovr,\r\n feature.elementId.lower, feature.elementId.upper,\r\n feature.subCategoryId.lower, feature.subCategoryId.upper,\r\n feature.geometryClass,\r\n feature.modelId.lower, feature.modelId.upper,\r\n map.type, feature.animationNodeId);\r\n\r\n // NB: If the appearance is fully transparent, then:\r\n // - For normal (\"primary\") models, getAppearance() returns undefined.\r\n // - For classifier models, getAppearance() returns the appearance, and classification shader will discard fully-transparent classified pixels.\r\n // (The latter is how we clip the classified model using the classifiers).\r\n if (undefined === app) {\r\n // The feature is not visible. We don't care about any of the other overrides, because we're not going to render it.\r\n data.setOvrFlagsAtIndex(dataIndex, OvrFlags.Visibility);\r\n nHidden++;\r\n nOverridden++;\r\n continue;\r\n }\r\n\r\n let flags = app.nonLocatable ? OvrFlags.NonLocatable : OvrFlags.None;\r\n if (allowHilite && isFeatureHilited(feature, hilites, isModelHilited)) {\r\n flags |= OvrFlags.Hilited;\r\n this._anyHilited = true;\r\n }\r\n\r\n if (allowEmphasis && app.emphasized) {\r\n flags |= OvrFlags.Emphasized;\r\n this._anyHilited = true;\r\n }\r\n\r\n if (app.overridesRgb && app.rgb) {\r\n flags |= OvrFlags.Rgb;\r\n const rgb = app.rgb;\r\n data.setByteAtIndex(dataIndex + 4, rgb.r);\r\n data.setByteAtIndex(dataIndex + 5, rgb.g);\r\n data.setByteAtIndex(dataIndex + 6, rgb.b);\r\n }\r\n\r\n if (undefined !== app.transparency) {\r\n flags |= OvrFlags.Alpha;\r\n flags = this.setTransparency(app.transparency, app.viewDependentTransparency, data, dataIndex + 7, flags);\r\n }\r\n\r\n const lineRgb = app.getLineRgb();\r\n if (lineRgb) {\r\n flags |= OvrFlags.LineRgb;\r\n data.setByteAtIndex(dataIndex + 8, lineRgb.r);\r\n data.setByteAtIndex(dataIndex + 9, lineRgb.g);\r\n data.setByteAtIndex(dataIndex + 10, lineRgb.b);\r\n }\r\n\r\n const lineTransp = app.getLineTransparency();\r\n if (undefined !== lineTransp) {\r\n flags |= OvrFlags.LineAlpha;\r\n flags = this.setTransparency(lineTransp, app.viewDependentTransparency, data, dataIndex + 11, flags);\r\n }\r\n\r\n if (app.overridesWeight && app.weight) {\r\n flags |= OvrFlags.Weight;\r\n let weight = app.weight;\r\n weight = Math.min(31, weight);\r\n weight = Math.max(1, weight);\r\n data.setByteAtIndex(dataIndex + 3, weight);\r\n }\r\n\r\n if (app.overridesLinePixels && app.linePixels) {\r\n flags |= OvrFlags.LineCode;\r\n const lineCode = LineCode.valueFromLinePixels(app.linePixels);\r\n data.setByteAtIndex(dataIndex + 2, lineCode);\r\n }\r\n\r\n if (app.ignoresMaterial)\r\n flags |= OvrFlags.IgnoreMaterial;\r\n\r\n if (allowFlash && undefined !== flashedIdParts && feature.elementId.lower === flashedIdParts.lower && feature.elementId.upper === flashedIdParts.upper)\r\n flags |= OvrFlags.Flashed;\r\n\r\n if (pickExclude?.hasPair(feature.elementId)) {\r\n flags |= OvrFlags.InvisibleDuringPick;\r\n ++nHidden;\r\n }\r\n\r\n data.setOvrFlagsAtIndex(dataIndex, flags);\r\n if (OvrFlags.None !== flags)\r\n nOverridden++;\r\n }\r\n\r\n this._allHidden = (nHidden === map.numFeatures);\r\n this._anyOverridden = (nOverridden > 0);\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n // NB: If hilites is undefined, it means that the hilited set has not changed.\r\n private updateFlashedAndHilited(data: Texture2DDataUpdater, map: RenderFeatureTable, pickExcludes: Id64.Uint32Set | undefined, flashed?: Id64.Uint32Pair, hilites?: Hilites) {\r\n if (!hilites || true === this._options.noHilite) {\r\n this.updateFlashed(data, map, pickExcludes, flashed);\r\n return;\r\n }\r\n\r\n const allowFlash = true !== this._options.noFlash;\r\n const intersect = \"intersection\" === hilites.modelSubCategoryMode;\r\n\r\n this._anyOverridden = this._anyHilited = false;\r\n for (const feature of map.iterable(scratchPackedFeature)) {\r\n const dataIndex = feature.index * 4 * 3;\r\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\r\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\r\n // If it's invisible, none of the other flags matter. We can't flash it and don't want to hilite it.\r\n this._anyOverridden = true;\r\n continue;\r\n }\r\n\r\n const isModelHilited = hilites.models.hasPair(feature.modelId);\r\n let isHilited = isModelHilited && !intersect;\r\n if (!isHilited)\r\n isHilited = hilites.elements.hasPair(feature.elementId);\r\n\r\n if (!isHilited)\r\n if (isModelHilited || !intersect)\r\n isHilited = hilites.subcategories.hasPair(feature.subCategoryId);\r\n\r\n let isFlashed = false;\r\n if (flashed && allowFlash)\r\n isFlashed = feature.elementId.lower === flashed.lower && feature.elementId.upper === flashed.upper;\r\n\r\n let newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\r\n newFlags = isHilited ? (newFlags | OvrFlags.Hilited) : (newFlags & ~OvrFlags.Hilited);\r\n if (pickExcludes) {\r\n newFlags = pickExcludes.hasPair(feature.elementId) ? (newFlags | OvrFlags.InvisibleDuringPick) : (newFlags & ~OvrFlags.InvisibleDuringPick);\r\n }\r\n\r\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\r\n if (OvrFlags.None !== newFlags) {\r\n this._anyOverridden = true;\r\n this._anyHilited = this._anyHilited || isHilited || OvrFlags.None !== (newFlags & OvrFlags.Emphasized);\r\n }\r\n }\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n private updateFlashed(data: Texture2DDataUpdater, map: RenderFeatureTable, pickExcludes: Id64.Uint32Set | undefined, flashed?: Id64.Uint32Pair): void {\r\n if (true === this._options.noFlash && !pickExcludes)\r\n return;\r\n\r\n this._anyOverridden = false;\r\n const elemId = { lower: 0, upper: 0 };\r\n for (let i = 0; i < map.numFeatures; i++) {\r\n const dataIndex = i * 4 * 3;\r\n const oldFlags = data.getOvrFlagsAtIndex(dataIndex);\r\n if (OvrFlags.None !== (oldFlags & OvrFlags.Visibility)) {\r\n // If it's invisible, none of the other flags matter and we can't flash it.\r\n this._anyOverridden = true;\r\n continue;\r\n }\r\n\r\n let isFlashed = false;\r\n let thisElemId: Id64.Uint32Pair | undefined;\r\n if (flashed && !this._options.noFlash) {\r\n thisElemId = map.getElementIdPair(i, elemId);\r\n isFlashed = thisElemId.lower === flashed.lower && thisElemId.upper === flashed.upper;\r\n }\r\n\r\n let newFlags = isFlashed ? (oldFlags | OvrFlags.Flashed) : (oldFlags & ~OvrFlags.Flashed);\r\n if (pickExcludes) {\r\n if (!thisElemId) {\r\n thisElemId = map.getElementIdPair(i, elemId);\r\n }\r\n\r\n newFlags = pickExcludes.hasPair(thisElemId) ? (newFlags | OvrFlags.InvisibleDuringPick) : (newFlags & ~OvrFlags.InvisibleDuringPick);\r\n }\r\n\r\n data.setOvrFlagsAtIndex(dataIndex, newFlags);\r\n if (OvrFlags.None !== newFlags)\r\n this._anyOverridden = true;\r\n }\r\n\r\n this.updateUniformSymbologyFlags();\r\n }\r\n\r\n private constructor(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\r\n this.target = target;\r\n this._options = options;\r\n this._cleanup = cleanup;\r\n }\r\n\r\n public static createFromTarget(target: Target, options: BatchOptions, cleanup: FeatureOverridesCleanup | undefined) {\r\n return new FeatureOverrides(target, options, cleanup);\r\n }\r\n\r\n public get isDisposed(): boolean { return undefined === this._lut; }\r\n\r\n public dispose() {\r\n this._lut = dispose(this._lut);\r\n if (this._cleanup) {\r\n this._cleanup();\r\n this._cleanup = undefined;\r\n }\r\n }\r\n\r\n public initFromMap(map: RenderFeatureTable) {\r\n const nFeatures = map.numFeatures;\r\n assert(0 < nFeatures);\r\n\r\n this._lut = dispose(this._lut);\r\n\r\n const ovrs: FeatureSymbology.Overrides = this.target.currentFeatureSymbologyOverrides;\r\n this._mostRecentSymbologyOverrides = ovrs;\r\n const hilite = this.target.hilites;\r\n this._lut = this._initialize(map, ovrs, this.target.pickExclusions, hilite, this.target.flashed);\r\n this._lastFlashId = Id64.invalid;\r\n this._hiliteSyncObserver = {};\r\n this._pickExclusionsSyncObserver = {};\r\n }\r\n\r\n public update(features: RenderFeatureTable) {\r\n let ovrs: FeatureSymbology.Overrides | undefined = this.target.currentFeatureSymbologyOverrides;\r\n const ovrsUpdated = ovrs !== this._mostRecentSymbologyOverrides;\r\n if (ovrsUpdated)\r\n this._mostRecentSymbologyOverrides = ovrs;\r\n else\r\n ovrs = undefined;\r\n\r\n const flashedId = this.target.flashedId;\r\n\r\n const hilite = this.target.hilites;\r\n const hiliteUpdated = !sync(this.target.hiliteSyncTarget, this._hiliteSyncObserver);\r\n const pickExcludesUpdated = !sync(this.target.pickExclusionsSyncTarget, this._pickExclusionsSyncObserver);\r\n\r\n if (ovrsUpdated || hiliteUpdated || flashedId !== this._lastFlashId || pickExcludesUpdated) {\r\n // _lut can be undefined if context was lost, (gl.createTexture returns null)\r\n if (this._lut) {\r\n this._update(\r\n features,\r\n this._lut,\r\n undefined !== ovrs || pickExcludesUpdated ? this.target.pickExclusions : undefined,\r\n this.target.flashed,\r\n undefined !== ovrs || hiliteUpdated ? hilite : undefined, ovrs,\r\n );\r\n }\r\n\r\n this._lastFlashId = flashedId;\r\n }\r\n }\r\n\r\n public bindLUTParams(uniform: UniformHandle): void {\r\n uniform.setUniform2fv(this._lutParams);\r\n }\r\n\r\n public bindLUT(uniform: UniformHandle): void {\r\n if (this._lut)\r\n this._lut.bindSampler(uniform, TextureUnit.FeatureSymbology);\r\n }\r\n\r\n public bindUniformSymbologyFlags(uniform: UniformHandle): void {\r\n uniform.setUniform1f(this._uniformSymbologyFlags);\r\n }\r\n}\r\n"]}
@@ -7,7 +7,8 @@
7
7
  * @module WebGL
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.fromSumOf = exports.FrustumUniforms = void 0;
10
+ exports.FrustumUniforms = void 0;
11
+ exports.fromSumOf = fromSumOf;
11
12
  const core_geometry_1 = require("@itwin/core-geometry");
12
13
  const core_common_1 = require("@itwin/core-common");
13
14
  const IModelFrameLifecycle_1 = require("./IModelFrameLifecycle");
@@ -169,7 +170,6 @@ function fromSumOf(p, v, scale, out) {
169
170
  result.z = p.z + v.z * scale;
170
171
  return result;
171
172
  }
172
- exports.fromSumOf = fromSumOf;
173
173
  function dotDifference(pt, origin, vec) {
174
174
  return (pt.x - origin.x) * vec.x + (pt.y - origin.y) * vec.y + (pt.z - origin.z) * vec.z;
175
175
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FrustumUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/FrustumUniforms.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 { InverseMatrixState, Matrix4d, Point3d, Transform, Vector3d } from \"@itwin/core-geometry\";\r\nimport { Frustum, Npc } from \"@itwin/core-common\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { IModelFrameLifecycle } from \"./IModelFrameLifecycle\";\r\nimport { Matrix4 } from \"./Matrix\";\r\nimport { desync, sync } from \"./Sync\";\r\n\r\n/** @internal */\r\nexport const enum FrustumUniformType { // eslint-disable-line no-restricted-syntax\r\n TwoDee,\r\n Orthographic,\r\n Perspective,\r\n}\r\n\r\n/** @internal */\r\nexport const enum Plane { // eslint-disable-line no-restricted-syntax\r\n kTop,\r\n kBottom,\r\n kLeft,\r\n kRight,\r\n}\r\n\r\nconst enum FrustumData { // eslint-disable-line no-restricted-syntax\r\n kNear,\r\n kFar,\r\n kType,\r\n}\r\n\r\n/** Represents a Target's frustum for use in glsl as a pair of uniforms.\r\n * Do not modify fields of exposed objects directly. e.g., do not directly manipulate the projection or view matrices - use the appropriate APIs.\r\n * @internal\r\n */\r\nexport class FrustumUniforms {\r\n // CPU state. Do not modify - use APIs.\r\n public readonly planFrustum = new Frustum();\r\n private _planFraction = 0;\r\n private readonly _nearPlaneCenter = new Point3d();\r\n public readonly viewMatrix = Transform.createIdentity();\r\n public readonly projectionMatrix = Matrix4d.createIdentity();\r\n private readonly _worldUpVector = Vector3d.unitZ();\r\n private readonly _viewUpVector = Vector3d.unitZ();\r\n\r\n // GPU state\r\n private readonly _planeData: Float32Array = new Float32Array(4);\r\n private readonly _frustumData: Float32Array = new Float32Array(3);\r\n public readonly projectionMatrix32 = new Matrix4();\r\n private readonly _logZData = new Float32Array(2);\r\n private readonly _viewUpVector32 = new Float32Array(3);\r\n\r\n // SyncTarget\r\n public syncKey = 0;\r\n\r\n // Scratch variables\r\n private readonly _scratch = {\r\n point3d: new Point3d(),\r\n vec3d: new Vector3d(),\r\n viewX: new Vector3d(),\r\n viewY: new Vector3d(),\r\n viewZ: new Vector3d(),\r\n };\r\n\r\n public constructor() {\r\n }\r\n\r\n public bindProjectionMatrix(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setMatrix4(this.projectionMatrix32);\r\n }\r\n\r\n public bindUpVector(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform3fv(this._viewUpVector32);\r\n }\r\n\r\n // uniform vec4 u_frustumPlanes; // { top, bottom, left, right }\r\n public get planes(): Float32Array { return this._planeData; }\r\n\r\n // uniform vec3 u_frustum; // { near, far, type }\r\n public get frustum(): Float32Array { return this._frustumData; }\r\n\r\n public get nearPlane(): number { return this._frustumData[FrustumData.kNear]; }\r\n public get farPlane(): number { return this._frustumData[FrustumData.kFar]; }\r\n public get type(): FrustumUniformType { return this.frustum[FrustumData.kType] as FrustumUniformType; }\r\n public get is2d(): boolean { return FrustumUniformType.TwoDee === this.type; }\r\n public get planFraction(): number { return this._planFraction; }\r\n\r\n // uniform vec2 u_logZ where x = 1/near and y = log(far/near)\r\n public get logZ(): Float32Array { return this._logZData; }\r\n\r\n public changeFrustum(newFrustum: Frustum, newFraction: number, is3d: boolean): void {\r\n if (newFraction === this._planFraction && is3d !== this.is2d && newFrustum.equals(this.planFrustum))\r\n return;\r\n\r\n desync(this);\r\n\r\n newFrustum.clone(this.planFrustum);\r\n\r\n const farLowerLeft = newFrustum.getCorner(Npc.LeftBottomRear);\r\n const farLowerRight = newFrustum.getCorner(Npc.RightBottomRear);\r\n const farUpperLeft = newFrustum.getCorner(Npc.LeftTopRear);\r\n const farUpperRight = newFrustum.getCorner(Npc.RightTopRear);\r\n const nearLowerLeft = newFrustum.getCorner(Npc.LeftBottomFront);\r\n const nearLowerRight = newFrustum.getCorner(Npc.RightBottomFront);\r\n const nearUpperLeft = newFrustum.getCorner(Npc.LeftTopFront);\r\n const nearUpperRight = newFrustum.getCorner(Npc.RightTopFront);\r\n\r\n const nearCenter = nearLowerLeft.interpolate(0.5, nearUpperRight, this._scratch.point3d);\r\n\r\n const viewX = normalizedDifference(nearLowerRight, nearLowerLeft, this._scratch.viewX);\r\n const viewY = normalizedDifference(nearUpperLeft, nearLowerLeft, this._scratch.viewY);\r\n const viewZ = viewX.crossProduct(viewY, this._scratch.viewZ).normalize()!;\r\n\r\n this._planFraction = newFraction;\r\n\r\n if (!is3d || newFraction > 0.999) { // ortho or 2d\r\n const halfWidth = Vector3d.createStartEnd(farLowerRight, farLowerLeft, this._scratch.vec3d).magnitude() * 0.5;\r\n const halfHeight = Vector3d.createStartEnd(farLowerRight, farUpperRight).magnitude() * 0.5;\r\n const depth = Vector3d.createStartEnd(farLowerLeft, nearLowerLeft, this._scratch.vec3d).magnitude();\r\n\r\n lookIn(nearCenter, viewX, viewY, viewZ, this.viewMatrix);\r\n ortho(-halfWidth, halfWidth, -halfHeight, halfHeight, 0, depth, this.projectionMatrix);\r\n\r\n this._nearPlaneCenter.setFrom(nearLowerLeft);\r\n this._nearPlaneCenter.interpolate(0.5, nearUpperRight, this._nearPlaneCenter);\r\n\r\n this.setPlanes(halfHeight, -halfHeight, -halfWidth, halfWidth);\r\n this.setFrustum(0, depth, is3d ? FrustumUniformType.Orthographic : FrustumUniformType.TwoDee);\r\n } else { // perspective\r\n const scale = 1.0 / (1.0 - newFraction);\r\n const zVec = Vector3d.createStartEnd(farLowerLeft, nearLowerLeft, this._scratch.vec3d);\r\n const cameraPosition = fromSumOf(farLowerLeft, zVec, scale, this._scratch.point3d);\r\n\r\n const frustumLeft = dotDifference(farLowerLeft, cameraPosition, viewX) * newFraction;\r\n const frustumRight = dotDifference(farLowerRight, cameraPosition, viewX) * newFraction;\r\n const frustumBottom = dotDifference(farLowerLeft, cameraPosition, viewY) * newFraction;\r\n const frustumTop = dotDifference(farUpperLeft, cameraPosition, viewY) * newFraction;\r\n const frustumFront = -dotDifference(nearLowerLeft, cameraPosition, viewZ);\r\n const frustumBack = -dotDifference(farLowerLeft, cameraPosition, viewZ);\r\n\r\n lookIn(cameraPosition, viewX, viewY, viewZ, this.viewMatrix);\r\n frustum(frustumLeft, frustumRight, frustumBottom, frustumTop, frustumFront, frustumBack, this.projectionMatrix);\r\n\r\n IModelFrameLifecycle.onChangeCameraView.raiseEvent({\r\n cameraPosition,\r\n viewX,\r\n viewY,\r\n viewZ,\r\n });\r\n IModelFrameLifecycle.onChangeCameraFrustum.raiseEvent({\r\n type: FrustumUniformType.Perspective,\r\n left: frustumLeft,\r\n right: frustumRight,\r\n bottom: frustumBottom,\r\n top: frustumTop,\r\n front: frustumFront,\r\n back: frustumBack,\r\n });\r\n\r\n this._nearPlaneCenter.setFrom(nearLowerLeft);\r\n this._nearPlaneCenter.interpolate(0.5, nearUpperRight, this._nearPlaneCenter);\r\n\r\n this.setPlanes(frustumTop, frustumBottom, frustumLeft, frustumRight);\r\n this.setFrustum(frustumFront, frustumBack, FrustumUniformType.Perspective);\r\n }\r\n\r\n this.viewMatrix.matrix.inverseState = InverseMatrixState.unknown;\r\n\r\n this.viewMatrix.matrix.multiplyVector(this._worldUpVector, this._viewUpVector);\r\n this._viewUpVector.normalizeInPlace();\r\n this._viewUpVector32[0] = this._viewUpVector.x;\r\n this._viewUpVector32[1] = this._viewUpVector.y;\r\n this._viewUpVector32[2] = this._viewUpVector.z;\r\n\r\n this.projectionMatrix32.initFromMatrix4d(this.projectionMatrix);\r\n }\r\n\r\n public changeProjectionMatrix(newMatrix: Matrix4d): void {\r\n desync(this);\r\n this.projectionMatrix.setFrom(newMatrix);\r\n this.projectionMatrix32.initFromMatrix4d(this.projectionMatrix);\r\n }\r\n\r\n protected setPlanes(top: number, bottom: number, left: number, right: number): void {\r\n this._planeData[Plane.kTop] = top;\r\n this._planeData[Plane.kBottom] = bottom;\r\n this._planeData[Plane.kLeft] = left;\r\n this._planeData[Plane.kRight] = right;\r\n }\r\n\r\n protected setFrustum(nearPlane: number, farPlane: number, type: FrustumUniformType): void {\r\n this._frustumData[FrustumData.kNear] = nearPlane;\r\n this._frustumData[FrustumData.kFar] = farPlane;\r\n this._frustumData[FrustumData.kType] = type as number;\r\n\r\n // If nearPlane is zero, we don't have a camera (or got very unlucky); in that case shader will compute linear depth.\r\n this._logZData[0] = 0 !== nearPlane ? 1 / nearPlane : 0;\r\n this._logZData[1] = 0 !== nearPlane ? Math.log(farPlane / nearPlane) : farPlane;\r\n }\r\n}\r\n\r\nfunction normalizedDifference(p0: Point3d, p1: Point3d, out?: Vector3d): Vector3d {\r\n const result = undefined !== out ? out : new Vector3d();\r\n result.x = p0.x - p1.x;\r\n result.y = p0.y - p1.y;\r\n result.z = p0.z - p1.z;\r\n result.normalizeInPlace();\r\n return result;\r\n}\r\n\r\n/** @internal */\r\nexport function fromSumOf(p: Point3d, v: Vector3d, scale: number, out?: Point3d) {\r\n const result = undefined !== out ? out : new Point3d();\r\n result.x = p.x + v.x * scale;\r\n result.y = p.y + v.y * scale;\r\n result.z = p.z + v.z * scale;\r\n return result;\r\n}\r\n\r\nfunction dotDifference(pt: Point3d, origin: Point3d, vec: Vector3d): number {\r\n return (pt.x - origin.x) * vec.x + (pt.y - origin.y) * vec.y + (pt.z - origin.z) * vec.z;\r\n}\r\n\r\nfunction lookIn(eye: Point3d, viewX: Vector3d, viewY: Vector3d, viewZ: Vector3d, result: Transform) {\r\n const rot = result.matrix.coffs;\r\n rot[0] = viewX.x;\r\n rot[1] = viewX.y;\r\n rot[2] = viewX.z;\r\n rot[3] = viewY.x;\r\n rot[4] = viewY.y;\r\n rot[5] = viewY.z;\r\n rot[6] = viewZ.x;\r\n rot[7] = viewZ.y;\r\n rot[8] = viewZ.z;\r\n\r\n result.origin.x = -viewX.dotProduct(eye);\r\n result.origin.y = -viewY.dotProduct(eye);\r\n result.origin.z = -viewZ.dotProduct(eye);\r\n}\r\n\r\nfunction ortho(left: number, right: number, bottom: number, top: number, near: number, far: number, result: Matrix4d) {\r\n Matrix4d.createRowValues(\r\n 2.0 / (right - left), 0.0, 0.0, -(right + left) / (right - left),\r\n 0.0, 2.0 / (top - bottom), 0.0, -(top + bottom) / (top - bottom),\r\n 0.0, 0.0, -2.0 / (far - near), -(far + near) / (far - near),\r\n 0.0, 0.0, 0.0, 1.0,\r\n result);\r\n}\r\n\r\nfunction frustum(left: number, right: number, bottom: number, top: number, near: number, far: number, result: Matrix4d) {\r\n Matrix4d.createRowValues(\r\n (2.0 * near) / (right - left), 0.0, (right + left) / (right - left), 0.0,\r\n 0.0, (2.0 * near) / (top - bottom), (top + bottom) / (top - bottom), 0.0,\r\n 0.0, 0.0, -(far + near) / (far - near), -(2.0 * far * near) / (far - near),\r\n 0.0, 0.0, -1.0, 0.0,\r\n result);\r\n}\r\n"]}
1
+ {"version":3,"file":"FrustumUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/FrustumUniforms.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 { InverseMatrixState, Matrix4d, Point3d, Transform, Vector3d } from \"@itwin/core-geometry\";\r\nimport { Frustum, Npc } from \"@itwin/core-common\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { IModelFrameLifecycle } from \"./IModelFrameLifecycle\";\r\nimport { Matrix4 } from \"./Matrix\";\r\nimport { desync, sync } from \"./Sync\";\r\n\r\n/** @internal */\r\nexport const enum FrustumUniformType { // eslint-disable-line no-restricted-syntax\r\n TwoDee,\r\n Orthographic,\r\n Perspective,\r\n}\r\n\r\n/** @internal */\r\nexport const enum Plane { // eslint-disable-line no-restricted-syntax\r\n kTop,\r\n kBottom,\r\n kLeft,\r\n kRight,\r\n}\r\n\r\nconst enum FrustumData { // eslint-disable-line no-restricted-syntax\r\n kNear,\r\n kFar,\r\n kType,\r\n}\r\n\r\n/** Represents a Target's frustum for use in glsl as a pair of uniforms.\r\n * Do not modify fields of exposed objects directly. e.g., do not directly manipulate the projection or view matrices - use the appropriate APIs.\r\n * @internal\r\n */\r\nexport class FrustumUniforms {\r\n // CPU state. Do not modify - use APIs.\r\n public readonly planFrustum = new Frustum();\r\n private _planFraction = 0;\r\n private readonly _nearPlaneCenter = new Point3d();\r\n public readonly viewMatrix = Transform.createIdentity();\r\n public readonly projectionMatrix = Matrix4d.createIdentity();\r\n private readonly _worldUpVector = Vector3d.unitZ();\r\n private readonly _viewUpVector = Vector3d.unitZ();\r\n\r\n // GPU state\r\n private readonly _planeData: Float32Array = new Float32Array(4);\r\n private readonly _frustumData: Float32Array = new Float32Array(3);\r\n public readonly projectionMatrix32 = new Matrix4();\r\n private readonly _logZData = new Float32Array(2);\r\n private readonly _viewUpVector32 = new Float32Array(3);\r\n\r\n // SyncTarget\r\n public syncKey = 0;\r\n\r\n // Scratch variables\r\n private readonly _scratch = {\r\n point3d: new Point3d(),\r\n vec3d: new Vector3d(),\r\n viewX: new Vector3d(),\r\n viewY: new Vector3d(),\r\n viewZ: new Vector3d(),\r\n };\r\n\r\n public constructor() {\r\n }\r\n\r\n public bindProjectionMatrix(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setMatrix4(this.projectionMatrix32);\r\n }\r\n\r\n public bindUpVector(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform3fv(this._viewUpVector32);\r\n }\r\n\r\n // uniform vec4 u_frustumPlanes; // { top, bottom, left, right }\r\n public get planes(): Float32Array { return this._planeData; }\r\n\r\n // uniform vec3 u_frustum; // { near, far, type }\r\n public get frustum(): Float32Array { return this._frustumData; }\r\n\r\n public get nearPlane(): number { return this._frustumData[FrustumData.kNear]; }\r\n public get farPlane(): number { return this._frustumData[FrustumData.kFar]; }\r\n public get type(): FrustumUniformType { return this.frustum[FrustumData.kType] as FrustumUniformType; }\r\n public get is2d(): boolean { return FrustumUniformType.TwoDee === this.type; }\r\n public get planFraction(): number { return this._planFraction; }\r\n\r\n // uniform vec2 u_logZ where x = 1/near and y = log(far/near)\r\n public get logZ(): Float32Array { return this._logZData; }\r\n\r\n public changeFrustum(newFrustum: Frustum, newFraction: number, is3d: boolean): void {\r\n if (newFraction === this._planFraction && is3d !== this.is2d && newFrustum.equals(this.planFrustum))\r\n return;\r\n\r\n desync(this);\r\n\r\n newFrustum.clone(this.planFrustum);\r\n\r\n const farLowerLeft = newFrustum.getCorner(Npc.LeftBottomRear);\r\n const farLowerRight = newFrustum.getCorner(Npc.RightBottomRear);\r\n const farUpperLeft = newFrustum.getCorner(Npc.LeftTopRear);\r\n const farUpperRight = newFrustum.getCorner(Npc.RightTopRear);\r\n const nearLowerLeft = newFrustum.getCorner(Npc.LeftBottomFront);\r\n const nearLowerRight = newFrustum.getCorner(Npc.RightBottomFront);\r\n const nearUpperLeft = newFrustum.getCorner(Npc.LeftTopFront);\r\n const nearUpperRight = newFrustum.getCorner(Npc.RightTopFront);\r\n\r\n const nearCenter = nearLowerLeft.interpolate(0.5, nearUpperRight, this._scratch.point3d);\r\n\r\n const viewX = normalizedDifference(nearLowerRight, nearLowerLeft, this._scratch.viewX);\r\n const viewY = normalizedDifference(nearUpperLeft, nearLowerLeft, this._scratch.viewY);\r\n const viewZ = viewX.crossProduct(viewY, this._scratch.viewZ).normalize()!;\r\n\r\n this._planFraction = newFraction;\r\n\r\n if (!is3d || newFraction > 0.999) { // ortho or 2d\r\n const halfWidth = Vector3d.createStartEnd(farLowerRight, farLowerLeft, this._scratch.vec3d).magnitude() * 0.5;\r\n const halfHeight = Vector3d.createStartEnd(farLowerRight, farUpperRight).magnitude() * 0.5;\r\n const depth = Vector3d.createStartEnd(farLowerLeft, nearLowerLeft, this._scratch.vec3d).magnitude();\r\n\r\n lookIn(nearCenter, viewX, viewY, viewZ, this.viewMatrix);\r\n ortho(-halfWidth, halfWidth, -halfHeight, halfHeight, 0, depth, this.projectionMatrix);\r\n\r\n this._nearPlaneCenter.setFrom(nearLowerLeft);\r\n this._nearPlaneCenter.interpolate(0.5, nearUpperRight, this._nearPlaneCenter);\r\n\r\n this.setPlanes(halfHeight, -halfHeight, -halfWidth, halfWidth);\r\n this.setFrustum(0, depth, is3d ? FrustumUniformType.Orthographic : FrustumUniformType.TwoDee);\r\n } else { // perspective\r\n const scale = 1.0 / (1.0 - newFraction);\r\n const zVec = Vector3d.createStartEnd(farLowerLeft, nearLowerLeft, this._scratch.vec3d);\r\n const cameraPosition = fromSumOf(farLowerLeft, zVec, scale, this._scratch.point3d);\r\n\r\n const frustumLeft = dotDifference(farLowerLeft, cameraPosition, viewX) * newFraction;\r\n const frustumRight = dotDifference(farLowerRight, cameraPosition, viewX) * newFraction;\r\n const frustumBottom = dotDifference(farLowerLeft, cameraPosition, viewY) * newFraction;\r\n const frustumTop = dotDifference(farUpperLeft, cameraPosition, viewY) * newFraction;\r\n const frustumFront = -dotDifference(nearLowerLeft, cameraPosition, viewZ);\r\n const frustumBack = -dotDifference(farLowerLeft, cameraPosition, viewZ);\r\n\r\n lookIn(cameraPosition, viewX, viewY, viewZ, this.viewMatrix);\r\n frustum(frustumLeft, frustumRight, frustumBottom, frustumTop, frustumFront, frustumBack, this.projectionMatrix);\r\n\r\n IModelFrameLifecycle.onChangeCameraView.raiseEvent({\r\n cameraPosition,\r\n viewX,\r\n viewY,\r\n viewZ,\r\n });\r\n IModelFrameLifecycle.onChangeCameraFrustum.raiseEvent({\r\n type: FrustumUniformType.Perspective,\r\n left: frustumLeft,\r\n right: frustumRight,\r\n bottom: frustumBottom,\r\n top: frustumTop,\r\n front: frustumFront,\r\n back: frustumBack,\r\n });\r\n\r\n this._nearPlaneCenter.setFrom(nearLowerLeft);\r\n this._nearPlaneCenter.interpolate(0.5, nearUpperRight, this._nearPlaneCenter);\r\n\r\n this.setPlanes(frustumTop, frustumBottom, frustumLeft, frustumRight);\r\n this.setFrustum(frustumFront, frustumBack, FrustumUniformType.Perspective);\r\n }\r\n\r\n this.viewMatrix.matrix.inverseState = InverseMatrixState.unknown;\r\n\r\n this.viewMatrix.matrix.multiplyVector(this._worldUpVector, this._viewUpVector);\r\n this._viewUpVector.normalizeInPlace();\r\n this._viewUpVector32[0] = this._viewUpVector.x;\r\n this._viewUpVector32[1] = this._viewUpVector.y;\r\n this._viewUpVector32[2] = this._viewUpVector.z;\r\n\r\n this.projectionMatrix32.initFromMatrix4d(this.projectionMatrix);\r\n }\r\n\r\n public changeProjectionMatrix(newMatrix: Matrix4d): void {\r\n desync(this);\r\n this.projectionMatrix.setFrom(newMatrix);\r\n this.projectionMatrix32.initFromMatrix4d(this.projectionMatrix);\r\n }\r\n\r\n protected setPlanes(top: number, bottom: number, left: number, right: number): void {\r\n this._planeData[Plane.kTop] = top;\r\n this._planeData[Plane.kBottom] = bottom;\r\n this._planeData[Plane.kLeft] = left;\r\n this._planeData[Plane.kRight] = right;\r\n }\r\n\r\n protected setFrustum(nearPlane: number, farPlane: number, type: FrustumUniformType): void {\r\n this._frustumData[FrustumData.kNear] = nearPlane;\r\n this._frustumData[FrustumData.kFar] = farPlane;\r\n this._frustumData[FrustumData.kType] = type as number;\r\n\r\n // If nearPlane is zero, we don't have a camera (or got very unlucky); in that case shader will compute linear depth.\r\n this._logZData[0] = 0 !== nearPlane ? 1 / nearPlane : 0;\r\n this._logZData[1] = 0 !== nearPlane ? Math.log(farPlane / nearPlane) : farPlane;\r\n }\r\n}\r\n\r\nfunction normalizedDifference(p0: Point3d, p1: Point3d, out?: Vector3d): Vector3d {\r\n const result = undefined !== out ? out : new Vector3d();\r\n result.x = p0.x - p1.x;\r\n result.y = p0.y - p1.y;\r\n result.z = p0.z - p1.z;\r\n result.normalizeInPlace();\r\n return result;\r\n}\r\n\r\n/** @internal */\r\nexport function fromSumOf(p: Point3d, v: Vector3d, scale: number, out?: Point3d) {\r\n const result = undefined !== out ? out : new Point3d();\r\n result.x = p.x + v.x * scale;\r\n result.y = p.y + v.y * scale;\r\n result.z = p.z + v.z * scale;\r\n return result;\r\n}\r\n\r\nfunction dotDifference(pt: Point3d, origin: Point3d, vec: Vector3d): number {\r\n return (pt.x - origin.x) * vec.x + (pt.y - origin.y) * vec.y + (pt.z - origin.z) * vec.z;\r\n}\r\n\r\nfunction lookIn(eye: Point3d, viewX: Vector3d, viewY: Vector3d, viewZ: Vector3d, result: Transform) {\r\n const rot = result.matrix.coffs;\r\n rot[0] = viewX.x;\r\n rot[1] = viewX.y;\r\n rot[2] = viewX.z;\r\n rot[3] = viewY.x;\r\n rot[4] = viewY.y;\r\n rot[5] = viewY.z;\r\n rot[6] = viewZ.x;\r\n rot[7] = viewZ.y;\r\n rot[8] = viewZ.z;\r\n\r\n result.origin.x = -viewX.dotProduct(eye);\r\n result.origin.y = -viewY.dotProduct(eye);\r\n result.origin.z = -viewZ.dotProduct(eye);\r\n}\r\n\r\nfunction ortho(left: number, right: number, bottom: number, top: number, near: number, far: number, result: Matrix4d) {\r\n Matrix4d.createRowValues(\r\n 2.0 / (right - left), 0.0, 0.0, -(right + left) / (right - left),\r\n 0.0, 2.0 / (top - bottom), 0.0, -(top + bottom) / (top - bottom),\r\n 0.0, 0.0, -2.0 / (far - near), -(far + near) / (far - near),\r\n 0.0, 0.0, 0.0, 1.0,\r\n result);\r\n}\r\n\r\nfunction frustum(left: number, right: number, bottom: number, top: number, near: number, far: number, result: Matrix4d) {\r\n Matrix4d.createRowValues(\r\n (2.0 * near) / (right - left), 0.0, (right + left) / (right - left), 0.0,\r\n 0.0, (2.0 * near) / (top - bottom), (top + bottom) / (top - bottom), 0.0,\r\n 0.0, 0.0, -(far + near) / (far - near), -(2.0 * far * near) / (far - near),\r\n 0.0, 0.0, -1.0, 0.0,\r\n result);\r\n}\r\n"]}
@@ -168,7 +168,8 @@ export declare namespace GL {
168
168
  CompileStatus
169
169
  }
170
170
  enum ProgramParameter {
171
- LinkStatus
171
+ LinkStatus,
172
+ ActiveUniforms
172
173
  }
173
174
  enum PrimitiveType {
174
175
  Points,
@@ -1 +1 @@
1
- {"version":3,"file":"GL.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/GL.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GL.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/GL.ts"],"names":[],"mappings":"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"}
@@ -206,6 +206,7 @@ var GL;
206
206
  let ProgramParameter;
207
207
  (function (ProgramParameter) {
208
208
  ProgramParameter[ProgramParameter["LinkStatus"] = WebGLRenderingContext.LINK_STATUS] = "LinkStatus";
209
+ ProgramParameter[ProgramParameter["ActiveUniforms"] = WebGLRenderingContext.ACTIVE_UNIFORMS] = "ActiveUniforms";
209
210
  })(ProgramParameter = GL.ProgramParameter || (GL.ProgramParameter = {}));
210
211
  let PrimitiveType;
211
212
  (function (PrimitiveType) {
@@ -1 +1 @@
1
- {"version":3,"file":"GL.js","sourceRoot":"","sources":["../../../../src/render/webgl/GL.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\nif (typeof (WebGLRenderingContext) === \"undefined\") {\r\n (global as any).WebGLRenderingContext = new Proxy({}, { get: () => 0 });\r\n}\r\n\r\n/** @internal */\r\nexport namespace GL {\r\n export enum BlendEquation {\r\n Add = WebGLRenderingContext.FUNC_ADD,\r\n Subtract = WebGLRenderingContext.FUNC_SUBTRACT,\r\n ReverseSubtract = WebGLRenderingContext.FUNC_REVERSE_SUBTRACT,\r\n Default = Add,\r\n }\r\n\r\n export enum BlendFactor {\r\n Zero = WebGLRenderingContext.ZERO,\r\n One = WebGLRenderingContext.ONE,\r\n SrcColor = WebGLRenderingContext.SRC_COLOR,\r\n OneMinusSrcColor = WebGLRenderingContext.ONE_MINUS_SRC_COLOR,\r\n DstColor = WebGLRenderingContext.DST_COLOR,\r\n OneMinusDstColor = WebGLRenderingContext.ONE_MINUS_DST_COLOR,\r\n SrcAlpha = WebGLRenderingContext.SRC_ALPHA,\r\n OneMinusSrcAlpha = WebGLRenderingContext.ONE_MINUS_SRC_ALPHA,\r\n DstAlpha = WebGLRenderingContext.DST_ALPHA,\r\n OneMinusDstAlpha = WebGLRenderingContext.ONE_MINUS_DST_ALPHA,\r\n ConstColor = WebGLRenderingContext.CONSTANT_COLOR,\r\n OneMinusConstColor = WebGLRenderingContext.ONE_MINUS_CONSTANT_COLOR,\r\n ConstAlpha = WebGLRenderingContext.CONSTANT_ALPHA,\r\n OneMinusConstAlpha = WebGLRenderingContext.ONE_MINUS_CONSTANT_ALPHA,\r\n AlphaSaturate = WebGLRenderingContext.SRC_ALPHA_SATURATE,\r\n DefaultSrc = One,\r\n DefaultDst = Zero,\r\n }\r\n\r\n export namespace Buffer {\r\n export enum Target {\r\n ArrayBuffer = WebGLRenderingContext.ARRAY_BUFFER,\r\n ElementArrayBuffer = WebGLRenderingContext.ELEMENT_ARRAY_BUFFER,\r\n }\r\n\r\n export enum Binding {\r\n ArrayBuffer = WebGLRenderingContext.ARRAY_BUFFER_BINDING,\r\n ElementArrayBuffer = WebGLRenderingContext.ELEMENT_ARRAY_BUFFER_BINDING,\r\n }\r\n\r\n export enum Parameter {\r\n Size = WebGLRenderingContext.BUFFER_SIZE,\r\n Usage = WebGLRenderingContext.BUFFER_USAGE, // eslint-disable-line @typescript-eslint/no-shadow\r\n }\r\n\r\n export enum Usage {\r\n DynamicDraw = WebGLRenderingContext.DYNAMIC_DRAW,\r\n StaticDraw = WebGLRenderingContext.STATIC_DRAW,\r\n StreamDraw = WebGLRenderingContext.STREAM_DRAW,\r\n }\r\n }\r\n\r\n export enum StencilOperation {\r\n Keep = WebGLRenderingContext.KEEP,\r\n Zero = WebGLRenderingContext.ZERO,\r\n Replace = WebGLRenderingContext.REPLACE,\r\n Incr = WebGLRenderingContext.INCR,\r\n IncrWrap = WebGLRenderingContext.INCR_WRAP,\r\n Decr = WebGLRenderingContext.DECR,\r\n DecrWrap = WebGLRenderingContext.DECR_WRAP,\r\n Invert = WebGLRenderingContext.INVERT,\r\n Default = Keep,\r\n }\r\n\r\n export enum StencilFunction {\r\n Never = WebGLRenderingContext.NEVER,\r\n Less = WebGLRenderingContext.LESS,\r\n LEqual = WebGLRenderingContext.LEQUAL,\r\n Greater = WebGLRenderingContext.GREATER,\r\n GEqual = WebGLRenderingContext.GEQUAL,\r\n Equal = WebGLRenderingContext.EQUAL,\r\n NotEqual = WebGLRenderingContext.NOTEQUAL,\r\n Always = WebGLRenderingContext.ALWAYS,\r\n Default = Always,\r\n }\r\n\r\n export enum CullFace {\r\n Front = WebGLRenderingContext.FRONT,\r\n Back = WebGLRenderingContext.BACK,\r\n FrontAndBack = WebGLRenderingContext.FRONT_AND_BACK,\r\n Default = Back,\r\n }\r\n\r\n export enum DataType {\r\n Byte = WebGLRenderingContext.BYTE,\r\n Short = WebGLRenderingContext.SHORT,\r\n UnsignedByte = WebGLRenderingContext.UNSIGNED_BYTE,\r\n UnsignedShort = WebGLRenderingContext.UNSIGNED_SHORT,\r\n UnsignedInt = WebGLRenderingContext.UNSIGNED_INT,\r\n Float = WebGLRenderingContext.FLOAT,\r\n // WebGL 2 has more data types\r\n // HalfFloat = WebGLRenderingContext.HALF_FLOAT,\r\n }\r\n\r\n export enum FrontFace {\r\n CounterClockwise = WebGLRenderingContext.CCW,\r\n Clockwise = WebGLRenderingContext.CW,\r\n Default = CounterClockwise,\r\n }\r\n\r\n export enum DepthFunc {\r\n Never = WebGLRenderingContext.NEVER,\r\n Less = WebGLRenderingContext.LESS,\r\n Equal = WebGLRenderingContext.EQUAL,\r\n LessOrEqual = WebGLRenderingContext.LEQUAL,\r\n Greater = WebGLRenderingContext.GREATER,\r\n NotEqual = WebGLRenderingContext.NOTEQUAL,\r\n GreaterOrEqual = WebGLRenderingContext.GEQUAL,\r\n Always = WebGLRenderingContext.ALWAYS,\r\n Default = LessOrEqual,\r\n }\r\n\r\n export enum Capability {\r\n Blend = WebGLRenderingContext.BLEND,\r\n BlendColor = WebGLRenderingContext.BLEND_COLOR,\r\n BlendEquationAlpha = WebGLRenderingContext.BLEND_EQUATION_ALPHA,\r\n BlendEquationRGB = WebGLRenderingContext.BLEND_EQUATION_RGB,\r\n BlendSrcAlpha = WebGLRenderingContext.BLEND_SRC_ALPHA,\r\n BlendSrcRgb = WebGLRenderingContext.BLEND_SRC_RGB,\r\n BlendDstAlpha = WebGLRenderingContext.BLEND_DST_ALPHA,\r\n BlendDstRgb = WebGLRenderingContext.BLEND_DST_RGB,\r\n CullFace = WebGLRenderingContext.CULL_FACE, // eslint-disable-line @typescript-eslint/no-shadow\r\n CullFaceMode = WebGLRenderingContext.CULL_FACE_MODE,\r\n DepthFunc = WebGLRenderingContext.DEPTH_FUNC, // eslint-disable-line @typescript-eslint/no-shadow\r\n DepthTest = WebGLRenderingContext.DEPTH_TEST,\r\n DepthWriteMask = WebGLRenderingContext.DEPTH_WRITEMASK,\r\n FrontFace = WebGLRenderingContext.FRONT_FACE, // eslint-disable-line @typescript-eslint/no-shadow\r\n StencilFrontFunc = WebGLRenderingContext.STENCIL_FUNC,\r\n StencilFrontRef = WebGLRenderingContext.STENCIL_REF,\r\n StencilFrontValueMask = WebGLRenderingContext.STENCIL_VALUE_MASK,\r\n StencilFrontWriteMask = WebGLRenderingContext.STENCIL_WRITEMASK,\r\n StencilFrontOpFail = WebGLRenderingContext.STENCIL_FAIL,\r\n StencilFrontOpZFail = WebGLRenderingContext.STENCIL_PASS_DEPTH_FAIL,\r\n StencilFrontOpZPass = WebGLRenderingContext.STENCIL_PASS_DEPTH_PASS,\r\n StencilBackFunc = WebGLRenderingContext.STENCIL_BACK_FUNC,\r\n StencilBackRef = WebGLRenderingContext.STENCIL_BACK_REF,\r\n StencilBackValueMask = WebGLRenderingContext.STENCIL_BACK_VALUE_MASK,\r\n StencilBackWriteMask = WebGLRenderingContext.STENCIL_BACK_WRITEMASK,\r\n StencilBackOpFail = WebGLRenderingContext.STENCIL_BACK_FAIL,\r\n StencilBackOpZFail = WebGLRenderingContext.STENCIL_BACK_PASS_DEPTH_FAIL,\r\n StencilBackOpZPass = WebGLRenderingContext.STENCIL_BACK_PASS_DEPTH_PASS,\r\n StencilTest = WebGLRenderingContext.STENCIL_TEST,\r\n StencilWriteMask = WebGLRenderingContext.STENCIL_WRITEMASK,\r\n }\r\n\r\n export namespace Texture {\r\n export enum Target {\r\n TwoDee = WebGLRenderingContext.TEXTURE_2D, // regular 2D texture\r\n CubeMap = WebGLRenderingContext.TEXTURE_CUBE_MAP, // six-sided cubemap texture\r\n CubeMapPositiveX = WebGLRenderingContext.TEXTURE_CUBE_MAP_POSITIVE_X, // right side\r\n CubeMapNegativeX = WebGLRenderingContext.TEXTURE_CUBE_MAP_NEGATIVE_X, // left side\r\n CubeMapPositiveY = WebGLRenderingContext.TEXTURE_CUBE_MAP_POSITIVE_Y, // top side\r\n CubeMapNegativeY = WebGLRenderingContext.TEXTURE_CUBE_MAP_NEGATIVE_Y, // bottom side\r\n CubeMapPositiveZ = WebGLRenderingContext.TEXTURE_CUBE_MAP_POSITIVE_Z, // back side\r\n CubeMapNegativeZ = WebGLRenderingContext.TEXTURE_CUBE_MAP_NEGATIVE_Z, // front side\r\n }\r\n export enum Format {\r\n Rgb = WebGLRenderingContext.RGB,\r\n Rgba = WebGLRenderingContext.RGBA,\r\n DepthStencil = WebGLRenderingContext.DEPTH_STENCIL,\r\n Luminance = WebGLRenderingContext.LUMINANCE,\r\n DepthComponent = WebGLRenderingContext.DEPTH_COMPONENT,\r\n }\r\n\r\n // This name is unambiguous as it is qualified by the namespace...https://github.com/palantir/tslint/issues/3789\r\n export enum DataType { // eslint-disable-line @typescript-eslint/no-shadow\r\n Float = WebGLRenderingContext.FLOAT,\r\n UnsignedByte = WebGLRenderingContext.UNSIGNED_BYTE,\r\n // UnsignedInt24_8 = WebGLRenderingContext.UNSIGNED_INT_24_8,\r\n UnsignedInt = WebGLRenderingContext.UNSIGNED_INT,\r\n }\r\n\r\n export enum WrapMode {\r\n Repeat = WebGLRenderingContext.REPEAT,\r\n MirroredRepeat = WebGLRenderingContext.MIRRORED_REPEAT,\r\n ClampToEdge = WebGLRenderingContext.CLAMP_TO_EDGE,\r\n }\r\n }\r\n\r\n export enum ShaderType {\r\n Fragment = WebGLRenderingContext.FRAGMENT_SHADER,\r\n Vertex = WebGLRenderingContext.VERTEX_SHADER,\r\n }\r\n\r\n export enum ShaderParameter {\r\n CompileStatus = WebGLRenderingContext.COMPILE_STATUS,\r\n }\r\n\r\n export enum ProgramParameter {\r\n LinkStatus = WebGLRenderingContext.LINK_STATUS,\r\n }\r\n\r\n export enum PrimitiveType {\r\n Points = WebGLRenderingContext.POINTS,\r\n Lines = WebGLRenderingContext.LINES,\r\n Triangles = WebGLRenderingContext.TRIANGLES,\r\n }\r\n\r\n export namespace RenderBuffer {\r\n export const TARGET = WebGLRenderingContext.RENDERBUFFER;\r\n\r\n export enum Format {\r\n DepthComponent16 = WebGLRenderingContext.DEPTH_COMPONENT16,\r\n }\r\n }\r\n\r\n export namespace FrameBuffer {\r\n export const TARGET = WebGLRenderingContext.FRAMEBUFFER;\r\n export enum Status {\r\n Complete = WebGLRenderingContext.FRAMEBUFFER_COMPLETE,\r\n IncompleteAttachment = WebGLRenderingContext.FRAMEBUFFER_INCOMPLETE_ATTACHMENT,\r\n IncompleteMissingAttachment = WebGLRenderingContext.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT,\r\n IncompleteDimensions = WebGLRenderingContext.FRAMEBUFFER_INCOMPLETE_DIMENSIONS,\r\n Unsupported = WebGLRenderingContext.FRAMEBUFFER_UNSUPPORTED,\r\n }\r\n }\r\n\r\n export enum BufferBit {\r\n Color = WebGLRenderingContext.COLOR_BUFFER_BIT,\r\n Depth = WebGLRenderingContext.DEPTH_BUFFER_BIT,\r\n Stencil = WebGLRenderingContext.STENCIL_BUFFER_BIT,\r\n }\r\n\r\n export namespace MultiSampling {\r\n export enum Filter {\r\n Nearest = WebGLRenderingContext.NEAREST,\r\n Linear = WebGLRenderingContext.LINEAR,\r\n }\r\n }\r\n\r\n export const POLYGON_OFFSET_FILL = WebGLRenderingContext.POLYGON_OFFSET_FILL;\r\n}\r\n"]}
1
+ {"version":3,"file":"GL.js","sourceRoot":"","sources":["../../../../src/render/webgl/GL.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\nif (typeof (WebGLRenderingContext) === \"undefined\") {\r\n (global as any).WebGLRenderingContext = new Proxy({}, { get: () => 0 });\r\n}\r\n\r\n/** @internal */\r\nexport namespace GL {\r\n export enum BlendEquation {\r\n Add = WebGLRenderingContext.FUNC_ADD,\r\n Subtract = WebGLRenderingContext.FUNC_SUBTRACT,\r\n ReverseSubtract = WebGLRenderingContext.FUNC_REVERSE_SUBTRACT,\r\n Default = Add,\r\n }\r\n\r\n export enum BlendFactor {\r\n Zero = WebGLRenderingContext.ZERO,\r\n One = WebGLRenderingContext.ONE,\r\n SrcColor = WebGLRenderingContext.SRC_COLOR,\r\n OneMinusSrcColor = WebGLRenderingContext.ONE_MINUS_SRC_COLOR,\r\n DstColor = WebGLRenderingContext.DST_COLOR,\r\n OneMinusDstColor = WebGLRenderingContext.ONE_MINUS_DST_COLOR,\r\n SrcAlpha = WebGLRenderingContext.SRC_ALPHA,\r\n OneMinusSrcAlpha = WebGLRenderingContext.ONE_MINUS_SRC_ALPHA,\r\n DstAlpha = WebGLRenderingContext.DST_ALPHA,\r\n OneMinusDstAlpha = WebGLRenderingContext.ONE_MINUS_DST_ALPHA,\r\n ConstColor = WebGLRenderingContext.CONSTANT_COLOR,\r\n OneMinusConstColor = WebGLRenderingContext.ONE_MINUS_CONSTANT_COLOR,\r\n ConstAlpha = WebGLRenderingContext.CONSTANT_ALPHA,\r\n OneMinusConstAlpha = WebGLRenderingContext.ONE_MINUS_CONSTANT_ALPHA,\r\n AlphaSaturate = WebGLRenderingContext.SRC_ALPHA_SATURATE,\r\n DefaultSrc = One,\r\n DefaultDst = Zero,\r\n }\r\n\r\n export namespace Buffer {\r\n export enum Target {\r\n ArrayBuffer = WebGLRenderingContext.ARRAY_BUFFER,\r\n ElementArrayBuffer = WebGLRenderingContext.ELEMENT_ARRAY_BUFFER,\r\n }\r\n\r\n export enum Binding {\r\n ArrayBuffer = WebGLRenderingContext.ARRAY_BUFFER_BINDING,\r\n ElementArrayBuffer = WebGLRenderingContext.ELEMENT_ARRAY_BUFFER_BINDING,\r\n }\r\n\r\n export enum Parameter {\r\n Size = WebGLRenderingContext.BUFFER_SIZE,\r\n Usage = WebGLRenderingContext.BUFFER_USAGE, // eslint-disable-line @typescript-eslint/no-shadow\r\n }\r\n\r\n export enum Usage {\r\n DynamicDraw = WebGLRenderingContext.DYNAMIC_DRAW,\r\n StaticDraw = WebGLRenderingContext.STATIC_DRAW,\r\n StreamDraw = WebGLRenderingContext.STREAM_DRAW,\r\n }\r\n }\r\n\r\n export enum StencilOperation {\r\n Keep = WebGLRenderingContext.KEEP,\r\n Zero = WebGLRenderingContext.ZERO,\r\n Replace = WebGLRenderingContext.REPLACE,\r\n Incr = WebGLRenderingContext.INCR,\r\n IncrWrap = WebGLRenderingContext.INCR_WRAP,\r\n Decr = WebGLRenderingContext.DECR,\r\n DecrWrap = WebGLRenderingContext.DECR_WRAP,\r\n Invert = WebGLRenderingContext.INVERT,\r\n Default = Keep,\r\n }\r\n\r\n export enum StencilFunction {\r\n Never = WebGLRenderingContext.NEVER,\r\n Less = WebGLRenderingContext.LESS,\r\n LEqual = WebGLRenderingContext.LEQUAL,\r\n Greater = WebGLRenderingContext.GREATER,\r\n GEqual = WebGLRenderingContext.GEQUAL,\r\n Equal = WebGLRenderingContext.EQUAL,\r\n NotEqual = WebGLRenderingContext.NOTEQUAL,\r\n Always = WebGLRenderingContext.ALWAYS,\r\n Default = Always,\r\n }\r\n\r\n export enum CullFace {\r\n Front = WebGLRenderingContext.FRONT,\r\n Back = WebGLRenderingContext.BACK,\r\n FrontAndBack = WebGLRenderingContext.FRONT_AND_BACK,\r\n Default = Back,\r\n }\r\n\r\n export enum DataType {\r\n Byte = WebGLRenderingContext.BYTE,\r\n Short = WebGLRenderingContext.SHORT,\r\n UnsignedByte = WebGLRenderingContext.UNSIGNED_BYTE,\r\n UnsignedShort = WebGLRenderingContext.UNSIGNED_SHORT,\r\n UnsignedInt = WebGLRenderingContext.UNSIGNED_INT,\r\n Float = WebGLRenderingContext.FLOAT,\r\n // WebGL 2 has more data types\r\n // HalfFloat = WebGLRenderingContext.HALF_FLOAT,\r\n }\r\n\r\n export enum FrontFace {\r\n CounterClockwise = WebGLRenderingContext.CCW,\r\n Clockwise = WebGLRenderingContext.CW,\r\n Default = CounterClockwise,\r\n }\r\n\r\n export enum DepthFunc {\r\n Never = WebGLRenderingContext.NEVER,\r\n Less = WebGLRenderingContext.LESS,\r\n Equal = WebGLRenderingContext.EQUAL,\r\n LessOrEqual = WebGLRenderingContext.LEQUAL,\r\n Greater = WebGLRenderingContext.GREATER,\r\n NotEqual = WebGLRenderingContext.NOTEQUAL,\r\n GreaterOrEqual = WebGLRenderingContext.GEQUAL,\r\n Always = WebGLRenderingContext.ALWAYS,\r\n Default = LessOrEqual,\r\n }\r\n\r\n export enum Capability {\r\n Blend = WebGLRenderingContext.BLEND,\r\n BlendColor = WebGLRenderingContext.BLEND_COLOR,\r\n BlendEquationAlpha = WebGLRenderingContext.BLEND_EQUATION_ALPHA,\r\n BlendEquationRGB = WebGLRenderingContext.BLEND_EQUATION_RGB,\r\n BlendSrcAlpha = WebGLRenderingContext.BLEND_SRC_ALPHA,\r\n BlendSrcRgb = WebGLRenderingContext.BLEND_SRC_RGB,\r\n BlendDstAlpha = WebGLRenderingContext.BLEND_DST_ALPHA,\r\n BlendDstRgb = WebGLRenderingContext.BLEND_DST_RGB,\r\n CullFace = WebGLRenderingContext.CULL_FACE, // eslint-disable-line @typescript-eslint/no-shadow\r\n CullFaceMode = WebGLRenderingContext.CULL_FACE_MODE,\r\n DepthFunc = WebGLRenderingContext.DEPTH_FUNC, // eslint-disable-line @typescript-eslint/no-shadow\r\n DepthTest = WebGLRenderingContext.DEPTH_TEST,\r\n DepthWriteMask = WebGLRenderingContext.DEPTH_WRITEMASK,\r\n FrontFace = WebGLRenderingContext.FRONT_FACE, // eslint-disable-line @typescript-eslint/no-shadow\r\n StencilFrontFunc = WebGLRenderingContext.STENCIL_FUNC,\r\n StencilFrontRef = WebGLRenderingContext.STENCIL_REF,\r\n StencilFrontValueMask = WebGLRenderingContext.STENCIL_VALUE_MASK,\r\n StencilFrontWriteMask = WebGLRenderingContext.STENCIL_WRITEMASK,\r\n StencilFrontOpFail = WebGLRenderingContext.STENCIL_FAIL,\r\n StencilFrontOpZFail = WebGLRenderingContext.STENCIL_PASS_DEPTH_FAIL,\r\n StencilFrontOpZPass = WebGLRenderingContext.STENCIL_PASS_DEPTH_PASS,\r\n StencilBackFunc = WebGLRenderingContext.STENCIL_BACK_FUNC,\r\n StencilBackRef = WebGLRenderingContext.STENCIL_BACK_REF,\r\n StencilBackValueMask = WebGLRenderingContext.STENCIL_BACK_VALUE_MASK,\r\n StencilBackWriteMask = WebGLRenderingContext.STENCIL_BACK_WRITEMASK,\r\n StencilBackOpFail = WebGLRenderingContext.STENCIL_BACK_FAIL,\r\n StencilBackOpZFail = WebGLRenderingContext.STENCIL_BACK_PASS_DEPTH_FAIL,\r\n StencilBackOpZPass = WebGLRenderingContext.STENCIL_BACK_PASS_DEPTH_PASS,\r\n StencilTest = WebGLRenderingContext.STENCIL_TEST,\r\n StencilWriteMask = WebGLRenderingContext.STENCIL_WRITEMASK,\r\n }\r\n\r\n export namespace Texture {\r\n export enum Target {\r\n TwoDee = WebGLRenderingContext.TEXTURE_2D, // regular 2D texture\r\n CubeMap = WebGLRenderingContext.TEXTURE_CUBE_MAP, // six-sided cubemap texture\r\n CubeMapPositiveX = WebGLRenderingContext.TEXTURE_CUBE_MAP_POSITIVE_X, // right side\r\n CubeMapNegativeX = WebGLRenderingContext.TEXTURE_CUBE_MAP_NEGATIVE_X, // left side\r\n CubeMapPositiveY = WebGLRenderingContext.TEXTURE_CUBE_MAP_POSITIVE_Y, // top side\r\n CubeMapNegativeY = WebGLRenderingContext.TEXTURE_CUBE_MAP_NEGATIVE_Y, // bottom side\r\n CubeMapPositiveZ = WebGLRenderingContext.TEXTURE_CUBE_MAP_POSITIVE_Z, // back side\r\n CubeMapNegativeZ = WebGLRenderingContext.TEXTURE_CUBE_MAP_NEGATIVE_Z, // front side\r\n }\r\n export enum Format {\r\n Rgb = WebGLRenderingContext.RGB,\r\n Rgba = WebGLRenderingContext.RGBA,\r\n DepthStencil = WebGLRenderingContext.DEPTH_STENCIL,\r\n Luminance = WebGLRenderingContext.LUMINANCE,\r\n DepthComponent = WebGLRenderingContext.DEPTH_COMPONENT,\r\n }\r\n\r\n // This name is unambiguous as it is qualified by the namespace...https://github.com/palantir/tslint/issues/3789\r\n export enum DataType { // eslint-disable-line @typescript-eslint/no-shadow\r\n Float = WebGLRenderingContext.FLOAT,\r\n UnsignedByte = WebGLRenderingContext.UNSIGNED_BYTE,\r\n // UnsignedInt24_8 = WebGLRenderingContext.UNSIGNED_INT_24_8,\r\n UnsignedInt = WebGLRenderingContext.UNSIGNED_INT,\r\n }\r\n\r\n export enum WrapMode {\r\n Repeat = WebGLRenderingContext.REPEAT,\r\n MirroredRepeat = WebGLRenderingContext.MIRRORED_REPEAT,\r\n ClampToEdge = WebGLRenderingContext.CLAMP_TO_EDGE,\r\n }\r\n }\r\n\r\n export enum ShaderType {\r\n Fragment = WebGLRenderingContext.FRAGMENT_SHADER,\r\n Vertex = WebGLRenderingContext.VERTEX_SHADER,\r\n }\r\n\r\n export enum ShaderParameter {\r\n CompileStatus = WebGLRenderingContext.COMPILE_STATUS,\r\n }\r\n\r\n export enum ProgramParameter {\r\n LinkStatus = WebGLRenderingContext.LINK_STATUS,\r\n ActiveUniforms = WebGLRenderingContext.ACTIVE_UNIFORMS,\r\n }\r\n\r\n export enum PrimitiveType {\r\n Points = WebGLRenderingContext.POINTS,\r\n Lines = WebGLRenderingContext.LINES,\r\n Triangles = WebGLRenderingContext.TRIANGLES,\r\n }\r\n\r\n export namespace RenderBuffer {\r\n export const TARGET = WebGLRenderingContext.RENDERBUFFER;\r\n\r\n export enum Format {\r\n DepthComponent16 = WebGLRenderingContext.DEPTH_COMPONENT16,\r\n }\r\n }\r\n\r\n export namespace FrameBuffer {\r\n export const TARGET = WebGLRenderingContext.FRAMEBUFFER;\r\n export enum Status {\r\n Complete = WebGLRenderingContext.FRAMEBUFFER_COMPLETE,\r\n IncompleteAttachment = WebGLRenderingContext.FRAMEBUFFER_INCOMPLETE_ATTACHMENT,\r\n IncompleteMissingAttachment = WebGLRenderingContext.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT,\r\n IncompleteDimensions = WebGLRenderingContext.FRAMEBUFFER_INCOMPLETE_DIMENSIONS,\r\n Unsupported = WebGLRenderingContext.FRAMEBUFFER_UNSUPPORTED,\r\n }\r\n }\r\n\r\n export enum BufferBit {\r\n Color = WebGLRenderingContext.COLOR_BUFFER_BIT,\r\n Depth = WebGLRenderingContext.DEPTH_BUFFER_BIT,\r\n Stencil = WebGLRenderingContext.STENCIL_BUFFER_BIT,\r\n }\r\n\r\n export namespace MultiSampling {\r\n export enum Filter {\r\n Nearest = WebGLRenderingContext.NEAREST,\r\n Linear = WebGLRenderingContext.LINEAR,\r\n }\r\n }\r\n\r\n export const POLYGON_OFFSET_FILL = WebGLRenderingContext.POLYGON_OFFSET_FILL;\r\n}\r\n"]}