@itwin/core-frontend 4.4.0-dev.8 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/CHANGELOG.md +40 -1
  2. package/lib/cjs/DisplayStyleState.d.ts +3 -0
  3. package/lib/cjs/DisplayStyleState.d.ts.map +1 -1
  4. package/lib/cjs/DisplayStyleState.js +10 -0
  5. package/lib/cjs/DisplayStyleState.js.map +1 -1
  6. package/lib/cjs/Viewport.d.ts +5 -0
  7. package/lib/cjs/Viewport.d.ts.map +1 -1
  8. package/lib/cjs/Viewport.js +6 -0
  9. package/lib/cjs/Viewport.js.map +1 -1
  10. package/lib/cjs/common/gltf/GltfSchema.d.ts +20 -3
  11. package/lib/cjs/common/gltf/GltfSchema.d.ts.map +1 -1
  12. package/lib/cjs/common/gltf/GltfSchema.js.map +1 -1
  13. package/lib/cjs/common/imdl/ImdlModel.d.ts +15 -1
  14. package/lib/cjs/common/imdl/ImdlModel.d.ts.map +1 -1
  15. package/lib/cjs/common/imdl/ImdlModel.js +11 -3
  16. package/lib/cjs/common/imdl/ImdlModel.js.map +1 -1
  17. package/lib/cjs/common/imdl/ParseImdlDocument.d.ts +3 -1
  18. package/lib/cjs/common/imdl/ParseImdlDocument.d.ts.map +1 -1
  19. package/lib/cjs/common/imdl/ParseImdlDocument.js +66 -11
  20. package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -1
  21. package/lib/cjs/render/GraphicBranch.d.ts +10 -0
  22. package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
  23. package/lib/cjs/render/GraphicBranch.js.map +1 -1
  24. package/lib/cjs/render/webgl/BranchState.d.ts +2 -0
  25. package/lib/cjs/render/webgl/BranchState.d.ts.map +1 -1
  26. package/lib/cjs/render/webgl/BranchState.js +2 -0
  27. package/lib/cjs/render/webgl/BranchState.js.map +1 -1
  28. package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
  29. package/lib/cjs/render/webgl/Graphic.js +3 -0
  30. package/lib/cjs/render/webgl/Graphic.js.map +1 -1
  31. package/lib/cjs/render/webgl/InstancedGeometry.d.ts +1 -0
  32. package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
  33. package/lib/cjs/render/webgl/InstancedGeometry.js +1 -0
  34. package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
  35. package/lib/cjs/render/webgl/RealityMesh.d.ts.map +1 -1
  36. package/lib/cjs/render/webgl/RealityMesh.js +6 -0
  37. package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
  38. package/lib/cjs/request/utils.d.ts +18 -0
  39. package/lib/cjs/request/utils.d.ts.map +1 -0
  40. package/lib/cjs/request/utils.js +45 -0
  41. package/lib/cjs/request/utils.js.map +1 -0
  42. package/lib/cjs/tile/BatchedTileIdMap.d.ts +1 -2
  43. package/lib/cjs/tile/BatchedTileIdMap.d.ts.map +1 -1
  44. package/lib/cjs/tile/BatchedTileIdMap.js +3 -3
  45. package/lib/cjs/tile/BatchedTileIdMap.js.map +1 -1
  46. package/lib/cjs/tile/GltfReader.d.ts +4 -1
  47. package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
  48. package/lib/cjs/tile/GltfReader.js +126 -21
  49. package/lib/cjs/tile/GltfReader.js.map +1 -1
  50. package/lib/cjs/tile/ImdlDecoder.d.ts +7 -1
  51. package/lib/cjs/tile/ImdlDecoder.d.ts.map +1 -1
  52. package/lib/cjs/tile/ImdlDecoder.js.map +1 -1
  53. package/lib/cjs/tile/ImdlGraphicsCreator.d.ts.map +1 -1
  54. package/lib/cjs/tile/ImdlGraphicsCreator.js +28 -17
  55. package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -1
  56. package/lib/cjs/tile/ImdlReader.d.ts +2 -1
  57. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  58. package/lib/cjs/tile/ImdlReader.js +1 -0
  59. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  60. package/lib/cjs/tile/RealityModelTileTree.d.ts.map +1 -1
  61. package/lib/cjs/tile/RealityModelTileTree.js +2 -3
  62. package/lib/cjs/tile/RealityModelTileTree.js.map +1 -1
  63. package/lib/cjs/tile/RealityTileTree.d.ts +31 -0
  64. package/lib/cjs/tile/RealityTileTree.d.ts.map +1 -1
  65. package/lib/cjs/tile/RealityTileTree.js +6 -0
  66. package/lib/cjs/tile/RealityTileTree.js.map +1 -1
  67. package/lib/cjs/tile/TileDrawArgs.d.ts +6 -0
  68. package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
  69. package/lib/cjs/tile/TileDrawArgs.js +7 -0
  70. package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
  71. package/lib/cjs/tile/TileTreeReference.d.ts +2 -0
  72. package/lib/cjs/tile/TileTreeReference.d.ts.map +1 -1
  73. package/lib/cjs/tile/TileTreeReference.js +5 -0
  74. package/lib/cjs/tile/TileTreeReference.js.map +1 -1
  75. package/lib/cjs/tile/map/ArcGISTileMap.d.ts +6 -2
  76. package/lib/cjs/tile/map/ArcGISTileMap.d.ts.map +1 -1
  77. package/lib/cjs/tile/map/ArcGISTileMap.js +127 -69
  78. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
  79. package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
  80. package/lib/cjs/tile/map/ArcGisUtilities.js +5 -0
  81. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  82. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  83. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +61 -39
  84. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  85. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
  86. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  87. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +6 -0
  88. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  89. package/lib/cjs/tile/map/MapLayerImageryProvider.js +47 -7
  90. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  91. package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
  92. package/lib/cjs/tile/map/WmsCapabilities.js +1 -15
  93. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  94. package/lib/cjs/tile/map/WmsUtilities.d.ts +7 -0
  95. package/lib/cjs/tile/map/WmsUtilities.d.ts.map +1 -1
  96. package/lib/cjs/tile/map/WmsUtilities.js +22 -0
  97. package/lib/cjs/tile/map/WmsUtilities.js.map +1 -1
  98. package/lib/cjs/tile/map/WmtsCapabilities.d.ts.map +1 -1
  99. package/lib/cjs/tile/map/WmtsCapabilities.js +2 -16
  100. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  101. package/lib/cjs/tools/SelectTool.d.ts +1 -0
  102. package/lib/cjs/tools/SelectTool.d.ts.map +1 -1
  103. package/lib/cjs/tools/SelectTool.js +19 -13
  104. package/lib/cjs/tools/SelectTool.js.map +1 -1
  105. package/lib/esm/DisplayStyleState.d.ts +3 -0
  106. package/lib/esm/DisplayStyleState.d.ts.map +1 -1
  107. package/lib/esm/DisplayStyleState.js +10 -0
  108. package/lib/esm/DisplayStyleState.js.map +1 -1
  109. package/lib/esm/Viewport.d.ts +5 -0
  110. package/lib/esm/Viewport.d.ts.map +1 -1
  111. package/lib/esm/Viewport.js +6 -0
  112. package/lib/esm/Viewport.js.map +1 -1
  113. package/lib/esm/common/gltf/GltfSchema.d.ts +20 -3
  114. package/lib/esm/common/gltf/GltfSchema.d.ts.map +1 -1
  115. package/lib/esm/common/gltf/GltfSchema.js.map +1 -1
  116. package/lib/esm/common/imdl/ImdlModel.d.ts +15 -1
  117. package/lib/esm/common/imdl/ImdlModel.d.ts.map +1 -1
  118. package/lib/esm/common/imdl/ImdlModel.js +11 -3
  119. package/lib/esm/common/imdl/ImdlModel.js.map +1 -1
  120. package/lib/esm/common/imdl/ParseImdlDocument.d.ts +3 -1
  121. package/lib/esm/common/imdl/ParseImdlDocument.d.ts.map +1 -1
  122. package/lib/esm/common/imdl/ParseImdlDocument.js +67 -12
  123. package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -1
  124. package/lib/esm/render/GraphicBranch.d.ts +10 -0
  125. package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
  126. package/lib/esm/render/GraphicBranch.js.map +1 -1
  127. package/lib/esm/render/webgl/BranchState.d.ts +2 -0
  128. package/lib/esm/render/webgl/BranchState.d.ts.map +1 -1
  129. package/lib/esm/render/webgl/BranchState.js +2 -0
  130. package/lib/esm/render/webgl/BranchState.js.map +1 -1
  131. package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
  132. package/lib/esm/render/webgl/Graphic.js +3 -0
  133. package/lib/esm/render/webgl/Graphic.js.map +1 -1
  134. package/lib/esm/render/webgl/InstancedGeometry.d.ts +1 -0
  135. package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
  136. package/lib/esm/render/webgl/InstancedGeometry.js +1 -0
  137. package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
  138. package/lib/esm/render/webgl/RealityMesh.d.ts.map +1 -1
  139. package/lib/esm/render/webgl/RealityMesh.js +6 -0
  140. package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
  141. package/lib/esm/request/utils.d.ts +18 -0
  142. package/lib/esm/request/utils.d.ts.map +1 -0
  143. package/lib/esm/request/utils.js +40 -0
  144. package/lib/esm/request/utils.js.map +1 -0
  145. package/lib/esm/tile/BatchedTileIdMap.d.ts +1 -2
  146. package/lib/esm/tile/BatchedTileIdMap.d.ts.map +1 -1
  147. package/lib/esm/tile/BatchedTileIdMap.js +3 -3
  148. package/lib/esm/tile/BatchedTileIdMap.js.map +1 -1
  149. package/lib/esm/tile/GltfReader.d.ts +4 -1
  150. package/lib/esm/tile/GltfReader.d.ts.map +1 -1
  151. package/lib/esm/tile/GltfReader.js +127 -22
  152. package/lib/esm/tile/GltfReader.js.map +1 -1
  153. package/lib/esm/tile/ImdlDecoder.d.ts +7 -1
  154. package/lib/esm/tile/ImdlDecoder.d.ts.map +1 -1
  155. package/lib/esm/tile/ImdlDecoder.js.map +1 -1
  156. package/lib/esm/tile/ImdlGraphicsCreator.d.ts.map +1 -1
  157. package/lib/esm/tile/ImdlGraphicsCreator.js +28 -17
  158. package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -1
  159. package/lib/esm/tile/ImdlReader.d.ts +2 -1
  160. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  161. package/lib/esm/tile/ImdlReader.js +1 -0
  162. package/lib/esm/tile/ImdlReader.js.map +1 -1
  163. package/lib/esm/tile/RealityModelTileTree.d.ts.map +1 -1
  164. package/lib/esm/tile/RealityModelTileTree.js +2 -3
  165. package/lib/esm/tile/RealityModelTileTree.js.map +1 -1
  166. package/lib/esm/tile/RealityTileTree.d.ts +31 -0
  167. package/lib/esm/tile/RealityTileTree.d.ts.map +1 -1
  168. package/lib/esm/tile/RealityTileTree.js +6 -0
  169. package/lib/esm/tile/RealityTileTree.js.map +1 -1
  170. package/lib/esm/tile/TileDrawArgs.d.ts +6 -0
  171. package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
  172. package/lib/esm/tile/TileDrawArgs.js +8 -1
  173. package/lib/esm/tile/TileDrawArgs.js.map +1 -1
  174. package/lib/esm/tile/TileTreeReference.d.ts +2 -0
  175. package/lib/esm/tile/TileTreeReference.d.ts.map +1 -1
  176. package/lib/esm/tile/TileTreeReference.js +5 -0
  177. package/lib/esm/tile/TileTreeReference.js.map +1 -1
  178. package/lib/esm/tile/map/ArcGISTileMap.d.ts +6 -2
  179. package/lib/esm/tile/map/ArcGISTileMap.d.ts.map +1 -1
  180. package/lib/esm/tile/map/ArcGISTileMap.js +130 -71
  181. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
  182. package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
  183. package/lib/esm/tile/map/ArcGisUtilities.js +5 -0
  184. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  185. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  186. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +61 -39
  187. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  188. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +1 -1
  189. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  190. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +6 -0
  191. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  192. package/lib/esm/tile/map/MapLayerImageryProvider.js +48 -8
  193. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  194. package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
  195. package/lib/esm/tile/map/WmsCapabilities.js +1 -15
  196. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  197. package/lib/esm/tile/map/WmsUtilities.d.ts +7 -0
  198. package/lib/esm/tile/map/WmsUtilities.d.ts.map +1 -1
  199. package/lib/esm/tile/map/WmsUtilities.js +22 -0
  200. package/lib/esm/tile/map/WmsUtilities.js.map +1 -1
  201. package/lib/esm/tile/map/WmtsCapabilities.d.ts.map +1 -1
  202. package/lib/esm/tile/map/WmtsCapabilities.js +2 -16
  203. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  204. package/lib/esm/tools/SelectTool.d.ts +1 -0
  205. package/lib/esm/tools/SelectTool.d.ts.map +1 -1
  206. package/lib/esm/tools/SelectTool.js +19 -13
  207. package/lib/esm/tools/SelectTool.js.map +1 -1
  208. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  209. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  210. package/package.json +20 -19
