@itwin/core-frontend 4.10.0-dev.9 → 5.0.0-dev.0

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 +23 -1
  2. package/lib/cjs/AccuDraw.d.ts.map +1 -1
  3. package/lib/cjs/AccuDraw.js +0 -2
  4. package/lib/cjs/AccuDraw.js.map +1 -1
  5. package/lib/cjs/AccuSnap.d.ts.map +1 -1
  6. package/lib/cjs/AccuSnap.js +17 -8
  7. package/lib/cjs/AccuSnap.js.map +1 -1
  8. package/lib/cjs/BackgroundMapGeometry.js +3 -3
  9. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  10. package/lib/cjs/BingLocation.js +1 -1
  11. package/lib/cjs/BingLocation.js.map +1 -1
  12. package/lib/cjs/BriefcaseConnection.d.ts +0 -1
  13. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  14. package/lib/cjs/BriefcaseConnection.js +2 -3
  15. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  16. package/lib/cjs/BriefcaseTxns.d.ts.map +1 -1
  17. package/lib/cjs/ChangeFlags.d.ts +1 -1
  18. package/lib/cjs/ChangeFlags.d.ts.map +1 -1
  19. package/lib/cjs/ChangeFlags.js.map +1 -1
  20. package/lib/cjs/CheckpointConnection.js +1 -1
  21. package/lib/cjs/CheckpointConnection.js.map +1 -1
  22. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  23. package/lib/cjs/DisplayStyleState.js +6 -6
  24. package/lib/cjs/DisplayStyleState.js.map +1 -1
  25. package/lib/cjs/DrawingViewState.d.ts +8 -6
  26. package/lib/cjs/DrawingViewState.d.ts.map +1 -1
  27. package/lib/cjs/DrawingViewState.js +20 -10
  28. package/lib/cjs/DrawingViewState.js.map +1 -1
  29. package/lib/cjs/EnvironmentDecorations.js +1 -1
  30. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  31. package/lib/cjs/GraphicalEditingScope.d.ts.map +1 -1
  32. package/lib/cjs/HitDetail.d.ts +37 -5
  33. package/lib/cjs/HitDetail.d.ts.map +1 -1
  34. package/lib/cjs/HitDetail.js +12 -2
  35. package/lib/cjs/HitDetail.js.map +1 -1
  36. package/lib/cjs/IModelApp.d.ts.map +1 -1
  37. package/lib/cjs/IModelApp.js +1 -2
  38. package/lib/cjs/IModelApp.js.map +1 -1
  39. package/lib/cjs/IModelConnection.d.ts +1 -0
  40. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  41. package/lib/cjs/IModelConnection.js +9 -8
  42. package/lib/cjs/IModelConnection.js.map +1 -1
  43. package/lib/cjs/IpcApp.d.ts.map +1 -1
  44. package/lib/cjs/IpcApp.js +8 -1
  45. package/lib/cjs/IpcApp.js.map +1 -1
  46. package/lib/cjs/LinePlaneIntersect.js +1 -2
  47. package/lib/cjs/LinePlaneIntersect.js.map +1 -1
  48. package/lib/cjs/ModelState.d.ts +0 -8
  49. package/lib/cjs/ModelState.d.ts.map +1 -1
  50. package/lib/cjs/ModelState.js +0 -8
  51. package/lib/cjs/ModelState.js.map +1 -1
  52. package/lib/cjs/NativeApp.d.ts +1 -1
  53. package/lib/cjs/NativeApp.d.ts.map +1 -1
  54. package/lib/cjs/NativeApp.js.map +1 -1
  55. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  56. package/lib/cjs/NotificationManager.d.ts +2 -2
  57. package/lib/cjs/NotificationManager.d.ts.map +1 -1
  58. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.d.ts.map +1 -1
  59. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js +1 -2
  60. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  61. package/lib/cjs/RealityDataSourceContextShareImpl.d.ts.map +1 -1
  62. package/lib/cjs/RealityDataSourceContextShareImpl.js +2 -3
  63. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
  64. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js +1 -1
  65. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  66. package/lib/cjs/SheetViewState.d.ts +4 -11
  67. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  68. package/lib/cjs/SheetViewState.js +18 -12
  69. package/lib/cjs/SheetViewState.js.map +1 -1
  70. package/lib/cjs/SpatialViewState.d.ts +0 -1
  71. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  72. package/lib/cjs/SpatialViewState.js +1 -2
  73. package/lib/cjs/SpatialViewState.js.map +1 -1
  74. package/lib/cjs/SubCategoriesCache.js +1 -1
  75. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  76. package/lib/cjs/TentativePoint.js +1 -1
  77. package/lib/cjs/TentativePoint.js.map +1 -1
  78. package/lib/cjs/ViewCreator3d.js +1 -1
  79. package/lib/cjs/ViewCreator3d.js.map +1 -1
  80. package/lib/cjs/ViewGlobalLocation.js +9 -9
  81. package/lib/cjs/ViewGlobalLocation.js.map +1 -1
  82. package/lib/cjs/ViewState.d.ts +14 -1
  83. package/lib/cjs/ViewState.d.ts.map +1 -1
  84. package/lib/cjs/ViewState.js +4 -2
  85. package/lib/cjs/ViewState.js.map +1 -1
  86. package/lib/cjs/ViewingSpace.d.ts.map +1 -1
  87. package/lib/cjs/ViewingSpace.js +3 -0
  88. package/lib/cjs/ViewingSpace.js.map +1 -1
  89. package/lib/cjs/Viewport.d.ts.map +1 -1
  90. package/lib/cjs/Viewport.js +2 -4
  91. package/lib/cjs/Viewport.js.map +1 -1
  92. package/lib/cjs/ViewportSync.js +6 -6
  93. package/lib/cjs/ViewportSync.js.map +1 -1
  94. package/lib/cjs/common/ImageUtil.js +15 -16
  95. package/lib/cjs/common/ImageUtil.js.map +1 -1
  96. package/lib/cjs/common/WorkerProxy.d.ts +8 -4
  97. package/lib/cjs/common/WorkerProxy.d.ts.map +1 -1
  98. package/lib/cjs/common/WorkerProxy.js +1 -2
  99. package/lib/cjs/common/WorkerProxy.js.map +1 -1
  100. package/lib/cjs/common/gltf/GltfParser.js +7 -8
  101. package/lib/cjs/common/gltf/GltfParser.js.map +1 -1
  102. package/lib/cjs/common/gltf/GltfSchema.d.ts +1 -1
  103. package/lib/cjs/common/gltf/GltfSchema.d.ts.map +1 -1
  104. package/lib/cjs/common/gltf/GltfSchema.js +5 -5
  105. package/lib/cjs/common/gltf/GltfSchema.js.map +1 -1
  106. package/lib/cjs/common/imdl/CompactEdges.js +1 -2
  107. package/lib/cjs/common/imdl/CompactEdges.js.map +1 -1
  108. package/lib/cjs/common/imdl/ImdlModel.js +2 -3
  109. package/lib/cjs/common/imdl/ImdlModel.js.map +1 -1
  110. package/lib/cjs/common/imdl/ImdlSchema.d.ts.map +1 -1
  111. package/lib/cjs/common/imdl/ImdlSchema.js.map +1 -1
  112. package/lib/cjs/common/imdl/ParseImdlDocument.d.ts.map +1 -1
  113. package/lib/cjs/common/imdl/ParseImdlDocument.js +10 -12
  114. package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -1
  115. package/lib/cjs/common/internal/render/DisplayParams.js.map +1 -1
  116. package/lib/cjs/common/internal/render/EdgeParams.js +2 -3
  117. package/lib/cjs/common/internal/render/EdgeParams.js.map +1 -1
  118. package/lib/cjs/common/internal/render/GeometryList.d.ts +1 -1
  119. package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js +3 -3
  120. package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
  121. package/lib/cjs/common/internal/render/LineCode.js +1 -2
  122. package/lib/cjs/common/internal/render/LineCode.js.map +1 -1
  123. package/lib/cjs/common/internal/render/MeshBuilder.js.map +1 -1
  124. package/lib/cjs/common/internal/render/MeshBuilderMap.js.map +1 -1
  125. package/lib/cjs/common/internal/render/MeshPrimitives.js +3 -3
  126. package/lib/cjs/common/internal/render/MeshPrimitives.js.map +1 -1
  127. package/lib/cjs/common/internal/render/OvrFlags.d.ts +4 -2
  128. package/lib/cjs/common/internal/render/OvrFlags.d.ts.map +1 -1
  129. package/lib/cjs/common/internal/render/OvrFlags.js.map +1 -1
  130. package/lib/cjs/common/internal/render/PointStringParams.js +1 -2
  131. package/lib/cjs/common/internal/render/PointStringParams.js.map +1 -1
  132. package/lib/cjs/common/internal/render/PolylineParams.js +4 -5
  133. package/lib/cjs/common/internal/render/PolylineParams.js.map +1 -1
  134. package/lib/cjs/common/internal/render/SurfaceParams.js +3 -3
  135. package/lib/cjs/common/internal/render/SurfaceParams.js.map +1 -1
  136. package/lib/cjs/common/internal/render/VertexTable.d.ts.map +1 -1
  137. package/lib/cjs/common/internal/render/VertexTable.js +4 -7
  138. package/lib/cjs/common/internal/render/VertexTable.js.map +1 -1
  139. package/lib/cjs/common/internal/render/VertexTableBuilder.js +2 -2
  140. package/lib/cjs/common/internal/render/VertexTableBuilder.js.map +1 -1
  141. package/lib/cjs/common/internal/render/VertexTableSplitter.js +4 -4
  142. package/lib/cjs/common/internal/render/VertexTableSplitter.js.map +1 -1
  143. package/lib/cjs/common/render/InstancedGraphicParams.js.map +1 -1
  144. package/lib/cjs/extension/providers/ExtensionLoadScript.js +1 -2
  145. package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -1
  146. package/lib/cjs/internal/render/RenderInstancesParamsImpl.js +2 -3
  147. package/lib/cjs/internal/render/RenderInstancesParamsImpl.js.map +1 -1
  148. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  149. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +1 -1
  150. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  151. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js +2 -2
  152. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  153. package/lib/cjs/quantity-formatting/LocalUnitFormatProvider.js +2 -2
  154. package/lib/cjs/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
  155. package/lib/cjs/quantity-formatting/QuantityFormatter.js +3 -3
  156. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  157. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.d.ts.map +1 -1
  158. package/lib/cjs/render/GraphicBranch.d.ts +12 -1
  159. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  160. package/lib/cjs/render/GraphicBranch.js +2 -2
  161. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  162. package/lib/cjs/render/GraphicTemplate.js +1 -2
  163. package/lib/cjs/render/GraphicTemplate.js.map +1 -1
  164. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  165. package/lib/cjs/render/Pixel.d.ts +14 -4
  166. package/lib/cjs/render/Pixel.d.ts.map +1 -1
  167. package/lib/cjs/render/Pixel.js +22 -5
  168. package/lib/cjs/render/Pixel.js.map +1 -1
  169. package/lib/cjs/render/RealityMeshGraphicParams.d.ts +1 -0
  170. package/lib/cjs/render/RealityMeshGraphicParams.d.ts.map +1 -1
  171. package/lib/cjs/render/RealityMeshGraphicParams.js.map +1 -1
  172. package/lib/cjs/render/RenderMemory.d.ts +2 -0
  173. package/lib/cjs/render/RenderMemory.d.ts.map +1 -1
  174. package/lib/cjs/render/RenderMemory.js +2 -0
  175. package/lib/cjs/render/RenderMemory.js.map +1 -1
  176. package/lib/cjs/render/RenderPlan.d.ts +2 -1
  177. package/lib/cjs/render/RenderPlan.d.ts.map +1 -1
  178. package/lib/cjs/render/RenderPlan.js +5 -3
  179. package/lib/cjs/render/RenderPlan.js.map +1 -1
  180. package/lib/cjs/render/RenderSystem.d.ts +1 -1
  181. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  182. package/lib/cjs/render/RenderSystem.js +8 -9
  183. package/lib/cjs/render/RenderSystem.js.map +1 -1
  184. package/lib/cjs/render/UpsampleRealityMeshParams.js +1 -2
  185. package/lib/cjs/render/UpsampleRealityMeshParams.js.map +1 -1
  186. package/lib/cjs/render/VisibleFeature.js +1 -2
  187. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  188. package/lib/cjs/render/webgl/AttributeBuffers.js +5 -5
  189. package/lib/cjs/render/webgl/AttributeBuffers.js.map +1 -1
  190. package/lib/cjs/render/webgl/BatchUniforms.d.ts +4 -0
  191. package/lib/cjs/render/webgl/BatchUniforms.d.ts.map +1 -1
  192. package/lib/cjs/render/webgl/BatchUniforms.js +18 -0
  193. package/lib/cjs/render/webgl/BatchUniforms.js.map +1 -1
  194. package/lib/cjs/render/webgl/BranchState.d.ts +9 -0
  195. package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
  196. package/lib/cjs/render/webgl/BranchState.js +6 -0
  197. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  198. package/lib/cjs/render/webgl/BranchUniforms.d.ts +1 -0
  199. package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
  200. package/lib/cjs/render/webgl/BranchUniforms.js +14 -1
  201. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  202. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  203. package/lib/cjs/render/webgl/ClippingProgram.js +2 -2
  204. package/lib/cjs/render/webgl/ClippingProgram.js.map +1 -1
  205. package/lib/cjs/render/webgl/ContourUniforms.d.ts +22 -0
  206. package/lib/cjs/render/webgl/ContourUniforms.d.ts.map +1 -0
  207. package/lib/cjs/render/webgl/ContourUniforms.js +98 -0
  208. package/lib/cjs/render/webgl/ContourUniforms.js.map +1 -0
  209. package/lib/cjs/render/webgl/Contours.d.ts +34 -0
  210. package/lib/cjs/render/webgl/Contours.d.ts.map +1 -0
  211. package/lib/cjs/render/webgl/Contours.js +127 -0
  212. package/lib/cjs/render/webgl/Contours.js.map +1 -0
  213. package/lib/cjs/render/webgl/DrawCommand.js +3 -3
  214. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  215. package/lib/cjs/render/webgl/EdgeSettings.js +1 -1
  216. package/lib/cjs/render/webgl/EdgeSettings.js.map +1 -1
  217. package/lib/cjs/render/webgl/FeatureOverrides.d.ts +1 -0
  218. package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
  219. package/lib/cjs/render/webgl/FeatureOverrides.js +48 -51
  220. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  221. package/lib/cjs/render/webgl/FrustumUniforms.js +2 -2
  222. package/lib/cjs/render/webgl/FrustumUniforms.js.map +1 -1
  223. package/lib/cjs/render/webgl/GL.d.ts +2 -1
  224. package/lib/cjs/render/webgl/GL.d.ts.map +1 -1
  225. package/lib/cjs/render/webgl/GL.js +1 -0
  226. package/lib/cjs/render/webgl/GL.js.map +1 -1
  227. package/lib/cjs/render/webgl/Graphic.d.ts +12 -0
  228. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  229. package/lib/cjs/render/webgl/Graphic.js +31 -0
  230. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  231. package/lib/cjs/render/webgl/InstancedGeometry.js +2 -2
  232. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  233. package/lib/cjs/render/webgl/Material.js +4 -4
  234. package/lib/cjs/render/webgl/Material.js.map +1 -1
  235. package/lib/cjs/render/webgl/Matrix.js +3 -3
  236. package/lib/cjs/render/webgl/Matrix.js.map +1 -1
  237. package/lib/cjs/render/webgl/RealityMesh.js +1 -1
  238. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  239. package/lib/cjs/render/webgl/RenderFlags.d.ts +2 -1
  240. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  241. package/lib/cjs/render/webgl/RenderFlags.js +4 -2
  242. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  243. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  244. package/lib/cjs/render/webgl/SceneCompositor.js +19 -7
  245. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  246. package/lib/cjs/render/webgl/ScratchDrawParams.js +2 -3
  247. package/lib/cjs/render/webgl/ScratchDrawParams.js.map +1 -1
  248. package/lib/cjs/render/webgl/ScreenSpaceEffect.js +2 -2
  249. package/lib/cjs/render/webgl/ScreenSpaceEffect.js.map +1 -1
  250. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +15 -13
  251. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  252. package/lib/cjs/render/webgl/ShaderBuilder.js +18 -10
  253. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  254. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  255. package/lib/cjs/render/webgl/ShaderProgram.js +26 -0
  256. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  257. package/lib/cjs/render/webgl/SurfaceGeometry.js +2 -2
  258. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  259. package/lib/cjs/render/webgl/Sync.js +3 -4
  260. package/lib/cjs/render/webgl/Sync.js.map +1 -1
  261. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  262. package/lib/cjs/render/webgl/System.js +7 -7
  263. package/lib/cjs/render/webgl/System.js.map +1 -1
  264. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  265. package/lib/cjs/render/webgl/Target.js +2 -1
  266. package/lib/cjs/render/webgl/Target.js.map +1 -1
  267. package/lib/cjs/render/webgl/TargetUniforms.d.ts +2 -0
  268. package/lib/cjs/render/webgl/TargetUniforms.d.ts.map +1 -1
  269. package/lib/cjs/render/webgl/TargetUniforms.js +2 -0
  270. package/lib/cjs/render/webgl/TargetUniforms.js.map +1 -1
  271. package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
  272. package/lib/cjs/render/webgl/TechniqueId.js +1 -2
  273. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  274. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  275. package/lib/cjs/render/webgl/Texture.js +2 -2
  276. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  277. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  278. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +2 -3
  279. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  280. package/lib/cjs/render/webgl/glsl/Animation.js +1 -2
  281. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  282. package/lib/cjs/render/webgl/glsl/Atmosphere.js +2 -3
  283. package/lib/cjs/render/webgl/glsl/Atmosphere.js.map +1 -1
  284. package/lib/cjs/render/webgl/glsl/Blur.js +2 -3
  285. package/lib/cjs/render/webgl/glsl/Blur.js.map +1 -1
  286. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +2 -3
  287. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  288. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +2 -3
  289. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  290. package/lib/cjs/render/webgl/glsl/Clipping.js +3 -3
  291. package/lib/cjs/render/webgl/glsl/Clipping.js.map +1 -1
  292. package/lib/cjs/render/webgl/glsl/Color.js +2 -3
  293. package/lib/cjs/render/webgl/glsl/Color.js.map +1 -1
  294. package/lib/cjs/render/webgl/glsl/Combine3Textures.js +2 -3
  295. package/lib/cjs/render/webgl/glsl/Combine3Textures.js.map +1 -1
  296. package/lib/cjs/render/webgl/glsl/CombineTextures.js +2 -3
  297. package/lib/cjs/render/webgl/glsl/CombineTextures.js.map +1 -1
  298. package/lib/cjs/render/webgl/glsl/Common.js +7 -7
  299. package/lib/cjs/render/webgl/glsl/Common.js.map +1 -1
  300. package/lib/cjs/render/webgl/glsl/Composite.js +2 -3
  301. package/lib/cjs/render/webgl/glsl/Composite.js.map +1 -1
  302. package/lib/cjs/render/webgl/glsl/Contours.d.ts +4 -0
  303. package/lib/cjs/render/webgl/glsl/Contours.d.ts.map +1 -0
  304. package/lib/cjs/render/webgl/glsl/Contours.js +137 -0
  305. package/lib/cjs/render/webgl/glsl/Contours.js.map +1 -0
  306. package/lib/cjs/render/webgl/glsl/CopyColor.js +2 -3
  307. package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
  308. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +2 -3
  309. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  310. package/lib/cjs/render/webgl/glsl/CopyStencil.js +9 -10
  311. package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
  312. package/lib/cjs/render/webgl/glsl/Decode.js +2 -2
  313. package/lib/cjs/render/webgl/glsl/Decode.js.map +1 -1
  314. package/lib/cjs/render/webgl/glsl/EDL.js +8 -9
  315. package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -1
  316. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +2 -3
  317. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  318. package/lib/cjs/render/webgl/glsl/Edge.js +3 -4
  319. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  320. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts +2 -1
  321. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  322. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +35 -28
  323. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  324. package/lib/cjs/render/webgl/glsl/Fragment.js +15 -15
  325. package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
  326. package/lib/cjs/render/webgl/glsl/Instancing.js +3 -4
  327. package/lib/cjs/render/webgl/glsl/Instancing.js.map +1 -1
  328. package/lib/cjs/render/webgl/glsl/Lighting.js +1 -2
  329. package/lib/cjs/render/webgl/glsl/Lighting.js.map +1 -1
  330. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +2 -3
  331. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  332. package/lib/cjs/render/webgl/glsl/LookupTable.js +1 -2
  333. package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
  334. package/lib/cjs/render/webgl/glsl/Monochrome.js +2 -3
  335. package/lib/cjs/render/webgl/glsl/Monochrome.js.map +1 -1
  336. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +9 -9
  337. package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
  338. package/lib/cjs/render/webgl/glsl/PlanarGrid.js +1 -1
  339. package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
  340. package/lib/cjs/render/webgl/glsl/PointCloud.js +3 -4
  341. package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
  342. package/lib/cjs/render/webgl/glsl/PointString.js +2 -3
  343. package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
  344. package/lib/cjs/render/webgl/glsl/Polyline.js +6 -6
  345. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  346. package/lib/cjs/render/webgl/glsl/RealityMesh.js +8 -8
  347. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  348. package/lib/cjs/render/webgl/glsl/RenderPass.js +1 -2
  349. package/lib/cjs/render/webgl/glsl/RenderPass.js.map +1 -1
  350. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +2 -3
  351. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  352. package/lib/cjs/render/webgl/glsl/SkyBox.js +2 -3
  353. package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
  354. package/lib/cjs/render/webgl/glsl/SkySphere.js +2 -3
  355. package/lib/cjs/render/webgl/glsl/SkySphere.js.map +1 -1
  356. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +4 -4
  357. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  358. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  359. package/lib/cjs/render/webgl/glsl/Surface.js +11 -9
  360. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  361. package/lib/cjs/render/webgl/glsl/Thematic.js +2 -3
  362. package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
  363. package/lib/cjs/render/webgl/glsl/Translucency.js +3 -3
  364. package/lib/cjs/render/webgl/glsl/Translucency.js.map +1 -1
  365. package/lib/cjs/render/webgl/glsl/Vertex.js +13 -13
  366. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  367. package/lib/cjs/render/webgl/glsl/Viewport.js +3 -4
  368. package/lib/cjs/render/webgl/glsl/Viewport.js.map +1 -1
  369. package/lib/cjs/render/webgl/glsl/ViewportQuad.js +1 -2
  370. package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
  371. package/lib/cjs/render/webgl/glsl/Wiremesh.js +2 -3
  372. package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -1
  373. package/lib/cjs/request/Request.d.ts.map +1 -1
  374. package/lib/cjs/request/Request.js +2 -2
  375. package/lib/cjs/request/Request.js.map +1 -1
  376. package/lib/cjs/request/utils.js +3 -4
  377. package/lib/cjs/request/utils.js.map +1 -1
  378. package/lib/cjs/tile/ClassifierTileTree.js +3 -3
  379. package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
  380. package/lib/cjs/tile/ContextShareProvider.js +2 -2
  381. package/lib/cjs/tile/ContextShareProvider.js.map +1 -1
  382. package/lib/cjs/tile/GltfReader.d.ts +1 -1
  383. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  384. package/lib/cjs/tile/GltfReader.js +18 -16
  385. package/lib/cjs/tile/GltfReader.js.map +1 -1
  386. package/lib/cjs/tile/IModelTile.js +2 -2
  387. package/lib/cjs/tile/IModelTile.js.map +1 -1
  388. package/lib/cjs/tile/IModelTileTree.js +2 -2
  389. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  390. package/lib/cjs/tile/ImdlDecoder.js +1 -2
  391. package/lib/cjs/tile/ImdlDecoder.js.map +1 -1
  392. package/lib/cjs/tile/ImdlGraphicsCreator.js +7 -8
  393. package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -1
  394. package/lib/cjs/tile/ImdlParser.js +1 -2
  395. package/lib/cjs/tile/ImdlParser.js.map +1 -1
  396. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  397. package/lib/cjs/tile/ImdlReader.js +3 -3
  398. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  399. package/lib/cjs/tile/MeshoptCompression.js +1 -2
  400. package/lib/cjs/tile/MeshoptCompression.js.map +1 -1
  401. package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
  402. package/lib/cjs/tile/OrbitGtTileTree.js +3 -4
  403. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  404. package/lib/cjs/tile/PntsReader.js +2 -3
  405. package/lib/cjs/tile/PntsReader.js.map +1 -1
  406. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  407. package/lib/cjs/tile/PrimaryTileTree.js +12 -12
  408. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  409. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  410. package/lib/cjs/tile/RealityModelTileTree.js +3 -4
  411. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  412. package/lib/cjs/tile/RealityTileDrawArgs.d.ts.map +1 -1
  413. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  414. package/lib/cjs/tile/RealityTileLoader.js +1 -1
  415. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  416. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  417. package/lib/cjs/tile/RenderGraphicTileTree.js +1 -2
  418. package/lib/cjs/tile/RenderGraphicTileTree.js.map +1 -1
  419. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js +1 -1
  420. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  421. package/lib/cjs/tile/Tile.js +2 -2
  422. package/lib/cjs/tile/Tile.js.map +1 -1
  423. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  424. package/lib/cjs/tile/TileAdmin.js +3 -4
  425. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  426. package/lib/cjs/tile/TileDrawArgs.d.ts +4 -0
  427. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  428. package/lib/cjs/tile/TileDrawArgs.js +2 -0
  429. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  430. package/lib/cjs/tile/TileRequest.js +1 -1
  431. package/lib/cjs/tile/TileRequest.js.map +1 -1
  432. package/lib/cjs/tile/TileRequestChannel.js +1 -1
  433. package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
  434. package/lib/cjs/tile/TileStorage.js +1 -1
  435. package/lib/cjs/tile/TileStorage.js.map +1 -1
  436. package/lib/cjs/tile/TileTreeReference.d.ts +2 -0
  437. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  438. package/lib/cjs/tile/TileTreeReference.js +3 -0
  439. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  440. package/lib/cjs/tile/ViewFlagOverrides.js +1 -2
  441. package/lib/cjs/tile/ViewFlagOverrides.js.map +1 -1
  442. package/lib/cjs/tile/map/ArcGISTileMap.d.ts.map +1 -1
  443. package/lib/cjs/tile/map/ArcGISTileMap.js +0 -1
  444. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
  445. package/lib/cjs/tile/map/ArcGisUtilities.js +1 -1
  446. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  447. package/lib/cjs/tile/map/BingElevation.js +3 -3
  448. package/lib/cjs/tile/map/BingElevation.js.map +1 -1
  449. package/lib/cjs/tile/map/CesiumTerrainProvider.js +7 -8
  450. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  451. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +1 -1
  452. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  453. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  454. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +4 -5
  455. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  456. package/lib/cjs/tile/map/ImageryProviders/CoordinatesUtils.js +1 -2
  457. package/lib/cjs/tile/map/ImageryProviders/CoordinatesUtils.js.map +1 -1
  458. package/lib/cjs/tile/map/ImageryProviders/FeatureGraphicsRenderer.js +1 -1
  459. package/lib/cjs/tile/map/ImageryProviders/FeatureGraphicsRenderer.js.map +1 -1
  460. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  461. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  462. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  463. package/lib/cjs/tile/map/MapLayerTileTreeReference.js +2 -2
  464. package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
  465. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  466. package/lib/cjs/tile/map/MapTile.js +1 -1
  467. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  468. package/lib/cjs/tile/map/MapTileLoader.js +1 -1
  469. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  470. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  471. package/lib/cjs/tile/map/MapTileTree.js +2 -2
  472. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  473. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  474. package/lib/cjs/tile/map/MapTilingScheme.js +4 -0
  475. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  476. package/lib/cjs/tile/map/UrlUtils.js +1 -2
  477. package/lib/cjs/tile/map/UrlUtils.js.map +1 -1
  478. package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
  479. package/lib/cjs/tools/ClipViewTool.d.ts.map +1 -1
  480. package/lib/cjs/tools/MeasureTool.js +2 -2
  481. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  482. package/lib/cjs/tools/Tool.d.ts +1 -1
  483. package/lib/cjs/tools/Tool.d.ts.map +1 -1
  484. package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
  485. package/lib/cjs/tools/ViewTool.js +2 -2
  486. package/lib/cjs/tools/ViewTool.js.map +1 -1
  487. package/lib/cjs/workers/RegisterWorker.js +1 -2
  488. package/lib/cjs/workers/RegisterWorker.js.map +1 -1
  489. package/lib/esm/AccuDraw.d.ts.map +1 -1
  490. package/lib/esm/AccuDraw.js +0 -2
  491. package/lib/esm/AccuDraw.js.map +1 -1
  492. package/lib/esm/AccuSnap.d.ts.map +1 -1
  493. package/lib/esm/AccuSnap.js +17 -8
  494. package/lib/esm/AccuSnap.js.map +1 -1
  495. package/lib/esm/BingLocation.js +1 -1
  496. package/lib/esm/BingLocation.js.map +1 -1
  497. package/lib/esm/BriefcaseConnection.d.ts +0 -1
  498. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  499. package/lib/esm/BriefcaseConnection.js +2 -3
  500. package/lib/esm/BriefcaseConnection.js.map +1 -1
  501. package/lib/esm/BriefcaseTxns.d.ts.map +1 -1
  502. package/lib/esm/ChangeFlags.d.ts +1 -1
  503. package/lib/esm/ChangeFlags.d.ts.map +1 -1
  504. package/lib/esm/ChangeFlags.js.map +1 -1
  505. package/lib/esm/CheckpointConnection.js +1 -1
  506. package/lib/esm/CheckpointConnection.js.map +1 -1
  507. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  508. package/lib/esm/DisplayStyleState.js +6 -6
  509. package/lib/esm/DisplayStyleState.js.map +1 -1
  510. package/lib/esm/DrawingViewState.d.ts +8 -6
  511. package/lib/esm/DrawingViewState.d.ts.map +1 -1
  512. package/lib/esm/DrawingViewState.js +20 -10
  513. package/lib/esm/DrawingViewState.js.map +1 -1
  514. package/lib/esm/EnvironmentDecorations.js +1 -1
  515. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  516. package/lib/esm/GraphicalEditingScope.d.ts.map +1 -1
  517. package/lib/esm/HitDetail.d.ts +37 -5
  518. package/lib/esm/HitDetail.d.ts.map +1 -1
  519. package/lib/esm/HitDetail.js +12 -2
  520. package/lib/esm/HitDetail.js.map +1 -1
  521. package/lib/esm/IModelApp.d.ts.map +1 -1
  522. package/lib/esm/IModelApp.js +1 -2
  523. package/lib/esm/IModelApp.js.map +1 -1
  524. package/lib/esm/IModelConnection.d.ts +1 -0
  525. package/lib/esm/IModelConnection.d.ts.map +1 -1
  526. package/lib/esm/IModelConnection.js +9 -8
  527. package/lib/esm/IModelConnection.js.map +1 -1
  528. package/lib/esm/IpcApp.d.ts.map +1 -1
  529. package/lib/esm/IpcApp.js +8 -1
  530. package/lib/esm/IpcApp.js.map +1 -1
  531. package/lib/esm/ModelState.d.ts +0 -8
  532. package/lib/esm/ModelState.d.ts.map +1 -1
  533. package/lib/esm/ModelState.js +0 -8
  534. package/lib/esm/ModelState.js.map +1 -1
  535. package/lib/esm/NativeApp.d.ts +1 -1
  536. package/lib/esm/NativeApp.d.ts.map +1 -1
  537. package/lib/esm/NativeApp.js.map +1 -1
  538. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  539. package/lib/esm/NotificationManager.d.ts +2 -2
  540. package/lib/esm/NotificationManager.d.ts.map +1 -1
  541. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.d.ts.map +1 -1
  542. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js +1 -2
  543. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  544. package/lib/esm/RealityDataSourceContextShareImpl.d.ts.map +1 -1
  545. package/lib/esm/RealityDataSourceContextShareImpl.js +2 -3
  546. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
  547. package/lib/esm/RealityDataSourceTilesetUrlImpl.js +1 -1
  548. package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  549. package/lib/esm/SheetViewState.d.ts +4 -11
  550. package/lib/esm/SheetViewState.d.ts.map +1 -1
  551. package/lib/esm/SheetViewState.js +18 -12
  552. package/lib/esm/SheetViewState.js.map +1 -1
  553. package/lib/esm/SpatialViewState.d.ts +0 -1
  554. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  555. package/lib/esm/SpatialViewState.js +1 -2
  556. package/lib/esm/SpatialViewState.js.map +1 -1
  557. package/lib/esm/SubCategoriesCache.js +1 -1
  558. package/lib/esm/SubCategoriesCache.js.map +1 -1
  559. package/lib/esm/TentativePoint.js +1 -1
  560. package/lib/esm/TentativePoint.js.map +1 -1
  561. package/lib/esm/ViewCreator3d.js +1 -1
  562. package/lib/esm/ViewCreator3d.js.map +1 -1
  563. package/lib/esm/ViewState.d.ts +14 -1
  564. package/lib/esm/ViewState.d.ts.map +1 -1
  565. package/lib/esm/ViewState.js +4 -2
  566. package/lib/esm/ViewState.js.map +1 -1
  567. package/lib/esm/ViewingSpace.d.ts.map +1 -1
  568. package/lib/esm/ViewingSpace.js +3 -0
  569. package/lib/esm/ViewingSpace.js.map +1 -1
  570. package/lib/esm/Viewport.d.ts.map +1 -1
  571. package/lib/esm/Viewport.js +2 -4
  572. package/lib/esm/Viewport.js.map +1 -1
  573. package/lib/esm/common/WorkerProxy.d.ts +8 -4
  574. package/lib/esm/common/WorkerProxy.d.ts.map +1 -1
  575. package/lib/esm/common/WorkerProxy.js.map +1 -1
  576. package/lib/esm/common/gltf/GltfParser.js +6 -6
  577. package/lib/esm/common/gltf/GltfParser.js.map +1 -1
  578. package/lib/esm/common/gltf/GltfSchema.d.ts +1 -1
  579. package/lib/esm/common/gltf/GltfSchema.d.ts.map +1 -1
  580. package/lib/esm/common/gltf/GltfSchema.js.map +1 -1
  581. package/lib/esm/common/imdl/ImdlSchema.d.ts.map +1 -1
  582. package/lib/esm/common/imdl/ImdlSchema.js.map +1 -1
  583. package/lib/esm/common/imdl/ParseImdlDocument.d.ts.map +1 -1
  584. package/lib/esm/common/imdl/ParseImdlDocument.js +4 -5
  585. package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -1
  586. package/lib/esm/common/internal/render/DisplayParams.js.map +1 -1
  587. package/lib/esm/common/internal/render/GeometryList.d.ts +1 -1
  588. package/lib/esm/common/internal/render/MeshBuilder.js.map +1 -1
  589. package/lib/esm/common/internal/render/MeshBuilderMap.js.map +1 -1
  590. package/lib/esm/common/internal/render/MeshPrimitives.js.map +1 -1
  591. package/lib/esm/common/internal/render/OvrFlags.d.ts +4 -2
  592. package/lib/esm/common/internal/render/OvrFlags.d.ts.map +1 -1
  593. package/lib/esm/common/internal/render/OvrFlags.js.map +1 -1
  594. package/lib/esm/common/internal/render/VertexTable.d.ts.map +1 -1
  595. package/lib/esm/common/internal/render/VertexTable.js +3 -5
  596. package/lib/esm/common/internal/render/VertexTable.js.map +1 -1
  597. package/lib/esm/common/render/InstancedGraphicParams.js.map +1 -1
  598. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  599. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +1 -1
  600. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  601. package/lib/esm/quantity-formatting/LocalUnitFormatProvider.js +2 -2
  602. package/lib/esm/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
  603. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.d.ts.map +1 -1
  604. package/lib/esm/render/GraphicBranch.d.ts +12 -1
  605. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  606. package/lib/esm/render/GraphicBranch.js.map +1 -1
  607. package/lib/esm/render/MockRender.d.ts.map +1 -1
  608. package/lib/esm/render/Pixel.d.ts +14 -4
  609. package/lib/esm/render/Pixel.d.ts.map +1 -1
  610. package/lib/esm/render/Pixel.js +22 -5
  611. package/lib/esm/render/Pixel.js.map +1 -1
  612. package/lib/esm/render/RealityMeshGraphicParams.d.ts +1 -0
  613. package/lib/esm/render/RealityMeshGraphicParams.d.ts.map +1 -1
  614. package/lib/esm/render/RealityMeshGraphicParams.js.map +1 -1
  615. package/lib/esm/render/RenderMemory.d.ts +2 -0
  616. package/lib/esm/render/RenderMemory.d.ts.map +1 -1
  617. package/lib/esm/render/RenderMemory.js +2 -0
  618. package/lib/esm/render/RenderMemory.js.map +1 -1
  619. package/lib/esm/render/RenderPlan.d.ts +2 -1
  620. package/lib/esm/render/RenderPlan.d.ts.map +1 -1
  621. package/lib/esm/render/RenderPlan.js +2 -0
  622. package/lib/esm/render/RenderPlan.js.map +1 -1
  623. package/lib/esm/render/RenderSystem.d.ts +1 -1
  624. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  625. package/lib/esm/render/RenderSystem.js +8 -9
  626. package/lib/esm/render/RenderSystem.js.map +1 -1
  627. package/lib/esm/render/webgl/BatchUniforms.d.ts +4 -0
  628. package/lib/esm/render/webgl/BatchUniforms.d.ts.map +1 -1
  629. package/lib/esm/render/webgl/BatchUniforms.js +18 -0
  630. package/lib/esm/render/webgl/BatchUniforms.js.map +1 -1
  631. package/lib/esm/render/webgl/BranchState.d.ts +9 -0
  632. package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
  633. package/lib/esm/render/webgl/BranchState.js +6 -0
  634. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  635. package/lib/esm/render/webgl/BranchUniforms.d.ts +1 -0
  636. package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
  637. package/lib/esm/render/webgl/BranchUniforms.js +14 -1
  638. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  639. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  640. package/lib/esm/render/webgl/ContourUniforms.d.ts +22 -0
  641. package/lib/esm/render/webgl/ContourUniforms.d.ts.map +1 -0
  642. package/lib/esm/render/webgl/ContourUniforms.js +94 -0
  643. package/lib/esm/render/webgl/ContourUniforms.js.map +1 -0
  644. package/lib/esm/render/webgl/Contours.d.ts +34 -0
  645. package/lib/esm/render/webgl/Contours.d.ts.map +1 -0
  646. package/lib/esm/render/webgl/Contours.js +123 -0
  647. package/lib/esm/render/webgl/Contours.js.map +1 -0
  648. package/lib/esm/render/webgl/EdgeSettings.js +1 -1
  649. package/lib/esm/render/webgl/EdgeSettings.js.map +1 -1
  650. package/lib/esm/render/webgl/FeatureOverrides.d.ts +1 -0
  651. package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
  652. package/lib/esm/render/webgl/FeatureOverrides.js +46 -49
  653. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  654. package/lib/esm/render/webgl/GL.d.ts +2 -1
  655. package/lib/esm/render/webgl/GL.d.ts.map +1 -1
  656. package/lib/esm/render/webgl/GL.js +1 -0
  657. package/lib/esm/render/webgl/GL.js.map +1 -1
  658. package/lib/esm/render/webgl/Graphic.d.ts +12 -0
  659. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  660. package/lib/esm/render/webgl/Graphic.js +31 -0
  661. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  662. package/lib/esm/render/webgl/Material.js +2 -2
  663. package/lib/esm/render/webgl/Material.js.map +1 -1
  664. package/lib/esm/render/webgl/RealityMesh.js +1 -1
  665. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  666. package/lib/esm/render/webgl/RenderFlags.d.ts +2 -1
  667. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  668. package/lib/esm/render/webgl/RenderFlags.js +2 -0
  669. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  670. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  671. package/lib/esm/render/webgl/SceneCompositor.js +16 -4
  672. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  673. package/lib/esm/render/webgl/ShaderBuilder.d.ts +15 -13
  674. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  675. package/lib/esm/render/webgl/ShaderBuilder.js +18 -10
  676. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  677. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  678. package/lib/esm/render/webgl/ShaderProgram.js +26 -0
  679. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  680. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  681. package/lib/esm/render/webgl/System.js +7 -7
  682. package/lib/esm/render/webgl/System.js.map +1 -1
  683. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  684. package/lib/esm/render/webgl/Target.js +2 -1
  685. package/lib/esm/render/webgl/Target.js.map +1 -1
  686. package/lib/esm/render/webgl/TargetUniforms.d.ts +2 -0
  687. package/lib/esm/render/webgl/TargetUniforms.d.ts.map +1 -1
  688. package/lib/esm/render/webgl/TargetUniforms.js +2 -0
  689. package/lib/esm/render/webgl/TargetUniforms.js.map +1 -1
  690. package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
  691. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  692. package/lib/esm/render/webgl/Texture.js +2 -2
  693. package/lib/esm/render/webgl/Texture.js.map +1 -1
  694. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  695. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +1 -1
  696. package/lib/esm/render/webgl/glsl/Atmosphere.js +1 -1
  697. package/lib/esm/render/webgl/glsl/Blur.js +1 -1
  698. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +1 -1
  699. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +1 -1
  700. package/lib/esm/render/webgl/glsl/Clipping.js +1 -1
  701. package/lib/esm/render/webgl/glsl/Combine3Textures.js +1 -1
  702. package/lib/esm/render/webgl/glsl/CombineTextures.js +1 -1
  703. package/lib/esm/render/webgl/glsl/Composite.js +1 -1
  704. package/lib/esm/render/webgl/glsl/Contours.d.ts +4 -0
  705. package/lib/esm/render/webgl/glsl/Contours.d.ts.map +1 -0
  706. package/lib/esm/render/webgl/glsl/Contours.js +134 -0
  707. package/lib/esm/render/webgl/glsl/Contours.js.map +1 -0
  708. package/lib/esm/render/webgl/glsl/CopyColor.js +1 -1
  709. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +1 -1
  710. package/lib/esm/render/webgl/glsl/CopyStencil.js +5 -5
  711. package/lib/esm/render/webgl/glsl/EDL.js +4 -4
  712. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +1 -1
  713. package/lib/esm/render/webgl/glsl/Edge.js +1 -1
  714. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts +2 -1
  715. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  716. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +21 -15
  717. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  718. package/lib/esm/render/webgl/glsl/Fragment.js +9 -9
  719. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  720. package/lib/esm/render/webgl/glsl/PlanarClassification.js +4 -4
  721. package/lib/esm/render/webgl/glsl/PointCloud.js +1 -1
  722. package/lib/esm/render/webgl/glsl/RealityMesh.js +3 -3
  723. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
  724. package/lib/esm/render/webgl/glsl/SkyBox.js +1 -1
  725. package/lib/esm/render/webgl/glsl/SkySphere.js +1 -1
  726. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +1 -1
  727. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  728. package/lib/esm/render/webgl/glsl/Surface.js +5 -3
  729. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  730. package/lib/esm/render/webgl/glsl/Translucency.js +1 -1
  731. package/lib/esm/render/webgl/glsl/Wiremesh.js +1 -1
  732. package/lib/esm/request/Request.d.ts.map +1 -1
  733. package/lib/esm/request/Request.js.map +1 -1
  734. package/lib/esm/tile/ClassifierTileTree.js +1 -1
  735. package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
  736. package/lib/esm/tile/ContextShareProvider.js +2 -2
  737. package/lib/esm/tile/ContextShareProvider.js.map +1 -1
  738. package/lib/esm/tile/GltfReader.d.ts +1 -1
  739. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  740. package/lib/esm/tile/GltfReader.js +14 -12
  741. package/lib/esm/tile/GltfReader.js.map +1 -1
  742. package/lib/esm/tile/ImdlGraphicsCreator.js +4 -4
  743. package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -1
  744. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  745. package/lib/esm/tile/ImdlReader.js.map +1 -1
  746. package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
  747. package/lib/esm/tile/OrbitGtTileTree.js +1 -2
  748. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  749. package/lib/esm/tile/PntsReader.js +1 -1
  750. package/lib/esm/tile/PntsReader.js.map +1 -1
  751. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  752. package/lib/esm/tile/PrimaryTileTree.js +6 -6
  753. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  754. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  755. package/lib/esm/tile/RealityModelTileTree.js +1 -2
  756. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  757. package/lib/esm/tile/RealityTileDrawArgs.d.ts.map +1 -1
  758. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  759. package/lib/esm/tile/RealityTileLoader.js +1 -1
  760. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  761. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  762. package/lib/esm/tile/ThreeDTileFormatInterpreter.js +1 -1
  763. package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  764. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  765. package/lib/esm/tile/TileAdmin.js +1 -2
  766. package/lib/esm/tile/TileAdmin.js.map +1 -1
  767. package/lib/esm/tile/TileDrawArgs.d.ts +4 -0
  768. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  769. package/lib/esm/tile/TileDrawArgs.js +2 -0
  770. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  771. package/lib/esm/tile/TileRequest.js +1 -1
  772. package/lib/esm/tile/TileRequest.js.map +1 -1
  773. package/lib/esm/tile/TileRequestChannel.js +1 -1
  774. package/lib/esm/tile/TileRequestChannel.js.map +1 -1
  775. package/lib/esm/tile/TileStorage.js +1 -1
  776. package/lib/esm/tile/TileStorage.js.map +1 -1
  777. package/lib/esm/tile/TileTreeReference.d.ts +2 -0
  778. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  779. package/lib/esm/tile/TileTreeReference.js +3 -0
  780. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  781. package/lib/esm/tile/map/ArcGISTileMap.d.ts.map +1 -1
  782. package/lib/esm/tile/map/ArcGISTileMap.js +0 -1
  783. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
  784. package/lib/esm/tile/map/ArcGisUtilities.js +1 -1
  785. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  786. package/lib/esm/tile/map/BingElevation.js +3 -3
  787. package/lib/esm/tile/map/BingElevation.js.map +1 -1
  788. package/lib/esm/tile/map/CesiumTerrainProvider.js +3 -3
  789. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  790. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +1 -1
  791. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  792. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  793. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +4 -5
  794. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  795. package/lib/esm/tile/map/ImageryProviders/FeatureGraphicsRenderer.js +1 -1
  796. package/lib/esm/tile/map/ImageryProviders/FeatureGraphicsRenderer.js.map +1 -1
  797. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  798. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  799. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  800. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  801. package/lib/esm/tile/map/MapTile.js +1 -1
  802. package/lib/esm/tile/map/MapTile.js.map +1 -1
  803. package/lib/esm/tile/map/MapTileLoader.js +1 -1
  804. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  805. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  806. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  807. package/lib/esm/tile/map/MapTilingScheme.js +4 -0
  808. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  809. package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
  810. package/lib/esm/tools/ClipViewTool.d.ts.map +1 -1
  811. package/lib/esm/tools/MeasureTool.js +2 -2
  812. package/lib/esm/tools/MeasureTool.js.map +1 -1
  813. package/lib/esm/tools/Tool.d.ts +1 -1
  814. package/lib/esm/tools/Tool.d.ts.map +1 -1
  815. package/lib/esm/tools/ViewTool.d.ts.map +1 -1
  816. package/lib/esm/tools/ViewTool.js +2 -2
  817. package/lib/esm/tools/ViewTool.js.map +1 -1
  818. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  819. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  820. package/package.json +30 -36
