@itwin/core-frontend 4.0.0-dev.87 → 4.0.0-dev.90

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (820) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/lib/cjs/AccuDraw.js.map +1 -1
  3. package/lib/cjs/AccuSnap.js.map +1 -1
  4. package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
  5. package/lib/cjs/ApproximateTerrainHeightsProps.js.map +1 -1
  6. package/lib/cjs/AuxCoordSys.js.map +1 -1
  7. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  8. package/lib/cjs/BingLocation.js.map +1 -1
  9. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  10. package/lib/cjs/BriefcaseTxns.js.map +1 -1
  11. package/lib/cjs/CategorySelectorState.js.map +1 -1
  12. package/lib/cjs/ChangeFlags.js.map +1 -1
  13. package/lib/cjs/CheckpointConnection.js.map +1 -1
  14. package/lib/cjs/CoordSystem.js.map +1 -1
  15. package/lib/cjs/DecorationsCache.js.map +1 -1
  16. package/lib/cjs/DevTools.js.map +1 -1
  17. package/lib/cjs/DisplayStyleState.js.map +1 -1
  18. package/lib/cjs/DrawingViewState.js +5 -5
  19. package/lib/cjs/DrawingViewState.js.map +1 -1
  20. package/lib/cjs/ElementLocateManager.js.map +1 -1
  21. package/lib/cjs/EmphasizeElements.js.map +1 -1
  22. package/lib/cjs/EntityState.js.map +1 -1
  23. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  24. package/lib/cjs/FeatureOverrideProvider.js.map +1 -1
  25. package/lib/cjs/FlashSettings.js.map +1 -1
  26. package/lib/cjs/FrontendHubAccess.js.map +1 -1
  27. package/lib/cjs/FrontendLoggerCategory.js.map +1 -1
  28. package/lib/cjs/Frustum2d.js.map +1 -1
  29. package/lib/cjs/FrustumAnimator.js.map +1 -1
  30. package/lib/cjs/FuzzySearch.js.map +1 -1
  31. package/lib/cjs/GeoServices.js.map +1 -1
  32. package/lib/cjs/GlobeAnimator.js.map +1 -1
  33. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  34. package/lib/cjs/HitDetail.js.map +1 -1
  35. package/lib/cjs/IModelApp.js.map +1 -1
  36. package/lib/cjs/IModelConnection.js +23 -23
  37. package/lib/cjs/IModelConnection.js.map +1 -1
  38. package/lib/cjs/IModelRoutingContext.js.map +1 -1
  39. package/lib/cjs/IModeljs-css.d.ts +2 -2
  40. package/lib/cjs/IModeljs-css.d.ts.map +1 -1
  41. package/lib/cjs/IModeljs-css.js +136 -136
  42. package/lib/cjs/IModeljs-css.js.map +1 -1
  43. package/lib/cjs/ImageUtil.js.map +1 -1
  44. package/lib/cjs/IpcApp.js.map +1 -1
  45. package/lib/cjs/LinePlaneIntersect.js.map +1 -1
  46. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  47. package/lib/cjs/MarginPercent.js.map +1 -1
  48. package/lib/cjs/Marker.js.map +1 -1
  49. package/lib/cjs/ModelSelectorState.js.map +1 -1
  50. package/lib/cjs/NativeApp.js.map +1 -1
  51. package/lib/cjs/NativeAppLogger.js.map +1 -1
  52. package/lib/cjs/NoRenderApp.js.map +1 -1
  53. package/lib/cjs/NotificationManager.js.map +1 -1
  54. package/lib/cjs/PerModelCategoryVisibility.js.map +1 -1
  55. package/lib/cjs/PlanarClipMaskState.js.map +1 -1
  56. package/lib/cjs/RealityDataSource.js.map +1 -1
  57. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  58. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
  59. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  60. package/lib/cjs/SelectionSet.js.map +1 -1
  61. package/lib/cjs/SheetViewState.js.map +1 -1
  62. package/lib/cjs/SpatialViewState.js.map +1 -1
  63. package/lib/cjs/Sprites.js.map +1 -1
  64. package/lib/cjs/StandardView.js.map +1 -1
  65. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  66. package/lib/cjs/TentativePoint.js.map +1 -1
  67. package/lib/cjs/Tiles.js.map +1 -1
  68. package/lib/cjs/UserPreferences.js.map +1 -1
  69. package/lib/cjs/ViewAnimation.js.map +1 -1
  70. package/lib/cjs/ViewContext.js.map +1 -1
  71. package/lib/cjs/ViewCreator2d.js.map +1 -1
  72. package/lib/cjs/ViewCreator3d.js.map +1 -1
  73. package/lib/cjs/ViewGlobalLocation.js.map +1 -1
  74. package/lib/cjs/ViewManager.js.map +1 -1
  75. package/lib/cjs/ViewPose.js.map +1 -1
  76. package/lib/cjs/ViewRect.js.map +1 -1
  77. package/lib/cjs/ViewState.js.map +1 -1
  78. package/lib/cjs/ViewStatus.js.map +1 -1
  79. package/lib/cjs/ViewingSpace.js.map +1 -1
  80. package/lib/cjs/Viewport.js.map +1 -1
  81. package/lib/cjs/ViewportSync.js.map +1 -1
  82. package/lib/cjs/WebWorkerManager.js.map +1 -1
  83. package/lib/cjs/core-frontend.js.map +1 -1
  84. package/lib/cjs/extension/Extension.js.map +1 -1
  85. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  86. package/lib/cjs/extension/ExtensionHost.js.map +1 -1
  87. package/lib/cjs/extension/ExtensionImpl.js.map +1 -1
  88. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  89. package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -1
  90. package/lib/cjs/extension/providers/LocalExtensionProvider.js.map +1 -1
  91. package/lib/cjs/extension/providers/RemoteExtensionProvider.js.map +1 -1
  92. package/lib/cjs/gltf/GltfModel.js.map +1 -1
  93. package/lib/cjs/gltf/GltfParser.js.map +1 -1
  94. package/lib/cjs/gltf/GltfSchema.js.map +1 -1
  95. package/lib/cjs/properties/AngleDescription.js.map +1 -1
  96. package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
  97. package/lib/cjs/properties/LengthDescription.js.map +1 -1
  98. package/lib/cjs/public/scripts/checkbrowser.js +24 -24
  99. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  100. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  101. package/lib/cjs/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
  102. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  103. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -1
  104. package/lib/cjs/quantity-formatting/UnitsData.js.map +1 -1
  105. package/lib/cjs/render/CanvasDecoration.js.map +1 -1
  106. package/lib/cjs/render/Decorations.js.map +1 -1
  107. package/lib/cjs/render/FeatureSymbology.js.map +1 -1
  108. package/lib/cjs/render/FrameStats.js.map +1 -1
  109. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  110. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  111. package/lib/cjs/render/GraphicPrimitive.js.map +1 -1
  112. package/lib/cjs/render/InstancedGraphicParams.js.map +1 -1
  113. package/lib/cjs/render/MockRender.js.map +1 -1
  114. package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
  115. package/lib/cjs/render/Pixel.js.map +1 -1
  116. package/lib/cjs/render/RealityMeshGraphicParams.js.map +1 -1
  117. package/lib/cjs/render/RealityMeshParams.js.map +1 -1
  118. package/lib/cjs/render/RenderClipVolume.js.map +1 -1
  119. package/lib/cjs/render/RenderGraphic.js.map +1 -1
  120. package/lib/cjs/render/RenderMaterial.js.map +1 -1
  121. package/lib/cjs/render/RenderMemory.js.map +1 -1
  122. package/lib/cjs/render/RenderPlan.js.map +1 -1
  123. package/lib/cjs/render/RenderPlanarClassifier.js.map +1 -1
  124. package/lib/cjs/render/RenderSystem.js.map +1 -1
  125. package/lib/cjs/render/RenderTarget.js.map +1 -1
  126. package/lib/cjs/render/RenderTexture.js.map +1 -1
  127. package/lib/cjs/render/Scene.js.map +1 -1
  128. package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
  129. package/lib/cjs/render/UpsampleRealityMeshParams.js.map +1 -1
  130. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  131. package/lib/cjs/render/primitives/AuxChannelTable.js.map +1 -1
  132. package/lib/cjs/render/primitives/ColorMap.js.map +1 -1
  133. package/lib/cjs/render/primitives/DisplayParams.js.map +1 -1
  134. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
  135. package/lib/cjs/render/primitives/PointCloudPrimitive.js.map +1 -1
  136. package/lib/cjs/render/primitives/PointStringParams.js.map +1 -1
  137. package/lib/cjs/render/primitives/Polyface.js.map +1 -1
  138. package/lib/cjs/render/primitives/PolylineParams.js.map +1 -1
  139. package/lib/cjs/render/primitives/Primitives.js.map +1 -1
  140. package/lib/cjs/render/primitives/Strokes.js.map +1 -1
  141. package/lib/cjs/render/primitives/SurfaceParams.js.map +1 -1
  142. package/lib/cjs/render/primitives/VertexKey.js.map +1 -1
  143. package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
  144. package/lib/cjs/render/primitives/VertexTableSplitter.js.map +1 -1
  145. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  146. package/lib/cjs/render/primitives/geometry/GeometryList.js.map +1 -1
  147. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  148. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  149. package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
  150. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  151. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  152. package/lib/cjs/render/webgl/AtmosphereUniforms.js.map +1 -1
  153. package/lib/cjs/render/webgl/AttributeBuffers.js.map +1 -1
  154. package/lib/cjs/render/webgl/AttributeMap.js.map +1 -1
  155. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  156. package/lib/cjs/render/webgl/BatchState.js.map +1 -1
  157. package/lib/cjs/render/webgl/BatchUniforms.js.map +1 -1
  158. package/lib/cjs/render/webgl/BranchStack.js.map +1 -1
  159. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  160. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  161. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  162. package/lib/cjs/render/webgl/ClipStack.js.map +1 -1
  163. package/lib/cjs/render/webgl/ClipVolume.js.map +1 -1
  164. package/lib/cjs/render/webgl/ClippingProgram.js.map +1 -1
  165. package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
  166. package/lib/cjs/render/webgl/Diagnostics.js.map +1 -1
  167. package/lib/cjs/render/webgl/Disposable.js.map +1 -1
  168. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  169. package/lib/cjs/render/webgl/EDL.js.map +1 -1
  170. package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -1
  171. package/lib/cjs/render/webgl/EdgeSettings.js.map +1 -1
  172. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  173. package/lib/cjs/render/webgl/FloatRGBA.js.map +1 -1
  174. package/lib/cjs/render/webgl/FrameBuffer.js.map +1 -1
  175. package/lib/cjs/render/webgl/FrustumUniforms.js.map +1 -1
  176. package/lib/cjs/render/webgl/GL.js.map +1 -1
  177. package/lib/cjs/render/webgl/GLTimer.js.map +1 -1
  178. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  179. package/lib/cjs/render/webgl/HiliteUniforms.js.map +1 -1
  180. package/lib/cjs/render/webgl/IModelFrameLifecycle.js.map +1 -1
  181. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  182. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  183. package/lib/cjs/render/webgl/Layer.js.map +1 -1
  184. package/lib/cjs/render/webgl/LayerCommands.js.map +1 -1
  185. package/lib/cjs/render/webgl/LightingUniforms.js.map +1 -1
  186. package/lib/cjs/render/webgl/LineCode.js.map +1 -1
  187. package/lib/cjs/render/webgl/Material.js.map +1 -1
  188. package/lib/cjs/render/webgl/Matrix.js.map +1 -1
  189. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  190. package/lib/cjs/render/webgl/MeshData.js.map +1 -1
  191. package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -1
  192. package/lib/cjs/render/webgl/PerformanceMetrics.js.map +1 -1
  193. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  194. package/lib/cjs/render/webgl/PlanarGrid.js.map +1 -1
  195. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  196. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  197. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  198. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  199. package/lib/cjs/render/webgl/Primitive.js.map +1 -1
  200. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  201. package/lib/cjs/render/webgl/RealityModelUniforms.js.map +1 -1
  202. package/lib/cjs/render/webgl/RenderBuffer.js.map +1 -1
  203. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  204. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  205. package/lib/cjs/render/webgl/RenderState.js.map +1 -1
  206. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  207. package/lib/cjs/render/webgl/ScratchDrawParams.js.map +1 -1
  208. package/lib/cjs/render/webgl/ScreenSpaceEffect.js.map +1 -1
  209. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  210. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  211. package/lib/cjs/render/webgl/ShadowUniforms.js.map +1 -1
  212. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  213. package/lib/cjs/render/webgl/StyleUniforms.js.map +1 -1
  214. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  215. package/lib/cjs/render/webgl/Sync.js.map +1 -1
  216. package/lib/cjs/render/webgl/System.js.map +1 -1
  217. package/lib/cjs/render/webgl/Target.js.map +1 -1
  218. package/lib/cjs/render/webgl/TargetGraphics.js.map +1 -1
  219. package/lib/cjs/render/webgl/TargetUniforms.js.map +1 -1
  220. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  221. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  222. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  223. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  224. package/lib/cjs/render/webgl/TextureDrape.js.map +1 -1
  225. package/lib/cjs/render/webgl/ThematicSensors.js.map +1 -1
  226. package/lib/cjs/render/webgl/ThematicUniforms.js.map +1 -1
  227. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  228. package/lib/cjs/render/webgl/VertexLUT.js.map +1 -1
  229. package/lib/cjs/render/webgl/ViewRectUniforms.js.map +1 -1
  230. package/lib/cjs/render/webgl/VisibleTileFeatures.js.map +1 -1
  231. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +154 -154
  232. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  233. package/lib/cjs/render/webgl/glsl/Animation.js +83 -83
  234. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  235. package/lib/cjs/render/webgl/glsl/Atmosphere.js +266 -266
  236. package/lib/cjs/render/webgl/glsl/Atmosphere.js.map +1 -1
  237. package/lib/cjs/render/webgl/glsl/Blur.js +37 -37
  238. package/lib/cjs/render/webgl/glsl/Blur.js.map +1 -1
  239. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +4 -4
  240. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  241. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +3 -3
  242. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  243. package/lib/cjs/render/webgl/glsl/Clipping.js +60 -60
  244. package/lib/cjs/render/webgl/glsl/Clipping.js.map +1 -1
  245. package/lib/cjs/render/webgl/glsl/Color.js +12 -12
  246. package/lib/cjs/render/webgl/glsl/Color.js.map +1 -1
  247. package/lib/cjs/render/webgl/glsl/Combine3Textures.js +7 -7
  248. package/lib/cjs/render/webgl/glsl/Combine3Textures.js.map +1 -1
  249. package/lib/cjs/render/webgl/glsl/CombineTextures.js +5 -5
  250. package/lib/cjs/render/webgl/glsl/CombineTextures.js.map +1 -1
  251. package/lib/cjs/render/webgl/glsl/Common.js +16 -16
  252. package/lib/cjs/render/webgl/glsl/Common.js.map +1 -1
  253. package/lib/cjs/render/webgl/glsl/Composite.js +71 -71
  254. package/lib/cjs/render/webgl/glsl/Composite.js.map +1 -1
  255. package/lib/cjs/render/webgl/glsl/CopyColor.js +6 -6
  256. package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
  257. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +3 -3
  258. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  259. package/lib/cjs/render/webgl/glsl/CopyStencil.js +4 -4
  260. package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
  261. package/lib/cjs/render/webgl/glsl/Decode.js +65 -65
  262. package/lib/cjs/render/webgl/glsl/Decode.js.map +1 -1
  263. package/lib/cjs/render/webgl/glsl/EDL.js +103 -103
  264. package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -1
  265. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +25 -25
  266. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  267. package/lib/cjs/render/webgl/glsl/Edge.js +146 -146
  268. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  269. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +232 -232
  270. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  271. package/lib/cjs/render/webgl/glsl/Fragment.js +41 -41
  272. package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
  273. package/lib/cjs/render/webgl/glsl/Instancing.js +21 -21
  274. package/lib/cjs/render/webgl/glsl/Instancing.js.map +1 -1
  275. package/lib/cjs/render/webgl/glsl/Lighting.js +92 -92
  276. package/lib/cjs/render/webgl/glsl/Lighting.js.map +1 -1
  277. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  278. package/lib/cjs/render/webgl/glsl/LookupTable.js +19 -19
  279. package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
  280. package/lib/cjs/render/webgl/glsl/Monochrome.js +13 -13
  281. package/lib/cjs/render/webgl/glsl/Monochrome.js.map +1 -1
  282. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +188 -188
  283. package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
  284. package/lib/cjs/render/webgl/glsl/PlanarGrid.js +22 -22
  285. package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
  286. package/lib/cjs/render/webgl/glsl/PointCloud.js +28 -28
  287. package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
  288. package/lib/cjs/render/webgl/glsl/PointString.js +9 -9
  289. package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
  290. package/lib/cjs/render/webgl/glsl/Polyline.js +213 -213
  291. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  292. package/lib/cjs/render/webgl/glsl/RealityMesh.js +83 -83
  293. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  294. package/lib/cjs/render/webgl/glsl/RenderPass.js.map +1 -1
  295. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +9 -9
  296. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  297. package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
  298. package/lib/cjs/render/webgl/glsl/SkySphere.js +49 -49
  299. package/lib/cjs/render/webgl/glsl/SkySphere.js.map +1 -1
  300. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +51 -51
  301. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  302. package/lib/cjs/render/webgl/glsl/Surface.js +239 -239
  303. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  304. package/lib/cjs/render/webgl/glsl/Thematic.js +134 -134
  305. package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
  306. package/lib/cjs/render/webgl/glsl/Translucency.js +19 -19
  307. package/lib/cjs/render/webgl/glsl/Translucency.js.map +1 -1
  308. package/lib/cjs/render/webgl/glsl/Vertex.js +73 -73
  309. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  310. package/lib/cjs/render/webgl/glsl/Viewport.js +38 -38
  311. package/lib/cjs/render/webgl/glsl/Viewport.js.map +1 -1
  312. package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
  313. package/lib/cjs/render/webgl/glsl/Wiremesh.js +10 -10
  314. package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -1
  315. package/lib/cjs/render-primitives.js.map +1 -1
  316. package/lib/cjs/request/Request.js.map +1 -1
  317. package/lib/cjs/tile/B3dmReader.js.map +1 -1
  318. package/lib/cjs/tile/BatchedTileIdMap.js.map +1 -1
  319. package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -1
  320. package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
  321. package/lib/cjs/tile/ContextShareProvider.js.map +1 -1
  322. package/lib/cjs/tile/DisclosedTileTreeSet.js.map +1 -1
  323. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  324. package/lib/cjs/tile/GltfReader.js.map +1 -1
  325. package/lib/cjs/tile/GraphicsCollector.js.map +1 -1
  326. package/lib/cjs/tile/I3dmReader.js.map +1 -1
  327. package/lib/cjs/tile/IModelTile.js.map +1 -1
  328. package/lib/cjs/tile/IModelTileRequestChannels.js.map +1 -1
  329. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  330. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  331. package/lib/cjs/tile/LRUTileList.js.map +1 -1
  332. package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -1
  333. package/lib/cjs/tile/PntsReader.js.map +1 -1
  334. package/lib/cjs/tile/RealityTile.js.map +1 -1
  335. package/lib/cjs/tile/RealityTileDrawArgs.js.map +1 -1
  336. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  337. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  338. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  339. package/lib/cjs/tile/Tile.js.map +1 -1
  340. package/lib/cjs/tile/TileAdmin.d.ts +1 -1
  341. package/lib/cjs/tile/TileAdmin.js +1 -1
  342. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  343. package/lib/cjs/tile/TileContent.js.map +1 -1
  344. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  345. package/lib/cjs/tile/TileGeometryCollector.js.map +1 -1
  346. package/lib/cjs/tile/TileParams.js.map +1 -1
  347. package/lib/cjs/tile/TileRequest.js.map +1 -1
  348. package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
  349. package/lib/cjs/tile/TileRequestChannels.js.map +1 -1
  350. package/lib/cjs/tile/TileStorage.js.map +1 -1
  351. package/lib/cjs/tile/TileTree.js.map +1 -1
  352. package/lib/cjs/tile/TileTreeOwner.js.map +1 -1
  353. package/lib/cjs/tile/TileTreeParams.js.map +1 -1
  354. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  355. package/lib/cjs/tile/TileTreeSupplier.js.map +1 -1
  356. package/lib/cjs/tile/TileUsageMarker.js.map +1 -1
  357. package/lib/cjs/tile/TileUser.js.map +1 -1
  358. package/lib/cjs/tile/TileUserSet.js.map +1 -1
  359. package/lib/cjs/tile/TiledGraphicsProvider.js.map +1 -1
  360. package/lib/cjs/tile/ViewFlagOverrides.js.map +1 -1
  361. package/lib/cjs/tile/internal.js.map +1 -1
  362. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
  363. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  364. package/lib/cjs/tile/map/BingElevation.js.map +1 -1
  365. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  366. package/lib/cjs/tile/map/EllipsoidTerrainProvider.js.map +1 -1
  367. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  368. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  369. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  370. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  371. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  372. package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  373. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  374. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  375. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  376. package/lib/cjs/tile/map/MapFeatureInfo.js.map +1 -1
  377. package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -1
  378. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  379. package/lib/cjs/tile/map/MapLayerImageryProvider.js +2 -2
  380. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  381. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  382. package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
  383. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  384. package/lib/cjs/tile/map/MapTileAvailability.js.map +1 -1
  385. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  386. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  387. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  388. package/lib/cjs/tile/map/QuadId.js.map +1 -1
  389. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  390. package/lib/cjs/tile/map/TerrainProvider.js.map +1 -1
  391. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  392. package/lib/cjs/tile/map/WmsUtilities.js.map +1 -1
  393. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  394. package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
  395. package/lib/cjs/tools/ClipViewTool.js.map +1 -1
  396. package/lib/cjs/tools/EditManipulator.js.map +1 -1
  397. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  398. package/lib/cjs/tools/EventController.js.map +1 -1
  399. package/lib/cjs/tools/IdleTool.js.map +1 -1
  400. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  401. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  402. package/lib/cjs/tools/SelectTool.js.map +1 -1
  403. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  404. package/lib/cjs/tools/ToolAssistance.js.map +1 -1
  405. package/lib/cjs/tools/ToolSettings.js.map +1 -1
  406. package/lib/cjs/tools/ViewTool.js.map +1 -1
  407. package/lib/cjs/webgl.js.map +1 -1
  408. package/lib/esm/AccuDraw.js.map +1 -1
  409. package/lib/esm/AccuSnap.js.map +1 -1
  410. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  411. package/lib/esm/ApproximateTerrainHeightsProps.js.map +1 -1
  412. package/lib/esm/AuxCoordSys.js.map +1 -1
  413. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  414. package/lib/esm/BingLocation.js.map +1 -1
  415. package/lib/esm/BriefcaseConnection.js.map +1 -1
  416. package/lib/esm/BriefcaseTxns.js.map +1 -1
  417. package/lib/esm/CategorySelectorState.js.map +1 -1
  418. package/lib/esm/ChangeFlags.js.map +1 -1
  419. package/lib/esm/CheckpointConnection.js.map +1 -1
  420. package/lib/esm/CoordSystem.js.map +1 -1
  421. package/lib/esm/DecorationsCache.js.map +1 -1
  422. package/lib/esm/DevTools.js.map +1 -1
  423. package/lib/esm/DisplayStyleState.js.map +1 -1
  424. package/lib/esm/DrawingViewState.js +5 -5
  425. package/lib/esm/DrawingViewState.js.map +1 -1
  426. package/lib/esm/ElementLocateManager.js.map +1 -1
  427. package/lib/esm/EmphasizeElements.js.map +1 -1
  428. package/lib/esm/EntityState.js.map +1 -1
  429. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  430. package/lib/esm/FeatureOverrideProvider.js.map +1 -1
  431. package/lib/esm/FlashSettings.js.map +1 -1
  432. package/lib/esm/FrontendHubAccess.js.map +1 -1
  433. package/lib/esm/FrontendLoggerCategory.js.map +1 -1
  434. package/lib/esm/Frustum2d.js.map +1 -1
  435. package/lib/esm/FrustumAnimator.js.map +1 -1
  436. package/lib/esm/FuzzySearch.js.map +1 -1
  437. package/lib/esm/GeoServices.js.map +1 -1
  438. package/lib/esm/GlobeAnimator.js.map +1 -1
  439. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  440. package/lib/esm/HitDetail.js.map +1 -1
  441. package/lib/esm/IModelApp.js.map +1 -1
  442. package/lib/esm/IModelConnection.js +23 -23
  443. package/lib/esm/IModelConnection.js.map +1 -1
  444. package/lib/esm/IModelRoutingContext.js.map +1 -1
  445. package/lib/esm/IModeljs-css.d.ts +2 -2
  446. package/lib/esm/IModeljs-css.d.ts.map +1 -1
  447. package/lib/esm/IModeljs-css.js +136 -136
  448. package/lib/esm/IModeljs-css.js.map +1 -1
  449. package/lib/esm/ImageUtil.js.map +1 -1
  450. package/lib/esm/IpcApp.js.map +1 -1
  451. package/lib/esm/LinePlaneIntersect.js.map +1 -1
  452. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  453. package/lib/esm/MarginPercent.js.map +1 -1
  454. package/lib/esm/Marker.js.map +1 -1
  455. package/lib/esm/ModelSelectorState.js.map +1 -1
  456. package/lib/esm/NativeApp.js.map +1 -1
  457. package/lib/esm/NativeAppLogger.js.map +1 -1
  458. package/lib/esm/NoRenderApp.js.map +1 -1
  459. package/lib/esm/NotificationManager.js.map +1 -1
  460. package/lib/esm/PerModelCategoryVisibility.js.map +1 -1
  461. package/lib/esm/PlanarClipMaskState.js.map +1 -1
  462. package/lib/esm/RealityDataSource.js.map +1 -1
  463. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  464. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
  465. package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  466. package/lib/esm/SelectionSet.js.map +1 -1
  467. package/lib/esm/SheetViewState.js.map +1 -1
  468. package/lib/esm/SpatialViewState.js.map +1 -1
  469. package/lib/esm/Sprites.js.map +1 -1
  470. package/lib/esm/StandardView.js.map +1 -1
  471. package/lib/esm/SubCategoriesCache.js.map +1 -1
  472. package/lib/esm/TentativePoint.js.map +1 -1
  473. package/lib/esm/Tiles.js.map +1 -1
  474. package/lib/esm/UserPreferences.js.map +1 -1
  475. package/lib/esm/ViewAnimation.js.map +1 -1
  476. package/lib/esm/ViewContext.js.map +1 -1
  477. package/lib/esm/ViewCreator2d.js.map +1 -1
  478. package/lib/esm/ViewCreator3d.js.map +1 -1
  479. package/lib/esm/ViewGlobalLocation.js.map +1 -1
  480. package/lib/esm/ViewManager.js.map +1 -1
  481. package/lib/esm/ViewPose.js.map +1 -1
  482. package/lib/esm/ViewRect.js.map +1 -1
  483. package/lib/esm/ViewState.js.map +1 -1
  484. package/lib/esm/ViewStatus.js.map +1 -1
  485. package/lib/esm/ViewingSpace.js.map +1 -1
  486. package/lib/esm/Viewport.js.map +1 -1
  487. package/lib/esm/ViewportSync.js.map +1 -1
  488. package/lib/esm/WebWorkerManager.js.map +1 -1
  489. package/lib/esm/core-frontend.js.map +1 -1
  490. package/lib/esm/extension/Extension.js.map +1 -1
  491. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  492. package/lib/esm/extension/ExtensionHost.js.map +1 -1
  493. package/lib/esm/extension/ExtensionImpl.js.map +1 -1
  494. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  495. package/lib/esm/extension/providers/ExtensionLoadScript.js.map +1 -1
  496. package/lib/esm/extension/providers/LocalExtensionProvider.js.map +1 -1
  497. package/lib/esm/extension/providers/RemoteExtensionProvider.js.map +1 -1
  498. package/lib/esm/gltf/GltfModel.js.map +1 -1
  499. package/lib/esm/gltf/GltfParser.js.map +1 -1
  500. package/lib/esm/gltf/GltfSchema.js.map +1 -1
  501. package/lib/esm/properties/AngleDescription.js.map +1 -1
  502. package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
  503. package/lib/esm/properties/LengthDescription.js.map +1 -1
  504. package/lib/esm/public/scripts/checkbrowser.js +24 -24
  505. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  506. package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  507. package/lib/esm/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
  508. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  509. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -1
  510. package/lib/esm/quantity-formatting/UnitsData.js.map +1 -1
  511. package/lib/esm/render/CanvasDecoration.js.map +1 -1
  512. package/lib/esm/render/Decorations.js.map +1 -1
  513. package/lib/esm/render/FeatureSymbology.js.map +1 -1
  514. package/lib/esm/render/FrameStats.js.map +1 -1
  515. package/lib/esm/render/GraphicBranch.js.map +1 -1
  516. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  517. package/lib/esm/render/GraphicPrimitive.js.map +1 -1
  518. package/lib/esm/render/InstancedGraphicParams.js.map +1 -1
  519. package/lib/esm/render/MockRender.js.map +1 -1
  520. package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
  521. package/lib/esm/render/Pixel.js.map +1 -1
  522. package/lib/esm/render/RealityMeshGraphicParams.js.map +1 -1
  523. package/lib/esm/render/RealityMeshParams.js.map +1 -1
  524. package/lib/esm/render/RenderClipVolume.js.map +1 -1
  525. package/lib/esm/render/RenderGraphic.js.map +1 -1
  526. package/lib/esm/render/RenderMaterial.js.map +1 -1
  527. package/lib/esm/render/RenderMemory.js.map +1 -1
  528. package/lib/esm/render/RenderPlan.js.map +1 -1
  529. package/lib/esm/render/RenderPlanarClassifier.js.map +1 -1
  530. package/lib/esm/render/RenderSystem.js.map +1 -1
  531. package/lib/esm/render/RenderTarget.js.map +1 -1
  532. package/lib/esm/render/RenderTexture.js.map +1 -1
  533. package/lib/esm/render/Scene.js.map +1 -1
  534. package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
  535. package/lib/esm/render/UpsampleRealityMeshParams.js.map +1 -1
  536. package/lib/esm/render/VisibleFeature.js.map +1 -1
  537. package/lib/esm/render/primitives/AuxChannelTable.js.map +1 -1
  538. package/lib/esm/render/primitives/ColorMap.js.map +1 -1
  539. package/lib/esm/render/primitives/DisplayParams.js.map +1 -1
  540. package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
  541. package/lib/esm/render/primitives/PointCloudPrimitive.js.map +1 -1
  542. package/lib/esm/render/primitives/PointStringParams.js.map +1 -1
  543. package/lib/esm/render/primitives/Polyface.js.map +1 -1
  544. package/lib/esm/render/primitives/PolylineParams.js.map +1 -1
  545. package/lib/esm/render/primitives/Primitives.js.map +1 -1
  546. package/lib/esm/render/primitives/Strokes.js.map +1 -1
  547. package/lib/esm/render/primitives/SurfaceParams.js.map +1 -1
  548. package/lib/esm/render/primitives/VertexKey.js.map +1 -1
  549. package/lib/esm/render/primitives/VertexTable.js.map +1 -1
  550. package/lib/esm/render/primitives/VertexTableSplitter.js.map +1 -1
  551. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  552. package/lib/esm/render/primitives/geometry/GeometryList.js.map +1 -1
  553. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  554. package/lib/esm/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  555. package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
  556. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  557. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  558. package/lib/esm/render/webgl/AtmosphereUniforms.js.map +1 -1
  559. package/lib/esm/render/webgl/AttributeBuffers.js.map +1 -1
  560. package/lib/esm/render/webgl/AttributeMap.js.map +1 -1
  561. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  562. package/lib/esm/render/webgl/BatchState.js.map +1 -1
  563. package/lib/esm/render/webgl/BatchUniforms.js.map +1 -1
  564. package/lib/esm/render/webgl/BranchStack.js.map +1 -1
  565. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  566. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  567. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  568. package/lib/esm/render/webgl/ClipStack.js.map +1 -1
  569. package/lib/esm/render/webgl/ClipVolume.js.map +1 -1
  570. package/lib/esm/render/webgl/ClippingProgram.js.map +1 -1
  571. package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
  572. package/lib/esm/render/webgl/Diagnostics.js.map +1 -1
  573. package/lib/esm/render/webgl/Disposable.js.map +1 -1
  574. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  575. package/lib/esm/render/webgl/EDL.js.map +1 -1
  576. package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -1
  577. package/lib/esm/render/webgl/EdgeSettings.js.map +1 -1
  578. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  579. package/lib/esm/render/webgl/FloatRGBA.js.map +1 -1
  580. package/lib/esm/render/webgl/FrameBuffer.js.map +1 -1
  581. package/lib/esm/render/webgl/FrustumUniforms.js.map +1 -1
  582. package/lib/esm/render/webgl/GL.js.map +1 -1
  583. package/lib/esm/render/webgl/GLTimer.js.map +1 -1
  584. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  585. package/lib/esm/render/webgl/HiliteUniforms.js.map +1 -1
  586. package/lib/esm/render/webgl/IModelFrameLifecycle.js.map +1 -1
  587. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  588. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  589. package/lib/esm/render/webgl/Layer.js.map +1 -1
  590. package/lib/esm/render/webgl/LayerCommands.js.map +1 -1
  591. package/lib/esm/render/webgl/LightingUniforms.js.map +1 -1
  592. package/lib/esm/render/webgl/LineCode.js.map +1 -1
  593. package/lib/esm/render/webgl/Material.js.map +1 -1
  594. package/lib/esm/render/webgl/Matrix.js.map +1 -1
  595. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  596. package/lib/esm/render/webgl/MeshData.js.map +1 -1
  597. package/lib/esm/render/webgl/MeshGeometry.js.map +1 -1
  598. package/lib/esm/render/webgl/PerformanceMetrics.js.map +1 -1
  599. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  600. package/lib/esm/render/webgl/PlanarGrid.js.map +1 -1
  601. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  602. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  603. package/lib/esm/render/webgl/PointString.js.map +1 -1
  604. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  605. package/lib/esm/render/webgl/Primitive.js.map +1 -1
  606. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  607. package/lib/esm/render/webgl/RealityModelUniforms.js.map +1 -1
  608. package/lib/esm/render/webgl/RenderBuffer.js.map +1 -1
  609. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  610. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  611. package/lib/esm/render/webgl/RenderState.js.map +1 -1
  612. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  613. package/lib/esm/render/webgl/ScratchDrawParams.js.map +1 -1
  614. package/lib/esm/render/webgl/ScreenSpaceEffect.js.map +1 -1
  615. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  616. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  617. package/lib/esm/render/webgl/ShadowUniforms.js.map +1 -1
  618. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  619. package/lib/esm/render/webgl/StyleUniforms.js.map +1 -1
  620. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
  621. package/lib/esm/render/webgl/Sync.js.map +1 -1
  622. package/lib/esm/render/webgl/System.js.map +1 -1
  623. package/lib/esm/render/webgl/Target.js.map +1 -1
  624. package/lib/esm/render/webgl/TargetGraphics.js.map +1 -1
  625. package/lib/esm/render/webgl/TargetUniforms.js.map +1 -1
  626. package/lib/esm/render/webgl/Technique.js.map +1 -1
  627. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  628. package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
  629. package/lib/esm/render/webgl/Texture.js.map +1 -1
  630. package/lib/esm/render/webgl/TextureDrape.js.map +1 -1
  631. package/lib/esm/render/webgl/ThematicSensors.js.map +1 -1
  632. package/lib/esm/render/webgl/ThematicUniforms.js.map +1 -1
  633. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  634. package/lib/esm/render/webgl/VertexLUT.js.map +1 -1
  635. package/lib/esm/render/webgl/ViewRectUniforms.js.map +1 -1
  636. package/lib/esm/render/webgl/VisibleTileFeatures.js.map +1 -1
  637. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +154 -154
  638. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  639. package/lib/esm/render/webgl/glsl/Animation.js +83 -83
  640. package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
  641. package/lib/esm/render/webgl/glsl/Atmosphere.js +266 -266
  642. package/lib/esm/render/webgl/glsl/Atmosphere.js.map +1 -1
  643. package/lib/esm/render/webgl/glsl/Blur.js +37 -37
  644. package/lib/esm/render/webgl/glsl/Blur.js.map +1 -1
  645. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +4 -4
  646. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  647. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +3 -3
  648. package/lib/esm/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  649. package/lib/esm/render/webgl/glsl/Clipping.js +60 -60
  650. package/lib/esm/render/webgl/glsl/Clipping.js.map +1 -1
  651. package/lib/esm/render/webgl/glsl/Color.js +12 -12
  652. package/lib/esm/render/webgl/glsl/Color.js.map +1 -1
  653. package/lib/esm/render/webgl/glsl/Combine3Textures.js +7 -7
  654. package/lib/esm/render/webgl/glsl/Combine3Textures.js.map +1 -1
  655. package/lib/esm/render/webgl/glsl/CombineTextures.js +5 -5
  656. package/lib/esm/render/webgl/glsl/CombineTextures.js.map +1 -1
  657. package/lib/esm/render/webgl/glsl/Common.js +16 -16
  658. package/lib/esm/render/webgl/glsl/Common.js.map +1 -1
  659. package/lib/esm/render/webgl/glsl/Composite.js +71 -71
  660. package/lib/esm/render/webgl/glsl/Composite.js.map +1 -1
  661. package/lib/esm/render/webgl/glsl/CopyColor.js +6 -6
  662. package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
  663. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +3 -3
  664. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  665. package/lib/esm/render/webgl/glsl/CopyStencil.js +4 -4
  666. package/lib/esm/render/webgl/glsl/CopyStencil.js.map +1 -1
  667. package/lib/esm/render/webgl/glsl/Decode.js +65 -65
  668. package/lib/esm/render/webgl/glsl/Decode.js.map +1 -1
  669. package/lib/esm/render/webgl/glsl/EDL.js +103 -103
  670. package/lib/esm/render/webgl/glsl/EDL.js.map +1 -1
  671. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +25 -25
  672. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  673. package/lib/esm/render/webgl/glsl/Edge.js +146 -146
  674. package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
  675. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +232 -232
  676. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  677. package/lib/esm/render/webgl/glsl/Fragment.js +41 -41
  678. package/lib/esm/render/webgl/glsl/Fragment.js.map +1 -1
  679. package/lib/esm/render/webgl/glsl/Instancing.js +21 -21
  680. package/lib/esm/render/webgl/glsl/Instancing.js.map +1 -1
  681. package/lib/esm/render/webgl/glsl/Lighting.js +92 -92
  682. package/lib/esm/render/webgl/glsl/Lighting.js.map +1 -1
  683. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  684. package/lib/esm/render/webgl/glsl/LookupTable.js +19 -19
  685. package/lib/esm/render/webgl/glsl/LookupTable.js.map +1 -1
  686. package/lib/esm/render/webgl/glsl/Monochrome.js +13 -13
  687. package/lib/esm/render/webgl/glsl/Monochrome.js.map +1 -1
  688. package/lib/esm/render/webgl/glsl/PlanarClassification.js +188 -188
  689. package/lib/esm/render/webgl/glsl/PlanarClassification.js.map +1 -1
  690. package/lib/esm/render/webgl/glsl/PlanarGrid.js +22 -22
  691. package/lib/esm/render/webgl/glsl/PlanarGrid.js.map +1 -1
  692. package/lib/esm/render/webgl/glsl/PointCloud.js +28 -28
  693. package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
  694. package/lib/esm/render/webgl/glsl/PointString.js +9 -9
  695. package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
  696. package/lib/esm/render/webgl/glsl/Polyline.js +213 -213
  697. package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
  698. package/lib/esm/render/webgl/glsl/RealityMesh.js +83 -83
  699. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  700. package/lib/esm/render/webgl/glsl/RenderPass.js.map +1 -1
  701. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +9 -9
  702. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  703. package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
  704. package/lib/esm/render/webgl/glsl/SkySphere.js +49 -49
  705. package/lib/esm/render/webgl/glsl/SkySphere.js.map +1 -1
  706. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +51 -51
  707. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  708. package/lib/esm/render/webgl/glsl/Surface.js +239 -239
  709. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  710. package/lib/esm/render/webgl/glsl/Thematic.js +134 -134
  711. package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
  712. package/lib/esm/render/webgl/glsl/Translucency.js +19 -19
  713. package/lib/esm/render/webgl/glsl/Translucency.js.map +1 -1
  714. package/lib/esm/render/webgl/glsl/Vertex.js +73 -73
  715. package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
  716. package/lib/esm/render/webgl/glsl/Viewport.js +38 -38
  717. package/lib/esm/render/webgl/glsl/Viewport.js.map +1 -1
  718. package/lib/esm/render/webgl/glsl/ViewportQuad.js.map +1 -1
  719. package/lib/esm/render/webgl/glsl/Wiremesh.js +10 -10
  720. package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -1
  721. package/lib/esm/render-primitives.js.map +1 -1
  722. package/lib/esm/request/Request.js.map +1 -1
  723. package/lib/esm/tile/B3dmReader.js.map +1 -1
  724. package/lib/esm/tile/BatchedTileIdMap.js.map +1 -1
  725. package/lib/esm/tile/CesiumAssetProvider.js.map +1 -1
  726. package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
  727. package/lib/esm/tile/ContextShareProvider.js.map +1 -1
  728. package/lib/esm/tile/DisclosedTileTreeSet.js.map +1 -1
  729. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  730. package/lib/esm/tile/GltfReader.js.map +1 -1
  731. package/lib/esm/tile/GraphicsCollector.js.map +1 -1
  732. package/lib/esm/tile/I3dmReader.js.map +1 -1
  733. package/lib/esm/tile/IModelTile.js.map +1 -1
  734. package/lib/esm/tile/IModelTileRequestChannels.js.map +1 -1
  735. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  736. package/lib/esm/tile/ImdlReader.js.map +1 -1
  737. package/lib/esm/tile/LRUTileList.js.map +1 -1
  738. package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -1
  739. package/lib/esm/tile/PntsReader.js.map +1 -1
  740. package/lib/esm/tile/RealityTile.js.map +1 -1
  741. package/lib/esm/tile/RealityTileDrawArgs.js.map +1 -1
  742. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  743. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  744. package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  745. package/lib/esm/tile/Tile.js.map +1 -1
  746. package/lib/esm/tile/TileAdmin.d.ts +1 -1
  747. package/lib/esm/tile/TileAdmin.js +1 -1
  748. package/lib/esm/tile/TileAdmin.js.map +1 -1
  749. package/lib/esm/tile/TileContent.js.map +1 -1
  750. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  751. package/lib/esm/tile/TileGeometryCollector.js.map +1 -1
  752. package/lib/esm/tile/TileParams.js.map +1 -1
  753. package/lib/esm/tile/TileRequest.js.map +1 -1
  754. package/lib/esm/tile/TileRequestChannel.js.map +1 -1
  755. package/lib/esm/tile/TileRequestChannels.js.map +1 -1
  756. package/lib/esm/tile/TileStorage.js.map +1 -1
  757. package/lib/esm/tile/TileTree.js.map +1 -1
  758. package/lib/esm/tile/TileTreeOwner.js.map +1 -1
  759. package/lib/esm/tile/TileTreeParams.js.map +1 -1
  760. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  761. package/lib/esm/tile/TileTreeSupplier.js.map +1 -1
  762. package/lib/esm/tile/TileUsageMarker.js.map +1 -1
  763. package/lib/esm/tile/TileUser.js.map +1 -1
  764. package/lib/esm/tile/TileUserSet.js.map +1 -1
  765. package/lib/esm/tile/TiledGraphicsProvider.js.map +1 -1
  766. package/lib/esm/tile/ViewFlagOverrides.js.map +1 -1
  767. package/lib/esm/tile/internal.js.map +1 -1
  768. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
  769. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  770. package/lib/esm/tile/map/BingElevation.js.map +1 -1
  771. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  772. package/lib/esm/tile/map/EllipsoidTerrainProvider.js.map +1 -1
  773. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  774. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  775. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  776. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  777. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  778. package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  779. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  780. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  781. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  782. package/lib/esm/tile/map/MapFeatureInfo.js.map +1 -1
  783. package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -1
  784. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  785. package/lib/esm/tile/map/MapLayerImageryProvider.js +2 -2
  786. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  787. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  788. package/lib/esm/tile/map/MapLayerTileTreeReference.js.map +1 -1
  789. package/lib/esm/tile/map/MapTile.js.map +1 -1
  790. package/lib/esm/tile/map/MapTileAvailability.js.map +1 -1
  791. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  792. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  793. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  794. package/lib/esm/tile/map/QuadId.js.map +1 -1
  795. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  796. package/lib/esm/tile/map/TerrainProvider.js.map +1 -1
  797. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  798. package/lib/esm/tile/map/WmsUtilities.js.map +1 -1
  799. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  800. package/lib/esm/tools/AccuDrawTool.js.map +1 -1
  801. package/lib/esm/tools/ClipViewTool.js.map +1 -1
  802. package/lib/esm/tools/EditManipulator.js.map +1 -1
  803. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  804. package/lib/esm/tools/EventController.js.map +1 -1
  805. package/lib/esm/tools/IdleTool.js.map +1 -1
  806. package/lib/esm/tools/MeasureTool.js.map +1 -1
  807. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  808. package/lib/esm/tools/SelectTool.js.map +1 -1
  809. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  810. package/lib/esm/tools/ToolAssistance.js.map +1 -1
  811. package/lib/esm/tools/ToolSettings.js.map +1 -1
  812. package/lib/esm/tools/ViewTool.js.map +1 -1
  813. package/lib/esm/webgl.js.map +1 -1
  814. package/lib/public/assets/MapLayerSources.json +25 -25
  815. package/lib/public/images/cesium-ion.svg +92 -92
  816. package/lib/public/images/imodeljs-icon.svg +2 -2
  817. package/lib/public/locales/en/CoreTools.json +477 -477
  818. package/lib/public/locales/en/iModelJs.json +170 -170
  819. package/lib/public/scripts/checkbrowser.js +24 -24
  820. package/package.json +18 -18