@@ -1 +1 @@
1
- {"version":3,"file":"RealityMesh.js","sourceRoot":"","sources":["../../../../src/render/webgl/RealityMesh.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose, disposeArray, IDisposable, UintArray } from \"@itwin/core-bentley\";\nimport { ColorDef, Quantization, RenderTexture } from \"@itwin/core-common\";\nimport { Matrix4d, Range2d, Range3d, Transform, Vector2d } from \"@itwin/core-geometry\";\nimport { GraphicBranch } from \"../GraphicBranch\";\nimport { RealityMeshGraphicParams } from \"../RealityMeshGraphicParams\";\nimport { RealityMeshParams } from \"../RealityMeshParams\";\nimport { RenderGraphic } from \"../RenderGraphic\";\nimport { RenderMemory } from \"../RenderMemory\";\nimport { RenderPlanarClassifier } from \"../RenderPlanarClassifier\";\nimport { RenderSystem, TerrainTexture } from \"../RenderSystem\";\nimport { BufferHandle, BufferParameters, QBufferHandle2d, QBufferHandle3d } from \"./AttributeBuffers\";\nimport { AttributeMap } from \"./AttributeMap\";\nimport { IndexedGeometry, IndexedGeometryParams } from \"./CachedGeometry\";\nimport { GL } from \"./GL\";\nimport { Matrix4 } from \"./Matrix\";\nimport { PlanarClassifier } from \"./PlanarClassifier\";\nimport { Primitive } from \"./Primitive\";\nimport { RenderOrder } from \"./RenderFlags\";\nimport { System } from \"./System\";\nimport { Target } from \"./Target\";\nimport { TechniqueId } from \"./TechniqueId\";\n\nconst scratchOverlapRange = Range2d.createNull();\nconst scratchBytes = new Uint8Array(4);\nconst scratchBatchBaseId = new Uint32Array(scratchBytes.buffer);\nconst scratchRange2d = Range2d.createNull();\nclass ProjectedTexture {\n public classifier: PlanarClassifier;\n constructor(classifier: RenderPlanarClassifier, public meshParams: RealityMeshGraphicParams, public targetRectangle: Range2d) {\n this.classifier = classifier as PlanarClassifier;\n }\n public clone(targetRectangle: Range2d) {\n return new ProjectedTexture(this.classifier, this.meshParams, targetRectangle.clone());\n }\n}\ntype TerrainOrProjectedTexture = TerrainTexture | ProjectedTexture;\n\nclass RealityTextureParam implements IDisposable {\n constructor(public texture: RenderTexture | undefined, private _projectedTextureOrMatrix: ProjectedTexture | Matrix4) { }\n public get isProjected() { return this._projectedTextureOrMatrix instanceof ProjectedTexture; }\n\n public dispose(): void {\n this.texture = dispose(this.texture);\n }\n\n /* There are two methods of applying a texture to a reality mesh. the first member of \"params\" denotes which\n method is to be used. A value of zero indicates a standard texture and one represents a classified texture.\n\n A standard (nonprojected) texture is generated by multiplying v_textCoord by the scaling and translation packed into the first row\n of \"matrix\". A clip rectangle is packed into second row of \"matrix\".\n\n A \"classified\" reality mesh texture is used for map layers. It does not uses v_texCoord, the texture coordinates\n are instead generated by a projection of the model position onto the X-Y plane. We only have eye position, not model position\n so the matrix in this case is a real transform matrix that contains a mapping from eye to model position\n followed by the model to texture projection.\n*/\n public getProjectionMatrix(): Matrix4d | undefined {\n return this._projectedTextureOrMatrix instanceof ProjectedTexture ? this._projectedTextureOrMatrix.classifier.projectionMatrix : undefined;\n }\n public getTerrainMatrix(): Matrix4 | undefined {\n return this._projectedTextureOrMatrix instanceof Matrix4 ? this._projectedTextureOrMatrix : undefined;\n }\n\n public getParams(result: Matrix4): Matrix4 {\n /** Entry 0 is 0 for */\n if (this._projectedTextureOrMatrix instanceof ProjectedTexture) {\n const projectedTexture = this._projectedTextureOrMatrix;\n\n result.data[0] = 1;\n result.data[1] = projectedTexture.classifier.textureImageCount;\n result.data[2] = projectedTexture.classifier.sourceTransparency === undefined ? 1.0 : (1.0 - projectedTexture.classifier.sourceTransparency);\n scratchBatchBaseId[0] = projectedTexture.classifier.baseBatchId;\n result.data[4] = scratchBytes[0];\n result.data[5] = scratchBytes[1];\n result.data[6] = scratchBytes[2];\n result.data[7] = scratchBytes[3];\n\n const points = [];\n const meshParams = projectedTexture.meshParams;\n // Calculate range in the tiles local coordinates.\n const low = meshParams.tileRectangle.worldToLocal(projectedTexture.targetRectangle.low, scratchRange2d.low)!;\n const high = meshParams.tileRectangle.worldToLocal(projectedTexture.targetRectangle.high, scratchRange2d.high)!;\n points.push(meshParams.projection.getGlobalPoint(low.x, low.y, 0));\n points.push(meshParams.projection.getGlobalPoint(high.x, low.y, 0));\n points.push(meshParams.projection.getGlobalPoint(high.x, high.y, 0));\n points.push(meshParams.projection.getGlobalPoint(low.x, high.y, 0));\n for (let i = 0, j = 8; i < 4; i++) {\n const projectedPoint = projectedTexture.classifier.projectionMatrix.multiplyPoint3dQuietNormalize(points[i]);\n result.data[j++] = projectedPoint.x;\n result.data[j++] = projectedPoint.y;\n }\n const x0 = result.data[10] - result.data[8], y0 = result.data[11] - result.data[9];\n const x1 = result.data[12] - result.data[8], y1 = result.data[13] - result.data[9];\n if (x0 * y1 - x1 * y0 < 0) {\n const swap = ((i: number, j: number) => {\n const temp = result.data[i];\n result.data[i] = result.data[j];\n result.data[j] = temp;\n });\n for (let i = 8, j = 14; i <= 10; i += 2, j -= 2) {\n swap(i, j);\n swap(i + 1, j + 1);\n }\n }\n } else {\n result.data[0] = 0;\n }\n return result;\n }\n}\n\n/** @internal */\nexport class RealityTextureParams implements IDisposable {\n constructor(public params: RealityTextureParam[]) { }\n public static create(textures: TerrainOrProjectedTexture[]) {\n const maxTexturesPerMesh = System.instance.maxRealityImageryLayers;\n assert(textures.length <= maxTexturesPerMesh);\n\n const textureParams = new Array<RealityTextureParam>();\n for (const texture of textures) {\n if (texture instanceof TerrainTexture) {\n const terrainTexture = texture;\n const matrix = new Matrix4(); // Published as Mat4.\n assert(terrainTexture.texture !== undefined, \"Texture not defined in TerrainTextureParams constructor\");\n matrix.data[0] = terrainTexture.translate.x;\n matrix.data[1] = terrainTexture.translate.y;\n matrix.data[2] = terrainTexture.scale.x;\n matrix.data[3] = terrainTexture.scale.y;\n\n if (terrainTexture.clipRectangle) {\n matrix.data[4] = terrainTexture.clipRectangle.low.x;\n matrix.data[5] = terrainTexture.clipRectangle.low.y;\n matrix.data[6] = terrainTexture.clipRectangle.high.x;\n matrix.data[7] = terrainTexture.clipRectangle.high.y;\n } else {\n matrix.data[4] = matrix.data[5] = 0;\n matrix.data[6] = matrix.data[7] = 1;\n }\n matrix.data[8] = (1.0 - terrainTexture.transparency);\n matrix.data[9] = terrainTexture.featureId;\n textureParams.push(new RealityTextureParam(terrainTexture.texture, matrix));\n } else {\n const classifier = texture.classifier;\n textureParams.push(new RealityTextureParam(classifier.getOrCreateClassifierTexture(), texture));\n }\n }\n\n for (let i = textures.length; i < maxTexturesPerMesh; i++) {\n const matrix = new Matrix4();\n matrix.data[0] = matrix.data[1] = 0.0;\n matrix.data[2] = matrix.data[3] = 1.0;\n matrix.data[4] = matrix.data[5] = 1;\n matrix.data[6] = matrix.data[7] = -1;\n matrix.data[15] = 0; // Denotes a terrain texture.\n textureParams.push(new RealityTextureParam(undefined, matrix));\n }\n return new RealityTextureParams(textureParams);\n }\n\n public dispose(): void {\n disposeArray(this.params);\n }\n}\n/** @internal */\n\nexport class RealityMeshGeometryParams extends IndexedGeometryParams {\n public readonly uvParams: QBufferHandle2d;\n public readonly featureID?: number;\n public readonly normals?: BufferHandle;\n public readonly numBytesPerIndex: 1 | 2 | 4;\n\n protected constructor(positions: QBufferHandle3d, normals: BufferHandle | undefined, uvParams: QBufferHandle2d, indices: BufferHandle, numIndices: number, numBytesPerIndex: 1 | 2 | 4, featureID?: number) {\n super(positions, indices, numIndices);\n this.numBytesPerIndex = numBytesPerIndex;\n let attrParams = AttributeMap.findAttribute(\"a_uvParam\", TechniqueId.RealityMesh, false);\n assert(attrParams !== undefined);\n this.buffers.addBuffer(uvParams, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedShort, false, 0, 0, false)]);\n this.uvParams = uvParams;\n\n if (undefined !== normals) {\n attrParams = AttributeMap.findAttribute(\"a_norm\", TechniqueId.RealityMesh, false);\n assert(attrParams !== undefined);\n if (normals.bytesUsed > 0)\n this.buffers.addBuffer(normals, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedByte, false, 0, 0, false)]);\n this.normals = normals;\n }\n this.featureID = featureID;\n }\n\n private static createFromBuffers(posBuf: QBufferHandle3d, uvParamBuf: QBufferHandle2d, indices: UintArray, normBuf: BufferHandle | undefined, featureID: number) {\n const indBuf = BufferHandle.createBuffer(GL.Buffer.Target.ElementArrayBuffer, indices);\n\n if (undefined === indBuf)\n return undefined;\n\n const bytesPerIndex = indices.BYTES_PER_ELEMENT;\n assert(1 === bytesPerIndex || 2 === bytesPerIndex || 4 === bytesPerIndex);\n return new RealityMeshGeometryParams(posBuf, normBuf, uvParamBuf, indBuf, indices.length, bytesPerIndex, featureID);\n\n }\n\n public static fromRealityMesh(params: RealityMeshParams) {\n const posBuf = QBufferHandle3d.create(params.positions.params, params.positions.points);\n const uvParamBuf = QBufferHandle2d.create(params.uvs.params, params.uvs.points);\n const normalBuf = params.normals ? BufferHandle.createArrayBuffer(params.normals) : undefined;\n return (undefined === posBuf || undefined === uvParamBuf) ? undefined : this.createFromBuffers(posBuf, uvParamBuf, params.indices, normalBuf, params.featureID ?? 0);\n }\n\n public override get isDisposed(): boolean {\n return super.isDisposed && this.uvParams.isDisposed;\n }\n public get bytesUsed(): number { return this.positions.bytesUsed + (undefined === this.normals ? 0 : this.normals.bytesUsed) + this.uvParams.bytesUsed + this.indices.bytesUsed; }\n\n public override dispose() {\n super.dispose();\n dispose(this.uvParams);\n }\n}\n\n/** @internal */\nexport class RealityMeshGeometry extends IndexedGeometry implements IDisposable, RenderMemory.Consumer {\n public readonly hasTextures: boolean;\n public override get asRealityMesh(): RealityMeshGeometry | undefined { return this; }\n public override get isDisposed(): boolean { return this._realityMeshParams.isDisposed; }\n public get uvQParams() { return this._realityMeshParams.uvParams.params; }\n public override get hasFeatures(): boolean { return this._realityMeshParams.featureID !== undefined; }\n public override get supportsThematicDisplay() { return true; }\n public get overrideColorMix() { return .5; } // This could be a setting from either the mesh or the override if required.\n public get transform(): Transform | undefined { return this._transform; }\n\n private _realityMeshParams: RealityMeshGeometryParams;\n private readonly _indexType: GL.DataType;\n public textureParams: RealityTextureParams | undefined;\n private readonly _transform: Transform | undefined;\n public readonly baseColor: ColorDef | undefined;\n private _baseIsTransparent: boolean;\n private _isTerrain: boolean;\n private _disableTextureDisposal: boolean;\n\n private constructor(props: {\n realityMeshParams: RealityMeshGeometryParams;\n textureParams?: RealityTextureParams;\n transform?: Transform;\n baseColor?: ColorDef;\n baseIsTransparent: boolean;\n isTerrain: boolean;\n disableTextureDisposal: boolean;\n }) {\n super(props.realityMeshParams);\n this._realityMeshParams = props.realityMeshParams;\n this.textureParams = props.textureParams;\n this._transform = props.transform;\n this.baseColor = props.baseColor;\n this._baseIsTransparent = props.baseIsTransparent;\n this._isTerrain = props.isTerrain;\n this._disableTextureDisposal = props.disableTextureDisposal;\n this.hasTextures = undefined !== this.textureParams && this.textureParams.params.some((x) => undefined !== x.texture);\n\n const bytesPerIndex = props.realityMeshParams.numBytesPerIndex;\n this._indexType = 1 === bytesPerIndex ? GL.DataType.UnsignedByte : (2 === bytesPerIndex ? GL.DataType.UnsignedShort : GL.DataType.UnsignedInt);\n }\n\n public override dispose() {\n super.dispose();\n dispose(this._realityMeshParams);\n if (true !== this._disableTextureDisposal)\n dispose(this.textureParams);\n }\n\n public static createForTerrain(mesh: RealityMeshParams, transform: Transform | undefined, disableTextureDisposal = false) {\n const params = RealityMeshGeometryParams.fromRealityMesh(mesh);\n if (!params)\n return undefined;\n\n return new RealityMeshGeometry({\n realityMeshParams: params,\n transform,\n baseIsTransparent: false,\n isTerrain: true,\n disableTextureDisposal,\n });\n }\n\n public static createFromRealityMesh(realityMesh: RealityMeshParams, disableTextureDisposal = false): RealityMeshGeometry | undefined {\n const params = RealityMeshGeometryParams.fromRealityMesh(realityMesh);\n if (!params)\n return undefined;\n const texture = realityMesh.texture ? new TerrainTexture(realityMesh.texture, realityMesh.featureID ?? 0, Vector2d.create(1.0, -1.0), Vector2d.create(0.0, 1.0), Range2d.createXYXY(0, 0, 1, 1), 0, 0) : undefined;\n\n return new RealityMeshGeometry({ realityMeshParams: params, textureParams: texture ? RealityTextureParams.create([texture]) : undefined, baseIsTransparent: false, isTerrain: false, disableTextureDisposal });\n }\n\n public getRange(): Range3d {\n return Range3d.createXYZXYZ(this.qOrigin[0], this.qOrigin[1], this.qOrigin[2], this.qOrigin[0] + Quantization.rangeScale16 * this.qScale[0], this.qOrigin[1] + Quantization.rangeScale16 * this.qScale[1], this.qOrigin[2] + Quantization.rangeScale16 * this.qScale[2]);\n }\n\n public static createGraphic(system: RenderSystem, params: RealityMeshGraphicParams, disableTextureDisposal = false): RenderGraphic | undefined {\n const meshes = [];\n const textures = params.textures ?? [];\n const realityMesh = params.realityMesh as RealityMeshGeometry;\n const { baseColor, baseTransparent, featureTable, tileId, layerClassifiers } = params;\n\n const texturesPerMesh = System.instance.maxRealityImageryLayers;\n const layers = new Array<(TerrainTexture | ProjectedTexture)[]>();\n // Collate the textures and classifiers layers into a single array.\n for (const texture of textures) {\n const layer = layers[texture.layerIndex];\n if (layer) {\n (layer as TerrainTexture[]).push(texture);\n } else {\n layers[texture.layerIndex] = [texture];\n }\n }\n params.layerClassifiers?.forEach((layerClassifier, layerIndex) => layers[layerIndex] = [new ProjectedTexture(layerClassifier, params, params.tileRectangle)]);\n\n if (layers.length < 2 && !layerClassifiers?.size && textures.length < texturesPerMesh) {\n // If only there is not more than one layer then we can group all of the textures into a single draw call.\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: RealityTextureParams.create(textures), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\n } else {\n let primaryLayer;\n while (primaryLayer === undefined)\n primaryLayer = layers.shift();\n if (!primaryLayer)\n return undefined;\n for (const primaryTexture of primaryLayer) {\n const targetRectangle = primaryTexture.targetRectangle;\n const overlapMinimum = 1.0E-5 * (targetRectangle.high.x - targetRectangle.low.x) * (targetRectangle.high.y - targetRectangle.low.y);\n let layerTextures = [primaryTexture];\n for (const secondaryLayer of layers) {\n if (!secondaryLayer)\n continue;\n for (const secondaryTexture of secondaryLayer) {\n if (secondaryTexture instanceof ProjectedTexture) {\n layerTextures.push(secondaryTexture.clone(targetRectangle));\n } else {\n const secondaryRectangle = secondaryTexture.targetRectangle;\n const overlap = targetRectangle.intersect(secondaryRectangle, scratchOverlapRange);\n if (!overlap.isNull && (overlap.high.x - overlap.low.x) * (overlap.high.y - overlap.low.y) > overlapMinimum) {\n const textureRange = Range2d.createXYXY(overlap.low.x, overlap.low.y, overlap.high.x, overlap.high.y);\n secondaryRectangle.worldToLocal(textureRange.low, textureRange.low);\n secondaryRectangle.worldToLocal(textureRange.high, textureRange.high);\n\n if (secondaryTexture.clipRectangle)\n textureRange.intersect(secondaryTexture.clipRectangle, textureRange);\n\n if (!textureRange.isNull && textureRange) {\n layerTextures.push(secondaryTexture.cloneWithClip(textureRange));\n }\n }\n }\n }\n }\n while (layerTextures.length > texturesPerMesh) {\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: RealityTextureParams.create(layerTextures.slice(0, texturesPerMesh)), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\n layerTextures = layerTextures.slice(texturesPerMesh);\n }\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: RealityTextureParams.create(layerTextures), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\n }\n }\n\n if (meshes.length === 0)\n return undefined;\n\n const branch = new GraphicBranch(true);\n for (const mesh of meshes) {\n const primitive = Primitive.create(mesh);\n branch.add(system.createBatch(primitive!, featureTable, mesh.getRange(), { tileId }));\n }\n\n return system.createBranch(branch, realityMesh._transform ? realityMesh._transform : Transform.createIdentity());\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n this._isTerrain ? stats.addTerrain(this._realityMeshParams.bytesUsed) : stats.addRealityMesh(this._realityMeshParams.bytesUsed);\n }\n\n public get techniqueId(): TechniqueId { return TechniqueId.RealityMesh; }\n\n public override getPass(target: Target) {\n if (this._baseIsTransparent || (target.wantThematicDisplay && target.uniforms.thematic.wantIsoLines))\n return \"translucent\";\n\n return \"opaque\";\n }\n public get renderOrder(): RenderOrder { return RenderOrder.UnlitSurface; }\n\n public override draw(): void {\n this._params.buffers.bind();\n System.instance.context.drawElements(GL.PrimitiveType.Triangles, this._params.numIndices, this._indexType, 0);\n this._params.buffers.unbind();\n }\n}\n"]}
1
+ {"version":3,"file":"RealityMesh.js","sourceRoot":"","sources":["../../../../src/render/webgl/RealityMesh.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module WebGL\n */\n\nimport { assert, dispose, disposeArray, IDisposable, UintArray } from \"@itwin/core-bentley\";\nimport { ColorDef, Quantization, RenderTexture } from \"@itwin/core-common\";\nimport { Matrix4d, Range2d, Range3d, Transform, Vector2d } from \"@itwin/core-geometry\";\nimport { GraphicBranch } from \"../GraphicBranch\";\nimport { RealityMeshGraphicParams } from \"../RealityMeshGraphicParams\";\nimport { RealityMeshParams } from \"../RealityMeshParams\";\nimport { RenderGraphic } from \"../RenderGraphic\";\nimport { RenderMemory } from \"../RenderMemory\";\nimport { RenderPlanarClassifier } from \"../RenderPlanarClassifier\";\nimport { RenderSystem, TerrainTexture } from \"../RenderSystem\";\nimport { BufferHandle, BufferParameters, QBufferHandle2d, QBufferHandle3d } from \"./AttributeBuffers\";\nimport { AttributeMap } from \"./AttributeMap\";\nimport { IndexedGeometry, IndexedGeometryParams } from \"./CachedGeometry\";\nimport { GL } from \"./GL\";\nimport { Matrix4 } from \"./Matrix\";\nimport { PlanarClassifier } from \"./PlanarClassifier\";\nimport { Primitive } from \"./Primitive\";\nimport { RenderOrder } from \"./RenderFlags\";\nimport { System } from \"./System\";\nimport { Target } from \"./Target\";\nimport { TechniqueId } from \"./TechniqueId\";\n\nconst scratchOverlapRange = Range2d.createNull();\nconst scratchBytes = new Uint8Array(4);\nconst scratchBatchBaseId = new Uint32Array(scratchBytes.buffer);\nconst scratchRange2d = Range2d.createNull();\nclass ProjectedTexture {\n public classifier: PlanarClassifier;\n constructor(classifier: RenderPlanarClassifier, public meshParams: RealityMeshGraphicParams, public targetRectangle: Range2d) {\n this.classifier = classifier as PlanarClassifier;\n }\n public clone(targetRectangle: Range2d) {\n return new ProjectedTexture(this.classifier, this.meshParams, targetRectangle.clone());\n }\n}\ntype TerrainOrProjectedTexture = TerrainTexture | ProjectedTexture;\n\nclass RealityTextureParam implements IDisposable {\n constructor(public texture: RenderTexture | undefined, private _projectedTextureOrMatrix: ProjectedTexture | Matrix4) { }\n public get isProjected() { return this._projectedTextureOrMatrix instanceof ProjectedTexture; }\n\n public dispose(): void {\n this.texture = dispose(this.texture);\n }\n\n /* There are two methods of applying a texture to a reality mesh. the first member of \"params\" denotes which\n method is to be used. A value of zero indicates a standard texture and one represents a classified texture.\n\n A standard (nonprojected) texture is generated by multiplying v_textCoord by the scaling and translation packed into the first row\n of \"matrix\". A clip rectangle is packed into second row of \"matrix\".\n\n A \"classified\" reality mesh texture is used for map layers. It does not uses v_texCoord, the texture coordinates\n are instead generated by a projection of the model position onto the X-Y plane. We only have eye position, not model position\n so the matrix in this case is a real transform matrix that contains a mapping from eye to model position\n followed by the model to texture projection.\n*/\n public getProjectionMatrix(): Matrix4d | undefined {\n return this._projectedTextureOrMatrix instanceof ProjectedTexture ? this._projectedTextureOrMatrix.classifier.projectionMatrix : undefined;\n }\n public getTerrainMatrix(): Matrix4 | undefined {\n return this._projectedTextureOrMatrix instanceof Matrix4 ? this._projectedTextureOrMatrix : undefined;\n }\n\n public getParams(result: Matrix4): Matrix4 {\n /** Entry 0 is 0 for */\n if (this._projectedTextureOrMatrix instanceof ProjectedTexture) {\n const projectedTexture = this._projectedTextureOrMatrix;\n\n result.data[0] = 1;\n result.data[1] = projectedTexture.classifier.textureImageCount;\n result.data[2] = projectedTexture.classifier.sourceTransparency === undefined ? 1.0 : (1.0 - projectedTexture.classifier.sourceTransparency);\n scratchBatchBaseId[0] = projectedTexture.classifier.baseBatchId;\n result.data[4] = scratchBytes[0];\n result.data[5] = scratchBytes[1];\n result.data[6] = scratchBytes[2];\n result.data[7] = scratchBytes[3];\n\n const points = [];\n const meshParams = projectedTexture.meshParams;\n // Calculate range in the tiles local coordinates.\n const low = meshParams.tileRectangle.worldToLocal(projectedTexture.targetRectangle.low, scratchRange2d.low)!;\n const high = meshParams.tileRectangle.worldToLocal(projectedTexture.targetRectangle.high, scratchRange2d.high)!;\n points.push(meshParams.projection.getGlobalPoint(low.x, low.y, 0));\n points.push(meshParams.projection.getGlobalPoint(high.x, low.y, 0));\n points.push(meshParams.projection.getGlobalPoint(high.x, high.y, 0));\n points.push(meshParams.projection.getGlobalPoint(low.x, high.y, 0));\n for (let i = 0, j = 8; i < 4; i++) {\n const projectedPoint = projectedTexture.classifier.projectionMatrix.multiplyPoint3dQuietNormalize(points[i]);\n result.data[j++] = projectedPoint.x;\n result.data[j++] = projectedPoint.y;\n }\n const x0 = result.data[10] - result.data[8], y0 = result.data[11] - result.data[9];\n const x1 = result.data[12] - result.data[8], y1 = result.data[13] - result.data[9];\n if (x0 * y1 - x1 * y0 < 0) {\n const swap = ((i: number, j: number) => {\n const temp = result.data[i];\n result.data[i] = result.data[j];\n result.data[j] = temp;\n });\n for (let i = 8, j = 14; i <= 10; i += 2, j -= 2) {\n swap(i, j);\n swap(i + 1, j + 1);\n }\n }\n } else {\n result.data[0] = 0;\n }\n return result;\n }\n}\n\n/** @internal */\nexport class RealityTextureParams implements IDisposable {\n constructor(public params: RealityTextureParam[]) { }\n public static create(textures: TerrainOrProjectedTexture[]) {\n const maxTexturesPerMesh = System.instance.maxRealityImageryLayers;\n assert(textures.length <= maxTexturesPerMesh);\n\n const textureParams = new Array<RealityTextureParam>();\n for (const texture of textures) {\n if (texture instanceof TerrainTexture) {\n const terrainTexture = texture;\n const matrix = new Matrix4(); // Published as Mat4.\n assert(terrainTexture.texture !== undefined, \"Texture not defined in TerrainTextureParams constructor\");\n matrix.data[0] = terrainTexture.translate.x;\n matrix.data[1] = terrainTexture.translate.y;\n matrix.data[2] = terrainTexture.scale.x;\n matrix.data[3] = terrainTexture.scale.y;\n\n if (terrainTexture.clipRectangle) {\n matrix.data[4] = terrainTexture.clipRectangle.low.x;\n matrix.data[5] = terrainTexture.clipRectangle.low.y;\n matrix.data[6] = terrainTexture.clipRectangle.high.x;\n matrix.data[7] = terrainTexture.clipRectangle.high.y;\n } else {\n matrix.data[4] = matrix.data[5] = 0;\n matrix.data[6] = matrix.data[7] = 1;\n }\n matrix.data[8] = (1.0 - terrainTexture.transparency);\n matrix.data[9] = terrainTexture.featureId;\n textureParams.push(new RealityTextureParam(terrainTexture.texture, matrix));\n } else {\n const classifier = texture.classifier;\n textureParams.push(new RealityTextureParam(classifier.getOrCreateClassifierTexture(), texture));\n }\n }\n\n for (let i = textures.length; i < maxTexturesPerMesh; i++) {\n const matrix = new Matrix4();\n matrix.data[0] = matrix.data[1] = 0.0;\n matrix.data[2] = matrix.data[3] = 1.0;\n matrix.data[4] = matrix.data[5] = 1;\n matrix.data[6] = matrix.data[7] = -1;\n matrix.data[15] = 0; // Denotes a terrain texture.\n textureParams.push(new RealityTextureParam(undefined, matrix));\n }\n return new RealityTextureParams(textureParams);\n }\n\n public dispose(): void {\n disposeArray(this.params);\n }\n}\n/** @internal */\n\nexport class RealityMeshGeometryParams extends IndexedGeometryParams {\n public readonly uvParams: QBufferHandle2d;\n public readonly featureID?: number;\n public readonly normals?: BufferHandle;\n public readonly numBytesPerIndex: 1 | 2 | 4;\n\n protected constructor(positions: QBufferHandle3d, normals: BufferHandle | undefined, uvParams: QBufferHandle2d, indices: BufferHandle, numIndices: number, numBytesPerIndex: 1 | 2 | 4, featureID?: number) {\n super(positions, indices, numIndices);\n this.numBytesPerIndex = numBytesPerIndex;\n let attrParams = AttributeMap.findAttribute(\"a_uvParam\", TechniqueId.RealityMesh, false);\n assert(attrParams !== undefined);\n this.buffers.addBuffer(uvParams, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedShort, false, 0, 0, false)]);\n this.uvParams = uvParams;\n\n if (undefined !== normals) {\n attrParams = AttributeMap.findAttribute(\"a_norm\", TechniqueId.RealityMesh, false);\n assert(attrParams !== undefined);\n if (normals.bytesUsed > 0)\n this.buffers.addBuffer(normals, [BufferParameters.create(attrParams.location, 2, GL.DataType.UnsignedByte, false, 0, 0, false)]);\n this.normals = normals;\n }\n this.featureID = featureID;\n }\n\n private static createFromBuffers(posBuf: QBufferHandle3d, uvParamBuf: QBufferHandle2d, indices: UintArray, normBuf: BufferHandle | undefined, featureID: number) {\n const indBuf = BufferHandle.createBuffer(GL.Buffer.Target.ElementArrayBuffer, indices);\n\n if (undefined === indBuf)\n return undefined;\n\n const bytesPerIndex = indices.BYTES_PER_ELEMENT;\n assert(1 === bytesPerIndex || 2 === bytesPerIndex || 4 === bytesPerIndex);\n return new RealityMeshGeometryParams(posBuf, normBuf, uvParamBuf, indBuf, indices.length, bytesPerIndex, featureID);\n\n }\n\n public static fromRealityMesh(params: RealityMeshParams) {\n const posBuf = QBufferHandle3d.create(params.positions.params, params.positions.points);\n const uvParamBuf = QBufferHandle2d.create(params.uvs.params, params.uvs.points);\n const normalBuf = params.normals ? BufferHandle.createArrayBuffer(params.normals) : undefined;\n return (undefined === posBuf || undefined === uvParamBuf) ? undefined : this.createFromBuffers(posBuf, uvParamBuf, params.indices, normalBuf, params.featureID ?? 0);\n }\n\n public override get isDisposed(): boolean {\n return super.isDisposed && this.uvParams.isDisposed;\n }\n public get bytesUsed(): number { return this.positions.bytesUsed + (undefined === this.normals ? 0 : this.normals.bytesUsed) + this.uvParams.bytesUsed + this.indices.bytesUsed; }\n\n public override dispose() {\n super.dispose();\n dispose(this.uvParams);\n }\n}\n\n/** @internal */\nexport class RealityMeshGeometry extends IndexedGeometry implements IDisposable, RenderMemory.Consumer {\n public readonly hasTextures: boolean;\n public override get asRealityMesh(): RealityMeshGeometry | undefined { return this; }\n public override get isDisposed(): boolean { return this._realityMeshParams.isDisposed; }\n public get uvQParams() { return this._realityMeshParams.uvParams.params; }\n public override get hasFeatures(): boolean { return this._realityMeshParams.featureID !== undefined; }\n public override get supportsThematicDisplay() { return true; }\n public get overrideColorMix() { return .5; } // This could be a setting from either the mesh or the override if required.\n public get transform(): Transform | undefined { return this._transform; }\n\n private _realityMeshParams: RealityMeshGeometryParams;\n private readonly _indexType: GL.DataType;\n public textureParams: RealityTextureParams | undefined;\n private readonly _transform: Transform | undefined;\n public readonly baseColor: ColorDef | undefined;\n private _baseIsTransparent: boolean;\n private _isTerrain: boolean;\n private _disableTextureDisposal: boolean;\n\n private constructor(props: {\n realityMeshParams: RealityMeshGeometryParams;\n textureParams?: RealityTextureParams;\n transform?: Transform;\n baseColor?: ColorDef;\n baseIsTransparent: boolean;\n isTerrain: boolean;\n disableTextureDisposal: boolean;\n }) {\n super(props.realityMeshParams);\n this._realityMeshParams = props.realityMeshParams;\n this.textureParams = props.textureParams;\n this._transform = props.transform;\n this.baseColor = props.baseColor;\n this._baseIsTransparent = props.baseIsTransparent;\n this._isTerrain = props.isTerrain;\n this._disableTextureDisposal = props.disableTextureDisposal;\n this.hasTextures = undefined !== this.textureParams && this.textureParams.params.some((x) => undefined !== x.texture);\n\n const bytesPerIndex = props.realityMeshParams.numBytesPerIndex;\n this._indexType = 1 === bytesPerIndex ? GL.DataType.UnsignedByte : (2 === bytesPerIndex ? GL.DataType.UnsignedShort : GL.DataType.UnsignedInt);\n }\n\n public override dispose() {\n super.dispose();\n dispose(this._realityMeshParams);\n if (true !== this._disableTextureDisposal)\n dispose(this.textureParams);\n }\n\n public static createForTerrain(mesh: RealityMeshParams, transform: Transform | undefined, disableTextureDisposal = false) {\n const params = RealityMeshGeometryParams.fromRealityMesh(mesh);\n if (!params)\n return undefined;\n\n return new RealityMeshGeometry({\n realityMeshParams: params,\n transform,\n baseIsTransparent: false,\n isTerrain: true,\n disableTextureDisposal,\n });\n }\n\n public static createFromRealityMesh(realityMesh: RealityMeshParams, disableTextureDisposal = false): RealityMeshGeometry | undefined {\n const params = RealityMeshGeometryParams.fromRealityMesh(realityMesh);\n if (!params)\n return undefined;\n const texture = realityMesh.texture ? new TerrainTexture(realityMesh.texture, realityMesh.featureID ?? 0, Vector2d.create(1.0, -1.0), Vector2d.create(0.0, 1.0), Range2d.createXYXY(0, 0, 1, 1), 0, 0) : undefined;\n\n return new RealityMeshGeometry({ realityMeshParams: params, textureParams: texture ? RealityTextureParams.create([texture]) : undefined, baseIsTransparent: false, isTerrain: false, disableTextureDisposal });\n }\n\n public getRange(): Range3d {\n return Range3d.createXYZXYZ(this.qOrigin[0], this.qOrigin[1], this.qOrigin[2], this.qOrigin[0] + Quantization.rangeScale16 * this.qScale[0], this.qOrigin[1] + Quantization.rangeScale16 * this.qScale[1], this.qOrigin[2] + Quantization.rangeScale16 * this.qScale[2]);\n }\n\n public static createGraphic(system: RenderSystem, params: RealityMeshGraphicParams, disableTextureDisposal = false): RenderGraphic | undefined {\n const meshes = [];\n const textures = params.textures ?? [];\n const realityMesh = params.realityMesh as RealityMeshGeometry;\n const { baseColor, baseTransparent, featureTable, tileId, layerClassifiers } = params;\n\n const texturesPerMesh = System.instance.maxRealityImageryLayers;\n const layers = new Array<(TerrainTexture | ProjectedTexture)[]>();\n // Collate the textures and classifiers layers into a single array.\n for (const texture of textures) {\n const layer = layers[texture.layerIndex];\n if (layer) {\n (layer as TerrainTexture[]).push(texture);\n } else {\n layers[texture.layerIndex] = [texture];\n }\n }\n params.layerClassifiers?.forEach((layerClassifier, layerIndex) => layers[layerIndex] = [new ProjectedTexture(layerClassifier, params, params.tileRectangle)]);\n\n if (layers.length < 2 && !layerClassifiers?.size && textures.length < texturesPerMesh) {\n // If only there is not more than one layer then we can group all of the textures into a single draw call.\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: RealityTextureParams.create(textures), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\n } else {\n let primaryLayer;\n while (primaryLayer === undefined)\n primaryLayer = layers.shift();\n if (!primaryLayer)\n return undefined;\n for (const primaryTexture of primaryLayer) {\n const targetRectangle = primaryTexture.targetRectangle;\n const overlapMinimum = 1.0E-5 * (targetRectangle.high.x - targetRectangle.low.x) * (targetRectangle.high.y - targetRectangle.low.y);\n let layerTextures = [primaryTexture];\n for (const secondaryLayer of layers) {\n if (!secondaryLayer)\n continue;\n for (const secondaryTexture of secondaryLayer) {\n if (secondaryTexture instanceof ProjectedTexture) {\n layerTextures.push(secondaryTexture.clone(targetRectangle));\n } else {\n const secondaryRectangle = secondaryTexture.targetRectangle;\n const overlap = targetRectangle.intersect(secondaryRectangle, scratchOverlapRange);\n if (!overlap.isNull && (overlap.high.x - overlap.low.x) * (overlap.high.y - overlap.low.y) > overlapMinimum) {\n const textureRange = Range2d.createXYXY(overlap.low.x, overlap.low.y, overlap.high.x, overlap.high.y);\n secondaryRectangle.worldToLocal(textureRange.low, textureRange.low);\n secondaryRectangle.worldToLocal(textureRange.high, textureRange.high);\n\n if (secondaryTexture.clipRectangle)\n textureRange.intersect(secondaryTexture.clipRectangle, textureRange);\n\n if (!textureRange.isNull && textureRange) {\n layerTextures.push(secondaryTexture.cloneWithClip(textureRange));\n }\n }\n }\n }\n }\n while (layerTextures.length > texturesPerMesh) {\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: RealityTextureParams.create(layerTextures.slice(0, texturesPerMesh)), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\n layerTextures = layerTextures.slice(texturesPerMesh);\n }\n meshes.push(new RealityMeshGeometry({ realityMeshParams: realityMesh._realityMeshParams, textureParams: RealityTextureParams.create(layerTextures), transform: realityMesh._transform, baseColor, baseIsTransparent: baseTransparent, isTerrain: realityMesh._isTerrain, disableTextureDisposal }));\n }\n }\n\n if (meshes.length === 0)\n return undefined;\n\n const branch = new GraphicBranch(true);\n for (const mesh of meshes) {\n const primitive = Primitive.create(mesh);\n branch.add(system.createBatch(primitive!, featureTable, mesh.getRange(), { tileId }));\n }\n\n return system.createBranch(branch, realityMesh._transform ? realityMesh._transform : Transform.createIdentity());\n }\n\n public collectStatistics(stats: RenderMemory.Statistics): void {\n this._isTerrain ? stats.addTerrain(this._realityMeshParams.bytesUsed) : stats.addRealityMesh(this._realityMeshParams.bytesUsed);\n if (this.textureParams?.params) {\n for (const param of this.textureParams.params) {\n if (param.texture?.bytesUsed)\n stats.addTexture(param.texture.bytesUsed);\n }\n }\n }\n\n public get techniqueId(): TechniqueId { return TechniqueId.RealityMesh; }\n\n public override getPass(target: Target) {\n if (this._baseIsTransparent || (target.wantThematicDisplay && target.uniforms.thematic.wantIsoLines))\n return \"translucent\";\n\n return \"opaque\";\n }\n public get renderOrder(): RenderOrder { return RenderOrder.UnlitSurface; }\n\n public override draw(): void {\n this._params.buffers.bind();\n System.instance.context.drawElements(GL.PrimitiveType.Triangles, this._params.numIndices, this._indexType, 0);\n this._params.buffers.unbind();\n }\n}\n"]}
@@ -0,0 +1,18 @@
1
+ import { RequestBasicCredentials } from "./Request";
2
+ /**
3
+ * Check whether or not one of the requested authentication method is listed in the HTTP 'WWW-Authenticate' response header
4
+ * @param headers Headers object
5
+ * @param query List of authentication method to lookup (case-insensitive)
6
+ * @note For CORS requests, the 'Access-Control-Expose-Headers' header from the server must make the 'WWW-Authenticate' available to the browser, otherwise this won't work.
7
+ * @internal
8
+ */
9
+ export declare function headersIncludeAuthMethod(headers: Headers, query: string[]): boolean;
10
+ /**
11
+ * Set the value of the 'Authorization' header with Basic authentication value
12
+ * scheme: 'Authorization: Basic <credentials>'
13
+ * @internal
14
+ */
15
+ export declare function setBasicAuthorization(headers: Headers, credentials: RequestBasicCredentials): void;
16
+ /** @internal */
17
+ export declare function setBasicAuthorization(headers: Headers, user: string, password: string): void;
18
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/request/utils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAEpD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAWnF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,uBAAuB,GAAG,IAAI,CAAC;AACpG,gBAAgB;AAChB,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.setBasicAuthorization = exports.headersIncludeAuthMethod = void 0;
8
+ const core_common_1 = require("@itwin/core-common");
9
+ /**
10
+ * Check whether or not one of the requested authentication method is listed in the HTTP 'WWW-Authenticate' response header
11
+ * @param headers Headers object
12
+ * @param query List of authentication method to lookup (case-insensitive)
13
+ * @note For CORS requests, the 'Access-Control-Expose-Headers' header from the server must make the 'WWW-Authenticate' available to the browser, otherwise this won't work.
14
+ * @internal
15
+ */
16
+ function headersIncludeAuthMethod(headers, query) {
17
+ const wwwAuthenticate = headers.get("WWW-authenticate");
18
+ const lowerCaseQuery = query.map(((value) => value.toLowerCase())); // not case-sensitive
19
+ if (wwwAuthenticate !== null) {
20
+ const authMethods = wwwAuthenticate.split(",").map(((value) => value.toLowerCase().trim()));
21
+ for (const queryValue of lowerCaseQuery) {
22
+ if (authMethods.includes(queryValue))
23
+ return true;
24
+ }
25
+ }
26
+ return false;
27
+ }
28
+ exports.headersIncludeAuthMethod = headersIncludeAuthMethod;
29
+ /** @internal */
30
+ function setBasicAuthorization(headers, userOrCreds, password) {
31
+ let username;
32
+ let pwd;
33
+ if (typeof userOrCreds === "string") {
34
+ username = userOrCreds;
35
+ pwd = password;
36
+ }
37
+ else {
38
+ username = userOrCreds.user;
39
+ pwd = userOrCreds.password;
40
+ }
41
+ if (username !== undefined && pwd !== undefined)
42
+ headers.set("Authorization", `Basic ${core_common_1.Base64EncodedString.encode(`${username}:${pwd}`)}`);
43
+ }
44
+ exports.setBasicAuthorization = setBasicAuthorization;
45
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/request/utils.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F,oDAAyD;AAGzD;;;;;;GAMG;AACH,SAAgB,wBAAwB,CAAC,OAAgB,EAAE,KAAe;IACxE,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAC,EAAE,CAAA,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAK,qBAAqB;IAC3F,IAAI,eAAe,KAAK,IAAI,EAAE;QAC5B,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAC,EAAE,CAAA,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1F,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE;YACvC,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAClC,OAAO,IAAI,CAAC;SACf;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAXD,4DAWC;AAUD,gBAAgB;AAChB,SAAgB,qBAAqB,CAAC,OAAgB,EAAE,WAA2C,EAAE,QAAiB;IACpH,IAAI,QAA0B,CAAC;IAC/B,IAAI,GAAqB,CAAC;IAC1B,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;QACnC,QAAQ,GAAG,WAAW,CAAC;QACvB,GAAG,GAAI,QAAQ,CAAC;KACjB;SAAM;QACL,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC;QAC5B,GAAG,GAAI,WAAW,CAAC,QAAQ,CAAC;KAC7B;IAED,IAAI,QAAQ,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS;QAC7C,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,iCAAmB,CAAC,MAAM,CAAC,GAAG,QAAQ,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9F,CAAC;AAbD,sDAaC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport { Base64EncodedString } from \"@itwin/core-common\";\nimport { RequestBasicCredentials } from \"./Request\";\n\n/**\n * Check whether or not one of the requested authentication method is listed in the HTTP 'WWW-Authenticate' response header\n * @param headers Headers object\n * @param query List of authentication method to lookup (case-insensitive)\n * @note For CORS requests, the 'Access-Control-Expose-Headers' header from the server must make the 'WWW-Authenticate' available to the browser, otherwise this won't work.\n * @internal\n */\nexport function headersIncludeAuthMethod(headers: Headers, query: string[]): boolean {\n const wwwAuthenticate = headers.get(\"WWW-authenticate\");\n const lowerCaseQuery = query.map(((value)=>value.toLowerCase())); // not case-sensitive\n if (wwwAuthenticate !== null) {\n const authMethods = wwwAuthenticate.split(\",\").map(((value)=>value.toLowerCase().trim()));\n for (const queryValue of lowerCaseQuery) {\n if (authMethods.includes(queryValue))\n return true;\n }\n }\n return false;\n}\n\n/**\n * Set the value of the 'Authorization' header with Basic authentication value\n * scheme: 'Authorization: Basic <credentials>'\n * @internal\n */\nexport function setBasicAuthorization(headers: Headers, credentials: RequestBasicCredentials): void;\n/** @internal */\nexport function setBasicAuthorization(headers: Headers, user: string, password: string): void;\n/** @internal */\nexport function setBasicAuthorization(headers: Headers, userOrCreds: string|RequestBasicCredentials, password?: string): void {\n let username: string|undefined;\n let pwd: string|undefined;\n if (typeof userOrCreds === \"string\") {\n username = userOrCreds;\n pwd = password;\n } else {\n username = userOrCreds.user;\n pwd = userOrCreds.password;\n }\n\n if (username !== undefined && pwd !== undefined)\n headers.set(\"Authorization\", `Basic ${Base64EncodedString.encode(`${username}:${pwd}`)}`);\n}\n\n"]}
@@ -15,7 +15,6 @@ export declare class BatchedTileIdMap {
15
15
  constructor(iModel: IModelConnection);
16
16
  /** Obtains or allocates the Id64String corresponding to the supplied set of JSON properties. */
17
17
  getBatchId(properties: any): Id64String;
18
- /** Obtain the JSON properties associated with the specified Id64String, or undefined if none exist. */
19
- getBatchProperties(id: Id64String): any;
18
+ getFeatureProperties(id: Id64String): Record<string, any> | undefined;
20
19
  }
