@itwin/core-frontend 3.6.0-dev.8 → 4.0.0-dev.10

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 (838) hide show
  1. package/CHANGELOG.md +35 -1
  2. package/LICENSE.md +1 -1
  3. package/lib/cjs/AccuDraw.js +1 -1
  4. package/lib/cjs/AccuDraw.js.map +1 -1
  5. package/lib/cjs/BriefcaseConnection.d.ts +23 -3
  6. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  7. package/lib/cjs/BriefcaseConnection.js +11 -3
  8. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  9. package/lib/cjs/CheckpointConnection.js +1 -1
  10. package/lib/cjs/CheckpointConnection.js.map +1 -1
  11. package/lib/cjs/DisplayStyleState.d.ts +2 -2
  12. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  13. package/lib/cjs/DisplayStyleState.js +12 -4
  14. package/lib/cjs/DisplayStyleState.js.map +1 -1
  15. package/lib/cjs/IModelApp.d.ts +4 -3
  16. package/lib/cjs/IModelApp.d.ts.map +1 -1
  17. package/lib/cjs/IModelApp.js +4 -6
  18. package/lib/cjs/IModelApp.js.map +1 -1
  19. package/lib/cjs/IModelConnection.d.ts +4 -6
  20. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  21. package/lib/cjs/IModelConnection.js +6 -7
  22. package/lib/cjs/IModelConnection.js.map +1 -1
  23. package/lib/cjs/IpcApp.d.ts +1 -1
  24. package/lib/cjs/IpcApp.d.ts.map +1 -1
  25. package/lib/cjs/IpcApp.js +1 -1
  26. package/lib/cjs/IpcApp.js.map +1 -1
  27. package/lib/cjs/NativeApp.d.ts +8 -1
  28. package/lib/cjs/NativeApp.d.ts.map +1 -1
  29. package/lib/cjs/NativeApp.js +10 -6
  30. package/lib/cjs/NativeApp.js.map +1 -1
  31. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  32. package/lib/cjs/NoRenderApp.js +3 -0
  33. package/lib/cjs/NoRenderApp.js.map +1 -1
  34. package/lib/cjs/SpatialViewState.d.ts +4 -1
  35. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  36. package/lib/cjs/SpatialViewState.js +19 -5
  37. package/lib/cjs/SpatialViewState.js.map +1 -1
  38. package/lib/cjs/SubCategoriesCache.d.ts.map +1 -1
  39. package/lib/cjs/SubCategoriesCache.js +0 -1
  40. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  41. package/lib/cjs/Tiles.d.ts +4 -0
  42. package/lib/cjs/Tiles.d.ts.map +1 -1
  43. package/lib/cjs/Tiles.js +11 -0
  44. package/lib/cjs/Tiles.js.map +1 -1
  45. package/lib/cjs/ViewContext.js +1 -1
  46. package/lib/cjs/ViewContext.js.map +1 -1
  47. package/lib/cjs/ViewManager.d.ts.map +1 -1
  48. package/lib/cjs/ViewManager.js +2 -3
  49. package/lib/cjs/ViewManager.js.map +1 -1
  50. package/lib/cjs/ViewState.d.ts +4 -5
  51. package/lib/cjs/ViewState.d.ts.map +1 -1
  52. package/lib/cjs/ViewState.js +0 -1
  53. package/lib/cjs/ViewState.js.map +1 -1
  54. package/lib/cjs/Viewport.d.ts +53 -4
  55. package/lib/cjs/Viewport.d.ts.map +1 -1
  56. package/lib/cjs/Viewport.js +82 -34
  57. package/lib/cjs/Viewport.js.map +1 -1
  58. package/lib/cjs/extension/ExtensionImpl.js +2 -2
  59. package/lib/cjs/extension/ExtensionImpl.js.map +1 -1
  60. package/lib/cjs/extension/ExtensionRuntime.js +3 -0
  61. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  62. package/lib/cjs/render/GraphicBranch.d.ts +3 -0
  63. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  64. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  65. package/lib/cjs/render/GraphicBuilder.d.ts +1 -1
  66. package/lib/cjs/render/GraphicBuilder.js +1 -1
  67. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  68. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  69. package/lib/cjs/render/MockRender.js +3 -0
  70. package/lib/cjs/render/MockRender.js.map +1 -1
  71. package/lib/cjs/render/RealityMeshParams.d.ts +7 -5
  72. package/lib/cjs/render/RealityMeshParams.d.ts.map +1 -1
  73. package/lib/cjs/render/RealityMeshParams.js +23 -9
  74. package/lib/cjs/render/RealityMeshParams.js.map +1 -1
  75. package/lib/cjs/render/RenderMaterial.d.ts +1 -1
  76. package/lib/cjs/render/RenderMaterial.d.ts.map +1 -1
  77. package/lib/cjs/render/RenderMaterial.js.map +1 -1
  78. package/lib/cjs/render/RenderSystem.d.ts +9 -20
  79. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  80. package/lib/cjs/render/RenderSystem.js +4 -10
  81. package/lib/cjs/render/RenderSystem.js.map +1 -1
  82. package/lib/cjs/render/RenderTarget.d.ts +1 -1
  83. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  84. package/lib/cjs/render/RenderTarget.js +1 -1
  85. package/lib/cjs/render/RenderTarget.js.map +1 -1
  86. package/lib/cjs/render/ScreenSpaceEffectBuilder.d.ts +3 -4
  87. package/lib/cjs/render/ScreenSpaceEffectBuilder.d.ts.map +1 -1
  88. package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
  89. package/lib/cjs/render/VisibleFeature.d.ts +5 -5
  90. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  91. package/lib/cjs/render/primitives/DisplayParams.d.ts.map +1 -1
  92. package/lib/cjs/render/primitives/DisplayParams.js +2 -1
  93. package/lib/cjs/render/primitives/DisplayParams.js.map +1 -1
  94. package/lib/cjs/render/webgl/AttributeBuffers.d.ts +9 -79
  95. package/lib/cjs/render/webgl/AttributeBuffers.d.ts.map +1 -1
  96. package/lib/cjs/render/webgl/AttributeBuffers.js +19 -152
  97. package/lib/cjs/render/webgl/AttributeBuffers.js.map +1 -1
  98. package/lib/cjs/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  99. package/lib/cjs/render/webgl/BackgroundMapDrape.js +3 -6
  100. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  101. package/lib/cjs/render/webgl/BranchState.d.ts +3 -0
  102. package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
  103. package/lib/cjs/render/webgl/BranchState.js +5 -0
  104. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  105. package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
  106. package/lib/cjs/render/webgl/BranchUniforms.js +0 -8
  107. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  108. package/lib/cjs/render/webgl/CachedGeometry.d.ts +32 -0
  109. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  110. package/lib/cjs/render/webgl/CachedGeometry.js +74 -1
  111. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  112. package/lib/cjs/render/webgl/ClipStack.d.ts +0 -1
  113. package/lib/cjs/render/webgl/ClipStack.d.ts.map +1 -1
  114. package/lib/cjs/render/webgl/ClipStack.js +2 -6
  115. package/lib/cjs/render/webgl/ClipStack.js.map +1 -1
  116. package/lib/cjs/render/webgl/ClipVolume.d.ts.map +1 -1
  117. package/lib/cjs/render/webgl/ClipVolume.js +1 -5
  118. package/lib/cjs/render/webgl/ClipVolume.js.map +1 -1
  119. package/lib/cjs/render/webgl/ClippingProgram.d.ts +3 -2
  120. package/lib/cjs/render/webgl/ClippingProgram.d.ts.map +1 -1
  121. package/lib/cjs/render/webgl/ClippingProgram.js +10 -37
  122. package/lib/cjs/render/webgl/ClippingProgram.js.map +1 -1
  123. package/lib/cjs/render/webgl/DrawCommand.d.ts +2 -2
  124. package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
  125. package/lib/cjs/render/webgl/DrawCommand.js +7 -5
  126. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  127. package/lib/cjs/render/webgl/EDL.d.ts +40 -0
  128. package/lib/cjs/render/webgl/EDL.d.ts.map +1 -0
  129. package/lib/cjs/render/webgl/EDL.js +264 -0
  130. package/lib/cjs/render/webgl/EDL.js.map +1 -0
  131. package/lib/cjs/render/webgl/EdgeSettings.js +2 -2
  132. package/lib/cjs/render/webgl/FeatureOverrides.js +1 -1
  133. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  134. package/lib/cjs/render/webgl/FloatRGBA.d.ts.map +1 -1
  135. package/lib/cjs/render/webgl/FloatRGBA.js +0 -4
  136. package/lib/cjs/render/webgl/FloatRGBA.js.map +1 -1
  137. package/lib/cjs/render/webgl/FrameBuffer.d.ts +4 -0
  138. package/lib/cjs/render/webgl/FrameBuffer.d.ts.map +1 -1
  139. package/lib/cjs/render/webgl/FrameBuffer.js +9 -0
  140. package/lib/cjs/render/webgl/FrameBuffer.js.map +1 -1
  141. package/lib/cjs/render/webgl/FrustumUniforms.d.ts +7 -0
  142. package/lib/cjs/render/webgl/FrustumUniforms.d.ts.map +1 -1
  143. package/lib/cjs/render/webgl/FrustumUniforms.js.map +1 -1
  144. package/lib/cjs/render/webgl/GLTimer.d.ts.map +1 -1
  145. package/lib/cjs/render/webgl/GLTimer.js +2 -35
  146. package/lib/cjs/render/webgl/GLTimer.js.map +1 -1
  147. package/lib/cjs/render/webgl/Layer.js +2 -2
  148. package/lib/cjs/render/webgl/LayerCommands.js +2 -2
  149. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  150. package/lib/cjs/render/webgl/PlanarClassifier.js +20 -77
  151. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  152. package/lib/cjs/render/webgl/PlanarTextureProjection.js +1 -1
  153. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  154. package/lib/cjs/render/webgl/PointCloud.d.ts +2 -2
  155. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  156. package/lib/cjs/render/webgl/PointCloud.js +1 -1
  157. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  158. package/lib/cjs/render/webgl/RealityMesh.d.ts +3 -1
  159. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  160. package/lib/cjs/render/webgl/RealityMesh.js +8 -3
  161. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  162. package/lib/cjs/render/webgl/RealityModelUniforms.d.ts +9 -0
  163. package/lib/cjs/render/webgl/RealityModelUniforms.d.ts.map +1 -1
  164. package/lib/cjs/render/webgl/RealityModelUniforms.js +50 -0
  165. package/lib/cjs/render/webgl/RealityModelUniforms.js.map +1 -1
  166. package/lib/cjs/render/webgl/RenderBuffer.d.ts +1 -1
  167. package/lib/cjs/render/webgl/RenderBuffer.d.ts.map +1 -1
  168. package/lib/cjs/render/webgl/RenderBuffer.js +2 -3
  169. package/lib/cjs/render/webgl/RenderBuffer.js.map +1 -1
  170. package/lib/cjs/render/webgl/RenderCommands.d.ts +2 -1
  171. package/lib/cjs/render/webgl/RenderCommands.d.ts.map +1 -1
  172. package/lib/cjs/render/webgl/RenderCommands.js +46 -38
  173. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  174. package/lib/cjs/render/webgl/RenderFlags.d.ts +20 -19
  175. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  176. package/lib/cjs/render/webgl/RenderFlags.js +12 -12
  177. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  178. package/lib/cjs/render/webgl/SceneCompositor.d.ts +6 -3
  179. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  180. package/lib/cjs/render/webgl/SceneCompositor.js +626 -888
  181. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  182. package/lib/cjs/render/webgl/ScreenSpaceEffect.js +1 -1
  183. package/lib/cjs/render/webgl/ScreenSpaceEffect.js.map +1 -1
  184. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +1 -2
  185. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  186. package/lib/cjs/render/webgl/ShaderBuilder.js +13 -48
  187. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  188. package/lib/cjs/render/webgl/ShaderProgram.d.ts +1 -2
  189. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  190. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  191. package/lib/cjs/render/webgl/SolarShadowMap.d.ts.map +1 -1
  192. package/lib/cjs/render/webgl/SolarShadowMap.js +8 -29
  193. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  194. package/lib/cjs/render/webgl/SurfaceGeometry.js +5 -5
  195. package/lib/cjs/render/webgl/System.d.ts +10 -10
  196. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  197. package/lib/cjs/render/webgl/System.js +39 -122
  198. package/lib/cjs/render/webgl/System.js.map +1 -1
  199. package/lib/cjs/render/webgl/Target.js +7 -7
  200. package/lib/cjs/render/webgl/Target.js.map +1 -1
  201. package/lib/cjs/render/webgl/Technique.d.ts +4 -5
  202. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  203. package/lib/cjs/render/webgl/Technique.js +16 -25
  204. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  205. package/lib/cjs/render/webgl/TechniqueFlags.js +4 -4
  206. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  207. package/lib/cjs/render/webgl/TechniqueId.d.ts +6 -2
  208. package/lib/cjs/render/webgl/TechniqueId.d.ts.map +1 -1
  209. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  210. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  211. package/lib/cjs/render/webgl/Texture.js +14 -18
  212. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  213. package/lib/cjs/render/webgl/ThematicSensors.d.ts +4 -3
  214. package/lib/cjs/render/webgl/ThematicSensors.d.ts.map +1 -1
  215. package/lib/cjs/render/webgl/ThematicSensors.js +9 -50
  216. package/lib/cjs/render/webgl/ThematicSensors.js.map +1 -1
  217. package/lib/cjs/render/webgl/ThematicUniforms.js +1 -1
  218. package/lib/cjs/render/webgl/ThematicUniforms.js.map +1 -1
  219. package/lib/cjs/render/webgl/UniformHandle.d.ts.map +1 -1
  220. package/lib/cjs/render/webgl/UniformHandle.js +2 -6
  221. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  222. package/lib/cjs/render/webgl/VisibleTileFeatures.js +5 -5
  223. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.d.ts +1 -2
  224. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
  225. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +1 -1
  226. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  227. package/lib/cjs/render/webgl/glsl/Animation.d.ts +1 -2
  228. package/lib/cjs/render/webgl/glsl/Animation.d.ts.map +1 -1
  229. package/lib/cjs/render/webgl/glsl/Animation.js +23 -26
  230. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  231. package/lib/cjs/render/webgl/glsl/Blur.d.ts +1 -2
  232. package/lib/cjs/render/webgl/glsl/Blur.d.ts.map +1 -1
  233. package/lib/cjs/render/webgl/glsl/Blur.js.map +1 -1
  234. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.d.ts +1 -2
  235. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.d.ts.map +1 -1
  236. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +2 -9
  237. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  238. package/lib/cjs/render/webgl/glsl/ClearTranslucent.d.ts +1 -2
  239. package/lib/cjs/render/webgl/glsl/ClearTranslucent.d.ts.map +1 -1
  240. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +2 -10
  241. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  242. package/lib/cjs/render/webgl/glsl/Clipping.d.ts +1 -1
  243. package/lib/cjs/render/webgl/glsl/Clipping.d.ts.map +1 -1
  244. package/lib/cjs/render/webgl/glsl/Clipping.js +5 -36
  245. package/lib/cjs/render/webgl/glsl/Clipping.js.map +1 -1
  246. package/lib/cjs/render/webgl/glsl/Combine3Textures.d.ts +1 -2
  247. package/lib/cjs/render/webgl/glsl/Combine3Textures.d.ts.map +1 -1
  248. package/lib/cjs/render/webgl/glsl/Combine3Textures.js.map +1 -1
  249. package/lib/cjs/render/webgl/glsl/CombineTextures.d.ts +1 -2
  250. package/lib/cjs/render/webgl/glsl/CombineTextures.d.ts.map +1 -1
  251. package/lib/cjs/render/webgl/glsl/CombineTextures.js.map +1 -1
  252. package/lib/cjs/render/webgl/glsl/Common.d.ts.map +1 -1
  253. package/lib/cjs/render/webgl/glsl/Common.js +9 -55
  254. package/lib/cjs/render/webgl/glsl/Common.js.map +1 -1
  255. package/lib/cjs/render/webgl/glsl/Composite.d.ts +1 -2
  256. package/lib/cjs/render/webgl/glsl/Composite.d.ts.map +1 -1
  257. package/lib/cjs/render/webgl/glsl/Composite.js.map +1 -1
  258. package/lib/cjs/render/webgl/glsl/CopyColor.d.ts +1 -2
  259. package/lib/cjs/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  260. package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
  261. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.d.ts +1 -2
  262. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.d.ts.map +1 -1
  263. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +12 -19
  264. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  265. package/lib/cjs/render/webgl/glsl/CopyStencil.d.ts +4 -7
  266. package/lib/cjs/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  267. package/lib/cjs/render/webgl/glsl/CopyStencil.js +2 -39
  268. package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
  269. package/lib/cjs/render/webgl/glsl/EDL.d.ts +13 -0
  270. package/lib/cjs/render/webgl/glsl/EDL.d.ts.map +1 -0
  271. package/lib/cjs/render/webgl/glsl/EDL.js +260 -0
  272. package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -0
  273. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.d.ts +1 -2
  274. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.d.ts.map +1 -1
  275. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  276. package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
  277. package/lib/cjs/render/webgl/glsl/Edge.js +2 -2
  278. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  279. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  280. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +3 -24
  281. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  282. package/lib/cjs/render/webgl/glsl/Fragment.d.ts +0 -7
  283. package/lib/cjs/render/webgl/glsl/Fragment.d.ts.map +1 -1
  284. package/lib/cjs/render/webgl/glsl/Fragment.js +5 -40
  285. package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
  286. package/lib/cjs/render/webgl/glsl/Instancing.d.ts.map +1 -1
  287. package/lib/cjs/render/webgl/glsl/Instancing.js +1 -5
  288. package/lib/cjs/render/webgl/glsl/Instancing.js.map +1 -1
  289. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.d.ts.map +1 -1
  290. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +0 -2
  291. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  292. package/lib/cjs/render/webgl/glsl/PlanarGrid.d.ts +1 -2
  293. package/lib/cjs/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  294. package/lib/cjs/render/webgl/glsl/PlanarGrid.js +2 -12
  295. package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
  296. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  297. package/lib/cjs/render/webgl/glsl/RealityMesh.js +3 -8
  298. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  299. package/lib/cjs/render/webgl/glsl/RenderPass.js +12 -12
  300. package/lib/cjs/render/webgl/glsl/RenderPass.js.map +1 -1
  301. package/lib/cjs/render/webgl/glsl/SkyBox.d.ts +1 -2
  302. package/lib/cjs/render/webgl/glsl/SkyBox.d.ts.map +1 -1
  303. package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
  304. package/lib/cjs/render/webgl/glsl/SkySphere.d.ts +1 -2
  305. package/lib/cjs/render/webgl/glsl/SkySphere.d.ts.map +1 -1
  306. package/lib/cjs/render/webgl/glsl/SkySphere.js.map +1 -1
  307. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +1 -1
  308. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  309. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  310. package/lib/cjs/render/webgl/glsl/Surface.js +33 -57
  311. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  312. package/lib/cjs/render/webgl/glsl/Thematic.d.ts.map +1 -1
  313. package/lib/cjs/render/webgl/glsl/Thematic.js +3 -36
  314. package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
  315. package/lib/cjs/render/webgl/glsl/Translucency.d.ts.map +1 -1
  316. package/lib/cjs/render/webgl/glsl/Translucency.js +2 -12
  317. package/lib/cjs/render/webgl/glsl/Translucency.js.map +1 -1
  318. package/lib/cjs/render/webgl/glsl/Vertex.d.ts +1 -2
  319. package/lib/cjs/render/webgl/glsl/Vertex.d.ts.map +1 -1
  320. package/lib/cjs/render/webgl/glsl/Vertex.js +15 -78
  321. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  322. package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts.map +1 -1
  323. package/lib/cjs/render/webgl/glsl/Wiremesh.js +2 -5
  324. package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -1
  325. package/lib/cjs/tile/BatchedTileIdMap.js +1 -1
  326. package/lib/cjs/tile/BatchedTileIdMap.js.map +1 -1
  327. package/lib/cjs/tile/DynamicIModelTile.js +1 -1
  328. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  329. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  330. package/lib/cjs/tile/GltfReader.js +4 -2
  331. package/lib/cjs/tile/GltfReader.js.map +1 -1
  332. package/lib/cjs/tile/IModelTile.js +1 -1
  333. package/lib/cjs/tile/IModelTile.js.map +1 -1
  334. package/lib/cjs/tile/ImdlReader.d.ts +6 -0
  335. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  336. package/lib/cjs/tile/ImdlReader.js +20 -7
  337. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  338. package/lib/cjs/tile/OrbitGtTileTree.d.ts +14 -1
  339. package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
  340. package/lib/cjs/tile/OrbitGtTileTree.js +30 -11
  341. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  342. package/lib/cjs/tile/PrimaryTileTree.d.ts +0 -3
  343. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  344. package/lib/cjs/tile/PrimaryTileTree.js +6 -28
  345. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  346. package/lib/cjs/tile/RealityModelTileTree.d.ts +4 -3
  347. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  348. package/lib/cjs/tile/RealityModelTileTree.js +61 -53
  349. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  350. package/lib/cjs/tile/RealityTileLoader.js +2 -2
  351. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  352. package/lib/cjs/tile/RealityTileTree.d.ts +5 -0
  353. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  354. package/lib/cjs/tile/RealityTileTree.js +8 -4
  355. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  356. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  357. package/lib/cjs/tile/TileAdmin.js +17 -9
  358. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  359. package/lib/cjs/tile/TileDrawArgs.js +1 -1
  360. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  361. package/lib/cjs/tile/TileTreeReference.d.ts +3 -0
  362. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  363. package/lib/cjs/tile/TileTreeReference.js +3 -0
  364. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  365. package/lib/cjs/tile/map/ArcGisUtilities.d.ts +14 -1
  366. package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
  367. package/lib/cjs/tile/map/ArcGisUtilities.js +57 -27
  368. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  369. package/lib/cjs/tile/map/CesiumTerrainProvider.js +9 -9
  370. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  371. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts +14 -2
  372. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  373. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +77 -37
  374. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  375. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -1
  376. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  377. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +65 -52
  378. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  379. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +1 -0
  380. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  381. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +2 -0
  382. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  383. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +1 -1
  384. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  385. package/lib/cjs/tile/map/ImageryTileTree.d.ts +28 -3
  386. package/lib/cjs/tile/map/ImageryTileTree.d.ts.map +1 -1
  387. package/lib/cjs/tile/map/ImageryTileTree.js +63 -8
  388. package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
  389. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  390. package/lib/cjs/tile/map/MapLayerImageryFormats.js +3 -2
  391. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  392. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +12 -2
  393. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  394. package/lib/cjs/tile/map/MapLayerImageryProvider.js +16 -4
  395. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  396. package/lib/cjs/tile/map/MapLayerSources.d.ts +3 -1
  397. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  398. package/lib/cjs/tile/map/MapLayerSources.js +2 -0
  399. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  400. package/lib/cjs/tile/map/MapTile.d.ts +13 -0
  401. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  402. package/lib/cjs/tile/map/MapTile.js +57 -14
  403. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  404. package/lib/cjs/tile/map/MapTileTree.d.ts +44 -4
  405. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  406. package/lib/cjs/tile/map/MapTileTree.js +131 -11
  407. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  408. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts +17 -0
  409. package/lib/cjs/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  410. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js +26 -0
  411. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  412. package/lib/cjs/tile/map/WmtsCapabilities.d.ts +23 -68
  413. package/lib/cjs/tile/map/WmtsCapabilities.d.ts.map +1 -1
  414. package/lib/cjs/tile/map/WmtsCapabilities.js +269 -260
  415. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  416. package/lib/cjs/tools/ClipViewTool.js +2 -2
  417. package/lib/cjs/tools/ClipViewTool.js.map +1 -1
  418. package/lib/cjs/tools/MeasureTool.js +2 -2
  419. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  420. package/lib/esm/AccuDraw.js +1 -1
  421. package/lib/esm/AccuDraw.js.map +1 -1
  422. package/lib/esm/BriefcaseConnection.d.ts +23 -3
  423. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  424. package/lib/esm/BriefcaseConnection.js +11 -3
  425. package/lib/esm/BriefcaseConnection.js.map +1 -1
  426. package/lib/esm/CheckpointConnection.js +1 -1
  427. package/lib/esm/CheckpointConnection.js.map +1 -1
  428. package/lib/esm/DisplayStyleState.d.ts +2 -2
  429. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  430. package/lib/esm/DisplayStyleState.js +12 -4
  431. package/lib/esm/DisplayStyleState.js.map +1 -1
  432. package/lib/esm/IModelApp.d.ts +4 -3
  433. package/lib/esm/IModelApp.d.ts.map +1 -1
  434. package/lib/esm/IModelApp.js +4 -6
  435. package/lib/esm/IModelApp.js.map +1 -1
  436. package/lib/esm/IModelConnection.d.ts +4 -6
  437. package/lib/esm/IModelConnection.d.ts.map +1 -1
  438. package/lib/esm/IModelConnection.js +6 -7
  439. package/lib/esm/IModelConnection.js.map +1 -1
  440. package/lib/esm/IpcApp.d.ts +1 -1
  441. package/lib/esm/IpcApp.d.ts.map +1 -1
  442. package/lib/esm/IpcApp.js +1 -1
  443. package/lib/esm/IpcApp.js.map +1 -1
  444. package/lib/esm/NativeApp.d.ts +8 -1
  445. package/lib/esm/NativeApp.d.ts.map +1 -1
  446. package/lib/esm/NativeApp.js +10 -6
  447. package/lib/esm/NativeApp.js.map +1 -1
  448. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  449. package/lib/esm/NoRenderApp.js +3 -0
  450. package/lib/esm/NoRenderApp.js.map +1 -1
  451. package/lib/esm/SpatialViewState.d.ts +4 -1
  452. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  453. package/lib/esm/SpatialViewState.js +19 -5
  454. package/lib/esm/SpatialViewState.js.map +1 -1
  455. package/lib/esm/SubCategoriesCache.d.ts.map +1 -1
  456. package/lib/esm/SubCategoriesCache.js +0 -1
  457. package/lib/esm/SubCategoriesCache.js.map +1 -1
  458. package/lib/esm/Tiles.d.ts +4 -0
  459. package/lib/esm/Tiles.d.ts.map +1 -1
  460. package/lib/esm/Tiles.js +11 -0
  461. package/lib/esm/Tiles.js.map +1 -1
  462. package/lib/esm/ViewContext.js +1 -1
  463. package/lib/esm/ViewContext.js.map +1 -1
  464. package/lib/esm/ViewManager.d.ts.map +1 -1
  465. package/lib/esm/ViewManager.js +2 -3
  466. package/lib/esm/ViewManager.js.map +1 -1
  467. package/lib/esm/ViewState.d.ts +4 -5
  468. package/lib/esm/ViewState.d.ts.map +1 -1
  469. package/lib/esm/ViewState.js +0 -1
  470. package/lib/esm/ViewState.js.map +1 -1
  471. package/lib/esm/Viewport.d.ts +53 -4
  472. package/lib/esm/Viewport.d.ts.map +1 -1
  473. package/lib/esm/Viewport.js +83 -35
  474. package/lib/esm/Viewport.js.map +1 -1
  475. package/lib/esm/extension/ExtensionImpl.js +2 -2
  476. package/lib/esm/extension/ExtensionImpl.js.map +1 -1
  477. package/lib/esm/extension/ExtensionRuntime.js +5 -2
  478. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  479. package/lib/esm/render/GraphicBranch.d.ts +3 -0
  480. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  481. package/lib/esm/render/GraphicBranch.js.map +1 -1
  482. package/lib/esm/render/GraphicBuilder.d.ts +1 -1
  483. package/lib/esm/render/GraphicBuilder.js +1 -1
  484. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  485. package/lib/esm/render/MockRender.d.ts.map +1 -1
  486. package/lib/esm/render/MockRender.js +3 -0
  487. package/lib/esm/render/MockRender.js.map +1 -1
  488. package/lib/esm/render/RealityMeshParams.d.ts +7 -5
  489. package/lib/esm/render/RealityMeshParams.d.ts.map +1 -1
  490. package/lib/esm/render/RealityMeshParams.js +24 -10
  491. package/lib/esm/render/RealityMeshParams.js.map +1 -1
  492. package/lib/esm/render/RenderMaterial.d.ts +1 -1
  493. package/lib/esm/render/RenderMaterial.d.ts.map +1 -1
  494. package/lib/esm/render/RenderMaterial.js.map +1 -1
  495. package/lib/esm/render/RenderSystem.d.ts +9 -20
  496. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  497. package/lib/esm/render/RenderSystem.js +4 -10
  498. package/lib/esm/render/RenderSystem.js.map +1 -1
  499. package/lib/esm/render/RenderTarget.d.ts +1 -1
  500. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  501. package/lib/esm/render/RenderTarget.js +1 -1
  502. package/lib/esm/render/RenderTarget.js.map +1 -1
  503. package/lib/esm/render/ScreenSpaceEffectBuilder.d.ts +3 -4
  504. package/lib/esm/render/ScreenSpaceEffectBuilder.d.ts.map +1 -1
  505. package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
  506. package/lib/esm/render/VisibleFeature.d.ts +5 -5
  507. package/lib/esm/render/VisibleFeature.js.map +1 -1
  508. package/lib/esm/render/primitives/DisplayParams.d.ts.map +1 -1
  509. package/lib/esm/render/primitives/DisplayParams.js +2 -1
  510. package/lib/esm/render/primitives/DisplayParams.js.map +1 -1
  511. package/lib/esm/render/webgl/AttributeBuffers.d.ts +9 -79
  512. package/lib/esm/render/webgl/AttributeBuffers.d.ts.map +1 -1
  513. package/lib/esm/render/webgl/AttributeBuffers.js +16 -144
  514. package/lib/esm/render/webgl/AttributeBuffers.js.map +1 -1
  515. package/lib/esm/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  516. package/lib/esm/render/webgl/BackgroundMapDrape.js +3 -6
  517. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  518. package/lib/esm/render/webgl/BranchState.d.ts +3 -0
  519. package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
  520. package/lib/esm/render/webgl/BranchState.js +5 -0
  521. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  522. package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
  523. package/lib/esm/render/webgl/BranchUniforms.js +0 -8
  524. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  525. package/lib/esm/render/webgl/CachedGeometry.d.ts +32 -0
  526. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  527. package/lib/esm/render/webgl/CachedGeometry.js +69 -0
  528. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  529. package/lib/esm/render/webgl/ClipStack.d.ts +0 -1
  530. package/lib/esm/render/webgl/ClipStack.d.ts.map +1 -1
  531. package/lib/esm/render/webgl/ClipStack.js +2 -6
  532. package/lib/esm/render/webgl/ClipStack.js.map +1 -1
  533. package/lib/esm/render/webgl/ClipVolume.d.ts.map +1 -1
  534. package/lib/esm/render/webgl/ClipVolume.js +1 -5
  535. package/lib/esm/render/webgl/ClipVolume.js.map +1 -1
  536. package/lib/esm/render/webgl/ClippingProgram.d.ts +3 -2
  537. package/lib/esm/render/webgl/ClippingProgram.d.ts.map +1 -1
  538. package/lib/esm/render/webgl/ClippingProgram.js +10 -37
  539. package/lib/esm/render/webgl/ClippingProgram.js.map +1 -1
  540. package/lib/esm/render/webgl/DrawCommand.d.ts +2 -2
  541. package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
  542. package/lib/esm/render/webgl/DrawCommand.js +7 -5
  543. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  544. package/lib/esm/render/webgl/EDL.d.ts +40 -0
  545. package/lib/esm/render/webgl/EDL.d.ts.map +1 -0
  546. package/lib/esm/render/webgl/EDL.js +260 -0
  547. package/lib/esm/render/webgl/EDL.js.map +1 -0
  548. package/lib/esm/render/webgl/EdgeSettings.js +2 -2
  549. package/lib/esm/render/webgl/FeatureOverrides.js +1 -1
  550. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  551. package/lib/esm/render/webgl/FloatRGBA.d.ts.map +1 -1
  552. package/lib/esm/render/webgl/FloatRGBA.js +0 -4
  553. package/lib/esm/render/webgl/FloatRGBA.js.map +1 -1
  554. package/lib/esm/render/webgl/FrameBuffer.d.ts +4 -0
  555. package/lib/esm/render/webgl/FrameBuffer.d.ts.map +1 -1
  556. package/lib/esm/render/webgl/FrameBuffer.js +9 -0
  557. package/lib/esm/render/webgl/FrameBuffer.js.map +1 -1
  558. package/lib/esm/render/webgl/FrustumUniforms.d.ts +7 -0
  559. package/lib/esm/render/webgl/FrustumUniforms.d.ts.map +1 -1
  560. package/lib/esm/render/webgl/FrustumUniforms.js.map +1 -1
  561. package/lib/esm/render/webgl/GLTimer.d.ts.map +1 -1
  562. package/lib/esm/render/webgl/GLTimer.js +2 -35
  563. package/lib/esm/render/webgl/GLTimer.js.map +1 -1
  564. package/lib/esm/render/webgl/Layer.js +2 -2
  565. package/lib/esm/render/webgl/LayerCommands.js +2 -2
  566. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  567. package/lib/esm/render/webgl/PlanarClassifier.js +20 -77
  568. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  569. package/lib/esm/render/webgl/PlanarTextureProjection.js +1 -1
  570. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  571. package/lib/esm/render/webgl/PointCloud.d.ts +2 -2
  572. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  573. package/lib/esm/render/webgl/PointCloud.js +1 -1
  574. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  575. package/lib/esm/render/webgl/RealityMesh.d.ts +3 -1
  576. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  577. package/lib/esm/render/webgl/RealityMesh.js +8 -3
  578. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  579. package/lib/esm/render/webgl/RealityModelUniforms.d.ts +9 -0
  580. package/lib/esm/render/webgl/RealityModelUniforms.d.ts.map +1 -1
  581. package/lib/esm/render/webgl/RealityModelUniforms.js +50 -0
  582. package/lib/esm/render/webgl/RealityModelUniforms.js.map +1 -1
  583. package/lib/esm/render/webgl/RenderBuffer.d.ts +1 -1
  584. package/lib/esm/render/webgl/RenderBuffer.d.ts.map +1 -1
  585. package/lib/esm/render/webgl/RenderBuffer.js +2 -3
  586. package/lib/esm/render/webgl/RenderBuffer.js.map +1 -1
  587. package/lib/esm/render/webgl/RenderCommands.d.ts +2 -1
  588. package/lib/esm/render/webgl/RenderCommands.d.ts.map +1 -1
  589. package/lib/esm/render/webgl/RenderCommands.js +46 -38
  590. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  591. package/lib/esm/render/webgl/RenderFlags.d.ts +20 -19
  592. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  593. package/lib/esm/render/webgl/RenderFlags.js +12 -12
  594. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  595. package/lib/esm/render/webgl/SceneCompositor.d.ts +6 -3
  596. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  597. package/lib/esm/render/webgl/SceneCompositor.js +627 -891
  598. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  599. package/lib/esm/render/webgl/ScreenSpaceEffect.js +1 -1
  600. package/lib/esm/render/webgl/ScreenSpaceEffect.js.map +1 -1
  601. package/lib/esm/render/webgl/ShaderBuilder.d.ts +1 -2
  602. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  603. package/lib/esm/render/webgl/ShaderBuilder.js +13 -48
  604. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  605. package/lib/esm/render/webgl/ShaderProgram.d.ts +1 -2
  606. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  607. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  608. package/lib/esm/render/webgl/SolarShadowMap.d.ts.map +1 -1
  609. package/lib/esm/render/webgl/SolarShadowMap.js +8 -29
  610. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  611. package/lib/esm/render/webgl/SurfaceGeometry.js +5 -5
  612. package/lib/esm/render/webgl/System.d.ts +10 -10
  613. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  614. package/lib/esm/render/webgl/System.js +41 -124
  615. package/lib/esm/render/webgl/System.js.map +1 -1
  616. package/lib/esm/render/webgl/Target.js +7 -7
  617. package/lib/esm/render/webgl/Target.js.map +1 -1
  618. package/lib/esm/render/webgl/Technique.d.ts +4 -5
  619. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  620. package/lib/esm/render/webgl/Technique.js +17 -26
  621. package/lib/esm/render/webgl/Technique.js.map +1 -1
  622. package/lib/esm/render/webgl/TechniqueFlags.js +4 -4
  623. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  624. package/lib/esm/render/webgl/TechniqueId.d.ts +6 -2
  625. package/lib/esm/render/webgl/TechniqueId.d.ts.map +1 -1
  626. package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
  627. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  628. package/lib/esm/render/webgl/Texture.js +14 -18
  629. package/lib/esm/render/webgl/Texture.js.map +1 -1
  630. package/lib/esm/render/webgl/ThematicSensors.d.ts +4 -3
  631. package/lib/esm/render/webgl/ThematicSensors.d.ts.map +1 -1
  632. package/lib/esm/render/webgl/ThematicSensors.js +9 -50
  633. package/lib/esm/render/webgl/ThematicSensors.js.map +1 -1
  634. package/lib/esm/render/webgl/ThematicUniforms.js +1 -1
  635. package/lib/esm/render/webgl/ThematicUniforms.js.map +1 -1
  636. package/lib/esm/render/webgl/UniformHandle.d.ts.map +1 -1
  637. package/lib/esm/render/webgl/UniformHandle.js +2 -6
  638. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  639. package/lib/esm/render/webgl/VisibleTileFeatures.js +5 -5
  640. package/lib/esm/render/webgl/glsl/AmbientOcclusion.d.ts +1 -2
  641. package/lib/esm/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
  642. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +1 -1
  643. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  644. package/lib/esm/render/webgl/glsl/Animation.d.ts +1 -2
  645. package/lib/esm/render/webgl/glsl/Animation.d.ts.map +1 -1
  646. package/lib/esm/render/webgl/glsl/Animation.js +23 -26
  647. package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
  648. package/lib/esm/render/webgl/glsl/Blur.d.ts +1 -2
  649. package/lib/esm/render/webgl/glsl/Blur.d.ts.map +1 -1
  650. package/lib/esm/render/webgl/glsl/Blur.js.map +1 -1
  651. package/lib/esm/render/webgl/glsl/ClearPickAndColor.d.ts +1 -2
  652. package/lib/esm/render/webgl/glsl/ClearPickAndColor.d.ts.map +1 -1
  653. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +2 -9
  654. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  655. package/lib/esm/render/webgl/glsl/ClearTranslucent.d.ts +1 -2
  656. package/lib/esm/render/webgl/glsl/ClearTranslucent.d.ts.map +1 -1
  657. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +2 -10
  658. package/lib/esm/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  659. package/lib/esm/render/webgl/glsl/Clipping.d.ts +1 -1
  660. package/lib/esm/render/webgl/glsl/Clipping.d.ts.map +1 -1
  661. package/lib/esm/render/webgl/glsl/Clipping.js +5 -36
  662. package/lib/esm/render/webgl/glsl/Clipping.js.map +1 -1
  663. package/lib/esm/render/webgl/glsl/Combine3Textures.d.ts +1 -2
  664. package/lib/esm/render/webgl/glsl/Combine3Textures.d.ts.map +1 -1
  665. package/lib/esm/render/webgl/glsl/Combine3Textures.js.map +1 -1
  666. package/lib/esm/render/webgl/glsl/CombineTextures.d.ts +1 -2
  667. package/lib/esm/render/webgl/glsl/CombineTextures.d.ts.map +1 -1
  668. package/lib/esm/render/webgl/glsl/CombineTextures.js.map +1 -1
  669. package/lib/esm/render/webgl/glsl/Common.d.ts.map +1 -1
  670. package/lib/esm/render/webgl/glsl/Common.js +9 -55
  671. package/lib/esm/render/webgl/glsl/Common.js.map +1 -1
  672. package/lib/esm/render/webgl/glsl/Composite.d.ts +1 -2
  673. package/lib/esm/render/webgl/glsl/Composite.d.ts.map +1 -1
  674. package/lib/esm/render/webgl/glsl/Composite.js.map +1 -1
  675. package/lib/esm/render/webgl/glsl/CopyColor.d.ts +1 -2
  676. package/lib/esm/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  677. package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
  678. package/lib/esm/render/webgl/glsl/CopyPickBuffers.d.ts +1 -2
  679. package/lib/esm/render/webgl/glsl/CopyPickBuffers.d.ts.map +1 -1
  680. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +12 -19
  681. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  682. package/lib/esm/render/webgl/glsl/CopyStencil.d.ts +4 -7
  683. package/lib/esm/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  684. package/lib/esm/render/webgl/glsl/CopyStencil.js +1 -37
  685. package/lib/esm/render/webgl/glsl/CopyStencil.js.map +1 -1
  686. package/lib/esm/render/webgl/glsl/EDL.d.ts +13 -0
  687. package/lib/esm/render/webgl/glsl/EDL.d.ts.map +1 -0
  688. package/lib/esm/render/webgl/glsl/EDL.js +253 -0
  689. package/lib/esm/render/webgl/glsl/EDL.js.map +1 -0
  690. package/lib/esm/render/webgl/glsl/EVSMFromDepth.d.ts +1 -2
  691. package/lib/esm/render/webgl/glsl/EVSMFromDepth.d.ts.map +1 -1
  692. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  693. package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
  694. package/lib/esm/render/webgl/glsl/Edge.js +2 -2
  695. package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
  696. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  697. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +3 -24
  698. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  699. package/lib/esm/render/webgl/glsl/Fragment.d.ts +0 -7
  700. package/lib/esm/render/webgl/glsl/Fragment.d.ts.map +1 -1
  701. package/lib/esm/render/webgl/glsl/Fragment.js +4 -38
  702. package/lib/esm/render/webgl/glsl/Fragment.js.map +1 -1
  703. package/lib/esm/render/webgl/glsl/Instancing.d.ts.map +1 -1
  704. package/lib/esm/render/webgl/glsl/Instancing.js +1 -5
  705. package/lib/esm/render/webgl/glsl/Instancing.js.map +1 -1
  706. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.d.ts.map +1 -1
  707. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +0 -2
  708. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  709. package/lib/esm/render/webgl/glsl/PlanarGrid.d.ts +1 -2
  710. package/lib/esm/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  711. package/lib/esm/render/webgl/glsl/PlanarGrid.js +2 -12
  712. package/lib/esm/render/webgl/glsl/PlanarGrid.js.map +1 -1
  713. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  714. package/lib/esm/render/webgl/glsl/RealityMesh.js +3 -8
  715. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  716. package/lib/esm/render/webgl/glsl/RenderPass.js +12 -12
  717. package/lib/esm/render/webgl/glsl/RenderPass.js.map +1 -1
  718. package/lib/esm/render/webgl/glsl/SkyBox.d.ts +1 -2
  719. package/lib/esm/render/webgl/glsl/SkyBox.d.ts.map +1 -1
  720. package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
  721. package/lib/esm/render/webgl/glsl/SkySphere.d.ts +1 -2
  722. package/lib/esm/render/webgl/glsl/SkySphere.d.ts.map +1 -1
  723. package/lib/esm/render/webgl/glsl/SkySphere.js.map +1 -1
  724. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +1 -1
  725. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  726. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  727. package/lib/esm/render/webgl/glsl/Surface.js +33 -57
  728. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  729. package/lib/esm/render/webgl/glsl/Thematic.d.ts.map +1 -1
  730. package/lib/esm/render/webgl/glsl/Thematic.js +3 -36
  731. package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
  732. package/lib/esm/render/webgl/glsl/Translucency.d.ts.map +1 -1
  733. package/lib/esm/render/webgl/glsl/Translucency.js +3 -13
  734. package/lib/esm/render/webgl/glsl/Translucency.js.map +1 -1
  735. package/lib/esm/render/webgl/glsl/Vertex.d.ts +1 -2
  736. package/lib/esm/render/webgl/glsl/Vertex.d.ts.map +1 -1
  737. package/lib/esm/render/webgl/glsl/Vertex.js +16 -79
  738. package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
  739. package/lib/esm/render/webgl/glsl/Wiremesh.d.ts.map +1 -1
  740. package/lib/esm/render/webgl/glsl/Wiremesh.js +2 -5
  741. package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -1
  742. package/lib/esm/tile/BatchedTileIdMap.js +1 -1
  743. package/lib/esm/tile/BatchedTileIdMap.js.map +1 -1
  744. package/lib/esm/tile/DynamicIModelTile.js +1 -1
  745. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  746. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  747. package/lib/esm/tile/GltfReader.js +4 -2
  748. package/lib/esm/tile/GltfReader.js.map +1 -1
  749. package/lib/esm/tile/IModelTile.js +1 -1
  750. package/lib/esm/tile/IModelTile.js.map +1 -1
  751. package/lib/esm/tile/ImdlReader.d.ts +6 -0
  752. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  753. package/lib/esm/tile/ImdlReader.js +20 -7
  754. package/lib/esm/tile/ImdlReader.js.map +1 -1
  755. package/lib/esm/tile/OrbitGtTileTree.d.ts +14 -1
  756. package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
  757. package/lib/esm/tile/OrbitGtTileTree.js +30 -12
  758. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  759. package/lib/esm/tile/PrimaryTileTree.d.ts +0 -3
  760. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  761. package/lib/esm/tile/PrimaryTileTree.js +8 -30
  762. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  763. package/lib/esm/tile/RealityModelTileTree.d.ts +4 -3
  764. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  765. package/lib/esm/tile/RealityModelTileTree.js +62 -54
  766. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  767. package/lib/esm/tile/RealityTileLoader.js +2 -2
  768. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  769. package/lib/esm/tile/RealityTileTree.d.ts +5 -0
  770. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  771. package/lib/esm/tile/RealityTileTree.js +8 -4
  772. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  773. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  774. package/lib/esm/tile/TileAdmin.js +17 -9
  775. package/lib/esm/tile/TileAdmin.js.map +1 -1
  776. package/lib/esm/tile/TileDrawArgs.js +1 -1
  777. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  778. package/lib/esm/tile/TileTreeReference.d.ts +3 -0
  779. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  780. package/lib/esm/tile/TileTreeReference.js +3 -0
  781. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  782. package/lib/esm/tile/map/ArcGisUtilities.d.ts +14 -1
  783. package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
  784. package/lib/esm/tile/map/ArcGisUtilities.js +57 -27
  785. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  786. package/lib/esm/tile/map/CesiumTerrainProvider.js +9 -9
  787. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  788. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts +14 -2
  789. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  790. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +77 -37
  791. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  792. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts +2 -1
  793. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  794. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +65 -52
  795. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  796. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +1 -0
  797. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  798. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +2 -0
  799. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  800. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +2 -2
  801. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  802. package/lib/esm/tile/map/ImageryTileTree.d.ts +28 -3
  803. package/lib/esm/tile/map/ImageryTileTree.d.ts.map +1 -1
  804. package/lib/esm/tile/map/ImageryTileTree.js +62 -8
  805. package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
  806. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  807. package/lib/esm/tile/map/MapLayerImageryFormats.js +3 -2
  808. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  809. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +12 -2
  810. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  811. package/lib/esm/tile/map/MapLayerImageryProvider.js +16 -4
  812. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  813. package/lib/esm/tile/map/MapLayerSources.d.ts +3 -1
  814. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  815. package/lib/esm/tile/map/MapLayerSources.js +2 -0
  816. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  817. package/lib/esm/tile/map/MapTile.d.ts +13 -0
  818. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  819. package/lib/esm/tile/map/MapTile.js +57 -14
  820. package/lib/esm/tile/map/MapTile.js.map +1 -1
  821. package/lib/esm/tile/map/MapTileTree.d.ts +44 -4
  822. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  823. package/lib/esm/tile/map/MapTileTree.js +131 -11
  824. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  825. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts +17 -0
  826. package/lib/esm/tile/map/MapTiledGraphicsProvider.d.ts.map +1 -1
  827. package/lib/esm/tile/map/MapTiledGraphicsProvider.js +26 -0
  828. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  829. package/lib/esm/tile/map/WmtsCapabilities.d.ts +23 -68
  830. package/lib/esm/tile/map/WmtsCapabilities.d.ts.map +1 -1
  831. package/lib/esm/tile/map/WmtsCapabilities.js +268 -259
  832. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  833. package/lib/esm/tools/ClipViewTool.js +2 -2
  834. package/lib/esm/tools/ClipViewTool.js.map +1 -1
  835. package/lib/esm/tools/MeasureTool.js +2 -2
  836. package/lib/esm/tools/MeasureTool.js.map +1 -1
  837. package/lib/public/locales/en/iModelJs.json +2 -2
  838. package/package.json +20 -21