@@ -7,7 +7,12 @@
7
7
  * @module WebGL
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.computeLinearDepth = exports.assignFragColor = exports.addFragColorWithPreMultipliedAlpha = exports.addAltPickBufferOutputs = exports.addPickBufferOutputs = exports.addWhiteOnWhiteReversal = exports.addWindowToTexCoords = void 0;
10
+ exports.computeLinearDepth = exports.assignFragColor = void 0;
11
+ exports.addWindowToTexCoords = addWindowToTexCoords;
12
+ exports.addWhiteOnWhiteReversal = addWhiteOnWhiteReversal;
13
+ exports.addPickBufferOutputs = addPickBufferOutputs;
14
+ exports.addAltPickBufferOutputs = addAltPickBufferOutputs;
15
+ exports.addFragColorWithPreMultipliedAlpha = addFragColorWithPreMultipliedAlpha;
11
16
  const ShaderBuilder_1 = require("../ShaderBuilder");
12
17
  const Decode_1 = require("./Decode");
13
18
  const RenderPass_1 = require("./RenderPass");
@@ -21,7 +26,6 @@ function addWindowToTexCoords(frag) {
21
26
  });
22
27
  });
23
28
  }
24
- exports.addWindowToTexCoords = addWindowToTexCoords;
25
29
  /** @internal */
