@itwin/core-frontend 4.10.0-dev.30 → 4.10.0-dev.32

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 (385) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/lib/cjs/AccuDraw.js +2 -2
  3. package/lib/cjs/AccuDraw.js.map +1 -1
  4. package/lib/cjs/AccuSnap.d.ts.map +1 -1
  5. package/lib/cjs/AccuSnap.js +7 -2
  6. package/lib/cjs/AccuSnap.js.map +1 -1
  7. package/lib/cjs/BackgroundMapGeometry.js +3 -3
  8. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  9. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  10. package/lib/cjs/BriefcaseTxns.d.ts.map +1 -1
  11. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  12. package/lib/cjs/DrawingViewState.d.ts +3 -3
  13. package/lib/cjs/DrawingViewState.d.ts.map +1 -1
  14. package/lib/cjs/DrawingViewState.js +9 -8
  15. package/lib/cjs/DrawingViewState.js.map +1 -1
  16. package/lib/cjs/GraphicalEditingScope.d.ts.map +1 -1
  17. package/lib/cjs/HitDetail.d.ts +36 -7
  18. package/lib/cjs/HitDetail.d.ts.map +1 -1
  19. package/lib/cjs/HitDetail.js +11 -3
  20. package/lib/cjs/HitDetail.js.map +1 -1
  21. package/lib/cjs/IModelApp.d.ts.map +1 -1
  22. package/lib/cjs/LinePlaneIntersect.js +1 -2
  23. package/lib/cjs/LinePlaneIntersect.js.map +1 -1
  24. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  25. package/lib/cjs/NotificationManager.d.ts +2 -2
  26. package/lib/cjs/NotificationManager.d.ts.map +1 -1
  27. package/lib/cjs/SheetViewState.d.ts +3 -3
  28. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  29. package/lib/cjs/SheetViewState.js +18 -5
  30. package/lib/cjs/SheetViewState.js.map +1 -1
  31. package/lib/cjs/ViewGlobalLocation.js +9 -9
  32. package/lib/cjs/ViewGlobalLocation.js.map +1 -1
  33. package/lib/cjs/ViewState.d.ts +16 -7
  34. package/lib/cjs/ViewState.d.ts.map +1 -1
  35. package/lib/cjs/ViewState.js +4 -4
  36. package/lib/cjs/ViewState.js.map +1 -1
  37. package/lib/cjs/Viewport.d.ts.map +1 -1
  38. package/lib/cjs/Viewport.js +1 -0
  39. package/lib/cjs/Viewport.js.map +1 -1
  40. package/lib/cjs/ViewportSync.js +6 -6
  41. package/lib/cjs/ViewportSync.js.map +1 -1
  42. package/lib/cjs/common/ImageUtil.js +15 -16
  43. package/lib/cjs/common/ImageUtil.js.map +1 -1
  44. package/lib/cjs/common/WorkerProxy.js +1 -2
  45. package/lib/cjs/common/WorkerProxy.js.map +1 -1
  46. package/lib/cjs/common/gltf/GltfParser.js +1 -2
  47. package/lib/cjs/common/gltf/GltfParser.js.map +1 -1
  48. package/lib/cjs/common/gltf/GltfSchema.js +5 -5
  49. package/lib/cjs/common/gltf/GltfSchema.js.map +1 -1
  50. package/lib/cjs/common/imdl/CompactEdges.js +1 -2
  51. package/lib/cjs/common/imdl/CompactEdges.js.map +1 -1
  52. package/lib/cjs/common/imdl/ImdlModel.js +2 -3
  53. package/lib/cjs/common/imdl/ImdlModel.js.map +1 -1
  54. package/lib/cjs/common/imdl/ParseImdlDocument.js +6 -7
  55. package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -1
  56. package/lib/cjs/common/internal/render/EdgeParams.js +2 -3
  57. package/lib/cjs/common/internal/render/EdgeParams.js.map +1 -1
  58. package/lib/cjs/common/internal/render/GeometryList.d.ts +1 -1
  59. package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js +3 -3
  60. package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
  61. package/lib/cjs/common/internal/render/LineCode.js +1 -2
  62. package/lib/cjs/common/internal/render/LineCode.js.map +1 -1
  63. package/lib/cjs/common/internal/render/MeshPrimitives.js +3 -3
  64. package/lib/cjs/common/internal/render/MeshPrimitives.js.map +1 -1
  65. package/lib/cjs/common/internal/render/PointStringParams.js +1 -2
  66. package/lib/cjs/common/internal/render/PointStringParams.js.map +1 -1
  67. package/lib/cjs/common/internal/render/PolylineParams.js +4 -5
  68. package/lib/cjs/common/internal/render/PolylineParams.js.map +1 -1
  69. package/lib/cjs/common/internal/render/SurfaceParams.js +3 -3
  70. package/lib/cjs/common/internal/render/SurfaceParams.js.map +1 -1
  71. package/lib/cjs/common/internal/render/VertexTable.js +1 -2
  72. package/lib/cjs/common/internal/render/VertexTable.js.map +1 -1
  73. package/lib/cjs/common/internal/render/VertexTableBuilder.js +2 -2
  74. package/lib/cjs/common/internal/render/VertexTableBuilder.js.map +1 -1
  75. package/lib/cjs/common/internal/render/VertexTableSplitter.js +4 -4
  76. package/lib/cjs/common/internal/render/VertexTableSplitter.js.map +1 -1
  77. package/lib/cjs/extension/providers/ExtensionLoadScript.js +1 -2
  78. package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -1
  79. package/lib/cjs/internal/render/RenderInstancesParamsImpl.js +2 -3
  80. package/lib/cjs/internal/render/RenderInstancesParamsImpl.js.map +1 -1
  81. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  82. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js +2 -2
  83. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  84. package/lib/cjs/quantity-formatting/QuantityFormatter.js +3 -3
  85. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  86. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.d.ts.map +1 -1
  87. package/lib/cjs/render/GraphicBranch.d.ts +3 -1
  88. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  89. package/lib/cjs/render/GraphicBranch.js +2 -2
  90. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  91. package/lib/cjs/render/GraphicTemplate.js +1 -2
  92. package/lib/cjs/render/GraphicTemplate.js.map +1 -1
  93. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  94. package/lib/cjs/render/Pixel.d.ts +9 -7
  95. package/lib/cjs/render/Pixel.d.ts.map +1 -1
  96. package/lib/cjs/render/Pixel.js +20 -5
  97. package/lib/cjs/render/Pixel.js.map +1 -1
  98. package/lib/cjs/render/RenderPlan.js +3 -3
  99. package/lib/cjs/render/RenderPlan.js.map +1 -1
  100. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  101. package/lib/cjs/render/UpsampleRealityMeshParams.js +1 -2
  102. package/lib/cjs/render/UpsampleRealityMeshParams.js.map +1 -1
  103. package/lib/cjs/render/VisibleFeature.js +1 -2
  104. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  105. package/lib/cjs/render/webgl/AttributeBuffers.js +5 -5
  106. package/lib/cjs/render/webgl/AttributeBuffers.js.map +1 -1
  107. package/lib/cjs/render/webgl/BranchState.d.ts +2 -0
  108. package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
  109. package/lib/cjs/render/webgl/BranchState.js +2 -0
  110. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  111. package/lib/cjs/render/webgl/ClippingProgram.js +2 -2
  112. package/lib/cjs/render/webgl/ClippingProgram.js.map +1 -1
  113. package/lib/cjs/render/webgl/DrawCommand.js +3 -3
  114. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  115. package/lib/cjs/render/webgl/FeatureOverrides.js +2 -2
  116. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  117. package/lib/cjs/render/webgl/FrustumUniforms.js +2 -2
  118. package/lib/cjs/render/webgl/FrustumUniforms.js.map +1 -1
  119. package/lib/cjs/render/webgl/Graphic.d.ts +3 -0
  120. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  121. package/lib/cjs/render/webgl/Graphic.js +4 -0
  122. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  123. package/lib/cjs/render/webgl/InstancedGeometry.js +2 -2
  124. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  125. package/lib/cjs/render/webgl/Material.js +2 -2
  126. package/lib/cjs/render/webgl/Material.js.map +1 -1
  127. package/lib/cjs/render/webgl/Matrix.js +3 -3
  128. package/lib/cjs/render/webgl/Matrix.js.map +1 -1
  129. package/lib/cjs/render/webgl/RenderFlags.js +2 -2
  130. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  131. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  132. package/lib/cjs/render/webgl/SceneCompositor.js +7 -4
  133. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  134. package/lib/cjs/render/webgl/ScratchDrawParams.js +2 -3
  135. package/lib/cjs/render/webgl/ScratchDrawParams.js.map +1 -1
  136. package/lib/cjs/render/webgl/ScreenSpaceEffect.js +2 -2
  137. package/lib/cjs/render/webgl/ScreenSpaceEffect.js.map +1 -1
  138. package/lib/cjs/render/webgl/SurfaceGeometry.js +2 -2
  139. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  140. package/lib/cjs/render/webgl/Sync.js +3 -4
  141. package/lib/cjs/render/webgl/Sync.js.map +1 -1
  142. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  143. package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
  144. package/lib/cjs/render/webgl/TechniqueId.js +1 -2
  145. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  146. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  147. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +1 -2
  148. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  149. package/lib/cjs/render/webgl/glsl/Animation.js +1 -2
  150. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  151. package/lib/cjs/render/webgl/glsl/Atmosphere.js +1 -2
  152. package/lib/cjs/render/webgl/glsl/Atmosphere.js.map +1 -1
  153. package/lib/cjs/render/webgl/glsl/Blur.js +1 -2
  154. package/lib/cjs/render/webgl/glsl/Blur.js.map +1 -1
  155. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +1 -2
  156. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  157. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +1 -2
  158. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  159. package/lib/cjs/render/webgl/glsl/Clipping.js +2 -2
  160. package/lib/cjs/render/webgl/glsl/Clipping.js.map +1 -1
  161. package/lib/cjs/render/webgl/glsl/Color.js +2 -3
  162. package/lib/cjs/render/webgl/glsl/Color.js.map +1 -1
  163. package/lib/cjs/render/webgl/glsl/Combine3Textures.js +1 -2
  164. package/lib/cjs/render/webgl/glsl/Combine3Textures.js.map +1 -1
  165. package/lib/cjs/render/webgl/glsl/CombineTextures.js +1 -2
  166. package/lib/cjs/render/webgl/glsl/CombineTextures.js.map +1 -1
  167. package/lib/cjs/render/webgl/glsl/Common.js +7 -7
  168. package/lib/cjs/render/webgl/glsl/Common.js.map +1 -1
  169. package/lib/cjs/render/webgl/glsl/Composite.js +1 -2
  170. package/lib/cjs/render/webgl/glsl/Composite.js.map +1 -1
  171. package/lib/cjs/render/webgl/glsl/Contours.js +1 -2
  172. package/lib/cjs/render/webgl/glsl/Contours.js.map +1 -1
  173. package/lib/cjs/render/webgl/glsl/CopyColor.js +1 -2
  174. package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
  175. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +1 -2
  176. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  177. package/lib/cjs/render/webgl/glsl/CopyStencil.js +4 -5
  178. package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
  179. package/lib/cjs/render/webgl/glsl/Decode.js +2 -2
  180. package/lib/cjs/render/webgl/glsl/Decode.js.map +1 -1
  181. package/lib/cjs/render/webgl/glsl/EDL.js +4 -5
  182. package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -1
  183. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +1 -2
  184. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  185. package/lib/cjs/render/webgl/glsl/Edge.js +2 -3
  186. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  187. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +15 -15
  188. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  189. package/lib/cjs/render/webgl/glsl/Fragment.js +6 -6
  190. package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
  191. package/lib/cjs/render/webgl/glsl/Instancing.js +3 -4
  192. package/lib/cjs/render/webgl/glsl/Instancing.js.map +1 -1
  193. package/lib/cjs/render/webgl/glsl/Lighting.js +1 -2
  194. package/lib/cjs/render/webgl/glsl/Lighting.js.map +1 -1
  195. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -2
  196. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  197. package/lib/cjs/render/webgl/glsl/LookupTable.js +1 -2
  198. package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
  199. package/lib/cjs/render/webgl/glsl/Monochrome.js +2 -3
  200. package/lib/cjs/render/webgl/glsl/Monochrome.js.map +1 -1
  201. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +5 -5
  202. package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
  203. package/lib/cjs/render/webgl/glsl/PlanarGrid.js +1 -1
  204. package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
  205. package/lib/cjs/render/webgl/glsl/PointCloud.js +2 -3
  206. package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
  207. package/lib/cjs/render/webgl/glsl/PointString.js +2 -3
  208. package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
  209. package/lib/cjs/render/webgl/glsl/Polyline.js +6 -6
  210. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  211. package/lib/cjs/render/webgl/glsl/RealityMesh.js +5 -5
  212. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  213. package/lib/cjs/render/webgl/glsl/RenderPass.js +1 -2
  214. package/lib/cjs/render/webgl/glsl/RenderPass.js.map +1 -1
  215. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +1 -2
  216. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  217. package/lib/cjs/render/webgl/glsl/SkyBox.js +1 -2
  218. package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
  219. package/lib/cjs/render/webgl/glsl/SkySphere.js +1 -2
  220. package/lib/cjs/render/webgl/glsl/SkySphere.js.map +1 -1
  221. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +3 -3
  222. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  223. package/lib/cjs/render/webgl/glsl/Surface.js +6 -6
  224. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  225. package/lib/cjs/render/webgl/glsl/Thematic.js +2 -3
  226. package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
  227. package/lib/cjs/render/webgl/glsl/Translucency.js +2 -2
  228. package/lib/cjs/render/webgl/glsl/Translucency.js.map +1 -1
  229. package/lib/cjs/render/webgl/glsl/Vertex.js +13 -13
  230. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  231. package/lib/cjs/render/webgl/glsl/Viewport.js +3 -4
  232. package/lib/cjs/render/webgl/glsl/Viewport.js.map +1 -1
  233. package/lib/cjs/render/webgl/glsl/ViewportQuad.js +1 -2
  234. package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
  235. package/lib/cjs/render/webgl/glsl/Wiremesh.js +1 -2
  236. package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -1
  237. package/lib/cjs/request/Request.d.ts.map +1 -1
  238. package/lib/cjs/request/Request.js +2 -2
  239. package/lib/cjs/request/Request.js.map +1 -1
  240. package/lib/cjs/request/utils.js +3 -4
  241. package/lib/cjs/request/utils.js.map +1 -1
  242. package/lib/cjs/tile/ClassifierTileTree.js +2 -2
  243. package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
  244. package/lib/cjs/tile/GltfReader.js +4 -4
  245. package/lib/cjs/tile/GltfReader.js.map +1 -1
  246. package/lib/cjs/tile/IModelTile.js +2 -2
  247. package/lib/cjs/tile/IModelTile.js.map +1 -1
  248. package/lib/cjs/tile/IModelTileTree.js +2 -2
  249. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  250. package/lib/cjs/tile/ImdlDecoder.js +1 -2
  251. package/lib/cjs/tile/ImdlDecoder.js.map +1 -1
  252. package/lib/cjs/tile/ImdlGraphicsCreator.js +3 -4
  253. package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -1
  254. package/lib/cjs/tile/ImdlParser.js +1 -2
  255. package/lib/cjs/tile/ImdlParser.js.map +1 -1
  256. package/lib/cjs/tile/ImdlReader.js +3 -3
  257. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  258. package/lib/cjs/tile/MeshoptCompression.js +1 -2
  259. package/lib/cjs/tile/MeshoptCompression.js.map +1 -1
  260. package/lib/cjs/tile/OrbitGtTileTree.js +2 -2
  261. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  262. package/lib/cjs/tile/PntsReader.js +1 -2
  263. package/lib/cjs/tile/PntsReader.js.map +1 -1
  264. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  265. package/lib/cjs/tile/PrimaryTileTree.js +6 -6
  266. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  267. package/lib/cjs/tile/RealityModelTileTree.js +2 -2
  268. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  269. package/lib/cjs/tile/RealityTileDrawArgs.d.ts.map +1 -1
  270. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  271. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  272. package/lib/cjs/tile/RenderGraphicTileTree.js +1 -2
  273. package/lib/cjs/tile/RenderGraphicTileTree.js.map +1 -1
  274. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  275. package/lib/cjs/tile/Tile.js +2 -2
  276. package/lib/cjs/tile/Tile.js.map +1 -1
  277. package/lib/cjs/tile/TileAdmin.js +2 -2
  278. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  279. package/lib/cjs/tile/TileRequestChannel.js +1 -1
  280. package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
  281. package/lib/cjs/tile/ViewFlagOverrides.js +1 -2
  282. package/lib/cjs/tile/ViewFlagOverrides.js.map +1 -1
  283. package/lib/cjs/tile/map/CesiumTerrainProvider.js +4 -5
  284. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  285. package/lib/cjs/tile/map/ImageryProviders/CoordinatesUtils.js +1 -2
  286. package/lib/cjs/tile/map/ImageryProviders/CoordinatesUtils.js.map +1 -1
  287. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  288. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  289. package/lib/cjs/tile/map/MapLayerTileTreeReference.js +2 -2
  290. package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
  291. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  292. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  293. package/lib/cjs/tile/map/MapTileTree.js +2 -2
  294. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  295. package/lib/cjs/tile/map/UrlUtils.js +1 -2
  296. package/lib/cjs/tile/map/UrlUtils.js.map +1 -1
  297. package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
  298. package/lib/cjs/tools/ClipViewTool.d.ts.map +1 -1
  299. package/lib/cjs/tools/Tool.d.ts +1 -1
  300. package/lib/cjs/tools/Tool.d.ts.map +1 -1
  301. package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
  302. package/lib/cjs/tools/ViewTool.js +2 -2
  303. package/lib/cjs/tools/ViewTool.js.map +1 -1
  304. package/lib/cjs/workers/RegisterWorker.js +1 -2
  305. package/lib/cjs/workers/RegisterWorker.js.map +1 -1
  306. package/lib/esm/AccuDraw.js +2 -2
  307. package/lib/esm/AccuDraw.js.map +1 -1
  308. package/lib/esm/AccuSnap.d.ts.map +1 -1
  309. package/lib/esm/AccuSnap.js +7 -2
  310. package/lib/esm/AccuSnap.js.map +1 -1
  311. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  312. package/lib/esm/BriefcaseTxns.d.ts.map +1 -1
  313. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  314. package/lib/esm/DrawingViewState.d.ts +3 -3
  315. package/lib/esm/DrawingViewState.d.ts.map +1 -1
  316. package/lib/esm/DrawingViewState.js +9 -8
  317. package/lib/esm/DrawingViewState.js.map +1 -1
  318. package/lib/esm/GraphicalEditingScope.d.ts.map +1 -1
  319. package/lib/esm/HitDetail.d.ts +36 -7
  320. package/lib/esm/HitDetail.d.ts.map +1 -1
  321. package/lib/esm/HitDetail.js +11 -3
  322. package/lib/esm/HitDetail.js.map +1 -1
  323. package/lib/esm/IModelApp.d.ts.map +1 -1
  324. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  325. package/lib/esm/NotificationManager.d.ts +2 -2
  326. package/lib/esm/NotificationManager.d.ts.map +1 -1
  327. package/lib/esm/SheetViewState.d.ts +3 -3
  328. package/lib/esm/SheetViewState.d.ts.map +1 -1
  329. package/lib/esm/SheetViewState.js +18 -5
  330. package/lib/esm/SheetViewState.js.map +1 -1
  331. package/lib/esm/ViewState.d.ts +16 -7
  332. package/lib/esm/ViewState.d.ts.map +1 -1
  333. package/lib/esm/ViewState.js +4 -4
  334. package/lib/esm/ViewState.js.map +1 -1
  335. package/lib/esm/Viewport.d.ts.map +1 -1
  336. package/lib/esm/Viewport.js +1 -0
  337. package/lib/esm/Viewport.js.map +1 -1
  338. package/lib/esm/common/internal/render/GeometryList.d.ts +1 -1
  339. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  340. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.d.ts.map +1 -1
  341. package/lib/esm/render/GraphicBranch.d.ts +3 -1
  342. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  343. package/lib/esm/render/GraphicBranch.js.map +1 -1
  344. package/lib/esm/render/MockRender.d.ts.map +1 -1
  345. package/lib/esm/render/Pixel.d.ts +9 -7
  346. package/lib/esm/render/Pixel.d.ts.map +1 -1
  347. package/lib/esm/render/Pixel.js +20 -5
  348. package/lib/esm/render/Pixel.js.map +1 -1
  349. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  350. package/lib/esm/render/webgl/BranchState.d.ts +2 -0
  351. package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
  352. package/lib/esm/render/webgl/BranchState.js +2 -0
  353. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  354. package/lib/esm/render/webgl/Graphic.d.ts +3 -0
  355. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  356. package/lib/esm/render/webgl/Graphic.js +4 -0
  357. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  358. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  359. package/lib/esm/render/webgl/SceneCompositor.js +4 -1
  360. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  361. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  362. package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
  363. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  364. package/lib/esm/request/Request.d.ts.map +1 -1
  365. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  366. package/lib/esm/tile/RealityTileDrawArgs.d.ts.map +1 -1
  367. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  368. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  369. package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  370. package/lib/esm/tile/TileRequestChannel.js +1 -1
  371. package/lib/esm/tile/TileRequestChannel.js.map +1 -1
  372. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  373. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  374. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  375. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  376. package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
  377. package/lib/esm/tools/ClipViewTool.d.ts.map +1 -1
  378. package/lib/esm/tools/Tool.d.ts +1 -1
  379. package/lib/esm/tools/Tool.d.ts.map +1 -1
  380. package/lib/esm/tools/ViewTool.d.ts.map +1 -1
  381. package/lib/esm/tools/ViewTool.js +2 -2
  382. package/lib/esm/tools/ViewTool.js.map +1 -1
  383. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  384. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  385. package/package.json +18 -18
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.freeDrawParams = exports.getDrawParams = void 0;
3
+ exports.getDrawParams = getDrawParams;
4
+ exports.freeDrawParams = freeDrawParams;
4
5
  const DrawCommand_1 = require("./DrawCommand");