@@ -1 +1 @@
1
- {"version":3,"file":"Polyline.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Polyline.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 { AttributeMap } from \"../AttributeMap\";\nimport { TextureUnit } from \"../RenderFlags\";\nimport {\n FragmentShaderBuilder, FragmentShaderComponent, ProgramBuilder, VariableType, VertexShaderBuilder, VertexShaderComponent,\n} from \"../ShaderBuilder\";\nimport { System } from \"../System\";\nimport { IsInstanced, PositionType } from \"../TechniqueFlags\";\nimport { TechniqueId } from \"../TechniqueId\";\nimport { addColor } from \"./Color\";\nimport { addEdgeContrast } from \"./Edge\";\nimport { addFrustum, addShaderFlags } from \"./Common\";\nimport { unquantize2d } from \"./Decode\";\nimport { addHiliter } from \"./FeatureSymbology\";\nimport { addWhiteOnWhiteReversal } from \"./Fragment\";\nimport {\n addLineCode as addLineCodeUniform, addLineWeight, addModelViewMatrix, addProjectionMatrix, addSamplePosition,\n} from \"./Vertex\";\nimport { addModelToWindowCoordinates, addViewport } from \"./Viewport\";\n\nconst checkForDiscard = \"return discardByLineCode;\";\n\nconst applyLineCode = `\n if (v_texc.x >= 0.0) { // v_texc = (-1,-1) for solid lines - don't bother with any of this\n vec4 texColor = TEXTURE(u_lineCodeTexture, v_texc);\n discardByLineCode = (0.0 == texColor.r);\n }\n\n if (v_lnInfo.w > 0.5) { // line needs pixel trimming\n // calculate pixel distance from pixel center to expected line center, opposite dir from major\n vec2 dxy = gl_FragCoord.xy - v_lnInfo.xy;\n if (v_lnInfo.w < 1.5) // not x-major\n dxy = dxy.yx;\n\n float dist = v_lnInfo.z * dxy.x - dxy.y;\n float distA = abs(dist);\n if (distA > 0.5 || (distA == 0.5 && dist < 0.0))\n discardByLineCode = true; // borrow this flag to force discard\n }\n\n return baseColor;\n`;\n\nconst computeTextureCoord = `\nvec2 computeLineCodeTextureCoords(vec2 windowDir, vec4 projPos, float adjust) {\n vec2 texc;\n float lineCode = computeLineCode();\n if (0.0 == lineCode) {\n // Solid line - tell frag shader not to bother.\n texc = vec2(-1.0, -1.0);\n } else {\n const float imagesPerPixel = 1.0/32.0;\n const float textureCoordinateBase = 8192.0; // Temp workardound for clipping problem in perspective views (negative values don't seem to interpolate correctly).\n\n if (abs(windowDir.x) > abs(windowDir.y))\n texc.x = textureCoordinateBase + imagesPerPixel * (projPos.x + adjust * windowDir.x);\n else\n texc.x = textureCoordinateBase + imagesPerPixel * (projPos.y + adjust * windowDir.y);\n\n const float numLineCodes = 16.0; // NB: Actually only 10, but texture is 16px tall because it needs to be a power of 2.\n const float rowsPerCode = 1.0;\n const float numRows = numLineCodes*rowsPerCode;\n const float centerY = 0.5/numRows;\n const float stepY = rowsPerCode/numRows;\n texc.y = stepY * lineCode + centerY;\n }\n\n return texc;\n}\n`;\n\n/** @internal */\nexport const adjustWidth = `\nvoid adjustWidth(inout float width, vec2 d2, vec2 org) {\n if (u_aaSamples > 1) {\n if (width < 5.0)\n width += (5.0 - width) * 0.125;\n return;\n }\n\n // calculate slope based width adjustment for non-AA lines, widths 1 to 4\n vec2 d2A = abs(d2);\n const float s_myFltEpsilon = 0.0001; // limit test resolution to 4 digits in case 24 bit (s16e7) is used in hardware\n if (d2A.y > s_myFltEpsilon && width < 4.5) {\n float len = length(d2A);\n float tan = d2A.x / d2A.y;\n\n if (width < 1.5) { // width 1\n if (tan <= 1.0)\n width = d2A.y;\n else\n width = d2A.x;\n // width 1 requires additional adjustment plus trimming in frag shader using v_lnInfo\n width *= 1.01;\n v_lnInfo.xy = org;\n v_lnInfo.w = 1.0; // set flag to do trimming\n // set slope in v_lnInfo.z\n if (d2A.x - d2A.y > s_myFltEpsilon) {\n v_lnInfo.z = d2.y / d2.x;\n v_lnInfo.w += 2.0; // add in x-major flag\n } else\n v_lnInfo.z = d2.x / d2.y;\n\n } else if (width < 2.5) { // width 2\n if (tan <= 0.5)\n width = 2.0 * d2A.y;\n else\n width = (d2A.y + 2.0 * d2A.x);\n\n } else if (width < 3.5) { // width 3\n if (tan <= 1.0)\n width = (3.0 * d2A.y + d2A.x);\n else\n width = (d2A.y + 3.0 * d2A.x);\n\n } else { // if (width < 4.5) // width 4\n if (tan <= 0.5)\n width = (4.0 * d2A.y + d2A.x);\n else if (tan <= 2.0)\n width = (3.0 * d2A.y + 3.0 * d2A.x);\n else\n width = (d2A.y + 4.0 * d2A.x);\n }\n width /= len;\n }\n}\n`;\n\n/** @internal */\nexport function addAdjustWidth(vert: VertexShaderBuilder) {\n vert.addUniform(\"u_aaSamples\", VariableType.Int, (prog) => {\n prog.addGraphicUniform(\"u_aaSamples\", (attr, params) => {\n const numSamples = System.instance.frameBufferStack.currentFbMultisampled ? params.target.compositor.antialiasSamples : 1;\n attr.setUniform1i(numSamples);\n });\n });\n vert.addFunction(adjustWidth);\n}\n\n/** @internal */\nexport function addLineCodeTexture(frag: FragmentShaderBuilder) {\n frag.addUniform(\"u_lineCodeTexture\", VariableType.Sampler2D, (prog) => {\n prog.addProgramUniform(\"u_lineCodeTexture\", (uniform) => {\n const lct = System.instance.lineCodeTexture;\n assert(undefined !== lct);\n if (undefined !== lct)\n lct.bindSampler(uniform, TextureUnit.LineCode);\n });\n });\n}\n\n/** @internal */\nexport function addLineCode(prog: ProgramBuilder, args: string) {\n const vert = prog.vert;\n const frag = prog.frag;\n\n addLineCodeUniform(vert);\n\n const funcCall: string = `computeLineCodeTextureCoords(${args})`;\n\n prog.addFunctionComputedVaryingWithArgs(\"v_texc\", VariableType.Vec2, funcCall, computeTextureCoord);\n\n addFrustum(prog);\n addLineCodeTexture(prog.frag);\n\n frag.set(FragmentShaderComponent.FinalizeBaseColor, applyLineCode);\n frag.set(FragmentShaderComponent.CheckForDiscard, checkForDiscard);\n frag.addGlobal(\"discardByLineCode\", VariableType.Boolean, \"false\");\n}\n\nfunction polylineAddLineCode(prog: ProgramBuilder) {\n addLineCode(prog, lineCodeArgs);\n addModelViewMatrix(prog.vert);\n}\n\nfunction addCommon(prog: ProgramBuilder) {\n const vert = prog.vert;\n addModelToWindowCoordinates(vert); // adds u_mvp, u_viewportTransformation\n addProjectionMatrix(vert);\n addModelViewMatrix(vert);\n addViewport(vert);\n\n vert.addGlobal(\"g_windowPos\", VariableType.Vec4);\n vert.addGlobal(\"g_prevPos\", VariableType.Vec4);\n vert.addGlobal(\"g_nextPos\", VariableType.Vec4);\n vert.addGlobal(\"g_windowDir\", VariableType.Vec2);\n vert.addInitializer(decodeAdjacentPositions);\n\n vert.addFunction(unquantize2d);\n\n addLineWeight(vert);\n\n vert.addGlobal(\"miterAdjust\", VariableType.Float, \"0.0\");\n prog.addVarying(\"v_eyeSpace\", VariableType.Vec3);\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\n prog.addVarying(\"v_lnInfo\", VariableType.Vec4);\n addAdjustWidth(vert);\n\n addSamplePosition(vert);\n vert.addFunction(decodePosition);\n}\n\nconst decodePosition = `\nvec4 decodePosition(vec3 baseIndex) {\n float index = decodeUInt24(baseIndex);\n return samplePosition(index);\n}\n`;\n\nconst decodeAdjacentPositions = `\n g_prevPos = decodePosition(a_prevIndex);\n g_nextPos = decodePosition(a_nextIndex);\n`;\n\nconst computePosition = `\n const float kNone = 0.0,\n kSquare = 1.0*3.0,\n kMiter = 2.0*3.0,\n kMiterInsideOnly = 3.0*3.0,\n kJointBase = 4.0*3.0,\n kNegatePerp = 8.0*3.0,\n kNegateAlong = 16.0*3.0,\n kNoneAdjWt = 32.0*3.0;\n\n v_lnInfo = vec4(0.0, 0.0, 0.0, 0.0); // init and set flag to false\n\n vec4 next = g_nextPos;\n vec4 pos;\n g_windowPos = modelToWindowCoordinates(rawPos, next, pos, v_eyeSpace);\n if (g_windowPos.w == 0.0)\n return g_windowPos;\n\n float param = a_param;\n float weight = computeLineWeight();\n float scale = 1.0, directionScale = 1.0;\n\n if (param >= kNoneAdjWt)\n param -= kNoneAdjWt;\n\n if (param >= kNegateAlong) {\n directionScale = -directionScale;\n param -= kNegateAlong;\n }\n\n if (param >= kNegatePerp) {\n scale = -1.0;\n param -= kNegatePerp;\n }\n\n vec4 otherPos;\n vec3 otherMvPos;\n vec4 projNext = modelToWindowCoordinates(next, rawPos, otherPos, otherMvPos);\n g_windowDir = projNext.xy - g_windowPos.xy;\n\n if (param < kJointBase) {\n vec2 dir = (directionScale > 0.0) ? g_windowDir : -g_windowDir;\n vec2 pos = (directionScale > 0.0) ? g_windowPos.xy : projNext.xy;\n adjustWidth(weight, dir, pos);\n }\n\n if (kNone != param) {\n vec2 delta = vec2(0.0);\n vec4 prev = g_prevPos;\n vec4 projPrev = modelToWindowCoordinates(prev, rawPos, otherPos, otherMvPos);\n vec2 prevDir = g_windowPos.xy - projPrev.xy;\n float thisLength = sqrt(g_windowDir.x * g_windowDir.x + g_windowDir.y * g_windowDir.y);\n const float s_minNormalizeLength = 1.0E-5; // avoid normalizing zero length vectors.\n float dist = weight / 2.0;\n\n if (thisLength > s_minNormalizeLength) {\n g_windowDir /= thisLength;\n\n float prevLength = sqrt(prevDir.x * prevDir.x + prevDir.y * prevDir.y);\n\n if (prevLength > s_minNormalizeLength) {\n prevDir /= prevLength;\n const float s_minParallelDot= -.9999, s_maxParallelDot = .9999;\n float prevNextDot = dot(prevDir, g_windowDir);\n\n if (prevNextDot < s_minParallelDot || prevNextDot > s_maxParallelDot) // No miter if parallel or antiparallel.\n param = kSquare;\n } else\n param = kSquare;\n } else {\n g_windowDir = -normalize(prevDir);\n param = kSquare;\n }\n\n vec2 perp = scale * vec2(-g_windowDir.y, g_windowDir.x);\n\n if (param == kSquare) {\n delta = perp;\n } else {\n vec2 bisector = normalize(prevDir - g_windowDir);\n float dotP = dot (bisector, perp);\n\n if (dotP != 0.0) { // Should never occur - but avoid divide by zero.\n const float maxMiter = 3.0;\n float miterDistance = 1.0/dotP;\n\n if (param == kMiter) { // Straight miter.\n delta = (abs(miterDistance) > maxMiter) ? perp : bisector * miterDistance;\n\n } else if (param == kMiterInsideOnly) { // Miter at inside, square at outside (to make room for joint).\n delta = (dotP > 0.0 || abs(miterDistance) > maxMiter) ? perp : bisector * miterDistance;\n\n } else {\n const float jointTriangleCount = 3.0;\n float ratio = (param - kJointBase) / jointTriangleCount; // 3 triangles per half-joint as defined in Graphics.cpp\n delta = normalize((1.0 - ratio) * bisector + (dotP < 0.0 ? -ratio : ratio) * perp); // Miter/Straight combination.\n }\n }\n }\n\n miterAdjust = dot(g_windowDir, delta) * dist; // Not actually used for hilite shader but meh.\n pos.x += dist * delta.x * 2.0 * pos.w / u_viewport.x;\n pos.y += dist * delta.y * 2.0 * pos.w / u_viewport.y;\n }\n\n return pos;\n`;\n\nconst lineCodeArgs = \"g_windowDir, g_windowPos, miterAdjust\";\n\n/** @internal */\nexport function createPolylineBuilder(isInstanced: IsInstanced, positionType: PositionType): ProgramBuilder {\n const instanced = IsInstanced.Yes === isInstanced;\n const attrMap = AttributeMap.findAttributeMap(TechniqueId.Polyline, instanced);\n const builder = new ProgramBuilder(attrMap, { positionType, instanced });\n\n addShaderFlags(builder);\n\n addCommon(builder);\n\n polylineAddLineCode(builder);\n\n addColor(builder);\n addEdgeContrast(builder.vert);\n addWhiteOnWhiteReversal(builder.frag);\n\n return builder;\n}\n\n/** @internal */\nexport function createPolylineHiliter(isInstanced: IsInstanced, positionType: PositionType): ProgramBuilder {\n const instanced = IsInstanced.Yes === isInstanced;\n const attrMap = AttributeMap.findAttributeMap(TechniqueId.Polyline, instanced);\n const builder = new ProgramBuilder(attrMap, { positionType, instanced });\n\n addCommon(builder);\n addFrustum(builder);\n addHiliter(builder, true);\n return builder;\n}\n"]}
1
+ {"version":3,"file":"Polyline.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Polyline.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 { AttributeMap } from \"../AttributeMap\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport {\r\n FragmentShaderBuilder, FragmentShaderComponent, ProgramBuilder, VariableType, VertexShaderBuilder, VertexShaderComponent,\r\n} from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { IsInstanced, PositionType } from \"../TechniqueFlags\";\r\nimport { TechniqueId } from \"../TechniqueId\";\r\nimport { addColor } from \"./Color\";\r\nimport { addEdgeContrast } from \"./Edge\";\r\nimport { addFrustum, addShaderFlags } from \"./Common\";\r\nimport { unquantize2d } from \"./Decode\";\r\nimport { addHiliter } from \"./FeatureSymbology\";\r\nimport { addWhiteOnWhiteReversal } from \"./Fragment\";\r\nimport {\r\n addLineCode as addLineCodeUniform, addLineWeight, addModelViewMatrix, addProjectionMatrix, addSamplePosition,\r\n} from \"./Vertex\";\r\nimport { addModelToWindowCoordinates, addViewport } from \"./Viewport\";\r\n\r\nconst checkForDiscard = \"return discardByLineCode;\";\r\n\r\nconst applyLineCode = `\r\n if (v_texc.x >= 0.0) { // v_texc = (-1,-1) for solid lines - don't bother with any of this\r\n vec4 texColor = TEXTURE(u_lineCodeTexture, v_texc);\r\n discardByLineCode = (0.0 == texColor.r);\r\n }\r\n\r\n if (v_lnInfo.w > 0.5) { // line needs pixel trimming\r\n // calculate pixel distance from pixel center to expected line center, opposite dir from major\r\n vec2 dxy = gl_FragCoord.xy - v_lnInfo.xy;\r\n if (v_lnInfo.w < 1.5) // not x-major\r\n dxy = dxy.yx;\r\n\r\n float dist = v_lnInfo.z * dxy.x - dxy.y;\r\n float distA = abs(dist);\r\n if (distA > 0.5 || (distA == 0.5 && dist < 0.0))\r\n discardByLineCode = true; // borrow this flag to force discard\r\n }\r\n\r\n return baseColor;\r\n`;\r\n\r\nconst computeTextureCoord = `\r\nvec2 computeLineCodeTextureCoords(vec2 windowDir, vec4 projPos, float adjust) {\r\n vec2 texc;\r\n float lineCode = computeLineCode();\r\n if (0.0 == lineCode) {\r\n // Solid line - tell frag shader not to bother.\r\n texc = vec2(-1.0, -1.0);\r\n } else {\r\n const float imagesPerPixel = 1.0/32.0;\r\n const float textureCoordinateBase = 8192.0; // Temp workardound for clipping problem in perspective views (negative values don't seem to interpolate correctly).\r\n\r\n if (abs(windowDir.x) > abs(windowDir.y))\r\n texc.x = textureCoordinateBase + imagesPerPixel * (projPos.x + adjust * windowDir.x);\r\n else\r\n texc.x = textureCoordinateBase + imagesPerPixel * (projPos.y + adjust * windowDir.y);\r\n\r\n const float numLineCodes = 16.0; // NB: Actually only 10, but texture is 16px tall because it needs to be a power of 2.\r\n const float rowsPerCode = 1.0;\r\n const float numRows = numLineCodes*rowsPerCode;\r\n const float centerY = 0.5/numRows;\r\n const float stepY = rowsPerCode/numRows;\r\n texc.y = stepY * lineCode + centerY;\r\n }\r\n\r\n return texc;\r\n}\r\n`;\r\n\r\n/** @internal */\r\nexport const adjustWidth = `\r\nvoid adjustWidth(inout float width, vec2 d2, vec2 org) {\r\n if (u_aaSamples > 1) {\r\n if (width < 5.0)\r\n width += (5.0 - width) * 0.125;\r\n return;\r\n }\r\n\r\n // calculate slope based width adjustment for non-AA lines, widths 1 to 4\r\n vec2 d2A = abs(d2);\r\n const float s_myFltEpsilon = 0.0001; // limit test resolution to 4 digits in case 24 bit (s16e7) is used in hardware\r\n if (d2A.y > s_myFltEpsilon && width < 4.5) {\r\n float len = length(d2A);\r\n float tan = d2A.x / d2A.y;\r\n\r\n if (width < 1.5) { // width 1\r\n if (tan <= 1.0)\r\n width = d2A.y;\r\n else\r\n width = d2A.x;\r\n // width 1 requires additional adjustment plus trimming in frag shader using v_lnInfo\r\n width *= 1.01;\r\n v_lnInfo.xy = org;\r\n v_lnInfo.w = 1.0; // set flag to do trimming\r\n // set slope in v_lnInfo.z\r\n if (d2A.x - d2A.y > s_myFltEpsilon) {\r\n v_lnInfo.z = d2.y / d2.x;\r\n v_lnInfo.w += 2.0; // add in x-major flag\r\n } else\r\n v_lnInfo.z = d2.x / d2.y;\r\n\r\n } else if (width < 2.5) { // width 2\r\n if (tan <= 0.5)\r\n width = 2.0 * d2A.y;\r\n else\r\n width = (d2A.y + 2.0 * d2A.x);\r\n\r\n } else if (width < 3.5) { // width 3\r\n if (tan <= 1.0)\r\n width = (3.0 * d2A.y + d2A.x);\r\n else\r\n width = (d2A.y + 3.0 * d2A.x);\r\n\r\n } else { // if (width < 4.5) // width 4\r\n if (tan <= 0.5)\r\n width = (4.0 * d2A.y + d2A.x);\r\n else if (tan <= 2.0)\r\n width = (3.0 * d2A.y + 3.0 * d2A.x);\r\n else\r\n width = (d2A.y + 4.0 * d2A.x);\r\n }\r\n width /= len;\r\n }\r\n}\r\n`;\r\n\r\n/** @internal */\r\nexport function addAdjustWidth(vert: VertexShaderBuilder) {\r\n vert.addUniform(\"u_aaSamples\", VariableType.Int, (prog) => {\r\n prog.addGraphicUniform(\"u_aaSamples\", (attr, params) => {\r\n const numSamples = System.instance.frameBufferStack.currentFbMultisampled ? params.target.compositor.antialiasSamples : 1;\r\n attr.setUniform1i(numSamples);\r\n });\r\n });\r\n vert.addFunction(adjustWidth);\r\n}\r\n\r\n/** @internal */\r\nexport function addLineCodeTexture(frag: FragmentShaderBuilder) {\r\n frag.addUniform(\"u_lineCodeTexture\", VariableType.Sampler2D, (prog) => {\r\n prog.addProgramUniform(\"u_lineCodeTexture\", (uniform) => {\r\n const lct = System.instance.lineCodeTexture;\r\n assert(undefined !== lct);\r\n if (undefined !== lct)\r\n lct.bindSampler(uniform, TextureUnit.LineCode);\r\n });\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function addLineCode(prog: ProgramBuilder, args: string) {\r\n const vert = prog.vert;\r\n const frag = prog.frag;\r\n\r\n addLineCodeUniform(vert);\r\n\r\n const funcCall: string = `computeLineCodeTextureCoords(${args})`;\r\n\r\n prog.addFunctionComputedVaryingWithArgs(\"v_texc\", VariableType.Vec2, funcCall, computeTextureCoord);\r\n\r\n addFrustum(prog);\r\n addLineCodeTexture(prog.frag);\r\n\r\n frag.set(FragmentShaderComponent.FinalizeBaseColor, applyLineCode);\r\n frag.set(FragmentShaderComponent.CheckForDiscard, checkForDiscard);\r\n frag.addGlobal(\"discardByLineCode\", VariableType.Boolean, \"false\");\r\n}\r\n\r\nfunction polylineAddLineCode(prog: ProgramBuilder) {\r\n addLineCode(prog, lineCodeArgs);\r\n addModelViewMatrix(prog.vert);\r\n}\r\n\r\nfunction addCommon(prog: ProgramBuilder) {\r\n const vert = prog.vert;\r\n addModelToWindowCoordinates(vert); // adds u_mvp, u_viewportTransformation\r\n addProjectionMatrix(vert);\r\n addModelViewMatrix(vert);\r\n addViewport(vert);\r\n\r\n vert.addGlobal(\"g_windowPos\", VariableType.Vec4);\r\n vert.addGlobal(\"g_prevPos\", VariableType.Vec4);\r\n vert.addGlobal(\"g_nextPos\", VariableType.Vec4);\r\n vert.addGlobal(\"g_windowDir\", VariableType.Vec2);\r\n vert.addInitializer(decodeAdjacentPositions);\r\n\r\n vert.addFunction(unquantize2d);\r\n\r\n addLineWeight(vert);\r\n\r\n vert.addGlobal(\"miterAdjust\", VariableType.Float, \"0.0\");\r\n prog.addVarying(\"v_eyeSpace\", VariableType.Vec3);\r\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n prog.addVarying(\"v_lnInfo\", VariableType.Vec4);\r\n addAdjustWidth(vert);\r\n\r\n addSamplePosition(vert);\r\n vert.addFunction(decodePosition);\r\n}\r\n\r\nconst decodePosition = `\r\nvec4 decodePosition(vec3 baseIndex) {\r\n float index = decodeUInt24(baseIndex);\r\n return samplePosition(index);\r\n}\r\n`;\r\n\r\nconst decodeAdjacentPositions = `\r\n g_prevPos = decodePosition(a_prevIndex);\r\n g_nextPos = decodePosition(a_nextIndex);\r\n`;\r\n\r\nconst computePosition = `\r\n const float kNone = 0.0,\r\n kSquare = 1.0*3.0,\r\n kMiter = 2.0*3.0,\r\n kMiterInsideOnly = 3.0*3.0,\r\n kJointBase = 4.0*3.0,\r\n kNegatePerp = 8.0*3.0,\r\n kNegateAlong = 16.0*3.0,\r\n kNoneAdjWt = 32.0*3.0;\r\n\r\n v_lnInfo = vec4(0.0, 0.0, 0.0, 0.0); // init and set flag to false\r\n\r\n vec4 next = g_nextPos;\r\n vec4 pos;\r\n g_windowPos = modelToWindowCoordinates(rawPos, next, pos, v_eyeSpace);\r\n if (g_windowPos.w == 0.0)\r\n return g_windowPos;\r\n\r\n float param = a_param;\r\n float weight = computeLineWeight();\r\n float scale = 1.0, directionScale = 1.0;\r\n\r\n if (param >= kNoneAdjWt)\r\n param -= kNoneAdjWt;\r\n\r\n if (param >= kNegateAlong) {\r\n directionScale = -directionScale;\r\n param -= kNegateAlong;\r\n }\r\n\r\n if (param >= kNegatePerp) {\r\n scale = -1.0;\r\n param -= kNegatePerp;\r\n }\r\n\r\n vec4 otherPos;\r\n vec3 otherMvPos;\r\n vec4 projNext = modelToWindowCoordinates(next, rawPos, otherPos, otherMvPos);\r\n g_windowDir = projNext.xy - g_windowPos.xy;\r\n\r\n if (param < kJointBase) {\r\n vec2 dir = (directionScale > 0.0) ? g_windowDir : -g_windowDir;\r\n vec2 pos = (directionScale > 0.0) ? g_windowPos.xy : projNext.xy;\r\n adjustWidth(weight, dir, pos);\r\n }\r\n\r\n if (kNone != param) {\r\n vec2 delta = vec2(0.0);\r\n vec4 prev = g_prevPos;\r\n vec4 projPrev = modelToWindowCoordinates(prev, rawPos, otherPos, otherMvPos);\r\n vec2 prevDir = g_windowPos.xy - projPrev.xy;\r\n float thisLength = sqrt(g_windowDir.x * g_windowDir.x + g_windowDir.y * g_windowDir.y);\r\n const float s_minNormalizeLength = 1.0E-5; // avoid normalizing zero length vectors.\r\n float dist = weight / 2.0;\r\n\r\n if (thisLength > s_minNormalizeLength) {\r\n g_windowDir /= thisLength;\r\n\r\n float prevLength = sqrt(prevDir.x * prevDir.x + prevDir.y * prevDir.y);\r\n\r\n if (prevLength > s_minNormalizeLength) {\r\n prevDir /= prevLength;\r\n const float s_minParallelDot= -.9999, s_maxParallelDot = .9999;\r\n float prevNextDot = dot(prevDir, g_windowDir);\r\n\r\n if (prevNextDot < s_minParallelDot || prevNextDot > s_maxParallelDot) // No miter if parallel or antiparallel.\r\n param = kSquare;\r\n } else\r\n param = kSquare;\r\n } else {\r\n g_windowDir = -normalize(prevDir);\r\n param = kSquare;\r\n }\r\n\r\n vec2 perp = scale * vec2(-g_windowDir.y, g_windowDir.x);\r\n\r\n if (param == kSquare) {\r\n delta = perp;\r\n } else {\r\n vec2 bisector = normalize(prevDir - g_windowDir);\r\n float dotP = dot (bisector, perp);\r\n\r\n if (dotP != 0.0) { // Should never occur - but avoid divide by zero.\r\n const float maxMiter = 3.0;\r\n float miterDistance = 1.0/dotP;\r\n\r\n if (param == kMiter) { // Straight miter.\r\n delta = (abs(miterDistance) > maxMiter) ? perp : bisector * miterDistance;\r\n\r\n } else if (param == kMiterInsideOnly) { // Miter at inside, square at outside (to make room for joint).\r\n delta = (dotP > 0.0 || abs(miterDistance) > maxMiter) ? perp : bisector * miterDistance;\r\n\r\n } else {\r\n const float jointTriangleCount = 3.0;\r\n float ratio = (param - kJointBase) / jointTriangleCount; // 3 triangles per half-joint as defined in Graphics.cpp\r\n delta = normalize((1.0 - ratio) * bisector + (dotP < 0.0 ? -ratio : ratio) * perp); // Miter/Straight combination.\r\n }\r\n }\r\n }\r\n\r\n miterAdjust = dot(g_windowDir, delta) * dist; // Not actually used for hilite shader but meh.\r\n pos.x += dist * delta.x * 2.0 * pos.w / u_viewport.x;\r\n pos.y += dist * delta.y * 2.0 * pos.w / u_viewport.y;\r\n }\r\n\r\n return pos;\r\n`;\r\n\r\nconst lineCodeArgs = \"g_windowDir, g_windowPos, miterAdjust\";\r\n\r\n/** @internal */\r\nexport function createPolylineBuilder(isInstanced: IsInstanced, positionType: PositionType): ProgramBuilder {\r\n const instanced = IsInstanced.Yes === isInstanced;\r\n const attrMap = AttributeMap.findAttributeMap(TechniqueId.Polyline, instanced);\r\n const builder = new ProgramBuilder(attrMap, { positionType, instanced });\r\n\r\n addShaderFlags(builder);\r\n\r\n addCommon(builder);\r\n\r\n polylineAddLineCode(builder);\r\n\r\n addColor(builder);\r\n addEdgeContrast(builder.vert);\r\n addWhiteOnWhiteReversal(builder.frag);\r\n\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport function createPolylineHiliter(isInstanced: IsInstanced, positionType: PositionType): ProgramBuilder {\r\n const instanced = IsInstanced.Yes === isInstanced;\r\n const attrMap = AttributeMap.findAttributeMap(TechniqueId.Polyline, instanced);\r\n const builder = new ProgramBuilder(attrMap, { positionType, instanced });\r\n\r\n addCommon(builder);\r\n addFrustum(builder);\r\n addHiliter(builder, true);\r\n return builder;\r\n}\r\n"]}
@@ -29,20 +29,20 @@ const Thematic_1 = require("./Thematic");
29
29
  const Vertex_1 = require("./Vertex");
