@itwin/core-frontend 4.1.0-dev.35 → 4.1.0-dev.40

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 (851) hide show
  1. package/lib/cjs/AccuDraw.js.map +1 -1
  2. package/lib/cjs/AccuSnap.js.map +1 -1
  3. package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
  4. package/lib/cjs/ApproximateTerrainHeightsProps.js.map +1 -1
  5. package/lib/cjs/AuxCoordSys.js.map +1 -1
  6. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  7. package/lib/cjs/BingLocation.js.map +1 -1
  8. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  9. package/lib/cjs/BriefcaseTxns.js.map +1 -1
  10. package/lib/cjs/CategorySelectorState.js.map +1 -1
  11. package/lib/cjs/ChangeFlags.js.map +1 -1
  12. package/lib/cjs/CheckpointConnection.js.map +1 -1
  13. package/lib/cjs/CoordSystem.js.map +1 -1
  14. package/lib/cjs/DecorationsCache.js.map +1 -1
  15. package/lib/cjs/DevTools.js.map +1 -1
  16. package/lib/cjs/DisplayStyleState.js.map +1 -1
  17. package/lib/cjs/DrawingViewState.js +5 -5
  18. package/lib/cjs/DrawingViewState.js.map +1 -1
  19. package/lib/cjs/ElementLocateManager.js.map +1 -1
  20. package/lib/cjs/EmphasizeElements.js.map +1 -1
  21. package/lib/cjs/EntityState.js.map +1 -1
  22. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  23. package/lib/cjs/FeatureOverrideProvider.js.map +1 -1
  24. package/lib/cjs/FlashSettings.js.map +1 -1
  25. package/lib/cjs/FrontendHubAccess.js.map +1 -1
  26. package/lib/cjs/Frustum2d.js.map +1 -1
  27. package/lib/cjs/FrustumAnimator.js.map +1 -1
  28. package/lib/cjs/FuzzySearch.js.map +1 -1
  29. package/lib/cjs/GeoServices.js.map +1 -1
  30. package/lib/cjs/GlobeAnimator.js.map +1 -1
  31. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  32. package/lib/cjs/HitDetail.js.map +1 -1
  33. package/lib/cjs/IModelApp.js.map +1 -1
  34. package/lib/cjs/IModelConnection.js +23 -23
  35. package/lib/cjs/IModelConnection.js.map +1 -1
  36. package/lib/cjs/IModelRoutingContext.js.map +1 -1
  37. package/lib/cjs/IModeljs-css.js +133 -133
  38. package/lib/cjs/IModeljs-css.js.map +1 -1
  39. package/lib/cjs/IpcApp.js.map +1 -1
  40. package/lib/cjs/LinePlaneIntersect.js.map +1 -1
  41. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  42. package/lib/cjs/MarginPercent.js.map +1 -1
  43. package/lib/cjs/Marker.js.map +1 -1
  44. package/lib/cjs/ModelSelectorState.js.map +1 -1
  45. package/lib/cjs/NativeApp.js.map +1 -1
  46. package/lib/cjs/NativeAppLogger.js.map +1 -1
  47. package/lib/cjs/NoRenderApp.js.map +1 -1
  48. package/lib/cjs/NotificationManager.js.map +1 -1
  49. package/lib/cjs/PerModelCategoryVisibility.js.map +1 -1
  50. package/lib/cjs/PlanarClipMaskState.js.map +1 -1
  51. package/lib/cjs/RealityDataSource.js.map +1 -1
  52. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  53. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
  54. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  55. package/lib/cjs/SelectionSet.js.map +1 -1
  56. package/lib/cjs/SheetViewState.js.map +1 -1
  57. package/lib/cjs/SpatialViewState.js.map +1 -1
  58. package/lib/cjs/Sprites.js.map +1 -1
  59. package/lib/cjs/StandardView.js.map +1 -1
  60. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  61. package/lib/cjs/TentativePoint.js.map +1 -1
  62. package/lib/cjs/Tiles.js.map +1 -1
  63. package/lib/cjs/UserPreferences.js.map +1 -1
  64. package/lib/cjs/ViewAnimation.js.map +1 -1
  65. package/lib/cjs/ViewContext.js.map +1 -1
  66. package/lib/cjs/ViewCreator2d.js.map +1 -1
  67. package/lib/cjs/ViewCreator3d.js.map +1 -1
  68. package/lib/cjs/ViewGlobalLocation.js.map +1 -1
  69. package/lib/cjs/ViewManager.js.map +1 -1
  70. package/lib/cjs/ViewPose.js.map +1 -1
  71. package/lib/cjs/ViewState.js.map +1 -1
  72. package/lib/cjs/ViewStatus.js.map +1 -1
  73. package/lib/cjs/ViewingSpace.js.map +1 -1
  74. package/lib/cjs/Viewport.js.map +1 -1
  75. package/lib/cjs/ViewportSync.js.map +1 -1
  76. package/lib/cjs/common/FrontendLoggerCategory.js.map +1 -1
  77. package/lib/cjs/common/ImageUtil.js.map +1 -1
  78. package/lib/cjs/common/ViewRect.js.map +1 -1
  79. package/lib/cjs/common/WorkerProxy.js.map +1 -1
  80. package/lib/cjs/common/gltf/GltfModel.js.map +1 -1
  81. package/lib/cjs/common/gltf/GltfParser.js.map +1 -1
  82. package/lib/cjs/common/gltf/GltfSchema.js.map +1 -1
  83. package/lib/cjs/common/imdl/CompactEdges.js.map +1 -1
  84. package/lib/cjs/common/imdl/ImdlModel.js.map +1 -1
  85. package/lib/cjs/common/imdl/ImdlSchema.js.map +1 -1
  86. package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -1
  87. package/lib/cjs/common/render/AnimationNodeId.js.map +1 -1
  88. package/lib/cjs/common/render/MaterialParams.js.map +1 -1
  89. package/lib/cjs/common/render/TextureParams.js.map +1 -1
  90. package/lib/cjs/common/render/primitives/AuxChannelTable.js.map +1 -1
  91. package/lib/cjs/common/render/primitives/DisplayParams.js.map +1 -1
  92. package/lib/cjs/common/render/primitives/EdgeParams.js.map +1 -1
  93. package/lib/cjs/common/render/primitives/MeshParams.js.map +1 -1
  94. package/lib/cjs/common/render/primitives/MeshPrimitive.js.map +1 -1
  95. package/lib/cjs/common/render/primitives/PointStringParams.js.map +1 -1
  96. package/lib/cjs/common/render/primitives/PolylineParams.js.map +1 -1
  97. package/lib/cjs/common/render/primitives/SurfaceParams.js.map +1 -1
  98. package/lib/cjs/common/render/primitives/VertexIndices.js.map +1 -1
  99. package/lib/cjs/common/render/primitives/VertexTable.js.map +1 -1
  100. package/lib/cjs/common/render/primitives/VertexTableSplitter.js.map +1 -1
  101. package/lib/cjs/core-frontend.js.map +1 -1
  102. package/lib/cjs/extension/Extension.js.map +1 -1
  103. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  104. package/lib/cjs/extension/ExtensionHost.js.map +1 -1
  105. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  106. package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -1
  107. package/lib/cjs/extension/providers/LocalExtensionProvider.js.map +1 -1
  108. package/lib/cjs/extension/providers/RemoteExtensionProvider.js.map +1 -1
  109. package/lib/cjs/properties/AngleDescription.js.map +1 -1
  110. package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
  111. package/lib/cjs/properties/LengthDescription.js.map +1 -1
  112. package/lib/cjs/public/scripts/checkbrowser.js +24 -24
  113. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  114. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  115. package/lib/cjs/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
  116. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  117. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -1
  118. package/lib/cjs/quantity-formatting/UnitsData.js.map +1 -1
  119. package/lib/cjs/render/CanvasDecoration.js.map +1 -1
  120. package/lib/cjs/render/CreateRenderMaterialArgs.js.map +1 -1
  121. package/lib/cjs/render/CreateTextureArgs.js.map +1 -1
  122. package/lib/cjs/render/Decorations.js.map +1 -1
  123. package/lib/cjs/render/FeatureSymbology.js.map +1 -1
  124. package/lib/cjs/render/FrameStats.js.map +1 -1
  125. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  126. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  127. package/lib/cjs/render/GraphicPrimitive.js.map +1 -1
  128. package/lib/cjs/render/InstancedGraphicParams.js.map +1 -1
  129. package/lib/cjs/render/MockRender.js.map +1 -1
  130. package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
  131. package/lib/cjs/render/Pixel.js.map +1 -1
  132. package/lib/cjs/render/RealityMeshGraphicParams.js.map +1 -1
  133. package/lib/cjs/render/RealityMeshParams.js.map +1 -1
  134. package/lib/cjs/render/RenderClipVolume.js.map +1 -1
  135. package/lib/cjs/render/RenderGraphic.js.map +1 -1
  136. package/lib/cjs/render/RenderMemory.js.map +1 -1
  137. package/lib/cjs/render/RenderPlan.js.map +1 -1
  138. package/lib/cjs/render/RenderPlanarClassifier.js.map +1 -1
  139. package/lib/cjs/render/RenderSystem.js.map +1 -1
  140. package/lib/cjs/render/RenderTarget.js.map +1 -1
  141. package/lib/cjs/render/Scene.js.map +1 -1
  142. package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
  143. package/lib/cjs/render/UpsampleRealityMeshParams.js.map +1 -1
  144. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  145. package/lib/cjs/render/primitives/ColorMap.js.map +1 -1
  146. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
  147. package/lib/cjs/render/primitives/PointCloudPrimitive.js.map +1 -1
  148. package/lib/cjs/render/primitives/PointStringParams.js.map +1 -1
  149. package/lib/cjs/render/primitives/Polyface.js.map +1 -1
  150. package/lib/cjs/render/primitives/PolylineParams.js.map +1 -1
  151. package/lib/cjs/render/primitives/Primitives.js.map +1 -1
  152. package/lib/cjs/render/primitives/Strokes.js.map +1 -1
  153. package/lib/cjs/render/primitives/VertexKey.js.map +1 -1
  154. package/lib/cjs/render/primitives/VertexTableBuilder.js.map +1 -1
  155. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  156. package/lib/cjs/render/primitives/geometry/GeometryList.js.map +1 -1
  157. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  158. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  159. package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
  160. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  161. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  162. package/lib/cjs/render/webgl/AtmosphereUniforms.js.map +1 -1
  163. package/lib/cjs/render/webgl/AttributeBuffers.js.map +1 -1
  164. package/lib/cjs/render/webgl/AttributeMap.js.map +1 -1
  165. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  166. package/lib/cjs/render/webgl/BatchState.js.map +1 -1
  167. package/lib/cjs/render/webgl/BatchUniforms.js.map +1 -1
  168. package/lib/cjs/render/webgl/BranchStack.js.map +1 -1
  169. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  170. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  171. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  172. package/lib/cjs/render/webgl/ClipStack.js.map +1 -1
  173. package/lib/cjs/render/webgl/ClipVolume.js.map +1 -1
  174. package/lib/cjs/render/webgl/ClippingProgram.js.map +1 -1
  175. package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
  176. package/lib/cjs/render/webgl/Diagnostics.js.map +1 -1
  177. package/lib/cjs/render/webgl/Disposable.js.map +1 -1
  178. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  179. package/lib/cjs/render/webgl/EDL.js.map +1 -1
  180. package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -1
  181. package/lib/cjs/render/webgl/EdgeSettings.js.map +1 -1
  182. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  183. package/lib/cjs/render/webgl/FloatRGBA.js.map +1 -1
  184. package/lib/cjs/render/webgl/FrameBuffer.js.map +1 -1
  185. package/lib/cjs/render/webgl/FrustumUniforms.js.map +1 -1
  186. package/lib/cjs/render/webgl/GL.js.map +1 -1
  187. package/lib/cjs/render/webgl/GLTimer.js.map +1 -1
  188. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  189. package/lib/cjs/render/webgl/HiliteUniforms.js.map +1 -1
  190. package/lib/cjs/render/webgl/IModelFrameLifecycle.js.map +1 -1
  191. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  192. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  193. package/lib/cjs/render/webgl/Layer.js.map +1 -1
  194. package/lib/cjs/render/webgl/LayerCommands.js.map +1 -1
  195. package/lib/cjs/render/webgl/LightingUniforms.js.map +1 -1
  196. package/lib/cjs/render/webgl/LineCode.js.map +1 -1
  197. package/lib/cjs/render/webgl/Material.js.map +1 -1
  198. package/lib/cjs/render/webgl/Matrix.js.map +1 -1
  199. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  200. package/lib/cjs/render/webgl/MeshData.js.map +1 -1
  201. package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -1
  202. package/lib/cjs/render/webgl/PerformanceMetrics.js.map +1 -1
  203. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  204. package/lib/cjs/render/webgl/PlanarGrid.js.map +1 -1
  205. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  206. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  207. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  208. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  209. package/lib/cjs/render/webgl/Primitive.js.map +1 -1
  210. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  211. package/lib/cjs/render/webgl/RealityModelUniforms.js.map +1 -1
  212. package/lib/cjs/render/webgl/RenderBuffer.js.map +1 -1
  213. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  214. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  215. package/lib/cjs/render/webgl/RenderState.js.map +1 -1
  216. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  217. package/lib/cjs/render/webgl/ScratchDrawParams.js.map +1 -1
  218. package/lib/cjs/render/webgl/ScreenSpaceEffect.js.map +1 -1
  219. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  220. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  221. package/lib/cjs/render/webgl/ShadowUniforms.js.map +1 -1
  222. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  223. package/lib/cjs/render/webgl/StyleUniforms.js.map +1 -1
  224. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  225. package/lib/cjs/render/webgl/Sync.js.map +1 -1
  226. package/lib/cjs/render/webgl/System.js.map +1 -1
  227. package/lib/cjs/render/webgl/Target.js.map +1 -1
  228. package/lib/cjs/render/webgl/TargetGraphics.js.map +1 -1
  229. package/lib/cjs/render/webgl/TargetUniforms.js.map +1 -1
  230. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  231. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  232. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  233. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  234. package/lib/cjs/render/webgl/TextureDrape.js.map +1 -1
  235. package/lib/cjs/render/webgl/ThematicSensors.js.map +1 -1
  236. package/lib/cjs/render/webgl/ThematicUniforms.js.map +1 -1
  237. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  238. package/lib/cjs/render/webgl/VertexLUT.js.map +1 -1
  239. package/lib/cjs/render/webgl/ViewRectUniforms.js.map +1 -1
  240. package/lib/cjs/render/webgl/VisibleTileFeatures.js.map +1 -1
  241. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +154 -154
  242. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  243. package/lib/cjs/render/webgl/glsl/Animation.js +83 -83
  244. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  245. package/lib/cjs/render/webgl/glsl/Atmosphere.js +266 -266
  246. package/lib/cjs/render/webgl/glsl/Atmosphere.js.map +1 -1
  247. package/lib/cjs/render/webgl/glsl/Blur.js +37 -37
  248. package/lib/cjs/render/webgl/glsl/Blur.js.map +1 -1
  249. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +4 -4
  250. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  251. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +3 -3
  252. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  253. package/lib/cjs/render/webgl/glsl/Clipping.js +60 -60
  254. package/lib/cjs/render/webgl/glsl/Clipping.js.map +1 -1
  255. package/lib/cjs/render/webgl/glsl/Color.js +12 -12
  256. package/lib/cjs/render/webgl/glsl/Color.js.map +1 -1
  257. package/lib/cjs/render/webgl/glsl/Combine3Textures.js +7 -7
  258. package/lib/cjs/render/webgl/glsl/Combine3Textures.js.map +1 -1
  259. package/lib/cjs/render/webgl/glsl/CombineTextures.js +5 -5
  260. package/lib/cjs/render/webgl/glsl/CombineTextures.js.map +1 -1
  261. package/lib/cjs/render/webgl/glsl/Common.js +16 -16
  262. package/lib/cjs/render/webgl/glsl/Common.js.map +1 -1
  263. package/lib/cjs/render/webgl/glsl/Composite.js +71 -71
  264. package/lib/cjs/render/webgl/glsl/Composite.js.map +1 -1
  265. package/lib/cjs/render/webgl/glsl/CopyColor.js +6 -6
  266. package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
  267. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +3 -3
  268. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  269. package/lib/cjs/render/webgl/glsl/CopyStencil.js +4 -4
  270. package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
  271. package/lib/cjs/render/webgl/glsl/Decode.js +65 -65
  272. package/lib/cjs/render/webgl/glsl/Decode.js.map +1 -1
  273. package/lib/cjs/render/webgl/glsl/EDL.js +103 -103
  274. package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -1
  275. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +25 -25
  276. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  277. package/lib/cjs/render/webgl/glsl/Edge.js +146 -146
  278. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  279. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +232 -232
  280. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  281. package/lib/cjs/render/webgl/glsl/Fragment.js +41 -41
  282. package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
  283. package/lib/cjs/render/webgl/glsl/Instancing.js +21 -21
  284. package/lib/cjs/render/webgl/glsl/Instancing.js.map +1 -1
  285. package/lib/cjs/render/webgl/glsl/Lighting.js +92 -92
  286. package/lib/cjs/render/webgl/glsl/Lighting.js.map +1 -1
  287. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  288. package/lib/cjs/render/webgl/glsl/LookupTable.js +19 -19
  289. package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
  290. package/lib/cjs/render/webgl/glsl/Monochrome.js +13 -13
  291. package/lib/cjs/render/webgl/glsl/Monochrome.js.map +1 -1
  292. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +188 -188
  293. package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
  294. package/lib/cjs/render/webgl/glsl/PlanarGrid.js +22 -22
  295. package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
  296. package/lib/cjs/render/webgl/glsl/PointCloud.js +28 -28
  297. package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
  298. package/lib/cjs/render/webgl/glsl/PointString.js +9 -9
  299. package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
  300. package/lib/cjs/render/webgl/glsl/Polyline.js +213 -213
  301. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  302. package/lib/cjs/render/webgl/glsl/RealityMesh.js +83 -83
  303. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  304. package/lib/cjs/render/webgl/glsl/RenderPass.js.map +1 -1
  305. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +9 -9
  306. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  307. package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
  308. package/lib/cjs/render/webgl/glsl/SkySphere.js +49 -49
  309. package/lib/cjs/render/webgl/glsl/SkySphere.js.map +1 -1
  310. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +51 -51
  311. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  312. package/lib/cjs/render/webgl/glsl/Surface.js +239 -239
  313. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  314. package/lib/cjs/render/webgl/glsl/Thematic.js +134 -134
  315. package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
  316. package/lib/cjs/render/webgl/glsl/Translucency.js +19 -19
  317. package/lib/cjs/render/webgl/glsl/Translucency.js.map +1 -1
  318. package/lib/cjs/render/webgl/glsl/Vertex.js +73 -73
  319. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  320. package/lib/cjs/render/webgl/glsl/Viewport.js +38 -38
  321. package/lib/cjs/render/webgl/glsl/Viewport.js.map +1 -1
  322. package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
  323. package/lib/cjs/render/webgl/glsl/Wiremesh.js +10 -10
  324. package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -1
  325. package/lib/cjs/render-primitives.js.map +1 -1
  326. package/lib/cjs/request/Request.js.map +1 -1
  327. package/lib/cjs/tile/B3dmReader.js.map +1 -1
  328. package/lib/cjs/tile/BatchedTileIdMap.js.map +1 -1
  329. package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -1
  330. package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
  331. package/lib/cjs/tile/ContextShareProvider.js.map +1 -1
  332. package/lib/cjs/tile/DisclosedTileTreeSet.js.map +1 -1
  333. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  334. package/lib/cjs/tile/GltfReader.js.map +1 -1
  335. package/lib/cjs/tile/GraphicsCollector.js.map +1 -1
  336. package/lib/cjs/tile/I3dmReader.js.map +1 -1
  337. package/lib/cjs/tile/IModelTile.js.map +1 -1
  338. package/lib/cjs/tile/IModelTileRequestChannels.js.map +1 -1
  339. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  340. package/lib/cjs/tile/ImdlDecoder.js.map +1 -1
  341. package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -1
  342. package/lib/cjs/tile/ImdlParser.js.map +1 -1
  343. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  344. package/lib/cjs/tile/LRUTileList.js.map +1 -1
  345. package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -1
  346. package/lib/cjs/tile/PntsReader.js.map +1 -1
  347. package/lib/cjs/tile/RealityTile.js.map +1 -1
  348. package/lib/cjs/tile/RealityTileDrawArgs.js.map +1 -1
  349. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  350. package/lib/cjs/tile/RealityTileTree.js +1 -1
  351. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  352. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  353. package/lib/cjs/tile/Tile.js.map +1 -1
  354. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  355. package/lib/cjs/tile/TileContent.js.map +1 -1
  356. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  357. package/lib/cjs/tile/TileGeometryCollector.js.map +1 -1
  358. package/lib/cjs/tile/TileParams.js.map +1 -1
  359. package/lib/cjs/tile/TileRequest.js.map +1 -1
  360. package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
  361. package/lib/cjs/tile/TileRequestChannels.js.map +1 -1
  362. package/lib/cjs/tile/TileStorage.js.map +1 -1
  363. package/lib/cjs/tile/TileTree.js.map +1 -1
  364. package/lib/cjs/tile/TileTreeOwner.js.map +1 -1
  365. package/lib/cjs/tile/TileTreeParams.js.map +1 -1
  366. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  367. package/lib/cjs/tile/TileTreeSupplier.js.map +1 -1
  368. package/lib/cjs/tile/TileUsageMarker.js.map +1 -1
  369. package/lib/cjs/tile/TileUser.js.map +1 -1
  370. package/lib/cjs/tile/TileUserSet.js.map +1 -1
  371. package/lib/cjs/tile/TiledGraphicsProvider.js.map +1 -1
  372. package/lib/cjs/tile/ViewFlagOverrides.js.map +1 -1
  373. package/lib/cjs/tile/internal.js.map +1 -1
  374. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
  375. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  376. package/lib/cjs/tile/map/BingElevation.js.map +1 -1
  377. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  378. package/lib/cjs/tile/map/EllipsoidTerrainProvider.js.map +1 -1
  379. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  380. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  381. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  382. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  383. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  384. package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  385. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  386. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  387. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  388. package/lib/cjs/tile/map/MapFeatureInfo.js.map +1 -1
  389. package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -1
  390. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  391. package/lib/cjs/tile/map/MapLayerImageryProvider.js +2 -2
  392. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  393. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  394. package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
  395. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  396. package/lib/cjs/tile/map/MapTileAvailability.js.map +1 -1
  397. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  398. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  399. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  400. package/lib/cjs/tile/map/QuadId.js.map +1 -1
  401. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  402. package/lib/cjs/tile/map/TerrainProvider.js.map +1 -1
  403. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  404. package/lib/cjs/tile/map/WmsUtilities.js.map +1 -1
  405. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  406. package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
  407. package/lib/cjs/tools/ClipViewTool.js.map +1 -1
  408. package/lib/cjs/tools/EditManipulator.js.map +1 -1
  409. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  410. package/lib/cjs/tools/EventController.js.map +1 -1
  411. package/lib/cjs/tools/IdleTool.js.map +1 -1
  412. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  413. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  414. package/lib/cjs/tools/SelectTool.js.map +1 -1
  415. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  416. package/lib/cjs/tools/ToolAssistance.js.map +1 -1
  417. package/lib/cjs/tools/ToolSettings.js.map +1 -1
  418. package/lib/cjs/tools/ViewTool.js.map +1 -1
  419. package/lib/cjs/webgl.js.map +1 -1
  420. package/lib/cjs/workers/ImdlParser/Worker.js.map +1 -1
  421. package/lib/cjs/workers/ImdlParser/webpack.config.js +40 -40
  422. package/lib/cjs/workers/RegisterWorker.js.map +1 -1
  423. package/lib/esm/AccuDraw.js.map +1 -1
  424. package/lib/esm/AccuSnap.js.map +1 -1
  425. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  426. package/lib/esm/ApproximateTerrainHeightsProps.js.map +1 -1
  427. package/lib/esm/AuxCoordSys.js.map +1 -1
  428. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  429. package/lib/esm/BingLocation.js.map +1 -1
  430. package/lib/esm/BriefcaseConnection.js.map +1 -1
  431. package/lib/esm/BriefcaseTxns.js.map +1 -1
  432. package/lib/esm/CategorySelectorState.js.map +1 -1
  433. package/lib/esm/ChangeFlags.js.map +1 -1
  434. package/lib/esm/CheckpointConnection.js.map +1 -1
  435. package/lib/esm/CoordSystem.js.map +1 -1
  436. package/lib/esm/DecorationsCache.js.map +1 -1
  437. package/lib/esm/DevTools.js.map +1 -1
  438. package/lib/esm/DisplayStyleState.js.map +1 -1
  439. package/lib/esm/DrawingViewState.js +5 -5
  440. package/lib/esm/DrawingViewState.js.map +1 -1
  441. package/lib/esm/ElementLocateManager.js.map +1 -1
  442. package/lib/esm/EmphasizeElements.js.map +1 -1
  443. package/lib/esm/EntityState.js.map +1 -1
  444. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  445. package/lib/esm/FeatureOverrideProvider.js.map +1 -1
  446. package/lib/esm/FlashSettings.js.map +1 -1
  447. package/lib/esm/FrontendHubAccess.js.map +1 -1
  448. package/lib/esm/Frustum2d.js.map +1 -1
  449. package/lib/esm/FrustumAnimator.js.map +1 -1
  450. package/lib/esm/FuzzySearch.js.map +1 -1
  451. package/lib/esm/GeoServices.js.map +1 -1
  452. package/lib/esm/GlobeAnimator.js.map +1 -1
  453. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  454. package/lib/esm/HitDetail.js.map +1 -1
  455. package/lib/esm/IModelApp.js.map +1 -1
  456. package/lib/esm/IModelConnection.js +23 -23
  457. package/lib/esm/IModelConnection.js.map +1 -1
  458. package/lib/esm/IModelRoutingContext.js.map +1 -1
  459. package/lib/esm/IModeljs-css.js +133 -133
  460. package/lib/esm/IModeljs-css.js.map +1 -1
  461. package/lib/esm/IpcApp.js.map +1 -1
  462. package/lib/esm/LinePlaneIntersect.js.map +1 -1
  463. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  464. package/lib/esm/MarginPercent.js.map +1 -1
  465. package/lib/esm/Marker.js.map +1 -1
  466. package/lib/esm/ModelSelectorState.js.map +1 -1
  467. package/lib/esm/NativeApp.js.map +1 -1
  468. package/lib/esm/NativeAppLogger.js.map +1 -1
  469. package/lib/esm/NoRenderApp.js.map +1 -1
  470. package/lib/esm/NotificationManager.js.map +1 -1
  471. package/lib/esm/PerModelCategoryVisibility.js.map +1 -1
  472. package/lib/esm/PlanarClipMaskState.js.map +1 -1
  473. package/lib/esm/RealityDataSource.js.map +1 -1
  474. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  475. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
  476. package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  477. package/lib/esm/SelectionSet.js.map +1 -1
  478. package/lib/esm/SheetViewState.js.map +1 -1
  479. package/lib/esm/SpatialViewState.js.map +1 -1
  480. package/lib/esm/Sprites.js.map +1 -1
  481. package/lib/esm/StandardView.js.map +1 -1
  482. package/lib/esm/SubCategoriesCache.js.map +1 -1
  483. package/lib/esm/TentativePoint.js.map +1 -1
  484. package/lib/esm/Tiles.js.map +1 -1
  485. package/lib/esm/UserPreferences.js.map +1 -1
  486. package/lib/esm/ViewAnimation.js.map +1 -1
  487. package/lib/esm/ViewContext.js.map +1 -1
  488. package/lib/esm/ViewCreator2d.js.map +1 -1
  489. package/lib/esm/ViewCreator3d.js.map +1 -1
  490. package/lib/esm/ViewGlobalLocation.js.map +1 -1
  491. package/lib/esm/ViewManager.js.map +1 -1
  492. package/lib/esm/ViewPose.js.map +1 -1
  493. package/lib/esm/ViewState.js.map +1 -1
  494. package/lib/esm/ViewStatus.js.map +1 -1
  495. package/lib/esm/ViewingSpace.js.map +1 -1
  496. package/lib/esm/Viewport.js.map +1 -1
  497. package/lib/esm/ViewportSync.js.map +1 -1
  498. package/lib/esm/common/FrontendLoggerCategory.js.map +1 -1
  499. package/lib/esm/common/ImageUtil.js.map +1 -1
  500. package/lib/esm/common/ViewRect.js.map +1 -1
  501. package/lib/esm/common/WorkerProxy.js.map +1 -1
  502. package/lib/esm/common/gltf/GltfModel.js.map +1 -1
  503. package/lib/esm/common/gltf/GltfParser.js.map +1 -1
  504. package/lib/esm/common/gltf/GltfSchema.js.map +1 -1
  505. package/lib/esm/common/imdl/CompactEdges.js.map +1 -1
  506. package/lib/esm/common/imdl/ImdlModel.js.map +1 -1
  507. package/lib/esm/common/imdl/ImdlSchema.js.map +1 -1
  508. package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -1
  509. package/lib/esm/common/render/AnimationNodeId.js.map +1 -1
  510. package/lib/esm/common/render/MaterialParams.js.map +1 -1
  511. package/lib/esm/common/render/TextureParams.js.map +1 -1
  512. package/lib/esm/common/render/primitives/AuxChannelTable.js.map +1 -1
  513. package/lib/esm/common/render/primitives/DisplayParams.js.map +1 -1
  514. package/lib/esm/common/render/primitives/EdgeParams.js.map +1 -1
  515. package/lib/esm/common/render/primitives/MeshParams.js.map +1 -1
  516. package/lib/esm/common/render/primitives/MeshPrimitive.js.map +1 -1
  517. package/lib/esm/common/render/primitives/PointStringParams.js.map +1 -1
  518. package/lib/esm/common/render/primitives/PolylineParams.js.map +1 -1
  519. package/lib/esm/common/render/primitives/SurfaceParams.js.map +1 -1
  520. package/lib/esm/common/render/primitives/VertexIndices.js.map +1 -1
  521. package/lib/esm/common/render/primitives/VertexTable.js.map +1 -1
  522. package/lib/esm/common/render/primitives/VertexTableSplitter.js.map +1 -1
  523. package/lib/esm/core-frontend.js.map +1 -1
  524. package/lib/esm/extension/Extension.js.map +1 -1
  525. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  526. package/lib/esm/extension/ExtensionHost.js.map +1 -1
  527. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  528. package/lib/esm/extension/providers/ExtensionLoadScript.js.map +1 -1
  529. package/lib/esm/extension/providers/LocalExtensionProvider.js.map +1 -1
  530. package/lib/esm/extension/providers/RemoteExtensionProvider.js.map +1 -1
  531. package/lib/esm/properties/AngleDescription.js.map +1 -1
  532. package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
  533. package/lib/esm/properties/LengthDescription.js.map +1 -1
  534. package/lib/esm/public/scripts/checkbrowser.js +24 -24
  535. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  536. package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  537. package/lib/esm/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
  538. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  539. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -1
  540. package/lib/esm/quantity-formatting/UnitsData.js.map +1 -1
  541. package/lib/esm/render/CanvasDecoration.js.map +1 -1
  542. package/lib/esm/render/CreateRenderMaterialArgs.js.map +1 -1
  543. package/lib/esm/render/CreateTextureArgs.js.map +1 -1
  544. package/lib/esm/render/Decorations.js.map +1 -1
  545. package/lib/esm/render/FeatureSymbology.js.map +1 -1
  546. package/lib/esm/render/FrameStats.js.map +1 -1
  547. package/lib/esm/render/GraphicBranch.js.map +1 -1
  548. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  549. package/lib/esm/render/GraphicPrimitive.js.map +1 -1
  550. package/lib/esm/render/InstancedGraphicParams.js.map +1 -1
  551. package/lib/esm/render/MockRender.js.map +1 -1
  552. package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
  553. package/lib/esm/render/Pixel.js.map +1 -1
  554. package/lib/esm/render/RealityMeshGraphicParams.js.map +1 -1
  555. package/lib/esm/render/RealityMeshParams.js.map +1 -1
  556. package/lib/esm/render/RenderClipVolume.js.map +1 -1
  557. package/lib/esm/render/RenderGraphic.js.map +1 -1
  558. package/lib/esm/render/RenderMemory.js.map +1 -1
  559. package/lib/esm/render/RenderPlan.js.map +1 -1
  560. package/lib/esm/render/RenderPlanarClassifier.js.map +1 -1
  561. package/lib/esm/render/RenderSystem.js.map +1 -1
  562. package/lib/esm/render/RenderTarget.js.map +1 -1
  563. package/lib/esm/render/Scene.js.map +1 -1
  564. package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
  565. package/lib/esm/render/UpsampleRealityMeshParams.js.map +1 -1
  566. package/lib/esm/render/VisibleFeature.js.map +1 -1
  567. package/lib/esm/render/primitives/ColorMap.js.map +1 -1
  568. package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
  569. package/lib/esm/render/primitives/PointCloudPrimitive.js.map +1 -1
  570. package/lib/esm/render/primitives/PointStringParams.js.map +1 -1
  571. package/lib/esm/render/primitives/Polyface.js.map +1 -1
  572. package/lib/esm/render/primitives/PolylineParams.js.map +1 -1
  573. package/lib/esm/render/primitives/Primitives.js.map +1 -1
  574. package/lib/esm/render/primitives/Strokes.js.map +1 -1
  575. package/lib/esm/render/primitives/VertexKey.js.map +1 -1
  576. package/lib/esm/render/primitives/VertexTableBuilder.js.map +1 -1
  577. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  578. package/lib/esm/render/primitives/geometry/GeometryList.js.map +1 -1
  579. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  580. package/lib/esm/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  581. package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
  582. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  583. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  584. package/lib/esm/render/webgl/AtmosphereUniforms.js.map +1 -1
  585. package/lib/esm/render/webgl/AttributeBuffers.js.map +1 -1
  586. package/lib/esm/render/webgl/AttributeMap.js.map +1 -1
  587. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  588. package/lib/esm/render/webgl/BatchState.js.map +1 -1
  589. package/lib/esm/render/webgl/BatchUniforms.js.map +1 -1
  590. package/lib/esm/render/webgl/BranchStack.js.map +1 -1
  591. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  592. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  593. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  594. package/lib/esm/render/webgl/ClipStack.js.map +1 -1
  595. package/lib/esm/render/webgl/ClipVolume.js.map +1 -1
  596. package/lib/esm/render/webgl/ClippingProgram.js.map +1 -1
  597. package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
  598. package/lib/esm/render/webgl/Diagnostics.js.map +1 -1
  599. package/lib/esm/render/webgl/Disposable.js.map +1 -1
  600. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  601. package/lib/esm/render/webgl/EDL.js.map +1 -1
  602. package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -1
  603. package/lib/esm/render/webgl/EdgeSettings.js.map +1 -1
  604. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  605. package/lib/esm/render/webgl/FloatRGBA.js.map +1 -1
  606. package/lib/esm/render/webgl/FrameBuffer.js.map +1 -1
  607. package/lib/esm/render/webgl/FrustumUniforms.js.map +1 -1
  608. package/lib/esm/render/webgl/GL.js.map +1 -1
  609. package/lib/esm/render/webgl/GLTimer.js.map +1 -1
  610. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  611. package/lib/esm/render/webgl/HiliteUniforms.js.map +1 -1
  612. package/lib/esm/render/webgl/IModelFrameLifecycle.js.map +1 -1
  613. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  614. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  615. package/lib/esm/render/webgl/Layer.js.map +1 -1
  616. package/lib/esm/render/webgl/LayerCommands.js.map +1 -1
  617. package/lib/esm/render/webgl/LightingUniforms.js.map +1 -1
  618. package/lib/esm/render/webgl/LineCode.js.map +1 -1
  619. package/lib/esm/render/webgl/Material.js.map +1 -1
  620. package/lib/esm/render/webgl/Matrix.js.map +1 -1
  621. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  622. package/lib/esm/render/webgl/MeshData.js.map +1 -1
  623. package/lib/esm/render/webgl/MeshGeometry.js.map +1 -1
  624. package/lib/esm/render/webgl/PerformanceMetrics.js.map +1 -1
  625. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  626. package/lib/esm/render/webgl/PlanarGrid.js.map +1 -1
  627. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  628. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  629. package/lib/esm/render/webgl/PointString.js.map +1 -1
  630. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  631. package/lib/esm/render/webgl/Primitive.js.map +1 -1
  632. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  633. package/lib/esm/render/webgl/RealityModelUniforms.js.map +1 -1
  634. package/lib/esm/render/webgl/RenderBuffer.js.map +1 -1
  635. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  636. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  637. package/lib/esm/render/webgl/RenderState.js.map +1 -1
  638. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  639. package/lib/esm/render/webgl/ScratchDrawParams.js.map +1 -1
  640. package/lib/esm/render/webgl/ScreenSpaceEffect.js.map +1 -1
  641. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  642. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  643. package/lib/esm/render/webgl/ShadowUniforms.js.map +1 -1
  644. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  645. package/lib/esm/render/webgl/StyleUniforms.js.map +1 -1
  646. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
  647. package/lib/esm/render/webgl/Sync.js.map +1 -1
  648. package/lib/esm/render/webgl/System.js.map +1 -1
  649. package/lib/esm/render/webgl/Target.js.map +1 -1
  650. package/lib/esm/render/webgl/TargetGraphics.js.map +1 -1
  651. package/lib/esm/render/webgl/TargetUniforms.js.map +1 -1
  652. package/lib/esm/render/webgl/Technique.js.map +1 -1
  653. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  654. package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
  655. package/lib/esm/render/webgl/Texture.js.map +1 -1
  656. package/lib/esm/render/webgl/TextureDrape.js.map +1 -1
  657. package/lib/esm/render/webgl/ThematicSensors.js.map +1 -1
  658. package/lib/esm/render/webgl/ThematicUniforms.js.map +1 -1
  659. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  660. package/lib/esm/render/webgl/VertexLUT.js.map +1 -1
  661. package/lib/esm/render/webgl/ViewRectUniforms.js.map +1 -1
  662. package/lib/esm/render/webgl/VisibleTileFeatures.js.map +1 -1
  663. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +154 -154
  664. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  665. package/lib/esm/render/webgl/glsl/Animation.js +83 -83
  666. package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
  667. package/lib/esm/render/webgl/glsl/Atmosphere.js +266 -266
  668. package/lib/esm/render/webgl/glsl/Atmosphere.js.map +1 -1
  669. package/lib/esm/render/webgl/glsl/Blur.js +37 -37
  670. package/lib/esm/render/webgl/glsl/Blur.js.map +1 -1
  671. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +4 -4
  672. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  673. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +3 -3
  674. package/lib/esm/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  675. package/lib/esm/render/webgl/glsl/Clipping.js +60 -60
  676. package/lib/esm/render/webgl/glsl/Clipping.js.map +1 -1
  677. package/lib/esm/render/webgl/glsl/Color.js +12 -12
  678. package/lib/esm/render/webgl/glsl/Color.js.map +1 -1
  679. package/lib/esm/render/webgl/glsl/Combine3Textures.js +7 -7
  680. package/lib/esm/render/webgl/glsl/Combine3Textures.js.map +1 -1
  681. package/lib/esm/render/webgl/glsl/CombineTextures.js +5 -5
  682. package/lib/esm/render/webgl/glsl/CombineTextures.js.map +1 -1
  683. package/lib/esm/render/webgl/glsl/Common.js +16 -16
  684. package/lib/esm/render/webgl/glsl/Common.js.map +1 -1
  685. package/lib/esm/render/webgl/glsl/Composite.js +71 -71
  686. package/lib/esm/render/webgl/glsl/Composite.js.map +1 -1
  687. package/lib/esm/render/webgl/glsl/CopyColor.js +6 -6
  688. package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
  689. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +3 -3
  690. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  691. package/lib/esm/render/webgl/glsl/CopyStencil.js +4 -4
  692. package/lib/esm/render/webgl/glsl/CopyStencil.js.map +1 -1
  693. package/lib/esm/render/webgl/glsl/Decode.js +65 -65
  694. package/lib/esm/render/webgl/glsl/Decode.js.map +1 -1
  695. package/lib/esm/render/webgl/glsl/EDL.js +103 -103
  696. package/lib/esm/render/webgl/glsl/EDL.js.map +1 -1
  697. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +25 -25
  698. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  699. package/lib/esm/render/webgl/glsl/Edge.js +146 -146
  700. package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
  701. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +232 -232
  702. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  703. package/lib/esm/render/webgl/glsl/Fragment.js +41 -41
  704. package/lib/esm/render/webgl/glsl/Fragment.js.map +1 -1
  705. package/lib/esm/render/webgl/glsl/Instancing.js +21 -21
  706. package/lib/esm/render/webgl/glsl/Instancing.js.map +1 -1
  707. package/lib/esm/render/webgl/glsl/Lighting.js +92 -92
  708. package/lib/esm/render/webgl/glsl/Lighting.js.map +1 -1
  709. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  710. package/lib/esm/render/webgl/glsl/LookupTable.js +19 -19
  711. package/lib/esm/render/webgl/glsl/LookupTable.js.map +1 -1
  712. package/lib/esm/render/webgl/glsl/Monochrome.js +13 -13
  713. package/lib/esm/render/webgl/glsl/Monochrome.js.map +1 -1
  714. package/lib/esm/render/webgl/glsl/PlanarClassification.js +188 -188
  715. package/lib/esm/render/webgl/glsl/PlanarClassification.js.map +1 -1
  716. package/lib/esm/render/webgl/glsl/PlanarGrid.js +22 -22
  717. package/lib/esm/render/webgl/glsl/PlanarGrid.js.map +1 -1
  718. package/lib/esm/render/webgl/glsl/PointCloud.js +28 -28
  719. package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
  720. package/lib/esm/render/webgl/glsl/PointString.js +9 -9
  721. package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
  722. package/lib/esm/render/webgl/glsl/Polyline.js +213 -213
  723. package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
  724. package/lib/esm/render/webgl/glsl/RealityMesh.js +83 -83
  725. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  726. package/lib/esm/render/webgl/glsl/RenderPass.js.map +1 -1
  727. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +9 -9
  728. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  729. package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
  730. package/lib/esm/render/webgl/glsl/SkySphere.js +49 -49
  731. package/lib/esm/render/webgl/glsl/SkySphere.js.map +1 -1
  732. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +51 -51
  733. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  734. package/lib/esm/render/webgl/glsl/Surface.js +239 -239
  735. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  736. package/lib/esm/render/webgl/glsl/Thematic.js +134 -134
  737. package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
  738. package/lib/esm/render/webgl/glsl/Translucency.js +19 -19
  739. package/lib/esm/render/webgl/glsl/Translucency.js.map +1 -1
  740. package/lib/esm/render/webgl/glsl/Vertex.js +73 -73
  741. package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
  742. package/lib/esm/render/webgl/glsl/Viewport.js +38 -38
  743. package/lib/esm/render/webgl/glsl/Viewport.js.map +1 -1
  744. package/lib/esm/render/webgl/glsl/ViewportQuad.js.map +1 -1
  745. package/lib/esm/render/webgl/glsl/Wiremesh.js +10 -10
  746. package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -1
  747. package/lib/esm/render-primitives.js.map +1 -1
  748. package/lib/esm/request/Request.js.map +1 -1
  749. package/lib/esm/tile/B3dmReader.js.map +1 -1
  750. package/lib/esm/tile/BatchedTileIdMap.js.map +1 -1
  751. package/lib/esm/tile/CesiumAssetProvider.js.map +1 -1
  752. package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
  753. package/lib/esm/tile/ContextShareProvider.js.map +1 -1
  754. package/lib/esm/tile/DisclosedTileTreeSet.js.map +1 -1
  755. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  756. package/lib/esm/tile/GltfReader.js.map +1 -1
  757. package/lib/esm/tile/GraphicsCollector.js.map +1 -1
  758. package/lib/esm/tile/I3dmReader.js.map +1 -1
  759. package/lib/esm/tile/IModelTile.js.map +1 -1
  760. package/lib/esm/tile/IModelTileRequestChannels.js.map +1 -1
  761. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  762. package/lib/esm/tile/ImdlDecoder.js.map +1 -1
  763. package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -1
  764. package/lib/esm/tile/ImdlParser.js.map +1 -1
  765. package/lib/esm/tile/ImdlReader.js.map +1 -1
  766. package/lib/esm/tile/LRUTileList.js.map +1 -1
  767. package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -1
  768. package/lib/esm/tile/PntsReader.js.map +1 -1
  769. package/lib/esm/tile/RealityTile.js.map +1 -1
  770. package/lib/esm/tile/RealityTileDrawArgs.js.map +1 -1
  771. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  772. package/lib/esm/tile/RealityTileTree.js +1 -1
  773. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  774. package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  775. package/lib/esm/tile/Tile.js.map +1 -1
  776. package/lib/esm/tile/TileAdmin.js.map +1 -1
  777. package/lib/esm/tile/TileContent.js.map +1 -1
  778. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  779. package/lib/esm/tile/TileGeometryCollector.js.map +1 -1
  780. package/lib/esm/tile/TileParams.js.map +1 -1
  781. package/lib/esm/tile/TileRequest.js.map +1 -1
  782. package/lib/esm/tile/TileRequestChannel.js.map +1 -1
  783. package/lib/esm/tile/TileRequestChannels.js.map +1 -1
  784. package/lib/esm/tile/TileStorage.js.map +1 -1
  785. package/lib/esm/tile/TileTree.js.map +1 -1
  786. package/lib/esm/tile/TileTreeOwner.js.map +1 -1
  787. package/lib/esm/tile/TileTreeParams.js.map +1 -1
  788. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  789. package/lib/esm/tile/TileTreeSupplier.js.map +1 -1
  790. package/lib/esm/tile/TileUsageMarker.js.map +1 -1
  791. package/lib/esm/tile/TileUser.js.map +1 -1
  792. package/lib/esm/tile/TileUserSet.js.map +1 -1
  793. package/lib/esm/tile/TiledGraphicsProvider.js.map +1 -1
  794. package/lib/esm/tile/ViewFlagOverrides.js.map +1 -1
  795. package/lib/esm/tile/internal.js.map +1 -1
  796. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
  797. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  798. package/lib/esm/tile/map/BingElevation.js.map +1 -1
  799. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  800. package/lib/esm/tile/map/EllipsoidTerrainProvider.js.map +1 -1
  801. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  802. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  803. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  804. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  805. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  806. package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  807. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  808. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  809. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  810. package/lib/esm/tile/map/MapFeatureInfo.js.map +1 -1
  811. package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -1
  812. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  813. package/lib/esm/tile/map/MapLayerImageryProvider.js +2 -2
  814. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  815. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  816. package/lib/esm/tile/map/MapLayerTileTreeReference.js.map +1 -1
  817. package/lib/esm/tile/map/MapTile.js.map +1 -1
  818. package/lib/esm/tile/map/MapTileAvailability.js.map +1 -1
  819. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  820. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  821. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  822. package/lib/esm/tile/map/QuadId.js.map +1 -1
  823. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  824. package/lib/esm/tile/map/TerrainProvider.js.map +1 -1
  825. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  826. package/lib/esm/tile/map/WmsUtilities.js.map +1 -1
  827. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  828. package/lib/esm/tools/AccuDrawTool.js.map +1 -1
  829. package/lib/esm/tools/ClipViewTool.js.map +1 -1
  830. package/lib/esm/tools/EditManipulator.js.map +1 -1
  831. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  832. package/lib/esm/tools/EventController.js.map +1 -1
  833. package/lib/esm/tools/IdleTool.js.map +1 -1
  834. package/lib/esm/tools/MeasureTool.js.map +1 -1
  835. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  836. package/lib/esm/tools/SelectTool.js.map +1 -1
  837. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  838. package/lib/esm/tools/ToolAssistance.js.map +1 -1
  839. package/lib/esm/tools/ToolSettings.js.map +1 -1
  840. package/lib/esm/tools/ViewTool.js.map +1 -1
  841. package/lib/esm/webgl.js.map +1 -1
  842. package/lib/esm/workers/ImdlParser/Worker.js.map +1 -1
  843. package/lib/esm/workers/ImdlParser/webpack.config.js +40 -40
  844. package/lib/esm/workers/RegisterWorker.js.map +1 -1
  845. package/lib/public/assets/MapLayerSources.json +25 -25
  846. package/lib/public/images/cesium-ion.svg +92 -92
  847. package/lib/public/images/imodeljs-icon.svg +2 -2
  848. package/lib/public/locales/en/CoreTools.json +477 -477
  849. package/lib/public/locales/en/iModelJs.json +170 -170
  850. package/lib/public/scripts/checkbrowser.js +24 -24
  851. package/package.json +23 -22
