@itwin/core-frontend 3.0.0-dev.133 → 3.0.0-dev.138

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 (249) hide show
  1. package/lib/cjs/IModelApp.d.ts +4 -4
  2. package/lib/cjs/IModelApp.js +6 -6
  3. package/lib/cjs/IModelApp.js.map +1 -1
  4. package/lib/cjs/IModelConnection.d.ts +1 -1
  5. package/lib/cjs/IModelConnection.js +1 -1
  6. package/lib/cjs/IModelConnection.js.map +1 -1
  7. package/lib/cjs/IModeljs-css.js +1 -1
  8. package/lib/cjs/IModeljs-css.js.map +1 -1
  9. package/lib/cjs/LocalhostIpcApp.d.ts +2 -1
  10. package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
  11. package/lib/cjs/LocalhostIpcApp.js +21 -7
  12. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  13. package/lib/cjs/SheetViewState.js +2 -0
  14. package/lib/cjs/SheetViewState.js.map +1 -1
  15. package/lib/cjs/Viewport.d.ts +1 -1
  16. package/lib/cjs/Viewport.js +1 -1
  17. package/lib/cjs/Viewport.js.map +1 -1
  18. package/lib/cjs/core-frontend.d.ts +1 -1
  19. package/lib/cjs/core-frontend.js +1 -1
  20. package/lib/cjs/core-frontend.js.map +1 -1
  21. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts +3 -2
  22. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  23. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js +3 -2
  24. package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  25. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts +5 -1
  26. package/lib/cjs/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  27. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js +20 -5
  28. package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  29. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts +26 -3
  30. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  31. package/lib/cjs/quantity-formatting/QuantityFormatter.js +46 -7
  32. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  33. package/lib/cjs/render/RenderSystem.d.ts +0 -2
  34. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  35. package/lib/cjs/render/RenderSystem.js.map +1 -1
  36. package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
  37. package/lib/cjs/render/webgl/DrawCommand.js +3 -1
  38. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  39. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  40. package/lib/cjs/render/webgl/Mesh.js +1 -2
  41. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  42. package/lib/cjs/render/webgl/PlanarClassifier.d.ts.map +1 -1
  43. package/lib/cjs/render/webgl/PlanarClassifier.js +1 -0
  44. package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
  45. package/lib/cjs/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  46. package/lib/cjs/render/webgl/PlanarTextureProjection.js +1 -0
  47. package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
  48. package/lib/cjs/render/webgl/SceneCompositor.js +1 -0
  49. package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
  50. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +8 -7
  51. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  52. package/lib/cjs/render/webgl/ShaderBuilder.js +20 -18
  53. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  54. package/lib/cjs/render/webgl/SolarShadowMap.d.ts.map +1 -1
  55. package/lib/cjs/render/webgl/SolarShadowMap.js +1 -0
  56. package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
  57. package/lib/cjs/render/webgl/System.d.ts +0 -3
  58. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  59. package/lib/cjs/render/webgl/System.js +0 -3
  60. package/lib/cjs/render/webgl/System.js.map +1 -1
  61. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  62. package/lib/cjs/render/webgl/Target.js +5 -0
  63. package/lib/cjs/render/webgl/Target.js.map +1 -1
  64. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  65. package/lib/cjs/render/webgl/Technique.js +74 -29
  66. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  67. package/lib/cjs/render/webgl/TechniqueFlags.d.ts +7 -1
  68. package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
  69. package/lib/cjs/render/webgl/TechniqueFlags.js +10 -1
  70. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  71. package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +1 -1
  72. package/lib/cjs/render/webgl/glsl/Blur.js +1 -1
  73. package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +2 -2
  74. package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +2 -2
  75. package/lib/cjs/render/webgl/glsl/Combine3Textures.js +1 -1
  76. package/lib/cjs/render/webgl/glsl/CombineTextures.js +1 -1
  77. package/lib/cjs/render/webgl/glsl/Composite.js +1 -1
  78. package/lib/cjs/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  79. package/lib/cjs/render/webgl/glsl/CopyColor.js +17 -2
  80. package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
  81. package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +2 -2
  82. package/lib/cjs/render/webgl/glsl/CopyStencil.js +6 -6
  83. package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +1 -1
  84. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +2 -2
  85. package/lib/cjs/render/webgl/glsl/Fragment.js +10 -10
  86. package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  87. package/lib/cjs/render/webgl/glsl/PlanarClassification.js +3 -3
  88. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  89. package/lib/cjs/render/webgl/glsl/RealityMesh.js +5 -2
  90. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  91. package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
  92. package/lib/cjs/render/webgl/glsl/SkyBox.js +1 -1
  93. package/lib/cjs/render/webgl/glsl/SkySphere.js +1 -1
  94. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  95. package/lib/cjs/render/webgl/glsl/Surface.js +5 -2
  96. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  97. package/lib/cjs/render/webgl/glsl/Translucency.js +2 -2
  98. package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts +9 -0
  99. package/lib/cjs/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
  100. package/lib/cjs/render/webgl/glsl/Wiremesh.js +40 -0
  101. package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -0
  102. package/lib/cjs/tile/B3dmReader.d.ts +1 -1
  103. package/lib/cjs/tile/B3dmReader.d.ts.map +1 -1
  104. package/lib/cjs/tile/B3dmReader.js +4 -4
  105. package/lib/cjs/tile/B3dmReader.js.map +1 -1
  106. package/lib/cjs/tile/ContextShareProvider.d.ts.map +1 -1
  107. package/lib/cjs/tile/ContextShareProvider.js +19 -0
  108. package/lib/cjs/tile/ContextShareProvider.js.map +1 -1
  109. package/lib/cjs/tile/GltfReader.d.ts +3 -1
  110. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  111. package/lib/cjs/tile/GltfReader.js +33 -1
  112. package/lib/cjs/tile/GltfReader.js.map +1 -1
  113. package/lib/cjs/tile/I3dmReader.d.ts +1 -1
  114. package/lib/cjs/tile/I3dmReader.d.ts.map +1 -1
  115. package/lib/cjs/tile/I3dmReader.js +4 -4
  116. package/lib/cjs/tile/I3dmReader.js.map +1 -1
  117. package/lib/cjs/tile/RealityModelTileTree.d.ts +2 -1
  118. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  119. package/lib/cjs/tile/RealityModelTileTree.js +29 -10
  120. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  121. package/lib/cjs/tile/RealityTileLoader.d.ts +1 -0
  122. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  123. package/lib/cjs/tile/RealityTileLoader.js +3 -2
  124. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  125. package/lib/esm/IModelApp.d.ts +4 -4
  126. package/lib/esm/IModelApp.js +6 -6
  127. package/lib/esm/IModelApp.js.map +1 -1
  128. package/lib/esm/IModelConnection.d.ts +1 -1
  129. package/lib/esm/IModelConnection.js +1 -1
  130. package/lib/esm/IModelConnection.js.map +1 -1
  131. package/lib/esm/IModeljs-css.js +1 -1
  132. package/lib/esm/IModeljs-css.js.map +1 -1
  133. package/lib/esm/LocalhostIpcApp.d.ts +2 -1
  134. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  135. package/lib/esm/LocalhostIpcApp.js +22 -8
  136. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  137. package/lib/esm/SheetViewState.js +2 -0
  138. package/lib/esm/SheetViewState.js.map +1 -1
  139. package/lib/esm/Viewport.d.ts +1 -1
  140. package/lib/esm/Viewport.js +1 -1
  141. package/lib/esm/Viewport.js.map +1 -1
  142. package/lib/esm/core-frontend.d.ts +1 -1
  143. package/lib/esm/core-frontend.js +1 -1
  144. package/lib/esm/core-frontend.js.map +1 -1
  145. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts +3 -2
  146. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.d.ts.map +1 -1
  147. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js +3 -2
  148. package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
  149. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts +5 -1
  150. package/lib/esm/quantity-formatting/BasicUnitsProvider.d.ts.map +1 -1
  151. package/lib/esm/quantity-formatting/BasicUnitsProvider.js +18 -4
  152. package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
  153. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts +26 -3
  154. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  155. package/lib/esm/quantity-formatting/QuantityFormatter.js +45 -7
  156. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  157. package/lib/esm/render/RenderSystem.d.ts +0 -2
  158. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  159. package/lib/esm/render/RenderSystem.js.map +1 -1
  160. package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
  161. package/lib/esm/render/webgl/DrawCommand.js +3 -1
  162. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  163. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  164. package/lib/esm/render/webgl/Mesh.js +1 -2
  165. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  166. package/lib/esm/render/webgl/PlanarClassifier.d.ts.map +1 -1
  167. package/lib/esm/render/webgl/PlanarClassifier.js +1 -0
  168. package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
  169. package/lib/esm/render/webgl/PlanarTextureProjection.d.ts.map +1 -1
  170. package/lib/esm/render/webgl/PlanarTextureProjection.js +1 -0
  171. package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
  172. package/lib/esm/render/webgl/SceneCompositor.js +1 -0
  173. package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
  174. package/lib/esm/render/webgl/ShaderBuilder.d.ts +8 -7
  175. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  176. package/lib/esm/render/webgl/ShaderBuilder.js +20 -18
  177. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  178. package/lib/esm/render/webgl/SolarShadowMap.d.ts.map +1 -1
  179. package/lib/esm/render/webgl/SolarShadowMap.js +1 -0
  180. package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
  181. package/lib/esm/render/webgl/System.d.ts +0 -3
  182. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  183. package/lib/esm/render/webgl/System.js +0 -3
  184. package/lib/esm/render/webgl/System.js.map +1 -1
  185. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  186. package/lib/esm/render/webgl/Target.js +5 -0
  187. package/lib/esm/render/webgl/Target.js.map +1 -1
  188. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  189. package/lib/esm/render/webgl/Technique.js +74 -29
  190. package/lib/esm/render/webgl/Technique.js.map +1 -1
  191. package/lib/esm/render/webgl/TechniqueFlags.d.ts +7 -1
  192. package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
  193. package/lib/esm/render/webgl/TechniqueFlags.js +10 -1
  194. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  195. package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +1 -1
  196. package/lib/esm/render/webgl/glsl/Blur.js +1 -1
  197. package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +2 -2
  198. package/lib/esm/render/webgl/glsl/ClearTranslucent.js +2 -2
  199. package/lib/esm/render/webgl/glsl/Combine3Textures.js +1 -1
  200. package/lib/esm/render/webgl/glsl/CombineTextures.js +1 -1
  201. package/lib/esm/render/webgl/glsl/Composite.js +1 -1
  202. package/lib/esm/render/webgl/glsl/CopyColor.d.ts.map +1 -1
  203. package/lib/esm/render/webgl/glsl/CopyColor.js +17 -2
  204. package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
  205. package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +2 -2
  206. package/lib/esm/render/webgl/glsl/CopyStencil.js +6 -6
  207. package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +1 -1
  208. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +2 -2
  209. package/lib/esm/render/webgl/glsl/Fragment.js +10 -10
  210. package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js +1 -1
  211. package/lib/esm/render/webgl/glsl/PlanarClassification.js +3 -3
  212. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  213. package/lib/esm/render/webgl/glsl/RealityMesh.js +5 -2
  214. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  215. package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +1 -1
  216. package/lib/esm/render/webgl/glsl/SkyBox.js +1 -1
  217. package/lib/esm/render/webgl/glsl/SkySphere.js +1 -1
  218. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  219. package/lib/esm/render/webgl/glsl/Surface.js +5 -2
  220. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  221. package/lib/esm/render/webgl/glsl/Translucency.js +2 -2
  222. package/lib/esm/render/webgl/glsl/Wiremesh.d.ts +9 -0
  223. package/lib/esm/render/webgl/glsl/Wiremesh.d.ts.map +1 -0
  224. package/lib/esm/render/webgl/glsl/Wiremesh.js +36 -0
  225. package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -0
  226. package/lib/esm/tile/B3dmReader.d.ts +1 -1
  227. package/lib/esm/tile/B3dmReader.d.ts.map +1 -1
  228. package/lib/esm/tile/B3dmReader.js +4 -4
  229. package/lib/esm/tile/B3dmReader.js.map +1 -1
  230. package/lib/esm/tile/ContextShareProvider.d.ts.map +1 -1
  231. package/lib/esm/tile/ContextShareProvider.js +19 -0
  232. package/lib/esm/tile/ContextShareProvider.js.map +1 -1
  233. package/lib/esm/tile/GltfReader.d.ts +3 -1
  234. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  235. package/lib/esm/tile/GltfReader.js +33 -1
  236. package/lib/esm/tile/GltfReader.js.map +1 -1
  237. package/lib/esm/tile/I3dmReader.d.ts +1 -1
  238. package/lib/esm/tile/I3dmReader.d.ts.map +1 -1
  239. package/lib/esm/tile/I3dmReader.js +4 -4
  240. package/lib/esm/tile/I3dmReader.js.map +1 -1
  241. package/lib/esm/tile/RealityModelTileTree.d.ts +2 -1
  242. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  243. package/lib/esm/tile/RealityModelTileTree.js +30 -11
  244. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  245. package/lib/esm/tile/RealityTileLoader.d.ts +1 -0
  246. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  247. package/lib/esm/tile/RealityTileLoader.js +3 -2
  248. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  249. package/package.json +22 -22
