@itwin/core-frontend 3.2.0-dev.3 → 3.2.0-dev.30

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 (266) hide show
  1. package/CHANGELOG.md +48 -1
  2. package/lib/cjs/BriefcaseConnection.d.ts +35 -1
  3. package/lib/cjs/BriefcaseConnection.d.ts.map +1 -1
  4. package/lib/cjs/BriefcaseConnection.js +52 -1
  5. package/lib/cjs/BriefcaseConnection.js.map +1 -1
  6. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  7. package/lib/cjs/DisplayStyleState.js +6 -4
  8. package/lib/cjs/DisplayStyleState.js.map +1 -1
  9. package/lib/cjs/IModelApp.d.ts +2 -0
  10. package/lib/cjs/IModelApp.d.ts.map +1 -1
  11. package/lib/cjs/IModelApp.js +6 -3
  12. package/lib/cjs/IModelApp.js.map +1 -1
  13. package/lib/cjs/IModelConnection.d.ts +5 -2
  14. package/lib/cjs/IModelConnection.d.ts.map +1 -1
  15. package/lib/cjs/IModelConnection.js +11 -3
  16. package/lib/cjs/IModelConnection.js.map +1 -1
  17. package/lib/cjs/ImageUtil.d.ts +4 -2
  18. package/lib/cjs/ImageUtil.d.ts.map +1 -1
  19. package/lib/cjs/ImageUtil.js +8 -4
  20. package/lib/cjs/ImageUtil.js.map +1 -1
  21. package/lib/cjs/ViewManager.d.ts.map +1 -1
  22. package/lib/cjs/ViewManager.js +1 -0
  23. package/lib/cjs/ViewManager.js.map +1 -1
  24. package/lib/cjs/Viewport.d.ts.map +1 -1
  25. package/lib/cjs/Viewport.js +5 -1
  26. package/lib/cjs/Viewport.js.map +1 -1
  27. package/lib/cjs/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  28. package/lib/cjs/quantity-formatting/QuantityFormatter.js +2 -1
  29. package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
  30. package/lib/cjs/render/primitives/VertexTable.d.ts +1 -1
  31. package/lib/cjs/render/primitives/VertexTable.js +30 -2
  32. package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
  33. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  34. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js +7 -3
  35. package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  36. package/lib/cjs/render/webgl/DrawCommand.d.ts.map +1 -1
  37. package/lib/cjs/render/webgl/DrawCommand.js +2 -1
  38. package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
  39. package/lib/cjs/render/webgl/RealityMesh.d.ts +1 -0
  40. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  41. package/lib/cjs/render/webgl/RealityMesh.js +1 -0
  42. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  43. package/lib/cjs/render/webgl/ShaderBuilder.d.ts +5 -4
  44. package/lib/cjs/render/webgl/ShaderBuilder.d.ts.map +1 -1
  45. package/lib/cjs/render/webgl/ShaderBuilder.js +7 -6
  46. package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
  47. package/lib/cjs/render/webgl/Target.d.ts +3 -1
  48. package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
  49. package/lib/cjs/render/webgl/Target.js +9 -0
  50. package/lib/cjs/render/webgl/Target.js.map +1 -1
  51. package/lib/cjs/render/webgl/Technique.d.ts +4 -2
  52. package/lib/cjs/render/webgl/Technique.d.ts.map +1 -1
  53. package/lib/cjs/render/webgl/Technique.js +148 -120
  54. package/lib/cjs/render/webgl/Technique.js.map +1 -1
  55. package/lib/cjs/render/webgl/TechniqueFlags.d.ts +7 -3
  56. package/lib/cjs/render/webgl/TechniqueFlags.d.ts.map +1 -1
  57. package/lib/cjs/render/webgl/TechniqueFlags.js +17 -4
  58. package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
  59. package/lib/cjs/render/webgl/glsl/Animation.d.ts.map +1 -1
  60. package/lib/cjs/render/webgl/glsl/Animation.js +2 -0
  61. package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
  62. package/lib/cjs/render/webgl/glsl/Color.d.ts.map +1 -1
  63. package/lib/cjs/render/webgl/glsl/Color.js +8 -7
  64. package/lib/cjs/render/webgl/glsl/Color.js.map +1 -1
  65. package/lib/cjs/render/webgl/glsl/Decode.d.ts +2 -1
  66. package/lib/cjs/render/webgl/glsl/Decode.d.ts.map +1 -1
  67. package/lib/cjs/render/webgl/glsl/Decode.js +16 -2
  68. package/lib/cjs/render/webgl/glsl/Decode.js.map +1 -1
  69. package/lib/cjs/render/webgl/glsl/Edge.d.ts +2 -2
  70. package/lib/cjs/render/webgl/glsl/Edge.d.ts.map +1 -1
  71. package/lib/cjs/render/webgl/glsl/Edge.js +6 -19
  72. package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
  73. package/lib/cjs/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  74. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +0 -2
  75. package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  76. package/lib/cjs/render/webgl/glsl/PointString.d.ts +3 -3
  77. package/lib/cjs/render/webgl/glsl/PointString.d.ts.map +1 -1
  78. package/lib/cjs/render/webgl/glsl/PointString.js +6 -6
  79. package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
  80. package/lib/cjs/render/webgl/glsl/Polyline.d.ts +3 -3
  81. package/lib/cjs/render/webgl/glsl/Polyline.d.ts.map +1 -1
  82. package/lib/cjs/render/webgl/glsl/Polyline.js +6 -21
  83. package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
  84. package/lib/cjs/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  85. package/lib/cjs/render/webgl/glsl/RealityMesh.js +1 -3
  86. package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
  87. package/lib/cjs/render/webgl/glsl/Surface.d.ts +2 -2
  88. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  89. package/lib/cjs/render/webgl/glsl/Surface.js +50 -34
  90. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  91. package/lib/cjs/render/webgl/glsl/Vertex.d.ts +3 -3
  92. package/lib/cjs/render/webgl/glsl/Vertex.d.ts.map +1 -1
  93. package/lib/cjs/render/webgl/glsl/Vertex.js +143 -57
  94. package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
  95. package/lib/cjs/tile/IModelTileRequestChannels.d.ts +3 -3
  96. package/lib/cjs/tile/IModelTileRequestChannels.d.ts.map +1 -1
  97. package/lib/cjs/tile/IModelTileRequestChannels.js +7 -11
  98. package/lib/cjs/tile/IModelTileRequestChannels.js.map +1 -1
  99. package/lib/cjs/tile/OPCFormatInterpreter.d.ts.map +1 -1
  100. package/lib/cjs/tile/OPCFormatInterpreter.js +1 -2
  101. package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -1
  102. package/lib/cjs/tile/RealityTileLoader.d.ts +1 -1
  103. package/lib/cjs/tile/RealityTileLoader.d.ts.map +1 -1
  104. package/lib/cjs/tile/RealityTileLoader.js +29 -6
  105. package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
  106. package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
  107. package/lib/cjs/tile/TileAdmin.js +0 -5
  108. package/lib/cjs/tile/TileAdmin.js.map +1 -1
  109. package/lib/cjs/tile/TileRequestChannels.d.ts +0 -4
  110. package/lib/cjs/tile/TileRequestChannels.d.ts.map +1 -1
  111. package/lib/cjs/tile/TileRequestChannels.js +1 -6
  112. package/lib/cjs/tile/TileRequestChannels.js.map +1 -1
  113. package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
  114. package/lib/cjs/tile/map/ArcGisUtilities.js +13 -0
  115. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  116. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +0 -1
  117. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  118. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +12 -10
  119. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  120. package/lib/cjs/tile/map/MapTileTree.js +2 -2
  121. package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
  122. package/lib/cjs/tile/map/WmsCapabilities.d.ts +3 -2
  123. package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
  124. package/lib/cjs/tile/map/WmsCapabilities.js +11 -10
  125. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  126. package/lib/cjs/tools/PrimitiveTool.d.ts +3 -0
  127. package/lib/cjs/tools/PrimitiveTool.d.ts.map +1 -1
  128. package/lib/cjs/tools/PrimitiveTool.js +6 -0
  129. package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
  130. package/lib/cjs/tools/ToolAdmin.d.ts +1 -21
  131. package/lib/cjs/tools/ToolAdmin.d.ts.map +1 -1
  132. package/lib/cjs/tools/ToolAdmin.js +0 -17
  133. package/lib/cjs/tools/ToolAdmin.js.map +1 -1
  134. package/lib/esm/BriefcaseConnection.d.ts +35 -1
  135. package/lib/esm/BriefcaseConnection.d.ts.map +1 -1
  136. package/lib/esm/BriefcaseConnection.js +50 -0
  137. package/lib/esm/BriefcaseConnection.js.map +1 -1
  138. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  139. package/lib/esm/DisplayStyleState.js +6 -4
  140. package/lib/esm/DisplayStyleState.js.map +1 -1
  141. package/lib/esm/IModelApp.d.ts +2 -0
  142. package/lib/esm/IModelApp.d.ts.map +1 -1
  143. package/lib/esm/IModelApp.js +5 -2
  144. package/lib/esm/IModelApp.js.map +1 -1
  145. package/lib/esm/IModelConnection.d.ts +5 -2
  146. package/lib/esm/IModelConnection.d.ts.map +1 -1
  147. package/lib/esm/IModelConnection.js +12 -4
  148. package/lib/esm/IModelConnection.js.map +1 -1
  149. package/lib/esm/ImageUtil.d.ts +4 -2
  150. package/lib/esm/ImageUtil.d.ts.map +1 -1
  151. package/lib/esm/ImageUtil.js +8 -4
  152. package/lib/esm/ImageUtil.js.map +1 -1
  153. package/lib/esm/ViewManager.d.ts.map +1 -1
  154. package/lib/esm/ViewManager.js +1 -0
  155. package/lib/esm/ViewManager.js.map +1 -1
  156. package/lib/esm/Viewport.d.ts.map +1 -1
  157. package/lib/esm/Viewport.js +5 -1
  158. package/lib/esm/Viewport.js.map +1 -1
  159. package/lib/esm/quantity-formatting/QuantityFormatter.d.ts.map +1 -1
  160. package/lib/esm/quantity-formatting/QuantityFormatter.js +3 -2
  161. package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
  162. package/lib/esm/render/primitives/VertexTable.d.ts +1 -1
  163. package/lib/esm/render/primitives/VertexTable.js +30 -2
  164. package/lib/esm/render/primitives/VertexTable.js.map +1 -1
  165. package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +1 -1
  166. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js +7 -3
  167. package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
  168. package/lib/esm/render/webgl/DrawCommand.d.ts.map +1 -1
  169. package/lib/esm/render/webgl/DrawCommand.js +2 -1
  170. package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
  171. package/lib/esm/render/webgl/RealityMesh.d.ts +1 -0
  172. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  173. package/lib/esm/render/webgl/RealityMesh.js +1 -0
  174. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  175. package/lib/esm/render/webgl/ShaderBuilder.d.ts +5 -4
  176. package/lib/esm/render/webgl/ShaderBuilder.d.ts.map +1 -1
  177. package/lib/esm/render/webgl/ShaderBuilder.js +7 -6
  178. package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
  179. package/lib/esm/render/webgl/Target.d.ts +3 -1
  180. package/lib/esm/render/webgl/Target.d.ts.map +1 -1
  181. package/lib/esm/render/webgl/Target.js +9 -0
  182. package/lib/esm/render/webgl/Target.js.map +1 -1
  183. package/lib/esm/render/webgl/Technique.d.ts +4 -2
  184. package/lib/esm/render/webgl/Technique.d.ts.map +1 -1
  185. package/lib/esm/render/webgl/Technique.js +148 -120
  186. package/lib/esm/render/webgl/Technique.js.map +1 -1
  187. package/lib/esm/render/webgl/TechniqueFlags.d.ts +7 -3
  188. package/lib/esm/render/webgl/TechniqueFlags.d.ts.map +1 -1
  189. package/lib/esm/render/webgl/TechniqueFlags.js +17 -4
  190. package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
  191. package/lib/esm/render/webgl/glsl/Animation.d.ts.map +1 -1
  192. package/lib/esm/render/webgl/glsl/Animation.js +2 -0
  193. package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
  194. package/lib/esm/render/webgl/glsl/Color.d.ts.map +1 -1
  195. package/lib/esm/render/webgl/glsl/Color.js +8 -7
  196. package/lib/esm/render/webgl/glsl/Color.js.map +1 -1
  197. package/lib/esm/render/webgl/glsl/Decode.d.ts +2 -1
  198. package/lib/esm/render/webgl/glsl/Decode.d.ts.map +1 -1
  199. package/lib/esm/render/webgl/glsl/Decode.js +15 -1
  200. package/lib/esm/render/webgl/glsl/Decode.js.map +1 -1
  201. package/lib/esm/render/webgl/glsl/Edge.d.ts +2 -2
  202. package/lib/esm/render/webgl/glsl/Edge.d.ts.map +1 -1
  203. package/lib/esm/render/webgl/glsl/Edge.js +7 -20
  204. package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
  205. package/lib/esm/render/webgl/glsl/FeatureSymbology.d.ts.map +1 -1
  206. package/lib/esm/render/webgl/glsl/FeatureSymbology.js +1 -3
  207. package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
  208. package/lib/esm/render/webgl/glsl/PointString.d.ts +3 -3
  209. package/lib/esm/render/webgl/glsl/PointString.d.ts.map +1 -1
  210. package/lib/esm/render/webgl/glsl/PointString.js +6 -6
  211. package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
  212. package/lib/esm/render/webgl/glsl/Polyline.d.ts +3 -3
  213. package/lib/esm/render/webgl/glsl/Polyline.d.ts.map +1 -1
  214. package/lib/esm/render/webgl/glsl/Polyline.js +7 -22
  215. package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
  216. package/lib/esm/render/webgl/glsl/RealityMesh.d.ts.map +1 -1
  217. package/lib/esm/render/webgl/glsl/RealityMesh.js +1 -3
  218. package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
  219. package/lib/esm/render/webgl/glsl/Surface.d.ts +2 -2
  220. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  221. package/lib/esm/render/webgl/glsl/Surface.js +51 -35
  222. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  223. package/lib/esm/render/webgl/glsl/Vertex.d.ts +3 -3
  224. package/lib/esm/render/webgl/glsl/Vertex.d.ts.map +1 -1
  225. package/lib/esm/render/webgl/glsl/Vertex.js +142 -56
  226. package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
  227. package/lib/esm/tile/IModelTileRequestChannels.d.ts +3 -3
  228. package/lib/esm/tile/IModelTileRequestChannels.d.ts.map +1 -1
  229. package/lib/esm/tile/IModelTileRequestChannels.js +7 -11
  230. package/lib/esm/tile/IModelTileRequestChannels.js.map +1 -1
  231. package/lib/esm/tile/OPCFormatInterpreter.d.ts.map +1 -1
  232. package/lib/esm/tile/OPCFormatInterpreter.js +2 -3
  233. package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -1
  234. package/lib/esm/tile/RealityTileLoader.d.ts +1 -1
  235. package/lib/esm/tile/RealityTileLoader.d.ts.map +1 -1
  236. package/lib/esm/tile/RealityTileLoader.js +30 -7
  237. package/lib/esm/tile/RealityTileLoader.js.map +1 -1
  238. package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
  239. package/lib/esm/tile/TileAdmin.js +0 -5
  240. package/lib/esm/tile/TileAdmin.js.map +1 -1
  241. package/lib/esm/tile/TileRequestChannels.d.ts +0 -4
  242. package/lib/esm/tile/TileRequestChannels.d.ts.map +1 -1
  243. package/lib/esm/tile/TileRequestChannels.js +1 -6
  244. package/lib/esm/tile/TileRequestChannels.js.map +1 -1
  245. package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
  246. package/lib/esm/tile/map/ArcGisUtilities.js +13 -0
  247. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  248. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts +0 -1
  249. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  250. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +12 -10
  251. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  252. package/lib/esm/tile/map/MapTileTree.js +2 -2
  253. package/lib/esm/tile/map/MapTileTree.js.map +1 -1
  254. package/lib/esm/tile/map/WmsCapabilities.d.ts +3 -2
  255. package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
  256. package/lib/esm/tile/map/WmsCapabilities.js +11 -10
  257. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  258. package/lib/esm/tools/PrimitiveTool.d.ts +3 -0
  259. package/lib/esm/tools/PrimitiveTool.d.ts.map +1 -1
  260. package/lib/esm/tools/PrimitiveTool.js +6 -0
  261. package/lib/esm/tools/PrimitiveTool.js.map +1 -1
  262. package/lib/esm/tools/ToolAdmin.d.ts +1 -21
  263. package/lib/esm/tools/ToolAdmin.d.ts.map +1 -1
  264. package/lib/esm/tools/ToolAdmin.js +0 -17
  265. package/lib/esm/tools/ToolAdmin.js.map +1 -1
  266. package/package.json +20 -21
