@itwin/core-frontend 3.0.0-dev.136 → 3.0.0-dev.141

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 (235) hide show
  1. package/lib/cjs/AccuSnap.js +3 -3
  2. package/lib/cjs/AccuSnap.js.map +1 -1
  3. package/lib/cjs/ApproximateTerrainHeights.d.ts.map +1 -1
  4. package/lib/cjs/ApproximateTerrainHeights.js +2 -1
  5. package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
  6. package/lib/cjs/HitDetail.js +7 -7
  7. package/lib/cjs/HitDetail.js.map +1 -1
  8. package/lib/cjs/IModelApp.d.ts +15 -5
  9. package/lib/cjs/IModelApp.d.ts.map +1 -1
  10. package/lib/cjs/IModelApp.js +13 -8
  11. package/lib/cjs/IModelApp.js.map +1 -1
  12. package/lib/cjs/IModelConnection.d.ts +1 -1
  13. package/lib/cjs/IModelConnection.js +1 -1
  14. package/lib/cjs/IModelConnection.js.map +1 -1
  15. package/lib/cjs/IModeljs-css.js +1 -1
  16. package/lib/cjs/IModeljs-css.js.map +1 -1
  17. package/lib/cjs/LocalhostIpcApp.d.ts +2 -1
  18. package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
  19. package/lib/cjs/LocalhostIpcApp.js +21 -7
  20. package/lib/cjs/LocalhostIpcApp.js.map +1 -1
  21. package/lib/cjs/ViewManager.d.ts.map +1 -1
  22. package/lib/cjs/ViewManager.js +8 -8
  23. package/lib/cjs/ViewManager.js.map +1 -1
  24. package/lib/cjs/Viewport.d.ts +1 -1
  25. package/lib/cjs/Viewport.js +2 -2
  26. package/lib/cjs/Viewport.js.map +1 -1
  27. package/lib/cjs/core-frontend.d.ts +1 -1
  28. package/lib/cjs/core-frontend.js +1 -1
  29. package/lib/cjs/core-frontend.js.map +1 -1
  30. package/lib/cjs/render/MockRender.d.ts +3 -1
  31. package/lib/cjs/render/MockRender.d.ts.map +1 -1
  32. package/lib/cjs/render/MockRender.js.map +1 -1
  33. package/lib/cjs/render/RenderSystem.d.ts +3 -1
  34. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  35. package/lib/cjs/render/RenderSystem.js +4 -2
  36. package/lib/cjs/render/RenderSystem.js.map +1 -1
  37. package/lib/cjs/render/primitives/EdgeParams.d.ts +50 -0
  38. package/lib/cjs/render/primitives/EdgeParams.d.ts.map +1 -0
  39. package/lib/cjs/render/primitives/EdgeParams.js +116 -0
  40. package/lib/cjs/render/primitives/EdgeParams.js.map +1 -0
  41. package/lib/cjs/render/primitives/PointStringParams.d.ts +16 -0
  42. package/lib/cjs/render/primitives/PointStringParams.d.ts.map +1 -0
  43. package/lib/cjs/render/primitives/PointStringParams.js +43 -0
  44. package/lib/cjs/render/primitives/PointStringParams.js.map +1 -0
  45. package/lib/cjs/render/primitives/PolylineParams.d.ts +44 -0
  46. package/lib/cjs/render/primitives/PolylineParams.d.ts.map +1 -0
  47. package/lib/cjs/render/primitives/PolylineParams.js +205 -0
  48. package/lib/cjs/render/primitives/PolylineParams.js.map +1 -0
  49. package/lib/cjs/render/primitives/SurfaceParams.d.ts +46 -0
  50. package/lib/cjs/render/primitives/SurfaceParams.d.ts.map +1 -0
  51. package/lib/cjs/render/primitives/SurfaceParams.js +42 -0
  52. package/lib/cjs/render/primitives/SurfaceParams.js.map +1 -0
  53. package/lib/cjs/render/primitives/VertexTable.d.ts +3 -123
  54. package/lib/cjs/render/primitives/VertexTable.d.ts.map +1 -1
  55. package/lib/cjs/render/primitives/VertexTable.js +10 -351
  56. package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
  57. package/lib/cjs/render/webgl/CachedGeometry.d.ts +4 -2
  58. package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
  59. package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
  60. package/lib/cjs/render/webgl/EdgeGeometry.d.ts +73 -0
  61. package/lib/cjs/render/webgl/EdgeGeometry.d.ts.map +1 -0
  62. package/lib/cjs/render/webgl/EdgeGeometry.js +141 -0
  63. package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -0
  64. package/lib/cjs/render/webgl/InstancedGeometry.d.ts +4 -4
  65. package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
  66. package/lib/cjs/render/webgl/Material.d.ts +1 -1
  67. package/lib/cjs/render/webgl/Material.d.ts.map +1 -1
  68. package/lib/cjs/render/webgl/Material.js.map +1 -1
  69. package/lib/cjs/render/webgl/Mesh.d.ts +6 -162
  70. package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
  71. package/lib/cjs/render/webgl/Mesh.js +11 -456
  72. package/lib/cjs/render/webgl/Mesh.js.map +1 -1
  73. package/lib/cjs/render/webgl/MeshData.d.ts +38 -0
  74. package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -0
  75. package/lib/cjs/render/webgl/MeshData.js +66 -0
  76. package/lib/cjs/render/webgl/MeshData.js.map +1 -0
  77. package/lib/cjs/render/webgl/MeshGeometry.d.ts +38 -0
  78. package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -0
  79. package/lib/cjs/render/webgl/MeshGeometry.js +60 -0
  80. package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -0
  81. package/lib/cjs/render/webgl/PointString.d.ts +1 -1
  82. package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
  83. package/lib/cjs/render/webgl/PointString.js.map +1 -1
  84. package/lib/cjs/render/webgl/Polyline.d.ts +1 -1
  85. package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
  86. package/lib/cjs/render/webgl/Polyline.js.map +1 -1
  87. package/lib/cjs/render/webgl/RenderCommands.js +4 -4
  88. package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
  89. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +54 -0
  90. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -0
  91. package/lib/cjs/render/webgl/SurfaceGeometry.js +240 -0
  92. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -0
  93. package/lib/cjs/render/webgl/System.d.ts +3 -1
  94. package/lib/cjs/render/webgl/System.d.ts.map +1 -1
  95. package/lib/cjs/render/webgl/System.js.map +1 -1
  96. package/lib/cjs/render/webgl/glsl/Surface.js +3 -3
  97. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  98. package/lib/cjs/render-primitives.d.ts +5 -1
  99. package/lib/cjs/render-primitives.d.ts.map +1 -1
  100. package/lib/cjs/render-primitives.js +5 -1
  101. package/lib/cjs/render-primitives.js.map +1 -1
  102. package/lib/cjs/tile/ContextShareProvider.d.ts.map +1 -1
  103. package/lib/cjs/tile/ContextShareProvider.js +19 -0
  104. package/lib/cjs/tile/ContextShareProvider.js.map +1 -1
  105. package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
  106. package/lib/cjs/tile/ImdlReader.js +8 -5
  107. package/lib/cjs/tile/ImdlReader.js.map +1 -1
  108. package/lib/cjs/tile/map/CesiumTerrainProvider.js +1 -1
  109. package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
  110. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js +1 -1
  111. package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  112. package/lib/cjs/tile/map/MapLayerSources.js +1 -1
  113. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  114. package/lib/cjs/webgl.d.ts +4 -0
  115. package/lib/cjs/webgl.d.ts.map +1 -1
  116. package/lib/cjs/webgl.js +4 -0
  117. package/lib/cjs/webgl.js.map +1 -1
  118. package/lib/esm/AccuSnap.js +3 -3
  119. package/lib/esm/AccuSnap.js.map +1 -1
  120. package/lib/esm/ApproximateTerrainHeights.d.ts.map +1 -1
  121. package/lib/esm/ApproximateTerrainHeights.js +2 -1
  122. package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
  123. package/lib/esm/HitDetail.js +7 -7
  124. package/lib/esm/HitDetail.js.map +1 -1
  125. package/lib/esm/IModelApp.d.ts +15 -5
  126. package/lib/esm/IModelApp.d.ts.map +1 -1
  127. package/lib/esm/IModelApp.js +13 -8
  128. package/lib/esm/IModelApp.js.map +1 -1
  129. package/lib/esm/IModelConnection.d.ts +1 -1
  130. package/lib/esm/IModelConnection.js +1 -1
  131. package/lib/esm/IModelConnection.js.map +1 -1
  132. package/lib/esm/IModeljs-css.js +1 -1
  133. package/lib/esm/IModeljs-css.js.map +1 -1
  134. package/lib/esm/LocalhostIpcApp.d.ts +2 -1
  135. package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
  136. package/lib/esm/LocalhostIpcApp.js +22 -8
  137. package/lib/esm/LocalhostIpcApp.js.map +1 -1
  138. package/lib/esm/ViewManager.d.ts.map +1 -1
  139. package/lib/esm/ViewManager.js +8 -8
  140. package/lib/esm/ViewManager.js.map +1 -1
  141. package/lib/esm/Viewport.d.ts +1 -1
  142. package/lib/esm/Viewport.js +2 -2
  143. package/lib/esm/Viewport.js.map +1 -1
  144. package/lib/esm/core-frontend.d.ts +1 -1
  145. package/lib/esm/core-frontend.js +1 -1
  146. package/lib/esm/core-frontend.js.map +1 -1
  147. package/lib/esm/render/MockRender.d.ts +3 -1
  148. package/lib/esm/render/MockRender.d.ts.map +1 -1
  149. package/lib/esm/render/MockRender.js.map +1 -1
  150. package/lib/esm/render/RenderSystem.d.ts +3 -1
  151. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  152. package/lib/esm/render/RenderSystem.js +3 -1
  153. package/lib/esm/render/RenderSystem.js.map +1 -1
  154. package/lib/esm/render/primitives/EdgeParams.d.ts +50 -0
  155. package/lib/esm/render/primitives/EdgeParams.d.ts.map +1 -0
  156. package/lib/esm/render/primitives/EdgeParams.js +113 -0
  157. package/lib/esm/render/primitives/EdgeParams.js.map +1 -0
  158. package/lib/esm/render/primitives/PointStringParams.d.ts +16 -0
  159. package/lib/esm/render/primitives/PointStringParams.d.ts.map +1 -0
  160. package/lib/esm/render/primitives/PointStringParams.js +39 -0
  161. package/lib/esm/render/primitives/PointStringParams.js.map +1 -0
  162. package/lib/esm/render/primitives/PolylineParams.d.ts +44 -0
  163. package/lib/esm/render/primitives/PolylineParams.d.ts.map +1 -0
  164. package/lib/esm/render/primitives/PolylineParams.js +199 -0
  165. package/lib/esm/render/primitives/PolylineParams.js.map +1 -0
  166. package/lib/esm/render/primitives/SurfaceParams.d.ts +46 -0
  167. package/lib/esm/render/primitives/SurfaceParams.d.ts.map +1 -0
  168. package/lib/esm/render/primitives/SurfaceParams.js +37 -0
  169. package/lib/esm/render/primitives/SurfaceParams.js.map +1 -0
  170. package/lib/esm/render/primitives/VertexTable.d.ts +3 -123
  171. package/lib/esm/render/primitives/VertexTable.d.ts.map +1 -1
  172. package/lib/esm/render/primitives/VertexTable.js +5 -341
  173. package/lib/esm/render/primitives/VertexTable.js.map +1 -1
  174. package/lib/esm/render/webgl/CachedGeometry.d.ts +4 -2
  175. package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
  176. package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
  177. package/lib/esm/render/webgl/EdgeGeometry.d.ts +73 -0
  178. package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -0
  179. package/lib/esm/render/webgl/EdgeGeometry.js +135 -0
  180. package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -0
  181. package/lib/esm/render/webgl/InstancedGeometry.d.ts +4 -4
  182. package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
  183. package/lib/esm/render/webgl/Material.d.ts +1 -1
  184. package/lib/esm/render/webgl/Material.d.ts.map +1 -1
  185. package/lib/esm/render/webgl/Material.js.map +1 -1
  186. package/lib/esm/render/webgl/Mesh.d.ts +6 -162
  187. package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
  188. package/lib/esm/render/webgl/Mesh.js +5 -443
  189. package/lib/esm/render/webgl/Mesh.js.map +1 -1
  190. package/lib/esm/render/webgl/MeshData.d.ts +38 -0
  191. package/lib/esm/render/webgl/MeshData.d.ts.map +1 -0
  192. package/lib/esm/render/webgl/MeshData.js +62 -0
  193. package/lib/esm/render/webgl/MeshData.js.map +1 -0
  194. package/lib/esm/render/webgl/MeshGeometry.d.ts +38 -0
  195. package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -0
  196. package/lib/esm/render/webgl/MeshGeometry.js +56 -0
  197. package/lib/esm/render/webgl/MeshGeometry.js.map +1 -0
  198. package/lib/esm/render/webgl/PointString.d.ts +1 -1
  199. package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
  200. package/lib/esm/render/webgl/PointString.js.map +1 -1
  201. package/lib/esm/render/webgl/Polyline.d.ts +1 -1
  202. package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
  203. package/lib/esm/render/webgl/Polyline.js.map +1 -1
  204. package/lib/esm/render/webgl/RenderCommands.js +1 -1
  205. package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
  206. package/lib/esm/render/webgl/SurfaceGeometry.d.ts +54 -0
  207. package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -0
  208. package/lib/esm/render/webgl/SurfaceGeometry.js +235 -0
  209. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -0
  210. package/lib/esm/render/webgl/System.d.ts +3 -1
  211. package/lib/esm/render/webgl/System.d.ts.map +1 -1
  212. package/lib/esm/render/webgl/System.js.map +1 -1
  213. package/lib/esm/render/webgl/glsl/Surface.js +1 -1
  214. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  215. package/lib/esm/render-primitives.d.ts +5 -1
  216. package/lib/esm/render-primitives.d.ts.map +1 -1
  217. package/lib/esm/render-primitives.js +5 -1
  218. package/lib/esm/render-primitives.js.map +1 -1
  219. package/lib/esm/tile/ContextShareProvider.d.ts.map +1 -1
  220. package/lib/esm/tile/ContextShareProvider.js +19 -0
  221. package/lib/esm/tile/ContextShareProvider.js.map +1 -1
  222. package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
  223. package/lib/esm/tile/ImdlReader.js +4 -1
  224. package/lib/esm/tile/ImdlReader.js.map +1 -1
  225. package/lib/esm/tile/map/CesiumTerrainProvider.js +1 -1
  226. package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
  227. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js +1 -1
  228. package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
  229. package/lib/esm/tile/map/MapLayerSources.js +1 -1
  230. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  231. package/lib/esm/webgl.d.ts +4 -0
  232. package/lib/esm/webgl.d.ts.map +1 -1
  233. package/lib/esm/webgl.js +4 -0
  234. package/lib/esm/webgl.js.map +1 -1
  235. package/package.json +22 -22