21
20
  //# sourceMappingURL=BatchedTileIdMap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BatchedTileIdMap.d.ts","sourceRoot":"","sources":["../../../src/tile/BatchedTileIdMap.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,WAAW,CAAC,CAAmD;IACvE,OAAO,CAAC,MAAM,CAAC,CAAuB;gBAEnB,MAAM,EAAE,gBAAgB;IAI3C,gGAAgG;IACzF,UAAU,CAAC,UAAU,EAAE,GAAG,GAAG,UAAU;IAmB9C,uGAAuG;IAChG,kBAAkB,CAAC,EAAE,EAAE,UAAU,GAAG,GAAG;CAG/C"}
1
+ {"version":3,"file":"BatchedTileIdMap.d.ts","sourceRoot":"","sources":["../../../src/tile/BatchedTileIdMap.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAU,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,WAAW,CAAC,CAAmD;IACvE,OAAO,CAAC,MAAM,CAAC,CAAuB;gBAEnB,MAAM,EAAE,gBAAgB;IAI3C,gGAAgG;IACzF,UAAU,CAAC,UAAU,EAAE,GAAG,GAAG,UAAU;IAmBvC,oBAAoB,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS;CAI7E"}
@@ -35,9 +35,9 @@ class BatchedTileIdMap {
35
35
  }
36
36
  return entry.id;
37
37
  }