@@ -166,9 +166,9 @@ class VariedTechnique {
166
166
  this._clippingPrograms[index] = (0, ClippingProgram_1.createClippingProgram)(builder);
167
167
  (0, core_bentley_1.assert)(this._clippingPrograms[index] !== undefined);
168
168
  }
169
- addHiliteShader(gl, instanced, classified, create) {
170
- const builder = create(instanced, classified);
171
- scratchHiliteFlags.initForHilite(0, instanced, classified);
169
+ addHiliteShader(gl, instanced, classified, posType, create) {
170
+ const builder = create(instanced, classified, posType);
171
+ scratchHiliteFlags.initForHilite(0, instanced, classified, posType);
172
172
  this.addShader(builder, scratchHiliteFlags, gl);
173
173
  }
174
174
  addTranslucentShader(builder, flags, gl) {
@@ -229,38 +229,40 @@ class VariedTechnique {
229
229
  }
230
230
  }
231
231
  exports.VariedTechnique = VariedTechnique;
232
+ const positionTypes = ["quantized", "unquantized"];
232
233
  class SurfaceTechnique extends VariedTechnique {
233
234
  constructor(gl) {
234
- // 3 base classified variations - 1 per feature mode.
235
- // Plus thematic variant of each and shadowable variant of each = 9
236
- // Plus translucent variant of each of those = 18
237
- // Plus 1 hilite shader = 19
238
- super(SurfaceTechnique._kClassified + 19);
235
+ super(SurfaceTechnique._kUnquantized * 2);
239
236
  this._earlyZFlags = [
240
237
  TechniqueFlags_1.TechniqueFlags.fromDescription("Opaque-Hilite-Overrides"),
241
238
  TechniqueFlags_1.TechniqueFlags.fromDescription("Opaque-Instanced-Hilite-Overrides"),
242
239
  TechniqueFlags_1.TechniqueFlags.fromDescription("Opaque-Hilite-Classified"),
240
+ TechniqueFlags_1.TechniqueFlags.fromDescription("Unquantized-Opaque-Hilite-Overrides"),
241
+ TechniqueFlags_1.TechniqueFlags.fromDescription("Unquantized-Opaque-Instanced-Hilite-Overrides"),
242
+ TechniqueFlags_1.TechniqueFlags.fromDescription("Unquantized-Opaque-Hilite-Classified"),
243
243
  ];
244
244
  const flags = scratchTechniqueFlags;
245
- for (let instanced = 0 /* No */; instanced <= 1 /* Yes */; instanced++) {
246
- this.addHiliteShader(gl, instanced, 0 /* No */, Surface_1.createSurfaceHiliter);
247
- for (let iAnimate = 0 /* No */; iAnimate <= 1 /* Yes */; iAnimate++) {
248
- for (let shadowable = 0 /* No */; shadowable <= 1 /* Yes */; shadowable++) {
249
- for (let wiremesh = 0 /* No */; wiremesh <= 1 /* Yes */; wiremesh++) {
250
- for (let thematic = 0 /* No */; thematic <= 1 /* Yes */; thematic++) {
251
- for (let edgeTestNeeded = 0 /* No */; edgeTestNeeded <= 1 /* Yes */; edgeTestNeeded++) {
252
- for (const featureMode of featureModes) {
253
- for (let iTranslucent = 0; iTranslucent <= 1; iTranslucent++) {
254
- if (0 /* None */ !== featureMode || 0 /* No */ === edgeTestNeeded) {
255
- if (1 /* Yes */ === thematic && 1 /* Yes */ === shadowable)
256
- continue; // currently this combination is disallowed.
257
- flags.reset(featureMode, instanced, shadowable, thematic);
258
- flags.isAnimated = iAnimate;
259
- flags.isEdgeTestNeeded = edgeTestNeeded;
260
- flags.isTranslucent = 1 === iTranslucent;
261
- flags.isWiremesh = wiremesh;
262
- const builder = (0, Surface_1.createSurfaceBuilder)(flags);
263
- this.addShader(builder, flags, gl);
245
+ for (const posType of positionTypes) {
246
+ for (let instanced = 0 /* No */; instanced <= 1 /* Yes */; instanced++) {
247
+ this.addHiliteShader(gl, instanced, 0 /* No */, posType, Surface_1.createSurfaceHiliter);
248
+ for (let iAnimate = 0 /* No */; iAnimate <= 1 /* Yes */; iAnimate++) {
249
+ for (let shadowable = 0 /* No */; shadowable <= 1 /* Yes */; shadowable++) {
250
+ for (let wiremesh = 0 /* No */; wiremesh <= 1 /* Yes */; wiremesh++) {
251
+ for (let thematic = 0 /* No */; thematic <= 1 /* Yes */; thematic++) {
252
+ for (let edgeTestNeeded = 0 /* No */; edgeTestNeeded <= 1 /* Yes */; edgeTestNeeded++) {
253
+ for (const featureMode of featureModes) {
254
+ for (let iTranslucent = 0; iTranslucent <= 1; iTranslucent++) {
255
+ if (0 /* None */ !== featureMode || 0 /* No */ === edgeTestNeeded) {
256
+ if (1 /* Yes */ === thematic && 1 /* Yes */ === shadowable)
257
+ continue; // currently this combination is disallowed.
258
+ flags.reset(featureMode, instanced, shadowable, thematic, posType);
259
+ flags.isAnimated = iAnimate;
260
+ flags.isEdgeTestNeeded = edgeTestNeeded;
261
+ flags.isTranslucent = 1 === iTranslucent;
262
+ flags.isWiremesh = wiremesh;
263
+ const builder = (0, Surface_1.createSurfaceBuilder)(flags);
264
+ this.addShader(builder, flags, gl);
265
+ }
264
266
  }
265
267
  }
266
268
  }
@@ -270,20 +272,23 @@ class SurfaceTechnique extends VariedTechnique {
270
272
  }
271
273
  }
272
274
  }
273
- this.addHiliteShader(gl, 0 /* No */, 1 /* Yes */, Surface_1.createSurfaceHiliter);
274
- for (let translucent = 0; translucent < 2; translucent++) {
275
- for (let shadowable = 0 /* No */; shadowable <= 1 /* Yes */; shadowable++) {
276
- for (let thematic = 0 /* No */; thematic <= 1 /* Yes */; thematic++) {
277
- for (const featureMode of featureModes) {
278
- if (1 /* Yes */ === thematic && 1 /* Yes */ === shadowable)
279
- continue; // currently this combination is disallowed.
280
- flags.reset(featureMode, 0 /* No */, shadowable, thematic);
281
- flags.isClassified = 1 /* Yes */;
282
- flags.isTranslucent = (0 !== translucent);
283
- const builder = (0, Surface_1.createSurfaceBuilder)(flags);
284
- if (flags.isTranslucent)
285
- (0, Translucency_1.addTranslucency)(builder);
286
- this.addShader(builder, flags, gl);
275
+ this.addHiliteShader(gl, 0 /* No */, 1 /* Yes */, "quantized", Surface_1.createSurfaceHiliter);
276
+ this.addHiliteShader(gl, 0 /* No */, 1 /* Yes */, "unquantized", Surface_1.createSurfaceHiliter);
277
+ for (const posType of positionTypes) {
278
+ for (let translucent = 0; translucent < 2; translucent++) {
279
+ for (let shadowable = 0 /* No */; shadowable <= 1 /* Yes */; shadowable++) {
280
+ for (let thematic = 0 /* No */; thematic <= 1 /* Yes */; thematic++) {
281
+ for (const featureMode of featureModes) {
282
+ if (1 /* Yes */ === thematic && 1 /* Yes */ === shadowable)
283
+ continue; // currently this combination is disallowed.
284
+ flags.reset(featureMode, 0 /* No */, shadowable, thematic, posType);
285
+ flags.isClassified = 1 /* Yes */;
286
+ flags.isTranslucent = (0 !== translucent);
287
+ const builder = (0, Surface_1.createSurfaceBuilder)(flags);
288
+ if (flags.isTranslucent)
289
+ (0, Translucency_1.addTranslucency)(builder);
290
+ this.addShader(builder, flags, gl);
291
+ }
287
292
  }
288
293
  }
289
294
  }
@@ -293,13 +298,14 @@ class SurfaceTechnique extends VariedTechnique {
293
298
  get _debugDescription() { return "Surface"; }
294
299
  computeShaderIndex(flags) {
295
300
  (0, core_bentley_1.assert)(!(flags.isThematic && flags.isShadowable));
301
+ const idxOffset = flags.positionType === "unquantized" ? SurfaceTechnique._kUnquantized : 0;
296
302
  if (flags.isClassified) {
297
303
  (0, core_bentley_1.assert)(!flags.isAnimated);
298
304
  (0, core_bentley_1.assert)(!flags.isInstanced);
299
305
  (0, core_bentley_1.assert)(!flags.isEdgeTestNeeded);
300
306
  // First classified shader is for hilite
301
307
  if (flags.isHilite)
302
- return SurfaceTechnique._kClassified;
308
+ return SurfaceTechnique._kClassified + idxOffset;
303
309
  // The rest are organized in 3 groups of 6 - one group per feature mode.
304
310
  // Each group contains opaque, translucent, opaque+thematic, translucent+thematic, opaque+shadowable, and translucent+shadowable variants.
305
311
  let baseIndex = SurfaceTechnique._kClassified + 1;
@@ -310,11 +316,11 @@ class SurfaceTechnique extends VariedTechnique {
310
316
  if (flags.isThematic)
311
317
  baseIndex += 4;
312
318
  const featureOffset = 6 * flags.featureMode;
313
- return baseIndex + featureOffset;
319
+ return baseIndex + featureOffset + idxOffset;
314
320
  }
315
321
  else if (flags.isHilite) {
316
322
  (0, core_bentley_1.assert)(flags.hasFeatures);
317
- return SurfaceTechnique._kHilite + flags.isInstanced;
323
+ return SurfaceTechnique._kHilite + flags.isInstanced + idxOffset;
318
324
  }
319
325
  (0, core_bentley_1.assert)(flags.hasFeatures || flags.isEdgeTestNeeded === 0 /* No */);
320
326
  let index = flags.isTranslucent ? SurfaceTechnique._kTranslucent : SurfaceTechnique._kOpaque;
@@ -327,7 +333,7 @@ class SurfaceTechnique extends VariedTechnique {
327
333
  index += SurfaceTechnique._kEdgeTestNeeded + (flags.featureMode - 1) * SurfaceTechnique._kFeature;
328
334
  else
329
335
  index += SurfaceTechnique._kFeature * flags.featureMode;
330
- return index;
336
+ return index + idxOffset;
331
337
  }
332
338
  }
333
339
  SurfaceTechnique._kOpaque = 0;
@@ -343,49 +349,59 @@ SurfaceTechnique._kHilite = SurfaceTechnique._kEdgeTestNeeded + SurfaceTechnique
343
349
  // Classifiers are never animated or instanced. They do support shadows, thematic display, and translucency.
344
350
  // There are 3 base variations - 1 per feature mode - each with translucent/shadowed/thematic variants; plus 1 for hilite.
345
351
  SurfaceTechnique._kClassified = SurfaceTechnique._kHilite + numHiliteVariants;
352
+ // 3 base classified variations - 1 per feature mode.
353
+ // Plus thematic variant of each and shadowable variant of each = 9
354
+ // Plus translucent variant of each of those = 18
355
+ // Plus 1 hilite shader = 19
356
+ SurfaceTechnique._kUnquantized = SurfaceTechnique._kClassified + 19;
346
357
  class PolylineTechnique extends VariedTechnique {
347
358
  constructor(gl) {
348
- super(PolylineTechnique._kHilite + numHiliteVariants);
359
+ super(PolylineTechnique._kUnquantized * 2);
349
360
  this._earlyZFlags = [
350
361
  TechniqueFlags_1.TechniqueFlags.fromDescription("Opaque-Hilite-Overrides"),
351
362
  TechniqueFlags_1.TechniqueFlags.fromDescription("Opaque-Instanced-Hilite-Overrides"),
363
+ TechniqueFlags_1.TechniqueFlags.fromDescription("Unquantized-Opaque-Hilite-Overrides"),
364
+ TechniqueFlags_1.TechniqueFlags.fromDescription("Unquantized-Opaque-Instanced-Hilite-Overrides"),
352
365
  ];
353
366
  const flags = scratchTechniqueFlags;
354
- for (let instanced = 0 /* No */; instanced <= 1 /* Yes */; instanced++) {
355
- this.addHiliteShader(gl, instanced, 0 /* No */, Polyline_1.createPolylineHiliter);
356
- for (const featureMode of featureModes) {
357
- flags.reset(featureMode, instanced, 0 /* No */, 0 /* No */);
358
- const builder = (0, Polyline_1.createPolylineBuilder)(instanced);
359
- (0, Monochrome_1.addUnlitMonochrome)(builder.frag);
360
- // The translucent shaders do not need the element IDs.
361
- const builderTrans = (0, Polyline_1.createPolylineBuilder)(instanced);
362
- (0, Monochrome_1.addUnlitMonochrome)(builderTrans.frag);
363
- if (2 /* Overrides */ === featureMode) {
364
- (0, FeatureSymbology_1.addFeatureSymbology)(builderTrans, featureMode, 31 /* Linear */);
365
- (0, FeatureSymbology_1.addFeatureSymbology)(builder, featureMode, 31 /* Linear */);
366
- this.addTranslucentShader(builderTrans, flags, gl);
367
- }
368
- else {
369
- this.addTranslucentShader(builderTrans, flags, gl);
370
- (0, FeatureSymbology_1.addFeatureSymbology)(builder, featureMode, 0 /* None */);
367
+ for (const posType of positionTypes) {
368
+ for (let instanced = 0 /* No */; instanced <= 1 /* Yes */; instanced++) {
369
+ this.addHiliteShader(gl, instanced, 0 /* No */, posType, (inst, _class, pos) => (0, Polyline_1.createPolylineHiliter)(inst, pos));
370
+ for (const featureMode of featureModes) {
371
+ flags.reset(featureMode, instanced, 0 /* No */, 0 /* No */, posType);
372
+ const builder = (0, Polyline_1.createPolylineBuilder)(instanced, posType);
373
+ (0, Monochrome_1.addUnlitMonochrome)(builder.frag);
374
+ // The translucent shaders do not need the element IDs.
375
+ const builderTrans = (0, Polyline_1.createPolylineBuilder)(instanced, posType);
376
+ (0, Monochrome_1.addUnlitMonochrome)(builderTrans.frag);
377
+ if (2 /* Overrides */ === featureMode) {
378
+ (0, FeatureSymbology_1.addFeatureSymbology)(builderTrans, featureMode, 31 /* Linear */);
379
+ (0, FeatureSymbology_1.addFeatureSymbology)(builder, featureMode, 31 /* Linear */);
380
+ this.addTranslucentShader(builderTrans, flags, gl);
381
+ }
382
+ else {
383
+ this.addTranslucentShader(builderTrans, flags, gl);
384
+ (0, FeatureSymbology_1.addFeatureSymbology)(builder, featureMode, 0 /* None */);
385
+ }
386
+ this.addFeatureId(builder, featureMode);
387
+ flags.reset(featureMode, instanced, 0 /* No */, 0 /* No */, posType);
388
+ this.addShader(builder, flags, gl);
371
389
  }
372
- this.addFeatureId(builder, featureMode);
373
- flags.reset(featureMode, instanced, 0 /* No */, 0 /* No */);
374
- this.addShader(builder, flags, gl);
375
390
  }
376
391
  }
377
392
  this.finishConstruction();
378
393
  }
379
394
  get _debugDescription() { return "Polyline"; }
380
395
  computeShaderIndex(flags) {
396
+ const idxOffset = flags.positionType === "unquantized" ? PolylineTechnique._kUnquantized : 0;
381
397
  if (flags.isHilite) {
382
398
  (0, core_bentley_1.assert)(flags.hasFeatures);
383
- return PolylineTechnique._kHilite + flags.isInstanced;
399
+ return PolylineTechnique._kHilite + flags.isInstanced + idxOffset;
384
400
  }
385
401
  let index = flags.isTranslucent ? PolylineTechnique._kTranslucent : PolylineTechnique._kOpaque;
386
402
  index += PolylineTechnique._kFeature * flags.featureMode;
387
403
  index += PolylineTechnique._kInstanced * flags.isInstanced;
388
- return index;
404
+ return index + idxOffset;
389
405
  }
390
406
  }
391
407
  PolylineTechnique._kOpaque = 0;
@@ -393,34 +409,37 @@ PolylineTechnique._kTranslucent = 1;
393
409
  PolylineTechnique._kInstanced = 2;
394
410
  PolylineTechnique._kFeature = 4;
395
411
  PolylineTechnique._kHilite = numFeatureVariants(PolylineTechnique._kFeature);
412
+ PolylineTechnique._kUnquantized = PolylineTechnique._kHilite + numHiliteVariants;
396
413
  class EdgeTechnique extends VariedTechnique {
397
414
  constructor(gl, type) {
398
- super(numFeatureVariants(EdgeTechnique._kFeature));
415
+ super(EdgeTechnique._kUnquantized * 2);
399
416
  this._type = type;
400
417
  const flags = scratchTechniqueFlags;
401
- for (let instanced = 0 /* No */; instanced <= 1 /* Yes */; instanced++) {
402
- for (let iAnimate = 0 /* No */; iAnimate <= 1 /* Yes */; iAnimate++) {
403
- for (const featureMode of featureModes) {
404
- flags.reset(featureMode, instanced, 0 /* No */, 0 /* No */);
405
- flags.isAnimated = iAnimate;
406
- const builder = (0, Edge_1.createEdgeBuilder)(type, flags.isInstanced, flags.isAnimated);
407
- (0, Monochrome_1.addUnlitMonochrome)(builder.frag);
408
- // The translucent shaders do not need the element IDs.
409
- const builderTrans = (0, Edge_1.createEdgeBuilder)(type, flags.isInstanced, flags.isAnimated);
410
- (0, Monochrome_1.addUnlitMonochrome)(builderTrans.frag);
411
- if (2 /* Overrides */ === featureMode) {
412
- (0, FeatureSymbology_1.addFeatureSymbology)(builderTrans, featureMode, 31 /* Linear */);
413
- (0, FeatureSymbology_1.addFeatureSymbology)(builder, featureMode, 31 /* Linear */);
414
- this.addTranslucentShader(builderTrans, flags, gl);
415
- }
416
- else {
417
- this.addTranslucentShader(builderTrans, flags, gl);
418
- (0, FeatureSymbology_1.addFeatureSymbology)(builder, featureMode, 0 /* None */);
418
+ for (const posType of positionTypes) {
419
+ for (let instanced = 0 /* No */; instanced <= 1 /* Yes */; instanced++) {
420
+ for (let iAnimate = 0 /* No */; iAnimate <= 1 /* Yes */; iAnimate++) {
421
+ for (const featureMode of featureModes) {
422
+ flags.reset(featureMode, instanced, 0 /* No */, 0 /* No */, posType);
423
+ flags.isAnimated = iAnimate;
424
+ const builder = (0, Edge_1.createEdgeBuilder)(type, flags.isInstanced, flags.isAnimated, posType);
425
+ (0, Monochrome_1.addUnlitMonochrome)(builder.frag);
426
+ // The translucent shaders do not need the element IDs.
427
+ const builderTrans = (0, Edge_1.createEdgeBuilder)(type, flags.isInstanced, flags.isAnimated, posType);
428
+ (0, Monochrome_1.addUnlitMonochrome)(builderTrans.frag);
429
+ if (2 /* Overrides */ === featureMode) {
430
+ (0, FeatureSymbology_1.addFeatureSymbology)(builderTrans, featureMode, 31 /* Linear */);
431
+ (0, FeatureSymbology_1.addFeatureSymbology)(builder, featureMode, 31 /* Linear */);
432
+ this.addTranslucentShader(builderTrans, flags, gl);
433
+ }
434
+ else {
435
+ this.addTranslucentShader(builderTrans, flags, gl);
436
+ (0, FeatureSymbology_1.addFeatureSymbology)(builder, featureMode, 0 /* None */);
437
+ }
438
+ this.addFeatureId(builder, featureMode);
439
+ flags.reset(featureMode, instanced, 0 /* No */, 0 /* No */, posType);
440
+ flags.isAnimated = iAnimate;
441
+ this.addShader(builder, flags, gl);
419
442
  }
420
- this.addFeatureId(builder, featureMode);
421
- flags.reset(featureMode, instanced, 0 /* No */, 0 /* No */);
422
- flags.isAnimated = iAnimate;
423
- this.addShader(builder, flags, gl);
424
443
  }
425
444
  }
426
445
  }
@@ -434,6 +453,8 @@ class EdgeTechnique extends VariedTechnique {
434
453
  index += EdgeTechnique._kAnimated;
435
454
  if (flags.isInstanced)
436
455
  index += EdgeTechnique._kInstanced;
456
+ if ("unquantized" === flags.positionType)
457
+ index += EdgeTechnique._kUnquantized;
437
458
  return index;
438
459
  }
439
460
  }
@@ -442,45 +463,49 @@ EdgeTechnique._kTranslucent = 1;
442
463
  EdgeTechnique._kAnimated = 2;
443
464
  EdgeTechnique._kInstanced = 4;
444
465
  EdgeTechnique._kFeature = 8;
466
+ EdgeTechnique._kUnquantized = numFeatureVariants(EdgeTechnique._kFeature);
445
467
  class PointStringTechnique extends VariedTechnique {
446
468
  constructor(gl) {
447
- super((PointStringTechnique._kHilite + numHiliteVariants));
469
+ super(PointStringTechnique._kUnquantized * 2);
448
470
  const flags = scratchTechniqueFlags;
449
- for (let instanced = 0 /* No */; instanced <= 1 /* Yes */; instanced++) {
450
- this.addHiliteShader(gl, instanced, 0 /* No */, PointString_1.createPointStringHiliter);
451
- for (const featureMode of featureModes) {
452
- flags.reset(featureMode, instanced, 0 /* No */, 0 /* No */);
453
- const builder = (0, PointString_1.createPointStringBuilder)(instanced);
454
- (0, Monochrome_1.addUnlitMonochrome)(builder.frag);
455
- // The translucent shaders do not need the element IDs.
456
- const builderTrans = (0, PointString_1.createPointStringBuilder)(instanced);
457
- (0, Monochrome_1.addUnlitMonochrome)(builderTrans.frag);
458
- if (2 /* Overrides */ === featureMode) {
459
- (0, FeatureSymbology_1.addFeatureSymbology)(builderTrans, featureMode, 29 /* Point */);
460
- (0, FeatureSymbology_1.addFeatureSymbology)(builder, featureMode, 29 /* Point */);
461
- this.addTranslucentShader(builderTrans, flags, gl);
462
- }
463
- else {
464
- this.addTranslucentShader(builderTrans, flags, gl);
465
- (0, FeatureSymbology_1.addFeatureSymbology)(builder, featureMode, 0 /* None */);
471
+ for (const posType of positionTypes) {
472
+ for (let instanced = 0 /* No */; instanced <= 1 /* Yes */; instanced++) {
473
+ this.addHiliteShader(gl, instanced, 0 /* No */, posType, (inst, _class, pos) => (0, PointString_1.createPointStringHiliter)(inst, pos));
474
+ for (const featureMode of featureModes) {
475
+ flags.reset(featureMode, instanced, 0 /* No */, 0 /* No */, posType);
476
+ const builder = (0, PointString_1.createPointStringBuilder)(instanced, posType);
477
+ (0, Monochrome_1.addUnlitMonochrome)(builder.frag);
478
+ // The translucent shaders do not need the element IDs.
479
+ const builderTrans = (0, PointString_1.createPointStringBuilder)(instanced, posType);
480
+ (0, Monochrome_1.addUnlitMonochrome)(builderTrans.frag);
481
+ if (2 /* Overrides */ === featureMode) {
482
+ (0, FeatureSymbology_1.addFeatureSymbology)(builderTrans, featureMode, 29 /* Point */);
483
+ (0, FeatureSymbology_1.addFeatureSymbology)(builder, featureMode, 29 /* Point */);
484
+ this.addTranslucentShader(builderTrans, flags, gl);
485
+ }
486
+ else {
487
+ this.addTranslucentShader(builderTrans, flags, gl);
488
+ (0, FeatureSymbology_1.addFeatureSymbology)(builder, featureMode, 0 /* None */);
489
+ }
490
+ this.addFeatureId(builder, featureMode);
491
+ flags.reset(featureMode, instanced, 0 /* No */, 0 /* No */, posType);
492
+ this.addShader(builder, flags, gl);
466
493
  }
467
- this.addFeatureId(builder, featureMode);
468
- flags.reset(featureMode, instanced, 0 /* No */, 0 /* No */);
469
- this.addShader(builder, flags, gl);
470
494
  }
471
495
  }
472
496
  this.finishConstruction();
473
497
  }
474
498
  get _debugDescription() { return "PointString"; }
475
499
  computeShaderIndex(flags) {
500
+ const idxOffset = "quantized" === flags.positionType ? 0 : PointStringTechnique._kUnquantized;
476
501
  if (flags.isHilite) {
477
502
  (0, core_bentley_1.assert)(flags.hasFeatures);
478
- return PointStringTechnique._kHilite + flags.isInstanced;
503
+ return PointStringTechnique._kHilite + flags.isInstanced + idxOffset;
479
504
  }
480
505
  let index = flags.isTranslucent ? PointStringTechnique._kTranslucent : PointStringTechnique._kOpaque;
481
506
  index += PointStringTechnique._kFeature * flags.featureMode;
482
507
  index += PointStringTechnique._kInstanced * flags.isInstanced;
483
- return index;
508
+ return index + idxOffset;
484
509
  }
485
510
  }
486
511
  PointStringTechnique._kOpaque = 0;
@@ -488,6 +513,7 @@ PointStringTechnique._kTranslucent = 1;
488
513
  PointStringTechnique._kInstanced = 2;
489
514
  PointStringTechnique._kFeature = 4;
490
515
  PointStringTechnique._kHilite = numFeatureVariants(PointStringTechnique._kFeature);
516
+ PointStringTechnique._kUnquantized = PointStringTechnique._kHilite + numHiliteVariants;
491
517
  class PointCloudTechnique extends VariedTechnique {
492
518
  constructor(gl) {
493
519
  super(PointCloudTechnique._kHilite + 2);
@@ -496,12 +522,12 @@ class PointCloudTechnique extends VariedTechnique {
496
522
  TechniqueFlags_1.TechniqueFlags.fromDescription("Opaque-Hilite-Classified"),
497
523
  ];
498
524
  for (let iClassified = 0 /* No */; iClassified <= 1 /* Yes */; iClassified++) {
499
- this.addHiliteShader(gl, 0 /* No */, iClassified, () => (0, PointCloud_1.createPointCloudHiliter)(iClassified));
525
+ this.addHiliteShader(gl, 0 /* No */, iClassified, "quantized", (_inst, classified) => (0, PointCloud_1.createPointCloudHiliter)(classified));
500
526
  const flags = scratchTechniqueFlags;
501
527
  for (let thematic = 0 /* No */; thematic <= 1 /* Yes */; thematic++) {
502
528
  const pointCloudFeatureModes = [0 /* None */, 2 /* Overrides */];
503
529
  for (const featureMode of pointCloudFeatureModes) {
504
- flags.reset(featureMode, 0 /* No */, 0 /* No */, thematic);
530
+ flags.reset(featureMode, 0 /* No */, 0 /* No */, thematic, "quantized");
505
531
  flags.isClassified = iClassified;
506
532
  const builder = (0, PointCloud_1.createPointCloudBuilder)(flags.isClassified, featureMode, thematic);
507
533
  if (2 /* Overrides */ === featureMode) {
@@ -522,6 +548,7 @@ class PointCloudTechnique extends VariedTechnique {
522
548
  }
523
549
  get _debugDescription() { return "PointCloud"; }
524
550
  computeShaderIndex(flags) {
551
+ (0, core_bentley_1.assert)(flags.positionType === "quantized", "Unquantized point cloud positions not currently supported");
525
552
  if (flags.isHilite)
526
553
  return PointCloudTechnique._kHilite + flags.isClassified;
527
554
  else {
@@ -544,8 +571,8 @@ class RealityMeshTechnique extends VariedTechnique {
544
571
  TechniqueFlags_1.TechniqueFlags.fromDescription("Opaque-Hilite-Overrides"),
545
572
  TechniqueFlags_1.TechniqueFlags.fromDescription("Opaque-Hilite-Classified"),
546
573
  ];
547
- this.addHiliteShader(gl, 0 /* No */, 0 /* No */, RealityMesh_1.createRealityMeshHiliter);
548
- this.addHiliteShader(gl, 0 /* No */, 1 /* Yes */, RealityMesh_1.createClassifierRealityMeshHiliter);
574
+ this.addHiliteShader(gl, 0 /* No */, 0 /* No */, "quantized", RealityMesh_1.createRealityMeshHiliter);
575
+ this.addHiliteShader(gl, 0 /* No */, 1 /* Yes */, "quantized", RealityMesh_1.createClassifierRealityMeshHiliter);
549
576
  for (let iClassified = 0 /* No */; iClassified <= 1 /* Yes */; iClassified++) {
550
577
  for (let iTranslucent = 0; iTranslucent <= 1; iTranslucent++) {
551
578
  for (let shadowable = 0 /* No */; shadowable <= 1 /* Yes */; shadowable++) {
@@ -553,7 +580,7 @@ class RealityMeshTechnique extends VariedTechnique {
553
580
  for (let wiremesh = 0 /* No */; wiremesh <= 1 /* Yes */; wiremesh++) {
554
581
  const flags = scratchTechniqueFlags;
555
582
  for (const featureMode of featureModes) {
556
- flags.reset(featureMode, 0 /* No */, shadowable, thematic);
583
+ flags.reset(featureMode, 0 /* No */, shadowable, thematic, "quantized");
557
584
  flags.isClassified = iClassified;
558
585
  flags.isWiremesh = wiremesh;
559
586
  flags.isTranslucent = 1 === iTranslucent;
@@ -575,6 +602,7 @@ class RealityMeshTechnique extends VariedTechnique {
575
602
  }
576
603
  get _debugDescription() { return "RealityMesh"; }
577
604
  computeShaderIndex(flags) {
605
+ (0, core_bentley_1.assert)("quantized" === flags.positionType, "Unquantized reality mesh positions not currently supported.");
578
606
  if (flags.isHilite)
579
607
  return flags.isClassified ? 1 : 0;
580
608
  let ndx = 2;
@@ -731,7 +759,7 @@ class Techniques {
731
759
  const tech = this._list[pTech.techniqueId];
732
760
  if (pTech.specificShader !== undefined) { // if this entry consists of a specific shader, just compile that
733
761
  const flags = scratchTechniqueFlags;
734
- flags.reset(pTech.specificShader.featureMode, pTech.specificShader.isInstanced, pTech.specificShader.isShadowable, 0 /* No */);
762
+ flags.reset(pTech.specificShader.featureMode, pTech.specificShader.isInstanced, pTech.specificShader.isShadowable, 0 /* No */, "quantized");
735
763
  flags.isEdgeTestNeeded = pTech.specificShader.isEdgeTestedNeeded;
736
764
  flags.isTranslucent = pTech.specificShader.isTranslucent;
737
765
  shader = tech.getShader(flags);