@@ -1 +1 @@
1
- {"version":3,"file":"Combine3Textures.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Combine3Textures.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAE7C,MAAM,cAAc,GAAG;;;;;;;CAOtB,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,6BAA6B,CAAC,OAA+B;IAC3E,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,CAAC,GAAG,mDAA2C,gBAAgB,CAAC,CAAC;IAErE,IAAI,CAAC,UAAU,CAAC,YAAY,kCAA0B,CAAC,IAAI,EAAE,EAAE;QAC7D,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,eAAe,CAAC,WAAW,CAAC,OAAO,EAAG,MAAM,CAAC,QAAqC,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QACjH,CAAC,CAAC,CAAC;IACL,CAAC,iCAAyB,CAAC;IAE3B,IAAI,CAAC,UAAU,CAAC,YAAY,kCAA0B,CAAC,IAAI,EAAE,EAAE;QAC7D,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,eAAe,CAAC,WAAW,CAAC,OAAO,EAAG,MAAM,CAAC,QAAqC,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;IACL,CAAC,iCAAyB,CAAC;IAE3B,IAAI,CAAC,UAAU,CAAC,YAAY,kCAA0B,CAAC,IAAI,EAAE,EAAE;QAC7D,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,eAAe,CAAC,WAAW,CAAC,OAAO,EAAG,MAAM,CAAC,QAAqC,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;IACL,CAAC,iCAAyB,CAAC;IAE3B,IAAI,CAAC,GAAG,kDAAyC,cAAc,CAAC,CAAC;IAEjE,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\nimport { Combine3TexturesGeometry } from \"../CachedGeometry\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, VariablePrecision, VariableType } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\r\n\r\nconst computeBaseColor = \"return vec4(1.0);\";\r\n\r\nconst assignFragData = `\r\n if (v_texCoord.y < (1.0 / 3.0))\r\n FragColor = TEXTURE(u_texture0, vec2(v_texCoord.x, v_texCoord.y * 3.0));\r\n else if (v_texCoord.y < (2.0 / 3.0))\r\n FragColor = TEXTURE(u_texture1, vec2(v_texCoord.x, v_texCoord.y * 3.0 - 1.0));\r\n else\r\n FragColor = TEXTURE(u_texture2, vec2(v_texCoord.x, v_texCoord.y * 3.0 - 2.0));\r\n`;\r\n\r\n/** @internal */\r\nexport function createCombine3TexturesProgram(context: WebGL2RenderingContext): ShaderProgram {\r\n const builder = createViewportQuadBuilder(true);\r\n const frag = builder.frag;\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\r\n\r\n frag.addUniform(\"u_texture0\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_texture0\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as Combine3TexturesGeometry).texture0, TextureUnit.Zero);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n frag.addUniform(\"u_texture1\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_texture1\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as Combine3TexturesGeometry).texture1, TextureUnit.One);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n frag.addUniform(\"u_texture2\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_texture2\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as Combine3TexturesGeometry).texture2, TextureUnit.Two);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragData);\r\n\r\n builder.vert.headerComment = \"//!V! Combine3Textures\";\r\n builder.frag.headerComment = \"//!F! Combine3Textures\";\r\n\r\n return builder.buildProgram(context);\r\n}\r\n"]}
1
+ {"version":3,"file":"Combine3Textures.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Combine3Textures.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAE7C,MAAM,cAAc,GAAG;;;;;;;CAOtB,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,6BAA6B,CAAC,OAA+B;IAC3E,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,CAAC,GAAG,mDAA2C,gBAAgB,CAAC,CAAC;IAErE,IAAI,CAAC,UAAU,CAAC,YAAY,kCAA0B,CAAC,IAAI,EAAE,EAAE;QAC7D,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,eAAe,CAAC,WAAW,CAAC,OAAO,EAAG,MAAM,CAAC,QAAqC,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QACjH,CAAC,CAAC,CAAC;IACL,CAAC,iCAAyB,CAAC;IAE3B,IAAI,CAAC,UAAU,CAAC,YAAY,kCAA0B,CAAC,IAAI,EAAE,EAAE;QAC7D,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,eAAe,CAAC,WAAW,CAAC,OAAO,EAAG,MAAM,CAAC,QAAqC,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;IACL,CAAC,iCAAyB,CAAC;IAE3B,IAAI,CAAC,UAAU,CAAC,YAAY,kCAA0B,CAAC,IAAI,EAAE,EAAE;QAC7D,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,eAAe,CAAC,WAAW,CAAC,OAAO,EAAG,MAAM,CAAC,QAAqC,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;IACL,CAAC,iCAAyB,CAAC;IAE3B,IAAI,CAAC,GAAG,kDAAyC,cAAc,CAAC,CAAC;IAEjE,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":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { Combine3TexturesGeometry } from \"../CachedGeometry\";\nimport { TextureUnit } from \"../RenderFlags\";\nimport { FragmentShaderComponent, VariablePrecision, VariableType } from \"../ShaderBuilder\";\nimport { ShaderProgram } from \"../ShaderProgram\";\nimport { Texture2DHandle } from \"../Texture\";\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\n\nconst computeBaseColor = \"return vec4(1.0);\";\n\nconst assignFragData = `\n if (v_texCoord.y < (1.0 / 3.0))\n FragColor = TEXTURE(u_texture0, vec2(v_texCoord.x, v_texCoord.y * 3.0));\n else if (v_texCoord.y < (2.0 / 3.0))\n FragColor = TEXTURE(u_texture1, vec2(v_texCoord.x, v_texCoord.y * 3.0 - 1.0));\n else\n FragColor = TEXTURE(u_texture2, vec2(v_texCoord.x, v_texCoord.y * 3.0 - 2.0));\n`;\n\n/** @internal */\nexport function createCombine3TexturesProgram(context: WebGL2RenderingContext): ShaderProgram {\n const builder = createViewportQuadBuilder(true);\n const frag = builder.frag;\n\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\n\n frag.addUniform(\"u_texture0\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"u_texture0\", (uniform, params) => {\n Texture2DHandle.bindSampler(uniform, (params.geometry as Combine3TexturesGeometry).texture0, TextureUnit.Zero);\n });\n }, VariablePrecision.High);\n\n frag.addUniform(\"u_texture1\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"u_texture1\", (uniform, params) => {\n Texture2DHandle.bindSampler(uniform, (params.geometry as Combine3TexturesGeometry).texture1, TextureUnit.One);\n });\n }, VariablePrecision.High);\n\n frag.addUniform(\"u_texture2\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"u_texture2\", (uniform, params) => {\n Texture2DHandle.bindSampler(uniform, (params.geometry as Combine3TexturesGeometry).texture2, TextureUnit.Two);\n });\n }, VariablePrecision.High);\n\n frag.set(FragmentShaderComponent.AssignFragData, assignFragData);\n\n builder.vert.headerComment = \"//!V! Combine3Textures\";\n builder.frag.headerComment = \"//!F! Combine3Textures\";\n\n return builder.buildProgram(context);\n}\n"]}
@@ -9,11 +9,11 @@ import { TextureUnit } from "../RenderFlags";
9
9
  import { Texture2DHandle } from "../Texture";
