@itwin/core-frontend 4.0.0-dev.77 → 4.0.0-dev.80

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 (879) hide show
  1. package/lib/cjs/AccuDraw.js.map +1 -1
  2. package/lib/cjs/AccuSnap.js.map +1 -1
  3. package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
  4. package/lib/cjs/ApproximateTerrainHeightsProps.js.map +1 -1
  5. package/lib/cjs/AuxCoordSys.js.map +1 -1
  6. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  7. package/lib/cjs/BingLocation.js.map +1 -1
  8. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  9. package/lib/cjs/BriefcaseTxns.js.map +1 -1
  10. package/lib/cjs/CategorySelectorState.js.map +1 -1
  11. package/lib/cjs/ChangeFlags.js.map +1 -1
  12. package/lib/cjs/CheckpointConnection.js.map +1 -1
  13. package/lib/cjs/CoordSystem.js.map +1 -1
  14. package/lib/cjs/DecorationsCache.js.map +1 -1
  15. package/lib/cjs/DevTools.js.map +1 -1
  16. package/lib/cjs/DisplayStyleState.js.map +1 -1
  17. package/lib/cjs/DrawingViewState.js +5 -5
  18. package/lib/cjs/DrawingViewState.js.map +1 -1
  19. package/lib/cjs/ElementLocateManager.js.map +1 -1
  20. package/lib/cjs/EmphasizeElements.js.map +1 -1
  21. package/lib/cjs/EntityState.js.map +1 -1
  22. package/lib/cjs/EnvironmentDecorations.d.ts +2 -2
  23. package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -1
  24. package/lib/cjs/EnvironmentDecorations.js +10 -6
  25. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  26. package/lib/cjs/FeatureOverrideProvider.js.map +1 -1
  27. package/lib/cjs/FlashSettings.js.map +1 -1
  28. package/lib/cjs/FrontendHubAccess.js.map +1 -1
  29. package/lib/cjs/FrontendLoggerCategory.js.map +1 -1
  30. package/lib/cjs/Frustum2d.js.map +1 -1
  31. package/lib/cjs/FrustumAnimator.js.map +1 -1
  32. package/lib/cjs/FuzzySearch.js.map +1 -1
  33. package/lib/cjs/GeoServices.js.map +1 -1
  34. package/lib/cjs/GlobeAnimator.js.map +1 -1
  35. package/lib/cjs/GraphicalEditingScope.js.map +1 -1
  36. package/lib/cjs/HitDetail.js.map +1 -1
  37. package/lib/cjs/IModelApp.js.map +1 -1
  38. package/lib/cjs/IModelConnection.js +23 -23
  39. package/lib/cjs/IModelConnection.js.map +1 -1
  40. package/lib/cjs/IModelRoutingContext.js.map +1 -1
  41. package/lib/cjs/IModeljs-css.js +133 -133
  42. package/lib/cjs/IModeljs-css.js.map +1 -1
  43. package/lib/cjs/ImageUtil.js.map +1 -1
  44. package/lib/cjs/IpcApp.js.map +1 -1
  45. package/lib/cjs/LinePlaneIntersect.js.map +1 -1
  46. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  47. package/lib/cjs/MarginPercent.js.map +1 -1
  48. package/lib/cjs/Marker.js.map +1 -1
  49. package/lib/cjs/ModelSelectorState.js.map +1 -1
  50. package/lib/cjs/NativeApp.js.map +1 -1
  51. package/lib/cjs/NativeAppLogger.js.map +1 -1
  52. package/lib/cjs/NoRenderApp.js.map +1 -1
  53. package/lib/cjs/NotificationManager.js.map +1 -1
  54. package/lib/cjs/PerModelCategoryVisibility.js.map +1 -1
  55. package/lib/cjs/PlanarClipMaskState.js.map +1 -1
  56. package/lib/cjs/RealityDataSource.js.map +1 -1
  57. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  58. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
  59. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  60. package/lib/cjs/SelectionSet.js.map +1 -1
  61. package/lib/cjs/SheetViewState.js.map +1 -1
  62. package/lib/cjs/SpatialViewState.js.map +1 -1
  63. package/lib/cjs/Sprites.js.map +1 -1
  64. package/lib/cjs/StandardView.js.map +1 -1
  65. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  66. package/lib/cjs/TentativePoint.js.map +1 -1
  67. package/lib/cjs/Tiles.js.map +1 -1
  68. package/lib/cjs/UserPreferences.js.map +1 -1
  69. package/lib/cjs/ViewAnimation.js.map +1 -1
  70. package/lib/cjs/ViewContext.js.map +1 -1
  71. package/lib/cjs/ViewCreator2d.js.map +1 -1
  72. package/lib/cjs/ViewCreator3d.js.map +1 -1
  73. package/lib/cjs/ViewGlobalLocation.js.map +1 -1
  74. package/lib/cjs/ViewManager.js.map +1 -1
  75. package/lib/cjs/ViewPose.js.map +1 -1
  76. package/lib/cjs/ViewRect.js.map +1 -1
  77. package/lib/cjs/ViewState.js.map +1 -1
  78. package/lib/cjs/ViewStatus.js.map +1 -1
  79. package/lib/cjs/ViewingSpace.js.map +1 -1
  80. package/lib/cjs/Viewport.js.map +1 -1
  81. package/lib/cjs/ViewportSync.js.map +1 -1
  82. package/lib/cjs/WebWorkerManager.js.map +1 -1
  83. package/lib/cjs/core-frontend.js.map +1 -1
  84. package/lib/cjs/extension/Extension.js.map +1 -1
  85. package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
  86. package/lib/cjs/extension/ExtensionHost.js.map +1 -1
  87. package/lib/cjs/extension/ExtensionImpl.js.map +1 -1
  88. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  89. package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -1
  90. package/lib/cjs/extension/providers/LocalExtensionProvider.js.map +1 -1
  91. package/lib/cjs/extension/providers/RemoteExtensionProvider.js.map +1 -1
  92. package/lib/cjs/gltf/GltfModel.js.map +1 -1
  93. package/lib/cjs/gltf/GltfParser.js.map +1 -1
  94. package/lib/cjs/gltf/GltfSchema.js.map +1 -1
  95. package/lib/cjs/properties/AngleDescription.js.map +1 -1
  96. package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
  97. package/lib/cjs/properties/LengthDescription.js.map +1 -1
  98. package/lib/cjs/public/scripts/checkbrowser.js +24 -24
  99. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  100. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  101. package/lib/cjs/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
  102. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  103. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -1
  104. package/lib/cjs/quantity-formatting/UnitsData.js.map +1 -1
  105. package/lib/cjs/render/CanvasDecoration.js.map +1 -1
  106. package/lib/cjs/render/Decorations.js.map +1 -1
  107. package/lib/cjs/render/FeatureSymbology.js.map +1 -1
  108. package/lib/cjs/render/FrameStats.js.map +1 -1
  109. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  110. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  111. package/lib/cjs/render/GraphicPrimitive.js.map +1 -1
  112. package/lib/cjs/render/InstancedGraphicParams.js.map +1 -1
  113. package/lib/cjs/render/MockRender.js.map +1 -1
  114. package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
  115. package/lib/cjs/render/Pixel.js.map +1 -1
  116. package/lib/cjs/render/RealityMeshGraphicParams.js.map +1 -1
  117. package/lib/cjs/render/RealityMeshParams.js.map +1 -1
  118. package/lib/cjs/render/RenderClipVolume.js.map +1 -1
  119. package/lib/cjs/render/RenderGraphic.js.map +1 -1
  120. package/lib/cjs/render/RenderMaterial.js.map +1 -1
  121. package/lib/cjs/render/RenderMemory.js.map +1 -1
  122. package/lib/cjs/render/RenderPlan.d.ts +14 -2
  123. package/lib/cjs/render/RenderPlan.d.ts.map +1 -1
  124. package/lib/cjs/render/RenderPlan.js +33 -4
  125. package/lib/cjs/render/RenderPlan.js.map +1 -1
  126. package/lib/cjs/render/RenderPlanarClassifier.js.map +1 -1
  127. package/lib/cjs/render/RenderSystem.js.map +1 -1
  128. package/lib/cjs/render/RenderTarget.js.map +1 -1
  129. package/lib/cjs/render/RenderTexture.js.map +1 -1
  130. package/lib/cjs/render/Scene.js.map +1 -1
  131. package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
  132. package/lib/cjs/render/UpsampleRealityMeshParams.js.map +1 -1
  133. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  134. package/lib/cjs/render/primitives/AuxChannelTable.js.map +1 -1
  135. package/lib/cjs/render/primitives/ColorMap.js.map +1 -1
  136. package/lib/cjs/render/primitives/DisplayParams.js.map +1 -1
  137. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
  138. package/lib/cjs/render/primitives/PointCloudPrimitive.js.map +1 -1
  139. package/lib/cjs/render/primitives/PointStringParams.js.map +1 -1
  140. package/lib/cjs/render/primitives/Polyface.js.map +1 -1
  141. package/lib/cjs/render/primitives/PolylineParams.js.map +1 -1
  142. package/lib/cjs/render/primitives/Primitives.js.map +1 -1
  143. package/lib/cjs/render/primitives/Strokes.js.map +1 -1
  144. package/lib/cjs/render/primitives/SurfaceParams.js.map +1 -1
  145. package/lib/cjs/render/primitives/VertexKey.js.map +1 -1
  146. package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
  147. package/lib/cjs/render/primitives/VertexTableSplitter.js.map +1 -1
  148. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  149. package/lib/cjs/render/primitives/geometry/GeometryList.js.map +1 -1
  150. package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  151. package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  152. package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
  153. package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  154. package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  155. package/lib/cjs/render/webgl/AtmosphereUniforms.d.ts +48 -0
  156. package/lib/cjs/render/webgl/AtmosphereUniforms.d.ts.map +1 -0
  157. package/lib/cjs/render/webgl/AtmosphereUniforms.js +152 -0
  158. package/lib/cjs/render/webgl/AtmosphereUniforms.js.map +1 -0
  159. package/lib/cjs/render/webgl/AttributeBuffers.js.map +1 -1
  160. package/lib/cjs/render/webgl/AttributeMap.js.map +1 -1
  161. package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
  162. package/lib/cjs/render/webgl/BatchState.js.map +1 -1
  163. package/lib/cjs/render/webgl/BatchUniforms.js.map +1 -1
  164. package/lib/cjs/render/webgl/BranchStack.js.map +1 -1
  165. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  166. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  167. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  168. package/lib/cjs/render/webgl/ClipStack.js.map +1 -1
  169. package/lib/cjs/render/webgl/ClipVolume.js.map +1 -1
  170. package/lib/cjs/render/webgl/ClippingProgram.js.map +1 -1
  171. package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
  172. package/lib/cjs/render/webgl/Diagnostics.js.map +1 -1
  173. package/lib/cjs/render/webgl/Disposable.js.map +1 -1
  174. package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
  175. package/lib/cjs/render/webgl/DrawCommand.js +2 -1
  176. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  177. package/lib/cjs/render/webgl/EDL.js.map +1 -1
  178. package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -1
  179. package/lib/cjs/render/webgl/EdgeSettings.js.map +1 -1
  180. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  181. package/lib/cjs/render/webgl/FloatRGBA.js.map +1 -1
  182. package/lib/cjs/render/webgl/FrameBuffer.js.map +1 -1
  183. package/lib/cjs/render/webgl/FrustumUniforms.js.map +1 -1
  184. package/lib/cjs/render/webgl/GL.js.map +1 -1
  185. package/lib/cjs/render/webgl/GLTimer.js.map +1 -1
  186. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  187. package/lib/cjs/render/webgl/HiliteUniforms.js.map +1 -1
  188. package/lib/cjs/render/webgl/IModelFrameLifecycle.js.map +1 -1
  189. package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  190. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  191. package/lib/cjs/render/webgl/Layer.js.map +1 -1
  192. package/lib/cjs/render/webgl/LayerCommands.js.map +1 -1
  193. package/lib/cjs/render/webgl/LightingUniforms.js.map +1 -1
  194. package/lib/cjs/render/webgl/LineCode.js.map +1 -1
  195. package/lib/cjs/render/webgl/Material.js.map +1 -1
  196. package/lib/cjs/render/webgl/Matrix.js.map +1 -1
  197. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  198. package/lib/cjs/render/webgl/MeshData.js.map +1 -1
  199. package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -1
  200. package/lib/cjs/render/webgl/PerformanceMetrics.js.map +1 -1
  201. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  202. package/lib/cjs/render/webgl/PlanarGrid.js.map +1 -1
  203. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  204. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  205. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  206. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  207. package/lib/cjs/render/webgl/Primitive.js.map +1 -1
  208. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  209. package/lib/cjs/render/webgl/RealityModelUniforms.js.map +1 -1
  210. package/lib/cjs/render/webgl/RenderBuffer.js.map +1 -1
  211. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  212. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  213. package/lib/cjs/render/webgl/RenderState.js.map +1 -1
  214. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  215. package/lib/cjs/render/webgl/ScratchDrawParams.js.map +1 -1
  216. package/lib/cjs/render/webgl/ScreenSpaceEffect.js.map +1 -1
  217. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +7 -5
  218. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  219. package/lib/cjs/render/webgl/ShaderBuilder.js +15 -5
  220. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  221. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  222. package/lib/cjs/render/webgl/ShadowUniforms.js.map +1 -1
  223. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  224. package/lib/cjs/render/webgl/StyleUniforms.js.map +1 -1
  225. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  226. package/lib/cjs/render/webgl/Sync.js.map +1 -1
  227. package/lib/cjs/render/webgl/System.js.map +1 -1
  228. package/lib/cjs/render/webgl/Target.d.ts +1 -0
  229. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  230. package/lib/cjs/render/webgl/Target.js +4 -0
  231. package/lib/cjs/render/webgl/Target.js.map +1 -1
  232. package/lib/cjs/render/webgl/TargetGraphics.js.map +1 -1
  233. package/lib/cjs/render/webgl/TargetUniforms.d.ts +2 -0
  234. package/lib/cjs/render/webgl/TargetUniforms.d.ts.map +1 -1
  235. package/lib/cjs/render/webgl/TargetUniforms.js +2 -0
  236. package/lib/cjs/render/webgl/TargetUniforms.js.map +1 -1
  237. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  238. package/lib/cjs/render/webgl/Technique.js +109 -16
  239. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  240. package/lib/cjs/render/webgl/TechniqueFlags.d.ts +7 -1
  241. package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
  242. package/lib/cjs/render/webgl/TechniqueFlags.js +10 -1
  243. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  244. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  245. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  246. package/lib/cjs/render/webgl/TextureDrape.js.map +1 -1
  247. package/lib/cjs/render/webgl/ThematicSensors.js.map +1 -1
  248. package/lib/cjs/render/webgl/ThematicUniforms.js.map +1 -1
  249. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  250. package/lib/cjs/render/webgl/VertexLUT.js.map +1 -1
  251. package/lib/cjs/render/webgl/ViewRectUniforms.js.map +1 -1
  252. package/lib/cjs/render/webgl/VisibleTileFeatures.js.map +1 -1
  253. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +154 -154
  254. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  255. package/lib/cjs/render/webgl/glsl/Animation.js +83 -83
  256. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  257. package/lib/cjs/render/webgl/glsl/Atmosphere.d.ts +7 -0
  258. package/lib/cjs/render/webgl/glsl/Atmosphere.d.ts.map +1 -0
  259. package/lib/cjs/render/webgl/glsl/Atmosphere.js +462 -0
  260. package/lib/cjs/render/webgl/glsl/Atmosphere.js.map +1 -0
  261. package/lib/cjs/render/webgl/glsl/Blur.js +37 -37
  262. package/lib/cjs/render/webgl/glsl/Blur.js.map +1 -1
  263. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +4 -4
  264. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  265. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +3 -3
  266. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  267. package/lib/cjs/render/webgl/glsl/Clipping.js +60 -60
  268. package/lib/cjs/render/webgl/glsl/Clipping.js.map +1 -1
  269. package/lib/cjs/render/webgl/glsl/Color.js +12 -12
  270. package/lib/cjs/render/webgl/glsl/Color.js.map +1 -1
  271. package/lib/cjs/render/webgl/glsl/Combine3Textures.js +7 -7
  272. package/lib/cjs/render/webgl/glsl/Combine3Textures.js.map +1 -1
  273. package/lib/cjs/render/webgl/glsl/CombineTextures.js +5 -5
  274. package/lib/cjs/render/webgl/glsl/CombineTextures.js.map +1 -1
  275. package/lib/cjs/render/webgl/glsl/Common.js +16 -16
  276. package/lib/cjs/render/webgl/glsl/Common.js.map +1 -1
  277. package/lib/cjs/render/webgl/glsl/Composite.js +71 -71
  278. package/lib/cjs/render/webgl/glsl/Composite.js.map +1 -1
  279. package/lib/cjs/render/webgl/glsl/CopyColor.js +6 -6
  280. package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
  281. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +3 -3
  282. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  283. package/lib/cjs/render/webgl/glsl/CopyStencil.js +4 -4
  284. package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
  285. package/lib/cjs/render/webgl/glsl/Decode.js +65 -65
  286. package/lib/cjs/render/webgl/glsl/Decode.js.map +1 -1
  287. package/lib/cjs/render/webgl/glsl/EDL.js +103 -103
  288. package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -1
  289. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +25 -25
  290. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  291. package/lib/cjs/render/webgl/glsl/Edge.js +146 -146
  292. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  293. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +233 -233
  294. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  295. package/lib/cjs/render/webgl/glsl/Fragment.js +41 -41
  296. package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
  297. package/lib/cjs/render/webgl/glsl/Instancing.js +21 -21
  298. package/lib/cjs/render/webgl/glsl/Instancing.js.map +1 -1
  299. package/lib/cjs/render/webgl/glsl/Lighting.js +92 -92
  300. package/lib/cjs/render/webgl/glsl/Lighting.js.map +1 -1
  301. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  302. package/lib/cjs/render/webgl/glsl/LookupTable.js +19 -19
  303. package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
  304. package/lib/cjs/render/webgl/glsl/Monochrome.js +13 -13
  305. package/lib/cjs/render/webgl/glsl/Monochrome.js.map +1 -1
  306. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +188 -188
  307. package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
  308. package/lib/cjs/render/webgl/glsl/PlanarGrid.js +22 -22
  309. package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
  310. package/lib/cjs/render/webgl/glsl/PointCloud.js +28 -28
  311. package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
  312. package/lib/cjs/render/webgl/glsl/PointString.js +9 -9
  313. package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
  314. package/lib/cjs/render/webgl/glsl/Polyline.js +213 -213
  315. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  316. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  317. package/lib/cjs/render/webgl/glsl/RealityMesh.js +87 -84
  318. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  319. package/lib/cjs/render/webgl/glsl/RenderPass.js.map +1 -1
  320. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +9 -9
  321. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  322. package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
  323. package/lib/cjs/render/webgl/glsl/SkySphere.d.ts +3 -2
  324. package/lib/cjs/render/webgl/glsl/SkySphere.d.ts.map +1 -1
  325. package/lib/cjs/render/webgl/glsl/SkySphere.js +195 -153
  326. package/lib/cjs/render/webgl/glsl/SkySphere.js.map +1 -1
  327. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +51 -51
  328. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  329. package/lib/cjs/render/webgl/glsl/Surface.js +240 -240
  330. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  331. package/lib/cjs/render/webgl/glsl/Thematic.js +134 -134
  332. package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
  333. package/lib/cjs/render/webgl/glsl/Translucency.js +19 -19
  334. package/lib/cjs/render/webgl/glsl/Translucency.js.map +1 -1
  335. package/lib/cjs/render/webgl/glsl/Vertex.js +73 -73
  336. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  337. package/lib/cjs/render/webgl/glsl/Viewport.js +38 -38
  338. package/lib/cjs/render/webgl/glsl/Viewport.js.map +1 -1
  339. package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
  340. package/lib/cjs/render/webgl/glsl/Wiremesh.js +10 -10
  341. package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -1
  342. package/lib/cjs/render-primitives.js.map +1 -1
  343. package/lib/cjs/request/Request.js.map +1 -1
  344. package/lib/cjs/tile/B3dmReader.js.map +1 -1
  345. package/lib/cjs/tile/BatchedTileIdMap.js.map +1 -1
  346. package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -1
  347. package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
  348. package/lib/cjs/tile/ContextShareProvider.js.map +1 -1
  349. package/lib/cjs/tile/DisclosedTileTreeSet.js.map +1 -1
  350. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  351. package/lib/cjs/tile/GltfReader.js.map +1 -1
  352. package/lib/cjs/tile/GraphicsCollector.js.map +1 -1
  353. package/lib/cjs/tile/I3dmReader.js.map +1 -1
  354. package/lib/cjs/tile/IModelTile.js.map +1 -1
  355. package/lib/cjs/tile/IModelTileRequestChannels.js.map +1 -1
  356. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  357. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  358. package/lib/cjs/tile/LRUTileList.js.map +1 -1
  359. package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -1
  360. package/lib/cjs/tile/PntsReader.d.ts +2 -2
  361. package/lib/cjs/tile/PntsReader.d.ts.map +1 -1
  362. package/lib/cjs/tile/PntsReader.js +10 -2
  363. package/lib/cjs/tile/PntsReader.js.map +1 -1
  364. package/lib/cjs/tile/RealityTile.js.map +1 -1
  365. package/lib/cjs/tile/RealityTileDrawArgs.js.map +1 -1
  366. package/lib/cjs/tile/RealityTileLoader.js +1 -1
  367. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  368. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  369. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  370. package/lib/cjs/tile/Tile.js.map +1 -1
  371. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  372. package/lib/cjs/tile/TileContent.js.map +1 -1
  373. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  374. package/lib/cjs/tile/TileGeometryCollector.js.map +1 -1
  375. package/lib/cjs/tile/TileParams.js.map +1 -1
  376. package/lib/cjs/tile/TileRequest.js.map +1 -1
  377. package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
  378. package/lib/cjs/tile/TileRequestChannels.js.map +1 -1
  379. package/lib/cjs/tile/TileStorage.js.map +1 -1
  380. package/lib/cjs/tile/TileTree.js.map +1 -1
  381. package/lib/cjs/tile/TileTreeOwner.js.map +1 -1
  382. package/lib/cjs/tile/TileTreeParams.js.map +1 -1
  383. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  384. package/lib/cjs/tile/TileTreeSupplier.js.map +1 -1
  385. package/lib/cjs/tile/TileUsageMarker.js.map +1 -1
  386. package/lib/cjs/tile/TileUser.js.map +1 -1
  387. package/lib/cjs/tile/TileUserSet.js.map +1 -1
  388. package/lib/cjs/tile/TiledGraphicsProvider.js.map +1 -1
  389. package/lib/cjs/tile/ViewFlagOverrides.js.map +1 -1
  390. package/lib/cjs/tile/internal.js.map +1 -1
  391. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
  392. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  393. package/lib/cjs/tile/map/BingElevation.js.map +1 -1
  394. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  395. package/lib/cjs/tile/map/EllipsoidTerrainProvider.js.map +1 -1
  396. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  397. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  398. package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  399. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  400. package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  401. package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  402. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  403. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  404. package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
  405. package/lib/cjs/tile/map/MapFeatureInfo.js.map +1 -1
  406. package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -1
  407. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  408. package/lib/cjs/tile/map/MapLayerImageryProvider.js +2 -2
  409. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  410. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  411. package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
  412. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  413. package/lib/cjs/tile/map/MapTileAvailability.js.map +1 -1
  414. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  415. package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  416. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  417. package/lib/cjs/tile/map/QuadId.js.map +1 -1
  418. package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
  419. package/lib/cjs/tile/map/TerrainProvider.js.map +1 -1
  420. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  421. package/lib/cjs/tile/map/WmsUtilities.js.map +1 -1
  422. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  423. package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
  424. package/lib/cjs/tools/ClipViewTool.js.map +1 -1
  425. package/lib/cjs/tools/EditManipulator.js.map +1 -1
  426. package/lib/cjs/tools/ElementSetTool.js.map +1 -1
  427. package/lib/cjs/tools/EventController.js.map +1 -1
  428. package/lib/cjs/tools/IdleTool.js.map +1 -1
  429. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  430. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  431. package/lib/cjs/tools/SelectTool.js.map +1 -1
  432. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  433. package/lib/cjs/tools/ToolAssistance.js.map +1 -1
  434. package/lib/cjs/tools/ToolSettings.js.map +1 -1
  435. package/lib/cjs/tools/ViewTool.js.map +1 -1
  436. package/lib/cjs/webgl.js.map +1 -1
  437. package/lib/esm/AccuDraw.js.map +1 -1
  438. package/lib/esm/AccuSnap.js.map +1 -1
  439. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  440. package/lib/esm/ApproximateTerrainHeightsProps.js.map +1 -1
  441. package/lib/esm/AuxCoordSys.js.map +1 -1
  442. package/lib/esm/BackgroundMapGeometry.js.map +1 -1
  443. package/lib/esm/BingLocation.js.map +1 -1
  444. package/lib/esm/BriefcaseConnection.js.map +1 -1
  445. package/lib/esm/BriefcaseTxns.js.map +1 -1
  446. package/lib/esm/CategorySelectorState.js.map +1 -1
  447. package/lib/esm/ChangeFlags.js.map +1 -1
  448. package/lib/esm/CheckpointConnection.js.map +1 -1
  449. package/lib/esm/CoordSystem.js.map +1 -1
  450. package/lib/esm/DecorationsCache.js.map +1 -1
  451. package/lib/esm/DevTools.js.map +1 -1
  452. package/lib/esm/DisplayStyleState.js.map +1 -1
  453. package/lib/esm/DrawingViewState.js +5 -5
  454. package/lib/esm/DrawingViewState.js.map +1 -1
  455. package/lib/esm/ElementLocateManager.js.map +1 -1
  456. package/lib/esm/EmphasizeElements.js.map +1 -1
  457. package/lib/esm/EntityState.js.map +1 -1
  458. package/lib/esm/EnvironmentDecorations.d.ts +2 -2
  459. package/lib/esm/EnvironmentDecorations.d.ts.map +1 -1
  460. package/lib/esm/EnvironmentDecorations.js +10 -6
  461. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  462. package/lib/esm/FeatureOverrideProvider.js.map +1 -1
  463. package/lib/esm/FlashSettings.js.map +1 -1
  464. package/lib/esm/FrontendHubAccess.js.map +1 -1
  465. package/lib/esm/FrontendLoggerCategory.js.map +1 -1
  466. package/lib/esm/Frustum2d.js.map +1 -1
  467. package/lib/esm/FrustumAnimator.js.map +1 -1
  468. package/lib/esm/FuzzySearch.js.map +1 -1
  469. package/lib/esm/GeoServices.js.map +1 -1
  470. package/lib/esm/GlobeAnimator.js.map +1 -1
  471. package/lib/esm/GraphicalEditingScope.js.map +1 -1
  472. package/lib/esm/HitDetail.js.map +1 -1
  473. package/lib/esm/IModelApp.js.map +1 -1
  474. package/lib/esm/IModelConnection.js +23 -23
  475. package/lib/esm/IModelConnection.js.map +1 -1
  476. package/lib/esm/IModelRoutingContext.js.map +1 -1
  477. package/lib/esm/IModeljs-css.js +133 -133
  478. package/lib/esm/IModeljs-css.js.map +1 -1
  479. package/lib/esm/ImageUtil.js.map +1 -1
  480. package/lib/esm/IpcApp.js.map +1 -1
  481. package/lib/esm/LinePlaneIntersect.js.map +1 -1
  482. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  483. package/lib/esm/MarginPercent.js.map +1 -1
  484. package/lib/esm/Marker.js.map +1 -1
  485. package/lib/esm/ModelSelectorState.js.map +1 -1
  486. package/lib/esm/NativeApp.js.map +1 -1
  487. package/lib/esm/NativeAppLogger.js.map +1 -1
  488. package/lib/esm/NoRenderApp.js.map +1 -1
  489. package/lib/esm/NotificationManager.js.map +1 -1
  490. package/lib/esm/PerModelCategoryVisibility.js.map +1 -1
  491. package/lib/esm/PlanarClipMaskState.js.map +1 -1
  492. package/lib/esm/RealityDataSource.js.map +1 -1
  493. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  494. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
  495. package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  496. package/lib/esm/SelectionSet.js.map +1 -1
  497. package/lib/esm/SheetViewState.js.map +1 -1
  498. package/lib/esm/SpatialViewState.js.map +1 -1
  499. package/lib/esm/Sprites.js.map +1 -1
  500. package/lib/esm/StandardView.js.map +1 -1
  501. package/lib/esm/SubCategoriesCache.js.map +1 -1
  502. package/lib/esm/TentativePoint.js.map +1 -1
  503. package/lib/esm/Tiles.js.map +1 -1
  504. package/lib/esm/UserPreferences.js.map +1 -1
  505. package/lib/esm/ViewAnimation.js.map +1 -1
  506. package/lib/esm/ViewContext.js.map +1 -1
  507. package/lib/esm/ViewCreator2d.js.map +1 -1
  508. package/lib/esm/ViewCreator3d.js.map +1 -1
  509. package/lib/esm/ViewGlobalLocation.js.map +1 -1
  510. package/lib/esm/ViewManager.js.map +1 -1
  511. package/lib/esm/ViewPose.js.map +1 -1
  512. package/lib/esm/ViewRect.js.map +1 -1
  513. package/lib/esm/ViewState.js.map +1 -1
  514. package/lib/esm/ViewStatus.js.map +1 -1
  515. package/lib/esm/ViewingSpace.js.map +1 -1
  516. package/lib/esm/Viewport.js.map +1 -1
  517. package/lib/esm/ViewportSync.js.map +1 -1
  518. package/lib/esm/WebWorkerManager.js.map +1 -1
  519. package/lib/esm/core-frontend.js.map +1 -1
  520. package/lib/esm/extension/Extension.js.map +1 -1
  521. package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
  522. package/lib/esm/extension/ExtensionHost.js.map +1 -1
  523. package/lib/esm/extension/ExtensionImpl.js.map +1 -1
  524. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  525. package/lib/esm/extension/providers/ExtensionLoadScript.js.map +1 -1
  526. package/lib/esm/extension/providers/LocalExtensionProvider.js.map +1 -1
  527. package/lib/esm/extension/providers/RemoteExtensionProvider.js.map +1 -1
  528. package/lib/esm/gltf/GltfModel.js.map +1 -1
  529. package/lib/esm/gltf/GltfParser.js.map +1 -1
  530. package/lib/esm/gltf/GltfSchema.js.map +1 -1
  531. package/lib/esm/properties/AngleDescription.js.map +1 -1
  532. package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
  533. package/lib/esm/properties/LengthDescription.js.map +1 -1
  534. package/lib/esm/public/scripts/checkbrowser.js +24 -24
  535. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  536. package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  537. package/lib/esm/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
  538. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  539. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -1
  540. package/lib/esm/quantity-formatting/UnitsData.js.map +1 -1
  541. package/lib/esm/render/CanvasDecoration.js.map +1 -1
  542. package/lib/esm/render/Decorations.js.map +1 -1
  543. package/lib/esm/render/FeatureSymbology.js.map +1 -1
  544. package/lib/esm/render/FrameStats.js.map +1 -1
  545. package/lib/esm/render/GraphicBranch.js.map +1 -1
  546. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  547. package/lib/esm/render/GraphicPrimitive.js.map +1 -1
  548. package/lib/esm/render/InstancedGraphicParams.js.map +1 -1
  549. package/lib/esm/render/MockRender.js.map +1 -1
  550. package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
  551. package/lib/esm/render/Pixel.js.map +1 -1
  552. package/lib/esm/render/RealityMeshGraphicParams.js.map +1 -1
  553. package/lib/esm/render/RealityMeshParams.js.map +1 -1
  554. package/lib/esm/render/RenderClipVolume.js.map +1 -1
  555. package/lib/esm/render/RenderGraphic.js.map +1 -1
  556. package/lib/esm/render/RenderMaterial.js.map +1 -1
  557. package/lib/esm/render/RenderMemory.js.map +1 -1
  558. package/lib/esm/render/RenderPlan.d.ts +14 -2
  559. package/lib/esm/render/RenderPlan.d.ts.map +1 -1
  560. package/lib/esm/render/RenderPlan.js +31 -3
  561. package/lib/esm/render/RenderPlan.js.map +1 -1
  562. package/lib/esm/render/RenderPlanarClassifier.js.map +1 -1
  563. package/lib/esm/render/RenderSystem.js.map +1 -1
  564. package/lib/esm/render/RenderTarget.js.map +1 -1
  565. package/lib/esm/render/RenderTexture.js.map +1 -1
  566. package/lib/esm/render/Scene.js.map +1 -1
  567. package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
  568. package/lib/esm/render/UpsampleRealityMeshParams.js.map +1 -1
  569. package/lib/esm/render/VisibleFeature.js.map +1 -1
  570. package/lib/esm/render/primitives/AuxChannelTable.js.map +1 -1
  571. package/lib/esm/render/primitives/ColorMap.js.map +1 -1
  572. package/lib/esm/render/primitives/DisplayParams.js.map +1 -1
  573. package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
  574. package/lib/esm/render/primitives/PointCloudPrimitive.js.map +1 -1
  575. package/lib/esm/render/primitives/PointStringParams.js.map +1 -1
  576. package/lib/esm/render/primitives/Polyface.js.map +1 -1
  577. package/lib/esm/render/primitives/PolylineParams.js.map +1 -1
  578. package/lib/esm/render/primitives/Primitives.js.map +1 -1
  579. package/lib/esm/render/primitives/Strokes.js.map +1 -1
  580. package/lib/esm/render/primitives/SurfaceParams.js.map +1 -1
  581. package/lib/esm/render/primitives/VertexKey.js.map +1 -1
  582. package/lib/esm/render/primitives/VertexTable.js.map +1 -1
  583. package/lib/esm/render/primitives/VertexTableSplitter.js.map +1 -1
  584. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  585. package/lib/esm/render/primitives/geometry/GeometryList.js.map +1 -1
  586. package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
  587. package/lib/esm/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
  588. package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
  589. package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
  590. package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
  591. package/lib/esm/render/webgl/AtmosphereUniforms.d.ts +48 -0
  592. package/lib/esm/render/webgl/AtmosphereUniforms.d.ts.map +1 -0
  593. package/lib/esm/render/webgl/AtmosphereUniforms.js +148 -0
  594. package/lib/esm/render/webgl/AtmosphereUniforms.js.map +1 -0
  595. package/lib/esm/render/webgl/AttributeBuffers.js.map +1 -1
  596. package/lib/esm/render/webgl/AttributeMap.js.map +1 -1
  597. package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
  598. package/lib/esm/render/webgl/BatchState.js.map +1 -1
  599. package/lib/esm/render/webgl/BatchUniforms.js.map +1 -1
  600. package/lib/esm/render/webgl/BranchStack.js.map +1 -1
  601. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  602. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  603. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  604. package/lib/esm/render/webgl/ClipStack.js.map +1 -1
  605. package/lib/esm/render/webgl/ClipVolume.js.map +1 -1
  606. package/lib/esm/render/webgl/ClippingProgram.js.map +1 -1
  607. package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
  608. package/lib/esm/render/webgl/Diagnostics.js.map +1 -1
  609. package/lib/esm/render/webgl/Disposable.js.map +1 -1
  610. package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
  611. package/lib/esm/render/webgl/DrawCommand.js +2 -1
  612. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  613. package/lib/esm/render/webgl/EDL.js.map +1 -1
  614. package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -1
  615. package/lib/esm/render/webgl/EdgeSettings.js.map +1 -1
  616. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  617. package/lib/esm/render/webgl/FloatRGBA.js.map +1 -1
  618. package/lib/esm/render/webgl/FrameBuffer.js.map +1 -1
  619. package/lib/esm/render/webgl/FrustumUniforms.js.map +1 -1
  620. package/lib/esm/render/webgl/GL.js.map +1 -1
  621. package/lib/esm/render/webgl/GLTimer.js.map +1 -1
  622. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  623. package/lib/esm/render/webgl/HiliteUniforms.js.map +1 -1
  624. package/lib/esm/render/webgl/IModelFrameLifecycle.js.map +1 -1
  625. package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
  626. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  627. package/lib/esm/render/webgl/Layer.js.map +1 -1
  628. package/lib/esm/render/webgl/LayerCommands.js.map +1 -1
  629. package/lib/esm/render/webgl/LightingUniforms.js.map +1 -1
  630. package/lib/esm/render/webgl/LineCode.js.map +1 -1
  631. package/lib/esm/render/webgl/Material.js.map +1 -1
  632. package/lib/esm/render/webgl/Matrix.js.map +1 -1
  633. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  634. package/lib/esm/render/webgl/MeshData.js.map +1 -1
  635. package/lib/esm/render/webgl/MeshGeometry.js.map +1 -1
  636. package/lib/esm/render/webgl/PerformanceMetrics.js.map +1 -1
  637. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  638. package/lib/esm/render/webgl/PlanarGrid.js.map +1 -1
  639. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  640. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  641. package/lib/esm/render/webgl/PointString.js.map +1 -1
  642. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  643. package/lib/esm/render/webgl/Primitive.js.map +1 -1
  644. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  645. package/lib/esm/render/webgl/RealityModelUniforms.js.map +1 -1
  646. package/lib/esm/render/webgl/RenderBuffer.js.map +1 -1
  647. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  648. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  649. package/lib/esm/render/webgl/RenderState.js.map +1 -1
  650. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  651. package/lib/esm/render/webgl/ScratchDrawParams.js.map +1 -1
  652. package/lib/esm/render/webgl/ScreenSpaceEffect.js.map +1 -1
  653. package/lib/esm/render/webgl/ShaderBuilder.d.ts +7 -5
  654. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  655. package/lib/esm/render/webgl/ShaderBuilder.js +15 -5
  656. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  657. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  658. package/lib/esm/render/webgl/ShadowUniforms.js.map +1 -1
  659. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  660. package/lib/esm/render/webgl/StyleUniforms.js.map +1 -1
  661. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
  662. package/lib/esm/render/webgl/Sync.js.map +1 -1
  663. package/lib/esm/render/webgl/System.js.map +1 -1
  664. package/lib/esm/render/webgl/Target.d.ts +1 -0
  665. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  666. package/lib/esm/render/webgl/Target.js +4 -0
  667. package/lib/esm/render/webgl/Target.js.map +1 -1
  668. package/lib/esm/render/webgl/TargetGraphics.js.map +1 -1
  669. package/lib/esm/render/webgl/TargetUniforms.d.ts +2 -0
  670. package/lib/esm/render/webgl/TargetUniforms.d.ts.map +1 -1
  671. package/lib/esm/render/webgl/TargetUniforms.js +2 -0
  672. package/lib/esm/render/webgl/TargetUniforms.js.map +1 -1
  673. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  674. package/lib/esm/render/webgl/Technique.js +110 -17
  675. package/lib/esm/render/webgl/Technique.js.map +1 -1
  676. package/lib/esm/render/webgl/TechniqueFlags.d.ts +7 -1
  677. package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
  678. package/lib/esm/render/webgl/TechniqueFlags.js +10 -1
  679. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  680. package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
  681. package/lib/esm/render/webgl/Texture.js.map +1 -1
  682. package/lib/esm/render/webgl/TextureDrape.js.map +1 -1
  683. package/lib/esm/render/webgl/ThematicSensors.js.map +1 -1
  684. package/lib/esm/render/webgl/ThematicUniforms.js.map +1 -1
  685. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  686. package/lib/esm/render/webgl/VertexLUT.js.map +1 -1
  687. package/lib/esm/render/webgl/ViewRectUniforms.js.map +1 -1
  688. package/lib/esm/render/webgl/VisibleTileFeatures.js.map +1 -1
  689. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +154 -154
  690. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  691. package/lib/esm/render/webgl/glsl/Animation.js +83 -83
  692. package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
  693. package/lib/esm/render/webgl/glsl/Atmosphere.d.ts +7 -0
  694. package/lib/esm/render/webgl/glsl/Atmosphere.d.ts.map +1 -0
  695. package/lib/esm/render/webgl/glsl/Atmosphere.js +458 -0
  696. package/lib/esm/render/webgl/glsl/Atmosphere.js.map +1 -0
  697. package/lib/esm/render/webgl/glsl/Blur.js +37 -37
  698. package/lib/esm/render/webgl/glsl/Blur.js.map +1 -1
  699. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +4 -4
  700. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  701. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +3 -3
  702. package/lib/esm/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  703. package/lib/esm/render/webgl/glsl/Clipping.js +60 -60
  704. package/lib/esm/render/webgl/glsl/Clipping.js.map +1 -1
  705. package/lib/esm/render/webgl/glsl/Color.js +12 -12
  706. package/lib/esm/render/webgl/glsl/Color.js.map +1 -1
  707. package/lib/esm/render/webgl/glsl/Combine3Textures.js +7 -7
  708. package/lib/esm/render/webgl/glsl/Combine3Textures.js.map +1 -1
  709. package/lib/esm/render/webgl/glsl/CombineTextures.js +5 -5
  710. package/lib/esm/render/webgl/glsl/CombineTextures.js.map +1 -1
  711. package/lib/esm/render/webgl/glsl/Common.js +16 -16
  712. package/lib/esm/render/webgl/glsl/Common.js.map +1 -1
  713. package/lib/esm/render/webgl/glsl/Composite.js +71 -71
  714. package/lib/esm/render/webgl/glsl/Composite.js.map +1 -1
  715. package/lib/esm/render/webgl/glsl/CopyColor.js +6 -6
  716. package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
  717. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +3 -3
  718. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  719. package/lib/esm/render/webgl/glsl/CopyStencil.js +4 -4
  720. package/lib/esm/render/webgl/glsl/CopyStencil.js.map +1 -1
  721. package/lib/esm/render/webgl/glsl/Decode.js +65 -65
  722. package/lib/esm/render/webgl/glsl/Decode.js.map +1 -1
  723. package/lib/esm/render/webgl/glsl/EDL.js +103 -103
  724. package/lib/esm/render/webgl/glsl/EDL.js.map +1 -1
  725. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +25 -25
  726. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  727. package/lib/esm/render/webgl/glsl/Edge.js +146 -146
  728. package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
  729. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +233 -233
  730. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  731. package/lib/esm/render/webgl/glsl/Fragment.js +41 -41
  732. package/lib/esm/render/webgl/glsl/Fragment.js.map +1 -1
  733. package/lib/esm/render/webgl/glsl/Instancing.js +21 -21
  734. package/lib/esm/render/webgl/glsl/Instancing.js.map +1 -1
  735. package/lib/esm/render/webgl/glsl/Lighting.js +92 -92
  736. package/lib/esm/render/webgl/glsl/Lighting.js.map +1 -1
  737. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  738. package/lib/esm/render/webgl/glsl/LookupTable.js +19 -19
  739. package/lib/esm/render/webgl/glsl/LookupTable.js.map +1 -1
  740. package/lib/esm/render/webgl/glsl/Monochrome.js +13 -13
  741. package/lib/esm/render/webgl/glsl/Monochrome.js.map +1 -1
  742. package/lib/esm/render/webgl/glsl/PlanarClassification.js +188 -188
  743. package/lib/esm/render/webgl/glsl/PlanarClassification.js.map +1 -1
  744. package/lib/esm/render/webgl/glsl/PlanarGrid.js +22 -22
  745. package/lib/esm/render/webgl/glsl/PlanarGrid.js.map +1 -1
  746. package/lib/esm/render/webgl/glsl/PointCloud.js +28 -28
  747. package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
  748. package/lib/esm/render/webgl/glsl/PointString.js +9 -9
  749. package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
  750. package/lib/esm/render/webgl/glsl/Polyline.js +213 -213
  751. package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
  752. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  753. package/lib/esm/render/webgl/glsl/RealityMesh.js +87 -84
  754. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  755. package/lib/esm/render/webgl/glsl/RenderPass.js.map +1 -1
  756. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +9 -9
  757. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  758. package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
  759. package/lib/esm/render/webgl/glsl/SkySphere.d.ts +3 -2
  760. package/lib/esm/render/webgl/glsl/SkySphere.d.ts.map +1 -1
  761. package/lib/esm/render/webgl/glsl/SkySphere.js +193 -151
  762. package/lib/esm/render/webgl/glsl/SkySphere.js.map +1 -1
  763. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +51 -51
  764. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  765. package/lib/esm/render/webgl/glsl/Surface.js +240 -240
  766. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  767. package/lib/esm/render/webgl/glsl/Thematic.js +134 -134
  768. package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
  769. package/lib/esm/render/webgl/glsl/Translucency.js +19 -19
  770. package/lib/esm/render/webgl/glsl/Translucency.js.map +1 -1
  771. package/lib/esm/render/webgl/glsl/Vertex.js +73 -73
  772. package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
  773. package/lib/esm/render/webgl/glsl/Viewport.js +38 -38
  774. package/lib/esm/render/webgl/glsl/Viewport.js.map +1 -1
  775. package/lib/esm/render/webgl/glsl/ViewportQuad.js.map +1 -1
  776. package/lib/esm/render/webgl/glsl/Wiremesh.js +10 -10
  777. package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -1
  778. package/lib/esm/render-primitives.js.map +1 -1
  779. package/lib/esm/request/Request.js.map +1 -1
  780. package/lib/esm/tile/B3dmReader.js.map +1 -1
  781. package/lib/esm/tile/BatchedTileIdMap.js.map +1 -1
  782. package/lib/esm/tile/CesiumAssetProvider.js.map +1 -1
  783. package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
  784. package/lib/esm/tile/ContextShareProvider.js.map +1 -1
  785. package/lib/esm/tile/DisclosedTileTreeSet.js.map +1 -1
  786. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  787. package/lib/esm/tile/GltfReader.js.map +1 -1
  788. package/lib/esm/tile/GraphicsCollector.js.map +1 -1
  789. package/lib/esm/tile/I3dmReader.js.map +1 -1
  790. package/lib/esm/tile/IModelTile.js.map +1 -1
  791. package/lib/esm/tile/IModelTileRequestChannels.js.map +1 -1
  792. package/lib/esm/tile/IModelTileTree.js.map +1 -1
  793. package/lib/esm/tile/ImdlReader.js.map +1 -1
  794. package/lib/esm/tile/LRUTileList.js.map +1 -1
  795. package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -1
  796. package/lib/esm/tile/PntsReader.d.ts +2 -2
  797. package/lib/esm/tile/PntsReader.d.ts.map +1 -1
  798. package/lib/esm/tile/PntsReader.js +10 -2
  799. package/lib/esm/tile/PntsReader.js.map +1 -1
  800. package/lib/esm/tile/RealityTile.js.map +1 -1
  801. package/lib/esm/tile/RealityTileDrawArgs.js.map +1 -1
  802. package/lib/esm/tile/RealityTileLoader.js +1 -1
  803. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  804. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  805. package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  806. package/lib/esm/tile/Tile.js.map +1 -1
  807. package/lib/esm/tile/TileAdmin.js.map +1 -1
  808. package/lib/esm/tile/TileContent.js.map +1 -1
  809. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  810. package/lib/esm/tile/TileGeometryCollector.js.map +1 -1
  811. package/lib/esm/tile/TileParams.js.map +1 -1
  812. package/lib/esm/tile/TileRequest.js.map +1 -1
  813. package/lib/esm/tile/TileRequestChannel.js.map +1 -1
  814. package/lib/esm/tile/TileRequestChannels.js.map +1 -1
  815. package/lib/esm/tile/TileStorage.js.map +1 -1
  816. package/lib/esm/tile/TileTree.js.map +1 -1
  817. package/lib/esm/tile/TileTreeOwner.js.map +1 -1
  818. package/lib/esm/tile/TileTreeParams.js.map +1 -1
  819. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  820. package/lib/esm/tile/TileTreeSupplier.js.map +1 -1
  821. package/lib/esm/tile/TileUsageMarker.js.map +1 -1
  822. package/lib/esm/tile/TileUser.js.map +1 -1
  823. package/lib/esm/tile/TileUserSet.js.map +1 -1
  824. package/lib/esm/tile/TiledGraphicsProvider.js.map +1 -1
  825. package/lib/esm/tile/ViewFlagOverrides.js.map +1 -1
  826. package/lib/esm/tile/internal.js.map +1 -1
  827. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
  828. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  829. package/lib/esm/tile/map/BingElevation.js.map +1 -1
  830. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  831. package/lib/esm/tile/map/EllipsoidTerrainProvider.js.map +1 -1
  832. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  833. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  834. package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
  835. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  836. package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
  837. package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  838. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  839. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  840. package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
  841. package/lib/esm/tile/map/MapFeatureInfo.js.map +1 -1
  842. package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -1
  843. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  844. package/lib/esm/tile/map/MapLayerImageryProvider.js +2 -2
  845. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  846. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  847. package/lib/esm/tile/map/MapLayerTileTreeReference.js.map +1 -1
  848. package/lib/esm/tile/map/MapTile.js.map +1 -1
  849. package/lib/esm/tile/map/MapTileAvailability.js.map +1 -1
  850. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  851. package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
  852. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  853. package/lib/esm/tile/map/QuadId.js.map +1 -1
  854. package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
  855. package/lib/esm/tile/map/TerrainProvider.js.map +1 -1
  856. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  857. package/lib/esm/tile/map/WmsUtilities.js.map +1 -1
  858. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  859. package/lib/esm/tools/AccuDrawTool.js.map +1 -1
  860. package/lib/esm/tools/ClipViewTool.js.map +1 -1
  861. package/lib/esm/tools/EditManipulator.js.map +1 -1
  862. package/lib/esm/tools/ElementSetTool.js.map +1 -1
  863. package/lib/esm/tools/EventController.js.map +1 -1
  864. package/lib/esm/tools/IdleTool.js.map +1 -1
  865. package/lib/esm/tools/MeasureTool.js.map +1 -1
  866. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  867. package/lib/esm/tools/SelectTool.js.map +1 -1
  868. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  869. package/lib/esm/tools/ToolAssistance.js.map +1 -1
  870. package/lib/esm/tools/ToolSettings.js.map +1 -1
  871. package/lib/esm/tools/ViewTool.js.map +1 -1
  872. package/lib/esm/webgl.js.map +1 -1
  873. package/lib/public/assets/MapLayerSources.json +25 -25
  874. package/lib/public/images/cesium-ion.svg +92 -92
  875. package/lib/public/images/imodeljs-icon.svg +2 -2
  876. package/lib/public/locales/en/CoreTools.json +477 -477
  877. package/lib/public/locales/en/iModelJs.json +170 -170
  878. package/lib/public/scripts/checkbrowser.js +24 -24
  879. package/package.json +18 -18