@@ -1,9 +1,11 @@
1
1
  /** @packageDocumentation
2
2
  * @module Rendering
3
3
  */
4
- import { ColorDef, ColorIndex, FeatureIndex, FeatureIndexType, FillFlags, LinePixels, PolylineData, PolylineTypeFlags, QParams2d, QParams3d, QPoint3dList, RenderMaterial, RenderTexture } from "@itwin/core-common";
4
+ import { ColorDef, ColorIndex, FeatureIndex, FeatureIndexType, QParams2d, QParams3d } from "@itwin/core-common";
5
5
  import { AuxChannelTable } from "./AuxChannelTable";
6
6
  import { MeshArgs, PolylineArgs } from "./mesh/MeshPrimitives";
7
+ import { SurfaceParams } from "./SurfaceParams";
8
+ import { EdgeParams } from "./EdgeParams";
7
9
  /**
8
10
  * Holds an array of indices into a VertexTable. Each index is a 24-bit unsigned integer.
9
11
  * The order of the indices specifies the order in which vertices are drawn.
@@ -94,111 +96,6 @@ export declare class VertexTable implements VertexTableProps {
94
96
  static buildFrom(builder: VertexTableBuilder, colorIndex: ColorIndex, featureIndex: FeatureIndex): VertexTable;
95
97
  static createForPolylines(args: PolylineArgs): VertexTable | undefined;
96
98
  }
97
- /** Describes point string geometry to be submitted to the rendering system.
98
- * @internal
99
- */
100
- export declare class PointStringParams {
101
- readonly vertices: VertexTable;
102
- readonly indices: VertexIndices;
103
- readonly weight: number;
104
- constructor(vertices: VertexTable, indices: VertexIndices, weight: number);
105
- static create(args: PolylineArgs): PointStringParams | undefined;
106
- }
107
- /**
108
- * Represents a tesselated polyline.
109
- * Given a polyline as a line string, each segment of the line string is triangulated into a quad.
110
- * Based on the angle between two segments, additional joint triangles may be inserted in between to enable smoothly-rounded corners.
111
- * @internal
112
- */
113
- export interface TesselatedPolyline {
114
- /** 24-bit index of each vertex. */
115
- readonly indices: VertexIndices;
116
- /** 24-bit index of the previous vertex in the polyline. */
117
- readonly prevIndices: VertexIndices;
118
- /** 24-bit index of the next vertex in the polyline, plus 8-bit parameter describing the semantics of this vertex. */
119
- readonly nextIndicesAndParams: Uint8Array;
120
- }
121
- /** Strictly for tests. @internal */
122
- export declare function tesselatePolyline(polylines: PolylineData[], points: QPoint3dList, doJointTriangles: boolean): TesselatedPolyline;
123
- /** @internal */
124
- export declare enum SurfaceType {
125
- Unlit = 0,
126
- Lit = 1,
127
- Textured = 2,
128
- TexturedLit = 3,
129
- VolumeClassifier = 4
130
- }
131
- /** @internal */
132
- export declare function isValidSurfaceType(value: number): boolean;
133
- /** @internal */
134
- export interface SurfaceRenderMaterial {
135
- readonly isAtlas: false;
136
- readonly material: RenderMaterial;
137
- }
138
- /** @internal */
139
- export interface SurfaceMaterialAtlas {
140
- readonly isAtlas: true;
141
- readonly hasTranslucency: boolean;
142
- readonly overridesAlpha: boolean;
143
- readonly vertexTableOffset: number;
144
- readonly numMaterials: number;
145
- }
146
- /** @internal */
147
- export declare type SurfaceMaterial = SurfaceRenderMaterial | SurfaceMaterialAtlas;
148
- /** @internal */
149
- export declare function createSurfaceMaterial(source: RenderMaterial | undefined): SurfaceMaterial | undefined;
150
- /** @internal */
151
- export interface SurfaceParams {
152
- readonly type: SurfaceType;
153
- readonly indices: VertexIndices;
154
- readonly fillFlags: FillFlags;
155
- readonly hasBakedLighting: boolean;
156
- readonly hasFixedNormals: boolean;
157
- readonly textureMapping?: {
158
- texture: RenderTexture;
159
- alwaysDisplayed: boolean;
160
- };
161
- readonly material?: SurfaceMaterial;
162
- }
163
- /**
164
- * Describes a set of line segments representing edges of a mesh.
165
- * Each segment is expanded into a quad defined by two triangles.
166
- * The positions are adjusted in the shader to account for the edge width.
167
- * @internal
168
- */
169
- export interface SegmentEdgeParams {
170
- /** The 24-bit indices of the tesselated line segment */
171
- readonly indices: VertexIndices;
172
- /**
173
- * For each 24-bit index, 4 bytes:
174
- * the 24-bit index of the vertex at the other end of the segment, followed by
175
- * an 8-bit 'quad index' in [0..3] indicating which point in the expanded quad the vertex represents.
176
- */
177
- readonly endPointAndQuadIndices: Uint8Array;
178
- }
179
- /**
180
- * A set of line segments representing edges of curved portions of a mesh.
181
- * Each vertex is augmented with a pair of oct-encoded normals used in the shader
182
- * to determine whether or not the edge should be displayed.
183
- * @internal
184
- */
185
- export interface SilhouetteParams extends SegmentEdgeParams {
186
- /** Per index, 2 16-bit oct-encoded normals */
187
- readonly normalPairs: Uint8Array;
188
- }
189
- /** Describes the edges of a mesh. */
190
- export interface EdgeParams {
191
- /** The edge width in pixels. */
192
- readonly weight: number;
193
- /** The line pattern in which edges are drawn. */
194
- readonly linePixels: LinePixels;
195
- /** Simple single-segment edges, always displayed when edge display is enabled. */
196
- readonly segments?: SegmentEdgeParams;
197
- /** Single-segment edges of curved surfaces, displayed based on edge normal relative to eye. */
198
- readonly silhouettes?: SilhouetteParams;
199
- /** Polyline edges, always displayed when edge display is enabled. */
200
- readonly polylines?: TesselatedPolyline;
201
- }
202
99
  /**
203
100
  * Describes mesh geometry to be submitted to the rendering system.
204
101
  * A mesh consists of a surface and its edges, which may include any combination of silhouettes, polylines, and single segments.
@@ -215,23 +112,6 @@ export declare class MeshParams {
215
112
  /** Construct from a MeshArgs. */