30
30
  const Wiremesh_1 = require("./Wiremesh");
31
31
  const computePosition = "gl_PointSize = 1.0; return MAT_MVP * rawPos;";
32
- const computeNormal = `
33
- vec3 normal = octDecodeNormal(a_norm); // normal coming in for is already in world space
34
- g_hillshadeIndex = normal.z; // save off world Z for thematic hill shade mode index
35
- return normalize(u_worldToViewN * normal);
32
+ const computeNormal = `
33
+ vec3 normal = octDecodeNormal(a_norm); // normal coming in for is already in world space
34
+ g_hillshadeIndex = normal.z; // save off world Z for thematic hill shade mode index
35
+ return normalize(u_worldToViewN * normal);
36
36
  `;
37
- exports.finalizeNormal = `
38
- return normalize(v_n) * (2.0 * float(gl_FrontFacing) - 1.0);
37
+ exports.finalizeNormal = `
38
+ return normalize(v_n) * (2.0 * float(gl_FrontFacing) - 1.0);
39
39
  `;
40
- const testInside = `
41
- bool testInside(float x0, float y0, float x1, float y1, float x, float y) {
42
- vec2 perp = vec2(y0 - y1, x1 - x0), test = vec2(x - x0, y - y0);
43
- float dot = (test.x * perp.x + test.y * perp.y) / sqrt(perp.x * perp.x + perp.y * perp.y);
44
- return dot >= -0.001;
45
- }
40
+ const testInside = `
41
+ bool testInside(float x0, float y0, float x1, float y1, float x, float y) {
42
+ vec2 perp = vec2(y0 - y1, x1 - x0), test = vec2(x - x0, y - y0);
43
+ float dot = (test.x * perp.x + test.y * perp.y) / sqrt(perp.x * perp.x + perp.y * perp.y);
44
+ return dot >= -0.001;
45
+ }
46
46
  `;
47
47
  /* There are two methods of applying a texture to a reality mesh. the first member of "params" denotes which
48
48
  method is to be used. A value of zero indicates a standard texture and one represents a projected texture.
@@ -55,58 +55,58 @@ bool testInside(float x0, float y0, float x1, float y1, float x, float y) {
55
55
  so the matrix in this case is a real transform matrix that contains a mapping from eye to model position
56
56
  followed by the model to texture projection.
57
57
  */
58
- const applyTexture = `
59
- bool applyTexture(inout vec4 col, sampler2D sampler, mat4 params, mat4 matrix) {
60
- vec2 uv;
61
- float layerAlpha;
62
- bool isProjected = params[0][0] != 0.0;
63
- float imageCount = params[0][1];
64
- vec2 classPos;
65
-
66
- if (isProjected) {
67
- vec4 eye4 = vec4(v_eyeSpace, 1.0);
68
- vec4 classPos4 = matrix * eye4;
69
- classPos = classPos4.xy / classPos4.w;
70
-
71
- if (!testInside(params[2].x, params[2].y, params[2].z, params[2].w, classPos.x, classPos.y) ||
72
- !testInside(params[2].z, params[2].w, params[3].x, params[3].y, classPos.x, classPos.y) ||
73
- !testInside(params[3].x, params[3].y, params[3].z, params[3].w, classPos.x, classPos.y) ||
74
- !testInside(params[3].z, params[3].w, params[2].x, params[2].y, classPos.x, classPos.y))
75
- return false;
76
-
77
- uv.x = classPos.x;
78
- uv.y = classPos.y / imageCount;
79
- layerAlpha = params[0][2];
80
- if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0)
81
- return false;
82
- } else {
83
- vec4 texTransform = matrix[0].xyzw;
84
- vec4 texClip = matrix[1].xyzw;
85
- layerAlpha = matrix[2].x;
86
- uv = vec2(texTransform[0] + texTransform[2] * v_texCoord.x, texTransform[1] + texTransform[3] * v_texCoord.y);
87
- if (uv.x < texClip[0] || uv.x > texClip[2] || uv.y < texClip[1] || uv.y > texClip[3])
88
- return false;
89
- uv.y = 1.0 - uv.y;
90
- }
91
- vec4 texCol = TEXTURE(sampler, uv);
92
- float alpha = layerAlpha * texCol.a;
93
- if (alpha > 0.05) {
94
- vec3 texRgb = isProjected ? (texCol.rgb / texCol.a) : texCol.rgb; // Texture color is premultiplied by alpha only if projected (from classification).
95
- col.rgb = (1.0 - alpha) * col.rgb + alpha * texRgb;
96
- if (isProjected) {
97
- vec4 featureTexel = TEXTURE(sampler, vec2(uv.x, (1.0 + classPos.y) / imageCount));
98
- classifierId = addUInt32s(params[1], featureTexel * 255.0) / 255.0;
99
- } else {
100
- featureIncrement = matrix[2].y;
101
- classifierId = vec4(0);
102
- }
103
- if (alpha > col.a)
104
- col.a = alpha;
105
-
106
- return true;
107
- }
108
- return false;
109
- }
58
+ const applyTexture = `
59
+ bool applyTexture(inout vec4 col, sampler2D sampler, mat4 params, mat4 matrix) {
60
+ vec2 uv;
61
+ float layerAlpha;
62
+ bool isProjected = params[0][0] != 0.0;
63
+ float imageCount = params[0][1];
64
+ vec2 classPos;
65
+
66
+ if (isProjected) {
67
+ vec4 eye4 = vec4(v_eyeSpace, 1.0);
68
+ vec4 classPos4 = matrix * eye4;
69
+ classPos = classPos4.xy / classPos4.w;
70
+
71
+ if (!testInside(params[2].x, params[2].y, params[2].z, params[2].w, classPos.x, classPos.y) ||
72
+ !testInside(params[2].z, params[2].w, params[3].x, params[3].y, classPos.x, classPos.y) ||
73
+ !testInside(params[3].x, params[3].y, params[3].z, params[3].w, classPos.x, classPos.y) ||
74
+ !testInside(params[3].z, params[3].w, params[2].x, params[2].y, classPos.x, classPos.y))
75
+ return false;
76
+
77
+ uv.x = classPos.x;
78
+ uv.y = classPos.y / imageCount;
79
+ layerAlpha = params[0][2];
80
+ if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0)
81
+ return false;
82
+ } else {
83
+ vec4 texTransform = matrix[0].xyzw;
84
+ vec4 texClip = matrix[1].xyzw;
85
+ layerAlpha = matrix[2].x;
86
+ uv = vec2(texTransform[0] + texTransform[2] * v_texCoord.x, texTransform[1] + texTransform[3] * v_texCoord.y);
87
+ if (uv.x < texClip[0] || uv.x > texClip[2] || uv.y < texClip[1] || uv.y > texClip[3])
88
+ return false;
89
+ uv.y = 1.0 - uv.y;
90
+ }
91
+ vec4 texCol = TEXTURE(sampler, uv);
92
+ float alpha = layerAlpha * texCol.a;
93
+ if (alpha > 0.05) {
94
+ vec3 texRgb = isProjected ? (texCol.rgb / texCol.a) : texCol.rgb; // Texture color is premultiplied by alpha only if projected (from classification).
95
+ col.rgb = (1.0 - alpha) * col.rgb + alpha * texRgb;
96
+ if (isProjected) {
97
+ vec4 featureTexel = TEXTURE(sampler, vec2(uv.x, (1.0 + classPos.y) / imageCount));
98
+ classifierId = addUInt32s(params[1], featureTexel * 255.0) / 255.0;
99
+ } else {
100
+ featureIncrement = matrix[2].y;
101
+ classifierId = vec4(0);
102
+ }
103
+ if (alpha > col.a)
104
+ col.a = alpha;
105
+
106
+ return true;
107
+ }
108
+ return false;
109
+ }
110
110
  `;