26
30
  function addWhiteOnWhiteReversal(frag) {
27
31
  frag.addUniform("u_reverseWhiteOnWhite", 0 /* VariableType.Boolean */, (prog) => {
@@ -33,7 +37,6 @@ function addWhiteOnWhiteReversal(frag) {
33
37
  });
34
38
  frag.set(9 /* FragmentShaderComponent.ReverseWhiteOnWhite */, reverseWhiteOnWhite);
35
39
  }
36
- exports.addWhiteOnWhiteReversal = addWhiteOnWhiteReversal;
37
40
  const reverseWhiteOnWhite = `
38
41
  const vec3 white = vec3(1.0);
39
42
  const vec3 epsilon = vec3(0.0001);
@@ -73,7 +76,7 @@ function addPickBufferOutputs(frag) {
73
76
  frag.addFunction(Decode_1.encodeDepthRgb);
74
77
  frag.addFunction(exports.computeLinearDepth);
75
78
  const prelude = new ShaderBuilder_1.SourceBuilder();
76
- const overrideOrder = frag.get(20 /* FragmentShaderComponent.OverrideRenderOrder */);
79
+ const overrideOrder = frag.get(21 /* FragmentShaderComponent.OverrideRenderOrder */);
77
80
  if (overrideOrder) {
78
81
  frag.addFunction("float overrideRenderOrder(float currentOrder)", overrideOrder);
79
82
  prelude.addline(" float renderOrder = overrideRenderOrder(u_renderOrder);");
@@ -82,48 +85,45 @@ function addPickBufferOutputs(frag) {
82
85
  prelude.addline(" float renderOrder = u_renderOrder;");
83
86
  }
84
87
  prelude.add(computePickBufferOutputs);
85
- const overrideColor = frag.get(19 /* FragmentShaderComponent.OverrideColor */);
88
+ const overrideColor = frag.get(20 /* FragmentShaderComponent.OverrideColor */);
86
89
  if (undefined !== overrideColor) {
87
90
  frag.addFunction("vec4 overrideColor(vec4 currentColor)", overrideColor);
88
91
  prelude.addline(" output0 = overrideColor(output0);");
89
92
  }
90
- const overrideFeatureId = frag.get(17 /* FragmentShaderComponent.OverrideFeatureId */);
93
+ const overrideFeatureId = frag.get(18 /* FragmentShaderComponent.OverrideFeatureId */);
91
94
  if (undefined !== overrideFeatureId) {
92
95
  frag.addFunction("vec4 overrideFeatureId(vec4 currentId)", overrideFeatureId);
93
96
  prelude.addline(reassignFeatureId);
94
97
  }
95
98
  (0, RenderPass_1.addRenderPass)(frag);
96
99
  frag.addDrawBuffersExtension(3);
97
- frag.set(16 /* FragmentShaderComponent.AssignFragData */, prelude.source + assignPickBufferOutputsMRT);
100
+ frag.set(17 /* FragmentShaderComponent.AssignFragData */, prelude.source + assignPickBufferOutputsMRT);
98
101
  }
99
- exports.addPickBufferOutputs = addPickBufferOutputs;
100
102
  /** @internal */
101
103
  function addAltPickBufferOutputs(frag) {
102
104
  const prelude = new ShaderBuilder_1.SourceBuilder();
103
105
  prelude.add(computeAltPickBufferOutputs);
104
- const overrideColor = frag.get(19 /* FragmentShaderComponent.OverrideColor */);
106
+ const overrideColor = frag.get(20 /* FragmentShaderComponent.OverrideColor */);
105
107
  if (undefined !== overrideColor) {
106
108
  frag.addFunction("vec4 overrideColor(vec4 currentColor)", overrideColor);
107
109
  prelude.addline(" output0 = overrideColor(output0);");
108
110
  }
109
111
  (0, RenderPass_1.addRenderPass)(frag);
110
112
  frag.addDrawBuffersExtension(3);
111
- frag.set(16 /* FragmentShaderComponent.AssignFragData */, prelude.source + assignPickBufferOutputsMRT);
113
+ frag.set(17 /* FragmentShaderComponent.AssignFragData */, prelude.source + assignPickBufferOutputsMRT);
112
114
  }
113
- exports.addAltPickBufferOutputs = addAltPickBufferOutputs;
114
115
  /** @internal */
115
116
  function addFragColorWithPreMultipliedAlpha(frag) {
116
117
  (0, RenderPass_1.addRenderPass)(frag);
117
- const overrideColor = frag.get(19 /* FragmentShaderComponent.OverrideColor */);
118
+ const overrideColor = frag.get(20 /* FragmentShaderComponent.OverrideColor */);
118
119
  if (undefined === overrideColor) {
119
- frag.set(16 /* FragmentShaderComponent.AssignFragData */, assignFragColorWithPreMultipliedAlpha);
120
+ frag.set(17 /* FragmentShaderComponent.AssignFragData */, assignFragColorWithPreMultipliedAlpha);
120
121
  }
121
122
  else {
122
123
  frag.addFunction("vec4 overrideColor(vec4 currentColor)", overrideColor);
123
- frag.set(16 /* FragmentShaderComponent.AssignFragData */, overrideAndAssignFragColorWithPreMultipliedAlpha);
124
+ frag.set(17 /* FragmentShaderComponent.AssignFragData */, overrideAndAssignFragColorWithPreMultipliedAlpha);
124
125
  }
125
126
  }
126
- exports.addFragColorWithPreMultipliedAlpha = addFragColorWithPreMultipliedAlpha;
127
127
  /** @internal */
128
128
  exports.assignFragColor = "FragColor = baseColor;";
129
129
  const assignFragColorWithPreMultipliedAlpha = `${multiplyAlpha}
@@ -1 +1 @@
1
- {"version":3,"file":"Fragment.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Fragment.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 { FragmentShaderBuilder, FragmentShaderComponent, SourceBuilder, VariableType } from \"../ShaderBuilder\";\r\nimport { encodeDepthRgb } from \"./Decode\";\r\nimport { addRenderPass } from \"./RenderPass\";\r\n\r\n/** @internal */\r\nexport function addWindowToTexCoords(frag: FragmentShaderBuilder) {\r\n const windowCoordsToTexCoords = `\\nvec2 windowCoordsToTexCoords(vec2 wc) { return wc * u_invScreenSize; }\\n`;\r\n frag.addFunction(windowCoordsToTexCoords);\r\n frag.addUniform(\"u_invScreenSize\", VariableType.Vec2, (prog) => {\r\n prog.addProgramUniform(\"u_invScreenSize\", (uniform, params) => {\r\n params.target.uniforms.viewRect.bindInverseDimensions(uniform);\r\n });\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function addWhiteOnWhiteReversal(frag: FragmentShaderBuilder) {\r\n frag.addUniform(\"u_reverseWhiteOnWhite\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"u_reverseWhiteOnWhite\", (uniform, params) => {\r\n const wantWoW = params.target.uniforms.style.wantWoWReversal;\r\n const doReversal = (wantWoW && params.geometry.wantWoWReversal(params.programParams)) ? 1 : 0;\r\n uniform.setUniform1i(doReversal);\r\n });\r\n });\r\n frag.set(FragmentShaderComponent.ReverseWhiteOnWhite, reverseWhiteOnWhite);\r\n}\r\n\r\nconst reverseWhiteOnWhite = `\r\n const vec3 white = vec3(1.0);\r\n const vec3 epsilon = vec3(0.0001);\r\n vec3 color = baseColor.rgb;\r\n vec3 delta = (color + epsilon) - white;\r\n vec4 wowColor = vec4(baseColor.rgb * vec3(float(delta.x <= 0.0 || delta.y <= 0.0 || delta.z <= 0.0)), baseColor.a); // set to black if almost white\r\n return u_reverseWhiteOnWhite ? wowColor : baseColor;\r\n`;\r\n\r\nconst multiplyAlpha = `\r\n if (u_renderPass >= kRenderPass_OpaqueLinear && u_renderPass <= kRenderPass_OpaqueGeneral)\r\n baseColor.a = 1.0;\r\n else\r\n baseColor = vec4(baseColor.rgb * baseColor.a, baseColor.a);\r\n`;\r\n\r\nconst computePickBufferOutputs = `${multiplyAlpha}\r\n vec4 output0 = baseColor;\r\n\r\n // Fix interpolation errors despite all vertices sending exact same feature_id...\r\n ivec4 feature_id_i = ivec4(feature_id * 255.0 + 0.5);\r\n vec4 output1 = vec4(feature_id_i) / 255.0;\r\n float linearDepth = computeLinearDepth(v_eyeSpace.z);\r\n vec4 output2 = vec4(renderOrder * 0.0625, encodeDepthRgb(linearDepth)); // near=1, far=0\r\n`;\r\n\r\nconst computeAltPickBufferOutputs = `${multiplyAlpha}\r\n vec4 output0 = baseColor;\r\n vec4 output1 = vec4(0.0);\r\n vec4 output2 = vec4(0.0);\r\n`;\r\n\r\nconst assignPickBufferOutputsMRT = `\r\n FragColor0 = output0;\r\n FragColor1 = output1;\r\n FragColor2 = output2;\r\n`;\r\n\r\nconst reassignFeatureId = \" output1 = overrideFeatureId(output1);\";\r\n\r\n/** @internal */\r\nexport function addPickBufferOutputs(frag: FragmentShaderBuilder): void {\r\n frag.addFunction(encodeDepthRgb);\r\n frag.addFunction(computeLinearDepth);\r\n\r\n const prelude = new SourceBuilder();\r\n const overrideOrder = frag.get(FragmentShaderComponent.OverrideRenderOrder);\r\n if (overrideOrder) {\r\n frag.addFunction(\"float overrideRenderOrder(float currentOrder)\", overrideOrder);\r\n prelude.addline(\" float renderOrder = overrideRenderOrder(u_renderOrder);\");\r\n } else {\r\n prelude.addline(\" float renderOrder = u_renderOrder;\");\r\n }\r\n\r\n prelude.add(computePickBufferOutputs);\r\n\r\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\r\n if (undefined !== overrideColor) {\r\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\r\n prelude.addline(\" output0 = overrideColor(output0);\");\r\n }\r\n\r\n const overrideFeatureId = frag.get(FragmentShaderComponent.OverrideFeatureId);\r\n if (undefined !== overrideFeatureId) {\r\n frag.addFunction(\"vec4 overrideFeatureId(vec4 currentId)\", overrideFeatureId);\r\n prelude.addline(reassignFeatureId);\r\n }\r\n\r\n addRenderPass(frag);\r\n frag.addDrawBuffersExtension(3);\r\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMRT);\r\n}\r\n\r\n/** @internal */\r\nexport function addAltPickBufferOutputs(frag: FragmentShaderBuilder): void {\r\n const prelude = new SourceBuilder();\r\n prelude.add(computeAltPickBufferOutputs);\r\n\r\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\r\n if (undefined !== overrideColor) {\r\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\r\n prelude.addline(\" output0 = overrideColor(output0);\");\r\n }\r\n\r\n addRenderPass(frag);\r\n frag.addDrawBuffersExtension(3);\r\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMRT);\r\n}\r\n\r\n/** @internal */\r\nexport function addFragColorWithPreMultipliedAlpha(frag: FragmentShaderBuilder): void {\r\n addRenderPass(frag);\r\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\r\n if (undefined === overrideColor) {\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColorWithPreMultipliedAlpha);\r\n } else {\r\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\r\n frag.set(FragmentShaderComponent.AssignFragData, overrideAndAssignFragColorWithPreMultipliedAlpha);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport const assignFragColor = \"FragColor = baseColor;\";\r\n\r\nconst assignFragColorWithPreMultipliedAlpha = `${multiplyAlpha}\r\n FragColor = baseColor;\r\n`;\r\n\r\nconst overrideAndAssignFragColorWithPreMultipliedAlpha = `${multiplyAlpha}\r\n vec4 fragColor = overrideColor(baseColor);\r\n FragColor = fragColor;\r\n`;\r\n\r\n/** @internal */\r\nexport const computeLinearDepth = `\r\nfloat computeLinearDepth(float eyeSpaceZ) {\r\n float eyeZ = -eyeSpaceZ;\r\n float near = u_frustum.x, far = u_frustum.y;\r\n float depthRange = far - near;\r\n float linearDepth = (eyeZ - near) / depthRange;\r\n return 1.0 - linearDepth;\r\n}\r\n`;\r\n"]}
1
+ {"version":3,"file":"Fragment.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Fragment.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 { FragmentShaderBuilder, FragmentShaderComponent, SourceBuilder, VariableType } from \"../ShaderBuilder\";\r\nimport { encodeDepthRgb } from \"./Decode\";\r\nimport { addRenderPass } from \"./RenderPass\";\r\n\r\n/** @internal */\r\nexport function addWindowToTexCoords(frag: FragmentShaderBuilder) {\r\n const windowCoordsToTexCoords = `\\nvec2 windowCoordsToTexCoords(vec2 wc) { return wc * u_invScreenSize; }\\n`;\r\n frag.addFunction(windowCoordsToTexCoords);\r\n frag.addUniform(\"u_invScreenSize\", VariableType.Vec2, (prog) => {\r\n prog.addProgramUniform(\"u_invScreenSize\", (uniform, params) => {\r\n params.target.uniforms.viewRect.bindInverseDimensions(uniform);\r\n });\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function addWhiteOnWhiteReversal(frag: FragmentShaderBuilder) {\r\n frag.addUniform(\"u_reverseWhiteOnWhite\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"u_reverseWhiteOnWhite\", (uniform, params) => {\r\n const wantWoW = params.target.uniforms.style.wantWoWReversal;\r\n const doReversal = (wantWoW && params.geometry.wantWoWReversal(params.programParams)) ? 1 : 0;\r\n uniform.setUniform1i(doReversal);\r\n });\r\n });\r\n frag.set(FragmentShaderComponent.ReverseWhiteOnWhite, reverseWhiteOnWhite);\r\n}\r\n\r\nconst reverseWhiteOnWhite = `\r\n const vec3 white = vec3(1.0);\r\n const vec3 epsilon = vec3(0.0001);\r\n vec3 color = baseColor.rgb;\r\n vec3 delta = (color + epsilon) - white;\r\n vec4 wowColor = vec4(baseColor.rgb * vec3(float(delta.x <= 0.0 || delta.y <= 0.0 || delta.z <= 0.0)), baseColor.a); // set to black if almost white\r\n return u_reverseWhiteOnWhite ? wowColor : baseColor;\r\n`;\r\n\r\nconst multiplyAlpha = `\r\n if (u_renderPass >= kRenderPass_OpaqueLinear && u_renderPass <= kRenderPass_OpaqueGeneral)\r\n baseColor.a = 1.0;\r\n else\r\n baseColor = vec4(baseColor.rgb * baseColor.a, baseColor.a);\r\n`;\r\n\r\nconst computePickBufferOutputs = `${multiplyAlpha}\r\n vec4 output0 = baseColor;\r\n\r\n // Fix interpolation errors despite all vertices sending exact same feature_id...\r\n ivec4 feature_id_i = ivec4(feature_id * 255.0 + 0.5);\r\n vec4 output1 = vec4(feature_id_i) / 255.0;\r\n float linearDepth = computeLinearDepth(v_eyeSpace.z);\r\n vec4 output2 = vec4(renderOrder * 0.0625, encodeDepthRgb(linearDepth)); // near=1, far=0\r\n`;\r\n\r\nconst computeAltPickBufferOutputs = `${multiplyAlpha}\r\n vec4 output0 = baseColor;\r\n vec4 output1 = vec4(0.0);\r\n vec4 output2 = vec4(0.0);\r\n`;\r\n\r\nconst assignPickBufferOutputsMRT = `\r\n FragColor0 = output0;\r\n FragColor1 = output1;\r\n FragColor2 = output2;\r\n`;\r\n\r\nconst reassignFeatureId = \" output1 = overrideFeatureId(output1);\";\r\n\r\n/** @internal */\r\nexport function addPickBufferOutputs(frag: FragmentShaderBuilder): void {\r\n frag.addFunction(encodeDepthRgb);\r\n frag.addFunction(computeLinearDepth);\r\n\r\n const prelude = new SourceBuilder();\r\n const overrideOrder = frag.get(FragmentShaderComponent.OverrideRenderOrder);\r\n if (overrideOrder) {\r\n frag.addFunction(\"float overrideRenderOrder(float currentOrder)\", overrideOrder);\r\n prelude.addline(\" float renderOrder = overrideRenderOrder(u_renderOrder);\");\r\n } else {\r\n prelude.addline(\" float renderOrder = u_renderOrder;\");\r\n }\r\n\r\n prelude.add(computePickBufferOutputs);\r\n\r\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\r\n if (undefined !== overrideColor) {\r\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\r\n prelude.addline(\" output0 = overrideColor(output0);\");\r\n }\r\n\r\n const overrideFeatureId = frag.get(FragmentShaderComponent.OverrideFeatureId);\r\n if (undefined !== overrideFeatureId) {\r\n frag.addFunction(\"vec4 overrideFeatureId(vec4 currentId)\", overrideFeatureId);\r\n prelude.addline(reassignFeatureId);\r\n }\r\n\r\n addRenderPass(frag);\r\n frag.addDrawBuffersExtension(3);\r\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMRT);\r\n}\r\n\r\n/** @internal */\r\nexport function addAltPickBufferOutputs(frag: FragmentShaderBuilder): void {\r\n const prelude = new SourceBuilder();\r\n prelude.add(computeAltPickBufferOutputs);\r\n\r\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\r\n if (undefined !== overrideColor) {\r\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\r\n prelude.addline(\" output0 = overrideColor(output0);\");\r\n }\r\n\r\n addRenderPass(frag);\r\n frag.addDrawBuffersExtension(3);\r\n frag.set(FragmentShaderComponent.AssignFragData, prelude.source + assignPickBufferOutputsMRT);\r\n}\r\n\r\n/** @internal */\r\nexport function addFragColorWithPreMultipliedAlpha(frag: FragmentShaderBuilder): void {\r\n addRenderPass(frag);\r\n const overrideColor = frag.get(FragmentShaderComponent.OverrideColor);\r\n if (undefined === overrideColor) {\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColorWithPreMultipliedAlpha);\r\n } else {\r\n frag.addFunction(\"vec4 overrideColor(vec4 currentColor)\", overrideColor);\r\n frag.set(FragmentShaderComponent.AssignFragData, overrideAndAssignFragColorWithPreMultipliedAlpha);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport const assignFragColor = \"FragColor = baseColor;\";\r\n\r\nconst assignFragColorWithPreMultipliedAlpha = `${multiplyAlpha}\r\n FragColor = baseColor;\r\n`;\r\n\r\nconst overrideAndAssignFragColorWithPreMultipliedAlpha = `${multiplyAlpha}\r\n vec4 fragColor = overrideColor(baseColor);\r\n FragColor = fragColor;\r\n`;\r\n\r\n/** @internal */\r\nexport const computeLinearDepth = `\r\nfloat computeLinearDepth(float eyeSpaceZ) {\r\n float eyeZ = -eyeSpaceZ;\r\n float near = u_frustum.x, far = u_frustum.y;\r\n float depthRange = far - near;\r\n float linearDepth = (eyeZ - near) / depthRange;\r\n return 1.0 - linearDepth;\r\n}\r\n`;\r\n"]}
@@ -7,7 +7,9 @@
7
7
  * @module WebGL
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.addInstanceColor = exports.addInstanceOverrides = exports.addInstancedModelMatrixRTC = void 0;
10
+ exports.addInstancedModelMatrixRTC = addInstancedModelMatrixRTC;
11
+ exports.addInstanceOverrides = addInstanceOverrides;
12
+ exports.addInstanceColor = addInstanceColor;
11
13
  const core_bentley_1 = require("@itwin/core-bentley");
