@itwin/core-frontend 4.10.0-dev.2 → 4.10.0-dev.22

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 (546) hide show
  1. package/CHANGELOG.md +33 -1
  2. package/lib/cjs/AccuSnap.d.ts.map +1 -1
  3. package/lib/cjs/AccuSnap.js +9 -5
  4. package/lib/cjs/AccuSnap.js.map +1 -1
  5. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  6. package/lib/cjs/DisplayStyleState.js +5 -1
  7. package/lib/cjs/DisplayStyleState.js.map +1 -1
  8. package/lib/cjs/ElementLocateManager.d.ts +7 -1
  9. package/lib/cjs/ElementLocateManager.d.ts.map +1 -1
  10. package/lib/cjs/ElementLocateManager.js +34 -10
  11. package/lib/cjs/ElementLocateManager.js.map +1 -1
  12. package/lib/cjs/HitDetail.d.ts +4 -0
  13. package/lib/cjs/HitDetail.d.ts.map +1 -1
  14. package/lib/cjs/HitDetail.js +3 -0
  15. package/lib/cjs/HitDetail.js.map +1 -1
  16. package/lib/cjs/IModelConnection.d.ts +1 -0
  17. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  18. package/lib/cjs/IModelConnection.js +2 -1
  19. package/lib/cjs/IModelConnection.js.map +1 -1
  20. package/lib/cjs/NoRenderApp.d.ts +1 -0
  21. package/lib/cjs/NoRenderApp.d.ts.map +1 -1
  22. package/lib/cjs/NoRenderApp.js +1 -0
  23. package/lib/cjs/NoRenderApp.js.map +1 -1
  24. package/lib/cjs/SheetViewState.d.ts +0 -1
  25. package/lib/cjs/SheetViewState.d.ts.map +1 -1
  26. package/lib/cjs/SheetViewState.js +0 -1
  27. package/lib/cjs/SheetViewState.js.map +1 -1
  28. package/lib/cjs/Viewport.d.ts +25 -1
  29. package/lib/cjs/Viewport.d.ts.map +1 -1
  30. package/lib/cjs/Viewport.js +20 -12
  31. package/lib/cjs/Viewport.js.map +1 -1
  32. package/lib/cjs/common/WorkerProxy.d.ts +8 -4
  33. package/lib/cjs/common/WorkerProxy.d.ts.map +1 -1
  34. package/lib/cjs/common/WorkerProxy.js.map +1 -1
  35. package/lib/cjs/common/imdl/ImdlModel.d.ts +3 -8
  36. package/lib/cjs/common/imdl/ImdlModel.d.ts.map +1 -1
  37. package/lib/cjs/common/imdl/ImdlModel.js.map +1 -1
  38. package/lib/cjs/common/internal/Symbols.d.ts +7 -0
  39. package/lib/cjs/common/internal/Symbols.d.ts.map +1 -1
  40. package/lib/cjs/common/internal/Symbols.js +8 -1
  41. package/lib/cjs/common/internal/Symbols.js.map +1 -1
  42. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts +15 -0
  43. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -0
  44. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js +95 -0
  45. package/lib/cjs/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -0
  46. package/lib/cjs/common/internal/render/LineCode.d.ts +9 -0
  47. package/lib/cjs/common/internal/render/LineCode.d.ts.map +1 -0
  48. package/lib/cjs/common/internal/render/LineCode.js +31 -0
  49. package/lib/cjs/common/internal/render/LineCode.js.map +1 -0
  50. package/lib/cjs/common/internal/render/OvrFlags.d.ts +27 -0
  51. package/lib/cjs/common/internal/render/OvrFlags.d.ts.map +1 -0
  52. package/lib/cjs/common/internal/render/OvrFlags.js +10 -0
  53. package/lib/cjs/common/internal/render/OvrFlags.js.map +1 -0
  54. package/lib/cjs/common/internal/render/VertexTable.d.ts.map +1 -1
  55. package/lib/cjs/common/internal/render/VertexTable.js +3 -5
  56. package/lib/cjs/common/internal/render/VertexTable.js.map +1 -1
  57. package/lib/cjs/common/render/InstancedGraphicParams.d.ts +25 -1
  58. package/lib/cjs/common/render/InstancedGraphicParams.d.ts.map +1 -1
  59. package/lib/cjs/common/render/InstancedGraphicParams.js +59 -0
  60. package/lib/cjs/common/render/InstancedGraphicParams.js.map +1 -1
  61. package/lib/cjs/common/render/RenderInstancesParams.d.ts +76 -0
  62. package/lib/cjs/common/render/RenderInstancesParams.d.ts.map +1 -0
  63. package/lib/cjs/common/render/RenderInstancesParams.js +33 -0
  64. package/lib/cjs/common/render/RenderInstancesParams.js.map +1 -0
  65. package/lib/cjs/common.d.ts +1 -0
  66. package/lib/cjs/common.d.ts.map +1 -1
  67. package/lib/cjs/common.js +1 -0
  68. package/lib/cjs/common.js.map +1 -1
  69. package/lib/cjs/core-frontend.d.ts +1 -0
  70. package/lib/cjs/core-frontend.d.ts.map +1 -1
  71. package/lib/cjs/core-frontend.js +1 -0
  72. package/lib/cjs/core-frontend.js.map +1 -1
  73. package/lib/cjs/internal/render/PrimitiveBuilder.d.ts +4 -1
  74. package/lib/cjs/internal/render/PrimitiveBuilder.d.ts.map +1 -1
  75. package/lib/cjs/internal/render/PrimitiveBuilder.js +82 -35
  76. package/lib/cjs/internal/render/PrimitiveBuilder.js.map +1 -1
  77. package/lib/cjs/internal/render/RenderGeometry.d.ts +20 -0
  78. package/lib/cjs/internal/render/RenderGeometry.d.ts.map +1 -0
  79. package/lib/cjs/internal/render/RenderGeometry.js +10 -0
  80. package/lib/cjs/internal/render/RenderGeometry.js.map +1 -0
  81. package/lib/cjs/internal/render/RenderInstancesParamsImpl.d.ts +24 -0
  82. package/lib/cjs/internal/render/RenderInstancesParamsImpl.d.ts.map +1 -0
  83. package/lib/cjs/internal/render/RenderInstancesParamsImpl.js +69 -0
  84. package/lib/cjs/internal/render/RenderInstancesParamsImpl.js.map +1 -0
  85. package/lib/cjs/render/GraphicBranch.d.ts +10 -1
  86. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  87. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  88. package/lib/cjs/render/GraphicBuilder.d.ts +17 -3
  89. package/lib/cjs/render/GraphicBuilder.d.ts.map +1 -1
  90. package/lib/cjs/render/GraphicBuilder.js +7 -1
  91. package/lib/cjs/render/GraphicBuilder.js.map +1 -1
  92. package/lib/cjs/render/GraphicTemplate.d.ts +76 -0
  93. package/lib/cjs/render/GraphicTemplate.d.ts.map +1 -0
  94. package/lib/cjs/render/GraphicTemplate.js +41 -0
  95. package/lib/cjs/render/GraphicTemplate.js.map +1 -0
  96. package/lib/cjs/render/MockRender.d.ts +12 -2
  97. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  98. package/lib/cjs/render/MockRender.js +19 -5
  99. package/lib/cjs/render/MockRender.js.map +1 -1
  100. package/lib/cjs/render/Pixel.d.ts +6 -0
  101. package/lib/cjs/render/Pixel.d.ts.map +1 -1
  102. package/lib/cjs/render/Pixel.js +2 -0
  103. package/lib/cjs/render/Pixel.js.map +1 -1
  104. package/lib/cjs/render/RealityMeshGraphicParams.d.ts +1 -0
  105. package/lib/cjs/render/RealityMeshGraphicParams.d.ts.map +1 -1
  106. package/lib/cjs/render/RealityMeshGraphicParams.js.map +1 -1
  107. package/lib/cjs/render/RenderMemory.d.ts +2 -0
  108. package/lib/cjs/render/RenderMemory.d.ts.map +1 -1
  109. package/lib/cjs/render/RenderMemory.js +2 -0
  110. package/lib/cjs/render/RenderMemory.js.map +1 -1
  111. package/lib/cjs/render/RenderPlan.d.ts +2 -1
  112. package/lib/cjs/render/RenderPlan.d.ts.map +1 -1
  113. package/lib/cjs/render/RenderPlan.js +2 -0
  114. package/lib/cjs/render/RenderPlan.js.map +1 -1
  115. package/lib/cjs/render/RenderSystem.d.ts +59 -11
  116. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  117. package/lib/cjs/render/RenderSystem.js +44 -6
  118. package/lib/cjs/render/RenderSystem.js.map +1 -1
  119. package/lib/cjs/render/RenderTarget.d.ts +1 -1
  120. package/lib/cjs/render/RenderTarget.d.ts.map +1 -1
  121. package/lib/cjs/render/RenderTarget.js.map +1 -1
  122. package/lib/cjs/render/webgl/BatchUniforms.d.ts +4 -0
  123. package/lib/cjs/render/webgl/BatchUniforms.d.ts.map +1 -1
  124. package/lib/cjs/render/webgl/BatchUniforms.js +18 -0
  125. package/lib/cjs/render/webgl/BatchUniforms.js.map +1 -1
  126. package/lib/cjs/render/webgl/BranchState.d.ts +7 -0
  127. package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
  128. package/lib/cjs/render/webgl/BranchState.js +4 -0
  129. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  130. package/lib/cjs/render/webgl/BranchUniforms.d.ts +1 -0
  131. package/lib/cjs/render/webgl/BranchUniforms.d.ts.map +1 -1
  132. package/lib/cjs/render/webgl/BranchUniforms.js +14 -1
  133. package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
  134. package/lib/cjs/render/webgl/ContourUniforms.d.ts +22 -0
  135. package/lib/cjs/render/webgl/ContourUniforms.d.ts.map +1 -0
  136. package/lib/cjs/render/webgl/ContourUniforms.js +98 -0
  137. package/lib/cjs/render/webgl/ContourUniforms.js.map +1 -0
  138. package/lib/cjs/render/webgl/Contours.d.ts +34 -0
  139. package/lib/cjs/render/webgl/Contours.d.ts.map +1 -0
  140. package/lib/cjs/render/webgl/Contours.js +127 -0
  141. package/lib/cjs/render/webgl/Contours.js.map +1 -0
  142. package/lib/cjs/render/webgl/EdgeSettings.d.ts +2 -1
  143. package/lib/cjs/render/webgl/EdgeSettings.d.ts.map +1 -1
  144. package/lib/cjs/render/webgl/EdgeSettings.js +1 -1
  145. package/lib/cjs/render/webgl/EdgeSettings.js.map +1 -1
  146. package/lib/cjs/render/webgl/FeatureOverrides.d.ts +2 -0
  147. package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
  148. package/lib/cjs/render/webgl/FeatureOverrides.js +83 -69
  149. package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
  150. package/lib/cjs/render/webgl/GL.d.ts +2 -1
  151. package/lib/cjs/render/webgl/GL.d.ts.map +1 -1
  152. package/lib/cjs/render/webgl/GL.js +1 -0
  153. package/lib/cjs/render/webgl/GL.js.map +1 -1
  154. package/lib/cjs/render/webgl/Graphic.d.ts +9 -0
  155. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  156. package/lib/cjs/render/webgl/Graphic.js +27 -0
  157. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  158. package/lib/cjs/render/webgl/InstancedGeometry.d.ts +40 -10
  159. package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
  160. package/lib/cjs/render/webgl/InstancedGeometry.js +99 -31
  161. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  162. package/lib/cjs/render/webgl/LineCode.d.ts.map +1 -1
  163. package/lib/cjs/render/webgl/LineCode.js +2 -14
  164. package/lib/cjs/render/webgl/LineCode.js.map +1 -1
  165. package/lib/cjs/render/webgl/Mesh.d.ts +9 -4
  166. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  167. package/lib/cjs/render/webgl/Mesh.js +18 -16
  168. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  169. package/lib/cjs/render/webgl/PointCloud.d.ts +5 -1
  170. package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
  171. package/lib/cjs/render/webgl/PointCloud.js +7 -2
  172. package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
  173. package/lib/cjs/render/webgl/PointString.d.ts +5 -1
  174. package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
  175. package/lib/cjs/render/webgl/PointString.js +8 -3
  176. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  177. package/lib/cjs/render/webgl/Polyline.d.ts +5 -1
  178. package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
  179. package/lib/cjs/render/webgl/Polyline.js +7 -2
  180. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  181. package/lib/cjs/render/webgl/Primitive.d.ts +1 -3
  182. package/lib/cjs/render/webgl/Primitive.d.ts.map +1 -1
  183. package/lib/cjs/render/webgl/Primitive.js +1 -6
  184. package/lib/cjs/render/webgl/Primitive.js.map +1 -1
  185. package/lib/cjs/render/webgl/RealityMesh.d.ts +5 -1
  186. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  187. package/lib/cjs/render/webgl/RealityMesh.js +7 -1
  188. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  189. package/lib/cjs/render/webgl/RenderFlags.d.ts +2 -19
  190. package/lib/cjs/render/webgl/RenderFlags.d.ts.map +1 -1
  191. package/lib/cjs/render/webgl/RenderFlags.js +2 -0
  192. package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
  193. package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
  194. package/lib/cjs/render/webgl/SceneCompositor.js +12 -3
  195. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  196. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +15 -13
  197. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  198. package/lib/cjs/render/webgl/ShaderBuilder.js +18 -10
  199. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  200. package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
  201. package/lib/cjs/render/webgl/ShaderProgram.js +26 -0
  202. package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
  203. package/lib/cjs/render/webgl/System.d.ts +11 -5
  204. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  205. package/lib/cjs/render/webgl/System.js +81 -13
  206. package/lib/cjs/render/webgl/System.js.map +1 -1
  207. package/lib/cjs/render/webgl/Target.d.ts +6 -2
  208. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  209. package/lib/cjs/render/webgl/Target.js +24 -1
  210. package/lib/cjs/render/webgl/Target.js.map +1 -1
  211. package/lib/cjs/render/webgl/TargetUniforms.d.ts +2 -0
  212. package/lib/cjs/render/webgl/TargetUniforms.d.ts.map +1 -1
  213. package/lib/cjs/render/webgl/TargetUniforms.js +2 -0
  214. package/lib/cjs/render/webgl/TargetUniforms.js.map +1 -1
  215. package/lib/cjs/render/webgl/Texture.d.ts +2 -1
  216. package/lib/cjs/render/webgl/Texture.d.ts.map +1 -1
  217. package/lib/cjs/render/webgl/Texture.js.map +1 -1
  218. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +1 -1
  219. package/lib/cjs/render/webgl/glsl/Atmosphere.js +1 -1
  220. package/lib/cjs/render/webgl/glsl/Blur.js +1 -1
  221. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +1 -1
  222. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +1 -1
  223. package/lib/cjs/render/webgl/glsl/Clipping.js +1 -1
  224. package/lib/cjs/render/webgl/glsl/Combine3Textures.js +1 -1
  225. package/lib/cjs/render/webgl/glsl/CombineTextures.js +1 -1
  226. package/lib/cjs/render/webgl/glsl/Composite.js +1 -1
  227. package/lib/cjs/render/webgl/glsl/Contours.d.ts +4 -0
  228. package/lib/cjs/render/webgl/glsl/Contours.d.ts.map +1 -0
  229. package/lib/cjs/render/webgl/glsl/Contours.js +138 -0
  230. package/lib/cjs/render/webgl/glsl/Contours.js.map +1 -0
  231. package/lib/cjs/render/webgl/glsl/CopyColor.js +1 -1
  232. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +1 -1
  233. package/lib/cjs/render/webgl/glsl/CopyStencil.js +5 -5
  234. package/lib/cjs/render/webgl/glsl/EDL.js +4 -4
  235. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +1 -1
  236. package/lib/cjs/render/webgl/glsl/Edge.js +1 -1
  237. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts +2 -1
  238. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  239. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +28 -15
  240. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  241. package/lib/cjs/render/webgl/glsl/Fragment.js +9 -9
  242. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  243. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +4 -4
  244. package/lib/cjs/render/webgl/glsl/PointCloud.js +1 -1
  245. package/lib/cjs/render/webgl/glsl/RealityMesh.js +3 -3
  246. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
  247. package/lib/cjs/render/webgl/glsl/SkyBox.js +1 -1
  248. package/lib/cjs/render/webgl/glsl/SkySphere.js +1 -1
  249. package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +1 -1
  250. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  251. package/lib/cjs/render/webgl/glsl/Surface.js +5 -3
  252. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  253. package/lib/cjs/render/webgl/glsl/Translucency.js +1 -1
  254. package/lib/cjs/render/webgl/glsl/Wiremesh.js +1 -1
  255. package/lib/cjs/tile/GltfReader.d.ts +27 -7
  256. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  257. package/lib/cjs/tile/GltfReader.js +84 -68
  258. package/lib/cjs/tile/GltfReader.js.map +1 -1
  259. package/lib/cjs/tile/ImdlGraphicsCreator.d.ts +4 -1
  260. package/lib/cjs/tile/ImdlGraphicsCreator.d.ts.map +1 -1
  261. package/lib/cjs/tile/ImdlGraphicsCreator.js +32 -22
  262. package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -1
  263. package/lib/cjs/tile/TileDrawArgs.d.ts +4 -0
  264. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  265. package/lib/cjs/tile/TileDrawArgs.js +2 -0
  266. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  267. package/lib/cjs/tile/TileTreeReference.d.ts +2 -0
  268. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  269. package/lib/cjs/tile/TileTreeReference.js +3 -0
  270. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  271. package/lib/cjs/tile/map/MapTile.js +1 -1
  272. package/lib/cjs/tile/map/MapTile.js.map +1 -1
  273. package/lib/esm/AccuSnap.d.ts.map +1 -1
  274. package/lib/esm/AccuSnap.js +9 -5
  275. package/lib/esm/AccuSnap.js.map +1 -1
  276. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  277. package/lib/esm/DisplayStyleState.js +5 -1
  278. package/lib/esm/DisplayStyleState.js.map +1 -1
  279. package/lib/esm/ElementLocateManager.d.ts +7 -1
  280. package/lib/esm/ElementLocateManager.d.ts.map +1 -1
  281. package/lib/esm/ElementLocateManager.js +34 -10
  282. package/lib/esm/ElementLocateManager.js.map +1 -1
  283. package/lib/esm/HitDetail.d.ts +4 -0
  284. package/lib/esm/HitDetail.d.ts.map +1 -1
  285. package/lib/esm/HitDetail.js +3 -0
  286. package/lib/esm/HitDetail.js.map +1 -1
  287. package/lib/esm/IModelConnection.d.ts +1 -0
  288. package/lib/esm/IModelConnection.d.ts.map +1 -1
  289. package/lib/esm/IModelConnection.js +2 -1
  290. package/lib/esm/IModelConnection.js.map +1 -1
  291. package/lib/esm/NoRenderApp.d.ts +1 -0
  292. package/lib/esm/NoRenderApp.d.ts.map +1 -1
  293. package/lib/esm/NoRenderApp.js +1 -0
  294. package/lib/esm/NoRenderApp.js.map +1 -1
  295. package/lib/esm/SheetViewState.d.ts +0 -1
  296. package/lib/esm/SheetViewState.d.ts.map +1 -1
  297. package/lib/esm/SheetViewState.js +0 -1
  298. package/lib/esm/SheetViewState.js.map +1 -1
  299. package/lib/esm/Viewport.d.ts +25 -1
  300. package/lib/esm/Viewport.d.ts.map +1 -1
  301. package/lib/esm/Viewport.js +20 -12
  302. package/lib/esm/Viewport.js.map +1 -1
  303. package/lib/esm/common/WorkerProxy.d.ts +8 -4
  304. package/lib/esm/common/WorkerProxy.d.ts.map +1 -1
  305. package/lib/esm/common/WorkerProxy.js.map +1 -1
  306. package/lib/esm/common/imdl/ImdlModel.d.ts +3 -8
  307. package/lib/esm/common/imdl/ImdlModel.d.ts.map +1 -1
  308. package/lib/esm/common/imdl/ImdlModel.js.map +1 -1
  309. package/lib/esm/common/internal/Symbols.d.ts +7 -0
  310. package/lib/esm/common/internal/Symbols.d.ts.map +1 -1
  311. package/lib/esm/common/internal/Symbols.js +7 -0
  312. package/lib/esm/common/internal/Symbols.js.map +1 -1
  313. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts +15 -0
  314. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.d.ts.map +1 -0
  315. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js +91 -0
  316. package/lib/esm/common/internal/render/InstancedGraphicPropsBuilder.js.map +1 -0
  317. package/lib/esm/common/internal/render/LineCode.d.ts +9 -0
  318. package/lib/esm/common/internal/render/LineCode.d.ts.map +1 -0
  319. package/lib/esm/common/internal/render/LineCode.js +27 -0
  320. package/lib/esm/common/internal/render/LineCode.js.map +1 -0
  321. package/lib/esm/common/internal/render/OvrFlags.d.ts +27 -0
  322. package/lib/esm/common/internal/render/OvrFlags.d.ts.map +1 -0
  323. package/lib/esm/common/internal/render/OvrFlags.js +9 -0
  324. package/lib/esm/common/internal/render/OvrFlags.js.map +1 -0
  325. package/lib/esm/common/internal/render/VertexTable.d.ts.map +1 -1
  326. package/lib/esm/common/internal/render/VertexTable.js +3 -5
  327. package/lib/esm/common/internal/render/VertexTable.js.map +1 -1
  328. package/lib/esm/common/render/InstancedGraphicParams.d.ts +25 -1
  329. package/lib/esm/common/render/InstancedGraphicParams.d.ts.map +1 -1
  330. package/lib/esm/common/render/InstancedGraphicParams.js +58 -1
  331. package/lib/esm/common/render/InstancedGraphicParams.js.map +1 -1
  332. package/lib/esm/common/render/RenderInstancesParams.d.ts +76 -0
  333. package/lib/esm/common/render/RenderInstancesParams.d.ts.map +1 -0
  334. package/lib/esm/common/render/RenderInstancesParams.js +30 -0
  335. package/lib/esm/common/render/RenderInstancesParams.js.map +1 -0
  336. package/lib/esm/common.d.ts +1 -0
  337. package/lib/esm/common.d.ts.map +1 -1
  338. package/lib/esm/common.js +1 -0
  339. package/lib/esm/common.js.map +1 -1
  340. package/lib/esm/core-frontend.d.ts +1 -0
  341. package/lib/esm/core-frontend.d.ts.map +1 -1
  342. package/lib/esm/core-frontend.js +1 -0
  343. package/lib/esm/core-frontend.js.map +1 -1
  344. package/lib/esm/internal/render/PrimitiveBuilder.d.ts +4 -1
  345. package/lib/esm/internal/render/PrimitiveBuilder.d.ts.map +1 -1
  346. package/lib/esm/internal/render/PrimitiveBuilder.js +82 -35
  347. package/lib/esm/internal/render/PrimitiveBuilder.js.map +1 -1
  348. package/lib/esm/internal/render/RenderGeometry.d.ts +20 -0
  349. package/lib/esm/internal/render/RenderGeometry.d.ts.map +1 -0
  350. package/lib/esm/internal/render/RenderGeometry.js +9 -0
  351. package/lib/esm/internal/render/RenderGeometry.js.map +1 -0
  352. package/lib/esm/internal/render/RenderInstancesParamsImpl.d.ts +24 -0
  353. package/lib/esm/internal/render/RenderInstancesParamsImpl.d.ts.map +1 -0
  354. package/lib/esm/internal/render/RenderInstancesParamsImpl.js +64 -0
  355. package/lib/esm/internal/render/RenderInstancesParamsImpl.js.map +1 -0
  356. package/lib/esm/render/GraphicBranch.d.ts +10 -1
  357. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  358. package/lib/esm/render/GraphicBranch.js.map +1 -1
  359. package/lib/esm/render/GraphicBuilder.d.ts +17 -3
  360. package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
  361. package/lib/esm/render/GraphicBuilder.js +7 -1
  362. package/lib/esm/render/GraphicBuilder.js.map +1 -1
  363. package/lib/esm/render/GraphicTemplate.d.ts +76 -0
  364. package/lib/esm/render/GraphicTemplate.d.ts.map +1 -0
  365. package/lib/esm/render/GraphicTemplate.js +37 -0
  366. package/lib/esm/render/GraphicTemplate.js.map +1 -0
  367. package/lib/esm/render/MockRender.d.ts +12 -2
  368. package/lib/esm/render/MockRender.d.ts.map +1 -1
  369. package/lib/esm/render/MockRender.js +19 -5
  370. package/lib/esm/render/MockRender.js.map +1 -1
  371. package/lib/esm/render/Pixel.d.ts +6 -0
  372. package/lib/esm/render/Pixel.d.ts.map +1 -1
  373. package/lib/esm/render/Pixel.js +2 -0
  374. package/lib/esm/render/Pixel.js.map +1 -1
  375. package/lib/esm/render/RealityMeshGraphicParams.d.ts +1 -0
  376. package/lib/esm/render/RealityMeshGraphicParams.d.ts.map +1 -1
  377. package/lib/esm/render/RealityMeshGraphicParams.js.map +1 -1
  378. package/lib/esm/render/RenderMemory.d.ts +2 -0
  379. package/lib/esm/render/RenderMemory.d.ts.map +1 -1
  380. package/lib/esm/render/RenderMemory.js +2 -0
  381. package/lib/esm/render/RenderMemory.js.map +1 -1
  382. package/lib/esm/render/RenderPlan.d.ts +2 -1
  383. package/lib/esm/render/RenderPlan.d.ts.map +1 -1
  384. package/lib/esm/render/RenderPlan.js +2 -0
  385. package/lib/esm/render/RenderPlan.js.map +1 -1
  386. package/lib/esm/render/RenderSystem.d.ts +59 -11
  387. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  388. package/lib/esm/render/RenderSystem.js +46 -8
  389. package/lib/esm/render/RenderSystem.js.map +1 -1
  390. package/lib/esm/render/RenderTarget.d.ts +1 -1
  391. package/lib/esm/render/RenderTarget.d.ts.map +1 -1
  392. package/lib/esm/render/RenderTarget.js.map +1 -1
  393. package/lib/esm/render/webgl/BatchUniforms.d.ts +4 -0
  394. package/lib/esm/render/webgl/BatchUniforms.d.ts.map +1 -1
  395. package/lib/esm/render/webgl/BatchUniforms.js +18 -0
  396. package/lib/esm/render/webgl/BatchUniforms.js.map +1 -1
  397. package/lib/esm/render/webgl/BranchState.d.ts +7 -0
  398. package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
  399. package/lib/esm/render/webgl/BranchState.js +4 -0
  400. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  401. package/lib/esm/render/webgl/BranchUniforms.d.ts +1 -0
  402. package/lib/esm/render/webgl/BranchUniforms.d.ts.map +1 -1
  403. package/lib/esm/render/webgl/BranchUniforms.js +14 -1
  404. package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
  405. package/lib/esm/render/webgl/ContourUniforms.d.ts +22 -0
  406. package/lib/esm/render/webgl/ContourUniforms.d.ts.map +1 -0
  407. package/lib/esm/render/webgl/ContourUniforms.js +94 -0
  408. package/lib/esm/render/webgl/ContourUniforms.js.map +1 -0
  409. package/lib/esm/render/webgl/Contours.d.ts +34 -0
  410. package/lib/esm/render/webgl/Contours.d.ts.map +1 -0
  411. package/lib/esm/render/webgl/Contours.js +123 -0
  412. package/lib/esm/render/webgl/Contours.js.map +1 -0
  413. package/lib/esm/render/webgl/EdgeSettings.d.ts +2 -1
  414. package/lib/esm/render/webgl/EdgeSettings.d.ts.map +1 -1
  415. package/lib/esm/render/webgl/EdgeSettings.js +1 -1
  416. package/lib/esm/render/webgl/EdgeSettings.js.map +1 -1
  417. package/lib/esm/render/webgl/FeatureOverrides.d.ts +2 -0
  418. package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
  419. package/lib/esm/render/webgl/FeatureOverrides.js +83 -69
  420. package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
  421. package/lib/esm/render/webgl/GL.d.ts +2 -1
  422. package/lib/esm/render/webgl/GL.d.ts.map +1 -1
  423. package/lib/esm/render/webgl/GL.js +1 -0
  424. package/lib/esm/render/webgl/GL.js.map +1 -1
  425. package/lib/esm/render/webgl/Graphic.d.ts +9 -0
  426. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  427. package/lib/esm/render/webgl/Graphic.js +27 -0
  428. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  429. package/lib/esm/render/webgl/InstancedGeometry.d.ts +40 -10
  430. package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
  431. package/lib/esm/render/webgl/InstancedGeometry.js +97 -30
  432. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  433. package/lib/esm/render/webgl/LineCode.d.ts.map +1 -1
  434. package/lib/esm/render/webgl/LineCode.js +2 -14
  435. package/lib/esm/render/webgl/LineCode.js.map +1 -1
  436. package/lib/esm/render/webgl/Mesh.d.ts +9 -4
  437. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  438. package/lib/esm/render/webgl/Mesh.js +19 -17
  439. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  440. package/lib/esm/render/webgl/PointCloud.d.ts +5 -1
  441. package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
  442. package/lib/esm/render/webgl/PointCloud.js +7 -2
  443. package/lib/esm/render/webgl/PointCloud.js.map +1 -1
  444. package/lib/esm/render/webgl/PointString.d.ts +5 -1
  445. package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
  446. package/lib/esm/render/webgl/PointString.js +8 -3
  447. package/lib/esm/render/webgl/PointString.js.map +1 -1
  448. package/lib/esm/render/webgl/Polyline.d.ts +5 -1
  449. package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
  450. package/lib/esm/render/webgl/Polyline.js +7 -2
  451. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  452. package/lib/esm/render/webgl/Primitive.d.ts +1 -3
  453. package/lib/esm/render/webgl/Primitive.d.ts.map +1 -1
  454. package/lib/esm/render/webgl/Primitive.js +2 -7
  455. package/lib/esm/render/webgl/Primitive.js.map +1 -1
  456. package/lib/esm/render/webgl/RealityMesh.d.ts +5 -1
  457. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  458. package/lib/esm/render/webgl/RealityMesh.js +7 -1
  459. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  460. package/lib/esm/render/webgl/RenderFlags.d.ts +2 -19
  461. package/lib/esm/render/webgl/RenderFlags.d.ts.map +1 -1
  462. package/lib/esm/render/webgl/RenderFlags.js +2 -0
  463. package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
  464. package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
  465. package/lib/esm/render/webgl/SceneCompositor.js +12 -3
  466. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  467. package/lib/esm/render/webgl/ShaderBuilder.d.ts +15 -13
  468. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  469. package/lib/esm/render/webgl/ShaderBuilder.js +18 -10
  470. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  471. package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
  472. package/lib/esm/render/webgl/ShaderProgram.js +26 -0
  473. package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
  474. package/lib/esm/render/webgl/System.d.ts +11 -5
  475. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  476. package/lib/esm/render/webgl/System.js +82 -14
  477. package/lib/esm/render/webgl/System.js.map +1 -1
  478. package/lib/esm/render/webgl/Target.d.ts +6 -2
  479. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  480. package/lib/esm/render/webgl/Target.js +24 -1
  481. package/lib/esm/render/webgl/Target.js.map +1 -1
  482. package/lib/esm/render/webgl/TargetUniforms.d.ts +2 -0
  483. package/lib/esm/render/webgl/TargetUniforms.d.ts.map +1 -1
  484. package/lib/esm/render/webgl/TargetUniforms.js +2 -0
  485. package/lib/esm/render/webgl/TargetUniforms.js.map +1 -1
  486. package/lib/esm/render/webgl/Texture.d.ts +2 -1
  487. package/lib/esm/render/webgl/Texture.d.ts.map +1 -1
  488. package/lib/esm/render/webgl/Texture.js.map +1 -1
  489. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +1 -1
  490. package/lib/esm/render/webgl/glsl/Atmosphere.js +1 -1
  491. package/lib/esm/render/webgl/glsl/Blur.js +1 -1
  492. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +1 -1
  493. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +1 -1
  494. package/lib/esm/render/webgl/glsl/Clipping.js +1 -1
  495. package/lib/esm/render/webgl/glsl/Combine3Textures.js +1 -1
  496. package/lib/esm/render/webgl/glsl/CombineTextures.js +1 -1
  497. package/lib/esm/render/webgl/glsl/Composite.js +1 -1
  498. package/lib/esm/render/webgl/glsl/Contours.d.ts +4 -0
  499. package/lib/esm/render/webgl/glsl/Contours.d.ts.map +1 -0
  500. package/lib/esm/render/webgl/glsl/Contours.js +134 -0
  501. package/lib/esm/render/webgl/glsl/Contours.js.map +1 -0
  502. package/lib/esm/render/webgl/glsl/CopyColor.js +1 -1
  503. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +1 -1
  504. package/lib/esm/render/webgl/glsl/CopyStencil.js +5 -5
  505. package/lib/esm/render/webgl/glsl/EDL.js +4 -4
  506. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +1 -1
  507. package/lib/esm/render/webgl/glsl/Edge.js +1 -1
  508. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts +2 -1
  509. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  510. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +27 -15
  511. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  512. package/lib/esm/render/webgl/glsl/Fragment.js +9 -9
  513. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  514. package/lib/esm/render/webgl/glsl/PlanarClassification.js +4 -4
  515. package/lib/esm/render/webgl/glsl/PointCloud.js +1 -1
  516. package/lib/esm/render/webgl/glsl/RealityMesh.js +3 -3
  517. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
  518. package/lib/esm/render/webgl/glsl/SkyBox.js +1 -1
  519. package/lib/esm/render/webgl/glsl/SkySphere.js +1 -1
  520. package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +1 -1
  521. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  522. package/lib/esm/render/webgl/glsl/Surface.js +5 -3
  523. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  524. package/lib/esm/render/webgl/glsl/Translucency.js +1 -1
  525. package/lib/esm/render/webgl/glsl/Wiremesh.js +1 -1
  526. package/lib/esm/tile/GltfReader.d.ts +27 -7
  527. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  528. package/lib/esm/tile/GltfReader.js +82 -67
  529. package/lib/esm/tile/GltfReader.js.map +1 -1
  530. package/lib/esm/tile/ImdlGraphicsCreator.d.ts +4 -1
  531. package/lib/esm/tile/ImdlGraphicsCreator.d.ts.map +1 -1
  532. package/lib/esm/tile/ImdlGraphicsCreator.js +31 -22
  533. package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -1
  534. package/lib/esm/tile/TileDrawArgs.d.ts +4 -0
  535. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  536. package/lib/esm/tile/TileDrawArgs.js +2 -0
  537. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  538. package/lib/esm/tile/TileTreeReference.d.ts +2 -0
  539. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  540. package/lib/esm/tile/TileTreeReference.js +3 -0
  541. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  542. package/lib/esm/tile/map/MapTile.js +1 -1
  543. package/lib/esm/tile/map/MapTile.js.map +1 -1
  544. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  545. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  546. package/package.json +18 -18