@@ -1 +1 @@
1
- {"version":3,"file":"ClipVolume.js","sourceRoot":"","sources":["../../../../src/render/webgl/ClipVolume.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 } from \"@itwin/core-bentley\";\r\nimport {\r\n ClipVector, Point3d, Transform, UnionOfConvexClipPlaneSets, Vector3d,\r\n} from \"@itwin/core-geometry\";\r\nimport { RenderClipVolume } from \"../RenderClipVolume\";\r\nimport { System } from \"./System\";\r\n\r\nconst scratch = {\r\n normal: new Vector3d(),\r\n dir: new Vector3d(),\r\n pos: new Point3d(),\r\n v0: new Vector3d(),\r\n};\r\n\r\n/** Maintains an ArrayBuffer to serve as texture data for a ClipVector.\r\n * The clip planes are in view coordinates, so the data must be updated whenever the view\r\n * matrix changes.\r\n */\r\nclass ClipPlanesBuffer {\r\n /** Most recently-applied view matrix. */\r\n private readonly _viewMatrix = Transform.createZero();\r\n /** For writing to the ArrayBuffer. */\r\n private readonly _view: DataView;\r\n /** For inspecting the data in the ArrayBuffer. */\r\n private readonly _data: Uint8Array;\r\n /** The current write position. */\r\n private _curPos = 0;\r\n private readonly _clips: UnionOfConvexClipPlaneSets[];\r\n private readonly _append: (value: number) => void;\r\n /** The number of rows of data. Each row corresponds to a clipping plane, or to mark a boundary between two ClipPlaneSets or UnionOfConvexClipPlaneSets.\r\n * The final row is *always* a union boundary, to enable multiple clips to be concatenated - this is how nested clip volumes work.\r\n */\r\n public readonly numRows: number;\r\n\r\n public getData(viewMatrix: Transform): Uint8Array {\r\n if (!viewMatrix.isAlmostEqual(this._viewMatrix))\r\n this.updateData(viewMatrix);\r\n\r\n return this._data;\r\n }\r\n\r\n public get byteLength(): number {\r\n return this._view.buffer.byteLength;\r\n }\r\n\r\n public static create(clips: UnionOfConvexClipPlaneSets[], numRows: number): ClipPlanesBuffer {\r\n assert(numRows > 1); // at least one plane, plus a union boundary.\r\n return new ClipPlanesBuffer(clips, numRows);\r\n }\r\n\r\n private constructor(clips: UnionOfConvexClipPlaneSets[], numRows: number) {\r\n this._data = new Uint8Array(numRows * 4 * 4);\r\n this._view = new DataView(this._data.buffer);\r\n this._clips = clips;\r\n this.numRows = numRows;\r\n\r\n if (System.instance.capabilities.supportsTextureFloat)\r\n this._append = (value: number) => this.appendFloat(value);\r\n else\r\n this._append = (value: number) => this.appendEncodedFloat(value);\r\n }\r\n\r\n private appendFloat(value: number): void {\r\n this._view.setFloat32(this._curPos, value, true);\r\n this.advance(4);\r\n }\r\n\r\n private appendUint8(value: number): void {\r\n this._view.setUint8(this._curPos, value);\r\n this.advance(1);\r\n }\r\n\r\n private appendValues(a: number, b: number, c: number, d: number): void {\r\n this._append(a);\r\n this._append(b);\r\n this._append(c);\r\n this._append(d);\r\n }\r\n\r\n private appendPlane(normal: Vector3d, distance: number): void {\r\n this.appendValues(normal.x, normal.y, normal.z, distance);\r\n }\r\n\r\n private appendSetBoundary(): void {\r\n this.appendValues(0, 0, 0, 0);\r\n }\r\n\r\n private appendUnionBoundary(): void {\r\n this.appendValues(2, 2, 2, 0);\r\n }\r\n\r\n private appendEncodedFloat(value: number) {\r\n const sign = value < 0 ? 1 : 0;\r\n value = Math.abs(value);\r\n const exponent = Math.floor(Math.log10(value)) + 1;\r\n value = value / Math.pow(10, exponent);\r\n\r\n const bias = 38;\r\n let temp = value * 256;\r\n const b0 = Math.floor(temp);\r\n temp = (temp - b0) * 256;\r\n const b1 = Math.floor(temp);\r\n temp = (temp - b1) * 256;\r\n const b2 = Math.floor(temp);\r\n const b3 = (exponent + bias) * 2 + sign;\r\n\r\n this.appendUint8(b0);\r\n this.appendUint8(b1);\r\n this.appendUint8(b2);\r\n this.appendUint8(b3);\r\n }\r\n\r\n private advance(numBytes: number): void {\r\n this._curPos += numBytes;\r\n }\r\n\r\n private reset(): void {\r\n this._curPos = 0;\r\n }\r\n\r\n private updateData(transform: Transform): void {\r\n this.reset();\r\n transform.clone(this._viewMatrix);\r\n\r\n const { normal, dir, pos, v0 } = { ...scratch };\r\n for (const clip of this._clips) {\r\n for (let j = 0; j < clip.convexSets.length; j++) {\r\n const set = clip.convexSets[j];\r\n if (0 === set.planes.length)\r\n continue;\r\n\r\n if (j > 0)\r\n this.appendSetBoundary();\r\n\r\n for (const plane of set.planes) {\r\n plane.inwardNormalRef.clone(normal);\r\n let distance = plane.distance;\r\n\r\n const norm = normal;\r\n transform.matrix.multiplyVector(norm, dir);\r\n dir.normalizeInPlace();\r\n\r\n transform.multiplyPoint3d(norm.scale(distance, v0), pos);\r\n v0.setFromPoint3d(pos);\r\n\r\n normal.set(dir.x, dir.y, dir.z);\r\n distance = -v0.dotProduct(dir);\r\n this.appendPlane(normal, distance);\r\n }\r\n }\r\n\r\n this.appendUnionBoundary();\r\n }\r\n }\r\n}\r\n\r\n/** A ClipVector encoded for transmission to the GPU as a texture.\r\n * @internal\r\n */\r\nexport class ClipVolume extends RenderClipVolume {\r\n private readonly _buffer: ClipPlanesBuffer;\r\n\r\n public get numRows(): number {\r\n return this._buffer.numRows;\r\n }\r\n\r\n public get byteLength(): number {\r\n return this._buffer.byteLength;\r\n }\r\n\r\n public getData(viewMatrix: Transform): Uint8Array {\r\n return this._buffer.getData(viewMatrix);\r\n }\r\n\r\n public static create(clip: ClipVector): ClipVolume | undefined {\r\n if (!clip.isValid)\r\n return undefined;\r\n\r\n // Compute how many rows of data we need.\r\n const unions = [];\r\n let numRows = 0;\r\n for (const primitive of clip.clips) {\r\n const union = primitive.fetchClipPlanesRef();\r\n if (!union)\r\n continue;\r\n\r\n let numSets = 0;\r\n for (const set of union.convexSets) {\r\n const setLength = set.planes.length;\r\n if (setLength > 0) {\r\n ++numSets;\r\n numRows += setLength;\r\n }\r\n }\r\n\r\n if (numSets > 0) {\r\n unions.push(union);\r\n numRows += numSets - 1; // Additional boundary rows between sets.\r\n }\r\n }\r\n\r\n if (unions.length === 0)\r\n return undefined;\r\n\r\n numRows += unions.length; // Additional boundary row after each union - *including* the last union.\r\n const buffer = ClipPlanesBuffer.create(unions, numRows);\r\n return new ClipVolume(clip, buffer);\r\n }\r\n\r\n private constructor(clip: ClipVector, buffer: ClipPlanesBuffer) {\r\n super(clip);\r\n this._buffer = buffer;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ClipVolume.js","sourceRoot":"","sources":["../../../../src/render/webgl/ClipVolume.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 } from \"@itwin/core-bentley\";\r\nimport {\r\n ClipVector, Point3d, Transform, UnionOfConvexClipPlaneSets, Vector3d,\r\n} from \"@itwin/core-geometry\";\r\nimport { RenderClipVolume } from \"../RenderClipVolume\";\r\n\r\nconst scratch = {\r\n normal: new Vector3d(),\r\n dir: new Vector3d(),\r\n pos: new Point3d(),\r\n v0: new Vector3d(),\r\n};\r\n\r\n/** Maintains an ArrayBuffer to serve as texture data for a ClipVector.\r\n * The clip planes are in view coordinates, so the data must be updated whenever the view\r\n * matrix changes.\r\n */\r\nclass ClipPlanesBuffer {\r\n /** Most recently-applied view matrix. */\r\n private readonly _viewMatrix = Transform.createZero();\r\n /** For writing to the ArrayBuffer. */\r\n private readonly _view: DataView;\r\n /** For inspecting the data in the ArrayBuffer. */\r\n private readonly _data: Uint8Array;\r\n /** The current write position. */\r\n private _curPos = 0;\r\n private readonly _clips: UnionOfConvexClipPlaneSets[];\r\n private readonly _append: (value: number) => void;\r\n /** The number of rows of data. Each row corresponds to a clipping plane, or to mark a boundary between two ClipPlaneSets or UnionOfConvexClipPlaneSets.\r\n * The final row is *always* a union boundary, to enable multiple clips to be concatenated - this is how nested clip volumes work.\r\n */\r\n public readonly numRows: number;\r\n\r\n public getData(viewMatrix: Transform): Uint8Array {\r\n if (!viewMatrix.isAlmostEqual(this._viewMatrix))\r\n this.updateData(viewMatrix);\r\n\r\n return this._data;\r\n }\r\n\r\n public get byteLength(): number {\r\n return this._view.buffer.byteLength;\r\n }\r\n\r\n public static create(clips: UnionOfConvexClipPlaneSets[], numRows: number): ClipPlanesBuffer {\r\n assert(numRows > 1); // at least one plane, plus a union boundary.\r\n return new ClipPlanesBuffer(clips, numRows);\r\n }\r\n\r\n private constructor(clips: UnionOfConvexClipPlaneSets[], numRows: number) {\r\n this._data = new Uint8Array(numRows * 4 * 4);\r\n this._view = new DataView(this._data.buffer);\r\n this._clips = clips;\r\n this.numRows = numRows;\r\n\r\n this._append = (value: number) => this.appendFloat(value);\r\n }\r\n\r\n private appendFloat(value: number): void {\r\n this._view.setFloat32(this._curPos, value, true);\r\n this.advance(4);\r\n }\r\n\r\n private appendUint8(value: number): void {\r\n this._view.setUint8(this._curPos, value);\r\n this.advance(1);\r\n }\r\n\r\n private appendValues(a: number, b: number, c: number, d: number): void {\r\n this._append(a);\r\n this._append(b);\r\n this._append(c);\r\n this._append(d);\r\n }\r\n\r\n private appendPlane(normal: Vector3d, distance: number): void {\r\n this.appendValues(normal.x, normal.y, normal.z, distance);\r\n }\r\n\r\n private appendSetBoundary(): void {\r\n this.appendValues(0, 0, 0, 0);\r\n }\r\n\r\n private appendUnionBoundary(): void {\r\n this.appendValues(2, 2, 2, 0);\r\n }\r\n\r\n private appendEncodedFloat(value: number) {\r\n const sign = value < 0 ? 1 : 0;\r\n value = Math.abs(value);\r\n const exponent = Math.floor(Math.log10(value)) + 1;\r\n value = value / Math.pow(10, exponent);\r\n\r\n const bias = 38;\r\n let temp = value * 256;\r\n const b0 = Math.floor(temp);\r\n temp = (temp - b0) * 256;\r\n const b1 = Math.floor(temp);\r\n temp = (temp - b1) * 256;\r\n const b2 = Math.floor(temp);\r\n const b3 = (exponent + bias) * 2 + sign;\r\n\r\n this.appendUint8(b0);\r\n this.appendUint8(b1);\r\n this.appendUint8(b2);\r\n this.appendUint8(b3);\r\n }\r\n\r\n private advance(numBytes: number): void {\r\n this._curPos += numBytes;\r\n }\r\n\r\n private reset(): void {\r\n this._curPos = 0;\r\n }\r\n\r\n private updateData(transform: Transform): void {\r\n this.reset();\r\n transform.clone(this._viewMatrix);\r\n\r\n const { normal, dir, pos, v0 } = { ...scratch };\r\n for (const clip of this._clips) {\r\n for (let j = 0; j < clip.convexSets.length; j++) {\r\n const set = clip.convexSets[j];\r\n if (0 === set.planes.length)\r\n continue;\r\n\r\n if (j > 0)\r\n this.appendSetBoundary();\r\n\r\n for (const plane of set.planes) {\r\n plane.inwardNormalRef.clone(normal);\r\n let distance = plane.distance;\r\n\r\n const norm = normal;\r\n transform.matrix.multiplyVector(norm, dir);\r\n dir.normalizeInPlace();\r\n\r\n transform.multiplyPoint3d(norm.scale(distance, v0), pos);\r\n v0.setFromPoint3d(pos);\r\n\r\n normal.set(dir.x, dir.y, dir.z);\r\n distance = -v0.dotProduct(dir);\r\n this.appendPlane(normal, distance);\r\n }\r\n }\r\n\r\n this.appendUnionBoundary();\r\n }\r\n }\r\n}\r\n\r\n/** A ClipVector encoded for transmission to the GPU as a texture.\r\n * @internal\r\n */\r\nexport class ClipVolume extends RenderClipVolume {\r\n private readonly _buffer: ClipPlanesBuffer;\r\n\r\n public get numRows(): number {\r\n return this._buffer.numRows;\r\n }\r\n\r\n public get byteLength(): number {\r\n return this._buffer.byteLength;\r\n }\r\n\r\n public getData(viewMatrix: Transform): Uint8Array {\r\n return this._buffer.getData(viewMatrix);\r\n }\r\n\r\n public static create(clip: ClipVector): ClipVolume | undefined {\r\n if (!clip.isValid)\r\n return undefined;\r\n\r\n // Compute how many rows of data we need.\r\n const unions = [];\r\n let numRows = 0;\r\n for (const primitive of clip.clips) {\r\n const union = primitive.fetchClipPlanesRef();\r\n if (!union)\r\n continue;\r\n\r\n let numSets = 0;\r\n for (const set of union.convexSets) {\r\n const setLength = set.planes.length;\r\n if (setLength > 0) {\r\n ++numSets;\r\n numRows += setLength;\r\n }\r\n }\r\n\r\n if (numSets > 0) {\r\n unions.push(union);\r\n numRows += numSets - 1; // Additional boundary rows between sets.\r\n }\r\n }\r\n\r\n if (unions.length === 0)\r\n return undefined;\r\n\r\n numRows += unions.length; // Additional boundary row after each union - *including* the last union.\r\n const buffer = ClipPlanesBuffer.create(unions, numRows);\r\n return new ClipVolume(clip, buffer);\r\n }\r\n\r\n private constructor(clip: ClipVector, buffer: ClipPlanesBuffer) {\r\n super(clip);\r\n this._buffer = buffer;\r\n }\r\n}\r\n"]}
@@ -4,10 +4,11 @@
4
4
  import { ProgramBuilder } from "./ShaderBuilder";
5
5
  import { ShaderProgram } from "./ShaderProgram";
6
6
  /** @internal */
7
- export declare abstract class ClippingProgram {
7
+ export declare class ClippingProgram {
8
8
  protected _program?: ShaderProgram;
9
- abstract getProgram(numPlanes: number): ShaderProgram | undefined;
10
9
  compile(): boolean;
10
+ constructor(src: ProgramBuilder);
11
+ getProgram(numPlanes: number): ShaderProgram | undefined;
11
12
  dispose(): void;
12
13
  }
13
14
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"ClippingProgram.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/ClippingProgram.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAiB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAY/D,gBAAgB;AAChB,8BAAsB,eAAe;IACnC,SAAS,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;aAEnB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IACjE,OAAO,IAAI,OAAO;IAIlB,OAAO,IAAI,IAAI;CAGvB;AA2CD,gBAAgB;AAChB,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,eAAe,CAE9E"}
1
+ {"version":3,"file":"ClippingProgram.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/ClippingProgram.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAiB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAY/D,gBAAgB;AAChB,qBAAa,eAAe;IAC1B,SAAS,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAE5B,OAAO,IAAI,OAAO;gBAIN,GAAG,EAAE,cAAc;IAK/B,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIxD,OAAO,IAAI,IAAI;CAGvB;AAED,gBAAgB;AAChB,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,eAAe,CAE9E"}
@@ -8,58 +8,31 @@
8
8
  import { dispose } from "@itwin/core-bentley";
9
9
  import { System } from "./System";
10
10
  import { addClipping } from "./glsl/Clipping";
11
- function createClippingBuilder(src, isWebGL2) {
11
+ function createClippingBuilder(src) {
12
12
  const builder = src.clone();
13
13
  builder.vert.headerComment += "-Clip";
14
14
  builder.frag.headerComment += "-Clip";
15
- addClipping(builder, isWebGL2);
15
+ addClipping(builder);
16
16
  return builder;
17
17
  }
18
18
  /** @internal */
19
19
  export class ClippingProgram {
20
- compile() {
21
- return undefined === this._program || 0 /* Success */ === this._program.compile();
22
- }
23
- dispose() {
24
- this._program = dispose(this._program);
25
- }
26
- }
27
- /** WebGL 1 requires that the loop variable be a compile-time constant. If caller requests a number of planes greater than the maximum our current program
28
- * supports, recompile the program with sufficient maximum number of planes.
29
- */
30
- class WebGL1ClippingProgram extends ClippingProgram {
31
20
  constructor(src) {
32
- super();
33
- this._maxClippingPlanes = 0;
34
- this._builder = createClippingBuilder(src, false);
35
- }
36
- getProgram(numPlanes) {
37
- var _a;
38
- if (numPlanes <= 0)
39
- return undefined;
40
- if (!this._program || this._maxClippingPlanes < numPlanes) {
41
- (_a = this._program) === null || _a === void 0 ? void 0 : _a.endUse();
42
- this.dispose();
43
- this._builder.frag.addDefine("MAX_CLIPPING_PLANES", numPlanes.toString());
44
- this._program = this._builder.buildProgram(System.instance.context);
45
- this._maxClippingPlanes = numPlanes;
46
- }
47
- return this._program;
48
- }
49
- }
50
- /** WebGL 2 permits looping on a uniform. */
51
- class WebGL2ClippingProgram extends ClippingProgram {
52
- constructor(src) {
53
- super();
54
- const builder = createClippingBuilder(src, true);
21
+ const builder = createClippingBuilder(src);
55
22
  this._program = builder.buildProgram(System.instance.context);
56
23
  }
24
+ compile() {
25
+ return undefined === this._program || 0 /* Success */ === this._program.compile();
26
+ }
57
27
  getProgram(numPlanes) {
58
28
  return numPlanes > 0 ? this._program : undefined;
59
29
  }
30
+ dispose() {
31
+ this._program = dispose(this._program);
32
+ }
60
33
  }
61
34
  /** @internal */
62
35
  export function createClippingProgram(builder) {
63
- return System.instance.isWebGL2 ? new WebGL2ClippingProgram(builder) : new WebGL1ClippingProgram(builder);
36
+ return new ClippingProgram(builder);
64
37
  }
65
38
  //# sourceMappingURL=ClippingProgram.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClippingProgram.js","sourceRoot":"","sources":["../../../../src/render/webgl/ClippingProgram.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,SAAS,qBAAqB,CAAC,GAAmB,EAAE,QAAiB;IACnE,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;IAC5B,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC;IACtC,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gBAAgB;AAChB,MAAM,OAAgB,eAAe;IAI5B,OAAO;QACZ,OAAO,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,oBAA0B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC1F,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,qBAAsB,SAAQ,eAAe;IAIjD,YAAmB,GAAmB;QACpC,KAAK,EAAE,CAAC;QAHF,uBAAkB,GAAG,CAAC,CAAC;QAI7B,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAEM,UAAU,CAAC,SAAiB;;QACjC,IAAI,SAAS,IAAI,CAAC;YAChB,OAAO,SAAS,CAAC;QAEnB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,GAAG,SAAS,EAAE;YACzD,MAAA,IAAI,CAAC,QAAQ,0CAAE,MAAM,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACpE,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;SACrC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF;AAED,4CAA4C;AAC5C,MAAM,qBAAsB,SAAQ,eAAe;IACjD,YAAmB,GAAmB;QACpC,KAAK,EAAE,CAAC;QACR,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChE,CAAC;IAEM,UAAU,CAAC,SAAiB;QACjC,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACnD,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,UAAU,qBAAqB,CAAC,OAAuB;IAC3D,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC5G,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { dispose } from \"@itwin/core-bentley\";\r\nimport { ProgramBuilder } from \"./ShaderBuilder\";\r\nimport { CompileStatus, ShaderProgram } from \"./ShaderProgram\";\r\nimport { System } from \"./System\";\r\nimport { addClipping } from \"./glsl/Clipping\";\r\n\r\nfunction createClippingBuilder(src: ProgramBuilder, isWebGL2: boolean): ProgramBuilder {\r\n const builder = src.clone();\r\n builder.vert.headerComment += \"-Clip\";\r\n builder.frag.headerComment += \"-Clip\";\r\n addClipping(builder, isWebGL2);\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport abstract class ClippingProgram {\r\n protected _program?: ShaderProgram;\r\n\r\n public abstract getProgram(numPlanes: number): ShaderProgram | undefined;\r\n public compile(): boolean {\r\n return undefined === this._program || CompileStatus.Success === this._program.compile();\r\n }\r\n\r\n public dispose(): void {\r\n this._program = dispose(this._program);\r\n }\r\n}\r\n\r\n/** WebGL 1 requires that the loop variable be a compile-time constant. If caller requests a number of planes greater than the maximum our current program\r\n * supports, recompile the program with sufficient maximum number of planes.\r\n */\r\nclass WebGL1ClippingProgram extends ClippingProgram {\r\n private _builder: ProgramBuilder;\r\n private _maxClippingPlanes = 0;\r\n\r\n public constructor(src: ProgramBuilder) {\r\n super();\r\n this._builder = createClippingBuilder(src, false);\r\n }\r\n\r\n public getProgram(numPlanes: number): ShaderProgram | undefined {\r\n if (numPlanes <= 0)\r\n return undefined;\r\n\r\n if (!this._program || this._maxClippingPlanes < numPlanes) {\r\n this._program?.endUse();\r\n this.dispose();\r\n this._builder.frag.addDefine(\"MAX_CLIPPING_PLANES\", numPlanes.toString());\r\n this._program = this._builder.buildProgram(System.instance.context);\r\n this._maxClippingPlanes = numPlanes;\r\n }\r\n\r\n return this._program;\r\n }\r\n}\r\n\r\n/** WebGL 2 permits looping on a uniform. */\r\nclass WebGL2ClippingProgram extends ClippingProgram {\r\n public constructor(src: ProgramBuilder) {\r\n super();\r\n const builder = createClippingBuilder(src, true);\r\n this._program = builder.buildProgram(System.instance.context);\r\n }\r\n\r\n public getProgram(numPlanes: number): ShaderProgram | undefined {\r\n return numPlanes > 0 ? this._program : undefined;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function createClippingProgram(builder: ProgramBuilder): ClippingProgram {\r\n return System.instance.isWebGL2 ? new WebGL2ClippingProgram(builder) : new WebGL1ClippingProgram(builder);\r\n}\r\n"]}
1
+ {"version":3,"file":"ClippingProgram.js","sourceRoot":"","sources":["../../../../src/render/webgl/ClippingProgram.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,SAAS,qBAAqB,CAAC,GAAmB;IAChD,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;IAC5B,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC;IACtC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gBAAgB;AAChB,MAAM,OAAO,eAAe;IAO1B,YAAmB,GAAmB;QACpC,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChE,CAAC;IAPM,OAAO;QACZ,OAAO,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,oBAA0B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC1F,CAAC;IAOM,UAAU,CAAC,SAAiB;QACjC,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACnD,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,UAAU,qBAAqB,CAAC,OAAuB;IAC3D,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { dispose } from \"@itwin/core-bentley\";\r\nimport { ProgramBuilder } from \"./ShaderBuilder\";\r\nimport { CompileStatus, ShaderProgram } from \"./ShaderProgram\";\r\nimport { System } from \"./System\";\r\nimport { addClipping } from \"./glsl/Clipping\";\r\n\r\nfunction createClippingBuilder(src: ProgramBuilder): ProgramBuilder {\r\n const builder = src.clone();\r\n builder.vert.headerComment += \"-Clip\";\r\n builder.frag.headerComment += \"-Clip\";\r\n addClipping(builder);\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport class ClippingProgram {\r\n protected _program?: ShaderProgram;\r\n\r\n public compile(): boolean {\r\n return undefined === this._program || CompileStatus.Success === this._program.compile();\r\n }\r\n\r\n public constructor(src: ProgramBuilder) {\r\n const builder = createClippingBuilder(src);\r\n this._program = builder.buildProgram(System.instance.context);\r\n }\r\n\r\n public getProgram(numPlanes: number): ShaderProgram | undefined {\r\n return numPlanes > 0 ? this._program : undefined;\r\n }\r\n\r\n public dispose(): void {\r\n this._program = dispose(this._program);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function createClippingProgram(builder: ProgramBuilder): ClippingProgram {\r\n return new ClippingProgram(builder);\r\n}\r\n"]}
@@ -21,7 +21,7 @@ export declare class ShaderProgramParams {
21
21
  bindProjectionMatrix(uniform: UniformHandle): void;
22
22
  get isViewCoords(): boolean;
23
23
  get isOverlayPass(): boolean;
24
- get context(): import("@itwin/webgl-compatibility").WebGLContext;
24
+ get context(): WebGL2RenderingContext;
25
25
  init(target: Target, pass?: RenderPass): void;
26
26
  }
27
27
  /** @internal */
@@ -35,7 +35,7 @@ export declare class DrawParams {
35
35
  get projectionMatrix(): import("./Matrix").Matrix4;
36
36
  get isViewCoords(): boolean;
37
37
  get isOverlayPass(): boolean;
38
- get context(): import("@itwin/webgl-compatibility").WebGLContext;
38
+ get context(): WebGL2RenderingContext;
39
39
  init(programParams: ShaderProgramParams, geometry: CachedGeometry): void;
40
40
  }
41
41
  /** Defines operation associated with pushing or popping a branch
@@ -1 +1 @@
1
- {"version":3,"file":"DrawCommand.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/DrawCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DrawCommand.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/DrawCommand.ts"],"names":[],"mappings":"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"}
@@ -22,10 +22,10 @@ export class ShaderProgramParams {
22
22
  get renderPass() { return this._renderPass; }
23
23
  get projectionMatrix() { return this.target.uniforms.getProjectionMatrix32(this.isViewCoords); }
24
24
  bindProjectionMatrix(uniform) { this.target.uniforms.bindProjectionMatrix(uniform, this.isViewCoords); }
25
- get isViewCoords() { return 12 /* ViewOverlay */ === this.renderPass || 0 /* Background */ === this.renderPass; }
26
- get isOverlayPass() { return 11 /* WorldOverlay */ === this.renderPass || 12 /* ViewOverlay */ === this.renderPass; }
25
+ get isViewCoords() { return 13 /* ViewOverlay */ === this.renderPass || 0 /* Background */ === this.renderPass; }
26
+ get isOverlayPass() { return 12 /* WorldOverlay */ === this.renderPass || 13 /* ViewOverlay */ === this.renderPass; }
27
27
  get context() { return System.instance.context; }
28
- init(target, pass = 4 /* OpaqueGeneral */) {
28
+ init(target, pass = 5 /* OpaqueGeneral */) {
29
29
  this._renderPass = pass;
30
30
  this._target = target;
31
31
  }
@@ -43,7 +43,9 @@ export class DrawParams {
43
43
  get target() { return this.programParams.target; }
44
44
  get renderPass() { return this.programParams.renderPass; }
45
45
  get projectionMatrix() { return this.programParams.projectionMatrix; }
46
- get isViewCoords() { return this.programParams.isViewCoords; }
46
+ get isViewCoords() {
47
+ return this.programParams.isViewCoords || this.target.currentBranch.forceViewCoords;
48
+ }
47
49
  get isOverlayPass() { return this.programParams.isOverlayPass; }
48
50
  get context() { return this.programParams.context; }
49
51
  init(programParams, geometry) {
@@ -160,7 +162,7 @@ export class PrimitiveCommand {
160
162
  // Point clouds do not support hillshade or slope mode for thematic display.
161
163
  if (isThematic && (undefined !== this.primitive.cachedGeometry.asPointCloud) && (target.uniforms.thematic.wantSlopeMode || target.uniforms.thematic.wantHillShadeMode))
162
164
  isThematic = 0 /* No */;
163
- const wiremesh = target.currentViewFlags.wiremesh && System.instance.isWebGL2 && (techniqueId === 0 /* Surface */ || techniqueId === 7 /* RealityMesh */);
165
+ const wiremesh = target.currentViewFlags.wiremesh && (techniqueId === 0 /* Surface */ || techniqueId === 7 /* RealityMesh */);
164
166
  const isWiremesh = wiremesh ? 1 /* Yes */ : 0 /* No */;
165
167
  const flags = PrimitiveCommand._scratchTechniqueFlags;
166
168
  const posType = this.primitive.cachedGeometry.usesQuantizedPositions ? "quantized" : "unquantized";
@@ -1 +1 @@
1
- {"version":3,"file":"DrawCommand.js","sourceRoot":"","sources":["../../../../src/render/webgl/DrawCommand.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, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { BranchState } from \"./BranchState\";\r\nimport { CachedGeometry } from \"./CachedGeometry\";\r\nimport { ClipVolume } from \"./ClipVolume\";\r\nimport { isFeatureHilited } from \"./FeatureOverrides\";\r\nimport { Batch, Branch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { Pass, RenderOrder, RenderPass } from \"./RenderFlags\";\r\nimport { ShaderProgramExecutor } from \"./ShaderProgram\";\r\nimport { System } from \"./System\";\r\nimport { Hilites, Target } from \"./Target\";\r\nimport { IsAnimated, IsClassified, IsInstanced, IsShadowable, IsThematic, IsWiremesh, TechniqueFlags } from \"./TechniqueFlags\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\n\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** @internal */\r\nexport class ShaderProgramParams {\r\n private _target?: Target;\r\n private _renderPass: RenderPass = RenderPass.None;\r\n\r\n public get target(): Target {\r\n assert(undefined !== this._target);\r\n return this._target;\r\n }\r\n\r\n public get renderPass() { return this._renderPass; }\r\n\r\n public get projectionMatrix() { return this.target.uniforms.getProjectionMatrix32(this.isViewCoords); }\r\n public bindProjectionMatrix(uniform: UniformHandle) { this.target.uniforms.bindProjectionMatrix(uniform, this.isViewCoords); }\r\n\r\n public get isViewCoords() { return RenderPass.ViewOverlay === this.renderPass || RenderPass.Background === this.renderPass; }\r\n public get isOverlayPass() { return RenderPass.WorldOverlay === this.renderPass || RenderPass.ViewOverlay === this.renderPass; }\r\n public get context() { return System.instance.context; }\r\n\r\n public init(target: Target, pass: RenderPass = RenderPass.OpaqueGeneral) {\r\n this._renderPass = pass;\r\n this._target = target;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class DrawParams {\r\n private _programParams?: ShaderProgramParams;\r\n private _geometry?: CachedGeometry;\r\n\r\n public get geometry(): CachedGeometry {\r\n assert(undefined !== this._geometry);\r\n return this._geometry;\r\n }\r\n\r\n public get programParams(): ShaderProgramParams {\r\n assert(undefined !== this._programParams);\r\n return this._programParams;\r\n }\r\n\r\n public get target() { return this.programParams.target; }\r\n public get renderPass() { return this.programParams.renderPass; }\r\n public get projectionMatrix() { return this.programParams.projectionMatrix; }\r\n public get isViewCoords() { return this.programParams.isViewCoords; }\r\n public get isOverlayPass() { return this.programParams.isOverlayPass; }\r\n public get context() { return this.programParams.context; }\r\n\r\n public init(programParams: ShaderProgramParams, geometry: CachedGeometry) {\r\n this._programParams = programParams;\r\n this._geometry = geometry;\r\n }\r\n}\r\n\r\n/** Defines operation associated with pushing or popping a branch\r\n * @internal\r\n */\r\nexport const enum PushOrPop {\r\n Push,\r\n Pop,\r\n}\r\n\r\n/** Represents a command to be executed within a RenderPass. The most common command is\r\n * to draw a primitive; others involve state changes such as pushing/popping transforms\r\n * and symbology overrides, which require that commands be executed in order.\r\n * @internal\r\n */\r\nexport enum DrawOpCode {\r\n Primitive = \"drawPrimitive\", // eslint-disable-line @typescript-eslint/no-shadow\r\n PushBranch = \"pushBranch\",\r\n PopBranch = \"popBranch\",\r\n PushBatch = \"pushBatch\",\r\n PopBatch = \"popBatch\",\r\n PushState = \"pushState\",\r\n PushClip = \"pushClip\",\r\n PopClip = \"popClip\",\r\n}\r\n\r\n/** @internal */\r\nexport class PopBatchCommand {\r\n public readonly opcode = \"popBatch\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopBatchCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.popBatch();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushBatchCommand {\r\n public readonly opcode = \"pushBatch\";\r\n\r\n public constructor(public readonly batch: Batch) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.pushBatch(this.batch);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushStateCommand {\r\n public readonly opcode = \"pushState\";\r\n\r\n public constructor(public readonly state: BranchState) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.pushState(this.state);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushBranchCommand {\r\n public readonly opcode = \"pushBranch\";\r\n\r\n public constructor(public readonly branch: Branch) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.pushBranch(this.branch);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PopBranchCommand {\r\n public readonly opcode = \"popBranch\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopBranchCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.popBranch();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushClipCommand {\r\n public readonly opcode = \"pushClip\";\r\n\r\n public constructor(public readonly clip: ClipVolume) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.uniforms.branch.clipStack.push(this.clip);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PopClipCommand {\r\n public readonly opcode = \"popClip\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopClipCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.uniforms.branch.clipStack.pop();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PrimitiveCommand {\r\n public readonly opcode = \"drawPrimitive\";\r\n\r\n public constructor(public readonly primitive: Primitive) { }\r\n\r\n private static readonly _scratchTechniqueFlags = new TechniqueFlags();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n if (exec.target.isGeometryOutsideActiveVolume(this.primitive.cachedGeometry))\r\n return;\r\n\r\n const techniqueId = this.primitive.techniqueId;\r\n if (TechniqueId.Invalid === techniqueId)\r\n return;\r\n\r\n const target = exec.target;\r\n const thematic = this.primitive.cachedGeometry.supportsThematicDisplay && target.wantThematicDisplay;\r\n const shadowable = (techniqueId === TechniqueId.Surface || techniqueId === TechniqueId.RealityMesh) && target.solarShadowMap.isReady && target.currentViewFlags.shadows && !thematic;\r\n const isShadowable = shadowable ? IsShadowable.Yes : IsShadowable.No;\r\n let isThematic = thematic ? IsThematic.Yes : IsThematic.No;\r\n const isClassified = (undefined !== target.currentPlanarClassifierOrDrape || undefined !== target.activeVolumeClassifierTexture) ? IsClassified.Yes : IsClassified.No;\r\n const isInstanced = this.primitive.isInstanced ? IsInstanced.Yes : IsInstanced.No;\r\n const isAnimated = this.primitive.hasAnimation ? IsAnimated.Yes : IsAnimated.No;\r\n\r\n // Point clouds do not support hillshade or slope mode for thematic display.\r\n if (isThematic && (undefined !== this.primitive.cachedGeometry.asPointCloud) && (target.uniforms.thematic.wantSlopeMode || target.uniforms.thematic.wantHillShadeMode))\r\n isThematic = IsThematic.No;\r\n\r\n const wiremesh = target.currentViewFlags.wiremesh && System.instance.isWebGL2 && (techniqueId === TechniqueId.Surface || techniqueId === TechniqueId.RealityMesh);\r\n const isWiremesh = wiremesh ? IsWiremesh.Yes : IsWiremesh.No;\r\n const flags = PrimitiveCommand._scratchTechniqueFlags;\r\n const posType = this.primitive.cachedGeometry.usesQuantizedPositions ? \"quantized\" : \"unquantized\";\r\n flags.init(target, exec.renderPass, isInstanced, isAnimated, isClassified, isShadowable, isThematic, isWiremesh, posType);\r\n\r\n const technique = target.techniques.getTechnique(techniqueId);\r\n const program = technique.getShader(flags);\r\n\r\n if (exec.setProgram(program))\r\n exec.target.compositor.drawPrimitive(this.primitive, exec, program.outputsToPick);\r\n }\r\n\r\n public get hasFeatures(): boolean { return this.primitive.hasFeatures; }\r\n public get renderOrder(): RenderOrder { return this.primitive.renderOrder; }\r\n\r\n public getPass(target: Target): Pass {\r\n return this.primitive.getPass(target);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport type PushCommand = PushBranchCommand | PushBatchCommand | PushStateCommand | PushClipCommand;\r\n/** @internal */\r\nexport type PopCommand = PopBranchCommand | PopBatchCommand | PopClipCommand;\r\n/** @internal */\r\nexport type DrawCommand = PushCommand | PopCommand | PrimitiveCommand;\r\n\r\n/** For a single RenderPass, an ordered list of commands to be executed during that pass.\r\n * @internal\r\n */\r\nexport type DrawCommands = DrawCommand[];\r\n\r\n/** Extracts the commands for rendering the flashed classifier (if any) from the by-index set of volume classifier commands.\r\n * NB: Cmds will be sets of some pushes, a primitive, and then some pops (equal to number of pushes).\r\n * The primitive should be right in the middle of a set. We need to find the set which matches the flashID.\r\n * @internal\r\n */\r\nexport function extractFlashedVolumeClassifierCommands(flashedId: Id64String, cmds: DrawCommands, numCmdsPerClassifier: number): DrawCommands | undefined {\r\n if (!Id64.isValid(flashedId) || 0 === numCmdsPerClassifier)\r\n return undefined;\r\n\r\n const firstPrim = (numCmdsPerClassifier - 1) / 2;\r\n for (let i = firstPrim; i < cmds.length; i += numCmdsPerClassifier) {\r\n assert(\"drawPrimitive\" === cmds[i].opcode, \"Command list not configured as expected.\");\r\n const pc: PrimitiveCommand = cmds[i] as PrimitiveCommand;\r\n const surface = pc.primitive.cachedGeometry.asSurface;\r\n if (undefined !== surface && undefined !== surface.mesh.uniformFeatureId) {\r\n let j = i - 1;\r\n while (j >= 0 && \"pushBatch\" !== cmds[j].opcode) // Find batch for this primitive\r\n j--;\r\n if (j < 0)\r\n continue;\r\n\r\n const pushBatch = cmds[j] as PushBatchCommand;\r\n const elemId = pushBatch.batch.featureTable.findElementId(surface.mesh.uniformFeatureId);\r\n if (undefined !== elemId && elemId === flashedId) {\r\n return cmds.slice(i - firstPrim, i + firstPrim + 1);\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\n/** @internal */\r\nexport function extractHilitedVolumeClassifierCommands(hilites: Hilites, cmds: DrawCommands): DrawCommands {\r\n // TODO: This could really be done at the time the HiliteClassification render pass commands are being generated\r\n // by just not putting the ones which are not hilited into the ClassificationHilite command list.\r\n const result: DrawCommand[] = [];\r\n\r\n let batch;\r\n for (const cmd of cmds) {\r\n switch (cmd.opcode) {\r\n case \"popBranch\":\r\n if (result.length > 0 && \"pushBranch\" === result[result.length - 1].opcode) {\r\n result.pop(); // remove empty push/pop pairs\r\n continue;\r\n }\r\n break;\r\n case \"popBatch\":\r\n batch = undefined;\r\n if (result.length > 0 && \"pushBatch\" === result[result.length - 1].opcode) {\r\n result.pop(); // remove empty push/pop pairs\r\n continue;\r\n }\r\n break;\r\n case \"pushBatch\":\r\n batch = cmd.batch;\r\n break;\r\n case \"drawPrimitive\":\r\n if (undefined !== batch) {\r\n // Skip any primitives that are not hilited.\r\n const surface = cmd.primitive.cachedGeometry.asSurface;\r\n if (undefined === surface || undefined === surface.mesh.uniformFeatureId)\r\n continue;\r\n\r\n const feature = batch.featureTable.getPackedFeature(surface.mesh.uniformFeatureId);\r\n if (undefined === feature || !isFeatureHilited(feature, hilites, hilites.models.hasId(batch.featureTable.modelId)))\r\n continue;\r\n\r\n break;\r\n }\r\n }\r\n\r\n result.push(cmd);\r\n }\r\n\r\n return result;\r\n}\r\n"]}
1
+ {"version":3,"file":"DrawCommand.js","sourceRoot":"","sources":["../../../../src/render/webgl/DrawCommand.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, Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { BranchState } from \"./BranchState\";\r\nimport { CachedGeometry } from \"./CachedGeometry\";\r\nimport { ClipVolume } from \"./ClipVolume\";\r\nimport { isFeatureHilited } from \"./FeatureOverrides\";\r\nimport { Batch, Branch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { Primitive } from \"./Primitive\";\r\nimport { Pass, RenderOrder, RenderPass } from \"./RenderFlags\";\r\nimport { ShaderProgramExecutor } from \"./ShaderProgram\";\r\nimport { System } from \"./System\";\r\nimport { Hilites, Target } from \"./Target\";\r\nimport { IsAnimated, IsClassified, IsInstanced, IsShadowable, IsThematic, IsWiremesh, TechniqueFlags } from \"./TechniqueFlags\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\n\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** @internal */\r\nexport class ShaderProgramParams {\r\n private _target?: Target;\r\n private _renderPass: RenderPass = RenderPass.None;\r\n\r\n public get target(): Target {\r\n assert(undefined !== this._target);\r\n return this._target;\r\n }\r\n\r\n public get renderPass() { return this._renderPass; }\r\n\r\n public get projectionMatrix() { return this.target.uniforms.getProjectionMatrix32(this.isViewCoords); }\r\n public bindProjectionMatrix(uniform: UniformHandle) { this.target.uniforms.bindProjectionMatrix(uniform, this.isViewCoords); }\r\n\r\n public get isViewCoords() { return RenderPass.ViewOverlay === this.renderPass || RenderPass.Background === this.renderPass; }\r\n public get isOverlayPass() { return RenderPass.WorldOverlay === this.renderPass || RenderPass.ViewOverlay === this.renderPass; }\r\n public get context() { return System.instance.context; }\r\n\r\n public init(target: Target, pass: RenderPass = RenderPass.OpaqueGeneral) {\r\n this._renderPass = pass;\r\n this._target = target;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class DrawParams {\r\n private _programParams?: ShaderProgramParams;\r\n private _geometry?: CachedGeometry;\r\n\r\n public get geometry(): CachedGeometry {\r\n assert(undefined !== this._geometry);\r\n return this._geometry;\r\n }\r\n\r\n public get programParams(): ShaderProgramParams {\r\n assert(undefined !== this._programParams);\r\n return this._programParams;\r\n }\r\n\r\n public get target() { return this.programParams.target; }\r\n public get renderPass() { return this.programParams.renderPass; }\r\n public get projectionMatrix() { return this.programParams.projectionMatrix; }\r\n public get isViewCoords() {\r\n return this.programParams.isViewCoords || this.target.currentBranch.forceViewCoords;\r\n }\r\n public get isOverlayPass() { return this.programParams.isOverlayPass; }\r\n public get context() { return this.programParams.context; }\r\n\r\n public init(programParams: ShaderProgramParams, geometry: CachedGeometry) {\r\n this._programParams = programParams;\r\n this._geometry = geometry;\r\n }\r\n}\r\n\r\n/** Defines operation associated with pushing or popping a branch\r\n * @internal\r\n */\r\nexport const enum PushOrPop {\r\n Push,\r\n Pop,\r\n}\r\n\r\n/** Represents a command to be executed within a RenderPass. The most common command is\r\n * to draw a primitive; others involve state changes such as pushing/popping transforms\r\n * and symbology overrides, which require that commands be executed in order.\r\n * @internal\r\n */\r\nexport enum DrawOpCode {\r\n Primitive = \"drawPrimitive\", // eslint-disable-line @typescript-eslint/no-shadow\r\n PushBranch = \"pushBranch\",\r\n PopBranch = \"popBranch\",\r\n PushBatch = \"pushBatch\",\r\n PopBatch = \"popBatch\",\r\n PushState = \"pushState\",\r\n PushClip = \"pushClip\",\r\n PopClip = \"popClip\",\r\n}\r\n\r\n/** @internal */\r\nexport class PopBatchCommand {\r\n public readonly opcode = \"popBatch\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopBatchCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.popBatch();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushBatchCommand {\r\n public readonly opcode = \"pushBatch\";\r\n\r\n public constructor(public readonly batch: Batch) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.pushBatch(this.batch);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushStateCommand {\r\n public readonly opcode = \"pushState\";\r\n\r\n public constructor(public readonly state: BranchState) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.pushState(this.state);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushBranchCommand {\r\n public readonly opcode = \"pushBranch\";\r\n\r\n public constructor(public readonly branch: Branch) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.pushBranch(this.branch);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PopBranchCommand {\r\n public readonly opcode = \"popBranch\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopBranchCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.popBranch();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PushClipCommand {\r\n public readonly opcode = \"pushClip\";\r\n\r\n public constructor(public readonly clip: ClipVolume) { }\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.uniforms.branch.clipStack.push(this.clip);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PopClipCommand {\r\n public readonly opcode = \"popClip\";\r\n\r\n private constructor() { }\r\n\r\n public static instance = new PopClipCommand();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n exec.target.uniforms.branch.clipStack.pop();\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PrimitiveCommand {\r\n public readonly opcode = \"drawPrimitive\";\r\n\r\n public constructor(public readonly primitive: Primitive) { }\r\n\r\n private static readonly _scratchTechniqueFlags = new TechniqueFlags();\r\n\r\n public execute(exec: ShaderProgramExecutor): void {\r\n if (exec.target.isGeometryOutsideActiveVolume(this.primitive.cachedGeometry))\r\n return;\r\n\r\n const techniqueId = this.primitive.techniqueId;\r\n if (TechniqueId.Invalid === techniqueId)\r\n return;\r\n\r\n const target = exec.target;\r\n const thematic = this.primitive.cachedGeometry.supportsThematicDisplay && target.wantThematicDisplay;\r\n const shadowable = (techniqueId === TechniqueId.Surface || techniqueId === TechniqueId.RealityMesh) && target.solarShadowMap.isReady && target.currentViewFlags.shadows && !thematic;\r\n const isShadowable = shadowable ? IsShadowable.Yes : IsShadowable.No;\r\n let isThematic = thematic ? IsThematic.Yes : IsThematic.No;\r\n const isClassified = (undefined !== target.currentPlanarClassifierOrDrape || undefined !== target.activeVolumeClassifierTexture) ? IsClassified.Yes : IsClassified.No;\r\n const isInstanced = this.primitive.isInstanced ? IsInstanced.Yes : IsInstanced.No;\r\n const isAnimated = this.primitive.hasAnimation ? IsAnimated.Yes : IsAnimated.No;\r\n\r\n // Point clouds do not support hillshade or slope mode for thematic display.\r\n if (isThematic && (undefined !== this.primitive.cachedGeometry.asPointCloud) && (target.uniforms.thematic.wantSlopeMode || target.uniforms.thematic.wantHillShadeMode))\r\n isThematic = IsThematic.No;\r\n\r\n const wiremesh = target.currentViewFlags.wiremesh && (techniqueId === TechniqueId.Surface || techniqueId === TechniqueId.RealityMesh);\r\n const isWiremesh = wiremesh ? IsWiremesh.Yes : IsWiremesh.No;\r\n const flags = PrimitiveCommand._scratchTechniqueFlags;\r\n const posType = this.primitive.cachedGeometry.usesQuantizedPositions ? \"quantized\" : \"unquantized\";\r\n flags.init(target, exec.renderPass, isInstanced, isAnimated, isClassified, isShadowable, isThematic, isWiremesh, posType);\r\n\r\n const technique = target.techniques.getTechnique(techniqueId);\r\n const program = technique.getShader(flags);\r\n\r\n if (exec.setProgram(program))\r\n exec.target.compositor.drawPrimitive(this.primitive, exec, program.outputsToPick);\r\n }\r\n\r\n public get hasFeatures(): boolean { return this.primitive.hasFeatures; }\r\n public get renderOrder(): RenderOrder { return this.primitive.renderOrder; }\r\n\r\n public getPass(target: Target): Pass {\r\n return this.primitive.getPass(target);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport type PushCommand = PushBranchCommand | PushBatchCommand | PushStateCommand | PushClipCommand;\r\n/** @internal */\r\nexport type PopCommand = PopBranchCommand | PopBatchCommand | PopClipCommand;\r\n/** @internal */\r\nexport type DrawCommand = PushCommand | PopCommand | PrimitiveCommand;\r\n\r\n/** For a single RenderPass, an ordered list of commands to be executed during that pass.\r\n * @internal\r\n */\r\nexport type DrawCommands = DrawCommand[];\r\n\r\n/** Extracts the commands for rendering the flashed classifier (if any) from the by-index set of volume classifier commands.\r\n * NB: Cmds will be sets of some pushes, a primitive, and then some pops (equal to number of pushes).\r\n * The primitive should be right in the middle of a set. We need to find the set which matches the flashID.\r\n * @internal\r\n */\r\nexport function extractFlashedVolumeClassifierCommands(flashedId: Id64String, cmds: DrawCommands, numCmdsPerClassifier: number): DrawCommands | undefined {\r\n if (!Id64.isValid(flashedId) || 0 === numCmdsPerClassifier)\r\n return undefined;\r\n\r\n const firstPrim = (numCmdsPerClassifier - 1) / 2;\r\n for (let i = firstPrim; i < cmds.length; i += numCmdsPerClassifier) {\r\n assert(\"drawPrimitive\" === cmds[i].opcode, \"Command list not configured as expected.\");\r\n const pc: PrimitiveCommand = cmds[i] as PrimitiveCommand;\r\n const surface = pc.primitive.cachedGeometry.asSurface;\r\n if (undefined !== surface && undefined !== surface.mesh.uniformFeatureId) {\r\n let j = i - 1;\r\n while (j >= 0 && \"pushBatch\" !== cmds[j].opcode) // Find batch for this primitive\r\n j--;\r\n if (j < 0)\r\n continue;\r\n\r\n const pushBatch = cmds[j] as PushBatchCommand;\r\n const elemId = pushBatch.batch.featureTable.findElementId(surface.mesh.uniformFeatureId);\r\n if (undefined !== elemId && elemId === flashedId) {\r\n return cmds.slice(i - firstPrim, i + firstPrim + 1);\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\n/** @internal */\r\nexport function extractHilitedVolumeClassifierCommands(hilites: Hilites, cmds: DrawCommands): DrawCommands {\r\n // TODO: This could really be done at the time the HiliteClassification render pass commands are being generated\r\n // by just not putting the ones which are not hilited into the ClassificationHilite command list.\r\n const result: DrawCommand[] = [];\r\n\r\n let batch;\r\n for (const cmd of cmds) {\r\n switch (cmd.opcode) {\r\n case \"popBranch\":\r\n if (result.length > 0 && \"pushBranch\" === result[result.length - 1].opcode) {\r\n result.pop(); // remove empty push/pop pairs\r\n continue;\r\n }\r\n break;\r\n case \"popBatch\":\r\n batch = undefined;\r\n if (result.length > 0 && \"pushBatch\" === result[result.length - 1].opcode) {\r\n result.pop(); // remove empty push/pop pairs\r\n continue;\r\n }\r\n break;\r\n case \"pushBatch\":\r\n batch = cmd.batch;\r\n break;\r\n case \"drawPrimitive\":\r\n if (undefined !== batch) {\r\n // Skip any primitives that are not hilited.\r\n const surface = cmd.primitive.cachedGeometry.asSurface;\r\n if (undefined === surface || undefined === surface.mesh.uniformFeatureId)\r\n continue;\r\n\r\n const feature = batch.featureTable.getPackedFeature(surface.mesh.uniformFeatureId);\r\n if (undefined === feature || !isFeatureHilited(feature, hilites, hilites.models.hasId(batch.featureTable.modelId)))\r\n continue;\r\n\r\n break;\r\n }\r\n }\r\n\r\n result.push(cmd);\r\n }\r\n\r\n return result;\r\n}\r\n"]}
@@ -0,0 +1,40 @@
1
+ import { RenderMemory } from "../RenderMemory";
2
+ import { WebGLDisposable } from "./Disposable";
3
+ import { DepthBuffer, FrameBuffer } from "./FrameBuffer";
4
+ import { Target } from "./Target";
5
+ import { TextureHandle } from "./Texture";
6
+ /** @internal */
7
+ export declare enum EDLMode {
8
+ Off = 0,
9
+ On = 1,
10
+ Full = 2
11
+ }
12
+ /** @internal */
13
+ export interface EDLDrawParams {
14
+ inputTex: TextureHandle;
15
+ curFbo: FrameBuffer;
16
+ edlMode: EDLMode;
17
+ edlFilter: boolean;
18
+ useMsBuffers: boolean;
19
+ }
20
+ export declare class EyeDomeLighting implements RenderMemory.Consumer, WebGLDisposable {
21
+ private _bundle?;
22
+ private _width;
23
+ private _height;
24
+ private _depth?;
25
+ private _edlFinalFbo?;
26
+ private _edlFinalBufs?;
27
+ private readonly _target;
28
+ private getBundle;
29
+ constructor(target: Target);
30
+ init(width: number, height: number, depth: DepthBuffer): boolean;
31
+ collectStatistics(stats: RenderMemory.Statistics): void;
32
+ get isDisposed(): boolean;
33
+ dispose(): void;
34
+ reset(): void;
35
+ /** calculate EyeDomeLighting at specified quality using screen space shaders
36
+ * returns true if succeeds
37
+ */
38
+ draw(edlParams: EDLDrawParams): boolean;
39
+ }
40
+ //# sourceMappingURL=EDL.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EDL.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/EDL.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAOzD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAqG1C,gBAAgB;AAChB,oBAAY,OAAO;IAAG,GAAG,IAAA;IAAE,EAAE,IAAA;IAAE,IAAI,IAAA;CAAE;AAErC,gBAAgB;AAChB,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,eAAgB,YAAW,YAAY,CAAC,QAAQ,EAAE,eAAe;IAC5E,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAC,CAAc;IAC7B,OAAO,CAAC,YAAY,CAAC,CAAc;IACnC,OAAO,CAAC,aAAa,CAAC,CAAqE;IAC3F,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,OAAO,CAAC,SAAS;gBAQE,MAAM,EAAE,MAAM;IAM1B,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO;IAQhE,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAmB9D,IAAW,UAAU,IAAI,OAAO,CAA0E;IAEnG,OAAO;IAKP,KAAK;IAIZ;;OAEG;IACI,IAAI,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO;CAiG/C"}