5
6
  let progParams;
6
7
  let drawParams;
@@ -14,11 +15,9 @@ function getDrawParams(target, geometry) {
14
15
  drawParams.init(progParams, geometry);
15
16
  return drawParams;
16
17
  }
17
- exports.getDrawParams = getDrawParams;
18
18
  /** @internal */
19
19
  function freeDrawParams() {
20
20
  progParams = undefined;
21
21
  drawParams = undefined;
22
22
  }
23
- exports.freeDrawParams = freeDrawParams;
24
23
  //# sourceMappingURL=ScratchDrawParams.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScratchDrawParams.js","sourceRoot":"","sources":["../../../../src/render/webgl/ScratchDrawParams.ts"],"names":[],"mappings":";;;AAKA,+CAAgE;AAGhE,IAAI,UAA2C,CAAC;AAChD,IAAI,UAAkC,CAAC;AAEvC,gBAAgB;AAChB,SAAgB,aAAa,CAAC,MAAc,EAAE,QAAwB;IACpE,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;QAC7B,UAAU,GAAG,IAAI,iCAAmB,EAAE,CAAC;QACvC,UAAU,GAAG,IAAI,wBAAU,EAAE,CAAC;IAChC,CAAC;IAED,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxB,UAAW,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACvC,OAAO,UAAW,CAAC;AACrB,CAAC;AATD,sCASC;AAED,gBAAgB;AAChB,SAAgB,cAAc;IAC5B,UAAU,GAAG,SAAS,CAAC;IACvB,UAAU,GAAG,SAAS,CAAC;AACzB,CAAC;AAHD,wCAGC","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\nimport { CachedGeometry } from \"./CachedGeometry\";\r\nimport { DrawParams, ShaderProgramParams } from \"./DrawCommand\";\r\nimport { Target } from \"./Target\";\r\n\r\nlet progParams: ShaderProgramParams | undefined;\r\nlet drawParams: DrawParams | undefined;\r\n\r\n/** @internal */\r\nexport function getDrawParams(target: Target, geometry: CachedGeometry): DrawParams {\r\n if (undefined === progParams) {\r\n progParams = new ShaderProgramParams();\r\n drawParams = new DrawParams();\r\n }\r\n\r\n progParams.init(target);\r\n drawParams!.init(progParams, geometry);\r\n return drawParams!;\r\n}\r\n\r\n/** @internal */\r\nexport function freeDrawParams(): void {\r\n progParams = undefined;\r\n drawParams = undefined;\r\n}\r\n"]}
1
+ {"version":3,"file":"ScratchDrawParams.js","sourceRoot":"","sources":["../../../../src/render/webgl/ScratchDrawParams.ts"],"names":[],"mappings":";;AAYA,sCASC;AAGD,wCAGC;AAtBD,+CAAgE;AAGhE,IAAI,UAA2C,CAAC;AAChD,IAAI,UAAkC,CAAC;AAEvC,gBAAgB;AAChB,SAAgB,aAAa,CAAC,MAAc,EAAE,QAAwB;IACpE,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;QAC7B,UAAU,GAAG,IAAI,iCAAmB,EAAE,CAAC;QACvC,UAAU,GAAG,IAAI,wBAAU,EAAE,CAAC;IAChC,CAAC;IAED,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxB,UAAW,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACvC,OAAO,UAAW,CAAC;AACrB,CAAC;AAED,gBAAgB;AAChB,SAAgB,cAAc;IAC5B,UAAU,GAAG,SAAS,CAAC;IACvB,UAAU,GAAG,SAAS,CAAC;AACzB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { CachedGeometry } from \"./CachedGeometry\";\r\nimport { DrawParams, ShaderProgramParams } from \"./DrawCommand\";\r\nimport { Target } from \"./Target\";\r\n\r\nlet progParams: ShaderProgramParams | undefined;\r\nlet drawParams: DrawParams | undefined;\r\n\r\n/** @internal */\r\nexport function getDrawParams(target: Target, geometry: CachedGeometry): DrawParams {\r\n if (undefined === progParams) {\r\n progParams = new ShaderProgramParams();\r\n drawParams = new DrawParams();\r\n }\r\n\r\n progParams.init(target);\r\n drawParams!.init(progParams, geometry);\r\n return drawParams!;\r\n}\r\n\r\n/** @internal */\r\nexport function freeDrawParams(): void {\r\n progParams = undefined;\r\n drawParams = undefined;\r\n}\r\n"]}
@@ -7,7 +7,8 @@
7
7
  * @module WebGL
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.createScreenSpaceEffectBuilder = exports.ScreenSpaceEffects = void 0;
10
+ exports.ScreenSpaceEffects = void 0;
11
+ exports.createScreenSpaceEffectBuilder = createScreenSpaceEffectBuilder;
11
12
  const core_bentley_1 = require("@itwin/core-bentley");
12
13
  const ScreenSpaceEffectBuilder_1 = require("../ScreenSpaceEffectBuilder");
13
14
  const RenderState_1 = require("./RenderState");
@@ -194,5 +195,4 @@ exports.ScreenSpaceEffects = ScreenSpaceEffects;
194
195
  function createScreenSpaceEffectBuilder(params) {
195
196
  return new Builder(params);
196
197
  }
197
- exports.createScreenSpaceEffectBuilder = createScreenSpaceEffectBuilder;
198
198
  //# sourceMappingURL=ScreenSpaceEffect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScreenSpaceEffect.js","sourceRoot":"","sources":["../../../../src/render/webgl/ScreenSpaceEffect.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport {\r\n ScreenSpaceEffectBuilder, ScreenSpaceEffectBuilderParams, ScreenSpaceEffectContext, UniformArrayParams, UniformParams, UniformType, VaryingType,\r\n} from \"../ScreenSpaceEffectBuilder\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { ProgramBuilder, VariableType } from \"./ShaderBuilder\";\r\nimport { CompileStatus, ShaderProgram } from \"./ShaderProgram\";\r\nimport { RenderState } from \"./RenderState\";\r\nimport { SingleTexturedViewportQuadGeometry, ViewportQuadGeometry } from \"./CachedGeometry\";\r\nimport { FrameBuffer } from \"./FrameBuffer\";\r\nimport { getDrawParams } from \"./ScratchDrawParams\";\r\nimport { SingularTechnique } from \"./Technique\";\r\nimport { Target } from \"./Target\";\r\nimport { System } from \"./System\";\r\nimport { createScreenSpaceEffectProgramBuilder } from \"./glsl/ScreenSpaceEffect\";\r\n\r\ntype ShouldApply = (context: ScreenSpaceEffectContext) => boolean;\r\n\r\nfunction getUniformVariableType(type: UniformType): VariableType {\r\n switch (type) {\r\n case UniformType.Bool: return VariableType.Boolean;\r\n case UniformType.Int: return VariableType.Int;\r\n case UniformType.Float: return VariableType.Float;\r\n case UniformType.Vec2: return VariableType.Vec2;\r\n case UniformType.Vec3: return VariableType.Vec3;\r\n case UniformType.Vec4: return VariableType.Vec4;\r\n }\r\n}\r\n\r\nfunction getVaryingVariableType(type: VaryingType): VariableType {\r\n switch (type) {\r\n case VaryingType.Float: return VariableType.Float;\r\n case VaryingType.Vec2: return VariableType.Vec2;\r\n case VaryingType.Vec3: return VariableType.Vec3;\r\n case VaryingType.Vec4: return VariableType.Vec4;\r\n }\r\n}\r\n\r\nclass Builder {\r\n private readonly _name: string;\r\n private readonly _builder: ProgramBuilder;\r\n private readonly _shiftsPixels: boolean;\r\n public shouldApply?: ShouldApply;\r\n\r\n public constructor(params: ScreenSpaceEffectBuilderParams) {\r\n this._name = params.name;\r\n this._builder = createScreenSpaceEffectProgramBuilder(params);\r\n this._builder.setDebugDescription(`Screen-space: ${this._name}`);\r\n this._shiftsPixels = undefined !== params.source.sampleSourcePixel;\r\n }\r\n\r\n public get isWebGL2(): boolean {\r\n return true;\r\n }\r\n\r\n public addUniform(params: UniformParams): void {\r\n const name = params.name;\r\n const type = getUniformVariableType(params.type);\r\n const bind = params.bind;\r\n\r\n this._builder.addUniform(name, type, (prog: ShaderProgram) => {\r\n prog.addProgramUniform(name, (uniform, progParams) => {\r\n bind(uniform, progParams.target.screenSpaceEffectContext);\r\n });\r\n });\r\n }\r\n\r\n public addUniformArray(params: UniformArrayParams): void {\r\n const { name, bind, length } = { ...params };\r\n const type = getUniformVariableType(params.type);\r\n this._builder.addUniformArray(name, type, length, (prog) => {\r\n prog.addProgramUniform(name, (uniform, progParams) => {\r\n bind(uniform, progParams.target.screenSpaceEffectContext);\r\n });\r\n });\r\n }\r\n\r\n public addVarying(name: string, type: VaryingType): void {\r\n this._builder.addVarying(name, getVaryingVariableType(type));\r\n }\r\n\r\n public finish(): void {\r\n const program = this._builder.buildProgram(System.instance.context);\r\n\r\n // NB: compile() will throw with WebGL error log if compile/link fails.\r\n if (CompileStatus.Success !== program.compile())\r\n throw new Error(`Failed to produce shader program for screen-space effect \"${this._name}\"`);\r\n\r\n const technique = new SingularTechnique(program);\r\n const techniqueId = System.instance.techniques.addDynamicTechnique(technique, this._name);\r\n\r\n const effect = new ScreenSpaceEffect(techniqueId, this._name, this._shiftsPixels, this.shouldApply);\r\n System.instance.screenSpaceEffects.add(effect);\r\n }\r\n}\r\n\r\nclass ScreenSpaceEffect {\r\n public readonly techniqueId: TechniqueId;\r\n public readonly name: string;\r\n private readonly _shouldApply?: ShouldApply;\r\n private readonly _shiftsPixels: boolean;\r\n\r\n public constructor(techniqueId: TechniqueId, name: string, shiftsPixels: boolean, shouldApply?: ShouldApply) {\r\n this.techniqueId = techniqueId;\r\n this.name = name;\r\n this._shouldApply = shouldApply;\r\n this._shiftsPixels = shiftsPixels;\r\n }\r\n\r\n public shouldApply(target: Target): boolean {\r\n // Effects only apply during readPixels() if they move pixels around (we need to move pixels in the pick buffers correspondingly).\r\n if (target.isReadPixelsInProgress && !this._shiftsPixels)\r\n return false;\r\n\r\n return undefined === this._shouldApply || this._shouldApply(target.screenSpaceEffectContext);\r\n }\r\n}\r\n\r\nclass ScreenSpaceGeometry extends ViewportQuadGeometry {\r\n public setTechniqueId(id: TechniqueId) {\r\n this._techniqueId = id;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ScreenSpaceEffects {\r\n private readonly _effects = new Map<string, ScreenSpaceEffect>();\r\n private readonly _effectGeometry: ScreenSpaceGeometry;\r\n private readonly _copyGeometry: SingleTexturedViewportQuadGeometry;\r\n private readonly _workingArray: ScreenSpaceEffect[] = [];\r\n\r\n public constructor() {\r\n // We will change the geometry's TechniqueId before applying each technique.\r\n const effectGeometry = ScreenSpaceGeometry.create(TechniqueId.Invalid);\r\n assert(effectGeometry instanceof ScreenSpaceGeometry);\r\n this._effectGeometry = effectGeometry;\r\n\r\n // NB: We'll replace the texture each time we draw.\r\n const copyGeometry = SingleTexturedViewportQuadGeometry.createGeometry(System.instance.lineCodeTexture!.getHandle()!, TechniqueId.CopyColor);\r\n assert(undefined !== copyGeometry);\r\n this._copyGeometry = copyGeometry;\r\n }\r\n\r\n public dispose(): void {\r\n dispose(this._effectGeometry);\r\n dispose(this._copyGeometry);\r\n }\r\n\r\n public add(effect: ScreenSpaceEffect): void {\r\n if (undefined !== this._effects.get(effect.name))\r\n throw new Error(`Screen-space effect \"${effect.name}\" is already registered.`);\r\n\r\n this._effects.set(effect.name, effect);\r\n }\r\n\r\n /** Return true if any effects should be applied to this Target. */\r\n public shouldApply(target: Target): boolean {\r\n return this.getApplicableEffects(target).length > 0;\r\n }\r\n\r\n private getApplicableEffects(target: Target): ScreenSpaceEffect[] {\r\n const effects = this._workingArray;\r\n effects.length = 0;\r\n\r\n const names = target.screenSpaceEffects;\r\n for (const name of names) {\r\n const effect = this._effects.get(name);\r\n if (effect && effect.shouldApply(target))\r\n effects.push(effect);\r\n }\r\n\r\n return effects;\r\n }\r\n\r\n /** Apply screen-space effects to the Target's rendered image. */\r\n public apply(target: Target): void {\r\n if (0 === this._effects.size)\r\n return;\r\n\r\n const effects = this.getApplicableEffects(target);\r\n if (0 === effects.length)\r\n return;\r\n\r\n if (target.isReadPixelsInProgress) {\r\n this.applyForReadPixels(effects, target);\r\n return;\r\n }\r\n\r\n const system = System.instance;\r\n system.applyRenderState(RenderState.defaults);\r\n\r\n const copyFbo = target.compositor.screenSpaceEffectFbo;\r\n for (const effect of effects) {\r\n // Copy the rendered image to texture as input to the effect shader.\r\n this._copyGeometry.texture = system.frameBufferStack.currentColorBuffer!.getHandle()!;\r\n system.frameBufferStack.execute(copyFbo, true, false, () => {\r\n const copyParams = getDrawParams(target, this._copyGeometry);\r\n system.techniques.draw(copyParams);\r\n });\r\n\r\n // Run the effect shader with a copy of the current image as input.\r\n this._effectGeometry.setTechniqueId(effect.techniqueId);\r\n const params = getDrawParams(target, this._effectGeometry);\r\n system.techniques.draw(params);\r\n }\r\n }\r\n\r\n private applyForReadPixels(effects: ScreenSpaceEffect[], target: Target): void {\r\n const system = System.instance;\r\n system.applyRenderState(RenderState.defaults);\r\n\r\n // ###TODO: We could use MRT if available here rather than two passes.\r\n const copyFbo = target.compositor.screenSpaceEffectFbo;\r\n for (const effect of effects) {\r\n this._effectGeometry.setTechniqueId(effect.techniqueId);\r\n for (let i = 0; i <= 1; i++) {\r\n // Copy the pick buffer as input to the effect shader.\r\n const buffer = 0 === i ? target.compositor.featureIds : target.compositor.depthAndOrder;\r\n this._copyGeometry.texture = buffer.getHandle()!;\r\n system.frameBufferStack.execute(copyFbo, true, false, () => {\r\n const copyParams = getDrawParams(target, this._copyGeometry);\r\n system.techniques.draw(copyParams);\r\n });\r\n\r\n // Run the effect shader with a copy of the current pick buffer to output to pick buffer.\r\n // ###TODO: Avoid frequent framebuffer allocation.\r\n const effectFbo = FrameBuffer.create([buffer]);\r\n assert(undefined !== effectFbo);\r\n system.frameBufferStack.execute(effectFbo, true, false, () => {\r\n const effectParams = getDrawParams(target, this._effectGeometry);\r\n system.techniques.draw(effectParams);\r\n });\r\n\r\n effectFbo.dispose();\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport function createScreenSpaceEffectBuilder(params: ScreenSpaceEffectBuilderParams): ScreenSpaceEffectBuilder {\r\n return new Builder(params);\r\n}\r\n"]}