@@ -139,6 +139,32 @@ class ShaderProgram {
139
139
  const msg = `Shader program failed to link. Link errors: ${linkLog} Validation errors: ${validateLog} Program description: ${this.description}`;
140
140
  throw new Error(msg);
141
141
  }
142
+ // Debug output
143
+ const debugUniforms = false;
144
+ if (debugUniforms) {
145
+ const dbgLog = (x) => console.log(x); // eslint-disable-line no-console
146
+ const outSrc = false; // true for source out, false for just varying info
147
+ if (this._fragDescription) {
148
+ let tStr = "";
149
+ if (!outSrc) {
150
+ tStr = `${this._fragDescription}`;
151
+ }
152
+ const numUniforms = gl.getProgramParameter(this._glProgram, GL_1.GL.ProgramParameter.ActiveUniforms);
153
+ const tStr2 = `Active Uniforms: ${numUniforms}`;
154
+ if (tStr2) {
155
+ if (outSrc) {
156
+ dbgLog("//===============================================================================================================");
157
+ dbgLog(this.vertSource);
158
+ dbgLog("//========= Num Active Uniforms =========");
159
+ dbgLog(`${tStr2}\n`);
160
+ dbgLog(this.fragSource);
161
+ }
162
+ else {
163
+ dbgLog(`\n${tStr2} ${tStr}\n`);
164
+ }
165
+ }
166
+ }
167
+ }
142
168
  return true;
