@itwin/core-frontend 4.0.0-dev.1 → 4.0.0-dev.4

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 (417) hide show
  1. package/lib/cjs/IModelApp.d.ts +1 -0
  2. package/lib/cjs/IModelApp.d.ts.map +1 -1
  3. package/lib/cjs/IModelApp.js +2 -4
  4. package/lib/cjs/IModelApp.js.map +1 -1
  5. package/lib/cjs/SubCategoriesCache.d.ts.map +1 -1
  6. package/lib/cjs/SubCategoriesCache.js +0 -1
  7. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  8. package/lib/cjs/render/RealityMeshParams.d.ts +4 -1
  9. package/lib/cjs/render/RealityMeshParams.d.ts.map +1 -1
  10. package/lib/cjs/render/RealityMeshParams.js +14 -4
  11. package/lib/cjs/render/RealityMeshParams.js.map +1 -1
  12. package/lib/cjs/render/RenderSystem.d.ts +5 -16
  13. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  14. package/lib/cjs/render/RenderSystem.js +0 -6
  15. package/lib/cjs/render/RenderSystem.js.map +1 -1
  16. package/lib/cjs/render/ScreenSpaceEffectBuilder.d.ts +3 -4
  17. package/lib/cjs/render/ScreenSpaceEffectBuilder.d.ts.map +1 -1
  18. package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
  19. package/lib/cjs/render/webgl/AttributeBuffers.d.ts +9 -79
  20. package/lib/cjs/render/webgl/AttributeBuffers.d.ts.map +1 -1
  21. package/lib/cjs/render/webgl/AttributeBuffers.js +19 -152
  22. package/lib/cjs/render/webgl/AttributeBuffers.js.map +1 -1
  23. package/lib/cjs/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  24. package/lib/cjs/render/webgl/BackgroundMapDrape.js +0 -3
  25. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  26. package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
  27. package/lib/cjs/render/webgl/BranchUniforms.js +0 -8
  28. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  29. package/lib/cjs/render/webgl/ClipStack.d.ts +0 -1
  30. package/lib/cjs/render/webgl/ClipStack.d.ts.map +1 -1
  31. package/lib/cjs/render/webgl/ClipStack.js +2 -6
  32. package/lib/cjs/render/webgl/ClipStack.js.map +1 -1
  33. package/lib/cjs/render/webgl/ClipVolume.d.ts.map +1 -1
  34. package/lib/cjs/render/webgl/ClipVolume.js +1 -5
  35. package/lib/cjs/render/webgl/ClipVolume.js.map +1 -1
  36. package/lib/cjs/render/webgl/ClippingProgram.d.ts +3 -2
  37. package/lib/cjs/render/webgl/ClippingProgram.d.ts.map +1 -1
  38. package/lib/cjs/render/webgl/ClippingProgram.js +10 -37
  39. package/lib/cjs/render/webgl/ClippingProgram.js.map +1 -1
  40. package/lib/cjs/render/webgl/DrawCommand.d.ts +2 -2
  41. package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
  42. package/lib/cjs/render/webgl/DrawCommand.js +1 -1
  43. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  44. package/lib/cjs/render/webgl/FeatureOverrides.js +1 -1
  45. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  46. package/lib/cjs/render/webgl/FloatRGBA.d.ts.map +1 -1
  47. package/lib/cjs/render/webgl/FloatRGBA.js +0 -4
  48. package/lib/cjs/render/webgl/FloatRGBA.js.map +1 -1
  49. package/lib/cjs/render/webgl/FrameBuffer.js.map +1 -1
  50. package/lib/cjs/render/webgl/GLTimer.d.ts.map +1 -1
  51. package/lib/cjs/render/webgl/GLTimer.js +2 -35
  52. package/lib/cjs/render/webgl/GLTimer.js.map +1 -1
  53. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  54. package/lib/cjs/render/webgl/PlanarClassifier.js +13 -71
  55. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  56. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  57. package/lib/cjs/render/webgl/PointCloud.js +1 -3
  58. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  59. package/lib/cjs/render/webgl/RenderBuffer.d.ts +1 -1
  60. package/lib/cjs/render/webgl/RenderBuffer.d.ts.map +1 -1
  61. package/lib/cjs/render/webgl/RenderBuffer.js +2 -3
  62. package/lib/cjs/render/webgl/RenderBuffer.js.map +1 -1
  63. package/lib/cjs/render/webgl/RenderFlags.d.ts +1 -2
  64. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  65. package/lib/cjs/render/webgl/RenderFlags.js +4 -6
  66. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  67. package/lib/cjs/render/webgl/SceneCompositor.d.ts +0 -2
  68. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  69. package/lib/cjs/render/webgl/SceneCompositor.js +754 -1135
  70. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  71. package/lib/cjs/render/webgl/ScreenSpaceEffect.js +1 -1
  72. package/lib/cjs/render/webgl/ScreenSpaceEffect.js.map +1 -1
  73. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +1 -2
  74. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  75. package/lib/cjs/render/webgl/ShaderBuilder.js +13 -48
  76. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  77. package/lib/cjs/render/webgl/ShaderProgram.d.ts +1 -2
  78. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  79. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  80. package/lib/cjs/render/webgl/SolarShadowMap.d.ts.map +1 -1
  81. package/lib/cjs/render/webgl/SolarShadowMap.js +6 -18
  82. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  83. package/lib/cjs/render/webgl/System.d.ts +11 -10
  84. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  85. package/lib/cjs/render/webgl/System.js +40 -122
  86. package/lib/cjs/render/webgl/System.js.map +1 -1
  87. package/lib/cjs/render/webgl/Technique.d.ts +4 -5
  88. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  89. package/lib/cjs/render/webgl/Technique.js +4 -28
  90. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  91. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  92. package/lib/cjs/render/webgl/Texture.js +14 -18
  93. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  94. package/lib/cjs/render/webgl/ThematicSensors.d.ts +4 -3
  95. package/lib/cjs/render/webgl/ThematicSensors.d.ts.map +1 -1
  96. package/lib/cjs/render/webgl/ThematicSensors.js +9 -50
  97. package/lib/cjs/render/webgl/ThematicSensors.js.map +1 -1
  98. package/lib/cjs/render/webgl/ThematicUniforms.js +1 -1
  99. package/lib/cjs/render/webgl/ThematicUniforms.js.map +1 -1
  100. package/lib/cjs/render/webgl/UniformHandle.d.ts.map +1 -1
  101. package/lib/cjs/render/webgl/UniformHandle.js +1 -4
  102. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  103. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.d.ts +1 -2
  104. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
  105. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +1 -1
  106. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  107. package/lib/cjs/render/webgl/glsl/Animation.d.ts +1 -2
  108. package/lib/cjs/render/webgl/glsl/Animation.d.ts.map +1 -1
  109. package/lib/cjs/render/webgl/glsl/Animation.js +23 -26
  110. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  111. package/lib/cjs/render/webgl/glsl/Blur.d.ts +1 -2
  112. package/lib/cjs/render/webgl/glsl/Blur.d.ts.map +1 -1
  113. package/lib/cjs/render/webgl/glsl/Blur.js.map +1 -1
  114. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.d.ts +1 -2
  115. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.d.ts.map +1 -1
  116. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +2 -9
  117. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  118. package/lib/cjs/render/webgl/glsl/ClearTranslucent.d.ts +1 -2
  119. package/lib/cjs/render/webgl/glsl/ClearTranslucent.d.ts.map +1 -1
  120. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +2 -10
  121. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  122. package/lib/cjs/render/webgl/glsl/Clipping.d.ts +1 -1
  123. package/lib/cjs/render/webgl/glsl/Clipping.d.ts.map +1 -1
  124. package/lib/cjs/render/webgl/glsl/Clipping.js +5 -36
  125. package/lib/cjs/render/webgl/glsl/Clipping.js.map +1 -1
  126. package/lib/cjs/render/webgl/glsl/Combine3Textures.d.ts +1 -2
  127. package/lib/cjs/render/webgl/glsl/Combine3Textures.d.ts.map +1 -1
  128. package/lib/cjs/render/webgl/glsl/Combine3Textures.js.map +1 -1
  129. package/lib/cjs/render/webgl/glsl/CombineTextures.d.ts +1 -2
  130. package/lib/cjs/render/webgl/glsl/CombineTextures.d.ts.map +1 -1
  131. package/lib/cjs/render/webgl/glsl/CombineTextures.js.map +1 -1
  132. package/lib/cjs/render/webgl/glsl/Common.d.ts.map +1 -1
  133. package/lib/cjs/render/webgl/glsl/Common.js +9 -55
  134. package/lib/cjs/render/webgl/glsl/Common.js.map +1 -1
  135. package/lib/cjs/render/webgl/glsl/Composite.d.ts +1 -2
  136. package/lib/cjs/render/webgl/glsl/Composite.d.ts.map +1 -1
  137. package/lib/cjs/render/webgl/glsl/Composite.js.map +1 -1
  138. package/lib/cjs/render/webgl/glsl/CopyColor.d.ts +1 -2
  139. package/lib/cjs/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  140. package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
  141. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.d.ts +1 -2
  142. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.d.ts.map +1 -1
  143. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +12 -19
  144. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  145. package/lib/cjs/render/webgl/glsl/CopyStencil.d.ts +4 -7
  146. package/lib/cjs/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  147. package/lib/cjs/render/webgl/glsl/CopyStencil.js +2 -39
  148. package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
  149. package/lib/cjs/render/webgl/glsl/EDL.d.ts +4 -5
  150. package/lib/cjs/render/webgl/glsl/EDL.d.ts.map +1 -1
  151. package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -1
  152. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.d.ts +1 -2
  153. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.d.ts.map +1 -1
  154. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  155. package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
  156. package/lib/cjs/render/webgl/glsl/Edge.js +2 -2
  157. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  158. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  159. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +3 -24
  160. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  161. package/lib/cjs/render/webgl/glsl/Fragment.d.ts +0 -7
  162. package/lib/cjs/render/webgl/glsl/Fragment.d.ts.map +1 -1
  163. package/lib/cjs/render/webgl/glsl/Fragment.js +5 -40
  164. package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
  165. package/lib/cjs/render/webgl/glsl/Instancing.d.ts.map +1 -1
  166. package/lib/cjs/render/webgl/glsl/Instancing.js +1 -5
  167. package/lib/cjs/render/webgl/glsl/Instancing.js.map +1 -1
  168. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.d.ts.map +1 -1
  169. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +0 -2
  170. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  171. package/lib/cjs/render/webgl/glsl/PlanarGrid.d.ts +1 -2
  172. package/lib/cjs/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  173. package/lib/cjs/render/webgl/glsl/PlanarGrid.js +2 -12
  174. package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
  175. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  176. package/lib/cjs/render/webgl/glsl/RealityMesh.js +3 -8
  177. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  178. package/lib/cjs/render/webgl/glsl/SkyBox.d.ts +1 -2
  179. package/lib/cjs/render/webgl/glsl/SkyBox.d.ts.map +1 -1
  180. package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
  181. package/lib/cjs/render/webgl/glsl/SkySphere.d.ts +1 -2
  182. package/lib/cjs/render/webgl/glsl/SkySphere.d.ts.map +1 -1
  183. package/lib/cjs/render/webgl/glsl/SkySphere.js.map +1 -1
  184. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +1 -1
  185. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  186. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  187. package/lib/cjs/render/webgl/glsl/Surface.js +33 -57
  188. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  189. package/lib/cjs/render/webgl/glsl/Thematic.d.ts.map +1 -1
  190. package/lib/cjs/render/webgl/glsl/Thematic.js +3 -36
  191. package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
  192. package/lib/cjs/render/webgl/glsl/Translucency.d.ts.map +1 -1
  193. package/lib/cjs/render/webgl/glsl/Translucency.js +2 -12
  194. package/lib/cjs/render/webgl/glsl/Translucency.js.map +1 -1
  195. package/lib/cjs/render/webgl/glsl/Vertex.d.ts +1 -2
  196. package/lib/cjs/render/webgl/glsl/Vertex.d.ts.map +1 -1
  197. package/lib/cjs/render/webgl/glsl/Vertex.js +15 -78
  198. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  199. package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts.map +1 -1
  200. package/lib/cjs/render/webgl/glsl/Wiremesh.js +2 -5
  201. package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -1
  202. package/lib/cjs/tile/PrimaryTileTree.d.ts +0 -3
  203. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  204. package/lib/cjs/tile/PrimaryTileTree.js +6 -28
  205. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  206. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  207. package/lib/cjs/tile/TileAdmin.js +2 -2
  208. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  209. package/lib/esm/IModelApp.d.ts +1 -0
  210. package/lib/esm/IModelApp.d.ts.map +1 -1
  211. package/lib/esm/IModelApp.js +2 -4
  212. package/lib/esm/IModelApp.js.map +1 -1
  213. package/lib/esm/SubCategoriesCache.d.ts.map +1 -1
  214. package/lib/esm/SubCategoriesCache.js +0 -1
  215. package/lib/esm/SubCategoriesCache.js.map +1 -1
  216. package/lib/esm/render/RealityMeshParams.d.ts +4 -1
  217. package/lib/esm/render/RealityMeshParams.d.ts.map +1 -1
  218. package/lib/esm/render/RealityMeshParams.js +14 -4
  219. package/lib/esm/render/RealityMeshParams.js.map +1 -1
  220. package/lib/esm/render/RenderSystem.d.ts +5 -16
  221. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  222. package/lib/esm/render/RenderSystem.js +0 -6
  223. package/lib/esm/render/RenderSystem.js.map +1 -1
  224. package/lib/esm/render/ScreenSpaceEffectBuilder.d.ts +3 -4
  225. package/lib/esm/render/ScreenSpaceEffectBuilder.d.ts.map +1 -1
  226. package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
  227. package/lib/esm/render/webgl/AttributeBuffers.d.ts +9 -79
  228. package/lib/esm/render/webgl/AttributeBuffers.d.ts.map +1 -1
  229. package/lib/esm/render/webgl/AttributeBuffers.js +16 -144
  230. package/lib/esm/render/webgl/AttributeBuffers.js.map +1 -1
  231. package/lib/esm/render/webgl/BackgroundMapDrape.d.ts.map +1 -1
  232. package/lib/esm/render/webgl/BackgroundMapDrape.js +0 -3
  233. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  234. package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
  235. package/lib/esm/render/webgl/BranchUniforms.js +0 -8
  236. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  237. package/lib/esm/render/webgl/ClipStack.d.ts +0 -1
  238. package/lib/esm/render/webgl/ClipStack.d.ts.map +1 -1
  239. package/lib/esm/render/webgl/ClipStack.js +2 -6
  240. package/lib/esm/render/webgl/ClipStack.js.map +1 -1
  241. package/lib/esm/render/webgl/ClipVolume.d.ts.map +1 -1
  242. package/lib/esm/render/webgl/ClipVolume.js +1 -5
  243. package/lib/esm/render/webgl/ClipVolume.js.map +1 -1
  244. package/lib/esm/render/webgl/ClippingProgram.d.ts +3 -2
  245. package/lib/esm/render/webgl/ClippingProgram.d.ts.map +1 -1
  246. package/lib/esm/render/webgl/ClippingProgram.js +10 -37
  247. package/lib/esm/render/webgl/ClippingProgram.js.map +1 -1
  248. package/lib/esm/render/webgl/DrawCommand.d.ts +2 -2
  249. package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
  250. package/lib/esm/render/webgl/DrawCommand.js +1 -1
  251. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  252. package/lib/esm/render/webgl/FeatureOverrides.js +1 -1
  253. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  254. package/lib/esm/render/webgl/FloatRGBA.d.ts.map +1 -1
  255. package/lib/esm/render/webgl/FloatRGBA.js +0 -4
  256. package/lib/esm/render/webgl/FloatRGBA.js.map +1 -1
  257. package/lib/esm/render/webgl/FrameBuffer.js.map +1 -1
  258. package/lib/esm/render/webgl/GLTimer.d.ts.map +1 -1
  259. package/lib/esm/render/webgl/GLTimer.js +2 -35
  260. package/lib/esm/render/webgl/GLTimer.js.map +1 -1
  261. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  262. package/lib/esm/render/webgl/PlanarClassifier.js +13 -71
  263. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  264. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  265. package/lib/esm/render/webgl/PointCloud.js +1 -3
  266. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  267. package/lib/esm/render/webgl/RenderBuffer.d.ts +1 -1
  268. package/lib/esm/render/webgl/RenderBuffer.d.ts.map +1 -1
  269. package/lib/esm/render/webgl/RenderBuffer.js +2 -3
  270. package/lib/esm/render/webgl/RenderBuffer.js.map +1 -1
  271. package/lib/esm/render/webgl/RenderFlags.d.ts +1 -2
  272. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  273. package/lib/esm/render/webgl/RenderFlags.js +4 -6
  274. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  275. package/lib/esm/render/webgl/SceneCompositor.d.ts +0 -2
  276. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  277. package/lib/esm/render/webgl/SceneCompositor.js +756 -1137
  278. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  279. package/lib/esm/render/webgl/ScreenSpaceEffect.js +1 -1
  280. package/lib/esm/render/webgl/ScreenSpaceEffect.js.map +1 -1
  281. package/lib/esm/render/webgl/ShaderBuilder.d.ts +1 -2
  282. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  283. package/lib/esm/render/webgl/ShaderBuilder.js +13 -48
  284. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  285. package/lib/esm/render/webgl/ShaderProgram.d.ts +1 -2
  286. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  287. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  288. package/lib/esm/render/webgl/SolarShadowMap.d.ts.map +1 -1
  289. package/lib/esm/render/webgl/SolarShadowMap.js +6 -18
  290. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  291. package/lib/esm/render/webgl/System.d.ts +11 -10
  292. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  293. package/lib/esm/render/webgl/System.js +42 -124
  294. package/lib/esm/render/webgl/System.js.map +1 -1
  295. package/lib/esm/render/webgl/Technique.d.ts +4 -5
  296. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  297. package/lib/esm/render/webgl/Technique.js +5 -29
  298. package/lib/esm/render/webgl/Technique.js.map +1 -1
  299. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  300. package/lib/esm/render/webgl/Texture.js +14 -18
  301. package/lib/esm/render/webgl/Texture.js.map +1 -1
  302. package/lib/esm/render/webgl/ThematicSensors.d.ts +4 -3
  303. package/lib/esm/render/webgl/ThematicSensors.d.ts.map +1 -1
  304. package/lib/esm/render/webgl/ThematicSensors.js +9 -50
  305. package/lib/esm/render/webgl/ThematicSensors.js.map +1 -1
  306. package/lib/esm/render/webgl/ThematicUniforms.js +1 -1
  307. package/lib/esm/render/webgl/ThematicUniforms.js.map +1 -1
  308. package/lib/esm/render/webgl/UniformHandle.d.ts.map +1 -1
  309. package/lib/esm/render/webgl/UniformHandle.js +1 -4
  310. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  311. package/lib/esm/render/webgl/glsl/AmbientOcclusion.d.ts +1 -2
  312. package/lib/esm/render/webgl/glsl/AmbientOcclusion.d.ts.map +1 -1
  313. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +1 -1
  314. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  315. package/lib/esm/render/webgl/glsl/Animation.d.ts +1 -2
  316. package/lib/esm/render/webgl/glsl/Animation.d.ts.map +1 -1
  317. package/lib/esm/render/webgl/glsl/Animation.js +23 -26
  318. package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
  319. package/lib/esm/render/webgl/glsl/Blur.d.ts +1 -2
  320. package/lib/esm/render/webgl/glsl/Blur.d.ts.map +1 -1
  321. package/lib/esm/render/webgl/glsl/Blur.js.map +1 -1
  322. package/lib/esm/render/webgl/glsl/ClearPickAndColor.d.ts +1 -2
  323. package/lib/esm/render/webgl/glsl/ClearPickAndColor.d.ts.map +1 -1
  324. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +2 -9
  325. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  326. package/lib/esm/render/webgl/glsl/ClearTranslucent.d.ts +1 -2
  327. package/lib/esm/render/webgl/glsl/ClearTranslucent.d.ts.map +1 -1
  328. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +2 -10
  329. package/lib/esm/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  330. package/lib/esm/render/webgl/glsl/Clipping.d.ts +1 -1
  331. package/lib/esm/render/webgl/glsl/Clipping.d.ts.map +1 -1
  332. package/lib/esm/render/webgl/glsl/Clipping.js +5 -36
  333. package/lib/esm/render/webgl/glsl/Clipping.js.map +1 -1
  334. package/lib/esm/render/webgl/glsl/Combine3Textures.d.ts +1 -2
  335. package/lib/esm/render/webgl/glsl/Combine3Textures.d.ts.map +1 -1
  336. package/lib/esm/render/webgl/glsl/Combine3Textures.js.map +1 -1
  337. package/lib/esm/render/webgl/glsl/CombineTextures.d.ts +1 -2
  338. package/lib/esm/render/webgl/glsl/CombineTextures.d.ts.map +1 -1
  339. package/lib/esm/render/webgl/glsl/CombineTextures.js.map +1 -1
  340. package/lib/esm/render/webgl/glsl/Common.d.ts.map +1 -1
  341. package/lib/esm/render/webgl/glsl/Common.js +9 -55
  342. package/lib/esm/render/webgl/glsl/Common.js.map +1 -1
  343. package/lib/esm/render/webgl/glsl/Composite.d.ts +1 -2
  344. package/lib/esm/render/webgl/glsl/Composite.d.ts.map +1 -1
  345. package/lib/esm/render/webgl/glsl/Composite.js.map +1 -1
  346. package/lib/esm/render/webgl/glsl/CopyColor.d.ts +1 -2
  347. package/lib/esm/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  348. package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
  349. package/lib/esm/render/webgl/glsl/CopyPickBuffers.d.ts +1 -2
  350. package/lib/esm/render/webgl/glsl/CopyPickBuffers.d.ts.map +1 -1
  351. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +12 -19
  352. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  353. package/lib/esm/render/webgl/glsl/CopyStencil.d.ts +4 -7
  354. package/lib/esm/render/webgl/glsl/CopyStencil.d.ts.map +1 -1
  355. package/lib/esm/render/webgl/glsl/CopyStencil.js +1 -37
  356. package/lib/esm/render/webgl/glsl/CopyStencil.js.map +1 -1
  357. package/lib/esm/render/webgl/glsl/EDL.d.ts +4 -5
  358. package/lib/esm/render/webgl/glsl/EDL.d.ts.map +1 -1
  359. package/lib/esm/render/webgl/glsl/EDL.js.map +1 -1
  360. package/lib/esm/render/webgl/glsl/EVSMFromDepth.d.ts +1 -2
  361. package/lib/esm/render/webgl/glsl/EVSMFromDepth.d.ts.map +1 -1
  362. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  363. package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
  364. package/lib/esm/render/webgl/glsl/Edge.js +2 -2
  365. package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
  366. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  367. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +3 -24
  368. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  369. package/lib/esm/render/webgl/glsl/Fragment.d.ts +0 -7
  370. package/lib/esm/render/webgl/glsl/Fragment.d.ts.map +1 -1
  371. package/lib/esm/render/webgl/glsl/Fragment.js +4 -38
  372. package/lib/esm/render/webgl/glsl/Fragment.js.map +1 -1
  373. package/lib/esm/render/webgl/glsl/Instancing.d.ts.map +1 -1
  374. package/lib/esm/render/webgl/glsl/Instancing.js +1 -5
  375. package/lib/esm/render/webgl/glsl/Instancing.js.map +1 -1
  376. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.d.ts.map +1 -1
  377. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +0 -2
  378. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  379. package/lib/esm/render/webgl/glsl/PlanarGrid.d.ts +1 -2
  380. package/lib/esm/render/webgl/glsl/PlanarGrid.d.ts.map +1 -1
  381. package/lib/esm/render/webgl/glsl/PlanarGrid.js +2 -12
  382. package/lib/esm/render/webgl/glsl/PlanarGrid.js.map +1 -1
  383. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  384. package/lib/esm/render/webgl/glsl/RealityMesh.js +3 -8
  385. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  386. package/lib/esm/render/webgl/glsl/SkyBox.d.ts +1 -2
  387. package/lib/esm/render/webgl/glsl/SkyBox.d.ts.map +1 -1
  388. package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
  389. package/lib/esm/render/webgl/glsl/SkySphere.d.ts +1 -2
  390. package/lib/esm/render/webgl/glsl/SkySphere.d.ts.map +1 -1
  391. package/lib/esm/render/webgl/glsl/SkySphere.js.map +1 -1
  392. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +1 -1
  393. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  394. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  395. package/lib/esm/render/webgl/glsl/Surface.js +33 -57
  396. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  397. package/lib/esm/render/webgl/glsl/Thematic.d.ts.map +1 -1
  398. package/lib/esm/render/webgl/glsl/Thematic.js +3 -36
  399. package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
  400. package/lib/esm/render/webgl/glsl/Translucency.d.ts.map +1 -1
  401. package/lib/esm/render/webgl/glsl/Translucency.js +3 -13
  402. package/lib/esm/render/webgl/glsl/Translucency.js.map +1 -1
  403. package/lib/esm/render/webgl/glsl/Vertex.d.ts +1 -2
  404. package/lib/esm/render/webgl/glsl/Vertex.d.ts.map +1 -1
  405. package/lib/esm/render/webgl/glsl/Vertex.js +16 -79
  406. package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
  407. package/lib/esm/render/webgl/glsl/Wiremesh.d.ts.map +1 -1
  408. package/lib/esm/render/webgl/glsl/Wiremesh.js +2 -5
  409. package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -1
  410. package/lib/esm/tile/PrimaryTileTree.d.ts +0 -3
  411. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  412. package/lib/esm/tile/PrimaryTileTree.js +8 -30
  413. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  414. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  415. package/lib/esm/tile/TileAdmin.js +2 -2
  416. package/lib/esm/tile/TileAdmin.js.map +1 -1
  417. package/package.json +20 -20