10
10
  import { createViewportQuadBuilder } from "./ViewportQuad";
11
11
  const computeBaseColor = "return vec4(1.0);";
12
- const assignFragData = `
13
- if (v_texCoord.y < .5)
14
- FragColor = TEXTURE(u_texture0, vec2(v_texCoord.x, v_texCoord.y * 2.0));
15
- else
16
- FragColor = TEXTURE(u_texture1, vec2(v_texCoord.x, v_texCoord.y * 2.0 - 1.0));
12
+ const assignFragData = `
13
+ if (v_texCoord.y < .5)
14
+ FragColor = TEXTURE(u_texture0, vec2(v_texCoord.x, v_texCoord.y * 2.0));
15
+ else
16
+ FragColor = TEXTURE(u_texture1, vec2(v_texCoord.x, v_texCoord.y * 2.0 - 1.0));
17
17
  `;
18
18
  /** @internal */
19
19
  export function createCombineTexturesProgram(context) {
@@ -1 +1 @@
1
- {"version":3,"file":"CombineTextures.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CombineTextures.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAE7C,MAAM,cAAc,GAAG;;;;;CAKtB,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,4BAA4B,CAAC,OAA+B;IAC1E,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,CAAC,GAAG,mDAA2C,gBAAgB,CAAC,CAAC;IAErE,IAAI,CAAC,UAAU,CAAC,YAAY,kCAA0B,CAAC,IAAI,EAAE,EAAE;QAC7D,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,eAAe,CAAC,WAAW,CAAC,OAAO,EAAG,MAAM,CAAC,QAAoC,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;IACL,CAAC,iCAAyB,CAAC;IAE3B,IAAI,CAAC,UAAU,CAAC,YAAY,kCAA0B,CAAC,IAAI,EAAE,EAAE;QAC7D,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,eAAe,CAAC,WAAW,CAAC,OAAO,EAAG,MAAM,CAAC,QAAoC,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;QAC/G,CAAC,CAAC,CAAC;IACL,CAAC,iCAAyB,CAAC;IAE3B,IAAI,CAAC,GAAG,kDAAyC,cAAc,CAAC,CAAC;IAEjE,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,uBAAuB,CAAC;IACrD,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,uBAAuB,CAAC;IAErD,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\nimport { CombineTexturesGeometry } from \"../CachedGeometry\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, VariablePrecision, VariableType } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\r\n\r\nconst computeBaseColor = \"return vec4(1.0);\";\r\n\r\nconst assignFragData = `\r\n if (v_texCoord.y < .5)\r\n FragColor = TEXTURE(u_texture0, vec2(v_texCoord.x, v_texCoord.y * 2.0));\r\n else\r\n FragColor = TEXTURE(u_texture1, vec2(v_texCoord.x, v_texCoord.y * 2.0 - 1.0));\r\n`;\r\n\r\n/** @internal */\r\nexport function createCombineTexturesProgram(context: WebGL2RenderingContext): ShaderProgram {\r\n const builder = createViewportQuadBuilder(true);\r\n const frag = builder.frag;\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\r\n\r\n frag.addUniform(\"u_texture0\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_texture0\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as CombineTexturesGeometry).texture0, TextureUnit.Zero);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n frag.addUniform(\"u_texture1\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_texture1\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as CombineTexturesGeometry).texture1, TextureUnit.One);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragData);\r\n\r\n builder.vert.headerComment = \"//!V! CombineTextures\";\r\n builder.frag.headerComment = \"//!F! CombineTextures\";\r\n\r\n return builder.buildProgram(context);\r\n}\r\n"]}
1
+ {"version":3,"file":"CombineTextures.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CombineTextures.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAE7C,MAAM,cAAc,GAAG;;;;;CAKtB,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,4BAA4B,CAAC,OAA+B;IAC1E,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,CAAC,GAAG,mDAA2C,gBAAgB,CAAC,CAAC;IAErE,IAAI,CAAC,UAAU,CAAC,YAAY,kCAA0B,CAAC,IAAI,EAAE,EAAE;QAC7D,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,eAAe,CAAC,WAAW,CAAC,OAAO,EAAG,MAAM,CAAC,QAAoC,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;IACL,CAAC,iCAAyB,CAAC;IAE3B,IAAI,CAAC,UAAU,CAAC,YAAY,kCAA0B,CAAC,IAAI,EAAE,EAAE;QAC7D,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,eAAe,CAAC,WAAW,CAAC,OAAO,EAAG,MAAM,CAAC,QAAoC,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;QAC/G,CAAC,CAAC,CAAC;IACL,CAAC,iCAAyB,CAAC;IAE3B,IAAI,CAAC,GAAG,kDAAyC,cAAc,CAAC,CAAC;IAEjE,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,uBAAuB,CAAC;IACrD,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,uBAAuB,CAAC;IAErD,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { CombineTexturesGeometry } from \"../CachedGeometry\";\nimport { TextureUnit } from \"../RenderFlags\";\nimport { FragmentShaderComponent, VariablePrecision, VariableType } from \"../ShaderBuilder\";\nimport { ShaderProgram } from \"../ShaderProgram\";\nimport { Texture2DHandle } from \"../Texture\";\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\n\nconst computeBaseColor = \"return vec4(1.0);\";\n\nconst assignFragData = `\n if (v_texCoord.y < .5)\n FragColor = TEXTURE(u_texture0, vec2(v_texCoord.x, v_texCoord.y * 2.0));\n else\n FragColor = TEXTURE(u_texture1, vec2(v_texCoord.x, v_texCoord.y * 2.0 - 1.0));\n`;\n\n/** @internal */\nexport function createCombineTexturesProgram(context: WebGL2RenderingContext): ShaderProgram {\n const builder = createViewportQuadBuilder(true);\n const frag = builder.frag;\n\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\n\n frag.addUniform(\"u_texture0\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"u_texture0\", (uniform, params) => {\n Texture2DHandle.bindSampler(uniform, (params.geometry as CombineTexturesGeometry).texture0, TextureUnit.Zero);\n });\n }, VariablePrecision.High);\n\n frag.addUniform(\"u_texture1\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"u_texture1\", (uniform, params) => {\n Texture2DHandle.bindSampler(uniform, (params.geometry as CombineTexturesGeometry).texture1, TextureUnit.One);\n });\n }, VariablePrecision.High);\n\n frag.set(FragmentShaderComponent.AssignFragData, assignFragData);\n\n builder.vert.headerComment = \"//!V! CombineTextures\";\n builder.frag.headerComment = \"//!F! CombineTextures\";\n\n return builder.buildProgram(context);\n}\n"]}
@@ -12,11 +12,11 @@ import { addModelViewMatrix } from "./Vertex";
12
12
  // const chooseFloatWithBitFlag2 = `