12
14
  const Common_1 = require("./Common");
13
15
  const FeatureSymbology_1 = require("./FeatureSymbology");
@@ -67,7 +69,6 @@ function addInstancedModelMatrixRTC(vert) {
67
69
  vert.addGlobal("g_modelMatrixRTC", 7 /* VariableType.Mat4 */);
68
70
  vert.addInitializer(computeInstancedModelMatrixRTC);
69
71
  }
70
- exports.addInstancedModelMatrixRTC = addInstancedModelMatrixRTC;
71
72
  /** @internal */
72
73
  function addInstanceOverrides(vert) {
73
74
  if (undefined !== vert.find("a_instanceOverrides"))
@@ -76,7 +77,6 @@ function addInstanceOverrides(vert) {
76
77
  (0, Common_1.addExtractNthBit)(vert);
77
78
  vert.addFunction(extractInstanceBit);
78
79
  }
79
- exports.addInstanceOverrides = addInstanceOverrides;
80
80
  /** @internal */
81
81
  function addInstanceColor(vert) {
82
82
  addInstanceOverrides(vert);
@@ -89,5 +89,4 @@ function addInstanceColor(vert) {
89
89
  });
90
90
  });
91
91
  }
92
- exports.addInstanceColor = addInstanceColor;
93
92
  //# sourceMappingURL=Instancing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Instancing.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Instancing.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 { VariableType, VertexShaderBuilder } from \"../ShaderBuilder\";\r\nimport { UniformHandle } from \"../UniformHandle\";\r\nimport { Matrix4 } from \"../Matrix\";\r\nimport { addExtractNthBit } from \"./Common\";\r\nimport { addOvrFlagConstants } from \"./FeatureSymbology\";\r\n\r\nconst extractInstanceBit = `\r\nfloat extractInstanceBit(uint flag) { return extractNthBit(a_instanceOverrides.r, flag); }\r\n`;\r\n\r\nconst computeInstancedModelMatrixRTC = `\r\n if (g_isAreaPattern) {\r\n vec2 spacing = u_patternParams.yz;\r\n float scale = u_patternParams.w;\r\n\r\n float x = u_patternOrigin.x + a_patternX * spacing.x;\r\n float y = u_patternOrigin.y + a_patternY * spacing.y;\r\n vec4 translation = vec4(x / scale, y / scale, 0.0, 1.0);\r\n mat4 symbolTrans = u_patOrg;\r\n symbolTrans[3] = symbolTrans * translation;\r\n\r\n g_modelMatrixRTC = u_patLocalToModel * symbolTrans * u_patSymbolToLocal;\r\n } else {\r\n g_modelMatrixRTC = mat4(\r\n a_instanceMatrixRow0.x, a_instanceMatrixRow1.x, a_instanceMatrixRow2.x, 0.0,\r\n a_instanceMatrixRow0.y, a_instanceMatrixRow1.y, a_instanceMatrixRow2.y, 0.0,\r\n a_instanceMatrixRow0.z, a_instanceMatrixRow1.z, a_instanceMatrixRow2.z, 0.0,\r\n a_instanceMatrixRow0.w, a_instanceMatrixRow1.w, a_instanceMatrixRow2.w, 1.0);\r\n }\r\n`;\r\nfunction setMatrix(uniform: UniformHandle, matrix: Matrix4 | undefined): void {\r\n if (matrix)\r\n uniform.setMatrix4(matrix);\r\n}\r\n\r\nfunction addPatternTransforms(vert: VertexShaderBuilder): void {\r\n vert.addUniform(\"u_patOrg\", VariableType.Mat4, (prog) =>\r\n prog.addGraphicUniform(\"u_patOrg\", (uniform, params) =>\r\n setMatrix(uniform, params.geometry.asInstanced?.patternTransforms?.orgTransform)));\r\n\r\n vert.addUniform(\"u_patLocalToModel\", VariableType.Mat4, (prog) =>\r\n prog.addGraphicUniform(\"u_patLocalToModel\", (uniform, params) =>\r\n setMatrix(uniform, params.geometry.asInstanced?.patternTransforms?.localToModel)));\r\n\r\n vert.addUniform(\"u_patSymbolToLocal\", VariableType.Mat4, (prog) =>\r\n prog.addGraphicUniform(\"u_patSymbolToLocal\", (uniform, params) =>\r\n setMatrix(uniform, params.geometry.asInstanced?.patternTransforms?.symbolToLocal)));\r\n\r\n vert.addUniform(\"u_patternOrigin\", VariableType.Vec2, (prog) => {\r\n prog.addGraphicUniform(\"u_patternOrigin\", (uniform, params) => {\r\n const origin = params.geometry.asInstanced?.patternTransforms?.origin;\r\n if (origin)\r\n uniform.setUniform2fv(origin);\r\n });\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function addInstancedModelMatrixRTC(vert: VertexShaderBuilder) {\r\n assert(vert.usesInstancedGeometry);\r\n\r\n vert.addUniform(\"u_patternParams\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_patternParams\", (uniform, params) => {\r\n const inst = params.geometry.asInstanced;\r\n assert(undefined !== inst);\r\n if (inst)\r\n uniform.setUniform4fv(inst.patternParams);\r\n });\r\n });\r\n\r\n addPatternTransforms(vert);\r\n\r\n vert.addGlobal(\"g_isAreaPattern\", VariableType.Boolean);\r\n vert.addInitializer(\"g_isAreaPattern = 0.0 != u_patternParams.x;\");\r\n\r\n vert.addGlobal(\"g_modelMatrixRTC\", VariableType.Mat4);\r\n vert.addInitializer(computeInstancedModelMatrixRTC);\r\n}\r\n\r\n/** @internal */\r\nexport function addInstanceOverrides(vert: VertexShaderBuilder): void {\r\n if (undefined !== vert.find(\"a_instanceOverrides\"))\r\n return;\r\n\r\n addOvrFlagConstants(vert);\r\n\r\n addExtractNthBit(vert);\r\n vert.addFunction(extractInstanceBit);\r\n}\r\n\r\n/** @internal */\r\nexport function addInstanceColor(vert: VertexShaderBuilder): void {\r\n addInstanceOverrides(vert);\r\n\r\n vert.addUniform(\"u_applyInstanceColor\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_applyInstanceColor\", (uniform, params) => {\r\n let val = 1.0;\r\n if (params.geometry.isEdge && undefined !== params.target.currentEdgeSettings.getColor(params.target.currentViewFlags))\r\n val = 0.0;\r\n\r\n uniform.setUniform1f(val);\r\n });\r\n });\r\n}\r\n"]}
1
+ {"version":3,"file":"Instancing.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Instancing.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 { VariableType, VertexShaderBuilder } from \"../ShaderBuilder\";\r\nimport { UniformHandle } from \"../UniformHandle\";\r\nimport { Matrix4 } from \"../Matrix\";\r\nimport { addExtractNthBit } from \"./Common\";\r\nimport { addOvrFlagConstants } from \"./FeatureSymbology\";\r\n\r\nconst extractInstanceBit = `\r\nfloat extractInstanceBit(uint flag) { return extractNthBit(a_instanceOverrides.r, flag); }\r\n`;\r\n\r\nconst computeInstancedModelMatrixRTC = `\r\n if (g_isAreaPattern) {\r\n vec2 spacing = u_patternParams.yz;\r\n float scale = u_patternParams.w;\r\n\r\n float x = u_patternOrigin.x + a_patternX * spacing.x;\r\n float y = u_patternOrigin.y + a_patternY * spacing.y;\r\n vec4 translation = vec4(x / scale, y / scale, 0.0, 1.0);\r\n mat4 symbolTrans = u_patOrg;\r\n symbolTrans[3] = symbolTrans * translation;\r\n\r\n g_modelMatrixRTC = u_patLocalToModel * symbolTrans * u_patSymbolToLocal;\r\n } else {\r\n g_modelMatrixRTC = mat4(\r\n a_instanceMatrixRow0.x, a_instanceMatrixRow1.x, a_instanceMatrixRow2.x, 0.0,\r\n a_instanceMatrixRow0.y, a_instanceMatrixRow1.y, a_instanceMatrixRow2.y, 0.0,\r\n a_instanceMatrixRow0.z, a_instanceMatrixRow1.z, a_instanceMatrixRow2.z, 0.0,\r\n a_instanceMatrixRow0.w, a_instanceMatrixRow1.w, a_instanceMatrixRow2.w, 1.0);\r\n }\r\n`;\r\nfunction setMatrix(uniform: UniformHandle, matrix: Matrix4 | undefined): void {\r\n if (matrix)\r\n uniform.setMatrix4(matrix);\r\n}\r\n\r\nfunction addPatternTransforms(vert: VertexShaderBuilder): void {\r\n vert.addUniform(\"u_patOrg\", VariableType.Mat4, (prog) =>\r\n prog.addGraphicUniform(\"u_patOrg\", (uniform, params) =>\r\n setMatrix(uniform, params.geometry.asInstanced?.patternTransforms?.orgTransform)));\r\n\r\n vert.addUniform(\"u_patLocalToModel\", VariableType.Mat4, (prog) =>\r\n prog.addGraphicUniform(\"u_patLocalToModel\", (uniform, params) =>\r\n setMatrix(uniform, params.geometry.asInstanced?.patternTransforms?.localToModel)));\r\n\r\n vert.addUniform(\"u_patSymbolToLocal\", VariableType.Mat4, (prog) =>\r\n prog.addGraphicUniform(\"u_patSymbolToLocal\", (uniform, params) =>\r\n setMatrix(uniform, params.geometry.asInstanced?.patternTransforms?.symbolToLocal)));\r\n\r\n vert.addUniform(\"u_patternOrigin\", VariableType.Vec2, (prog) => {\r\n prog.addGraphicUniform(\"u_patternOrigin\", (uniform, params) => {\r\n const origin = params.geometry.asInstanced?.patternTransforms?.origin;\r\n if (origin)\r\n uniform.setUniform2fv(origin);\r\n });\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function addInstancedModelMatrixRTC(vert: VertexShaderBuilder) {\r\n assert(vert.usesInstancedGeometry);\r\n\r\n vert.addUniform(\"u_patternParams\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_patternParams\", (uniform, params) => {\r\n const inst = params.geometry.asInstanced;\r\n assert(undefined !== inst);\r\n if (inst)\r\n uniform.setUniform4fv(inst.patternParams);\r\n });\r\n });\r\n\r\n addPatternTransforms(vert);\r\n\r\n vert.addGlobal(\"g_isAreaPattern\", VariableType.Boolean);\r\n vert.addInitializer(\"g_isAreaPattern = 0.0 != u_patternParams.x;\");\r\n\r\n vert.addGlobal(\"g_modelMatrixRTC\", VariableType.Mat4);\r\n vert.addInitializer(computeInstancedModelMatrixRTC);\r\n}\r\n\r\n/** @internal */\r\nexport function addInstanceOverrides(vert: VertexShaderBuilder): void {\r\n if (undefined !== vert.find(\"a_instanceOverrides\"))\r\n return;\r\n\r\n addOvrFlagConstants(vert);\r\n\r\n addExtractNthBit(vert);\r\n vert.addFunction(extractInstanceBit);\r\n}\r\n\r\n/** @internal */\r\nexport function addInstanceColor(vert: VertexShaderBuilder): void {\r\n addInstanceOverrides(vert);\r\n\r\n vert.addUniform(\"u_applyInstanceColor\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_applyInstanceColor\", (uniform, params) => {\r\n let val = 1.0;\r\n if (params.geometry.isEdge && undefined !== params.target.currentEdgeSettings.getColor(params.target.currentViewFlags))\r\n val = 0.0;\r\n\r\n uniform.setUniform1f(val);\r\n });\r\n });\r\n}\r\n"]}
@@ -7,7 +7,7 @@
7
7
  * @module WebGL
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.addLighting = void 0;
10
+ exports.addLighting = addLighting;
11
11
  const Common_1 = require("./Common");