216
113
  static create(args: MeshArgs): MeshParams;
217
114
  }
218
- /**
219
- * Describes a set of tesselated polylines.
220
- * Each segment of each polyline is triangulated into a quad. Additional triangles may be inserted
221
- * between segments to enable rounded corners.
222
- */
223
- export declare class PolylineParams {
224
- readonly vertices: VertexTable;
225
- readonly polyline: TesselatedPolyline;
226
- readonly isPlanar: boolean;
227
- readonly type: PolylineTypeFlags;
228
- readonly weight: number;
229
- readonly linePixels: LinePixels;
230
- /** Directly construct a PolylineParams. The PolylineParams takes ownership of all input data. */
231
- constructor(vertices: VertexTable, polyline: TesselatedPolyline, weight: number, linePixels: LinePixels, isPlanar: boolean, type?: PolylineTypeFlags);
232
- /** Construct from an PolylineArgs. */
233
- static create(args: PolylineArgs): PolylineParams | undefined;
234
- }
235
115
  /** Builds a VertexTable from some data type supplying the vertex data. */
236
116
  export declare abstract class VertexTableBuilder {
237
117
  data?: Uint8Array;
@@ -1 +1 @@
1
- {"version":3,"file":"VertexTable.d.ts","sourceRoot":"","sources":["../../../../src/render/primitives/VertexTable.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EACL,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAkC,YAAY,EAAE,iBAAiB,EAC5I,SAAS,EAAE,SAAS,EAAY,YAAY,EAAE,cAAc,EAAE,aAAa,EAC5E,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/D;;;;GAIG;AACH,qBAAa,aAAa;IACxB,SAAgB,IAAI,EAAE,UAAU,CAAC;IAEjC;;;OAGG;gBACgB,IAAI,EAAE,UAAU;IAKnC,wCAAwC;IACxC,IAAW,MAAM,IAAI,MAAM,CAAiC;IAE5D,sFAAsF;WACxE,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,aAAa;WAQ3C,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAO7E,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAMlC,aAAa,IAAI,MAAM,EAAE;CAOjC;AAED,gBAAgB;AAChB,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,gBAAgB;AAChB,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU,CA6BzG;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yFAAyF;IACzF,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,0GAA0G;IAC1G,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,mEAAmE;IACnE,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,mEAAmE;IACnE,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC;IACjC,2EAA2E;IAC3E,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,qFAAqF;IACrF,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,8FAA8F;IAC9F,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,sEAAsE;IACtE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,oGAAoG;IACpG,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,qBAAa,WAAY,YAAW,gBAAgB;IAClD,yFAAyF;IACzF,SAAgB,IAAI,EAAE,UAAU,CAAC;IACjC,+EAA+E;IAC/E,SAAgB,OAAO,EAAE,SAAS,CAAC;IACnC,0GAA0G;IAC1G,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,uCAAuC;IACvC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,mEAAmE;IACnE,SAAgB,eAAe,EAAE,OAAO,CAAC;IACzC,mEAAmE;IACnE,SAAgB,YAAY,CAAC,EAAE,QAAQ,CAAC;IACxC,2EAA2E;IAC3E,SAAgB,gBAAgB,EAAE,gBAAgB,CAAC;IACnD,qFAAqF;IACrF,SAAgB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1C,8FAA8F;IAC9F,SAAgB,WAAW,EAAE,MAAM,CAAC;IACpC,sEAAsE;IACtE,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IACzC,oGAAoG;IACpG,SAAgB,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErC,gIAAgI;gBAC7G,KAAK,EAAE,gBAAgB;WAc5B,SAAS,CAAC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,GAAG,WAAW;WA+BvG,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,WAAW,GAAG,SAAS;CAO9E;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,SAAgB,QAAQ,EAAE,WAAW,CAAC;IACtC,SAAgB,OAAO,EAAE,aAAa,CAAC;IACvC,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAEZ,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM;WAMlE,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,iBAAiB,GAAG,SAAS;CAuBxE;AAcD;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,mCAAmC;IACnC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,2DAA2D;IAC3D,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;IACpC,qHAAqH;IACrH,QAAQ,CAAC,oBAAoB,EAAE,UAAU,CAAC;CAC3C;AA8KD,oCAAoC;AACpC,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,GAAG,kBAAkB,CAGhI;AAED,gBAAgB;AAChB,oBAAY,WAAW;IACrB,KAAK,IAAA;IACL,GAAG,IAAA;IACH,QAAQ,IAAA;IACR,WAAW,IAAA;IACX,gBAAgB,IAAA;CACjB;AAED,gBAAgB;AAChB,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAWzD;AAED,gBAAgB;AAChB,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;CACnC;AAED,gBAAgB;AAChB,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IAEvB,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAElC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IAEjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,gBAAgB;AAChB,oBAAY,eAAe,GAAG,qBAAqB,GAAG,oBAAoB,CAAC;AAE3E,gBAAgB;AAChB,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,GAAG,eAAe,GAAG,SAAS,CAKrG;AAED,gBAAgB;AAChB,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE;QACxB,OAAO,EAAE,aAAa,CAAC;QACvB,eAAe,EAAE,OAAO,CAAC;KAC1B,CAAC;IACF,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;CACrC;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,sBAAsB,EAAE,UAAU,CAAC;CAC7C;AAiED;;;;;GAKG;AACH,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,8CAA8C;IAC9C,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;CAClC;AAyBD,qCAAqC;AACrC,MAAM,WAAW,UAAU;IACzB,gCAAgC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,kFAAkF;IAClF,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IACtC,+FAA+F;IAC/F,QAAQ,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IACxC,qEAAqE;IACrE,QAAQ,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC;CACzC;AAsCD;;;;GAIG;AACH,qBAAa,UAAU;IACrB,SAAgB,QAAQ,EAAE,WAAW,CAAC;IACtC,SAAgB,OAAO,EAAE,aAAa,CAAC;IACvC,SAAgB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnC,SAAgB,QAAQ,EAAE,OAAO,CAAC;IAClC,SAAgB,WAAW,CAAC,EAAE,eAAe,CAAC;IAE9C,yFAAyF;gBACtE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,eAAe;IAQvI,iCAAiC;WACnB,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU;CAoBjD;AAED;;;;GAIG;AACH,qBAAa,cAAc;IACzB,SAAgB,QAAQ,EAAE,WAAW,CAAC;IACtC,SAAgB,QAAQ,EAAE,kBAAkB,CAAC;IAC7C,SAAgB,QAAQ,EAAE,OAAO,CAAC;IAClC,SAAgB,IAAI,EAAE,iBAAiB,CAAC;IACxC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,UAAU,EAAE,UAAU,CAAC;IAEvC,iGAAiG;gBAC9E,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,GAAE,iBAA4C;IASrL,sCAAsC;WACxB,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,GAAG,SAAS;CAYrE;AAED,0EAA0E;AAC1E,8BAAsB,kBAAkB;IAC/B,IAAI,CAAC,EAAE,UAAU,CAAC;IACzB,OAAO,CAAC,SAAS,CAAa;IAE9B,aAAoB,WAAW,IAAI,MAAM,CAAC;IAC1C,aAAoB,gBAAgB,IAAI,MAAM,CAAC;IAC/C,aAAoB,OAAO,IAAI,SAAS,CAAC;IACzC,IAAW,QAAQ,IAAI,SAAS,GAAG,SAAS,CAAsB;aAClD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAE9C,gBAAgB,CAAC,UAAU,EAAE,UAAU;IAQ9C,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM;IAKhC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM;IAQ7B,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM;IAI9B,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM;IAK9B,OAAO,CAAC,WAAW;CA4BpB"}
1
+ {"version":3,"file":"VertexTable.d.ts","sourceRoot":"","sources":["../../../../src/render/primitives/VertexTable.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,12 @@
6
6
  * @module Rendering
7
7
  */
8
8
  import { assert } from "@itwin/core-bentley";
9
- import { Point2d, Range2d, Vector3d } from "@itwin/core-geometry";
10
- import { ColorDef, FeatureIndexType, PolylineTypeFlags, QParams2d, QPoint2d, } from "@itwin/core-common";
9
+ import { Point2d, Range2d } from "@itwin/core-geometry";
10
+ import { ColorDef, FeatureIndexType, QParams2d, QPoint2d } from "@itwin/core-common";
11
11
  import { IModelApp } from "../../IModelApp";
12
12
  import { AuxChannelTable } from "./AuxChannelTable";
13
+ import { createSurfaceMaterial, SurfaceType } from "./SurfaceParams";
14
+ import { EdgeParams } from "./EdgeParams";
13
15
  /**
14
16
  * Holds an array of indices into a VertexTable. Each index is a 24-bit unsigned integer.
15
17
  * The order of the indices specifies the order in which vertices are drawn.
@@ -131,317 +133,6 @@ export class VertexTable {
131
133
  return undefined;
132
134
  }
133
135
  }
134
- /** Describes point string geometry to be submitted to the rendering system.
135
- * @internal
136
- */
137
- export class PointStringParams {
138
- constructor(vertices, indices, weight) {
139
- this.vertices = vertices;
140
- this.indices = indices;
141
- this.weight = weight;
142
- }
143
- static create(args) {
144
- if (!args.flags.isDisjoint)
145
- return undefined;
146
- const vertices = VertexTable.createForPolylines(args);
147
- if (undefined === vertices)
148
- return undefined;
149
- const polylines = args.polylines;
150
- let vertIndices = polylines[0].vertIndices;
151
- if (1 < polylines.length) {
152
- // We used to assert this wouldn't happen - apparently it does...
153
- vertIndices = [];
154
- for (const polyline of polylines)
155
- for (const vertIndex of polyline.vertIndices)
156
- vertIndices.push(vertIndex);
157
- }
158
- const vertexIndices = VertexIndices.fromArray(vertIndices);
159
- assert(vertexIndices.length === vertIndices.length);
160
- return new PointStringParams(vertices, vertexIndices, args.width);
161
- }
162
- }
163
- class PolylineVertex {
164
- constructor() {
165
- this.isSegmentStart = false;
166
- this.isPolylineStartOrEnd = false;
167
- this.vertexIndex = 0;
168
- this.prevIndex = 0;
169
- this.nextIndex = 0;
170
- }
171
- init(isSegmentStart, isPolylineStartOrEnd, vertexIndex, prevIndex, nextIndex) {
172
- this.isSegmentStart = isSegmentStart;
173
- this.isPolylineStartOrEnd = isPolylineStartOrEnd;
174
- this.vertexIndex = vertexIndex;
175
- this.prevIndex = prevIndex;
176
- this.nextIndex = nextIndex;
177
- }
178
- computeParam(negatePerp, adjacentToJoint = false, joint = false, noDisplacement = false) {
179
- if (joint)
180
- return 12 /* kJointBase */;
181
- let param;
182
- if (noDisplacement)
183
- param = 96 /* kNoneAdjustWeight */; // prevent getting tossed before width adjustment
184
- else if (adjacentToJoint)
185
- param = 9 /* kMiterInsideOnly */;
186
- else
187
- param = this.isPolylineStartOrEnd ? 3 /* kSquare */ : 6 /* kMiter */;
188
- let adjust = 0;
189
- if (negatePerp)
190
- adjust = 24 /* kNegatePerp */;
191
- if (!this.isSegmentStart)
192
- adjust += 48 /* kNegateAlong */;
193
- return param + adjust;
194
- }
195
- }
196
- class PolylineTesselator {
197
- constructor(polylines, points, doJointTriangles) {
198
- this._numIndices = 0;
199
- this._vertIndex = [];
200
- this._prevIndex = [];
201
- this._nextIndex = [];
202
- this._nextParam = [];
203
- this._position = [];
204
- this._polylines = polylines;
205
- this._points = points;
206
- this._doJoints = doJointTriangles;
207
- }
208
- static fromPolyline(args) {
209
- return new PolylineTesselator(args.polylines, args.points, wantJointTriangles(args.width, args.flags.is2d));
210
- }
211
- static fromMesh(args) {
212
- if (undefined !== args.edges.polylines.lines && undefined !== args.points)
213
- return new PolylineTesselator(args.edges.polylines.lines, args.points, wantJointTriangles(args.edges.width, args.is2d));
214
- return undefined;
215
- }
216
- tesselate() {
217
- for (const p of this._points.list)
218
- this._position.push(p.unquantize(this._points.params));
219
- this._tesselate();
220
- const vertIndex = VertexIndices.fromArray(this._vertIndex);
221
- const prevIndex = VertexIndices.fromArray(this._prevIndex);
222
- const nextIndexAndParam = new Uint8Array(this._numIndices * 4);
223
- for (let i = 0; i < this._numIndices; i++) {
224
- const index = this._nextIndex[i];
225
- const j = i * 4;
226
- VertexIndices.encodeIndex(index, nextIndexAndParam, j);
227
- nextIndexAndParam[j + 3] = this._nextParam[i] & 0x000000ff;
228
- }
229
- return {
230
- indices: vertIndex,
231
- prevIndices: prevIndex,
232
- nextIndicesAndParams: nextIndexAndParam,
233
- };
234
- }
235
- _tesselate() {
236
- const v0 = new PolylineVertex(), v1 = new PolylineVertex();
237
- const maxJointDot = -0.7;
238
- for (const line of this._polylines) {
239
- if (line.numIndices < 2)
240
- continue;
241
- const last = line.numIndices - 1;
242
- const isClosed = line.vertIndices[0] === line.vertIndices[last];
243
- for (let i = 0; i < last; ++i) {
244
- const idx0 = line.vertIndices[i];
245
- const idx1 = line.vertIndices[i + 1];
246
- const isStart = (0 === i);
247
- const isEnd = (last - 1 === i);
248
- const prevIdx0 = isStart ? (isClosed ? line.vertIndices[last - 1] : idx0) : line.vertIndices[i - 1];
249
- const nextIdx1 = isEnd ? (isClosed ? line.vertIndices[1] : idx1) : line.vertIndices[i + 2];
250
- v0.init(true, isStart && !isClosed, idx0, prevIdx0, idx1);
251
- v1.init(false, isEnd && !isClosed, idx1, nextIdx1, idx0);
252
- const jointAt0 = this._doJoints && (isClosed || !isStart) && this._dotProduct(v0) > maxJointDot;
253
- const jointAt1 = this._doJoints && (isClosed || !isEnd) && this._dotProduct(v1) > maxJointDot;
254
- if (jointAt0 || jointAt1) {
255
- this._addVertex(v0, v0.computeParam(true, jointAt0, false, false));
256
- this._addVertex(v1, v1.computeParam(false, jointAt1, false, false));
257
- this._addVertex(v0, v0.computeParam(false, jointAt0, false, true));
258
- this._addVertex(v0, v0.computeParam(false, jointAt0, false, true));
259
- this._addVertex(v1, v1.computeParam(false, jointAt1, false, false));
260
- this._addVertex(v1, v1.computeParam(false, jointAt1, false, true));
261
- this._addVertex(v0, v0.computeParam(false, jointAt0, false, true));
262
- this._addVertex(v1, v1.computeParam(false, jointAt1, false, true));
263
- this._addVertex(v0, v0.computeParam(false, jointAt0, false, false));
264
- this._addVertex(v0, v0.computeParam(false, jointAt0, false, false));
265
- this._addVertex(v1, v1.computeParam(false, jointAt1, false, true));
266
- this._addVertex(v1, v1.computeParam(true, jointAt1, false, false));
267
- if (jointAt0)
268
- this.addJointTriangles(v0, v0.computeParam(false, true, false, true), v0);
269
- if (jointAt1)
270
- this.addJointTriangles(v1, v1.computeParam(false, true, false, true), v1);
271
- }
272
- else {
273
- this._addVertex(v0, v0.computeParam(true));
274
- this._addVertex(v1, v1.computeParam(false));
275
- this._addVertex(v0, v0.computeParam(false));
276
- this._addVertex(v0, v0.computeParam(false));
277
- this._addVertex(v1, v1.computeParam(false));
278
- this._addVertex(v1, v1.computeParam(true));
279
- }
280
- }
281
- }
282
- }
283
- addJointTriangles(v0, p0, v1) {
284
- const param = v1.computeParam(false, false, true);
285
- for (let i = 0; i < 3; i++) {
286
- this._addVertex(v0, p0);
287
- this._addVertex(v1, param + i + 1);
288
- this._addVertex(v1, param + i);
289
- }
290
- }
291
- _dotProduct(v) {
292
- const pos = this._position[v.vertexIndex];
293
- const prevDir = Vector3d.createStartEnd(this._position[v.prevIndex], pos);
294
- const nextDir = Vector3d.createStartEnd(this._position[v.nextIndex], pos);
295
- return prevDir.dotProduct(nextDir);
296
- }
297
- _addVertex(vertex, param) {
298
- this._vertIndex[this._numIndices] = vertex.vertexIndex;
299
- this._prevIndex[this._numIndices] = vertex.prevIndex;
300
- this._nextIndex[this._numIndices] = vertex.nextIndex;
301
- this._nextParam[this._numIndices] = param;
302
- this._numIndices++;
303
- }
304
- }
305
- /** Strictly for tests. @internal */
306
- export function tesselatePolyline(polylines, points, doJointTriangles) {
307
- const tesselator = new PolylineTesselator(polylines, points, doJointTriangles);
308
- return tesselator.tesselate();
309
- }
310
- /** @internal */
311
- export var SurfaceType;
312
- (function (SurfaceType) {
313
- SurfaceType[SurfaceType["Unlit"] = 0] = "Unlit";
314
- SurfaceType[SurfaceType["Lit"] = 1] = "Lit";
315
- SurfaceType[SurfaceType["Textured"] = 2] = "Textured";
316
- SurfaceType[SurfaceType["TexturedLit"] = 3] = "TexturedLit";
317
- SurfaceType[SurfaceType["VolumeClassifier"] = 4] = "VolumeClassifier";
318
- })(SurfaceType || (SurfaceType = {}));
319
- /** @internal */
320
- export function isValidSurfaceType(value) {
321
- switch (value) {
322
- case SurfaceType.Unlit:
323
- case SurfaceType.Lit:
324
- case SurfaceType.Textured:
325
- case SurfaceType.TexturedLit:
326
- case SurfaceType.VolumeClassifier:
327
- return true;
328
- default:
329
- return false;
330
- }
331
- }
332
- /** @internal */
333
- export function createSurfaceMaterial(source) {
334
- if (undefined === source)
335
- return undefined;
336
- else
337
- return { isAtlas: false, material: source };
338
- }
339
- function convertPolylinesAndEdges(polylines, edges) {
340
- let numIndices = undefined !== edges ? edges.length : 0;
341
- if (undefined !== polylines)
342
- for (const pd of polylines)
343
- numIndices += (pd.vertIndices.length - 1);
344
- if (0 === numIndices)
345
- return undefined;
346
- numIndices *= 6;
347
- const indexBytes = new Uint8Array(numIndices * 3);
348
- const endPointAndQuadIndexBytes = new Uint8Array(numIndices * 4);
349
- let ndx = 0;
350
- let ndx2 = 0;
351
- const addPoint = (p0, p1, quadIndex) => {
352
- VertexIndices.encodeIndex(p0, indexBytes, ndx);
353
- ndx += 3;
354
- VertexIndices.encodeIndex(p1, endPointAndQuadIndexBytes, ndx2);
355
- endPointAndQuadIndexBytes[ndx2 + 3] = quadIndex;
356
- ndx2 += 4;
357
- };
358
- if (undefined !== polylines) {
359
- for (const pd of polylines) {
360
- const num = pd.vertIndices.length - 1;
361
- for (let i = 0; i < num; ++i) {
362
- let p0 = pd.vertIndices[i];
363
- let p1 = pd.vertIndices[i + 1];
364
- if (p1 < p0) { // swap so that lower index is first.
365
- p0 = p1;
366
- p1 = pd.vertIndices[i];
367
- }
368
- addPoint(p0, p1, 0);
369
- addPoint(p1, p0, 2);
370
- addPoint(p0, p1, 1);
371
- addPoint(p0, p1, 1);
372
- addPoint(p1, p0, 2);
373
- addPoint(p1, p0, 3);
374
- }
375
- }
376
- }
377
- if (undefined !== edges) {
378
- for (const meshEdge of edges) {
379
- const p0 = meshEdge.indices[0];
380
- const p1 = meshEdge.indices[1];
381
- addPoint(p0, p1, 0);
382
- addPoint(p1, p0, 2);
383
- addPoint(p0, p1, 1);
384
- addPoint(p0, p1, 1);
385
- addPoint(p1, p0, 2);
386
- addPoint(p1, p0, 3);
387
- }
388
- }
389
- return {
390
- indices: new VertexIndices(indexBytes),
391
- endPointAndQuadIndices: endPointAndQuadIndexBytes,
392
- };
393
- }
394
- function convertSilhouettes(edges, normalPairs) {
395
- const base = convertPolylinesAndEdges(undefined, edges);
396
- if (undefined === base)
397
- return undefined;
398
- const normalPairBytes = new Uint8Array(normalPairs.length * 6 * 4);
399
- const normalPair16 = new Uint16Array(normalPairBytes.buffer);
400
- let ndx = 0;
401
- for (const pair of normalPairs) {
402
- for (let i = 0; i < 6; i++) {
403
- normalPair16[ndx++] = pair.first.value;
404
- normalPair16[ndx++] = pair.second.value;
405
- }
406
- }
407
- return {
408
- indices: base.indices,
409
- endPointAndQuadIndices: base.endPointAndQuadIndices,
410
- normalPairs: normalPairBytes,
411
- };
412
- }
413
- function wantJointTriangles(weight, is2d) {
414
- // Joints are incredibly expensive. In 3d, only generate them if the line is sufficiently wide for them to be noticeable.
415
- const jointWidthThreshold = 3;
416
- return is2d || weight >= jointWidthThreshold;
417
- }
418
- function convertEdges(meshArgs) {
419
- const args = meshArgs.edges;
420
- if (undefined === args)
421
- return undefined;
422
- let polylines;
423
- let segments;
424
- if (wantJointTriangles(args.width, meshArgs.is2d)) {
425
- segments = convertPolylinesAndEdges(args.polylines.lines, args.edges.edges);
426
- }
427
- else {
428
- segments = convertPolylinesAndEdges(undefined, args.edges.edges);
429
- const tesselator = PolylineTesselator.fromMesh(meshArgs);
430
- if (undefined !== tesselator)
431
- polylines = tesselator.tesselate();
432
- }
433
- // ###TODO: why the heck are the edges and normals of SilhouetteEdgeArgs potentially undefined???
434
- const silhouettes = undefined !== args.silhouettes.edges && undefined !== args.silhouettes.normals ? convertSilhouettes(args.silhouettes.edges, args.silhouettes.normals) : undefined;
435
- if (undefined === segments && undefined === silhouettes && undefined === polylines)
436
- return undefined;
437
- return {
438
- weight: args.width,
439
- linePixels: args.linePixels,
440
- segments,
441
- silhouettes,
442
- polylines,
443
- };
444
- }
445
136
  /**
446
137
  * Describes mesh geometry to be submitted to the rendering system.
447
138
  * A mesh consists of a surface and its edges, which may include any combination of silhouettes, polylines, and single segments.
@@ -471,37 +162,10 @@ export class MeshParams {
471
162
  material: createSurfaceMaterial(args.material),
472
163
  };
473
164
  const channels = undefined !== args.auxChannels ? AuxChannelTable.fromChannels(args.auxChannels, vertices.numVertices) : undefined;
474
- const edges = convertEdges(args);
165
+ const edges = EdgeParams.fromMeshArgs(args);
475
166
  return new MeshParams(vertices, surface, edges, args.isPlanar, channels);
476
167
  }
477
168
  }
478
- /**
479
- * Describes a set of tesselated polylines.
480
- * Each segment of each polyline is triangulated into a quad. Additional triangles may be inserted
481
- * between segments to enable rounded corners.
482
- */
483
- export class PolylineParams {
484
- /** Directly construct a PolylineParams. The PolylineParams takes ownership of all input data. */
485
- constructor(vertices, polyline, weight, linePixels, isPlanar, type = PolylineTypeFlags.Normal) {
486
- this.vertices = vertices;
487
- this.polyline = polyline;
488
- this.isPlanar = isPlanar;
489
- this.weight = weight;
490
- this.linePixels = linePixels;
491
- this.type = type;
492
- }
493
- /** Construct from an PolylineArgs. */
494
- static create(args) {
495
- assert(!args.flags.isDisjoint);
496
- const vertices = VertexTable.createForPolylines(args);
497
- if (undefined === vertices)
498
- return undefined;
499
- const tesselator = PolylineTesselator.fromPolyline(args);
500
- if (undefined === tesselator)
501
- return undefined;
502
- return new PolylineParams(vertices, tesselator.tesselate(), args.width, args.linePixels, args.flags.isPlanar, args.flags.type);
503
- }
504
- }
505
169
  /** Builds a VertexTable from some data type supplying the vertex data. */
506
170
  export class VertexTableBuilder {
507
171
  constructor() {