13
13
  // float chooseFloatWithBitFlag(float f1, float f2, uint flags, uint n) { return 0u != (flags & n) ? f2 : f1; }
14
14
  // `;
15
- const chooseVec2With2BitFlags = `
16
- vec2 chooseVec2With2BitFlags(vec2 v1, vec2 v2, uint flags, uint n1, uint n2) { return 0u != (flags & (n1 | n2)) ? v2 : v1; }
15
+ const chooseVec2With2BitFlags = `
16
+ vec2 chooseVec2With2BitFlags(vec2 v1, vec2 v2, uint flags, uint n1, uint n2) { return 0u != (flags & (n1 | n2)) ? v2 : v1; }
17
17
  `;
18
- const chooseVec3WithBitFlag = `
19
- vec3 chooseVec3WithBitFlag(vec3 v1, vec3 v2, uint flags, uint n) { return 0u != (flags & n) ? v2 : v1; }
18
+ const chooseVec3WithBitFlag = `
19
+ vec3 chooseVec3WithBitFlag(vec3 v1, vec3 v2, uint flags, uint n) { return 0u != (flags & n) ? v2 : v1; }
20
20
  `;
21
21
  /** @internal */
22
22
  export function addChooseVec2WithBitFlagsFunction(shader) {
@@ -105,24 +105,24 @@ export function addEyeSpace(builder) {
105
105
  builder.addInlineComputedVarying("v_eyeSpace", 4 /* VariableType.Vec3 */, computeEyeSpace);
106
106
  }
107
107
  /** @internal */
108
- export const addUInt32s = `
109
- vec4 addUInt32s(vec4 a, vec4 b) {
110
- vec4 c = a + b;
111
- if (c.x > 255.0) { c.x -= 256.0; c.y += 1.0; }
112
- if (c.y > 255.0) { c.y -= 256.0; c.z += 1.0; }
113
- if (c.z > 255.0) { c.z -= 256.0; c.w += 1.0; }
114
- return c;
115
- }
108
+ export const addUInt32s = `
109
+ vec4 addUInt32s(vec4 a, vec4 b) {
110
+ vec4 c = a + b;
111
+ if (c.x > 255.0) { c.x -= 256.0; c.y += 1.0; }
112
+ if (c.y > 255.0) { c.y -= 256.0; c.z += 1.0; }
113
+ if (c.z > 255.0) { c.z -= 256.0; c.w += 1.0; }
114
+ return c;
115
+ }
116
116
  `;
117
117
  /** Expects flags in range [0...256] with no fraction; and bit is [0..31] with no fraction.
118
118
  * Return true if bit `n` is set in `flags`.
119
119
  */
120
- const nthBitSet = `
121
- bool nthBitSet(float flags, uint n) { return 0u != (uint(flags) & n); }
120
+ const nthBitSet = `
121
+ bool nthBitSet(float flags, uint n) { return 0u != (uint(flags) & n); }
122
122
  `;
123
123
  /** @internal */
124
- const extractNthBit = `
125
- float extractNthBit(float flags, uint n) { return 0u != (uint(flags) & n) ? 1.0 : 0.0; }
124
+ const extractNthBit = `
125
+ float extractNthBit(float flags, uint n) { return 0u != (uint(flags) & n) ? 1.0 : 0.0; }
126
126
  `;
127
127
  /** @internal */
128
128
  export function addExtractNthBit(shader) {
@@ -1 +1 @@
1
- {"version":3,"file":"Common.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Common.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 { RenderType } from \"@itwin/webgl-compatibility\";\r\nimport { DrawParams } from \"../DrawCommand\";\r\nimport { UniformHandle } from \"../UniformHandle\";\r\nimport { ProgramBuilder, ShaderBuilder, ShaderType, VariableType } from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { addModelViewMatrix } from \"./Vertex\";\r\n\r\n// These are not used anywhere currently, but will leave them here commented out in case we want them later.\r\n// const chooseFloatWithBitFlag2 = `\r\n// float chooseFloatWithBitFlag(float f1, float f2, uint flags, uint n) { return 0u != (flags & n) ? f2 : f1; }\r\n// `;\r\n\r\nconst chooseVec2With2BitFlags = `\r\nvec2 chooseVec2With2BitFlags(vec2 v1, vec2 v2, uint flags, uint n1, uint n2) { return 0u != (flags & (n1 | n2)) ? v2 : v1; }\r\n`;\r\n\r\nconst chooseVec3WithBitFlag = `\r\nvec3 chooseVec3WithBitFlag(vec3 v1, vec3 v2, uint flags, uint n) { return 0u != (flags & n) ? v2 : v1; }\r\n`;\r\n\r\n/** @internal */\r\nexport function addChooseVec2WithBitFlagsFunction(shader: ShaderBuilder) {\r\n shader.addFunction(extractNthBit);\r\n shader.addFunction(chooseVec2With2BitFlags);\r\n}\r\n\r\n/** @internal */\r\nexport function addChooseVec3WithBitFlagFunction(shader: ShaderBuilder) {\r\n shader.addFunction(extractNthBit);\r\n shader.addFunction(chooseVec3WithBitFlag);\r\n}\r\n\r\nfunction addShaderFlagsConstants(shader: ShaderBuilder) {\r\n shader.addConstant(\"kShaderBit_Monochrome\", VariableType.Int, \"0\");\r\n shader.addConstant(\"kShaderBit_NonUniformColor\", VariableType.Int, \"1\");\r\n shader.addConstant(\"kShaderBit_OITFlatAlphaWeight\", VariableType.Int, \"2\");\r\n shader.addConstant(\"kShaderBit_OITScaleOutput\", VariableType.Int, \"3\");\r\n shader.addConstant(\"kShaderBit_IgnoreNonLocatable\", VariableType.Int, \"4\");\r\n}\r\n\r\nconst shaderFlagArray = new Int32Array(5);\r\nconst kShaderBitMonochrome = 0;\r\nconst kShaderBitNonUniformColor = 1;\r\nconst kShaderBitOITFlatAlphaWeight = 2;\r\nconst kShaderBitOITScaleOutput = 3;\r\nconst kShaderBitIgnoreNonLocatable = 4;\r\n\r\nfunction setShaderFlags(uniform: UniformHandle, params: DrawParams) {\r\n const monochrome = params.target.currentViewFlags.monochrome && params.geometry.wantMonochrome(params.target);\r\n shaderFlagArray[kShaderBitMonochrome] = monochrome ? 1 : 0;\r\n\r\n shaderFlagArray[kShaderBitNonUniformColor] = 0;\r\n shaderFlagArray[kShaderBitOITFlatAlphaWeight] = 0;\r\n shaderFlagArray[kShaderBitOITScaleOutput] = 0;\r\n shaderFlagArray[kShaderBitIgnoreNonLocatable] = 0;\r\n\r\n const geom = params.geometry.asLUT;\r\n if (undefined !== geom) {\r\n // Could also be RealityMeshGeometry, so only detect non-uniform color if explicitly LUTGeometry.\r\n const color = geom.getColor(params.target);\r\n if (color.isNonUniform)\r\n shaderFlagArray[kShaderBitNonUniformColor] = 1;\r\n }\r\n\r\n // Certain textures render in the translucent pass but we actually want to maintain true opacity for opaque pixels.\r\n // For these, use a constant Z to calculate alpha weight. Otherwise, the opaque things in the texture are weighted by their Z due\r\n // to the nature of the OIT algorithm. In this case, we set OITFlatAlphaWeight.\r\n\r\n // Since RGBA8 rendering is very low precision, if we are using that kind of output, we also want to flatten alpha weight.\r\n // Otherwise, the very tiny Z range makes things fade to black as the precision limit is encountered. This workaround disregards Z\r\n // in calculating the color, so it means that transparency is less accurate based on Z-ordering, but it is the best we can do with\r\n // this algorithm on low-end hardware.\r\n\r\n // Finally, the application can put the viewport into \"fadeout mode\", which explicitly enables flat alpha weight in order to de-emphasize transparent geometry.\r\n const maxRenderType = System.instance.maxRenderType;\r\n let flatAlphaWeight = RenderType.TextureUnsignedByte === maxRenderType || params.target.isFadeOutActive;\r\n if (!flatAlphaWeight) {\r\n const surface = params.geometry.asSurface;\r\n flatAlphaWeight = undefined !== surface && (surface.isGlyph || surface.isTileSection);\r\n }\r\n\r\n if (flatAlphaWeight)\r\n shaderFlagArray[kShaderBitOITFlatAlphaWeight] = 1;\r\n\r\n // If Cesium-style transparency is being used with non-float texture targets, we must scale the output in the shaders to 0-1 range.\r\n // Otherwise, it will get implicitly clamped to that range and we'll lose any semblance our desired precision (even though it is low).\r\n if (maxRenderType < RenderType.TextureHalfFloat)\r\n shaderFlagArray[kShaderBitOITScaleOutput] = 1;\r\n\r\n if (!params.target.drawNonLocatable)\r\n shaderFlagArray[kShaderBitIgnoreNonLocatable] = 1;\r\n\r\n uniform.setUniform1iv(shaderFlagArray);\r\n}\r\n\r\n/** @internal */\r\nexport function addShaderFlags(builder: ProgramBuilder) {\r\n addShaderFlagsConstants(builder.vert);\r\n addShaderFlagsConstants(builder.frag);\r\n\r\n builder.addUniformArray(\"u_shaderFlags\", VariableType.Boolean, 5, (prog) => {\r\n prog.addGraphicUniform(\"u_shaderFlags\", (uniform, params) => setShaderFlags(uniform, params));\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function addFrustum(builder: ProgramBuilder) {\r\n builder.addUniform(\"u_frustum\", VariableType.Vec3, (prog) => {\r\n prog.addProgramUniform(\"u_frustum\", (uniform, params) => {\r\n uniform.setUniform3fv(params.target.uniforms.frustum.frustum);\r\n });\r\n });\r\n\r\n builder.addGlobal(\"kFrustumType_Ortho2d\", VariableType.Float, ShaderType.Both, \"0.0\", true);\r\n builder.addGlobal(\"kFrustumType_Ortho3d\", VariableType.Float, ShaderType.Both, \"1.0\", true);\r\n builder.addGlobal(\"kFrustumType_Perspective\", VariableType.Float, ShaderType.Both, \"2.0\", true);\r\n}\r\n\r\nconst computeEyeSpace = \"v_eyeSpace = (MAT_MV * rawPosition).rgb;\";\r\n\r\n/** @internal */\r\nexport function addEyeSpace(builder: ProgramBuilder) {\r\n addModelViewMatrix(builder.vert);\r\n builder.addInlineComputedVarying(\"v_eyeSpace\", VariableType.Vec3, computeEyeSpace);\r\n}\r\n\r\n/** @internal */\r\nexport const addUInt32s = `\r\nvec4 addUInt32s(vec4 a, vec4 b) {\r\n vec4 c = a + b;\r\n if (c.x > 255.0) { c.x -= 256.0; c.y += 1.0; }\r\n if (c.y > 255.0) { c.y -= 256.0; c.z += 1.0; }\r\n if (c.z > 255.0) { c.z -= 256.0; c.w += 1.0; }\r\n return c;\r\n}\r\n`;\r\n\r\n/** Expects flags in range [0...256] with no fraction; and bit is [0..31] with no fraction.\r\n * Return true if bit `n` is set in `flags`.\r\n */\r\nconst nthBitSet = `\r\nbool nthBitSet(float flags, uint n) { return 0u != (uint(flags) & n); }\r\n`;\r\n\r\n/** @internal */\r\nconst extractNthBit = `\r\nfloat extractNthBit(float flags, uint n) { return 0u != (uint(flags) & n) ? 1.0 : 0.0; }\r\n`;\r\n\r\n/** @internal */\r\nexport function addExtractNthBit(shader: ShaderBuilder): void {\r\n shader.addFunction(nthBitSet);\r\n shader.addFunction(extractNthBit);\r\n}\r\n"]}
1
+ {"version":3,"file":"Common.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Common.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { RenderType } from \"@itwin/webgl-compatibility\";\nimport { DrawParams } from \"../DrawCommand\";\nimport { UniformHandle } from \"../UniformHandle\";\nimport { ProgramBuilder, ShaderBuilder, ShaderType, VariableType } from \"../ShaderBuilder\";\nimport { System } from \"../System\";\nimport { addModelViewMatrix } from \"./Vertex\";\n\n// These are not used anywhere currently, but will leave them here commented out in case we want them later.\n// const chooseFloatWithBitFlag2 = `\n// float chooseFloatWithBitFlag(float f1, float f2, uint flags, uint n) { return 0u != (flags & n) ? f2 : f1; }\n// `;\n\nconst chooseVec2With2BitFlags = `\nvec2 chooseVec2With2BitFlags(vec2 v1, vec2 v2, uint flags, uint n1, uint n2) { return 0u != (flags & (n1 | n2)) ? v2 : v1; }\n`;\n\nconst chooseVec3WithBitFlag = `\nvec3 chooseVec3WithBitFlag(vec3 v1, vec3 v2, uint flags, uint n) { return 0u != (flags & n) ? v2 : v1; }\n`;\n\n/** @internal */\nexport function addChooseVec2WithBitFlagsFunction(shader: ShaderBuilder) {\n shader.addFunction(extractNthBit);\n shader.addFunction(chooseVec2With2BitFlags);\n}\n\n/** @internal */\nexport function addChooseVec3WithBitFlagFunction(shader: ShaderBuilder) {\n shader.addFunction(extractNthBit);\n shader.addFunction(chooseVec3WithBitFlag);\n}\n\nfunction addShaderFlagsConstants(shader: ShaderBuilder) {\n shader.addConstant(\"kShaderBit_Monochrome\", VariableType.Int, \"0\");\n shader.addConstant(\"kShaderBit_NonUniformColor\", VariableType.Int, \"1\");\n shader.addConstant(\"kShaderBit_OITFlatAlphaWeight\", VariableType.Int, \"2\");\n shader.addConstant(\"kShaderBit_OITScaleOutput\", VariableType.Int, \"3\");\n shader.addConstant(\"kShaderBit_IgnoreNonLocatable\", VariableType.Int, \"4\");\n}\n\nconst shaderFlagArray = new Int32Array(5);\nconst kShaderBitMonochrome = 0;\nconst kShaderBitNonUniformColor = 1;\nconst kShaderBitOITFlatAlphaWeight = 2;\nconst kShaderBitOITScaleOutput = 3;\nconst kShaderBitIgnoreNonLocatable = 4;\n\nfunction setShaderFlags(uniform: UniformHandle, params: DrawParams) {\n const monochrome = params.target.currentViewFlags.monochrome && params.geometry.wantMonochrome(params.target);\n shaderFlagArray[kShaderBitMonochrome] = monochrome ? 1 : 0;\n\n shaderFlagArray[kShaderBitNonUniformColor] = 0;\n shaderFlagArray[kShaderBitOITFlatAlphaWeight] = 0;\n shaderFlagArray[kShaderBitOITScaleOutput] = 0;\n shaderFlagArray[kShaderBitIgnoreNonLocatable] = 0;\n\n const geom = params.geometry.asLUT;\n if (undefined !== geom) {\n // Could also be RealityMeshGeometry, so only detect non-uniform color if explicitly LUTGeometry.\n const color = geom.getColor(params.target);\n if (color.isNonUniform)\n shaderFlagArray[kShaderBitNonUniformColor] = 1;\n }\n\n // Certain textures render in the translucent pass but we actually want to maintain true opacity for opaque pixels.\n // For these, use a constant Z to calculate alpha weight. Otherwise, the opaque things in the texture are weighted by their Z due\n // to the nature of the OIT algorithm. In this case, we set OITFlatAlphaWeight.\n\n // Since RGBA8 rendering is very low precision, if we are using that kind of output, we also want to flatten alpha weight.\n // Otherwise, the very tiny Z range makes things fade to black as the precision limit is encountered. This workaround disregards Z\n // in calculating the color, so it means that transparency is less accurate based on Z-ordering, but it is the best we can do with\n // this algorithm on low-end hardware.\n\n // Finally, the application can put the viewport into \"fadeout mode\", which explicitly enables flat alpha weight in order to de-emphasize transparent geometry.\n const maxRenderType = System.instance.maxRenderType;\n let flatAlphaWeight = RenderType.TextureUnsignedByte === maxRenderType || params.target.isFadeOutActive;\n if (!flatAlphaWeight) {\n const surface = params.geometry.asSurface;\n flatAlphaWeight = undefined !== surface && (surface.isGlyph || surface.isTileSection);\n }\n\n if (flatAlphaWeight)\n shaderFlagArray[kShaderBitOITFlatAlphaWeight] = 1;\n\n // If Cesium-style transparency is being used with non-float texture targets, we must scale the output in the shaders to 0-1 range.\n // Otherwise, it will get implicitly clamped to that range and we'll lose any semblance our desired precision (even though it is low).\n if (maxRenderType < RenderType.TextureHalfFloat)\n shaderFlagArray[kShaderBitOITScaleOutput] = 1;\n\n if (!params.target.drawNonLocatable)\n shaderFlagArray[kShaderBitIgnoreNonLocatable] = 1;\n\n uniform.setUniform1iv(shaderFlagArray);\n}\n\n/** @internal */\nexport function addShaderFlags(builder: ProgramBuilder) {\n addShaderFlagsConstants(builder.vert);\n addShaderFlagsConstants(builder.frag);\n\n builder.addUniformArray(\"u_shaderFlags\", VariableType.Boolean, 5, (prog) => {\n prog.addGraphicUniform(\"u_shaderFlags\", (uniform, params) => setShaderFlags(uniform, params));\n });\n}\n\n/** @internal */\nexport function addFrustum(builder: ProgramBuilder) {\n builder.addUniform(\"u_frustum\", VariableType.Vec3, (prog) => {\n prog.addProgramUniform(\"u_frustum\", (uniform, params) => {\n uniform.setUniform3fv(params.target.uniforms.frustum.frustum);\n });\n });\n\n builder.addGlobal(\"kFrustumType_Ortho2d\", VariableType.Float, ShaderType.Both, \"0.0\", true);\n builder.addGlobal(\"kFrustumType_Ortho3d\", VariableType.Float, ShaderType.Both, \"1.0\", true);\n builder.addGlobal(\"kFrustumType_Perspective\", VariableType.Float, ShaderType.Both, \"2.0\", true);\n}\n\nconst computeEyeSpace = \"v_eyeSpace = (MAT_MV * rawPosition).rgb;\";\n\n/** @internal */\nexport function addEyeSpace(builder: ProgramBuilder) {\n addModelViewMatrix(builder.vert);\n builder.addInlineComputedVarying(\"v_eyeSpace\", VariableType.Vec3, computeEyeSpace);\n}\n\n/** @internal */\nexport const addUInt32s = `\nvec4 addUInt32s(vec4 a, vec4 b) {\n vec4 c = a + b;\n if (c.x > 255.0) { c.x -= 256.0; c.y += 1.0; }\n if (c.y > 255.0) { c.y -= 256.0; c.z += 1.0; }\n if (c.z > 255.0) { c.z -= 256.0; c.w += 1.0; }\n return c;\n}\n`;\n\n/** Expects flags in range [0...256] with no fraction; and bit is [0..31] with no fraction.\n * Return true if bit `n` is set in `flags`.\n */\nconst nthBitSet = `\nbool nthBitSet(float flags, uint n) { return 0u != (uint(flags) & n); }\n`;\n\n/** @internal */\nconst extractNthBit = `\nfloat extractNthBit(float flags, uint n) { return 0u != (uint(flags) & n) ? 1.0 : 0.0; }\n`;\n\n/** @internal */\nexport function addExtractNthBit(shader: ShaderBuilder): void {\n shader.addFunction(nthBitSet);\n shader.addFunction(extractNthBit);\n}\n"]}
@@ -22,84 +22,84 @@ function addHiliteSettings(frag) {
22
22
  });