12
12
  const computeDirectionalLighting = `
13
13
  void computeDirectionalLight (inout float diffuse, inout float specular, vec3 normal, vec3 toEye, vec3 lightDir, float lightIntensity, float specularExponent) {
@@ -128,5 +128,4 @@ function addLighting(builder) {
128
128
  });
129
129
  });
130
130
  }
131
- exports.addLighting = addLighting;
132
131
  //# sourceMappingURL=Lighting.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Lighting.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Lighting.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAGH,qCAAsC;AAEtC,MAAM,0BAA0B,GAAG;;;;;;;;CAQlC,CAAC;AAEF,oCAAoC;AACpC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoFrB,CAAC;AAEF;;GAEG;AACH,SAAgB,WAAW,CAAC,OAAuB;IACjD,IAAA,mBAAU,EAAC,OAAO,CAAC,CAAC;IAEpB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;IAC7C,IAAI,CAAC,GAAG,gDAAwC,aAAa,CAAC,CAAC;IAE/D,IAAI,CAAC,UAAU,CAAC,UAAU,6BAAqB,CAAC,IAAI,EAAE,EAAE;QACtD,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,iCAAyB,CAAC;IAE3B,IAAI,CAAC,UAAU,CAAC,qBAAqB,8BAAsB,CAAC,IAAI,EAAE,EAAE;QAClE,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,CAAC,YAAY,6BAAqB,CAAC,IAAI,EAAE,EAAE;QACxD,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAzBD,kCAyBC","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 { FragmentShaderComponent, ProgramBuilder, VariablePrecision, VariableType } from \"../ShaderBuilder\";\r\nimport { addFrustum } from \"./Common\";\r\n\r\nconst computeDirectionalLighting = `\r\nvoid computeDirectionalLight (inout float diffuse, inout float specular, vec3 normal, vec3 toEye, vec3 lightDir, float lightIntensity, float specularExponent) {\r\n diffuse += lightIntensity * max(dot(normal, lightDir), 0.0);\r\n vec3 toReflectedLight = normalize(reflect(lightDir, normal));\r\n float specularDot = max(dot(toReflectedLight, toEye), 0.0001);\r\n // NB: If specularDot and specularExponent are both zero, 0^0 done below can return NaN. Must make sure specularDot is larger than zero (hence 0.0001 or greater, as ensured above).\r\n specular += lightIntensity * pow(specularDot, specularExponent);\r\n}\r\n`;\r\n\r\n// mat_weights: x=diffuse y=specular\r\nconst applyLighting = `\r\n if (baseColor.a <= 0.0 || !u_surfaceFlags[kSurfaceBitIndex_ApplyLighting])\r\n return baseColor;\r\n\r\n // Extract surface properties\r\n vec3 rgb = baseColor.rgb;\r\n vec3 toEye = kFrustumType_Perspective == u_frustum.z ? normalize(v_eyeSpace.xyz) : vec3(0.0, 0.0, -1.0);\r\n\r\n // Extract material properties\r\n float diffuseWeight = mat_weights.x;\r\n float specularWeight = mat_weights.y * u_lightSettings[13];\r\n float specularExponent = mat_specular.a;\r\n vec3 specularColor = mat_specular.rgb;\r\n const float ambientWeight = 1.0; // Ignore MicroStation's ambient weights - usually bogus.\r\n\r\n // Compute directional lights\r\n const vec3 portraitDir = vec3(-0.7071, 0.0, 0.7071);\r\n float portraitIntensity = u_lightSettings[12];\r\n float sunIntensity = u_lightSettings[0];\r\n\r\n float directionalDiffuseIntensity = 0.0;\r\n float directionalSpecularIntensity = 0.0;\r\n computeDirectionalLight(directionalDiffuseIntensity, directionalSpecularIntensity, g_normal, toEye, u_sunDir, sunIntensity, specularExponent);\r\n computeDirectionalLight(directionalDiffuseIntensity, directionalSpecularIntensity, g_normal ,toEye, portraitDir, portraitIntensity, specularExponent);\r\n\r\n const float directionalFudge = 0.92; // leftover from old lighting implementation\r\n vec3 diffuseAccum = directionalDiffuseIntensity * diffuseWeight * rgb * directionalFudge; // directional light is white.\r\n vec3 specularAccum = directionalSpecularIntensity * specularWeight * specularColor;\r\n\r\n // Compute ambient light\r\n float ambientIntensity = u_lightSettings[4];\r\n vec3 ambientColor = vec3(u_lightSettings[1], u_lightSettings[2], u_lightSettings[3]);\r\n if (ambientColor.r + ambientColor.g + ambientColor.b == 0.0)\r\n ambientColor = rgb;\r\n\r\n diffuseAccum += ambientIntensity * ambientWeight * ambientColor;\r\n\r\n // Compute hemisphere lights\r\n vec3 ground = vec3(u_lightSettings[5], u_lightSettings[6], u_lightSettings[7]);\r\n vec3 sky = vec3(u_lightSettings[8], u_lightSettings[9], u_lightSettings[10]);\r\n float hemiIntensity = u_lightSettings[11];\r\n\r\n // diffuse\r\n float hemiDot = dot(g_normal, u_upVector);\r\n float hemiDiffuseWeight = 0.5 * hemiDot + 0.5;\r\n vec3 hemiColor = mix(ground, sky, hemiDiffuseWeight);\r\n diffuseAccum += hemiIntensity * hemiColor * rgb;\r\n\r\n // sky specular\r\n vec3 reflectSky = normalize(reflect(u_upVector, g_normal));\r\n float skyDot = max(dot(reflectSky, toEye), 0.0001);\r\n float hemiSpecWeight = hemiIntensity * pow(skyDot, specularExponent);\r\n\r\n // ground specular\r\n vec3 reflectGround = normalize(reflect(-u_upVector, g_normal));\r\n float groundDot = max(dot(reflectGround, toEye), 0.0001);\r\n hemiSpecWeight += hemiIntensity * pow(groundDot, specularExponent);\r\n\r\n specularAccum += hemiSpecWeight * specularColor * hemiColor;\r\n\r\n vec3 litColor = diffuseAccum + specularAccum;\r\n\r\n // Apply fresnel reflection.\r\n float fresnelIntensity = u_lightSettings[15];\r\n if (0.0 != fresnelIntensity) {\r\n float fresnel = -dot(toEye, g_normal);\r\n if (fresnelIntensity < 0.0) {\r\n fresnelIntensity = abs(fresnelIntensity);\r\n fresnel = 1.0 - fresnel;\r\n }\r\n\r\n fresnel = clamp(1.0 - fresnel, 0.0, 1.0);\r\n litColor = litColor * (1.0 + fresnelIntensity * fresnel);\r\n }\r\n\r\n // Clamp while preserving hue.\r\n float maxIntensity = max(litColor.r, max(litColor.g, litColor.b));\r\n float numCel = u_lightSettings[14];\r\n if (numCel > 0.0)\r\n baseColor.rgb = baseColor.rgb * ceil(maxIntensity * numCel) / numCel;\r\n else\r\n baseColor.rgb = litColor / max(1.0, maxIntensity);\r\n\r\n return baseColor;\r\n`;\r\n\r\n/** NB: addMaterial() sets up the mat_* variables used by applyLighting.\r\n * @internal\r\n */\r\nexport function addLighting(builder: ProgramBuilder) {\r\n addFrustum(builder);\r\n\r\n const frag = builder.frag;\r\n\r\n frag.addFunction(computeDirectionalLighting);\r\n frag.set(FragmentShaderComponent.ApplyLighting, applyLighting);\r\n\r\n frag.addUniform(\"u_sunDir\", VariableType.Vec3, (prog) => {\r\n prog.addProgramUniform(\"u_sunDir\", (uniform, params) => {\r\n params.target.uniforms.bindSunDirection(uniform);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n frag.addUniform(\"u_lightSettings[16]\", VariableType.Float, (prog) => {\r\n prog.addProgramUniform(\"u_lightSettings[0]\", (uniform, params) => {\r\n params.target.uniforms.lights.bind(uniform);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_upVector\", VariableType.Vec3, (prog) => {\r\n prog.addProgramUniform(\"u_upVector\", (uniform, params) => {\r\n params.target.uniforms.frustum.bindUpVector(uniform);\r\n });\r\n });\r\n}\r\n"]}
1
+ {"version":3,"file":"Lighting.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Lighting.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;AAyGH,kCAyBC;AA/HD,qCAAsC;AAEtC,MAAM,0BAA0B,GAAG;;;;;;;;CAQlC,CAAC;AAEF,oCAAoC;AACpC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoFrB,CAAC;AAEF;;GAEG;AACH,SAAgB,WAAW,CAAC,OAAuB;IACjD,IAAA,mBAAU,EAAC,OAAO,CAAC,CAAC;IAEpB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;IAC7C,IAAI,CAAC,GAAG,gDAAwC,aAAa,CAAC,CAAC;IAE/D,IAAI,CAAC,UAAU,CAAC,UAAU,6BAAqB,CAAC,IAAI,EAAE,EAAE;QACtD,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,iCAAyB,CAAC;IAE3B,IAAI,CAAC,UAAU,CAAC,qBAAqB,8BAAsB,CAAC,IAAI,EAAE,EAAE;QAClE,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU,CAAC,YAAY,6BAAqB,CAAC,IAAI,EAAE,EAAE;QACxD,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { FragmentShaderComponent, ProgramBuilder, VariablePrecision, VariableType } from \"../ShaderBuilder\";\r\nimport { addFrustum } from \"./Common\";\r\n\r\nconst computeDirectionalLighting = `\r\nvoid computeDirectionalLight (inout float diffuse, inout float specular, vec3 normal, vec3 toEye, vec3 lightDir, float lightIntensity, float specularExponent) {\r\n diffuse += lightIntensity * max(dot(normal, lightDir), 0.0);\r\n vec3 toReflectedLight = normalize(reflect(lightDir, normal));\r\n float specularDot = max(dot(toReflectedLight, toEye), 0.0001);\r\n // NB: If specularDot and specularExponent are both zero, 0^0 done below can return NaN. Must make sure specularDot is larger than zero (hence 0.0001 or greater, as ensured above).\r\n specular += lightIntensity * pow(specularDot, specularExponent);\r\n}\r\n`;\r\n\r\n// mat_weights: x=diffuse y=specular\r\nconst applyLighting = `\r\n if (baseColor.a <= 0.0 || !u_surfaceFlags[kSurfaceBitIndex_ApplyLighting])\r\n return baseColor;\r\n\r\n // Extract surface properties\r\n vec3 rgb = baseColor.rgb;\r\n vec3 toEye = kFrustumType_Perspective == u_frustum.z ? normalize(v_eyeSpace.xyz) : vec3(0.0, 0.0, -1.0);\r\n\r\n // Extract material properties\r\n float diffuseWeight = mat_weights.x;\r\n float specularWeight = mat_weights.y * u_lightSettings[13];\r\n float specularExponent = mat_specular.a;\r\n vec3 specularColor = mat_specular.rgb;\r\n const float ambientWeight = 1.0; // Ignore MicroStation's ambient weights - usually bogus.\r\n\r\n // Compute directional lights\r\n const vec3 portraitDir = vec3(-0.7071, 0.0, 0.7071);\r\n float portraitIntensity = u_lightSettings[12];\r\n float sunIntensity = u_lightSettings[0];\r\n\r\n float directionalDiffuseIntensity = 0.0;\r\n float directionalSpecularIntensity = 0.0;\r\n computeDirectionalLight(directionalDiffuseIntensity, directionalSpecularIntensity, g_normal, toEye, u_sunDir, sunIntensity, specularExponent);\r\n computeDirectionalLight(directionalDiffuseIntensity, directionalSpecularIntensity, g_normal ,toEye, portraitDir, portraitIntensity, specularExponent);\r\n\r\n const float directionalFudge = 0.92; // leftover from old lighting implementation\r\n vec3 diffuseAccum = directionalDiffuseIntensity * diffuseWeight * rgb * directionalFudge; // directional light is white.\r\n vec3 specularAccum = directionalSpecularIntensity * specularWeight * specularColor;\r\n\r\n // Compute ambient light\r\n float ambientIntensity = u_lightSettings[4];\r\n vec3 ambientColor = vec3(u_lightSettings[1], u_lightSettings[2], u_lightSettings[3]);\r\n if (ambientColor.r + ambientColor.g + ambientColor.b == 0.0)\r\n ambientColor = rgb;\r\n\r\n diffuseAccum += ambientIntensity * ambientWeight * ambientColor;\r\n\r\n // Compute hemisphere lights\r\n vec3 ground = vec3(u_lightSettings[5], u_lightSettings[6], u_lightSettings[7]);\r\n vec3 sky = vec3(u_lightSettings[8], u_lightSettings[9], u_lightSettings[10]);\r\n float hemiIntensity = u_lightSettings[11];\r\n\r\n // diffuse\r\n float hemiDot = dot(g_normal, u_upVector);\r\n float hemiDiffuseWeight = 0.5 * hemiDot + 0.5;\r\n vec3 hemiColor = mix(ground, sky, hemiDiffuseWeight);\r\n diffuseAccum += hemiIntensity * hemiColor * rgb;\r\n\r\n // sky specular\r\n vec3 reflectSky = normalize(reflect(u_upVector, g_normal));\r\n float skyDot = max(dot(reflectSky, toEye), 0.0001);\r\n float hemiSpecWeight = hemiIntensity * pow(skyDot, specularExponent);\r\n\r\n // ground specular\r\n vec3 reflectGround = normalize(reflect(-u_upVector, g_normal));\r\n float groundDot = max(dot(reflectGround, toEye), 0.0001);\r\n hemiSpecWeight += hemiIntensity * pow(groundDot, specularExponent);\r\n\r\n specularAccum += hemiSpecWeight * specularColor * hemiColor;\r\n\r\n vec3 litColor = diffuseAccum + specularAccum;\r\n\r\n // Apply fresnel reflection.\r\n float fresnelIntensity = u_lightSettings[15];\r\n if (0.0 != fresnelIntensity) {\r\n float fresnel = -dot(toEye, g_normal);\r\n if (fresnelIntensity < 0.0) {\r\n fresnelIntensity = abs(fresnelIntensity);\r\n fresnel = 1.0 - fresnel;\r\n }\r\n\r\n fresnel = clamp(1.0 - fresnel, 0.0, 1.0);\r\n litColor = litColor * (1.0 + fresnelIntensity * fresnel);\r\n }\r\n\r\n // Clamp while preserving hue.\r\n float maxIntensity = max(litColor.r, max(litColor.g, litColor.b));\r\n float numCel = u_lightSettings[14];\r\n if (numCel > 0.0)\r\n baseColor.rgb = baseColor.rgb * ceil(maxIntensity * numCel) / numCel;\r\n else\r\n baseColor.rgb = litColor / max(1.0, maxIntensity);\r\n\r\n return baseColor;\r\n`;\r\n\r\n/** NB: addMaterial() sets up the mat_* variables used by applyLighting.\r\n * @internal\r\n */\r\nexport function addLighting(builder: ProgramBuilder) {\r\n addFrustum(builder);\r\n\r\n const frag = builder.frag;\r\n\r\n frag.addFunction(computeDirectionalLighting);\r\n frag.set(FragmentShaderComponent.ApplyLighting, applyLighting);\r\n\r\n frag.addUniform(\"u_sunDir\", VariableType.Vec3, (prog) => {\r\n prog.addProgramUniform(\"u_sunDir\", (uniform, params) => {\r\n params.target.uniforms.bindSunDirection(uniform);\r\n });\r\n }, VariablePrecision.High);\r\n\r\n frag.addUniform(\"u_lightSettings[16]\", VariableType.Float, (prog) => {\r\n prog.addProgramUniform(\"u_lightSettings[0]\", (uniform, params) => {\r\n params.target.uniforms.lights.bind(uniform);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_upVector\", VariableType.Vec3, (prog) => {\r\n prog.addProgramUniform(\"u_upVector\", (uniform, params) => {\r\n params.target.uniforms.frustum.bindUpVector(uniform);\r\n });\r\n });\r\n}\r\n"]}
@@ -7,7 +7,7 @@
7
7
  * @module WebGL
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.addLogDepth = void 0;
10
+ exports.addLogDepth = addLogDepth;
11
11
  const core_bentley_1 = require("@itwin/core-bentley");
12
12
  const System_1 = require("../System");
13
13
  const Common_1 = require("./Common");
@@ -25,7 +25,6 @@ function addLogDepth(builder) {
25
25
  uniform.setUniform2fv(params.target.uniforms.frustum.logZ);
26
26
  });
27
27
  });
28
- frag.set(18 /* FragmentShaderComponent.FinalizeDepth */, finalizeDepth);
28
+ frag.set(19 /* FragmentShaderComponent.FinalizeDepth */, finalizeDepth);
29
29
  }
30
- exports.addLogDepth = addLogDepth;
31
30
  //# sourceMappingURL=LogarithmicDepthBuffer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LogarithmicDepthBuffer.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/LogarithmicDepthBuffer.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA6C;AAE7C,sCAAmC;AACnC,qCAAuC;AAEvC,6DAA6D;AAC7D,wJAAwJ;AACxJ,qFAAqF;AACrF,MAAM,aAAa,GAAG,+FAA+F,CAAC;AAEtH,gBAAgB;AAChB,SAAgB,WAAW,CAAC,OAAuB;IACjD,IAAA,qBAAM,EAAC,eAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAE3C,IAAA,oBAAW,EAAC,OAAO,CAAC,CAAC;IAErB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,QAAQ,6BAAqB,CAAC,IAAI,EAAE,EAAE;QACpD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnD,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,iDAAwC,aAAa,CAAC,CAAC;AACjE,CAAC;AAbD,kCAaC","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 { FragmentShaderComponent, ProgramBuilder, VariableType } from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { addEyeSpace } from \"./Common\";\r\n\r\n// Based on http://tulrich.com/geekstuff/log_depth_buffer.txt\r\n// Previously attempted to adjust z in vertex shader along the lines of https://outerra.blogspot.com/2013/07/logarithmic-depth-buffer-optimizations.html\r\n// - but interpolation along triangles intersecting the near plane was far too wonky.\r\nconst finalizeDepth = \"return 0.0 == u_logZ.x ? -v_eyeSpace.z / u_logZ.y : log(-v_eyeSpace.z * u_logZ.x) / u_logZ.y;\";\r\n\r\n/** @internal */\r\nexport function addLogDepth(builder: ProgramBuilder): void {\r\n assert(System.instance.supportsLogZBuffer);\r\n\r\n addEyeSpace(builder);\r\n\r\n const frag = builder.frag;\r\n frag.addUniform(\"u_logZ\", VariableType.Vec2, (prog) => {\r\n prog.addProgramUniform(\"u_logZ\", (uniform, params) => {\r\n uniform.setUniform2fv(params.target.uniforms.frustum.logZ);\r\n });\r\n });\r\n\r\n frag.set(FragmentShaderComponent.FinalizeDepth, finalizeDepth);\r\n}\r\n"]}