111
111
  const computeTexCoord = "return unquantize2d(a_uvParam, u_qTexCoordParams);";
112
112
  const scratchMatrix4d1 = core_geometry_1.Matrix4d.createIdentity();
@@ -180,29 +180,29 @@ function baseColorFromTextures(textureCount, applyFeatureColor) {
180
180
  const applyTextureStrings = [];
181
181
  for (let i = 0; i < textureCount; i++)
182
182
  applyTextureStrings.push(`if (applyTexture(col, s_texture${i}, u_texParams${i}, u_texMatrix${i})) doDiscard = false; `);
183
- return `
184
- if (!u_texturesPresent) {
185
- vec4 col = u_baseColor;
186
- ${applyFeatureColor}
187
- return col;
188
- }
189
-
190
- bool doDiscard = true;
191
- vec4 col = u_baseColor;
192
- ${applyTextureStrings.join("\n ")}
193
- if (doDiscard)
194
- discard;
195
-
196
- ${applyFeatureColor}
197
-
198
- return col;
183
+ return `
184
+ if (!u_texturesPresent) {
185
+ vec4 col = u_baseColor;
186
+ ${applyFeatureColor}
187
+ return col;
188
+ }
189
+
190
+ bool doDiscard = true;
191
+ vec4 col = u_baseColor;
192
+ ${applyTextureStrings.join("\n ")}
193
+ if (doDiscard)
194
+ discard;
195
+
196
+ ${applyFeatureColor}
197
+
198
+ return col;
199
199
  `;
200
200
  }
201
201
  // feature_rgb.r = -1.0 if rgb color not overridden for feature.
202
202
  // feature_alpha = -1.0 if alpha not overridden for feature.
203
- const mixFeatureColor = `
204
- col.rgb = mix(col.rgb, mix(col.rgb, v_color.rgb, u_overrideColorMix), step(0.0, v_color.r));
205
- col.a = mix(col.a, v_color.a, step(0.0, v_color.a));
203
+ const mixFeatureColor = `
204
+ col.rgb = mix(col.rgb, mix(col.rgb, v_color.rgb, u_overrideColorMix), step(0.0, v_color.r));
205
+ col.a = mix(col.a, v_color.a, step(0.0, v_color.a));
206
206
  `;
207
207
  function addThematicToRealityMesh(builder, gradientTextureUnit) {
208
208
  (0, Vertex_1.addNormalMatrix)(builder.vert);
@@ -1 +1 @@
1
- {"version":3,"file":"RealityMesh.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/RealityMesh.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 { ColorDef } from \"@itwin/core-common\";\nimport { Matrix4d } from \"@itwin/core-geometry\";\nimport { AttributeMap } from \"../AttributeMap\";\nimport { Matrix4 } from \"../Matrix\";\nimport { TextureUnit } from \"../RenderFlags\";\nimport { FragmentShaderComponent, ProgramBuilder, ShaderBuilder, VariableType, VertexShaderComponent } from \"../ShaderBuilder\";\nimport { System } from \"../System\";\nimport { FeatureMode, IsShadowable, IsThematic, TechniqueFlags } from \"../TechniqueFlags\";\nimport { TechniqueId } from \"../TechniqueId\";\nimport { Texture } from \"../Texture\";\nimport { addAtmosphericScatteringEffect } from \"./Atmosphere\";\nimport { addVaryingColor } from \"./Color\";\nimport { addEyeSpace, addShaderFlags, addUInt32s } from \"./Common\";\nimport { decodeDepthRgb, unquantize2d } from \"./Decode\";\nimport { addFeatureSymbology, addHiliter, FeatureSymbologyOptions } from \"./FeatureSymbology\";\nimport { addAltPickBufferOutputs, addPickBufferOutputs, assignFragColor } from \"./Fragment\";\nimport { addColorPlanarClassifier, addFeaturePlanarClassifier, addHilitePlanarClassifier } from \"./PlanarClassification\";\nimport { addSolarShadowMap } from \"./SolarShadowMapping\";\nimport { addClassificationTranslucencyDiscard, octDecodeNormal } from \"./Surface\";\nimport { addThematicDisplay, getComputeThematicIndex } from \"./Thematic\";\nimport { addModelViewProjectionMatrix, addNormalMatrix } from \"./Vertex\";\nimport { addWiremesh } from \"./Wiremesh\";\n\nconst computePosition = \"gl_PointSize = 1.0; return MAT_MVP * rawPos;\";\nconst computeNormal = `\n vec3 normal = octDecodeNormal(a_norm); // normal coming in for is already in world space\n g_hillshadeIndex = normal.z; // save off world Z for thematic hill shade mode index\n return normalize(u_worldToViewN * normal);\n`;\n\nexport const finalizeNormal = `\n return normalize(v_n) * (2.0 * float(gl_FrontFacing) - 1.0);\n`;\n\nconst testInside = `\nbool testInside(float x0, float y0, float x1, float y1, float x, float y) {\n vec2 perp = vec2(y0 - y1, x1 - x0), test = vec2(x - x0, y - y0);\n float dot = (test.x * perp.x + test.y * perp.y) / sqrt(perp.x * perp.x + perp.y * perp.y);\n return dot >= -0.001;\n}\n`;\n\n/* There are two methods of applying a texture to a reality mesh. the first member of \"params\" denotes which\n method is to be used. A value of zero indicates a standard texture and one represents a projected texture.\n\n A standard (nonprojected) texture is generated by multiplying v_textCoord by the scaling and translation packed into the first row\n of \"matrix\". A clip rectangle is packed into second row of \"matrix\".\n\n A \"projected\" reality mesh texture is used for map layers. It does not uses v_texCoord, the texture coordinates\n are instead generated by a projection of the model position onto the X-Y plane. We only have eye position, not model position\n so the matrix in this case is a real transform matrix that contains a mapping from eye to model position\n followed by the model to texture projection.\n*/\nconst applyTexture = `\nbool applyTexture(inout vec4 col, sampler2D sampler, mat4 params, mat4 matrix) {\n vec2 uv;\n float layerAlpha;\n bool isProjected = params[0][0] != 0.0;\n float imageCount = params[0][1];\n vec2 classPos;\n\n if (isProjected) {\n vec4 eye4 = vec4(v_eyeSpace, 1.0);\n vec4 classPos4 = matrix * eye4;\n classPos = classPos4.xy / classPos4.w;\n\n if (!testInside(params[2].x, params[2].y, params[2].z, params[2].w, classPos.x, classPos.y) ||\n !testInside(params[2].z, params[2].w, params[3].x, params[3].y, classPos.x, classPos.y) ||\n !testInside(params[3].x, params[3].y, params[3].z, params[3].w, classPos.x, classPos.y) ||\n !testInside(params[3].z, params[3].w, params[2].x, params[2].y, classPos.x, classPos.y))\n return false;\n\n uv.x = classPos.x;\n uv.y = classPos.y / imageCount;\n layerAlpha = params[0][2];\n if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0)\n return false;\n } else {\n vec4 texTransform = matrix[0].xyzw;\n vec4 texClip = matrix[1].xyzw;\n layerAlpha = matrix[2].x;\n uv = vec2(texTransform[0] + texTransform[2] * v_texCoord.x, texTransform[1] + texTransform[3] * v_texCoord.y);\n if (uv.x < texClip[0] || uv.x > texClip[2] || uv.y < texClip[1] || uv.y > texClip[3])\n return false;\n uv.y = 1.0 - uv.y;\n }\n vec4 texCol = TEXTURE(sampler, uv);\n float alpha = layerAlpha * texCol.a;\n if (alpha > 0.05) {\n vec3 texRgb = isProjected ? (texCol.rgb / texCol.a) : texCol.rgb; // Texture color is premultiplied by alpha only if projected (from classification).\n col.rgb = (1.0 - alpha) * col.rgb + alpha * texRgb;\n if (isProjected) {\n vec4 featureTexel = TEXTURE(sampler, vec2(uv.x, (1.0 + classPos.y) / imageCount));\n classifierId = addUInt32s(params[1], featureTexel * 255.0) / 255.0;\n } else {\n featureIncrement = matrix[2].y;\n classifierId = vec4(0);\n }\n if (alpha > col.a)\n col.a = alpha;\n\n return true;\n }\nreturn false;\n}\n`;\n\nconst computeTexCoord = \"return unquantize2d(a_uvParam, u_qTexCoordParams);\";\nconst scratchMatrix4d1 = Matrix4d.createIdentity();\nconst scratchMatrix4d2 = Matrix4d.createIdentity();\nconst scratchMatrix = new Matrix4();\n\nconst overrideFeatureId = `return (classifierId == vec4(0)) ? (addUInt32s(feature_id * 255.0, vec4(featureIncrement, 0.0, 0.0, 0.0)) / 255.0) : classifierId;`;\n\nfunction addTextures(builder: ProgramBuilder, maxTexturesPerMesh: number) {\n builder.vert.addFunction(unquantize2d);\n builder.addFunctionComputedVarying(\"v_texCoord\", VariableType.Vec2, \"computeTexCoord\", computeTexCoord);\n builder.vert.addUniform(\"u_qTexCoordParams\", VariableType.Vec4, (prog) => {\n prog.addGraphicUniform(\"u_qTexCoordParams\", (uniform, params) => {\n const realityMesh = params.geometry.asRealityMesh!;\n if (undefined !== realityMesh.uvQParams) {\n uniform.setUniform4fv(realityMesh.uvQParams);\n }\n });\n });\n\n builder.frag.addUniform(\"u_texturesPresent\", VariableType.Boolean, (program) => {\n program.addGraphicUniform(\"u_texturesPresent\", (uniform, params) => {\n uniform.setUniform1i(params.geometry.asRealityMesh!.hasTextures ? 1 : 0);\n });\n });\n\n for (let i = 0; i < maxTexturesPerMesh; i++) {\n const textureLabel = `s_texture${i}`;\n builder.frag.addUniform(textureLabel, VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(textureLabel, (uniform, params) => {\n const textureUnits = [TextureUnit.RealityMesh0, TextureUnit.RealityMesh1, params.target.drawForReadPixels ? TextureUnit.ShadowMap : TextureUnit.PickDepthAndOrder, TextureUnit.RealityMesh3, TextureUnit.RealityMesh4, TextureUnit.RealityMesh5];\n const realityMesh = params.geometry.asRealityMesh!;\n const realityTexture = realityMesh.textureParams ? realityMesh.textureParams.params[i].texture : undefined;\n if (realityTexture !== undefined) {\n const texture = realityTexture as Texture;\n texture.texture.bindSampler(uniform, textureUnits[i]);\n } else {\n // assert(false, \"Terrain Mesh texture not defined when beginning texture.\");\n System.instance.ensureSamplerBound(uniform, textureUnits[i]);\n }\n });\n });\n const paramsLabel = `u_texParams${i}`, matrixLabel = `u_texMatrix${i}`;\n builder.frag.addUniform(matrixLabel, VariableType.Mat4, (prog) => {\n prog.addGraphicUniform(matrixLabel, (uniform, params) => {\n const realityMesh = params.geometry.asRealityMesh!;\n const textureParam = realityMesh.textureParams?.params[i];\n assert(undefined !== textureParam);\n if (undefined !== textureParam) {\n const projectionMatrix = textureParam.getProjectionMatrix();\n if (projectionMatrix) {\n const eyeToModel = Matrix4d.createTransform(params.target.uniforms.frustum.viewMatrix.inverse()!, scratchMatrix4d1);\n const eyeToTexture = projectionMatrix.multiplyMatrixMatrix(eyeToModel, scratchMatrix4d2);\n uniform.setMatrix4(Matrix4.fromMatrix4d(eyeToTexture, scratchMatrix));\n } else\n uniform.setMatrix4(textureParam.getTerrainMatrix()!);\n }\n });\n });\n builder.frag.addUniform(paramsLabel, VariableType.Mat4, (prog) => {\n prog.addGraphicUniform(paramsLabel, (uniform, params) => {\n const realityMesh = params.geometry.asRealityMesh!;\n const textureParam = realityMesh.textureParams?.params[i];\n assert(undefined !== textureParam);\n if (undefined !== textureParam) {\n uniform.setMatrix4(textureParam.getParams(scratchMatrix));\n }\n });\n });\n }\n}\nfunction baseColorFromTextures(textureCount: number, applyFeatureColor: string) {\n const applyTextureStrings = [];\n\n for (let i = 0; i < textureCount; i++)\n applyTextureStrings.push(`if (applyTexture(col, s_texture${i}, u_texParams${i}, u_texMatrix${i})) doDiscard = false; `);\n\n return `\n if (!u_texturesPresent) {\n vec4 col = u_baseColor;\n ${applyFeatureColor}\n return col;\n }\n\n bool doDiscard = true;\n vec4 col = u_baseColor;\n ${applyTextureStrings.join(\"\\n \")}\n if (doDiscard)\n discard;\n\n ${applyFeatureColor}\n\n return col;\n`;\n}\n\n// feature_rgb.r = -1.0 if rgb color not overridden for feature.\n// feature_alpha = -1.0 if alpha not overridden for feature.\nconst mixFeatureColor = `\n col.rgb = mix(col.rgb, mix(col.rgb, v_color.rgb, u_overrideColorMix), step(0.0, v_color.r));\n col.a = mix(col.a, v_color.a, step(0.0, v_color.a));\n `;\n\nfunction addThematicToRealityMesh(builder: ProgramBuilder, gradientTextureUnit: TextureUnit) {\n addNormalMatrix(builder.vert);\n builder.vert.addFunction(octDecodeNormal);\n builder.vert.addGlobal(\"g_hillshadeIndex\", VariableType.Float);\n builder.addFunctionComputedVarying(\"v_n\", VariableType.Vec3, \"computeLightingNormal\", computeNormal);\n builder.frag.addGlobal(\"g_normal\", VariableType.Vec3);\n builder.frag.set(FragmentShaderComponent.FinalizeNormal, finalizeNormal);\n addThematicDisplay(builder, false, true);\n builder.addInlineComputedVarying(\"v_thematicIndex\", VariableType.Float, getComputeThematicIndex(builder.vert.usesInstancedGeometry, false, false));\n builder.vert.addUniform(\"u_worldToViewN\", VariableType.Mat3, (prog) => {\n prog.addGraphicUniform(\"u_worldToViewN\", (uniform, params) => {\n params.target.uniforms.branch.bindWorldToViewNTransform(uniform, params.geometry, false);\n });\n });\n builder.frag.addUniform(\"s_texture\", VariableType.Sampler2D, (prog) => {\n prog.addGraphicUniform(\"s_texture\", (uniform, params) => {\n params.target.uniforms.thematic.bindTexture(uniform, gradientTextureUnit >= 0 ? gradientTextureUnit : (params.target.drawForReadPixels ? TextureUnit.ShadowMap : TextureUnit.PickDepthAndOrder));\n });\n });\n}\n\n/** @internal */\nexport function addColorOverrideMix(frag: ShaderBuilder) {\n frag.addUniform(\"u_overrideColorMix\", VariableType.Float, (prog) => {\n prog.addGraphicUniform(\"u_overrideColorMix\", (uniform, params) => {\n params.target.uniforms.realityModel.bindOverrideColorMix(uniform);\n });\n });\n}\n\nfunction createRealityMeshHiliterBuilder(): ProgramBuilder {\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.RealityMesh, false));\n const vert = builder.vert;\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\n addModelViewProjectionMatrix(vert);\n builder.frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\n return builder;\n\n}\n\n/** @internal */\nexport function createClassifierRealityMeshHiliter(): ProgramBuilder {\n const builder = createRealityMeshHiliterBuilder();\n addHilitePlanarClassifier(builder, false);\n return builder;\n}\n\n/** @internal */\nexport function createRealityMeshHiliter(): ProgramBuilder {\n const builder = createRealityMeshHiliterBuilder();\n addHiliter(builder, false);\n return builder;\n}\n\n/** @internal */\nexport function createRealityMeshBuilder(flags: TechniqueFlags): ProgramBuilder {\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.RealityMesh, false));\n const vert = builder.vert;\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\n addModelViewProjectionMatrix(vert);\n\n if (flags.isShadowable === IsShadowable.Yes)\n addSolarShadowMap(builder, true);\n\n const frag = builder.frag;\n frag.addGlobal(\"featureIncrement\", VariableType.Float, \"0.0\");\n frag.addGlobal(\"classifierId\", VariableType.Vec4);\n frag.set(FragmentShaderComponent.OverrideFeatureId, overrideFeatureId);\n const textureCount = System.instance.maxRealityImageryLayers;\n const gradientTextureUnit = TextureUnit.RealityMeshThematicGradient;\n\n const feat = flags.featureMode;\n let opts = FeatureMode.Overrides === feat ? FeatureSymbologyOptions.Surface : FeatureSymbologyOptions.None;\n let applyFragmentFeatureColor = \"\";\n\n if (flags.isClassified) {\n opts &= ~FeatureSymbologyOptions.Alpha;\n addColorPlanarClassifier(builder, flags.isTranslucent, flags.isThematic);\n addClassificationTranslucencyDiscard(builder);\n }\n\n addFeatureSymbology(builder, feat, opts);\n if (feat === FeatureMode.Overrides) {\n addShaderFlags(builder);\n addVaryingColor(builder, \"return vec4(-1.0, -1.0, -1.0, -1.0);\");\n applyFragmentFeatureColor = mixFeatureColor;\n addColorOverrideMix(builder.frag);\n }\n const computeFragmentBaseColor = baseColorFromTextures(textureCount, applyFragmentFeatureColor);\n\n frag.addFunction(addUInt32s);\n frag.addFunction(testInside);\n addEyeSpace(builder);\n frag.addFunction(applyTexture);\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeFragmentBaseColor);\n builder.frag.addUniform(\"u_baseColor\", VariableType.Vec4, (prog) => {\n prog.addGraphicUniform(\"u_baseColor\", (uniform, params) => {\n const realityMesh = params.geometry.asRealityMesh!;\n const baseColor = (realityMesh.baseColor ? realityMesh.baseColor : ColorDef.create(0xff000000)).colors;\n uniform.setUniform4fv([baseColor.r / 255, baseColor.g / 255, baseColor.b / 255, 1 - baseColor.t / 255]);\n });\n });\n builder.frag.set(FragmentShaderComponent.ComputeBaseColor, computeFragmentBaseColor);\n if (!flags.isTranslucent) {\n if (FeatureMode.None !== feat) {\n if (flags.isClassified)\n addFeaturePlanarClassifier(builder);\n\n builder.frag.addFunction(decodeDepthRgb);\n if (flags.isClassified)\n addPickBufferOutputs(builder.frag);\n else\n addAltPickBufferOutputs(builder.frag);\n }\n }\n\n addTextures(builder, textureCount);\n\n if (IsThematic.Yes === flags.isThematic)\n addThematicToRealityMesh(builder, gradientTextureUnit);\n\n if (flags.isWiremesh)\n addWiremesh(builder);\n\n if (flags.enableAtmosphere)\n addAtmosphericScatteringEffect(builder, false, false);\n\n return builder;\n}\n"]}
1
+ {"version":3,"file":"RealityMesh.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/RealityMesh.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 { ColorDef } from \"@itwin/core-common\";\r\nimport { Matrix4d } from \"@itwin/core-geometry\";\r\nimport { AttributeMap } from \"../AttributeMap\";\r\nimport { Matrix4 } from \"../Matrix\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, ProgramBuilder, ShaderBuilder, VariableType, VertexShaderComponent } from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { FeatureMode, IsShadowable, IsThematic, TechniqueFlags } from \"../TechniqueFlags\";\r\nimport { TechniqueId } from \"../TechniqueId\";\r\nimport { Texture } from \"../Texture\";\r\nimport { addAtmosphericScatteringEffect } from \"./Atmosphere\";\r\nimport { addVaryingColor } from \"./Color\";\r\nimport { addEyeSpace, addShaderFlags, addUInt32s } from \"./Common\";\r\nimport { decodeDepthRgb, unquantize2d } from \"./Decode\";\r\nimport { addFeatureSymbology, addHiliter, FeatureSymbologyOptions } from \"./FeatureSymbology\";\r\nimport { addAltPickBufferOutputs, addPickBufferOutputs, assignFragColor } from \"./Fragment\";\r\nimport { addColorPlanarClassifier, addFeaturePlanarClassifier, addHilitePlanarClassifier } from \"./PlanarClassification\";\r\nimport { addSolarShadowMap } from \"./SolarShadowMapping\";\r\nimport { addClassificationTranslucencyDiscard, octDecodeNormal } from \"./Surface\";\r\nimport { addThematicDisplay, getComputeThematicIndex } from \"./Thematic\";\r\nimport { addModelViewProjectionMatrix, addNormalMatrix } from \"./Vertex\";\r\nimport { addWiremesh } from \"./Wiremesh\";\r\n\r\nconst computePosition = \"gl_PointSize = 1.0; return MAT_MVP * rawPos;\";\r\nconst computeNormal = `\r\n vec3 normal = octDecodeNormal(a_norm); // normal coming in for is already in world space\r\n g_hillshadeIndex = normal.z; // save off world Z for thematic hill shade mode index\r\n return normalize(u_worldToViewN * normal);\r\n`;\r\n\r\nexport const finalizeNormal = `\r\n return normalize(v_n) * (2.0 * float(gl_FrontFacing) - 1.0);\r\n`;\r\n\r\nconst testInside = `\r\nbool testInside(float x0, float y0, float x1, float y1, float x, float y) {\r\n vec2 perp = vec2(y0 - y1, x1 - x0), test = vec2(x - x0, y - y0);\r\n float dot = (test.x * perp.x + test.y * perp.y) / sqrt(perp.x * perp.x + perp.y * perp.y);\r\n return dot >= -0.001;\r\n}\r\n`;\r\n\r\n/* There are two methods of applying a texture to a reality mesh. the first member of \"params\" denotes which\r\n method is to be used. A value of zero indicates a standard texture and one represents a projected texture.\r\n\r\n A standard (nonprojected) texture is generated by multiplying v_textCoord by the scaling and translation packed into the first row\r\n of \"matrix\". A clip rectangle is packed into second row of \"matrix\".\r\n\r\n A \"projected\" reality mesh texture is used for map layers. It does not uses v_texCoord, the texture coordinates\r\n are instead generated by a projection of the model position onto the X-Y plane. We only have eye position, not model position\r\n so the matrix in this case is a real transform matrix that contains a mapping from eye to model position\r\n followed by the model to texture projection.\r\n*/\r\nconst applyTexture = `\r\nbool applyTexture(inout vec4 col, sampler2D sampler, mat4 params, mat4 matrix) {\r\n vec2 uv;\r\n float layerAlpha;\r\n bool isProjected = params[0][0] != 0.0;\r\n float imageCount = params[0][1];\r\n vec2 classPos;\r\n\r\n if (isProjected) {\r\n vec4 eye4 = vec4(v_eyeSpace, 1.0);\r\n vec4 classPos4 = matrix * eye4;\r\n classPos = classPos4.xy / classPos4.w;\r\n\r\n if (!testInside(params[2].x, params[2].y, params[2].z, params[2].w, classPos.x, classPos.y) ||\r\n !testInside(params[2].z, params[2].w, params[3].x, params[3].y, classPos.x, classPos.y) ||\r\n !testInside(params[3].x, params[3].y, params[3].z, params[3].w, classPos.x, classPos.y) ||\r\n !testInside(params[3].z, params[3].w, params[2].x, params[2].y, classPos.x, classPos.y))\r\n return false;\r\n\r\n uv.x = classPos.x;\r\n uv.y = classPos.y / imageCount;\r\n layerAlpha = params[0][2];\r\n if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0)\r\n return false;\r\n } else {\r\n vec4 texTransform = matrix[0].xyzw;\r\n vec4 texClip = matrix[1].xyzw;\r\n layerAlpha = matrix[2].x;\r\n uv = vec2(texTransform[0] + texTransform[2] * v_texCoord.x, texTransform[1] + texTransform[3] * v_texCoord.y);\r\n if (uv.x < texClip[0] || uv.x > texClip[2] || uv.y < texClip[1] || uv.y > texClip[3])\r\n return false;\r\n uv.y = 1.0 - uv.y;\r\n }\r\n vec4 texCol = TEXTURE(sampler, uv);\r\n float alpha = layerAlpha * texCol.a;\r\n if (alpha > 0.05) {\r\n vec3 texRgb = isProjected ? (texCol.rgb / texCol.a) : texCol.rgb; // Texture color is premultiplied by alpha only if projected (from classification).\r\n col.rgb = (1.0 - alpha) * col.rgb + alpha * texRgb;\r\n if (isProjected) {\r\n vec4 featureTexel = TEXTURE(sampler, vec2(uv.x, (1.0 + classPos.y) / imageCount));\r\n classifierId = addUInt32s(params[1], featureTexel * 255.0) / 255.0;\r\n } else {\r\n featureIncrement = matrix[2].y;\r\n classifierId = vec4(0);\r\n }\r\n if (alpha > col.a)\r\n col.a = alpha;\r\n\r\n return true;\r\n }\r\nreturn false;\r\n}\r\n`;\r\n\r\nconst computeTexCoord = \"return unquantize2d(a_uvParam, u_qTexCoordParams);\";\r\nconst scratchMatrix4d1 = Matrix4d.createIdentity();\r\nconst scratchMatrix4d2 = Matrix4d.createIdentity();\r\nconst scratchMatrix = new Matrix4();\r\n\r\nconst overrideFeatureId = `return (classifierId == vec4(0)) ? (addUInt32s(feature_id * 255.0, vec4(featureIncrement, 0.0, 0.0, 0.0)) / 255.0) : classifierId;`;\r\n\r\nfunction addTextures(builder: ProgramBuilder, maxTexturesPerMesh: number) {\r\n builder.vert.addFunction(unquantize2d);\r\n builder.addFunctionComputedVarying(\"v_texCoord\", VariableType.Vec2, \"computeTexCoord\", computeTexCoord);\r\n builder.vert.addUniform(\"u_qTexCoordParams\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_qTexCoordParams\", (uniform, params) => {\r\n const realityMesh = params.geometry.asRealityMesh!;\r\n if (undefined !== realityMesh.uvQParams) {\r\n uniform.setUniform4fv(realityMesh.uvQParams);\r\n }\r\n });\r\n });\r\n\r\n builder.frag.addUniform(\"u_texturesPresent\", VariableType.Boolean, (program) => {\r\n program.addGraphicUniform(\"u_texturesPresent\", (uniform, params) => {\r\n uniform.setUniform1i(params.geometry.asRealityMesh!.hasTextures ? 1 : 0);\r\n });\r\n });\r\n\r\n for (let i = 0; i < maxTexturesPerMesh; i++) {\r\n const textureLabel = `s_texture${i}`;\r\n builder.frag.addUniform(textureLabel, VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(textureLabel, (uniform, params) => {\r\n const textureUnits = [TextureUnit.RealityMesh0, TextureUnit.RealityMesh1, params.target.drawForReadPixels ? TextureUnit.ShadowMap : TextureUnit.PickDepthAndOrder, TextureUnit.RealityMesh3, TextureUnit.RealityMesh4, TextureUnit.RealityMesh5];\r\n const realityMesh = params.geometry.asRealityMesh!;\r\n const realityTexture = realityMesh.textureParams ? realityMesh.textureParams.params[i].texture : undefined;\r\n if (realityTexture !== undefined) {\r\n const texture = realityTexture as Texture;\r\n texture.texture.bindSampler(uniform, textureUnits[i]);\r\n } else {\r\n // assert(false, \"Terrain Mesh texture not defined when beginning texture.\");\r\n System.instance.ensureSamplerBound(uniform, textureUnits[i]);\r\n }\r\n });\r\n });\r\n const paramsLabel = `u_texParams${i}`, matrixLabel = `u_texMatrix${i}`;\r\n builder.frag.addUniform(matrixLabel, VariableType.Mat4, (prog) => {\r\n prog.addGraphicUniform(matrixLabel, (uniform, params) => {\r\n const realityMesh = params.geometry.asRealityMesh!;\r\n const textureParam = realityMesh.textureParams?.params[i];\r\n assert(undefined !== textureParam);\r\n if (undefined !== textureParam) {\r\n const projectionMatrix = textureParam.getProjectionMatrix();\r\n if (projectionMatrix) {\r\n const eyeToModel = Matrix4d.createTransform(params.target.uniforms.frustum.viewMatrix.inverse()!, scratchMatrix4d1);\r\n const eyeToTexture = projectionMatrix.multiplyMatrixMatrix(eyeToModel, scratchMatrix4d2);\r\n uniform.setMatrix4(Matrix4.fromMatrix4d(eyeToTexture, scratchMatrix));\r\n } else\r\n uniform.setMatrix4(textureParam.getTerrainMatrix()!);\r\n }\r\n });\r\n });\r\n builder.frag.addUniform(paramsLabel, VariableType.Mat4, (prog) => {\r\n prog.addGraphicUniform(paramsLabel, (uniform, params) => {\r\n const realityMesh = params.geometry.asRealityMesh!;\r\n const textureParam = realityMesh.textureParams?.params[i];\r\n assert(undefined !== textureParam);\r\n if (undefined !== textureParam) {\r\n uniform.setMatrix4(textureParam.getParams(scratchMatrix));\r\n }\r\n });\r\n });\r\n }\r\n}\r\nfunction baseColorFromTextures(textureCount: number, applyFeatureColor: string) {\r\n const applyTextureStrings = [];\r\n\r\n for (let i = 0; i < textureCount; i++)\r\n applyTextureStrings.push(`if (applyTexture(col, s_texture${i}, u_texParams${i}, u_texMatrix${i})) doDiscard = false; `);\r\n\r\n return `\r\n if (!u_texturesPresent) {\r\n vec4 col = u_baseColor;\r\n ${applyFeatureColor}\r\n return col;\r\n }\r\n\r\n bool doDiscard = true;\r\n vec4 col = u_baseColor;\r\n ${applyTextureStrings.join(\"\\n \")}\r\n if (doDiscard)\r\n discard;\r\n\r\n ${applyFeatureColor}\r\n\r\n return col;\r\n`;\r\n}\r\n\r\n// feature_rgb.r = -1.0 if rgb color not overridden for feature.\r\n// feature_alpha = -1.0 if alpha not overridden for feature.\r\nconst mixFeatureColor = `\r\n col.rgb = mix(col.rgb, mix(col.rgb, v_color.rgb, u_overrideColorMix), step(0.0, v_color.r));\r\n col.a = mix(col.a, v_color.a, step(0.0, v_color.a));\r\n `;\r\n\r\nfunction addThematicToRealityMesh(builder: ProgramBuilder, gradientTextureUnit: TextureUnit) {\r\n addNormalMatrix(builder.vert);\r\n builder.vert.addFunction(octDecodeNormal);\r\n builder.vert.addGlobal(\"g_hillshadeIndex\", VariableType.Float);\r\n builder.addFunctionComputedVarying(\"v_n\", VariableType.Vec3, \"computeLightingNormal\", computeNormal);\r\n builder.frag.addGlobal(\"g_normal\", VariableType.Vec3);\r\n builder.frag.set(FragmentShaderComponent.FinalizeNormal, finalizeNormal);\r\n addThematicDisplay(builder, false, true);\r\n builder.addInlineComputedVarying(\"v_thematicIndex\", VariableType.Float, getComputeThematicIndex(builder.vert.usesInstancedGeometry, false, false));\r\n builder.vert.addUniform(\"u_worldToViewN\", VariableType.Mat3, (prog) => {\r\n prog.addGraphicUniform(\"u_worldToViewN\", (uniform, params) => {\r\n params.target.uniforms.branch.bindWorldToViewNTransform(uniform, params.geometry, false);\r\n });\r\n });\r\n builder.frag.addUniform(\"s_texture\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"s_texture\", (uniform, params) => {\r\n params.target.uniforms.thematic.bindTexture(uniform, gradientTextureUnit >= 0 ? gradientTextureUnit : (params.target.drawForReadPixels ? TextureUnit.ShadowMap : TextureUnit.PickDepthAndOrder));\r\n });\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function addColorOverrideMix(frag: ShaderBuilder) {\r\n frag.addUniform(\"u_overrideColorMix\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_overrideColorMix\", (uniform, params) => {\r\n params.target.uniforms.realityModel.bindOverrideColorMix(uniform);\r\n });\r\n });\r\n}\r\n\r\nfunction createRealityMeshHiliterBuilder(): ProgramBuilder {\r\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.RealityMesh, false));\r\n const vert = builder.vert;\r\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n addModelViewProjectionMatrix(vert);\r\n builder.frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n return builder;\r\n\r\n}\r\n\r\n/** @internal */\r\nexport function createClassifierRealityMeshHiliter(): ProgramBuilder {\r\n const builder = createRealityMeshHiliterBuilder();\r\n addHilitePlanarClassifier(builder, false);\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport function createRealityMeshHiliter(): ProgramBuilder {\r\n const builder = createRealityMeshHiliterBuilder();\r\n addHiliter(builder, false);\r\n return builder;\r\n}\r\n\r\n/** @internal */\r\nexport function createRealityMeshBuilder(flags: TechniqueFlags): ProgramBuilder {\r\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(TechniqueId.RealityMesh, false));\r\n const vert = builder.vert;\r\n vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n addModelViewProjectionMatrix(vert);\r\n\r\n if (flags.isShadowable === IsShadowable.Yes)\r\n addSolarShadowMap(builder, true);\r\n\r\n const frag = builder.frag;\r\n frag.addGlobal(\"featureIncrement\", VariableType.Float, \"0.0\");\r\n frag.addGlobal(\"classifierId\", VariableType.Vec4);\r\n frag.set(FragmentShaderComponent.OverrideFeatureId, overrideFeatureId);\r\n const textureCount = System.instance.maxRealityImageryLayers;\r\n const gradientTextureUnit = TextureUnit.RealityMeshThematicGradient;\r\n\r\n const feat = flags.featureMode;\r\n let opts = FeatureMode.Overrides === feat ? FeatureSymbologyOptions.Surface : FeatureSymbologyOptions.None;\r\n let applyFragmentFeatureColor = \"\";\r\n\r\n if (flags.isClassified) {\r\n opts &= ~FeatureSymbologyOptions.Alpha;\r\n addColorPlanarClassifier(builder, flags.isTranslucent, flags.isThematic);\r\n addClassificationTranslucencyDiscard(builder);\r\n }\r\n\r\n addFeatureSymbology(builder, feat, opts);\r\n if (feat === FeatureMode.Overrides) {\r\n addShaderFlags(builder);\r\n addVaryingColor(builder, \"return vec4(-1.0, -1.0, -1.0, -1.0);\");\r\n applyFragmentFeatureColor = mixFeatureColor;\r\n addColorOverrideMix(builder.frag);\r\n }\r\n const computeFragmentBaseColor = baseColorFromTextures(textureCount, applyFragmentFeatureColor);\r\n\r\n frag.addFunction(addUInt32s);\r\n frag.addFunction(testInside);\r\n addEyeSpace(builder);\r\n frag.addFunction(applyTexture);\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, computeFragmentBaseColor);\r\n builder.frag.addUniform(\"u_baseColor\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_baseColor\", (uniform, params) => {\r\n const realityMesh = params.geometry.asRealityMesh!;\r\n const baseColor = (realityMesh.baseColor ? realityMesh.baseColor : ColorDef.create(0xff000000)).colors;\r\n uniform.setUniform4fv([baseColor.r / 255, baseColor.g / 255, baseColor.b / 255, 1 - baseColor.t / 255]);\r\n });\r\n });\r\n builder.frag.set(FragmentShaderComponent.ComputeBaseColor, computeFragmentBaseColor);\r\n if (!flags.isTranslucent) {\r\n if (FeatureMode.None !== feat) {\r\n if (flags.isClassified)\r\n addFeaturePlanarClassifier(builder);\r\n\r\n builder.frag.addFunction(decodeDepthRgb);\r\n if (flags.isClassified)\r\n addPickBufferOutputs(builder.frag);\r\n else\r\n addAltPickBufferOutputs(builder.frag);\r\n }\r\n }\r\n\r\n addTextures(builder, textureCount);\r\n\r\n if (IsThematic.Yes === flags.isThematic)\r\n addThematicToRealityMesh(builder, gradientTextureUnit);\r\n\r\n if (flags.isWiremesh)\r\n addWiremesh(builder);\r\n\r\n if (flags.enableAtmosphere)\r\n addAtmosphericScatteringEffect(builder, false, false);\r\n\r\n return builder;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RenderPass.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/RenderPass.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAKH,8CAA8C;AAC9C,MAAM,YAAY,GAAG;IACnB,gCAAwB,YAAY,CAAC;IACrC,kCAA0B,QAAQ,CAAC;IACnC,kCAA0B,cAAc,CAAC;IACzC,kCAA0B,cAAc,CAAC;IACzC,mCAA2B,eAAe,CAAC;IAC3C,oCAA4B,gBAAgB,CAAC;IAC7C,iCAAyB,aAAa,CAAC;IACvC,gCAAwB,YAAY,CAAC;IACrC,6BAAoB,QAAQ,CAAC;IAC7B,mCAA0B,cAAc,CAAC;IACzC,kCAAyB,aAAa,CAAC;IACvC,2CAAkC,sBAAsB,CAAC;CAC1D,CAAC;AAEF;;;;GAIG;AACH,SAAgB,aAAa,CAAC,OAAsB;IAClD,OAAO,CAAC,UAAU,CAAC,cAAc,8BAAsB,CAAC,IAAI,EAAE,EAAE;QAC9D,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzD,IAAI,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YACnC,QAAQ,UAAU,EAAE;gBAClB;oBACE,UAAU,mCAA2B,CAAC,CAAC,oCAAoC;oBAC3E,MAAM;gBACR,uCAA8B;gBAC9B;oBACE,UAAU,kCAA0B,CAAC,CAAC,oCAAoC;oBAC1E,MAAM;aACT;YAED,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,UAAU,IAAI,YAAY;QACnC,OAAO,CAAC,SAAS,CAAC,eAAe,UAAU,CAAC,CAAC,CAAC,EAAE,8BAAsB,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACjH,CAAC;AApBD,sCAoBC","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 { RenderPass } from \"../RenderFlags\";\nimport { ShaderBuilder, VariableType } from \"../ShaderBuilder\";\n\n// render passes actually used in shader code.\nconst renderPasses = [\n [RenderPass.Background, \"Background\"],\n [RenderPass.OpaqueLayers, \"Layers\"], // Shaders treat all layer passes the same\n [RenderPass.OpaqueLinear, \"OpaqueLinear\"],\n [RenderPass.OpaquePlanar, \"OpaquePlanar\"],\n [RenderPass.OpaqueGeneral, \"OpaqueGeneral\"],\n [RenderPass.Classification, \"Classification\"],\n [RenderPass.Translucent, \"Translucent\"],\n [RenderPass.HiddenEdge, \"HiddenEdge\"],\n [RenderPass.Hilite, \"Hilite\"],\n [RenderPass.WorldOverlay, \"WorldOverlay\"],\n [RenderPass.ViewOverlay, \"ViewOverlay\"],\n [RenderPass.PlanarClassification, \"PlanarClassification\"],\n];\n\n/**\n * Adds a uniform holding the current render pass and a set of kRenderPass_* constants\n * uniform float u_renderPass\n * @internal\n */\nexport function addRenderPass(builder: ShaderBuilder) {\n builder.addUniform(\"u_renderPass\", VariableType.Float, (prog) => {\n prog.addProgramUniform(\"u_renderPass\", (uniform, params) => {\n let renderPass = params.renderPass;\n switch (renderPass) {\n case RenderPass.HiddenEdge:\n renderPass = RenderPass.OpaqueGeneral; // no distinction from shader POV...\n break;\n case RenderPass.OverlayLayers:\n case RenderPass.TranslucentLayers:\n renderPass = RenderPass.OpaqueLayers; // no distinction from shader POV...\n break;\n }\n\n uniform.setUniform1f(renderPass);\n });\n });\n\n for (const renderPass of renderPasses)\n builder.addGlobal(`kRenderPass_${renderPass[1]}`, VariableType.Float, `${renderPass[0].toString()}.0`, true);\n}\n"]}
1
+ {"version":3,"file":"RenderPass.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/RenderPass.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAKH,8CAA8C;AAC9C,MAAM,YAAY,GAAG;IACnB,gCAAwB,YAAY,CAAC;IACrC,kCAA0B,QAAQ,CAAC;IACnC,kCAA0B,cAAc,CAAC;IACzC,kCAA0B,cAAc,CAAC;IACzC,mCAA2B,eAAe,CAAC;IAC3C,oCAA4B,gBAAgB,CAAC;IAC7C,iCAAyB,aAAa,CAAC;IACvC,gCAAwB,YAAY,CAAC;IACrC,6BAAoB,QAAQ,CAAC;IAC7B,mCAA0B,cAAc,CAAC;IACzC,kCAAyB,aAAa,CAAC;IACvC,2CAAkC,sBAAsB,CAAC;CAC1D,CAAC;AAEF;;;;GAIG;AACH,SAAgB,aAAa,CAAC,OAAsB;IAClD,OAAO,CAAC,UAAU,CAAC,cAAc,8BAAsB,CAAC,IAAI,EAAE,EAAE;QAC9D,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzD,IAAI,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YACnC,QAAQ,UAAU,EAAE;gBAClB;oBACE,UAAU,mCAA2B,CAAC,CAAC,oCAAoC;oBAC3E,MAAM;gBACR,uCAA8B;gBAC9B;oBACE,UAAU,kCAA0B,CAAC,CAAC,oCAAoC;oBAC1E,MAAM;aACT;YAED,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,UAAU,IAAI,YAAY;QACnC,OAAO,CAAC,SAAS,CAAC,eAAe,UAAU,CAAC,CAAC,CAAC,EAAE,8BAAsB,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACjH,CAAC;AApBD,sCAoBC","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 { RenderPass } from \"../RenderFlags\";\r\nimport { ShaderBuilder, VariableType } from \"../ShaderBuilder\";\r\n\r\n// render passes actually used in shader code.\r\nconst renderPasses = [\r\n [RenderPass.Background, \"Background\"],\r\n [RenderPass.OpaqueLayers, \"Layers\"], // Shaders treat all layer passes the same\r\n [RenderPass.OpaqueLinear, \"OpaqueLinear\"],\r\n [RenderPass.OpaquePlanar, \"OpaquePlanar\"],\r\n [RenderPass.OpaqueGeneral, \"OpaqueGeneral\"],\r\n [RenderPass.Classification, \"Classification\"],\r\n [RenderPass.Translucent, \"Translucent\"],\r\n [RenderPass.HiddenEdge, \"HiddenEdge\"],\r\n [RenderPass.Hilite, \"Hilite\"],\r\n [RenderPass.WorldOverlay, \"WorldOverlay\"],\r\n [RenderPass.ViewOverlay, \"ViewOverlay\"],\r\n [RenderPass.PlanarClassification, \"PlanarClassification\"],\r\n];\r\n\r\n/**\r\n * Adds a uniform holding the current render pass and a set of kRenderPass_* constants\r\n * uniform float u_renderPass\r\n * @internal\r\n */\r\nexport function addRenderPass(builder: ShaderBuilder) {\r\n builder.addUniform(\"u_renderPass\", VariableType.Float, (prog) => {\r\n prog.addProgramUniform(\"u_renderPass\", (uniform, params) => {\r\n let renderPass = params.renderPass;\r\n switch (renderPass) {\r\n case RenderPass.HiddenEdge:\r\n renderPass = RenderPass.OpaqueGeneral; // no distinction from shader POV...\r\n break;\r\n case RenderPass.OverlayLayers:\r\n case RenderPass.TranslucentLayers:\r\n renderPass = RenderPass.OpaqueLayers; // no distinction from shader POV...\r\n break;\r\n }\r\n\r\n uniform.setUniform1f(renderPass);\r\n });\r\n });\r\n\r\n for (const renderPass of renderPasses)\r\n builder.addGlobal(`kRenderPass_${renderPass[1]}`, VariableType.Float, `${renderPass[0].toString()}.0`, true);\r\n}\r\n"]}
@@ -12,18 +12,18 @@ const RenderFlags_1 = require("../RenderFlags");
12
12
  const AttributeMap_1 = require("../AttributeMap");