23
23
  });
24
24
  }
25
- const readEdgePixel = `
26
- vec2 readEdgePixel(float xOffset, float yOffset) {
27
- vec2 t = windowCoordsToTexCoords(gl_FragCoord.xy + vec2(xOffset, yOffset));
28
- return TEXTURE(u_hilite, t).xy;
29
- }
25
+ const readEdgePixel = `
26
+ vec2 readEdgePixel(float xOffset, float yOffset) {
27
+ vec2 t = windowCoordsToTexCoords(gl_FragCoord.xy + vec2(xOffset, yOffset));
28
+ return TEXTURE(u_hilite, t).xy;
29
+ }
30
30
  `;
31
- const computeNearbyHilites = `
32
- vec2 computeNearbyHilites() {
33
- float hiliteWidth = u_hilite_width.x;
34
- float emphWidth = u_hilite_width.y;
35
- float maxWidth = max(hiliteWidth, emphWidth);
36
- if (0.0 == maxWidth)
37
- return vec2(0.0);
38
-
39
- vec2 nearest = vec2(0.0, 0.0);
40
- for (int x = -1; x <= 1; x++)
41
- for (int y = -1; y <= 1; y++)
42
- if (0 != x || 0 != y)
43
- nearest = nearest + readEdgePixel(float(x), float(y));
44
-
45
- nearest = nearest * vec2(float(hiliteWidth > 0.0), float(emphWidth > 0.0));
46
-
47
- if ((0.0 == nearest.x && hiliteWidth > 1.0) || (0.0 == nearest.y && emphWidth > 1.0)) {
48
- vec2 farthest = vec2(0.0, 0.0);
49
- for (int i = -2; i <= 2; i++) {
50
- float f = float(i);
51
- farthest = farthest + readEdgePixel(f, -2.0) + readEdgePixel(-2.0, f) + readEdgePixel(f, 2.0) + readEdgePixel(2.0, f);
52
- }
53
-
54
- farthest = farthest * vec2(float(hiliteWidth > 1.0), float(emphWidth > 1.0));
55
- nearest = nearest + farthest;
56
- }
57
-
58
- return nearest;
59
- }
31
+ const computeNearbyHilites = `
32
+ vec2 computeNearbyHilites() {
33
+ float hiliteWidth = u_hilite_width.x;
34
+ float emphWidth = u_hilite_width.y;
35
+ float maxWidth = max(hiliteWidth, emphWidth);
36
+ if (0.0 == maxWidth)
37
+ return vec2(0.0);
38
+
39
+ vec2 nearest = vec2(0.0, 0.0);
40
+ for (int x = -1; x <= 1; x++)
41
+ for (int y = -1; y <= 1; y++)
42
+ if (0 != x || 0 != y)
43
+ nearest = nearest + readEdgePixel(float(x), float(y));
44
+
45
+ nearest = nearest * vec2(float(hiliteWidth > 0.0), float(emphWidth > 0.0));
46
+
47
+ if ((0.0 == nearest.x && hiliteWidth > 1.0) || (0.0 == nearest.y && emphWidth > 1.0)) {
48
+ vec2 farthest = vec2(0.0, 0.0);
49
+ for (int i = -2; i <= 2; i++) {
50
+ float f = float(i);
51
+ farthest = farthest + readEdgePixel(f, -2.0) + readEdgePixel(-2.0, f) + readEdgePixel(f, 2.0) + readEdgePixel(2.0, f);
52
+ }
53
+
54
+ farthest = farthest * vec2(float(hiliteWidth > 1.0), float(emphWidth > 1.0));
55
+ nearest = nearest + farthest;
56
+ }
57
+
58
+ return nearest;
59
+ }
60
60
  `;