@@ -1 +1 @@
1
- {"version":3,"file":"AttributeBuffers.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/AttributeBuffers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AttributeBuffers.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/AttributeBuffers.ts"],"names":[],"mappings":"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"}
@@ -42,42 +42,29 @@ export var BufferParameters;
42
42
  * @internal
43
43
  */
44
44
  export class BuffersContainer {
45
- constructor() {
46
- this._linkages = [];
45
+ constructor(context) {
46
+ this.linkages = [];
47
+ this._context = context;
48
+ this._vao = new VAOHandle(this._context);
47
49
  }
48
- get linkages() { return this._linkages; }
49
50
  static create() {
50
- if (System.instance.capabilities.isWebGL2)
51
- return new VAOContainerWebGL2(System.instance.context);
52
- else {
53
- const vaoExt = System.instance.capabilities.queryExtensionObject("OES_vertex_array_object");
54
- if (undefined !== vaoExt) {
55
- return new VAOContainerWebGL1(vaoExt);
56
- }
57
- else {
58
- return new VBOContainer();
59
- }
60
- }
51
+ return new BuffersContainer(System.instance.context);
61
52
  }
62
- }
63
- /**
64
- * A BuffersContainer implementation which uses VAOs for binding and unbinding buffer state.
65
- * @internal
66
- */
67
- export class VAOContainer extends BuffersContainer {
68
- constructor() {
69
- super();
53
+ // NB: BufferHandle objects contained within BufferHandleLinkage entries are disposed where they are created because they could be shared among multiple BuffersContainer objects.
54
+ dispose() {
55
+ this._vao.dispose();
56
+ }
57
+ get isDisposed() {
58
+ return this._vao.isDisposed;
70
59
  }
71
- bind() { }
72
- unbind() { }
73
60
  addBuffer(buffer, params) {
74
61
  const linkage = BufferHandleLinkage.create(buffer, params);
75
- this._linkages.push(linkage);
62
+ this.linkages.push(linkage);
76
63
  this._bindLinkage(linkage);
77
64
  }
78
65
  appendLinkages(linkages) {
79
66
  for (const linkage of linkages) {
80
- this._linkages.push(BufferHandleLinkage.clone(linkage));
67
+ this.linkages.push(BufferHandleLinkage.clone(linkage));
81
68
  this._bindLinkage(linkage);
82
69
  }
83
70
  }
@@ -93,95 +80,18 @@ export class VAOContainer extends BuffersContainer {
93
80
  }
94
81
  this.unbind();
95
82
  }
96
- get isDisposed() { return false; }
97
- dispose() { }
98
- }
99
- /**
100
- * A BuffersContainer implementation for WebGL1 which uses VAOs for binding and unbinding buffer state.
101
- * @internal
102
- */
103
- export class VAOContainerWebGL1 extends VAOContainer {
104
- constructor(context) {
105
- super();
106
- this._vaoExt = context;
107
- this._vao = new VertexArrayObjectHandle(this._vaoExt);
108
- }
109
83
  bind() {
110
84
  this._vao.bind();
111
85
  }
112
86
  unbind() {
113
- VertexArrayObjectHandle.unbind(this._vaoExt);
114
- }
115
- get isDisposed() { return this._vao.isDisposed; }
116
- dispose() {
117
- this._vao.dispose();
87
+ VAOHandle.unbind(this._context);
118
88
  }
119
89
  }
120
- /**
121
- * A BuffersContainer implementation for WebGL2 which uses VAOs for binding and unbinding buffer state.
122
- * @internal
123
- */
124
- export class VAOContainerWebGL2 extends VAOContainer {
125
- constructor(context) {
126
- super();
127
- this._context = context;
128
- this._vao = new VertexArrayObjectHandleWebGL2(this._context);
129
- }
130
- bind() {
131
- this._vao.bind();
132
- }
133
- unbind() {
134
- VertexArrayObjectHandleWebGL2.unbind(this._context);
135
- }
136
- get isDisposed() { return this._vao.isDisposed; }
137
- dispose() {
138
- this._vao.dispose();
139
- }
140
- }
141
- /**
142
- * A BuffersContainer implementation which uses only VBOs (no VAOs) for binding and unbinding buffer state.
143
- * @internal
144
- */
145
- export class VBOContainer extends BuffersContainer {
146
- constructor() {
147
- super(...arguments);
148
- this._isDisposed = false;
149
- }
150
- bind() {
151
- const system = System.instance;
152
- for (const linkage of this._linkages) {
153
- const buffer = linkage.buffer;
154
- const params = linkage.params;
155
- buffer.bind();
156
- for (const p of params) {
157
- system.enableVertexAttribArray(p.glAttribLoc, p.glInstanced);
158
- system.context.vertexAttribPointer(p.glAttribLoc, p.glSize, p.glType, p.glNormalized, p.glStride, p.glOffset);
159
- }
160
- }
161
- system.updateVertexAttribArrays();
162
- }
163
- unbind() {
164
- for (const linkage of this._linkages) {
165
- linkage.buffer.unbind();
166
- }
167
- }
168
- addBuffer(buffer, params) {
169
- this._linkages.push(BufferHandleLinkage.create(buffer, params));
170
- }
171
- appendLinkages(linkages) {
172
- for (const linkage of linkages) {
173
- this._linkages.push(BufferHandleLinkage.clone(linkage));
174
- }
175
- }
176
- get isDisposed() { return this._isDisposed; }
177
- dispose() { this._isDisposed = true; }
178
- }
179
- /**
180
- * A handle to a WebGLVertexArrayObjectOES for WebGL2.
90
+ /** A handle to a WebGLVertexArrayObjectOES.
181
91
  * The WebGLVertexArrayObjectOES is allocated by the constructor and should be freed by a call to dispose().
182
92
  * @internal
183
93
  */
184
- export class VertexArrayObjectHandleWebGL2 {
94
+ export class VAOHandle {
185
95
  /** Allocates the WebGLVertexArrayObjectOES using the supplied context. Free the WebGLVertexArrayObjectOES using dispose() */
186
96
  constructor(context) {
187
97
  this._context = context;
@@ -214,44 +124,6 @@ export class VertexArrayObjectHandleWebGL2 {
214
124
  context.bindVertexArray(null);
215
125
  }
216
126
  }
217
- /**
218
- * A handle to a WebGLVertexArrayObjectOES.
219
- * The WebGLVertexArrayObjectOES is allocated by the constructor and should be freed by a call to dispose().
220
- * @internal
221
- */
222
- export class VertexArrayObjectHandle {
223
- /** Allocates the WebGLVertexArrayObjectOES using the supplied context. Free the WebGLVertexArrayObjectOES using dispose() */
224
- constructor(vaoExt) {
225
- this._vaoExt = vaoExt;
226
- const arrayObject = this._vaoExt.createVertexArrayOES();
227
- // vaoExt.createVertexArrayOES() returns WebGLVertexArrayObjectOES | null...
228
- if (null !== arrayObject) {
229
- this._arrayObject = arrayObject;
230
- }
231
- else {
232
- this._arrayObject = undefined;
233
- }
234
- assert(!this.isDisposed);
235
- }
236
- get isDisposed() { return this._arrayObject === undefined; }
237
- /** Frees the WebGL vertex array object */
238
- dispose() {
239
- if (!this.isDisposed) {
240
- this._vaoExt.deleteVertexArrayOES(this._arrayObject);
241
- this._arrayObject = undefined;
242
- }
243
- }
244
- /** Binds this vertex array object */
245
- bind() {
246
- if (undefined !== this._arrayObject) {
247
- this._vaoExt.bindVertexArrayOES(this._arrayObject);
248
- }
249
- }
250
- /** Ensures no vertex array object is bound */
251
- static unbind(vaoExt) {
252
- vaoExt.bindVertexArrayOES(null);
253
- }
254
- }
255
127
  /**
256
128
  * A handle to a WebGLBuffer, such as a vertex or index buffer.
257
129
  * The WebGLBuffer is allocated by the constructor and should be freed by a call to dispose().
@@ -1 +1 @@
1
- {"version":3,"file":"AttributeBuffers.js","sourceRoot":"","sources":["../../../../src/render/webgl/AttributeBuffers.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 { Point3d } from \"@itwin/core-geometry\";\r\nimport { QParams2d, QParams3d } from \"@itwin/core-common\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { GL } from \"./GL\";\r\nimport { System } from \"./System\";\r\n\r\n/** Describes a connection between a BufferHandle and an arbitrary number of attributes associated with that BufferHandle. */\r\ninterface BufferHandleLinkage {\r\n buffer: BufferHandle;\r\n params: BufferParameters[]; // If empty, means no vertex attrib details are necessary (index buffer probably)\r\n}\r\n\r\n/** Provides convenience methods for creating a BufferHandleLinkage interface. */\r\nclass BufferHandleLinkage {\r\n private constructor() { }\r\n public static create(buffer: BufferHandle, params: BufferParameters[]): BufferHandleLinkage {\r\n return { buffer, params };\r\n }\r\n public static clone(linkage: BufferHandleLinkage): BufferHandleLinkage {\r\n const clonedParams: BufferParameters[] = [];\r\n for (const param of linkage.params) {\r\n clonedParams.push(BufferParameters.clone(param));\r\n }\r\n return BufferHandleLinkage.create(linkage.buffer, clonedParams);\r\n }\r\n}\r\n\r\n/**\r\n * Describes the binding state of a BufferHandle when added to a BuffersContainer. See the WebGL function 'vertexAttribPointer'.\r\n * @internal\r\n */\r\nexport interface BufferParameters {\r\n /** Index used for binding attribute location for the associated BufferHandle. */\r\n glAttribLoc: number;\r\n /** Number of components for the attribute (1, 2, 3, or 4). */\r\n glSize: number;\r\n /** Data type of each component. */\r\n glType: number;\r\n /** If true, WebGL will normalize integer data values into a certain range (see WebGL specs for details). */\r\n glNormalized: boolean;\r\n /** Offset in bytes between the beginning of consecutive vertex attributes. */\r\n glStride: number;\r\n /** Offset in bytes of the first component in the vertex attribute array. */\r\n glOffset: number;\r\n /** Specifies whether the attribute is instanced. If so, the WebGL instancing extension function 'vertexAttribDivisor' will be called. */\r\n glInstanced: boolean;\r\n}\r\n\r\n/**\r\n * Provides convenience methods for creating a BuffersParameter interface.\r\n * @internal\r\n */\r\nexport namespace BufferParameters {\r\n export function create(glAttribLoc: number, glSize: number, glType: number, glNormalized: boolean, glStride: number, glOffset: number, glInstanced: boolean): BufferParameters {\r\n return { glAttribLoc, glSize, glType, glNormalized, glStride, glOffset, glInstanced };\r\n }\r\n\r\n export function clone(params: BufferParameters): BufferParameters {\r\n return BufferParameters.create(params.glAttribLoc, params.glSize, params.glType, params.glNormalized, params.glStride, params.glOffset, params.glInstanced);\r\n }\r\n}\r\n\r\n/**\r\n * An abstract class which specifies an interface for binding and unbinding vertex buffers and their associated state.\r\n * @internal\r\n */\r\nexport abstract class BuffersContainer implements WebGLDisposable {\r\n protected _linkages: BufferHandleLinkage[] = [];\r\n\r\n protected constructor() { }\r\n\r\n public get linkages(): BufferHandleLinkage[] { return this._linkages; }\r\n\r\n public abstract bind(): void;\r\n public abstract unbind(): void;\r\n public abstract addBuffer(buffer: BufferHandle, params: BufferParameters[]): void;\r\n public abstract appendLinkages(linkages: BufferHandleLinkage[]): void;\r\n\r\n public abstract get isDisposed(): boolean;\r\n public abstract dispose(): void; // NB: BufferHandle objects contained within BufferHandleLinkage entries are disposed where they are created because they could be shared among multiple BuffersContainer objects.\r\n\r\n public static create(): BuffersContainer {\r\n if (System.instance.capabilities.isWebGL2)\r\n return new VAOContainerWebGL2(System.instance.context as WebGL2RenderingContext);\r\n else {\r\n const vaoExt = System.instance.capabilities.queryExtensionObject<OES_vertex_array_object>(\"OES_vertex_array_object\");\r\n if (undefined !== vaoExt) {\r\n return new VAOContainerWebGL1(vaoExt);\r\n } else {\r\n return new VBOContainer();\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * A BuffersContainer implementation which uses VAOs for binding and unbinding buffer state.\r\n * @internal\r\n */\r\nexport abstract class VAOContainer extends BuffersContainer {\r\n public constructor() {\r\n super();\r\n }\r\n\r\n public bind(): void { }\r\n\r\n public unbind(): void { }\r\n\r\n public addBuffer(buffer: BufferHandle, params: BufferParameters[]): void {\r\n const linkage = BufferHandleLinkage.create(buffer, params);\r\n this._linkages.push(linkage);\r\n this._bindLinkage(linkage);\r\n }\r\n\r\n public appendLinkages(linkages: BufferHandleLinkage[]): void {\r\n for (const linkage of linkages) {\r\n this._linkages.push(BufferHandleLinkage.clone(linkage));\r\n this._bindLinkage(linkage);\r\n }\r\n }\r\n\r\n private _bindLinkage(linkage: BufferHandleLinkage) {\r\n this.bind();\r\n linkage.buffer.bind();\r\n for (const p of linkage.params) {\r\n System.instance.context.enableVertexAttribArray(p.glAttribLoc);\r\n if (p.glInstanced) {\r\n System.instance.vertexAttribDivisor(p.glAttribLoc, 1);\r\n }\r\n System.instance.context.vertexAttribPointer(p.glAttribLoc, p.glSize, p.glType, p.glNormalized, p.glStride, p.glOffset);\r\n }\r\n this.unbind();\r\n }\r\n\r\n public get isDisposed(): boolean { return false; }\r\n\r\n public dispose(): void { }\r\n}\r\n\r\n/**\r\n * A BuffersContainer implementation for WebGL1 which uses VAOs for binding and unbinding buffer state.\r\n * @internal\r\n */\r\nexport class VAOContainerWebGL1 extends VAOContainer {\r\n protected _vao: VertexArrayObjectHandle;\r\n private _vaoExt: OES_vertex_array_object;\r\n\r\n public constructor(context: OES_vertex_array_object) {\r\n super();\r\n this._vaoExt = context;\r\n this._vao = new VertexArrayObjectHandle(this._vaoExt);\r\n }\r\n\r\n public override bind(): void {\r\n this._vao.bind();\r\n }\r\n\r\n public override unbind(): void {\r\n VertexArrayObjectHandle.unbind(this._vaoExt);\r\n }\r\n\r\n public override get isDisposed(): boolean { return this._vao.isDisposed; }\r\n\r\n public override dispose(): void {\r\n this._vao.dispose();\r\n }\r\n}\r\n\r\n/**\r\n * A BuffersContainer implementation for WebGL2 which uses VAOs for binding and unbinding buffer state.\r\n * @internal\r\n */\r\nexport class VAOContainerWebGL2 extends VAOContainer {\r\n protected _vao: VertexArrayObjectHandleWebGL2;\r\n private _context: WebGL2RenderingContext;\r\n\r\n public constructor(context: WebGL2RenderingContext) {\r\n super();\r\n this._context = context;\r\n this._vao = new VertexArrayObjectHandleWebGL2(this._context);\r\n }\r\n\r\n public override bind(): void {\r\n this._vao.bind();\r\n }\r\n\r\n public override unbind(): void {\r\n VertexArrayObjectHandleWebGL2.unbind(this._context);\r\n }\r\n\r\n public override get isDisposed(): boolean { return this._vao.isDisposed; }\r\n\r\n public override dispose(): void {\r\n this._vao.dispose();\r\n }\r\n}\r\n\r\n/**\r\n * A BuffersContainer implementation which uses only VBOs (no VAOs) for binding and unbinding buffer state.\r\n * @internal\r\n */\r\nexport class VBOContainer extends BuffersContainer {\r\n public bind(): void {\r\n const system = System.instance;\r\n for (const linkage of this._linkages) {\r\n const buffer = linkage.buffer;\r\n const params = linkage.params;\r\n buffer.bind();\r\n for (const p of params) {\r\n system.enableVertexAttribArray(p.glAttribLoc, p.glInstanced);\r\n system.context.vertexAttribPointer(p.glAttribLoc, p.glSize, p.glType, p.glNormalized, p.glStride, p.glOffset);\r\n }\r\n }\r\n\r\n system.updateVertexAttribArrays();\r\n }\r\n\r\n public unbind(): void {\r\n for (const linkage of this._linkages) {\r\n linkage.buffer.unbind();\r\n }\r\n }\r\n\r\n public addBuffer(buffer: BufferHandle, params: BufferParameters[]): void {\r\n this._linkages.push(BufferHandleLinkage.create(buffer, params));\r\n }\r\n\r\n public appendLinkages(linkages: BufferHandleLinkage[]): void {\r\n for (const linkage of linkages) {\r\n this._linkages.push(BufferHandleLinkage.clone(linkage));\r\n }\r\n }\r\n\r\n private _isDisposed = false;\r\n public get isDisposed(): boolean { return this._isDisposed; }\r\n public dispose() { this._isDisposed = true; }\r\n}\r\n\r\n/**\r\n * A handle to a WebGLVertexArrayObjectOES for WebGL2.\r\n * The WebGLVertexArrayObjectOES is allocated by the constructor and should be freed by a call to dispose().\r\n * @internal\r\n */\r\nexport class VertexArrayObjectHandleWebGL2 implements WebGLDisposable {\r\n private _context: WebGL2RenderingContext;\r\n private _arrayObject?: WebGLVertexArrayObjectOES;\r\n\r\n /** Allocates the WebGLVertexArrayObjectOES using the supplied context. Free the WebGLVertexArrayObjectOES using dispose() */\r\n public constructor(context: WebGL2RenderingContext) {\r\n this._context = context;\r\n const arrayObject = this._context.createVertexArray();\r\n\r\n // vaoExt.createVertexArrayOES() returns WebGLVertexArrayObjectOES | null...\r\n if (null !== arrayObject) {\r\n this._arrayObject = arrayObject;\r\n } else {\r\n this._arrayObject = undefined;\r\n }\r\n\r\n assert(!this.isDisposed);\r\n }\r\n\r\n public get isDisposed(): boolean { return this._arrayObject === undefined; }\r\n\r\n /** Frees the WebGL vertex array object */\r\n public dispose(): void {\r\n if (!this.isDisposed) {\r\n this._context.deleteVertexArray(this._arrayObject!);\r\n this._arrayObject = undefined;\r\n }\r\n }\r\n\r\n /** Binds this vertex array object */\r\n public bind(): void {\r\n if (undefined !== this._arrayObject) {\r\n this._context.bindVertexArray(this._arrayObject);\r\n }\r\n }\r\n\r\n /** Ensures no vertex array object is bound */\r\n public static unbind(context: WebGL2RenderingContext): void {\r\n context.bindVertexArray(null);\r\n }\r\n}\r\n\r\n/**\r\n * A handle to a WebGLVertexArrayObjectOES.\r\n * The WebGLVertexArrayObjectOES is allocated by the constructor and should be freed by a call to dispose().\r\n * @internal\r\n */\r\nexport class VertexArrayObjectHandle implements WebGLDisposable {\r\n private _vaoExt: OES_vertex_array_object;\r\n private _arrayObject?: WebGLVertexArrayObjectOES;\r\n\r\n /** Allocates the WebGLVertexArrayObjectOES using the supplied context. Free the WebGLVertexArrayObjectOES using dispose() */\r\n public constructor(vaoExt: OES_vertex_array_object) {\r\n this._vaoExt = vaoExt;\r\n const arrayObject = this._vaoExt.createVertexArrayOES();\r\n\r\n // vaoExt.createVertexArrayOES() returns WebGLVertexArrayObjectOES | null...\r\n if (null !== arrayObject) {\r\n this._arrayObject = arrayObject;\r\n } else {\r\n this._arrayObject = undefined;\r\n }\r\n\r\n assert(!this.isDisposed);\r\n }\r\n\r\n public get isDisposed(): boolean { return this._arrayObject === undefined; }\r\n\r\n /** Frees the WebGL vertex array object */\r\n public dispose(): void {\r\n if (!this.isDisposed) {\r\n this._vaoExt.deleteVertexArrayOES(this._arrayObject!);\r\n this._arrayObject = undefined;\r\n }\r\n }\r\n\r\n /** Binds this vertex array object */\r\n public bind(): void {\r\n if (undefined !== this._arrayObject) {\r\n this._vaoExt.bindVertexArrayOES(this._arrayObject);\r\n }\r\n }\r\n\r\n /** Ensures no vertex array object is bound */\r\n public static unbind(vaoExt: OES_vertex_array_object): void {\r\n vaoExt.bindVertexArrayOES(null);\r\n }\r\n}\r\n\r\n/**\r\n * A handle to a WebGLBuffer, such as a vertex or index buffer.\r\n * The WebGLBuffer is allocated by the constructor and should be freed by a call to dispose().\r\n * @internal\r\n */\r\nexport class BufferHandle implements WebGLDisposable {\r\n private _target: GL.Buffer.Target;\r\n private _glBuffer?: WebGLBuffer;\r\n private _bytesUsed = 0;\r\n\r\n /** Allocates the WebGLBuffer using the supplied context. Free the WebGLBuffer using dispose() */\r\n public constructor(target: GL.Buffer.Target) {\r\n this._target = target;\r\n const glBuffer = System.instance.context.createBuffer();\r\n\r\n // gl.createBuffer() returns WebGLBuffer | null...\r\n if (null !== glBuffer) {\r\n this._glBuffer = glBuffer;\r\n } else {\r\n this._glBuffer = undefined;\r\n }\r\n\r\n assert(!this.isDisposed);\r\n }\r\n\r\n public get isDisposed(): boolean { return this._glBuffer === undefined; }\r\n public get bytesUsed(): number { return this._bytesUsed; }\r\n\r\n /** Frees the WebGL buffer */\r\n public dispose(): void {\r\n if (!this.isDisposed) {\r\n System.instance.context.deleteBuffer(this._glBuffer!);\r\n this._glBuffer = undefined;\r\n this._bytesUsed = 0;\r\n }\r\n }\r\n\r\n /** Binds this buffer to the target specified during construction */\r\n public bind(): void {\r\n if (undefined !== this._glBuffer) {\r\n System.instance.context.bindBuffer(this._target, this._glBuffer);\r\n }\r\n }\r\n\r\n /** Sets the specified target to be bound to no buffer */\r\n public unbind(): void { System.instance.context.bindBuffer(this._target, null); }\r\n\r\n /** Binds this buffer to the target specified at construction and sets the buffer's data store. */\r\n public bindData(data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw): void {\r\n this.bind();\r\n System.instance.context.bufferData(this._target, data, usage);\r\n this.unbind();\r\n this._bytesUsed = data.byteLength;\r\n }\r\n\r\n /** Creates a BufferHandle and binds its data */\r\n public static createBuffer(target: GL.Buffer.Target, data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw): BufferHandle | undefined {\r\n const handle = new BufferHandle(target);\r\n if (handle.isDisposed) {\r\n return undefined;\r\n }\r\n\r\n handle.bindData(data, usage);\r\n return handle;\r\n }\r\n /** Creates a BufferHandle and binds its data */\r\n public static createArrayBuffer(data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw) {\r\n return BufferHandle.createBuffer(GL.Buffer.Target.ArrayBuffer, data, usage);\r\n }\r\n\r\n public isBound(binding: GL.Buffer.Binding) { return System.instance.context.getParameter(binding) === this._glBuffer; }\r\n}\r\n\r\nfunction setScale(index: number, value: number, array: Float32Array) {\r\n array[index] = 0.0 !== value ? 1.0 / value : value;\r\n}\r\n\r\n/**\r\n * Converts 2d quantization parameters to a format appropriate for submittal to the GPU.\r\n * params[0] = origin.x\r\n * params[1] = origin.y\r\n * params[2] = scale.x\r\n * params[3] = scale.y\r\n * @internal\r\n */\r\nexport function qparams2dToArray(params: QParams2d): Float32Array {\r\n const arr = new Float32Array(4);\r\n\r\n arr[0] = params.origin.x;\r\n arr[1] = params.origin.y;\r\n setScale(2, params.scale.x, arr);\r\n setScale(3, params.scale.y, arr);\r\n\r\n return arr;\r\n}\r\n\r\n/** @internal */\r\nexport function qorigin3dToArray(qorigin: Point3d): Float32Array {\r\n const origin = new Float32Array(3);\r\n origin[0] = qorigin.x;\r\n origin[1] = qorigin.y;\r\n origin[2] = qorigin.z;\r\n return origin;\r\n}\r\n\r\n/** @internal */\r\nexport function qscale3dToArray(qscale: Point3d): Float32Array {\r\n const scale = new Float32Array(3);\r\n setScale(0, qscale.x, scale);\r\n setScale(1, qscale.y, scale);\r\n setScale(2, qscale.z, scale);\r\n return scale;\r\n}\r\n\r\n/** Converts 3d quantization params to a pair of Float32Arrays\r\n * @internal\r\n */\r\nexport function qparams3dToArray(params: QParams3d): { origin: Float32Array, scale: Float32Array } {\r\n const origin = qorigin3dToArray(params.origin);\r\n const scale = qscale3dToArray(params.scale);\r\n return { origin, scale };\r\n}\r\n\r\n/** A handle to a WebGLBuffer intended to hold quantized 2d points\r\n * @internal\r\n */\r\nexport class QBufferHandle2d extends BufferHandle {\r\n public readonly params: Float32Array;\r\n\r\n public constructor(qParams: QParams2d) {\r\n super(GL.Buffer.Target.ArrayBuffer);\r\n this.params = qparams2dToArray(qParams);\r\n }\r\n\r\n public static create(qParams: QParams2d, data: Uint16Array): QBufferHandle2d | undefined {\r\n const handle = new QBufferHandle2d(qParams);\r\n if (handle.isDisposed) {\r\n return undefined;\r\n }\r\n\r\n handle.bindData(data);\r\n return handle;\r\n }\r\n}\r\n\r\n/* A handle to a WebGLBuffer intended to hold quantized 3d points\r\n * @internal\r\n */\r\nexport class QBufferHandle3d extends BufferHandle {\r\n /** The quantization origin in x, y, and z */\r\n public readonly origin: Float32Array;\r\n /** The quantization scale in x, y, and z */\r\n public readonly scale: Float32Array;\r\n\r\n public constructor(qParams: QParams3d) {\r\n super(GL.Buffer.Target.ArrayBuffer);\r\n this.origin = qorigin3dToArray(qParams.origin);\r\n this.scale = qscale3dToArray(qParams.scale);\r\n }\r\n\r\n public static create(qParams: QParams3d, data: Uint16Array | Uint8Array): QBufferHandle3d | undefined {\r\n const handle = new QBufferHandle3d(qParams);\r\n if (handle.isDisposed) {\r\n return undefined;\r\n }\r\n\r\n handle.bindData(data);\r\n return handle;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"AttributeBuffers.js","sourceRoot":"","sources":["../../../../src/render/webgl/AttributeBuffers.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 { Point3d } from \"@itwin/core-geometry\";\r\nimport { QParams2d, QParams3d } from \"@itwin/core-common\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { GL } from \"./GL\";\r\nimport { System } from \"./System\";\r\n\r\n/** Describes a connection between a BufferHandle and an arbitrary number of attributes associated with that BufferHandle. */\r\ninterface BufferHandleLinkage {\r\n buffer: BufferHandle;\r\n params: BufferParameters[]; // If empty, means no vertex attrib details are necessary (index buffer probably)\r\n}\r\n\r\n/** Provides convenience methods for creating a BufferHandleLinkage interface. */\r\nclass BufferHandleLinkage {\r\n private constructor() { }\r\n public static create(buffer: BufferHandle, params: BufferParameters[]): BufferHandleLinkage {\r\n return { buffer, params };\r\n }\r\n public static clone(linkage: BufferHandleLinkage): BufferHandleLinkage {\r\n const clonedParams: BufferParameters[] = [];\r\n for (const param of linkage.params) {\r\n clonedParams.push(BufferParameters.clone(param));\r\n }\r\n return BufferHandleLinkage.create(linkage.buffer, clonedParams);\r\n }\r\n}\r\n\r\n/**\r\n * Describes the binding state of a BufferHandle when added to a BuffersContainer. See the WebGL function 'vertexAttribPointer'.\r\n * @internal\r\n */\r\nexport interface BufferParameters {\r\n /** Index used for binding attribute location for the associated BufferHandle. */\r\n glAttribLoc: number;\r\n /** Number of components for the attribute (1, 2, 3, or 4). */\r\n glSize: number;\r\n /** Data type of each component. */\r\n glType: number;\r\n /** If true, WebGL will normalize integer data values into a certain range (see WebGL specs for details). */\r\n glNormalized: boolean;\r\n /** Offset in bytes between the beginning of consecutive vertex attributes. */\r\n glStride: number;\r\n /** Offset in bytes of the first component in the vertex attribute array. */\r\n glOffset: number;\r\n /** Specifies whether the attribute is instanced. If so, the WebGL instancing extension function 'vertexAttribDivisor' will be called. */\r\n glInstanced: boolean;\r\n}\r\n\r\n/**\r\n * Provides convenience methods for creating a BuffersParameter interface.\r\n * @internal\r\n */\r\nexport namespace BufferParameters {\r\n export function create(glAttribLoc: number, glSize: number, glType: number, glNormalized: boolean, glStride: number, glOffset: number, glInstanced: boolean): BufferParameters {\r\n return { glAttribLoc, glSize, glType, glNormalized, glStride, glOffset, glInstanced };\r\n }\r\n\r\n export function clone(params: BufferParameters): BufferParameters {\r\n return BufferParameters.create(params.glAttribLoc, params.glSize, params.glType, params.glNormalized, params.glStride, params.glOffset, params.glInstanced);\r\n }\r\n}\r\n\r\n/**\r\n * An abstract class which specifies an interface for binding and unbinding vertex buffers and their associated state.\r\n * @internal\r\n */\r\nexport class BuffersContainer implements WebGLDisposable {\r\n public readonly linkages: BufferHandleLinkage[] = [];\r\n protected readonly _vao: VAOHandle;\r\n private readonly _context: WebGL2RenderingContext;\r\n\r\n public static create(): BuffersContainer {\r\n return new BuffersContainer(System.instance.context);\r\n }\r\n\r\n private constructor(context: WebGL2RenderingContext) {\r\n this._context = context;\r\n this._vao = new VAOHandle(this._context);\r\n }\r\n\r\n // NB: BufferHandle objects contained within BufferHandleLinkage entries are disposed where they are created because they could be shared among multiple BuffersContainer objects.\r\n public dispose(): void {\r\n this._vao.dispose();\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._vao.isDisposed;\r\n }\r\n\r\n public addBuffer(buffer: BufferHandle, params: BufferParameters[]): void {\r\n const linkage = BufferHandleLinkage.create(buffer, params);\r\n this.linkages.push(linkage);\r\n this._bindLinkage(linkage);\r\n }\r\n\r\n public appendLinkages(linkages: BufferHandleLinkage[]): void {\r\n for (const linkage of linkages) {\r\n this.linkages.push(BufferHandleLinkage.clone(linkage));\r\n this._bindLinkage(linkage);\r\n }\r\n }\r\n\r\n private _bindLinkage(linkage: BufferHandleLinkage) {\r\n this.bind();\r\n linkage.buffer.bind();\r\n for (const p of linkage.params) {\r\n System.instance.context.enableVertexAttribArray(p.glAttribLoc);\r\n if (p.glInstanced) {\r\n System.instance.vertexAttribDivisor(p.glAttribLoc, 1);\r\n }\r\n System.instance.context.vertexAttribPointer(p.glAttribLoc, p.glSize, p.glType, p.glNormalized, p.glStride, p.glOffset);\r\n }\r\n this.unbind();\r\n }\r\n\r\n public bind(): void {\r\n this._vao.bind();\r\n }\r\n\r\n public unbind(): void {\r\n VAOHandle.unbind(this._context);\r\n }\r\n}\r\n\r\n/** A handle to a WebGLVertexArrayObjectOES.\r\n * The WebGLVertexArrayObjectOES is allocated by the constructor and should be freed by a call to dispose().\r\n * @internal\r\n */\r\nexport class VAOHandle implements WebGLDisposable {\r\n private _context: WebGL2RenderingContext;\r\n private _arrayObject?: WebGLVertexArrayObjectOES;\r\n\r\n /** Allocates the WebGLVertexArrayObjectOES using the supplied context. Free the WebGLVertexArrayObjectOES using dispose() */\r\n public constructor(context: WebGL2RenderingContext) {\r\n this._context = context;\r\n const arrayObject = this._context.createVertexArray();\r\n\r\n // vaoExt.createVertexArrayOES() returns WebGLVertexArrayObjectOES | null...\r\n if (null !== arrayObject) {\r\n this._arrayObject = arrayObject;\r\n } else {\r\n this._arrayObject = undefined;\r\n }\r\n\r\n assert(!this.isDisposed);\r\n }\r\n\r\n public get isDisposed(): boolean { return this._arrayObject === undefined; }\r\n\r\n /** Frees the WebGL vertex array object */\r\n public dispose(): void {\r\n if (!this.isDisposed) {\r\n this._context.deleteVertexArray(this._arrayObject!);\r\n this._arrayObject = undefined;\r\n }\r\n }\r\n\r\n /** Binds this vertex array object */\r\n public bind(): void {\r\n if (undefined !== this._arrayObject) {\r\n this._context.bindVertexArray(this._arrayObject);\r\n }\r\n }\r\n\r\n /** Ensures no vertex array object is bound */\r\n public static unbind(context: WebGL2RenderingContext): void {\r\n context.bindVertexArray(null);\r\n }\r\n}\r\n\r\n/**\r\n * A handle to a WebGLBuffer, such as a vertex or index buffer.\r\n * The WebGLBuffer is allocated by the constructor and should be freed by a call to dispose().\r\n * @internal\r\n */\r\nexport class BufferHandle implements WebGLDisposable {\r\n private _target: GL.Buffer.Target;\r\n private _glBuffer?: WebGLBuffer;\r\n private _bytesUsed = 0;\r\n\r\n /** Allocates the WebGLBuffer using the supplied context. Free the WebGLBuffer using dispose() */\r\n public constructor(target: GL.Buffer.Target) {\r\n this._target = target;\r\n const glBuffer = System.instance.context.createBuffer();\r\n\r\n // gl.createBuffer() returns WebGLBuffer | null...\r\n if (null !== glBuffer) {\r\n this._glBuffer = glBuffer;\r\n } else {\r\n this._glBuffer = undefined;\r\n }\r\n\r\n assert(!this.isDisposed);\r\n }\r\n\r\n public get isDisposed(): boolean { return this._glBuffer === undefined; }\r\n public get bytesUsed(): number { return this._bytesUsed; }\r\n\r\n /** Frees the WebGL buffer */\r\n public dispose(): void {\r\n if (!this.isDisposed) {\r\n System.instance.context.deleteBuffer(this._glBuffer!);\r\n this._glBuffer = undefined;\r\n this._bytesUsed = 0;\r\n }\r\n }\r\n\r\n /** Binds this buffer to the target specified during construction */\r\n public bind(): void {\r\n if (undefined !== this._glBuffer) {\r\n System.instance.context.bindBuffer(this._target, this._glBuffer);\r\n }\r\n }\r\n\r\n /** Sets the specified target to be bound to no buffer */\r\n public unbind(): void { System.instance.context.bindBuffer(this._target, null); }\r\n\r\n /** Binds this buffer to the target specified at construction and sets the buffer's data store. */\r\n public bindData(data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw): void {\r\n this.bind();\r\n System.instance.context.bufferData(this._target, data, usage);\r\n this.unbind();\r\n this._bytesUsed = data.byteLength;\r\n }\r\n\r\n /** Creates a BufferHandle and binds its data */\r\n public static createBuffer(target: GL.Buffer.Target, data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw): BufferHandle | undefined {\r\n const handle = new BufferHandle(target);\r\n if (handle.isDisposed) {\r\n return undefined;\r\n }\r\n\r\n handle.bindData(data, usage);\r\n return handle;\r\n }\r\n /** Creates a BufferHandle and binds its data */\r\n public static createArrayBuffer(data: BufferSource, usage: GL.Buffer.Usage = GL.Buffer.Usage.StaticDraw) {\r\n return BufferHandle.createBuffer(GL.Buffer.Target.ArrayBuffer, data, usage);\r\n }\r\n\r\n public isBound(binding: GL.Buffer.Binding) { return System.instance.context.getParameter(binding) === this._glBuffer; }\r\n}\r\n\r\nfunction setScale(index: number, value: number, array: Float32Array) {\r\n array[index] = 0.0 !== value ? 1.0 / value : value;\r\n}\r\n\r\n/**\r\n * Converts 2d quantization parameters to a format appropriate for submittal to the GPU.\r\n * params[0] = origin.x\r\n * params[1] = origin.y\r\n * params[2] = scale.x\r\n * params[3] = scale.y\r\n * @internal\r\n */\r\nexport function qparams2dToArray(params: QParams2d): Float32Array {\r\n const arr = new Float32Array(4);\r\n\r\n arr[0] = params.origin.x;\r\n arr[1] = params.origin.y;\r\n setScale(2, params.scale.x, arr);\r\n setScale(3, params.scale.y, arr);\r\n\r\n return arr;\r\n}\r\n\r\n/** @internal */\r\nexport function qorigin3dToArray(qorigin: Point3d): Float32Array {\r\n const origin = new Float32Array(3);\r\n origin[0] = qorigin.x;\r\n origin[1] = qorigin.y;\r\n origin[2] = qorigin.z;\r\n return origin;\r\n}\r\n\r\n/** @internal */\r\nexport function qscale3dToArray(qscale: Point3d): Float32Array {\r\n const scale = new Float32Array(3);\r\n setScale(0, qscale.x, scale);\r\n setScale(1, qscale.y, scale);\r\n setScale(2, qscale.z, scale);\r\n return scale;\r\n}\r\n\r\n/** Converts 3d quantization params to a pair of Float32Arrays\r\n * @internal\r\n */\r\nexport function qparams3dToArray(params: QParams3d): { origin: Float32Array, scale: Float32Array } {\r\n const origin = qorigin3dToArray(params.origin);\r\n const scale = qscale3dToArray(params.scale);\r\n return { origin, scale };\r\n}\r\n\r\n/** A handle to a WebGLBuffer intended to hold quantized 2d points\r\n * @internal\r\n */\r\nexport class QBufferHandle2d extends BufferHandle {\r\n public readonly params: Float32Array;\r\n\r\n public constructor(qParams: QParams2d) {\r\n super(GL.Buffer.Target.ArrayBuffer);\r\n this.params = qparams2dToArray(qParams);\r\n }\r\n\r\n public static create(qParams: QParams2d, data: Uint16Array): QBufferHandle2d | undefined {\r\n const handle = new QBufferHandle2d(qParams);\r\n if (handle.isDisposed) {\r\n return undefined;\r\n }\r\n\r\n handle.bindData(data);\r\n return handle;\r\n }\r\n}\r\n\r\n/* A handle to a WebGLBuffer intended to hold quantized 3d points\r\n * @internal\r\n */\r\nexport class QBufferHandle3d extends BufferHandle {\r\n /** The quantization origin in x, y, and z */\r\n public readonly origin: Float32Array;\r\n /** The quantization scale in x, y, and z */\r\n public readonly scale: Float32Array;\r\n\r\n public constructor(qParams: QParams3d) {\r\n super(GL.Buffer.Target.ArrayBuffer);\r\n this.origin = qorigin3dToArray(qParams.origin);\r\n this.scale = qscale3dToArray(qParams.scale);\r\n }\r\n\r\n public static create(qParams: QParams3d, data: Uint16Array | Uint8Array): QBufferHandle3d | undefined {\r\n const handle = new QBufferHandle3d(qParams);\r\n if (handle.isDisposed) {\r\n return undefined;\r\n }\r\n\r\n handle.bindData(data);\r\n return handle;\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BackgroundMapDrape.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/BackgroundMapDrape.ts"],"names":[],"mappings":"AAYA,OAAO,EAA6B,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACzG,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AASjD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,gBAAgB;AAChB,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,OAAO,CAAC,IAAI,CAAC,CAAc;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IACjD,OAAO,CAAC,QAAQ,CAAC,CAAU;IAC3B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAItB;IACd,OAAO,CAAC,aAAa,CAAC,CAAU;IAChC,OAAO,CAAC,oBAAoB,CAAC,CAA4B;IACzD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAoC;IACxE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwF;IAE/G,OAAO;IAMP,IAAoB,UAAU,IAAI,OAAO,CAAwD;IAEjF,OAAO;IAKhB,UAAU,CAAC,OAAO,EAAE,aAAa;WAI1B,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,EAAE,oBAAoB,GAAG,kBAAkB;IAIvF,eAAe,CAAC,OAAO,EAAE,YAAY;IAsDrC,IAAI,CAAC,MAAM,EAAE,MAAM;CAqE3B"}
1
+ {"version":3,"file":"BackgroundMapDrape.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/BackgroundMapDrape.ts"],"names":[],"mappings":"AAYA,OAAO,EAA6B,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACzG,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AASjD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,gBAAgB;AAChB,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,OAAO,CAAC,IAAI,CAAC,CAAc;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IACjD,OAAO,CAAC,QAAQ,CAAC,CAAU;IAC3B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAItB;IACd,OAAO,CAAC,aAAa,CAAC,CAAU;IAChC,OAAO,CAAC,oBAAoB,CAAC,CAA4B;IACzD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAoC;IACxE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwF;IAE/G,OAAO;IAMP,IAAoB,UAAU,IAAI,OAAO,CAAwD;IAEjF,OAAO;IAKhB,UAAU,CAAC,OAAO,EAAE,aAAa;WAI1B,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,EAAE,oBAAoB,GAAG,kBAAkB;IAIvF,eAAe,CAAC,OAAO,EAAE,YAAY;IAsDrC,IAAI,CAAC,MAAM,EAAE,MAAM;CAiE3B"}
@@ -123,12 +123,9 @@ export class BackgroundMapDrape extends TextureDrape {
123
123
  renderCommands.addGraphics(this._graphics, 5 /* OpaqueGeneral */);
124
124
  const system = System.instance;
125
125
  const gl = system.context;
126
- const useMRT = System.instance.capabilities.supportsDrawBuffers;
127
126
  system.frameBufferStack.execute(this._fbo, true, false, () => {
128
127
  gl.clearColor(0, 0, 0, 0);
129
128
  gl.clear(GL.BufferBit.Color);
130
- if (!useMRT)
131
- target.compositor.currentRenderTargetIndex = 0;
132
129
  target.techniques.execute(target, renderCommands.getCommands(5 /* OpaqueGeneral */), 19 /* PlanarClassification */); // Draw these with RenderPass.PlanarClassification (rather than Opaque...) so that the pick ordering is avoided.
133
130
  });
134
131
  target.uniforms.branch.pop();
@@ -1 +1 @@
1
- {"version":3,"file":"BackgroundMapDrape.js","sourceRoot":"","sources":["../../../../src/render/webgl/BackgroundMapDrape.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { Matrix4d, Plane3dByOriginAndUnitNormal, Point3d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { ColorDef, Frustum, FrustumPlanes, RenderTexture, TextureTransparency } from \"@itwin/core-common\";\r\nimport { GraphicsCollectorDrawArgs, MapTileTreeReference, TileTreeReference } from \"../../tile/internal\";\r\nimport { SceneContext } from \"../../ViewContext\";\r\nimport { ViewState3d } from \"../../ViewState\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { RenderGraphic } from \"../RenderGraphic\";\r\nimport { BatchState } from \"./BatchState\";\r\nimport { BranchStack } from \"./BranchStack\";\r\nimport { FrameBuffer } from \"./FrameBuffer\";\r\nimport { GL } from \"./GL\";\r\nimport { PlanarTextureProjection } from \"./PlanarTextureProjection\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { Texture, TextureHandle } from \"./Texture\";\r\nimport { TextureDrape } from \"./TextureDrape\";\r\n\r\n/** @internal */\r\nexport class BackgroundMapDrape extends TextureDrape {\r\n private _fbo?: FrameBuffer;\r\n private readonly _graphics: RenderGraphic[] = [];\r\n private _frustum?: Frustum;\r\n private _width = 0;\r\n private _height = 0;\r\n private _mapTree: MapTileTreeReference;\r\n private _drapedTree: TileTreeReference;\r\n private static _postProjectionMatrix = Matrix4d.createRowValues(\r\n 0, 1, 0, 0,\r\n 0, 0, -1, 0,\r\n 1, 0, 0, 0,\r\n 0, 0, 0, 1);\r\n private _debugFrustum?: Frustum;\r\n private _debugFrustumGraphic?: RenderGraphic = undefined;\r\n private readonly _symbologyOverrides = new FeatureSymbology.Overrides();\r\n private readonly _bgColor = ColorDef.from(0, 0, 0, 255);\r\n private readonly _plane = Plane3dByOriginAndUnitNormal.create(Point3d.createZero(), Vector3d.create(0, 0, 1))!;\r\n\r\n private constructor(drapedTree: TileTreeReference, mapTree: MapTileTreeReference) {\r\n super();\r\n this._drapedTree = drapedTree;\r\n this._mapTree = mapTree;\r\n }\r\n\r\n public override get isDisposed(): boolean { return super.isDisposed && undefined === this._fbo; }\r\n\r\n public override dispose() {\r\n super.dispose();\r\n this._fbo = dispose(this._fbo);\r\n }\r\n\r\n public addGraphic(graphic: RenderGraphic) {\r\n this._graphics.push(graphic);\r\n }\r\n\r\n public static create(draped: TileTreeReference, map: MapTileTreeReference): BackgroundMapDrape {\r\n return new BackgroundMapDrape(draped, map);\r\n }\r\n\r\n public collectGraphics(context: SceneContext) {\r\n this._graphics.length = 0;\r\n if (undefined === context.viewingSpace)\r\n return;\r\n\r\n const viewState = context.viewingSpace.view as ViewState3d;\r\n if (undefined === viewState)\r\n return;\r\n\r\n const tileTree = this._mapTree.treeOwner.load();\r\n if (undefined === tileTree || !this._mapTree.initializeLayers(context))\r\n return;\r\n\r\n const requiredWidth = 2 * Math.max(context.target.viewRect.width, context.target.viewRect.height); // TBD - Size to textured area.\r\n const requiredHeight = requiredWidth;\r\n\r\n if (requiredWidth !== this._width || requiredHeight !== this._height)\r\n this.dispose();\r\n\r\n this._width = requiredWidth;\r\n this._height = requiredHeight;\r\n\r\n const targetTree = this._drapedTree.treeOwner.tileTree;\r\n const args = this._drapedTree.createDrawArgs(context);\r\n if (!targetTree || !args)\r\n return;\r\n\r\n const targetTiles = targetTree.selectTiles(args);\r\n\r\n const projection = PlanarTextureProjection.computePlanarTextureProjection(this._plane, context, { tiles: targetTiles, location: args.location }, [this._mapTree], viewState, this._width, this._height);\r\n if (!projection.textureFrustum || !projection.projectionMatrix || !projection.worldToViewMap)\r\n return;\r\n\r\n this._frustum = projection.textureFrustum;\r\n this._debugFrustum = projection.debugFrustum;\r\n this._projectionMatrix = projection.projectionMatrix;\r\n\r\n const drawArgs = GraphicsCollectorDrawArgs.create(context, this, this._mapTree, FrustumPlanes.fromFrustum(this._frustum), projection.worldToViewMap);\r\n if (undefined !== drawArgs)\r\n tileTree.draw(drawArgs);\r\n\r\n if (context.target.debugControl && context.target.debugControl.displayDrapeFrustum) {\r\n this._debugFrustumGraphic = dispose(this._debugFrustumGraphic);\r\n const builder = context.createSceneGraphicBuilder();\r\n builder.setSymbology(ColorDef.green, ColorDef.green, 1);\r\n builder.addFrustum(context.viewingSpace.getFrustum());\r\n builder.setSymbology(ColorDef.red, ColorDef.red, 1);\r\n builder.addFrustum(this._debugFrustum!);\r\n builder.setSymbology(ColorDef.white, ColorDef.white, 1);\r\n builder.addFrustum(this._frustum);\r\n this._debugFrustumGraphic = builder.finish();\r\n }\r\n }\r\n\r\n public draw(target: Target) {\r\n if (undefined !== this._debugFrustumGraphic)\r\n target.graphics.foreground.push(this._debugFrustumGraphic);\r\n\r\n if (undefined === this._frustum || this._graphics.length === 0)\r\n return;\r\n\r\n if (undefined === this._fbo) {\r\n const colorTextureHandle = TextureHandle.createForAttachment(this._width, this._height, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\r\n if (undefined === colorTextureHandle) {\r\n assert(false, \"Failed to create planar texture\");\r\n return;\r\n }\r\n\r\n this._texture = new Texture({ ownership: \"external\", type: RenderTexture.Type.TileSection, handle: colorTextureHandle, transparency: TextureTransparency.Opaque });\r\n this._fbo = FrameBuffer.create([colorTextureHandle]);\r\n }\r\n if (undefined === this._fbo) {\r\n assert(false, \"unable to create frame buffer object\");\r\n return;\r\n }\r\n\r\n System.instance.glTimer.beginOperation(\"Terrain Projection\");\r\n\r\n const prevState = System.instance.currentRenderState.clone();\r\n System.instance.context.viewport(0, 0, this._width, this._height);\r\n\r\n const prevPlan = target.plan;\r\n const drawingParams = PlanarTextureProjection.getTextureDrawingParams(target);\r\n const stack = new BranchStack();\r\n stack.changeRenderPlan(drawingParams.viewFlags, prevPlan.is3d, prevPlan.hline);\r\n stack.setSymbologyOverrides(this._symbologyOverrides);\r\n\r\n const batchState = new BatchState(stack);\r\n System.instance.applyRenderState(drawingParams.state);\r\n\r\n target.uniforms.style.changeBackgroundColor(this._bgColor); // Avoid white on white reversal. Will be reset below in changeRenderPlan().\r\n target.changeFrustum(this._frustum, this._frustum.getFraction(), true);\r\n\r\n const prevProjMatrix = target.uniforms.frustum.projectionMatrix;\r\n target.uniforms.frustum.changeProjectionMatrix(BackgroundMapDrape._postProjectionMatrix.multiplyMatrixMatrix(prevProjMatrix));\r\n\r\n target.uniforms.branch.pushState(stack.top);\r\n\r\n const renderCommands = new RenderCommands(target, stack, batchState);\r\n renderCommands.addGraphics(this._graphics, RenderPass.OpaqueGeneral);\r\n\r\n const system = System.instance;\r\n const gl = system.context;\r\n const useMRT = System.instance.capabilities.supportsDrawBuffers;\r\n\r\n system.frameBufferStack.execute(this._fbo, true, false, () => {\r\n gl.clearColor(0, 0, 0, 0);\r\n gl.clear(GL.BufferBit.Color);\r\n if (!useMRT)\r\n target.compositor.currentRenderTargetIndex = 0;\r\n\r\n target.techniques.execute(target, renderCommands.getCommands(RenderPass.OpaqueGeneral), RenderPass.PlanarClassification); // Draw these with RenderPass.PlanarClassification (rather than Opaque...) so that the pick ordering is avoided.\r\n });\r\n\r\n target.uniforms.branch.pop();\r\n\r\n batchState.reset(); // Reset the batch Ids...\r\n target.changeRenderPlan(prevPlan);\r\n\r\n system.applyRenderState(prevState);\r\n gl.viewport(0, 0, target.viewRect.width, target.viewRect.height); // Restore viewport\r\n system.glTimer.endOperation();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"BackgroundMapDrape.js","sourceRoot":"","sources":["../../../../src/render/webgl/BackgroundMapDrape.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { Matrix4d, Plane3dByOriginAndUnitNormal, Point3d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { ColorDef, Frustum, FrustumPlanes, RenderTexture, TextureTransparency } from \"@itwin/core-common\";\r\nimport { GraphicsCollectorDrawArgs, MapTileTreeReference, TileTreeReference } from \"../../tile/internal\";\r\nimport { SceneContext } from \"../../ViewContext\";\r\nimport { ViewState3d } from \"../../ViewState\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { RenderGraphic } from \"../RenderGraphic\";\r\nimport { BatchState } from \"./BatchState\";\r\nimport { BranchStack } from \"./BranchStack\";\r\nimport { FrameBuffer } from \"./FrameBuffer\";\r\nimport { GL } from \"./GL\";\r\nimport { PlanarTextureProjection } from \"./PlanarTextureProjection\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { Texture, TextureHandle } from \"./Texture\";\r\nimport { TextureDrape } from \"./TextureDrape\";\r\n\r\n/** @internal */\r\nexport class BackgroundMapDrape extends TextureDrape {\r\n private _fbo?: FrameBuffer;\r\n private readonly _graphics: RenderGraphic[] = [];\r\n private _frustum?: Frustum;\r\n private _width = 0;\r\n private _height = 0;\r\n private _mapTree: MapTileTreeReference;\r\n private _drapedTree: TileTreeReference;\r\n private static _postProjectionMatrix = Matrix4d.createRowValues(\r\n 0, 1, 0, 0,\r\n 0, 0, -1, 0,\r\n 1, 0, 0, 0,\r\n 0, 0, 0, 1);\r\n private _debugFrustum?: Frustum;\r\n private _debugFrustumGraphic?: RenderGraphic = undefined;\r\n private readonly _symbologyOverrides = new FeatureSymbology.Overrides();\r\n private readonly _bgColor = ColorDef.from(0, 0, 0, 255);\r\n private readonly _plane = Plane3dByOriginAndUnitNormal.create(Point3d.createZero(), Vector3d.create(0, 0, 1))!;\r\n\r\n private constructor(drapedTree: TileTreeReference, mapTree: MapTileTreeReference) {\r\n super();\r\n this._drapedTree = drapedTree;\r\n this._mapTree = mapTree;\r\n }\r\n\r\n public override get isDisposed(): boolean { return super.isDisposed && undefined === this._fbo; }\r\n\r\n public override dispose() {\r\n super.dispose();\r\n this._fbo = dispose(this._fbo);\r\n }\r\n\r\n public addGraphic(graphic: RenderGraphic) {\r\n this._graphics.push(graphic);\r\n }\r\n\r\n public static create(draped: TileTreeReference, map: MapTileTreeReference): BackgroundMapDrape {\r\n return new BackgroundMapDrape(draped, map);\r\n }\r\n\r\n public collectGraphics(context: SceneContext) {\r\n this._graphics.length = 0;\r\n if (undefined === context.viewingSpace)\r\n return;\r\n\r\n const viewState = context.viewingSpace.view as ViewState3d;\r\n if (undefined === viewState)\r\n return;\r\n\r\n const tileTree = this._mapTree.treeOwner.load();\r\n if (undefined === tileTree || !this._mapTree.initializeLayers(context))\r\n return;\r\n\r\n const requiredWidth = 2 * Math.max(context.target.viewRect.width, context.target.viewRect.height); // TBD - Size to textured area.\r\n const requiredHeight = requiredWidth;\r\n\r\n if (requiredWidth !== this._width || requiredHeight !== this._height)\r\n this.dispose();\r\n\r\n this._width = requiredWidth;\r\n this._height = requiredHeight;\r\n\r\n const targetTree = this._drapedTree.treeOwner.tileTree;\r\n const args = this._drapedTree.createDrawArgs(context);\r\n if (!targetTree || !args)\r\n return;\r\n\r\n const targetTiles = targetTree.selectTiles(args);\r\n\r\n const projection = PlanarTextureProjection.computePlanarTextureProjection(this._plane, context, { tiles: targetTiles, location: args.location }, [this._mapTree], viewState, this._width, this._height);\r\n if (!projection.textureFrustum || !projection.projectionMatrix || !projection.worldToViewMap)\r\n return;\r\n\r\n this._frustum = projection.textureFrustum;\r\n this._debugFrustum = projection.debugFrustum;\r\n this._projectionMatrix = projection.projectionMatrix;\r\n\r\n const drawArgs = GraphicsCollectorDrawArgs.create(context, this, this._mapTree, FrustumPlanes.fromFrustum(this._frustum), projection.worldToViewMap);\r\n if (undefined !== drawArgs)\r\n tileTree.draw(drawArgs);\r\n\r\n if (context.target.debugControl && context.target.debugControl.displayDrapeFrustum) {\r\n this._debugFrustumGraphic = dispose(this._debugFrustumGraphic);\r\n const builder = context.createSceneGraphicBuilder();\r\n builder.setSymbology(ColorDef.green, ColorDef.green, 1);\r\n builder.addFrustum(context.viewingSpace.getFrustum());\r\n builder.setSymbology(ColorDef.red, ColorDef.red, 1);\r\n builder.addFrustum(this._debugFrustum!);\r\n builder.setSymbology(ColorDef.white, ColorDef.white, 1);\r\n builder.addFrustum(this._frustum);\r\n this._debugFrustumGraphic = builder.finish();\r\n }\r\n }\r\n\r\n public draw(target: Target) {\r\n if (undefined !== this._debugFrustumGraphic)\r\n target.graphics.foreground.push(this._debugFrustumGraphic);\r\n\r\n if (undefined === this._frustum || this._graphics.length === 0)\r\n return;\r\n\r\n if (undefined === this._fbo) {\r\n const colorTextureHandle = TextureHandle.createForAttachment(this._width, this._height, GL.Texture.Format.Rgba, GL.Texture.DataType.UnsignedByte);\r\n if (undefined === colorTextureHandle) {\r\n assert(false, \"Failed to create planar texture\");\r\n return;\r\n }\r\n\r\n this._texture = new Texture({ ownership: \"external\", type: RenderTexture.Type.TileSection, handle: colorTextureHandle, transparency: TextureTransparency.Opaque });\r\n this._fbo = FrameBuffer.create([colorTextureHandle]);\r\n }\r\n if (undefined === this._fbo) {\r\n assert(false, \"unable to create frame buffer object\");\r\n return;\r\n }\r\n\r\n System.instance.glTimer.beginOperation(\"Terrain Projection\");\r\n\r\n const prevState = System.instance.currentRenderState.clone();\r\n System.instance.context.viewport(0, 0, this._width, this._height);\r\n\r\n const prevPlan = target.plan;\r\n const drawingParams = PlanarTextureProjection.getTextureDrawingParams(target);\r\n const stack = new BranchStack();\r\n stack.changeRenderPlan(drawingParams.viewFlags, prevPlan.is3d, prevPlan.hline);\r\n stack.setSymbologyOverrides(this._symbologyOverrides);\r\n\r\n const batchState = new BatchState(stack);\r\n System.instance.applyRenderState(drawingParams.state);\r\n\r\n target.uniforms.style.changeBackgroundColor(this._bgColor); // Avoid white on white reversal. Will be reset below in changeRenderPlan().\r\n target.changeFrustum(this._frustum, this._frustum.getFraction(), true);\r\n\r\n const prevProjMatrix = target.uniforms.frustum.projectionMatrix;\r\n target.uniforms.frustum.changeProjectionMatrix(BackgroundMapDrape._postProjectionMatrix.multiplyMatrixMatrix(prevProjMatrix));\r\n\r\n target.uniforms.branch.pushState(stack.top);\r\n\r\n const renderCommands = new RenderCommands(target, stack, batchState);\r\n renderCommands.addGraphics(this._graphics, RenderPass.OpaqueGeneral);\r\n\r\n const system = System.instance;\r\n const gl = system.context;\r\n\r\n system.frameBufferStack.execute(this._fbo, true, false, () => {\r\n gl.clearColor(0, 0, 0, 0);\r\n gl.clear(GL.BufferBit.Color);\r\n target.techniques.execute(target, renderCommands.getCommands(RenderPass.OpaqueGeneral), RenderPass.PlanarClassification); // Draw these with RenderPass.PlanarClassification (rather than Opaque...) so that the pick ordering is avoided.\r\n });\r\n\r\n target.uniforms.branch.pop();\r\n\r\n batchState.reset(); // Reset the batch Ids...\r\n target.changeRenderPlan(prevPlan);\r\n\r\n system.applyRenderState(prevState);\r\n gl.viewport(0, 0, target.viewRect.width, target.viewRect.height); // Restore viewport\r\n system.glTimer.endOperation();\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"BranchUniforms.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/BranchUniforms.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BranchUniforms.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/BranchUniforms.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,6 @@ import { BatchState } from "./BatchState";
12
12
  import { Matrix3, Matrix4 } from "./Matrix";
13
13
  import { RenderCommands } from "./RenderCommands";
14
14
  import { desync, sync } from "./Sync";
15
- import { System } from "./System";
16
15
  import { ClipStack } from "./ClipStack";
17
16
  function equalXYZs(a, b) {
18
17
  if (a === b)
@@ -197,13 +196,6 @@ export class BranchUniforms {
197
196
  if (!this._isInstanced) {
198
197
  uniforms.projectionMatrix.multiplyMatrixMatrix(this._mv, this._mvp);
199
198
  this._mvp32.initFromMatrix4d(this._mvp);
200
- if (!System.instance.capabilities.isWebGL2) { // inverse model to view is only used if not instanced and not WebGL2
201
- const inv = this._mv.createInverse();
202
- if (undefined !== inv) {
203
- const invTr = inv.cloneTransposed();
204
- this._mvn32.initFromMatrix3d(invTr.matrixPart());
205
- }
206
- }
207
199
  }
208
200
  return true;
209
201
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BranchUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/BranchUniforms.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 { ClipVector, Matrix3d, Matrix4d, Point3d, Transform, XYZ } from \"@itwin/core-geometry\";\r\nimport { ClipStyle, HiddenLine, ViewFlags } from \"@itwin/core-common\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { BranchState } from \"./BranchState\";\r\nimport { BranchStack } from \"./BranchStack\";\r\nimport { BatchState } from \"./BatchState\";\r\nimport { CachedGeometry } from \"./CachedGeometry\";\r\nimport { Branch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { Matrix3, Matrix4 } from \"./Matrix\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { desync, sync, SyncToken } from \"./Sync\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { ClipStack } from \"./ClipStack\";\r\n\r\nfunction equalXYZs(a: XYZ | undefined, b: XYZ | undefined): boolean {\r\n if (a === b)\r\n return true;\r\n\r\n if ((undefined === a) !== (undefined === b))\r\n return false;\r\n\r\n if (undefined !== a && undefined !== b)\r\n return a.isExactEqual(b);\r\n\r\n assert(undefined === a && undefined === b);\r\n return true;\r\n}\r\n\r\n/** Maintains uniform variable state associated with the Branch currently being drawn by a Target.\r\n * @internal\r\n */\r\nexport class BranchUniforms {\r\n public readonly clipStack: ClipStack;\r\n private _viewClipEnabled = false;\r\n\r\n // The model-view and model-view-projection matrices depend on the frustum.\r\n public syncToken?: SyncToken;\r\n public syncKey = 0;\r\n private readonly _stack = new BranchStack();\r\n private readonly _target: Target;\r\n\r\n // Parameters that affect synchronization.\r\n private _isInstanced = false;\r\n private _viewIndependentOrigin?: Point3d;\r\n\r\n // CPU state\r\n private readonly _mv = Matrix4d.createIdentity();\r\n private readonly _mvp = Matrix4d.createIdentity();\r\n\r\n // GPU state\r\n private readonly _mv32 = new Matrix4();\r\n private readonly _mvp32 = new Matrix4();\r\n private readonly _m32 = new Matrix4();\r\n private readonly _v32 = new Matrix3();\r\n private readonly _mvn32 = new Matrix3();\r\n\r\n // Working state\r\n private readonly _scratchTransform = Transform.createIdentity();\r\n private readonly _scratchTransform2 = Transform.createIdentity();\r\n private readonly _scratchViewToWorld = Matrix3d.createIdentity();\r\n private readonly _scratchVIModelMatrix = Transform.createIdentity();\r\n private readonly _zeroPoint = new Point3d(0, 0, 0);\r\n\r\n public get stack(): BranchStack { return this._stack; }\r\n\r\n public constructor(target: Target) {\r\n this._target = target;\r\n this.clipStack = new ClipStack(\r\n () => target.uniforms.frustum.viewMatrix,\r\n () => this._viewClipEnabled && this.top.viewFlags.clipVolume,\r\n );\r\n }\r\n\r\n public createBatchState(): BatchState {\r\n return new BatchState(this._stack);\r\n }\r\n\r\n public createRenderCommands(batchState: BatchState): RenderCommands {\r\n return new RenderCommands(this._target, this._stack, batchState);\r\n }\r\n\r\n public get modelViewMatrix(): Matrix4d {\r\n return this._mv;\r\n }\r\n\r\n public get top(): BranchState {\r\n return this._stack.top;\r\n }\r\n\r\n public get length(): number {\r\n return this._stack.length;\r\n }\r\n\r\n public pushBranch(branch: Branch): void {\r\n desync(this);\r\n this._stack.pushBranch(branch);\r\n if (this.top.clipVolume)\r\n this.clipStack.push(this.top.clipVolume);\r\n\r\n if (branch.branch.realityModelDisplaySettings)\r\n this._target.uniforms.realityModel.update(branch.branch.realityModelDisplaySettings);\r\n }\r\n\r\n public pushState(state: BranchState): void {\r\n desync(this);\r\n this._stack.pushState(state);\r\n if (this.top.clipVolume)\r\n this.clipStack.push(this.top.clipVolume);\r\n\r\n if (state.realityModelDisplaySettings)\r\n this._target.uniforms.realityModel.update(state.realityModelDisplaySettings);\r\n }\r\n\r\n public pop(): void {\r\n desync(this);\r\n if (this.top.clipVolume)\r\n this.clipStack.pop();\r\n\r\n this._stack.pop();\r\n }\r\n\r\n public pushViewClip(): void {\r\n assert(!this._viewClipEnabled);\r\n this._viewClipEnabled = true;\r\n\r\n // Target.readPixels() pushes another BranchState before pushing view clip...\r\n assert((this._target.isReadPixelsInProgress ? 2 : 1) === this._stack.length);\r\n }\r\n\r\n public popViewClip(): void {\r\n assert(this._viewClipEnabled);\r\n this._viewClipEnabled = false;\r\n assert((this._target.isReadPixelsInProgress ? 2 : 1) === this._stack.length);\r\n }\r\n\r\n public changeRenderPlan(vf: ViewFlags, is3d: boolean, hline: HiddenLine.Settings | undefined): void {\r\n this._stack.changeRenderPlan(vf, is3d, hline);\r\n }\r\n\r\n public updateViewClip(clip: ClipVector | undefined, style: ClipStyle): void {\r\n this.clipStack.setViewClip(clip, style);\r\n }\r\n\r\n public overrideFeatureSymbology(ovr: FeatureSymbology.Overrides): void {\r\n this._stack.setSymbologyOverrides(ovr);\r\n }\r\n\r\n public bindModelViewMatrix(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean): void {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._mv32);\r\n }\r\n\r\n public bindModelViewProjectionMatrix(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean): void {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._mvp32);\r\n }\r\n\r\n public bindModelToWorldTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._m32);\r\n }\r\n\r\n public bindWorldToViewNTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix3(this._v32);\r\n }\r\n\r\n public bindModelViewNTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix3(this._mvn32);\r\n }\r\n\r\n private update(uniform: UniformHandle, geometry: CachedGeometry, isViewCoords: boolean): boolean {\r\n const uniforms = this._target.uniforms[isViewCoords ? \"viewRect\" : \"frustum\"];\r\n if (!sync(uniforms, this))\r\n desync(this);\r\n\r\n const instancedGeom = geometry.asInstanced;\r\n if (undefined !== instancedGeom || this._isInstanced) {\r\n this._isInstanced = undefined !== instancedGeom;\r\n desync(this);\r\n }\r\n\r\n const vio = geometry.viewIndependentOrigin;\r\n if (!equalXYZs(vio, this._viewIndependentOrigin)) {\r\n this._viewIndependentOrigin = vio;\r\n desync(this);\r\n }\r\n\r\n if (sync(this, uniform))\r\n return false;\r\n\r\n let mv;\r\n const modelMatrix = this._target.currentTransform;\r\n if (isViewCoords) {\r\n // Zero out Z for silly clipping tools...\r\n mv = modelMatrix.clone(this._scratchTransform);\r\n mv.matrix.coffs[2] = mv.matrix.coffs[5] = mv.matrix.coffs[8] = 0.0;\r\n if (instancedGeom)\r\n mv = instancedGeom.getRtcModelTransform(mv);\r\n\r\n // Scale based on device-pixel ratio.\r\n const scale = this._target.devicePixelRatio;\r\n const viewMatrix = Transform.createScaleAboutPoint(this._zeroPoint, scale, this._scratchTransform2);\r\n viewMatrix.multiplyTransformTransform(mv, mv);\r\n } else {\r\n const viewMatrix = this._target.uniforms.frustum.viewMatrix;\r\n mv = viewMatrix.clone(this._scratchTransform);\r\n\r\n if (undefined !== instancedGeom) {\r\n // For instanced geometry, the \"model view\" matrix is really a transform from center of instanced geometry range to view.\r\n // Shader will compute final model-view matrix based on this and the per-instance transform.\r\n if (vio) {\r\n const viewToWorldRot = viewMatrix.matrix.inverse(this._scratchViewToWorld)!;\r\n const rotateAboutOrigin = Transform.createFixedPointAndMatrix(vio, viewToWorldRot, this._scratchTransform2);\r\n const viModelMatrix = rotateAboutOrigin.multiplyTransformTransform(instancedGeom.getRtcModelTransform(modelMatrix), this._scratchVIModelMatrix);\r\n mv.multiplyTransformTransform(viModelMatrix, mv);\r\n } else {\r\n mv.multiplyTransformTransform(instancedGeom.getRtcModelTransform(modelMatrix), mv);\r\n }\r\n } else {\r\n if (undefined !== vio) {\r\n const viewToWorldRot = viewMatrix.matrix.inverse(this._scratchViewToWorld)!;\r\n const rotateAboutOrigin = Transform.createFixedPointAndMatrix(vio, viewToWorldRot, this._scratchTransform2);\r\n const viModelMatrix = rotateAboutOrigin.multiplyTransformTransform(modelMatrix, this._scratchVIModelMatrix);\r\n mv.multiplyTransformTransform(viModelMatrix, mv);\r\n } else {\r\n mv = mv.multiplyTransformTransform(modelMatrix, mv);\r\n }\r\n }\r\n }\r\n\r\n if (this._target.wantThematicDisplay) {\r\n this._m32.initFromTransform(modelMatrix);\r\n this._v32.initFromMatrix3d(this._target.uniforms.frustum.viewMatrix.matrix);\r\n }\r\n\r\n Matrix4d.createTransform(mv, this._mv);\r\n this._mv32.initFromTransform(mv);\r\n\r\n // Don't bother computing mvp for instanced geometry - it's not used.\r\n if (!this._isInstanced) {\r\n uniforms.projectionMatrix.multiplyMatrixMatrix(this._mv, this._mvp);\r\n this._mvp32.initFromMatrix4d(this._mvp);\r\n if (!System.instance.capabilities.isWebGL2) { // inverse model to view is only used if not instanced and not WebGL2\r\n const inv = this._mv.createInverse();\r\n if (undefined !== inv) {\r\n const invTr = inv.cloneTransposed();\r\n this._mvn32.initFromMatrix3d(invTr.matrixPart());\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"BranchUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/BranchUniforms.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAc,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAO,MAAM,sBAAsB,CAAC;AAI/F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAa,MAAM,QAAQ,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,SAAS,SAAS,CAAC,CAAkB,EAAE,CAAkB;IACvD,IAAI,CAAC,KAAK,CAAC;QACT,OAAO,IAAI,CAAC;IAEd,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC;IAEf,IAAI,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC;QACpC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAE3B,MAAM,CAAC,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,cAAc;IAkCzB,YAAmB,MAAc;QAhCzB,qBAAgB,GAAG,KAAK,CAAC;QAI1B,YAAO,GAAG,CAAC,CAAC;QACF,WAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAG5C,0CAA0C;QAClC,iBAAY,GAAG,KAAK,CAAC;QAG7B,YAAY;QACK,QAAG,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QAChC,SAAI,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QAElD,YAAY;QACK,UAAK,GAAG,IAAI,OAAO,EAAE,CAAC;QACtB,WAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QACvB,SAAI,GAAG,IAAI,OAAO,EAAE,CAAC;QACrB,SAAI,GAAG,IAAI,OAAO,EAAE,CAAC;QACrB,WAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAExC,gBAAgB;QACC,sBAAiB,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;QAC/C,uBAAkB,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;QAChD,wBAAmB,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QAChD,0BAAqB,GAAG,SAAS,CAAC,cAAc,EAAE,CAAC;QACnD,eAAU,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAKjD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAC5B,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EACxC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAC7D,CAAC;IACJ,CAAC;IARD,IAAW,KAAK,KAAkB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAUhD,gBAAgB;QACrB,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAEM,oBAAoB,CAAC,UAAsB;QAChD,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnE,CAAC;IAED,IAAW,eAAe;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IACzB,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAEM,UAAU,CAAC,MAAc;QAC9B,MAAM,CAAC,IAAI,CAAC,CAAC;QACb,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU;YACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE3C,IAAI,MAAM,CAAC,MAAM,CAAC,2BAA2B;YAC3C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;IACzF,CAAC;IAEM,SAAS,CAAC,KAAkB;QACjC,MAAM,CAAC,IAAI,CAAC,CAAC;QACb,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU;YACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE3C,IAAI,KAAK,CAAC,2BAA2B;YACnC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACjF,CAAC;IAEM,GAAG;QACR,MAAM,CAAC,IAAI,CAAC,CAAC;QACb,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU;YACrB,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;IAEM,YAAY;QACjB,MAAM,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE7B,6EAA6E;QAC7E,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/E,CAAC;IAEM,WAAW;QAChB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/E,CAAC;IAEM,gBAAgB,CAAC,EAAa,EAAE,IAAa,EAAE,KAAsC;QAC1F,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAEM,cAAc,CAAC,IAA4B,EAAE,KAAgB;QAClE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAEM,wBAAwB,CAAC,GAA+B;QAC7D,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAEM,mBAAmB,CAAC,OAAsB,EAAE,IAAoB,EAAE,YAAqB;QAC5F,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC;YAC1C,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAEM,6BAA6B,CAAC,OAAsB,EAAE,IAAoB,EAAE,YAAqB;QACtG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC;YAC1C,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAEM,yBAAyB,CAAC,OAAsB,EAAE,IAAoB,EAAE,YAAqB;QAClG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC;YAC1C,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEM,yBAAyB,CAAC,OAAsB,EAAE,IAAoB,EAAE,YAAqB;QAClG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC;YAC1C,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEM,uBAAuB,CAAC,OAAsB,EAAE,IAAoB,EAAE,YAAqB;QAChG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC;YAC1C,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAEO,MAAM,CAAC,OAAsB,EAAE,QAAwB,EAAE,YAAqB;QACpF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9E,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,CAAC;QAEf,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC;QAC3C,IAAI,SAAS,KAAK,aAAa,IAAI,IAAI,CAAC,YAAY,EAAE;YACpD,IAAI,CAAC,YAAY,GAAG,SAAS,KAAK,aAAa,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,CAAC;SACd;QAED,MAAM,GAAG,GAAG,QAAQ,CAAC,qBAAqB,CAAC;QAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,sBAAsB,CAAC,EAAE;YAChD,IAAI,CAAC,sBAAsB,GAAG,GAAG,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,CAAC;SACd;QAED,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;YACrB,OAAO,KAAK,CAAC;QAEf,IAAI,EAAE,CAAC;QACP,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAClD,IAAI,YAAY,EAAE;YAChB,yCAAyC;YACzC,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC/C,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YACnE,IAAI,aAAa;gBACf,EAAE,GAAG,aAAa,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;YAE9C,qCAAqC;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAC5C,MAAM,UAAU,GAAG,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACpG,UAAU,CAAC,0BAA0B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;SAC/C;aAAM;YACL,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC;YAC5D,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAE9C,IAAI,SAAS,KAAK,aAAa,EAAE;gBAC/B,yHAAyH;gBACzH,4FAA4F;gBAC5F,IAAI,GAAG,EAAE;oBACP,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAE,CAAC;oBAC5E,MAAM,iBAAiB,GAAG,SAAS,CAAC,yBAAyB,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBAC5G,MAAM,aAAa,GAAG,iBAAiB,CAAC,0BAA0B,CAAC,aAAa,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;oBAChJ,EAAE,CAAC,0BAA0B,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;iBAClD;qBAAM;oBACL,EAAE,CAAC,0BAA0B,CAAC,aAAa,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;iBACpF;aACF;iBAAM;gBACL,IAAI,SAAS,KAAK,GAAG,EAAE;oBACrB,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAE,CAAC;oBAC5E,MAAM,iBAAiB,GAAG,SAAS,CAAC,yBAAyB,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBAC5G,MAAM,aAAa,GAAG,iBAAiB,CAAC,0BAA0B,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;oBAC5G,EAAE,CAAC,0BAA0B,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;iBAClD;qBAAM;oBACL,EAAE,GAAG,EAAE,CAAC,0BAA0B,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;iBACrD;aACF;SACF;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;SAC7E;QAED,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAEjC,qEAAqE;QACrE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,QAAQ,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACzC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF","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 { ClipVector, Matrix3d, Matrix4d, Point3d, Transform, XYZ } from \"@itwin/core-geometry\";\r\nimport { ClipStyle, HiddenLine, ViewFlags } from \"@itwin/core-common\";\r\nimport { FeatureSymbology } from \"../FeatureSymbology\";\r\nimport { BranchState } from \"./BranchState\";\r\nimport { BranchStack } from \"./BranchStack\";\r\nimport { BatchState } from \"./BatchState\";\r\nimport { CachedGeometry } from \"./CachedGeometry\";\r\nimport { Branch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { Matrix3, Matrix4 } from \"./Matrix\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { desync, sync, SyncToken } from \"./Sync\";\r\nimport { Target } from \"./Target\";\r\nimport { ClipStack } from \"./ClipStack\";\r\n\r\nfunction equalXYZs(a: XYZ | undefined, b: XYZ | undefined): boolean {\r\n if (a === b)\r\n return true;\r\n\r\n if ((undefined === a) !== (undefined === b))\r\n return false;\r\n\r\n if (undefined !== a && undefined !== b)\r\n return a.isExactEqual(b);\r\n\r\n assert(undefined === a && undefined === b);\r\n return true;\r\n}\r\n\r\n/** Maintains uniform variable state associated with the Branch currently being drawn by a Target.\r\n * @internal\r\n */\r\nexport class BranchUniforms {\r\n public readonly clipStack: ClipStack;\r\n private _viewClipEnabled = false;\r\n\r\n // The model-view and model-view-projection matrices depend on the frustum.\r\n public syncToken?: SyncToken;\r\n public syncKey = 0;\r\n private readonly _stack = new BranchStack();\r\n private readonly _target: Target;\r\n\r\n // Parameters that affect synchronization.\r\n private _isInstanced = false;\r\n private _viewIndependentOrigin?: Point3d;\r\n\r\n // CPU state\r\n private readonly _mv = Matrix4d.createIdentity();\r\n private readonly _mvp = Matrix4d.createIdentity();\r\n\r\n // GPU state\r\n private readonly _mv32 = new Matrix4();\r\n private readonly _mvp32 = new Matrix4();\r\n private readonly _m32 = new Matrix4();\r\n private readonly _v32 = new Matrix3();\r\n private readonly _mvn32 = new Matrix3();\r\n\r\n // Working state\r\n private readonly _scratchTransform = Transform.createIdentity();\r\n private readonly _scratchTransform2 = Transform.createIdentity();\r\n private readonly _scratchViewToWorld = Matrix3d.createIdentity();\r\n private readonly _scratchVIModelMatrix = Transform.createIdentity();\r\n private readonly _zeroPoint = new Point3d(0, 0, 0);\r\n\r\n public get stack(): BranchStack { return this._stack; }\r\n\r\n public constructor(target: Target) {\r\n this._target = target;\r\n this.clipStack = new ClipStack(\r\n () => target.uniforms.frustum.viewMatrix,\r\n () => this._viewClipEnabled && this.top.viewFlags.clipVolume,\r\n );\r\n }\r\n\r\n public createBatchState(): BatchState {\r\n return new BatchState(this._stack);\r\n }\r\n\r\n public createRenderCommands(batchState: BatchState): RenderCommands {\r\n return new RenderCommands(this._target, this._stack, batchState);\r\n }\r\n\r\n public get modelViewMatrix(): Matrix4d {\r\n return this._mv;\r\n }\r\n\r\n public get top(): BranchState {\r\n return this._stack.top;\r\n }\r\n\r\n public get length(): number {\r\n return this._stack.length;\r\n }\r\n\r\n public pushBranch(branch: Branch): void {\r\n desync(this);\r\n this._stack.pushBranch(branch);\r\n if (this.top.clipVolume)\r\n this.clipStack.push(this.top.clipVolume);\r\n\r\n if (branch.branch.realityModelDisplaySettings)\r\n this._target.uniforms.realityModel.update(branch.branch.realityModelDisplaySettings);\r\n }\r\n\r\n public pushState(state: BranchState): void {\r\n desync(this);\r\n this._stack.pushState(state);\r\n if (this.top.clipVolume)\r\n this.clipStack.push(this.top.clipVolume);\r\n\r\n if (state.realityModelDisplaySettings)\r\n this._target.uniforms.realityModel.update(state.realityModelDisplaySettings);\r\n }\r\n\r\n public pop(): void {\r\n desync(this);\r\n if (this.top.clipVolume)\r\n this.clipStack.pop();\r\n\r\n this._stack.pop();\r\n }\r\n\r\n public pushViewClip(): void {\r\n assert(!this._viewClipEnabled);\r\n this._viewClipEnabled = true;\r\n\r\n // Target.readPixels() pushes another BranchState before pushing view clip...\r\n assert((this._target.isReadPixelsInProgress ? 2 : 1) === this._stack.length);\r\n }\r\n\r\n public popViewClip(): void {\r\n assert(this._viewClipEnabled);\r\n this._viewClipEnabled = false;\r\n assert((this._target.isReadPixelsInProgress ? 2 : 1) === this._stack.length);\r\n }\r\n\r\n public changeRenderPlan(vf: ViewFlags, is3d: boolean, hline: HiddenLine.Settings | undefined): void {\r\n this._stack.changeRenderPlan(vf, is3d, hline);\r\n }\r\n\r\n public updateViewClip(clip: ClipVector | undefined, style: ClipStyle): void {\r\n this.clipStack.setViewClip(clip, style);\r\n }\r\n\r\n public overrideFeatureSymbology(ovr: FeatureSymbology.Overrides): void {\r\n this._stack.setSymbologyOverrides(ovr);\r\n }\r\n\r\n public bindModelViewMatrix(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean): void {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._mv32);\r\n }\r\n\r\n public bindModelViewProjectionMatrix(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean): void {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._mvp32);\r\n }\r\n\r\n public bindModelToWorldTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix4(this._m32);\r\n }\r\n\r\n public bindWorldToViewNTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix3(this._v32);\r\n }\r\n\r\n public bindModelViewNTransform(uniform: UniformHandle, geom: CachedGeometry, isViewCoords: boolean) {\r\n if (this.update(uniform, geom, isViewCoords))\r\n uniform.setMatrix3(this._mvn32);\r\n }\r\n\r\n private update(uniform: UniformHandle, geometry: CachedGeometry, isViewCoords: boolean): boolean {\r\n const uniforms = this._target.uniforms[isViewCoords ? \"viewRect\" : \"frustum\"];\r\n if (!sync(uniforms, this))\r\n desync(this);\r\n\r\n const instancedGeom = geometry.asInstanced;\r\n if (undefined !== instancedGeom || this._isInstanced) {\r\n this._isInstanced = undefined !== instancedGeom;\r\n desync(this);\r\n }\r\n\r\n const vio = geometry.viewIndependentOrigin;\r\n if (!equalXYZs(vio, this._viewIndependentOrigin)) {\r\n this._viewIndependentOrigin = vio;\r\n desync(this);\r\n }\r\n\r\n if (sync(this, uniform))\r\n return false;\r\n\r\n let mv;\r\n const modelMatrix = this._target.currentTransform;\r\n if (isViewCoords) {\r\n // Zero out Z for silly clipping tools...\r\n mv = modelMatrix.clone(this._scratchTransform);\r\n mv.matrix.coffs[2] = mv.matrix.coffs[5] = mv.matrix.coffs[8] = 0.0;\r\n if (instancedGeom)\r\n mv = instancedGeom.getRtcModelTransform(mv);\r\n\r\n // Scale based on device-pixel ratio.\r\n const scale = this._target.devicePixelRatio;\r\n const viewMatrix = Transform.createScaleAboutPoint(this._zeroPoint, scale, this._scratchTransform2);\r\n viewMatrix.multiplyTransformTransform(mv, mv);\r\n } else {\r\n const viewMatrix = this._target.uniforms.frustum.viewMatrix;\r\n mv = viewMatrix.clone(this._scratchTransform);\r\n\r\n if (undefined !== instancedGeom) {\r\n // For instanced geometry, the \"model view\" matrix is really a transform from center of instanced geometry range to view.\r\n // Shader will compute final model-view matrix based on this and the per-instance transform.\r\n if (vio) {\r\n const viewToWorldRot = viewMatrix.matrix.inverse(this._scratchViewToWorld)!;\r\n const rotateAboutOrigin = Transform.createFixedPointAndMatrix(vio, viewToWorldRot, this._scratchTransform2);\r\n const viModelMatrix = rotateAboutOrigin.multiplyTransformTransform(instancedGeom.getRtcModelTransform(modelMatrix), this._scratchVIModelMatrix);\r\n mv.multiplyTransformTransform(viModelMatrix, mv);\r\n } else {\r\n mv.multiplyTransformTransform(instancedGeom.getRtcModelTransform(modelMatrix), mv);\r\n }\r\n } else {\r\n if (undefined !== vio) {\r\n const viewToWorldRot = viewMatrix.matrix.inverse(this._scratchViewToWorld)!;\r\n const rotateAboutOrigin = Transform.createFixedPointAndMatrix(vio, viewToWorldRot, this._scratchTransform2);\r\n const viModelMatrix = rotateAboutOrigin.multiplyTransformTransform(modelMatrix, this._scratchVIModelMatrix);\r\n mv.multiplyTransformTransform(viModelMatrix, mv);\r\n } else {\r\n mv = mv.multiplyTransformTransform(modelMatrix, mv);\r\n }\r\n }\r\n }\r\n\r\n if (this._target.wantThematicDisplay) {\r\n this._m32.initFromTransform(modelMatrix);\r\n this._v32.initFromMatrix3d(this._target.uniforms.frustum.viewMatrix.matrix);\r\n }\r\n\r\n Matrix4d.createTransform(mv, this._mv);\r\n this._mv32.initFromTransform(mv);\r\n\r\n // Don't bother computing mvp for instanced geometry - it's not used.\r\n if (!this._isInstanced) {\r\n uniforms.projectionMatrix.multiplyMatrixMatrix(this._mv, this._mvp);\r\n this._mvp32.initFromMatrix4d(this._mvp);\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n"]}
@@ -21,7 +21,6 @@ export declare class ClipStack {
21
21
  /** A view of the encoded buffer in the format expected by the GPU. */
22
22
  protected _gpuBuffer: Texture2DData;
23
23
  protected _texture?: Texture2DHandle;
24
- protected readonly _isFloatTexture: boolean;
25
24
  /** The maximum number of rows we have ever required. Determines the texture height. Grows as needed, reallocating a larger texture, but never shrinks. */
26
25
  protected _numTotalRows: number;
27
26
  /** The number of rows in the texture actually required to encode the current contents of the stack. */
@@ -1 +1 @@
1
- {"version":3,"file":"ClipStack.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/ClipStack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClipStack.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/ClipStack.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAwB,UAAU,EAAW,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACrG,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAI1E,UAAU,IAAI;IACZ,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,UAAU,CAAC;CACxD;AAiBD;;;;GAIG;AACH,qBAAa,SAAS;IACpB,+FAA+F;IAC/F,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC;IACjC,sEAAsE;IACtE,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC;IACpC,SAAS,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;IACrC,0JAA0J;IAC1J,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,uGAAuG;IACvG,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,4GAA4G;IAC5G,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,CAAe;IAChD,gDAAgD;IAChD,SAAS,CAAC,aAAa,UAAS;IAChC,+EAA+E;IAC/E,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,SAAS,CAAC;IAClD,6EAA6E;IAC7E,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,OAAO,CAAC;IAChD,+EAA+E;IAC/E,SAAS,CAAC,QAAQ,CAAC,YAAY,YAA8B;IAC7D,gFAAgF;IAChF,SAAS,CAAC,QAAQ,CAAC,aAAa,YAA8B;IAC9D,kGAAkG;IAClG,SAAS,CAAC,QAAQ,CAAC,cAAc,YAA0B;gBAExC,YAAY,EAAE,MAAM,SAAS,EAAE,YAAY,EAAE,MAAM,OAAO;IAS7E,IAAW,WAAW,IAAI,SAAS,CAElC;IAED,IAAW,YAAY,IAAI,SAAS,CAEnC;IAED,IAAW,eAAe,IAAI,OAAO,CAEpC;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAEM,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,EAAE,KAAK,EAAE;QAAE,WAAW,CAAC,EAAE,QAAQ,CAAC;QAAC,YAAY,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,IAAI;IAyC3G,IAAI,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IASlC,GAAG,IAAI,IAAI;IAMlB,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED,IAAW,UAAU,IAAI,MAAM,CAG9B;IAED,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,OAAO,IAAI,aAAa,GAAG,SAAS,CAG9C;IAEM,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO;IAiBpE,kCAAkC;IAClC,IAAW,KAAK,IAAI,aAAa,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAErD;IAED,kCAAkC;IAClC,WAAkB,aAAa;;;MAE9B;IAED,SAAS,CAAC,aAAa,IAAI,IAAI;IAgB/B,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAoBlC,SAAS,CAAC,aAAa,IAAI,IAAI;IAS/B,SAAS,CAAC,iBAAiB,IAAI,aAAa;IAI5C,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI;CAKxE"}