13
13
  const ShaderBuilder_1 = require("../ShaderBuilder");
14
14
  const Fragment_1 = require("./Fragment");
15
- const computePosition = `
16
- effectMain(rawPos);
17
- return rawPos;
15
+ const computePosition = `
16
+ effectMain(rawPos);
17
+ return rawPos;
18
18
  `;
19
- const textureCoordFromPosition = `
20
- vec2 textureCoordFromPosition(vec4 pos) {
21
- return (pos.xy + 1.0) * 0.5;
22
- }
19
+ const textureCoordFromPosition = `
20
+ vec2 textureCoordFromPosition(vec4 pos) {
21
+ return (pos.xy + 1.0) * 0.5;
22
+ }
23
23
  `;
24
24
  const computeBaseColor = " return effectMain();";
25
- const computeBaseColorWithShift = `
26
- return u_readingPixels ? sampleSourcePixel() : effectMain();
25
+ const computeBaseColorWithShift = `
26
+ return u_readingPixels ? sampleSourcePixel() : effectMain();
27
27
  `;
28
28
  /** @internal */
29
29
  function createScreenSpaceEffectProgramBuilder(params) {
@@ -1 +1 @@
1
- {"version":3,"file":"ScreenSpaceEffect.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/ScreenSpaceEffect.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,gDAA6C;AAC7C,kDAA+C;AAC/C,oDAAgH;AAChH,yCAA6C;AAE7C,MAAM,eAAe,GAAG;;;CAGvB,CAAC;AAEF,MAAM,wBAAwB,GAAG;;;;CAIhC,CAAC;AAEF,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AAElD,MAAM,yBAAyB,GAAG;;CAEjC,CAAC;AAEF,gBAAgB;AAChB,SAAgB,qCAAqC,CAAC,MAAsC;IAC1F,MAAM,OAAO,GAAG,IAAI,8BAAc,CAAC,2BAAY,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAEpF,IAAI,MAAM,CAAC,wBAAwB;QACjC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAErD,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,CAAC,GAAG,iDAAwC,eAAe,CAAC,CAAC;IAEzE,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB;QACjC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,0BAA0B,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAExF,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjD,OAAO,CAAC,UAAU,CAAC,WAAW,kCAA0B,CAAC,IAAI,EAAE,EAAE;QAC/D,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE;YAC1D,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC9E,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,yBAAW,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,GAAG,kDAAyC,0BAAe,CAAC,CAAC;IAE1E,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE;QACpC,OAAO,CAAC,IAAI,CAAC,GAAG,mDAA2C,gBAAgB,CAAC,CAAC;KAC9E;SAAM;QACL,OAAO,CAAC,IAAI,CAAC,GAAG,mDAA2C,yBAAyB,CAAC,CAAC;QACtF,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,gCAAwB,CAAC,IAAI,EAAE,EAAE;YACxE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE;gBAChE,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;KACJ;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAlCD,sFAkCC","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 { ScreenSpaceEffectBuilderParams } from \"../../ScreenSpaceEffectBuilder\";\nimport { TextureUnit } from \"../RenderFlags\";\nimport { AttributeMap } from \"../AttributeMap\";\nimport { FragmentShaderComponent, ProgramBuilder, VariableType, VertexShaderComponent } from \"../ShaderBuilder\";\nimport { assignFragColor } from \"./Fragment\";\n\nconst computePosition = `\n effectMain(rawPos);\n return rawPos;\n`;\n\nconst textureCoordFromPosition = `\n vec2 textureCoordFromPosition(vec4 pos) {\n return (pos.xy + 1.0) * 0.5;\n }\n`;\n\nconst computeBaseColor = \" return effectMain();\";\n\nconst computeBaseColorWithShift = `\n return u_readingPixels ? sampleSourcePixel() : effectMain();\n`;\n\n/** @internal */\nexport function createScreenSpaceEffectProgramBuilder(params: ScreenSpaceEffectBuilderParams): ProgramBuilder {\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(undefined, false));\n\n if (params.textureCoordFromPosition)\n builder.vert.addFunction(textureCoordFromPosition);\n\n builder.vert.addFunction(params.source.vertex);\n builder.vert.set(VertexShaderComponent.ComputePosition, computePosition);\n\n if (params.source.sampleSourcePixel)\n builder.frag.addFunction(\"vec4 sampleSourcePixel()\", params.source.sampleSourcePixel);\n\n builder.frag.addFunction(params.source.fragment);\n builder.addUniform(\"u_diffuse\", VariableType.Sampler2D, (prog) => {\n prog.addProgramUniform(\"u_diffuse\", (uniform, progParams) => {\n const texture = progParams.target.compositor.screenSpaceEffectFbo.getColor(0);\n texture.bindSampler(uniform, TextureUnit.Zero);\n });\n });\n\n builder.frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\n\n if (!params.source.sampleSourcePixel) {\n builder.frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\n } else {\n builder.frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColorWithShift);\n builder.frag.addUniform(\"u_readingPixels\", VariableType.Boolean, (prog) => {\n prog.addProgramUniform(\"u_readingPixels\", (uniform, progParams) => {\n uniform.setUniform1i(progParams.target.isReadPixelsInProgress ? 1 : 0);\n });\n });\n }\n\n return builder;\n}\n"]}
1
+ {"version":3,"file":"ScreenSpaceEffect.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/ScreenSpaceEffect.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,gDAA6C;AAC7C,kDAA+C;AAC/C,oDAAgH;AAChH,yCAA6C;AAE7C,MAAM,eAAe,GAAG;;;CAGvB,CAAC;AAEF,MAAM,wBAAwB,GAAG;;;;CAIhC,CAAC;AAEF,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AAElD,MAAM,yBAAyB,GAAG;;CAEjC,CAAC;AAEF,gBAAgB;AAChB,SAAgB,qCAAqC,CAAC,MAAsC;IAC1F,MAAM,OAAO,GAAG,IAAI,8BAAc,CAAC,2BAAY,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAEpF,IAAI,MAAM,CAAC,wBAAwB;QACjC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAErD,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,CAAC,GAAG,iDAAwC,eAAe,CAAC,CAAC;IAEzE,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB;QACjC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,0BAA0B,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAExF,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjD,OAAO,CAAC,UAAU,CAAC,WAAW,kCAA0B,CAAC,IAAI,EAAE,EAAE;QAC/D,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE;YAC1D,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC9E,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,yBAAW,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,GAAG,kDAAyC,0BAAe,CAAC,CAAC;IAE1E,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE;QACpC,OAAO,CAAC,IAAI,CAAC,GAAG,mDAA2C,gBAAgB,CAAC,CAAC;KAC9E;SAAM;QACL,OAAO,CAAC,IAAI,CAAC,GAAG,mDAA2C,yBAAyB,CAAC,CAAC;QACtF,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,gCAAwB,CAAC,IAAI,EAAE,EAAE;YACxE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE;gBAChE,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;KACJ;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAlCD,sFAkCC","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 { ScreenSpaceEffectBuilderParams } from \"../../ScreenSpaceEffectBuilder\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { AttributeMap } from \"../AttributeMap\";\r\nimport { FragmentShaderComponent, ProgramBuilder, VariableType, VertexShaderComponent } from \"../ShaderBuilder\";\r\nimport { assignFragColor } from \"./Fragment\";\r\n\r\nconst computePosition = `\r\n effectMain(rawPos);\r\n return rawPos;\r\n`;\r\n\r\nconst textureCoordFromPosition = `\r\n vec2 textureCoordFromPosition(vec4 pos) {\r\n return (pos.xy + 1.0) * 0.5;\r\n }\r\n`;\r\n\r\nconst computeBaseColor = \" return effectMain();\";\r\n\r\nconst computeBaseColorWithShift = `\r\n return u_readingPixels ? sampleSourcePixel() : effectMain();\r\n`;\r\n\r\n/** @internal */\r\nexport function createScreenSpaceEffectProgramBuilder(params: ScreenSpaceEffectBuilderParams): ProgramBuilder {\r\n const builder = new ProgramBuilder(AttributeMap.findAttributeMap(undefined, false));\r\n\r\n if (params.textureCoordFromPosition)\r\n builder.vert.addFunction(textureCoordFromPosition);\r\n\r\n builder.vert.addFunction(params.source.vertex);\r\n builder.vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n\r\n if (params.source.sampleSourcePixel)\r\n builder.frag.addFunction(\"vec4 sampleSourcePixel()\", params.source.sampleSourcePixel);\r\n\r\n builder.frag.addFunction(params.source.fragment);\r\n builder.addUniform(\"u_diffuse\", VariableType.Sampler2D, (prog) => {\r\n prog.addProgramUniform(\"u_diffuse\", (uniform, progParams) => {\r\n const texture = progParams.target.compositor.screenSpaceEffectFbo.getColor(0);\r\n texture.bindSampler(uniform, TextureUnit.Zero);\r\n });\r\n });\r\n\r\n builder.frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n\r\n if (!params.source.sampleSourcePixel) {\r\n builder.frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\r\n } else {\r\n builder.frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColorWithShift);\r\n builder.frag.addUniform(\"u_readingPixels\", VariableType.Boolean, (prog) => {\r\n prog.addProgramUniform(\"u_readingPixels\", (uniform, progParams) => {\r\n uniform.setUniform1i(progParams.target.isReadPixelsInProgress ? 1 : 0);\r\n });\r\n });\r\n }\r\n\r\n return builder;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SkyBox.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/SkyBox.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 { AttributeMap } from \"../AttributeMap\";\nimport { SkyBoxQuadsGeometry } from \"../CachedGeometry\";\nimport { Matrix3 } from \"../Matrix\";\nimport { TextureUnit } from \"../RenderFlags\";\nimport { FragmentShaderComponent, ProgramBuilder, VariableType, VertexShaderComponent } from \"../ShaderBuilder\";\nimport { ShaderProgram } from \"../ShaderProgram\";\nimport { Texture } from \"../Texture\";\n\nconst computeBaseColor = `return vec4(0, 0, 0, 0);`;\nconst assignFragData = `FragColor = TEXTURE_CUBE(s_cube, v_texDir);`;\nconst computePosition = `vec3 pos = u_rot * vec3(rawPos.x, rawPos.z, -rawPos.y); return pos.xyzz;`; // rawPos swizzling accounts for iModel rotation.\nconst computeTexDir = `v_texDir = rawPosition.xyz;`;\n\nconst scratchRotMatrix = new Matrix3();\n\n/** @internal */\nexport function createSkyBoxProgram(context: WebGL2RenderingContext): ShaderProgram {\n const prog = new ProgramBuilder(AttributeMap.findAttributeMap(undefined, false));\n\n prog.frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\n prog.frag.set(FragmentShaderComponent.AssignFragData, assignFragData);\n prog.vert.set(VertexShaderComponent.ComputePosition, computePosition);\n prog.vert.addUniform(\"u_rot\", VariableType.Mat3, (prg) => {\n prg.addGraphicUniform(\"u_rot\", (uniform, params) => {\n const rot = params.target.uniforms.frustum.viewMatrix.matrix;\n const mat3 = scratchRotMatrix;\n mat3.m00 = -rot.at(0, 0);\n mat3.m01 = -rot.at(0, 1);\n mat3.m02 = -rot.at(0, 2);\n mat3.m10 = -rot.at(1, 0);\n mat3.m11 = -rot.at(1, 1);\n mat3.m12 = -rot.at(1, 2);\n mat3.m20 = rot.at(2, 0);\n mat3.m21 = rot.at(2, 1);\n mat3.m22 = rot.at(2, 2);\n uniform.setMatrix3(mat3);\n });\n });\n\n prog.frag.addUniform(\"s_cube\", VariableType.SamplerCube, (prg) => {\n prg.addGraphicUniform(\"s_cube\", (uniform, params) => {\n const geom = params.geometry as SkyBoxQuadsGeometry;\n (geom.cube as Texture).texture.bindSampler(uniform, TextureUnit.Zero);\n });\n });\n prog.addInlineComputedVarying(\"v_texDir\", VariableType.Vec3, computeTexDir);\n\n prog.vert.headerComment = \"//!V! SkyBox\";\n prog.frag.headerComment = \"//!F! SkyBox\";\n\n return prog.buildProgram(context);\n}\n"]}
1
+ {"version":3,"file":"SkyBox.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/SkyBox.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,kDAA+C;AAE/C,sCAAoC;AACpC,gDAA6C;AAC7C,oDAAgH;AAIhH,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;AACpD,MAAM,cAAc,GAAG,6CAA6C,CAAC;AACrE,MAAM,eAAe,GAAG,0EAA0E,CAAC,CAAC,iDAAiD;AACrJ,MAAM,aAAa,GAAG,6BAA6B,CAAC;AAEpD,MAAM,gBAAgB,GAAG,IAAI,gBAAO,EAAE,CAAC;AAEvC,gBAAgB;AAChB,SAAgB,mBAAmB,CAAC,OAA+B;IACjE,MAAM,IAAI,GAAG,IAAI,8BAAc,CAAC,2BAAY,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAEjF,IAAI,CAAC,IAAI,CAAC,GAAG,mDAA2C,gBAAgB,CAAC,CAAC;IAC1E,IAAI,CAAC,IAAI,CAAC,GAAG,kDAAyC,cAAc,CAAC,CAAC;IACtE,IAAI,CAAC,IAAI,CAAC,GAAG,iDAAwC,eAAe,CAAC,CAAC;IACtE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,6BAAqB,CAAC,GAAG,EAAE,EAAE;QACvD,GAAG,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACjD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;YAC7D,MAAM,IAAI,GAAG,gBAAgB,CAAC;YAC9B,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,oCAA4B,CAAC,GAAG,EAAE,EAAE;QAC/D,GAAG,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAClD,MAAM,IAAI,GAAG,MAAM,CAAC,QAA+B,CAAC;YACnD,IAAI,CAAC,IAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,yBAAW,CAAC,IAAI,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,wBAAwB,CAAC,UAAU,6BAAqB,aAAa,CAAC,CAAC;IAE5E,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,cAAc,CAAC;IACzC,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,cAAc,CAAC;IAEzC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAnCD,kDAmCC","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 { AttributeMap } from \"../AttributeMap\";\r\nimport { SkyBoxQuadsGeometry } from \"../CachedGeometry\";\r\nimport { Matrix3 } from \"../Matrix\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, ProgramBuilder, VariableType, VertexShaderComponent } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { Texture } from \"../Texture\";\r\n\r\nconst computeBaseColor = `return vec4(0, 0, 0, 0);`;\r\nconst assignFragData = `FragColor = TEXTURE_CUBE(s_cube, v_texDir);`;\r\nconst computePosition = `vec3 pos = u_rot * vec3(rawPos.x, rawPos.z, -rawPos.y); return pos.xyzz;`; // rawPos swizzling accounts for iModel rotation.\r\nconst computeTexDir = `v_texDir = rawPosition.xyz;`;\r\n\r\nconst scratchRotMatrix = new Matrix3();\r\n\r\n/** @internal */\r\nexport function createSkyBoxProgram(context: WebGL2RenderingContext): ShaderProgram {\r\n const prog = new ProgramBuilder(AttributeMap.findAttributeMap(undefined, false));\r\n\r\n prog.frag.set(FragmentShaderComponent.ComputeBaseColor, computeBaseColor);\r\n prog.frag.set(FragmentShaderComponent.AssignFragData, assignFragData);\r\n prog.vert.set(VertexShaderComponent.ComputePosition, computePosition);\r\n prog.vert.addUniform(\"u_rot\", VariableType.Mat3, (prg) => {\r\n prg.addGraphicUniform(\"u_rot\", (uniform, params) => {\r\n const rot = params.target.uniforms.frustum.viewMatrix.matrix;\r\n const mat3 = scratchRotMatrix;\r\n mat3.m00 = -rot.at(0, 0);\r\n mat3.m01 = -rot.at(0, 1);\r\n mat3.m02 = -rot.at(0, 2);\r\n mat3.m10 = -rot.at(1, 0);\r\n mat3.m11 = -rot.at(1, 1);\r\n mat3.m12 = -rot.at(1, 2);\r\n mat3.m20 = rot.at(2, 0);\r\n mat3.m21 = rot.at(2, 1);\r\n mat3.m22 = rot.at(2, 2);\r\n uniform.setMatrix3(mat3);\r\n });\r\n });\r\n\r\n prog.frag.addUniform(\"s_cube\", VariableType.SamplerCube, (prg) => {\r\n prg.addGraphicUniform(\"s_cube\", (uniform, params) => {\r\n const geom = params.geometry as SkyBoxQuadsGeometry;\r\n (geom.cube as Texture).texture.bindSampler(uniform, TextureUnit.Zero);\r\n });\r\n });\r\n prog.addInlineComputedVarying(\"v_texDir\", VariableType.Vec3, computeTexDir);\r\n\r\n prog.vert.headerComment = \"//!V! SkyBox\";\r\n prog.frag.headerComment = \"//!F! SkyBox\";\r\n\r\n return prog.buildProgram(context);\r\n}\r\n"]}
@@ -17,65 +17,65 @@ const System_1 = require("../System");
17
17
  const Fragment_1 = require("./Fragment");
18
18
  const ViewportQuad_1 = require("./ViewportQuad");
19
19
  const Atmosphere_1 = require("./Atmosphere");
20
- const computeGradientValue = `
21
- // For the gradient sky it's good enough to calculate these in the vertex shader.
22
- vec3 eyeToVert = a_worldPos - u_worldEye;
23
- float radius = sqrt(eyeToVert.x * eyeToVert.x + eyeToVert.y * eyeToVert.y);
24
- float zValue = eyeToVert.z - radius * u_zOffset;
25
- float d = atan(zValue, radius);
26
- if (u_skyParams.x < 0.0) { // 2-color gradient
27
- d = 0.5 - d / 3.14159265359;
28
- return vec4(d, 0.0, 0.0, 0.0);
29
- }
30
- d = d / 1.570796326795;
31
- return vec4(d, 1.0 - (d - horizonSize) / (1.0 - horizonSize), 1.0 - (-d - horizonSize) / (1.0 - horizonSize), (d + horizonSize) / (horizonSize * 2.0));
20
+ const computeGradientValue = `
21
+ // For the gradient sky it's good enough to calculate these in the vertex shader.
22
+ vec3 eyeToVert = a_worldPos - u_worldEye;
23
+ float radius = sqrt(eyeToVert.x * eyeToVert.x + eyeToVert.y * eyeToVert.y);
24
+ float zValue = eyeToVert.z - radius * u_zOffset;
25
+ float d = atan(zValue, radius);
26
+ if (u_skyParams.x < 0.0) { // 2-color gradient
27
+ d = 0.5 - d / 3.14159265359;
28
+ return vec4(d, 0.0, 0.0, 0.0);
29
+ }
30
+ d = d / 1.570796326795;
31
+ return vec4(d, 1.0 - (d - horizonSize) / (1.0 - horizonSize), 1.0 - (-d - horizonSize) / (1.0 - horizonSize), (d + horizonSize) / (horizonSize * 2.0));
32
32
  `;
