@itwin/core-frontend 4.8.0-dev.32 → 4.8.0-dev.34
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.
- package/README.md +9 -1
- package/lib/cjs/AccuDraw.d.ts.map +1 -1
- package/lib/cjs/AccuDraw.js +4 -4
- package/lib/cjs/AccuDraw.js.map +1 -1
- package/lib/cjs/AccuSnap.js +1 -1
- package/lib/cjs/AccuSnap.js.map +1 -1
- package/lib/cjs/AuxCoordSys.d.ts.map +1 -1
- package/lib/cjs/AuxCoordSys.js +2 -2
- package/lib/cjs/AuxCoordSys.js.map +1 -1
- package/lib/cjs/DecorationsCache.d.ts +1 -1
- package/lib/cjs/DecorationsCache.d.ts.map +1 -1
- package/lib/cjs/DecorationsCache.js.map +1 -1
- package/lib/cjs/EnvironmentDecorations.d.ts.map +1 -1
- package/lib/cjs/EnvironmentDecorations.js +2 -2
- package/lib/cjs/EnvironmentDecorations.js.map +1 -1
- package/lib/cjs/HitDetail.d.ts.map +1 -1
- package/lib/cjs/HitDetail.js +3 -3
- package/lib/cjs/HitDetail.js.map +1 -1
- package/lib/cjs/IModelConnection.d.ts +1 -1
- package/lib/cjs/IModelConnection.d.ts.map +1 -1
- package/lib/cjs/IModelConnection.js +1 -1
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/IpcApp.d.ts +1 -1
- package/lib/cjs/IpcApp.d.ts.map +1 -1
- package/lib/cjs/IpcApp.js +1 -1
- package/lib/cjs/IpcApp.js.map +1 -1
- package/lib/cjs/LocalhostIpcApp.js +1 -1
- package/lib/cjs/LocalhostIpcApp.js.map +1 -1
- package/lib/cjs/NativeApp.js +1 -1
- package/lib/cjs/NativeApp.js.map +1 -1
- package/lib/cjs/SheetViewState.d.ts.map +1 -1
- package/lib/cjs/SheetViewState.js +3 -3
- package/lib/cjs/SheetViewState.js.map +1 -1
- package/lib/cjs/ViewContext.d.ts +2 -1
- package/lib/cjs/ViewContext.d.ts.map +1 -1
- package/lib/cjs/ViewContext.js +8 -8
- package/lib/cjs/ViewContext.js.map +1 -1
- package/lib/cjs/Viewport.d.ts.map +1 -1
- package/lib/cjs/Viewport.js +2 -2
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/common/WorkerProxy.d.ts +7 -25
- package/lib/cjs/common/WorkerProxy.d.ts.map +1 -1
- package/lib/cjs/common/WorkerProxy.js +2 -1
- package/lib/cjs/common/WorkerProxy.js.map +1 -1
- package/lib/cjs/common/imdl/CompactEdges.d.ts +1 -1
- package/lib/cjs/common/imdl/CompactEdges.d.ts.map +1 -1
- package/lib/cjs/common/imdl/CompactEdges.js +2 -2
- package/lib/cjs/common/imdl/CompactEdges.js.map +1 -1
- package/lib/cjs/common/imdl/ImdlModel.d.ts +5 -3
- package/lib/cjs/common/imdl/ImdlModel.d.ts.map +1 -1
- package/lib/cjs/common/imdl/ImdlModel.js +49 -42
- package/lib/cjs/common/imdl/ImdlModel.js.map +1 -1
- package/lib/cjs/common/imdl/ImdlSchema.d.ts +4 -4
- package/lib/cjs/common/imdl/ImdlSchema.d.ts.map +1 -1
- package/lib/cjs/common/imdl/ImdlSchema.js.map +1 -1
- package/lib/cjs/common/imdl/ParseImdlDocument.d.ts +4 -2
- package/lib/cjs/common/imdl/ParseImdlDocument.d.ts.map +1 -1
- package/lib/cjs/common/imdl/ParseImdlDocument.js +10 -8
- package/lib/cjs/common/imdl/ParseImdlDocument.js.map +1 -1
- package/lib/{esm → cjs/common}/internal/Symbols.d.ts +2 -0
- package/lib/cjs/common/internal/Symbols.d.ts.map +1 -0
- package/lib/cjs/{internal → common/internal}/Symbols.js +3 -1
- package/lib/cjs/common/internal/Symbols.js.map +1 -0
- package/lib/cjs/common/internal/render/AnimationNodeId.d.ts.map +1 -0
- package/lib/cjs/common/internal/render/AnimationNodeId.js.map +1 -0
- package/lib/cjs/common/internal/render/AuxChannelTable.d.ts.map +1 -0
- package/lib/cjs/common/internal/render/AuxChannelTable.js.map +1 -0
- package/lib/cjs/common/internal/render/ColorMap.d.ts.map +1 -0
- package/lib/cjs/common/internal/render/ColorMap.js.map +1 -0
- package/lib/cjs/common/internal/render/DisplayParams.d.ts.map +1 -0
- package/lib/cjs/common/internal/render/DisplayParams.js.map +1 -0
- package/lib/cjs/common/{render/primitives → internal/render}/EdgeParams.d.ts +7 -0
- package/lib/cjs/common/internal/render/EdgeParams.d.ts.map +1 -0
- package/lib/cjs/{render/primitives → common/internal/render}/EdgeParams.js +50 -16
- package/lib/cjs/common/internal/render/EdgeParams.js.map +1 -0
- package/lib/cjs/{render/primitives/geometry → common/internal/render}/GeometryAccumulator.d.ts +4 -18
- package/lib/cjs/common/internal/render/GeometryAccumulator.d.ts.map +1 -0
- package/lib/cjs/{render/primitives/geometry → common/internal/render}/GeometryAccumulator.js +2 -70
- package/lib/cjs/common/internal/render/GeometryAccumulator.js.map +1 -0
- package/lib/cjs/common/internal/render/GeometryList.d.ts.map +1 -0
- package/lib/cjs/common/internal/render/GeometryList.js.map +1 -0
- package/lib/{esm/render/primitives/geometry → cjs/common/internal/render}/GeometryPrimitives.d.ts +3 -3
- package/lib/cjs/common/internal/render/GeometryPrimitives.d.ts.map +1 -0
- package/lib/cjs/{render/primitives/geometry → common/internal/render}/GeometryPrimitives.js +3 -3
- package/lib/cjs/common/internal/render/GeometryPrimitives.js.map +1 -0
- package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.d.ts +64 -0
- package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.d.ts.map +1 -0
- package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js +270 -0
- package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -0
- package/lib/cjs/{render/primitives/mesh → common/internal/render}/MeshBuilder.d.ts +4 -4
- package/lib/{esm/render/primitives/mesh → cjs/common/internal/render}/MeshBuilder.d.ts.map +1 -1
- package/lib/cjs/{render/primitives/mesh → common/internal/render}/MeshBuilder.js +2 -2
- package/lib/cjs/common/internal/render/MeshBuilder.js.map +1 -0
- package/lib/{esm/render/primitives/mesh → cjs/common/internal/render}/MeshBuilderMap.d.ts +7 -8
- package/lib/cjs/common/internal/render/MeshBuilderMap.d.ts.map +1 -0
- package/lib/cjs/{render/primitives/mesh → common/internal/render}/MeshBuilderMap.js +4 -6
- package/lib/cjs/common/internal/render/MeshBuilderMap.js.map +1 -0
- package/lib/cjs/common/internal/render/MeshParams.d.ts.map +1 -0
- package/lib/cjs/common/internal/render/MeshParams.js.map +1 -0
- package/lib/cjs/common/internal/render/MeshPrimitive.d.ts.map +1 -0
- package/lib/cjs/common/internal/render/MeshPrimitive.js.map +1 -0
- package/lib/cjs/{render/primitives/mesh → common/internal/render}/MeshPrimitives.d.ts +5 -9
- package/lib/cjs/common/internal/render/MeshPrimitives.d.ts.map +1 -0
- package/lib/cjs/{render/primitives/mesh → common/internal/render}/MeshPrimitives.js +4 -11
- package/lib/cjs/common/internal/render/MeshPrimitives.js.map +1 -0
- package/lib/cjs/common/internal/render/PointCloudPrimitive.d.ts.map +1 -0
- package/lib/cjs/common/internal/render/PointCloudPrimitive.js.map +1 -0
- package/lib/{esm/common/render/primitives → cjs/common/internal/render}/PointStringParams.d.ts +3 -0
- package/lib/cjs/common/internal/render/PointStringParams.d.ts.map +1 -0
- package/lib/cjs/{render/primitives → common/internal/render}/PointStringParams.js +3 -4
- package/lib/cjs/common/internal/render/PointStringParams.js.map +1 -0
- package/lib/{esm/render/primitives → cjs/common/internal/render}/Polyface.d.ts +1 -1
- package/lib/cjs/common/internal/render/Polyface.d.ts.map +1 -0
- package/lib/cjs/common/internal/render/Polyface.js.map +1 -0
- package/lib/cjs/common/{render/primitives → internal/render}/PolylineParams.d.ts +10 -1
- package/lib/cjs/common/internal/render/PolylineParams.d.ts.map +1 -0
- package/lib/cjs/{render/primitives → common/internal/render}/PolylineParams.js +5 -6
- package/lib/cjs/common/internal/render/PolylineParams.js.map +1 -0
- package/lib/{esm/render/primitives → cjs/common/internal/render}/Primitives.d.ts +3 -34
- package/lib/cjs/common/internal/render/Primitives.d.ts.map +1 -0
- package/lib/cjs/{render/primitives → common/internal/render}/Primitives.js +1 -44
- package/lib/cjs/common/internal/render/Primitives.js.map +1 -0
- package/lib/{esm/render/primitives → cjs/common/internal/render}/Strokes.d.ts +1 -1
- package/lib/cjs/common/internal/render/Strokes.d.ts.map +1 -0
- package/lib/cjs/common/internal/render/Strokes.js.map +1 -0
- package/lib/cjs/common/internal/render/SurfaceParams.d.ts.map +1 -0
- package/lib/cjs/common/internal/render/SurfaceParams.js.map +1 -0
- package/lib/cjs/common/internal/render/VertexIndices.d.ts.map +1 -0
- package/lib/cjs/common/internal/render/VertexIndices.js.map +1 -0
- package/lib/cjs/common/internal/render/VertexKey.d.ts.map +1 -0
- package/lib/cjs/common/internal/render/VertexKey.js.map +1 -0
- package/lib/cjs/common/internal/render/VertexTable.d.ts.map +1 -0
- package/lib/cjs/common/internal/render/VertexTable.js.map +1 -0
- package/lib/{esm/render/primitives → cjs/common/internal/render}/VertexTableBuilder.d.ts +4 -4
- package/lib/cjs/common/internal/render/VertexTableBuilder.d.ts.map +1 -0
- package/lib/cjs/{render/primitives → common/internal/render}/VertexTableBuilder.js +6 -6
- package/lib/cjs/common/internal/render/VertexTableBuilder.js.map +1 -0
- package/lib/cjs/common/{render/primitives → internal/render}/VertexTableSplitter.d.ts +1 -1
- package/lib/cjs/common/internal/render/VertexTableSplitter.d.ts.map +1 -0
- package/lib/cjs/common/internal/render/VertexTableSplitter.js.map +1 -0
- package/lib/cjs/common/render/BatchOptions.d.ts +46 -0
- package/lib/cjs/common/render/BatchOptions.d.ts.map +1 -0
- package/lib/cjs/common/render/{primitives/PolylineParams.js → BatchOptions.js} +1 -1
- package/lib/cjs/common/render/BatchOptions.js.map +1 -0
- package/lib/cjs/common/render/GraphicAssembler.d.ts +197 -0
- package/lib/cjs/common/render/GraphicAssembler.d.ts.map +1 -0
- package/lib/cjs/common/render/GraphicAssembler.js +386 -0
- package/lib/cjs/common/render/GraphicAssembler.js.map +1 -0
- package/lib/cjs/common/render/GraphicDescriptionBuilder.d.ts +154 -0
- package/lib/cjs/common/render/GraphicDescriptionBuilder.d.ts.map +1 -0
- package/lib/cjs/common/render/GraphicDescriptionBuilder.js +43 -0
- package/lib/cjs/common/render/GraphicDescriptionBuilder.js.map +1 -0
- package/lib/cjs/common/render/GraphicPrimitive.d.ts.map +1 -0
- package/lib/cjs/common/render/GraphicPrimitive.js.map +1 -0
- package/lib/cjs/common/render/GraphicType.d.ts +62 -0
- package/lib/cjs/common/render/GraphicType.d.ts.map +1 -0
- package/lib/cjs/common/render/GraphicType.js +70 -0
- package/lib/cjs/common/render/GraphicType.js.map +1 -0
- package/lib/cjs/common/render/InstancedGraphicParams.d.ts.map +1 -0
- package/lib/cjs/common/render/InstancedGraphicParams.js.map +1 -0
- package/lib/cjs/common.d.ts +13 -0
- package/lib/cjs/common.d.ts.map +1 -0
- package/lib/cjs/common.js +34 -0
- package/lib/cjs/common.js.map +1 -0
- package/lib/cjs/core-frontend.d.ts +2 -43
- package/lib/cjs/core-frontend.d.ts.map +1 -1
- package/lib/cjs/core-frontend.js +2 -43
- package/lib/cjs/core-frontend.js.map +1 -1
- package/lib/cjs/extension/ExtensionRuntime.js +1 -0
- package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
- package/lib/cjs/internal/cross-package.d.ts +3 -1
- package/lib/cjs/internal/cross-package.d.ts.map +1 -1
- package/lib/cjs/internal/cross-package.js +6 -2
- package/lib/cjs/internal/cross-package.js.map +1 -1
- package/lib/cjs/internal/render/PrimitiveBuilder.d.ts +33 -0
- package/lib/cjs/internal/render/PrimitiveBuilder.d.ts.map +1 -0
- package/lib/cjs/internal/render/PrimitiveBuilder.js +140 -0
- package/lib/cjs/internal/render/PrimitiveBuilder.js.map +1 -0
- package/lib/cjs/render/GraphicBranch.d.ts +1 -1
- package/lib/cjs/render/GraphicBranch.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBranch.js.map +1 -1
- package/lib/cjs/render/GraphicBuilder.d.ts +7 -258
- package/lib/cjs/render/GraphicBuilder.d.ts.map +1 -1
- package/lib/cjs/render/GraphicBuilder.js +18 -284
- package/lib/cjs/render/GraphicBuilder.js.map +1 -1
- package/lib/cjs/render/MockRender.d.ts +5 -5
- package/lib/cjs/render/MockRender.d.ts.map +1 -1
- package/lib/cjs/render/MockRender.js +2 -2
- package/lib/cjs/render/MockRender.js.map +1 -1
- package/lib/cjs/render/ParticleCollectionBuilder.d.ts.map +1 -1
- package/lib/cjs/render/ParticleCollectionBuilder.js +4 -3
- package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
- package/lib/cjs/render/RealityMeshParams.js +1 -1
- package/lib/cjs/render/RealityMeshParams.js.map +1 -1
- package/lib/cjs/render/RenderSystem.d.ts +33 -7
- package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
- package/lib/cjs/render/RenderSystem.js +55 -6
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.d.ts +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/ColorInfo.d.ts +1 -1
- package/lib/cjs/render/webgl/ColorInfo.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
- package/lib/cjs/render/webgl/EdgeGeometry.d.ts +2 -2
- package/lib/cjs/render/webgl/EdgeGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.d.ts +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.d.ts.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.js +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/cjs/render/webgl/Graphic.d.ts +1 -1
- package/lib/cjs/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Graphic.js.map +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.d.ts +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/Material.d.ts +1 -1
- package/lib/cjs/render/webgl/Material.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Material.js.map +1 -1
- package/lib/cjs/render/webgl/Mesh.d.ts +6 -3
- package/lib/cjs/render/webgl/Mesh.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Mesh.js +3 -1
- package/lib/cjs/render/webgl/Mesh.js.map +1 -1
- package/lib/cjs/render/webgl/MeshData.d.ts +2 -2
- package/lib/cjs/render/webgl/MeshData.d.ts.map +1 -1
- package/lib/cjs/render/webgl/MeshData.js.map +1 -1
- package/lib/cjs/render/webgl/MeshGeometry.d.ts +1 -1
- package/lib/cjs/render/webgl/MeshGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PointCloud.d.ts +1 -1
- package/lib/cjs/render/webgl/PointCloud.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
- package/lib/cjs/render/webgl/PointString.d.ts +1 -1
- package/lib/cjs/render/webgl/PointString.d.ts.map +1 -1
- package/lib/cjs/render/webgl/PointString.js.map +1 -1
- package/lib/cjs/render/webgl/Polyline.d.ts +1 -1
- package/lib/cjs/render/webgl/Polyline.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Polyline.js.map +1 -1
- package/lib/cjs/render/webgl/Primitive.d.ts +1 -1
- package/lib/cjs/render/webgl/Primitive.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Primitive.js.map +1 -1
- package/lib/cjs/render/webgl/RenderCommands.js +1 -1
- package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.d.ts +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.js +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/System.d.ts +7 -6
- package/lib/cjs/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/render/webgl/System.js +2 -2
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/Target.d.ts.map +1 -1
- package/lib/cjs/render/webgl/Target.js +1 -1
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/render/webgl/VertexLUT.d.ts +2 -2
- package/lib/cjs/render/webgl/VertexLUT.d.ts.map +1 -1
- package/lib/cjs/render/webgl/VertexLUT.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Animation.d.ts.map +1 -1
- package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/cjs/tile/B3dmReader.d.ts +1 -1
- package/lib/cjs/tile/B3dmReader.js.map +1 -1
- package/lib/cjs/tile/GltfReader.d.ts +5 -5
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +6 -6
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/I3dmReader.d.ts +1 -1
- package/lib/cjs/tile/I3dmReader.js.map +1 -1
- package/lib/cjs/tile/ImdlDecoder.d.ts +1 -1
- package/lib/cjs/tile/ImdlDecoder.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlDecoder.js.map +1 -1
- package/lib/cjs/tile/ImdlGraphicsCreator.d.ts +3 -0
- package/lib/cjs/tile/ImdlGraphicsCreator.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlGraphicsCreator.js +87 -5
- package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.d.ts +1 -1
- package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/OrbitGtTileTree.js +1 -1
- package/lib/cjs/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/cjs/tile/PntsReader.js +1 -1
- package/lib/cjs/tile/PntsReader.js.map +1 -1
- package/lib/cjs/tile/PrimaryTileTree.js +1 -1
- package/lib/cjs/tile/PrimaryTileTree.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/FeatureGraphicsRenderer.d.ts +1 -1
- package/lib/cjs/tile/map/ImageryProviders/FeatureGraphicsRenderer.d.ts.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/FeatureGraphicsRenderer.js.map +1 -1
- package/lib/cjs/tile/map/MapFeatureInfo.d.ts +1 -1
- package/lib/cjs/tile/map/MapFeatureInfo.d.ts.map +1 -1
- package/lib/cjs/tile/map/MapFeatureInfo.js.map +1 -1
- package/lib/cjs/tools/ClipViewTool.d.ts.map +1 -1
- package/lib/cjs/tools/ClipViewTool.js +16 -16
- package/lib/cjs/tools/ClipViewTool.js.map +1 -1
- package/lib/cjs/tools/MeasureTool.d.ts.map +1 -1
- package/lib/cjs/tools/MeasureTool.js +9 -9
- package/lib/cjs/tools/MeasureTool.js.map +1 -1
- package/lib/cjs/tools/ViewTool.d.ts.map +1 -1
- package/lib/cjs/tools/ViewTool.js +8 -8
- package/lib/cjs/tools/ViewTool.js.map +1 -1
- package/lib/cjs/workers/RegisterWorker.d.ts +2 -1
- package/lib/cjs/workers/RegisterWorker.d.ts.map +1 -1
- package/lib/cjs/workers/RegisterWorker.js +2 -1
- package/lib/cjs/workers/RegisterWorker.js.map +1 -1
- package/lib/esm/AccuDraw.d.ts.map +1 -1
- package/lib/esm/AccuDraw.js +1 -1
- package/lib/esm/AccuDraw.js.map +1 -1
- package/lib/esm/AccuSnap.js +1 -1
- package/lib/esm/AccuSnap.js.map +1 -1
- package/lib/esm/AuxCoordSys.d.ts.map +1 -1
- package/lib/esm/AuxCoordSys.js +1 -1
- package/lib/esm/AuxCoordSys.js.map +1 -1
- package/lib/esm/DecorationsCache.d.ts +1 -1
- package/lib/esm/DecorationsCache.d.ts.map +1 -1
- package/lib/esm/DecorationsCache.js.map +1 -1
- package/lib/esm/EnvironmentDecorations.d.ts.map +1 -1
- package/lib/esm/EnvironmentDecorations.js +1 -1
- package/lib/esm/EnvironmentDecorations.js.map +1 -1
- package/lib/esm/HitDetail.d.ts.map +1 -1
- package/lib/esm/HitDetail.js +1 -1
- package/lib/esm/HitDetail.js.map +1 -1
- package/lib/esm/IModelConnection.d.ts +1 -1
- package/lib/esm/IModelConnection.d.ts.map +1 -1
- package/lib/esm/IModelConnection.js +1 -1
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/IpcApp.d.ts +1 -1
- package/lib/esm/IpcApp.d.ts.map +1 -1
- package/lib/esm/IpcApp.js +1 -1
- package/lib/esm/IpcApp.js.map +1 -1
- package/lib/esm/LocalhostIpcApp.js +1 -1
- package/lib/esm/LocalhostIpcApp.js.map +1 -1
- package/lib/esm/NativeApp.js +1 -1
- package/lib/esm/NativeApp.js.map +1 -1
- package/lib/esm/SheetViewState.d.ts.map +1 -1
- package/lib/esm/SheetViewState.js +1 -1
- package/lib/esm/SheetViewState.js.map +1 -1
- package/lib/esm/ViewContext.d.ts +2 -1
- package/lib/esm/ViewContext.d.ts.map +1 -1
- package/lib/esm/ViewContext.js +1 -1
- package/lib/esm/ViewContext.js.map +1 -1
- package/lib/esm/Viewport.d.ts.map +1 -1
- package/lib/esm/Viewport.js +1 -1
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/common/WorkerProxy.d.ts +7 -25
- package/lib/esm/common/WorkerProxy.d.ts.map +1 -1
- package/lib/esm/common/WorkerProxy.js +2 -1
- package/lib/esm/common/WorkerProxy.js.map +1 -1
- package/lib/esm/common/imdl/CompactEdges.d.ts +1 -1
- package/lib/esm/common/imdl/CompactEdges.d.ts.map +1 -1
- package/lib/esm/common/imdl/CompactEdges.js +2 -2
- package/lib/esm/common/imdl/CompactEdges.js.map +1 -1
- package/lib/esm/common/imdl/ImdlModel.d.ts +5 -3
- package/lib/esm/common/imdl/ImdlModel.d.ts.map +1 -1
- package/lib/esm/common/imdl/ImdlModel.js +47 -41
- package/lib/esm/common/imdl/ImdlModel.js.map +1 -1
- package/lib/esm/common/imdl/ImdlSchema.d.ts +4 -4
- package/lib/esm/common/imdl/ImdlSchema.d.ts.map +1 -1
- package/lib/esm/common/imdl/ImdlSchema.js.map +1 -1
- package/lib/esm/common/imdl/ParseImdlDocument.d.ts +4 -2
- package/lib/esm/common/imdl/ParseImdlDocument.d.ts.map +1 -1
- package/lib/esm/common/imdl/ParseImdlDocument.js +9 -8
- package/lib/esm/common/imdl/ParseImdlDocument.js.map +1 -1
- package/lib/{cjs → esm/common}/internal/Symbols.d.ts +2 -0
- package/lib/esm/common/internal/Symbols.d.ts.map +1 -0
- package/lib/esm/{internal → common/internal}/Symbols.js +2 -0
- package/lib/esm/common/internal/Symbols.js.map +1 -0
- package/lib/esm/common/internal/render/AnimationNodeId.d.ts.map +1 -0
- package/lib/esm/common/internal/render/AnimationNodeId.js.map +1 -0
- package/lib/esm/common/internal/render/AuxChannelTable.d.ts.map +1 -0
- package/lib/esm/common/internal/render/AuxChannelTable.js.map +1 -0
- package/lib/esm/common/internal/render/ColorMap.d.ts.map +1 -0
- package/lib/esm/common/internal/render/ColorMap.js.map +1 -0
- package/lib/esm/common/internal/render/DisplayParams.d.ts.map +1 -0
- package/lib/esm/common/internal/render/DisplayParams.js.map +1 -0
- package/lib/esm/common/{render/primitives → internal/render}/EdgeParams.d.ts +7 -0
- package/lib/esm/common/internal/render/EdgeParams.d.ts.map +1 -0
- package/lib/esm/{render/primitives → common/internal/render}/EdgeParams.js +47 -14
- package/lib/esm/common/internal/render/EdgeParams.js.map +1 -0
- package/lib/esm/{render/primitives/geometry → common/internal/render}/GeometryAccumulator.d.ts +4 -18
- package/lib/esm/common/internal/render/GeometryAccumulator.d.ts.map +1 -0
- package/lib/esm/{render/primitives/geometry → common/internal/render}/GeometryAccumulator.js +2 -70
- package/lib/esm/common/internal/render/GeometryAccumulator.js.map +1 -0
- package/lib/esm/common/internal/render/GeometryList.d.ts.map +1 -0
- package/lib/esm/common/internal/render/GeometryList.js.map +1 -0
- package/lib/{cjs/render/primitives/geometry → esm/common/internal/render}/GeometryPrimitives.d.ts +3 -3
- package/lib/esm/common/internal/render/GeometryPrimitives.d.ts.map +1 -0
- package/lib/esm/{render/primitives/geometry → common/internal/render}/GeometryPrimitives.js +3 -3
- package/lib/esm/common/internal/render/GeometryPrimitives.js.map +1 -0
- package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.d.ts +64 -0
- package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.d.ts.map +1 -0
- package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.js +263 -0
- package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -0
- package/lib/esm/{render/primitives/mesh → common/internal/render}/MeshBuilder.d.ts +4 -4
- package/lib/{cjs/render/primitives/mesh → esm/common/internal/render}/MeshBuilder.d.ts.map +1 -1
- package/lib/esm/{render/primitives/mesh → common/internal/render}/MeshBuilder.js +2 -2
- package/lib/esm/common/internal/render/MeshBuilder.js.map +1 -0
- package/lib/{cjs/render/primitives/mesh → esm/common/internal/render}/MeshBuilderMap.d.ts +7 -8
- package/lib/esm/common/internal/render/MeshBuilderMap.d.ts.map +1 -0
- package/lib/esm/{render/primitives/mesh → common/internal/render}/MeshBuilderMap.js +4 -6
- package/lib/esm/common/internal/render/MeshBuilderMap.js.map +1 -0
- package/lib/esm/common/internal/render/MeshParams.d.ts.map +1 -0
- package/lib/esm/common/internal/render/MeshParams.js.map +1 -0
- package/lib/esm/common/internal/render/MeshPrimitive.d.ts.map +1 -0
- package/lib/esm/common/internal/render/MeshPrimitive.js.map +1 -0
- package/lib/esm/{render/primitives/mesh → common/internal/render}/MeshPrimitives.d.ts +5 -9
- package/lib/esm/common/internal/render/MeshPrimitives.d.ts.map +1 -0
- package/lib/esm/{render/primitives/mesh → common/internal/render}/MeshPrimitives.js +4 -11
- package/lib/esm/common/internal/render/MeshPrimitives.js.map +1 -0
- package/lib/esm/common/internal/render/PointCloudPrimitive.d.ts.map +1 -0
- package/lib/esm/common/internal/render/PointCloudPrimitive.js.map +1 -0
- package/lib/{cjs/common/render/primitives → esm/common/internal/render}/PointStringParams.d.ts +3 -0
- package/lib/esm/common/internal/render/PointStringParams.d.ts.map +1 -0
- package/lib/esm/{render/primitives → common/internal/render}/PointStringParams.js +3 -4
- package/lib/esm/common/internal/render/PointStringParams.js.map +1 -0
- package/lib/{cjs/render/primitives → esm/common/internal/render}/Polyface.d.ts +1 -1
- package/lib/esm/common/internal/render/Polyface.d.ts.map +1 -0
- package/lib/esm/common/internal/render/Polyface.js.map +1 -0
- package/lib/esm/common/{render/primitives → internal/render}/PolylineParams.d.ts +10 -1
- package/lib/esm/common/internal/render/PolylineParams.d.ts.map +1 -0
- package/lib/esm/{render/primitives → common/internal/render}/PolylineParams.js +5 -6
- package/lib/esm/common/internal/render/PolylineParams.js.map +1 -0
- package/lib/{cjs/render/primitives → esm/common/internal/render}/Primitives.d.ts +3 -34
- package/lib/esm/common/internal/render/Primitives.d.ts.map +1 -0
- package/lib/esm/{render/primitives → common/internal/render}/Primitives.js +0 -42
- package/lib/esm/common/internal/render/Primitives.js.map +1 -0
- package/lib/{cjs/render/primitives → esm/common/internal/render}/Strokes.d.ts +1 -1
- package/lib/esm/common/internal/render/Strokes.d.ts.map +1 -0
- package/lib/esm/common/internal/render/Strokes.js.map +1 -0
- package/lib/esm/common/internal/render/SurfaceParams.d.ts.map +1 -0
- package/lib/esm/common/internal/render/SurfaceParams.js.map +1 -0
- package/lib/esm/common/internal/render/VertexIndices.d.ts.map +1 -0
- package/lib/esm/common/internal/render/VertexIndices.js.map +1 -0
- package/lib/esm/common/internal/render/VertexKey.d.ts.map +1 -0
- package/lib/esm/common/internal/render/VertexKey.js.map +1 -0
- package/lib/esm/common/internal/render/VertexTable.d.ts.map +1 -0
- package/lib/esm/common/internal/render/VertexTable.js.map +1 -0
- package/lib/{cjs/render/primitives → esm/common/internal/render}/VertexTableBuilder.d.ts +4 -4
- package/lib/esm/common/internal/render/VertexTableBuilder.d.ts.map +1 -0
- package/lib/esm/{render/primitives → common/internal/render}/VertexTableBuilder.js +6 -6
- package/lib/esm/common/internal/render/VertexTableBuilder.js.map +1 -0
- package/lib/esm/common/{render/primitives → internal/render}/VertexTableSplitter.d.ts +1 -1
- package/lib/esm/common/internal/render/VertexTableSplitter.d.ts.map +1 -0
- package/lib/esm/common/internal/render/VertexTableSplitter.js.map +1 -0
- package/lib/esm/common/render/BatchOptions.d.ts +46 -0
- package/lib/esm/common/render/BatchOptions.d.ts.map +1 -0
- package/lib/esm/common/render/{primitives/PolylineParams.js → BatchOptions.js} +1 -1
- package/lib/esm/common/render/BatchOptions.js.map +1 -0
- package/lib/esm/common/render/GraphicAssembler.d.ts +197 -0
- package/lib/esm/common/render/GraphicAssembler.d.ts.map +1 -0
- package/lib/esm/common/render/GraphicAssembler.js +382 -0
- package/lib/esm/common/render/GraphicAssembler.js.map +1 -0
- package/lib/esm/common/render/GraphicDescriptionBuilder.d.ts +154 -0
- package/lib/esm/common/render/GraphicDescriptionBuilder.d.ts.map +1 -0
- package/lib/esm/common/render/GraphicDescriptionBuilder.js +40 -0
- package/lib/esm/common/render/GraphicDescriptionBuilder.js.map +1 -0
- package/lib/esm/common/render/GraphicPrimitive.d.ts.map +1 -0
- package/lib/esm/common/render/GraphicPrimitive.js.map +1 -0
- package/lib/esm/common/render/GraphicType.d.ts +62 -0
- package/lib/esm/common/render/GraphicType.d.ts.map +1 -0
- package/lib/esm/common/render/GraphicType.js +67 -0
- package/lib/esm/common/render/GraphicType.js.map +1 -0
- package/lib/esm/common/render/InstancedGraphicParams.d.ts.map +1 -0
- package/lib/esm/common/render/InstancedGraphicParams.js.map +1 -0
- package/lib/esm/common.d.ts +13 -0
- package/lib/esm/common.d.ts.map +1 -0
- package/lib/esm/common.js +18 -0
- package/lib/esm/common.js.map +1 -0
- package/lib/esm/core-frontend.d.ts +2 -43
- package/lib/esm/core-frontend.d.ts.map +1 -1
- package/lib/esm/core-frontend.js +2 -43
- package/lib/esm/core-frontend.js.map +1 -1
- package/lib/esm/extension/ExtensionRuntime.js +2 -1
- package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
- package/lib/esm/internal/cross-package.d.ts +3 -1
- package/lib/esm/internal/cross-package.d.ts.map +1 -1
- package/lib/esm/internal/cross-package.js +3 -1
- package/lib/esm/internal/cross-package.js.map +1 -1
- package/lib/esm/internal/render/PrimitiveBuilder.d.ts +33 -0
- package/lib/esm/internal/render/PrimitiveBuilder.d.ts.map +1 -0
- package/lib/esm/internal/render/PrimitiveBuilder.js +136 -0
- package/lib/esm/internal/render/PrimitiveBuilder.js.map +1 -0
- package/lib/esm/render/GraphicBranch.d.ts +1 -1
- package/lib/esm/render/GraphicBranch.d.ts.map +1 -1
- package/lib/esm/render/GraphicBranch.js.map +1 -1
- package/lib/esm/render/GraphicBuilder.d.ts +7 -258
- package/lib/esm/render/GraphicBuilder.d.ts.map +1 -1
- package/lib/esm/render/GraphicBuilder.js +18 -284
- package/lib/esm/render/GraphicBuilder.js.map +1 -1
- package/lib/esm/render/MockRender.d.ts +5 -5
- package/lib/esm/render/MockRender.d.ts.map +1 -1
- package/lib/esm/render/MockRender.js +1 -1
- package/lib/esm/render/MockRender.js.map +1 -1
- package/lib/esm/render/ParticleCollectionBuilder.d.ts.map +1 -1
- package/lib/esm/render/ParticleCollectionBuilder.js +4 -3
- package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
- package/lib/esm/render/RealityMeshParams.js +1 -1
- package/lib/esm/render/RealityMeshParams.js.map +1 -1
- package/lib/esm/render/RenderSystem.d.ts +33 -7
- package/lib/esm/render/RenderSystem.d.ts.map +1 -1
- package/lib/esm/render/RenderSystem.js +55 -6
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/webgl/CachedGeometry.d.ts +1 -1
- package/lib/esm/render/webgl/CachedGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/ColorInfo.d.ts +1 -1
- package/lib/esm/render/webgl/ColorInfo.d.ts.map +1 -1
- package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
- package/lib/esm/render/webgl/EdgeGeometry.d.ts +2 -2
- package/lib/esm/render/webgl/EdgeGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.d.ts +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.d.ts.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.js +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/esm/render/webgl/Graphic.d.ts +1 -1
- package/lib/esm/render/webgl/Graphic.d.ts.map +1 -1
- package/lib/esm/render/webgl/Graphic.js.map +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.d.ts +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/Material.d.ts +1 -1
- package/lib/esm/render/webgl/Material.d.ts.map +1 -1
- package/lib/esm/render/webgl/Material.js.map +1 -1
- package/lib/esm/render/webgl/Mesh.d.ts +6 -3
- package/lib/esm/render/webgl/Mesh.d.ts.map +1 -1
- package/lib/esm/render/webgl/Mesh.js +3 -1
- package/lib/esm/render/webgl/Mesh.js.map +1 -1
- package/lib/esm/render/webgl/MeshData.d.ts +2 -2
- package/lib/esm/render/webgl/MeshData.d.ts.map +1 -1
- package/lib/esm/render/webgl/MeshData.js.map +1 -1
- package/lib/esm/render/webgl/MeshGeometry.d.ts +1 -1
- package/lib/esm/render/webgl/MeshGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/PointCloud.d.ts +1 -1
- package/lib/esm/render/webgl/PointCloud.d.ts.map +1 -1
- package/lib/esm/render/webgl/PointCloud.js.map +1 -1
- package/lib/esm/render/webgl/PointString.d.ts +1 -1
- package/lib/esm/render/webgl/PointString.d.ts.map +1 -1
- package/lib/esm/render/webgl/PointString.js.map +1 -1
- package/lib/esm/render/webgl/Polyline.d.ts +1 -1
- package/lib/esm/render/webgl/Polyline.d.ts.map +1 -1
- package/lib/esm/render/webgl/Polyline.js.map +1 -1
- package/lib/esm/render/webgl/Primitive.d.ts +1 -1
- package/lib/esm/render/webgl/Primitive.d.ts.map +1 -1
- package/lib/esm/render/webgl/Primitive.js.map +1 -1
- package/lib/esm/render/webgl/RenderCommands.js +1 -1
- package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.d.ts +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.js +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/esm/render/webgl/System.d.ts +7 -6
- package/lib/esm/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/render/webgl/System.js +1 -1
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/Target.d.ts.map +1 -1
- package/lib/esm/render/webgl/Target.js +1 -1
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/render/webgl/VertexLUT.d.ts +2 -2
- package/lib/esm/render/webgl/VertexLUT.d.ts.map +1 -1
- package/lib/esm/render/webgl/VertexLUT.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Animation.d.ts.map +1 -1
- package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/esm/tile/B3dmReader.d.ts +1 -1
- package/lib/esm/tile/B3dmReader.js.map +1 -1
- package/lib/esm/tile/GltfReader.d.ts +5 -5
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +6 -6
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/I3dmReader.d.ts +1 -1
- package/lib/esm/tile/I3dmReader.js.map +1 -1
- package/lib/esm/tile/ImdlDecoder.d.ts +1 -1
- package/lib/esm/tile/ImdlDecoder.d.ts.map +1 -1
- package/lib/esm/tile/ImdlDecoder.js.map +1 -1
- package/lib/esm/tile/ImdlGraphicsCreator.d.ts +3 -0
- package/lib/esm/tile/ImdlGraphicsCreator.d.ts.map +1 -1
- package/lib/esm/tile/ImdlGraphicsCreator.js +87 -6
- package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -1
- package/lib/esm/tile/ImdlReader.d.ts +1 -1
- package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/OrbitGtTileTree.js +1 -1
- package/lib/esm/tile/OrbitGtTileTree.js.map +1 -1
- package/lib/esm/tile/PntsReader.js +1 -1
- package/lib/esm/tile/PntsReader.js.map +1 -1
- package/lib/esm/tile/PrimaryTileTree.js +1 -1
- package/lib/esm/tile/PrimaryTileTree.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/FeatureGraphicsRenderer.d.ts +1 -1
- package/lib/esm/tile/map/ImageryProviders/FeatureGraphicsRenderer.d.ts.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/FeatureGraphicsRenderer.js.map +1 -1
- package/lib/esm/tile/map/MapFeatureInfo.d.ts +1 -1
- package/lib/esm/tile/map/MapFeatureInfo.d.ts.map +1 -1
- package/lib/esm/tile/map/MapFeatureInfo.js.map +1 -1
- package/lib/esm/tools/ClipViewTool.d.ts.map +1 -1
- package/lib/esm/tools/ClipViewTool.js +1 -1
- package/lib/esm/tools/ClipViewTool.js.map +1 -1
- package/lib/esm/tools/MeasureTool.d.ts.map +1 -1
- package/lib/esm/tools/MeasureTool.js +1 -1
- package/lib/esm/tools/MeasureTool.js.map +1 -1
- package/lib/esm/tools/ViewTool.d.ts.map +1 -1
- package/lib/esm/tools/ViewTool.js +1 -1
- package/lib/esm/tools/ViewTool.js.map +1 -1
- package/lib/esm/workers/RegisterWorker.d.ts +2 -1
- package/lib/esm/workers/RegisterWorker.d.ts.map +1 -1
- package/lib/esm/workers/RegisterWorker.js +2 -1
- package/lib/esm/workers/RegisterWorker.js.map +1 -1
- package/lib/public/scripts/parse-imdl-worker.js +1 -1
- package/lib/workers/webpack/parse-imdl-worker.js +1 -1
- package/package.json +18 -18
- package/lib/cjs/common/render/AnimationNodeId.d.ts.map +0 -1
- package/lib/cjs/common/render/AnimationNodeId.js.map +0 -1
- package/lib/cjs/common/render/primitives/AuxChannelTable.d.ts.map +0 -1
- package/lib/cjs/common/render/primitives/AuxChannelTable.js.map +0 -1
- package/lib/cjs/common/render/primitives/DisplayParams.d.ts.map +0 -1
- package/lib/cjs/common/render/primitives/DisplayParams.js.map +0 -1
- package/lib/cjs/common/render/primitives/EdgeParams.d.ts.map +0 -1
- package/lib/cjs/common/render/primitives/EdgeParams.js +0 -46
- package/lib/cjs/common/render/primitives/EdgeParams.js.map +0 -1
- package/lib/cjs/common/render/primitives/MeshParams.d.ts.map +0 -1
- package/lib/cjs/common/render/primitives/MeshParams.js.map +0 -1
- package/lib/cjs/common/render/primitives/MeshPrimitive.d.ts.map +0 -1
- package/lib/cjs/common/render/primitives/MeshPrimitive.js.map +0 -1
- package/lib/cjs/common/render/primitives/PointStringParams.d.ts.map +0 -1
- package/lib/cjs/common/render/primitives/PointStringParams.js +0 -10
- package/lib/cjs/common/render/primitives/PointStringParams.js.map +0 -1
- package/lib/cjs/common/render/primitives/PolylineParams.d.ts.map +0 -1
- package/lib/cjs/common/render/primitives/PolylineParams.js.map +0 -1
- package/lib/cjs/common/render/primitives/SurfaceParams.d.ts.map +0 -1
- package/lib/cjs/common/render/primitives/SurfaceParams.js.map +0 -1
- package/lib/cjs/common/render/primitives/VertexIndices.d.ts.map +0 -1
- package/lib/cjs/common/render/primitives/VertexIndices.js.map +0 -1
- package/lib/cjs/common/render/primitives/VertexTable.d.ts.map +0 -1
- package/lib/cjs/common/render/primitives/VertexTable.js.map +0 -1
- package/lib/cjs/common/render/primitives/VertexTableSplitter.d.ts.map +0 -1
- package/lib/cjs/common/render/primitives/VertexTableSplitter.js.map +0 -1
- package/lib/cjs/internal/Symbols.d.ts.map +0 -1
- package/lib/cjs/internal/Symbols.js.map +0 -1
- package/lib/cjs/render/GraphicPrimitive.d.ts.map +0 -1
- package/lib/cjs/render/GraphicPrimitive.js.map +0 -1
- package/lib/cjs/render/InstancedGraphicParams.d.ts.map +0 -1
- package/lib/cjs/render/InstancedGraphicParams.js.map +0 -1
- package/lib/cjs/render/primitives/ColorMap.d.ts.map +0 -1
- package/lib/cjs/render/primitives/ColorMap.js.map +0 -1
- package/lib/cjs/render/primitives/EdgeParams.d.ts +0 -8
- package/lib/cjs/render/primitives/EdgeParams.d.ts.map +0 -1
- package/lib/cjs/render/primitives/EdgeParams.js.map +0 -1
- package/lib/cjs/render/primitives/PointCloudPrimitive.d.ts.map +0 -1
- package/lib/cjs/render/primitives/PointCloudPrimitive.js.map +0 -1
- package/lib/cjs/render/primitives/PointStringParams.d.ts +0 -8
- package/lib/cjs/render/primitives/PointStringParams.d.ts.map +0 -1
- package/lib/cjs/render/primitives/PointStringParams.js.map +0 -1
- package/lib/cjs/render/primitives/Polyface.d.ts.map +0 -1
- package/lib/cjs/render/primitives/Polyface.js.map +0 -1
- package/lib/cjs/render/primitives/PolylineParams.d.ts +0 -15
- package/lib/cjs/render/primitives/PolylineParams.d.ts.map +0 -1
- package/lib/cjs/render/primitives/PolylineParams.js.map +0 -1
- package/lib/cjs/render/primitives/Primitives.d.ts.map +0 -1
- package/lib/cjs/render/primitives/Primitives.js.map +0 -1
- package/lib/cjs/render/primitives/Strokes.d.ts.map +0 -1
- package/lib/cjs/render/primitives/Strokes.js.map +0 -1
- package/lib/cjs/render/primitives/VertexKey.d.ts.map +0 -1
- package/lib/cjs/render/primitives/VertexKey.js.map +0 -1
- package/lib/cjs/render/primitives/VertexTableBuilder.d.ts.map +0 -1
- package/lib/cjs/render/primitives/VertexTableBuilder.js.map +0 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.d.ts.map +0 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +0 -1
- package/lib/cjs/render/primitives/geometry/GeometryList.d.ts.map +0 -1
- package/lib/cjs/render/primitives/geometry/GeometryList.js.map +0 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts +0 -50
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.d.ts.map +0 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js +0 -176
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +0 -1
- package/lib/cjs/render/primitives/geometry/GeometryPrimitives.d.ts.map +0 -1
- package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js.map +0 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +0 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilderMap.d.ts.map +0 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +0 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.d.ts.map +0 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +0 -1
- package/lib/esm/common/render/AnimationNodeId.d.ts.map +0 -1
- package/lib/esm/common/render/AnimationNodeId.js.map +0 -1
- package/lib/esm/common/render/primitives/AuxChannelTable.d.ts.map +0 -1
- package/lib/esm/common/render/primitives/AuxChannelTable.js.map +0 -1
- package/lib/esm/common/render/primitives/DisplayParams.d.ts.map +0 -1
- package/lib/esm/common/render/primitives/DisplayParams.js.map +0 -1
- package/lib/esm/common/render/primitives/EdgeParams.d.ts.map +0 -1
- package/lib/esm/common/render/primitives/EdgeParams.js +0 -42
- package/lib/esm/common/render/primitives/EdgeParams.js.map +0 -1
- package/lib/esm/common/render/primitives/MeshParams.d.ts.map +0 -1
- package/lib/esm/common/render/primitives/MeshParams.js.map +0 -1
- package/lib/esm/common/render/primitives/MeshPrimitive.d.ts.map +0 -1
- package/lib/esm/common/render/primitives/MeshPrimitive.js.map +0 -1
- package/lib/esm/common/render/primitives/PointStringParams.d.ts.map +0 -1
- package/lib/esm/common/render/primitives/PointStringParams.js +0 -9
- package/lib/esm/common/render/primitives/PointStringParams.js.map +0 -1
- package/lib/esm/common/render/primitives/PolylineParams.d.ts.map +0 -1
- package/lib/esm/common/render/primitives/PolylineParams.js.map +0 -1
- package/lib/esm/common/render/primitives/SurfaceParams.d.ts.map +0 -1
- package/lib/esm/common/render/primitives/SurfaceParams.js.map +0 -1
- package/lib/esm/common/render/primitives/VertexIndices.d.ts.map +0 -1
- package/lib/esm/common/render/primitives/VertexIndices.js.map +0 -1
- package/lib/esm/common/render/primitives/VertexTable.d.ts.map +0 -1
- package/lib/esm/common/render/primitives/VertexTable.js.map +0 -1
- package/lib/esm/common/render/primitives/VertexTableSplitter.d.ts.map +0 -1
- package/lib/esm/common/render/primitives/VertexTableSplitter.js.map +0 -1
- package/lib/esm/internal/Symbols.d.ts.map +0 -1
- package/lib/esm/internal/Symbols.js.map +0 -1
- package/lib/esm/render/GraphicPrimitive.d.ts.map +0 -1
- package/lib/esm/render/GraphicPrimitive.js.map +0 -1
- package/lib/esm/render/InstancedGraphicParams.d.ts.map +0 -1
- package/lib/esm/render/InstancedGraphicParams.js.map +0 -1
- package/lib/esm/render/primitives/ColorMap.d.ts.map +0 -1
- package/lib/esm/render/primitives/ColorMap.js.map +0 -1
- package/lib/esm/render/primitives/EdgeParams.d.ts +0 -8
- package/lib/esm/render/primitives/EdgeParams.d.ts.map +0 -1
- package/lib/esm/render/primitives/EdgeParams.js.map +0 -1
- package/lib/esm/render/primitives/PointCloudPrimitive.d.ts.map +0 -1
- package/lib/esm/render/primitives/PointCloudPrimitive.js.map +0 -1
- package/lib/esm/render/primitives/PointStringParams.d.ts +0 -8
- package/lib/esm/render/primitives/PointStringParams.d.ts.map +0 -1
- package/lib/esm/render/primitives/PointStringParams.js.map +0 -1
- package/lib/esm/render/primitives/Polyface.d.ts.map +0 -1
- package/lib/esm/render/primitives/Polyface.js.map +0 -1
- package/lib/esm/render/primitives/PolylineParams.d.ts +0 -15
- package/lib/esm/render/primitives/PolylineParams.d.ts.map +0 -1
- package/lib/esm/render/primitives/PolylineParams.js.map +0 -1
- package/lib/esm/render/primitives/Primitives.d.ts.map +0 -1
- package/lib/esm/render/primitives/Primitives.js.map +0 -1
- package/lib/esm/render/primitives/Strokes.d.ts.map +0 -1
- package/lib/esm/render/primitives/Strokes.js.map +0 -1
- package/lib/esm/render/primitives/VertexKey.d.ts.map +0 -1
- package/lib/esm/render/primitives/VertexKey.js.map +0 -1
- package/lib/esm/render/primitives/VertexTableBuilder.d.ts.map +0 -1
- package/lib/esm/render/primitives/VertexTableBuilder.js.map +0 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.d.ts.map +0 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +0 -1
- package/lib/esm/render/primitives/geometry/GeometryList.d.ts.map +0 -1
- package/lib/esm/render/primitives/geometry/GeometryList.js.map +0 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts +0 -50
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.d.ts.map +0 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.js +0 -171
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +0 -1
- package/lib/esm/render/primitives/geometry/GeometryPrimitives.d.ts.map +0 -1
- package/lib/esm/render/primitives/geometry/GeometryPrimitives.js.map +0 -1
- package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +0 -1
- package/lib/esm/render/primitives/mesh/MeshBuilderMap.d.ts.map +0 -1
- package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +0 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.d.ts.map +0 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +0 -1
- /package/lib/cjs/common/{render → internal/render}/AnimationNodeId.d.ts +0 -0
- /package/lib/cjs/common/{render → internal/render}/AnimationNodeId.js +0 -0
- /package/lib/cjs/common/{render/primitives → internal/render}/AuxChannelTable.d.ts +0 -0
- /package/lib/cjs/common/{render/primitives → internal/render}/AuxChannelTable.js +0 -0
- /package/lib/cjs/{render/primitives → common/internal/render}/ColorMap.d.ts +0 -0
- /package/lib/cjs/{render/primitives → common/internal/render}/ColorMap.js +0 -0
- /package/lib/cjs/common/{render/primitives → internal/render}/DisplayParams.d.ts +0 -0
- /package/lib/cjs/common/{render/primitives → internal/render}/DisplayParams.js +0 -0
- /package/lib/cjs/{render/primitives/geometry → common/internal/render}/GeometryList.d.ts +0 -0
- /package/lib/cjs/{render/primitives/geometry → common/internal/render}/GeometryList.js +0 -0
- /package/lib/cjs/common/{render/primitives → internal/render}/MeshParams.d.ts +0 -0
- /package/lib/cjs/common/{render/primitives → internal/render}/MeshParams.js +0 -0
- /package/lib/cjs/common/{render/primitives → internal/render}/MeshPrimitive.d.ts +0 -0
- /package/lib/cjs/common/{render/primitives → internal/render}/MeshPrimitive.js +0 -0
- /package/lib/cjs/{render/primitives → common/internal/render}/PointCloudPrimitive.d.ts +0 -0
- /package/lib/cjs/{render/primitives → common/internal/render}/PointCloudPrimitive.js +0 -0
- /package/lib/cjs/{render/primitives → common/internal/render}/Polyface.js +0 -0
- /package/lib/cjs/{render/primitives → common/internal/render}/Strokes.js +0 -0
- /package/lib/cjs/common/{render/primitives → internal/render}/SurfaceParams.d.ts +0 -0
- /package/lib/cjs/common/{render/primitives → internal/render}/SurfaceParams.js +0 -0
- /package/lib/cjs/common/{render/primitives → internal/render}/VertexIndices.d.ts +0 -0
- /package/lib/cjs/common/{render/primitives → internal/render}/VertexIndices.js +0 -0
- /package/lib/cjs/{render/primitives → common/internal/render}/VertexKey.d.ts +0 -0
- /package/lib/cjs/{render/primitives → common/internal/render}/VertexKey.js +0 -0
- /package/lib/cjs/common/{render/primitives → internal/render}/VertexTable.d.ts +0 -0
- /package/lib/cjs/common/{render/primitives → internal/render}/VertexTable.js +0 -0
- /package/lib/cjs/common/{render/primitives → internal/render}/VertexTableSplitter.js +0 -0
- /package/lib/cjs/{render → common/render}/GraphicPrimitive.d.ts +0 -0
- /package/lib/cjs/{render → common/render}/GraphicPrimitive.js +0 -0
- /package/lib/cjs/{render → common/render}/InstancedGraphicParams.d.ts +0 -0
- /package/lib/cjs/{render → common/render}/InstancedGraphicParams.js +0 -0
- /package/lib/esm/common/{render → internal/render}/AnimationNodeId.d.ts +0 -0
- /package/lib/esm/common/{render → internal/render}/AnimationNodeId.js +0 -0
- /package/lib/esm/common/{render/primitives → internal/render}/AuxChannelTable.d.ts +0 -0
- /package/lib/esm/common/{render/primitives → internal/render}/AuxChannelTable.js +0 -0
- /package/lib/esm/{render/primitives → common/internal/render}/ColorMap.d.ts +0 -0
- /package/lib/esm/{render/primitives → common/internal/render}/ColorMap.js +0 -0
- /package/lib/esm/common/{render/primitives → internal/render}/DisplayParams.d.ts +0 -0
- /package/lib/esm/common/{render/primitives → internal/render}/DisplayParams.js +0 -0
- /package/lib/esm/{render/primitives/geometry → common/internal/render}/GeometryList.d.ts +0 -0
- /package/lib/esm/{render/primitives/geometry → common/internal/render}/GeometryList.js +0 -0
- /package/lib/esm/common/{render/primitives → internal/render}/MeshParams.d.ts +0 -0
- /package/lib/esm/common/{render/primitives → internal/render}/MeshParams.js +0 -0
- /package/lib/esm/common/{render/primitives → internal/render}/MeshPrimitive.d.ts +0 -0
- /package/lib/esm/common/{render/primitives → internal/render}/MeshPrimitive.js +0 -0
- /package/lib/esm/{render/primitives → common/internal/render}/PointCloudPrimitive.d.ts +0 -0
- /package/lib/esm/{render/primitives → common/internal/render}/PointCloudPrimitive.js +0 -0
- /package/lib/esm/{render/primitives → common/internal/render}/Polyface.js +0 -0
- /package/lib/esm/{render/primitives → common/internal/render}/Strokes.js +0 -0
- /package/lib/esm/common/{render/primitives → internal/render}/SurfaceParams.d.ts +0 -0
- /package/lib/esm/common/{render/primitives → internal/render}/SurfaceParams.js +0 -0
- /package/lib/esm/common/{render/primitives → internal/render}/VertexIndices.d.ts +0 -0
- /package/lib/esm/common/{render/primitives → internal/render}/VertexIndices.js +0 -0
- /package/lib/esm/{render/primitives → common/internal/render}/VertexKey.d.ts +0 -0
- /package/lib/esm/{render/primitives → common/internal/render}/VertexKey.js +0 -0
- /package/lib/esm/common/{render/primitives → internal/render}/VertexTable.d.ts +0 -0
- /package/lib/esm/common/{render/primitives → internal/render}/VertexTable.js +0 -0
- /package/lib/esm/common/{render/primitives → internal/render}/VertexTableSplitter.js +0 -0
- /package/lib/esm/{render → common/render}/GraphicPrimitive.d.ts +0 -0
- /package/lib/esm/{render → common/render}/GraphicPrimitive.js +0 -0
- /package/lib/esm/{render → common/render}/InstancedGraphicParams.d.ts +0 -0
- /package/lib/esm/{render → common/render}/InstancedGraphicParams.js +0 -0
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
* @module Rendering
|
|
3
3
|
*/
|
|
4
4
|
import { ColorIndex, FeatureIndex, QParams2d, QParams3d } from "@itwin/core-common";
|
|
5
|
-
import { VertexTable } from "
|
|
6
|
-
import { MeshParams } from "
|
|
7
|
-
import { MeshArgs, PolylineArgs } from "./
|
|
5
|
+
import { VertexTable } from "./VertexTable";
|
|
6
|
+
import { MeshParams } from "./MeshParams";
|
|
7
|
+
import { MeshArgs, PolylineArgs } from "./MeshPrimitives";
|
|
8
8
|
/** @internal */
|
|
9
|
-
export declare function createMeshParams(args: MeshArgs, maxDimension: number): MeshParams;
|
|
9
|
+
export declare function createMeshParams(args: MeshArgs, maxDimension: number, enableIndexedEdges: boolean): MeshParams;
|
|
10
10
|
/** Builds a VertexTable from some data type supplying the vertex data.
|
|
11
11
|
* @internal
|
|
12
12
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VertexTableBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/common/internal/render/VertexTableBuilder.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EACK,UAAU,EAAE,YAAY,EAA+B,SAAS,EAAE,SAAS,EACtF,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAqB,WAAW,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAG1D,gBAAgB;AAChB,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAG,UAAU,CAwB9G;AAED;;GAEG;AACH,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,aAAoB,wBAAwB,IAAI,OAAO,CAAC;IACxD,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;IA6BZ,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,GAAG,WAAW;WAgCrF,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;CAQpG"}
|
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
import { assert } from "@itwin/core-bentley";
|
|
9
9
|
import { Point2d, Range2d } from "@itwin/core-geometry";
|
|
10
10
|
import { ColorDef, FeatureIndexType, FillFlags, QParams2d, QParams3d, QPoint2d, QPoint3dList, } from "@itwin/core-common";
|
|
11
|
-
import { AuxChannelTable } from "
|
|
12
|
-
import { computeDimensions } from "
|
|
13
|
-
import { createSurfaceMaterial, SurfaceType } from "
|
|
14
|
-
import { VertexIndices } from "
|
|
11
|
+
import { AuxChannelTable } from "./AuxChannelTable";
|
|
12
|
+
import { computeDimensions } from "./VertexTable";
|
|
13
|
+
import { createSurfaceMaterial, SurfaceType } from "./SurfaceParams";
|
|
14
|
+
import { VertexIndices } from "./VertexIndices";
|
|
15
15
|
import { createEdgeParams } from "./EdgeParams";
|
|
16
16
|
/** @internal */
|
|
17
|
-
export function createMeshParams(args, maxDimension) {
|
|
17
|
+
export function createMeshParams(args, maxDimension, enableIndexedEdges) {
|
|
18
18
|
const builder = createMeshBuilder(args);
|
|
19
19
|
const vertices = builder.build(args.colors, args.features, maxDimension);
|
|
20
20
|
const surfaceIndices = VertexIndices.fromArray(args.vertIndices);
|
|
@@ -27,7 +27,7 @@ export function createMeshParams(args, maxDimension) {
|
|
|
27
27
|
material: createSurfaceMaterial(args.material),
|
|
28
28
|
};
|
|
29
29
|
const channels = undefined !== args.auxChannels ? AuxChannelTable.fromChannels(args.auxChannels, vertices.numVertices, maxDimension) : undefined;
|
|
30
|
-
const edges = createEdgeParams(args);
|
|
30
|
+
const edges = createEdgeParams({ meshArgs: args, maxWidth: maxDimension, createIndexed: enableIndexedEdges });
|
|
31
31
|
return {
|
|
32
32
|
vertices,
|
|
33
33
|
surface,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VertexTableBuilder.js","sourceRoot":"","sources":["../../../../../src/common/internal/render/VertexTableBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { Point2d, Point3d, Range2d } from \"@itwin/core-geometry\";\r\nimport {\r\n ColorDef, ColorIndex, FeatureIndex, FeatureIndexType, FillFlags, QParams2d, QParams3d, QPoint2d, QPoint3dList,\r\n} from \"@itwin/core-common\";\r\nimport { AuxChannelTable } from \"./AuxChannelTable\";\r\nimport { computeDimensions, VertexTable } from \"./VertexTable\";\r\nimport { createSurfaceMaterial, SurfaceParams, SurfaceType } from \"./SurfaceParams\";\r\nimport { MeshParams } from \"./MeshParams\";\r\nimport { Point3dList } from \"./MeshPrimitive\";\r\nimport { VertexIndices } from \"./VertexIndices\";\r\nimport { MeshArgs, PolylineArgs } from \"./MeshPrimitives\";\r\nimport { createEdgeParams } from \"./EdgeParams\";\r\n\r\n/** @internal */\r\nexport function createMeshParams(args: MeshArgs, maxDimension: number, enableIndexedEdges: boolean): MeshParams {\r\n const builder = createMeshBuilder(args);\r\n const vertices = builder.build(args.colors, args.features, maxDimension);\r\n\r\n const surfaceIndices = VertexIndices.fromArray(args.vertIndices);\r\n\r\n const surface: SurfaceParams = {\r\n type: builder.type,\r\n indices: surfaceIndices,\r\n fillFlags: args.fillFlags ?? FillFlags.ByView,\r\n hasBakedLighting: true === args.hasBakedLighting,\r\n textureMapping: undefined !== args.textureMapping ? { texture: args.textureMapping.texture, alwaysDisplayed: false } : undefined,\r\n material: createSurfaceMaterial(args.material),\r\n };\r\n\r\n const channels = undefined !== args.auxChannels ? AuxChannelTable.fromChannels(args.auxChannels, vertices.numVertices, maxDimension) : undefined;\r\n const edges = createEdgeParams({ meshArgs: args, maxWidth: maxDimension, createIndexed: enableIndexedEdges });\r\n return {\r\n vertices,\r\n surface,\r\n edges,\r\n isPlanar: !!args.isPlanar,\r\n auxChannels: channels,\r\n };\r\n}\r\n\r\n/** Builds a VertexTable from some data type supplying the vertex data.\r\n * @internal\r\n */\r\nexport abstract class VertexTableBuilder {\r\n public data?: Uint8Array;\r\n private _curIndex: number = 0;\r\n\r\n public abstract get numVertices(): number;\r\n public abstract get numRgbaPerVertex(): number;\r\n public abstract get qparams(): QParams3d;\r\n public abstract get usesUnquantizedPositions(): boolean;\r\n public get uvParams(): QParams2d | undefined { return undefined; }\r\n public abstract appendVertex(vertIndex: number): void;\r\n\r\n public appendColorTable(colorIndex: ColorIndex) {\r\n if (undefined !== colorIndex.nonUniform) {\r\n for (const color of colorIndex.nonUniform.colors) {\r\n this.appendColor(color);\r\n }\r\n }\r\n }\r\n\r\n protected advance(nBytes: number) {\r\n this._curIndex += nBytes;\r\n assert(this._curIndex <= this.data!.length);\r\n }\r\n\r\n protected append8(val: number) {\r\n assert(0 <= val);\r\n assert(val <= 0xff);\r\n assert(val === Math.floor(val));\r\n\r\n this.data![this._curIndex] = val;\r\n this.advance(1);\r\n }\r\n protected append16(val: number) {\r\n this.append8(val & 0x00ff);\r\n this.append8(val >>> 8);\r\n }\r\n protected append32(val: number) {\r\n this.append16(val & 0x0000ffff);\r\n this.append16(val >>> 16);\r\n }\r\n\r\n private appendColor(tbgr: number) {\r\n const colors = ColorDef.getColors(tbgr);\r\n\r\n // invert transparency => alpha\r\n colors.t = 255 - colors.t;\r\n\r\n // premultiply alpha...\r\n switch (colors.t) {\r\n case 0:\r\n colors.r = colors.g = colors.b = 0;\r\n break;\r\n case 255:\r\n break;\r\n default: {\r\n const f = colors.t / 255.0;\r\n colors.r = Math.floor(colors.r * f + 0.5);\r\n colors.g = Math.floor(colors.g * f + 0.5);\r\n colors.b = Math.floor(colors.b * f + 0.5);\r\n break;\r\n }\r\n }\r\n\r\n // Store 32-bit value in little-endian order (red first)\r\n this.append8(colors.r);\r\n this.append8(colors.g);\r\n this.append8(colors.b);\r\n this.append8(colors.t);\r\n }\r\n\r\n public build(colorIndex: ColorIndex, featureIndex: FeatureIndex, maxDimension: number): VertexTable {\r\n const { numVertices, numRgbaPerVertex } = this;\r\n const numColors = colorIndex.isUniform ? 0 : colorIndex.numColors;\r\n const dimensions = computeDimensions(numVertices, numRgbaPerVertex, numColors, maxDimension);\r\n assert(0 === dimensions.width % numRgbaPerVertex || (0 < numColors && 1 === dimensions.height));\r\n\r\n const data = new Uint8Array(dimensions.width * dimensions.height * 4);\r\n\r\n this.data = data;\r\n for (let i = 0; i < numVertices; i++)\r\n this.appendVertex(i);\r\n\r\n this.appendColorTable(colorIndex);\r\n\r\n this.data = undefined;\r\n\r\n return {\r\n data,\r\n qparams: this.qparams,\r\n usesUnquantizedPositions: this.usesUnquantizedPositions,\r\n width: dimensions.width,\r\n height: dimensions.height,\r\n hasTranslucency: colorIndex.hasAlpha,\r\n uniformColor: colorIndex.uniform,\r\n numVertices,\r\n numRgbaPerVertex,\r\n uvParams: this.uvParams,\r\n featureIndexType: featureIndex.type,\r\n uniformFeatureID: featureIndex.type === FeatureIndexType.Uniform ? featureIndex.featureID : undefined,\r\n };\r\n }\r\n\r\n public static buildFromPolylines(args: PolylineArgs, maxDimension: number): VertexTable | undefined {\r\n const polylines = args.polylines;\r\n if (polylines.length === 0)\r\n return undefined;\r\n\r\n const builder = createPolylineBuilder(args);\r\n return builder.build(args.colors, args.features, maxDimension);\r\n }\r\n}\r\n\r\ntype VertexData = PolylineArgs | MeshArgs;\r\ntype Quantized<T extends VertexData> = Omit<T, \"points\"> & { points: QPoint3dList };\r\ntype Unquantized<T extends VertexData> = Omit<T, \"points\"> & { points: Omit<Point3dList, \"add\"> };\r\n\r\nnamespace Quantized { // eslint-disable-line @typescript-eslint/no-redeclare\r\n /**\r\n * Supplies vertex data from a PolylineArgs or MeshArgs. Each vertex consists of 12 bytes:\r\n * pos.x 00\r\n * pos.y 02\r\n * pos.z 04\r\n * colorIndex 06\r\n * featureIndex 08 (24 bits)\r\n * materialIndex 0B (for meshes that use a material atlas; otherwise unused). NOTE: Currently front-end code does not produce material atlases.\r\n */\r\n export class SimpleBuilder<T extends Quantized<VertexData>> extends VertexTableBuilder {\r\n public args: T;\r\n protected _qpoints: QPoint3dList;\r\n\r\n public constructor(args: T) {\r\n super();\r\n this._qpoints = args.points;\r\n this.args = args;\r\n assert(undefined !== this.args.points);\r\n }\r\n\r\n public get numVertices() { return this.args.points.length; }\r\n public get numRgbaPerVertex() { return 3; }\r\n public get usesUnquantizedPositions() { return false; }\r\n public get qparams() {\r\n return this._qpoints.params;\r\n }\r\n\r\n public appendVertex(vertIndex: number): void {\r\n this.appendPosition(vertIndex);\r\n this.appendColorIndex(vertIndex);\r\n this.appendFeatureIndex(vertIndex);\r\n }\r\n\r\n protected appendPosition(vertIndex: number) {\r\n this.append16(this._qpoints.list[vertIndex].x);\r\n this.append16(this._qpoints.list[vertIndex].y);\r\n this.append16(this._qpoints.list[vertIndex].z);\r\n }\r\n\r\n protected appendColorIndex(vertIndex: number) {\r\n if (undefined !== this.args.colors.nonUniform) {\r\n this.append16(this.args.colors.nonUniform.indices[vertIndex]);\r\n } else {\r\n this.advance(2);\r\n }\r\n }\r\n\r\n protected appendFeatureIndex(vertIndex: number) {\r\n if (undefined !== this.args.features.featureIDs) {\r\n this.append32(this.args.features.featureIDs[vertIndex]);\r\n } else {\r\n this.advance(4);\r\n }\r\n }\r\n }\r\n\r\n /** Supplies vertex data from a MeshArgs. */\r\n export class MeshBuilder extends SimpleBuilder<Quantized<MeshArgs>> {\r\n public readonly type: SurfaceType;\r\n\r\n protected constructor(args: Quantized<MeshArgs>, type: SurfaceType) {\r\n super(args);\r\n this.type = type;\r\n }\r\n\r\n public static create(args: Quantized<MeshArgs>): MeshBuilder {\r\n if (args.isVolumeClassifier)\r\n return new MeshBuilder(args, SurfaceType.VolumeClassifier);\r\n\r\n const isLit = undefined !== args.normals && 0 < args.normals.length;\r\n const isTextured = undefined !== args.textureMapping;\r\n\r\n let uvParams: QParams2d | undefined;\r\n\r\n if (args.textureMapping) {\r\n const uvRange = Range2d.createNull();\r\n const fpts = args.textureMapping.uvParams;\r\n const pt2d = new Point2d();\r\n if (undefined !== fpts && fpts.length > 0)\r\n for (let i = 0; i < args.points.length; i++)\r\n uvRange.extendPoint(Point2d.create(fpts[i].x, fpts[i].y, pt2d));\r\n\r\n uvParams = QParams2d.fromRange(uvRange);\r\n }\r\n\r\n if (isLit)\r\n return isTextured ? new TexturedLitMeshBuilder(args, uvParams!) : new LitMeshBuilder(args);\r\n else\r\n return isTextured ? new TexturedMeshBuilder(args, uvParams!) : new MeshBuilder(args, SurfaceType.Unlit);\r\n }\r\n }\r\n\r\n /** Supplies vertex data from a MeshArgs where each vertex consists of 16 bytes.\r\n * In addition to the SimpleBuilder data, the final 4 bytes hold the quantized UV params\r\n * The color index is left uninitialized as it is unused.\r\n */\r\n class TexturedMeshBuilder extends MeshBuilder {\r\n private _qparams: QParams2d;\r\n private _qpoint = new QPoint2d();\r\n\r\n public constructor(args: Quantized<MeshArgs>, qparams: QParams2d, type: SurfaceType = SurfaceType.Textured) {\r\n super(args, type);\r\n this._qparams = qparams;\r\n assert(undefined !== args.textureMapping);\r\n }\r\n\r\n public override get numRgbaPerVertex() { return 4; }\r\n public override get uvParams() { return this._qparams; }\r\n\r\n public override appendVertex(vertIndex: number) {\r\n this.appendPosition(vertIndex);\r\n this.appendNormal(vertIndex);\r\n this.appendFeatureIndex(vertIndex);\r\n this.appendUVParams(vertIndex);\r\n }\r\n\r\n protected appendNormal(_vertIndex: number): void { this.advance(2); } // no normal for unlit meshes\r\n\r\n protected appendUVParams(vertIndex: number) {\r\n this._qpoint.init(this.args.textureMapping!.uvParams[vertIndex], this._qparams);\r\n this.append16(this._qpoint.x);\r\n this.append16(this._qpoint.y);\r\n }\r\n }\r\n\r\n /** As with TexturedMeshBuilder, but the color index is replaced with the oct-encoded normal value. */\r\n class TexturedLitMeshBuilder extends TexturedMeshBuilder {\r\n public constructor(args: Quantized<MeshArgs>, qparams: QParams2d) {\r\n super(args, qparams, SurfaceType.TexturedLit);\r\n assert(undefined !== args.normals);\r\n }\r\n\r\n protected override appendNormal(vertIndex: number) { this.append16(this.args.normals![vertIndex].value); }\r\n }\r\n\r\n /** 16 bytes. The last 2 bytes are unused; the 2 immediately preceding it hold the oct-encoded normal value. */\r\n class LitMeshBuilder extends MeshBuilder {\r\n public constructor(args: Quantized<MeshArgs>) {\r\n super(args, SurfaceType.Lit);\r\n assert(undefined !== args.normals);\r\n }\r\n\r\n public override get numRgbaPerVertex() { return 4; }\r\n\r\n public override appendVertex(vertIndex: number) {\r\n super.appendVertex(vertIndex);\r\n this.append16(this.args.normals![vertIndex].value);\r\n this.advance(2); // 2 unused bytes\r\n }\r\n }\r\n}\r\n\r\n/** Builders in this namespace store vertex positions as 32-bit floats instead of quantizing to 16-bit unsigned integers.\r\n * This is preferred for decoration graphics, which might contain ranges of positions that exceed the limits for quantization; if quantized,\r\n * they could produce visual artifacts.\r\n * Each builder produces a VertexTable that starts with the following layout:\r\n * pos.x: 00\r\n * pos.y: 04\r\n * pos.z: 08\r\n * featureIndex: 0C\r\n * materialIndex:0F (NOTE: frontend code currently doesn't produce material atlases, so this is always zero).\r\n * Followed (by default) by:\r\n * colorIndex: 10\r\n * unused: 12\r\n * Subclasses may add 4 more bytes and/or overwrite the final 4 bytes above.\r\n */\r\nnamespace Unquantized { // eslint-disable-line @typescript-eslint/no-redeclare\r\n const u32Array = new Uint32Array(1);\r\n const f32Array = new Float32Array(u32Array.buffer);\r\n\r\n // colorIndex: 10\r\n // unused: 12\r\n export class SimpleBuilder<T extends Unquantized<VertexData>> extends VertexTableBuilder {\r\n public args: T;\r\n protected _points: Point3d[];\r\n private _qparams3d: QParams3d;\r\n\r\n public constructor(args: T) {\r\n super();\r\n assert(!(args.points instanceof QPoint3dList));\r\n this._qparams3d = QParams3d.fromRange(args.points.range);\r\n this.args = args;\r\n this._points = args.points;\r\n }\r\n\r\n public get numVertices() { return this._points.length; }\r\n public get numRgbaPerVertex() { return 5; }\r\n public get usesUnquantizedPositions() { return true; }\r\n public get qparams() { return this._qparams3d; }\r\n\r\n public appendVertex(vertIndex: number): void {\r\n this.appendTransposePosAndFeatureNdx(vertIndex);\r\n this.appendColorIndex(vertIndex);\r\n }\r\n\r\n private appendFloat32(val: number) {\r\n f32Array[0] = val;\r\n this.append32(u32Array[0]);\r\n }\r\n\r\n private convertFloat32(val: number): number {\r\n f32Array[0] = val;\r\n return u32Array[0];\r\n }\r\n\r\n protected appendTransposePosAndFeatureNdx(vertIndex: number) {\r\n // transpose position xyz vals into [0].xyz - [3].xyz, and add feature index at .w\r\n // this is to order things to let shader code access much more efficiently\r\n const pt = this._points[vertIndex];\r\n const x = this.convertFloat32 (pt.x);\r\n const y = this.convertFloat32 (pt.y);\r\n const z = this.convertFloat32 (pt.z);\r\n const featID = (this.args.features.featureIDs) ? this.args.features.featureIDs[vertIndex] : 0;\r\n this.append8(x & 0x000000ff);\r\n this.append8(y & 0x000000ff);\r\n this.append8(z & 0x000000ff);\r\n this.append8(featID & 0x000000ff);\r\n this.append8((x >>> 8) & 0x000000ff);\r\n this.append8((y >>> 8) & 0x000000ff);\r\n this.append8((z >>> 8) & 0x000000ff);\r\n this.append8((featID >>> 8) & 0x000000ff);\r\n this.append8((x >>> 16) & 0x000000ff);\r\n this.append8((y >>> 16) & 0x000000ff);\r\n this.append8((z >>> 16) & 0x000000ff);\r\n this.append8((featID >>> 16) & 0x000000ff);\r\n this.append8(x >>> 24);\r\n this.append8(y >>> 24);\r\n this.append8(z >>> 24);\r\n this.append8(featID >>> 24);\r\n }\r\n\r\n protected appendPosition(vertIndex: number) {\r\n const pt = this._points[vertIndex];\r\n this.appendFloat32(pt.x);\r\n this.appendFloat32(pt.y);\r\n this.appendFloat32(pt.z);\r\n }\r\n\r\n protected appendFeatureIndex(vertIndex: number) {\r\n if (this.args.features.featureIDs)\r\n this.append32(this.args.features.featureIDs[vertIndex]);\r\n else\r\n this.advance(4);\r\n }\r\n\r\n protected _appendColorIndex(vertIndex: number) {\r\n if (undefined !== this.args.colors.nonUniform)\r\n this.append16(this.args.colors.nonUniform.indices[vertIndex]);\r\n else\r\n this.advance(2);\r\n }\r\n\r\n protected appendColorIndex(vertIndex: number) {\r\n this._appendColorIndex(vertIndex);\r\n this.advance(2);\r\n }\r\n }\r\n\r\n export class MeshBuilder extends SimpleBuilder<Unquantized<MeshArgs>> {\r\n public readonly type: SurfaceType;\r\n\r\n protected constructor(args: Unquantized<MeshArgs>, type: SurfaceType) {\r\n super(args);\r\n this.type = type;\r\n }\r\n\r\n public static create(args: Unquantized<MeshArgs>): MeshBuilder {\r\n if (args.isVolumeClassifier)\r\n return new MeshBuilder(args, SurfaceType.VolumeClassifier);\r\n\r\n const isLit = undefined !== args.normals && 0 < args.normals.length;\r\n const isTextured = undefined !== args.textureMapping;\r\n\r\n let uvParams: QParams2d | undefined;\r\n\r\n if (args.textureMapping) {\r\n const uvRange = Range2d.createNull();\r\n const fpts = args.textureMapping.uvParams;\r\n const pt2d = new Point2d();\r\n if (undefined !== fpts && fpts.length > 0)\r\n for (let i = 0; i < args.points.length; i++)\r\n uvRange.extendPoint(Point2d.create(fpts[i].x, fpts[i].y, pt2d));\r\n\r\n uvParams = QParams2d.fromRange(uvRange);\r\n }\r\n\r\n if (isLit)\r\n return isTextured ? new TexturedLitMeshBuilder(args, uvParams!) : new LitMeshBuilder(args);\r\n else\r\n return isTextured ? new TexturedMeshBuilder(args, uvParams!) : new MeshBuilder(args, SurfaceType.Unlit);\r\n }\r\n }\r\n\r\n // u: 10\r\n // v: 12\r\n class TexturedMeshBuilder extends MeshBuilder {\r\n private _qparams: QParams2d;\r\n private _qpoint = new QPoint2d();\r\n\r\n public constructor(args: Unquantized<MeshArgs>, qparams: QParams2d, type = SurfaceType.Textured) {\r\n super(args, type);\r\n this._qparams = qparams;\r\n assert(undefined !== args.textureMapping);\r\n }\r\n\r\n public override get uvParams() { return this._qparams; }\r\n\r\n public override appendVertex(vertIndex: number) {\r\n super.appendVertex(vertIndex);\r\n\r\n this._qpoint.init(this.args.textureMapping!.uvParams[vertIndex], this._qparams);\r\n this.append16(this._qpoint.x);\r\n this.append16(this._qpoint.y);\r\n }\r\n\r\n protected override appendColorIndex() { }\r\n }\r\n\r\n // u: 10\r\n // v: 12\r\n // normal: 14\r\n // unused: 16\r\n class TexturedLitMeshBuilder extends TexturedMeshBuilder {\r\n public constructor(args: Unquantized<MeshArgs>, qparams: QParams2d) {\r\n super(args, qparams, SurfaceType.TexturedLit);\r\n assert(undefined !== args.normals);\r\n }\r\n\r\n public override get numRgbaPerVertex() { return 6; }\r\n\r\n public override appendVertex(vertIndex: number) {\r\n super.appendVertex(vertIndex);\r\n this.append16(this.args.normals![vertIndex].value);\r\n this.advance(2);\r\n }\r\n }\r\n\r\n // color: 10\r\n // normal: 12\r\n class LitMeshBuilder extends MeshBuilder {\r\n public constructor(args: Unquantized<MeshArgs>) {\r\n super(args, SurfaceType.Lit);\r\n assert(undefined !== args.normals);\r\n }\r\n\r\n protected override appendColorIndex(vertIndex: number) {\r\n super._appendColorIndex(vertIndex);\r\n }\r\n\r\n public override appendVertex(vertIndex: number) {\r\n super.appendVertex(vertIndex);\r\n this.append16(this.args.normals![vertIndex].value);\r\n }\r\n }\r\n}\r\n\r\nfunction createMeshBuilder(args: MeshArgs): VertexTableBuilder & { type: SurfaceType } {\r\n if (args.points instanceof QPoint3dList)\r\n return Quantized.MeshBuilder.create(args as Quantized<MeshArgs>);\r\n else\r\n return Unquantized.MeshBuilder.create(args as Unquantized<MeshArgs>);\r\n}\r\n\r\nfunction createPolylineBuilder(args: PolylineArgs): VertexTableBuilder {\r\n if (args.points instanceof QPoint3dList)\r\n return new Quantized.SimpleBuilder(args as Quantized<PolylineArgs>);\r\n else\r\n return new Unquantized.SimpleBuilder(args as Unquantized<PolylineArgs>);\r\n}\r\n"]}
|
|
@@ -5,7 +5,7 @@ import { RenderFeatureTable, RenderMaterial } from "@itwin/core-common";
|
|
|
5
5
|
import { VertexTable } from "./VertexTable";
|
|
6
6
|
import { VertexIndices } from "./VertexIndices";
|
|
7
7
|
import { SurfaceMaterial } from "./SurfaceParams";
|
|
8
|
-
import { MaterialParams } from "
|
|
8
|
+
import { MaterialParams } from "../../render/MaterialParams";
|
|
9
9
|
import { MeshParams } from "./MeshParams";
|
|
10
10
|
import { PointStringParams } from "./PointStringParams";
|
|
11
11
|
import { PolylineParams } from "./PolylineParams";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VertexTableSplitter.d.ts","sourceRoot":"","sources":["../../../../../src/common/internal/render/VertexTableSplitter.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAY,kBAAkB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAElF,OAAO,EAAqB,WAAW,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAyB,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAsB,MAAM,kBAAkB,CAAC;AAEtE,gBAAgB;AAChB,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,WAAW,CAAC;IACtB,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8C;gBAEnD,eAAe,SAAI;IAItC,IAAW,UAAU,IAAI,MAAM,CAG9B;IAEM,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKzB,eAAe,IAAI,aAAa;CAGxC;AAkHD,KAAK,oBAAoB,GAAG,CAAC,IAAI,EAAE,cAAc,KAAK,cAAc,GAAG,SAAS,CAAC;AAsIjF,gBAAgB;AAChB,MAAM,MAAM,sBAAsB,GAAG,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;AAmEtE,gBAAgB;AAChB,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,kBAAkB,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,sBAAsB,CAAC;CACvC;AAED,gBAAgB;AAChB,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,GAAG,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAcjG;AAqRD,gBAAgB;AAChB,MAAM,WAAW,aAAc,SAAQ,oBAAoB;IACzD,MAAM,EAAE,UAAU,CAAC;IACnB,cAAc,EAAE,oBAAoB,CAAC;CACtC;AAED,gBAAgB;AAChB,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAsC5E;AAED,gBAAgB;AAChB,MAAM,WAAW,iBAAkB,SAAQ,oBAAoB;IAC7D,MAAM,EAAE,cAAc,CAAC;CACxB;AAOD,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAqDxF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VertexTableSplitter.js","sourceRoot":"","sources":["../../../../../src/common/internal/render/VertexTableSplitter.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { assert, Uint32ArrayBuilder, Uint8ArrayBuilder } from \"@itwin/core-bentley\";\r\nimport { ColorDef, RenderFeatureTable, RenderMaterial } from \"@itwin/core-common\";\r\nimport { calculateEdgeTableParams, EdgeParams, EdgeTable, IndexedEdgeParams } from \"./EdgeParams\";\r\nimport { computeDimensions, VertexTable } from \"./VertexTable\";\r\nimport { VertexIndices } from \"./VertexIndices\";\r\nimport { createSurfaceMaterial, SurfaceMaterial } from \"./SurfaceParams\";\r\nimport { MaterialParams } from \"../../render/MaterialParams\";\r\nimport { MeshParams } from \"./MeshParams\";\r\nimport { PointStringParams } from \"./PointStringParams\";\r\nimport { PolylineParams, TesselatedPolyline } from \"./PolylineParams\";\r\n\r\n/** @internal */\r\nexport interface VertexTableWithIndices {\r\n vertices: VertexTable;\r\n indices: VertexIndices;\r\n material?: SurfaceMaterial;\r\n}\r\n\r\n/** Builds up a [[VertexIndices]].\r\n * Exported strictly for tests.\r\n * @internal\r\n */\r\nexport class IndexBuffer {\r\n private readonly _builder: Uint8ArrayBuilder;\r\n private readonly _index32 = new Uint32Array(1);\r\n private readonly _index8 = new Uint8Array(this._index32.buffer, 0, 3);\r\n\r\n public constructor(initialCapacity = 3) {\r\n this._builder = new Uint8ArrayBuilder({ initialCapacity: initialCapacity * 3 });\r\n }\r\n\r\n public get numIndices(): number {\r\n assert((this._builder.length % 3) === 0);\r\n return this._builder.length / 3;\r\n }\r\n\r\n public push(index: number): void {\r\n this._index32[0] = index;\r\n this._builder.append(this._index8);\r\n }\r\n\r\n public toVertexIndices(): VertexIndices {\r\n return new VertexIndices(this._builder.toTypedArray());\r\n }\r\n}\r\n\r\n/** Builds up a [[VertexTable]]. */\r\nclass VertexBuffer {\r\n private readonly _builder: Uint32ArrayBuilder;\r\n private readonly _source: VertexTable;\r\n\r\n /** `source` is the original table containing the vertex data from which individual vertices will be obtained. */\r\n public constructor(source: VertexTable) {\r\n this._source = source;\r\n this._builder = new Uint32ArrayBuilder({ initialCapacity: 3 * source.numRgbaPerVertex });\r\n }\r\n\r\n /** The number of vertices currently in the table. */\r\n public get length(): number {\r\n assert((this._builder.length % this.vertexSize) === 0);\r\n return this._builder.length / this.vertexSize;\r\n }\r\n\r\n /** The number of 32-bit unsigned integers (RGBA values) per vertex. */\r\n public get vertexSize(): number {\r\n return this._source.numRgbaPerVertex;\r\n }\r\n\r\n /** Append a vertex. `vertex` must be of size [[vertexSize]]. */\r\n public push(vertex: Uint32Array): void {\r\n assert(vertex.length === this.vertexSize);\r\n this._builder.append(vertex);\r\n }\r\n\r\n /** Construct the finished vertex table. */\r\n public buildVertexTable(maxDimension: number, colorTable: ColorTable | undefined, materialAtlasTable: MaterialAtlasTable): VertexTable {\r\n const source = this._source;\r\n colorTable = colorTable ?? source.uniformColor;\r\n assert(undefined !== colorTable);\r\n\r\n const colorTableLength = colorTable instanceof Uint32Array ? colorTable.length : 0;\r\n const materialAtlasTableLength = materialAtlasTable instanceof Uint32Array ? materialAtlasTable.length : 0;\r\n const dimensions = computeDimensions(this.length, this.vertexSize, colorTableLength + materialAtlasTableLength, maxDimension);\r\n\r\n let rgbaData = this._builder.toTypedArray();\r\n if (dimensions.width * dimensions.height > rgbaData.length) {\r\n const prevData = rgbaData;\r\n rgbaData = new Uint32Array(dimensions.width * dimensions.height);\r\n rgbaData.set(prevData, 0);\r\n }\r\n\r\n let tableSize = this.vertexSize * this.length;\r\n if (colorTable instanceof Uint32Array) {\r\n rgbaData.set(colorTable, tableSize);\r\n tableSize += colorTable.length;\r\n }\r\n\r\n if (materialAtlasTable instanceof Uint32Array)\r\n rgbaData.set(materialAtlasTable, tableSize);\r\n\r\n return {\r\n data: new Uint8Array(rgbaData.buffer, rgbaData.byteOffset, rgbaData.byteLength),\r\n usesUnquantizedPositions: source.usesUnquantizedPositions,\r\n qparams: source.qparams,\r\n width: dimensions.width,\r\n height: dimensions.height,\r\n hasTranslucency: source.hasTranslucency,\r\n uniformColor: colorTable instanceof ColorDef ? colorTable : undefined,\r\n featureIndexType: source.featureIndexType,\r\n uniformFeatureID: source.uniformFeatureID,\r\n numVertices: this.length,\r\n numRgbaPerVertex: source.numRgbaPerVertex,\r\n uvParams: source.uvParams,\r\n };\r\n }\r\n}\r\n\r\ntype ColorTable = Uint32Array | ColorDef;\r\n\r\n/** Remaps portions of a source color table into a filtered target color table. */\r\nclass ColorTableRemapper {\r\n private readonly _remappedIndices = new Map<number, number>();\r\n private readonly _colorTable: Uint32Array;\r\n public readonly colors: number[] = [];\r\n private readonly _32 = new Uint32Array(1);\r\n private readonly _16 = new Uint16Array(this._32.buffer);\r\n\r\n public constructor(colorTable: Uint32Array) {\r\n this._colorTable = colorTable;\r\n }\r\n\r\n /** Extract the color index stored in `vertex`, ensure it is present in the remapped color table, and return its index in that table. */\r\n public remap(vertex: Uint32Array, usesUnquantizedPositions: boolean | undefined): void {\r\n const vertIndex = usesUnquantizedPositions ? 4 : 1;\r\n const shortIndex = usesUnquantizedPositions ? 0 : 1;\r\n this._32[0] = vertex[vertIndex];\r\n const oldIndex = this._16[shortIndex];\r\n let newIndex = this._remappedIndices.get(oldIndex);\r\n if (undefined === newIndex) {\r\n newIndex = this.colors.length;\r\n this._remappedIndices.set(oldIndex, newIndex);\r\n const color = this._colorTable[oldIndex];\r\n this.colors.push(color);\r\n }\r\n\r\n this._16[shortIndex] = newIndex;\r\n vertex[vertIndex] = this._32[0];\r\n }\r\n\r\n /** Construct the finished color table. */\r\n public buildColorTable(): ColorTable {\r\n assert(this.colors.length > 0);\r\n return this.colors.length > 1 ? new Uint32Array(this.colors) : ColorDef.fromAbgr(this.colors[0]);\r\n }\r\n}\r\n\r\ntype MaterialAtlasTable = Uint32Array | SurfaceMaterial | undefined;\r\n\r\ntype CreateRenderMaterial = (args: MaterialParams) => RenderMaterial | undefined;\r\n\r\nclass MaterialAtlasRemapper {\r\n private readonly _remappedIndices = new Map<number, number>();\r\n private readonly _atlasTable: Uint32Array;\r\n private readonly _createMaterial: CreateRenderMaterial;\r\n public readonly materials: number[] = [];\r\n private readonly _32 = new Uint32Array(1);\r\n private readonly _8 = new Uint8Array(this._32.buffer);\r\n\r\n public constructor(_atlasTable: Uint32Array, createMaterial: CreateRenderMaterial) {\r\n this._atlasTable = _atlasTable;\r\n this._createMaterial = createMaterial;\r\n }\r\n\r\n /** Extract the mat index stored in `vertex`, ensure it is present in the remapped atlas table, and return its index in that table. */\r\n public remap(vertex: Uint32Array, usesUnquantizedPositions: boolean | undefined): void {\r\n const vertIndex = usesUnquantizedPositions ? 3 : 2;\r\n this._32[0] = vertex[vertIndex];\r\n const oldIndex = this._8[3];\r\n let newIndex = this._remappedIndices.get(oldIndex);\r\n if (undefined === newIndex) {\r\n newIndex = this.materials.length / 4;\r\n this._remappedIndices.set(oldIndex, newIndex);\r\n let index = oldIndex * 4;\r\n this.materials.push(this._atlasTable[index++]);\r\n this.materials.push(this._atlasTable[index++]);\r\n this.materials.push(this._atlasTable[index++]);\r\n this.materials.push(this._atlasTable[index]);\r\n }\r\n\r\n this._8[3] = newIndex;\r\n vertex[vertIndex] = this._32[0];\r\n }\r\n\r\n private unpackFloat(value: number): number {\r\n this._32[0] = value;\r\n const valUint32 = this._32[0];\r\n const bias = 38.0;\r\n const temp = (valUint32 >>> 24) / 2.0;\r\n let exponent = Math.floor(temp);\r\n let sign = (temp - exponent) * 2.0;\r\n sign = -(sign * 2.0 - 1.0);\r\n const base = sign * (valUint32 & 0xffffff) / 16777216.0;\r\n exponent = exponent - bias;\r\n return base * Math.pow(10.0, exponent);\r\n }\r\n\r\n private materialFromAtlasEntry(entry: Uint32Array): SurfaceMaterial | undefined {\r\n const rgbOverridden = (entry[1] & 0x1000000) !== 0;\r\n const alphaOverridden = (entry[1] & 0x2000000) !== 0;\r\n const args: MaterialParams = {\r\n alpha: alphaOverridden ? (entry[0] >>> 24) / 255.0 : undefined,\r\n diffuse: {\r\n color: rgbOverridden ? ColorDef.fromTbgr(entry[0] & 0xffffff) : undefined,\r\n weight: (entry[1] >>> 8) / 255.0,\r\n },\r\n specular: {\r\n color: ColorDef.fromTbgr(entry[2]),\r\n weight: ((entry[1] >>> 16) & 0xff) / 255.0,\r\n exponent: this.unpackFloat(entry[3]),\r\n },\r\n };\r\n\r\n const material = this._createMaterial(args);\r\n return createSurfaceMaterial(material);\r\n }\r\n\r\n /** Construct the finished color table. */\r\n public buildAtlasTable(): MaterialAtlasTable {\r\n assert(this.materials.length > 0);\r\n const m = new Uint32Array(this.materials);\r\n return this.materials.length > 4 ? m : this.materialFromAtlasEntry(m);\r\n }\r\n}\r\n\r\n/** A node in a split vertex table. Each node corresponds to one or more elements. */\r\nclass Node {\r\n public readonly vertices: VertexBuffer;\r\n public readonly remappedIndices = new Map<number, number>();\r\n public readonly indices = new IndexBuffer();\r\n public readonly colors?: ColorTableRemapper;\r\n public readonly atlas?: MaterialAtlasRemapper;\r\n public readonly usesUnquantizedPositions?: boolean;\r\n\r\n /** `vertexTable` is the source table containing vertex data for all nodes, from which this node will extract the vertices belong to it. */\r\n public constructor(vertexTable: VertexTable, atlas?: AtlasInfo) {\r\n this.vertices = new VertexBuffer(vertexTable);\r\n if (undefined === vertexTable.uniformColor)\r\n this.colors = new ColorTableRemapper(new Uint32Array(vertexTable.data.buffer, vertexTable.data.byteOffset + 4 * vertexTable.numVertices * vertexTable.numRgbaPerVertex));\r\n\r\n if (atlas) {\r\n const atlasOffset = (vertexTable.numVertices * vertexTable.numRgbaPerVertex + atlas.offset) * 4;\r\n this.atlas = new MaterialAtlasRemapper(new Uint32Array(vertexTable.data.buffer, vertexTable.data.byteOffset + atlasOffset), atlas.createMaterial);\r\n }\r\n\r\n this.usesUnquantizedPositions = vertexTable.usesUnquantizedPositions;\r\n }\r\n\r\n public addVertex(originalIndex: number, vertex: Uint32Array): void {\r\n let newIndex = this.remappedIndices.get(originalIndex);\r\n if (undefined === newIndex) {\r\n newIndex = this.vertices.length;\r\n this.remappedIndices.set(originalIndex, newIndex);\r\n\r\n this.colors?.remap(vertex, this.usesUnquantizedPositions);\r\n this.atlas?.remap(vertex, this.usesUnquantizedPositions);\r\n this.vertices.push(vertex);\r\n }\r\n\r\n this.indices.push(newIndex);\r\n }\r\n\r\n public buildOutput(maxDimension: number): VertexTableWithIndices {\r\n const materialAtlas = this.atlas?.buildAtlasTable();\r\n const material: SurfaceMaterial | undefined = (materialAtlas instanceof Uint32Array) ? undefined : materialAtlas;\r\n return {\r\n indices: this.indices.toVertexIndices(),\r\n vertices: this.vertices.buildVertexTable(maxDimension, this.colors?.buildColorTable(), materialAtlas),\r\n material,\r\n };\r\n }\r\n}\r\n\r\ninterface AtlasInfo {\r\n offset: number;\r\n createMaterial: CreateRenderMaterial;\r\n}\r\n\r\ninterface VertexTableSplitArgs extends VertexTableWithIndices {\r\n featureTable: RenderFeatureTable;\r\n atlasInfo?: AtlasInfo;\r\n}\r\n\r\n/** @internal */\r\nexport type ComputeAnimationNodeId = (featureIndex: number) => number;\r\n\r\nclass VertexTableSplitter {\r\n private readonly _input: VertexTableSplitArgs;\r\n private readonly _computeNodeId: ComputeAnimationNodeId;\r\n private readonly _nodes = new Map<number, Node>();\r\n\r\n private constructor(input: VertexTableSplitArgs, computeNodeId: ComputeAnimationNodeId) {\r\n this._input = input;\r\n this._computeNodeId = computeNodeId;\r\n }\r\n\r\n /** Split the source into one or more output nodes, returning a mapping of integer node Id to node. */\r\n public static split(source: VertexTableSplitArgs, computeNodeId: ComputeAnimationNodeId): Map<number, Node> {\r\n const splitter = new VertexTableSplitter(source, computeNodeId);\r\n splitter.split();\r\n return splitter._nodes;\r\n }\r\n\r\n private split(): void {\r\n // Track the most recent feature and corresponding node to avoid repeated lookups - vertices for\r\n // individual features are largely contiguous.\r\n const curState = {\r\n featureIndex: -1,\r\n node: undefined as unknown as Node,\r\n };\r\n\r\n const vertSize = this._input.vertices.numRgbaPerVertex;\r\n const vertex = new Uint32Array(vertSize);\r\n const vertexTable = new Uint32Array(this._input.vertices.data.buffer, this._input.vertices.data.byteOffset, this._input.vertices.numVertices * vertSize);\r\n\r\n let extractFeatureIndex: () => number;\r\n if (this._input.vertices.usesUnquantizedPositions) {\r\n const vertexBytes = new Uint8Array(vertex.buffer);\r\n extractFeatureIndex = () => {\r\n return vertexBytes[3]\r\n | (vertexBytes[7] << 8)\r\n | (vertexBytes[11] << 16);\r\n };\r\n } else {\r\n extractFeatureIndex = () => vertex[2] & 0x00ffffff;\r\n }\r\n\r\n for (const index of this._input.indices) {\r\n // Extract the data for this vertex without allocating new typed arrays.\r\n const vertexOffset = index * vertSize;\r\n for (let i = 0; i < vertex.length; i++)\r\n vertex[i] = vertexTable[vertexOffset + i];\r\n\r\n // Determine to which element the vertex belongs and find the corresponding Node.\r\n const featureIndex = extractFeatureIndex();\r\n if (curState.featureIndex !== featureIndex) {\r\n curState.featureIndex = featureIndex;\r\n const nodeId = this._computeNodeId(featureIndex);\r\n let node = this._nodes.get(nodeId);\r\n if (undefined === node)\r\n this._nodes.set(nodeId, node = new Node(this._input.vertices, this._input.atlasInfo));\r\n\r\n curState.node = node;\r\n }\r\n\r\n // Add the vertex to the appropriate node.\r\n curState.node.addVertex(index, vertex);\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface SplitVertexTableArgs {\r\n featureTable: RenderFeatureTable;\r\n maxDimension: number;\r\n computeNodeId: ComputeAnimationNodeId;\r\n}\r\n\r\n/** @internal */\r\nexport interface SplitPointStringArgs extends SplitVertexTableArgs {\r\n params: PointStringParams;\r\n}\r\n\r\n/** Given a PointStringParams and a function that can associate a node Id with an element Id, produce a mapping of nodes to PointStringParams, splitting up\r\n * the input params as needed.\r\n * @internal\r\n */\r\nexport function splitPointStringParams(args: SplitPointStringArgs): Map<number, PointStringParams> {\r\n const nodes = VertexTableSplitter.split({\r\n indices: args.params.indices,\r\n vertices: args.params.vertices,\r\n featureTable: args.featureTable,\r\n }, args.computeNodeId);\r\n\r\n const result = new Map<number, PointStringParams>();\r\n for (const [id, node] of nodes) {\r\n const { vertices, indices } = node.buildOutput(args.maxDimension);\r\n result.set(id, { vertices, indices, weight: args.params.weight });\r\n }\r\n\r\n return result;\r\n}\r\n\r\ninterface RemappedSegmentEdges {\r\n indices: IndexBuffer;\r\n endPointAndQuadIndices: Uint32ArrayBuilder;\r\n}\r\n\r\ninterface RemappedSilhouetteEdges extends RemappedSegmentEdges {\r\n normalPairs: Uint32ArrayBuilder;\r\n}\r\n\r\nclass RemappedPolylineEdges {\r\n public readonly indices = new IndexBuffer();\r\n public readonly prevIndices = new IndexBuffer();\r\n public readonly nextIndicesAndParams = new Uint32ArrayBuilder();\r\n}\r\n\r\ninterface RemappedIndexEdges {\r\n edges: Uint8ArrayBuilder;\r\n silhouettes: Uint8ArrayBuilder;\r\n}\r\n\r\ninterface RemappedEdges {\r\n segments?: RemappedSegmentEdges;\r\n silhouettes?: RemappedSilhouetteEdges;\r\n polylines?: RemappedPolylineEdges;\r\n indexed?: RemappedIndexEdges;\r\n}\r\n\r\ninterface RemappedIndex {\r\n node: Node;\r\n id: number;\r\n index: number;\r\n}\r\n\r\nfunction remapIndex(out: RemappedIndex, srcIndex: number, nodes: Map<number, Node>): boolean {\r\n for (const [id, node] of nodes) {\r\n const index = node.remappedIndices.get(srcIndex);\r\n if (undefined !== index) {\r\n out.index = index;\r\n out.node = node;\r\n out.id = id;\r\n return true;\r\n }\r\n }\r\n\r\n assert(false);\r\n return false;\r\n}\r\n\r\nfunction remapSegmentEdges(type: \"segments\" | \"silhouettes\", source: EdgeParams, nodes: Map<number, Node>, edges: Map<number, RemappedEdges>): void {\r\n const src = source[type];\r\n if (!src)\r\n return;\r\n\r\n const srcEndPts = new Uint32Array(src.endPointAndQuadIndices.buffer, src.endPointAndQuadIndices.byteOffset, src.endPointAndQuadIndices.length / 4);\r\n let srcNormalPairs;\r\n if (type === \"silhouettes\") {\r\n assert(undefined !== source.silhouettes);\r\n srcNormalPairs = new Uint32Array(source.silhouettes.normalPairs.buffer, source.silhouettes.normalPairs.byteOffset, source.silhouettes.normalPairs.length / 4);\r\n }\r\n\r\n let curIndexIndex = 0;\r\n const remappedIndex = { } as unknown as RemappedIndex;\r\n for (const srcIndex of src.indices) {\r\n if (remapIndex(remappedIndex, srcIndex, nodes)) {\r\n let endPointAndQuad = srcEndPts[curIndexIndex];\r\n const otherIndex = (endPointAndQuad & 0x00ffffff) >>> 0;\r\n const newOtherIndex = remappedIndex.node.remappedIndices.get(otherIndex);\r\n assert(undefined !== newOtherIndex);\r\n endPointAndQuad = (endPointAndQuad & 0xff000000) | newOtherIndex;\r\n\r\n let entry = edges.get(remappedIndex.id);\r\n if (!entry)\r\n edges.set(remappedIndex.id, entry = { });\r\n\r\n if (srcNormalPairs) {\r\n if (!entry.silhouettes)\r\n entry.silhouettes = { indices: new IndexBuffer(), endPointAndQuadIndices: new Uint32ArrayBuilder(), normalPairs: new Uint32ArrayBuilder() };\r\n\r\n entry.silhouettes.normalPairs.push(srcNormalPairs[curIndexIndex]);\r\n } else if (!entry.segments) {\r\n entry.segments = { indices: new IndexBuffer(), endPointAndQuadIndices: new Uint32ArrayBuilder() };\r\n }\r\n\r\n const segments = entry[type];\r\n assert(undefined !== segments);\r\n\r\n segments.indices.push(remappedIndex.index);\r\n segments.endPointAndQuadIndices.push(endPointAndQuad);\r\n }\r\n\r\n ++curIndexIndex;\r\n }\r\n}\r\n\r\nfunction remapPolylineEdges(src: TesselatedPolyline, nodes: Map<number, Node>, edges: Map<number, RemappedEdges>): void {\r\n const srcNextAndParam = new Uint32Array(src.nextIndicesAndParams.buffer, src.nextIndicesAndParams.byteOffset, src.nextIndicesAndParams.length / 4);\r\n const prevIter = src.prevIndices[Symbol.iterator]();\r\n let curIndexIndex = 0;\r\n const remappedIndex = { } as unknown as RemappedIndex;\r\n for (const srcIndex of src.indices) {\r\n if (remapIndex(remappedIndex, srcIndex, nodes)) {\r\n const prevIndex = prevIter.next().value;\r\n assert(undefined !== prevIndex);\r\n const newPrevIndex = remappedIndex.node.remappedIndices.get(prevIndex);\r\n assert(undefined !== newPrevIndex);\r\n\r\n let nextAndParam = srcNextAndParam[curIndexIndex];\r\n const nextIndex = (nextAndParam & 0x00ffffff) >>> 0;\r\n const newNextIndex = remappedIndex.node.remappedIndices.get(nextIndex);\r\n assert(undefined !== newNextIndex);\r\n nextAndParam = (nextAndParam & 0xff000000) | newNextIndex;\r\n\r\n let entry = edges.get(remappedIndex.id);\r\n if (!entry)\r\n edges.set(remappedIndex.id, entry = { });\r\n\r\n if (!entry.polylines)\r\n entry.polylines = new RemappedPolylineEdges();\r\n\r\n entry.polylines.indices.push(remappedIndex.index);\r\n entry.polylines.prevIndices.push(newPrevIndex);\r\n entry.polylines.nextIndicesAndParams.push(nextAndParam);\r\n }\r\n\r\n ++curIndexIndex;\r\n }\r\n}\r\n\r\nfunction remapIndexedEdges(src: IndexedEdgeParams, nodes: Map<number, Node>, edges: Map<number, RemappedEdges>): void {\r\n const srcEdgeData = src.edges.data;\r\n const numSegments = src.edges.numSegments;\r\n const silhouetteStartByteIndex = numSegments * 6 + src.edges.silhouettePadding;\r\n\r\n function getUint24EdgePair(byteIndex: number): [number, number] {\r\n return [srcEdgeData[byteIndex + 0] | (srcEdgeData[byteIndex + 1] << 8) | srcEdgeData[byteIndex + 2] << 16,\r\n srcEdgeData[byteIndex + 3] | (srcEdgeData[byteIndex + 4] << 8) | srcEdgeData[byteIndex + 5] << 16];\r\n }\r\n\r\n function setUint24EdgePair(indEdges: RemappedIndexEdges, value1: number, value2: number): void {\r\n indEdges.edges.push(value1 & 0x0000ff);\r\n indEdges.edges.push((value1 & 0x00ff00) >>> 8);\r\n indEdges.edges.push((value1 & 0xff0000) >>> 16);\r\n indEdges.edges.push(value2 & 0x0000ff);\r\n indEdges.edges.push((value2 & 0x00ff00) >>> 8);\r\n indEdges.edges.push((value2 & 0xff0000) >>> 16);\r\n }\r\n\r\n function getUint24SilPair(byteIndex: number): [number, number, number, number] {\r\n return [srcEdgeData[byteIndex + 0] | (srcEdgeData[byteIndex + 1] << 8) | srcEdgeData[byteIndex + 2] << 16,\r\n srcEdgeData[byteIndex + 3] | (srcEdgeData[byteIndex + 4] << 8) | srcEdgeData[byteIndex + 5] << 16,\r\n srcEdgeData[byteIndex + 6] | (srcEdgeData[byteIndex + 7] << 8), srcEdgeData[byteIndex + 8] | (srcEdgeData[byteIndex + 9] << 8)];\r\n }\r\n\r\n function setUint24SilPair(indSil: RemappedIndexEdges, value1: number, value2: number, norm1: number, norm2: number): void {\r\n indSil.silhouettes.push(value1 & 0x0000ff);\r\n indSil.silhouettes.push((value1 & 0x00ff00) >>> 8);\r\n indSil.silhouettes.push((value1 & 0xff0000) >>> 16);\r\n indSil.silhouettes.push(value2 & 0x0000ff);\r\n indSil.silhouettes.push((value2 & 0x00ff00) >>> 8);\r\n indSil.silhouettes.push((value2 & 0xff0000) >>> 16);\r\n indSil.silhouettes.push(norm1 & 0x0000ff);\r\n indSil.silhouettes.push((norm1 & 0x00ff00) >>> 8);\r\n indSil.silhouettes.push(norm2 & 0x0000ff);\r\n indSil.silhouettes.push((norm2 & 0x00ff00) >>> 8);\r\n }\r\n\r\n let maxIndex = 0;\r\n for (const srcIndex of src.indices)\r\n maxIndex = Math.max (srcIndex, maxIndex);\r\n\r\n const remappedIndex = { } as unknown as RemappedIndex;\r\n let es1Index = 0, es2Index = 0, n1 = 0, n2 = 0;\r\n for (let curSegment = 0, byteIndex = 0; curSegment <= maxIndex; ++curSegment) {\r\n if (curSegment < numSegments) { // edges\r\n [es1Index, es2Index] = getUint24EdgePair(byteIndex);\r\n byteIndex += 6;\r\n } else { // silhouettes\r\n byteIndex = silhouetteStartByteIndex + (curSegment - numSegments) * 10;\r\n [es1Index, es2Index, n1, n2] = getUint24SilPair(byteIndex);\r\n }\r\n\r\n if (remapIndex(remappedIndex, es1Index, nodes)) {\r\n let entry = edges.get(remappedIndex.id);\r\n if (!entry)\r\n edges.set(remappedIndex.id, entry = { });\r\n\r\n if (!entry.indexed)\r\n entry.indexed = { edges: new Uint8ArrayBuilder(), silhouettes: new Uint8ArrayBuilder() };\r\n\r\n if (curSegment < numSegments) { // edges\r\n const newE1Index = remappedIndex.node.remappedIndices.get(es1Index);\r\n assert(undefined !== newE1Index);\r\n const newE2Index = remappedIndex.node.remappedIndices.get(es2Index);\r\n assert(undefined !== newE2Index);\r\n setUint24EdgePair(entry.indexed, newE1Index, newE2Index);\r\n } else { // silhouettes\r\n const newS1Index = remappedIndex.node.remappedIndices.get(es1Index);\r\n assert(undefined !== newS1Index);\r\n const newS2Index = remappedIndex.node.remappedIndices.get(es2Index);\r\n assert(undefined !== newS2Index);\r\n setUint24SilPair(entry.indexed, newS1Index, newS2Index, n1, n2);\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction splitEdges(source: EdgeParams, nodes: Map<number, Node>, maxDimension: number): Map<number, EdgeParams> {\r\n const edges = new Map<number, RemappedEdges>();\r\n remapSegmentEdges(\"segments\", source, nodes, edges);\r\n remapSegmentEdges(\"silhouettes\", source, nodes, edges);\r\n\r\n if (source.polylines)\r\n remapPolylineEdges(source.polylines, nodes, edges);\r\n\r\n if (source.indexed)\r\n remapIndexedEdges(source.indexed, nodes, edges);\r\n\r\n const result = new Map<number, EdgeParams>();\r\n for (const [id, remappedEdges] of edges) {\r\n if (!remappedEdges.segments && !remappedEdges.silhouettes && !remappedEdges.indexed)\r\n continue;\r\n\r\n let edgeTable = { } as unknown as EdgeTable;\r\n let edgeIndices = { } as unknown as VertexIndices;\r\n if (remappedEdges.indexed) {\r\n const numSegmentEdges = remappedEdges.indexed.edges.length / 6;\r\n const numSilhouettes = remappedEdges.indexed.silhouettes.length / 10;\r\n const { width, height, silhouettePadding, silhouetteStartByteIndex } = calculateEdgeTableParams(numSegmentEdges, numSilhouettes, maxDimension);\r\n const data = new Uint8Array(width * height * 4);\r\n data.set(remappedEdges.indexed.edges.toTypedArray(), 0);\r\n if (numSilhouettes > 0)\r\n data.set(remappedEdges.indexed.silhouettes.toTypedArray(), silhouetteStartByteIndex + silhouettePadding);\r\n\r\n const numTotalEdges = numSegmentEdges + numSilhouettes;\r\n edgeIndices = new VertexIndices(new Uint8Array(numTotalEdges * 6 * 3));\r\n for (let i = 0; i < numTotalEdges; i++)\r\n for (let j = 0; j < 6; j++)\r\n edgeIndices.setNthIndex(i * 6 + j, i);\r\n\r\n edgeTable = {\r\n data,\r\n width,\r\n height,\r\n numSegments: numSegmentEdges,\r\n silhouettePadding,\r\n };\r\n }\r\n\r\n result.set(id, {\r\n weight: source.weight,\r\n linePixels: source.linePixels,\r\n segments: remappedEdges.segments ? {\r\n indices: remappedEdges.segments.indices.toVertexIndices(),\r\n endPointAndQuadIndices: remappedEdges.segments.endPointAndQuadIndices.toUint8Array(),\r\n } : undefined,\r\n silhouettes: remappedEdges.silhouettes ? {\r\n indices: remappedEdges.silhouettes.indices.toVertexIndices(),\r\n endPointAndQuadIndices: remappedEdges.silhouettes.endPointAndQuadIndices.toUint8Array(),\r\n normalPairs: remappedEdges.silhouettes.normalPairs.toUint8Array(),\r\n } : undefined,\r\n polylines: remappedEdges.polylines ? {\r\n indices: remappedEdges.polylines.indices.toVertexIndices(),\r\n prevIndices: remappedEdges.polylines.prevIndices.toVertexIndices(),\r\n nextIndicesAndParams: remappedEdges.polylines.nextIndicesAndParams.toUint8Array(),\r\n } : undefined,\r\n indexed: remappedEdges.indexed ? {\r\n indices: edgeIndices,\r\n edges: edgeTable,\r\n } : undefined,\r\n });\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/** @internal */\r\nexport interface SplitMeshArgs extends SplitVertexTableArgs {\r\n params: MeshParams;\r\n createMaterial: CreateRenderMaterial;\r\n}\r\n\r\n/** @internal */\r\nexport function splitMeshParams(args: SplitMeshArgs): Map<number, MeshParams> {\r\n const result = new Map<number, MeshParams>();\r\n\r\n const mat = args.params.surface.material;\r\n const atlasOffset = undefined !== mat && mat.isAtlas ? mat.vertexTableOffset : undefined;\r\n const atlasInfo = undefined !== atlasOffset ? { offset: atlasOffset, createMaterial: args.createMaterial } : undefined;\r\n\r\n const nodes = VertexTableSplitter.split({\r\n indices: args.params.surface.indices,\r\n vertices: args.params.vertices,\r\n featureTable: args.featureTable,\r\n atlasInfo,\r\n }, args.computeNodeId);\r\n\r\n const edges = args.params.edges ? splitEdges(args.params.edges, nodes, args.maxDimension) : undefined;\r\n\r\n for (const [id, node] of nodes) {\r\n const { vertices, indices, material } = node.buildOutput(args.maxDimension);\r\n const params: MeshParams = {\r\n vertices,\r\n surface: {\r\n type: args.params.surface.type,\r\n indices,\r\n fillFlags: args.params.surface.fillFlags,\r\n hasBakedLighting: args.params.surface.hasBakedLighting,\r\n textureMapping: args.params.surface.textureMapping,\r\n material: material !== undefined ? material : args.params.surface.material,\r\n },\r\n edges: edges?.get(id),\r\n isPlanar: args.params.isPlanar,\r\n // ###TODO handle aux channels.......\r\n auxChannels: args.params.auxChannels,\r\n };\r\n\r\n result.set(id, params);\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/** @internal */\r\nexport interface SplitPolylineArgs extends SplitVertexTableArgs {\r\n params: PolylineParams;\r\n}\r\n\r\ninterface PolylineNode extends Node {\r\n prevIndices?: IndexBuffer;\r\n nextIndicesAndParams?: Uint32ArrayBuilder;\r\n}\r\n\r\n/** @internal */\r\nexport function splitPolylineParams(args: SplitPolylineArgs): Map<number, PolylineParams> {\r\n const nodes = VertexTableSplitter.split({\r\n indices: args.params.polyline.indices,\r\n vertices: args.params.vertices,\r\n featureTable: args.featureTable,\r\n }, args.computeNodeId) as Map<number, PolylineNode>;\r\n\r\n const src = args.params.polyline;\r\n const srcNextAndParam = new Uint32Array(src.nextIndicesAndParams.buffer, src.nextIndicesAndParams.byteOffset, src.nextIndicesAndParams.length / 4);\r\n let curIndexIndex = 0;\r\n const remappedIndex = { } as unknown as RemappedIndex;\r\n for (const prevIndex of src.prevIndices) {\r\n if (remapIndex(remappedIndex, prevIndex, nodes)) {\r\n const node = remappedIndex.node as PolylineNode;\r\n if (!node.prevIndices) {\r\n assert(undefined === node.nextIndicesAndParams);\r\n node.prevIndices = new IndexBuffer(node.indices.numIndices);\r\n node.nextIndicesAndParams = new Uint32ArrayBuilder({ initialCapacity: node.indices.numIndices });\r\n } else {\r\n assert(undefined !== node.nextIndicesAndParams);\r\n }\r\n\r\n node.prevIndices.push(remappedIndex.index);\r\n\r\n let nextAndParam = srcNextAndParam[curIndexIndex];\r\n const nextIndex = (nextAndParam & 0x00ffffff) >>> 0;\r\n const newNextIndex = remappedIndex.node.remappedIndices.get(nextIndex);\r\n assert(undefined !== newNextIndex);\r\n nextAndParam = (nextAndParam & 0xff000000) | newNextIndex;\r\n node.nextIndicesAndParams.push(nextAndParam);\r\n }\r\n\r\n ++curIndexIndex;\r\n }\r\n\r\n const result = new Map<number, PolylineParams>();\r\n for (const [id, node] of nodes) {\r\n assert(undefined !== node.prevIndices && undefined !== node.nextIndicesAndParams);\r\n const { vertices, indices } = node.buildOutput(args.maxDimension);\r\n const params: PolylineParams = {\r\n ...args.params,\r\n vertices,\r\n polyline: {\r\n indices,\r\n prevIndices: node.prevIndices.toVertexIndices(),\r\n nextIndicesAndParams: node.nextIndicesAndParams.toUint8Array(),\r\n },\r\n };\r\n\r\n result.set(id, params);\r\n }\r\n\r\n return result;\r\n}\r\n"]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module Rendering
|
|
3
|
+
*/
|
|
4
|
+
import { Id64String } from "@itwin/core-bentley";
|
|
5
|
+
import { GeometryClass } from "@itwin/core-common";
|
|
6
|
+
/** Options used when constructing a `Batch` - that is, a [[RenderGraphic]] with an associated [FeatureTable]($common) describing individual [Feature]($common)s within the
|
|
7
|
+
* graphic. Individual features can be resymbolized in a variety of ways including flashing and hiliting.
|
|
8
|
+
* For example, to prevent graphics produced by [[readElementGraphics]] from being hilited when their corresponding element is in the [[SelectionSet]],
|
|
9
|
+
* pass `{ noHilite: true }` to [[readElementGraphics]].
|
|
10
|
+
* @public
|
|
11
|
+
* @extensions
|
|
12
|
+
*/
|
|
13
|
+
export interface BatchOptions {
|
|
14
|
+
/** Identifies the [[Tile]] associated with the batch, chiefly for debugging purposes.
|
|
15
|
+
* @beta
|
|
16
|
+
*/
|
|
17
|
+
tileId?: string;
|
|
18
|
+
/** If true, features within the batch will not be flashed on mouseover. */
|
|
19
|
+
noFlash?: boolean;
|
|
20
|
+
/** If true, features within the batch will not be hilited when their corresponding element is in the [[SelectionSet]]. */
|
|
21
|
+
noHilite?: boolean;
|
|
22
|
+
/** If true, features within the batch will not be emphasized when the corresponding [[Feature]] is emphasized using [FeatureOverrides]($common). */
|
|
23
|
+
noEmphasis?: boolean;
|
|
24
|
+
/** If true, the contents of the batch will only be drawn by [[Viewport.readPixels]], not [[Viewport.renderFrame]], causing them to be locatable but invisible. */
|
|
25
|
+
locateOnly?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/** Options used as part of [[GraphicBuilderOptions]] to describe a [pickable]($docs/learning/frontend/ViewDecorations#pickable-view-graphic-decorations) [[RenderGraphic]].
|
|
28
|
+
* @public
|
|
29
|
+
* @extensions
|
|
30
|
+
*/
|
|
31
|
+
export interface PickableGraphicOptions extends BatchOptions {
|
|
32
|
+
/** A unique identifier for the graphic.
|
|
33
|
+
* @see [[IModelConnection.transientIds]] to obtain a unique Id in the context of an iModel.
|
|
34
|
+
* @see [[GraphicBuilder.activatePickableId]] or [[GraphicBuilder.activateFeature]] to change the pickable object while adding geometry.
|
|
35
|
+
*/
|
|
36
|
+
id: Id64String;
|
|
37
|
+
/** Optional Id of the subcategory with which the graphic should be associated. */
|
|
38
|
+
subCategoryId?: Id64String;
|
|
39
|
+
/** Optional geometry class for the graphic - defaults to [GeometryClass.Primary]($common). */
|
|
40
|
+
geometryClass?: GeometryClass;
|
|
41
|
+
/** The optional Id of the model with which the graphic should be associated. */
|
|
42
|
+
modelId?: Id64String;
|
|
43
|
+
/** True if the graphic is to be used as a [[DynamicSpatialClassifier]] to classify volumes of a reality model. */
|
|
44
|
+
isVolumeClassifier?: boolean;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=BatchOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BatchOptions.d.ts","sourceRoot":"","sources":["../../../../src/common/render/BatchOptions.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0HAA0H;IAC1H,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oJAAoJ;IACpJ,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kKAAkK;IAClK,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D;;;OAGG;IACH,EAAE,EAAE,UAAU,CAAC;IACf,kFAAkF;IAClF,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,8FAA8F;IAC9F,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,gFAAgF;IAChF,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,kHAAkH;IAClH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BatchOptions.js","sourceRoot":"","sources":["../../../../src/common/render/BatchOptions.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { Id64String } from \"@itwin/core-bentley\";\r\nimport { GeometryClass } from \"@itwin/core-common\";\r\n\r\n/** Options used when constructing a `Batch` - that is, a [[RenderGraphic]] with an associated [FeatureTable]($common) describing individual [Feature]($common)s within the\r\n * graphic. Individual features can be resymbolized in a variety of ways including flashing and hiliting.\r\n * For example, to prevent graphics produced by [[readElementGraphics]] from being hilited when their corresponding element is in the [[SelectionSet]],\r\n * pass `{ noHilite: true }` to [[readElementGraphics]].\r\n * @public\r\n * @extensions\r\n */\r\nexport interface BatchOptions {\r\n /** Identifies the [[Tile]] associated with the batch, chiefly for debugging purposes.\r\n * @beta\r\n */\r\n tileId?: string;\r\n /** If true, features within the batch will not be flashed on mouseover. */\r\n noFlash?: boolean;\r\n /** If true, features within the batch will not be hilited when their corresponding element is in the [[SelectionSet]]. */\r\n noHilite?: boolean;\r\n /** If true, features within the batch will not be emphasized when the corresponding [[Feature]] is emphasized using [FeatureOverrides]($common). */\r\n noEmphasis?: boolean;\r\n /** If true, the contents of the batch will only be drawn by [[Viewport.readPixels]], not [[Viewport.renderFrame]], causing them to be locatable but invisible. */\r\n locateOnly?: boolean;\r\n}\r\n\r\n/** Options used as part of [[GraphicBuilderOptions]] to describe a [pickable]($docs/learning/frontend/ViewDecorations#pickable-view-graphic-decorations) [[RenderGraphic]].\r\n * @public\r\n * @extensions\r\n */\r\nexport interface PickableGraphicOptions extends BatchOptions {\r\n /** A unique identifier for the graphic.\r\n * @see [[IModelConnection.transientIds]] to obtain a unique Id in the context of an iModel.\r\n * @see [[GraphicBuilder.activatePickableId]] or [[GraphicBuilder.activateFeature]] to change the pickable object while adding geometry.\r\n */\r\n id: Id64String;\r\n /** Optional Id of the subcategory with which the graphic should be associated. */\r\n subCategoryId?: Id64String;\r\n /** Optional geometry class for the graphic - defaults to [GeometryClass.Primary]($common). */\r\n geometryClass?: GeometryClass;\r\n /** The optional Id of the model with which the graphic should be associated. */\r\n modelId?: Id64String;\r\n /** True if the graphic is to be used as a [[DynamicSpatialClassifier]] to classify volumes of a reality model. */\r\n isVolumeClassifier?: boolean;\r\n}\r\n\r\n"]}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module Rendering
|
|
3
|
+
*/
|
|
4
|
+
import { Id64String } from "@itwin/core-bentley";
|
|
5
|
+
import { AnyCurvePrimitive, Arc3d, Loop, Path, Point2d, Point3d, Polyface, Range3d, SolidPrimitive, Transform } from "@itwin/core-geometry";
|
|
6
|
+
import { AnalysisStyle, ColorDef, Feature, Frustum, Gradient, GraphicParams, LinePixels, RenderTexture } from "@itwin/core-common";
|
|
7
|
+
import { _accumulator, _implementationProhibited } from "../internal/Symbols";
|
|
8
|
+
import { GraphicType } from "./GraphicType";
|
|
9
|
+
import { PickableGraphicOptions } from "./BatchOptions";
|
|
10
|
+
import { GraphicPrimitive } from "./GraphicPrimitive";
|
|
11
|
+
import { GeometryAccumulator } from "../internal/render/GeometryAccumulator";
|
|
12
|
+
import { Geometry } from "../internal/render/GeometryPrimitives";
|
|
13
|
+
/** @internal Used by GraphicAssembler's internal constructor. Subclasses define their own constructor arguments. */
|
|
14
|
+
export interface GraphicAssemblerOptions {
|
|
15
|
+
/** The constructor is internal, but protected.
|
|
16
|
+
* Prevent anyone outside of itwinjs-core from being able to invoke it, thereby preventing them from creating their own subclasses of GraphicAssembler.
|
|
17
|
+
*/
|
|
18
|
+
[_implementationProhibited]: unknown;
|
|
19
|
+
type: GraphicType;
|
|
20
|
+
placement: Transform;
|
|
21
|
+
pickable?: PickableGraphicOptions;
|
|
22
|
+
preserveOrder: boolean;
|
|
23
|
+
wantNormals: boolean;
|
|
24
|
+
wantEdges: boolean;
|
|
25
|
+
analysisStyle?: AnalysisStyle;
|
|
26
|
+
}
|
|
27
|
+
/** Provides methods for assembling geometric primitives and symbology into a graphical representation.
|
|
28
|
+
* Two concrete implementations are provided:
|
|
29
|
+
* - [[GraphicBuilder]], for creating [[RenderGraphic]]s directly; and
|
|
30
|
+
* - [[GraphicDescriptionBuilder]], for creating a [[GraphicDescription]] from which a [[RenderGraphic]] can be produced.
|
|
31
|
+
*
|
|
32
|
+
* GraphicBuilder can only be used on the main JavaScript thread, so its use should be reserved for relatively simple, quick-to-produce graphics like [[Decorations]].
|
|
33
|
+
* GraphicDescriptionBuilder is designed for use in a [Worker](https://developer.mozilla.org/en-US/docs/Web/API/Worker). It can be used to assemble more
|
|
34
|
+
* complex graphics without blocking the main thread.
|
|
35
|
+
*
|
|
36
|
+
* @note Most of the methods which add geometry to the builder take ownership of their inputs rather than cloning them.
|
|
37
|
+
* So, for example, if you pass an array of points to [[addLineString]], you should not subsequently modify that array.
|
|
38
|
+
* @public
|
|
39
|
+
* @extensions
|
|
40
|
+
*/
|
|
41
|
+
export declare abstract class GraphicAssembler {
|
|
42
|
+
/** @internal */
|
|
43
|
+
abstract [_implementationProhibited]: unknown;
|
|
44
|
+
/** @internal */
|
|
45
|
+
readonly [_accumulator]: GeometryAccumulator;
|
|
46
|
+
private readonly _graphicParams;
|
|
47
|
+
/** The local-to-world transform in which the builder's geometry is to be defined. */
|
|
48
|
+
readonly placement: Transform;
|
|
49
|
+
/** The type of graphic to be produced. */
|
|
50
|
+
readonly type: GraphicType;
|
|
51
|
+
/** If the graphic is to be interactive, specifies its Id and other options. */
|
|
52
|
+
readonly pickable?: Readonly<PickableGraphicOptions>;
|
|
53
|
+
/** If true, the order in which geometry is added to the builder is preserved.
|
|
54
|
+
* This enables overlay and background graphics, which draw without using the depth buffer, to specify which geometry display in front of others when
|
|
55
|
+
* they overlap.
|
|
56
|
+
* For example, to draw an overlay containing a red shape with a white outline, you would add the shape to the GraphicAssember first, followed by its outline,
|
|
57
|
+
* to ensure the outline draws on top of the shape.
|
|
58
|
+
* This incurs a performance penalty due to the increased number of draw calls, and is never useful for graphics that draw using the depth buffer.
|
|
59
|
+
*/
|
|
60
|
+
readonly preserveOrder: boolean;
|
|
61
|
+
/** If true, normal vectors will be generated for surfaces, allowing 3d geometry to receive lighting and reduce z-fighting. */
|
|
62
|
+
readonly wantNormals: boolean;
|
|
63
|
+
/** If true, edges are generated for surfaces, to be drawn if edge display is enabled for the view in which the graphic is drawn. */
|
|
64
|
+
readonly wantEdges: boolean;
|
|
65
|
+
/** @alpha */
|
|
66
|
+
readonly analysisStyle?: AnalysisStyle;
|
|
67
|
+
/** @internal */
|
|
68
|
+
protected constructor(options: GraphicAssemblerOptions);
|
|
69
|
+
/** Whether the builder's geometry is defined in [[CoordSystem.View]] coordinates.
|
|
70
|
+
* Only graphics of type [[GraphicType.ViewBackground]] or [[GraphicType.ViewOverlay]] are defined in view coordinates.
|
|
71
|
+
* @see [[isWorldCoordinates]].
|
|
72
|
+
*/
|
|
73
|
+
get isViewCoordinates(): boolean;
|
|
74
|
+
/** Whether the builder's geometry is defined in [[CoordSystem.World]] coordinates - the inverse of [[isViewCoordinates]]. */
|
|
75
|
+
get isWorldCoordinates(): boolean;
|
|
76
|
+
/** True if the builder produces a graphic of [[GraphicType.Scene]]. */
|
|
77
|
+
get isSceneGraphic(): boolean;
|
|
78
|
+
/** True if the builder produces a graphic of [[GraphicType.ViewBackground]]. */
|
|
79
|
+
get isViewBackground(): boolean;
|
|
80
|
+
/** True if the builder produces a graphic of [[GraphicType.WorldOverlay]] or [[GraphicType.ViewOerlay]]. */
|
|
81
|
+
get isOverlay(): boolean;
|
|
82
|
+
/** Sets the current active symbology for this builder. Any new geometry subsequently added to the builder will be drawn using the specified symbology.
|
|
83
|
+
* @param graphicParams The symbology to apply to subsequent geometry.
|
|
84
|
+
* @see [[setSymbology]] for a convenient way to set common symbology options.
|
|
85
|
+
*/
|
|
86
|
+
activateGraphicParams(graphicParams: GraphicParams): void;
|
|
87
|
+
/** Change the [Feature]($common) to be associated with subsequently-added geometry. This permits multiple features to be batched together into a single graphic
|
|
88
|
+
* for more efficient rendering.
|
|
89
|
+
* @note This method has no effect if [[pickable]] is not defined.
|
|
90
|
+
*/
|
|
91
|
+
activateFeature(feature: Feature): void;
|
|
92
|
+
/** Change the pickable Id to be associated with subsequently-added geometry. This permits multiple pickable objects to be batched together into a single graphic
|
|
93
|
+
* for more efficient rendering. This method calls [[activateFeature]], using the subcategory Id and [GeometryClass]($common) specified in [[pickable]]
|
|
94
|
+
* at construction, if any.
|
|
95
|
+
* @note This method has no effect if [[pickable]] is not defined.
|
|
96
|
+
*/
|
|
97
|
+
activatePickableId(id: Id64String): void;
|
|
98
|
+
/**
|
|
99
|
+
* Appends a 3d line string to the builder.
|
|
100
|
+
* @param points Array of vertices in the line string.
|
|
101
|
+
*/
|
|
102
|
+
addLineString(points: Point3d[]): void;
|
|
103
|
+
/**
|
|
104
|
+
* Appends a 2d line string to the builder.
|
|
105
|
+
* @param points Array of vertices in the line string.
|
|
106
|
+
* @param zDepth Z value in local coordinates to use for each point.
|
|
107
|
+
*/
|
|
108
|
+
addLineString2d(points: Point2d[], zDepth: number): void;
|
|
109
|
+
/**
|
|
110
|
+
* Appends a 3d point string to the builder. The points are drawn disconnected, with a diameter in pixels defined by the builder's active [[GraphicParams.rasterWidth]].
|
|
111
|
+
* @param points Array of vertices in the point string.
|
|
112
|
+
*/
|
|
113
|
+
addPointString(points: Point3d[]): void;
|
|
114
|
+
/**
|
|
115
|
+
* Appends a 2d point string to the builder. The points are drawn disconnected, with a diameter in pixels defined by the builder's active [[GraphicParams.rasterWidth]].
|
|
116
|
+
* @param points Array of vertices in the point string.
|
|
117
|
+
* @param zDepth Z value in local coordinates to use for each point.
|
|
118
|
+
*/
|
|
119
|
+
addPointString2d(points: Point2d[], zDepth: number): void;
|
|
120
|
+
/**
|
|
121
|
+
* Appends a closed 3d planar region to the builder.
|
|
122
|
+
* @param points Array of vertices of the shape.
|
|
123
|
+
*/
|
|
124
|
+
addShape(points: Point3d[]): void;
|
|
125
|
+
/**
|
|
126
|
+
* Appends a closed 2d region to the builder.
|
|
127
|
+
* @param points Array of vertices of the shape.
|
|
128
|
+
* @param zDepth Z value in local coordinates to use for each point.
|
|
129
|
+
*/
|
|
130
|
+
addShape2d(points: Point2d[], zDepth: number): void;
|
|
131
|
+
/**
|
|
132
|
+
* Appends a 3d open arc or closed ellipse to the builder.
|
|
133
|
+
* @param arc Description of the arc or ellipse.
|
|
134
|
+
* @param isEllipse If true, and if the arc defines a full sweep, then draw as a closed ellipse instead of an arc.
|
|
135
|
+
* @param filled If true, and isEllipse is also true, then draw ellipse filled.
|
|
136
|
+
*/
|
|
137
|
+
addArc(ellipse: Arc3d, isEllipse: boolean, filled: boolean): void;
|
|
138
|
+
/**
|
|
139
|
+
* Appends a 2d open arc or closed ellipse to the builder.
|
|
140
|
+
* @param arc Description of the arc or ellipse.
|
|
141
|
+
* @param isEllipse If true, and if the arc defines a full sweep, then draw as a closed ellipse instead of an arc.
|
|
142
|
+
* @param filled If true, and isEllipse is also true, then draw ellipse filled.
|
|
143
|
+
* @param zDepth Z value in local coordinates to use for each point in the arc or ellipse.
|
|
144
|
+
*/
|
|
145
|
+
addArc2d(ellipse: Arc3d, isEllipse: boolean, filled: boolean, zDepth: number): void;
|
|
146
|
+
/** Append a 3d open path to the builder. */
|
|
147
|
+
addPath(path: Path): void;
|
|
148
|
+
/** Append a 3d planar region to the builder. */
|
|
149
|
+
addLoop(loop: Loop): void;
|
|
150
|
+
/** Append a [CurvePrimitive]($core-geometry) to the builder. */
|
|
151
|
+
addCurvePrimitive(curve: AnyCurvePrimitive): void;
|
|
152
|
+
/** Append a mesh to the builder.
|
|
153
|
+
* @param meshData Describes the mesh
|
|
154
|
+
* @param _filled If the mesh describes a planar region, indicates whether its interior area should be drawn with fill in [[RenderMode.Wireframe]].
|
|
155
|
+
*/
|
|
156
|
+
addPolyface(meshData: Polyface, _filled?: boolean): void;
|
|
157
|
+
/** Append a solid primitive to the builder. */
|
|
158
|
+
addSolidPrimitive(primitive: SolidPrimitive): void;
|
|
159
|
+
/** Append any primitive to the builder.
|
|
160
|
+
* @param primitive The graphic primitive to append.
|
|
161
|
+
*/
|
|
162
|
+
addPrimitive(primitive: GraphicPrimitive): void;
|
|
163
|
+
/** Add a box representing a volume of space. Typically used for debugging purposes.
|
|
164
|
+
* @param range The volume of space.
|
|
165
|
+
* @param solid If true, a [[Box]] solid primitive will be added; otherwise, a wireframe outline of the box will be added.
|
|
166
|
+
*/
|
|
167
|
+
addRangeBox(range: Range3d, solid?: boolean): void;
|
|
168
|
+
/** Add Frustum edges. Useful for debugging. */
|
|
169
|
+
addFrustum(frustum: Frustum): void;
|
|
170
|
+
/** Add Frustum sides. Useful for debugging. */
|
|
171
|
+
addFrustumSides(frustum: Frustum): void;
|
|
172
|
+
/** Add range edges from corner points */
|
|
173
|
+
addRangeBoxFromCorners(p: Point3d[]): void;
|
|
174
|
+
/** Add range sides from corner points */
|
|
175
|
+
addRangeBoxSidesFromCorners(p: Point3d[]): void;
|
|
176
|
+
/** Sets the current active symbology for this builder. Any new geometry subsequently added will be drawn using the specified symbology.
|
|
177
|
+
* @param lineColor The color in which to draw lines.
|
|
178
|
+
* @param fillColor The color in which to draw filled regions.
|
|
179
|
+
* @param lineWidth The width in pixels to draw lines. The renderer will clamp this value to an integer in the range [1, 32].
|
|
180
|
+
* @param linePixels The pixel pattern in which to draw lines.
|
|
181
|
+
* @see [[activateGraphicParams]] for additional symbology options.
|
|
182
|
+
*/
|
|
183
|
+
setSymbology(lineColor: ColorDef, fillColor: ColorDef, lineWidth: number, linePixels?: LinePixels): void;
|
|
184
|
+
/** Set the current active symbology for this builder to be a blanking fill before adding a planar region.
|
|
185
|
+
* A planar region drawn with blanking fill renders behind other geometry in the same graphic.
|
|
186
|
+
* Blanking fill is not affected by the fill [[ViewFlags]] being disabled.
|
|
187
|
+
* An example would be to add a line to a graphic containing a shape with blanking fill so that the line is always shown in front of the fill.
|
|
188
|
+
* @param fillColor The color in which to draw filled regions.
|
|
189
|
+
*/
|
|
190
|
+
setBlankingFill(fillColor: ColorDef): void;
|
|
191
|
+
private getMeshDisplayParams;
|
|
192
|
+
private getLinearDisplayParams;
|
|
193
|
+
/** @internal */
|
|
194
|
+
protected abstract resolveGradient(gradient: Gradient.Symb): RenderTexture | undefined;
|
|
195
|
+
add(geom: Geometry): void;
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=GraphicAssembler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GraphicAssembler.d.ts","sourceRoot":"","sources":["../../../../src/common/render/GraphicAssembler.ts"],"names":[],"mappings":"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"}
|