1
+ {"version":3,"file":"ScreenSpaceEffect.js","sourceRoot":"","sources":["../../../../src/render/webgl/ScreenSpaceEffect.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport {\r\n ScreenSpaceEffectBuilder, ScreenSpaceEffectBuilderParams, ScreenSpaceEffectContext, UniformArrayParams, UniformParams, UniformType, VaryingType,\r\n} from \"../ScreenSpaceEffectBuilder\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { ProgramBuilder, VariableType } from \"./ShaderBuilder\";\r\nimport { CompileStatus, ShaderProgram } from \"./ShaderProgram\";\r\nimport { RenderState } from \"./RenderState\";\r\nimport { SingleTexturedViewportQuadGeometry, ViewportQuadGeometry } from \"./CachedGeometry\";\r\nimport { FrameBuffer } from \"./FrameBuffer\";\r\nimport { getDrawParams } from \"./ScratchDrawParams\";\r\nimport { SingularTechnique } from \"./Technique\";\r\nimport { Target } from \"./Target\";\r\nimport { System } from \"./System\";\r\nimport { createScreenSpaceEffectProgramBuilder } from \"./glsl/ScreenSpaceEffect\";\r\n\r\ntype ShouldApply = (context: ScreenSpaceEffectContext) => boolean;\r\n\r\nfunction getUniformVariableType(type: UniformType): VariableType {\r\n switch (type) {\r\n case UniformType.Bool: return VariableType.Boolean;\r\n case UniformType.Int: return VariableType.Int;\r\n case UniformType.Float: return VariableType.Float;\r\n case UniformType.Vec2: return VariableType.Vec2;\r\n case UniformType.Vec3: return VariableType.Vec3;\r\n case UniformType.Vec4: return VariableType.Vec4;\r\n }\r\n}\r\n\r\nfunction getVaryingVariableType(type: VaryingType): VariableType {\r\n switch (type) {\r\n case VaryingType.Float: return VariableType.Float;\r\n case VaryingType.Vec2: return VariableType.Vec2;\r\n case VaryingType.Vec3: return VariableType.Vec3;\r\n case VaryingType.Vec4: return VariableType.Vec4;\r\n }\r\n}\r\n\r\nclass Builder {\r\n private readonly _name: string;\r\n private readonly _builder: ProgramBuilder;\r\n private readonly _shiftsPixels: boolean;\r\n public shouldApply?: ShouldApply;\r\n\r\n public constructor(params: ScreenSpaceEffectBuilderParams) {\r\n this._name = params.name;\r\n this._builder = createScreenSpaceEffectProgramBuilder(params);\r\n this._builder.setDebugDescription(`Screen-space: ${this._name}`);\r\n this._shiftsPixels = undefined !== params.source.sampleSourcePixel;\r\n }\r\n\r\n public get isWebGL2(): boolean {\r\n return true;\r\n }\r\n\r\n public addUniform(params: UniformParams): void {\r\n const name = params.name;\r\n const type = getUniformVariableType(params.type);\r\n const bind = params.bind;\r\n\r\n this._builder.addUniform(name, type, (prog: ShaderProgram) => {\r\n prog.addProgramUniform(name, (uniform, progParams) => {\r\n bind(uniform, progParams.target.screenSpaceEffectContext);\r\n });\r\n });\r\n }\r\n\r\n public addUniformArray(params: UniformArrayParams): void {\r\n const { name, bind, length } = { ...params };\r\n const type = getUniformVariableType(params.type);\r\n this._builder.addUniformArray(name, type, length, (prog) => {\r\n prog.addProgramUniform(name, (uniform, progParams) => {\r\n bind(uniform, progParams.target.screenSpaceEffectContext);\r\n });\r\n });\r\n }\r\n\r\n public addVarying(name: string, type: VaryingType): void {\r\n this._builder.addVarying(name, getVaryingVariableType(type));\r\n }\r\n\r\n public finish(): void {\r\n const program = this._builder.buildProgram(System.instance.context);\r\n\r\n // NB: compile() will throw with WebGL error log if compile/link fails.\r\n if (CompileStatus.Success !== program.compile())\r\n throw new Error(`Failed to produce shader program for screen-space effect \"${this._name}\"`);\r\n\r\n const technique = new SingularTechnique(program);\r\n const techniqueId = System.instance.techniques.addDynamicTechnique(technique, this._name);\r\n\r\n const effect = new ScreenSpaceEffect(techniqueId, this._name, this._shiftsPixels, this.shouldApply);\r\n System.instance.screenSpaceEffects.add(effect);\r\n }\r\n}\r\n\r\nclass ScreenSpaceEffect {\r\n public readonly techniqueId: TechniqueId;\r\n public readonly name: string;\r\n private readonly _shouldApply?: ShouldApply;\r\n private readonly _shiftsPixels: boolean;\r\n\r\n public constructor(techniqueId: TechniqueId, name: string, shiftsPixels: boolean, shouldApply?: ShouldApply) {\r\n this.techniqueId = techniqueId;\r\n this.name = name;\r\n this._shouldApply = shouldApply;\r\n this._shiftsPixels = shiftsPixels;\r\n }\r\n\r\n public shouldApply(target: Target): boolean {\r\n // Effects only apply during readPixels() if they move pixels around (we need to move pixels in the pick buffers correspondingly).\r\n if (target.isReadPixelsInProgress && !this._shiftsPixels)\r\n return false;\r\n\r\n return undefined === this._shouldApply || this._shouldApply(target.screenSpaceEffectContext);\r\n }\r\n}\r\n\r\nclass ScreenSpaceGeometry extends ViewportQuadGeometry {\r\n public setTechniqueId(id: TechniqueId) {\r\n this._techniqueId = id;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ScreenSpaceEffects {\r\n private readonly _effects = new Map<string, ScreenSpaceEffect>();\r\n private readonly _effectGeometry: ScreenSpaceGeometry;\r\n private readonly _copyGeometry: SingleTexturedViewportQuadGeometry;\r\n private readonly _workingArray: ScreenSpaceEffect[] = [];\r\n\r\n public constructor() {\r\n // We will change the geometry's TechniqueId before applying each technique.\r\n const effectGeometry = ScreenSpaceGeometry.create(TechniqueId.Invalid);\r\n assert(effectGeometry instanceof ScreenSpaceGeometry);\r\n this._effectGeometry = effectGeometry;\r\n\r\n // NB: We'll replace the texture each time we draw.\r\n const copyGeometry = SingleTexturedViewportQuadGeometry.createGeometry(System.instance.lineCodeTexture!.getHandle()!, TechniqueId.CopyColor);\r\n assert(undefined !== copyGeometry);\r\n this._copyGeometry = copyGeometry;\r\n }\r\n\r\n public dispose(): void {\r\n dispose(this._effectGeometry);\r\n dispose(this._copyGeometry);\r\n }\r\n\r\n public add(effect: ScreenSpaceEffect): void {\r\n if (undefined !== this._effects.get(effect.name))\r\n throw new Error(`Screen-space effect \"${effect.name}\" is already registered.`);\r\n\r\n this._effects.set(effect.name, effect);\r\n }\r\n\r\n /** Return true if any effects should be applied to this Target. */\r\n public shouldApply(target: Target): boolean {\r\n return this.getApplicableEffects(target).length > 0;\r\n }\r\n\r\n private getApplicableEffects(target: Target): ScreenSpaceEffect[] {\r\n const effects = this._workingArray;\r\n effects.length = 0;\r\n\r\n const names = target.screenSpaceEffects;\r\n for (const name of names) {\r\n const effect = this._effects.get(name);\r\n if (effect && effect.shouldApply(target))\r\n effects.push(effect);\r\n }\r\n\r\n return effects;\r\n }\r\n\r\n /** Apply screen-space effects to the Target's rendered image. */\r\n public apply(target: Target): void {\r\n if (0 === this._effects.size)\r\n return;\r\n\r\n const effects = this.getApplicableEffects(target);\r\n if (0 === effects.length)\r\n return;\r\n\r\n if (target.isReadPixelsInProgress) {\r\n this.applyForReadPixels(effects, target);\r\n return;\r\n }\r\n\r\n const system = System.instance;\r\n system.applyRenderState(RenderState.defaults);\r\n\r\n const copyFbo = target.compositor.screenSpaceEffectFbo;\r\n for (const effect of effects) {\r\n // Copy the rendered image to texture as input to the effect shader.\r\n this._copyGeometry.texture = system.frameBufferStack.currentColorBuffer!.getHandle()!;\r\n system.frameBufferStack.execute(copyFbo, true, false, () => {\r\n const copyParams = getDrawParams(target, this._copyGeometry);\r\n system.techniques.draw(copyParams);\r\n });\r\n\r\n // Run the effect shader with a copy of the current image as input.\r\n this._effectGeometry.setTechniqueId(effect.techniqueId);\r\n const params = getDrawParams(target, this._effectGeometry);\r\n system.techniques.draw(params);\r\n }\r\n }\r\n\r\n private applyForReadPixels(effects: ScreenSpaceEffect[], target: Target): void {\r\n const system = System.instance;\r\n system.applyRenderState(RenderState.defaults);\r\n\r\n // ###TODO: We could use MRT if available here rather than two passes.\r\n const copyFbo = target.compositor.screenSpaceEffectFbo;\r\n for (const effect of effects) {\r\n this._effectGeometry.setTechniqueId(effect.techniqueId);\r\n for (let i = 0; i <= 1; i++) {\r\n // Copy the pick buffer as input to the effect shader.\r\n const buffer = 0 === i ? target.compositor.featureIds : target.compositor.depthAndOrder;\r\n this._copyGeometry.texture = buffer.getHandle()!;\r\n system.frameBufferStack.execute(copyFbo, true, false, () => {\r\n const copyParams = getDrawParams(target, this._copyGeometry);\r\n system.techniques.draw(copyParams);\r\n });\r\n\r\n // Run the effect shader with a copy of the current pick buffer to output to pick buffer.\r\n // ###TODO: Avoid frequent framebuffer allocation.\r\n const effectFbo = FrameBuffer.create([buffer]);\r\n assert(undefined !== effectFbo);\r\n system.frameBufferStack.execute(effectFbo, true, false, () => {\r\n const effectParams = getDrawParams(target, this._effectGeometry);\r\n system.techniques.draw(effectParams);\r\n });\r\n\r\n effectFbo.dispose();\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport function createScreenSpaceEffectBuilder(params: ScreenSpaceEffectBuilderParams): ScreenSpaceEffectBuilder {\r\n return new Builder(params);\r\n}\r\n"]}
@@ -7,7 +7,8 @@
7
7
  * @module WebGL
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.SurfaceGeometry = exports.wantMaterials = void 0;
10
+ exports.SurfaceGeometry = void 0;
11
+ exports.wantMaterials = wantMaterials;
11
12
  const core_bentley_1 = require("@itwin/core-bentley");
12
13
  const core_common_1 = require("@itwin/core-common");
13
14
  const SurfaceParams_1 = require("../../common/internal/render/SurfaceParams");
@@ -20,7 +21,6 @@ const MeshGeometry_1 = require("./MeshGeometry");
20
21
  function wantMaterials(vf) {
21
22
  return vf.materials && core_common_1.RenderMode.SmoothShade === vf.renderMode;
22
23
  }
