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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (820) hide show
  1. package/CHANGELOG.md +23 -1
  2. package/lib/cjs/AccuDraw.d.ts.map +1 -1
  3. package/lib/cjs/AccuDraw.js +0 -2
  4. package/lib/cjs/AccuDraw.js.map +1 -1
  5. package/lib/cjs/AccuSnap.d.ts.map +1 -1
  6. package/lib/cjs/AccuSnap.js +17 -8
  7. package/lib/cjs/AccuSnap.js.map +1 -1
  8. package/lib/cjs/BackgroundMapGeometry.js +3 -3
  9. package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
  10. package/lib/cjs/BingLocation.js +1 -1
  11. package/lib/cjs/BingLocation.js.map +1 -1
  12. package/lib/cjs/BriefcaseConnection.d.ts +0 -1
  13. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  14. package/lib/cjs/BriefcaseConnection.js +2 -3
  15. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  16. package/lib/cjs/BriefcaseTxns.d.ts.map +1 -1
  17. package/lib/cjs/ChangeFlags.d.ts +1 -1
  18. package/lib/cjs/ChangeFlags.d.ts.map +1 -1
  19. package/lib/cjs/ChangeFlags.js.map +1 -1
  20. package/lib/cjs/CheckpointConnection.js +1 -1
  21. package/lib/cjs/CheckpointConnection.js.map +1 -1
  22. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  23. package/lib/cjs/DisplayStyleState.js +6 -6
  24. package/lib/cjs/DisplayStyleState.js.map +1 -1
  25. package/lib/cjs/DrawingViewState.d.ts +8 -6
  26. package/lib/cjs/DrawingViewState.d.ts.map +1 -1
  27. package/lib/cjs/DrawingViewState.js +20 -10
  28. package/lib/cjs/DrawingViewState.js.map +1 -1
  29. package/lib/cjs/EnvironmentDecorations.js +1 -1
  30. package/lib/cjs/EnvironmentDecorations.js.map +1 -1
  31. package/lib/cjs/GraphicalEditingScope.d.ts.map +1 -1
  32. package/lib/cjs/HitDetail.d.ts +37 -5
  33. package/lib/cjs/HitDetail.d.ts.map +1 -1
  34. package/lib/cjs/HitDetail.js +12 -2
  35. package/lib/cjs/HitDetail.js.map +1 -1
  36. package/lib/cjs/IModelApp.d.ts.map +1 -1
  37. package/lib/cjs/IModelApp.js +1 -2
  38. package/lib/cjs/IModelApp.js.map +1 -1
  39. package/lib/cjs/IModelConnection.d.ts +1 -0
  40. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  41. package/lib/cjs/IModelConnection.js +9 -8
  42. package/lib/cjs/IModelConnection.js.map +1 -1
  43. package/lib/cjs/IpcApp.d.ts.map +1 -1
  44. package/lib/cjs/IpcApp.js +8 -1
  45. package/lib/cjs/IpcApp.js.map +1 -1
  46. package/lib/cjs/LinePlaneIntersect.js +1 -2
  47. package/lib/cjs/LinePlaneIntersect.js.map +1 -1
  48. package/lib/cjs/ModelState.d.ts +0 -8
  49. package/lib/cjs/ModelState.d.ts.map +1 -1
  50. package/lib/cjs/ModelState.js +0 -8
  51. package/lib/cjs/ModelState.js.map +1 -1
  52. package/lib/cjs/NativeApp.d.ts +1 -1
  53. package/lib/cjs/NativeApp.d.ts.map +1 -1
  54. package/lib/cjs/NativeApp.js.map +1 -1
  55. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  56. package/lib/cjs/NotificationManager.d.ts +2 -2
  57. package/lib/cjs/NotificationManager.d.ts.map +1 -1
  58. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.d.ts.map +1 -1
  59. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js +1 -2
  60. package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  61. package/lib/cjs/RealityDataSourceContextShareImpl.d.ts.map +1 -1
  62. package/lib/cjs/RealityDataSourceContextShareImpl.js +2 -3
  63. package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
  64. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js +1 -1
  65. package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  66. package/lib/cjs/SheetViewState.d.ts +4 -11
  67. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  68. package/lib/cjs/SheetViewState.js +18 -12
  69. package/lib/cjs/SheetViewState.js.map +1 -1
  70. package/lib/cjs/SpatialViewState.d.ts +0 -1
  71. package/lib/cjs/SpatialViewState.d.ts.map +1 -1
  72. package/lib/cjs/SpatialViewState.js +1 -2
  73. package/lib/cjs/SpatialViewState.js.map +1 -1
  74. package/lib/cjs/SubCategoriesCache.js +1 -1
  75. package/lib/cjs/SubCategoriesCache.js.map +1 -1
  76. package/lib/cjs/TentativePoint.js +1 -1
  77. package/lib/cjs/TentativePoint.js.map +1 -1
  78. package/lib/cjs/ViewCreator3d.js +1 -1
  79. package/lib/cjs/ViewCreator3d.js.map +1 -1
  80. package/lib/cjs/ViewGlobalLocation.js +9 -9
  81. package/lib/cjs/ViewGlobalLocation.js.map +1 -1
  82. package/lib/cjs/ViewState.d.ts +14 -1
  83. package/lib/cjs/ViewState.d.ts.map +1 -1
  84. package/lib/cjs/ViewState.js +4 -2
  85. package/lib/cjs/ViewState.js.map +1 -1
  86. package/lib/cjs/ViewingSpace.d.ts.map +1 -1
  87. package/lib/cjs/ViewingSpace.js +3 -0
  88. package/lib/cjs/ViewingSpace.js.map +1 -1
  89. package/lib/cjs/Viewport.d.ts.map +1 -1
  90. package/lib/cjs/Viewport.js +2 -4
  91. package/lib/cjs/Viewport.js.map +1 -1
  92. package/lib/cjs/ViewportSync.js +6 -6
  93. package/lib/cjs/ViewportSync.js.map +1 -1
  94. package/lib/cjs/common/ImageUtil.js +15 -16
  95. package/lib/cjs/common/ImageUtil.js.map +1 -1
  96. package/lib/cjs/common/WorkerProxy.d.ts +8 -4
  97. package/lib/cjs/common/WorkerProxy.d.ts.map +1 -1
  98. package/lib/cjs/common/WorkerProxy.js +1 -2
  99. package/lib/cjs/common/WorkerProxy.js.map +1 -1
  100. package/lib/cjs/common/gltf/GltfParser.js +7 -8
  101. package/lib/cjs/common/gltf/GltfParser.js.map +1 -1
  102. package/lib/cjs/common/gltf/GltfSchema.d.ts +1 -1
  103. package/lib/cjs/common/gltf/GltfSchema.d.ts.map +1 -1
  104. package/lib/cjs/common/gltf/GltfSchema.js +5 -5
  105. package/lib/cjs/common/gltf/GltfSchema.js.map +1 -1
  106. package/lib/cjs/common/imdl/CompactEdges.js +1 -2
  107. package/lib/cjs/common/imdl/CompactEdges.js.map +1 -1
  108. package/lib/cjs/common/imdl/ImdlModel.js +2 -3
  109. package/lib/cjs/common/imdl/ImdlModel.js.map +1 -1
  110. package/lib/cjs/common/imdl/ImdlSchema.d.ts.map +1 -1
  111. package/lib/cjs/common/imdl/ImdlSchema.js.map +1 -1
  112. package/lib/cjs/common/imdl/ParseImdlDocument.d.ts.map +1 -1
  113. package/lib/cjs/common/imdl/ParseImdlDocument.js +10 -12
  114. package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -1
  115. package/lib/cjs/common/internal/render/DisplayParams.js.map +1 -1
  116. package/lib/cjs/common/internal/render/EdgeParams.js +2 -3
  117. package/lib/cjs/common/internal/render/EdgeParams.js.map +1 -1
  118. package/lib/cjs/common/internal/render/GeometryList.d.ts +1 -1
  119. package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js +3 -3
  120. package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
  121. package/lib/cjs/common/internal/render/LineCode.js +1 -2
  122. package/lib/cjs/common/internal/render/LineCode.js.map +1 -1
  123. package/lib/cjs/common/internal/render/MeshBuilder.js.map +1 -1
  124. package/lib/cjs/common/internal/render/MeshBuilderMap.js.map +1 -1
  125. package/lib/cjs/common/internal/render/MeshPrimitives.js +3 -3
  126. package/lib/cjs/common/internal/render/MeshPrimitives.js.map +1 -1
  127. package/lib/cjs/common/internal/render/OvrFlags.d.ts +4 -2
  128. package/lib/cjs/common/internal/render/OvrFlags.d.ts.map +1 -1
  129. package/lib/cjs/common/internal/render/OvrFlags.js.map +1 -1
  130. package/lib/cjs/common/internal/render/PointStringParams.js +1 -2
  131. package/lib/cjs/common/internal/render/PointStringParams.js.map +1 -1
  132. package/lib/cjs/common/internal/render/PolylineParams.js +4 -5
  133. package/lib/cjs/common/internal/render/PolylineParams.js.map +1 -1
  134. package/lib/cjs/common/internal/render/SurfaceParams.js +3 -3
  135. package/lib/cjs/common/internal/render/SurfaceParams.js.map +1 -1
  136. package/lib/cjs/common/internal/render/VertexTable.d.ts.map +1 -1
  137. package/lib/cjs/common/internal/render/VertexTable.js +4 -7
  138. package/lib/cjs/common/internal/render/VertexTable.js.map +1 -1
  139. package/lib/cjs/common/internal/render/VertexTableBuilder.js +2 -2
  140. package/lib/cjs/common/internal/render/VertexTableBuilder.js.map +1 -1
  141. package/lib/cjs/common/internal/render/VertexTableSplitter.js +4 -4
  142. package/lib/cjs/common/internal/render/VertexTableSplitter.js.map +1 -1
  143. package/lib/cjs/common/render/InstancedGraphicParams.js.map +1 -1
  144. package/lib/cjs/extension/providers/ExtensionLoadScript.js +1 -2
  145. package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -1
  146. package/lib/cjs/internal/render/RenderInstancesParamsImpl.js +2 -3
  147. package/lib/cjs/internal/render/RenderInstancesParamsImpl.js.map +1 -1
  148. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  149. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +1 -1
  150. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  151. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js +2 -2
  152. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  153. package/lib/cjs/quantity-formatting/LocalUnitFormatProvider.js +2 -2
  154. package/lib/cjs/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
  155. package/lib/cjs/quantity-formatting/QuantityFormatter.js +3 -3
  156. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  157. package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.d.ts.map +1 -1
  158. package/lib/cjs/render/GraphicBranch.d.ts +12 -1
  159. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  160. package/lib/cjs/render/GraphicBranch.js +2 -2
  161. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  162. package/lib/cjs/render/GraphicTemplate.js +1 -2
  163. package/lib/cjs/render/GraphicTemplate.js.map +1 -1
  164. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  165. package/lib/cjs/render/Pixel.d.ts +14 -4
  166. package/lib/cjs/render/Pixel.d.ts.map +1 -1
  167. package/lib/cjs/render/Pixel.js +22 -5
  168. package/lib/cjs/render/Pixel.js.map +1 -1
  169. package/lib/cjs/render/RealityMeshGraphicParams.d.ts +1 -0
  170. package/lib/cjs/render/RealityMeshGraphicParams.d.ts.map +1 -1
  171. package/lib/cjs/render/RealityMeshGraphicParams.js.map +1 -1
  172. package/lib/cjs/render/RenderMemory.d.ts +2 -0
  173. package/lib/cjs/render/RenderMemory.d.ts.map +1 -1
  174. package/lib/cjs/render/RenderMemory.js +2 -0
  175. package/lib/cjs/render/RenderMemory.js.map +1 -1
  176. package/lib/cjs/render/RenderPlan.d.ts +2 -1
  177. package/lib/cjs/render/RenderPlan.d.ts.map +1 -1
  178. package/lib/cjs/render/RenderPlan.js +5 -3
  179. package/lib/cjs/render/RenderPlan.js.map +1 -1
  180. package/lib/cjs/render/RenderSystem.d.ts +1 -1
  181. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  182. package/lib/cjs/render/RenderSystem.js +8 -9
  183. package/lib/cjs/render/RenderSystem.js.map +1 -1
  184. package/lib/cjs/render/UpsampleRealityMeshParams.js +1 -2
  185. package/lib/cjs/render/UpsampleRealityMeshParams.js.map +1 -1
  186. package/lib/cjs/render/VisibleFeature.js +1 -2
  187. package/lib/cjs/render/VisibleFeature.js.map +1 -1
  188. package/lib/cjs/render/webgl/AttributeBuffers.js +5 -5
  189. package/lib/cjs/render/webgl/AttributeBuffers.js.map +1 -1
  190. package/lib/cjs/render/webgl/BatchUniforms.d.ts +4 -0
  191. package/lib/cjs/render/webgl/BatchUniforms.d.ts.map +1 -1
  192. package/lib/cjs/render/webgl/BatchUniforms.js +18 -0
  193. package/lib/cjs/render/webgl/BatchUniforms.js.map +1 -1
  194. package/lib/cjs/render/webgl/BranchState.d.ts +9 -0
  195. package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
  196. package/lib/cjs/render/webgl/BranchState.js +6 -0
  197. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  198. package/lib/cjs/render/webgl/BranchUniforms.d.ts +1 -0
  199. package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
  200. package/lib/cjs/render/webgl/BranchUniforms.js +14 -1
  201. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  202. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  203. package/lib/cjs/render/webgl/ClippingProgram.js +2 -2
  204. package/lib/cjs/render/webgl/ClippingProgram.js.map +1 -1
  205. package/lib/cjs/render/webgl/ContourUniforms.d.ts +22 -0
  206. package/lib/cjs/render/webgl/ContourUniforms.d.ts.map +1 -0
  207. package/lib/cjs/render/webgl/ContourUniforms.js +98 -0
  208. package/lib/cjs/render/webgl/ContourUniforms.js.map +1 -0
  209. package/lib/cjs/render/webgl/Contours.d.ts +34 -0
  210. package/lib/cjs/render/webgl/Contours.d.ts.map +1 -0
  211. package/lib/cjs/render/webgl/Contours.js +127 -0
  212. package/lib/cjs/render/webgl/Contours.js.map +1 -0
  213. package/lib/cjs/render/webgl/DrawCommand.js +3 -3
  214. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  215. package/lib/cjs/render/webgl/EdgeSettings.js +1 -1
  216. package/lib/cjs/render/webgl/EdgeSettings.js.map +1 -1
  217. package/lib/cjs/render/webgl/FeatureOverrides.d.ts +1 -0
  218. package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
  219. package/lib/cjs/render/webgl/FeatureOverrides.js +48 -51
  220. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  221. package/lib/cjs/render/webgl/FrustumUniforms.js +2 -2
  222. package/lib/cjs/render/webgl/FrustumUniforms.js.map +1 -1
  223. package/lib/cjs/render/webgl/GL.d.ts +2 -1
  224. package/lib/cjs/render/webgl/GL.d.ts.map +1 -1
  225. package/lib/cjs/render/webgl/GL.js +1 -0
  226. package/lib/cjs/render/webgl/GL.js.map +1 -1
  227. package/lib/cjs/render/webgl/Graphic.d.ts +12 -0
  228. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  229. package/lib/cjs/render/webgl/Graphic.js +31 -0
  230. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  231. package/lib/cjs/render/webgl/InstancedGeometry.js +2 -2
  232. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  233. package/lib/cjs/render/webgl/Material.js +4 -4
  234. package/lib/cjs/render/webgl/Material.js.map +1 -1
  235. package/lib/cjs/render/webgl/Matrix.js +3 -3
  236. package/lib/cjs/render/webgl/Matrix.js.map +1 -1
  237. package/lib/cjs/render/webgl/RealityMesh.js +1 -1
  238. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  239. package/lib/cjs/render/webgl/RenderFlags.d.ts +2 -1
  240. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  241. package/lib/cjs/render/webgl/RenderFlags.js +4 -2
  242. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  243. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  244. package/lib/cjs/render/webgl/SceneCompositor.js +19 -7
  245. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  246. package/lib/cjs/render/webgl/ScratchDrawParams.js +2 -3
  247. package/lib/cjs/render/webgl/ScratchDrawParams.js.map +1 -1
  248. package/lib/cjs/render/webgl/ScreenSpaceEffect.js +2 -2
  249. package/lib/cjs/render/webgl/ScreenSpaceEffect.js.map +1 -1
  250. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +15 -13
  251. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  252. package/lib/cjs/render/webgl/ShaderBuilder.js +18 -10
  253. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  254. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  255. package/lib/cjs/render/webgl/ShaderProgram.js +26 -0
  256. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  257. package/lib/cjs/render/webgl/SurfaceGeometry.js +2 -2
  258. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  259. package/lib/cjs/render/webgl/Sync.js +3 -4
  260. package/lib/cjs/render/webgl/Sync.js.map +1 -1
  261. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  262. package/lib/cjs/render/webgl/System.js +7 -7
  263. package/lib/cjs/render/webgl/System.js.map +1 -1
  264. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  265. package/lib/cjs/render/webgl/Target.js +2 -1
  266. package/lib/cjs/render/webgl/Target.js.map +1 -1
  267. package/lib/cjs/render/webgl/TargetUniforms.d.ts +2 -0
  268. package/lib/cjs/render/webgl/TargetUniforms.d.ts.map +1 -1
  269. package/lib/cjs/render/webgl/TargetUniforms.js +2 -0
  270. package/lib/cjs/render/webgl/TargetUniforms.js.map +1 -1
  271. package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
  272. package/lib/cjs/render/webgl/TechniqueId.js +1 -2
  273. package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
  274. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  275. package/lib/cjs/render/webgl/Texture.js +2 -2
  276. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  277. package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
  278. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +2 -3
  279. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
  280. package/lib/cjs/render/webgl/glsl/Animation.js +1 -2
  281. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  282. package/lib/cjs/render/webgl/glsl/Atmosphere.js +2 -3
  283. package/lib/cjs/render/webgl/glsl/Atmosphere.js.map +1 -1
  284. package/lib/cjs/render/webgl/glsl/Blur.js +2 -3
  285. package/lib/cjs/render/webgl/glsl/Blur.js.map +1 -1
  286. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +2 -3
  287. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
  288. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +2 -3
  289. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js.map +1 -1
  290. package/lib/cjs/render/webgl/glsl/Clipping.js +3 -3
  291. package/lib/cjs/render/webgl/glsl/Clipping.js.map +1 -1
  292. package/lib/cjs/render/webgl/glsl/Color.js +2 -3
  293. package/lib/cjs/render/webgl/glsl/Color.js.map +1 -1
  294. package/lib/cjs/render/webgl/glsl/Combine3Textures.js +2 -3
  295. package/lib/cjs/render/webgl/glsl/Combine3Textures.js.map +1 -1
  296. package/lib/cjs/render/webgl/glsl/CombineTextures.js +2 -3
  297. package/lib/cjs/render/webgl/glsl/CombineTextures.js.map +1 -1
  298. package/lib/cjs/render/webgl/glsl/Common.js +7 -7
  299. package/lib/cjs/render/webgl/glsl/Common.js.map +1 -1
  300. package/lib/cjs/render/webgl/glsl/Composite.js +2 -3
  301. package/lib/cjs/render/webgl/glsl/Composite.js.map +1 -1
  302. package/lib/cjs/render/webgl/glsl/Contours.d.ts +4 -0
  303. package/lib/cjs/render/webgl/glsl/Contours.d.ts.map +1 -0
  304. package/lib/cjs/render/webgl/glsl/Contours.js +137 -0
  305. package/lib/cjs/render/webgl/glsl/Contours.js.map +1 -0
  306. package/lib/cjs/render/webgl/glsl/CopyColor.js +2 -3
  307. package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
  308. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +2 -3
  309. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
  310. package/lib/cjs/render/webgl/glsl/CopyStencil.js +9 -10
  311. package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
  312. package/lib/cjs/render/webgl/glsl/Decode.js +2 -2
  313. package/lib/cjs/render/webgl/glsl/Decode.js.map +1 -1
  314. package/lib/cjs/render/webgl/glsl/EDL.js +8 -9
  315. package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -1
  316. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +2 -3
  317. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
  318. package/lib/cjs/render/webgl/glsl/Edge.js +3 -4
  319. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  320. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts +2 -1
  321. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  322. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +35 -28
  323. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  324. package/lib/cjs/render/webgl/glsl/Fragment.js +15 -15
  325. package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
  326. package/lib/cjs/render/webgl/glsl/Instancing.js +3 -4
  327. package/lib/cjs/render/webgl/glsl/Instancing.js.map +1 -1
  328. package/lib/cjs/render/webgl/glsl/Lighting.js +1 -2
  329. package/lib/cjs/render/webgl/glsl/Lighting.js.map +1 -1
  330. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +2 -3
  331. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
  332. package/lib/cjs/render/webgl/glsl/LookupTable.js +1 -2
  333. package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
  334. package/lib/cjs/render/webgl/glsl/Monochrome.js +2 -3
  335. package/lib/cjs/render/webgl/glsl/Monochrome.js.map +1 -1
  336. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +9 -9
  337. package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
  338. package/lib/cjs/render/webgl/glsl/PlanarGrid.js +1 -1
  339. package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
  340. package/lib/cjs/render/webgl/glsl/PointCloud.js +3 -4
  341. package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
  342. package/lib/cjs/render/webgl/glsl/PointString.js +2 -3
  343. package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
  344. package/lib/cjs/render/webgl/glsl/Polyline.js +6 -6
  345. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  346. package/lib/cjs/render/webgl/glsl/RealityMesh.js +8 -8
  347. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  348. package/lib/cjs/render/webgl/glsl/RenderPass.js +1 -2
  349. package/lib/cjs/render/webgl/glsl/RenderPass.js.map +1 -1
  350. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +2 -3
  351. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
  352. package/lib/cjs/render/webgl/glsl/SkyBox.js +2 -3
  353. package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
  354. package/lib/cjs/render/webgl/glsl/SkySphere.js +2 -3
  355. package/lib/cjs/render/webgl/glsl/SkySphere.js.map +1 -1
  356. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +4 -4
  357. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
  358. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  359. package/lib/cjs/render/webgl/glsl/Surface.js +11 -9
  360. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  361. package/lib/cjs/render/webgl/glsl/Thematic.js +2 -3
  362. package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
  363. package/lib/cjs/render/webgl/glsl/Translucency.js +3 -3
  364. package/lib/cjs/render/webgl/glsl/Translucency.js.map +1 -1
  365. package/lib/cjs/render/webgl/glsl/Vertex.js +13 -13
  366. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  367. package/lib/cjs/render/webgl/glsl/Viewport.js +3 -4
  368. package/lib/cjs/render/webgl/glsl/Viewport.js.map +1 -1
  369. package/lib/cjs/render/webgl/glsl/ViewportQuad.js +1 -2
  370. package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
  371. package/lib/cjs/render/webgl/glsl/Wiremesh.js +2 -3
  372. package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -1
  373. package/lib/cjs/request/Request.d.ts.map +1 -1
  374. package/lib/cjs/request/Request.js +2 -2
  375. package/lib/cjs/request/Request.js.map +1 -1
  376. package/lib/cjs/request/utils.js +3 -4
  377. package/lib/cjs/request/utils.js.map +1 -1
  378. package/lib/cjs/tile/ClassifierTileTree.js +3 -3
  379. package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
  380. package/lib/cjs/tile/ContextShareProvider.js +2 -2
  381. package/lib/cjs/tile/ContextShareProvider.js.map +1 -1
  382. package/lib/cjs/tile/GltfReader.d.ts +1 -1
  383. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  384. package/lib/cjs/tile/GltfReader.js +18 -16
  385. package/lib/cjs/tile/GltfReader.js.map +1 -1
  386. package/lib/cjs/tile/IModelTile.js +2 -2
  387. package/lib/cjs/tile/IModelTile.js.map +1 -1
  388. package/lib/cjs/tile/IModelTileTree.js +2 -2
  389. package/lib/cjs/tile/IModelTileTree.js.map +1 -1
  390. package/lib/cjs/tile/ImdlDecoder.js +1 -2
  391. package/lib/cjs/tile/ImdlDecoder.js.map +1 -1
  392. package/lib/cjs/tile/ImdlGraphicsCreator.js +7 -8
  393. package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -1
  394. package/lib/cjs/tile/ImdlParser.js +1 -2
  395. package/lib/cjs/tile/ImdlParser.js.map +1 -1
  396. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  397. package/lib/cjs/tile/ImdlReader.js +3 -3
  398. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  399. package/lib/cjs/tile/MeshoptCompression.js +1 -2
  400. package/lib/cjs/tile/MeshoptCompression.js.map +1 -1
  401. package/lib/cjs/tile/OrbitGtTileTree.d.ts.map +1 -1
  402. package/lib/cjs/tile/OrbitGtTileTree.js +3 -4
  403. package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
  404. package/lib/cjs/tile/PntsReader.js +2 -3
  405. package/lib/cjs/tile/PntsReader.js.map +1 -1
  406. package/lib/cjs/tile/PrimaryTileTree.d.ts.map +1 -1
  407. package/lib/cjs/tile/PrimaryTileTree.js +12 -12
  408. package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
  409. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  410. package/lib/cjs/tile/RealityModelTileTree.js +3 -4
  411. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  412. package/lib/cjs/tile/RealityTileDrawArgs.d.ts.map +1 -1
  413. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  414. package/lib/cjs/tile/RealityTileLoader.js +1 -1
  415. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  416. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  417. package/lib/cjs/tile/RenderGraphicTileTree.js +1 -2
  418. package/lib/cjs/tile/RenderGraphicTileTree.js.map +1 -1
  419. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js +1 -1
  420. package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  421. package/lib/cjs/tile/Tile.js +2 -2
  422. package/lib/cjs/tile/Tile.js.map +1 -1
  423. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  424. package/lib/cjs/tile/TileAdmin.js +3 -4
  425. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  426. package/lib/cjs/tile/TileDrawArgs.d.ts +4 -0
  427. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  428. package/lib/cjs/tile/TileDrawArgs.js +2 -0
  429. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  430. package/lib/cjs/tile/TileRequest.js +1 -1
  431. package/lib/cjs/tile/TileRequest.js.map +1 -1
  432. package/lib/cjs/tile/TileRequestChannel.js +1 -1
  433. package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
  434. package/lib/cjs/tile/TileStorage.js +1 -1
  435. package/lib/cjs/tile/TileStorage.js.map +1 -1
  436. package/lib/cjs/tile/TileTreeReference.d.ts +2 -0
  437. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  438. package/lib/cjs/tile/TileTreeReference.js +3 -0
  439. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  440. package/lib/cjs/tile/ViewFlagOverrides.js +1 -2
  441. package/lib/cjs/tile/ViewFlagOverrides.js.map +1 -1
  442. package/lib/cjs/tile/map/ArcGISTileMap.d.ts.map +1 -1
  443. package/lib/cjs/tile/map/ArcGISTileMap.js +0 -1
  444. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
  445. package/lib/cjs/tile/map/ArcGisUtilities.js +1 -1
  446. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  447. package/lib/cjs/tile/map/BingElevation.js +3 -3
  448. package/lib/cjs/tile/map/BingElevation.js.map +1 -1
  449. package/lib/cjs/tile/map/CesiumTerrainProvider.js +7 -8
  450. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  451. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +1 -1
  452. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  453. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  454. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +4 -5
  455. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  456. package/lib/cjs/tile/map/ImageryProviders/CoordinatesUtils.js +1 -2
  457. package/lib/cjs/tile/map/ImageryProviders/CoordinatesUtils.js.map +1 -1
  458. package/lib/cjs/tile/map/ImageryProviders/FeatureGraphicsRenderer.js +1 -1
  459. package/lib/cjs/tile/map/ImageryProviders/FeatureGraphicsRenderer.js.map +1 -1
  460. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  461. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  462. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  463. package/lib/cjs/tile/map/MapLayerTileTreeReference.js +2 -2
  464. package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
  465. package/lib/cjs/tile/map/MapTile.d.ts.map +1 -1
  466. package/lib/cjs/tile/map/MapTile.js +1 -1
  467. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  468. package/lib/cjs/tile/map/MapTileLoader.js +1 -1
  469. package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
  470. package/lib/cjs/tile/map/MapTileTree.d.ts.map +1 -1
  471. package/lib/cjs/tile/map/MapTileTree.js +2 -2
  472. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  473. package/lib/cjs/tile/map/MapTilingScheme.d.ts.map +1 -1
  474. package/lib/cjs/tile/map/MapTilingScheme.js +4 -0
  475. package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
  476. package/lib/cjs/tile/map/UrlUtils.js +1 -2
  477. package/lib/cjs/tile/map/UrlUtils.js.map +1 -1
  478. package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
  479. package/lib/cjs/tools/ClipViewTool.d.ts.map +1 -1
  480. package/lib/cjs/tools/MeasureTool.js +2 -2
  481. package/lib/cjs/tools/MeasureTool.js.map +1 -1
  482. package/lib/cjs/tools/Tool.d.ts +1 -1
  483. package/lib/cjs/tools/Tool.d.ts.map +1 -1
  484. package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
  485. package/lib/cjs/tools/ViewTool.js +2 -2
  486. package/lib/cjs/tools/ViewTool.js.map +1 -1
  487. package/lib/cjs/workers/RegisterWorker.js +1 -2
  488. package/lib/cjs/workers/RegisterWorker.js.map +1 -1
  489. package/lib/esm/AccuDraw.d.ts.map +1 -1
  490. package/lib/esm/AccuDraw.js +0 -2
  491. package/lib/esm/AccuDraw.js.map +1 -1
  492. package/lib/esm/AccuSnap.d.ts.map +1 -1
  493. package/lib/esm/AccuSnap.js +17 -8
  494. package/lib/esm/AccuSnap.js.map +1 -1
  495. package/lib/esm/BingLocation.js +1 -1
  496. package/lib/esm/BingLocation.js.map +1 -1
  497. package/lib/esm/BriefcaseConnection.d.ts +0 -1
  498. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  499. package/lib/esm/BriefcaseConnection.js +2 -3
  500. package/lib/esm/BriefcaseConnection.js.map +1 -1
  501. package/lib/esm/BriefcaseTxns.d.ts.map +1 -1
  502. package/lib/esm/ChangeFlags.d.ts +1 -1
  503. package/lib/esm/ChangeFlags.d.ts.map +1 -1
  504. package/lib/esm/ChangeFlags.js.map +1 -1
  505. package/lib/esm/CheckpointConnection.js +1 -1
  506. package/lib/esm/CheckpointConnection.js.map +1 -1
  507. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  508. package/lib/esm/DisplayStyleState.js +6 -6
  509. package/lib/esm/DisplayStyleState.js.map +1 -1
  510. package/lib/esm/DrawingViewState.d.ts +8 -6
  511. package/lib/esm/DrawingViewState.d.ts.map +1 -1
  512. package/lib/esm/DrawingViewState.js +20 -10
  513. package/lib/esm/DrawingViewState.js.map +1 -1
  514. package/lib/esm/EnvironmentDecorations.js +1 -1
  515. package/lib/esm/EnvironmentDecorations.js.map +1 -1
  516. package/lib/esm/GraphicalEditingScope.d.ts.map +1 -1
  517. package/lib/esm/HitDetail.d.ts +37 -5
  518. package/lib/esm/HitDetail.d.ts.map +1 -1
  519. package/lib/esm/HitDetail.js +12 -2
  520. package/lib/esm/HitDetail.js.map +1 -1
  521. package/lib/esm/IModelApp.d.ts.map +1 -1
  522. package/lib/esm/IModelApp.js +1 -2
  523. package/lib/esm/IModelApp.js.map +1 -1
  524. package/lib/esm/IModelConnection.d.ts +1 -0
  525. package/lib/esm/IModelConnection.d.ts.map +1 -1
  526. package/lib/esm/IModelConnection.js +9 -8
  527. package/lib/esm/IModelConnection.js.map +1 -1
  528. package/lib/esm/IpcApp.d.ts.map +1 -1
  529. package/lib/esm/IpcApp.js +8 -1
  530. package/lib/esm/IpcApp.js.map +1 -1
  531. package/lib/esm/ModelState.d.ts +0 -8
  532. package/lib/esm/ModelState.d.ts.map +1 -1
  533. package/lib/esm/ModelState.js +0 -8
  534. package/lib/esm/ModelState.js.map +1 -1
  535. package/lib/esm/NativeApp.d.ts +1 -1
  536. package/lib/esm/NativeApp.d.ts.map +1 -1
  537. package/lib/esm/NativeApp.js.map +1 -1
  538. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  539. package/lib/esm/NotificationManager.d.ts +2 -2
  540. package/lib/esm/NotificationManager.d.ts.map +1 -1
  541. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.d.ts.map +1 -1
  542. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js +1 -2
  543. package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
  544. package/lib/esm/RealityDataSourceContextShareImpl.d.ts.map +1 -1
  545. package/lib/esm/RealityDataSourceContextShareImpl.js +2 -3
  546. package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
  547. package/lib/esm/RealityDataSourceTilesetUrlImpl.js +1 -1
  548. package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -1
  549. package/lib/esm/SheetViewState.d.ts +4 -11
  550. package/lib/esm/SheetViewState.d.ts.map +1 -1
  551. package/lib/esm/SheetViewState.js +18 -12
  552. package/lib/esm/SheetViewState.js.map +1 -1
  553. package/lib/esm/SpatialViewState.d.ts +0 -1
  554. package/lib/esm/SpatialViewState.d.ts.map +1 -1
  555. package/lib/esm/SpatialViewState.js +1 -2
  556. package/lib/esm/SpatialViewState.js.map +1 -1
  557. package/lib/esm/SubCategoriesCache.js +1 -1
  558. package/lib/esm/SubCategoriesCache.js.map +1 -1
  559. package/lib/esm/TentativePoint.js +1 -1
  560. package/lib/esm/TentativePoint.js.map +1 -1
  561. package/lib/esm/ViewCreator3d.js +1 -1
  562. package/lib/esm/ViewCreator3d.js.map +1 -1
  563. package/lib/esm/ViewState.d.ts +14 -1
  564. package/lib/esm/ViewState.d.ts.map +1 -1
  565. package/lib/esm/ViewState.js +4 -2
  566. package/lib/esm/ViewState.js.map +1 -1
  567. package/lib/esm/ViewingSpace.d.ts.map +1 -1
  568. package/lib/esm/ViewingSpace.js +3 -0
  569. package/lib/esm/ViewingSpace.js.map +1 -1
  570. package/lib/esm/Viewport.d.ts.map +1 -1
  571. package/lib/esm/Viewport.js +2 -4
  572. package/lib/esm/Viewport.js.map +1 -1
  573. package/lib/esm/common/WorkerProxy.d.ts +8 -4
  574. package/lib/esm/common/WorkerProxy.d.ts.map +1 -1
  575. package/lib/esm/common/WorkerProxy.js.map +1 -1
  576. package/lib/esm/common/gltf/GltfParser.js +6 -6
  577. package/lib/esm/common/gltf/GltfParser.js.map +1 -1
  578. package/lib/esm/common/gltf/GltfSchema.d.ts +1 -1
  579. package/lib/esm/common/gltf/GltfSchema.d.ts.map +1 -1
  580. package/lib/esm/common/gltf/GltfSchema.js.map +1 -1
  581. package/lib/esm/common/imdl/ImdlSchema.d.ts.map +1 -1
  582. package/lib/esm/common/imdl/ImdlSchema.js.map +1 -1
  583. package/lib/esm/common/imdl/ParseImdlDocument.d.ts.map +1 -1
  584. package/lib/esm/common/imdl/ParseImdlDocument.js +4 -5
  585. package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -1
  586. package/lib/esm/common/internal/render/DisplayParams.js.map +1 -1
  587. package/lib/esm/common/internal/render/GeometryList.d.ts +1 -1
  588. package/lib/esm/common/internal/render/MeshBuilder.js.map +1 -1
  589. package/lib/esm/common/internal/render/MeshBuilderMap.js.map +1 -1
  590. package/lib/esm/common/internal/render/MeshPrimitives.js.map +1 -1
  591. package/lib/esm/common/internal/render/OvrFlags.d.ts +4 -2
  592. package/lib/esm/common/internal/render/OvrFlags.d.ts.map +1 -1
  593. package/lib/esm/common/internal/render/OvrFlags.js.map +1 -1
  594. package/lib/esm/common/internal/render/VertexTable.d.ts.map +1 -1
  595. package/lib/esm/common/internal/render/VertexTable.js +3 -5
  596. package/lib/esm/common/internal/render/VertexTable.js.map +1 -1
  597. package/lib/esm/common/render/InstancedGraphicParams.js.map +1 -1
  598. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  599. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +1 -1
  600. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  601. package/lib/esm/quantity-formatting/LocalUnitFormatProvider.js +2 -2
  602. package/lib/esm/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
  603. package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.d.ts.map +1 -1
  604. package/lib/esm/render/GraphicBranch.d.ts +12 -1
  605. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  606. package/lib/esm/render/GraphicBranch.js.map +1 -1
  607. package/lib/esm/render/MockRender.d.ts.map +1 -1
  608. package/lib/esm/render/Pixel.d.ts +14 -4
  609. package/lib/esm/render/Pixel.d.ts.map +1 -1
  610. package/lib/esm/render/Pixel.js +22 -5
  611. package/lib/esm/render/Pixel.js.map +1 -1
  612. package/lib/esm/render/RealityMeshGraphicParams.d.ts +1 -0
  613. package/lib/esm/render/RealityMeshGraphicParams.d.ts.map +1 -1
  614. package/lib/esm/render/RealityMeshGraphicParams.js.map +1 -1
  615. package/lib/esm/render/RenderMemory.d.ts +2 -0
  616. package/lib/esm/render/RenderMemory.d.ts.map +1 -1
  617. package/lib/esm/render/RenderMemory.js +2 -0
  618. package/lib/esm/render/RenderMemory.js.map +1 -1
  619. package/lib/esm/render/RenderPlan.d.ts +2 -1
  620. package/lib/esm/render/RenderPlan.d.ts.map +1 -1
  621. package/lib/esm/render/RenderPlan.js +2 -0
  622. package/lib/esm/render/RenderPlan.js.map +1 -1
  623. package/lib/esm/render/RenderSystem.d.ts +1 -1
  624. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  625. package/lib/esm/render/RenderSystem.js +8 -9
  626. package/lib/esm/render/RenderSystem.js.map +1 -1
  627. package/lib/esm/render/webgl/BatchUniforms.d.ts +4 -0
  628. package/lib/esm/render/webgl/BatchUniforms.d.ts.map +1 -1
  629. package/lib/esm/render/webgl/BatchUniforms.js +18 -0
  630. package/lib/esm/render/webgl/BatchUniforms.js.map +1 -1
  631. package/lib/esm/render/webgl/BranchState.d.ts +9 -0
  632. package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
  633. package/lib/esm/render/webgl/BranchState.js +6 -0
  634. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  635. package/lib/esm/render/webgl/BranchUniforms.d.ts +1 -0
  636. package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
  637. package/lib/esm/render/webgl/BranchUniforms.js +14 -1
  638. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  639. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  640. package/lib/esm/render/webgl/ContourUniforms.d.ts +22 -0
  641. package/lib/esm/render/webgl/ContourUniforms.d.ts.map +1 -0
  642. package/lib/esm/render/webgl/ContourUniforms.js +94 -0
  643. package/lib/esm/render/webgl/ContourUniforms.js.map +1 -0
  644. package/lib/esm/render/webgl/Contours.d.ts +34 -0
  645. package/lib/esm/render/webgl/Contours.d.ts.map +1 -0
  646. package/lib/esm/render/webgl/Contours.js +123 -0
  647. package/lib/esm/render/webgl/Contours.js.map +1 -0
  648. package/lib/esm/render/webgl/EdgeSettings.js +1 -1
  649. package/lib/esm/render/webgl/EdgeSettings.js.map +1 -1
  650. package/lib/esm/render/webgl/FeatureOverrides.d.ts +1 -0
  651. package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
  652. package/lib/esm/render/webgl/FeatureOverrides.js +46 -49
  653. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  654. package/lib/esm/render/webgl/GL.d.ts +2 -1
  655. package/lib/esm/render/webgl/GL.d.ts.map +1 -1
  656. package/lib/esm/render/webgl/GL.js +1 -0
  657. package/lib/esm/render/webgl/GL.js.map +1 -1
  658. package/lib/esm/render/webgl/Graphic.d.ts +12 -0
  659. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  660. package/lib/esm/render/webgl/Graphic.js +31 -0
  661. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  662. package/lib/esm/render/webgl/Material.js +2 -2
  663. package/lib/esm/render/webgl/Material.js.map +1 -1
  664. package/lib/esm/render/webgl/RealityMesh.js +1 -1
  665. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  666. package/lib/esm/render/webgl/RenderFlags.d.ts +2 -1
  667. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  668. package/lib/esm/render/webgl/RenderFlags.js +2 -0
  669. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  670. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  671. package/lib/esm/render/webgl/SceneCompositor.js +16 -4
  672. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  673. package/lib/esm/render/webgl/ShaderBuilder.d.ts +15 -13
  674. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  675. package/lib/esm/render/webgl/ShaderBuilder.js +18 -10
  676. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  677. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  678. package/lib/esm/render/webgl/ShaderProgram.js +26 -0
  679. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  680. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  681. package/lib/esm/render/webgl/System.js +7 -7
  682. package/lib/esm/render/webgl/System.js.map +1 -1
  683. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  684. package/lib/esm/render/webgl/Target.js +2 -1
  685. package/lib/esm/render/webgl/Target.js.map +1 -1
  686. package/lib/esm/render/webgl/TargetUniforms.d.ts +2 -0
  687. package/lib/esm/render/webgl/TargetUniforms.d.ts.map +1 -1
  688. package/lib/esm/render/webgl/TargetUniforms.js +2 -0
  689. package/lib/esm/render/webgl/TargetUniforms.js.map +1 -1
  690. package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
  691. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  692. package/lib/esm/render/webgl/Texture.js +2 -2
  693. package/lib/esm/render/webgl/Texture.js.map +1 -1
  694. package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
  695. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +1 -1
  696. package/lib/esm/render/webgl/glsl/Atmosphere.js +1 -1
  697. package/lib/esm/render/webgl/glsl/Blur.js +1 -1
  698. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +1 -1
  699. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +1 -1
  700. package/lib/esm/render/webgl/glsl/Clipping.js +1 -1
  701. package/lib/esm/render/webgl/glsl/Combine3Textures.js +1 -1
  702. package/lib/esm/render/webgl/glsl/CombineTextures.js +1 -1
  703. package/lib/esm/render/webgl/glsl/Composite.js +1 -1
  704. package/lib/esm/render/webgl/glsl/Contours.d.ts +4 -0
  705. package/lib/esm/render/webgl/glsl/Contours.d.ts.map +1 -0
  706. package/lib/esm/render/webgl/glsl/Contours.js +134 -0
  707. package/lib/esm/render/webgl/glsl/Contours.js.map +1 -0
  708. package/lib/esm/render/webgl/glsl/CopyColor.js +1 -1
  709. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +1 -1
  710. package/lib/esm/render/webgl/glsl/CopyStencil.js +5 -5
  711. package/lib/esm/render/webgl/glsl/EDL.js +4 -4
  712. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +1 -1
  713. package/lib/esm/render/webgl/glsl/Edge.js +1 -1
  714. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts +2 -1
  715. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  716. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +21 -15
  717. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  718. package/lib/esm/render/webgl/glsl/Fragment.js +9 -9
  719. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  720. package/lib/esm/render/webgl/glsl/PlanarClassification.js +4 -4
  721. package/lib/esm/render/webgl/glsl/PointCloud.js +1 -1
  722. package/lib/esm/render/webgl/glsl/RealityMesh.js +3 -3
  723. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
  724. package/lib/esm/render/webgl/glsl/SkyBox.js +1 -1
  725. package/lib/esm/render/webgl/glsl/SkySphere.js +1 -1
  726. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +1 -1
  727. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  728. package/lib/esm/render/webgl/glsl/Surface.js +5 -3
  729. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  730. package/lib/esm/render/webgl/glsl/Translucency.js +1 -1
  731. package/lib/esm/render/webgl/glsl/Wiremesh.js +1 -1
  732. package/lib/esm/request/Request.d.ts.map +1 -1
  733. package/lib/esm/request/Request.js.map +1 -1
  734. package/lib/esm/tile/ClassifierTileTree.js +1 -1
  735. package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
  736. package/lib/esm/tile/ContextShareProvider.js +2 -2
  737. package/lib/esm/tile/ContextShareProvider.js.map +1 -1
  738. package/lib/esm/tile/GltfReader.d.ts +1 -1
  739. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  740. package/lib/esm/tile/GltfReader.js +14 -12
  741. package/lib/esm/tile/GltfReader.js.map +1 -1
  742. package/lib/esm/tile/ImdlGraphicsCreator.js +4 -4
  743. package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -1
  744. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  745. package/lib/esm/tile/ImdlReader.js.map +1 -1
  746. package/lib/esm/tile/OrbitGtTileTree.d.ts.map +1 -1
  747. package/lib/esm/tile/OrbitGtTileTree.js +1 -2
  748. package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
  749. package/lib/esm/tile/PntsReader.js +1 -1
  750. package/lib/esm/tile/PntsReader.js.map +1 -1
  751. package/lib/esm/tile/PrimaryTileTree.d.ts.map +1 -1
  752. package/lib/esm/tile/PrimaryTileTree.js +6 -6
  753. package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
  754. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  755. package/lib/esm/tile/RealityModelTileTree.js +1 -2
  756. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  757. package/lib/esm/tile/RealityTileDrawArgs.d.ts.map +1 -1
  758. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  759. package/lib/esm/tile/RealityTileLoader.js +1 -1
  760. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  761. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  762. package/lib/esm/tile/ThreeDTileFormatInterpreter.js +1 -1
  763. package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
  764. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  765. package/lib/esm/tile/TileAdmin.js +1 -2
  766. package/lib/esm/tile/TileAdmin.js.map +1 -1
  767. package/lib/esm/tile/TileDrawArgs.d.ts +4 -0
  768. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  769. package/lib/esm/tile/TileDrawArgs.js +2 -0
  770. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  771. package/lib/esm/tile/TileRequest.js +1 -1
  772. package/lib/esm/tile/TileRequest.js.map +1 -1
  773. package/lib/esm/tile/TileRequestChannel.js +1 -1
  774. package/lib/esm/tile/TileRequestChannel.js.map +1 -1
  775. package/lib/esm/tile/TileStorage.js +1 -1
  776. package/lib/esm/tile/TileStorage.js.map +1 -1
  777. package/lib/esm/tile/TileTreeReference.d.ts +2 -0
  778. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  779. package/lib/esm/tile/TileTreeReference.js +3 -0
  780. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  781. package/lib/esm/tile/map/ArcGISTileMap.d.ts.map +1 -1
  782. package/lib/esm/tile/map/ArcGISTileMap.js +0 -1
  783. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
  784. package/lib/esm/tile/map/ArcGisUtilities.js +1 -1
  785. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  786. package/lib/esm/tile/map/BingElevation.js +3 -3
  787. package/lib/esm/tile/map/BingElevation.js.map +1 -1
  788. package/lib/esm/tile/map/CesiumTerrainProvider.js +3 -3
  789. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  790. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +1 -1
  791. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  792. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.d.ts.map +1 -1
  793. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +4 -5
  794. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  795. package/lib/esm/tile/map/ImageryProviders/FeatureGraphicsRenderer.js +1 -1
  796. package/lib/esm/tile/map/ImageryProviders/FeatureGraphicsRenderer.js.map +1 -1
  797. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  798. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  799. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  800. package/lib/esm/tile/map/MapTile.d.ts.map +1 -1
  801. package/lib/esm/tile/map/MapTile.js +1 -1
  802. package/lib/esm/tile/map/MapTile.js.map +1 -1
  803. package/lib/esm/tile/map/MapTileLoader.js +1 -1
  804. package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
  805. package/lib/esm/tile/map/MapTileTree.d.ts.map +1 -1
  806. package/lib/esm/tile/map/MapTilingScheme.d.ts.map +1 -1
  807. package/lib/esm/tile/map/MapTilingScheme.js +4 -0
  808. package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
  809. package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
  810. package/lib/esm/tools/ClipViewTool.d.ts.map +1 -1
  811. package/lib/esm/tools/MeasureTool.js +2 -2
  812. package/lib/esm/tools/MeasureTool.js.map +1 -1
  813. package/lib/esm/tools/Tool.d.ts +1 -1
  814. package/lib/esm/tools/Tool.d.ts.map +1 -1
  815. package/lib/esm/tools/ViewTool.d.ts.map +1 -1
  816. package/lib/esm/tools/ViewTool.js +2 -2
  817. package/lib/esm/tools/ViewTool.js.map +1 -1
  818. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  819. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  820. package/package.json +30 -36