38
- /** Obtain the JSON properties associated with the specified Id64String, or undefined if none exist. */
39
- getBatchProperties(id) {
40
- return undefined !== this._idMap ? this._idMap.get(id) : undefined;
38
+ getFeatureProperties(id) {
39
+ const props = this._idMap?.get(id);
40
+ return typeof props === "object" ? props : undefined;
41
41
  }
42
42
  }
43
43
  exports.BatchedTileIdMap = BatchedTileIdMap;
@@ -1 +1 @@
1
- {"version":3,"file":"BatchedTileIdMap.js","sourceRoot":"","sources":["../../../src/tile/BatchedTileIdMap.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAyD;AAGzD;;;;GAIG;AACH,MAAa,gBAAgB;IAK3B,YAAmB,MAAwB;QACzC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,gGAAgG;IACzF,UAAU,CAAC,UAAe;QAC/B,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,EAAE;YAC/D,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,WAAW,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;YACpE,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAA+C,CAAC;YAC1E,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;SAC1C;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,SAAS,KAAK,KAAK,EAAE;YACvB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC/C,KAAK,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;SACjC;QAED,OAAO,KAAK,CAAC,EAAE,CAAC;IAClB,CAAC;IAED,uGAAuG;IAChG,kBAAkB,CAAC,EAAc;QACtC,OAAO,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,CAAC;CACF;AAjCD,4CAiCC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { assert, Id64String } from \"@itwin/core-bentley\";\nimport { IModelConnection } from \"../IModelConnection\";\n\n/**\n * Mapping between transient IDs assigned to 3D tiles \"features\" and batch table properties (and visa versa).\n * these properties may be present in batched tile sets.\n * @internal\n */\nexport class BatchedTileIdMap {\n private readonly _iModel: IModelConnection;\n private _featureMap?: Map<string, { id: Id64String, properties: any }>;\n private _idMap?: Map<Id64String, any>;\n\n public constructor(iModel: IModelConnection) {\n this._iModel = iModel;\n }\n\n /** Obtains or allocates the Id64String corresponding to the supplied set of JSON properties. */\n public getBatchId(properties: any): Id64String {\n if (undefined === this._featureMap || undefined === this._idMap) {\n assert(undefined === this._featureMap && undefined === this._idMap);\n this._featureMap = new Map<string, { id: Id64String, properties: any }>();\n this._idMap = new Map<Id64String, any>();\n }\n\n const key = JSON.stringify(properties);\n let entry = this._featureMap.get(key);\n if (undefined === entry) {\n const id = this._iModel.transientIds.getNext();\n entry = { id, properties };\n this._featureMap.set(key, entry);\n this._idMap.set(id, properties);\n }\n\n return entry.id;\n }\n\n /** Obtain the JSON properties associated with the specified Id64String, or undefined if none exist. */\n public getBatchProperties(id: Id64String): any {\n return undefined !== this._idMap ? this._idMap.get(id) : undefined;\n }\n}\n"]}
1
+ {"version":3,"file":"BatchedTileIdMap.js","sourceRoot":"","sources":["../../../src/tile/BatchedTileIdMap.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAyD;AAGzD;;;;GAIG;AACH,MAAa,gBAAgB;IAK3B,YAAmB,MAAwB;QACzC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,gGAAgG;IACzF,UAAU,CAAC,UAAe;QAC/B,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,EAAE;YAC/D,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,WAAW,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;YACpE,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAA+C,CAAC;YAC1E,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;SAC1C;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,SAAS,KAAK,KAAK,EAAE;YACvB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC/C,KAAK,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;SACjC;QAED,OAAO,KAAK,CAAC,EAAE,CAAC;IAClB,CAAC;IAEM,oBAAoB,CAAC,EAAc;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,CAAC;CACF;AAjCD,4CAiCC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tiles\n */\n\nimport { assert, Id64String } from \"@itwin/core-bentley\";\nimport { IModelConnection } from \"../IModelConnection\";\n\n/**\n * Mapping between transient IDs assigned to 3D tiles \"features\" and batch table properties (and visa versa).\n * these properties may be present in batched tile sets.\n * @internal\n */\nexport class BatchedTileIdMap {\n private readonly _iModel: IModelConnection;\n private _featureMap?: Map<string, { id: Id64String, properties: any }>;\n private _idMap?: Map<Id64String, any>;\n\n public constructor(iModel: IModelConnection) {\n this._iModel = iModel;\n }\n\n /** Obtains or allocates the Id64String corresponding to the supplied set of JSON properties. */\n public getBatchId(properties: any): Id64String {\n if (undefined === this._featureMap || undefined === this._idMap) {\n assert(undefined === this._featureMap && undefined === this._idMap);\n this._featureMap = new Map<string, { id: Id64String, properties: any }>();\n this._idMap = new Map<Id64String, any>();\n }\n\n const key = JSON.stringify(properties);\n let entry = this._featureMap.get(key);\n if (undefined === entry) {\n const id = this._iModel.transientIds.getNext();\n entry = { id, properties };\n this._featureMap.set(key, entry);\n this._idMap.set(id, properties);\n }\n\n return entry.id;\n }\n\n public getFeatureProperties(id: Id64String): Record<string, any> | undefined {\n const props = this._idMap?.get(id);\n return typeof props === \"object\" ? props : undefined;\n }\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  * @module Tiles
3
3
  */
4
4
  import { Point3d, Range2d, Range3d, Transform, Vector3d } from "@itwin/core-geometry";
5
- import { AxisAlignedBox3d, BatchType, ElementAlignedBox3d, Feature, FeatureTable, MeshPolylineList, QParams2d, QParams3d, RenderTexture, TextureMapping, TileReadStatus } from "@itwin/core-common";
5
+ import { AxisAlignedBox3d, BatchType, ElementAlignedBox3d, Feature, FeatureTable, MeshPolylineList, QParams2d, QParams3d, RenderTexture, TextureMapping, TileReadStatus, ViewFlagOverrides } from "@itwin/core-common";
6
6
  import { IModelConnection } from "../IModelConnection";
7
7
  import { PickableGraphicOptions } from "../render/GraphicBuilder";
8
8
  import { InstancedGraphicParams } from "../render/InstancedGraphicParams";
@@ -175,10 +175,12 @@ export declare abstract class GltfReader {
175
175
  * @throws Error if a node appears more than once during traversal
176
176
  */
177
177
  traverseScene(): Iterable<GltfNode>;
178
+ protected get viewFlagOverrides(): ViewFlagOverrides | undefined;
178
179
  private getTileTransform;
179
180
  protected readGltfAndCreateGraphics(isLeaf: boolean, featureTable: FeatureTable | undefined, contentRange: ElementAlignedBox3d | undefined, transformToRoot?: Transform, pseudoRtcBias?: Vector3d, instances?: InstancedGraphicParams): GltfReaderResult;
180
181
  readGltfAndCreateGeometry(transformToRoot?: Transform, needNormals?: boolean, needParams?: boolean): RealityTileGeometry;
181
182
  private graphicFromMeshData;
183
+ private readInstanceAttributes;
182
184
  private readNodeAndCreateGraphics;
183
185
  private readNodeAndCreatePolyfaces;
184
186
  private polyfaceFromGltfMesh;
@@ -327,6 +329,7 @@ export declare class GltfGraphicsReader extends GltfReader {
327
329
  private readonly _isLeaf;
328
330
  readonly binaryData?: Uint8Array;
329
331
  constructor(props: GltfReaderProps, args: ReadGltfGraphicsArgs);
332
+ protected get viewFlagOverrides(): ViewFlagOverrides;
330
333
  read(): Promise<GltfReaderResult>;
331
334
  get nodes(): GltfDictionary<GltfNode>;
332
335
  get scenes(): GltfDictionary<GltfScene>;
@@ -1 +1 @@
1
- {"version":3,"file":"GltfReader.d.ts","sourceRoot":"","sources":["../../../src/tile/GltfReader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GltfReader.d.ts","sourceRoot":"","sources":["../../../src/tile/GltfReader.ts"],"names":[],"mappings":"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"}
@@ -235,6 +235,17 @@ function colorFromMaterial(material, isTransparent) {
235
235
  color = color.withTransparency(0);
236
236
  return color;
237
237
  }
238
+ function trsMatrix(translation, rotation, scale, result) {
239
+ // SPEC: To compose the local transformation matrix, TRS properties MUST be converted to matrices and postmultiplied in the T * R * S order;
240
+ // first the scale is applied to the vertices, then the rotation, and then the translation.
241
+ const scaleTf = core_geometry_1.Transform.createRefs(undefined, scale ? core_geometry_1.Matrix3d.createScale(scale[0], scale[1], scale[2]) : core_geometry_1.Matrix3d.identity);
242
+ const rotTf = core_geometry_1.Transform.createRefs(undefined, rotation ? core_geometry_1.Matrix3d.createFromQuaternion(core_geometry_1.Point4d.create(rotation[0], rotation[1], rotation[2], rotation[3])) : core_geometry_1.Matrix3d.identity);
243
+ rotTf.matrix.transposeInPlace(); // See comment on Matrix3d.createFromQuaternion
244
+ const transTf = core_geometry_1.Transform.createTranslation(translation ? new core_geometry_1.Point3d(translation[0], translation[1], translation[2]) : core_geometry_1.Point3d.createZero());
245
+ const tf = scaleTf.multiplyTransformTransform(rotTf, result);
246
+ transTf.multiplyTransformTransform(tf, tf);
247
+ return tf;
248
+ }
238
249
  class TransformStack {
239
250
  constructor(transform) {
240
251
  this._stack = [];
@@ -255,14 +266,7 @@ class TransformStack {
255
266
  nodeTransform = core_geometry_1.Transform.createOriginAndMatrix(origin, matrix);
256
267
  }
257
268
  else if (node.rotation || node.scale || node.translation) {
258
- // SPEC: To compose the local transformation matrix, TRS properties MUST be converted to matrices and postmultiplied in the T * R * S order;
259
- // first the scale is applied to the vertices, then the rotation, and then the translation.
260
- const scale = core_geometry_1.Transform.createRefs(undefined, node.scale ? core_geometry_1.Matrix3d.createScale(node.scale[0], node.scale[1], node.scale[2]) : core_geometry_1.Matrix3d.identity);
261
- const rot = core_geometry_1.Transform.createRefs(undefined, node.rotation ? core_geometry_1.Matrix3d.createFromQuaternion(core_geometry_1.Point4d.create(node.rotation[0], node.rotation[1], node.rotation[2], node.rotation[3])) : core_geometry_1.Matrix3d.identity);
262
- rot.matrix.transposeInPlace(); // See comment on Matrix3d.createFromQuaternion
263
- const trans = core_geometry_1.Transform.createTranslation(node.translation ? new core_geometry_1.Point3d(node.translation[0], node.translation[1], node.translation[2]) : core_geometry_1.Point3d.createZero());
264
- nodeTransform = scale.multiplyTransformTransform(rot);
265
- trans.multiplyTransformTransform(nodeTransform, nodeTransform);
269
+ nodeTransform = trsMatrix(node.translation, node.rotation, node.scale);
266
270
  }
267
271
  const top = this.transform;
268
272
  if (!top)
@@ -315,6 +319,9 @@ class GltfReader {
315
319
  traverseScene() {
316
320
  return this.traverseNodes(this._sceneNodes);
317
321
  }
322
+ get viewFlagOverrides() {
323
+ return undefined;
324
+ }
318
325
  getTileTransform(transformToRoot, pseudoRtcBias) {
319
326
  let transform;
320
327
  if (this._returnToCenter || pseudoRtcBias || this._yAxisUp || transformToRoot) {
@@ -359,16 +366,23 @@ class GltfReader {
359
366
  else
360
367
  renderGraphic = this._system.createGraphicList(renderGraphicList);
361
368
  const transform = this.getTileTransform(transformToRoot, pseudoRtcBias);
369
+ // Compute range in tileset/world space.
362
370
  let range = contentRange;
363
371
  const invTransform = transform?.inverse();
364
372
  if (invTransform)
365
373
  range = invTransform.multiplyRange(contentRange);
374
+ // The batch range needs to be in tile coordinate space.
375
+ // If we computed the content range ourselves, it's already in tile space.
376
+ // If the content range was supplied by the caller, it's in tileset space and needs to be transformed to tile space.
366
377
  if (featureTable)
367
- renderGraphic = this._system.createBatch(renderGraphic, core_common_1.PackedFeatureTable.pack(featureTable), range);
368
- if (transform) {
378
+ renderGraphic = this._system.createBatch(renderGraphic, core_common_1.PackedFeatureTable.pack(featureTable), this._computedContentRange ? contentRange : range);
379
+ const viewFlagOverrides = this.viewFlagOverrides;
380
+ if (transform || viewFlagOverrides) {
369
381
  const branch = new GraphicBranch_1.GraphicBranch(true);
382
+ if (viewFlagOverrides)
383
+ branch.setViewFlagOverrides(viewFlagOverrides);
370
384
  branch.add(renderGraphic);
371
- renderGraphic = this._system.createBranch(branch, transform);
385
+ renderGraphic = this._system.createBranch(branch, transform ?? core_geometry_1.Transform.createIdentity());
372
386
  }
373
387
  return {
374
388
  readStatus,
@@ -416,12 +430,76 @@ class GltfReader {
416
430
  mesh.normals.push(new core_common_1.OctEncodedNormal(normal));
417
431
  return mesh.getGraphics(this._system, instances);
418
432
  }
419
- readNodeAndCreateGraphics(renderGraphicList, node, featureTable, transformStack, instances, pseudoRtcBias) {
433
+ readInstanceAttributes(node, featureTable) {
434
+ const ext = node.extensions?.EXT_mesh_gpu_instancing;
435
+ if (!ext || !ext.attributes) {
436
+ return undefined;
437
+ }
438
+ const translationsView = this.getBufferView(ext.attributes, "TRANSLATION");
439
+ const translations = translationsView?.toBufferData(GltfSchema_1.GltfDataType.Float);
440
+ const rotations = this.getBufferView(ext.attributes, "ROTATION")?.toBufferData(GltfSchema_1.GltfDataType.Float);
441
+ const scales = this.getBufferView(ext.attributes, "SCALE")?.toBufferData(GltfSchema_1.GltfDataType.Float);
442
+ // All attributes must specify the same count, count must be greater than zero, and at least one attribute must be specified.
443
+ const count = translations?.count ?? rotations?.count ?? scales?.count;
444
+ if (!count || (rotations && rotations.count !== count) || (scales && scales.count !== count)) {
445
+ return undefined;
446
+ }
447
+ const transformCenter = new core_geometry_1.Point3d();
448
+ const trMin = translationsView?.accessor.min;
449
+ const trMax = translationsView?.accessor.max;
450
+ if (trMin && trMax) {
451
+ const half = (idx) => trMin[idx] + (trMax[idx] - trMin[idx]) / 2;
452
+ transformCenter.set(half(0), half(1), half(2));
453
+ }
454
+ const getTranslation = (index) => {
455
+ if (!translations) {
456
+ return undefined;
457
+ }
458
+ index *= 3;
459
+ return [
460
+ translations.buffer[index + 0] - transformCenter.x,
461
+ translations.buffer[index + 1] - transformCenter.y,
462
+ translations.buffer[index + 2] - transformCenter.z,
463
+ ];
464
+ };
465
+ const getRotation = (index) => {
466
+ index *= 4;
467
+ return rotations ? [rotations.buffer[index], rotations.buffer[index + 1], rotations.buffer[index + 2], rotations.buffer[index + 3]] : undefined;
468
+ };
469
+ const getScale = (index) => {
470
+ index *= 3;
471
+ return scales ? [scales.buffer[index], scales.buffer[index + 1], scales.buffer[index + 2]] : undefined;
472
+ };
473
+ const transforms = new Float32Array(3 * 4 * count);
474
+ const transform = core_geometry_1.Transform.createIdentity();
475
+ for (let i = 0; i < count; i++) {
476
+ const tf = trsMatrix(getTranslation(i), getRotation(i), getScale(i), transform);
477
+ const idx = i * 3 * 4;
478
+ transforms[idx + 0] = tf.matrix.coffs[0];
479
+ transforms[idx + 1] = tf.matrix.coffs[1];
480
+ transforms[idx + 2] = tf.matrix.coffs[2];
481
+ transforms[idx + 3] = tf.origin.x;
482
+ transforms[idx + 4] = tf.matrix.coffs[3];
483
+ transforms[idx + 5] = tf.matrix.coffs[4];
484
+ transforms[idx + 6] = tf.matrix.coffs[5];
485
+ transforms[idx + 7] = tf.origin.y;
486
+ transforms[idx + 8] = tf.matrix.coffs[6];
487
+ transforms[idx + 9] = tf.matrix.coffs[7];
488
+ transforms[idx + 10] = tf.matrix.coffs[8];
489
+ transforms[idx + 11] = tf.origin.z;
490
+ }
491
+ // ###TODO? The extension currently provides no way of specifying per-instance feature Ids.
492
+ // For now, assume that if the feature table contains exactly one feature, all the instances belong to that feature.
493
+ const featureIds = featureTable && featureTable.isUniform ? new Uint8Array(3 * count) : undefined;
494
+ return { count, transforms, transformCenter, featureIds };
495
+ }
496
+ readNodeAndCreateGraphics(renderGraphicList, node, featureTable, transformStack, batchInstances, pseudoRtcBias) {
420
497
  if (undefined === node)
421
498
  return core_common_1.TileReadStatus.InvalidTileData;
422
499
  // IMPORTANT: Do not return without popping this node from the stack.
423
500
  transformStack.push(node);
424
501
  const thisTransform = transformStack.transform;
502
+ const nodeInstances = !batchInstances && undefined !== node.mesh ? this.readInstanceAttributes(node, featureTable) : undefined;
425
503
  /**
426
504
  * This is a workaround for tiles generated by
427
505
  * context capture which have a large offset from the tileset origin that exceeds the
@@ -436,16 +514,16 @@ class GltfReader {
436
514
  for (const meshKey of (0, GltfSchema_1.getGltfNodeMeshIds)(node)) {
437
515
  const nodeMesh = this._meshes[meshKey];
438
516
  if (nodeMesh?.primitives) {
439
- const meshes = this.readMeshPrimitives(node, featureTable, thisTransform, thisBias);
517
+ const meshes = this.readMeshPrimitives(node, featureTable, thisTransform, thisBias, nodeInstances);
440
518
  let renderGraphic;
441
519
  if (0 !== meshes.length) {
442
520
  if (1 === meshes.length) {
443
- renderGraphic = this.graphicFromMeshData(meshes[0], instances);
521
+ renderGraphic = this.graphicFromMeshData(meshes[0], batchInstances ?? nodeInstances);
444
522
  }
445
523
  else {
446
524
  const thisList = [];
447
525
  for (const mesh of meshes) {
448
- renderGraphic = this.graphicFromMeshData(mesh, instances);
526
+ renderGraphic = this.graphicFromMeshData(mesh, batchInstances ?? nodeInstances);
449
527
  if (undefined !== renderGraphic)
450
528
  thisList.push(renderGraphic);
451
529
  }
@@ -467,7 +545,7 @@ class GltfReader {
467
545
  for (const childId of node.children) {
468
546
  const child = this._nodes[childId];
469
547
  if (child)
470
- this.readNodeAndCreateGraphics(renderGraphicList, child, featureTable, transformStack, instances);
548
+ this.readNodeAndCreateGraphics(renderGraphicList, child, featureTable, transformStack, batchInstances ?? nodeInstances);
471
549
  }
472
550
  }
473
551
  transformStack.pop();
@@ -696,9 +774,9 @@ class GltfReader {
696
774
  // DisplayParams doesn't want a separate texture mapping if the material already has one.
697
775
  textureMapping = undefined;
698
776
  }
699
- return new DisplayParams_1.DisplayParams(DisplayParams_1.DisplayParams.Type.Mesh, color, color, 1, core_common_1.LinePixels.Solid, core_common_1.FillFlags.Always, renderMaterial, undefined, hasBakedLighting, textureMapping);
777
+ return new DisplayParams_1.DisplayParams(DisplayParams_1.DisplayParams.Type.Mesh, color, color, 1, core_common_1.LinePixels.Solid, core_common_1.FillFlags.None, renderMaterial, undefined, hasBakedLighting, textureMapping);
700
778
  }
701
- readMeshPrimitives(node, featureTable, thisTransform, thisBias) {
779
+ readMeshPrimitives(node, featureTable, thisTransform, thisBias, instances) {
702
780
  const meshes = [];
703
781
  for (const meshKey of (0, GltfSchema_1.getGltfNodeMeshIds)(node)) {
704
782
  const nodeMesh = this._meshes[meshKey];
@@ -708,9 +786,30 @@ class GltfReader {
708
786
  if (mesh) {
709
787
  meshes.push(mesh);
710
788
  if (this._computedContentRange && mesh.pointRange) {
711
- const invTransform = thisTransform?.inverse();
712
- const meshRange = invTransform ? invTransform.multiplyRange(mesh.pointRange) : mesh.pointRange;
713
- this._computedContentRange.extendRange(meshRange);
789
+ const meshRange = thisTransform ? thisTransform.multiplyRange(mesh.pointRange) : mesh.pointRange;
790
+ if (!instances) {
791
+ this._computedContentRange.extendRange(meshRange);
792
+ }
793
+ else {
794
+ const tfs = instances.transforms;
795
+ const nodeRange = new core_geometry_1.Range3d();
796
+ const extendTransformedRange = (i, x, y, z) => {
797
+ nodeRange.extendXYZ(tfs[i + 3] + tfs[i + 0] * x + tfs[i + 1] * y + tfs[i + 2] * z, tfs[i + 7] + tfs[i + 4] * x + tfs[i + 5] * y + tfs[i + 6] * z, tfs[i + 11] + tfs[i + 8] * x + tfs[i + 9] * y + tfs[i + 10] * z);
798
+ };
799
+ for (let i = 0; i < tfs.length; i += 3 * 4) {
800
+ extendTransformedRange(i, meshRange.low.x, meshRange.low.y, meshRange.low.z);
801
+ extendTransformedRange(i, meshRange.low.x, meshRange.low.y, meshRange.high.z);
802
+ extendTransformedRange(i, meshRange.low.x, meshRange.high.y, meshRange.low.z);
803
+ extendTransformedRange(i, meshRange.low.x, meshRange.high.y, meshRange.high.z);
804
+ extendTransformedRange(i, meshRange.high.x, meshRange.low.y, meshRange.low.z);
805
+ extendTransformedRange(i, meshRange.high.x, meshRange.low.y, meshRange.high.z);
806
+ extendTransformedRange(i, meshRange.high.x, meshRange.high.y, meshRange.low.z);
807
+ extendTransformedRange(i, meshRange.high.x, meshRange.high.y, meshRange.high.z);
808
+ }
809
+ nodeRange.low.addInPlace(instances.transformCenter);
810
+ nodeRange.high.addInPlace(instances.transformCenter);
811
+ this._computedContentRange.extendRange(nodeRange);
812
+ }
714
813
  }
715
814
  }
716
815
  }
@@ -1448,6 +1547,12 @@ class GltfGraphicsReader extends GltfReader {
1448
1547
  this._featureTable.insert(new core_common_1.Feature(pickableId));
1449
1548
  }
1450
1549
  }
1550
+ get viewFlagOverrides() {
1551
+ return {
1552
+ whiteOnWhiteReversal: false,
1553
+ renderMode: core_common_1.RenderMode.SmoothShade,
1554
+ };
1555
+ }
1451
1556
  async read() {
1452
1557
  await this.resolveResources();
1453
1558
  return this.readGltfAndCreateGraphics(this._isLeaf, this._featureTable, this._contentRange, this._transform);