23
- exports.wantMaterials = wantMaterials;
24
24
  function wantLighting(vf) {
25
25
  return core_common_1.RenderMode.SmoothShade === vf.renderMode && vf.lighting;
26
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SurfaceGeometry.js","sourceRoot":"","sources":["../../../../src/render/webgl/SurfaceGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { FillFlags, RenderMode, TextureTransparency, ThematicGradientTransparencyMode, ViewFlags } from \"@itwin/core-common\";\r\nimport { SurfaceType } from \"../../common/internal/render/SurfaceParams\";\r\nimport { VertexIndices } from \"../../common/internal/render/VertexIndices\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { ShaderProgramParams } from \"./DrawCommand\";\r\nimport { GL } from \"./GL\";\r\nimport { BufferHandle, BufferParameters, BuffersContainer } from \"./AttributeBuffers\";\r\nimport { MaterialInfo } from \"./Material\";\r\nimport { Pass, RenderOrder, RenderPass, SurfaceBitIndex } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { MeshData } from \"./MeshData\";\r\nimport { MeshGeometry } from \"./MeshGeometry\";\r\n\r\n/** @internal */\r\nexport function wantMaterials(vf: ViewFlags): boolean {\r\n return vf.materials && RenderMode.SmoothShade === vf.renderMode;\r\n}\r\n\r\nfunction wantLighting(vf: ViewFlags) {\r\n return RenderMode.SmoothShade === vf.renderMode && vf.lighting;\r\n}\r\n\r\n/** @internal */\r\nexport class SurfaceGeometry extends MeshGeometry {\r\n private readonly _buffers: BuffersContainer;\r\n private readonly _indices: BufferHandle;\r\n\r\n public get lutBuffers() { return this._buffers; }\r\n\r\n public static create(mesh: MeshData, indices: VertexIndices): SurfaceGeometry | undefined {\r\n const indexBuffer = BufferHandle.createArrayBuffer(indices.data);\r\n return undefined !== indexBuffer ? new SurfaceGeometry(indexBuffer, indices.length, mesh) : undefined;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._buffers.isDisposed\r\n && this._indices.isDisposed;\r\n }\r\n\r\n public dispose() {\r\n dispose(this._buffers);\r\n dispose(this._indices);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n stats.addSurface(this._indices.bytesUsed);\r\n }\r\n\r\n public get isLit() { return SurfaceType.Lit === this.surfaceType || SurfaceType.TexturedLit === this.surfaceType; }\r\n public get isTexturedType() { return SurfaceType.Textured === this.surfaceType || SurfaceType.TexturedLit === this.surfaceType; }\r\n public get hasTexture() { return this.isTexturedType && undefined !== this.texture; }\r\n public get hasNormalMap() { return this.isLit && this.isTexturedType && undefined !== this.normalMap; }\r\n public get isGlyph() { return this.mesh.isGlyph; }\r\n public override get alwaysRenderTranslucent() { return this.isGlyph; }\r\n public get isTileSection() { return undefined !== this.texture && this.texture.isTileSection; }\r\n public get isClassifier() { return SurfaceType.VolumeClassifier === this.surfaceType; }\r\n public override get supportsThematicDisplay() {\r\n return !this.isGlyph;\r\n }\r\n\r\n public override get allowColorOverride() {\r\n // Text background color should not be overridden by feature symbology overrides - otherwise it becomes unreadable...\r\n // We don't actually know if we have text.\r\n // We do know that text background color uses blanking fill. So do ImageGraphics, so they're also going to forbid overriding their color.\r\n return FillFlags.Blanking !== (this.fillFlags & FillFlags.Blanking);\r\n }\r\n\r\n public override get asSurface() { return this; }\r\n public override get asEdge() { return undefined; }\r\n public override get asSilhouette() { return undefined; }\r\n\r\n protected _draw(numInstances: number, instanceBuffersContainer?: BuffersContainer): void {\r\n const system = System.instance;\r\n\r\n // If we can't write depth in the fragment shader, use polygonOffset to force blanking regions to draw behind.\r\n const offset = RenderOrder.BlankingRegion === this.renderOrder && !system.supportsLogZBuffer;\r\n if (offset) {\r\n system.context.enable(GL.POLYGON_OFFSET_FILL);\r\n system.context.polygonOffset(1.0, 1.0);\r\n }\r\n\r\n const bufs = instanceBuffersContainer !== undefined ? instanceBuffersContainer : this._buffers;\r\n bufs.bind();\r\n system.drawArrays(GL.PrimitiveType.Triangles, 0, this._numIndices, numInstances);\r\n bufs.unbind();\r\n\r\n if (offset)\r\n system.context.disable(GL.POLYGON_OFFSET_FILL);\r\n }\r\n\r\n public override wantMixMonochromeColor(target: Target): boolean {\r\n // Text relies on white-on-white reversal.\r\n return !this.isGlyph && (this.isLitSurface || this.wantTextures(target, this.hasTexture));\r\n }\r\n\r\n public get techniqueId(): TechniqueId { return TechniqueId.Surface; }\r\n public override get isLitSurface() { return this.isLit; }\r\n public override get hasBakedLighting() { return this.mesh.hasBakedLighting; }\r\n public get renderOrder(): RenderOrder {\r\n if (FillFlags.Behind === (this.fillFlags & FillFlags.Behind))\r\n return RenderOrder.BlankingRegion;\r\n\r\n let order = this.isLit ? RenderOrder.LitSurface : RenderOrder.UnlitSurface;\r\n if (this.isPlanar)\r\n order = order | RenderOrder.PlanarBit;\r\n\r\n return order;\r\n }\r\n\r\n public override getColor(target: Target) {\r\n if (FillFlags.Background === (this.fillFlags & FillFlags.Background))\r\n return target.uniforms.style.backgroundColorInfo;\r\n else\r\n return this.colorInfo;\r\n }\r\n\r\n public override getPass(target: Target): Pass {\r\n // Classifiers have a dedicated pass\r\n if (this.isClassifier)\r\n return \"classification\";\r\n\r\n let opaquePass: Pass = this.isPlanar ? \"opaque-planar\" : \"opaque\";\r\n\r\n // When reading pixels, glyphs are always opaque. Otherwise always transparent (for anti-aliasing).\r\n if (this.isGlyph)\r\n return target.isReadPixelsInProgress ? opaquePass : \"translucent\";\r\n\r\n const vf = target.currentViewFlags;\r\n\r\n // When rendering thematic isolines, we need translucency because they have anti-aliasing.\r\n const thematic = target.wantThematicDisplay && this.supportsThematicDisplay ? target.uniforms.thematic.thematicDisplay : undefined;\r\n if (thematic && target.uniforms.thematic.wantIsoLines)\r\n return \"translucent\";\r\n\r\n // In wireframe, unless fill is explicitly enabled for planar region, surface does not draw\r\n if (RenderMode.Wireframe === vf.renderMode && !this.mesh.isTextureAlwaysDisplayed) {\r\n const fillFlags = this.fillFlags;\r\n const showFill = FillFlags.Always === (fillFlags & FillFlags.Always) || (vf.fill && FillFlags.ByView === (fillFlags & FillFlags.ByView));\r\n if (!showFill)\r\n return \"none\";\r\n }\r\n\r\n // If transparency disabled by render mode or view flag, always draw opaque.\r\n if (!vf.transparency || RenderMode.SolidFill === vf.renderMode || RenderMode.HiddenLine === vf.renderMode)\r\n return opaquePass;\r\n\r\n // A gradient texture applied by analysis style always fully determines the transparency of the surface.\r\n if (this.hasScalarAnimation && undefined !== target.analysisTexture) {\r\n assert(undefined !== target.analysisStyle?.thematic);\r\n switch (target.analysisStyle.thematic.thematicSettings.textureTransparency) {\r\n case TextureTransparency.Translucent:\r\n return \"translucent\";\r\n case TextureTransparency.Opaque:\r\n return opaquePass;\r\n case TextureTransparency.Mixed:\r\n return `${opaquePass}-translucent`;\r\n }\r\n }\r\n\r\n // We have 3 sources of alpha: the material, the texture, and the color.\r\n // Base alpha comes from the material if it overrides it; otherwise from the color.\r\n // The texture's alpha is multiplied by the base alpha.\r\n // So we must draw in the translucent pass if the texture has transparency OR the base alpha is less than 1.\r\n let hasAlpha = false;\r\n const mat = wantMaterials(vf) ? this.mesh.materialInfo : undefined;\r\n if (undefined !== mat && mat.overridesAlpha)\r\n hasAlpha = mat.hasTranslucency;\r\n else\r\n hasAlpha = this.getColor(target).hasTranslucency;\r\n\r\n // Thematic gradient can optionally multiply gradient alpha with surface alpha.\r\n if (thematic && thematic.gradientSettings.transparencyMode === ThematicGradientTransparencyMode.MultiplySurfaceAndGradient) {\r\n switch (thematic.gradientSettings.textureTransparency) {\r\n case TextureTransparency.Opaque:\r\n // This surface's alpha gets multiplied by 1 - gradient colors are all opaque.\r\n return hasAlpha ? \"translucent\" : opaquePass;\r\n case TextureTransparency.Translucent:\r\n // This surface's alpha gets multiplied by < 1 - gradient colors are all translucent.\r\n return \"translucent\";\r\n case TextureTransparency.Mixed:\r\n // The gradient contains a mix of translucent and opaque colors.\r\n return hasAlpha ? \"translucent\" : `${opaquePass}-translucent`;\r\n }\r\n }\r\n\r\n if (!hasAlpha) {\r\n const tex = this.wantTextures(target, true) ? this.texture : undefined;\r\n switch (tex?.transparency) {\r\n case TextureTransparency.Translucent:\r\n hasAlpha = true;\r\n break;\r\n case TextureTransparency.Mixed:\r\n opaquePass = `${opaquePass}-translucent`;\r\n break;\r\n }\r\n }\r\n\r\n return hasAlpha ? \"translucent\" : opaquePass;\r\n }\r\n\r\n protected _wantWoWReversal(target: Target): boolean {\r\n const fillFlags = this.fillFlags;\r\n if (FillFlags.None !== (fillFlags & FillFlags.Background))\r\n return false; // fill color explicitly from background\r\n\r\n if (FillFlags.None !== (fillFlags & FillFlags.Always))\r\n return true; // fill displayed even in wireframe\r\n\r\n const vf = target.currentViewFlags;\r\n if (RenderMode.Wireframe === vf.renderMode || vf.visibleEdges)\r\n return false; // never invert surfaces when edges are displayed\r\n\r\n if (this.isLit && wantLighting(vf))\r\n return false;\r\n\r\n // Don't invert white pixels of textures...\r\n return !this.wantTextures(target, this.hasTexture);\r\n }\r\n\r\n public override get materialInfo(): MaterialInfo | undefined { return this.mesh.materialInfo; }\r\n\r\n public useTexture(params: ShaderProgramParams): boolean {\r\n return this.wantTextures(params.target, this.hasTexture);\r\n }\r\n\r\n public useNormalMap(params: ShaderProgramParams): boolean {\r\n return this.wantNormalMaps(params.target, this.hasNormalMap);\r\n }\r\n\r\n public computeSurfaceFlags(params: ShaderProgramParams, flags: Int32Array): void {\r\n const target = params.target;\r\n const vf = target.currentViewFlags;\r\n\r\n const useMaterial = wantMaterials(vf);\r\n flags[SurfaceBitIndex.IgnoreMaterial] = useMaterial ? 0 : 1;\r\n flags[SurfaceBitIndex.HasMaterialAtlas] = useMaterial && this.hasMaterialAtlas ? 1 : 0;\r\n\r\n flags[SurfaceBitIndex.ApplyLighting] = 0;\r\n flags[SurfaceBitIndex.HasColorAndNormal] = 0;\r\n if (this.isLit) {\r\n flags[SurfaceBitIndex.HasNormals] = 1;\r\n if (wantLighting(vf))\r\n flags[SurfaceBitIndex.ApplyLighting] = 1;\r\n\r\n // Textured meshes store normal in place of color index.\r\n // Untextured lit meshes store normal where textured meshes would store UV coords.\r\n // Tell shader where to find normal.\r\n if (!this.isTexturedType) {\r\n flags[SurfaceBitIndex.HasColorAndNormal] = 1;\r\n }\r\n } else {\r\n flags[SurfaceBitIndex.HasNormals] = 0;\r\n }\r\n\r\n flags[SurfaceBitIndex.HasTexture] = this.useTexture(params) ? 1 : 0;\r\n flags[SurfaceBitIndex.HasNormalMap] = this.useNormalMap(params) ? 1 : 0;\r\n flags[SurfaceBitIndex.UseConstantLodTextureMapping] = this.mesh.textureUsesConstantLod ? 1 : 0;\r\n flags[SurfaceBitIndex.UseConstantLodNormalMapMapping] = this.mesh.normalMapUsesConstantLod ? 1 : 0;\r\n\r\n // The transparency threshold controls how transparent a surface must be to allow light to pass through; more opaque surfaces cast shadows.\r\n flags[SurfaceBitIndex.TransparencyThreshold] = params.target.isDrawingShadowMap ? 1 : 0;\r\n flags[SurfaceBitIndex.BackgroundFill] = 0;\r\n switch (params.renderPass) {\r\n // NB: We need this for opaque pass due to SolidFill (must compute transparency, discard below threshold, render opaque at or above threshold)\r\n case RenderPass.OpaqueLinear:\r\n case RenderPass.OpaquePlanar:\r\n case RenderPass.OpaqueGeneral:\r\n case RenderPass.Translucent:\r\n case RenderPass.WorldOverlay:\r\n case RenderPass.OpaqueLayers:\r\n case RenderPass.TranslucentLayers:\r\n case RenderPass.OverlayLayers: {\r\n const mode = vf.renderMode;\r\n if (!this.isGlyph && (RenderMode.HiddenLine === mode || RenderMode.SolidFill === mode)) {\r\n flags[SurfaceBitIndex.TransparencyThreshold] = 1;\r\n if (RenderMode.HiddenLine === mode && FillFlags.Always !== (this.fillFlags & FillFlags.Always)) {\r\n // fill flags test for text - doesn't render with bg fill in hidden line mode.\r\n flags[SurfaceBitIndex.BackgroundFill] = 1;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private constructor(indices: BufferHandle, numIndices: number, mesh: MeshData) {\r\n super(mesh, numIndices);\r\n this._buffers = BuffersContainer.create();\r\n const attrPos = AttributeMap.findAttribute(\"a_pos\", TechniqueId.Surface, false);\r\n assert(undefined !== attrPos);\r\n this._buffers.addBuffer(indices, [BufferParameters.create(attrPos.location, 3, GL.DataType.UnsignedByte, false, 0, 0, false)]);\r\n this._indices = indices;\r\n }\r\n\r\n private wantTextures(target: Target, surfaceTextureExists: boolean): boolean {\r\n if (this.hasScalarAnimation && undefined !== target.analysisTexture)\r\n return true;\r\n\r\n if (!surfaceTextureExists)\r\n return false;\r\n\r\n if (this.mesh.isTextureAlwaysDisplayed)\r\n return true;\r\n\r\n if (this.supportsThematicDisplay && target.wantThematicDisplay)\r\n return false;\r\n\r\n const fill = this.fillFlags;\r\n const flags = target.currentViewFlags;\r\n\r\n // ###TODO need to distinguish between gradient fill and actual textures...\r\n switch (flags.renderMode) {\r\n case RenderMode.SmoothShade:\r\n return flags.textures;\r\n case RenderMode.Wireframe:\r\n return FillFlags.Always === (fill & FillFlags.Always) || (flags.fill && FillFlags.ByView === (fill & FillFlags.ByView));\r\n default:\r\n return FillFlags.Always === (fill & FillFlags.Always);\r\n }\r\n }\r\n\r\n private wantNormalMaps(target: Target, normalMapExists: boolean): boolean {\r\n if (!normalMapExists || !target.displayNormalMaps)\r\n return false;\r\n\r\n const flags = target.currentViewFlags;\r\n\r\n switch (flags.renderMode) {\r\n case RenderMode.SmoothShade:\r\n return flags.textures;\r\n default:\r\n return false;\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"SurfaceGeometry.js","sourceRoot":"","sources":["../../../../src/render/webgl/SurfaceGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { FillFlags, RenderMode, TextureTransparency, ThematicGradientTransparencyMode, ViewFlags } from \"@itwin/core-common\";\r\nimport { SurfaceType } from \"../../common/internal/render/SurfaceParams\";\r\nimport { VertexIndices } from \"../../common/internal/render/VertexIndices\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { ShaderProgramParams } from \"./DrawCommand\";\r\nimport { GL } from \"./GL\";\r\nimport { BufferHandle, BufferParameters, BuffersContainer } from \"./AttributeBuffers\";\r\nimport { MaterialInfo } from \"./Material\";\r\nimport { Pass, RenderOrder, RenderPass, SurfaceBitIndex } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { MeshData } from \"./MeshData\";\r\nimport { MeshGeometry } from \"./MeshGeometry\";\r\n\r\n/** @internal */\r\nexport function wantMaterials(vf: ViewFlags): boolean {\r\n return vf.materials && RenderMode.SmoothShade === vf.renderMode;\r\n}\r\n\r\nfunction wantLighting(vf: ViewFlags) {\r\n return RenderMode.SmoothShade === vf.renderMode && vf.lighting;\r\n}\r\n\r\n/** @internal */\r\nexport class SurfaceGeometry extends MeshGeometry {\r\n private readonly _buffers: BuffersContainer;\r\n private readonly _indices: BufferHandle;\r\n\r\n public get lutBuffers() { return this._buffers; }\r\n\r\n public static create(mesh: MeshData, indices: VertexIndices): SurfaceGeometry | undefined {\r\n const indexBuffer = BufferHandle.createArrayBuffer(indices.data);\r\n return undefined !== indexBuffer ? new SurfaceGeometry(indexBuffer, indices.length, mesh) : undefined;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._buffers.isDisposed\r\n && this._indices.isDisposed;\r\n }\r\n\r\n public dispose() {\r\n dispose(this._buffers);\r\n dispose(this._indices);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n stats.addSurface(this._indices.bytesUsed);\r\n }\r\n\r\n public get isLit() { return SurfaceType.Lit === this.surfaceType || SurfaceType.TexturedLit === this.surfaceType; }\r\n public get isTexturedType() { return SurfaceType.Textured === this.surfaceType || SurfaceType.TexturedLit === this.surfaceType; }\r\n public get hasTexture() { return this.isTexturedType && undefined !== this.texture; }\r\n public get hasNormalMap() { return this.isLit && this.isTexturedType && undefined !== this.normalMap; }\r\n public get isGlyph() { return this.mesh.isGlyph; }\r\n public override get alwaysRenderTranslucent() { return this.isGlyph; }\r\n public get isTileSection() { return undefined !== this.texture && this.texture.isTileSection; }\r\n public get isClassifier() { return SurfaceType.VolumeClassifier === this.surfaceType; }\r\n public override get supportsThematicDisplay() {\r\n return !this.isGlyph;\r\n }\r\n\r\n public override get allowColorOverride() {\r\n // Text background color should not be overridden by feature symbology overrides - otherwise it becomes unreadable...\r\n // We don't actually know if we have text.\r\n // We do know that text background color uses blanking fill. So do ImageGraphics, so they're also going to forbid overriding their color.\r\n return FillFlags.Blanking !== (this.fillFlags & FillFlags.Blanking);\r\n }\r\n\r\n public override get asSurface() { return this; }\r\n public override get asEdge() { return undefined; }\r\n public override get asSilhouette() { return undefined; }\r\n\r\n protected _draw(numInstances: number, instanceBuffersContainer?: BuffersContainer): void {\r\n const system = System.instance;\r\n\r\n // If we can't write depth in the fragment shader, use polygonOffset to force blanking regions to draw behind.\r\n const offset = RenderOrder.BlankingRegion === this.renderOrder && !system.supportsLogZBuffer;\r\n if (offset) {\r\n system.context.enable(GL.POLYGON_OFFSET_FILL);\r\n system.context.polygonOffset(1.0, 1.0);\r\n }\r\n\r\n const bufs = instanceBuffersContainer !== undefined ? instanceBuffersContainer : this._buffers;\r\n bufs.bind();\r\n system.drawArrays(GL.PrimitiveType.Triangles, 0, this._numIndices, numInstances);\r\n bufs.unbind();\r\n\r\n if (offset)\r\n system.context.disable(GL.POLYGON_OFFSET_FILL);\r\n }\r\n\r\n public override wantMixMonochromeColor(target: Target): boolean {\r\n // Text relies on white-on-white reversal.\r\n return !this.isGlyph && (this.isLitSurface || this.wantTextures(target, this.hasTexture));\r\n }\r\n\r\n public get techniqueId(): TechniqueId { return TechniqueId.Surface; }\r\n public override get isLitSurface() { return this.isLit; }\r\n public override get hasBakedLighting() { return this.mesh.hasBakedLighting; }\r\n public get renderOrder(): RenderOrder {\r\n if (FillFlags.Behind === (this.fillFlags & FillFlags.Behind))\r\n return RenderOrder.BlankingRegion;\r\n\r\n let order = this.isLit ? RenderOrder.LitSurface : RenderOrder.UnlitSurface;\r\n if (this.isPlanar)\r\n order = order | RenderOrder.PlanarBit;\r\n\r\n return order;\r\n }\r\n\r\n public override getColor(target: Target) {\r\n if (FillFlags.Background === (this.fillFlags & FillFlags.Background))\r\n return target.uniforms.style.backgroundColorInfo;\r\n else\r\n return this.colorInfo;\r\n }\r\n\r\n public override getPass(target: Target): Pass {\r\n // Classifiers have a dedicated pass\r\n if (this.isClassifier)\r\n return \"classification\";\r\n\r\n let opaquePass: Pass = this.isPlanar ? \"opaque-planar\" : \"opaque\";\r\n\r\n // When reading pixels, glyphs are always opaque. Otherwise always transparent (for anti-aliasing).\r\n if (this.isGlyph)\r\n return target.isReadPixelsInProgress ? opaquePass : \"translucent\";\r\n\r\n const vf = target.currentViewFlags;\r\n\r\n // When rendering thematic isolines, we need translucency because they have anti-aliasing.\r\n const thematic = target.wantThematicDisplay && this.supportsThematicDisplay ? target.uniforms.thematic.thematicDisplay : undefined;\r\n if (thematic && target.uniforms.thematic.wantIsoLines)\r\n return \"translucent\";\r\n\r\n // In wireframe, unless fill is explicitly enabled for planar region, surface does not draw\r\n if (RenderMode.Wireframe === vf.renderMode && !this.mesh.isTextureAlwaysDisplayed) {\r\n const fillFlags = this.fillFlags;\r\n const showFill = FillFlags.Always === (fillFlags & FillFlags.Always) || (vf.fill && FillFlags.ByView === (fillFlags & FillFlags.ByView));\r\n if (!showFill)\r\n return \"none\";\r\n }\r\n\r\n // If transparency disabled by render mode or view flag, always draw opaque.\r\n if (!vf.transparency || RenderMode.SolidFill === vf.renderMode || RenderMode.HiddenLine === vf.renderMode)\r\n return opaquePass;\r\n\r\n // A gradient texture applied by analysis style always fully determines the transparency of the surface.\r\n if (this.hasScalarAnimation && undefined !== target.analysisTexture) {\r\n assert(undefined !== target.analysisStyle?.thematic);\r\n switch (target.analysisStyle.thematic.thematicSettings.textureTransparency) {\r\n case TextureTransparency.Translucent:\r\n return \"translucent\";\r\n case TextureTransparency.Opaque:\r\n return opaquePass;\r\n case TextureTransparency.Mixed:\r\n return `${opaquePass}-translucent`;\r\n }\r\n }\r\n\r\n // We have 3 sources of alpha: the material, the texture, and the color.\r\n // Base alpha comes from the material if it overrides it; otherwise from the color.\r\n // The texture's alpha is multiplied by the base alpha.\r\n // So we must draw in the translucent pass if the texture has transparency OR the base alpha is less than 1.\r\n let hasAlpha = false;\r\n const mat = wantMaterials(vf) ? this.mesh.materialInfo : undefined;\r\n if (undefined !== mat && mat.overridesAlpha)\r\n hasAlpha = mat.hasTranslucency;\r\n else\r\n hasAlpha = this.getColor(target).hasTranslucency;\r\n\r\n // Thematic gradient can optionally multiply gradient alpha with surface alpha.\r\n if (thematic && thematic.gradientSettings.transparencyMode === ThematicGradientTransparencyMode.MultiplySurfaceAndGradient) {\r\n switch (thematic.gradientSettings.textureTransparency) {\r\n case TextureTransparency.Opaque:\r\n // This surface's alpha gets multiplied by 1 - gradient colors are all opaque.\r\n return hasAlpha ? \"translucent\" : opaquePass;\r\n case TextureTransparency.Translucent:\r\n // This surface's alpha gets multiplied by < 1 - gradient colors are all translucent.\r\n return \"translucent\";\r\n case TextureTransparency.Mixed:\r\n // The gradient contains a mix of translucent and opaque colors.\r\n return hasAlpha ? \"translucent\" : `${opaquePass}-translucent`;\r\n }\r\n }\r\n\r\n if (!hasAlpha) {\r\n const tex = this.wantTextures(target, true) ? this.texture : undefined;\r\n switch (tex?.transparency) {\r\n case TextureTransparency.Translucent:\r\n hasAlpha = true;\r\n break;\r\n case TextureTransparency.Mixed:\r\n opaquePass = `${opaquePass}-translucent`;\r\n break;\r\n }\r\n }\r\n\r\n return hasAlpha ? \"translucent\" : opaquePass;\r\n }\r\n\r\n protected _wantWoWReversal(target: Target): boolean {\r\n const fillFlags = this.fillFlags;\r\n if (FillFlags.None !== (fillFlags & FillFlags.Background))\r\n return false; // fill color explicitly from background\r\n\r\n if (FillFlags.None !== (fillFlags & FillFlags.Always))\r\n return true; // fill displayed even in wireframe\r\n\r\n const vf = target.currentViewFlags;\r\n if (RenderMode.Wireframe === vf.renderMode || vf.visibleEdges)\r\n return false; // never invert surfaces when edges are displayed\r\n\r\n if (this.isLit && wantLighting(vf))\r\n return false;\r\n\r\n // Don't invert white pixels of textures...\r\n return !this.wantTextures(target, this.hasTexture);\r\n }\r\n\r\n public override get materialInfo(): MaterialInfo | undefined { return this.mesh.materialInfo; }\r\n\r\n public useTexture(params: ShaderProgramParams): boolean {\r\n return this.wantTextures(params.target, this.hasTexture);\r\n }\r\n\r\n public useNormalMap(params: ShaderProgramParams): boolean {\r\n return this.wantNormalMaps(params.target, this.hasNormalMap);\r\n }\r\n\r\n public computeSurfaceFlags(params: ShaderProgramParams, flags: Int32Array): void {\r\n const target = params.target;\r\n const vf = target.currentViewFlags;\r\n\r\n const useMaterial = wantMaterials(vf);\r\n flags[SurfaceBitIndex.IgnoreMaterial] = useMaterial ? 0 : 1;\r\n flags[SurfaceBitIndex.HasMaterialAtlas] = useMaterial && this.hasMaterialAtlas ? 1 : 0;\r\n\r\n flags[SurfaceBitIndex.ApplyLighting] = 0;\r\n flags[SurfaceBitIndex.HasColorAndNormal] = 0;\r\n if (this.isLit) {\r\n flags[SurfaceBitIndex.HasNormals] = 1;\r\n if (wantLighting(vf))\r\n flags[SurfaceBitIndex.ApplyLighting] = 1;\r\n\r\n // Textured meshes store normal in place of color index.\r\n // Untextured lit meshes store normal where textured meshes would store UV coords.\r\n // Tell shader where to find normal.\r\n if (!this.isTexturedType) {\r\n flags[SurfaceBitIndex.HasColorAndNormal] = 1;\r\n }\r\n } else {\r\n flags[SurfaceBitIndex.HasNormals] = 0;\r\n }\r\n\r\n flags[SurfaceBitIndex.HasTexture] = this.useTexture(params) ? 1 : 0;\r\n flags[SurfaceBitIndex.HasNormalMap] = this.useNormalMap(params) ? 1 : 0;\r\n flags[SurfaceBitIndex.UseConstantLodTextureMapping] = this.mesh.textureUsesConstantLod ? 1 : 0;\r\n flags[SurfaceBitIndex.UseConstantLodNormalMapMapping] = this.mesh.normalMapUsesConstantLod ? 1 : 0;\r\n\r\n // The transparency threshold controls how transparent a surface must be to allow light to pass through; more opaque surfaces cast shadows.\r\n flags[SurfaceBitIndex.TransparencyThreshold] = params.target.isDrawingShadowMap ? 1 : 0;\r\n flags[SurfaceBitIndex.BackgroundFill] = 0;\r\n switch (params.renderPass) {\r\n // NB: We need this for opaque pass due to SolidFill (must compute transparency, discard below threshold, render opaque at or above threshold)\r\n case RenderPass.OpaqueLinear:\r\n case RenderPass.OpaquePlanar:\r\n case RenderPass.OpaqueGeneral:\r\n case RenderPass.Translucent:\r\n case RenderPass.WorldOverlay:\r\n case RenderPass.OpaqueLayers:\r\n case RenderPass.TranslucentLayers:\r\n case RenderPass.OverlayLayers: {\r\n const mode = vf.renderMode;\r\n if (!this.isGlyph && (RenderMode.HiddenLine === mode || RenderMode.SolidFill === mode)) {\r\n flags[SurfaceBitIndex.TransparencyThreshold] = 1;\r\n if (RenderMode.HiddenLine === mode && FillFlags.Always !== (this.fillFlags & FillFlags.Always)) {\r\n // fill flags test for text - doesn't render with bg fill in hidden line mode.\r\n flags[SurfaceBitIndex.BackgroundFill] = 1;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private constructor(indices: BufferHandle, numIndices: number, mesh: MeshData) {\r\n super(mesh, numIndices);\r\n this._buffers = BuffersContainer.create();\r\n const attrPos = AttributeMap.findAttribute(\"a_pos\", TechniqueId.Surface, false);\r\n assert(undefined !== attrPos);\r\n this._buffers.addBuffer(indices, [BufferParameters.create(attrPos.location, 3, GL.DataType.UnsignedByte, false, 0, 0, false)]);\r\n this._indices = indices;\r\n }\r\n\r\n private wantTextures(target: Target, surfaceTextureExists: boolean): boolean {\r\n if (this.hasScalarAnimation && undefined !== target.analysisTexture)\r\n return true;\r\n\r\n if (!surfaceTextureExists)\r\n return false;\r\n\r\n if (this.mesh.isTextureAlwaysDisplayed)\r\n return true;\r\n\r\n if (this.supportsThematicDisplay && target.wantThematicDisplay)\r\n return false;\r\n\r\n const fill = this.fillFlags;\r\n const flags = target.currentViewFlags;\r\n\r\n // ###TODO need to distinguish between gradient fill and actual textures...\r\n switch (flags.renderMode) {\r\n case RenderMode.SmoothShade:\r\n return flags.textures;\r\n case RenderMode.Wireframe:\r\n return FillFlags.Always === (fill & FillFlags.Always) || (flags.fill && FillFlags.ByView === (fill & FillFlags.ByView));\r\n default:\r\n return FillFlags.Always === (fill & FillFlags.Always);\r\n }\r\n }\r\n\r\n private wantNormalMaps(target: Target, normalMapExists: boolean): boolean {\r\n if (!normalMapExists || !target.displayNormalMaps)\r\n return false;\r\n\r\n const flags = target.currentViewFlags;\r\n\r\n switch (flags.renderMode) {\r\n case RenderMode.SmoothShade:\r\n return flags.textures;\r\n default:\r\n return false;\r\n }\r\n }\r\n}\r\n"]}
@@ -7,7 +7,9 @@
7
7
  * @module WebGL
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.desync = exports.sync = exports.isSynchronized = void 0;
10
+ exports.isSynchronized = isSynchronized;
11
+ exports.sync = sync;
12
+ exports.desync = desync;
11
13
  /** Returns true if the target and observer are already synchronized.
12
14
  * @internal
13
15
  */