@@ -1 +1 @@
1
- {"version":3,"file":"ShaderProgram.js","sourceRoot":"","sources":["../../../../src/render/webgl/ShaderProgram.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { DebugShaderFile } from \"../RenderSystem\";\r\nimport { AttributeDetails } from \"./AttributeMap\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { DrawParams, ShaderProgramParams } from \"./DrawCommand\";\r\nimport { GL } from \"./GL\";\r\nimport { Batch, Branch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueFlags } from \"./TechniqueFlags\";\r\n\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** Flags which control some conditional branches in shader code\r\n * @internal\r\n */\r\nexport const enum ShaderFlags {\r\n None = 0,\r\n Monochrome = 1 << 0,\r\n NonUniformColor = 1 << 1,\r\n OITFlatAlphaWeight = 1 << 2,\r\n OITScaleOutput = 1 << 3,\r\n IgnoreNonLocatable = 1 << 4,\r\n}\r\n\r\n/** Describes the location of a uniform variable within a shader program.\r\n * @internal\r\n */\r\nexport class Uniform {\r\n private readonly _name: string;\r\n protected _handle?: UniformHandle;\r\n\r\n protected constructor(name: string) { this._name = name; }\r\n\r\n public compile(prog: ShaderProgram): boolean {\r\n assert(!this.isValid);\r\n if (undefined !== prog.glProgram) {\r\n this._handle = UniformHandle.create(prog, this._name);\r\n }\r\n\r\n return this.isValid;\r\n }\r\n\r\n public get isValid(): boolean { return undefined !== this._handle; }\r\n}\r\n\r\n/**\r\n * A function associated with a ProgramUniform which is invoked each time the shader program becomes active.\r\n * The function is responsible for setting the value of the uniform.\r\n * @internal\r\n */\r\nexport type BindProgramUniform = (uniform: UniformHandle, params: ShaderProgramParams) => void;\r\n\r\n/**\r\n * Describes the location of a uniform variable within a shader program, the value of which does not change while the program is active.\r\n * The supplied binding function will be invoked once each time the shader becomes active to set the value of the uniform.\r\n * @internal\r\n */\r\nexport class ProgramUniform extends Uniform {\r\n private readonly _bind: BindProgramUniform;\r\n\r\n public constructor(name: string, bind: BindProgramUniform) {\r\n super(name);\r\n this._bind = bind;\r\n }\r\n\r\n public bind(params: ShaderProgramParams): void {\r\n if (undefined !== this._handle) {\r\n this._bind(this._handle, params);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * A function associated with a GraphicUniform which is invoked each time a new graphic primitive is rendered using the associated shader.\r\n * The function is responsible for setting the value of the uniform.\r\n * @internal\r\n */\r\nexport type BindGraphicUniform = (uniform: UniformHandle, params: DrawParams) => void;\r\n\r\n/**\r\n * Describes the location of a uniform variable within a shader program, the value of which is dependent upon the graphic primitive\r\n * currently being rendered by the program. The supplied binding function will be invoked once for each graphic primitive submitted\r\n * to the program to set the value of the uniform.\r\n * @internal\r\n */\r\nexport class GraphicUniform extends Uniform {\r\n private readonly _bind: BindGraphicUniform;\r\n\r\n public constructor(name: string, bind: BindGraphicUniform) {\r\n super(name);\r\n this._bind = bind;\r\n }\r\n\r\n public bind(params: DrawParams): void {\r\n if (undefined !== this._handle) {\r\n this._bind(this._handle, params);\r\n }\r\n }\r\n}\r\n\r\n/** Describes the compilation status of a shader program. Programs may be compiled during idle time, or upon first use.\r\n * @internal\r\n */\r\nexport const enum CompileStatus {\r\n Success, // The program was successfully compiled.\r\n Failure, // The program failed to compile.\r\n Uncompiled, // No attempt has yet been made to compile the program.\r\n}\r\n\r\n/** @internal */\r\nexport class ShaderProgram implements WebGLDisposable {\r\n public vertSource: string;\r\n public fragSource: string;\r\n private _glProgram?: WebGLProgram;\r\n private _inUse: boolean = false;\r\n private _status: CompileStatus = CompileStatus.Uncompiled;\r\n private readonly _programUniforms = new Array<ProgramUniform>();\r\n private readonly _graphicUniforms = new Array<GraphicUniform>();\r\n private readonly _attrMap?: Map<string, AttributeDetails>;\r\n // for debugging purposes...\r\n public readonly description: string;\r\n private _fragDescription: string;\r\n private _vertGNdx: number = -1;\r\n private _fragGNdx: number = -1;\r\n private _vertHNdx: number = -1;\r\n private _fragHNdx: number = -1;\r\n public readonly outputsToPick;\r\n\r\n public constructor(gl: WebGL2RenderingContext, vertSource: string, fragSource: string, attrMap: Map<string, AttributeDetails> | undefined, description: string, fragDescription: string) {\r\n this.description = description;\r\n this.outputsToPick = description.includes(\"Overrides\") || description.includes(\"Pick\");\r\n this._fragDescription = fragDescription;\r\n this.vertSource = vertSource;\r\n this.fragSource = fragSource;\r\n this._attrMap = attrMap;\r\n\r\n const glProgram = gl.createProgram();\r\n this._glProgram = (null === glProgram) ? undefined : glProgram;\r\n }\r\n\r\n public get isDisposed(): boolean { return this._glProgram === undefined; }\r\n\r\n public dispose(): void {\r\n if (!this.isDisposed) {\r\n assert(!this._inUse);\r\n System.instance.context.deleteProgram(this._glProgram!);\r\n this._glProgram = undefined;\r\n this._status = CompileStatus.Uncompiled;\r\n }\r\n }\r\n\r\n public get glProgram(): WebGLProgram | undefined { return this._glProgram; }\r\n public get isUncompiled() { return CompileStatus.Uncompiled === this._status; }\r\n public get isCompiled() { return CompileStatus.Success === this._status; }\r\n\r\n private compileShader(type: GL.ShaderType): WebGLShader | undefined {\r\n const gl = System.instance.context;\r\n\r\n const shader = gl.createShader(type);\r\n if (null === shader)\r\n return undefined;\r\n\r\n const src = GL.ShaderType.Vertex === type ? this.vertSource : this.fragSource;\r\n gl.shaderSource(shader, src);\r\n gl.compileShader(shader);\r\n const succeeded = gl.getShaderParameter(shader, GL.ShaderParameter.CompileStatus) as boolean;\r\n if (!succeeded) {\r\n const compileLog = `${GL.ShaderType.Vertex === type ? \"Vertex\" : \"Fragment\"} shader failed to compile. Errors: ${gl.getShaderInfoLog(shader)} Program description: ${this.description}`;\r\n throw new Error(compileLog);\r\n }\r\n\r\n if (System.instance.options.debugShaders) {\r\n const isVS = GL.ShaderType.Vertex === type;\r\n const desc = isVS ? this.description : this._fragDescription;\r\n this.saveShaderCode(isVS, desc, src, shader);\r\n }\r\n\r\n return shader;\r\n }\r\n\r\n private linkProgram(vert: WebGLShader, frag: WebGLShader): boolean {\r\n assert(undefined !== this.glProgram);\r\n if (undefined === this._glProgram || null === this._glProgram) // because WebGL APIs used Thing|null, not Thing|undefined...\r\n return false;\r\n\r\n const gl = System.instance.context;\r\n gl.attachShader(this._glProgram, vert);\r\n gl.attachShader(this._glProgram, frag);\r\n\r\n // bind attribute locations before final linking\r\n if (this._attrMap !== undefined) {\r\n this._attrMap.forEach((attr: AttributeDetails, key: string) => {\r\n gl.bindAttribLocation(this._glProgram!, attr.location, key);\r\n });\r\n }\r\n\r\n gl.linkProgram(this._glProgram);\r\n\r\n const linkLog = gl.getProgramInfoLog(this._glProgram);\r\n gl.validateProgram(this._glProgram);\r\n\r\n const succeeded = gl.getProgramParameter(this._glProgram, GL.ProgramParameter.LinkStatus) as boolean;\r\n if (!succeeded) {\r\n const validateLog = gl.getProgramInfoLog(this._glProgram);\r\n const msg = `Shader program failed to link. Link errors: ${linkLog} Validation errors: ${validateLog} Program description: ${this.description}`;\r\n throw new Error(msg);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public compile(forUse: boolean = false): CompileStatus {\r\n if (System.instance.options.debugShaders && forUse && this._status === CompileStatus.Success)\r\n this.setDebugShaderUsage();\r\n\r\n switch (this._status) {\r\n case CompileStatus.Failure: return CompileStatus.Failure;\r\n case CompileStatus.Success: return CompileStatus.Success;\r\n default: {\r\n if (this.isDisposed) {\r\n this._status = CompileStatus.Failure;\r\n return CompileStatus.Failure;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n this._status = CompileStatus.Failure;\r\n\r\n const vert = this.compileShader(GL.ShaderType.Vertex);\r\n const frag = this.compileShader(GL.ShaderType.Fragment);\r\n if (undefined !== vert && undefined !== frag)\r\n if (this.linkProgram(vert, frag) && this.compileUniforms(this._programUniforms) && this.compileUniforms(this._graphicUniforms))\r\n this._status = CompileStatus.Success;\r\n\r\n if (System.instance.options.debugShaders && forUse && this._status === CompileStatus.Success)\r\n this.setDebugShaderUsage();\r\n\r\n if (true !== System.instance.options.preserveShaderSourceCode)\r\n this.vertSource = this.fragSource = \"\";\r\n\r\n return this._status;\r\n }\r\n\r\n public use(params: ShaderProgramParams): boolean {\r\n if (this.compile(true) !== CompileStatus.Success)\r\n return false;\r\n\r\n assert(undefined !== this._glProgram);\r\n if (null === this._glProgram || undefined === this._glProgram)\r\n return false;\r\n\r\n assert(!this._inUse);\r\n this._inUse = true;\r\n params.context.useProgram(this._glProgram);\r\n\r\n for (const uniform of this._programUniforms)\r\n uniform.bind(params);\r\n\r\n return true;\r\n }\r\n\r\n public endUse() {\r\n this._inUse = false;\r\n System.instance.context.useProgram(null);\r\n }\r\n\r\n public draw(params: DrawParams): void {\r\n assert(this._inUse);\r\n for (const uniform of this._graphicUniforms)\r\n uniform.bind(params);\r\n\r\n params.geometry.draw();\r\n }\r\n\r\n public addProgramUniform(name: string, binding: BindProgramUniform) {\r\n assert(this.isUncompiled);\r\n this._programUniforms.push(new ProgramUniform(name, binding));\r\n }\r\n\r\n public addGraphicUniform(name: string, binding: BindGraphicUniform) {\r\n assert(this.isUncompiled);\r\n this._graphicUniforms.push(new GraphicUniform(name, binding));\r\n }\r\n\r\n private compileUniforms<T extends Uniform>(uniforms: T[]): boolean {\r\n for (const uniform of uniforms) {\r\n if (!uniform.compile(this))\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private setDebugShaderUsage() {\r\n if (!System.instance.options.debugShaders)\r\n return;\r\n\r\n const shaderFiles = System.instance.debugShaderFiles;\r\n if (this._vertGNdx >= 0)\r\n shaderFiles[this._vertGNdx].isUsed = true;\r\n\r\n if (this._fragGNdx >= 0)\r\n shaderFiles[this._fragGNdx].isUsed = true;\r\n\r\n if (this._vertHNdx >= 0)\r\n shaderFiles[this._vertHNdx].isUsed = true;\r\n\r\n if (this._fragHNdx >= 0)\r\n shaderFiles[this._fragHNdx].isUsed = true;\r\n }\r\n\r\n private saveShaderCode(isVS: boolean, desc: string, src: string, shader: WebGLShader) {\r\n // save glsl and hlsl (from Angle and fixed up) in DebugShaderFile\r\n if (!System.instance.options.debugShaders)\r\n return;\r\n\r\n const shaderFiles = System.instance.debugShaderFiles;\r\n let sname: string;\r\n if (desc) {\r\n sname = desc.split(isVS ? \"//!V! \" : \"//!F! \").join(\"\");\r\n sname = sname.split(\": \").join(\"-\");\r\n sname = sname.split(\"; \").join(\"-\");\r\n } else {\r\n // need to investigate shaders with no comments to derive names, for now come up with unique name\r\n sname = `noname-${shaderFiles.length}`;\r\n }\r\n\r\n sname += isVS ? \"_VS\" : \"_FS\";\r\n const fname = `${sname}.glsl`;\r\n let dsfNdx = shaderFiles.push(new DebugShaderFile(fname, src, isVS, true, false));\r\n if (isVS)\r\n this._vertGNdx = dsfNdx - 1;\r\n else\r\n this._fragGNdx = dsfNdx - 1;\r\n\r\n const ext2 = System.instance.context.getExtension(\"WEBGL_debug_shaders\");\r\n if (!ext2)\r\n return;\r\n\r\n const srcH = ext2.getTranslatedShaderSource(shader);\r\n if (!srcH)\r\n return;\r\n\r\n // TODO: implement WebGL2 specific inputs for gl_VertexID and gl_InstanceID if ever used\r\n\r\n // parse and edit srcH to make it compilable\r\n const fnameH = `${sname}.hlsl`;\r\n let numTargets = 0; // for gl_Color cases\r\n let haveGLpos = false;\r\n let haveGLpntsz = false;\r\n let haveGLDepth = false;\r\n let haveGLFrontFacing = false;\r\n let haveGLPointCoord = false;\r\n let haveGLFragCoord = false;\r\n let haveGLFragColorOnly = false; // for only 1 output\r\n const haveGLFragColor = [false, false, false, false, false, false, false, false];\r\n const attrs: string[] = new Array<string>();\r\n const varyings: string[] = new Array<string>();\r\n const lines = srcH.split(\"\\n\");\r\n let toss = true;\r\n for (let ndx = 0; ndx < lines.length;) {\r\n let line = lines[ndx];\r\n if (line.indexOf(\"// INITIAL HLSL END\") >= 0)\r\n toss = true;\r\n\r\n if (toss)\r\n lines.splice(ndx, 1);\r\n\r\n if (line.indexOf(\"// INITIAL HLSL BEGIN\") >= 0) {\r\n toss = false;\r\n } else if (!toss) { // look for lines that need editing\r\n if (line.indexOf(\"Varyings\") >= 0) { // save off varyings in either case\r\n while (ndx + 1 < lines.length && lines[ndx + 1].indexOf(\"static\") >= 0) {\r\n ++ndx;\r\n line = lines[ndx].substring(6).trimStart();\r\n varyings.push(line.substring(0, line.indexOf(\"=\")));\r\n }\r\n }\r\n\r\n if (isVS) {\r\n if (line.indexOf(\"Attributes\") >= 0) { // save off attributes\r\n while (ndx + 1 < lines.length && lines[ndx + 1].indexOf(\"static\") >= 0) {\r\n ++ndx;\r\n line = lines[ndx].substring(6).trimStart();\r\n attrs.push(line.substring(0, line.indexOf(\"=\")));\r\n }\r\n } else if (line.indexOf(\"static float4 gl_Position\") >= 0) {\r\n haveGLpos = true;\r\n } else if (line.indexOf(\"static float gl_PointSize\") >= 0) {\r\n haveGLpntsz = true;\r\n } else if (line.indexOf(\"@@ VERTEX ATTRIBUTES @@\") >= 0) {\r\n lines[ndx] = \"// @@ VERTEX ATTRIBUTES @@\";\r\n } else if (line.indexOf(\"@@ MAIN PROLOGUE @@\") >= 0) {\r\n lines[ndx] = \"// @@ MAIN PROLOGUE @@\\ngetInput(input);\";\r\n } else if (line.indexOf(\"@@ VERTEX OUTPUT @@\") >= 0) {\r\n // have to create a VS_OUTPUT struct and a generateOutput function from varyings\r\n lines[ndx] = \"// @@ VERTEX OUTPUT @@\\nstruct VS_INPUT\\n {\";\r\n let aNdx = 0;\r\n for (const tstr of attrs) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` ${tstr}: TEXCOORD${aNdx};`);\r\n ++aNdx;\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" };\\nvoid getInput(VS_INPUT input) {\");\r\n for (const tstr of attrs) {\r\n let t = tstr.indexOf(\"_a\");\r\n let vName = tstr.substring(t);\r\n t = vName.indexOf(\" \");\r\n vName = vName.substring(0, t);\r\n ++ndx;\r\n lines.splice(ndx, 0, ` ${vName} = input.${vName};`);\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \"}\\nstruct VS_OUTPUT\\n {\");\r\n if (haveGLpos) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float4 _v_position : SV_Position;\");\r\n }\r\n\r\n if (haveGLpntsz) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float gl_PointSize : PointSize;\");\r\n }\r\n\r\n let vNdx = 0;\r\n for (const tstr of varyings) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` ${tstr}: TEXCOORD${vNdx};`);\r\n ++vNdx;\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" };\\nVS_OUTPUT generateOutput(VS_INPUT input) {\\n VS_OUTPUT output;\");\r\n if (haveGLpos) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" output._v_position = gl_Position;\");\r\n }\r\n\r\n if (haveGLpntsz) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" output.gl_PointSize = gl_PointSize;\");\r\n }\r\n\r\n for (const tstr of varyings) {\r\n let t = tstr.indexOf(\"_v\");\r\n let vName = tstr.substring(t);\r\n t = vName.indexOf(\" \");\r\n vName = vName.substring(0, t);\r\n ++ndx;\r\n lines.splice(ndx, 0, ` output.${vName} = ${vName};`);\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" return output;\\n}\");\r\n }\r\n } else { // fragment shader\r\n let tNdx = 0;\r\n if (line.indexOf(\"static float4 gl_Color[\") >= 0) {\r\n //\r\n } else if (line.indexOf(\"gl_Color[0] =\") >= 0) {\r\n if (numTargets < 1)\r\n numTargets = 1;\r\n } else if (line.indexOf(\"gl_Color[1] =\") >= 0) {\r\n if (numTargets < 2)\r\n numTargets = 2;\r\n } else if (line.indexOf(\"gl_Color[2] =\") >= 0) {\r\n if (numTargets < 3)\r\n numTargets = 3;\r\n } else if (line.indexOf(\"gl_Color[3] =\") >= 0) {\r\n numTargets = 4;\r\n } else if (line.indexOf(\"gl_Depth\") >= 0) {\r\n haveGLDepth = true;\r\n } else if (line.indexOf(\"gl_FrontFacing\") >= 0) {\r\n haveGLFrontFacing = true;\r\n } else if (line.indexOf(\"gl_PointCoord\") >= 0) {\r\n haveGLPointCoord = true;\r\n } else if (line.indexOf(\"gl_FragCoord\") >= 0) {\r\n haveGLFragCoord = true;\r\n } else if ((tNdx = line.indexOf(\"out_FragColor\")) >= 0) {\r\n const c = line.substring(tNdx + 13, tNdx + 13 + 1);\r\n if (c === \" \" || c === \"=\")\r\n haveGLFragColorOnly = true;\r\n else {\r\n tNdx = +c;\r\n haveGLFragColor[tNdx] = true;\r\n }\r\n } else if (line.indexOf(\"@@ PIXEL OUTPUT @@\") >= 0) {\r\n // have to create a VS_OUTPUT struct, a getInputs function (both from varyings),\r\n // a PS_OUTPUT struct, and a generateOutput function (both based on numTargets or haveGLFragColor)\r\n lines[ndx] = \"// @@ PIXEL OUTPUT @@\\nstruct VS_OUTPUT\\n {\";\r\n if (haveGLFragCoord) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float4 gl_FragCoord : SV_POSITION;\");\r\n }\r\n\r\n let vNdx = 0;\r\n for (const tstr of varyings) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` ${tstr}: TEXCOORD${vNdx};`);\r\n ++vNdx;\r\n }\r\n\r\n if (haveGLFrontFacing) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" bool gl_FrontFacing : SV_IsFrontFace;\");\r\n }\r\n\r\n if (haveGLPointCoord) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float2 gl_PointCoord : PointCoord;\");\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" };\\nvoid getInputs(VS_OUTPUT input) {\");\r\n if (haveGLFragCoord) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" gl_FragCoord = input.gl_FragCoord;\");\r\n }\r\n\r\n for (const tstr of varyings) {\r\n let t = tstr.indexOf(\"_v\");\r\n let vName = tstr.substring(t);\r\n t = vName.indexOf(\" \");\r\n vName = vName.substring(0, t);\r\n ++ndx;\r\n lines.splice(ndx, 0, ` ${vName} = input.${vName};`);\r\n }\r\n\r\n if (haveGLFrontFacing) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" gl_FrontFacing = input.gl_FrontFacing;\");\r\n }\r\n\r\n if (haveGLPointCoord) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" gl_PointCoord = input.gl_PointCoord;\");\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \"}\\nstruct PS_OUTPUT\\n {\");\r\n let cNdx = 0;\r\n while (cNdx < numTargets) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` float4 col${cNdx} : SV_TARGET${cNdx};`);\r\n ++cNdx;\r\n }\r\n\r\n if (haveGLFragColorOnly) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float4 out_FragColor : SV_TARGET;\");\r\n } else {\r\n for (cNdx = 0; cNdx < haveGLFragColor.length; ++cNdx) {\r\n if (haveGLFragColor[cNdx]) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` float4 out_FragColor${cNdx} : SV_TARGET${cNdx};`);\r\n }\r\n }\r\n }\r\n\r\n if (haveGLDepth) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float gl_Depth : SV_Depth;\");\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" };\\nPS_OUTPUT generateOutput () {\\n PS_OUTPUT output;\");\r\n cNdx = 0;\r\n while (cNdx < numTargets) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` output.col${cNdx} = gl_Color[${cNdx}];`);\r\n ++cNdx;\r\n }\r\n\r\n if (haveGLFragColorOnly) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" output.out_FragColor = out_FragColor;\");\r\n } else {\r\n for (cNdx = 0; cNdx < haveGLFragColor.length; ++cNdx) {\r\n if (haveGLFragColor[cNdx]) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` output.out_FragColor${cNdx} = out_FragColor${cNdx};`);\r\n }\r\n }\r\n }\r\n\r\n if (haveGLDepth) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" output.gl_Depth = gl_Depth;\");\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" return output;\\n}\");\r\n } else if (line.indexOf(\"PS_OUTPUT main\") >= 0) {\r\n lines[ndx] = `// ${line}\\nPS_OUTPUT main(VS_OUTPUT input){`;\r\n } else if (line.indexOf(\"@@ MAIN PROLOGUE @@\") >= 0) {\r\n lines[ndx] = `// ${line}\\ngetInputs(input);`;\r\n }\r\n }\r\n\r\n ++ndx;\r\n }\r\n }\r\n\r\n const srcH2 = lines.join(\"\\n\");\r\n dsfNdx = shaderFiles.push(new DebugShaderFile(fnameH, srcH2, isVS, false, false));\r\n if (isVS)\r\n this._vertHNdx = dsfNdx - 1;\r\n else\r\n this._fragHNdx = dsfNdx - 1;\r\n }\r\n}\r\n\r\n/** Context in which ShaderPrograms are executed. Avoids switching shaders unnecessarily.\r\n * Ensures shader programs are compiled before use and un-bound when scope is disposed.\r\n * This class must *only* be used inside a using() function!\r\n * @internal\r\n */\r\nexport class ShaderProgramExecutor {\r\n private _program?: ShaderProgram;\r\n private static _params?: ShaderProgramParams;\r\n\r\n public constructor(target: Target, pass: RenderPass, program?: ShaderProgram) {\r\n this.params.init(target, pass);\r\n this.changeProgram(program);\r\n }\r\n\r\n public static freeParams(): void {\r\n this._params = undefined;\r\n }\r\n\r\n private _isDisposed = false;\r\n public get isDisposed(): boolean { return this._isDisposed; }\r\n\r\n /** Clears the current program to be executed. This does not free WebGL resources, since those are owned by Techniques. */\r\n public dispose() {\r\n this.changeProgram(undefined);\r\n ShaderProgramExecutor.freeParams();\r\n this._isDisposed = true;\r\n }\r\n\r\n public setProgram(program: ShaderProgram): boolean { return this.changeProgram(program); }\r\n public get isValid() { return undefined !== this._program; }\r\n public get target() { return this.params.target; }\r\n public get renderPass() { return this.params.renderPass; }\r\n public get params() {\r\n if (undefined === ShaderProgramExecutor._params)\r\n ShaderProgramExecutor._params = new ShaderProgramParams();\r\n\r\n return ShaderProgramExecutor._params;\r\n }\r\n\r\n public draw(params: DrawParams) {\r\n assert(this.isValid);\r\n if (undefined !== this._program) {\r\n this._program.draw(params);\r\n }\r\n }\r\n public drawInterrupt(params: DrawParams) {\r\n assert(params.target === this.params.target);\r\n\r\n const tech = params.target.techniques.getTechnique(params.geometry.techniqueId);\r\n const program = tech.getShader(TechniqueFlags.defaults);\r\n if (this.setProgram(program)) {\r\n this.draw(params);\r\n }\r\n }\r\n\r\n public pushBranch(branch: Branch): void { this.target.pushBranch(branch); }\r\n public popBranch(): void { this.target.popBranch(); }\r\n public pushBatch(batch: Batch): void { this.target.pushBatch(batch); }\r\n public popBatch(): void { this.target.popBatch(); }\r\n\r\n private changeProgram(program?: ShaderProgram): boolean {\r\n if (this._program === program) {\r\n return true;\r\n } else if (undefined !== this._program) {\r\n this._program.endUse();\r\n }\r\n\r\n this._program = program;\r\n if (undefined !== program && !program.use(this.params)) {\r\n this._program = undefined;\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ShaderProgram.js","sourceRoot":"","sources":["../../../../src/render/webgl/ShaderProgram.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { DebugShaderFile } from \"../RenderSystem\";\r\nimport { AttributeDetails } from \"./AttributeMap\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { DrawParams, ShaderProgramParams } from \"./DrawCommand\";\r\nimport { GL } from \"./GL\";\r\nimport { Batch, Branch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueFlags } from \"./TechniqueFlags\";\r\n\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** Flags which control some conditional branches in shader code\r\n * @internal\r\n */\r\nexport const enum ShaderFlags {\r\n None = 0,\r\n Monochrome = 1 << 0,\r\n NonUniformColor = 1 << 1,\r\n OITFlatAlphaWeight = 1 << 2,\r\n OITScaleOutput = 1 << 3,\r\n IgnoreNonLocatable = 1 << 4,\r\n}\r\n\r\n/** Describes the location of a uniform variable within a shader program.\r\n * @internal\r\n */\r\nexport class Uniform {\r\n private readonly _name: string;\r\n protected _handle?: UniformHandle;\r\n\r\n protected constructor(name: string) { this._name = name; }\r\n\r\n public compile(prog: ShaderProgram): boolean {\r\n assert(!this.isValid);\r\n if (undefined !== prog.glProgram) {\r\n this._handle = UniformHandle.create(prog, this._name);\r\n }\r\n\r\n return this.isValid;\r\n }\r\n\r\n public get isValid(): boolean { return undefined !== this._handle; }\r\n}\r\n\r\n/**\r\n * A function associated with a ProgramUniform which is invoked each time the shader program becomes active.\r\n * The function is responsible for setting the value of the uniform.\r\n * @internal\r\n */\r\nexport type BindProgramUniform = (uniform: UniformHandle, params: ShaderProgramParams) => void;\r\n\r\n/**\r\n * Describes the location of a uniform variable within a shader program, the value of which does not change while the program is active.\r\n * The supplied binding function will be invoked once each time the shader becomes active to set the value of the uniform.\r\n * @internal\r\n */\r\nexport class ProgramUniform extends Uniform {\r\n private readonly _bind: BindProgramUniform;\r\n\r\n public constructor(name: string, bind: BindProgramUniform) {\r\n super(name);\r\n this._bind = bind;\r\n }\r\n\r\n public bind(params: ShaderProgramParams): void {\r\n if (undefined !== this._handle) {\r\n this._bind(this._handle, params);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * A function associated with a GraphicUniform which is invoked each time a new graphic primitive is rendered using the associated shader.\r\n * The function is responsible for setting the value of the uniform.\r\n * @internal\r\n */\r\nexport type BindGraphicUniform = (uniform: UniformHandle, params: DrawParams) => void;\r\n\r\n/**\r\n * Describes the location of a uniform variable within a shader program, the value of which is dependent upon the graphic primitive\r\n * currently being rendered by the program. The supplied binding function will be invoked once for each graphic primitive submitted\r\n * to the program to set the value of the uniform.\r\n * @internal\r\n */\r\nexport class GraphicUniform extends Uniform {\r\n private readonly _bind: BindGraphicUniform;\r\n\r\n public constructor(name: string, bind: BindGraphicUniform) {\r\n super(name);\r\n this._bind = bind;\r\n }\r\n\r\n public bind(params: DrawParams): void {\r\n if (undefined !== this._handle) {\r\n this._bind(this._handle, params);\r\n }\r\n }\r\n}\r\n\r\n/** Describes the compilation status of a shader program. Programs may be compiled during idle time, or upon first use.\r\n * @internal\r\n */\r\nexport const enum CompileStatus {\r\n Success, // The program was successfully compiled.\r\n Failure, // The program failed to compile.\r\n Uncompiled, // No attempt has yet been made to compile the program.\r\n}\r\n\r\n/** @internal */\r\nexport class ShaderProgram implements WebGLDisposable {\r\n public vertSource: string;\r\n public fragSource: string;\r\n private _glProgram?: WebGLProgram;\r\n private _inUse: boolean = false;\r\n private _status: CompileStatus = CompileStatus.Uncompiled;\r\n private readonly _programUniforms = new Array<ProgramUniform>();\r\n private readonly _graphicUniforms = new Array<GraphicUniform>();\r\n private readonly _attrMap?: Map<string, AttributeDetails>;\r\n // for debugging purposes...\r\n public readonly description: string;\r\n private _fragDescription: string;\r\n private _vertGNdx: number = -1;\r\n private _fragGNdx: number = -1;\r\n private _vertHNdx: number = -1;\r\n private _fragHNdx: number = -1;\r\n public readonly outputsToPick;\r\n\r\n public constructor(gl: WebGL2RenderingContext, vertSource: string, fragSource: string, attrMap: Map<string, AttributeDetails> | undefined, description: string, fragDescription: string) {\r\n this.description = description;\r\n this.outputsToPick = description.includes(\"Overrides\") || description.includes(\"Pick\");\r\n this._fragDescription = fragDescription;\r\n this.vertSource = vertSource;\r\n this.fragSource = fragSource;\r\n this._attrMap = attrMap;\r\n\r\n const glProgram = gl.createProgram();\r\n this._glProgram = (null === glProgram) ? undefined : glProgram;\r\n }\r\n\r\n public get isDisposed(): boolean { return this._glProgram === undefined; }\r\n\r\n public dispose(): void {\r\n if (!this.isDisposed) {\r\n assert(!this._inUse);\r\n System.instance.context.deleteProgram(this._glProgram!);\r\n this._glProgram = undefined;\r\n this._status = CompileStatus.Uncompiled;\r\n }\r\n }\r\n\r\n public get glProgram(): WebGLProgram | undefined { return this._glProgram; }\r\n public get isUncompiled() { return CompileStatus.Uncompiled === this._status; }\r\n public get isCompiled() { return CompileStatus.Success === this._status; }\r\n\r\n private compileShader(type: GL.ShaderType): WebGLShader | undefined {\r\n const gl = System.instance.context;\r\n\r\n const shader = gl.createShader(type);\r\n if (null === shader)\r\n return undefined;\r\n\r\n const src = GL.ShaderType.Vertex === type ? this.vertSource : this.fragSource;\r\n gl.shaderSource(shader, src);\r\n gl.compileShader(shader);\r\n const succeeded = gl.getShaderParameter(shader, GL.ShaderParameter.CompileStatus) as boolean;\r\n if (!succeeded) {\r\n const compileLog = `${GL.ShaderType.Vertex === type ? \"Vertex\" : \"Fragment\"} shader failed to compile. Errors: ${gl.getShaderInfoLog(shader)} Program description: ${this.description}`;\r\n throw new Error(compileLog);\r\n }\r\n\r\n if (System.instance.options.debugShaders) {\r\n const isVS = GL.ShaderType.Vertex === type;\r\n const desc = isVS ? this.description : this._fragDescription;\r\n this.saveShaderCode(isVS, desc, src, shader);\r\n }\r\n\r\n return shader;\r\n }\r\n\r\n private linkProgram(vert: WebGLShader, frag: WebGLShader): boolean {\r\n assert(undefined !== this.glProgram);\r\n if (undefined === this._glProgram || null === this._glProgram) // because WebGL APIs used Thing|null, not Thing|undefined...\r\n return false;\r\n\r\n const gl = System.instance.context;\r\n gl.attachShader(this._glProgram, vert);\r\n gl.attachShader(this._glProgram, frag);\r\n\r\n // bind attribute locations before final linking\r\n if (this._attrMap !== undefined) {\r\n this._attrMap.forEach((attr: AttributeDetails, key: string) => {\r\n gl.bindAttribLocation(this._glProgram!, attr.location, key);\r\n });\r\n }\r\n\r\n gl.linkProgram(this._glProgram);\r\n\r\n const linkLog = gl.getProgramInfoLog(this._glProgram);\r\n gl.validateProgram(this._glProgram);\r\n\r\n const succeeded = gl.getProgramParameter(this._glProgram, GL.ProgramParameter.LinkStatus) as boolean;\r\n if (!succeeded) {\r\n const validateLog = gl.getProgramInfoLog(this._glProgram);\r\n const msg = `Shader program failed to link. Link errors: ${linkLog} Validation errors: ${validateLog} Program description: ${this.description}`;\r\n throw new Error(msg);\r\n }\r\n\r\n // Debug output\r\n const debugUniforms = false;\r\n if (debugUniforms) {\r\n const dbgLog = (x: string) => console.log(x); // eslint-disable-line no-console\r\n const outSrc = false; // true for source out, false for just varying info\r\n if (this._fragDescription) {\r\n let tStr = \"\";\r\n if (!outSrc) {\r\n tStr = `${this._fragDescription}`;\r\n }\r\n const numUniforms = gl.getProgramParameter(this._glProgram, GL.ProgramParameter.ActiveUniforms);\r\n const tStr2 = `Active Uniforms: ${numUniforms}`;\r\n if (tStr2) {\r\n if (outSrc) {\r\n dbgLog(\"//===============================================================================================================\");\r\n dbgLog(this.vertSource);\r\n dbgLog(\"//========= Num Active Uniforms =========\");\r\n dbgLog(`${tStr2}\\n`);\r\n dbgLog(this.fragSource);\r\n } else {\r\n dbgLog(`\\n${tStr2} ${tStr}\\n`);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public compile(forUse: boolean = false): CompileStatus {\r\n if (System.instance.options.debugShaders && forUse && this._status === CompileStatus.Success)\r\n this.setDebugShaderUsage();\r\n\r\n switch (this._status) {\r\n case CompileStatus.Failure: return CompileStatus.Failure;\r\n case CompileStatus.Success: return CompileStatus.Success;\r\n default: {\r\n if (this.isDisposed) {\r\n this._status = CompileStatus.Failure;\r\n return CompileStatus.Failure;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n this._status = CompileStatus.Failure;\r\n\r\n const vert = this.compileShader(GL.ShaderType.Vertex);\r\n const frag = this.compileShader(GL.ShaderType.Fragment);\r\n if (undefined !== vert && undefined !== frag)\r\n if (this.linkProgram(vert, frag) && this.compileUniforms(this._programUniforms) && this.compileUniforms(this._graphicUniforms))\r\n this._status = CompileStatus.Success;\r\n\r\n if (System.instance.options.debugShaders && forUse && this._status === CompileStatus.Success)\r\n this.setDebugShaderUsage();\r\n\r\n if (true !== System.instance.options.preserveShaderSourceCode)\r\n this.vertSource = this.fragSource = \"\";\r\n\r\n return this._status;\r\n }\r\n\r\n public use(params: ShaderProgramParams): boolean {\r\n if (this.compile(true) !== CompileStatus.Success)\r\n return false;\r\n\r\n assert(undefined !== this._glProgram);\r\n if (null === this._glProgram || undefined === this._glProgram)\r\n return false;\r\n\r\n assert(!this._inUse);\r\n this._inUse = true;\r\n params.context.useProgram(this._glProgram);\r\n\r\n for (const uniform of this._programUniforms)\r\n uniform.bind(params);\r\n\r\n return true;\r\n }\r\n\r\n public endUse() {\r\n this._inUse = false;\r\n System.instance.context.useProgram(null);\r\n }\r\n\r\n public draw(params: DrawParams): void {\r\n assert(this._inUse);\r\n for (const uniform of this._graphicUniforms)\r\n uniform.bind(params);\r\n\r\n params.geometry.draw();\r\n }\r\n\r\n public addProgramUniform(name: string, binding: BindProgramUniform) {\r\n assert(this.isUncompiled);\r\n this._programUniforms.push(new ProgramUniform(name, binding));\r\n }\r\n\r\n public addGraphicUniform(name: string, binding: BindGraphicUniform) {\r\n assert(this.isUncompiled);\r\n this._graphicUniforms.push(new GraphicUniform(name, binding));\r\n }\r\n\r\n private compileUniforms<T extends Uniform>(uniforms: T[]): boolean {\r\n for (const uniform of uniforms) {\r\n if (!uniform.compile(this))\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private setDebugShaderUsage() {\r\n if (!System.instance.options.debugShaders)\r\n return;\r\n\r\n const shaderFiles = System.instance.debugShaderFiles;\r\n if (this._vertGNdx >= 0)\r\n shaderFiles[this._vertGNdx].isUsed = true;\r\n\r\n if (this._fragGNdx >= 0)\r\n shaderFiles[this._fragGNdx].isUsed = true;\r\n\r\n if (this._vertHNdx >= 0)\r\n shaderFiles[this._vertHNdx].isUsed = true;\r\n\r\n if (this._fragHNdx >= 0)\r\n shaderFiles[this._fragHNdx].isUsed = true;\r\n }\r\n\r\n private saveShaderCode(isVS: boolean, desc: string, src: string, shader: WebGLShader) {\r\n // save glsl and hlsl (from Angle and fixed up) in DebugShaderFile\r\n if (!System.instance.options.debugShaders)\r\n return;\r\n\r\n const shaderFiles = System.instance.debugShaderFiles;\r\n let sname: string;\r\n if (desc) {\r\n sname = desc.split(isVS ? \"//!V! \" : \"//!F! \").join(\"\");\r\n sname = sname.split(\": \").join(\"-\");\r\n sname = sname.split(\"; \").join(\"-\");\r\n } else {\r\n // need to investigate shaders with no comments to derive names, for now come up with unique name\r\n sname = `noname-${shaderFiles.length}`;\r\n }\r\n\r\n sname += isVS ? \"_VS\" : \"_FS\";\r\n const fname = `${sname}.glsl`;\r\n let dsfNdx = shaderFiles.push(new DebugShaderFile(fname, src, isVS, true, false));\r\n if (isVS)\r\n this._vertGNdx = dsfNdx - 1;\r\n else\r\n this._fragGNdx = dsfNdx - 1;\r\n\r\n const ext2 = System.instance.context.getExtension(\"WEBGL_debug_shaders\");\r\n if (!ext2)\r\n return;\r\n\r\n const srcH = ext2.getTranslatedShaderSource(shader);\r\n if (!srcH)\r\n return;\r\n\r\n // TODO: implement WebGL2 specific inputs for gl_VertexID and gl_InstanceID if ever used\r\n\r\n // parse and edit srcH to make it compilable\r\n const fnameH = `${sname}.hlsl`;\r\n let numTargets = 0; // for gl_Color cases\r\n let haveGLpos = false;\r\n let haveGLpntsz = false;\r\n let haveGLDepth = false;\r\n let haveGLFrontFacing = false;\r\n let haveGLPointCoord = false;\r\n let haveGLFragCoord = false;\r\n let haveGLFragColorOnly = false; // for only 1 output\r\n const haveGLFragColor = [false, false, false, false, false, false, false, false];\r\n const attrs: string[] = new Array<string>();\r\n const varyings: string[] = new Array<string>();\r\n const lines = srcH.split(\"\\n\");\r\n let toss = true;\r\n for (let ndx = 0; ndx < lines.length;) {\r\n let line = lines[ndx];\r\n if (line.indexOf(\"// INITIAL HLSL END\") >= 0)\r\n toss = true;\r\n\r\n if (toss)\r\n lines.splice(ndx, 1);\r\n\r\n if (line.indexOf(\"// INITIAL HLSL BEGIN\") >= 0) {\r\n toss = false;\r\n } else if (!toss) { // look for lines that need editing\r\n if (line.indexOf(\"Varyings\") >= 0) { // save off varyings in either case\r\n while (ndx + 1 < lines.length && lines[ndx + 1].indexOf(\"static\") >= 0) {\r\n ++ndx;\r\n line = lines[ndx].substring(6).trimStart();\r\n varyings.push(line.substring(0, line.indexOf(\"=\")));\r\n }\r\n }\r\n\r\n if (isVS) {\r\n if (line.indexOf(\"Attributes\") >= 0) { // save off attributes\r\n while (ndx + 1 < lines.length && lines[ndx + 1].indexOf(\"static\") >= 0) {\r\n ++ndx;\r\n line = lines[ndx].substring(6).trimStart();\r\n attrs.push(line.substring(0, line.indexOf(\"=\")));\r\n }\r\n } else if (line.indexOf(\"static float4 gl_Position\") >= 0) {\r\n haveGLpos = true;\r\n } else if (line.indexOf(\"static float gl_PointSize\") >= 0) {\r\n haveGLpntsz = true;\r\n } else if (line.indexOf(\"@@ VERTEX ATTRIBUTES @@\") >= 0) {\r\n lines[ndx] = \"// @@ VERTEX ATTRIBUTES @@\";\r\n } else if (line.indexOf(\"@@ MAIN PROLOGUE @@\") >= 0) {\r\n lines[ndx] = \"// @@ MAIN PROLOGUE @@\\ngetInput(input);\";\r\n } else if (line.indexOf(\"@@ VERTEX OUTPUT @@\") >= 0) {\r\n // have to create a VS_OUTPUT struct and a generateOutput function from varyings\r\n lines[ndx] = \"// @@ VERTEX OUTPUT @@\\nstruct VS_INPUT\\n {\";\r\n let aNdx = 0;\r\n for (const tstr of attrs) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` ${tstr}: TEXCOORD${aNdx};`);\r\n ++aNdx;\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" };\\nvoid getInput(VS_INPUT input) {\");\r\n for (const tstr of attrs) {\r\n let t = tstr.indexOf(\"_a\");\r\n let vName = tstr.substring(t);\r\n t = vName.indexOf(\" \");\r\n vName = vName.substring(0, t);\r\n ++ndx;\r\n lines.splice(ndx, 0, ` ${vName} = input.${vName};`);\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \"}\\nstruct VS_OUTPUT\\n {\");\r\n if (haveGLpos) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float4 _v_position : SV_Position;\");\r\n }\r\n\r\n if (haveGLpntsz) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float gl_PointSize : PointSize;\");\r\n }\r\n\r\n let vNdx = 0;\r\n for (const tstr of varyings) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` ${tstr}: TEXCOORD${vNdx};`);\r\n ++vNdx;\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" };\\nVS_OUTPUT generateOutput(VS_INPUT input) {\\n VS_OUTPUT output;\");\r\n if (haveGLpos) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" output._v_position = gl_Position;\");\r\n }\r\n\r\n if (haveGLpntsz) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" output.gl_PointSize = gl_PointSize;\");\r\n }\r\n\r\n for (const tstr of varyings) {\r\n let t = tstr.indexOf(\"_v\");\r\n let vName = tstr.substring(t);\r\n t = vName.indexOf(\" \");\r\n vName = vName.substring(0, t);\r\n ++ndx;\r\n lines.splice(ndx, 0, ` output.${vName} = ${vName};`);\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" return output;\\n}\");\r\n }\r\n } else { // fragment shader\r\n let tNdx = 0;\r\n if (line.indexOf(\"static float4 gl_Color[\") >= 0) {\r\n //\r\n } else if (line.indexOf(\"gl_Color[0] =\") >= 0) {\r\n if (numTargets < 1)\r\n numTargets = 1;\r\n } else if (line.indexOf(\"gl_Color[1] =\") >= 0) {\r\n if (numTargets < 2)\r\n numTargets = 2;\r\n } else if (line.indexOf(\"gl_Color[2] =\") >= 0) {\r\n if (numTargets < 3)\r\n numTargets = 3;\r\n } else if (line.indexOf(\"gl_Color[3] =\") >= 0) {\r\n numTargets = 4;\r\n } else if (line.indexOf(\"gl_Depth\") >= 0) {\r\n haveGLDepth = true;\r\n } else if (line.indexOf(\"gl_FrontFacing\") >= 0) {\r\n haveGLFrontFacing = true;\r\n } else if (line.indexOf(\"gl_PointCoord\") >= 0) {\r\n haveGLPointCoord = true;\r\n } else if (line.indexOf(\"gl_FragCoord\") >= 0) {\r\n haveGLFragCoord = true;\r\n } else if ((tNdx = line.indexOf(\"out_FragColor\")) >= 0) {\r\n const c = line.substring(tNdx + 13, tNdx + 13 + 1);\r\n if (c === \" \" || c === \"=\")\r\n haveGLFragColorOnly = true;\r\n else {\r\n tNdx = +c;\r\n haveGLFragColor[tNdx] = true;\r\n }\r\n } else if (line.indexOf(\"@@ PIXEL OUTPUT @@\") >= 0) {\r\n // have to create a VS_OUTPUT struct, a getInputs function (both from varyings),\r\n // a PS_OUTPUT struct, and a generateOutput function (both based on numTargets or haveGLFragColor)\r\n lines[ndx] = \"// @@ PIXEL OUTPUT @@\\nstruct VS_OUTPUT\\n {\";\r\n if (haveGLFragCoord) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float4 gl_FragCoord : SV_POSITION;\");\r\n }\r\n\r\n let vNdx = 0;\r\n for (const tstr of varyings) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` ${tstr}: TEXCOORD${vNdx};`);\r\n ++vNdx;\r\n }\r\n\r\n if (haveGLFrontFacing) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" bool gl_FrontFacing : SV_IsFrontFace;\");\r\n }\r\n\r\n if (haveGLPointCoord) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float2 gl_PointCoord : PointCoord;\");\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" };\\nvoid getInputs(VS_OUTPUT input) {\");\r\n if (haveGLFragCoord) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" gl_FragCoord = input.gl_FragCoord;\");\r\n }\r\n\r\n for (const tstr of varyings) {\r\n let t = tstr.indexOf(\"_v\");\r\n let vName = tstr.substring(t);\r\n t = vName.indexOf(\" \");\r\n vName = vName.substring(0, t);\r\n ++ndx;\r\n lines.splice(ndx, 0, ` ${vName} = input.${vName};`);\r\n }\r\n\r\n if (haveGLFrontFacing) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" gl_FrontFacing = input.gl_FrontFacing;\");\r\n }\r\n\r\n if (haveGLPointCoord) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" gl_PointCoord = input.gl_PointCoord;\");\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \"}\\nstruct PS_OUTPUT\\n {\");\r\n let cNdx = 0;\r\n while (cNdx < numTargets) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` float4 col${cNdx} : SV_TARGET${cNdx};`);\r\n ++cNdx;\r\n }\r\n\r\n if (haveGLFragColorOnly) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float4 out_FragColor : SV_TARGET;\");\r\n } else {\r\n for (cNdx = 0; cNdx < haveGLFragColor.length; ++cNdx) {\r\n if (haveGLFragColor[cNdx]) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` float4 out_FragColor${cNdx} : SV_TARGET${cNdx};`);\r\n }\r\n }\r\n }\r\n\r\n if (haveGLDepth) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float gl_Depth : SV_Depth;\");\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" };\\nPS_OUTPUT generateOutput () {\\n PS_OUTPUT output;\");\r\n cNdx = 0;\r\n while (cNdx < numTargets) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` output.col${cNdx} = gl_Color[${cNdx}];`);\r\n ++cNdx;\r\n }\r\n\r\n if (haveGLFragColorOnly) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" output.out_FragColor = out_FragColor;\");\r\n } else {\r\n for (cNdx = 0; cNdx < haveGLFragColor.length; ++cNdx) {\r\n if (haveGLFragColor[cNdx]) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` output.out_FragColor${cNdx} = out_FragColor${cNdx};`);\r\n }\r\n }\r\n }\r\n\r\n if (haveGLDepth) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" output.gl_Depth = gl_Depth;\");\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" return output;\\n}\");\r\n } else if (line.indexOf(\"PS_OUTPUT main\") >= 0) {\r\n lines[ndx] = `// ${line}\\nPS_OUTPUT main(VS_OUTPUT input){`;\r\n } else if (line.indexOf(\"@@ MAIN PROLOGUE @@\") >= 0) {\r\n lines[ndx] = `// ${line}\\ngetInputs(input);`;\r\n }\r\n }\r\n\r\n ++ndx;\r\n }\r\n }\r\n\r\n const srcH2 = lines.join(\"\\n\");\r\n dsfNdx = shaderFiles.push(new DebugShaderFile(fnameH, srcH2, isVS, false, false));\r\n if (isVS)\r\n this._vertHNdx = dsfNdx - 1;\r\n else\r\n this._fragHNdx = dsfNdx - 1;\r\n }\r\n}\r\n\r\n/** Context in which ShaderPrograms are executed. Avoids switching shaders unnecessarily.\r\n * Ensures shader programs are compiled before use and un-bound when scope is disposed.\r\n * This class must *only* be used inside a using() function!\r\n * @internal\r\n */\r\nexport class ShaderProgramExecutor {\r\n private _program?: ShaderProgram;\r\n private static _params?: ShaderProgramParams;\r\n\r\n public constructor(target: Target, pass: RenderPass, program?: ShaderProgram) {\r\n this.params.init(target, pass);\r\n this.changeProgram(program);\r\n }\r\n\r\n public static freeParams(): void {\r\n this._params = undefined;\r\n }\r\n\r\n private _isDisposed = false;\r\n public get isDisposed(): boolean { return this._isDisposed; }\r\n\r\n /** Clears the current program to be executed. This does not free WebGL resources, since those are owned by Techniques. */\r\n public dispose() {\r\n this.changeProgram(undefined);\r\n ShaderProgramExecutor.freeParams();\r\n this._isDisposed = true;\r\n }\r\n\r\n public setProgram(program: ShaderProgram): boolean { return this.changeProgram(program); }\r\n public get isValid() { return undefined !== this._program; }\r\n public get target() { return this.params.target; }\r\n public get renderPass() { return this.params.renderPass; }\r\n public get params() {\r\n if (undefined === ShaderProgramExecutor._params)\r\n ShaderProgramExecutor._params = new ShaderProgramParams();\r\n\r\n return ShaderProgramExecutor._params;\r\n }\r\n\r\n public draw(params: DrawParams) {\r\n assert(this.isValid);\r\n if (undefined !== this._program) {\r\n this._program.draw(params);\r\n }\r\n }\r\n public drawInterrupt(params: DrawParams) {\r\n assert(params.target === this.params.target);\r\n\r\n const tech = params.target.techniques.getTechnique(params.geometry.techniqueId);\r\n const program = tech.getShader(TechniqueFlags.defaults);\r\n if (this.setProgram(program)) {\r\n this.draw(params);\r\n }\r\n }\r\n\r\n public pushBranch(branch: Branch): void { this.target.pushBranch(branch); }\r\n public popBranch(): void { this.target.popBranch(); }\r\n public pushBatch(batch: Batch): void { this.target.pushBatch(batch); }\r\n public popBatch(): void { this.target.popBatch(); }\r\n\r\n private changeProgram(program?: ShaderProgram): boolean {\r\n if (this._program === program) {\r\n return true;\r\n } else if (undefined !== this._program) {\r\n this._program.endUse();\r\n }\r\n\r\n this._program = program;\r\n if (undefined !== program && !program.use(this.params)) {\r\n this._program = undefined;\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n"]}
@@ -7,7 +7,8 @@
7
7
  * @module WebGL
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.SurfaceGeometry = exports.wantMaterials = void 0;
10
+ exports.SurfaceGeometry = void 0;
11
+ exports.wantMaterials = wantMaterials;
11
12
  const core_bentley_1 = require("@itwin/core-bentley");