33
- const computeSkySphereColorGradient = `
34
- if (u_skyParams.x < 0.0) // 2-color
35
- return vec4(mix(u_zenithColor, u_nadirColor, v_gradientValue.x), 1.0);
36
-
37
- if (v_gradientValue.x > horizonSize) // above horizon
38
- return vec4(mix(u_zenithColor, u_skyColor, pow(v_gradientValue.y, u_skyParams.y)), 1.0);
39
- else if (v_gradientValue.x < -horizonSize) // below horizon
40
- return vec4(mix(u_nadirColor, u_groundColor, pow(v_gradientValue.z, u_skyParams.z)), 1.0);
41
-
42
- return vec4(mix(u_groundColor, u_skyColor, v_gradientValue.w), 1.0);
33
+ const computeSkySphereColorGradient = `
34
+ if (u_skyParams.x < 0.0) // 2-color
35
+ return vec4(mix(u_zenithColor, u_nadirColor, v_gradientValue.x), 1.0);
36
+
37
+ if (v_gradientValue.x > horizonSize) // above horizon
38
+ return vec4(mix(u_zenithColor, u_skyColor, pow(v_gradientValue.y, u_skyParams.y)), 1.0);
39
+ else if (v_gradientValue.x < -horizonSize) // below horizon
40
+ return vec4(mix(u_nadirColor, u_groundColor, pow(v_gradientValue.z, u_skyParams.z)), 1.0);
41
+
42
+ return vec4(mix(u_groundColor, u_skyColor, v_gradientValue.w), 1.0);
43
43
  `;
44
- const computeSkySphereColorAtmosphere = `
45
- return vec4(0.0, 0.0, 0.0, 1.0);
44
+ const computeSkySphereColorAtmosphere = `
45
+ return vec4(0.0, 0.0, 0.0, 1.0);
46
46
  `;