@@ -1 +1 @@
1
- {"version":3,"file":"HiliteUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/HiliteUniforms.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { Hilite } from \"@itwin/core-common\";\nimport { FloatRgb } from \"./FloatRGBA\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { Matrix3 } from \"./Matrix\";\nimport { desync, sync } from \"./Sync\";\n\n/** Maintains state for uniforms related to hilite and emphasis.\n * @internal\n */\nexport class HiliteUniforms {\n private readonly _compositeSettings = new Matrix3();\n private readonly _compositeWidths = new Float32Array(2);\n private readonly _featureSettings = new Matrix3();\n\n private _hiliteSettings = new Hilite.Settings();\n private _emphasisSettings = new Hilite.Settings();\n private readonly _hiliteRgb = FloatRgb.fromColorDef(this.hiliteSettings.color);\n\n public syncKey = 0;\n\n public get hiliteSettings() { return this._hiliteSettings; }\n public get emphasisSettings() { return this._emphasisSettings; }\n public get hiliteColor() { return this._hiliteRgb; }\n\n public update(hilite: Hilite.Settings, emphasis: Hilite.Settings): void {\n if (Hilite.equalSettings(hilite, this._hiliteSettings) && Hilite.equalSettings(emphasis, this._emphasisSettings))\n return;\n\n desync(this);\n\n this._hiliteSettings = Hilite.cloneSettings(hilite);\n this._emphasisSettings = Hilite.cloneSettings(emphasis);\n\n const c = this._compositeSettings;\n const f = this._featureSettings;\n\n const rgb = this._hiliteRgb;\n rgb.setColorDef(emphasis.color);\n c.data[3] = f.data[3] = rgb.red;\n c.data[4] = f.data[4] = rgb.green;\n c.data[5] = f.data[5] = rgb.blue;\n\n // NB: Must set to hilite color last - is exposed through getter.\n rgb.setColorDef(hilite.color);\n c.data[0] = f.data[0] = rgb.red;\n c.data[1] = f.data[1] = rgb.green;\n c.data[2] = f.data[2] = rgb.blue;\n\n c.data[6] = hilite.hiddenRatio;\n c.data[7] = emphasis.hiddenRatio;\n\n f.data[6] = hilite.visibleRatio;\n f.data[7] = emphasis.visibleRatio;\n\n this._compositeWidths[0] = hilite.silhouette;\n this._compositeWidths[1] = emphasis.silhouette;\n }\n\n // mat3:\n // hilite.red hilite.green hilite.blue\n // emph.red emph.green emph.blue\n // hilite.hidden emph.hidden unused\n public bindCompositeSettings(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setMatrix3(this._compositeSettings);\n }\n\n // vec2:\n // hilite.silhouette emph.silhouette\n public bindCompositeWidths(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setUniform2fv(this._compositeWidths);\n }\n\n // mat3:\n // hilite.red hilite.green hilite.blue\n // emph.red emph.green emph.blue\n // hilite.visible emph.visible unused\n public bindFeatureSettings(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setMatrix3(this._featureSettings);\n }\n}\n"]}
1
+ {"version":3,"file":"HiliteUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/HiliteUniforms.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 { Hilite } from \"@itwin/core-common\";\r\nimport { FloatRgb } from \"./FloatRGBA\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { Matrix3 } from \"./Matrix\";\r\nimport { desync, sync } from \"./Sync\";\r\n\r\n/** Maintains state for uniforms related to hilite and emphasis.\r\n * @internal\r\n */\r\nexport class HiliteUniforms {\r\n private readonly _compositeSettings = new Matrix3();\r\n private readonly _compositeWidths = new Float32Array(2);\r\n private readonly _featureSettings = new Matrix3();\r\n\r\n private _hiliteSettings = new Hilite.Settings();\r\n private _emphasisSettings = new Hilite.Settings();\r\n private readonly _hiliteRgb = FloatRgb.fromColorDef(this.hiliteSettings.color);\r\n\r\n public syncKey = 0;\r\n\r\n public get hiliteSettings() { return this._hiliteSettings; }\r\n public get emphasisSettings() { return this._emphasisSettings; }\r\n public get hiliteColor() { return this._hiliteRgb; }\r\n\r\n public update(hilite: Hilite.Settings, emphasis: Hilite.Settings): void {\r\n if (Hilite.equalSettings(hilite, this._hiliteSettings) && Hilite.equalSettings(emphasis, this._emphasisSettings))\r\n return;\r\n\r\n desync(this);\r\n\r\n this._hiliteSettings = Hilite.cloneSettings(hilite);\r\n this._emphasisSettings = Hilite.cloneSettings(emphasis);\r\n\r\n const c = this._compositeSettings;\r\n const f = this._featureSettings;\r\n\r\n const rgb = this._hiliteRgb;\r\n rgb.setColorDef(emphasis.color);\r\n c.data[3] = f.data[3] = rgb.red;\r\n c.data[4] = f.data[4] = rgb.green;\r\n c.data[5] = f.data[5] = rgb.blue;\r\n\r\n // NB: Must set to hilite color last - is exposed through getter.\r\n rgb.setColorDef(hilite.color);\r\n c.data[0] = f.data[0] = rgb.red;\r\n c.data[1] = f.data[1] = rgb.green;\r\n c.data[2] = f.data[2] = rgb.blue;\r\n\r\n c.data[6] = hilite.hiddenRatio;\r\n c.data[7] = emphasis.hiddenRatio;\r\n\r\n f.data[6] = hilite.visibleRatio;\r\n f.data[7] = emphasis.visibleRatio;\r\n\r\n this._compositeWidths[0] = hilite.silhouette;\r\n this._compositeWidths[1] = emphasis.silhouette;\r\n }\r\n\r\n // mat3:\r\n // hilite.red hilite.green hilite.blue\r\n // emph.red emph.green emph.blue\r\n // hilite.hidden emph.hidden unused\r\n public bindCompositeSettings(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setMatrix3(this._compositeSettings);\r\n }\r\n\r\n // vec2:\r\n // hilite.silhouette emph.silhouette\r\n public bindCompositeWidths(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform2fv(this._compositeWidths);\r\n }\r\n\r\n // mat3:\r\n // hilite.red hilite.green hilite.blue\r\n // emph.red emph.green emph.blue\r\n // hilite.visible emph.visible unused\r\n public bindFeatureSettings(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setMatrix3(this._featureSettings);\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"IModelFrameLifecycle.js","sourceRoot":"","sources":["../../../../src/render/webgl/IModelFrameLifecycle.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AA4C9C,gBAAgB;AAChB,MAAa,oBAAoB;;AACR,mCAAc,GAAG,IAAI,OAAO,EAAyC,CAAC;AACtE,mCAAc,GAAG,IAAI,OAAO,EAAmC,CAAC;AAChE,0CAAqB,GAAG,IAAI,OAAO,EAA0C,CAAC;AAC9E,uCAAkB,GAAG,IAAI,OAAO,EAAuC,CAAC;SAJpF,oBAAoB","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport { Point3d, Vector3d } from \"@itwin/core-geometry\";\nimport { Viewport } from \"../../Viewport\";\nimport { FrameBuffer, FrameBufferStack } from \"./FrameBuffer\";\nimport { FrustumUniformType } from \"./FrustumUniforms\";\nimport { RenderCommands } from \"./RenderCommands\";\nimport { CompositeFlags } from \"./RenderFlags\";\nimport { System } from \"./System\";\n\n/** @internal */\nexport interface FrameRenderData {\n commands: RenderCommands;\n needComposite: boolean;\n compositeFlags: CompositeFlags;\n fbo: FrameBuffer;\n frameBufferStack: FrameBufferStack;\n}\n\n/** @internal */\nexport interface FrameBeforeRenderData {\n renderSystem: System;\n viewport: Viewport;\n setSceneNeedRedraw: (redraw: boolean) => void;\n}\n\n/** @internal */\nexport interface FrameCameraFrustumData {\n type: FrustumUniformType;\n left: number;\n right: number;\n bottom: number;\n top: number;\n front: number;\n back: number;\n}\n\n/** @internal */\nexport interface FrameCameraViewData {\n cameraPosition: Point3d;\n viewX: Vector3d;\n viewY: Vector3d;\n viewZ: Vector3d;\n}\n\n/** @internal */\nexport class IModelFrameLifecycle {\n public static readonly onBeforeRender = new BeEvent<(data: FrameBeforeRenderData) => void>();\n public static readonly onRenderOpaque = new BeEvent<(data: FrameRenderData) => void>();\n public static readonly onChangeCameraFrustum = new BeEvent<(data: FrameCameraFrustumData) => void>();\n public static readonly onChangeCameraView = new BeEvent<(data: FrameCameraViewData) => void>();\n}\n"]}
1
+ {"version":3,"file":"IModelFrameLifecycle.js","sourceRoot":"","sources":["../../../../src/render/webgl/IModelFrameLifecycle.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AA4C9C,gBAAgB;AAChB,MAAa,oBAAoB;;AACR,mCAAc,GAAG,IAAI,OAAO,EAAyC,CAAC;AACtE,mCAAc,GAAG,IAAI,OAAO,EAAmC,CAAC;AAChE,0CAAqB,GAAG,IAAI,OAAO,EAA0C,CAAC;AAC9E,uCAAkB,GAAG,IAAI,OAAO,EAAuC,CAAC;SAJpF,oBAAoB","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 { BeEvent } from \"@itwin/core-bentley\";\r\nimport { Point3d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { Viewport } from \"../../Viewport\";\r\nimport { FrameBuffer, FrameBufferStack } from \"./FrameBuffer\";\r\nimport { FrustumUniformType } from \"./FrustumUniforms\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { CompositeFlags } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\n\r\n/** @internal */\r\nexport interface FrameRenderData {\r\n commands: RenderCommands;\r\n needComposite: boolean;\r\n compositeFlags: CompositeFlags;\r\n fbo: FrameBuffer;\r\n frameBufferStack: FrameBufferStack;\r\n}\r\n\r\n/** @internal */\r\nexport interface FrameBeforeRenderData {\r\n renderSystem: System;\r\n viewport: Viewport;\r\n setSceneNeedRedraw: (redraw: boolean) => void;\r\n}\r\n\r\n/** @internal */\r\nexport interface FrameCameraFrustumData {\r\n type: FrustumUniformType;\r\n left: number;\r\n right: number;\r\n bottom: number;\r\n top: number;\r\n front: number;\r\n back: number;\r\n}\r\n\r\n/** @internal */\r\nexport interface FrameCameraViewData {\r\n cameraPosition: Point3d;\r\n viewX: Vector3d;\r\n viewY: Vector3d;\r\n viewZ: Vector3d;\r\n}\r\n\r\n/** @internal */\r\nexport class IModelFrameLifecycle {\r\n public static readonly onBeforeRender = new BeEvent<(data: FrameBeforeRenderData) => void>();\r\n public static readonly onRenderOpaque = new BeEvent<(data: FrameRenderData) => void>();\r\n public static readonly onChangeCameraFrustum = new BeEvent<(data: FrameCameraFrustumData) => void>();\r\n public static readonly onChangeCameraView = new BeEvent<(data: FrameCameraViewData) => void>();\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"IndexedEdgeGeometry.js","sourceRoot":"","sources":["../../../../src/render/webgl/IndexedEdgeGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose } from \"@itwin/core-bentley\";\nimport { RenderMode } from \"@itwin/core-common\";\nimport { EdgeTable, IndexedEdgeParams } from \"../primitives/EdgeParams\";\nimport { RenderMemory } from \"../RenderMemory\";\nimport { TextureHandle } from \"./Texture\";\nimport { BufferHandle, BufferParameters, BuffersContainer } from \"./AttributeBuffers\";\nimport { WebGLDisposable } from \"./Disposable\";\nimport { MeshData } from \"./MeshData\";\nimport { MeshGeometry } from \"./MeshGeometry\";\nimport { AttributeMap } from \"./AttributeMap\";\nimport { TechniqueId } from \"./TechniqueId\";\nimport { GL } from \"./GL\";\nimport { System } from \"./System\";\nimport { Target } from \"./Target\";\nimport { ShaderProgramParams } from \"./DrawCommand\";\nimport { RenderOrder } from \"./RenderFlags\";\n\n/** @see [[EdgeTable]]\n * @internal\n */\nexport class EdgeLUT implements WebGLDisposable {\n public readonly texture: TextureHandle;\n public readonly numSegments: number;\n public readonly silhouettePadding: number;\n\n private constructor(texture: TextureHandle, numSegments: number, silhouettePadding: number) {\n this.texture = texture;\n this.numSegments = numSegments;\n this.silhouettePadding = silhouettePadding;\n }\n\n public dispose(): void {\n dispose(this.texture);\n }\n\n public static create(table: EdgeTable): EdgeLUT | undefined {\n const texture = TextureHandle.createForData(table.width, table.height, table.data);\n return texture ? new EdgeLUT(texture, table.numSegments, table.silhouettePadding) : undefined;\n }\n\n public get bytesUsed(): number {\n return this.texture.bytesUsed;\n }\n\n public get isDisposed(): boolean {\n return this.texture.isDisposed;\n }\n}\n\n/** @see [[IndexedEdgeParams]]\n * @internal\n */\nexport class IndexedEdgeGeometry extends MeshGeometry {\n private readonly _buffers: BuffersContainer;\n private readonly _indices: BufferHandle;\n public readonly edgeLut: EdgeLUT;\n\n public get lutBuffers() { return this._buffers; }\n public override get asIndexedEdge() { return this; }\n\n private constructor(mesh: MeshData, indices: BufferHandle, numIndices: number, lut: EdgeLUT) {\n super(mesh, numIndices);\n this.edgeLut = lut;\n this._buffers = BuffersContainer.create();\n const attrPos = AttributeMap.findAttribute(\"a_pos\", TechniqueId.IndexedEdge, false);\n assert(undefined !== attrPos);\n this._buffers.addBuffer(indices, [BufferParameters.create(attrPos.location, 3, GL.DataType.UnsignedByte, false, 0, 0, false)]);\n this._indices = indices;\n }\n\n public dispose(): void {\n dispose(this._buffers);\n dispose(this._indices);\n dispose(this.edgeLut);\n }\n\n public get isDisposed(): boolean {\n return this._buffers.isDisposed && this._indices.isDisposed && this.edgeLut.isDisposed;\n }\n\n public static create(mesh: MeshData, params: IndexedEdgeParams): IndexedEdgeGeometry | undefined {\n const indexBuffer = BufferHandle.createArrayBuffer(params.indices.data);\n const lut = EdgeLUT.create(params.edges);\n return indexBuffer && lut ? new IndexedEdgeGeometry(mesh, indexBuffer, params.indices.length, lut) : undefined;\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n stats.addIndexedEdges(this._indices.bytesUsed);\n stats.addEdgeTable(this.edgeLut.bytesUsed);\n }\n\n protected _draw(numInstances: number, instances?: BuffersContainer): void {\n const bufs = instances ?? this._buffers;\n bufs.bind();\n System.instance.drawArrays(GL.PrimitiveType.Triangles, 0, this._numIndices, numInstances);\n bufs.unbind();\n }\n\n protected _wantWoWReversal(): boolean { return true; }\n protected override _getLineCode(params: ShaderProgramParams): number { return this.computeEdgeLineCode(params); }\n\n public get techniqueId() { return TechniqueId.IndexedEdge; }\n public override getPass(target: Target) { return this.computeEdgePass(target); }\n public get renderOrder() { return this.isPlanar ? RenderOrder.PlanarEdge : RenderOrder.Edge; }\n public override getColor(target: Target) { return this.computeEdgeColor(target); }\n public override wantMonochrome(target: Target) { return target.currentViewFlags.renderMode === RenderMode.Wireframe; }\n}\n"]}
1
+ {"version":3,"file":"IndexedEdgeGeometry.js","sourceRoot":"","sources":["../../../../src/render/webgl/IndexedEdgeGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { RenderMode } from \"@itwin/core-common\";\r\nimport { EdgeTable, IndexedEdgeParams } from \"../primitives/EdgeParams\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { TextureHandle } from \"./Texture\";\r\nimport { BufferHandle, BufferParameters, BuffersContainer } from \"./AttributeBuffers\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { MeshData } from \"./MeshData\";\r\nimport { MeshGeometry } from \"./MeshGeometry\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { GL } from \"./GL\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { ShaderProgramParams } from \"./DrawCommand\";\r\nimport { RenderOrder } from \"./RenderFlags\";\r\n\r\n/** @see [[EdgeTable]]\r\n * @internal\r\n */\r\nexport class EdgeLUT implements WebGLDisposable {\r\n public readonly texture: TextureHandle;\r\n public readonly numSegments: number;\r\n public readonly silhouettePadding: number;\r\n\r\n private constructor(texture: TextureHandle, numSegments: number, silhouettePadding: number) {\r\n this.texture = texture;\r\n this.numSegments = numSegments;\r\n this.silhouettePadding = silhouettePadding;\r\n }\r\n\r\n public dispose(): void {\r\n dispose(this.texture);\r\n }\r\n\r\n public static create(table: EdgeTable): EdgeLUT | undefined {\r\n const texture = TextureHandle.createForData(table.width, table.height, table.data);\r\n return texture ? new EdgeLUT(texture, table.numSegments, table.silhouettePadding) : undefined;\r\n }\r\n\r\n public get bytesUsed(): number {\r\n return this.texture.bytesUsed;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this.texture.isDisposed;\r\n }\r\n}\r\n\r\n/** @see [[IndexedEdgeParams]]\r\n * @internal\r\n */\r\nexport class IndexedEdgeGeometry extends MeshGeometry {\r\n private readonly _buffers: BuffersContainer;\r\n private readonly _indices: BufferHandle;\r\n public readonly edgeLut: EdgeLUT;\r\n\r\n public get lutBuffers() { return this._buffers; }\r\n public override get asIndexedEdge() { return this; }\r\n\r\n private constructor(mesh: MeshData, indices: BufferHandle, numIndices: number, lut: EdgeLUT) {\r\n super(mesh, numIndices);\r\n this.edgeLut = lut;\r\n this._buffers = BuffersContainer.create();\r\n const attrPos = AttributeMap.findAttribute(\"a_pos\", TechniqueId.IndexedEdge, false);\r\n assert(undefined !== attrPos);\r\n this._buffers.addBuffer(indices, [BufferParameters.create(attrPos.location, 3, GL.DataType.UnsignedByte, false, 0, 0, false)]);\r\n this._indices = indices;\r\n }\r\n\r\n public dispose(): void {\r\n dispose(this._buffers);\r\n dispose(this._indices);\r\n dispose(this.edgeLut);\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._buffers.isDisposed && this._indices.isDisposed && this.edgeLut.isDisposed;\r\n }\r\n\r\n public static create(mesh: MeshData, params: IndexedEdgeParams): IndexedEdgeGeometry | undefined {\r\n const indexBuffer = BufferHandle.createArrayBuffer(params.indices.data);\r\n const lut = EdgeLUT.create(params.edges);\r\n return indexBuffer && lut ? new IndexedEdgeGeometry(mesh, indexBuffer, params.indices.length, lut) : undefined;\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n stats.addIndexedEdges(this._indices.bytesUsed);\r\n stats.addEdgeTable(this.edgeLut.bytesUsed);\r\n }\r\n\r\n protected _draw(numInstances: number, instances?: BuffersContainer): void {\r\n const bufs = instances ?? this._buffers;\r\n bufs.bind();\r\n System.instance.drawArrays(GL.PrimitiveType.Triangles, 0, this._numIndices, numInstances);\r\n bufs.unbind();\r\n }\r\n\r\n protected _wantWoWReversal(): boolean { return true; }\r\n protected override _getLineCode(params: ShaderProgramParams): number { return this.computeEdgeLineCode(params); }\r\n\r\n public get techniqueId() { return TechniqueId.IndexedEdge; }\r\n public override getPass(target: Target) { return this.computeEdgePass(target); }\r\n public get renderOrder() { return this.isPlanar ? RenderOrder.PlanarEdge : RenderOrder.Edge; }\r\n public override getColor(target: Target) { return this.computeEdgeColor(target); }\r\n public override wantMonochrome(target: Target) { return target.currentViewFlags.renderMode === RenderMode.Wireframe; }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"InstancedGeometry.js","sourceRoot":"","sources":["../../../../src/render/webgl/InstancedGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose } from \"@itwin/core-bentley\";\nimport { Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport { InstancedGraphicParams, PatternGraphicParams } from \"../InstancedGraphicParams\";\nimport { RenderMemory } from \"../RenderMemory\";\nimport { AttributeMap } from \"./AttributeMap\";\nimport { CachedGeometry, LUTGeometry } from \"./CachedGeometry\";\nimport { ShaderProgramParams } from \"./DrawCommand\";\nimport { GL } from \"./GL\";\nimport { BufferHandle, BufferParameters, BuffersContainer } from \"./AttributeBuffers\";\nimport { Target } from \"./Target\";\nimport { TechniqueId } from \"./TechniqueId\";\nimport { Matrix4 } from \"./Matrix\";\n\n/** @internal */\nexport function isInstancedGraphicParams(params: any): params is InstancedGraphicParams {\n return typeof params === \"object\" && typeof params.count === \"number\" && params.transforms instanceof Float32Array && params.transformCenter instanceof Point3d;\n}\n\nclass InstanceData {\n public readonly numInstances: number;\n public readonly range: Range3d;\n // A transform including only rtcCenter.\n private readonly _rtcOnlyTransform: Transform;\n // A transform from _rtcCenter including model matrix\n private readonly _rtcModelTransform: Transform;\n // The model matrix from which _rtcModelTransform was previously computed. If it changes, _rtcModelTransform must be recomputed.\n private readonly _modelMatrix = Transform.createIdentity();\n\n protected constructor(numInstances: number, rtcCenter: Point3d, range: Range3d) {\n this.numInstances = numInstances;\n this.range = range;\n this._rtcOnlyTransform = Transform.createTranslation(rtcCenter);\n this._rtcModelTransform = this._rtcOnlyTransform.clone();\n }\n\n public getRtcModelTransform(modelMatrix: Transform): Transform {\n if (!this._modelMatrix.isAlmostEqual(modelMatrix)) {\n modelMatrix.clone(this._modelMatrix);\n modelMatrix.multiplyTransformTransform(this._rtcOnlyTransform, this._rtcModelTransform);\n }\n\n return this._rtcModelTransform;\n }\n\n public getRtcOnlyTransform(): Transform {\n return this._rtcOnlyTransform;\n }\n\n private static readonly _noFeatureId = new Float32Array([0, 0, 0]);\n public get patternFeatureId(): Float32Array {\n return InstanceData._noFeatureId;\n }\n}\n\n/** @internal */\nexport interface PatternTransforms {\n readonly orgTransform: Matrix4;\n readonly localToModel: Matrix4;\n readonly symbolToLocal: Matrix4;\n readonly origin: Float32Array;\n}\n\n/** @internal */\nexport class InstanceBuffers extends InstanceData {\n private static readonly _patternParams = new Float32Array([0, 0, 0, 0]);\n\n public readonly transforms: BufferHandle;\n public readonly featureIds?: BufferHandle;\n public readonly hasFeatures: boolean;\n public readonly symbology?: BufferHandle;\n public readonly patternParams = InstanceBuffers._patternParams;\n public readonly patternTransforms = undefined;\n public readonly viewIndependentOrigin = undefined;\n\n private constructor(count: number, transforms: BufferHandle, rtcCenter: Point3d, range: Range3d, symbology?: BufferHandle, featureIds?: BufferHandle) {\n super(count, rtcCenter, range);\n this.transforms = transforms;\n this.featureIds = featureIds;\n this.hasFeatures = undefined !== featureIds;\n this.symbology = symbology;\n }\n\n public static createTransformBufferParameters(techniqueId: TechniqueId): BufferParameters[] {\n const params: BufferParameters[] = [];\n const numRows = 3;\n let row = 0;\n while (row < numRows) {\n // 3 rows per instance; 4 floats per row; 4 bytes per float.\n const floatsPerRow = 4;\n const bytesPerVertex = floatsPerRow * 4;\n const offset = row * bytesPerVertex;\n const stride = 3 * bytesPerVertex;\n const name = `a_instanceMatrixRow${row}`;\n const details = AttributeMap.findAttribute(name, techniqueId, true);\n assert(details !== undefined);\n const bParams: BufferParameters = {\n glAttribLoc: details.location,\n glSize: floatsPerRow,\n glType: GL.DataType.Float,\n glNormalized: false,\n glStride: stride,\n glOffset: offset,\n glInstanced: true,\n };\n params.push(bParams);\n row++;\n }\n return params;\n }\n\n public static create(params: InstancedGraphicParams, range: Range3d): InstanceBuffers | undefined {\n const { count, featureIds, symbologyOverrides, transforms } = params;\n\n assert(count > 0 && Math.floor(count) === count);\n assert(count === transforms.length / 12);\n assert(undefined === featureIds || count === featureIds.length / 3);\n assert(undefined === symbologyOverrides || count * 8 === symbologyOverrides.length);\n\n let idBuf: BufferHandle | undefined;\n if (undefined !== featureIds && undefined === (idBuf = BufferHandle.createArrayBuffer(featureIds)))\n return undefined;\n\n let symBuf: BufferHandle | undefined;\n if (undefined !== symbologyOverrides && undefined === (symBuf = BufferHandle.createArrayBuffer(symbologyOverrides)))\n return undefined;\n\n const tfBuf = BufferHandle.createArrayBuffer(transforms);\n return undefined !== tfBuf ? new InstanceBuffers(count, tfBuf, params.transformCenter, range, symBuf, idBuf) : undefined;\n }\n\n public get isDisposed(): boolean {\n return this.transforms.isDisposed\n && (undefined === this.featureIds || this.featureIds.isDisposed)\n && (undefined === this.symbology || this.symbology.isDisposed);\n }\n\n public dispose() {\n dispose(this.transforms);\n dispose(this.featureIds);\n dispose(this.symbology);\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n const featureBytes = undefined !== this.featureIds ? this.featureIds.bytesUsed : 0;\n const symBytes = undefined !== this.symbology ? this.symbology.bytesUsed : 0;\n\n const bytesUsed = this.transforms.bytesUsed + symBytes + featureBytes;\n stats.addInstances(bytesUsed);\n }\n\n private static extendTransformedRange(tfs: Float32Array, i: number, range: Range3d, x: number, y: number, z: number) {\n range.extendXYZ(tfs[i + 3] + tfs[i + 0] * x + tfs[i + 1] * y + tfs[i + 2] * z,\n tfs[i + 7] + tfs[i + 4] * x + tfs[i + 5] * y + tfs[i + 6] * z,\n tfs[i + 11] + tfs[i + 8] * x + tfs[i + 9] * y + tfs[i + 10] * z);\n }\n\n public static computeRange(reprRange: Range3d, tfs: Float32Array, rtcCenter: Point3d, out?: Range3d): Range3d {\n const range = out ?? new Range3d();\n\n const numFloatsPerTransform = 3 * 4;\n assert(0 === tfs.length % (3 * 4));\n\n for (let i = 0; i < tfs.length; i += numFloatsPerTransform) {\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.low.y, reprRange.low.z);\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.low.y, reprRange.high.z);\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.high.y, reprRange.low.z);\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.high.y, reprRange.high.z);\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.low.y, reprRange.low.z);\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.low.y, reprRange.high.z);\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.high.y, reprRange.low.z);\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.high.y, reprRange.high.z);\n }\n\n range.low.addInPlace(rtcCenter);\n range.high.addInPlace(rtcCenter);\n\n return range.clone(out);\n }\n}\n\n/** @internal */\nexport class PatternBuffers extends InstanceData {\n private readonly _featureId?: Float32Array;\n\n private constructor(\n count: number,\n rtcCenter: Point3d,\n range: Range3d,\n public readonly patternParams: Float32Array, // [ isAreaPattern, spacingX, spacingY, scale ]\n public readonly origin: Float32Array, // [ x, y ]\n public readonly orgTransform: Matrix4,\n public readonly localToModel: Matrix4,\n public readonly symbolToLocal: Matrix4,\n public readonly offsets: BufferHandle,\n featureId: number | undefined,\n public readonly viewIndependentOrigin: Point3d | undefined\n ) {\n super(count, rtcCenter, range);\n this.patternTransforms = this;\n if (undefined !== featureId) {\n this._featureId = new Float32Array([\n (featureId & 0x0000ff) >>> 0,\n (featureId & 0x00ff00) >>> 8,\n (featureId & 0xff0000) >>> 16,\n ]);\n }\n }\n\n public static create(params: PatternGraphicParams): PatternBuffers | undefined {\n const count = params.xyOffsets.byteLength / 2;\n assert(Math.floor(count) === count);\n\n const offsets = BufferHandle.createArrayBuffer(params.xyOffsets);\n if (!offsets)\n return undefined;\n\n return new PatternBuffers(\n count,\n new Point3d(),\n params.range,\n new Float32Array([1, params.spacing.x, params.spacing.y, params.scale]),\n new Float32Array([params.origin.x, params.origin.y]),\n Matrix4.fromTransform(params.orgTransform),\n Matrix4.fromTransform(params.patternToModel),\n Matrix4.fromTransform(Transform.createTranslation(params.symbolTranslation)),\n offsets,\n params.featureId,\n params.viewIndependentOrigin,\n );\n }\n\n public readonly patternTransforms: PatternTransforms;\n\n public get hasFeatures(): boolean {\n return undefined !== this._featureId;\n }\n\n public override get patternFeatureId(): Float32Array {\n return this._featureId ?? super.patternFeatureId;\n }\n\n public get isDisposed(): boolean {\n return this.offsets.isDisposed;\n }\n\n public dispose(): void {\n dispose(this.offsets);\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n stats.addInstances(this.offsets.bytesUsed);\n }\n}\n\n/** @internal */\nexport class InstancedGeometry extends CachedGeometry {\n private readonly _buffersContainer: BuffersContainer;\n private readonly _buffers: InstanceBuffers | PatternBuffers;\n private readonly _repr: LUTGeometry;\n private readonly _ownsBuffers: boolean;\n\n public getRtcModelTransform(modelMatrix: Transform) { return this._buffers.getRtcModelTransform(modelMatrix); }\n public getRtcOnlyTransform() { return this._buffers.getRtcOnlyTransform(); }\n\n public override get viewIndependentOrigin(): Point3d | undefined { return this._buffers.viewIndependentOrigin; }\n\n public override get asInstanced() { return this; }\n public override get asLUT() { return this._repr.asLUT; }\n public override get asMesh() { return this._repr.asMesh; }\n public override get asSurface() { return this._repr.asSurface; }\n public override get asEdge() { return this._repr.asEdge; }\n public override get asSilhouette() { return this._repr.asSilhouette; }\n public override get asIndexedEdge() { return this._repr.asIndexedEdge; }\n\n public get renderOrder() { return this._repr.renderOrder; }\n public override get isLitSurface() { return this._repr.isLitSurface; }\n public override get hasBakedLighting() { return this._repr.hasBakedLighting; }\n public override get hasAnimation() { return this._repr.hasAnimation; }\n public get qOrigin() { return this._repr.qOrigin; }\n public get qScale() { return this._repr.qScale; }\n public override get materialInfo() { return this._repr.materialInfo; }\n public override get polylineBuffers() { return this._repr.polylineBuffers; }\n public override get isEdge() { return this._repr.isEdge; }\n public override get hasFeatures() { return this._buffers.hasFeatures; }\n public get techniqueId(): TechniqueId { return this._repr.techniqueId; }\n public override get supportsThematicDisplay() { return this._repr.supportsThematicDisplay; }\n\n public override getPass(target: Target) { return this._repr.getPass(target); }\n public override wantWoWReversal(params: ShaderProgramParams) { return this._repr.wantWoWReversal(params); }\n public override getLineCode(params: ShaderProgramParams) { return this._repr.getLineCode(params); }\n public override getLineWeight(params: ShaderProgramParams) { return this._repr.getLineWeight(params); }\n public override wantMonochrome(target: Target) { return this._repr.wantMonochrome(target); }\n public override wantMixMonochromeColor(target: Target): boolean { return this._repr.wantMixMonochromeColor(target); }\n\n public static create(repr: LUTGeometry, ownsBuffers: boolean, buffers: InstanceBuffers): InstancedGeometry {\n const techId = repr.techniqueId;\n const container = BuffersContainer.create();\n container.appendLinkages(repr.lutBuffers.linkages);\n\n container.addBuffer(buffers.transforms, InstanceBuffers.createTransformBufferParameters(repr.techniqueId));\n\n if (buffers.symbology) {\n const attrInstanceOverrides = AttributeMap.findAttribute(\"a_instanceOverrides\", techId, true);\n const attrInstanceRgba = AttributeMap.findAttribute(\"a_instanceRgba\", techId, true);\n assert(attrInstanceOverrides !== undefined);\n assert(attrInstanceRgba !== undefined);\n container.addBuffer(buffers.symbology, [\n BufferParameters.create(attrInstanceOverrides.location, 4, GL.DataType.UnsignedByte, false, 8, 0, true),\n BufferParameters.create(attrInstanceRgba.location, 4, GL.DataType.UnsignedByte, false, 8, 4, true),\n ]);\n }\n if (buffers.featureIds) {\n const attrFeatureId = AttributeMap.findAttribute(\"a_featureId\", techId, true);\n assert(attrFeatureId !== undefined);\n container.addBuffer(buffers.featureIds, [BufferParameters.create(attrFeatureId.location, 3, GL.DataType.UnsignedByte, false, 0, 0, true)]);\n }\n\n return new this(repr, ownsBuffers, buffers, container);\n }\n\n public static createPattern(repr: LUTGeometry, ownsBuffers: boolean, buffers: PatternBuffers): InstancedGeometry {\n const techId = repr.techniqueId;\n const container = BuffersContainer.create();\n container.appendLinkages(repr.lutBuffers.linkages);\n\n const attrX = AttributeMap.findAttribute(\"a_patternX\", techId, true);\n const attrY = AttributeMap.findAttribute(\"a_patternY\", techId, true);\n assert(undefined !== attrX && undefined !== attrY);\n container.addBuffer(buffers.offsets, [\n BufferParameters.create(attrX.location, 1, GL.DataType.Float, false, 8, 0, true),\n BufferParameters.create(attrY.location, 1, GL.DataType.Float, false, 8, 4, true),\n ]);\n\n return new this(repr, ownsBuffers, buffers, container);\n }\n\n private constructor(repr: LUTGeometry, ownsBuffers: boolean, buffers: InstanceBuffers | PatternBuffers, container: BuffersContainer) {\n super();\n this._repr = repr;\n this._ownsBuffers = ownsBuffers;\n this._buffers = buffers;\n this._buffersContainer = container;\n }\n\n public get isDisposed(): boolean {\n if (!this._repr.isDisposed)\n return false;\n\n return !this._ownsBuffers || this._buffers.isDisposed;\n }\n\n public dispose() {\n this._repr.dispose();\n if (this._ownsBuffers)\n dispose(this._buffers);\n }\n\n protected _wantWoWReversal(_target: Target) {\n assert(false, \"Should never be called\");\n return false;\n }\n\n public draw() {\n this._repr.drawInstanced(this._buffers.numInstances, this._buffersContainer);\n }\n\n public override computeRange(output?: Range3d): Range3d {\n return this._buffers.range.clone(output);\n }\n\n public collectStatistics(stats: RenderMemory.Statistics) {\n this._repr.collectStatistics(stats);\n if (this._ownsBuffers)\n this._buffers.collectStatistics(stats);\n }\n\n public get patternParams(): Float32Array { return this._buffers.patternParams; }\n public get patternTransforms(): PatternTransforms | undefined { return this._buffers.patternTransforms; }\n public get patternFeatureId(): Float32Array { return this._buffers.patternFeatureId; }\n}\n"]}
1
+ {"version":3,"file":"InstancedGeometry.js","sourceRoot":"","sources":["../../../../src/render/webgl/InstancedGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\r\nimport { InstancedGraphicParams, PatternGraphicParams } from \"../InstancedGraphicParams\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { CachedGeometry, LUTGeometry } from \"./CachedGeometry\";\r\nimport { ShaderProgramParams } from \"./DrawCommand\";\r\nimport { GL } from \"./GL\";\r\nimport { BufferHandle, BufferParameters, BuffersContainer } from \"./AttributeBuffers\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { Matrix4 } from \"./Matrix\";\r\n\r\n/** @internal */\r\nexport function isInstancedGraphicParams(params: any): params is InstancedGraphicParams {\r\n return typeof params === \"object\" && typeof params.count === \"number\" && params.transforms instanceof Float32Array && params.transformCenter instanceof Point3d;\r\n}\r\n\r\nclass InstanceData {\r\n public readonly numInstances: number;\r\n public readonly range: Range3d;\r\n // A transform including only rtcCenter.\r\n private readonly _rtcOnlyTransform: Transform;\r\n // A transform from _rtcCenter including model matrix\r\n private readonly _rtcModelTransform: Transform;\r\n // The model matrix from which _rtcModelTransform was previously computed. If it changes, _rtcModelTransform must be recomputed.\r\n private readonly _modelMatrix = Transform.createIdentity();\r\n\r\n protected constructor(numInstances: number, rtcCenter: Point3d, range: Range3d) {\r\n this.numInstances = numInstances;\r\n this.range = range;\r\n this._rtcOnlyTransform = Transform.createTranslation(rtcCenter);\r\n this._rtcModelTransform = this._rtcOnlyTransform.clone();\r\n }\r\n\r\n public getRtcModelTransform(modelMatrix: Transform): Transform {\r\n if (!this._modelMatrix.isAlmostEqual(modelMatrix)) {\r\n modelMatrix.clone(this._modelMatrix);\r\n modelMatrix.multiplyTransformTransform(this._rtcOnlyTransform, this._rtcModelTransform);\r\n }\r\n\r\n return this._rtcModelTransform;\r\n }\r\n\r\n public getRtcOnlyTransform(): Transform {\r\n return this._rtcOnlyTransform;\r\n }\r\n\r\n private static readonly _noFeatureId = new Float32Array([0, 0, 0]);\r\n public get patternFeatureId(): Float32Array {\r\n return InstanceData._noFeatureId;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface PatternTransforms {\r\n readonly orgTransform: Matrix4;\r\n readonly localToModel: Matrix4;\r\n readonly symbolToLocal: Matrix4;\r\n readonly origin: Float32Array;\r\n}\r\n\r\n/** @internal */\r\nexport class InstanceBuffers extends InstanceData {\r\n private static readonly _patternParams = new Float32Array([0, 0, 0, 0]);\r\n\r\n public readonly transforms: BufferHandle;\r\n public readonly featureIds?: BufferHandle;\r\n public readonly hasFeatures: boolean;\r\n public readonly symbology?: BufferHandle;\r\n public readonly patternParams = InstanceBuffers._patternParams;\r\n public readonly patternTransforms = undefined;\r\n public readonly viewIndependentOrigin = undefined;\r\n\r\n private constructor(count: number, transforms: BufferHandle, rtcCenter: Point3d, range: Range3d, symbology?: BufferHandle, featureIds?: BufferHandle) {\r\n super(count, rtcCenter, range);\r\n this.transforms = transforms;\r\n this.featureIds = featureIds;\r\n this.hasFeatures = undefined !== featureIds;\r\n this.symbology = symbology;\r\n }\r\n\r\n public static createTransformBufferParameters(techniqueId: TechniqueId): BufferParameters[] {\r\n const params: BufferParameters[] = [];\r\n const numRows = 3;\r\n let row = 0;\r\n while (row < numRows) {\r\n // 3 rows per instance; 4 floats per row; 4 bytes per float.\r\n const floatsPerRow = 4;\r\n const bytesPerVertex = floatsPerRow * 4;\r\n const offset = row * bytesPerVertex;\r\n const stride = 3 * bytesPerVertex;\r\n const name = `a_instanceMatrixRow${row}`;\r\n const details = AttributeMap.findAttribute(name, techniqueId, true);\r\n assert(details !== undefined);\r\n const bParams: BufferParameters = {\r\n glAttribLoc: details.location,\r\n glSize: floatsPerRow,\r\n glType: GL.DataType.Float,\r\n glNormalized: false,\r\n glStride: stride,\r\n glOffset: offset,\r\n glInstanced: true,\r\n };\r\n params.push(bParams);\r\n row++;\r\n }\r\n return params;\r\n }\r\n\r\n public static create(params: InstancedGraphicParams, range: Range3d): InstanceBuffers | undefined {\r\n const { count, featureIds, symbologyOverrides, transforms } = params;\r\n\r\n assert(count > 0 && Math.floor(count) === count);\r\n assert(count === transforms.length / 12);\r\n assert(undefined === featureIds || count === featureIds.length / 3);\r\n assert(undefined === symbologyOverrides || count * 8 === symbologyOverrides.length);\r\n\r\n let idBuf: BufferHandle | undefined;\r\n if (undefined !== featureIds && undefined === (idBuf = BufferHandle.createArrayBuffer(featureIds)))\r\n return undefined;\r\n\r\n let symBuf: BufferHandle | undefined;\r\n if (undefined !== symbologyOverrides && undefined === (symBuf = BufferHandle.createArrayBuffer(symbologyOverrides)))\r\n return undefined;\r\n\r\n const tfBuf = BufferHandle.createArrayBuffer(transforms);\r\n return undefined !== tfBuf ? new InstanceBuffers(count, tfBuf, params.transformCenter, range, symBuf, idBuf) : undefined;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this.transforms.isDisposed\r\n && (undefined === this.featureIds || this.featureIds.isDisposed)\r\n && (undefined === this.symbology || this.symbology.isDisposed);\r\n }\r\n\r\n public dispose() {\r\n dispose(this.transforms);\r\n dispose(this.featureIds);\r\n dispose(this.symbology);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n const featureBytes = undefined !== this.featureIds ? this.featureIds.bytesUsed : 0;\r\n const symBytes = undefined !== this.symbology ? this.symbology.bytesUsed : 0;\r\n\r\n const bytesUsed = this.transforms.bytesUsed + symBytes + featureBytes;\r\n stats.addInstances(bytesUsed);\r\n }\r\n\r\n private static extendTransformedRange(tfs: Float32Array, i: number, range: Range3d, x: number, y: number, z: number) {\r\n range.extendXYZ(tfs[i + 3] + tfs[i + 0] * x + tfs[i + 1] * y + tfs[i + 2] * z,\r\n tfs[i + 7] + tfs[i + 4] * x + tfs[i + 5] * y + tfs[i + 6] * z,\r\n tfs[i + 11] + tfs[i + 8] * x + tfs[i + 9] * y + tfs[i + 10] * z);\r\n }\r\n\r\n public static computeRange(reprRange: Range3d, tfs: Float32Array, rtcCenter: Point3d, out?: Range3d): Range3d {\r\n const range = out ?? new Range3d();\r\n\r\n const numFloatsPerTransform = 3 * 4;\r\n assert(0 === tfs.length % (3 * 4));\r\n\r\n for (let i = 0; i < tfs.length; i += numFloatsPerTransform) {\r\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.low.y, reprRange.low.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.low.y, reprRange.high.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.high.y, reprRange.low.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.low.x, reprRange.high.y, reprRange.high.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.low.y, reprRange.low.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.low.y, reprRange.high.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.high.y, reprRange.low.z);\r\n this.extendTransformedRange(tfs, i, range, reprRange.high.x, reprRange.high.y, reprRange.high.z);\r\n }\r\n\r\n range.low.addInPlace(rtcCenter);\r\n range.high.addInPlace(rtcCenter);\r\n\r\n return range.clone(out);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PatternBuffers extends InstanceData {\r\n private readonly _featureId?: Float32Array;\r\n\r\n private constructor(\r\n count: number,\r\n rtcCenter: Point3d,\r\n range: Range3d,\r\n public readonly patternParams: Float32Array, // [ isAreaPattern, spacingX, spacingY, scale ]\r\n public readonly origin: Float32Array, // [ x, y ]\r\n public readonly orgTransform: Matrix4,\r\n public readonly localToModel: Matrix4,\r\n public readonly symbolToLocal: Matrix4,\r\n public readonly offsets: BufferHandle,\r\n featureId: number | undefined,\r\n public readonly viewIndependentOrigin: Point3d | undefined\r\n ) {\r\n super(count, rtcCenter, range);\r\n this.patternTransforms = this;\r\n if (undefined !== featureId) {\r\n this._featureId = new Float32Array([\r\n (featureId & 0x0000ff) >>> 0,\r\n (featureId & 0x00ff00) >>> 8,\r\n (featureId & 0xff0000) >>> 16,\r\n ]);\r\n }\r\n }\r\n\r\n public static create(params: PatternGraphicParams): PatternBuffers | undefined {\r\n const count = params.xyOffsets.byteLength / 2;\r\n assert(Math.floor(count) === count);\r\n\r\n const offsets = BufferHandle.createArrayBuffer(params.xyOffsets);\r\n if (!offsets)\r\n return undefined;\r\n\r\n return new PatternBuffers(\r\n count,\r\n new Point3d(),\r\n params.range,\r\n new Float32Array([1, params.spacing.x, params.spacing.y, params.scale]),\r\n new Float32Array([params.origin.x, params.origin.y]),\r\n Matrix4.fromTransform(params.orgTransform),\r\n Matrix4.fromTransform(params.patternToModel),\r\n Matrix4.fromTransform(Transform.createTranslation(params.symbolTranslation)),\r\n offsets,\r\n params.featureId,\r\n params.viewIndependentOrigin,\r\n );\r\n }\r\n\r\n public readonly patternTransforms: PatternTransforms;\r\n\r\n public get hasFeatures(): boolean {\r\n return undefined !== this._featureId;\r\n }\r\n\r\n public override get patternFeatureId(): Float32Array {\r\n return this._featureId ?? super.patternFeatureId;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this.offsets.isDisposed;\r\n }\r\n\r\n public dispose(): void {\r\n dispose(this.offsets);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n stats.addInstances(this.offsets.bytesUsed);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class InstancedGeometry extends CachedGeometry {\r\n private readonly _buffersContainer: BuffersContainer;\r\n private readonly _buffers: InstanceBuffers | PatternBuffers;\r\n private readonly _repr: LUTGeometry;\r\n private readonly _ownsBuffers: boolean;\r\n\r\n public getRtcModelTransform(modelMatrix: Transform) { return this._buffers.getRtcModelTransform(modelMatrix); }\r\n public getRtcOnlyTransform() { return this._buffers.getRtcOnlyTransform(); }\r\n\r\n public override get viewIndependentOrigin(): Point3d | undefined { return this._buffers.viewIndependentOrigin; }\r\n\r\n public override get asInstanced() { return this; }\r\n public override get asLUT() { return this._repr.asLUT; }\r\n public override get asMesh() { return this._repr.asMesh; }\r\n public override get asSurface() { return this._repr.asSurface; }\r\n public override get asEdge() { return this._repr.asEdge; }\r\n public override get asSilhouette() { return this._repr.asSilhouette; }\r\n public override get asIndexedEdge() { return this._repr.asIndexedEdge; }\r\n\r\n public get renderOrder() { return this._repr.renderOrder; }\r\n public override get isLitSurface() { return this._repr.isLitSurface; }\r\n public override get hasBakedLighting() { return this._repr.hasBakedLighting; }\r\n public override get hasAnimation() { return this._repr.hasAnimation; }\r\n public get qOrigin() { return this._repr.qOrigin; }\r\n public get qScale() { return this._repr.qScale; }\r\n public override get materialInfo() { return this._repr.materialInfo; }\r\n public override get polylineBuffers() { return this._repr.polylineBuffers; }\r\n public override get isEdge() { return this._repr.isEdge; }\r\n public override get hasFeatures() { return this._buffers.hasFeatures; }\r\n public get techniqueId(): TechniqueId { return this._repr.techniqueId; }\r\n public override get supportsThematicDisplay() { return this._repr.supportsThematicDisplay; }\r\n\r\n public override getPass(target: Target) { return this._repr.getPass(target); }\r\n public override wantWoWReversal(params: ShaderProgramParams) { return this._repr.wantWoWReversal(params); }\r\n public override getLineCode(params: ShaderProgramParams) { return this._repr.getLineCode(params); }\r\n public override getLineWeight(params: ShaderProgramParams) { return this._repr.getLineWeight(params); }\r\n public override wantMonochrome(target: Target) { return this._repr.wantMonochrome(target); }\r\n public override wantMixMonochromeColor(target: Target): boolean { return this._repr.wantMixMonochromeColor(target); }\r\n\r\n public static create(repr: LUTGeometry, ownsBuffers: boolean, buffers: InstanceBuffers): InstancedGeometry {\r\n const techId = repr.techniqueId;\r\n const container = BuffersContainer.create();\r\n container.appendLinkages(repr.lutBuffers.linkages);\r\n\r\n container.addBuffer(buffers.transforms, InstanceBuffers.createTransformBufferParameters(repr.techniqueId));\r\n\r\n if (buffers.symbology) {\r\n const attrInstanceOverrides = AttributeMap.findAttribute(\"a_instanceOverrides\", techId, true);\r\n const attrInstanceRgba = AttributeMap.findAttribute(\"a_instanceRgba\", techId, true);\r\n assert(attrInstanceOverrides !== undefined);\r\n assert(attrInstanceRgba !== undefined);\r\n container.addBuffer(buffers.symbology, [\r\n BufferParameters.create(attrInstanceOverrides.location, 4, GL.DataType.UnsignedByte, false, 8, 0, true),\r\n BufferParameters.create(attrInstanceRgba.location, 4, GL.DataType.UnsignedByte, false, 8, 4, true),\r\n ]);\r\n }\r\n if (buffers.featureIds) {\r\n const attrFeatureId = AttributeMap.findAttribute(\"a_featureId\", techId, true);\r\n assert(attrFeatureId !== undefined);\r\n container.addBuffer(buffers.featureIds, [BufferParameters.create(attrFeatureId.location, 3, GL.DataType.UnsignedByte, false, 0, 0, true)]);\r\n }\r\n\r\n return new this(repr, ownsBuffers, buffers, container);\r\n }\r\n\r\n public static createPattern(repr: LUTGeometry, ownsBuffers: boolean, buffers: PatternBuffers): InstancedGeometry {\r\n const techId = repr.techniqueId;\r\n const container = BuffersContainer.create();\r\n container.appendLinkages(repr.lutBuffers.linkages);\r\n\r\n const attrX = AttributeMap.findAttribute(\"a_patternX\", techId, true);\r\n const attrY = AttributeMap.findAttribute(\"a_patternY\", techId, true);\r\n assert(undefined !== attrX && undefined !== attrY);\r\n container.addBuffer(buffers.offsets, [\r\n BufferParameters.create(attrX.location, 1, GL.DataType.Float, false, 8, 0, true),\r\n BufferParameters.create(attrY.location, 1, GL.DataType.Float, false, 8, 4, true),\r\n ]);\r\n\r\n return new this(repr, ownsBuffers, buffers, container);\r\n }\r\n\r\n private constructor(repr: LUTGeometry, ownsBuffers: boolean, buffers: InstanceBuffers | PatternBuffers, container: BuffersContainer) {\r\n super();\r\n this._repr = repr;\r\n this._ownsBuffers = ownsBuffers;\r\n this._buffers = buffers;\r\n this._buffersContainer = container;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n if (!this._repr.isDisposed)\r\n return false;\r\n\r\n return !this._ownsBuffers || this._buffers.isDisposed;\r\n }\r\n\r\n public dispose() {\r\n this._repr.dispose();\r\n if (this._ownsBuffers)\r\n dispose(this._buffers);\r\n }\r\n\r\n protected _wantWoWReversal(_target: Target) {\r\n assert(false, \"Should never be called\");\r\n return false;\r\n }\r\n\r\n public draw() {\r\n this._repr.drawInstanced(this._buffers.numInstances, this._buffersContainer);\r\n }\r\n\r\n public override computeRange(output?: Range3d): Range3d {\r\n return this._buffers.range.clone(output);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics) {\r\n this._repr.collectStatistics(stats);\r\n if (this._ownsBuffers)\r\n this._buffers.collectStatistics(stats);\r\n }\r\n\r\n public get patternParams(): Float32Array { return this._buffers.patternParams; }\r\n public get patternTransforms(): PatternTransforms | undefined { return this._buffers.patternTransforms; }\r\n public get patternFeatureId(): Float32Array { return this._buffers.patternFeatureId; }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Layer.js","sourceRoot":"","sources":["../../../../src/render/webgl/Layer.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,MAAe,cAAe,SAAQ,OAAO;IAG3C,YAAsB,OAAgB;QACpC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,CAAC;IAED,IAAoB,UAAU;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,CAAC;IAEM,iBAAiB,CAAC,KAA8B;QACrD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,KAAM,SAAQ,cAAc;IAKvC,YAAmB,OAAgB,EAAE,OAAe;QAClD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;IAEM,WAAW,CAAC,MAAc;QAC/B,OAAO,MAAM,CAAC,gCAAgC,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChG,CAAC;IAEM,WAAW,CAAC,QAAwB;QACzC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEe,iBAAiB,CAAC,QAAwB,EAAE,IAAgB;QAC1E,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,cAAc;IAIhD,YAAmB,OAAgB,EAAE,aAAsB,EAAE,YAAoB,EAAE,SAAiB;QAClG,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,aAAa;YACf,IAAI,CAAC,UAAU,oCAA2B,CAAC;aACxC,IAAI,YAAY,GAAG,CAAC;YACvB,IAAI,CAAC,UAAU,uCAA+B,CAAC;;YAE/C,IAAI,CAAC,UAAU,kCAA0B,CAAC,CAAC,wEAAwE;IACvH,CAAC;IAEM,WAAW,CAAC,QAAwB;QACzC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEe,iBAAiB,CAAC,QAAwB,EAAE,IAAgB;QAC1E,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { Id64 } from \"@itwin/core-bentley\";\nimport { RenderMemory } from \"../RenderMemory\";\nimport { Graphic } from \"./Graphic\";\nimport { RenderCommands } from \"./RenderCommands\";\nimport { RenderPass } from \"./RenderFlags\";\nimport { Target } from \"./Target\";\n\nabstract class GraphicWrapper extends Graphic {\n public readonly graphic: Graphic;\n\n protected constructor(graphic: Graphic) {\n super();\n this.graphic = graphic;\n }\n\n public dispose(): void {\n this.graphic.dispose();\n }\n\n public get isDisposed(): boolean {\n return this.graphic.isDisposed;\n }\n\n public override get isPickable(): boolean {\n return this.graphic.isPickable;\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n this.graphic.collectStatistics(stats);\n }\n}\n\n/** Within a single tile, contains graphics belonging to a single layer.\n * The same layer may appear in multiple tiles, both within the same tile tree and in other tile trees.\n * Within a single tile tree, all Layers are contained within the same LayerContainer.\n * @internal\n */\nexport class Layer extends GraphicWrapper {\n public readonly layerId: string;\n private readonly _idLo: number;\n private readonly _idHi: number;\n\n public constructor(graphic: Graphic, layerId: string) {\n super(graphic);\n this.layerId = layerId;\n\n const pair = Id64.getUint32Pair(layerId);\n this._idLo = pair.lower;\n this._idHi = pair.upper;\n }\n\n public getPriority(target: Target): number {\n return target.currentFeatureSymbologyOverrides.getSubCategoryPriority(this._idLo, this._idHi);\n }\n\n public addCommands(commands: RenderCommands): void {\n commands.addLayerCommands(this);\n }\n\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\n commands.addHiliteLayerCommands(this.graphic, pass);\n }\n}\n\n/** Contains a GraphicBranch that can contain Layers, for a single model / tile-tree.\n * All geometry within the container has the same Z.\n * @internal\n */\nexport class LayerContainer extends GraphicWrapper {\n public readonly renderPass: RenderPass;\n public readonly elevation: number;\n\n public constructor(graphic: Graphic, drawAsOverlay: boolean, transparency: number, elevation: number) {\n super(graphic);\n this.elevation = elevation;\n\n if (drawAsOverlay)\n this.renderPass = RenderPass.OverlayLayers;\n else if (transparency > 0)\n this.renderPass = RenderPass.TranslucentLayers;\n else\n this.renderPass = RenderPass.OpaqueLayers; // ###TODO: What about layers containing naturally-transparent geometry?\n }\n\n public addCommands(commands: RenderCommands): void {\n commands.processLayers(this);\n }\n\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\n commands.addHiliteLayerCommands(this.graphic, pass);\n }\n}\n"]}
1
+ {"version":3,"file":"Layer.js","sourceRoot":"","sources":["../../../../src/render/webgl/Layer.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,MAAe,cAAe,SAAQ,OAAO;IAG3C,YAAsB,OAAgB;QACpC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,CAAC;IAED,IAAoB,UAAU;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,CAAC;IAEM,iBAAiB,CAAC,KAA8B;QACrD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,KAAM,SAAQ,cAAc;IAKvC,YAAmB,OAAgB,EAAE,OAAe;QAClD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC1B,CAAC;IAEM,WAAW,CAAC,MAAc;QAC/B,OAAO,MAAM,CAAC,gCAAgC,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChG,CAAC;IAEM,WAAW,CAAC,QAAwB;QACzC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAEe,iBAAiB,CAAC,QAAwB,EAAE,IAAgB;QAC1E,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,cAAc;IAIhD,YAAmB,OAAgB,EAAE,aAAsB,EAAE,YAAoB,EAAE,SAAiB;QAClG,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,aAAa;YACf,IAAI,CAAC,UAAU,oCAA2B,CAAC;aACxC,IAAI,YAAY,GAAG,CAAC;YACvB,IAAI,CAAC,UAAU,uCAA+B,CAAC;;YAE/C,IAAI,CAAC,UAAU,kCAA0B,CAAC,CAAC,wEAAwE;IACvH,CAAC;IAEM,WAAW,CAAC,QAAwB;QACzC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEe,iBAAiB,CAAC,QAAwB,EAAE,IAAgB;QAC1E,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { Id64 } from \"@itwin/core-bentley\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { Graphic } from \"./Graphic\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { Target } from \"./Target\";\r\n\r\nabstract class GraphicWrapper extends Graphic {\r\n public readonly graphic: Graphic;\r\n\r\n protected constructor(graphic: Graphic) {\r\n super();\r\n this.graphic = graphic;\r\n }\r\n\r\n public dispose(): void {\r\n this.graphic.dispose();\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this.graphic.isDisposed;\r\n }\r\n\r\n public override get isPickable(): boolean {\r\n return this.graphic.isPickable;\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n this.graphic.collectStatistics(stats);\r\n }\r\n}\r\n\r\n/** Within a single tile, contains graphics belonging to a single layer.\r\n * The same layer may appear in multiple tiles, both within the same tile tree and in other tile trees.\r\n * Within a single tile tree, all Layers are contained within the same LayerContainer.\r\n * @internal\r\n */\r\nexport class Layer extends GraphicWrapper {\r\n public readonly layerId: string;\r\n private readonly _idLo: number;\r\n private readonly _idHi: number;\r\n\r\n public constructor(graphic: Graphic, layerId: string) {\r\n super(graphic);\r\n this.layerId = layerId;\r\n\r\n const pair = Id64.getUint32Pair(layerId);\r\n this._idLo = pair.lower;\r\n this._idHi = pair.upper;\r\n }\r\n\r\n public getPriority(target: Target): number {\r\n return target.currentFeatureSymbologyOverrides.getSubCategoryPriority(this._idLo, this._idHi);\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n commands.addLayerCommands(this);\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n commands.addHiliteLayerCommands(this.graphic, pass);\r\n }\r\n}\r\n\r\n/** Contains a GraphicBranch that can contain Layers, for a single model / tile-tree.\r\n * All geometry within the container has the same Z.\r\n * @internal\r\n */\r\nexport class LayerContainer extends GraphicWrapper {\r\n public readonly renderPass: RenderPass;\r\n public readonly elevation: number;\r\n\r\n public constructor(graphic: Graphic, drawAsOverlay: boolean, transparency: number, elevation: number) {\r\n super(graphic);\r\n this.elevation = elevation;\r\n\r\n if (drawAsOverlay)\r\n this.renderPass = RenderPass.OverlayLayers;\r\n else if (transparency > 0)\r\n this.renderPass = RenderPass.TranslucentLayers;\r\n else\r\n this.renderPass = RenderPass.OpaqueLayers; // ###TODO: What about layers containing naturally-transparent geometry?\r\n }\r\n\r\n public addCommands(commands: RenderCommands): void {\r\n commands.processLayers(this);\r\n }\r\n\r\n public override addHiliteCommands(commands: RenderCommands, pass: RenderPass): void {\r\n commands.addHiliteLayerCommands(this.graphic, pass);\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"LayerCommands.js","sourceRoot":"","sources":["../../../../src/render/webgl/LayerCommands.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, compareNumbers, compareStrings, SortedArray } from \"@itwin/core-bentley\";\nimport {\n DrawCommand, DrawCommands, PopBatchCommand, PopBranchCommand, PopCommand, PushBatchCommand, PushBranchCommand, PushCommand,\n} from \"./DrawCommand\";\nimport { Layer, LayerContainer } from \"./Layer\";\nimport { RenderCommands } from \"./RenderCommands\";\nimport { RenderPass } from \"./RenderFlags\";\nimport { Target } from \"./Target\";\n\ntype OpCode = \"Idle\" | \"Container\" | \"Branch\" | \"Batch\" | \"Layer\";\n\nabstract class State {\n public readonly map: LayerCommandMap;\n protected abstract get opcode(): OpCode;\n\n protected constructor(map: LayerCommandMap) {\n this.map = map;\n }\n\n protected executeTransition(newState: State, func: () => void): void {\n this.map.state = newState;\n func();\n newState.exit();\n this.map.state = this;\n }\n\n protected exit(): void { }\n\n protected throwStateError(operation: string): void {\n // Using assert because these are intended for developers.\n assert(false, `Invalid layer command: operation '${operation}' unimplemented for state '${this.opcode}'`);\n }\n\n public processLayers(_container: LayerContainer, _func: () => void): void {\n this.throwStateError(\"processLayers\");\n }\n\n public pushAndPop(push: PushCommand, _pop: PopCommand, func: () => void): void {\n if (\"pushBatch\" === push.opcode)\n this.processBatch(push, func);\n else if (\"pushBranch\" === push.opcode)\n this.processBranch(push, func);\n else\n this.throwStateError(\"unhandled push command\");\n }\n\n protected processBranch(_push: PushBranchCommand, _func: () => void): void {\n this.throwStateError(\"processBranch\");\n }\n\n protected processBatch(_push: PushBatchCommand, _func: () => void): void {\n this.throwStateError(\"processBatch\");\n }\n\n public set currentLayer(_layer: Layer | undefined) {\n this.throwStateError(\"setCurrentLayer\");\n }\n\n public addCommands(_commands: DrawCommand[]): void {\n this.throwStateError(\"addCommands\");\n }\n}\n\nclass IdleState extends State {\n protected get opcode(): OpCode { return \"Idle\"; }\n\n public constructor(map: LayerCommandMap) {\n super(map);\n }\n\n public override processLayers(container: LayerContainer, func: () => void): void {\n this.executeTransition(new ContainerState(this, container), func);\n }\n}\n\nclass ContainerState extends State {\n public readonly elevation: number;\n protected get opcode(): OpCode { return \"Container\"; }\n\n public constructor(idle: IdleState, container: LayerContainer) {\n super(idle.map);\n this.elevation = container.elevation;\n }\n\n protected override processBranch(push: PushBranchCommand, func: () => void): void {\n this.executeTransition(new BranchState(this, push), func);\n }\n}\n\nclass BranchState extends State {\n public readonly pushCommand: PushBranchCommand;\n public readonly containerState: ContainerState;\n private readonly _layerCommands = new Set<LayerCommands>();\n\n protected get opcode(): OpCode { return \"Branch\"; }\n\n public constructor(containerState: ContainerState, pushCommand: PushBranchCommand) {\n super(containerState.map);\n this.containerState = containerState;\n this.pushCommand = pushCommand;\n }\n\n protected override processBatch(push: PushBatchCommand, func: () => void): void {\n this.executeTransition(new BatchState(this, push), func);\n }\n\n public markLayer(cmds: LayerCommands): void {\n if (!this._layerCommands.has(cmds)) {\n cmds.commands.push(this.pushCommand);\n this._layerCommands.add(cmds);\n }\n }\n\n protected override exit(): void {\n for (const cmds of this._layerCommands)\n cmds.commands.push(PopBranchCommand.instance);\n }\n}\n\nclass BatchState extends State {\n public readonly branchState: BranchState;\n public readonly pushCommand: PushBatchCommand;\n\n protected get opcode(): OpCode { return \"Batch\"; }\n\n public constructor(branchState: BranchState, pushCommand: PushBatchCommand) {\n super(branchState.map);\n this.branchState = branchState;\n this.pushCommand = pushCommand;\n }\n\n public override set currentLayer(layer: Layer | undefined) {\n if (undefined === layer)\n this.throwStateError(\"currentLayer = undefined\");\n else\n this.map.state = new LayerState(this, layer);\n }\n}\n\nclass LayerState extends State {\n private readonly _batchState: BatchState;\n public readonly commands: LayerCommands;\n\n protected get opcode(): OpCode { return \"Layer\"; }\n\n public constructor(batchState: BatchState, layer: Layer) {\n super(batchState.map);\n this._batchState = batchState;\n\n this.commands = this.map.getCommands(layer, batchState.branchState.containerState.elevation);\n this._batchState.branchState.markLayer(this.commands);\n this.commands.commands.push(batchState.pushCommand);\n }\n\n public override set currentLayer(layer: Layer | undefined) {\n if (undefined === layer) {\n this.commands.commands.push(PopBatchCommand.instance);\n this.map.state = this._batchState;\n } else {\n this.throwStateError(\"currentLayer != undefined\");\n }\n }\n\n public override pushAndPop(push: PushCommand, pop: PopCommand, func: () => void): void {\n this.commands.commands.push(push);\n func();\n this.commands.commands.push(pop);\n }\n\n public override addCommands(commands: DrawCommand[]): void {\n for (const command of commands)\n this.commands.commands.push(command);\n }\n}\n\n/** DrawCommands associated with one Layer, drawn during the Layers render pass. */\nclass LayerCommands {\n public readonly layerId: string;\n public readonly priority: number;\n public readonly elevation: number;\n public readonly commands: DrawCommand[] = [];\n\n public constructor(layerId: string, priority: number, elevation: number) {\n this.layerId = layerId;\n this.priority = priority;\n this.elevation = elevation;\n }\n}\n\nclass LayerCommandMap extends SortedArray<LayerCommands> {\n public readonly target: Target;\n public state: State;\n\n public constructor(target: Target) {\n // Layers with different view Z draw in ascending order by Z.\n // Layers with same elevation draw in ascending order by priority.\n // Layers with same elevation and priority draw in indeterminate order.\n super((lhs: LayerCommands, rhs: LayerCommands) => {\n let cmp = compareNumbers(lhs.elevation, rhs.elevation);\n if (0 === cmp) {\n cmp = compareNumbers(lhs.priority, rhs.priority);\n if (0 === cmp)\n cmp = compareStrings(lhs.layerId, rhs.layerId);\n }\n\n return cmp;\n });\n\n this.target = target;\n this.state = new IdleState(this);\n }\n\n public override clear(): void {\n super.clear();\n assert(this.state instanceof IdleState);\n }\n\n public getCommands(layer: Layer, elevation: number): LayerCommands {\n for (const entry of this._array)\n if (entry.layerId === layer.layerId && entry.elevation === elevation)\n return entry;\n\n const cmds = new LayerCommands(layer.layerId, layer.getPriority(this.target), elevation);\n this.insert(cmds);\n return cmds;\n }\n\n public outputCommands(cmds: DrawCommand[]): void {\n for (const entry of this._array)\n for (const cmd of entry.commands)\n cmds.push(cmd);\n }\n}\n\n/** @internal */\nexport class LayerCommandLists {\n private readonly _maps: LayerCommandMap[] = [];\n private readonly _renderCommands: RenderCommands;\n private _activeMap?: LayerCommandMap;\n\n public constructor(cmds: RenderCommands) {\n this._renderCommands = cmds;\n }\n\n public clear(): void {\n this._maps.length = 0;\n }\n\n public processLayers(container: LayerContainer, func: () => void): void {\n assert(undefined === this._activeMap);\n const pass = container.renderPass;\n this._activeMap = this._maps[pass];\n if (undefined === this._activeMap) {\n this._activeMap = new LayerCommandMap(this._renderCommands.target);\n this._maps[pass] = this._activeMap;\n }\n\n this._activeMap.state.processLayers(container, func);\n this._activeMap = undefined;\n }\n\n public set currentLayer(layer: Layer | undefined) {\n assert(undefined !== this._activeMap);\n this._activeMap.state.currentLayer = layer;\n }\n\n public addCommands(cmds: DrawCommands): void {\n assert(undefined !== this._activeMap);\n this._activeMap.state.addCommands(cmds);\n }\n\n public pushAndPop(push: PushCommand, pop: PopCommand, func: () => void): void {\n assert(undefined !== this._activeMap);\n this._activeMap.state.pushAndPop(push, pop, func);\n }\n\n public outputCommands(): void {\n this.outputCommandsForPass(RenderPass.OpaqueLayers);\n this.outputCommandsForPass(RenderPass.TranslucentLayers);\n this.outputCommandsForPass(RenderPass.OverlayLayers);\n }\n\n private outputCommandsForPass(pass: RenderPass): void {\n const map = this._maps[pass];\n if (undefined !== map)\n map.outputCommands(this._renderCommands.getCommands(pass));\n }\n}\n"]}
1
+ {"version":3,"file":"LayerCommands.js","sourceRoot":"","sources":["../../../../src/render/webgl/LayerCommands.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, compareNumbers, compareStrings, SortedArray } from \"@itwin/core-bentley\";\r\nimport {\r\n DrawCommand, DrawCommands, PopBatchCommand, PopBranchCommand, PopCommand, PushBatchCommand, PushBranchCommand, PushCommand,\r\n} from \"./DrawCommand\";\r\nimport { Layer, LayerContainer } from \"./Layer\";\r\nimport { RenderCommands } from \"./RenderCommands\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { Target } from \"./Target\";\r\n\r\ntype OpCode = \"Idle\" | \"Container\" | \"Branch\" | \"Batch\" | \"Layer\";\r\n\r\nabstract class State {\r\n public readonly map: LayerCommandMap;\r\n protected abstract get opcode(): OpCode;\r\n\r\n protected constructor(map: LayerCommandMap) {\r\n this.map = map;\r\n }\r\n\r\n protected executeTransition(newState: State, func: () => void): void {\r\n this.map.state = newState;\r\n func();\r\n newState.exit();\r\n this.map.state = this;\r\n }\r\n\r\n protected exit(): void { }\r\n\r\n protected throwStateError(operation: string): void {\r\n // Using assert because these are intended for developers.\r\n assert(false, `Invalid layer command: operation '${operation}' unimplemented for state '${this.opcode}'`);\r\n }\r\n\r\n public processLayers(_container: LayerContainer, _func: () => void): void {\r\n this.throwStateError(\"processLayers\");\r\n }\r\n\r\n public pushAndPop(push: PushCommand, _pop: PopCommand, func: () => void): void {\r\n if (\"pushBatch\" === push.opcode)\r\n this.processBatch(push, func);\r\n else if (\"pushBranch\" === push.opcode)\r\n this.processBranch(push, func);\r\n else\r\n this.throwStateError(\"unhandled push command\");\r\n }\r\n\r\n protected processBranch(_push: PushBranchCommand, _func: () => void): void {\r\n this.throwStateError(\"processBranch\");\r\n }\r\n\r\n protected processBatch(_push: PushBatchCommand, _func: () => void): void {\r\n this.throwStateError(\"processBatch\");\r\n }\r\n\r\n public set currentLayer(_layer: Layer | undefined) {\r\n this.throwStateError(\"setCurrentLayer\");\r\n }\r\n\r\n public addCommands(_commands: DrawCommand[]): void {\r\n this.throwStateError(\"addCommands\");\r\n }\r\n}\r\n\r\nclass IdleState extends State {\r\n protected get opcode(): OpCode { return \"Idle\"; }\r\n\r\n public constructor(map: LayerCommandMap) {\r\n super(map);\r\n }\r\n\r\n public override processLayers(container: LayerContainer, func: () => void): void {\r\n this.executeTransition(new ContainerState(this, container), func);\r\n }\r\n}\r\n\r\nclass ContainerState extends State {\r\n public readonly elevation: number;\r\n protected get opcode(): OpCode { return \"Container\"; }\r\n\r\n public constructor(idle: IdleState, container: LayerContainer) {\r\n super(idle.map);\r\n this.elevation = container.elevation;\r\n }\r\n\r\n protected override processBranch(push: PushBranchCommand, func: () => void): void {\r\n this.executeTransition(new BranchState(this, push), func);\r\n }\r\n}\r\n\r\nclass BranchState extends State {\r\n public readonly pushCommand: PushBranchCommand;\r\n public readonly containerState: ContainerState;\r\n private readonly _layerCommands = new Set<LayerCommands>();\r\n\r\n protected get opcode(): OpCode { return \"Branch\"; }\r\n\r\n public constructor(containerState: ContainerState, pushCommand: PushBranchCommand) {\r\n super(containerState.map);\r\n this.containerState = containerState;\r\n this.pushCommand = pushCommand;\r\n }\r\n\r\n protected override processBatch(push: PushBatchCommand, func: () => void): void {\r\n this.executeTransition(new BatchState(this, push), func);\r\n }\r\n\r\n public markLayer(cmds: LayerCommands): void {\r\n if (!this._layerCommands.has(cmds)) {\r\n cmds.commands.push(this.pushCommand);\r\n this._layerCommands.add(cmds);\r\n }\r\n }\r\n\r\n protected override exit(): void {\r\n for (const cmds of this._layerCommands)\r\n cmds.commands.push(PopBranchCommand.instance);\r\n }\r\n}\r\n\r\nclass BatchState extends State {\r\n public readonly branchState: BranchState;\r\n public readonly pushCommand: PushBatchCommand;\r\n\r\n protected get opcode(): OpCode { return \"Batch\"; }\r\n\r\n public constructor(branchState: BranchState, pushCommand: PushBatchCommand) {\r\n super(branchState.map);\r\n this.branchState = branchState;\r\n this.pushCommand = pushCommand;\r\n }\r\n\r\n public override set currentLayer(layer: Layer | undefined) {\r\n if (undefined === layer)\r\n this.throwStateError(\"currentLayer = undefined\");\r\n else\r\n this.map.state = new LayerState(this, layer);\r\n }\r\n}\r\n\r\nclass LayerState extends State {\r\n private readonly _batchState: BatchState;\r\n public readonly commands: LayerCommands;\r\n\r\n protected get opcode(): OpCode { return \"Layer\"; }\r\n\r\n public constructor(batchState: BatchState, layer: Layer) {\r\n super(batchState.map);\r\n this._batchState = batchState;\r\n\r\n this.commands = this.map.getCommands(layer, batchState.branchState.containerState.elevation);\r\n this._batchState.branchState.markLayer(this.commands);\r\n this.commands.commands.push(batchState.pushCommand);\r\n }\r\n\r\n public override set currentLayer(layer: Layer | undefined) {\r\n if (undefined === layer) {\r\n this.commands.commands.push(PopBatchCommand.instance);\r\n this.map.state = this._batchState;\r\n } else {\r\n this.throwStateError(\"currentLayer != undefined\");\r\n }\r\n }\r\n\r\n public override pushAndPop(push: PushCommand, pop: PopCommand, func: () => void): void {\r\n this.commands.commands.push(push);\r\n func();\r\n this.commands.commands.push(pop);\r\n }\r\n\r\n public override addCommands(commands: DrawCommand[]): void {\r\n for (const command of commands)\r\n this.commands.commands.push(command);\r\n }\r\n}\r\n\r\n/** DrawCommands associated with one Layer, drawn during the Layers render pass. */\r\nclass LayerCommands {\r\n public readonly layerId: string;\r\n public readonly priority: number;\r\n public readonly elevation: number;\r\n public readonly commands: DrawCommand[] = [];\r\n\r\n public constructor(layerId: string, priority: number, elevation: number) {\r\n this.layerId = layerId;\r\n this.priority = priority;\r\n this.elevation = elevation;\r\n }\r\n}\r\n\r\nclass LayerCommandMap extends SortedArray<LayerCommands> {\r\n public readonly target: Target;\r\n public state: State;\r\n\r\n public constructor(target: Target) {\r\n // Layers with different view Z draw in ascending order by Z.\r\n // Layers with same elevation draw in ascending order by priority.\r\n // Layers with same elevation and priority draw in indeterminate order.\r\n super((lhs: LayerCommands, rhs: LayerCommands) => {\r\n let cmp = compareNumbers(lhs.elevation, rhs.elevation);\r\n if (0 === cmp) {\r\n cmp = compareNumbers(lhs.priority, rhs.priority);\r\n if (0 === cmp)\r\n cmp = compareStrings(lhs.layerId, rhs.layerId);\r\n }\r\n\r\n return cmp;\r\n });\r\n\r\n this.target = target;\r\n this.state = new IdleState(this);\r\n }\r\n\r\n public override clear(): void {\r\n super.clear();\r\n assert(this.state instanceof IdleState);\r\n }\r\n\r\n public getCommands(layer: Layer, elevation: number): LayerCommands {\r\n for (const entry of this._array)\r\n if (entry.layerId === layer.layerId && entry.elevation === elevation)\r\n return entry;\r\n\r\n const cmds = new LayerCommands(layer.layerId, layer.getPriority(this.target), elevation);\r\n this.insert(cmds);\r\n return cmds;\r\n }\r\n\r\n public outputCommands(cmds: DrawCommand[]): void {\r\n for (const entry of this._array)\r\n for (const cmd of entry.commands)\r\n cmds.push(cmd);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class LayerCommandLists {\r\n private readonly _maps: LayerCommandMap[] = [];\r\n private readonly _renderCommands: RenderCommands;\r\n private _activeMap?: LayerCommandMap;\r\n\r\n public constructor(cmds: RenderCommands) {\r\n this._renderCommands = cmds;\r\n }\r\n\r\n public clear(): void {\r\n this._maps.length = 0;\r\n }\r\n\r\n public processLayers(container: LayerContainer, func: () => void): void {\r\n assert(undefined === this._activeMap);\r\n const pass = container.renderPass;\r\n this._activeMap = this._maps[pass];\r\n if (undefined === this._activeMap) {\r\n this._activeMap = new LayerCommandMap(this._renderCommands.target);\r\n this._maps[pass] = this._activeMap;\r\n }\r\n\r\n this._activeMap.state.processLayers(container, func);\r\n this._activeMap = undefined;\r\n }\r\n\r\n public set currentLayer(layer: Layer | undefined) {\r\n assert(undefined !== this._activeMap);\r\n this._activeMap.state.currentLayer = layer;\r\n }\r\n\r\n public addCommands(cmds: DrawCommands): void {\r\n assert(undefined !== this._activeMap);\r\n this._activeMap.state.addCommands(cmds);\r\n }\r\n\r\n public pushAndPop(push: PushCommand, pop: PopCommand, func: () => void): void {\r\n assert(undefined !== this._activeMap);\r\n this._activeMap.state.pushAndPop(push, pop, func);\r\n }\r\n\r\n public outputCommands(): void {\r\n this.outputCommandsForPass(RenderPass.OpaqueLayers);\r\n this.outputCommandsForPass(RenderPass.TranslucentLayers);\r\n this.outputCommandsForPass(RenderPass.OverlayLayers);\r\n }\r\n\r\n private outputCommandsForPass(pass: RenderPass): void {\r\n const map = this._maps[pass];\r\n if (undefined !== map)\r\n map.outputCommands(this._renderCommands.getCommands(pass));\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"LightingUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/LightingUniforms.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAY,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEtC;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,gBAAgB;IAA7B;QACS,YAAO,GAAG,CAAC,CAAC;QAEnB,YAAY;QACJ,cAAS,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;QACrC,iBAAY,GAAG,KAAK,CAAC;QAE7B,aAAa;QACI,UAAK,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;QAE9C,gBAAgB;QACC,SAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;IAuCzC,CAAC;IArCS,MAAM,CAAC,GAAa,EAAE,KAAa;QACzC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACzC,CAAC;IAEM,MAAM,CAAC,QAAuB;QACnC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;YACtD,OAAO;QAET,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;QAEnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;QAErC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;QAEzC,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QACtC,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QACtC,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;QAE5B,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;QAC3C,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1D,CAAC;IAEM,IAAI,CAAC,OAAsB;QAChC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;YACtB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { ColorDef, LightSettings, RgbColor } from \"@itwin/core-common\";\nimport { FloatRgb } from \"./FloatRGBA\";\nimport { UniformHandle } from \"./UniformHandle\";\nimport { desync, sync } from \"./Sync\";\n\n/** Maintains state of uniforms associated with a DisplayStyle3dState's LightSettings.\n * A single float array stored as:\n * 0 float solar intensity\n * 1 vec3 ambient color\n * 4 float ambient intensity\n * 5 vec3 hemi lower color\n * 8 vec3 hemi upper color\n * 11 float hemi intensity\n * 12 float portrait intensity\n * 13 float specular intensity\n * 14 float num cels\n * 15 fresnel intensity (negative if fresnel is to be inverted)\n * Note solar direction is handled separately in TargetUniforms.\n * @internal\n */\nexport class LightingUniforms {\n public syncKey = 0;\n\n // CPU state\n private _settings = LightSettings.fromJSON();\n private _initialized = false;\n\n // GPU state.\n private readonly _data = new Float32Array(16);\n\n // Working state\n private readonly _rgb = new FloatRgb();\n\n private setRgb(rgb: RgbColor, index: number): void {\n this._rgb.setTbgr(ColorDef.computeTbgrFromComponents(rgb.r, rgb.g, rgb.b));\n this._data[index + 0] = this._rgb.red;\n this._data[index + 1] = this._rgb.green;\n this._data[index + 2] = this._rgb.blue;\n }\n\n public update(settings: LightSettings): void {\n if (this._initialized && this._settings.equals(settings))\n return;\n\n this._initialized = true;\n this._settings = settings;\n desync(this);\n\n const data = this._data;\n data[0] = settings.solar.intensity;\n\n this.setRgb(settings.ambient.color, 1);\n data[4] = settings.ambient.intensity;\n\n this.setRgb(settings.hemisphere.lowerColor, 5);\n this.setRgb(settings.hemisphere.upperColor, 8);\n data[11] = settings.hemisphere.intensity;\n\n data[12] = settings.portraitIntensity;\n data[13] = settings.specularIntensity;\n data[14] = settings.numCels;\n\n const fresnel = settings.fresnel.intensity;\n data[15] = settings.fresnel.invert ? -fresnel : fresnel;\n }\n\n public bind(uniform: UniformHandle): void {\n if (!sync(this, uniform))\n uniform.setUniform1fv(this._data);\n }\n}\n"]}
1
+ {"version":3,"file":"LightingUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/LightingUniforms.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAY,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEtC;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,gBAAgB;IAA7B;QACS,YAAO,GAAG,CAAC,CAAC;QAEnB,YAAY;QACJ,cAAS,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;QACrC,iBAAY,GAAG,KAAK,CAAC;QAE7B,aAAa;QACI,UAAK,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;QAE9C,gBAAgB;QACC,SAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;IAuCzC,CAAC;IArCS,MAAM,CAAC,GAAa,EAAE,KAAa;QACzC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACzC,CAAC;IAEM,MAAM,CAAC,QAAuB;QACnC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;YACtD,OAAO;QAET,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;QAEnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;QAErC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;QAEzC,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QACtC,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QACtC,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;QAE5B,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC;QAC3C,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1D,CAAC;IAEM,IAAI,CAAC,OAAsB;QAChC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;YACtB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { ColorDef, LightSettings, RgbColor } from \"@itwin/core-common\";\r\nimport { FloatRgb } from \"./FloatRGBA\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { desync, sync } from \"./Sync\";\r\n\r\n/** Maintains state of uniforms associated with a DisplayStyle3dState's LightSettings.\r\n * A single float array stored as:\r\n * 0 float solar intensity\r\n * 1 vec3 ambient color\r\n * 4 float ambient intensity\r\n * 5 vec3 hemi lower color\r\n * 8 vec3 hemi upper color\r\n * 11 float hemi intensity\r\n * 12 float portrait intensity\r\n * 13 float specular intensity\r\n * 14 float num cels\r\n * 15 fresnel intensity (negative if fresnel is to be inverted)\r\n * Note solar direction is handled separately in TargetUniforms.\r\n * @internal\r\n */\r\nexport class LightingUniforms {\r\n public syncKey = 0;\r\n\r\n // CPU state\r\n private _settings = LightSettings.fromJSON();\r\n private _initialized = false;\r\n\r\n // GPU state.\r\n private readonly _data = new Float32Array(16);\r\n\r\n // Working state\r\n private readonly _rgb = new FloatRgb();\r\n\r\n private setRgb(rgb: RgbColor, index: number): void {\r\n this._rgb.setTbgr(ColorDef.computeTbgrFromComponents(rgb.r, rgb.g, rgb.b));\r\n this._data[index + 0] = this._rgb.red;\r\n this._data[index + 1] = this._rgb.green;\r\n this._data[index + 2] = this._rgb.blue;\r\n }\r\n\r\n public update(settings: LightSettings): void {\r\n if (this._initialized && this._settings.equals(settings))\r\n return;\r\n\r\n this._initialized = true;\r\n this._settings = settings;\r\n desync(this);\r\n\r\n const data = this._data;\r\n data[0] = settings.solar.intensity;\r\n\r\n this.setRgb(settings.ambient.color, 1);\r\n data[4] = settings.ambient.intensity;\r\n\r\n this.setRgb(settings.hemisphere.lowerColor, 5);\r\n this.setRgb(settings.hemisphere.upperColor, 8);\r\n data[11] = settings.hemisphere.intensity;\r\n\r\n data[12] = settings.portraitIntensity;\r\n data[13] = settings.specularIntensity;\r\n data[14] = settings.numCels;\r\n\r\n const fresnel = settings.fresnel.intensity;\r\n data[15] = settings.fresnel.invert ? -fresnel : fresnel;\r\n }\r\n\r\n public bind(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform1fv(this._data);\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"LineCode.js","sourceRoot":"","sources":["../../../../src/render/webgl/LineCode.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;GAEG;AACH,MAAM,KAAW,QAAQ,CAwCxB;AAxCD,WAAiB,QAAQ;IACvB,SAAgB,mBAAmB,CAAC,MAAkB;QACpD,QAAQ,MAAM,EAAE;YACd,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC;YACrC,KAAK,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC;YACpC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;SACnB;IACH,CAAC;IAde,4BAAmB,sBAclC,CAAA;IAEY,cAAK,GAAG,CAAC,CAAC;IACV,cAAK,GAAG,EAAE,CAAC,CAAC,mEAAmE;IAC/E,aAAI,GAAG,EAAE,CAAC;IAEvB,qEAAqE;IACrE,iDAAiD;IACpC,qBAAY,GAAa;QACpC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;KAAC,CAAC;AACpM,CAAC,EAxCgB,QAAQ,KAAR,QAAQ,QAwCxB","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { LinePixels } from \"@itwin/core-common\";\n\n/** Describes one of the pre-defined line patterns. See Render.LinePixels.\n * @internal\n */\nexport namespace LineCode {\n export function valueFromLinePixels(pixels: LinePixels): number {\n switch (pixels) {\n case LinePixels.Code0: return 0;\n case LinePixels.Code1: return 1;\n case LinePixels.Code2: return 2;\n case LinePixels.Code3: return 3;\n case LinePixels.Code4: return 4;\n case LinePixels.Code5: return 5;\n case LinePixels.Code6: return 6;\n case LinePixels.Code7: return 7;\n case LinePixels.HiddenLine: return 8;\n case LinePixels.Invisible: return 9;\n default: return 0;\n }\n }\n\n export const solid = 0;\n export const count = 16; // only 10 line codes, but pad to 16 to make height a power of two.\n export const size = 32;\n\n // NB: Non-power-of-two textures in WebGL only support clamp-to-edge.\n // Make this a power of two so we can use repeat.\n export const lineCodeData: number[] = [\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,\n 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,\n 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff,\n 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];\n}\n"]}
1
+ {"version":3,"file":"LineCode.js","sourceRoot":"","sources":["../../../../src/render/webgl/LineCode.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;GAEG;AACH,MAAM,KAAW,QAAQ,CAwCxB;AAxCD,WAAiB,QAAQ;IACvB,SAAgB,mBAAmB,CAAC,MAAkB;QACpD,QAAQ,MAAM,EAAE;YACd,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YAChC,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC;YACrC,KAAK,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC;YACpC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;SACnB;IACH,CAAC;IAde,4BAAmB,sBAclC,CAAA;IAEY,cAAK,GAAG,CAAC,CAAC;IACV,cAAK,GAAG,EAAE,CAAC,CAAC,mEAAmE;IAC/E,aAAI,GAAG,EAAE,CAAC;IAEvB,qEAAqE;IACrE,iDAAiD;IACpC,qBAAY,GAAa;QACpC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9L,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;KAAC,CAAC;AACpM,CAAC,EAxCgB,QAAQ,KAAR,QAAQ,QAwCxB","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 { LinePixels } from \"@itwin/core-common\";\r\n\r\n/** Describes one of the pre-defined line patterns. See Render.LinePixels.\r\n * @internal\r\n */\r\nexport namespace LineCode {\r\n export function valueFromLinePixels(pixels: LinePixels): number {\r\n switch (pixels) {\r\n case LinePixels.Code0: return 0;\r\n case LinePixels.Code1: return 1;\r\n case LinePixels.Code2: return 2;\r\n case LinePixels.Code3: return 3;\r\n case LinePixels.Code4: return 4;\r\n case LinePixels.Code5: return 5;\r\n case LinePixels.Code6: return 6;\r\n case LinePixels.Code7: return 7;\r\n case LinePixels.HiddenLine: return 8;\r\n case LinePixels.Invisible: return 9;\r\n default: return 0;\r\n }\r\n }\r\n\r\n export const solid = 0;\r\n export const count = 16; // only 10 line codes, but pad to 16 to make height a power of two.\r\n export const size = 32;\r\n\r\n // NB: Non-power-of-two textures in WebGL only support clamp-to-edge.\r\n // Make this a power of two so we can use repeat.\r\n export const lineCodeData: number[] = [\r\n 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,\r\n 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\r\n 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,\r\n 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff,\r\n 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\r\n 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff,\r\n 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\r\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00];\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Material.js","sourceRoot":"","sources":["../../../../src/render/webgl/Material.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { ColorDef, RenderMaterial } from \"@itwin/core-common\";\nimport { SurfaceMaterial, SurfaceMaterialAtlas } from \"../primitives/SurfaceParams\";\nimport { FloatRgb } from \"./FloatRGBA\";\n\n/** Parameters describing a single material. The parameters used are:\n * - diffuse color rgb (vec3).\n * - alpha (float in [0..1])\n * - is rgb overridden (bool)\n * - is alpha overridden (bool)\n * - specular exponent (float).\n * - specular color (vec3).\n * - specular weight (float in [0..1])\n * - diffuse weight (float in [0..1])\n * - texture weight (float in [0..1])\n *\n * The rgb and alpha are applied in the vertex shader. Either can be negative, indicating the material does not override it.\n *\n * The rest are passed as a varying vec4 to be applied in the fragment shader.\n * All but the specular exponent are compressed such that floats in [0..1] become integers in [0..255] and concatenated bitwise in pairs into 16-bit integer values.\n *\n * The result is:\n * x: diffuse and specular weights\n * y: texture weight and specular red\n * z: specular green and blue\n * w: specular exponent\n *\n * This packing is motivated by the limited max number of varying vectors guaranteed by WebGL.\n * A varying is used because:\n * 1. Material atlases require looking up the material associated with a particular vertex; and\n * 2. The vertex material may be replaced with a default material based on other criteria such as view flags and feature symbology overrides.\n * @internal\n */\nexport class Material extends RenderMaterial {\n // eslint-disable-next-line deprecation/deprecation\n public static readonly default: Material = new Material(RenderMaterial.Params.defaults);\n\n // Used for type-switching vs MaterialAtlas\n public readonly isAtlas = false as const;\n public readonly fragUniforms = new Float32Array(4);\n public readonly rgba = new Float32Array(4);\n\n public get overridesRgb() { return this.rgba[0] >= 0; }\n public get overridesAlpha() { return this.rgba[3] >= 0; }\n public get hasTranslucency() { return this.overridesAlpha && this.rgba[3] < 1; }\n\n // eslint-disable-next-line deprecation/deprecation\n public constructor(params: RenderMaterial.Params) {\n super(params);\n\n if (undefined !== params.diffuseColor) {\n const rgb = FloatRgb.fromColorDef(params.diffuseColor);\n this.rgba[0] = rgb.red;\n this.rgba[1] = rgb.green;\n this.rgba[2] = rgb.blue;\n } else {\n this.rgba[0] = this.rgba[1] = this.rgba[2] = -1;\n }\n\n const alpha = undefined !== params.alpha ? params.alpha : -1;\n this.rgba[3] = alpha;\n\n const scale = (value: number) => Math.floor(value * 255 + 0.5);\n this.setInteger(scale(params.diffuse), scale(params.specular), 0);\n\n const textureWeight = undefined !== this.textureMapping ? this.textureMapping.params.weight : 1.0;\n const specularRgb = undefined !== params.specularColor ? params.specularColor : ColorDef.white;\n const specularColors = specularRgb.colors;\n this.setInteger(scale(textureWeight), specularColors.r, 1);\n this.setInteger(specularColors.g, specularColors.b, 2);\n\n this.fragUniforms[3] = params.specularExponent;\n }\n\n private setInteger(loByte: number, hiByte: number, index: number): void {\n const clamp = (x: number) => Math.floor(Math.min(255, (Math.max(x, 0))));\n\n loByte = clamp(loByte);\n hiByte = clamp(hiByte);\n\n this.fragUniforms[index] = loByte + hiByte * 256;\n }\n}\n\nObject.freeze(Material.default);\n\n/** Describes the material associated with a surface.\n * @internal\n */\nexport type MaterialInfo = Material | SurfaceMaterialAtlas;\n\n/** @internal */\nexport function createMaterialInfo(source: SurfaceMaterial | undefined): MaterialInfo | undefined {\n if (undefined === source)\n return undefined;\n else if (source.isAtlas)\n return source;\n else\n return source.material as Material;\n}\n"]}
1
+ {"version":3,"file":"Material.js","sourceRoot":"","sources":["../../../../src/render/webgl/Material.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { ColorDef, RenderMaterial } from \"@itwin/core-common\";\r\nimport { SurfaceMaterial, SurfaceMaterialAtlas } from \"../primitives/SurfaceParams\";\r\nimport { FloatRgb } from \"./FloatRGBA\";\r\n\r\n/** Parameters describing a single material. The parameters used are:\r\n * - diffuse color rgb (vec3).\r\n * - alpha (float in [0..1])\r\n * - is rgb overridden (bool)\r\n * - is alpha overridden (bool)\r\n * - specular exponent (float).\r\n * - specular color (vec3).\r\n * - specular weight (float in [0..1])\r\n * - diffuse weight (float in [0..1])\r\n * - texture weight (float in [0..1])\r\n *\r\n * The rgb and alpha are applied in the vertex shader. Either can be negative, indicating the material does not override it.\r\n *\r\n * The rest are passed as a varying vec4 to be applied in the fragment shader.\r\n * All but the specular exponent are compressed such that floats in [0..1] become integers in [0..255] and concatenated bitwise in pairs into 16-bit integer values.\r\n *\r\n * The result is:\r\n * x: diffuse and specular weights\r\n * y: texture weight and specular red\r\n * z: specular green and blue\r\n * w: specular exponent\r\n *\r\n * This packing is motivated by the limited max number of varying vectors guaranteed by WebGL.\r\n * A varying is used because:\r\n * 1. Material atlases require looking up the material associated with a particular vertex; and\r\n * 2. The vertex material may be replaced with a default material based on other criteria such as view flags and feature symbology overrides.\r\n * @internal\r\n */\r\nexport class Material extends RenderMaterial {\r\n // eslint-disable-next-line deprecation/deprecation\r\n public static readonly default: Material = new Material(RenderMaterial.Params.defaults);\r\n\r\n // Used for type-switching vs MaterialAtlas\r\n public readonly isAtlas = false as const;\r\n public readonly fragUniforms = new Float32Array(4);\r\n public readonly rgba = new Float32Array(4);\r\n\r\n public get overridesRgb() { return this.rgba[0] >= 0; }\r\n public get overridesAlpha() { return this.rgba[3] >= 0; }\r\n public get hasTranslucency() { return this.overridesAlpha && this.rgba[3] < 1; }\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n public constructor(params: RenderMaterial.Params) {\r\n super(params);\r\n\r\n if (undefined !== params.diffuseColor) {\r\n const rgb = FloatRgb.fromColorDef(params.diffuseColor);\r\n this.rgba[0] = rgb.red;\r\n this.rgba[1] = rgb.green;\r\n this.rgba[2] = rgb.blue;\r\n } else {\r\n this.rgba[0] = this.rgba[1] = this.rgba[2] = -1;\r\n }\r\n\r\n const alpha = undefined !== params.alpha ? params.alpha : -1;\r\n this.rgba[3] = alpha;\r\n\r\n const scale = (value: number) => Math.floor(value * 255 + 0.5);\r\n this.setInteger(scale(params.diffuse), scale(params.specular), 0);\r\n\r\n const textureWeight = undefined !== this.textureMapping ? this.textureMapping.params.weight : 1.0;\r\n const specularRgb = undefined !== params.specularColor ? params.specularColor : ColorDef.white;\r\n const specularColors = specularRgb.colors;\r\n this.setInteger(scale(textureWeight), specularColors.r, 1);\r\n this.setInteger(specularColors.g, specularColors.b, 2);\r\n\r\n this.fragUniforms[3] = params.specularExponent;\r\n }\r\n\r\n private setInteger(loByte: number, hiByte: number, index: number): void {\r\n const clamp = (x: number) => Math.floor(Math.min(255, (Math.max(x, 0))));\r\n\r\n loByte = clamp(loByte);\r\n hiByte = clamp(hiByte);\r\n\r\n this.fragUniforms[index] = loByte + hiByte * 256;\r\n }\r\n}\r\n\r\nObject.freeze(Material.default);\r\n\r\n/** Describes the material associated with a surface.\r\n * @internal\r\n */\r\nexport type MaterialInfo = Material | SurfaceMaterialAtlas;\r\n\r\n/** @internal */\r\nexport function createMaterialInfo(source: SurfaceMaterial | undefined): MaterialInfo | undefined {\r\n if (undefined === source)\r\n return undefined;\r\n else if (source.isAtlas)\r\n return source;\r\n else\r\n return source.material as Material;\r\n}\r\n"]}