12
13
  const core_common_1 = require("@itwin/core-common");
13
14
  const SurfaceParams_1 = require("../../common/internal/render/SurfaceParams");
@@ -20,7 +21,6 @@ const MeshGeometry_1 = require("./MeshGeometry");
20
21
  function wantMaterials(vf) {
21
22
  return vf.materials && core_common_1.RenderMode.SmoothShade === vf.renderMode;
22
23
  }
23
- exports.wantMaterials = wantMaterials;
24
24
  function wantLighting(vf) {
25
25
  return core_common_1.RenderMode.SmoothShade === vf.renderMode && vf.lighting;
26
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SurfaceGeometry.js","sourceRoot":"","sources":["../../../../src/render/webgl/SurfaceGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { FillFlags, RenderMode, TextureTransparency, ThematicGradientTransparencyMode, ViewFlags } from \"@itwin/core-common\";\r\nimport { SurfaceType } from \"../../common/internal/render/SurfaceParams\";\r\nimport { VertexIndices } from \"../../common/internal/render/VertexIndices\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { ShaderProgramParams } from \"./DrawCommand\";\r\nimport { GL } from \"./GL\";\r\nimport { BufferHandle, BufferParameters, BuffersContainer } from \"./AttributeBuffers\";\r\nimport { MaterialInfo } from \"./Material\";\r\nimport { Pass, RenderOrder, RenderPass, SurfaceBitIndex } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { MeshData } from \"./MeshData\";\r\nimport { MeshGeometry } from \"./MeshGeometry\";\r\n\r\n/** @internal */\r\nexport function wantMaterials(vf: ViewFlags): boolean {\r\n return vf.materials && RenderMode.SmoothShade === vf.renderMode;\r\n}\r\n\r\nfunction wantLighting(vf: ViewFlags) {\r\n return RenderMode.SmoothShade === vf.renderMode && vf.lighting;\r\n}\r\n\r\n/** @internal */\r\nexport class SurfaceGeometry extends MeshGeometry {\r\n private readonly _buffers: BuffersContainer;\r\n private readonly _indices: BufferHandle;\r\n\r\n public get lutBuffers() { return this._buffers; }\r\n\r\n public static create(mesh: MeshData, indices: VertexIndices): SurfaceGeometry | undefined {\r\n const indexBuffer = BufferHandle.createArrayBuffer(indices.data);\r\n return undefined !== indexBuffer ? new SurfaceGeometry(indexBuffer, indices.length, mesh) : undefined;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._buffers.isDisposed\r\n && this._indices.isDisposed;\r\n }\r\n\r\n public dispose() {\r\n dispose(this._buffers);\r\n dispose(this._indices);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n stats.addSurface(this._indices.bytesUsed);\r\n }\r\n\r\n public get isLit() { return SurfaceType.Lit === this.surfaceType || SurfaceType.TexturedLit === this.surfaceType; }\r\n public get isTexturedType() { return SurfaceType.Textured === this.surfaceType || SurfaceType.TexturedLit === this.surfaceType; }\r\n public get hasTexture() { return this.isTexturedType && undefined !== this.texture; }\r\n public get hasNormalMap() { return this.isLit && this.isTexturedType && undefined !== this.normalMap; }\r\n public get isGlyph() { return this.mesh.isGlyph; }\r\n public override get alwaysRenderTranslucent() { return this.isGlyph; }\r\n public get isTileSection() { return undefined !== this.texture && this.texture.isTileSection; }\r\n public get isClassifier() { return SurfaceType.VolumeClassifier === this.surfaceType; }\r\n public override get supportsThematicDisplay() {\r\n return !this.isGlyph;\r\n }\r\n\r\n public override get allowColorOverride() {\r\n // Text background color should not be overridden by feature symbology overrides - otherwise it becomes unreadable...\r\n // We don't actually know if we have text.\r\n // We do know that text background color uses blanking fill. So do ImageGraphics, so they're also going to forbid overriding their color.\r\n return FillFlags.Blanking !== (this.fillFlags & FillFlags.Blanking);\r\n }\r\n\r\n public override get asSurface() { return this; }\r\n public override get asEdge() { return undefined; }\r\n public override get asSilhouette() { return undefined; }\r\n\r\n protected _draw(numInstances: number, instanceBuffersContainer?: BuffersContainer): void {\r\n const system = System.instance;\r\n\r\n // If we can't write depth in the fragment shader, use polygonOffset to force blanking regions to draw behind.\r\n const offset = RenderOrder.BlankingRegion === this.renderOrder && !system.supportsLogZBuffer;\r\n if (offset) {\r\n system.context.enable(GL.POLYGON_OFFSET_FILL);\r\n system.context.polygonOffset(1.0, 1.0);\r\n }\r\n\r\n const bufs = instanceBuffersContainer !== undefined ? instanceBuffersContainer : this._buffers;\r\n bufs.bind();\r\n system.drawArrays(GL.PrimitiveType.Triangles, 0, this._numIndices, numInstances);\r\n bufs.unbind();\r\n\r\n if (offset)\r\n system.context.disable(GL.POLYGON_OFFSET_FILL);\r\n }\r\n\r\n public override wantMixMonochromeColor(target: Target): boolean {\r\n // Text relies on white-on-white reversal.\r\n return !this.isGlyph && (this.isLitSurface || this.wantTextures(target, this.hasTexture));\r\n }\r\n\r\n public get techniqueId(): TechniqueId { return TechniqueId.Surface; }\r\n public override get isLitSurface() { return this.isLit; }\r\n public override get hasBakedLighting() { return this.mesh.hasBakedLighting; }\r\n public get renderOrder(): RenderOrder {\r\n if (FillFlags.Behind === (this.fillFlags & FillFlags.Behind))\r\n return RenderOrder.BlankingRegion;\r\n\r\n let order = this.isLit ? RenderOrder.LitSurface : RenderOrder.UnlitSurface;\r\n if (this.isPlanar)\r\n order = order | RenderOrder.PlanarBit;\r\n\r\n return order;\r\n }\r\n\r\n public override getColor(target: Target) {\r\n if (FillFlags.Background === (this.fillFlags & FillFlags.Background))\r\n return target.uniforms.style.backgroundColorInfo;\r\n else\r\n return this.colorInfo;\r\n }\r\n\r\n public override getPass(target: Target): Pass {\r\n // Classifiers have a dedicated pass\r\n if (this.isClassifier)\r\n return \"classification\";\r\n\r\n let opaquePass: Pass = this.isPlanar ? \"opaque-planar\" : \"opaque\";\r\n\r\n // When reading pixels, glyphs are always opaque. Otherwise always transparent (for anti-aliasing).\r\n if (this.isGlyph)\r\n return target.isReadPixelsInProgress ? opaquePass : \"translucent\";\r\n\r\n const vf = target.currentViewFlags;\r\n\r\n // When rendering thematic isolines, we need translucency because they have anti-aliasing.\r\n const thematic = target.wantThematicDisplay && this.supportsThematicDisplay ? target.uniforms.thematic.thematicDisplay : undefined;\r\n if (thematic && target.uniforms.thematic.wantIsoLines)\r\n return \"translucent\";\r\n\r\n // In wireframe, unless fill is explicitly enabled for planar region, surface does not draw\r\n if (RenderMode.Wireframe === vf.renderMode && !this.mesh.isTextureAlwaysDisplayed) {\r\n const fillFlags = this.fillFlags;\r\n const showFill = FillFlags.Always === (fillFlags & FillFlags.Always) || (vf.fill && FillFlags.ByView === (fillFlags & FillFlags.ByView));\r\n if (!showFill)\r\n return \"none\";\r\n }\r\n\r\n // If transparency disabled by render mode or view flag, always draw opaque.\r\n if (!vf.transparency || RenderMode.SolidFill === vf.renderMode || RenderMode.HiddenLine === vf.renderMode)\r\n return opaquePass;\r\n\r\n // A gradient texture applied by analysis style always fully determines the transparency of the surface.\r\n if (this.hasScalarAnimation && undefined !== target.analysisTexture) {\r\n assert(undefined !== target.analysisStyle?.thematic);\r\n switch (target.analysisStyle.thematic.thematicSettings.textureTransparency) {\r\n case TextureTransparency.Translucent:\r\n return \"translucent\";\r\n case TextureTransparency.Opaque:\r\n return opaquePass;\r\n case TextureTransparency.Mixed:\r\n return `${opaquePass}-translucent`;\r\n }\r\n }\r\n\r\n // We have 3 sources of alpha: the material, the texture, and the color.\r\n // Base alpha comes from the material if it overrides it; otherwise from the color.\r\n // The texture's alpha is multiplied by the base alpha.\r\n // So we must draw in the translucent pass if the texture has transparency OR the base alpha is less than 1.\r\n let hasAlpha = false;\r\n const mat = wantMaterials(vf) ? this.mesh.materialInfo : undefined;\r\n if (undefined !== mat && mat.overridesAlpha)\r\n hasAlpha = mat.hasTranslucency;\r\n else\r\n hasAlpha = this.getColor(target).hasTranslucency;\r\n\r\n // Thematic gradient can optionally multiply gradient alpha with surface alpha.\r\n if (thematic && thematic.gradientSettings.transparencyMode === ThematicGradientTransparencyMode.MultiplySurfaceAndGradient) {\r\n switch (thematic.gradientSettings.textureTransparency) {\r\n case TextureTransparency.Opaque:\r\n // This surface's alpha gets multiplied by 1 - gradient colors are all opaque.\r\n return hasAlpha ? \"translucent\" : opaquePass;\r\n case TextureTransparency.Translucent:\r\n // This surface's alpha gets multiplied by < 1 - gradient colors are all translucent.\r\n return \"translucent\";\r\n case TextureTransparency.Mixed:\r\n // The gradient contains a mix of translucent and opaque colors.\r\n return hasAlpha ? \"translucent\" : `${opaquePass}-translucent`;\r\n }\r\n }\r\n\r\n if (!hasAlpha) {\r\n const tex = this.wantTextures(target, true) ? this.texture : undefined;\r\n switch (tex?.transparency) {\r\n case TextureTransparency.Translucent:\r\n hasAlpha = true;\r\n break;\r\n case TextureTransparency.Mixed:\r\n opaquePass = `${opaquePass}-translucent`;\r\n break;\r\n }\r\n }\r\n\r\n return hasAlpha ? \"translucent\" : opaquePass;\r\n }\r\n\r\n protected _wantWoWReversal(target: Target): boolean {\r\n const fillFlags = this.fillFlags;\r\n if (FillFlags.None !== (fillFlags & FillFlags.Background))\r\n return false; // fill color explicitly from background\r\n\r\n if (FillFlags.None !== (fillFlags & FillFlags.Always))\r\n return true; // fill displayed even in wireframe\r\n\r\n const vf = target.currentViewFlags;\r\n if (RenderMode.Wireframe === vf.renderMode || vf.visibleEdges)\r\n return false; // never invert surfaces when edges are displayed\r\n\r\n if (this.isLit && wantLighting(vf))\r\n return false;\r\n\r\n // Don't invert white pixels of textures...\r\n return !this.wantTextures(target, this.hasTexture);\r\n }\r\n\r\n public override get materialInfo(): MaterialInfo | undefined { return this.mesh.materialInfo; }\r\n\r\n public useTexture(params: ShaderProgramParams): boolean {\r\n return this.wantTextures(params.target, this.hasTexture);\r\n }\r\n\r\n public useNormalMap(params: ShaderProgramParams): boolean {\r\n return this.wantNormalMaps(params.target, this.hasNormalMap);\r\n }\r\n\r\n public computeSurfaceFlags(params: ShaderProgramParams, flags: Int32Array): void {\r\n const target = params.target;\r\n const vf = target.currentViewFlags;\r\n\r\n const useMaterial = wantMaterials(vf);\r\n flags[SurfaceBitIndex.IgnoreMaterial] = useMaterial ? 0 : 1;\r\n flags[SurfaceBitIndex.HasMaterialAtlas] = useMaterial && this.hasMaterialAtlas ? 1 : 0;\r\n\r\n flags[SurfaceBitIndex.ApplyLighting] = 0;\r\n flags[SurfaceBitIndex.HasColorAndNormal] = 0;\r\n if (this.isLit) {\r\n flags[SurfaceBitIndex.HasNormals] = 1;\r\n if (wantLighting(vf))\r\n flags[SurfaceBitIndex.ApplyLighting] = 1;\r\n\r\n // Textured meshes store normal in place of color index.\r\n // Untextured lit meshes store normal where textured meshes would store UV coords.\r\n // Tell shader where to find normal.\r\n if (!this.isTexturedType) {\r\n flags[SurfaceBitIndex.HasColorAndNormal] = 1;\r\n }\r\n } else {\r\n flags[SurfaceBitIndex.HasNormals] = 0;\r\n }\r\n\r\n flags[SurfaceBitIndex.HasTexture] = this.useTexture(params) ? 1 : 0;\r\n flags[SurfaceBitIndex.HasNormalMap] = this.useNormalMap(params) ? 1 : 0;\r\n flags[SurfaceBitIndex.UseConstantLodTextureMapping] = this.mesh.textureUsesConstantLod ? 1 : 0;\r\n flags[SurfaceBitIndex.UseConstantLodNormalMapMapping] = this.mesh.normalMapUsesConstantLod ? 1 : 0;\r\n\r\n // The transparency threshold controls how transparent a surface must be to allow light to pass through; more opaque surfaces cast shadows.\r\n flags[SurfaceBitIndex.TransparencyThreshold] = params.target.isDrawingShadowMap ? 1 : 0;\r\n flags[SurfaceBitIndex.BackgroundFill] = 0;\r\n switch (params.renderPass) {\r\n // NB: We need this for opaque pass due to SolidFill (must compute transparency, discard below threshold, render opaque at or above threshold)\r\n case RenderPass.OpaqueLinear:\r\n case RenderPass.OpaquePlanar:\r\n case RenderPass.OpaqueGeneral:\r\n case RenderPass.Translucent:\r\n case RenderPass.WorldOverlay:\r\n case RenderPass.OpaqueLayers:\r\n case RenderPass.TranslucentLayers:\r\n case RenderPass.OverlayLayers: {\r\n const mode = vf.renderMode;\r\n if (!this.isGlyph && (RenderMode.HiddenLine === mode || RenderMode.SolidFill === mode)) {\r\n flags[SurfaceBitIndex.TransparencyThreshold] = 1;\r\n if (RenderMode.HiddenLine === mode && FillFlags.Always !== (this.fillFlags & FillFlags.Always)) {\r\n // fill flags test for text - doesn't render with bg fill in hidden line mode.\r\n flags[SurfaceBitIndex.BackgroundFill] = 1;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private constructor(indices: BufferHandle, numIndices: number, mesh: MeshData) {\r\n super(mesh, numIndices);\r\n this._buffers = BuffersContainer.create();\r\n const attrPos = AttributeMap.findAttribute(\"a_pos\", TechniqueId.Surface, false);\r\n assert(undefined !== attrPos);\r\n this._buffers.addBuffer(indices, [BufferParameters.create(attrPos.location, 3, GL.DataType.UnsignedByte, false, 0, 0, false)]);\r\n this._indices = indices;\r\n }\r\n\r\n private wantTextures(target: Target, surfaceTextureExists: boolean): boolean {\r\n if (this.hasScalarAnimation && undefined !== target.analysisTexture)\r\n return true;\r\n\r\n if (!surfaceTextureExists)\r\n return false;\r\n\r\n if (this.mesh.isTextureAlwaysDisplayed)\r\n return true;\r\n\r\n if (this.supportsThematicDisplay && target.wantThematicDisplay)\r\n return false;\r\n\r\n const fill = this.fillFlags;\r\n const flags = target.currentViewFlags;\r\n\r\n // ###TODO need to distinguish between gradient fill and actual textures...\r\n switch (flags.renderMode) {\r\n case RenderMode.SmoothShade:\r\n return flags.textures;\r\n case RenderMode.Wireframe:\r\n return FillFlags.Always === (fill & FillFlags.Always) || (flags.fill && FillFlags.ByView === (fill & FillFlags.ByView));\r\n default:\r\n return FillFlags.Always === (fill & FillFlags.Always);\r\n }\r\n }\r\n\r\n private wantNormalMaps(target: Target, normalMapExists: boolean): boolean {\r\n if (!normalMapExists || !target.displayNormalMaps)\r\n return false;\r\n\r\n const flags = target.currentViewFlags;\r\n\r\n switch (flags.renderMode) {\r\n case RenderMode.SmoothShade:\r\n return flags.textures;\r\n default:\r\n return false;\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"SurfaceGeometry.js","sourceRoot":"","sources":["../../../../src/render/webgl/SurfaceGeometry.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { FillFlags, RenderMode, TextureTransparency, ThematicGradientTransparencyMode, ViewFlags } from \"@itwin/core-common\";\r\nimport { SurfaceType } from \"../../common/internal/render/SurfaceParams\";\r\nimport { VertexIndices } from \"../../common/internal/render/VertexIndices\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { ShaderProgramParams } from \"./DrawCommand\";\r\nimport { GL } from \"./GL\";\r\nimport { BufferHandle, BufferParameters, BuffersContainer } from \"./AttributeBuffers\";\r\nimport { MaterialInfo } from \"./Material\";\r\nimport { Pass, RenderOrder, RenderPass, SurfaceBitIndex } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { MeshData } from \"./MeshData\";\r\nimport { MeshGeometry } from \"./MeshGeometry\";\r\n\r\n/** @internal */\r\nexport function wantMaterials(vf: ViewFlags): boolean {\r\n return vf.materials && RenderMode.SmoothShade === vf.renderMode;\r\n}\r\n\r\nfunction wantLighting(vf: ViewFlags) {\r\n return RenderMode.SmoothShade === vf.renderMode && vf.lighting;\r\n}\r\n\r\n/** @internal */\r\nexport class SurfaceGeometry extends MeshGeometry {\r\n private readonly _buffers: BuffersContainer;\r\n private readonly _indices: BufferHandle;\r\n\r\n public get lutBuffers() { return this._buffers; }\r\n\r\n public static create(mesh: MeshData, indices: VertexIndices): SurfaceGeometry | undefined {\r\n const indexBuffer = BufferHandle.createArrayBuffer(indices.data);\r\n return undefined !== indexBuffer ? new SurfaceGeometry(indexBuffer, indices.length, mesh) : undefined;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._buffers.isDisposed\r\n && this._indices.isDisposed;\r\n }\r\n\r\n public dispose() {\r\n dispose(this._buffers);\r\n dispose(this._indices);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n stats.addSurface(this._indices.bytesUsed);\r\n }\r\n\r\n public get isLit() { return SurfaceType.Lit === this.surfaceType || SurfaceType.TexturedLit === this.surfaceType; }\r\n public get isTexturedType() { return SurfaceType.Textured === this.surfaceType || SurfaceType.TexturedLit === this.surfaceType; }\r\n public get hasTexture() { return this.isTexturedType && undefined !== this.texture; }\r\n public get hasNormalMap() { return this.isLit && this.isTexturedType && undefined !== this.normalMap; }\r\n public get isGlyph() { return this.mesh.isGlyph; }\r\n public override get alwaysRenderTranslucent() { return this.isGlyph; }\r\n public get isTileSection() { return undefined !== this.texture && this.texture.isTileSection; }\r\n public get isClassifier() { return SurfaceType.VolumeClassifier === this.surfaceType; }\r\n public override get supportsThematicDisplay() {\r\n return !this.isGlyph;\r\n }\r\n\r\n public override get allowColorOverride() {\r\n // Text background color should not be overridden by feature symbology overrides - otherwise it becomes unreadable...\r\n // We don't actually know if we have text.\r\n // We do know that text background color uses blanking fill. So do ImageGraphics, so they're also going to forbid overriding their color.\r\n return FillFlags.Blanking !== (this.fillFlags & FillFlags.Blanking);\r\n }\r\n\r\n public override get asSurface() { return this; }\r\n public override get asEdge() { return undefined; }\r\n public override get asSilhouette() { return undefined; }\r\n\r\n protected _draw(numInstances: number, instanceBuffersContainer?: BuffersContainer): void {\r\n const system = System.instance;\r\n\r\n // If we can't write depth in the fragment shader, use polygonOffset to force blanking regions to draw behind.\r\n const offset = RenderOrder.BlankingRegion === this.renderOrder && !system.supportsLogZBuffer;\r\n if (offset) {\r\n system.context.enable(GL.POLYGON_OFFSET_FILL);\r\n system.context.polygonOffset(1.0, 1.0);\r\n }\r\n\r\n const bufs = instanceBuffersContainer !== undefined ? instanceBuffersContainer : this._buffers;\r\n bufs.bind();\r\n system.drawArrays(GL.PrimitiveType.Triangles, 0, this._numIndices, numInstances);\r\n bufs.unbind();\r\n\r\n if (offset)\r\n system.context.disable(GL.POLYGON_OFFSET_FILL);\r\n }\r\n\r\n public override wantMixMonochromeColor(target: Target): boolean {\r\n // Text relies on white-on-white reversal.\r\n return !this.isGlyph && (this.isLitSurface || this.wantTextures(target, this.hasTexture));\r\n }\r\n\r\n public get techniqueId(): TechniqueId { return TechniqueId.Surface; }\r\n public override get isLitSurface() { return this.isLit; }\r\n public override get hasBakedLighting() { return this.mesh.hasBakedLighting; }\r\n public get renderOrder(): RenderOrder {\r\n if (FillFlags.Behind === (this.fillFlags & FillFlags.Behind))\r\n return RenderOrder.BlankingRegion;\r\n\r\n let order = this.isLit ? RenderOrder.LitSurface : RenderOrder.UnlitSurface;\r\n if (this.isPlanar)\r\n order = order | RenderOrder.PlanarBit;\r\n\r\n return order;\r\n }\r\n\r\n public override getColor(target: Target) {\r\n if (FillFlags.Background === (this.fillFlags & FillFlags.Background))\r\n return target.uniforms.style.backgroundColorInfo;\r\n else\r\n return this.colorInfo;\r\n }\r\n\r\n public override getPass(target: Target): Pass {\r\n // Classifiers have a dedicated pass\r\n if (this.isClassifier)\r\n return \"classification\";\r\n\r\n let opaquePass: Pass = this.isPlanar ? \"opaque-planar\" : \"opaque\";\r\n\r\n // When reading pixels, glyphs are always opaque. Otherwise always transparent (for anti-aliasing).\r\n if (this.isGlyph)\r\n return target.isReadPixelsInProgress ? opaquePass : \"translucent\";\r\n\r\n const vf = target.currentViewFlags;\r\n\r\n // When rendering thematic isolines, we need translucency because they have anti-aliasing.\r\n const thematic = target.wantThematicDisplay && this.supportsThematicDisplay ? target.uniforms.thematic.thematicDisplay : undefined;\r\n if (thematic && target.uniforms.thematic.wantIsoLines)\r\n return \"translucent\";\r\n\r\n // In wireframe, unless fill is explicitly enabled for planar region, surface does not draw\r\n if (RenderMode.Wireframe === vf.renderMode && !this.mesh.isTextureAlwaysDisplayed) {\r\n const fillFlags = this.fillFlags;\r\n const showFill = FillFlags.Always === (fillFlags & FillFlags.Always) || (vf.fill && FillFlags.ByView === (fillFlags & FillFlags.ByView));\r\n if (!showFill)\r\n return \"none\";\r\n }\r\n\r\n // If transparency disabled by render mode or view flag, always draw opaque.\r\n if (!vf.transparency || RenderMode.SolidFill === vf.renderMode || RenderMode.HiddenLine === vf.renderMode)\r\n return opaquePass;\r\n\r\n // A gradient texture applied by analysis style always fully determines the transparency of the surface.\r\n if (this.hasScalarAnimation && undefined !== target.analysisTexture) {\r\n assert(undefined !== target.analysisStyle?.thematic);\r\n switch (target.analysisStyle.thematic.thematicSettings.textureTransparency) {\r\n case TextureTransparency.Translucent:\r\n return \"translucent\";\r\n case TextureTransparency.Opaque:\r\n return opaquePass;\r\n case TextureTransparency.Mixed:\r\n return `${opaquePass}-translucent`;\r\n }\r\n }\r\n\r\n // We have 3 sources of alpha: the material, the texture, and the color.\r\n // Base alpha comes from the material if it overrides it; otherwise from the color.\r\n // The texture's alpha is multiplied by the base alpha.\r\n // So we must draw in the translucent pass if the texture has transparency OR the base alpha is less than 1.\r\n let hasAlpha = false;\r\n const mat = wantMaterials(vf) ? this.mesh.materialInfo : undefined;\r\n if (undefined !== mat && mat.overridesAlpha)\r\n hasAlpha = mat.hasTranslucency;\r\n else\r\n hasAlpha = this.getColor(target).hasTranslucency;\r\n\r\n // Thematic gradient can optionally multiply gradient alpha with surface alpha.\r\n if (thematic && thematic.gradientSettings.transparencyMode === ThematicGradientTransparencyMode.MultiplySurfaceAndGradient) {\r\n switch (thematic.gradientSettings.textureTransparency) {\r\n case TextureTransparency.Opaque:\r\n // This surface's alpha gets multiplied by 1 - gradient colors are all opaque.\r\n return hasAlpha ? \"translucent\" : opaquePass;\r\n case TextureTransparency.Translucent:\r\n // This surface's alpha gets multiplied by < 1 - gradient colors are all translucent.\r\n return \"translucent\";\r\n case TextureTransparency.Mixed:\r\n // The gradient contains a mix of translucent and opaque colors.\r\n return hasAlpha ? \"translucent\" : `${opaquePass}-translucent`;\r\n }\r\n }\r\n\r\n if (!hasAlpha) {\r\n const tex = this.wantTextures(target, true) ? this.texture : undefined;\r\n switch (tex?.transparency) {\r\n case TextureTransparency.Translucent:\r\n hasAlpha = true;\r\n break;\r\n case TextureTransparency.Mixed:\r\n opaquePass = `${opaquePass}-translucent`;\r\n break;\r\n }\r\n }\r\n\r\n return hasAlpha ? \"translucent\" : opaquePass;\r\n }\r\n\r\n protected _wantWoWReversal(target: Target): boolean {\r\n const fillFlags = this.fillFlags;\r\n if (FillFlags.None !== (fillFlags & FillFlags.Background))\r\n return false; // fill color explicitly from background\r\n\r\n if (FillFlags.None !== (fillFlags & FillFlags.Always))\r\n return true; // fill displayed even in wireframe\r\n\r\n const vf = target.currentViewFlags;\r\n if (RenderMode.Wireframe === vf.renderMode || vf.visibleEdges)\r\n return false; // never invert surfaces when edges are displayed\r\n\r\n if (this.isLit && wantLighting(vf))\r\n return false;\r\n\r\n // Don't invert white pixels of textures...\r\n return !this.wantTextures(target, this.hasTexture);\r\n }\r\n\r\n public override get materialInfo(): MaterialInfo | undefined { return this.mesh.materialInfo; }\r\n\r\n public useTexture(params: ShaderProgramParams): boolean {\r\n return this.wantTextures(params.target, this.hasTexture);\r\n }\r\n\r\n public useNormalMap(params: ShaderProgramParams): boolean {\r\n return this.wantNormalMaps(params.target, this.hasNormalMap);\r\n }\r\n\r\n public computeSurfaceFlags(params: ShaderProgramParams, flags: Int32Array): void {\r\n const target = params.target;\r\n const vf = target.currentViewFlags;\r\n\r\n const useMaterial = wantMaterials(vf);\r\n flags[SurfaceBitIndex.IgnoreMaterial] = useMaterial ? 0 : 1;\r\n flags[SurfaceBitIndex.HasMaterialAtlas] = useMaterial && this.hasMaterialAtlas ? 1 : 0;\r\n\r\n flags[SurfaceBitIndex.ApplyLighting] = 0;\r\n flags[SurfaceBitIndex.HasColorAndNormal] = 0;\r\n if (this.isLit) {\r\n flags[SurfaceBitIndex.HasNormals] = 1;\r\n if (wantLighting(vf))\r\n flags[SurfaceBitIndex.ApplyLighting] = 1;\r\n\r\n // Textured meshes store normal in place of color index.\r\n // Untextured lit meshes store normal where textured meshes would store UV coords.\r\n // Tell shader where to find normal.\r\n if (!this.isTexturedType) {\r\n flags[SurfaceBitIndex.HasColorAndNormal] = 1;\r\n }\r\n } else {\r\n flags[SurfaceBitIndex.HasNormals] = 0;\r\n }\r\n\r\n flags[SurfaceBitIndex.HasTexture] = this.useTexture(params) ? 1 : 0;\r\n flags[SurfaceBitIndex.HasNormalMap] = this.useNormalMap(params) ? 1 : 0;\r\n flags[SurfaceBitIndex.UseConstantLodTextureMapping] = this.mesh.textureUsesConstantLod ? 1 : 0;\r\n flags[SurfaceBitIndex.UseConstantLodNormalMapMapping] = this.mesh.normalMapUsesConstantLod ? 1 : 0;\r\n\r\n // The transparency threshold controls how transparent a surface must be to allow light to pass through; more opaque surfaces cast shadows.\r\n flags[SurfaceBitIndex.TransparencyThreshold] = params.target.isDrawingShadowMap ? 1 : 0;\r\n flags[SurfaceBitIndex.BackgroundFill] = 0;\r\n switch (params.renderPass) {\r\n // NB: We need this for opaque pass due to SolidFill (must compute transparency, discard below threshold, render opaque at or above threshold)\r\n case RenderPass.OpaqueLinear:\r\n case RenderPass.OpaquePlanar:\r\n case RenderPass.OpaqueGeneral:\r\n case RenderPass.Translucent:\r\n case RenderPass.WorldOverlay:\r\n case RenderPass.OpaqueLayers:\r\n case RenderPass.TranslucentLayers:\r\n case RenderPass.OverlayLayers: {\r\n const mode = vf.renderMode;\r\n if (!this.isGlyph && (RenderMode.HiddenLine === mode || RenderMode.SolidFill === mode)) {\r\n flags[SurfaceBitIndex.TransparencyThreshold] = 1;\r\n if (RenderMode.HiddenLine === mode && FillFlags.Always !== (this.fillFlags & FillFlags.Always)) {\r\n // fill flags test for text - doesn't render with bg fill in hidden line mode.\r\n flags[SurfaceBitIndex.BackgroundFill] = 1;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private constructor(indices: BufferHandle, numIndices: number, mesh: MeshData) {\r\n super(mesh, numIndices);\r\n this._buffers = BuffersContainer.create();\r\n const attrPos = AttributeMap.findAttribute(\"a_pos\", TechniqueId.Surface, false);\r\n assert(undefined !== attrPos);\r\n this._buffers.addBuffer(indices, [BufferParameters.create(attrPos.location, 3, GL.DataType.UnsignedByte, false, 0, 0, false)]);\r\n this._indices = indices;\r\n }\r\n\r\n private wantTextures(target: Target, surfaceTextureExists: boolean): boolean {\r\n if (this.hasScalarAnimation && undefined !== target.analysisTexture)\r\n return true;\r\n\r\n if (!surfaceTextureExists)\r\n return false;\r\n\r\n if (this.mesh.isTextureAlwaysDisplayed)\r\n return true;\r\n\r\n if (this.supportsThematicDisplay && target.wantThematicDisplay)\r\n return false;\r\n\r\n const fill = this.fillFlags;\r\n const flags = target.currentViewFlags;\r\n\r\n // ###TODO need to distinguish between gradient fill and actual textures...\r\n switch (flags.renderMode) {\r\n case RenderMode.SmoothShade:\r\n return flags.textures;\r\n case RenderMode.Wireframe:\r\n return FillFlags.Always === (fill & FillFlags.Always) || (flags.fill && FillFlags.ByView === (fill & FillFlags.ByView));\r\n default:\r\n return FillFlags.Always === (fill & FillFlags.Always);\r\n }\r\n }\r\n\r\n private wantNormalMaps(target: Target, normalMapExists: boolean): boolean {\r\n if (!normalMapExists || !target.displayNormalMaps)\r\n return false;\r\n\r\n const flags = target.currentViewFlags;\r\n\r\n switch (flags.renderMode) {\r\n case RenderMode.SmoothShade:\r\n return flags.textures;\r\n default:\r\n return false;\r\n }\r\n }\r\n}\r\n"]}
@@ -7,7 +7,9 @@
7
7
  * @module WebGL
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.desync = exports.sync = exports.isSynchronized = void 0;
10
+ exports.isSynchronized = isSynchronized;
11
+ exports.sync = sync;
12
+ exports.desync = desync;
11
13
  /** Returns true if the target and observer are already synchronized.
12
14
  * @internal
13
15
  */