61
- const computeOpaqueColor = `
62
- vec4 computeOpaqueColor() {
63
- vec4 opaque = TEXTURE(u_opaque, v_texCoord);
64
- opaque.rgb *= computeAmbientOcclusion();
65
- return opaque;
66
- }
61
+ const computeOpaqueColor = `
62
+ vec4 computeOpaqueColor() {
63
+ vec4 opaque = TEXTURE(u_opaque, v_texCoord);
64
+ opaque.rgb *= computeAmbientOcclusion();
65
+ return opaque;
66
+ }
67
67
  `;
68
68
  const computeDefaultAmbientOcclusion = `\nfloat computeAmbientOcclusion() { return 1.0; }\n`;
69
69
  const computeAmbientOcclusion = `\nfloat computeAmbientOcclusion() { return TEXTURE(u_occlusion, v_texCoord).r; }\n`;
70
70
  const computeHiliteColor = "\nvec4 computeColor() { return computeOpaqueColor(); }\n";
71
- const computeHiliteBaseColor = `
72
- vec4 baseColor = computeColor();
73
- vec2 flags = TEXTURE(u_hilite, v_texCoord).rg;
74
- vec2 outline = computeNearbyHilites();
75
- if (u_hilite_width.y < u_hilite_width.x) { // check for emphasis outline first if it is thinner
76
- if (outline.y > 0.0 && flags.y == 0.0)
77
- return vec4(u_hilite_settings[1], 1.0);
78
- if (outline.x > 0.0 && flags.x == 0.0)
79
- return vec4(u_hilite_settings[0], 1.0);
80
- } else {
81
- if (outline.x > 0.0 && flags.x == 0.0)
82
- return vec4(u_hilite_settings[0], 1.0);
83
- if (outline.y > 0.0 && flags.y == 0.0)
84
- return vec4(u_hilite_settings[1], 1.0);
85
- }
86
- float hiliteMix = flags.x * u_hilite_settings[2][0];
87
- float emphasisMix = flags.y * u_hilite_settings[2][1];
88
- baseColor.rgb *= (1.0 - (hiliteMix + emphasisMix));
89
- baseColor.rgb += u_hilite_settings[0] * hiliteMix;
90
- baseColor.rgb += u_hilite_settings[1] * emphasisMix;
91
- return baseColor;
71
+ const computeHiliteBaseColor = `
72
+ vec4 baseColor = computeColor();
73
+ vec2 flags = TEXTURE(u_hilite, v_texCoord).rg;
74
+ vec2 outline = computeNearbyHilites();
75
+ if (u_hilite_width.y < u_hilite_width.x) { // check for emphasis outline first if it is thinner
76
+ if (outline.y > 0.0 && flags.y == 0.0)
77
+ return vec4(u_hilite_settings[1], 1.0);
78
+ if (outline.x > 0.0 && flags.x == 0.0)
79
+ return vec4(u_hilite_settings[0], 1.0);
80
+ } else {
81
+ if (outline.x > 0.0 && flags.x == 0.0)
82
+ return vec4(u_hilite_settings[0], 1.0);
83
+ if (outline.y > 0.0 && flags.y == 0.0)
84
+ return vec4(u_hilite_settings[1], 1.0);
85
+ }
86
+ float hiliteMix = flags.x * u_hilite_settings[2][0];
87
+ float emphasisMix = flags.y * u_hilite_settings[2][1];
88
+ baseColor.rgb *= (1.0 - (hiliteMix + emphasisMix));
89
+ baseColor.rgb += u_hilite_settings[0] * hiliteMix;
90
+ baseColor.rgb += u_hilite_settings[1] * emphasisMix;
91
+ return baseColor;
92
92
  `;
93
- const computeTranslucentColor = `
94
- vec4 computeColor() {
95
- vec4 opaque = computeOpaqueColor();
96
- vec4 accum = TEXTURE(u_accumulation, v_texCoord);
97
- float r = TEXTURE(u_revealage, v_texCoord).r;
98
-
99
- vec4 transparent = vec4(accum.rgb / clamp(r, 1e-4, 5e4), accum.a);
100
- vec4 col = (1.0 - transparent.a) * transparent + transparent.a * opaque;
101
- return col;
102
- }
93
+ const computeTranslucentColor = `
94
+ vec4 computeColor() {
95
+ vec4 opaque = computeOpaqueColor();
96
+ vec4 accum = TEXTURE(u_accumulation, v_texCoord);
97
+ float r = TEXTURE(u_revealage, v_texCoord).r;
98
+
99
+ vec4 transparent = vec4(accum.rgb / clamp(r, 1e-4, 5e4), accum.a);
100
+ vec4 col = (1.0 - transparent.a) * transparent + transparent.a * opaque;
101
+ return col;
102
+ }
103
103
  `;
104
104
  const computeTranslucentBaseColor = "return computeColor();";
105
105
  const computeAmbientOcclusionBaseColor = "return computeOpaqueColor();";
@@ -1 +1 @@
1
- {"version":3,"file":"Composite.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Composite.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { CompositeGeometry } from \"../CachedGeometry\";\r\nimport { CompositeFlags, TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderBuilder, FragmentShaderComponent, VariableType } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { addWindowToTexCoords, assignFragColor } from \"./Fragment\";\r\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\r\n\r\nfunction addHiliteSettings(frag: FragmentShaderBuilder): void {\r\n frag.addUniform(\"u_hilite_settings\", VariableType.Mat3, (prog) => {\r\n prog.addProgramUniform(\"u_hilite_settings\", (uniform, params) => {\r\n params.target.uniforms.hilite.bindCompositeSettings(uniform);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_hilite_width\", VariableType.Vec2, (prog) => {\r\n prog.addProgramUniform(\"u_hilite_width\", (uniform, params) => {\r\n params.target.uniforms.hilite.bindCompositeWidths(uniform);\r\n });\r\n });\r\n}\r\n\r\nconst readEdgePixel = `\r\nvec2 readEdgePixel(float xOffset, float yOffset) {\r\n vec2 t = windowCoordsToTexCoords(gl_FragCoord.xy + vec2(xOffset, yOffset));\r\n return TEXTURE(u_hilite, t).xy;\r\n}\r\n`;\r\n\r\nconst computeNearbyHilites = `\r\nvec2 computeNearbyHilites() {\r\n float hiliteWidth = u_hilite_width.x;\r\n float emphWidth = u_hilite_width.y;\r\n float maxWidth = max(hiliteWidth, emphWidth);\r\n if (0.0 == maxWidth)\r\n return vec2(0.0);\r\n\r\n vec2 nearest = vec2(0.0, 0.0);\r\n for (int x = -1; x <= 1; x++)\r\n for (int y = -1; y <= 1; y++)\r\n if (0 != x || 0 != y)\r\n nearest = nearest + readEdgePixel(float(x), float(y));\r\n\r\n nearest = nearest * vec2(float(hiliteWidth > 0.0), float(emphWidth > 0.0));\r\n\r\n if ((0.0 == nearest.x && hiliteWidth > 1.0) || (0.0 == nearest.y && emphWidth > 1.0)) {\r\n vec2 farthest = vec2(0.0, 0.0);\r\n for (int i = -2; i <= 2; i++) {\r\n float f = float(i);\r\n farthest = farthest + readEdgePixel(f, -2.0) + readEdgePixel(-2.0, f) + readEdgePixel(f, 2.0) + readEdgePixel(2.0, f);\r\n }\r\n\r\n farthest = farthest * vec2(float(hiliteWidth > 1.0), float(emphWidth > 1.0));\r\n nearest = nearest + farthest;\r\n }\r\n\r\n return nearest;\r\n}\r\n`;\r\n\r\nconst computeOpaqueColor = `\r\nvec4 computeOpaqueColor() {\r\n vec4 opaque = TEXTURE(u_opaque, v_texCoord);\r\n opaque.rgb *= computeAmbientOcclusion();\r\n return opaque;\r\n}\r\n`;\r\n\r\nconst computeDefaultAmbientOcclusion = `\\nfloat computeAmbientOcclusion() { return 1.0; }\\n`;\r\nconst computeAmbientOcclusion = `\\nfloat computeAmbientOcclusion() { return TEXTURE(u_occlusion, v_texCoord).r; }\\n`;\r\n\r\nconst computeHiliteColor = \"\\nvec4 computeColor() { return computeOpaqueColor(); }\\n\";\r\n\r\nconst computeHiliteBaseColor = `\r\n vec4 baseColor = computeColor();\r\n vec2 flags = TEXTURE(u_hilite, v_texCoord).rg;\r\n vec2 outline = computeNearbyHilites();\r\n if (u_hilite_width.y < u_hilite_width.x) { // check for emphasis outline first if it is thinner\r\n if (outline.y > 0.0 && flags.y == 0.0)\r\n return vec4(u_hilite_settings[1], 1.0);\r\n if (outline.x > 0.0 && flags.x == 0.0)\r\n return vec4(u_hilite_settings[0], 1.0);\r\n } else {\r\n if (outline.x > 0.0 && flags.x == 0.0)\r\n return vec4(u_hilite_settings[0], 1.0);\r\n if (outline.y > 0.0 && flags.y == 0.0)\r\n return vec4(u_hilite_settings[1], 1.0);\r\n }\r\n float hiliteMix = flags.x * u_hilite_settings[2][0];\r\n float emphasisMix = flags.y * u_hilite_settings[2][1];\r\n baseColor.rgb *= (1.0 - (hiliteMix + emphasisMix));\r\n baseColor.rgb += u_hilite_settings[0] * hiliteMix;\r\n baseColor.rgb += u_hilite_settings[1] * emphasisMix;\r\n return baseColor;\r\n`;\r\n\r\nconst computeTranslucentColor = `\r\nvec4 computeColor() {\r\n vec4 opaque = computeOpaqueColor();\r\n vec4 accum = TEXTURE(u_accumulation, v_texCoord);\r\n float r = TEXTURE(u_revealage, v_texCoord).r;\r\n\r\n vec4 transparent = vec4(accum.rgb / clamp(r, 1e-4, 5e4), accum.a);\r\n vec4 col = (1.0 - transparent.a) * transparent + transparent.a * opaque;\r\n return col;\r\n}\r\n`;\r\n\r\nconst computeTranslucentBaseColor = \"return computeColor();\";\r\nconst computeAmbientOcclusionBaseColor = \"return computeOpaqueColor();\";\r\n\r\n/** @internal */\r\nexport function createCompositeProgram(flags: CompositeFlags, context: WebGL2RenderingContext): ShaderProgram {\r\n assert(CompositeFlags.None !== flags);\r\n\r\n const wantHilite = CompositeFlags.None !== (flags & CompositeFlags.Hilite);\r\n const wantTranslucent = CompositeFlags.None !== (flags & CompositeFlags.Translucent);\r\n const wantOcclusion = CompositeFlags.None !== (flags & CompositeFlags.AmbientOcclusion);\r\n\r\n const builder = createViewportQuadBuilder(true);\r\n const frag = builder.frag;\r\n\r\n frag.addFunction(wantOcclusion ? computeAmbientOcclusion : computeDefaultAmbientOcclusion);\r\n frag.addFunction(computeOpaqueColor);\r\n\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n frag.addUniform(\"u_opaque\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_opaque\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as CompositeGeometry).opaque, TextureUnit.Zero);\r\n });\r\n });\r\n\r\n if (wantHilite) {\r\n addHiliteSettings(frag);\r\n addWindowToTexCoords(frag);\r\n frag.addFunction(readEdgePixel);\r\n frag.addFunction(computeNearbyHilites);\r\n\r\n frag.addUniform(\"u_hilite\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_hilite\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as CompositeGeometry).hilite, TextureUnit.Three);\r\n });\r\n });\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeHiliteBaseColor);\r\n if (!wantTranslucent) {\r\n frag.addFunction(computeHiliteColor);\r\n }\r\n }\r\n\r\n if (wantTranslucent) {\r\n frag.addUniform(\"u_accumulation\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_accumulation\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as CompositeGeometry).accum, TextureUnit.One);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_revealage\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_revealage\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as CompositeGeometry).reveal, TextureUnit.Two);\r\n });\r\n });\r\n\r\n frag.addFunction(computeTranslucentColor);\r\n if (!wantHilite) {\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeTranslucentBaseColor);\r\n }\r\n }\r\n\r\n if (wantOcclusion) {\r\n frag.addUniform(\"u_occlusion\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_occlusion\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as CompositeGeometry).occlusion!, TextureUnit.Four);\r\n });\r\n });\r\n\r\n if (!wantHilite && !wantTranslucent)\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeAmbientOcclusionBaseColor);\r\n }\r\n\r\n const flagString = (wantHilite ? \"-Hilite\" : \"\") + (wantTranslucent ? \"-Translucent\" : \"\") + (wantOcclusion ? \"-Occlusion\" : \"\");\r\n builder.vert.headerComment = `//!V! CombineTextures${flagString}`;\r\n builder.frag.headerComment = `//!F! CombineTextures${flagString}`;\r\n\r\n return builder.buildProgram(context);\r\n}\r\n"]}
1
+ {"version":3,"file":"Composite.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Composite.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { CompositeGeometry } from \"../CachedGeometry\";\nimport { CompositeFlags, TextureUnit } from \"../RenderFlags\";\nimport { FragmentShaderBuilder, FragmentShaderComponent, VariableType } from \"../ShaderBuilder\";\nimport { ShaderProgram } from \"../ShaderProgram\";\nimport { Texture2DHandle } from \"../Texture\";\nimport { addWindowToTexCoords, assignFragColor } from \"./Fragment\";\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\n\nfunction addHiliteSettings(frag: FragmentShaderBuilder): void {\n frag.addUniform(\"u_hilite_settings\", VariableType.Mat3, (prog) => {\n prog.addProgramUniform(\"u_hilite_settings\", (uniform, params) => {\n params.target.uniforms.hilite.bindCompositeSettings(uniform);\n });\n });\n\n frag.addUniform(\"u_hilite_width\", VariableType.Vec2, (prog) => {\n prog.addProgramUniform(\"u_hilite_width\", (uniform, params) => {\n params.target.uniforms.hilite.bindCompositeWidths(uniform);\n });\n });\n}\n\nconst readEdgePixel = `\nvec2 readEdgePixel(float xOffset, float yOffset) {\n vec2 t = windowCoordsToTexCoords(gl_FragCoord.xy + vec2(xOffset, yOffset));\n return TEXTURE(u_hilite, t).xy;\n}\n`;\n\nconst computeNearbyHilites = `\nvec2 computeNearbyHilites() {\n float hiliteWidth = u_hilite_width.x;\n float emphWidth = u_hilite_width.y;\n float maxWidth = max(hiliteWidth, emphWidth);\n if (0.0 == maxWidth)\n return vec2(0.0);\n\n vec2 nearest = vec2(0.0, 0.0);\n for (int x = -1; x <= 1; x++)\n for (int y = -1; y <= 1; y++)\n if (0 != x || 0 != y)\n nearest = nearest + readEdgePixel(float(x), float(y));\n\n nearest = nearest * vec2(float(hiliteWidth > 0.0), float(emphWidth > 0.0));\n\n if ((0.0 == nearest.x && hiliteWidth > 1.0) || (0.0 == nearest.y && emphWidth > 1.0)) {\n vec2 farthest = vec2(0.0, 0.0);\n for (int i = -2; i <= 2; i++) {\n float f = float(i);\n farthest = farthest + readEdgePixel(f, -2.0) + readEdgePixel(-2.0, f) + readEdgePixel(f, 2.0) + readEdgePixel(2.0, f);\n }\n\n farthest = farthest * vec2(float(hiliteWidth > 1.0), float(emphWidth > 1.0));\n nearest = nearest + farthest;\n }\n\n return nearest;\n}\n`;\n\nconst computeOpaqueColor = `\nvec4 computeOpaqueColor() {\n vec4 opaque = TEXTURE(u_opaque, v_texCoord);\n opaque.rgb *= computeAmbientOcclusion();\n return opaque;\n}\n`;\n\nconst computeDefaultAmbientOcclusion = `\\nfloat computeAmbientOcclusion() { return 1.0; }\\n`;\nconst computeAmbientOcclusion = `\\nfloat computeAmbientOcclusion() { return TEXTURE(u_occlusion, v_texCoord).r; }\\n`;\n\nconst computeHiliteColor = \"\\nvec4 computeColor() { return computeOpaqueColor(); }\\n\";\n\nconst computeHiliteBaseColor = `\n vec4 baseColor = computeColor();\n vec2 flags = TEXTURE(u_hilite, v_texCoord).rg;\n vec2 outline = computeNearbyHilites();\n if (u_hilite_width.y < u_hilite_width.x) { // check for emphasis outline first if it is thinner\n if (outline.y > 0.0 && flags.y == 0.0)\n return vec4(u_hilite_settings[1], 1.0);\n if (outline.x > 0.0 && flags.x == 0.0)\n return vec4(u_hilite_settings[0], 1.0);\n } else {\n if (outline.x > 0.0 && flags.x == 0.0)\n return vec4(u_hilite_settings[0], 1.0);\n if (outline.y > 0.0 && flags.y == 0.0)\n return vec4(u_hilite_settings[1], 1.0);\n }\n float hiliteMix = flags.x * u_hilite_settings[2][0];\n float emphasisMix = flags.y * u_hilite_settings[2][1];\n baseColor.rgb *= (1.0 - (hiliteMix + emphasisMix));\n baseColor.rgb += u_hilite_settings[0] * hiliteMix;\n baseColor.rgb += u_hilite_settings[1] * emphasisMix;\n return baseColor;\n`;\n\nconst computeTranslucentColor = `\nvec4 computeColor() {\n vec4 opaque = computeOpaqueColor();\n vec4 accum = TEXTURE(u_accumulation, v_texCoord);\n float r = TEXTURE(u_revealage, v_texCoord).r;\n\n vec4 transparent = vec4(accum.rgb / clamp(r, 1e-4, 5e4), accum.a);\n vec4 col = (1.0 - transparent.a) * transparent + transparent.a * opaque;\n return col;\n}\n`;\n\nconst computeTranslucentBaseColor = \"return computeColor();\";\nconst computeAmbientOcclusionBaseColor = \"return computeOpaqueColor();\";\n\n/** @internal */\nexport function createCompositeProgram(flags: CompositeFlags, context: WebGL2RenderingContext): ShaderProgram {\n assert(CompositeFlags.None !== flags);\n\n const wantHilite = CompositeFlags.None !== (flags & CompositeFlags.Hilite);\n const wantTranslucent = CompositeFlags.None !== (flags & CompositeFlags.Translucent);\n const wantOcclusion = CompositeFlags.None !== (flags & CompositeFlags.AmbientOcclusion);\n\n const builder = createViewportQuadBuilder(true);\n const frag = builder.frag;\n\n frag.addFunction(wantOcclusion ? computeAmbientOcclusion : computeDefaultAmbientOcclusion);\n frag.addFunction(computeOpaqueColor);\n\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\n frag.addUniform(\"u_opaque\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"u_opaque\", (uniform, params) => {\n Texture2DHandle.bindSampler(uniform, (params.geometry as CompositeGeometry).opaque, TextureUnit.Zero);\n });\n });\n\n if (wantHilite) {\n addHiliteSettings(frag);\n addWindowToTexCoords(frag);\n frag.addFunction(readEdgePixel);\n frag.addFunction(computeNearbyHilites);\n\n frag.addUniform(\"u_hilite\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"u_hilite\", (uniform, params) => {\n Texture2DHandle.bindSampler(uniform, (params.geometry as CompositeGeometry).hilite, TextureUnit.Three);\n });\n });\n\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeHiliteBaseColor);\n if (!wantTranslucent) {\n frag.addFunction(computeHiliteColor);\n }\n }\n\n if (wantTranslucent) {\n frag.addUniform(\"u_accumulation\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"u_accumulation\", (uniform, params) => {\n Texture2DHandle.bindSampler(uniform, (params.geometry as CompositeGeometry).accum, TextureUnit.One);\n });\n });\n\n frag.addUniform(\"u_revealage\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"u_revealage\", (uniform, params) => {\n Texture2DHandle.bindSampler(uniform, (params.geometry as CompositeGeometry).reveal, TextureUnit.Two);\n });\n });\n\n frag.addFunction(computeTranslucentColor);\n if (!wantHilite) {\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeTranslucentBaseColor);\n }\n }\n\n if (wantOcclusion) {\n frag.addUniform(\"u_occlusion\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"u_occlusion\", (uniform, params) => {\n Texture2DHandle.bindSampler(uniform, (params.geometry as CompositeGeometry).occlusion!, TextureUnit.Four);\n });\n });\n\n if (!wantHilite && !wantTranslucent)\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeAmbientOcclusionBaseColor);\n }\n\n const flagString = (wantHilite ? \"-Hilite\" : \"\") + (wantTranslucent ? \"-Translucent\" : \"\") + (wantOcclusion ? \"-Occlusion\" : \"\");\n builder.vert.headerComment = `//!V! CombineTextures${flagString}`;\n builder.frag.headerComment = `//!F! CombineTextures${flagString}`;\n\n return builder.buildProgram(context);\n}\n"]}
@@ -12,12 +12,12 @@ import { createViewportQuadBuilder } from "./ViewportQuad";
12
12
  const computeColor = "return TEXTURE(u_color, v_texCoord);";