@@ -15,7 +17,6 @@ function isSynchronized(target, observer) {
15
17
  const token = observer.syncToken;
16
18
  return undefined !== token && token.target === target && token.syncKey === target.syncKey;
17
19
  }
18
- exports.isSynchronized = isSynchronized;
19
20
  /** If the observer is already synchronized with the target, returns true.
20
21
  * Otherwise, synchronizes the observer's [[SyncToken]] with the target and returns false.
21
22
  * This is used, for example, to associate uniform variable state with shader programs such that the program can trivially detect if the state has changed since the last time
@@ -35,7 +36,6 @@ function sync(target, observer) {
35
36
  token.target = target;
36
37
  return false;
37
38
  }
38
- exports.sync = sync;
39
39
  /** Mark the [[SyncTarget]] as having changed in a way that affects associated [[SyncObserver]]s.
40
40
  * The next time [[sync]] is used, all [[SyncToken]] objects associated with the target will be recognized as out of sync.
41
41
  * @internal
@@ -47,5 +47,4 @@ function desync(target) {
47
47
  else
48
48
  target.syncKey = Number.MIN_SAFE_INTEGER;
49
49
  }
50
- exports.desync = desync;
51
50
  //# sourceMappingURL=Sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Sync.js","sourceRoot":"","sources":["../../../../src/render/webgl/Sync.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAgCH;;GAEG;AACH,SAAgB,cAAc,CAAC,MAAkB,EAAE,QAAsB;IACvE,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC;IACjC,OAAO,SAAS,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC;AAC5F,CAAC;AAHD,wCAGC;AAED;;;;;GAKG;AACH,SAAgB,IAAI,CAAC,MAAkB,EAAE,QAAsB;IAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC;IACjC,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACxB,QAAQ,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;QACtD,OAAO,IAAI,CAAC;IAEd,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,OAAO,KAAK,CAAC;AACf,CAAC;AAdD,oBAcC;AAED;;;GAGG;AACH,SAAgB,MAAM,CAAC,MAAkB;IACvC,qMAAqM;IACrM,IAAI,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,gBAAgB;QAC1C,EAAE,MAAM,CAAC,OAAO,CAAC;;QAEjB,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC7C,CAAC;AAND,wBAMC","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\n/** Represents the state of synchronization between a [[SyncTarget]] and a [[SyncObserver]]. Owned by a [[SyncTarget]].\r\n * When the [[SyncObserver]]'s state changes via [[desync]], all associated [[SyncToken]]s become out-of-sync.\r\n * Use [[sync]] to synchronize the [[SyncObserver]] with the [[SyncTarget]]'s state.\r\n * @internal\r\n */\r\nexport interface SyncToken {\r\n /** The target with which this token was most recently synchronized. */\r\n target: SyncTarget;\r\n /** The value of the target's synchronization key at the time of most recent synchronization. */\r\n syncKey: number;\r\n}\r\n\r\n/** Interface adopted by an object which wants to synchronize itself with the changing state of a [[SyncTarget]].\r\n * Use [[sync]] to synchronize.\r\n * @internal\r\n */\r\nexport interface SyncObserver {\r\n /** Token representing current synchronization state. Should always be initialized to `undefined`. [[sync]] will assign to it. */\r\n syncToken?: SyncToken;\r\n}\r\n\r\n/** Interface adopted by an object that can change and with which other objects implementing [[SyncObserver]] can synchronize.\r\n * Each time the state of the object changes in a way that affects [[SyncObserver]]s, [[desync]] should be used. This will generate a new synchronization key.\r\n * @internal\r\n */\r\nexport interface SyncTarget {\r\n /** A unique key that is regenerated each time the object's state changes via a call to [[desync]]. Can be initialized to any integer value - zero is a good choice. */\r\n syncKey: number;\r\n}\r\n\r\n/** Returns true if the target and observer are already synchronized.\r\n * @internal\r\n */\r\nexport function isSynchronized(target: SyncTarget, observer: SyncObserver): boolean {\r\n const token = observer.syncToken;\r\n return undefined !== token && token.target === target && token.syncKey === target.syncKey;\r\n}\r\n\r\n/** If the observer is already synchronized with the target, returns true.\r\n * Otherwise, synchronizes the observer's [[SyncToken]] with the target and returns false.\r\n * This is used, for example, to associate uniform variable state with shader programs such that the program can trivially detect if the state has changed since the last time\r\n * the variable's value was set.\r\n * @internal\r\n */\r\nexport function sync(target: SyncTarget, observer: SyncObserver): boolean {\r\n const syncKey = target.syncKey;\r\n const token = observer.syncToken;\r\n if (undefined === token) {\r\n observer.syncToken = { target, syncKey };\r\n return false;\r\n }\r\n\r\n if (token.syncKey === syncKey && token.target === target)\r\n return true;\r\n\r\n token.syncKey = syncKey;\r\n token.target = target;\r\n return false;\r\n}\r\n\r\n/** Mark the [[SyncTarget]] as having changed in a way that affects associated [[SyncObserver]]s.\r\n * The next time [[sync]] is used, all [[SyncToken]] objects associated with the target will be recognized as out of sync.\r\n * @internal\r\n */\r\nexport function desync(target: SyncTarget): void {\r\n // Let's make the relatively safe assumption that we will never roll over, and the even safer assumption that if we do, no outstanding SyncTokens holding a very small value will exist at that time.\r\n if (target.syncKey < Number.MAX_SAFE_INTEGER)\r\n ++target.syncKey;\r\n else\r\n target.syncKey = Number.MIN_SAFE_INTEGER;\r\n}\r\n"]}
1
+ {"version":3,"file":"Sync.js","sourceRoot":"","sources":["../../../../src/render/webgl/Sync.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;AAmCH,wCAGC;AAQD,oBAcC;AAMD,wBAMC;AAxCD;;GAEG;AACH,SAAgB,cAAc,CAAC,MAAkB,EAAE,QAAsB;IACvE,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC;IACjC,OAAO,SAAS,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC;AAC5F,CAAC;AAED;;;;;GAKG;AACH,SAAgB,IAAI,CAAC,MAAkB,EAAE,QAAsB;IAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC;IACjC,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACxB,QAAQ,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;QACtD,OAAO,IAAI,CAAC;IAEd,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAgB,MAAM,CAAC,MAAkB;IACvC,qMAAqM;IACrM,IAAI,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,gBAAgB;QAC1C,EAAE,MAAM,CAAC,OAAO,CAAC;;QAEjB,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC7C,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\n/** Represents the state of synchronization between a [[SyncTarget]] and a [[SyncObserver]]. Owned by a [[SyncTarget]].\r\n * When the [[SyncObserver]]'s state changes via [[desync]], all associated [[SyncToken]]s become out-of-sync.\r\n * Use [[sync]] to synchronize the [[SyncObserver]] with the [[SyncTarget]]'s state.\r\n * @internal\r\n */\r\nexport interface SyncToken {\r\n /** The target with which this token was most recently synchronized. */\r\n target: SyncTarget;\r\n /** The value of the target's synchronization key at the time of most recent synchronization. */\r\n syncKey: number;\r\n}\r\n\r\n/** Interface adopted by an object which wants to synchronize itself with the changing state of a [[SyncTarget]].\r\n * Use [[sync]] to synchronize.\r\n * @internal\r\n */\r\nexport interface SyncObserver {\r\n /** Token representing current synchronization state. Should always be initialized to `undefined`. [[sync]] will assign to it. */\r\n syncToken?: SyncToken;\r\n}\r\n\r\n/** Interface adopted by an object that can change and with which other objects implementing [[SyncObserver]] can synchronize.\r\n * Each time the state of the object changes in a way that affects [[SyncObserver]]s, [[desync]] should be used. This will generate a new synchronization key.\r\n * @internal\r\n */\r\nexport interface SyncTarget {\r\n /** A unique key that is regenerated each time the object's state changes via a call to [[desync]]. Can be initialized to any integer value - zero is a good choice. */\r\n syncKey: number;\r\n}\r\n\r\n/** Returns true if the target and observer are already synchronized.\r\n * @internal\r\n */\r\nexport function isSynchronized(target: SyncTarget, observer: SyncObserver): boolean {\r\n const token = observer.syncToken;\r\n return undefined !== token && token.target === target && token.syncKey === target.syncKey;\r\n}\r\n\r\n/** If the observer is already synchronized with the target, returns true.\r\n * Otherwise, synchronizes the observer's [[SyncToken]] with the target and returns false.\r\n * This is used, for example, to associate uniform variable state with shader programs such that the program can trivially detect if the state has changed since the last time\r\n * the variable's value was set.\r\n * @internal\r\n */\r\nexport function sync(target: SyncTarget, observer: SyncObserver): boolean {\r\n const syncKey = target.syncKey;\r\n const token = observer.syncToken;\r\n if (undefined === token) {\r\n observer.syncToken = { target, syncKey };\r\n return false;\r\n }\r\n\r\n if (token.syncKey === syncKey && token.target === target)\r\n return true;\r\n\r\n token.syncKey = syncKey;\r\n token.target = target;\r\n return false;\r\n}\r\n\r\n/** Mark the [[SyncTarget]] as having changed in a way that affects associated [[SyncObserver]]s.\r\n * The next time [[sync]] is used, all [[SyncToken]] objects associated with the target will be recognized as out of sync.\r\n * @internal\r\n */\r\nexport function desync(target: SyncTarget): void {\r\n // Let's make the relatively safe assumption that we will never roll over, and the even safer assumption that if we do, no outstanding SyncTokens holding a very small value will exist at that time.\r\n if (target.syncKey < Number.MAX_SAFE_INTEGER)\r\n ++target.syncKey;\r\n else\r\n target.syncKey = Number.MIN_SAFE_INTEGER;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"System.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/System.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"System.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/System.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TechniqueFlags.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/TechniqueFlags.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIlC;;GAEG;AACH,0BAAkB,WAAW;IAC3B,IAAI,IAAA,CAAQ,cAAc;IAC1B,IAAI,IAAA,CAAQ,qBAAqB;IACjC,SAAS,IAAA;CACV;AAED,gBAAgB;AAChB,0BAAkB,WAAW;IAAG,EAAE,IAAA;IAAE,GAAG,IAAA;CAAE;AAEzC,gBAAgB;AAChB,0BAAkB,UAAU;IAAG,EAAE,IAAA;IAAE,GAAG,IAAA;CAAE;AAExC,gBAAgB;AAChB,0BAAkB,YAAY;IAAG,EAAE,IAAA;IAAE,GAAG,IAAA;CAAE;AAE1C,gBAAgB;AAChB,0BAAkB,gBAAgB;IAAG,EAAE,IAAA;IAAE,GAAG,IAAA;CAAE;AAE9C,gBAAgB;AAChB,0BAAkB,YAAY;IAAG,EAAE,IAAA;IAAE,GAAG,IAAA;CAAE;AAE1C,gBAAgB;AAChB,0BAAkB,UAAU;IAAG,EAAE,IAAA;IAAE,GAAG,IAAA;CAAE;AAExC,gBAAgB;AAChB,0BAAkB,UAAU;IAAG,EAAE,IAAA;IAAE,GAAG,IAAA;CAAE;AAExC,gBAAgB;AAChB,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,aAAa,CAAC;AAEvD,gBAAgB;AAChB,0BAAkB,gBAAgB;IAAG,EAAE,IAAA;IAAE,GAAG,IAAA;CAAE;AAE9C;;GAEG;AACH,qBAAa,cAAc;IAClB,aAAa,SAAK;IAClB,WAAW,cAAoB;IAC/B,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,gBAAgB,CAAuB;IACzD,UAAU,EAAE,UAAU,CAAiB;IACvC,WAAW,EAAE,WAAW,CAAkB;IAC1C,YAAY,EAAE,YAAY,CAAmB;IAC7C,YAAY,EAAE,YAAY,CAAmB;IAC7C,UAAU,EAAE,UAAU,CAAiB;IACvC,UAAU,EAAE,UAAU,CAAiB;IACvC,YAAY,EAAE,YAAY,CAAe;IACzC,gBAAgB,EAAE,gBAAgB,CAAuB;IAChE,OAAO,CAAC,SAAS,CAAS;gBAEP,WAAW,GAAE,OAAe;IAI/C,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,IAAW,sBAAsB,IAAI,OAAO,CAE3C;IAEM,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,GAAE,UAA0B,EAAE,UAAU,eAAkB,EAAE,UAAU,eAAkB,EAAE,QAAQ,aAAgB,EAAE,QAAQ,aAAgB,EAAE,OAAO,GAAE,YAA0B,EAAE,gBAAgB,mBAAsB,GAAG,IAAI;IA8CvS,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,yBAA8B,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY;IAgB9I,IAAW,WAAW,YAAoD;IAEnE,WAAW,CAAC,QAAQ,EAAE,OAAO;IAC7B,YAAY,CAAC,SAAS,EAAE,OAAO;IAC/B,aAAa,CAAC,UAAU,EAAE,OAAO;IAIxC,IAAW,QAAQ,YAA6B;IACzC,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY;IAY5G,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO;IAgBtC,gBAAgB,IAAI,MAAM;WA8BnB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc;IAqDlE,gBAAuB,QAAQ,iBAAwB;CACxD"}
1
+ {"version":3,"file":"TechniqueFlags.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/TechniqueFlags.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIlC;;GAEG;AACH,0BAAkB,WAAW;IAC3B,IAAI,IAAA,CAAQ,cAAc;IAC1B,IAAI,IAAA,CAAQ,qBAAqB;IACjC,SAAS,IAAA;CACV;AAED,gBAAgB;AAChB,0BAAkB,WAAW;IAAG,EAAE,IAAA;IAAE,GAAG,IAAA;CAAE;AAEzC,gBAAgB;AAChB,0BAAkB,UAAU;IAAG,EAAE,IAAA;IAAE,GAAG,IAAA;CAAE;AAExC,gBAAgB;AAChB,0BAAkB,YAAY;IAAG,EAAE,IAAA;IAAE,GAAG,IAAA;CAAE;AAE1C,gBAAgB;AAChB,0BAAkB,gBAAgB;IAAG,EAAE,IAAA;IAAE,GAAG,IAAA;CAAE;AAE9C,gBAAgB;AAChB,0BAAkB,YAAY;IAAG,EAAE,IAAA;IAAE,GAAG,IAAA;CAAE;AAE1C,gBAAgB;AAChB,0BAAkB,UAAU;IAAG,EAAE,IAAA;IAAE,GAAG,IAAA;CAAE;AAExC,gBAAgB;AAChB,0BAAkB,UAAU;IAAG,EAAE,IAAA;IAAE,GAAG,IAAA;CAAE;AAExC,gBAAgB;AAChB,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,aAAa,CAAC;AAEvD,gBAAgB;AAChB,0BAAkB,gBAAgB;IAAG,EAAE,IAAA;IAAE,GAAG,IAAA;CAAE;AAE9C;;GAEG;AACH,qBAAa,cAAc;IAClB,aAAa,SAAK;IAClB,WAAW,cAAoB;IAC/B,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,gBAAgB,CAAuB;IACzD,UAAU,EAAE,UAAU,CAAiB;IACvC,WAAW,EAAE,WAAW,CAAkB;IAC1C,YAAY,EAAE,YAAY,CAAmB;IAC7C,YAAY,EAAE,YAAY,CAAmB;IAC7C,UAAU,EAAE,UAAU,CAAiB;IACvC,UAAU,EAAE,UAAU,CAAiB;IACvC,YAAY,EAAE,YAAY,CAAe;IACzC,gBAAgB,EAAE,gBAAgB,CAAuB;IAChE,OAAO,CAAC,SAAS,CAAS;gBAEP,WAAW,GAAE,OAAe;IAI/C,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED,IAAW,sBAAsB,IAAI,OAAO,CAE3C;IAEM,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,GAAE,UAA0B,EAAE,UAAU,eAAkB,EAAE,UAAU,eAAkB,EAAE,QAAQ,aAAgB,EAAE,QAAQ,aAAgB,EAAE,OAAO,GAAE,YAA0B,EAAE,gBAAgB,mBAAsB,GAAG,IAAI;IA8CvS,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,YAAiB,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY;IAgB9I,IAAW,WAAW,YAAoD;IAEnE,WAAW,CAAC,QAAQ,EAAE,OAAO;IAC7B,YAAY,CAAC,SAAS,EAAE,OAAO;IAC/B,aAAa,CAAC,UAAU,EAAE,OAAO;IAIxC,IAAW,QAAQ,YAA6B;IACzC,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY;IAY5G,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO;IAgBtC,gBAAgB,IAAI,MAAM;WA8BnB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc;IAqDlE,gBAAuB,QAAQ,iBAAwB;CACxD"}
@@ -7,7 +7,7 @@
7
7
  * @module WebGL
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.computeCompositeTechniqueId = void 0;
10
+ exports.computeCompositeTechniqueId = computeCompositeTechniqueId;
11
11
  const core_bentley_1 = require("@itwin/core-bentley");
12
12
  const compositeTechniqueIds = [
13
13
  -1 /* TechniqueId.Invalid */, // None = 0
@@ -24,5 +24,4 @@ function computeCompositeTechniqueId(flags) {
24
24
  (0, core_bentley_1.assert)(flags >= 0 && flags <= 7);
25
25
  return compositeTechniqueIds[flags];
26
26
  }
27
- exports.computeCompositeTechniqueId = computeCompositeTechniqueId;
28
27
  //# sourceMappingURL=TechniqueId.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TechniqueId.js","sourceRoot":"","sources":["../../../../src/render/webgl/TechniqueId.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA6C;AAwD7C,MAAM,qBAAqB,GAAG;kCACP,WAAW;+CACE,wBAAwB;yCAC7B,wBAAwB;wDACV,qCAAqC;6CAChD,kCAAkC;2DACpB,+CAA+C;sDACpD,0CAA0C;uCACzD,4DAA4D;CACvF,CAAC;AAEF,gBAAgB;AAChB,SAAgB,2BAA2B,CAAC,KAAqB;IAC/D,IAAA,qBAAM,EAAC,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;IACjC,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AAHD,kEAGC","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 { CompositeFlags } from \"./RenderFlags\";\r\n\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** Technique enumeration\r\n * @internal\r\n */\r\nexport const enum TechniqueId {\r\n // Techniques with many different variations\r\n Invalid = -1,\r\n Surface,\r\n Polyline,\r\n PointCloud,\r\n PointString,\r\n Edge,\r\n SilhouetteEdge,\r\n IndexedEdge,\r\n RealityMesh,\r\n PlanarGrid,\r\n\r\n // Techniques with a single associated shader that operates on the entire image\r\n CompositeHilite,\r\n CompositeTranslucent,\r\n CompositeHiliteAndTranslucent,\r\n CompositeOcclusion,\r\n CompositeTranslucentAndOcclusion,\r\n CompositeHiliteAndOcclusion,\r\n CompositeAll,\r\n OITClearTranslucent,\r\n CopyPickBuffers,\r\n CopyColor,\r\n CopyColorNoAlpha,\r\n VolClassColorUsingStencil,\r\n ClearPickAndColor,\r\n EVSMFromDepth,\r\n SkyBox,\r\n SkySphereGradient,\r\n SkySphereTexture,\r\n AmbientOcclusion,\r\n Blur,\r\n BlurTestOrder,\r\n CombineTextures,\r\n Combine3Textures,\r\n VolClassCopyZ,\r\n VolClassSetBlend,\r\n VolClassBlend,\r\n EDLCalcBasic,\r\n EDLCalcFull,\r\n EDLFilter,\r\n EDLMix,\r\n\r\n NumBuiltIn,\r\n COUNT = NumBuiltIn,\r\n}\r\n\r\nconst compositeTechniqueIds = [\r\n TechniqueId.Invalid, // None = 0\r\n TechniqueId.CompositeTranslucent, // Translucent == 1 << 0\r\n TechniqueId.CompositeHilite, // Hilite == 1 << 1 == 2\r\n TechniqueId.CompositeHiliteAndTranslucent, // Hilite | Translucent == 1 | 2 == 3\r\n TechniqueId.CompositeOcclusion, // AmbientOcclusion == 1 << 2 == 4\r\n TechniqueId.CompositeTranslucentAndOcclusion, // Translucent | AmbientOcclusion == 1 | 4 == 5\r\n TechniqueId.CompositeHiliteAndOcclusion, // Hilite | AmbientOcclusion == 2 | 4 == 6\r\n TechniqueId.CompositeAll, // Translucent | Hilite | AmbientOcclusion == 1 | 2 | 4 == 7\r\n];\r\n\r\n/** @internal */\r\nexport function computeCompositeTechniqueId(flags: CompositeFlags): TechniqueId {\r\n assert(flags >= 0 && flags <= 7);\r\n return compositeTechniqueIds[flags];\r\n}\r\n"]}
1
+ {"version":3,"file":"TechniqueId.js","sourceRoot":"","sources":["../../../../src/render/webgl/TechniqueId.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;AAsEH,kEAGC;AAvED,sDAA6C;AAwD7C,MAAM,qBAAqB,GAAG;kCACP,WAAW;+CACE,wBAAwB;yCAC7B,wBAAwB;wDACV,qCAAqC;6CAChD,kCAAkC;2DACpB,+CAA+C;sDACpD,0CAA0C;uCACzD,4DAA4D;CACvF,CAAC;AAEF,gBAAgB;AAChB,SAAgB,2BAA2B,CAAC,KAAqB;IAC/D,IAAA,qBAAM,EAAC,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;IACjC,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { CompositeFlags } from \"./RenderFlags\";\r\n\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** Technique enumeration\r\n * @internal\r\n */\r\nexport const enum TechniqueId {\r\n // Techniques with many different variations\r\n Invalid = -1,\r\n Surface,\r\n Polyline,\r\n PointCloud,\r\n PointString,\r\n Edge,\r\n SilhouetteEdge,\r\n IndexedEdge,\r\n RealityMesh,\r\n PlanarGrid,\r\n\r\n // Techniques with a single associated shader that operates on the entire image\r\n CompositeHilite,\r\n CompositeTranslucent,\r\n CompositeHiliteAndTranslucent,\r\n CompositeOcclusion,\r\n CompositeTranslucentAndOcclusion,\r\n CompositeHiliteAndOcclusion,\r\n CompositeAll,\r\n OITClearTranslucent,\r\n CopyPickBuffers,\r\n CopyColor,\r\n CopyColorNoAlpha,\r\n VolClassColorUsingStencil,\r\n ClearPickAndColor,\r\n EVSMFromDepth,\r\n SkyBox,\r\n SkySphereGradient,\r\n SkySphereTexture,\r\n AmbientOcclusion,\r\n Blur,\r\n BlurTestOrder,\r\n CombineTextures,\r\n Combine3Textures,\r\n VolClassCopyZ,\r\n VolClassSetBlend,\r\n VolClassBlend,\r\n EDLCalcBasic,\r\n EDLCalcFull,\r\n EDLFilter,\r\n EDLMix,\r\n\r\n NumBuiltIn,\r\n COUNT = NumBuiltIn,\r\n}\r\n\r\nconst compositeTechniqueIds = [\r\n TechniqueId.Invalid, // None = 0\r\n TechniqueId.CompositeTranslucent, // Translucent == 1 << 0\r\n TechniqueId.CompositeHilite, // Hilite == 1 << 1 == 2\r\n TechniqueId.CompositeHiliteAndTranslucent, // Hilite | Translucent == 1 | 2 == 3\r\n TechniqueId.CompositeOcclusion, // AmbientOcclusion == 1 << 2 == 4\r\n TechniqueId.CompositeTranslucentAndOcclusion, // Translucent | AmbientOcclusion == 1 | 4 == 5\r\n TechniqueId.CompositeHiliteAndOcclusion, // Hilite | AmbientOcclusion == 2 | 4 == 6\r\n TechniqueId.CompositeAll, // Translucent | Hilite | AmbientOcclusion == 1 | 2 | 4 == 7\r\n];\r\n\r\n/** @internal */\r\nexport function computeCompositeTechniqueId(flags: CompositeFlags): TechniqueId {\r\n assert(flags >= 0 && flags <= 7);\r\n return compositeTechniqueIds[flags];\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Texture.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Texture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Texture.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/Texture.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  * @module WebGL
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.createAmbientOcclusionProgram = void 0;
10
+ exports.createAmbientOcclusionProgram = createAmbientOcclusionProgram;
11
11
  const RenderFlags_1 = require("../RenderFlags");
12
12
  const System_1 = require("../System");
13
13
  const Texture_1 = require("../Texture");
@@ -273,5 +273,4 @@ function createAmbientOcclusionProgram(context) {
273
273
  builder.frag.headerComment = "//!F! AmbientOcclusion";
274
274
  return builder.buildProgram(context);
275
275
  }
276
- exports.createAmbientOcclusionProgram = createAmbientOcclusionProgram;
277
276
  //# sourceMappingURL=AmbientOcclusion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AmbientOcclusion.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/AmbientOcclusion.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\n// portions adapted from Cesium.js Copyright 2011 - 2022 Cesium Contributors\r\n\r\nimport { AmbientOcclusionGeometry } from \"../CachedGeometry\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, VariablePrecision, VariableType } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { System } from \"../System\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { addFrustum } from \"./Common\";\r\nimport { decodeDepthRgb } from \"./Decode\";\r\nimport { addRenderOrderConstants, readDepthAndOrder } from \"./FeatureSymbology\";\r\nimport { addWindowToTexCoords, assignFragColor } from \"./Fragment\";\r\nimport { addViewport } from \"./Viewport\";\r\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\r\n\r\n// 'PB' indicates a shader variation when only the pickbuffer is available\r\n// 'DB' indicates a shader variation when the real floating point depth buffer is available.\r\n\r\nconst computeAmbientOcclusionPrefixPB = `\r\nvec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);\r\nvec2 depthAndOrder = readDepthAndOrder(tc);\r\nfloat db = depthAndOrder.y;\r\n`;\r\n\r\nconst computeAmbientOcclusionPrefixDB = `\r\nvec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);\r\nvec2 depthAndOrder = readDepthAndOrder(tc);\r\nfloat db = readDepth(tc);\r\n`;\r\n\r\n// This outputs 1 for unlit surfaces, and for polylines and point strings.\r\n// Otherwise it computes ambient occlusion based on normal reconstructed from pick depth.\r\n// NB: This shader code actually begins with a `computeAmbientOcclusionPrefix` variation as shown above.\r\nconst computeAmbientOcclusion = `\r\n depthAndOrder.y = unfinalizeLinearDepth(db);\r\n float order = depthAndOrder.x;\r\n if (order >= kRenderOrder_PlanarBit)\r\n order = order - kRenderOrder_PlanarBit;\r\n\r\n if (order < kRenderOrder_LitSurface || order == kRenderOrder_Linear)\r\n return vec4(1.0);\r\n\r\n // NB: linearDepth: 1 == near, 0 == far\r\n\r\n float linearDepth = depthAndOrder.y;\r\n float nonLinearDepth = computeNonLinearDepth(db);\r\n if (nonLinearDepth > u_maxDistance)\r\n return vec4(1.0);\r\n\r\n vec3 viewPos = computePositionFromDepth(tc, nonLinearDepth).xyz;\r\n\r\n vec2 pixelSize = 1.0 / u_viewport;\r\n vec3 viewNormal = computeNormalFromDepth(viewPos, tc, pixelSize);\r\n\r\n vec2 sampleDirection = vec2(1.0, 0.0);\r\n float gapAngle = 90.0 * 0.017453292519943295; // radians per degree\r\n\r\n // Grab some random noise\r\n // Multiply screen UV (range 0..1) with size of viewport divided by 4 in order to tile the 4x4 noise texture across the screen.\r\n // Multiply the random 0..1 vec3 by 2 and then substract 1. This puts the components of the vec3 in the range -1..1.\r\n vec3 noiseVec = (TEXTURE(u_noise, tc * vec2(u_viewport.x / 4.0, u_viewport.y / 4.0)).rgb + 1.0) / 2.0;\r\n\r\n float bias = u_hbaoSettings.x; // Represents an angle in radians. If the dot product between the normal of the sample and the vector to the camera is less than this value, sampling stops in the current direction. This is used to remove shadows from near planar edges.\r\n float zLengthCap = u_hbaoSettings.y; // If the distance in linear Z from the current sample to first sample is greater than this value, sampling stops in the current direction.\r\n float intensity = u_hbaoSettings.z; // Raise the final occlusion to the power of this value. Larger values make the ambient shadows darker.\r\n float texelStepSize = clamp(u_hbaoSettings.w * linearDepth, 1.0, u_hbaoSettings.w); // Indicates the distance to step toward the next texel sample in the current direction.\r\n\r\n float tOcclusion = 0.0;\r\n\r\n // loop for each direction\r\n for (int i = 0; i < 4; i++) {\r\n float newGapAngle = gapAngle * (float(i) + noiseVec.x);\r\n float cosVal = cos(newGapAngle);\r\n float sinVal = sin(newGapAngle);\r\n\r\n // rotate sampling direction\r\n vec2 rotatedSampleDirection = vec2(cosVal * sampleDirection.x - sinVal * sampleDirection.y, sinVal * sampleDirection.x + cosVal * sampleDirection.y);\r\n float curOcclusion = 0.0;\r\n float curStepSize = texelStepSize; // 1.0 = stepsize, StepSize should be specified by uniform - what are good values?\r\n\r\n // loop for each step\r\n for (int j = 0; j < 6; j++) {\r\n vec2 directionWithStep = vec2(rotatedSampleDirection.x * curStepSize * pixelSize.x, rotatedSampleDirection.y * curStepSize * pixelSize.y);\r\n vec2 newCoords = directionWithStep + tc;\r\n\r\n // do not repeat around the depth texture\r\n if(newCoords.x > 1.0 || newCoords.y > 1.0 || newCoords.x < 0.0 || newCoords.y < 0.0) {\r\n break;\r\n }\r\n\r\n db = readDepth(newCoords);\r\n float curLinearDepth = unfinalizeLinearDepth(db);\r\n float curNonLinearDepth = computeNonLinearDepth(db);\r\n vec3 curViewPos = computePositionFromDepth(newCoords, curNonLinearDepth).xyz;\r\n vec3 diffVec = curViewPos.xyz - viewPos.xyz;\r\n float zLength = abs(curLinearDepth - linearDepth);\r\n\r\n float dotVal = clamp(dot(viewNormal, normalize(diffVec)), 0.0, 1.0);\r\n float weight = smoothstep(0.0, 1.0, zLengthCap / zLength);\r\n\r\n if (dotVal < bias) {\r\n dotVal = 0.0;\r\n }\r\n\r\n curOcclusion = max(curOcclusion, dotVal * weight);\r\n curStepSize += texelStepSize;\r\n }\r\n tOcclusion += curOcclusion;\r\n }\r\n\r\n float distanceFadeFactor = kFrustumType_Perspective == u_frustum.z ? 1.0 - pow(clamp(nonLinearDepth / u_maxDistance, 0.0, 1.0), 4.0) : 1.0;\r\n tOcclusion *= distanceFadeFactor;\r\n\r\n tOcclusion /= 4.0;\r\n tOcclusion = 1.0 - clamp(tOcclusion, 0.0, 1.0);\r\n tOcclusion = pow(tOcclusion, intensity);\r\n\r\n return vec4(tOcclusion, tOcclusion, tOcclusion, 1.0);\r\n`;\r\n\r\nconst computePositionFromDepth = `\r\nvec4 computePositionFromDepth(vec2 tc, float nonLinearDepth) {\r\n if (kFrustumType_Perspective == u_frustum.z) {\r\n vec2 xy = vec2((tc.x * 2.0 - 1.0), ((1.0 - tc.y) * 2.0 - 1.0));\r\n vec4 posEC = u_invProj * vec4(xy, nonLinearDepth, 1.0);\r\n posEC = posEC / posEC.w;\r\n return posEC;\r\n } else {\r\n float top = u_frustumPlanes.x;\r\n float bottom = u_frustumPlanes.y;\r\n float left = u_frustumPlanes.z;\r\n float right = u_frustumPlanes.w;\r\n return vec4(mix(left, right, tc.x), mix(bottom, top, tc.y), nonLinearDepth, 1.0);\r\n }\r\n}\r\n`;\r\n\r\nconst computeNormalFromDepth = `\r\nvec3 computeNormalFromDepth(vec3 viewPos, vec2 tc, vec2 pixelSize) {\r\n float nonLinearDepthU = computeNonLinearDepth(readDepth(tc - vec2(0.0, pixelSize.y)));\r\n float nonLinearDepthD = computeNonLinearDepth(readDepth(tc + vec2(0.0, pixelSize.y)));\r\n float nonLinearDepthL = computeNonLinearDepth(readDepth(tc - vec2(pixelSize.x, 0.0)));\r\n float nonLinearDepthR = computeNonLinearDepth(readDepth(tc + vec2(pixelSize.x, 0.0)));\r\n\r\n vec3 viewPosUp = computePositionFromDepth(tc - vec2(0.0, pixelSize.y), nonLinearDepthU).xyz;\r\n vec3 viewPosDown = computePositionFromDepth(tc + vec2(0.0, pixelSize.y), nonLinearDepthD).xyz;\r\n vec3 viewPosLeft = computePositionFromDepth(tc - vec2(pixelSize.x, 0.0), nonLinearDepthL).xyz;\r\n vec3 viewPosRight = computePositionFromDepth(tc + vec2(pixelSize.x, 0.0), nonLinearDepthR).xyz;\r\n\r\n vec3 up = viewPos.xyz - viewPosUp.xyz;\r\n vec3 down = viewPosDown.xyz - viewPos.xyz;\r\n vec3 left = viewPos.xyz - viewPosLeft.xyz;\r\n vec3 right = viewPosRight.xyz - viewPos.xyz;\r\n\r\n vec3 dx = length(left) < length(right) ? left : right;\r\n vec3 dy = length(up) < length(down) ? up : down;\r\n\r\n return normalize(cross(dy, dx));\r\n}\r\n`;\r\n\r\nconst computeNonLinearDepthPB = `\r\nfloat computeNonLinearDepth(float linearDepth) {\r\n return mix(u_frustum.y, u_frustum.x, linearDepth);\r\n}\r\n`;\r\nconst computeNonLinearDepthDB = `\r\nfloat computeNonLinearDepth(float depth) {\r\n return 0.0 == u_logZ.x ? depth * u_logZ.y : exp(depth * u_logZ.y) / u_logZ.x;\r\n}\r\n`;\r\n\r\nconst readDepthPB = `\r\nfloat readDepth(vec2 tc) {\r\n return readDepthAndOrder(tc).y;\r\n}\r\n`;\r\nconst readDepthDB = `\r\nfloat readDepth(vec2 tc) {\r\n return TEXTURE(u_depthBuffer, tc).r;\r\n}\r\n`;\r\nconst unfinalizeLinearDepthDB = `\r\n float unfinalizeLinearDepth(float depth) {\r\n float eyeZ = 0.0 == u_logZ.x ? depth * u_logZ.y : exp(depth * u_logZ.y) / u_logZ.x;\r\n float near = u_frustum.x, far = u_frustum.y;\r\n float depthRange = far - near;\r\n float linearDepth = (eyeZ - near) / depthRange;\r\n return 1.0 - linearDepth;\r\n }\r\n`;\r\n\r\nfunction _shouldUseDB() {\r\n return System.instance.supportsLogZBuffer;\r\n}\r\n\r\n/** @internal */\r\nexport function createAmbientOcclusionProgram(context: WebGL2RenderingContext): ShaderProgram {\r\n const builder = createViewportQuadBuilder(true);\r\n const frag = builder.frag;\r\n const shouldUseDB = _shouldUseDB();\r\n\r\n addWindowToTexCoords(frag);\r\n frag.addFunction(decodeDepthRgb);\r\n frag.addFunction(readDepthAndOrder);\r\n\r\n if (shouldUseDB) {\r\n frag.addFunction(unfinalizeLinearDepthDB);\r\n frag.addFunction(computeNonLinearDepthDB);\r\n frag.addFunction(readDepthDB);\r\n } else {\r\n frag.addDefine(\"unfinalizeLinearDepth\", \"\");\r\n frag.addFunction(computeNonLinearDepthPB);\r\n frag.addFunction(readDepthPB);\r\n }\r\n\r\n frag.addFunction(computePositionFromDepth);\r\n frag.addFunction(computeNormalFromDepth);\r\n addRenderOrderConstants(frag);\r\n\r\n if (shouldUseDB)\r\n frag.addUniform(\"u_logZ\", VariableType.Vec2, (prog) => {\r\n prog.addProgramUniform(\"u_logZ\", (uniform, params) => {\r\n uniform.setUniform2fv(params.target.uniforms.frustum.logZ);\r\n });\r\n });\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, shouldUseDB ?\r\n computeAmbientOcclusionPrefixDB + computeAmbientOcclusion :\r\n computeAmbientOcclusionPrefixPB + computeAmbientOcclusion);\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n\r\n frag.addUniform(\"u_pickDepthAndOrder\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_pickDepthAndOrder\", (uniform, params) => {\r\n const geom = params.geometry as AmbientOcclusionGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.depthAndOrder, TextureUnit.Zero);\r\n });\r\n });\r\n\r\n if (shouldUseDB)\r\n frag.addUniform(\"u_depthBuffer\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_depthBuffer\", (uniform, params) => {\r\n const geom = params.geometry as AmbientOcclusionGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.depth, TextureUnit.Two);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_noise\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_noise\", (uniform, params) => {\r\n const geom = params.geometry as AmbientOcclusionGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.noise, TextureUnit.One);\r\n });\r\n });\r\n\r\n addFrustum(builder);\r\n addViewport(frag);\r\n\r\n frag.addUniform(\"u_invProj\", VariableType.Mat4, (prog) => {\r\n prog.addProgramUniform(\"u_invProj\", (uniform, params) => {\r\n const invProj = params.projectionMatrix.clone();\r\n invProj.invert();\r\n uniform.setMatrix4(invProj);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_frustumPlanes\", VariableType.Vec4, (prog) => {\r\n prog.addProgramUniform(\"u_frustumPlanes\", (uniform, params) => {\r\n uniform.setUniform4fv(params.target.uniforms.frustum.planes);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_hbaoSettings\", VariableType.Vec4, (prog) => {\r\n prog.addProgramUniform(\"u_hbaoSettings\", (uniform, params) => {\r\n const hbaoSettings = new Float32Array([\r\n params.target.ambientOcclusionSettings.bias,\r\n params.target.ambientOcclusionSettings.zLengthCap,\r\n params.target.ambientOcclusionSettings.intensity,\r\n params.target.ambientOcclusionSettings.texelStepSize]);\r\n uniform.setUniform4fv(hbaoSettings);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n frag.addUniform(\"u_maxDistance\", VariableType.Float, (prog) => {\r\n prog.addProgramUniform(\"u_maxDistance\", (uniform, params) => {\r\n uniform.setUniform1f(params.target.ambientOcclusionSettings.maxDistance);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n builder.vert.headerComment = \"//!V! AmbientOcclusion\";\r\n builder.frag.headerComment = \"//!F! AmbientOcclusion\";\r\n\r\n return builder.buildProgram(context);\r\n}\r\n"]}
1
+ {"version":3,"file":"AmbientOcclusion.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/AmbientOcclusion.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;AAuMH,sEA+FC;AAjSD,gDAA6C;AAG7C,sCAAmC;AACnC,wCAA6C;AAC7C,qCAAsC;AACtC,qCAA0C;AAC1C,yDAAgF;AAChF,yCAAmE;AACnE,yCAAyC;AACzC,iDAA2D;AAE3D,0EAA0E;AAC1E,4FAA4F;AAE5F,MAAM,+BAA+B,GAAG;;;;CAIvC,CAAC;AAEF,MAAM,+BAA+B,GAAG;;;;CAIvC,CAAC;AAEF,0EAA0E;AAC1E,yFAAyF;AACzF,wGAAwG;AACxG,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqF/B,CAAC;AAEF,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;CAehC,CAAC;AAEF,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsB9B,CAAC;AAEF,MAAM,uBAAuB,GAAG;;;;CAI/B,CAAC;AACF,MAAM,uBAAuB,GAAG;;;;CAI/B,CAAC;AAEF,MAAM,WAAW,GAAG;;;;CAInB,CAAC;AACF,MAAM,WAAW,GAAG;;;;CAInB,CAAC;AACF,MAAM,uBAAuB,GAAG;;;;;;;;CAQ/B,CAAC;AAEF,SAAS,YAAY;IACnB,OAAO,eAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC;AAC5C,CAAC;AAED,gBAAgB;AAChB,SAAgB,6BAA6B,CAAC,OAA+B;IAC3E,MAAM,OAAO,GAAG,IAAA,wCAAyB,EAAC,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,WAAW,GAAG,YAAY,EAAE,CAAC;IAEnC,IAAA,+BAAoB,EAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,WAAW,CAAC,uBAAc,CAAC,CAAC;IACjC,IAAI,CAAC,WAAW,CAAC,oCAAiB,CAAC,CAAC;IAEpC,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAC3C,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;IACzC,IAAA,0CAAuB,EAAC,IAAI,CAAC,CAAC;IAE9B,IAAI,WAAW;QACb,IAAI,CAAC,UAAU,CAAC,QAAQ,6BAAqB,CAAC,IAAI,EAAE,EAAE;YACpD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACnD,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IAEL,IAAI,CAAC,GAAG,mDAA2C,WAAW,CAAC,CAAC;QAC9D,+BAA+B,GAAG,uBAAuB,CAAC,CAAC;QAC3D,+BAA+B,GAAG,uBAAuB,CAAC,CAAC;IAC7D,IAAI,CAAC,GAAG,kDAAyC,0BAAe,CAAC,CAAC;IAElE,IAAI,CAAC,UAAU,CAAC,qBAAqB,kCAA0B,CAAC,IAAI,EAAE,EAAE;QACtE,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChE,MAAM,IAAI,GAAG,MAAM,CAAC,QAAoC,CAAC;YACzD,yBAAe,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,yBAAW,CAAC,IAAI,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,WAAW;QACb,IAAI,CAAC,UAAU,CAAC,eAAe,kCAA0B,CAAC,IAAI,EAAE,EAAE;YAChE,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,QAAoC,CAAC;gBACzD,yBAAe,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,yBAAW,CAAC,GAAG,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IAEL,IAAI,CAAC,UAAU,CAAC,SAAS,kCAA0B,CAAC,IAAI,EAAE,EAAE;QAC1D,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAoC,CAAC;YACzD,yBAAe,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,yBAAW,CAAC,GAAG,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,mBAAU,EAAC,OAAO,CAAC,CAAC;IACpB,IAAA,sBAAW,EAAC,IAAI,CAAC,CAAC;IAElB,IAAI,CAAC,UAAU,CAAC,WAAW,6BAAqB,CAAC,IAAI,EAAE,EAAE;QACvD,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtD,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAChD,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,CAAC,iBAAiB,6BAAqB,CAAC,IAAI,EAAE,EAAE;QAC7D,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5D,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,CAAC,gBAAgB,6BAAqB,CAAC,IAAI,EAAE,EAAE;QAC5D,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3D,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC;gBACpC,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI;gBAC3C,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,UAAU;gBACjD,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,SAAS;gBAChD,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,aAAa;aAAC,CAAC,CAAC;YACzD,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,iCAAyB,CAAC;IAE3B,IAAI,CAAC,UAAU,CAAC,eAAe,8BAAsB,CAAC,IAAI,EAAE,EAAE;QAC5D,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1D,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACL,CAAC,iCAAyB,CAAC;IAE3B,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,wBAAwB,CAAC;IACtD,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,wBAAwB,CAAC;IAEtD,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\n// portions adapted from Cesium.js Copyright 2011 - 2022 Cesium Contributors\r\n\r\nimport { AmbientOcclusionGeometry } from \"../CachedGeometry\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, VariablePrecision, VariableType } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { System } from \"../System\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { addFrustum } from \"./Common\";\r\nimport { decodeDepthRgb } from \"./Decode\";\r\nimport { addRenderOrderConstants, readDepthAndOrder } from \"./FeatureSymbology\";\r\nimport { addWindowToTexCoords, assignFragColor } from \"./Fragment\";\r\nimport { addViewport } from \"./Viewport\";\r\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\r\n\r\n// 'PB' indicates a shader variation when only the pickbuffer is available\r\n// 'DB' indicates a shader variation when the real floating point depth buffer is available.\r\n\r\nconst computeAmbientOcclusionPrefixPB = `\r\nvec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);\r\nvec2 depthAndOrder = readDepthAndOrder(tc);\r\nfloat db = depthAndOrder.y;\r\n`;\r\n\r\nconst computeAmbientOcclusionPrefixDB = `\r\nvec2 tc = windowCoordsToTexCoords(gl_FragCoord.xy);\r\nvec2 depthAndOrder = readDepthAndOrder(tc);\r\nfloat db = readDepth(tc);\r\n`;\r\n\r\n// This outputs 1 for unlit surfaces, and for polylines and point strings.\r\n// Otherwise it computes ambient occlusion based on normal reconstructed from pick depth.\r\n// NB: This shader code actually begins with a `computeAmbientOcclusionPrefix` variation as shown above.\r\nconst computeAmbientOcclusion = `\r\n depthAndOrder.y = unfinalizeLinearDepth(db);\r\n float order = depthAndOrder.x;\r\n if (order >= kRenderOrder_PlanarBit)\r\n order = order - kRenderOrder_PlanarBit;\r\n\r\n if (order < kRenderOrder_LitSurface || order == kRenderOrder_Linear)\r\n return vec4(1.0);\r\n\r\n // NB: linearDepth: 1 == near, 0 == far\r\n\r\n float linearDepth = depthAndOrder.y;\r\n float nonLinearDepth = computeNonLinearDepth(db);\r\n if (nonLinearDepth > u_maxDistance)\r\n return vec4(1.0);\r\n\r\n vec3 viewPos = computePositionFromDepth(tc, nonLinearDepth).xyz;\r\n\r\n vec2 pixelSize = 1.0 / u_viewport;\r\n vec3 viewNormal = computeNormalFromDepth(viewPos, tc, pixelSize);\r\n\r\n vec2 sampleDirection = vec2(1.0, 0.0);\r\n float gapAngle = 90.0 * 0.017453292519943295; // radians per degree\r\n\r\n // Grab some random noise\r\n // Multiply screen UV (range 0..1) with size of viewport divided by 4 in order to tile the 4x4 noise texture across the screen.\r\n // Multiply the random 0..1 vec3 by 2 and then substract 1. This puts the components of the vec3 in the range -1..1.\r\n vec3 noiseVec = (TEXTURE(u_noise, tc * vec2(u_viewport.x / 4.0, u_viewport.y / 4.0)).rgb + 1.0) / 2.0;\r\n\r\n float bias = u_hbaoSettings.x; // Represents an angle in radians. If the dot product between the normal of the sample and the vector to the camera is less than this value, sampling stops in the current direction. This is used to remove shadows from near planar edges.\r\n float zLengthCap = u_hbaoSettings.y; // If the distance in linear Z from the current sample to first sample is greater than this value, sampling stops in the current direction.\r\n float intensity = u_hbaoSettings.z; // Raise the final occlusion to the power of this value. Larger values make the ambient shadows darker.\r\n float texelStepSize = clamp(u_hbaoSettings.w * linearDepth, 1.0, u_hbaoSettings.w); // Indicates the distance to step toward the next texel sample in the current direction.\r\n\r\n float tOcclusion = 0.0;\r\n\r\n // loop for each direction\r\n for (int i = 0; i < 4; i++) {\r\n float newGapAngle = gapAngle * (float(i) + noiseVec.x);\r\n float cosVal = cos(newGapAngle);\r\n float sinVal = sin(newGapAngle);\r\n\r\n // rotate sampling direction\r\n vec2 rotatedSampleDirection = vec2(cosVal * sampleDirection.x - sinVal * sampleDirection.y, sinVal * sampleDirection.x + cosVal * sampleDirection.y);\r\n float curOcclusion = 0.0;\r\n float curStepSize = texelStepSize; // 1.0 = stepsize, StepSize should be specified by uniform - what are good values?\r\n\r\n // loop for each step\r\n for (int j = 0; j < 6; j++) {\r\n vec2 directionWithStep = vec2(rotatedSampleDirection.x * curStepSize * pixelSize.x, rotatedSampleDirection.y * curStepSize * pixelSize.y);\r\n vec2 newCoords = directionWithStep + tc;\r\n\r\n // do not repeat around the depth texture\r\n if(newCoords.x > 1.0 || newCoords.y > 1.0 || newCoords.x < 0.0 || newCoords.y < 0.0) {\r\n break;\r\n }\r\n\r\n db = readDepth(newCoords);\r\n float curLinearDepth = unfinalizeLinearDepth(db);\r\n float curNonLinearDepth = computeNonLinearDepth(db);\r\n vec3 curViewPos = computePositionFromDepth(newCoords, curNonLinearDepth).xyz;\r\n vec3 diffVec = curViewPos.xyz - viewPos.xyz;\r\n float zLength = abs(curLinearDepth - linearDepth);\r\n\r\n float dotVal = clamp(dot(viewNormal, normalize(diffVec)), 0.0, 1.0);\r\n float weight = smoothstep(0.0, 1.0, zLengthCap / zLength);\r\n\r\n if (dotVal < bias) {\r\n dotVal = 0.0;\r\n }\r\n\r\n curOcclusion = max(curOcclusion, dotVal * weight);\r\n curStepSize += texelStepSize;\r\n }\r\n tOcclusion += curOcclusion;\r\n }\r\n\r\n float distanceFadeFactor = kFrustumType_Perspective == u_frustum.z ? 1.0 - pow(clamp(nonLinearDepth / u_maxDistance, 0.0, 1.0), 4.0) : 1.0;\r\n tOcclusion *= distanceFadeFactor;\r\n\r\n tOcclusion /= 4.0;\r\n tOcclusion = 1.0 - clamp(tOcclusion, 0.0, 1.0);\r\n tOcclusion = pow(tOcclusion, intensity);\r\n\r\n return vec4(tOcclusion, tOcclusion, tOcclusion, 1.0);\r\n`;\r\n\r\nconst computePositionFromDepth = `\r\nvec4 computePositionFromDepth(vec2 tc, float nonLinearDepth) {\r\n if (kFrustumType_Perspective == u_frustum.z) {\r\n vec2 xy = vec2((tc.x * 2.0 - 1.0), ((1.0 - tc.y) * 2.0 - 1.0));\r\n vec4 posEC = u_invProj * vec4(xy, nonLinearDepth, 1.0);\r\n posEC = posEC / posEC.w;\r\n return posEC;\r\n } else {\r\n float top = u_frustumPlanes.x;\r\n float bottom = u_frustumPlanes.y;\r\n float left = u_frustumPlanes.z;\r\n float right = u_frustumPlanes.w;\r\n return vec4(mix(left, right, tc.x), mix(bottom, top, tc.y), nonLinearDepth, 1.0);\r\n }\r\n}\r\n`;\r\n\r\nconst computeNormalFromDepth = `\r\nvec3 computeNormalFromDepth(vec3 viewPos, vec2 tc, vec2 pixelSize) {\r\n float nonLinearDepthU = computeNonLinearDepth(readDepth(tc - vec2(0.0, pixelSize.y)));\r\n float nonLinearDepthD = computeNonLinearDepth(readDepth(tc + vec2(0.0, pixelSize.y)));\r\n float nonLinearDepthL = computeNonLinearDepth(readDepth(tc - vec2(pixelSize.x, 0.0)));\r\n float nonLinearDepthR = computeNonLinearDepth(readDepth(tc + vec2(pixelSize.x, 0.0)));\r\n\r\n vec3 viewPosUp = computePositionFromDepth(tc - vec2(0.0, pixelSize.y), nonLinearDepthU).xyz;\r\n vec3 viewPosDown = computePositionFromDepth(tc + vec2(0.0, pixelSize.y), nonLinearDepthD).xyz;\r\n vec3 viewPosLeft = computePositionFromDepth(tc - vec2(pixelSize.x, 0.0), nonLinearDepthL).xyz;\r\n vec3 viewPosRight = computePositionFromDepth(tc + vec2(pixelSize.x, 0.0), nonLinearDepthR).xyz;\r\n\r\n vec3 up = viewPos.xyz - viewPosUp.xyz;\r\n vec3 down = viewPosDown.xyz - viewPos.xyz;\r\n vec3 left = viewPos.xyz - viewPosLeft.xyz;\r\n vec3 right = viewPosRight.xyz - viewPos.xyz;\r\n\r\n vec3 dx = length(left) < length(right) ? left : right;\r\n vec3 dy = length(up) < length(down) ? up : down;\r\n\r\n return normalize(cross(dy, dx));\r\n}\r\n`;\r\n\r\nconst computeNonLinearDepthPB = `\r\nfloat computeNonLinearDepth(float linearDepth) {\r\n return mix(u_frustum.y, u_frustum.x, linearDepth);\r\n}\r\n`;\r\nconst computeNonLinearDepthDB = `\r\nfloat computeNonLinearDepth(float depth) {\r\n return 0.0 == u_logZ.x ? depth * u_logZ.y : exp(depth * u_logZ.y) / u_logZ.x;\r\n}\r\n`;\r\n\r\nconst readDepthPB = `\r\nfloat readDepth(vec2 tc) {\r\n return readDepthAndOrder(tc).y;\r\n}\r\n`;\r\nconst readDepthDB = `\r\nfloat readDepth(vec2 tc) {\r\n return TEXTURE(u_depthBuffer, tc).r;\r\n}\r\n`;\r\nconst unfinalizeLinearDepthDB = `\r\n float unfinalizeLinearDepth(float depth) {\r\n float eyeZ = 0.0 == u_logZ.x ? depth * u_logZ.y : exp(depth * u_logZ.y) / u_logZ.x;\r\n float near = u_frustum.x, far = u_frustum.y;\r\n float depthRange = far - near;\r\n float linearDepth = (eyeZ - near) / depthRange;\r\n return 1.0 - linearDepth;\r\n }\r\n`;\r\n\r\nfunction _shouldUseDB() {\r\n return System.instance.supportsLogZBuffer;\r\n}\r\n\r\n/** @internal */\r\nexport function createAmbientOcclusionProgram(context: WebGL2RenderingContext): ShaderProgram {\r\n const builder = createViewportQuadBuilder(true);\r\n const frag = builder.frag;\r\n const shouldUseDB = _shouldUseDB();\r\n\r\n addWindowToTexCoords(frag);\r\n frag.addFunction(decodeDepthRgb);\r\n frag.addFunction(readDepthAndOrder);\r\n\r\n if (shouldUseDB) {\r\n frag.addFunction(unfinalizeLinearDepthDB);\r\n frag.addFunction(computeNonLinearDepthDB);\r\n frag.addFunction(readDepthDB);\r\n } else {\r\n frag.addDefine(\"unfinalizeLinearDepth\", \"\");\r\n frag.addFunction(computeNonLinearDepthPB);\r\n frag.addFunction(readDepthPB);\r\n }\r\n\r\n frag.addFunction(computePositionFromDepth);\r\n frag.addFunction(computeNormalFromDepth);\r\n addRenderOrderConstants(frag);\r\n\r\n if (shouldUseDB)\r\n frag.addUniform(\"u_logZ\", VariableType.Vec2, (prog) => {\r\n prog.addProgramUniform(\"u_logZ\", (uniform, params) => {\r\n uniform.setUniform2fv(params.target.uniforms.frustum.logZ);\r\n });\r\n });\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, shouldUseDB ?\r\n computeAmbientOcclusionPrefixDB + computeAmbientOcclusion :\r\n computeAmbientOcclusionPrefixPB + computeAmbientOcclusion);\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n\r\n frag.addUniform(\"u_pickDepthAndOrder\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_pickDepthAndOrder\", (uniform, params) => {\r\n const geom = params.geometry as AmbientOcclusionGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.depthAndOrder, TextureUnit.Zero);\r\n });\r\n });\r\n\r\n if (shouldUseDB)\r\n frag.addUniform(\"u_depthBuffer\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_depthBuffer\", (uniform, params) => {\r\n const geom = params.geometry as AmbientOcclusionGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.depth, TextureUnit.Two);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_noise\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_noise\", (uniform, params) => {\r\n const geom = params.geometry as AmbientOcclusionGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.noise, TextureUnit.One);\r\n });\r\n });\r\n\r\n addFrustum(builder);\r\n addViewport(frag);\r\n\r\n frag.addUniform(\"u_invProj\", VariableType.Mat4, (prog) => {\r\n prog.addProgramUniform(\"u_invProj\", (uniform, params) => {\r\n const invProj = params.projectionMatrix.clone();\r\n invProj.invert();\r\n uniform.setMatrix4(invProj);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_frustumPlanes\", VariableType.Vec4, (prog) => {\r\n prog.addProgramUniform(\"u_frustumPlanes\", (uniform, params) => {\r\n uniform.setUniform4fv(params.target.uniforms.frustum.planes);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_hbaoSettings\", VariableType.Vec4, (prog) => {\r\n prog.addProgramUniform(\"u_hbaoSettings\", (uniform, params) => {\r\n const hbaoSettings = new Float32Array([\r\n params.target.ambientOcclusionSettings.bias,\r\n params.target.ambientOcclusionSettings.zLengthCap,\r\n params.target.ambientOcclusionSettings.intensity,\r\n params.target.ambientOcclusionSettings.texelStepSize]);\r\n uniform.setUniform4fv(hbaoSettings);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n frag.addUniform(\"u_maxDistance\", VariableType.Float, (prog) => {\r\n prog.addProgramUniform(\"u_maxDistance\", (uniform, params) => {\r\n uniform.setUniform1f(params.target.ambientOcclusionSettings.maxDistance);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n builder.vert.headerComment = \"//!V! AmbientOcclusion\";\r\n builder.frag.headerComment = \"//!F! AmbientOcclusion\";\r\n\r\n return builder.buildProgram(context);\r\n}\r\n"]}
@@ -7,7 +7,7 @@
7
7
  * @module WebGL
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.addAnimation = void 0;
10
+ exports.addAnimation = addAnimation;
11
11
  const core_bentley_1 = require("@itwin/core-bentley");
12
12
  const core_common_1 = require("@itwin/core-common");
13
13
  const RenderFlags_1 = require("../RenderFlags");
@@ -262,5 +262,4 @@ function addAnimation(vert, isSurface) {
262
262
  });
263
263
  }
264
264
  }
265
- exports.addAnimation = addAnimation;
266
265
  //# sourceMappingURL=Animation.js.map