@@ -15,7 +17,6 @@ function isSynchronized(target, observer) {
15
17
  const token = observer.syncToken;
16
18
  return undefined !== token && token.target === target && token.syncKey === target.syncKey;
17
19
  }
18
- exports.isSynchronized = isSynchronized;
19
20
  /** If the observer is already synchronized with the target, returns true.
20
21
  * Otherwise, synchronizes the observer's [[SyncToken]] with the target and returns false.
21
22
  * This is used, for example, to associate uniform variable state with shader programs such that the program can trivially detect if the state has changed since the last time
@@ -35,7 +36,6 @@ function sync(target, observer) {
35
36
  token.target = target;
36
37
  return false;
37
38
  }
38
- exports.sync = sync;
39
39
  /** Mark the [[SyncTarget]] as having changed in a way that affects associated [[SyncObserver]]s.
40
40
  * The next time [[sync]] is used, all [[SyncToken]] objects associated with the target will be recognized as out of sync.
41
41
  * @internal
@@ -47,5 +47,4 @@ function desync(target) {
47
47
  else
48
48
  target.syncKey = Number.MIN_SAFE_INTEGER;
49
49
  }
50
- exports.desync = desync;
51
50
  //# sourceMappingURL=Sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Sync.js","sourceRoot":"","sources":["../../../../src/render/webgl/Sync.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAgCH;;GAEG;AACH,SAAgB,cAAc,CAAC,MAAkB,EAAE,QAAsB;IACvE,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC;IACjC,OAAO,SAAS,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC;AAC5F,CAAC;AAHD,wCAGC;AAED;;;;;GAKG;AACH,SAAgB,IAAI,CAAC,MAAkB,EAAE,QAAsB;IAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC;IACjC,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACxB,QAAQ,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;QACtD,OAAO,IAAI,CAAC;IAEd,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,OAAO,KAAK,CAAC;AACf,CAAC;AAdD,oBAcC;AAED;;;GAGG;AACH,SAAgB,MAAM,CAAC,MAAkB;IACvC,qMAAqM;IACrM,IAAI,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,gBAAgB;QAC1C,EAAE,MAAM,CAAC,OAAO,CAAC;;QAEjB,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC7C,CAAC;AAND,wBAMC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\n/** Represents the state of synchronization between a [[SyncTarget]] and a [[SyncObserver]]. Owned by a [[SyncTarget]].\r\n * When the [[SyncObserver]]'s state changes via [[desync]], all associated [[SyncToken]]s become out-of-sync.\r\n * Use [[sync]] to synchronize the [[SyncObserver]] with the [[SyncTarget]]'s state.\r\n * @internal\r\n */\r\nexport interface SyncToken {\r\n /** The target with which this token was most recently synchronized. */\r\n target: SyncTarget;\r\n /** The value of the target's synchronization key at the time of most recent synchronization. */\r\n syncKey: number;\r\n}\r\n\r\n/** Interface adopted by an object which wants to synchronize itself with the changing state of a [[SyncTarget]].\r\n * Use [[sync]] to synchronize.\r\n * @internal\r\n */\r\nexport interface SyncObserver {\r\n /** Token representing current synchronization state. Should always be initialized to `undefined`. [[sync]] will assign to it. */\r\n syncToken?: SyncToken;\r\n}\r\n\r\n/** Interface adopted by an object that can change and with which other objects implementing [[SyncObserver]] can synchronize.\r\n * Each time the state of the object changes in a way that affects [[SyncObserver]]s, [[desync]] should be used. This will generate a new synchronization key.\r\n * @internal\r\n */\r\nexport interface SyncTarget {\r\n /** A unique key that is regenerated each time the object's state changes via a call to [[desync]]. Can be initialized to any integer value - zero is a good choice. */\r\n syncKey: number;\r\n}\r\n\r\n/** Returns true if the target and observer are already synchronized.\r\n * @internal\r\n */\r\nexport function isSynchronized(target: SyncTarget, observer: SyncObserver): boolean {\r\n const token = observer.syncToken;\r\n return undefined !== token && token.target === target && token.syncKey === target.syncKey;\r\n}\r\n\r\n/** If the observer is already synchronized with the target, returns true.\r\n * Otherwise, synchronizes the observer's [[SyncToken]] with the target and returns false.\r\n * This is used, for example, to associate uniform variable state with shader programs such that the program can trivially detect if the state has changed since the last time\r\n * the variable's value was set.\r\n * @internal\r\n */\r\nexport function sync(target: SyncTarget, observer: SyncObserver): boolean {\r\n const syncKey = target.syncKey;\r\n const token = observer.syncToken;\r\n if (undefined === token) {\r\n observer.syncToken = { target, syncKey };\r\n return false;\r\n }\r\n\r\n if (token.syncKey === syncKey && token.target === target)\r\n return true;\r\n\r\n token.syncKey = syncKey;\r\n token.target = target;\r\n return false;\r\n}\r\n\r\n/** Mark the [[SyncTarget]] as having changed in a way that affects associated [[SyncObserver]]s.\r\n * The next time [[sync]] is used, all [[SyncToken]] objects associated with the target will be recognized as out of sync.\r\n * @internal\r\n */\r\nexport function desync(target: SyncTarget): void {\r\n // Let's make the relatively safe assumption that we will never roll over, and the even safer assumption that if we do, no outstanding SyncTokens holding a very small value will exist at that time.\r\n if (target.syncKey < Number.MAX_SAFE_INTEGER)\r\n ++target.syncKey;\r\n else\r\n target.syncKey = Number.MIN_SAFE_INTEGER;\r\n}\r\n"]}
1
+ {"version":3,"file":"Sync.js","sourceRoot":"","sources":["../../../../src/render/webgl/Sync.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;AAmCH,wCAGC;AAQD,oBAcC;AAMD,wBAMC;AAxCD;;GAEG;AACH,SAAgB,cAAc,CAAC,MAAkB,EAAE,QAAsB;IACvE,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC;IACjC,OAAO,SAAS,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC;AAC5F,CAAC;AAED;;;;;GAKG;AACH,SAAgB,IAAI,CAAC,MAAkB,EAAE,QAAsB;IAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC;IACjC,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACxB,QAAQ,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;QACtD,OAAO,IAAI,CAAC;IAEd,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAgB,MAAM,CAAC,MAAkB;IACvC,qMAAqM;IACrM,IAAI,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,gBAAgB;QAC1C,EAAE,MAAM,CAAC,OAAO,CAAC;;QAEjB,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC7C,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\n/** Represents the state of synchronization between a [[SyncTarget]] and a [[SyncObserver]]. Owned by a [[SyncTarget]].\r\n * When the [[SyncObserver]]'s state changes via [[desync]], all associated [[SyncToken]]s become out-of-sync.\r\n * Use [[sync]] to synchronize the [[SyncObserver]] with the [[SyncTarget]]'s state.\r\n * @internal\r\n */\r\nexport interface SyncToken {\r\n /** The target with which this token was most recently synchronized. */\r\n target: SyncTarget;\r\n /** The value of the target's synchronization key at the time of most recent synchronization. */\r\n syncKey: number;\r\n}\r\n\r\n/** Interface adopted by an object which wants to synchronize itself with the changing state of a [[SyncTarget]].\r\n * Use [[sync]] to synchronize.\r\n * @internal\r\n */\r\nexport interface SyncObserver {\r\n /** Token representing current synchronization state. Should always be initialized to `undefined`. [[sync]] will assign to it. */\r\n syncToken?: SyncToken;\r\n}\r\n\r\n/** Interface adopted by an object that can change and with which other objects implementing [[SyncObserver]] can synchronize.\r\n * Each time the state of the object changes in a way that affects [[SyncObserver]]s, [[desync]] should be used. This will generate a new synchronization key.\r\n * @internal\r\n */\r\nexport interface SyncTarget {\r\n /** A unique key that is regenerated each time the object's state changes via a call to [[desync]]. Can be initialized to any integer value - zero is a good choice. */\r\n syncKey: number;\r\n}\r\n\r\n/** Returns true if the target and observer are already synchronized.\r\n * @internal\r\n */\r\nexport function isSynchronized(target: SyncTarget, observer: SyncObserver): boolean {\r\n const token = observer.syncToken;\r\n return undefined !== token && token.target === target && token.syncKey === target.syncKey;\r\n}\r\n\r\n/** If the observer is already synchronized with the target, returns true.\r\n * Otherwise, synchronizes the observer's [[SyncToken]] with the target and returns false.\r\n * This is used, for example, to associate uniform variable state with shader programs such that the program can trivially detect if the state has changed since the last time\r\n * the variable's value was set.\r\n * @internal\r\n */\r\nexport function sync(target: SyncTarget, observer: SyncObserver): boolean {\r\n const syncKey = target.syncKey;\r\n const token = observer.syncToken;\r\n if (undefined === token) {\r\n observer.syncToken = { target, syncKey };\r\n return false;\r\n }\r\n\r\n if (token.syncKey === syncKey && token.target === target)\r\n return true;\r\n\r\n token.syncKey = syncKey;\r\n token.target = target;\r\n return false;\r\n}\r\n\r\n/** Mark the [[SyncTarget]] as having changed in a way that affects associated [[SyncObserver]]s.\r\n * The next time [[sync]] is used, all [[SyncToken]] objects associated with the target will be recognized as out of sync.\r\n * @internal\r\n */\r\nexport function desync(target: SyncTarget): void {\r\n // Let's make the relatively safe assumption that we will never roll over, and the even safer assumption that if we do, no outstanding SyncTokens holding a very small value will exist at that time.\r\n if (target.syncKey < Number.MAX_SAFE_INTEGER)\r\n ++target.syncKey;\r\n else\r\n target.syncKey = Number.MIN_SAFE_INTEGER;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"System.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/System.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"System.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/System.ts"],"names":[],"mappings":"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"}
@@ -104,7 +104,7 @@ class IdMap {
104
104
  return this.gradients.get(symb);
105
105
  }
106
106
  /** Find or create a new material given material parameters. This will cache the material if its key is valid. */
107
- // eslint-disable-next-line deprecation/deprecation
107
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
108
108
  getMaterial(params) {
109
109
  if (!params.key || !core_bentley_1.Id64.isValidId64(params.key)) // Only cache persistent materials.
110
110
  return new Material_1.Material(params);
@@ -123,7 +123,7 @@ class IdMap {
123
123
  else
124
124
  return this.findGradient(key);
125
125
  }
126
- // eslint-disable-next-line deprecation/deprecation
126
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
127
127
  getTextureFromElement(key, iModel, params, format) {
128
128
  let tex = this.findTexture(params.key);
129
129
  if (tex)
@@ -175,7 +175,7 @@ class IdMap {
175
175
  this.texturesFromImageSources.delete(key);
176
176
  }
177
177
  }
178
- // eslint-disable-next-line deprecation/deprecation
178
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
179
179
  getTextureFromCubeImages(posX, negX, posY, negY, posZ, negZ, params) {
180
180
  let tex = this.findTexture(params.key);
181
181
  if (tex)
@@ -482,7 +482,7 @@ class System extends RenderSystem_1.RenderSystem {
482
482
  this.resourceCache.delete(imodel);
483
483
  }
484
484
  /** Attempt to create a material for the given iModel using a set of material parameters. */
485
- // eslint-disable-next-line deprecation/deprecation
485
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
486
486
  createMaterial(params, imodel) {
487
487
  const idMap = this.getIdMap(imodel);
488
488
  const material = idMap.getMaterial(params);
@@ -494,7 +494,7 @@ class System extends RenderSystem_1.RenderSystem {
494
494
  if (cached)
495
495
  return cached;
496
496
  }
497
- // eslint-disable-next-line deprecation/deprecation
497
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
498
498
  const params = new core_common_1.RenderMaterial.Params();
499
499
  params.alpha = args.alpha;
500
500
  if (undefined !== args.diffuse?.weight)
@@ -565,11 +565,11 @@ class System extends RenderSystem_1.RenderSystem {
565
565
  return super.createTextureFromSource(args);
566
566
  return this.getIdMap(args.ownership.iModel).getTextureFromImageSource(args, args.ownership.key);
567
567
  }
568
- // eslint-disable-next-line deprecation/deprecation
568
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
569
569
  createTextureFromElement(id, imodel, params, format) {
570
570
  return this.getIdMap(imodel).getTextureFromElement(id, imodel, params, format);
571
571
  }
572
- // eslint-disable-next-line deprecation/deprecation
572
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
573
573
  createTextureFromCubeImages(posX, negX, posY, negY, posZ, negZ, imodel, params) {
574
574
  return this.getIdMap(imodel).getTextureFromCubeImages(posX, negX, posY, negY, posZ, negZ, params);
575
575
  }