13
13
  // Transparent background color will not have premultiplied alpha - multiply it when copying.
14
14
  // Set all other pixels opaque.
15
- const computeColorNoAlpha = `
16
- vec4 color = TEXTURE(u_color, v_texCoord);
17
- if (color == u_bgColor)
18
- return vec4(color.rgb * color.a, color.a);
19
- else
20
- return vec4(color.rgb, 1.0);
15
+ const computeColorNoAlpha = `
16
+ vec4 color = TEXTURE(u_color, v_texCoord);
17
+ if (color == u_bgColor)
18
+ return vec4(color.rgb * color.a, color.a);
19
+ else
20
+ return vec4(color.rgb, 1.0);
21
21
  `;
22
22
  /** @internal */
23
23
  export function createCopyColorProgram(context, copyAlpha = true) {
@@ -1 +1 @@
1
- {"version":3,"file":"CopyColor.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CopyColor.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,YAAY,GAAG,sCAAsC,CAAC;AAE5D,6FAA6F;AAC7F,+BAA+B;AAC/B,MAAM,mBAAmB,GAAG;;;;;;CAM3B,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,sBAAsB,CAAC,OAA+B,EAAE,YAAqB,IAAI;IAC/F,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,CAAC,GAAG,mDAA2C,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACnG,IAAI,CAAC,GAAG,kDAAyC,eAAe,CAAC,CAAC;IAClE,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,QAA8C,CAAC;YACnE,eAAe,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,EAAE;QACd,IAAI,CAAC,UAAU,CAAC,WAAW,6BAAqB,CAAC,IAAI,EAAE,EAAE;YACvD,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACtD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;KACJ;IAED,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,kBAAkB,UAAU,EAAE,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,kBAAkB,UAAU,EAAE,CAAC;IAE5D,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\nimport { SingleTexturedViewportQuadGeometry } from \"../CachedGeometry\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, VariableType } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { assignFragColor } from \"./Fragment\";\r\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\r\n\r\nconst computeColor = \"return TEXTURE(u_color, v_texCoord);\";\r\n\r\n// Transparent background color will not have premultiplied alpha - multiply it when copying.\r\n// Set all other pixels opaque.\r\nconst computeColorNoAlpha = `\r\n vec4 color = TEXTURE(u_color, v_texCoord);\r\n if (color == u_bgColor)\r\n return vec4(color.rgb * color.a, color.a);\r\n else\r\n return vec4(color.rgb, 1.0);\r\n`;\r\n\r\n/** @internal */\r\nexport function createCopyColorProgram(context: WebGL2RenderingContext, copyAlpha: boolean = true): ShaderProgram {\r\n const builder = createViewportQuadBuilder(true);\r\n const frag = builder.frag;\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, copyAlpha ? computeColor : computeColorNoAlpha);\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n frag.addUniform(\"u_color\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_color\", (uniform, params) => {\r\n const geom = params.geometry as SingleTexturedViewportQuadGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.texture, TextureUnit.Zero);\r\n });\r\n });\r\n\r\n if (!copyAlpha) {\r\n frag.addUniform(\"u_bgColor\", VariableType.Vec4, (prog) => {\r\n prog.addProgramUniform(\"u_bgColor\", (uniform, params) => {\r\n params.target.uniforms.style.bindBackgroundRgba(uniform);\r\n });\r\n });\r\n }\r\n\r\n const flagString = (copyAlpha ? \"-CopyAlpha\" : \"-NoAlpha\");\r\n builder.vert.headerComment = `//!V! CopyColor${flagString}`;\r\n builder.frag.headerComment = `//!F! CopyColor${flagString}`;\r\n\r\n return builder.buildProgram(context);\r\n}\r\n"]}
1
+ {"version":3,"file":"CopyColor.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CopyColor.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,YAAY,GAAG,sCAAsC,CAAC;AAE5D,6FAA6F;AAC7F,+BAA+B;AAC/B,MAAM,mBAAmB,GAAG;;;;;;CAM3B,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,sBAAsB,CAAC,OAA+B,EAAE,YAAqB,IAAI;IAC/F,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,CAAC,GAAG,mDAA2C,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACnG,IAAI,CAAC,GAAG,kDAAyC,eAAe,CAAC,CAAC;IAClE,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,QAA8C,CAAC;YACnE,eAAe,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,EAAE;QACd,IAAI,CAAC,UAAU,CAAC,WAAW,6BAAqB,CAAC,IAAI,EAAE,EAAE;YACvD,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACtD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;KACJ;IAED,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,kBAAkB,UAAU,EAAE,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,kBAAkB,UAAU,EAAE,CAAC;IAE5D,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { SingleTexturedViewportQuadGeometry } from \"../CachedGeometry\";\nimport { TextureUnit } from \"../RenderFlags\";\nimport { FragmentShaderComponent, VariableType } from \"../ShaderBuilder\";\nimport { ShaderProgram } from \"../ShaderProgram\";\nimport { Texture2DHandle } from \"../Texture\";\nimport { assignFragColor } from \"./Fragment\";\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\n\nconst computeColor = \"return TEXTURE(u_color, v_texCoord);\";\n\n// Transparent background color will not have premultiplied alpha - multiply it when copying.\n// Set all other pixels opaque.\nconst computeColorNoAlpha = `\n vec4 color = TEXTURE(u_color, v_texCoord);\n if (color == u_bgColor)\n return vec4(color.rgb * color.a, color.a);\n else\n return vec4(color.rgb, 1.0);\n`;\n\n/** @internal */\nexport function createCopyColorProgram(context: WebGL2RenderingContext, copyAlpha: boolean = true): ShaderProgram {\n const builder = createViewportQuadBuilder(true);\n const frag = builder.frag;\n\n frag.set(FragmentShaderComponent.ComputeBaseColor, copyAlpha ? computeColor : computeColorNoAlpha);\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\n frag.addUniform(\"u_color\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"u_color\", (uniform, params) => {\n const geom = params.geometry as SingleTexturedViewportQuadGeometry;\n Texture2DHandle.bindSampler(uniform, geom.texture, TextureUnit.Zero);\n });\n });\n\n if (!copyAlpha) {\n frag.addUniform(\"u_bgColor\", VariableType.Vec4, (prog) => {\n prog.addProgramUniform(\"u_bgColor\", (uniform, params) => {\n params.target.uniforms.style.bindBackgroundRgba(uniform);\n });\n });\n }\n\n const flagString = (copyAlpha ? \"-CopyAlpha\" : \"-NoAlpha\");\n builder.vert.headerComment = `//!V! CopyColor${flagString}`;\n builder.frag.headerComment = `//!F! CopyColor${flagString}`;\n\n return builder.buildProgram(context);\n}\n"]}
@@ -9,9 +9,9 @@ import { TextureUnit } from "../RenderFlags";
9
9
  import { Texture2DHandle } from "../Texture";
10
10
  import { createViewportQuadBuilder } from "./ViewportQuad";
11
11
  const computeBaseColor = "return vec4(1.0);";
12
- const assignFragData = `
13
- FragColor0 = TEXTURE(u_pickFeatureId, v_texCoord);
14
- FragColor1 = TEXTURE(u_pickDepthAndOrder, v_texCoord);
12
+ const assignFragData = `
13
+ FragColor0 = TEXTURE(u_pickFeatureId, v_texCoord);
14
+ FragColor1 = TEXTURE(u_pickDepthAndOrder, v_texCoord);
15
15
  `;
16
16
  /** @internal */
17
17
  export function createCopyPickBuffersProgram(context) {
@@ -1 +1 @@
1
- {"version":3,"file":"CopyPickBuffers.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CopyPickBuffers.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAE7C,MAAM,cAAc,GAAG;;;CAGtB,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,4BAA4B,CAAC,OAA+B;IAC1E,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,CAAC,GAAG,mDAA2C,gBAAgB,CAAC,CAAC;IAErE,IAAI,CAAC,UAAU,CAAC,iBAAiB,kCAA0B,CAAC,IAAI,EAAE,EAAE;QAClE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5D,eAAe,CAAC,WAAW,CAAC,OAAO,EAAG,MAAM,CAAC,QAAmC,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;IACL,CAAC,iCAAyB,CAAC;IAE3B,IAAI,CAAC,UAAU,CAAC,qBAAqB,kCAA0B,CAAC,IAAI,EAAE,EAAE;QACtE,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChE,eAAe,CAAC,WAAW,CAAC,OAAO,EAAG,MAAM,CAAC,QAAmC,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;QACnH,CAAC,CAAC,CAAC;IACL,CAAC,iCAAyB,CAAC;IAE3B,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG,kDAAyC,cAAc,CAAC,CAAC;IAEjE,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,uBAAuB,CAAC;IACrD,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,uBAAuB,CAAC;IAErD,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\nimport { CopyPickBufferGeometry } from \"../CachedGeometry\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, VariablePrecision, VariableType } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\r\n\r\nconst computeBaseColor = \"return vec4(1.0);\";\r\n\r\nconst assignFragData = `\r\n FragColor0 = TEXTURE(u_pickFeatureId, v_texCoord);\r\n FragColor1 = TEXTURE(u_pickDepthAndOrder, v_texCoord);\r\n`;\r\n\r\n/** @internal */\r\nexport function createCopyPickBuffersProgram(context: WebGL2RenderingContext): ShaderProgram {\r\n const builder = createViewportQuadBuilder(true);\r\n const frag = builder.frag;\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\r\n\r\n frag.addUniform(\"u_pickFeatureId\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_pickFeatureId\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as CopyPickBufferGeometry).featureId, TextureUnit.Zero);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n frag.addUniform(\"u_pickDepthAndOrder\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_pickDepthAndOrder\", (uniform, params) => {\r\n Texture2DHandle.bindSampler(uniform, (params.geometry as CopyPickBufferGeometry).depthAndOrder, TextureUnit.One);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n frag.addDrawBuffersExtension(2);\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragData);\r\n\r\n builder.vert.headerComment = \"//!V! CopyPickBuffers\";\r\n builder.frag.headerComment = \"//!F! CopyPickBuffers\";\r\n\r\n return builder.buildProgram(context);\r\n}\r\n"]}
1
+ {"version":3,"file":"CopyPickBuffers.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CopyPickBuffers.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAE7C,MAAM,cAAc,GAAG;;;CAGtB,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,4BAA4B,CAAC,OAA+B;IAC1E,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,CAAC,GAAG,mDAA2C,gBAAgB,CAAC,CAAC;IAErE,IAAI,CAAC,UAAU,CAAC,iBAAiB,kCAA0B,CAAC,IAAI,EAAE,EAAE;QAClE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5D,eAAe,CAAC,WAAW,CAAC,OAAO,EAAG,MAAM,CAAC,QAAmC,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;IACL,CAAC,iCAAyB,CAAC;IAE3B,IAAI,CAAC,UAAU,CAAC,qBAAqB,kCAA0B,CAAC,IAAI,EAAE,EAAE;QACtE,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChE,eAAe,CAAC,WAAW,CAAC,OAAO,EAAG,MAAM,CAAC,QAAmC,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;QACnH,CAAC,CAAC,CAAC;IACL,CAAC,iCAAyB,CAAC;IAE3B,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG,kDAAyC,cAAc,CAAC,CAAC;IAEjE,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,uBAAuB,CAAC;IACrD,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,uBAAuB,CAAC;IAErD,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { CopyPickBufferGeometry } from \"../CachedGeometry\";\nimport { TextureUnit } from \"../RenderFlags\";\nimport { FragmentShaderComponent, VariablePrecision, VariableType } from \"../ShaderBuilder\";\nimport { ShaderProgram } from \"../ShaderProgram\";\nimport { Texture2DHandle } from \"../Texture\";\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\n\nconst computeBaseColor = \"return vec4(1.0);\";\n\nconst assignFragData = `\n FragColor0 = TEXTURE(u_pickFeatureId, v_texCoord);\n FragColor1 = TEXTURE(u_pickDepthAndOrder, v_texCoord);\n`;\n\n/** @internal */\nexport function createCopyPickBuffersProgram(context: WebGL2RenderingContext): ShaderProgram {\n const builder = createViewportQuadBuilder(true);\n const frag = builder.frag;\n\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\n\n frag.addUniform(\"u_pickFeatureId\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"u_pickFeatureId\", (uniform, params) => {\n Texture2DHandle.bindSampler(uniform, (params.geometry as CopyPickBufferGeometry).featureId, TextureUnit.Zero);\n });\n }, VariablePrecision.High);\n\n frag.addUniform(\"u_pickDepthAndOrder\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"u_pickDepthAndOrder\", (uniform, params) => {\n Texture2DHandle.bindSampler(uniform, (params.geometry as CopyPickBufferGeometry).depthAndOrder, TextureUnit.One);\n });\n }, VariablePrecision.High);\n\n frag.addDrawBuffersExtension(2);\n frag.set(FragmentShaderComponent.AssignFragData, assignFragData);\n\n builder.vert.headerComment = \"//!V! CopyPickBuffers\";\n builder.frag.headerComment = \"//!F! CopyPickBuffers\";\n\n return builder.buildProgram(context);\n}\n"]}
@@ -16,10 +16,10 @@ const computehiliteColor = "return vec4(u_hilite_color.rgb, 1.0);";
16
16
  const computeSetBlendColor = "return u_blend_color;";
17
17
  const computeBlendTextureColor = "return TEXTURE(u_blendTexture, v_texCoord);";
18
18
  const computeTexCoord = "v_texCoord = (rawPosition.xy + 1.0) * 0.5;";
19
- const checkDiscardBackgroundByZ = `
20
- if (u_boundaryType == kBoundaryType_Out)
21
- return TEXTURE(u_depthTexture, v_texCoord).r == 1.0;
22
- return false;
19
+ const checkDiscardBackgroundByZ = `
20
+ if (u_boundaryType == kBoundaryType_Out)
21
+ return TEXTURE(u_depthTexture, v_texCoord).r == 1.0;
22
+ return false;
23
23
  `;