1
+ {"version":3,"file":"LogarithmicDepthBuffer.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/LogarithmicDepthBuffer.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;AAaH,kCAaC;AAxBD,sDAA6C;AAE7C,sCAAmC;AACnC,qCAAuC;AAEvC,6DAA6D;AAC7D,wJAAwJ;AACxJ,qFAAqF;AACrF,MAAM,aAAa,GAAG,+FAA+F,CAAC;AAEtH,gBAAgB;AAChB,SAAgB,WAAW,CAAC,OAAuB;IACjD,IAAA,qBAAM,EAAC,eAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAE3C,IAAA,oBAAW,EAAC,OAAO,CAAC,CAAC;IAErB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,QAAQ,6BAAqB,CAAC,IAAI,EAAE,EAAE;QACpD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnD,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,iDAAwC,aAAa,CAAC,CAAC;AACjE,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { FragmentShaderComponent, ProgramBuilder, VariableType } from \"../ShaderBuilder\";\r\nimport { System } from \"../System\";\r\nimport { addEyeSpace } from \"./Common\";\r\n\r\n// Based on http://tulrich.com/geekstuff/log_depth_buffer.txt\r\n// Previously attempted to adjust z in vertex shader along the lines of https://outerra.blogspot.com/2013/07/logarithmic-depth-buffer-optimizations.html\r\n// - but interpolation along triangles intersecting the near plane was far too wonky.\r\nconst finalizeDepth = \"return 0.0 == u_logZ.x ? -v_eyeSpace.z / u_logZ.y : log(-v_eyeSpace.z * u_logZ.x) / u_logZ.y;\";\r\n\r\n/** @internal */\r\nexport function addLogDepth(builder: ProgramBuilder): void {\r\n assert(System.instance.supportsLogZBuffer);\r\n\r\n addEyeSpace(builder);\r\n\r\n const frag = builder.frag;\r\n frag.addUniform(\"u_logZ\", VariableType.Vec2, (prog) => {\r\n prog.addProgramUniform(\"u_logZ\", (uniform, params) => {\r\n uniform.setUniform2fv(params.target.uniforms.frustum.logZ);\r\n });\r\n });\r\n\r\n frag.set(FragmentShaderComponent.FinalizeDepth, finalizeDepth);\r\n}\r\n"]}
@@ -7,7 +7,7 @@
7
7
  * @module WebGL
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.addLookupTable = void 0;
10
+ exports.addLookupTable = addLookupTable;
11
11
  const computeLUTCoords = `
12
12
  vec2 computeLUTCoords(float index, vec2 dimensions, vec2 center, float mult) {
13
13
  float baseIndex = index*mult;
@@ -54,5 +54,4 @@ function addLookupTable(sb, lutName, mult = "1.0", addInitializer = true) {
54
54
  sb.addFunction(computeCoordsSpecific);
55
55
  return initializerSpecific;
56
56
  }
57
- exports.addLookupTable = addLookupTable;
58
57
  //# sourceMappingURL=LookupTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LookupTable.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/LookupTable.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAIH,MAAM,gBAAgB,GAAG;;;;;;;;;;;CAWxB,CAAC;AAEF,MAAM,qBAAqB,GAAG;;;;CAI7B,CAAC;AAEF,MAAM,mBAAmB,GAAG;;;;CAI3B,CAAC;AAEF;;GAEG;AACH,SAAgB,cAAc,CAAC,EAAuB,EAAE,OAAe,EAAE,OAAe,KAAK,EAAE,cAAc,GAAG,IAAI;IAClH,EAAE,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAEjC,MAAM,QAAQ,GAAG,KAAK,OAAO,QAAQ,CAAC;IACtC,MAAM,QAAQ,GAAG,GAAG,OAAO,QAAQ,CAAC;IACpC,MAAM,SAAS,GAAG,KAAK,OAAO,SAAS,CAAC;IACxC,MAAM,SAAS,GAAG,KAAK,OAAO,QAAQ,CAAC;IAEvC,EAAE,CAAC,SAAS,CAAC,QAAQ,6BAAqB,CAAC;IAC3C,EAAE,CAAC,SAAS,CAAC,SAAS,4BAAoB,CAAC;IAE3C,IAAI,mBAAmB,GAAG,mBAAmB,CAAC;IAC9C,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC3E,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC3E,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAC7E,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAC7E,IAAI,cAAc;QAChB,EAAE,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IAEzC,IAAI,qBAAqB,GAAG,qBAAqB,CAAC;IAClD,qBAAqB,GAAG,qBAAqB,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC7E,qBAAqB,GAAG,qBAAqB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACvE,EAAE,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;IAEtC,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAzBD,wCAyBC","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 { VariableType, VertexShaderBuilder } from \"../ShaderBuilder\";\r\n\r\nconst computeLUTCoords = `\r\nvec2 computeLUTCoords(float index, vec2 dimensions, vec2 center, float mult) {\r\n float baseIndex = index*mult;\r\n\r\n // Fix precision issues wherein mod(x,y) => y instead of 0 when x is multiple of y...\r\n float epsilon = 0.5 / dimensions.x;\r\n float yId = floor(baseIndex / dimensions.x + epsilon);\r\n float xId = baseIndex - dimensions.x * yId; // replaces mod()...\r\n\r\n return center + vec2(xId/dimensions.x, yId/dimensions.y);\r\n}\r\n`;\r\n\r\nconst computeCoordsTemplate = `\r\nvec2 compute_{LUTNAME}_coords(float index) {\r\n return computeLUTCoords(index, u_{LUTNAME}Params.xy, g_{LUTNAME}_center, {MULT});\r\n}\r\n`;\r\n\r\nconst initializerTemplate = `\r\n {LUTSTEPX} = 1.0 / {LUTPARAMS}.x;\r\n float {LUTSTEPY} = 1.0 / {LUTPARAMS}.y;\r\n {LUTCENTER} = vec2(0.5*{LUTSTEPX}, 0.5*{LUTSTEPY});\r\n`;\r\n\r\n/** Add support for a lookup table to the vertex shader. Returns the code used to initialize the global variables.\r\n * @internal\r\n */\r\nexport function addLookupTable(sb: VertexShaderBuilder, lutName: string, mult: string = \"1.0\", addInitializer = true): string {\r\n sb.addFunction(computeLUTCoords);\r\n\r\n const lutStepX = `g_${lutName}_stepX`;\r\n const lutStepY = `${lutName}_stepY`;\r\n const lutCenter = `g_${lutName}_center`;\r\n const lutParams = `u_${lutName}Params`;\r\n\r\n sb.addGlobal(lutStepX, VariableType.Float);\r\n sb.addGlobal(lutCenter, VariableType.Vec2);\r\n\r\n let initializerSpecific = initializerTemplate;\r\n initializerSpecific = initializerSpecific.replace(/{LUTSTEPX}/g, lutStepX);\r\n initializerSpecific = initializerSpecific.replace(/{LUTSTEPY}/g, lutStepY);\r\n initializerSpecific = initializerSpecific.replace(/{LUTCENTER}/g, lutCenter);\r\n initializerSpecific = initializerSpecific.replace(/{LUTPARAMS}/g, lutParams);\r\n if (addInitializer)\r\n sb.addInitializer(initializerSpecific);\r\n\r\n let computeCoordsSpecific = computeCoordsTemplate;\r\n computeCoordsSpecific = computeCoordsSpecific.replace(/{LUTNAME}/g, lutName);\r\n computeCoordsSpecific = computeCoordsSpecific.replace(/{MULT}/g, mult);\r\n sb.addFunction(computeCoordsSpecific);\r\n\r\n return initializerSpecific;\r\n}\r\n"]}
1
+ {"version":3,"file":"LookupTable.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/LookupTable.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;AAgCH,wCAyBC;AArDD,MAAM,gBAAgB,GAAG;;;;;;;;;;;CAWxB,CAAC;AAEF,MAAM,qBAAqB,GAAG;;;;CAI7B,CAAC;AAEF,MAAM,mBAAmB,GAAG;;;;CAI3B,CAAC;AAEF;;GAEG;AACH,SAAgB,cAAc,CAAC,EAAuB,EAAE,OAAe,EAAE,OAAe,KAAK,EAAE,cAAc,GAAG,IAAI;IAClH,EAAE,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAEjC,MAAM,QAAQ,GAAG,KAAK,OAAO,QAAQ,CAAC;IACtC,MAAM,QAAQ,GAAG,GAAG,OAAO,QAAQ,CAAC;IACpC,MAAM,SAAS,GAAG,KAAK,OAAO,SAAS,CAAC;IACxC,MAAM,SAAS,GAAG,KAAK,OAAO,QAAQ,CAAC;IAEvC,EAAE,CAAC,SAAS,CAAC,QAAQ,6BAAqB,CAAC;IAC3C,EAAE,CAAC,SAAS,CAAC,SAAS,4BAAoB,CAAC;IAE3C,IAAI,mBAAmB,GAAG,mBAAmB,CAAC;IAC9C,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC3E,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC3E,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAC7E,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAC7E,IAAI,cAAc;QAChB,EAAE,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IAEzC,IAAI,qBAAqB,GAAG,qBAAqB,CAAC;IAClD,qBAAqB,GAAG,qBAAqB,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC7E,qBAAqB,GAAG,qBAAqB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACvE,EAAE,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;IAEtC,OAAO,mBAAmB,CAAC;AAC7B,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { VariableType, VertexShaderBuilder } from \"../ShaderBuilder\";\r\n\r\nconst computeLUTCoords = `\r\nvec2 computeLUTCoords(float index, vec2 dimensions, vec2 center, float mult) {\r\n float baseIndex = index*mult;\r\n\r\n // Fix precision issues wherein mod(x,y) => y instead of 0 when x is multiple of y...\r\n float epsilon = 0.5 / dimensions.x;\r\n float yId = floor(baseIndex / dimensions.x + epsilon);\r\n float xId = baseIndex - dimensions.x * yId; // replaces mod()...\r\n\r\n return center + vec2(xId/dimensions.x, yId/dimensions.y);\r\n}\r\n`;\r\n\r\nconst computeCoordsTemplate = `\r\nvec2 compute_{LUTNAME}_coords(float index) {\r\n return computeLUTCoords(index, u_{LUTNAME}Params.xy, g_{LUTNAME}_center, {MULT});\r\n}\r\n`;\r\n\r\nconst initializerTemplate = `\r\n {LUTSTEPX} = 1.0 / {LUTPARAMS}.x;\r\n float {LUTSTEPY} = 1.0 / {LUTPARAMS}.y;\r\n {LUTCENTER} = vec2(0.5*{LUTSTEPX}, 0.5*{LUTSTEPY});\r\n`;\r\n\r\n/** Add support for a lookup table to the vertex shader. Returns the code used to initialize the global variables.\r\n * @internal\r\n */\r\nexport function addLookupTable(sb: VertexShaderBuilder, lutName: string, mult: string = \"1.0\", addInitializer = true): string {\r\n sb.addFunction(computeLUTCoords);\r\n\r\n const lutStepX = `g_${lutName}_stepX`;\r\n const lutStepY = `${lutName}_stepY`;\r\n const lutCenter = `g_${lutName}_center`;\r\n const lutParams = `u_${lutName}Params`;\r\n\r\n sb.addGlobal(lutStepX, VariableType.Float);\r\n sb.addGlobal(lutCenter, VariableType.Vec2);\r\n\r\n let initializerSpecific = initializerTemplate;\r\n initializerSpecific = initializerSpecific.replace(/{LUTSTEPX}/g, lutStepX);\r\n initializerSpecific = initializerSpecific.replace(/{LUTSTEPY}/g, lutStepY);\r\n initializerSpecific = initializerSpecific.replace(/{LUTCENTER}/g, lutCenter);\r\n initializerSpecific = initializerSpecific.replace(/{LUTPARAMS}/g, lutParams);\r\n if (addInitializer)\r\n sb.addInitializer(initializerSpecific);\r\n\r\n let computeCoordsSpecific = computeCoordsTemplate;\r\n computeCoordsSpecific = computeCoordsSpecific.replace(/{LUTNAME}/g, lutName);\r\n computeCoordsSpecific = computeCoordsSpecific.replace(/{MULT}/g, mult);\r\n sb.addFunction(computeCoordsSpecific);\r\n\r\n return initializerSpecific;\r\n}\r\n"]}
@@ -7,7 +7,8 @@
7
7
  * @module WebGL
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.addSurfaceMonochrome = exports.addUnlitMonochrome = void 0;
10
+ exports.addUnlitMonochrome = addUnlitMonochrome;
11
+ exports.addSurfaceMonochrome = addSurfaceMonochrome;
11
12
  const core_common_1 = require("@itwin/core-common");
12
13
  const applyUnlitMonochromeColor = `
13
14
  vec4 monoColor = vec4(u_monoRgb, baseColor.a);
@@ -36,7 +37,6 @@ function addUnlitMonochrome(frag) {
36
37
  addMonoRgb(frag);
37
38
  frag.set(6 /* FragmentShaderComponent.ApplyMonochrome */, applyUnlitMonochromeColor);
38
39
  }
39
- exports.addUnlitMonochrome = addUnlitMonochrome;
40
40
  /** @internal */
41
41
  function addSurfaceMonochrome(frag) {
42
42
  addMonoRgb(frag);
@@ -47,5 +47,4 @@ function addSurfaceMonochrome(frag) {
47
47
  });
48
48
  frag.set(6 /* FragmentShaderComponent.ApplyMonochrome */, applySurfaceMonochromeColor);
49
49
  }
50
- exports.addSurfaceMonochrome = addSurfaceMonochrome;
51
50
  //# sourceMappingURL=Monochrome.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Monochrome.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Monochrome.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,oDAAoD;AAGpD,MAAM,yBAAyB,GAAG;;;CAGjC,CAAC;AAEF,MAAM,2BAA2B,GAAG;;;;;;;;;;CAUnC,CAAC;AAEF,SAAS,UAAU,CAAC,IAA2B;IAC7C,IAAI,CAAC,UAAU,CAAC,WAAW,6BAAqB,CAAC,IAAI,EAAE,EAAE;QACvD,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gBAAgB;AAChB,SAAgB,kBAAkB,CAAC,IAA2B;IAC5D,UAAU,CAAC,IAAI,CAAC,CAAC;IACjB,IAAI,CAAC,GAAG,kDAA0C,yBAAyB,CAAC,CAAC;AAC/E,CAAC;AAHD,gDAGC;AAED,gBAAgB;AAChB,SAAgB,oBAAoB,CAAC,IAA2B;IAC9D,UAAU,CAAC,IAAI,CAAC,CAAC;IACjB,IAAI,CAAC,UAAU,CAAC,gBAAgB,8BAAsB,CAAC,IAAI,EAAE,EAAE;QAC7D,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3D,OAAO,CAAC,YAAY,CAAC,4BAAc,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACzJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,kDAA0C,2BAA2B,CAAC,CAAC;AACjF,CAAC;AATD,oDASC","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 { MonochromeMode } from \"@itwin/core-common\";\r\nimport { FragmentShaderBuilder, FragmentShaderComponent, VariableType } from \"../ShaderBuilder\";\r\n\r\nconst applyUnlitMonochromeColor = `\r\n vec4 monoColor = vec4(u_monoRgb, baseColor.a);\r\n return u_shaderFlags[kShaderBit_Monochrome] ? monoColor : baseColor;\r\n`;\r\n\r\nconst applySurfaceMonochromeColor = `\r\n vec4 monoColor = vec4(u_monoRgb, baseColor.a);\r\n if (1.0 == u_mixMonoColor) {\r\n vec3 rgb = baseColor.rgb;\r\n rgb = vec3(dot(rgb, vec3(.222, .707, .071)));\r\n rgb *= u_monoRgb;\r\n monoColor.rgb = rgb;\r\n }\r\n\r\n return u_shaderFlags[kShaderBit_Monochrome] ? monoColor : baseColor;\r\n`;\r\n\r\nfunction addMonoRgb(frag: FragmentShaderBuilder): void {\r\n frag.addUniform(\"u_monoRgb\", VariableType.Vec3, (prog) => {\r\n prog.addProgramUniform(\"u_monoRgb\", (uniform, params) => {\r\n params.target.uniforms.style.bindMonochromeRgb(uniform);\r\n });\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function addUnlitMonochrome(frag: FragmentShaderBuilder): void {\r\n addMonoRgb(frag);\r\n frag.set(FragmentShaderComponent.ApplyMonochrome, applyUnlitMonochromeColor);\r\n}\r\n\r\n/** @internal */\r\nexport function addSurfaceMonochrome(frag: FragmentShaderBuilder): void {\r\n addMonoRgb(frag);\r\n frag.addUniform(\"u_mixMonoColor\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_mixMonoColor\", (uniform, params) => {\r\n uniform.setUniform1f(MonochromeMode.Scaled === params.target.plan.monochromeMode && params.geometry.wantMixMonochromeColor(params.target) ? 1.0 : 0.0);\r\n });\r\n });\r\n\r\n frag.set(FragmentShaderComponent.ApplyMonochrome, applySurfaceMonochromeColor);\r\n}\r\n"]}
1
+ {"version":3,"file":"Monochrome.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Monochrome.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;AA+BH,gDAGC;AAGD,oDASC;AA5CD,oDAAoD;AAGpD,MAAM,yBAAyB,GAAG;;;CAGjC,CAAC;AAEF,MAAM,2BAA2B,GAAG;;;;;;;;;;CAUnC,CAAC;AAEF,SAAS,UAAU,CAAC,IAA2B;IAC7C,IAAI,CAAC,UAAU,CAAC,WAAW,6BAAqB,CAAC,IAAI,EAAE,EAAE;QACvD,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gBAAgB;AAChB,SAAgB,kBAAkB,CAAC,IAA2B;IAC5D,UAAU,CAAC,IAAI,CAAC,CAAC;IACjB,IAAI,CAAC,GAAG,kDAA0C,yBAAyB,CAAC,CAAC;AAC/E,CAAC;AAED,gBAAgB;AAChB,SAAgB,oBAAoB,CAAC,IAA2B;IAC9D,UAAU,CAAC,IAAI,CAAC,CAAC;IACjB,IAAI,CAAC,UAAU,CAAC,gBAAgB,8BAAsB,CAAC,IAAI,EAAE,EAAE;QAC7D,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3D,OAAO,CAAC,YAAY,CAAC,4BAAc,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACzJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,kDAA0C,2BAA2B,CAAC,CAAC;AACjF,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { MonochromeMode } from \"@itwin/core-common\";\r\nimport { FragmentShaderBuilder, FragmentShaderComponent, VariableType } from \"../ShaderBuilder\";\r\n\r\nconst applyUnlitMonochromeColor = `\r\n vec4 monoColor = vec4(u_monoRgb, baseColor.a);\r\n return u_shaderFlags[kShaderBit_Monochrome] ? monoColor : baseColor;\r\n`;\r\n\r\nconst applySurfaceMonochromeColor = `\r\n vec4 monoColor = vec4(u_monoRgb, baseColor.a);\r\n if (1.0 == u_mixMonoColor) {\r\n vec3 rgb = baseColor.rgb;\r\n rgb = vec3(dot(rgb, vec3(.222, .707, .071)));\r\n rgb *= u_monoRgb;\r\n monoColor.rgb = rgb;\r\n }\r\n\r\n return u_shaderFlags[kShaderBit_Monochrome] ? monoColor : baseColor;\r\n`;\r\n\r\nfunction addMonoRgb(frag: FragmentShaderBuilder): void {\r\n frag.addUniform(\"u_monoRgb\", VariableType.Vec3, (prog) => {\r\n prog.addProgramUniform(\"u_monoRgb\", (uniform, params) => {\r\n params.target.uniforms.style.bindMonochromeRgb(uniform);\r\n });\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function addUnlitMonochrome(frag: FragmentShaderBuilder): void {\r\n addMonoRgb(frag);\r\n frag.set(FragmentShaderComponent.ApplyMonochrome, applyUnlitMonochromeColor);\r\n}\r\n\r\n/** @internal */\r\nexport function addSurfaceMonochrome(frag: FragmentShaderBuilder): void {\r\n addMonoRgb(frag);\r\n frag.addUniform(\"u_mixMonoColor\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_mixMonoColor\", (uniform, params) => {\r\n uniform.setUniform1f(MonochromeMode.Scaled === params.target.plan.monochromeMode && params.geometry.wantMixMonochromeColor(params.target) ? 1.0 : 0.0);\r\n });\r\n });\r\n\r\n frag.set(FragmentShaderComponent.ApplyMonochrome, applySurfaceMonochromeColor);\r\n}\r\n"]}
@@ -4,7 +4,11 @@
4
4
  * See LICENSE.md in the project root for license terms and full copyright notice.
5
5
  *--------------------------------------------------------------------------------------------*/
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.addOverrideClassifierColor = exports.addHilitePlanarClassifier = exports.addFeaturePlanarClassifier = exports.addColorPlanarClassifier = exports.volClassOpaqueColor = void 0;
7
+ exports.volClassOpaqueColor = void 0;
8
+ exports.addColorPlanarClassifier = addColorPlanarClassifier;
9
+ exports.addFeaturePlanarClassifier = addFeaturePlanarClassifier;
10
+ exports.addHilitePlanarClassifier = addHilitePlanarClassifier;
11
+ exports.addOverrideClassifierColor = addOverrideClassifierColor;
8
12
  /** @packageDocumentation
9
13
  * @module WebGL
10
14
  */
@@ -275,9 +279,8 @@ function addColorPlanarClassifier(builder, translucent, isThematic) {
275
279
  frag.addFunction(exports.volClassOpaqueColor);
276
280
  }
277
281
  (0, Common_1.addShaderFlags)(builder);
278
- frag.set(12 /* FragmentShaderComponent.ApplyPlanarClassifier */, (isThematic === 0 /* IsThematic.No */) ? applyPlanarClassificationColor : applyPlanarClassificationColorForThematic);
282
+ frag.set(13 /* FragmentShaderComponent.ApplyPlanarClassifier */, (isThematic === 0 /* IsThematic.No */) ? applyPlanarClassificationColor : applyPlanarClassificationColorForThematic);
279
283
  }
280
- exports.addColorPlanarClassifier = addColorPlanarClassifier;
281
284
  /** @internal */
282
285
  function addFeaturePlanarClassifier(builder) {
283
286
  const frag = builder.frag;
@@ -294,10 +297,9 @@ function addFeaturePlanarClassifier(builder) {
294
297
  uniform.setUniform4fv(scratchBatchBaseComponents);
295
298
  });
296
299
  });
297
- frag.set(17 /* FragmentShaderComponent.OverrideFeatureId */, overrideFeatureId);
300
+ frag.set(18 /* FragmentShaderComponent.OverrideFeatureId */, overrideFeatureId);
298
301
  frag.addFunction(Common_1.addUInt32s);
299
302
  }
300
- exports.addFeaturePlanarClassifier = addFeaturePlanarClassifier;
301
303
  /** @internal */
302
304
  function addHilitePlanarClassifier(builder, supportTextures = true) {
303
305
  addPlanarClassifierCommon(builder);
@@ -311,7 +313,6 @@ function addHilitePlanarClassifier(builder, supportTextures = true) {
311
313
  });
312
314
  frag.set(1 /* FragmentShaderComponent.ComputeBaseColor */, supportTextures ? computeClassifiedSurfaceHiliteColor : computeClassifiedHiliteColor);
313
315
  }
314
- exports.addHilitePlanarClassifier = addHilitePlanarClassifier;
315
316
  // NonLocatable flag is put in upper bit of blue component when drawing the classification texture.
316
317
  const encodeNonLocatableWithFeatures = `