47
47
  const computeEyeToVert = "v_eyeToVert = a_worldPos - u_worldEye;";
48
- const computeSkySphereColorTexture = `
49
- // For the texture we must calculate these per pixel. Alternatively we could use a finer mesh.
50
- float radius = sqrt(v_eyeToVert.x * v_eyeToVert.x + v_eyeToVert.y * v_eyeToVert.y);
51
- float zValue = v_eyeToVert.z - radius * u_zOffset;
52
- float u = 0.25 - (atan(v_eyeToVert.y, v_eyeToVert.x) + u_rotation) / 6.28318530718;
53
- float v = 0.5 - atan(zValue, radius) / 3.14159265359;
54
- if (u < 0.0)
55
- u += 1.0;
56
- if (v < 0.0)
57
- v += 1.0;
58
- return TEXTURE(s_skyTxtr, vec2(u, v));
48
+ const computeSkySphereColorTexture = `
49
+ // For the texture we must calculate these per pixel. Alternatively we could use a finer mesh.
50
+ float radius = sqrt(v_eyeToVert.x * v_eyeToVert.x + v_eyeToVert.y * v_eyeToVert.y);
51
+ float zValue = v_eyeToVert.z - radius * u_zOffset;
52
+ float u = 0.25 - (atan(v_eyeToVert.y, v_eyeToVert.x) + u_rotation) / 6.28318530718;
53
+ float v = 0.5 - atan(zValue, radius) / 3.14159265359;
54
+ if (u < 0.0)
55
+ u += 1.0;
56
+ if (v < 0.0)
57
+ v += 1.0;
58
+ return TEXTURE(s_skyTxtr, vec2(u, v));
59
59
  `;
60
60
  /**
61
61
  * Eye Space for the SkySphere is unique because the ViewportQuad is already aligned with the view.
62
62
  * For this reason, the modelView matrix is not useful in calculating eyeSpace.
63
63
  * Instead, we can calculate the eyeSpace coordinates via the frustum values directly.
64
64
  */
65
- const computeEyeSpace = `
66
- vec3 computeEyeSpace(vec4 rawPos) {
67
- vec3 pos01 = rawPos.xyz * 0.5 + 0.5;
68
-
69
- float top = u_frustumPlanes.x;
70
- float bottom = u_frustumPlanes.y;
71
- float left = u_frustumPlanes.z;
72
- float right = u_frustumPlanes.w;
73
-
74
- return vec3(
75
- mix(left, right, pos01.x),
76
- mix(bottom, top, pos01.y),
77
- -u_frustum.x
78
- );
65
+ const computeEyeSpace = `
66
+ vec3 computeEyeSpace(vec4 rawPos) {
67
+ vec3 pos01 = rawPos.xyz * 0.5 + 0.5;
68
+
69
+ float top = u_frustumPlanes.x;
70
+ float bottom = u_frustumPlanes.y;
71
+ float left = u_frustumPlanes.z;
72
+ float right = u_frustumPlanes.w;
73
+
74
+ return vec3(
75
+ mix(left, right, pos01.x),
76
+ mix(bottom, top, pos01.y),
77
+ -u_frustum.x
78
+ );
79
79
  }`;
80
80
  const scratch3Floats = new Float32Array(3);
81
81
  const scratchVec3 = new core_geometry_1.Vector3d();