143
169
  }
144
170
  compile(forUse = false) {
@@ -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"]}
@@ -22,7 +22,7 @@ import { RenderGraphic, RenderGraphicOwner } from "../RenderGraphic";
22
22
  import { CreateRenderMaterialArgs } from "../CreateRenderMaterialArgs";
23
23
  import { RenderMemory } from "../RenderMemory";
24
24
  import { RealityMeshParams } from "../RealityMeshParams";
25
- import { DebugShaderFile, GLTimerResultCallback, PlanarGridProps, RenderAreaPattern, RenderDiagnostics, RenderGeometry, RenderSkyBoxParams, RenderSystem, RenderSystemDebugControl } from "../RenderSystem";
25
+ import { CreateGraphicFromTemplateArgs, DebugShaderFile, GLTimerResultCallback, PlanarGridProps, RenderAreaPattern, RenderDiagnostics, RenderInstances, RenderSkyBoxParams, RenderSystem, RenderSystemDebugControl } from "../RenderSystem";
26
26
  import { RenderTarget } from "../RenderTarget";
27
27
  import { CreateTextureArgs, CreateTextureFromSourceArgs } from "../CreateTextureArgs";
28
28
  import { ScreenSpaceEffectBuilder, ScreenSpaceEffectBuilderParams } from "../ScreenSpaceEffectBuilder";
@@ -31,9 +31,10 @@ import { WebGLDisposable } from "./Disposable";
31
31
  import { DepthBuffer, FrameBufferStack } from "./FrameBuffer";
32
32
  import { GL } from "./GL";
33
33
  import { GLTimer } from "./GLTimer";
34
- import { PatternBuffers } from "./InstancedGeometry";
34
+ import { InstanceBuffers, PatternBuffers } from "./InstancedGeometry";
35
35
  import { Layer, LayerContainer } from "./Layer";
36
36
  import { MeshRenderGeometry } from "./Mesh";
37
+ import { PointCloudGeometry } from "./PointCloud";
37
38
  import { PointStringGeometry } from "./PointString";
38
39
  import { PolylineGeometry } from "./Polyline";
39
40
  import { RealityMeshGeometry } from "./RealityMesh";
@@ -44,6 +45,8 @@ import { Techniques } from "./Technique";
44
45
  import { TextureHandle } from "./Texture";
45
46
  import { UniformHandle } from "./UniformHandle";
46
47
  import { BatchOptions } from "../../common/render/BatchOptions";
48
+ import { RenderGeometry } from "../../internal/render/RenderGeometry";
49
+ import { RenderInstancesParams } from "../../common/render/RenderInstancesParams";
47
50
  /** @internal */
48
51
  export declare const enum ContextState {
49
52
  Uninitialized = 0,
@@ -136,13 +139,16 @@ export declare class System extends RenderSystem implements RenderSystemDebugCon
136
139
  createPlanarGrid(frustum: Frustum, grid: PlanarGridProps): RenderGraphic | undefined;
137
140
  createTerrainMesh(params: RealityMeshParams, transform?: Transform, disableTextureDisposal?: boolean): RealityMeshGeometry | undefined;
138
141
  createRealityMeshGraphic(params: RealityMeshGraphicParams, disableTextureDisposal?: boolean): RenderGraphic | undefined;
139
- createRealityMesh(realityMesh: RealityMeshParams, disableTextureDisposal?: boolean): RenderGraphic | undefined;
142
+ createRealityMeshGeometry(realityMesh: RealityMeshParams, disableTextureDisposal?: boolean): RealityMeshGeometry | undefined;
140
143
  createMeshGeometry(params: MeshParams, viOrigin?: Point3d): MeshRenderGeometry | undefined;
141
144
  createPolylineGeometry(params: PolylineParams, viOrigin?: Point3d): PolylineGeometry | undefined;
142
145
  createPointStringGeometry(params: PointStringParams, viOrigin?: Point3d): PointStringGeometry | undefined;
143
146
  createAreaPattern(params: PatternGraphicParams): PatternBuffers | undefined;
144
- createRenderGraphic(geometry: RenderGeometry, instances?: InstancedGraphicParams | RenderAreaPattern): RenderGraphic | undefined;
145
- createPointCloud(args: PointCloudArgs): RenderGraphic | undefined;
147
+ createRenderInstances(params: RenderInstancesParams): RenderInstances | undefined;
148
+ private createInstancedGraphic;
149
+ createGraphicFromTemplate(args: CreateGraphicFromTemplateArgs): RenderGraphic;
150
+ createRenderGraphic(geometry: RenderGeometry, instances?: InstancedGraphicParams | RenderAreaPattern | InstanceBuffers): RenderGraphic | undefined;
151
+ createPointCloudGeometry(args: PointCloudArgs): PointCloudGeometry;
146
152
  createGraphicList(primitives: RenderGraphic[]): RenderGraphic;
147
153
  createGraphicBranch(branch: GraphicBranch, transform: Transform, options?: GraphicBranchOptions): RenderGraphic;
148
154
  createAnimationTransformNode(graphic: RenderGraphic, nodeId: number): RenderGraphic;
@@ -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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"}
@@ -10,10 +10,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.System = exports.IdMap = void 0;
11
11
  const core_bentley_1 = require("@itwin/core-bentley");
12
12
  const core_common_1 = require("@itwin/core-common");
13
+ const core_geometry_1 = require("@itwin/core-geometry");
13
14
  const webgl_compatibility_1 = require("@itwin/webgl-compatibility");
14
15
  const IModelApp_1 = require("../../IModelApp");
15
16
  const IModelConnection_1 = require("../../IModelConnection");
16
17
  const ImageUtil_1 = require("../../common/ImageUtil");
18
+ const GraphicBranch_1 = require("../GraphicBranch");
17
19
  const PrimitiveBuilder_1 = require("../../internal/render/PrimitiveBuilder");
18
20
  const RenderSystem_1 = require("../RenderSystem");
19
21
  const BackgroundMapDrape_1 = require("./BackgroundMapDrape");
@@ -42,6 +44,7 @@ const ScreenSpaceEffect_1 = require("./ScreenSpaceEffect");
42
44
  const Target_1 = require("./Target");
43
45
  const Technique_1 = require("./Technique");
44
46
  const Texture_1 = require("./Texture");
47
+ const Symbols_1 = require("../../common/internal/Symbols");
45
48
  /** Id map holds key value pairs for both materials and textures, useful for caching such objects.
46
49
  * @internal
47
50
  */
@@ -327,9 +330,8 @@ class System extends RenderSystem_1.RenderSystem {
327
330
  createRealityMeshGraphic(params, disableTextureDisposal = false) {
328
331
  return RealityMesh_1.RealityMeshGeometry.createGraphic(this, params, disableTextureDisposal);
329
332
  }
330
- createRealityMesh(realityMesh, disableTextureDisposal = false) {
331
- const geom = RealityMesh_1.RealityMeshGeometry.createFromRealityMesh(realityMesh, disableTextureDisposal);
332
- return geom ? Primitive_1.Primitive.create(geom) : undefined;
333
+ createRealityMeshGeometry(realityMesh, disableTextureDisposal = false) {
334
+ return RealityMesh_1.RealityMeshGeometry.createFromRealityMesh(realityMesh, disableTextureDisposal);
333
335
  }
334
336
  createMeshGeometry(params, viOrigin) {
335
337
  return Mesh_1.MeshRenderGeometry.create(params, viOrigin);
@@ -343,21 +345,87 @@ class System extends RenderSystem_1.RenderSystem {
343
345
  createAreaPattern(params) {
344
346
  return InstancedGeometry_1.PatternBuffers.create(params);
345
347
  }
348
+ createRenderInstances(params) {
349
+ return InstancedGeometry_1.RenderInstancesImpl.create(params);
350
+ }
351
+ createInstancedGraphic(geometry, instances) {
352
+ const geom = geometry;
353
+ return this.createRenderGraphic(geom, InstancedGeometry_1.InstanceBuffers.fromRenderInstances(instances, geom.computeRange()));
354
+ }
355
+ createGraphicFromTemplate(args) {
356
+ const template = args.template;
357
+ const instances = args.instances;
358
+ if (instances && !template.isInstanceable) {
359
+ throw new Error("GraphicTemplate is not instanceable");
360
+ }
361
+ const graphics = [];
362
+ for (const node of template[Symbols_1._nodes]) {
363
+ const nodeGraphics = [];
364
+ for (const geometry of node.geometry) {
365
+ const gf = instances ? this.createInstancedGraphic(geometry, instances) : this.createRenderGraphic(geometry);
366
+ if (gf) {
367
+ nodeGraphics.push(gf);
368
+ }
369
+ }
370
+ if (nodeGraphics.length === 0) {
371
+ continue;
372
+ }
373
+ if (node.transform) {
374
+ const branch = new GraphicBranch_1.GraphicBranch();
375
+ for (const gf of nodeGraphics) {
376
+ branch.add(gf);
377
+ }
378
+ graphics.push(this.createGraphicBranch(branch, node.transform));
379
+ }
380
+ else {
381
+ graphics.push(this.createGraphicList(nodeGraphics));
382
+ }
383
+ }
384
+ let graphic = this.createGraphicList(graphics);
385
+ if (instances && instances[Symbols_1._featureTable]) {
386
+ const range = new core_geometry_1.Range3d();
387
+ graphic.unionRange(range);
388
+ graphic = this.createBatch(graphic, instances[Symbols_1._featureTable], range);
389
+ }
390
+ else if (template[Symbols_1._batch]) {
391
+ graphic = this.createBatch(graphic, template[Symbols_1._batch].featureTable, template[Symbols_1._batch].range, template[Symbols_1._batch].options);
392
+ }
393
+ const templateBranch = template[Symbols_1._branch];
394
+ if (templateBranch) {
395
+ const branch = new GraphicBranch_1.GraphicBranch(true);
396
+ if (templateBranch.viewFlagOverrides) {
397
+ branch.setViewFlagOverrides(templateBranch.viewFlagOverrides);
398
+ }
399
+ branch.add(graphic);
400
+ graphic = this.createBranch(branch, templateBranch.transform ?? core_geometry_1.Transform.createIdentity());
401
+ }
402
+ return graphic;
403
+ }
346
404
  createRenderGraphic(geometry, instances) {
347
- if (!(geometry instanceof Mesh_1.MeshRenderGeometry)) {
348
- if (geometry instanceof Polyline_1.PolylineGeometry || geometry instanceof PointString_1.PointStringGeometry)
349
- return Primitive_1.Primitive.create(geometry, instances);
350
- (0, core_bentley_1.assert)(false, "Invalid RenderGeometry for System.createRenderGraphic");
351
- return undefined;
405
+ const geom = geometry;
406
+ let buffers;
407
+ if (instances) {
408
+ if (!geometry.isInstanceable) {
409
+ throw new Error("RenderGeometry is not instanceable");
410
+ }
411
+ if (instances instanceof InstancedGeometry_1.PatternBuffers || instances instanceof InstancedGeometry_1.InstanceBuffers) {
412
+ buffers = instances;
413
+ }
414
+ else {
415
+ (0, core_bentley_1.assert)((0, InstancedGeometry_1.isInstancedGraphicParams)(instances));
416
+ buffers = InstancedGeometry_1.InstanceBuffers.fromParams(instances, () => geom.computeRange());
417
+ if (!buffers) {
418
+ return undefined;
419
+ }
420
+ }
352
421
  }
353
- (0, core_bentley_1.assert)(!instances || instances instanceof InstancedGeometry_1.PatternBuffers || (0, InstancedGeometry_1.isInstancedGraphicParams)(instances));
354
- return Mesh_1.MeshGraphic.create(geometry, instances);
422
+ return geom.renderGeometryType === "mesh" ? Mesh_1.MeshGraphic.create(geom, buffers) : Primitive_1.Primitive.create(geom, buffers);
355
423
  }
356
- createPointCloud(args) {
357
- return Primitive_1.Primitive.create(new PointCloud_1.PointCloudGeometry(args));
424
+ createPointCloudGeometry(args) {
425
+ return new PointCloud_1.PointCloudGeometry(args);
358
426
  }
359
427
  createGraphicList(primitives) {
360
- return new Graphic_1.GraphicsArray(primitives);
428
+ return primitives.length === 1 ? primitives[0] : new Graphic_1.GraphicsArray(primitives);
361
429
  }
362
430
  createGraphicBranch(branch, transform, options) {
363
431
  return new Graphic_1.Branch(branch, transform, undefined, options);