317
318
  vec4 encodeNonLocatable(vec4 clr) {
@@ -385,9 +386,8 @@ function addOverrideClassifierColor(builder, isThematic) {
385
386
  const haveOverrides = undefined !== builder.frag.find("v_feature_emphasis");
386
387
  builder.frag.addFunction(haveOverrides ? encodeNonLocatableWithFeatures : encodeNonLocatable);
387
388
  if (isThematic === 0 /* IsThematic.No */)
388
- builder.frag.set(19 /* FragmentShaderComponent.OverrideColor */, haveOverrides ? overrideClassifierWithFeatures : overrideClassifierForClip);
389
+ builder.frag.set(20 /* FragmentShaderComponent.OverrideColor */, haveOverrides ? overrideClassifierWithFeatures : overrideClassifierForClip);
389
390
  else
390
- builder.frag.set(19 /* FragmentShaderComponent.OverrideColor */, haveOverrides ? overrideClassifierWithFeaturesForThematic : overrideClassifierForClipForThematic);
391
+ builder.frag.set(20 /* FragmentShaderComponent.OverrideColor */, haveOverrides ? overrideClassifierWithFeaturesForThematic : overrideClassifierForClipForThematic);
391
392
  }
392
- exports.addOverrideClassifierColor = addOverrideClassifierColor;
393
393
  //# sourceMappingURL=PlanarClassification.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanarClassification.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PlanarClassification.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Matrix4d } from \"@itwin/core-geometry\";\r\nimport { SpatialClassifierInsideDisplay } from \"@itwin/core-common\";\r\nimport { Matrix4 } from \"../Matrix\";\r\nimport { PlanarClassifierContent } from \"../PlanarClassifier\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, ProgramBuilder, ShaderBuilder, VariableType } from \"../ShaderBuilder\";\r\nimport { IsThematic } from \"../TechniqueFlags\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { addShaderFlags, addUInt32s } from \"./Common\";\r\nimport { addClassifierFlash } from \"./FeatureSymbology\";\r\nimport { addWindowToTexCoords } from \"./Fragment\";\r\nimport { addInstancedRtcMatrix } from \"./Vertex\";\r\n\r\nexport const volClassOpaqueColor = `\r\nvec4 volClassColor(vec4 baseColor, float depth) {\r\n if (depth <= TEXTURE(s_pClassSampler, windowCoordsToTexCoords(gl_FragCoord.xy)).r)\r\n discard;\r\n return vec4(baseColor.rgb, 1.0);\r\n}\r\n`;\r\n\r\nconst volClassTranslucentColor = `\r\nvec4 volClassColor(vec4 baseColor, float depth) {\r\n return vec4(baseColor.rgb, depth); // This will never be called, so we use depth here to avoid a compile error\r\n}\r\n`;\r\n\r\nconst applyPlanarClassificationPrelude = `\r\nconst float dimScale = .7;\r\n\r\nvec2 classPos = v_pClassPos.xy / v_pClassPosW;\r\nbool isOutside = classPos.x < 0.0 || classPos.x > 1.0 || classPos.y < 0.0 || classPos.y > 1.0;\r\nif (u_pClassColorParams.x > kClassifierDisplay_Element) { // texture/terrain drape.\r\n if (u_pClassColorParams.x > kTextureDrape) {\r\n return volClassColor(baseColor, depth);\r\n }\r\n if (isOutside)\r\n discard;\r\n\r\n vec3 rgb = TEXTURE(s_pClassSampler, classPos.xy).rgb;\r\n return vec4(rgb, baseColor.a);\r\n}\r\nfloat imageCount = u_pClassColorParams.z;\r\n// If imageCount is less than zero - the mask sense is inverted - inside rather than outside. (masks only)\r\nbool doInvert = false;\r\nif (imageCount < 0.0) {\r\n imageCount = - imageCount;\r\n doInvert = true;\r\n}\r\n\r\nvec4 colorTexel = vec4(0);\r\nvec4 maskTexel = vec4(0);\r\nbool doMask = imageCount != kTextureContentClassifierOnly;\r\nbool doClassify = imageCount != kTextureContentMaskOnly;\r\n\r\nif (!isOutside) {\r\n if (imageCount == kTextureContentClassifierOnly) {\r\n colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));\r\n } else if (imageCount == kTextureContentMaskOnly) {\r\n maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y));\r\n } else if (imageCount == kTextureContentClassifierAndMask) {\r\n colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));\r\n maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (2.0 + classPos.y) / imageCount));\r\n }\r\n if (colorTexel.b >= 0.5) {\r\n if (u_shaderFlags[kShaderBit_IgnoreNonLocatable]) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n colorTexel.b = (colorTexel.b * 255.0 - 128.0) / 127.0;\r\n } else {\r\n colorTexel.b *= 255.0 / 127.0;\r\n }\r\n}\r\nif (doMask) {\r\n bool masked = !isOutside && (maskTexel.r + maskTexel.g + maskTexel.b + maskTexel.a) > 0.0;\r\n if (doInvert)\r\n masked = !masked;\r\n if (masked) {\r\n float maskTransparency = u_pClassColorParams.w < 0.0 ? (1.0 - maskTexel.a) : u_pClassColorParams.w;\r\n if (maskTransparency <= 0.0) {\r\n discard;\r\n return vec4(0);\r\n }\r\n\r\n baseColor.a = baseColor.a * maskTransparency;\r\n }\r\n\r\n if (!doClassify)\r\n return baseColor;\r\n }\r\n\r\n bool isClassified = !isOutside && (colorTexel.r + colorTexel.g + colorTexel.b + colorTexel.a > 0.0);\r\n float param = isClassified ? u_pClassColorParams.x : u_pClassColorParams.y;\r\n if (kClassifierDisplay_Off == param) {\r\n discard;\r\n return vec4(0);\r\n}\r\n`\r\n ;\r\n\r\n// Currently we discard if classifier is pure black (acts as clipping mask).\r\n// These could be more efficiently handled with masks.\r\nconst applyPlanarClassificationColor = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template\r\n `\r\n float colorMix = u_pClassPointCloud ? .65 : .35;\r\n vec4 classColor;\r\n if (kClassifierDisplay_On == param)\r\n classColor = baseColor;\r\n else if (!isClassified || kClassifierDisplay_Dimmed == param)\r\n classColor = vec4(baseColor.rgb * dimScale, baseColor.a);\r\n else if (kClassifierDisplay_Hilite == param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), baseColor.a);\r\n else {\r\n if (colorTexel.b > colorTexel.a) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n\r\n // NB: colorTexel contains pre-multiplied alpha. We know it is greater than zero from above.\r\n float alpha = colorTexel.a * baseColor.a;\r\n vec3 rgb = colorTexel.rgb / colorTexel.a;\r\n rgb = mix(baseColor.rgb, rgb, colorMix);\r\n classColor = vec4(rgb, alpha);\r\n }\r\n\r\n if (kClassifierDisplay_Element != param && isClassified) {\r\n if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);\r\n\r\n if (colorTexel.g > colorTexel.a)\r\n classColor = applyClassifierFlash(classColor);\r\n }\r\n\r\n return classColor;\r\n`;\r\n\r\nconst applyPlanarClassificationColorForThematic = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template\r\n `\r\n vec4 classColor = baseColor;\r\n\r\n if (kClassifierDisplay_Element == param) {\r\n if (colorTexel.b > colorTexel.a) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n\r\n // We stashed the element alpha in blue channel. Make sure to handle pre-multiplied alpha.\r\n baseColor.rgb = baseColor.rgb / baseColor.a;\r\n classColor = vec4(baseColor.rgb, colorTexel.b);\r\n classColor.rgb *= classColor.a;\r\n colorTexel.a = 0.5; // make conditions below potentially pass\r\n }\r\n\r\n if (isClassified) {\r\n if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);\r\n\r\n if (colorTexel.g > colorTexel.a)\r\n classColor = applyClassifierFlash(classColor);\r\n }\r\n\r\n return classColor;\r\n`;\r\n\r\nconst overrideFeatureId = `\r\n if (u_pClassColorParams.x != kClassifierDisplay_Element) return currentId;\r\n vec2 classPos = v_pClassPos / v_pClassPosW;\r\n vec4 featureTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (1.0 + classPos.y) / u_pClassColorParams.z));\r\n return (featureTexel == vec4(0)) ? currentId : addUInt32s(u_batchBase, featureTexel * 255.0) / 255.0;\r\n `;\r\n\r\nconst computeClassifiedHiliteColor = `\r\n vec2 classPos = v_pClassPos / v_pClassPosW;\r\n return TEXTURE(s_pClassHiliteSampler, classPos);\r\n`;\r\nconst computeClassifiedSurfaceHiliteColor = `\r\n if (isSurfaceBitSet(kSurfaceBit_HasTexture) && TEXTURE(s_texture, v_texCoord).a <= 0.15)\r\n return vec4(0.0);\r\n${computeClassifiedHiliteColor}`;\r\n\r\nconst computeClassifierPos = \"vec4 classProj = u_pClassProj * rawPosition; v_pClassPos = classProj.xy;\";\r\nconst computeInstancedClassifierPos = \"vec4 classProj = u_pClassProj * g_instancedRtcMatrix * rawPosition; v_pClassPos = classProj.xy;\";\r\nconst computeClassifierPosW = \"v_pClassPosW = classProj.w;\";\r\n\r\nconst scratchBytes = new Uint8Array(4);\r\nconst scratchBatchBaseId = new Uint32Array(scratchBytes.buffer);\r\nconst scratchBatchBaseComponents = [0, 0, 0, 0];\r\nconst scratchColorParams = new Float32Array(4); // Unclassified scale, classified base scale, classified classifier scale, content/image count... MaskOnly = 1, ClassifierOnly = 2, ClassifierAndMask = 3\r\nconst scratchModel = Matrix4d.createIdentity();\r\nconst scratchModelProjection = Matrix4d.createIdentity();\r\nconst scratchMatrix = new Matrix4();\r\n\r\nfunction addPlanarClassifierCommon(builder: ProgramBuilder) {\r\n const vert = builder.vert;\r\n vert.addUniform(\"u_pClassProj\", VariableType.Mat4, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassProj\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape!;\r\n assert(undefined !== source || undefined !== params.target.activeVolumeClassifierTexture);\r\n if (undefined !== params.target.currentPlanarClassifierOrDrape) {\r\n source.projectionMatrix.multiplyMatrixMatrix(Matrix4d.createTransform(params.target.currentTransform, scratchModel), scratchModelProjection);\r\n scratchMatrix.initFromMatrix4d(scratchModelProjection);\r\n } else\r\n scratchMatrix.initIdentity(); // needs to be identity for volume classifiers\r\n uniform.setMatrix4(scratchMatrix);\r\n });\r\n });\r\n\r\n if (vert.usesInstancedGeometry)\r\n addInstancedRtcMatrix(vert);\r\n\r\n builder.addInlineComputedVarying(\"v_pClassPos\", VariableType.Vec2, vert.usesInstancedGeometry ? computeInstancedClassifierPos : computeClassifierPos);\r\n builder.addInlineComputedVarying(\"v_pClassPosW\", VariableType.Float, computeClassifierPosW);\r\n\r\n addPlanarClassifierConstants(builder.frag);\r\n}\r\n\r\nfunction addPlanarClassifierConstants(builder: ShaderBuilder) {\r\n builder.addDefine(\"kClassifierDisplay_Off\", SpatialClassifierInsideDisplay.Off.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_On\", SpatialClassifierInsideDisplay.On.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Dimmed\", SpatialClassifierInsideDisplay.Dimmed.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Hilite\", SpatialClassifierInsideDisplay.Hilite.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Element\", SpatialClassifierInsideDisplay.ElementColor.toFixed(1));\r\n const td = SpatialClassifierInsideDisplay.ElementColor + 1;\r\n builder.addDefine(\"kTextureDrape\", td.toFixed(1));\r\n builder.addDefine(\"kTextureContentClassifierOnly\", PlanarClassifierContent.ClassifierOnly.toFixed(1));\r\n builder.addDefine(\"kTextureContentMaskOnly\", PlanarClassifierContent.MaskOnly.toFixed(1));\r\n builder.addDefine(\"kTextureContentClassifierAndMask\", PlanarClassifierContent.ClassifierAndMask.toFixed(1));\r\n}\r\n\r\n/** @internal */\r\nexport function addColorPlanarClassifier(builder: ProgramBuilder, translucent: boolean, isThematic: IsThematic) {\r\n addPlanarClassifierCommon(builder);\r\n const frag = builder.frag;\r\n frag.addUniform(\"s_pClassSampler\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"s_pClassSampler\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape;\r\n const volClass = params.target.activeVolumeClassifierTexture;\r\n assert(undefined !== source || undefined !== volClass);\r\n if (source) {\r\n assert(undefined !== source.texture);\r\n source.texture.texture.bindSampler(uniform, TextureUnit.PlanarClassification);\r\n } else\r\n Texture2DHandle.bindSampler(uniform, volClass!, TextureUnit.PlanarClassification);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_pClassColorParams\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassColorParams\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape;\r\n const volClass = params.target.activeVolumeClassifierTexture;\r\n assert(undefined !== source || undefined !== volClass);\r\n if (undefined !== source) {\r\n source.getParams(scratchColorParams);\r\n } else {\r\n scratchColorParams[0] = 6.0; // Volume classifier, by element color.\r\n scratchColorParams[1] = 0.5; // used for alpha value\r\n scratchColorParams[2] = 0.0; // Not used for volume.\r\n scratchColorParams[3] = 0.0; // Not used for volume.\r\n }\r\n uniform.setUniform4fv(scratchColorParams);\r\n });\r\n });\r\n\r\n if (isThematic === IsThematic.No) {\r\n frag.addUniform(\"u_pClassPointCloud\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassPointCloud\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier;\r\n const isPointCloud = undefined !== classifier && classifier.isClassifyingPointCloud;\r\n uniform.setUniform1i(isPointCloud ? 1 : 0);\r\n });\r\n });\r\n }\r\n\r\n addClassifierFlash(frag);\r\n\r\n if (translucent)\r\n // We will never call the shaders for volume classifiers with translucency,\r\n // so use a different version of the function which does not use glFragCoord to reduce the varyings count\r\n frag.addFunction(volClassTranslucentColor);\r\n else {\r\n addWindowToTexCoords(frag);\r\n frag.addFunction(volClassOpaqueColor);\r\n }\r\n\r\n addShaderFlags(builder);\r\n\r\n frag.set(FragmentShaderComponent.ApplyPlanarClassifier, (isThematic === IsThematic.No) ? applyPlanarClassificationColor : applyPlanarClassificationColorForThematic);\r\n}\r\n\r\n/** @internal */\r\nexport function addFeaturePlanarClassifier(builder: ProgramBuilder) {\r\n const frag = builder.frag;\r\n frag.addUniform(\"u_batchBase\", VariableType.Vec4, (prog) => { // TBD. Instancing.\r\n prog.addGraphicUniform(\"u_batchBase\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier;\r\n if (classifier !== undefined) {\r\n scratchBatchBaseId[0] = classifier.baseBatchId;\r\n scratchBatchBaseComponents[0] = scratchBytes[0];\r\n scratchBatchBaseComponents[1] = scratchBytes[1];\r\n scratchBatchBaseComponents[2] = scratchBytes[2];\r\n scratchBatchBaseComponents[3] = scratchBytes[3];\r\n }\r\n uniform.setUniform4fv(scratchBatchBaseComponents);\r\n });\r\n });\r\n frag.set(FragmentShaderComponent.OverrideFeatureId, overrideFeatureId);\r\n frag.addFunction(addUInt32s);\r\n}\r\n\r\n/** @internal */\r\nexport function addHilitePlanarClassifier(builder: ProgramBuilder, supportTextures = true) {\r\n addPlanarClassifierCommon(builder);\r\n const frag = builder.frag;\r\n frag.addUniform(\"s_pClassHiliteSampler\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"s_pClassHiliteSampler\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier!;\r\n assert(undefined !== classifier && undefined !== classifier.hiliteTexture);\r\n classifier.hiliteTexture.texture.bindSampler(uniform, TextureUnit.PlanarClassificationHilite);\r\n });\r\n });\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, supportTextures ? computeClassifiedSurfaceHiliteColor : computeClassifiedHiliteColor);\r\n}\r\n\r\n// NonLocatable flag is put in upper bit of blue component when drawing the classification texture.\r\nconst encodeNonLocatableWithFeatures = `\r\nvec4 encodeNonLocatable(vec4 clr) {\r\n float encoded_b = (floor(clr.b * 127.0) + float(extractNthBit(floor(v_feature_emphasis + 0.5), kEmphBit_NonLocatable)) * 128.0) / 255.0;\r\n return vec4(clr.r, clr.g, encoded_b, clr.a);\r\n}\r\n`;\r\n\r\nconst encodeNonLocatable = `\r\nvec4 encodeNonLocatable(vec4 clr) {\r\n float encoded_b = floor(clr.b * 127.0) / 255.0;\r\n return vec4(clr.r, clr.g, encoded_b, clr.a);\r\n}\r\n`;\r\n\r\nconst overrideClassifierColorPrelude = `\r\n if (0.0 == u_planarClassifierInsideMode)\r\n return currentColor;\r\n\r\n if (0.0 == currentColor.a)\r\n return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));\r\n`;\r\n\r\nconst overrideClassifierEmphasis = `\r\n if (kClassifierDisplay_Element != u_planarClassifierInsideMode) {\r\n float emph = floor(v_feature_emphasis + 0.5);\r\n if (0.0 != emph)\r\n return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), 0.0, 0.5));\r\n }\r\n`;\r\n\r\nconst overrideClassifierColorPostlude = `\r\n return encodeNonLocatable(currentColor);\r\n`;\r\n\r\nconst overrideClassifierWithFeatures = overrideClassifierColorPrelude + overrideClassifierEmphasis + overrideClassifierColorPostlude;\r\nconst overrideClassifierForClip = overrideClassifierColorPrelude + overrideClassifierColorPostlude;\r\n\r\nconst overrideClassifierColorPreludeForThematic = `\r\n if (0.0 == u_planarClassifierInsideMode)\r\n return currentColor;\r\n\r\n if (0.0 == currentColor.a)\r\n return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));\r\n\r\n bool isElem = kClassifierDisplay_Element == u_planarClassifierInsideMode;\r\n`;\r\n\r\nconst overrideClassifierEmphasisForThematic = `\r\n float emph = floor(v_feature_emphasis + 0.5);\r\n if (0.0 != emph)\r\n return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), isElem ? currentColor.a : 0.0, isElem ? 1.0 : 0.5));\r\n else if (kClassifierDisplay_Element == u_planarClassifierInsideMode)\r\n return encodeNonLocatable(vec4(0.0, 0.0, currentColor.a, 1.0));\r\n`;\r\n\r\n// Thematic classifiers use alpha of 1 to blend; we just want thematic colors to largely win out except when selecting and flashing classifiers.\r\nconst overrideClassifierColorPostludeClipForThematic = `\r\n return encodeNonLocatable(isElem ? vec4(0.0, 0.0, 1.0, 1.0) : currentColor);\r\n`;\r\n\r\nconst overrideClassifierWithFeaturesForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierEmphasisForThematic + overrideClassifierColorPostlude;\r\nconst overrideClassifierForClipForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierColorPostludeClipForThematic;\r\n\r\n/** The classified geometry needs some information about the classifier geometry. The classified fragment shader outputs special values that do not represent valid RGB+A combinations when using\r\n * pre-multiplied alpha. The alpha channel will be 0.5, and the red, green, and/or blue channels will be 1.0:\r\n * - Red: hilited.\r\n * - Green: flashed.\r\n * - Blue: fully-transparent. Indicates clipping mask (discard the classified pixel).\r\n * @internal\r\n */\r\nexport function addOverrideClassifierColor(builder: ProgramBuilder, isThematic: IsThematic): void {\r\n addPlanarClassifierConstants(builder.frag);\r\n builder.frag.addUniform(\"u_planarClassifierInsideMode\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_planarClassifierInsideMode\", (uniform, params) => {\r\n const classifier = params.target.currentlyDrawingClassifier;\r\n const override = undefined !== classifier ? classifier.insideDisplay : 0;\r\n uniform.setUniform1f(override);\r\n });\r\n });\r\n\r\n const haveOverrides = undefined !== builder.frag.find(\"v_feature_emphasis\");\r\n builder.frag.addFunction(haveOverrides ? encodeNonLocatableWithFeatures : encodeNonLocatable);\r\n if (isThematic === IsThematic.No)\r\n builder.frag.set(FragmentShaderComponent.OverrideColor, haveOverrides ? overrideClassifierWithFeatures : overrideClassifierForClip);\r\n else\r\n builder.frag.set(FragmentShaderComponent.OverrideColor, haveOverrides ? overrideClassifierWithFeaturesForThematic : overrideClassifierForClipForThematic);\r\n}\r\n"]}
1
+ {"version":3,"file":"PlanarClassification.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/PlanarClassification.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Matrix4d } from \"@itwin/core-geometry\";\r\nimport { SpatialClassifierInsideDisplay } from \"@itwin/core-common\";\r\nimport { Matrix4 } from \"../Matrix\";\r\nimport { PlanarClassifierContent } from \"../PlanarClassifier\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, ProgramBuilder, ShaderBuilder, VariableType } from \"../ShaderBuilder\";\r\nimport { IsThematic } from \"../TechniqueFlags\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { addShaderFlags, addUInt32s } from \"./Common\";\r\nimport { addClassifierFlash } from \"./FeatureSymbology\";\r\nimport { addWindowToTexCoords } from \"./Fragment\";\r\nimport { addInstancedRtcMatrix } from \"./Vertex\";\r\n\r\nexport const volClassOpaqueColor = `\r\nvec4 volClassColor(vec4 baseColor, float depth) {\r\n if (depth <= TEXTURE(s_pClassSampler, windowCoordsToTexCoords(gl_FragCoord.xy)).r)\r\n discard;\r\n return vec4(baseColor.rgb, 1.0);\r\n}\r\n`;\r\n\r\nconst volClassTranslucentColor = `\r\nvec4 volClassColor(vec4 baseColor, float depth) {\r\n return vec4(baseColor.rgb, depth); // This will never be called, so we use depth here to avoid a compile error\r\n}\r\n`;\r\n\r\nconst applyPlanarClassificationPrelude = `\r\nconst float dimScale = .7;\r\n\r\nvec2 classPos = v_pClassPos.xy / v_pClassPosW;\r\nbool isOutside = classPos.x < 0.0 || classPos.x > 1.0 || classPos.y < 0.0 || classPos.y > 1.0;\r\nif (u_pClassColorParams.x > kClassifierDisplay_Element) { // texture/terrain drape.\r\n if (u_pClassColorParams.x > kTextureDrape) {\r\n return volClassColor(baseColor, depth);\r\n }\r\n if (isOutside)\r\n discard;\r\n\r\n vec3 rgb = TEXTURE(s_pClassSampler, classPos.xy).rgb;\r\n return vec4(rgb, baseColor.a);\r\n}\r\nfloat imageCount = u_pClassColorParams.z;\r\n// If imageCount is less than zero - the mask sense is inverted - inside rather than outside. (masks only)\r\nbool doInvert = false;\r\nif (imageCount < 0.0) {\r\n imageCount = - imageCount;\r\n doInvert = true;\r\n}\r\n\r\nvec4 colorTexel = vec4(0);\r\nvec4 maskTexel = vec4(0);\r\nbool doMask = imageCount != kTextureContentClassifierOnly;\r\nbool doClassify = imageCount != kTextureContentMaskOnly;\r\n\r\nif (!isOutside) {\r\n if (imageCount == kTextureContentClassifierOnly) {\r\n colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));\r\n } else if (imageCount == kTextureContentMaskOnly) {\r\n maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y));\r\n } else if (imageCount == kTextureContentClassifierAndMask) {\r\n colorTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, classPos.y / imageCount));\r\n maskTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (2.0 + classPos.y) / imageCount));\r\n }\r\n if (colorTexel.b >= 0.5) {\r\n if (u_shaderFlags[kShaderBit_IgnoreNonLocatable]) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n colorTexel.b = (colorTexel.b * 255.0 - 128.0) / 127.0;\r\n } else {\r\n colorTexel.b *= 255.0 / 127.0;\r\n }\r\n}\r\nif (doMask) {\r\n bool masked = !isOutside && (maskTexel.r + maskTexel.g + maskTexel.b + maskTexel.a) > 0.0;\r\n if (doInvert)\r\n masked = !masked;\r\n if (masked) {\r\n float maskTransparency = u_pClassColorParams.w < 0.0 ? (1.0 - maskTexel.a) : u_pClassColorParams.w;\r\n if (maskTransparency <= 0.0) {\r\n discard;\r\n return vec4(0);\r\n }\r\n\r\n baseColor.a = baseColor.a * maskTransparency;\r\n }\r\n\r\n if (!doClassify)\r\n return baseColor;\r\n }\r\n\r\n bool isClassified = !isOutside && (colorTexel.r + colorTexel.g + colorTexel.b + colorTexel.a > 0.0);\r\n float param = isClassified ? u_pClassColorParams.x : u_pClassColorParams.y;\r\n if (kClassifierDisplay_Off == param) {\r\n discard;\r\n return vec4(0);\r\n}\r\n`\r\n ;\r\n\r\n// Currently we discard if classifier is pure black (acts as clipping mask).\r\n// These could be more efficiently handled with masks.\r\nconst applyPlanarClassificationColor = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template\r\n `\r\n float colorMix = u_pClassPointCloud ? .65 : .35;\r\n vec4 classColor;\r\n if (kClassifierDisplay_On == param)\r\n classColor = baseColor;\r\n else if (!isClassified || kClassifierDisplay_Dimmed == param)\r\n classColor = vec4(baseColor.rgb * dimScale, baseColor.a);\r\n else if (kClassifierDisplay_Hilite == param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), baseColor.a);\r\n else {\r\n if (colorTexel.b > colorTexel.a) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n\r\n // NB: colorTexel contains pre-multiplied alpha. We know it is greater than zero from above.\r\n float alpha = colorTexel.a * baseColor.a;\r\n vec3 rgb = colorTexel.rgb / colorTexel.a;\r\n rgb = mix(baseColor.rgb, rgb, colorMix);\r\n classColor = vec4(rgb, alpha);\r\n }\r\n\r\n if (kClassifierDisplay_Element != param && isClassified) {\r\n if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);\r\n\r\n if (colorTexel.g > colorTexel.a)\r\n classColor = applyClassifierFlash(classColor);\r\n }\r\n\r\n return classColor;\r\n`;\r\n\r\nconst applyPlanarClassificationColorForThematic = applyPlanarClassificationPrelude + // eslint-disable-line prefer-template\r\n `\r\n vec4 classColor = baseColor;\r\n\r\n if (kClassifierDisplay_Element == param) {\r\n if (colorTexel.b > colorTexel.a) {\r\n discard;\r\n return vec4(0.0);\r\n }\r\n\r\n // We stashed the element alpha in blue channel. Make sure to handle pre-multiplied alpha.\r\n baseColor.rgb = baseColor.rgb / baseColor.a;\r\n classColor = vec4(baseColor.rgb, colorTexel.b);\r\n classColor.rgb *= classColor.a;\r\n colorTexel.a = 0.5; // make conditions below potentially pass\r\n }\r\n\r\n if (isClassified) {\r\n if (colorTexel.r > colorTexel.a && kClassifierDisplay_Hilite != param)\r\n classColor = vec4(mix(baseColor.rgb, u_hilite_settings[0], u_hilite_settings[2][0]), 1.0);\r\n\r\n if (colorTexel.g > colorTexel.a)\r\n classColor = applyClassifierFlash(classColor);\r\n }\r\n\r\n return classColor;\r\n`;\r\n\r\nconst overrideFeatureId = `\r\n if (u_pClassColorParams.x != kClassifierDisplay_Element) return currentId;\r\n vec2 classPos = v_pClassPos / v_pClassPosW;\r\n vec4 featureTexel = TEXTURE(s_pClassSampler, vec2(classPos.x, (1.0 + classPos.y) / u_pClassColorParams.z));\r\n return (featureTexel == vec4(0)) ? currentId : addUInt32s(u_batchBase, featureTexel * 255.0) / 255.0;\r\n `;\r\n\r\nconst computeClassifiedHiliteColor = `\r\n vec2 classPos = v_pClassPos / v_pClassPosW;\r\n return TEXTURE(s_pClassHiliteSampler, classPos);\r\n`;\r\nconst computeClassifiedSurfaceHiliteColor = `\r\n if (isSurfaceBitSet(kSurfaceBit_HasTexture) && TEXTURE(s_texture, v_texCoord).a <= 0.15)\r\n return vec4(0.0);\r\n${computeClassifiedHiliteColor}`;\r\n\r\nconst computeClassifierPos = \"vec4 classProj = u_pClassProj * rawPosition; v_pClassPos = classProj.xy;\";\r\nconst computeInstancedClassifierPos = \"vec4 classProj = u_pClassProj * g_instancedRtcMatrix * rawPosition; v_pClassPos = classProj.xy;\";\r\nconst computeClassifierPosW = \"v_pClassPosW = classProj.w;\";\r\n\r\nconst scratchBytes = new Uint8Array(4);\r\nconst scratchBatchBaseId = new Uint32Array(scratchBytes.buffer);\r\nconst scratchBatchBaseComponents = [0, 0, 0, 0];\r\nconst scratchColorParams = new Float32Array(4); // Unclassified scale, classified base scale, classified classifier scale, content/image count... MaskOnly = 1, ClassifierOnly = 2, ClassifierAndMask = 3\r\nconst scratchModel = Matrix4d.createIdentity();\r\nconst scratchModelProjection = Matrix4d.createIdentity();\r\nconst scratchMatrix = new Matrix4();\r\n\r\nfunction addPlanarClassifierCommon(builder: ProgramBuilder) {\r\n const vert = builder.vert;\r\n vert.addUniform(\"u_pClassProj\", VariableType.Mat4, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassProj\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape!;\r\n assert(undefined !== source || undefined !== params.target.activeVolumeClassifierTexture);\r\n if (undefined !== params.target.currentPlanarClassifierOrDrape) {\r\n source.projectionMatrix.multiplyMatrixMatrix(Matrix4d.createTransform(params.target.currentTransform, scratchModel), scratchModelProjection);\r\n scratchMatrix.initFromMatrix4d(scratchModelProjection);\r\n } else\r\n scratchMatrix.initIdentity(); // needs to be identity for volume classifiers\r\n uniform.setMatrix4(scratchMatrix);\r\n });\r\n });\r\n\r\n if (vert.usesInstancedGeometry)\r\n addInstancedRtcMatrix(vert);\r\n\r\n builder.addInlineComputedVarying(\"v_pClassPos\", VariableType.Vec2, vert.usesInstancedGeometry ? computeInstancedClassifierPos : computeClassifierPos);\r\n builder.addInlineComputedVarying(\"v_pClassPosW\", VariableType.Float, computeClassifierPosW);\r\n\r\n addPlanarClassifierConstants(builder.frag);\r\n}\r\n\r\nfunction addPlanarClassifierConstants(builder: ShaderBuilder) {\r\n builder.addDefine(\"kClassifierDisplay_Off\", SpatialClassifierInsideDisplay.Off.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_On\", SpatialClassifierInsideDisplay.On.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Dimmed\", SpatialClassifierInsideDisplay.Dimmed.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Hilite\", SpatialClassifierInsideDisplay.Hilite.toFixed(1));\r\n builder.addDefine(\"kClassifierDisplay_Element\", SpatialClassifierInsideDisplay.ElementColor.toFixed(1));\r\n const td = SpatialClassifierInsideDisplay.ElementColor + 1;\r\n builder.addDefine(\"kTextureDrape\", td.toFixed(1));\r\n builder.addDefine(\"kTextureContentClassifierOnly\", PlanarClassifierContent.ClassifierOnly.toFixed(1));\r\n builder.addDefine(\"kTextureContentMaskOnly\", PlanarClassifierContent.MaskOnly.toFixed(1));\r\n builder.addDefine(\"kTextureContentClassifierAndMask\", PlanarClassifierContent.ClassifierAndMask.toFixed(1));\r\n}\r\n\r\n/** @internal */\r\nexport function addColorPlanarClassifier(builder: ProgramBuilder, translucent: boolean, isThematic: IsThematic) {\r\n addPlanarClassifierCommon(builder);\r\n const frag = builder.frag;\r\n frag.addUniform(\"s_pClassSampler\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"s_pClassSampler\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape;\r\n const volClass = params.target.activeVolumeClassifierTexture;\r\n assert(undefined !== source || undefined !== volClass);\r\n if (source) {\r\n assert(undefined !== source.texture);\r\n source.texture.texture.bindSampler(uniform, TextureUnit.PlanarClassification);\r\n } else\r\n Texture2DHandle.bindSampler(uniform, volClass!, TextureUnit.PlanarClassification);\r\n });\r\n });\r\n\r\n frag.addUniform(\"u_pClassColorParams\", VariableType.Vec4, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassColorParams\", (uniform, params) => {\r\n const source = params.target.currentPlanarClassifierOrDrape;\r\n const volClass = params.target.activeVolumeClassifierTexture;\r\n assert(undefined !== source || undefined !== volClass);\r\n if (undefined !== source) {\r\n source.getParams(scratchColorParams);\r\n } else {\r\n scratchColorParams[0] = 6.0; // Volume classifier, by element color.\r\n scratchColorParams[1] = 0.5; // used for alpha value\r\n scratchColorParams[2] = 0.0; // Not used for volume.\r\n scratchColorParams[3] = 0.0; // Not used for volume.\r\n }\r\n uniform.setUniform4fv(scratchColorParams);\r\n });\r\n });\r\n\r\n if (isThematic === IsThematic.No) {\r\n frag.addUniform(\"u_pClassPointCloud\", VariableType.Boolean, (prog) => {\r\n prog.addGraphicUniform(\"u_pClassPointCloud\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier;\r\n const isPointCloud = undefined !== classifier && classifier.isClassifyingPointCloud;\r\n uniform.setUniform1i(isPointCloud ? 1 : 0);\r\n });\r\n });\r\n }\r\n\r\n addClassifierFlash(frag);\r\n\r\n if (translucent)\r\n // We will never call the shaders for volume classifiers with translucency,\r\n // so use a different version of the function which does not use glFragCoord to reduce the varyings count\r\n frag.addFunction(volClassTranslucentColor);\r\n else {\r\n addWindowToTexCoords(frag);\r\n frag.addFunction(volClassOpaqueColor);\r\n }\r\n\r\n addShaderFlags(builder);\r\n\r\n frag.set(FragmentShaderComponent.ApplyPlanarClassifier, (isThematic === IsThematic.No) ? applyPlanarClassificationColor : applyPlanarClassificationColorForThematic);\r\n}\r\n\r\n/** @internal */\r\nexport function addFeaturePlanarClassifier(builder: ProgramBuilder) {\r\n const frag = builder.frag;\r\n frag.addUniform(\"u_batchBase\", VariableType.Vec4, (prog) => { // TBD. Instancing.\r\n prog.addGraphicUniform(\"u_batchBase\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier;\r\n if (classifier !== undefined) {\r\n scratchBatchBaseId[0] = classifier.baseBatchId;\r\n scratchBatchBaseComponents[0] = scratchBytes[0];\r\n scratchBatchBaseComponents[1] = scratchBytes[1];\r\n scratchBatchBaseComponents[2] = scratchBytes[2];\r\n scratchBatchBaseComponents[3] = scratchBytes[3];\r\n }\r\n uniform.setUniform4fv(scratchBatchBaseComponents);\r\n });\r\n });\r\n frag.set(FragmentShaderComponent.OverrideFeatureId, overrideFeatureId);\r\n frag.addFunction(addUInt32s);\r\n}\r\n\r\n/** @internal */\r\nexport function addHilitePlanarClassifier(builder: ProgramBuilder, supportTextures = true) {\r\n addPlanarClassifierCommon(builder);\r\n const frag = builder.frag;\r\n frag.addUniform(\"s_pClassHiliteSampler\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"s_pClassHiliteSampler\", (uniform, params) => {\r\n const classifier = params.target.currentPlanarClassifier!;\r\n assert(undefined !== classifier && undefined !== classifier.hiliteTexture);\r\n classifier.hiliteTexture.texture.bindSampler(uniform, TextureUnit.PlanarClassificationHilite);\r\n });\r\n });\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, supportTextures ? computeClassifiedSurfaceHiliteColor : computeClassifiedHiliteColor);\r\n}\r\n\r\n// NonLocatable flag is put in upper bit of blue component when drawing the classification texture.\r\nconst encodeNonLocatableWithFeatures = `\r\nvec4 encodeNonLocatable(vec4 clr) {\r\n float encoded_b = (floor(clr.b * 127.0) + float(extractNthBit(floor(v_feature_emphasis + 0.5), kEmphBit_NonLocatable)) * 128.0) / 255.0;\r\n return vec4(clr.r, clr.g, encoded_b, clr.a);\r\n}\r\n`;\r\n\r\nconst encodeNonLocatable = `\r\nvec4 encodeNonLocatable(vec4 clr) {\r\n float encoded_b = floor(clr.b * 127.0) / 255.0;\r\n return vec4(clr.r, clr.g, encoded_b, clr.a);\r\n}\r\n`;\r\n\r\nconst overrideClassifierColorPrelude = `\r\n if (0.0 == u_planarClassifierInsideMode)\r\n return currentColor;\r\n\r\n if (0.0 == currentColor.a)\r\n return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));\r\n`;\r\n\r\nconst overrideClassifierEmphasis = `\r\n if (kClassifierDisplay_Element != u_planarClassifierInsideMode) {\r\n float emph = floor(v_feature_emphasis + 0.5);\r\n if (0.0 != emph)\r\n return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), 0.0, 0.5));\r\n }\r\n`;\r\n\r\nconst overrideClassifierColorPostlude = `\r\n return encodeNonLocatable(currentColor);\r\n`;\r\n\r\nconst overrideClassifierWithFeatures = overrideClassifierColorPrelude + overrideClassifierEmphasis + overrideClassifierColorPostlude;\r\nconst overrideClassifierForClip = overrideClassifierColorPrelude + overrideClassifierColorPostlude;\r\n\r\nconst overrideClassifierColorPreludeForThematic = `\r\n if (0.0 == u_planarClassifierInsideMode)\r\n return currentColor;\r\n\r\n if (0.0 == currentColor.a)\r\n return encodeNonLocatable(vec4(0.0, 0.0, 1.0, 0.5));\r\n\r\n bool isElem = kClassifierDisplay_Element == u_planarClassifierInsideMode;\r\n`;\r\n\r\nconst overrideClassifierEmphasisForThematic = `\r\n float emph = floor(v_feature_emphasis + 0.5);\r\n if (0.0 != emph)\r\n return encodeNonLocatable(vec4(extractNthBit(emph, kEmphBit_Hilite), extractNthBit(emph, kEmphBit_Flash), isElem ? currentColor.a : 0.0, isElem ? 1.0 : 0.5));\r\n else if (kClassifierDisplay_Element == u_planarClassifierInsideMode)\r\n return encodeNonLocatable(vec4(0.0, 0.0, currentColor.a, 1.0));\r\n`;\r\n\r\n// Thematic classifiers use alpha of 1 to blend; we just want thematic colors to largely win out except when selecting and flashing classifiers.\r\nconst overrideClassifierColorPostludeClipForThematic = `\r\n return encodeNonLocatable(isElem ? vec4(0.0, 0.0, 1.0, 1.0) : currentColor);\r\n`;\r\n\r\nconst overrideClassifierWithFeaturesForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierEmphasisForThematic + overrideClassifierColorPostlude;\r\nconst overrideClassifierForClipForThematic = overrideClassifierColorPreludeForThematic + overrideClassifierColorPostludeClipForThematic;\r\n\r\n/** The classified geometry needs some information about the classifier geometry. The classified fragment shader outputs special values that do not represent valid RGB+A combinations when using\r\n * pre-multiplied alpha. The alpha channel will be 0.5, and the red, green, and/or blue channels will be 1.0:\r\n * - Red: hilited.\r\n * - Green: flashed.\r\n * - Blue: fully-transparent. Indicates clipping mask (discard the classified pixel).\r\n * @internal\r\n */\r\nexport function addOverrideClassifierColor(builder: ProgramBuilder, isThematic: IsThematic): void {\r\n addPlanarClassifierConstants(builder.frag);\r\n builder.frag.addUniform(\"u_planarClassifierInsideMode\", VariableType.Float, (prog) => {\r\n prog.addGraphicUniform(\"u_planarClassifierInsideMode\", (uniform, params) => {\r\n const classifier = params.target.currentlyDrawingClassifier;\r\n const override = undefined !== classifier ? classifier.insideDisplay : 0;\r\n uniform.setUniform1f(override);\r\n });\r\n });\r\n\r\n const haveOverrides = undefined !== builder.frag.find(\"v_feature_emphasis\");\r\n builder.frag.addFunction(haveOverrides ? encodeNonLocatableWithFeatures : encodeNonLocatable);\r\n if (isThematic === IsThematic.No)\r\n builder.frag.set(FragmentShaderComponent.OverrideColor, haveOverrides ? overrideClassifierWithFeatures : overrideClassifierForClip);\r\n else\r\n builder.frag.set(FragmentShaderComponent.OverrideColor, haveOverrides ? overrideClassifierWithFeaturesForThematic : overrideClassifierForClipForThematic);\r\n}\r\n"]}
@@ -7,6 +7,7 @@
7
7
  * @module WebGL
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.default = createPlanarGridProgram;
10
11
  const RenderSystem_1 = require("../../RenderSystem");
11
12
  const AttributeMap_1 = require("../AttributeMap");
12
13
  const ShaderBuilder_1 = require("../ShaderBuilder");
@@ -84,5 +85,4 @@ function createPlanarGridProgram(context) {
84
85
  });
85
86
  return builder.buildProgram(context);
86
87
  }
87
- exports.default = createPlanarGridProgram;
88
88
  //# sourceMappingURL=PlanarGrid.js.map