@@ -19,13 +19,14 @@ export class TechniqueFlags {
19
19
  this.isClassified = 0 /* No */;
20
20
  this.isShadowable = 0 /* No */;
21
21
  this.isThematic = 0 /* No */;
22
+ this.isWiremesh = 0 /* No */;
22
23
  this._isHilite = false;
23
24
  this.isTranslucent = translucent;
24
25
  }
25
26
  get hasClip() {
26
27
  return this.numClipPlanes > 0;
27
28
  }
28
- init(target, pass, instanced, animated = 0 /* No */, classified = 0 /* No */, shadowable = 0 /* No */, thematic = 0 /* No */) {
29
+ init(target, pass, instanced, animated = 0 /* No */, classified = 0 /* No */, shadowable = 0 /* No */, thematic = 0 /* No */, wiremesh = 0 /* No */) {
29
30
  const clipStack = target.uniforms.branch.clipStack;
30
31
  const numClipPlanes = clipStack.hasClip ? clipStack.textureHeight : 0;
31
32
  if (9 /* Hilite */ === pass || 15 /* HiliteClassification */ === pass || 17 /* HilitePlanarClassification */ === pass) {
@@ -41,6 +42,7 @@ export class TechniqueFlags {
41
42
  this.isClassified = classified;
42
43
  this.isShadowable = shadowable;
43
44
  this.isThematic = thematic;
45
+ this.isWiremesh = wiremesh;
44
46
  this.featureMode = target.uniforms.batch.featureMode;
45
47
  // Determine if we should use the shaders which support discarding surfaces in favor of their edges (and discarding non-planar surfaces in favor of coincident planar surfaces).
46
48
  // These are only useful if the geometry defines feature Ids.
@@ -76,6 +78,7 @@ export class TechniqueFlags {
76
78
  this.isInstanced = instanced;
77
79
  this.isShadowable = shadowable;
78
80
  this.isThematic = thematic;
81
+ this.isWiremesh = 0 /* No */;
79
82
  this.numClipPlanes = 0;
80
83
  }
81
84
  get hasFeatures() { return 0 /* None */ !== this.featureMode; }
@@ -105,6 +108,7 @@ export class TechniqueFlags {
105
108
  && this.isClassified === other.isClassified
106
109
  && this.isShadowable === other.isShadowable
107
110
  && this.isThematic === other.isThematic
111
+ && this.isWiremesh === other.isWiremesh
108
112
  && this.isHilite === other.isHilite;
109
113
  }
110
114
  buildDescription() {
@@ -127,6 +131,8 @@ export class TechniqueFlags {
127
131
  parts.push("Thematic");
128
132
  if (this.hasFeatures)
129
133
  parts.push(1 /* Pick */ === this.featureMode ? "Pick" : "Overrides");
134
+ if (this.isWiremesh)
135
+ parts.push("Wiremesh");
130
136
  return parts.join("-");
131
137
  }
132
138
  static fromDescription(description) {
@@ -161,6 +167,9 @@ export class TechniqueFlags {
161
167
  case "Thematic":
162
168
  flags.isThematic = 1 /* Yes */;
163
169
  break;
170
+ case "Wiremesh":
171
+ flags.isWiremesh = 1 /* Yes */;
172
+ break;
164
173
  case "Pick":
165
174
  flags.featureMode = 1 /* Pick */;
166
175
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"TechniqueFlags.js","sourceRoot":"","sources":["../../../../src/render/webgl/TechniqueFlags.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 { RenderMode } from \"@itwin/core-common\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { Target } from \"./Target\";\r\n\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** Specifies how a TechniqueFlags handles feature table/overrides.\r\n * @internal\r\n */\r\nexport const enum FeatureMode {\r\n None, // no features\r\n Pick, // feature table only\r\n Overrides, // feature table with symbology overrides\r\n}\r\n\r\n/** @internal */\r\nexport const enum IsInstanced { No, Yes }\r\n\r\n/** @internal */\r\nexport const enum IsAnimated { No, Yes }\r\n\r\n/** @internal */\r\nexport const enum IsClassified { No, Yes }\r\n\r\n/** @internal */\r\nexport const enum IsEdgeTestNeeded { No, Yes }\r\n\r\n/** @internal */\r\nexport const enum IsShadowable { No, Yes }\r\n\r\n/** @internal */\r\nexport const enum IsThematic { No, Yes }\r\n\r\n/** Flags used to control which shader program is used by a rendering Technique.\r\n * @internal\r\n */\r\nexport class TechniqueFlags {\r\n public numClipPlanes = 0;\r\n public featureMode = FeatureMode.None;\r\n public isTranslucent: boolean;\r\n public isEdgeTestNeeded: IsEdgeTestNeeded = IsEdgeTestNeeded.No;\r\n public isAnimated: IsAnimated = IsAnimated.No;\r\n public isInstanced: IsInstanced = IsInstanced.No;\r\n public isClassified: IsClassified = IsClassified.No;\r\n public isShadowable: IsShadowable = IsShadowable.No;\r\n public isThematic: IsThematic = IsThematic.No;\r\n private _isHilite = false;\r\n\r\n public constructor(translucent: boolean = false) {\r\n this.isTranslucent = translucent;\r\n }\r\n\r\n public get hasClip(): boolean {\r\n return this.numClipPlanes > 0;\r\n }\r\n\r\n public init(target: Target, pass: RenderPass, instanced: IsInstanced, animated: IsAnimated = IsAnimated.No, classified = IsClassified.No, shadowable = IsShadowable.No, thematic = IsThematic.No): void {\r\n const clipStack = target.uniforms.branch.clipStack;\r\n const numClipPlanes = clipStack.hasClip ? clipStack.textureHeight : 0;\r\n if (RenderPass.Hilite === pass || RenderPass.HiliteClassification === pass || RenderPass.HilitePlanarClassification === pass) {\r\n const isClassified = (classified === IsClassified.Yes && RenderPass.HilitePlanarClassification === pass) ? IsClassified.Yes : IsClassified.No;\r\n this.initForHilite(numClipPlanes, instanced, isClassified);\r\n } else {\r\n this._isHilite = false;\r\n this.isTranslucent = RenderPass.Translucent === pass;\r\n this.numClipPlanes = numClipPlanes;\r\n this.isAnimated = animated;\r\n this.isInstanced = instanced;\r\n this.isClassified = classified;\r\n this.isShadowable = shadowable;\r\n this.isThematic = thematic;\r\n this.featureMode = target.uniforms.batch.featureMode;\r\n\r\n // Determine if we should use the shaders which support discarding surfaces in favor of their edges (and discarding non-planar surfaces in favor of coincident planar surfaces).\r\n // These are only useful if the geometry defines feature Ids.\r\n // In 3d, if we're only displaying surfaces or edges, not both, don't bother, unless forceSurfaceDiscard is true.\r\n this.isEdgeTestNeeded = this.hasFeatures ? (this.isClassified ? IsEdgeTestNeeded.No : IsEdgeTestNeeded.Yes) : IsEdgeTestNeeded.No;\r\n if (!target.currentViewFlags.forceSurfaceDiscard && target.is3d && !target.isReadPixelsInProgress && this.isEdgeTestNeeded) {\r\n switch (target.currentViewFlags.renderMode) {\r\n case RenderMode.Wireframe:\r\n // We're only displaying edges (ignoring filled planar regions)\r\n this.isEdgeTestNeeded = IsEdgeTestNeeded.No;\r\n break;\r\n case RenderMode.SmoothShade:\r\n if (!target.currentViewFlags.visibleEdges && !target.wantAmbientOcclusion && pass !== RenderPass.PlanarClassification) {\r\n // We're only displaying surfaces (ignoring filled planar regions).\r\n // NB: Filled text (blanking region) is handled by adjusting the depth in the surface vertex shader.\r\n this.isEdgeTestNeeded = IsEdgeTestNeeded.No;\r\n }\r\n break;\r\n default:\r\n // SolidFill and HiddenLine always display edges and surfaces.\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n public reset(mode: FeatureMode, instanced: IsInstanced = IsInstanced.No, shadowable: IsShadowable, thematic: IsThematic) {\r\n this._isHilite = false;\r\n this.featureMode = mode;\r\n this.isTranslucent = false;\r\n this.isEdgeTestNeeded = IsEdgeTestNeeded.No;\r\n this.isAnimated = IsAnimated.No;\r\n this.isClassified = IsClassified.No;\r\n this.isInstanced = instanced;\r\n this.isShadowable = shadowable;\r\n this.isThematic = thematic;\r\n this.numClipPlanes = 0;\r\n }\r\n\r\n public get hasFeatures() { return FeatureMode.None !== this.featureMode; }\r\n\r\n public setAnimated(animated: boolean) { this.isAnimated = animated ? IsAnimated.Yes : IsAnimated.No; }\r\n public setInstanced(instanced: boolean) { this.isInstanced = instanced ? IsInstanced.Yes : IsInstanced.No; }\r\n public setClassified(classified: boolean) {\r\n this.isClassified = classified ? IsClassified.Yes : IsClassified.No;\r\n }\r\n\r\n public get isHilite() { return this._isHilite; }\r\n public initForHilite(numClipPlanes: number, instanced: IsInstanced, classified: IsClassified) {\r\n this.featureMode = classified ? FeatureMode.None : FeatureMode.Overrides;\r\n this._isHilite = true;\r\n this.isTranslucent = false;\r\n this.isEdgeTestNeeded = IsEdgeTestNeeded.No;\r\n this.isAnimated = IsAnimated.No;\r\n this.isInstanced = instanced;\r\n this.isClassified = classified;\r\n this.numClipPlanes = numClipPlanes;\r\n }\r\n\r\n public equals(other: TechniqueFlags): boolean {\r\n return this.numClipPlanes === other.numClipPlanes\r\n && this.featureMode === other.featureMode\r\n && this.isTranslucent === other.isTranslucent\r\n && this.isEdgeTestNeeded === other.isEdgeTestNeeded\r\n && this.isAnimated === other.isAnimated\r\n && this.isInstanced === other.isInstanced\r\n && this.isClassified === other.isClassified\r\n && this.isShadowable === other.isShadowable\r\n && this.isThematic === other.isThematic\r\n && this.isHilite === other.isHilite;\r\n }\r\n\r\n public buildDescription(): string {\r\n const parts = [this.isTranslucent ? \"Translucent\" : \"Opaque\"];\r\n if (this.isInstanced) parts.push(\"Instanced\");\r\n if (this.isEdgeTestNeeded) parts.push(\"EdgeTestNeeded\");\r\n if (this.isAnimated) parts.push(\"Animated\");\r\n if (this.isHilite) parts.push(\"Hilite\");\r\n if (this.isClassified) parts.push(\"Classified\");\r\n if (this.hasClip) parts.push(\"Clip\");\r\n if (this.isShadowable) parts.push(\"Shadowable\");\r\n if (this.isThematic) parts.push(\"Thematic\");\r\n if (this.hasFeatures) parts.push(FeatureMode.Pick === this.featureMode ? \"Pick\" : \"Overrides\");\r\n return parts.join(\"-\");\r\n }\r\n\r\n public static fromDescription(description: string): TechniqueFlags {\r\n const flags = new TechniqueFlags(false);\r\n const parts = description.split(\"-\");\r\n for (const part of parts) {\r\n switch (part) {\r\n case \"Translucent\":\r\n flags.isTranslucent = true;\r\n break;\r\n case \"Instanced\":\r\n flags.isInstanced = IsInstanced.Yes;\r\n break;\r\n case \"EdgeTestNeeded\":\r\n flags.isEdgeTestNeeded = IsEdgeTestNeeded.Yes;\r\n break;\r\n case \"Animated\":\r\n flags.isAnimated = IsAnimated.Yes;\r\n break;\r\n case \"Hilite\":\r\n flags._isHilite = true;\r\n break;\r\n case \"Classified\":\r\n flags.isClassified = IsClassified.Yes;\r\n break;\r\n case \"Clip\":\r\n flags.numClipPlanes = 1;\r\n break;\r\n case \"Shadowable\":\r\n flags.isShadowable = IsShadowable.Yes;\r\n break;\r\n case \"Thematic\":\r\n flags.isThematic = IsThematic.Yes;\r\n break;\r\n case \"Pick\":\r\n flags.featureMode = FeatureMode.Pick;\r\n break;\r\n case \"Overrides\":\r\n flags.featureMode = FeatureMode.Overrides;\r\n break;\r\n }\r\n }\r\n\r\n return flags;\r\n }\r\n\r\n public static readonly defaults = new TechniqueFlags();\r\n}\r\n"]}
1
+ {"version":3,"file":"TechniqueFlags.js","sourceRoot":"","sources":["../../../../src/render/webgl/TechniqueFlags.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 { RenderMode } from \"@itwin/core-common\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { Target } from \"./Target\";\r\n\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** Specifies how a TechniqueFlags handles feature table/overrides.\r\n * @internal\r\n */\r\nexport const enum FeatureMode {\r\n None, // no features\r\n Pick, // feature table only\r\n Overrides, // feature table with symbology overrides\r\n}\r\n\r\n/** @internal */\r\nexport const enum IsInstanced { No, Yes }\r\n\r\n/** @internal */\r\nexport const enum IsAnimated { No, Yes }\r\n\r\n/** @internal */\r\nexport const enum IsClassified { No, Yes }\r\n\r\n/** @internal */\r\nexport const enum IsEdgeTestNeeded { No, Yes }\r\n\r\n/** @internal */\r\nexport const enum IsShadowable { No, Yes }\r\n\r\n/** @internal */\r\nexport const enum IsThematic { No, Yes }\r\n\r\n/** @internal */\r\nexport const enum IsWiremesh { No, Yes }\r\n\r\n/** Flags used to control which shader program is used by a rendering Technique.\r\n * @internal\r\n */\r\nexport class TechniqueFlags {\r\n public numClipPlanes = 0;\r\n public featureMode = FeatureMode.None;\r\n public isTranslucent: boolean;\r\n public isEdgeTestNeeded: IsEdgeTestNeeded = IsEdgeTestNeeded.No;\r\n public isAnimated: IsAnimated = IsAnimated.No;\r\n public isInstanced: IsInstanced = IsInstanced.No;\r\n public isClassified: IsClassified = IsClassified.No;\r\n public isShadowable: IsShadowable = IsShadowable.No;\r\n public isThematic: IsThematic = IsThematic.No;\r\n public isWiremesh: IsWiremesh = IsWiremesh.No;\r\n private _isHilite = false;\r\n\r\n public constructor(translucent: boolean = false) {\r\n this.isTranslucent = translucent;\r\n }\r\n\r\n public get hasClip(): boolean {\r\n return this.numClipPlanes > 0;\r\n }\r\n\r\n public init(target: Target, pass: RenderPass, instanced: IsInstanced, animated: IsAnimated = IsAnimated.No, classified = IsClassified.No, shadowable = IsShadowable.No, thematic = IsThematic.No, wiremesh = IsWiremesh.No): void {\r\n const clipStack = target.uniforms.branch.clipStack;\r\n const numClipPlanes = clipStack.hasClip ? clipStack.textureHeight : 0;\r\n if (RenderPass.Hilite === pass || RenderPass.HiliteClassification === pass || RenderPass.HilitePlanarClassification === pass) {\r\n const isClassified = (classified === IsClassified.Yes && RenderPass.HilitePlanarClassification === pass) ? IsClassified.Yes : IsClassified.No;\r\n this.initForHilite(numClipPlanes, instanced, isClassified);\r\n } else {\r\n this._isHilite = false;\r\n this.isTranslucent = RenderPass.Translucent === pass;\r\n this.numClipPlanes = numClipPlanes;\r\n this.isAnimated = animated;\r\n this.isInstanced = instanced;\r\n this.isClassified = classified;\r\n this.isShadowable = shadowable;\r\n this.isThematic = thematic;\r\n this.isWiremesh = wiremesh;\r\n this.featureMode = target.uniforms.batch.featureMode;\r\n\r\n // Determine if we should use the shaders which support discarding surfaces in favor of their edges (and discarding non-planar surfaces in favor of coincident planar surfaces).\r\n // These are only useful if the geometry defines feature Ids.\r\n // In 3d, if we're only displaying surfaces or edges, not both, don't bother, unless forceSurfaceDiscard is true.\r\n this.isEdgeTestNeeded = this.hasFeatures ? (this.isClassified ? IsEdgeTestNeeded.No : IsEdgeTestNeeded.Yes) : IsEdgeTestNeeded.No;\r\n if (!target.currentViewFlags.forceSurfaceDiscard && target.is3d && !target.isReadPixelsInProgress && this.isEdgeTestNeeded) {\r\n switch (target.currentViewFlags.renderMode) {\r\n case RenderMode.Wireframe:\r\n // We're only displaying edges (ignoring filled planar regions)\r\n this.isEdgeTestNeeded = IsEdgeTestNeeded.No;\r\n break;\r\n case RenderMode.SmoothShade:\r\n if (!target.currentViewFlags.visibleEdges && !target.wantAmbientOcclusion && pass !== RenderPass.PlanarClassification) {\r\n // We're only displaying surfaces (ignoring filled planar regions).\r\n // NB: Filled text (blanking region) is handled by adjusting the depth in the surface vertex shader.\r\n this.isEdgeTestNeeded = IsEdgeTestNeeded.No;\r\n }\r\n break;\r\n default:\r\n // SolidFill and HiddenLine always display edges and surfaces.\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n public reset(mode: FeatureMode, instanced: IsInstanced = IsInstanced.No, shadowable: IsShadowable, thematic: IsThematic) {\r\n this._isHilite = false;\r\n this.featureMode = mode;\r\n this.isTranslucent = false;\r\n this.isEdgeTestNeeded = IsEdgeTestNeeded.No;\r\n this.isAnimated = IsAnimated.No;\r\n this.isClassified = IsClassified.No;\r\n this.isInstanced = instanced;\r\n this.isShadowable = shadowable;\r\n this.isThematic = thematic;\r\n this.isWiremesh = IsWiremesh.No;\r\n this.numClipPlanes = 0;\r\n }\r\n\r\n public get hasFeatures() { return FeatureMode.None !== this.featureMode; }\r\n\r\n public setAnimated(animated: boolean) { this.isAnimated = animated ? IsAnimated.Yes : IsAnimated.No; }\r\n public setInstanced(instanced: boolean) { this.isInstanced = instanced ? IsInstanced.Yes : IsInstanced.No; }\r\n public setClassified(classified: boolean) {\r\n this.isClassified = classified ? IsClassified.Yes : IsClassified.No;\r\n }\r\n\r\n public get isHilite() { return this._isHilite; }\r\n public initForHilite(numClipPlanes: number, instanced: IsInstanced, classified: IsClassified) {\r\n this.featureMode = classified ? FeatureMode.None : FeatureMode.Overrides;\r\n this._isHilite = true;\r\n this.isTranslucent = false;\r\n this.isEdgeTestNeeded = IsEdgeTestNeeded.No;\r\n this.isAnimated = IsAnimated.No;\r\n this.isInstanced = instanced;\r\n this.isClassified = classified;\r\n this.numClipPlanes = numClipPlanes;\r\n }\r\n\r\n public equals(other: TechniqueFlags): boolean {\r\n return this.numClipPlanes === other.numClipPlanes\r\n && this.featureMode === other.featureMode\r\n && this.isTranslucent === other.isTranslucent\r\n && this.isEdgeTestNeeded === other.isEdgeTestNeeded\r\n && this.isAnimated === other.isAnimated\r\n && this.isInstanced === other.isInstanced\r\n && this.isClassified === other.isClassified\r\n && this.isShadowable === other.isShadowable\r\n && this.isThematic === other.isThematic\r\n && this.isWiremesh === other.isWiremesh\r\n && this.isHilite === other.isHilite;\r\n }\r\n\r\n public buildDescription(): string {\r\n const parts = [this.isTranslucent ? \"Translucent\" : \"Opaque\"];\r\n if (this.isInstanced) parts.push(\"Instanced\");\r\n if (this.isEdgeTestNeeded) parts.push(\"EdgeTestNeeded\");\r\n if (this.isAnimated) parts.push(\"Animated\");\r\n if (this.isHilite) parts.push(\"Hilite\");\r\n if (this.isClassified) parts.push(\"Classified\");\r\n if (this.hasClip) parts.push(\"Clip\");\r\n if (this.isShadowable) parts.push(\"Shadowable\");\r\n if (this.isThematic) parts.push(\"Thematic\");\r\n if (this.hasFeatures) parts.push(FeatureMode.Pick === this.featureMode ? \"Pick\" : \"Overrides\");\r\n if (this.isWiremesh) parts.push(\"Wiremesh\");\r\n return parts.join(\"-\");\r\n }\r\n\r\n public static fromDescription(description: string): TechniqueFlags {\r\n const flags = new TechniqueFlags(false);\r\n const parts = description.split(\"-\");\r\n for (const part of parts) {\r\n switch (part) {\r\n case \"Translucent\":\r\n flags.isTranslucent = true;\r\n break;\r\n case \"Instanced\":\r\n flags.isInstanced = IsInstanced.Yes;\r\n break;\r\n case \"EdgeTestNeeded\":\r\n flags.isEdgeTestNeeded = IsEdgeTestNeeded.Yes;\r\n break;\r\n case \"Animated\":\r\n flags.isAnimated = IsAnimated.Yes;\r\n break;\r\n case \"Hilite\":\r\n flags._isHilite = true;\r\n break;\r\n case \"Classified\":\r\n flags.isClassified = IsClassified.Yes;\r\n break;\r\n case \"Clip\":\r\n flags.numClipPlanes = 1;\r\n break;\r\n case \"Shadowable\":\r\n flags.isShadowable = IsShadowable.Yes;\r\n break;\r\n case \"Thematic\":\r\n flags.isThematic = IsThematic.Yes;\r\n break;\r\n case \"Wiremesh\":\r\n flags.isWiremesh = IsWiremesh.Yes;\r\n break;\r\n case \"Pick\":\r\n flags.featureMode = FeatureMode.Pick;\r\n break;\r\n case \"Overrides\":\r\n flags.featureMode = FeatureMode.Overrides;\r\n break;\r\n }\r\n }\r\n\r\n return flags;\r\n }\r\n\r\n public static readonly defaults = new TechniqueFlags();\r\n}\r\n"]}
@@ -153,7 +153,7 @@ export function createAmbientOcclusionProgram(context) {
153
153
  frag.addFunction(computeLinearDepth);
154
154
  addRenderOrderConstants(frag);
155
155
  frag.set(1 /* ComputeBaseColor */, computeAmbientOcclusion);
156
- frag.set(15 /* AssignFragData */, assignFragColor);
156
+ frag.set(16 /* AssignFragData */, assignFragColor);
157
157
  frag.addUniform("u_pickDepthAndOrder", 8 /* Sampler2D */, (prog) => {
158
158
  prog.addGraphicUniform("u_pickDepthAndOrder", (uniform, params) => {
159
159
  const geom = params.geometry;
@@ -48,7 +48,7 @@ export function createBlurProgram(context) {
48
48
  addWindowToTexCoords(frag);
49
49
  frag.addFunction(decodeDepthRgb);
50
50
  frag.set(1 /* ComputeBaseColor */, computeBlur);
51
- frag.set(15 /* AssignFragData */, assignFragColor);
51
+ frag.set(16 /* AssignFragData */, assignFragColor);
52
52
  addViewport(frag);
53
53
  frag.addUniform("u_textureToBlur", 8 /* Sampler2D */, (prog) => {
54
54
  prog.addGraphicUniform("u_textureToBlur", (uniform, params) => {
@@ -25,11 +25,11 @@ export function createClearPickAndColorProgram(context) {
25
25
  frag.set(1 /* ComputeBaseColor */, computeBaseColor);
26
26
  if (!System.instance.capabilities.supportsMRTPickShaders) {
27
27
  // NB: This shader is never used - we gl.clear() directly
28
- frag.set(15 /* AssignFragData */, "FragColor = baseColor;");
28
+ frag.set(16 /* AssignFragData */, "FragColor = baseColor;");
29
29
  }
30
30
  else {
31
31
  frag.addDrawBuffersExtension(3);
32
- frag.set(15 /* AssignFragData */, assignFragData);
32
+ frag.set(16 /* AssignFragData */, assignFragData);
33
33
  }
34
34
  builder.vert.headerComment = "//!V! ClearPickAndColor";
35
35
  builder.frag.headerComment = "//!F! ClearPickAndColor";
@@ -20,11 +20,11 @@ export function createClearTranslucentProgram(context) {
20
20
  frag.set(1 /* ComputeBaseColor */, computeBaseColor);
21
21
  if (System.instance.capabilities.supportsMRTTransparency) {
22
22
  frag.addDrawBuffersExtension(2);
23
- frag.set(15 /* AssignFragData */, assignFragData);
23
+ frag.set(16 /* AssignFragData */, assignFragData);
24
24
  }
25
25
  else {
26
26
  // NB: This shader is never used - we just gl.clear() directly
27
- frag.set(15 /* AssignFragData */, assignFragColor);
27
+ frag.set(16 /* AssignFragData */, assignFragColor);
28
28
  }
29
29
  builder.vert.headerComment = "//!V! ClearTranslucent";
30
30
  builder.frag.headerComment = "//!F! ClearTranslucent";
@@ -37,7 +37,7 @@ export function createCombine3TexturesProgram(context) {
37
37
  Texture2DHandle.bindSampler(uniform, params.geometry.texture2, TextureUnit.Two);
38
38
  });
39
39
  }, 3 /* High */);
40
- frag.set(15 /* AssignFragData */, assignFragData);
40
+ frag.set(16 /* AssignFragData */, assignFragData);
41
41
  builder.vert.headerComment = "//!V! Combine3Textures";
42
42
  builder.frag.headerComment = "//!F! Combine3Textures";
43
43
  return builder.buildProgram(context);
@@ -30,7 +30,7 @@ export function createCombineTexturesProgram(context) {
30
30
  Texture2DHandle.bindSampler(uniform, params.geometry.texture1, TextureUnit.One);
31
31
  });
32
32
  }, 3 /* High */);
33
- frag.set(15 /* AssignFragData */, assignFragData);
33
+ frag.set(16 /* AssignFragData */, assignFragData);
34
34
  builder.vert.headerComment = "//!V! CombineTextures";
35
35
  builder.frag.headerComment = "//!F! CombineTextures";
36
36
  return builder.buildProgram(context);
@@ -113,7 +113,7 @@ export function createCompositeProgram(flags, context) {
113
113
  const frag = builder.frag;
114
114
  frag.addFunction(wantOcclusion ? computeAmbientOcclusion : computeDefaultAmbientOcclusion);
115
115
  frag.addFunction(computeOpaqueColor);
116
- frag.set(15 /* AssignFragData */, assignFragColor);
116
+ frag.set(16 /* AssignFragData */, assignFragColor);
117
117
  frag.addUniform("u_opaque", 8 /* Sampler2D */, (prog) => {
118
118
  prog.addGraphicUniform("u_opaque", (uniform, params) => {
119
119
  Texture2DHandle.bindSampler(uniform, params.geometry.opaque, TextureUnit.Zero);
@@ -1 +1 @@
1
- {"version":3,"file":"CopyColor.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CopyColor.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AASjD,gBAAgB;AAChB,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,GAAE,OAAc,GAAG,aAAa,CAkBtG"}
1
+ {"version":3,"file":"CopyColor.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CopyColor.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAiBjD,gBAAgB;AAChB,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,GAAE,OAAc,GAAG,aAAa,CA0BtG"}
@@ -10,19 +10,34 @@ import { Texture2DHandle } from "../Texture";
10
10
  import { assignFragColor } from "./Fragment";
11
11
  import { createViewportQuadBuilder } from "./ViewportQuad";
12
12
  const computeColor = "return TEXTURE(u_color, v_texCoord);";
13
- const computeColorNoAlpha = "return vec4(TEXTURE(u_color, v_texCoord).rgb, 1.0);";
13
+ // Transparent background color will not have premultiplied alpha - multiply it when copying.
14
+ // Set all other pixels opaque.
15
+ const computeColorNoAlpha = `
16
+ vec4 color = TEXTURE(u_color, v_texCoord);
17
+ if (color == u_bgColor)
18
+ return vec4(color.rgb * color.a, color.a);
19
+ else
20
+ return vec4(color.rgb, 1.0);
21
+ `;
14
22
  /** @internal */
15
23
  export function createCopyColorProgram(context, copyAlpha = true) {
16
24
  const builder = createViewportQuadBuilder(true);
17
25
  const frag = builder.frag;
18
26
  frag.set(1 /* ComputeBaseColor */, copyAlpha ? computeColor : computeColorNoAlpha);
19
- frag.set(15 /* AssignFragData */, assignFragColor);
27
+ frag.set(16 /* AssignFragData */, assignFragColor);
20
28
  frag.addUniform("u_color", 8 /* Sampler2D */, (prog) => {
21
29
  prog.addGraphicUniform("u_color", (uniform, params) => {
22
30
  const geom = params.geometry;
23
31
  Texture2DHandle.bindSampler(uniform, geom.texture, TextureUnit.Zero);
24
32
  });
25
33
  });
34
+ if (!copyAlpha) {
35
+ frag.addUniform("u_bgColor", 5 /* Vec4 */, (prog) => {
36
+ prog.addProgramUniform("u_bgColor", (uniform, params) => {
37
+ params.target.uniforms.style.bindBackgroundRgba(uniform);
38
+ });
39
+ });
40
+ }
26
41
  const flagString = (copyAlpha ? "-CopyAlpha" : "-NoAlpha");
27
42
  builder.vert.headerComment = `//!V! CopyColor${flagString}`;
28
43
  builder.frag.headerComment = `//!F! CopyColor${flagString}`;
@@ -1 +1 @@
1
- {"version":3,"file":"CopyColor.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CopyColor.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,YAAY,GAAG,sCAAsC,CAAC;AAE5D,MAAM,mBAAmB,GAAG,qDAAqD,CAAC;AAElF,gBAAgB;AAChB,MAAM,UAAU,sBAAsB,CAAC,OAAqB,EAAE,YAAqB,IAAI;IACrF,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,CAAC,GAAG,2BAA2C,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACnG,IAAI,CAAC,GAAG,0BAAyC,eAAe,CAAC,CAAC;IAClE,IAAI,CAAC,UAAU,CAAC,SAAS,qBAA0B,CAAC,IAAI,EAAE,EAAE;QAC1D,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpD,MAAM,IAAI,GAAG,MAAM,CAAC,QAA8C,CAAC;YACnE,eAAe,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,kBAAkB,UAAU,EAAE,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,kBAAkB,UAAU,EAAE,CAAC;IAE5D,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { WebGLContext } from \"@itwin/webgl-compatibility\";\r\nimport { SingleTexturedViewportQuadGeometry } from \"../CachedGeometry\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, VariableType } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { assignFragColor } from \"./Fragment\";\r\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\r\n\r\nconst computeColor = \"return TEXTURE(u_color, v_texCoord);\";\r\n\r\nconst computeColorNoAlpha = \"return vec4(TEXTURE(u_color, v_texCoord).rgb, 1.0);\";\r\n\r\n/** @internal */\r\nexport function createCopyColorProgram(context: WebGLContext, copyAlpha: boolean = true): ShaderProgram {\r\n const builder = createViewportQuadBuilder(true);\r\n const frag = builder.frag;\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, copyAlpha ? computeColor : computeColorNoAlpha);\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n frag.addUniform(\"u_color\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_color\", (uniform, params) => {\r\n const geom = params.geometry as SingleTexturedViewportQuadGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.texture, TextureUnit.Zero);\r\n });\r\n });\r\n\r\n const flagString = (copyAlpha ? \"-CopyAlpha\" : \"-NoAlpha\");\r\n builder.vert.headerComment = `//!V! CopyColor${flagString}`;\r\n builder.frag.headerComment = `//!F! CopyColor${flagString}`;\r\n\r\n return builder.buildProgram(context);\r\n}\r\n"]}
1
+ {"version":3,"file":"CopyColor.js","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/CopyColor.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,YAAY,GAAG,sCAAsC,CAAC;AAE5D,6FAA6F;AAC7F,+BAA+B;AAC/B,MAAM,mBAAmB,GAAG;;;;;;CAM3B,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,sBAAsB,CAAC,OAAqB,EAAE,YAAqB,IAAI;IACrF,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,IAAI,CAAC,GAAG,2BAA2C,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACnG,IAAI,CAAC,GAAG,0BAAyC,eAAe,CAAC,CAAC;IAClE,IAAI,CAAC,UAAU,CAAC,SAAS,qBAA0B,CAAC,IAAI,EAAE,EAAE;QAC1D,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpD,MAAM,IAAI,GAAG,MAAM,CAAC,QAA8C,CAAC;YACnE,eAAe,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,EAAE;QACd,IAAI,CAAC,UAAU,CAAC,WAAW,gBAAqB,CAAC,IAAI,EAAE,EAAE;YACvD,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACtD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;KACJ;IAED,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,kBAAkB,UAAU,EAAE,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,kBAAkB,UAAU,EAAE,CAAC;IAE5D,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { WebGLContext } from \"@itwin/webgl-compatibility\";\r\nimport { SingleTexturedViewportQuadGeometry } from \"../CachedGeometry\";\r\nimport { TextureUnit } from \"../RenderFlags\";\r\nimport { FragmentShaderComponent, VariableType } from \"../ShaderBuilder\";\r\nimport { ShaderProgram } from \"../ShaderProgram\";\r\nimport { Texture2DHandle } from \"../Texture\";\r\nimport { assignFragColor } from \"./Fragment\";\r\nimport { createViewportQuadBuilder } from \"./ViewportQuad\";\r\n\r\nconst computeColor = \"return TEXTURE(u_color, v_texCoord);\";\r\n\r\n// Transparent background color will not have premultiplied alpha - multiply it when copying.\r\n// Set all other pixels opaque.\r\nconst computeColorNoAlpha = `\r\n vec4 color = TEXTURE(u_color, v_texCoord);\r\n if (color == u_bgColor)\r\n return vec4(color.rgb * color.a, color.a);\r\n else\r\n return vec4(color.rgb, 1.0);\r\n`;\r\n\r\n/** @internal */\r\nexport function createCopyColorProgram(context: WebGLContext, copyAlpha: boolean = true): ShaderProgram {\r\n const builder = createViewportQuadBuilder(true);\r\n const frag = builder.frag;\r\n\r\n frag.set(FragmentShaderComponent.ComputeBaseColor, copyAlpha ? computeColor : computeColorNoAlpha);\r\n frag.set(FragmentShaderComponent.AssignFragData, assignFragColor);\r\n frag.addUniform(\"u_color\", VariableType.Sampler2D, (prog) => {\r\n prog.addGraphicUniform(\"u_color\", (uniform, params) => {\r\n const geom = params.geometry as SingleTexturedViewportQuadGeometry;\r\n Texture2DHandle.bindSampler(uniform, geom.texture, TextureUnit.Zero);\r\n });\r\n });\r\n\r\n if (!copyAlpha) {\r\n frag.addUniform(\"u_bgColor\", VariableType.Vec4, (prog) => {\r\n prog.addProgramUniform(\"u_bgColor\", (uniform, params) => {\r\n params.target.uniforms.style.bindBackgroundRgba(uniform);\r\n });\r\n });\r\n }\r\n\r\n const flagString = (copyAlpha ? \"-CopyAlpha\" : \"-NoAlpha\");\r\n builder.vert.headerComment = `//!V! CopyColor${flagString}`;\r\n builder.frag.headerComment = `//!F! CopyColor${flagString}`;\r\n\r\n return builder.buildProgram(context);\r\n}\r\n"]}
@@ -21,7 +21,7 @@ export function createCopyPickBuffersProgram(context) {
21
21
  frag.set(1 /* ComputeBaseColor */, computeBaseColor);
22
22
  if (System.instance.capabilities.maxColorAttachments < 2) {
23
23
  // NB: Never used - we gl.clear() each attachment directly.
24
- frag.set(15 /* AssignFragData */, "FragColor = vec4(0.0);");
24
+ frag.set(16 /* AssignFragData */, "FragColor = vec4(0.0);");
25
25
  }
26
26
  else {
27
27
  frag.addUniform("u_pickFeatureId", 8 /* Sampler2D */, (prog) => {
@@ -35,7 +35,7 @@ export function createCopyPickBuffersProgram(context) {
35
35
  });
36
36
  }, 3 /* High */);
37
37
  frag.addDrawBuffersExtension(2);
38
- frag.set(15 /* AssignFragData */, assignFragData);
38
+ frag.set(16 /* AssignFragData */, assignFragData);
39
39
  }
40
40
  builder.vert.headerComment = "//!V! CopyPickBuffers";
41
41
  builder.frag.headerComment = "//!F! CopyPickBuffers";
@@ -64,7 +64,7 @@ export function createVolClassColorUsingStencilProgram(context) {
64
64
  const builder = createViewportQuadBuilder(false);
65
65
  const frag = builder.frag;
66
66
  frag.set(1 /* ComputeBaseColor */, computehiliteColor);
67
- frag.set(15 /* AssignFragData */, assignFragColor);
67
+ frag.set(16 /* AssignFragData */, assignFragColor);
68
68
  frag.addUniform("u_hilite_color", 5 /* Vec4 */, (prog) => {
69
69
  prog.addGraphicUniform("u_hilite_color", (uniform, params) => {
70
70
  const useLighting = params.geometry.getFlashMode(params);
@@ -87,7 +87,7 @@ export function createVolClassCopyZProgram(context) {
87
87
  builder.addInlineComputedVarying("v_texCoord", 3 /* Vec2 */, computeTexCoord); // TODO: I think this is not necessary because it's already added from the create above
88
88
  const frag = builder.frag;
89
89
  frag.set(1 /* ComputeBaseColor */, computeSetBlendColor);
90
- frag.set(15 /* AssignFragData */, assignFragColor);
90
+ frag.set(16 /* AssignFragData */, assignFragColor);
91
91
  frag.addUniform("u_blend_color", 5 /* Vec4 */, (prog) => {
92
92
  prog.addGraphicUniform("u_blend_color", (uniform, _params) => {
93
93
  scratchColor.set(0.0, 0.0, 0.0, 0.0);
@@ -102,7 +102,7 @@ export function createVolClassCopyZProgram(context) {
102
102
  });
103
103
  if (!System.instance.capabilities.isWebGL2)
104
104
  frag.addExtension("GL_EXT_frag_depth");
105
- frag.set(17 /* FinalizeDepth */, depthFromTexture);
105
+ frag.set(18 /* FinalizeDepth */, depthFromTexture);
106
106
  builder.vert.headerComment = "//!V! VolClassCopyZ";
107
107
  builder.frag.headerComment = "//!F! VolClassCopyZ";
108
108
  return builder.buildProgram(context);
@@ -122,7 +122,7 @@ export function createVolClassCopyZUsingPointsProgram(context) {
122
122
  vert.set(9 /* ComputePosition */, computePosition);
123
123
  const frag = builder.frag;
124
124
  frag.set(1 /* ComputeBaseColor */, computeSetBlendColor);
125
- frag.set(15 /* AssignFragData */, assignFragColor);
125
+ frag.set(16 /* AssignFragData */, assignFragColor);
126
126
  frag.addUniform("u_blend_color", 5 /* Vec4 */, (prog) => {
127
127
  prog.addGraphicUniform("u_blend_color", (uniform, _params) => {
128
128
  scratchColor.set(0.0, 0.0, 0.0, 0.0);
@@ -141,7 +141,7 @@ export function createVolClassSetBlendProgram(context) {
141
141
  addBoundaryTypeConstants(frag);
142
142
  frag.set(0 /* CheckForEarlyDiscard */, checkDiscardBackgroundByZ);
143
143
  frag.set(1 /* ComputeBaseColor */, computeSetBlendColor);
144
- frag.set(15 /* AssignFragData */, assignFragColor);
144
+ frag.set(16 /* AssignFragData */, assignFragColor);
145
145
  frag.addUniform("u_boundaryType", 1 /* Int */, (prog) => {
146
146
  prog.addGraphicUniform("u_boundaryType", (uniform, params) => {
147
147
  const geom = params.geometry;
@@ -184,7 +184,7 @@ export function createVolClassBlendProgram(context) {
184
184
  builder.addInlineComputedVarying("v_texCoord", 3 /* Vec2 */, computeTexCoord);
185
185
  const frag = builder.frag;
186
186
  frag.set(1 /* ComputeBaseColor */, computeBlendTextureColor);
187
- frag.set(15 /* AssignFragData */, assignFragColor);
187
+ frag.set(16 /* AssignFragData */, assignFragColor);
188
188
  frag.addUniform("u_blendTexture", 8 /* Sampler2D */, (prog) => {
189
189
  prog.addGraphicUniform("u_blendTexture", (uniform, params) => {
190
190
  const geom = params.geometry;
@@ -63,7 +63,7 @@ export function createEVSMProgram(context) {
63
63
  addEvsmExponent(frag);
64
64
  frag.addFunction(warpDepth);
65
65
  frag.set(1 /* ComputeBaseColor */, computeEVSM);
66
- frag.set(15 /* AssignFragData */, assignFragColor);
66
+ frag.set(16 /* AssignFragData */, assignFragColor);
67
67
  builder.vert.headerComment = "//!V! EVSMFromDepth";
68
68
  builder.frag.headerComment = "//!F! EVSMFromDepth";
69
69
  return builder.buildProgram(context);
@@ -313,7 +313,7 @@ export function addHiliter(builder, wantWeight = false) {
313
313
  addEmphasisFlags(builder.frag);
314
314
  addExtractNthBit(builder.frag);
315
315
  builder.frag.set(1 /* ComputeBaseColor */, computeHiliteColor);
316
- builder.frag.set(15 /* AssignFragData */, assignFragColor);
316
+ builder.frag.set(16 /* AssignFragData */, assignFragColor);
317
317
  }
318
318
  function addSamplers(frag, testFeatureId) {
319
319
  if (testFeatureId) {
@@ -660,7 +660,7 @@ export function addFeatureSymbology(builder, feat, opts) {
660
660
  */
661
661
  export function addUniformHiliter(builder) {
662
662
  builder.frag.set(1 /* ComputeBaseColor */, `return vec4(1.0, 0.0, 0.0, 0.0);`);
663
- builder.frag.set(15 /* AssignFragData */, assignFragColor);
663
+ builder.frag.set(16 /* AssignFragData */, assignFragColor);
664
664
  }
665
665
  /** For a uniform feature table, the feature ID output to pick buffers is equal to the batch ID.
666
666
  * The following symbology overrides are supported:
@@ -91,12 +91,12 @@ export function addPickBufferOutputs(frag) {
91
91
  frag.addFunction(computeLinearDepth);
92
92
  const prelude = new SourceBuilder();
93
93
  prelude.add(computePickBufferOutputs);
94
- const overrideColor = frag.get(18 /* OverrideColor */);
94
+ const overrideColor = frag.get(19 /* OverrideColor */);
95
95
  if (undefined !== overrideColor) {
96
96
  frag.addFunction("vec4 overrideColor(vec4 currentColor)", overrideColor);
97
97
  prelude.addline(" output0 = overrideColor(output0);");
98
98
  }
99
- const overrideFeatureId = frag.get(16 /* OverrideFeatureId */);
99
+ const overrideFeatureId = frag.get(17 /* OverrideFeatureId */);
100
100
  if (undefined !== overrideFeatureId) {
101
101
  frag.addFunction("vec4 overrideFeatureId(vec4 currentId)", overrideFeatureId);
102
102
  prelude.addline(reassignFeatureId);
@@ -104,18 +104,18 @@ export function addPickBufferOutputs(frag) {
104
104
  addRenderPass(frag);
105
105
  if (System.instance.capabilities.supportsMRTPickShaders) {
106
106
  frag.addDrawBuffersExtension(3);
107
- frag.set(15 /* AssignFragData */, prelude.source + assignPickBufferOutputsMRT);
107
+ frag.set(16 /* AssignFragData */, prelude.source + assignPickBufferOutputsMRT);
108
108
  }
109
109
  else {
110
110
  addRenderTargetIndex(frag);
111
- frag.set(15 /* AssignFragData */, prelude.source + assignPickBufferOutputsMP);
111
+ frag.set(16 /* AssignFragData */, prelude.source + assignPickBufferOutputsMP);
112
112
  }
113
113
  }
114
114
  /** @internal */
115
115
  export function addAltPickBufferOutputs(frag) {
116
116
  const prelude = new SourceBuilder();
117
117
  prelude.add(computeAltPickBufferOutputs);
118
- const overrideColor = frag.get(18 /* OverrideColor */);
118
+ const overrideColor = frag.get(19 /* OverrideColor */);
119
119
  if (undefined !== overrideColor) {
120
120
  frag.addFunction("vec4 overrideColor(vec4 currentColor)", overrideColor);
121
121
  prelude.addline(" output0 = overrideColor(output0);");
@@ -123,23 +123,23 @@ export function addAltPickBufferOutputs(frag) {
123
123
  addRenderPass(frag);
124
124
  if (System.instance.capabilities.supportsMRTPickShaders) {
125
125
  frag.addDrawBuffersExtension(3);
126
- frag.set(15 /* AssignFragData */, prelude.source + assignPickBufferOutputsMRT);
126
+ frag.set(16 /* AssignFragData */, prelude.source + assignPickBufferOutputsMRT);
127
127
  }
128
128
  else {
129
129
  addRenderTargetIndex(frag);
130
- frag.set(15 /* AssignFragData */, prelude.source + assignPickBufferOutputsMP);
130
+ frag.set(16 /* AssignFragData */, prelude.source + assignPickBufferOutputsMP);
131
131
  }
132
132
  }
133
133
  /** @internal */
134
134
  export function addFragColorWithPreMultipliedAlpha(frag) {
135
135
  addRenderPass(frag);
136
- const overrideColor = frag.get(18 /* OverrideColor */);
136
+ const overrideColor = frag.get(19 /* OverrideColor */);
137
137
  if (undefined === overrideColor) {
138
- frag.set(15 /* AssignFragData */, assignFragColorWithPreMultipliedAlpha);
138
+ frag.set(16 /* AssignFragData */, assignFragColorWithPreMultipliedAlpha);
139
139
  }
140
140
  else {
141
141
  frag.addFunction("vec4 overrideColor(vec4 currentColor)", overrideColor);
142
- frag.set(15 /* AssignFragData */, overrideAndAssignFragColorWithPreMultipliedAlpha);
142
+ frag.set(16 /* AssignFragData */, overrideAndAssignFragColorWithPreMultipliedAlpha);
143
143
  }
144
144
  }
145
145
  /** @internal */
@@ -24,6 +24,6 @@ export function addLogDepth(builder) {
24
24
  });
25
25
  if (!System.instance.capabilities.isWebGL2)
26
26
  frag.addExtension("GL_EXT_frag_depth");
27
- frag.set(17 /* FinalizeDepth */, finalizeDepth);
27
+ frag.set(18 /* FinalizeDepth */, finalizeDepth);
28
28
  }
29
29
  //# sourceMappingURL=LogarithmicDepthBuffer.js.map
@@ -290,7 +290,7 @@ export function addFeaturePlanarClassifier(builder) {
290
290
  uniform.setUniform4fv(scratchBatchBaseComponents);
291
291
  });
292
292
  });
293
- frag.set(16 /* OverrideFeatureId */, overrideFeatureId);
293
+ frag.set(17 /* OverrideFeatureId */, overrideFeatureId);
294
294
  frag.addFunction(addUInt32s);
295
295
  }
296
296
  /** @internal */
@@ -379,8 +379,8 @@ export function addOverrideClassifierColor(builder, isThematic) {
379
379
  const haveOverrides = undefined !== builder.frag.find("v_feature_emphasis");
380
380
  builder.frag.addFunction(haveOverrides ? encodeNonLocatableWithFeatures : encodeNonLocatable);
381
381
  if (isThematic === 0 /* No */)
382
- builder.frag.set(18 /* OverrideColor */, haveOverrides ? overrideClassifierWithFeatures : overrideClassifierForClip);
382
+ builder.frag.set(19 /* OverrideColor */, haveOverrides ? overrideClassifierWithFeatures : overrideClassifierForClip);
383
383
  else
384
- builder.frag.set(18 /* OverrideColor */, haveOverrides ? overrideClassifierWithFeaturesForThematic : overrideClassifierForClipForThematic);
384
+ builder.frag.set(19 /* OverrideColor */, haveOverrides ? overrideClassifierWithFeaturesForThematic : overrideClassifierForClipForThematic);
385
385
  }
386
386
  //# sourceMappingURL=PlanarClassification.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RealityMesh.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/RealityMesh.ts"],"names":[],"mappings":"AAIA;;GAEG;AAMH,OAAO,EAAkD,cAAc,EAAuC,MAAM,kBAAkB,CAAC;AAEvI,OAAO,EAAsD,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAmKvG,gBAAgB;AAChB,wBAAgB,kCAAkC,IAAI,cAAc,CAInE;AAED,gBAAgB;AAChB,wBAAgB,wBAAwB,IAAI,cAAc,CAIzD;AAED,gBAAgB;AAChB,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAqEtF"}
1
+ {"version":3,"file":"RealityMesh.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/RealityMesh.ts"],"names":[],"mappings":"AAIA;;GAEG;AAMH,OAAO,EAAkD,cAAc,EAAuC,MAAM,kBAAkB,CAAC;AAEvI,OAAO,EAAsD,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAoKvG,gBAAgB;AAChB,wBAAgB,kCAAkC,IAAI,cAAc,CAInE;AAED,gBAAgB;AAChB,wBAAgB,wBAAwB,IAAI,cAAc,CAIzD;AAED,gBAAgB;AAChB,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAwEtF"}
@@ -21,6 +21,7 @@ import { addSolarShadowMap } from "./SolarShadowMapping";
21
21
  import { addClassificationTranslucencyDiscard, octDecodeNormal } from "./Surface";
22
22
  import { addThematicDisplay, getComputeThematicIndex } from "./Thematic";
23
23
  import { addModelViewProjectionMatrix, addNormalMatrix } from "./Vertex";
24
+ import { addWiremesh } from "./Wiremesh";
24
25
  const computePosition = "gl_PointSize = 1.0; return MAT_MVP * rawPos;";
25
26
  const computeNormal = `
26
27
  vec3 normal = octDecodeNormal(a_norm); // normal coming in for is already in world space
@@ -155,7 +156,7 @@ function createRealityMeshHiliterBuilder() {
155
156
  const vert = builder.vert;
156
157
  vert.set(9 /* ComputePosition */, computePosition);
157
158
  addModelViewProjectionMatrix(vert);
158
- builder.frag.set(15 /* AssignFragData */, assignFragColor);
159
+ builder.frag.set(16 /* AssignFragData */, assignFragColor);
159
160
  return builder;
160
161
  }
161
162
  /** @internal */
@@ -180,7 +181,7 @@ export default function createRealityMeshBuilder(flags) {
180
181
  addSolarShadowMap(builder, true);
181
182
  const frag = builder.frag;
182
183
  frag.addGlobal("featureIncrement", 2 /* Float */, "0.0");
183
- frag.set(16 /* OverrideFeatureId */, overrideFeatureId);
184
+ frag.set(17 /* OverrideFeatureId */, overrideFeatureId);
184
185
  let textureCount = System.instance.maxRealityImageryLayers;
185
186
  let gradientTextureUnit = TextureUnit.RealityMeshThematicGradient;
186
187
  const caps = System.instance.capabilities;
@@ -229,6 +230,8 @@ export default function createRealityMeshBuilder(flags) {
229
230
  addTextures(builder, textureCount);
230
231
  if (1 /* Yes */ === flags.isThematic)
231
232
  addThematicToRealityMesh(builder, gradientTextureUnit);
233
+ if (flags.isWiremesh)
234
+ addWiremesh(builder);
232
235
  return builder;
233
236
  }
234
237
  //# sourceMappingURL=RealityMesh.js.map