24
24
  const depthFromTexture = "return TEXTURE(u_depthTexture, v_texCoord).r;";
25
25
  const scratchColor = FloatRgba.fromColorDef(ColorDef.white);
@@ -1 +1 @@
1
- {"version":3,"file":"CopyStencil.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CopyStencil.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 { ColorDef, SpatialClassifierInsideDisplay, SpatialClassifierOutsideDisplay } from \"@itwin/core-common\";\r\nimport { BoundaryType, SingleTexturedViewportQuadGeometry, VolumeClassifierGeometry } from \"../CachedGeometry\";\r\nimport { FloatRgb, FloatRgba } from \"../FloatRGBA\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, ShaderBuilder, VariableType } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { assignFragColor } from \"./Fragment\";\r\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\r\n\r\nconst computehiliteColor = \"return vec4(u_hilite_color.rgb, 1.0);\";\r\n\r\nconst computeSetBlendColor = \"return u_blend_color;\";\r\n\r\nconst computeBlendTextureColor = \"return TEXTURE(u_blendTexture, v_texCoord);\";\r\n\r\nconst computeTexCoord = \"v_texCoord = (rawPosition.xy + 1.0) * 0.5;\";\r\n\r\nconst checkDiscardBackgroundByZ = `\r\n if (u_boundaryType == kBoundaryType_Out)\r\n return TEXTURE(u_depthTexture, v_texCoord).r == 1.0;\r\n return false;\r\n`;\r\n\r\nconst depthFromTexture = \"return TEXTURE(u_depthTexture, v_texCoord).r;\";\r\n\r\nconst scratchColor = FloatRgba.fromColorDef(ColorDef.white);\r\n\r\n/** @internal */\r\nfunction addBoundaryTypeConstants(builder: ShaderBuilder): void {\r\n // NB: These are the bit positions of each flag in OvrFlags enum - not the flag values\r\n builder.addConstant(\"kBoundaryType_Out\", VariableType.Int, \"0\");\r\n builder.addConstant(\"kBoundaryType_In\", VariableType.Int, \"1\");\r\n builder.addConstant(\"kBoundaryType_Selected\", VariableType.Int, \"2\");\r\n}\r\n\r\n/** @internal */\r\nfunction setScratchColor(display: number, hilite: FloatRgb, hAlpha: number): void {\r\n switch (display) {\r\n case SpatialClassifierOutsideDisplay.Dimmed:\r\n scratchColor.set(0.0, 0.0, 0.0, 0.3);\r\n break;\r\n case SpatialClassifierOutsideDisplay.Off:\r\n scratchColor.set(0.0, 0.0, 0.0, 0.8);\r\n break;\r\n case SpatialClassifierOutsideDisplay.On:\r\n scratchColor.set(0.0, 0.0, 0.0, 0.0);\r\n break;\r\n default: // Hilite or ByElementColor (though ByElementColor should never use this shader)\r\n scratchColor.set(hilite.red, hilite.green, hilite.blue, hAlpha);\r\n break;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function createVolClassColorUsingStencilProgram(context: WebGL2RenderingContext): ShaderProgram {\r\n const builder = createViewportQuadBuilder(false);\r\n const frag = builder.frag;\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computehiliteColor);\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n frag.addUniform(\"u_hilite_color\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_hilite_color\", (uniform, params) => {\r\n const useLighting = params.geometry.getFlashMode(params);\r\n if (useLighting) {\r\n const hiliteColor = params.target.uniforms.hilite.hiliteColor;\r\n scratchColor.set(hiliteColor.red, hiliteColor.green, hiliteColor.blue, 1.0);\r\n } else\r\n scratchColor.set(1.0, 1.0, 1.0, 0.0);\r\n scratchColor.bind(uniform);\r\n });\r\n });\r\n\r\n builder.vert.headerComment = \"//!V! VolClassColorUsingStencil\";\r\n builder.frag.headerComment = \"//!F! VolClassColorUsingStencil\";\r\n\r\n return builder.buildProgram(context);\r\n}\r\n\r\n/** @internal */\r\nexport function createVolClassCopyZProgram(context: WebGL2RenderingContext): ShaderProgram {\r\n const builder = createViewportQuadBuilder(true);\r\n\r\n builder.addInlineComputedVarying(\"v_texCoord\", VariableType.Vec2, computeTexCoord); // TODO: I think this is not necessary because it's already added from the create above\r\n\r\n const frag = builder.frag;\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeSetBlendColor);\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n\r\n frag.addUniform(\"u_blend_color\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_blend_color\", (uniform, _params) => {\r\n scratchColor.set(0.0, 0.0, 0.0, 0.0);\r\n scratchColor.bind(uniform);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_depthTexture\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_depthTexture\", (uniform, params) => {\r\n const geom = params.geometry as SingleTexturedViewportQuadGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.texture, TextureUnit.Zero);\r\n });\r\n });\r\n\r\n frag.set(FragmentShaderComponent.FinalizeDepth, depthFromTexture);\r\n\r\n builder.vert.headerComment = \"//!V! VolClassCopyZ\";\r\n builder.frag.headerComment = \"//!F! VolClassCopyZ\";\r\n\r\n return builder.buildProgram(context);\r\n}\r\n\r\n/** @internal */\r\nexport function createVolClassSetBlendProgram(context: WebGL2RenderingContext): ShaderProgram {\r\n const builder = createViewportQuadBuilder(true);\r\n\r\n builder.addInlineComputedVarying(\"v_texCoord\", VariableType.Vec2, computeTexCoord);\r\n\r\n const frag = builder.frag;\r\n addBoundaryTypeConstants(frag);\r\n frag.set(FragmentShaderComponent.CheckForEarlyDiscard, checkDiscardBackgroundByZ);\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeSetBlendColor);\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n\r\n frag.addUniform(\"u_boundaryType\", VariableType.Int, (prog) => {\r\n prog.addGraphicUniform(\"u_boundaryType\", (uniform, params) => {\r\n const geom = params.geometry as VolumeClassifierGeometry;\r\n uniform.setUniform1i(geom.boundaryType);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_blend_color\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_blend_color\", (uniform, params) => {\r\n const geom = params.geometry as VolumeClassifierGeometry;\r\n const hiliteColor = params.target.uniforms.hilite.hiliteColor;\r\n const hiliteAlpha = params.target.uniforms.hilite.hiliteSettings.visibleRatio;\r\n switch (geom.boundaryType) {\r\n case BoundaryType.Outside:\r\n setScratchColor(params.target.activeVolumeClassifierProps!.flags.outside, hiliteColor, hiliteAlpha);\r\n break;\r\n case BoundaryType.Inside:\r\n setScratchColor(params.target.activeVolumeClassifierProps!.flags.inside, hiliteColor, hiliteAlpha);\r\n break;\r\n case BoundaryType.Selected:\r\n // setScratchColor(params.target.activeVolumeClassifierProps!.flags.selected, hiliteColor, hiliteAlpha);\r\n setScratchColor(SpatialClassifierInsideDisplay.Hilite, hiliteColor, hiliteAlpha); // option for how to display selected classifiers has been removed, always just hilite\r\n break;\r\n }\r\n scratchColor.bind(uniform);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_depthTexture\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_depthTexture\", (uniform, params) => {\r\n const geom = params.geometry as VolumeClassifierGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.texture, TextureUnit.Zero);\r\n });\r\n });\r\n\r\n builder.vert.headerComment = \"//!V! VolClassSetBlend\";\r\n builder.frag.headerComment = \"//!F! VolClassSetBlend\";\r\n\r\n return builder.buildProgram(context);\r\n}\r\n\r\n/** @internal */\r\nexport function createVolClassBlendProgram(context: WebGL2RenderingContext): ShaderProgram {\r\n const builder = createViewportQuadBuilder(true);\r\n\r\n builder.addInlineComputedVarying(\"v_texCoord\", VariableType.Vec2, computeTexCoord);\r\n\r\n const frag = builder.frag;\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeBlendTextureColor);\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n\r\n frag.addUniform(\"u_blendTexture\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_blendTexture\", (uniform, params) => {\r\n const geom = params.geometry as SingleTexturedViewportQuadGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.texture, TextureUnit.Zero);\r\n });\r\n });\r\n\r\n builder.vert.headerComment = \"//!V! VolClassBlend\";\r\n builder.frag.headerComment = \"//!F! VolClassBlend\";\r\n\r\n return builder.buildProgram(context);\r\n}\r\n"]}
1
+ {"version":3,"file":"CopyStencil.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CopyStencil.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { ColorDef, SpatialClassifierInsideDisplay, SpatialClassifierOutsideDisplay } from \"@itwin/core-common\";\nimport { BoundaryType, SingleTexturedViewportQuadGeometry, VolumeClassifierGeometry } from \"../CachedGeometry\";\nimport { FloatRgb, FloatRgba } from \"../FloatRGBA\";\nimport { TextureUnit } from \"../RenderFlags\";\nimport { FragmentShaderComponent, ShaderBuilder, VariableType } from \"../ShaderBuilder\";\nimport { ShaderProgram } from \"../ShaderProgram\";\nimport { Texture2DHandle } from \"../Texture\";\nimport { assignFragColor } from \"./Fragment\";\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\n\nconst computehiliteColor = \"return vec4(u_hilite_color.rgb, 1.0);\";\n\nconst computeSetBlendColor = \"return u_blend_color;\";\n\nconst computeBlendTextureColor = \"return TEXTURE(u_blendTexture, v_texCoord);\";\n\nconst computeTexCoord = \"v_texCoord = (rawPosition.xy + 1.0) * 0.5;\";\n\nconst checkDiscardBackgroundByZ = `\n if (u_boundaryType == kBoundaryType_Out)\n return TEXTURE(u_depthTexture, v_texCoord).r == 1.0;\n return false;\n`;\n\nconst depthFromTexture = \"return TEXTURE(u_depthTexture, v_texCoord).r;\";\n\nconst scratchColor = FloatRgba.fromColorDef(ColorDef.white);\n\n/** @internal */\nfunction addBoundaryTypeConstants(builder: ShaderBuilder): void {\n // NB: These are the bit positions of each flag in OvrFlags enum - not the flag values\n builder.addConstant(\"kBoundaryType_Out\", VariableType.Int, \"0\");\n builder.addConstant(\"kBoundaryType_In\", VariableType.Int, \"1\");\n builder.addConstant(\"kBoundaryType_Selected\", VariableType.Int, \"2\");\n}\n\n/** @internal */\nfunction setScratchColor(display: number, hilite: FloatRgb, hAlpha: number): void {\n switch (display) {\n case SpatialClassifierOutsideDisplay.Dimmed:\n scratchColor.set(0.0, 0.0, 0.0, 0.3);\n break;\n case SpatialClassifierOutsideDisplay.Off:\n scratchColor.set(0.0, 0.0, 0.0, 0.8);\n break;\n case SpatialClassifierOutsideDisplay.On:\n scratchColor.set(0.0, 0.0, 0.0, 0.0);\n break;\n default: // Hilite or ByElementColor (though ByElementColor should never use this shader)\n scratchColor.set(hilite.red, hilite.green, hilite.blue, hAlpha);\n break;\n }\n}\n\n/** @internal */\nexport function createVolClassColorUsingStencilProgram(context: WebGL2RenderingContext): ShaderProgram {\n const builder = createViewportQuadBuilder(false);\n const frag = builder.frag;\n frag.set(FragmentShaderComponent.ComputeBaseColor, computehiliteColor);\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\n frag.addUniform(\"u_hilite_color\", VariableType.Vec4, (prog) => {\n prog.addGraphicUniform(\"u_hilite_color\", (uniform, params) => {\n const useLighting = params.geometry.getFlashMode(params);\n if (useLighting) {\n const hiliteColor = params.target.uniforms.hilite.hiliteColor;\n scratchColor.set(hiliteColor.red, hiliteColor.green, hiliteColor.blue, 1.0);\n } else\n scratchColor.set(1.0, 1.0, 1.0, 0.0);\n scratchColor.bind(uniform);\n });\n });\n\n builder.vert.headerComment = \"//!V! VolClassColorUsingStencil\";\n builder.frag.headerComment = \"//!F! VolClassColorUsingStencil\";\n\n return builder.buildProgram(context);\n}\n\n/** @internal */\nexport function createVolClassCopyZProgram(context: WebGL2RenderingContext): ShaderProgram {\n const builder = createViewportQuadBuilder(true);\n\n builder.addInlineComputedVarying(\"v_texCoord\", VariableType.Vec2, computeTexCoord); // TODO: I think this is not necessary because it's already added from the create above\n\n const frag = builder.frag;\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeSetBlendColor);\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\n\n frag.addUniform(\"u_blend_color\", VariableType.Vec4, (prog) => {\n prog.addGraphicUniform(\"u_blend_color\", (uniform, _params) => {\n scratchColor.set(0.0, 0.0, 0.0, 0.0);\n scratchColor.bind(uniform);\n });\n });\n\n frag.addUniform(\"u_depthTexture\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"u_depthTexture\", (uniform, params) => {\n const geom = params.geometry as SingleTexturedViewportQuadGeometry;\n Texture2DHandle.bindSampler(uniform, geom.texture, TextureUnit.Zero);\n });\n });\n\n frag.set(FragmentShaderComponent.FinalizeDepth, depthFromTexture);\n\n builder.vert.headerComment = \"//!V! VolClassCopyZ\";\n builder.frag.headerComment = \"//!F! VolClassCopyZ\";\n\n return builder.buildProgram(context);\n}\n\n/** @internal */\nexport function createVolClassSetBlendProgram(context: WebGL2RenderingContext): ShaderProgram {\n const builder = createViewportQuadBuilder(true);\n\n builder.addInlineComputedVarying(\"v_texCoord\", VariableType.Vec2, computeTexCoord);\n\n const frag = builder.frag;\n addBoundaryTypeConstants(frag);\n frag.set(FragmentShaderComponent.CheckForEarlyDiscard, checkDiscardBackgroundByZ);\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeSetBlendColor);\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\n\n frag.addUniform(\"u_boundaryType\", VariableType.Int, (prog) => {\n prog.addGraphicUniform(\"u_boundaryType\", (uniform, params) => {\n const geom = params.geometry as VolumeClassifierGeometry;\n uniform.setUniform1i(geom.boundaryType);\n });\n });\n\n frag.addUniform(\"u_blend_color\", VariableType.Vec4, (prog) => {\n prog.addGraphicUniform(\"u_blend_color\", (uniform, params) => {\n const geom = params.geometry as VolumeClassifierGeometry;\n const hiliteColor = params.target.uniforms.hilite.hiliteColor;\n const hiliteAlpha = params.target.uniforms.hilite.hiliteSettings.visibleRatio;\n switch (geom.boundaryType) {\n case BoundaryType.Outside:\n setScratchColor(params.target.activeVolumeClassifierProps!.flags.outside, hiliteColor, hiliteAlpha);\n break;\n case BoundaryType.Inside:\n setScratchColor(params.target.activeVolumeClassifierProps!.flags.inside, hiliteColor, hiliteAlpha);\n break;\n case BoundaryType.Selected:\n // setScratchColor(params.target.activeVolumeClassifierProps!.flags.selected, hiliteColor, hiliteAlpha);\n setScratchColor(SpatialClassifierInsideDisplay.Hilite, hiliteColor, hiliteAlpha); // option for how to display selected classifiers has been removed, always just hilite\n break;\n }\n scratchColor.bind(uniform);\n });\n });\n\n frag.addUniform(\"u_depthTexture\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"u_depthTexture\", (uniform, params) => {\n const geom = params.geometry as VolumeClassifierGeometry;\n Texture2DHandle.bindSampler(uniform, geom.texture, TextureUnit.Zero);\n });\n });\n\n builder.vert.headerComment = \"//!V! VolClassSetBlend\";\n builder.frag.headerComment = \"//!F! VolClassSetBlend\";\n\n return builder.buildProgram(context);\n}\n\n/** @internal */\nexport function createVolClassBlendProgram(context: WebGL2RenderingContext): ShaderProgram {\n const builder = createViewportQuadBuilder(true);\n\n builder.addInlineComputedVarying(\"v_texCoord\", VariableType.Vec2, computeTexCoord);\n\n const frag = builder.frag;\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeBlendTextureColor);\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\n\n frag.addUniform(\"u_blendTexture\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"u_blendTexture\", (uniform, params) => {\n const geom = params.geometry as SingleTexturedViewportQuadGeometry;\n Texture2DHandle.bindSampler(uniform, geom.texture, TextureUnit.Zero);\n });\n });\n\n builder.vert.headerComment = \"//!V! VolClassBlend\";\n builder.frag.headerComment = \"//!F! VolClassBlend\";\n\n return builder.buildProgram(context);\n}\n"]}