@itwin/core-frontend 4.0.0-dev.85 → 4.0.0-dev.87
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/lib/cjs/AccuDraw.js.map +1 -1
- package/lib/cjs/AccuSnap.js.map +1 -1
- package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
- package/lib/cjs/ApproximateTerrainHeightsProps.js.map +1 -1
- package/lib/cjs/AuxCoordSys.js.map +1 -1
- package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
- package/lib/cjs/BingLocation.js.map +1 -1
- package/lib/cjs/BriefcaseConnection.js.map +1 -1
- package/lib/cjs/BriefcaseTxns.js.map +1 -1
- package/lib/cjs/CategorySelectorState.js.map +1 -1
- package/lib/cjs/ChangeFlags.js.map +1 -1
- package/lib/cjs/CheckpointConnection.js.map +1 -1
- package/lib/cjs/CoordSystem.js.map +1 -1
- package/lib/cjs/DecorationsCache.js.map +1 -1
- package/lib/cjs/DevTools.js.map +1 -1
- package/lib/cjs/DisplayStyleState.js.map +1 -1
- package/lib/cjs/DrawingViewState.js +5 -5
- package/lib/cjs/DrawingViewState.js.map +1 -1
- package/lib/cjs/ElementLocateManager.js.map +1 -1
- package/lib/cjs/EmphasizeElements.js.map +1 -1
- package/lib/cjs/EntityState.js.map +1 -1
- package/lib/cjs/EnvironmentDecorations.js.map +1 -1
- package/lib/cjs/FeatureOverrideProvider.js.map +1 -1
- package/lib/cjs/FlashSettings.js.map +1 -1
- package/lib/cjs/FrontendHubAccess.js.map +1 -1
- package/lib/cjs/FrontendLoggerCategory.js.map +1 -1
- package/lib/cjs/Frustum2d.js.map +1 -1
- package/lib/cjs/FrustumAnimator.js.map +1 -1
- package/lib/cjs/FuzzySearch.js.map +1 -1
- package/lib/cjs/GeoServices.js.map +1 -1
- package/lib/cjs/GlobeAnimator.js.map +1 -1
- package/lib/cjs/GraphicalEditingScope.js.map +1 -1
- package/lib/cjs/HitDetail.js.map +1 -1
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.js +23 -23
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/IModelRoutingContext.js.map +1 -1
- package/lib/cjs/IModeljs-css.js +133 -133
- package/lib/cjs/IModeljs-css.js.map +1 -1
- package/lib/cjs/ImageUtil.js.map +1 -1
- package/lib/cjs/IpcApp.js.map +1 -1
- package/lib/cjs/LinePlaneIntersect.js.map +1 -1
- package/lib/cjs/LocalhostIpcApp.js.map +1 -1
- package/lib/cjs/MarginPercent.js.map +1 -1
- package/lib/cjs/Marker.js.map +1 -1
- package/lib/cjs/ModelSelectorState.js.map +1 -1
- package/lib/cjs/NativeApp.js.map +1 -1
- package/lib/cjs/NativeAppLogger.js.map +1 -1
- package/lib/cjs/NoRenderApp.js.map +1 -1
- package/lib/cjs/NotificationManager.js.map +1 -1
- package/lib/cjs/PerModelCategoryVisibility.js.map +1 -1
- package/lib/cjs/PlanarClipMaskState.js.map +1 -1
- package/lib/cjs/RealityDataSource.js.map +1 -1
- package/lib/cjs/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
- package/lib/cjs/RealityDataSourceContextShareImpl.js.map +1 -1
- package/lib/cjs/RealityDataSourceTilesetUrlImpl.js.map +1 -1
- package/lib/cjs/SelectionSet.js.map +1 -1
- package/lib/cjs/SheetViewState.js.map +1 -1
- package/lib/cjs/SpatialViewState.js.map +1 -1
- package/lib/cjs/Sprites.js.map +1 -1
- package/lib/cjs/StandardView.js.map +1 -1
- package/lib/cjs/SubCategoriesCache.js.map +1 -1
- package/lib/cjs/TentativePoint.js.map +1 -1
- package/lib/cjs/Tiles.js.map +1 -1
- package/lib/cjs/UserPreferences.js.map +1 -1
- package/lib/cjs/ViewAnimation.js.map +1 -1
- package/lib/cjs/ViewContext.js.map +1 -1
- package/lib/cjs/ViewCreator2d.js.map +1 -1
- package/lib/cjs/ViewCreator3d.js.map +1 -1
- package/lib/cjs/ViewGlobalLocation.js.map +1 -1
- package/lib/cjs/ViewManager.js.map +1 -1
- package/lib/cjs/ViewPose.js.map +1 -1
- package/lib/cjs/ViewRect.js.map +1 -1
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/ViewStatus.js.map +1 -1
- package/lib/cjs/ViewingSpace.js.map +1 -1
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/ViewportSync.js.map +1 -1
- package/lib/cjs/WebWorkerManager.js.map +1 -1
- package/lib/cjs/core-frontend.js.map +1 -1
- package/lib/cjs/extension/Extension.js.map +1 -1
- package/lib/cjs/extension/ExtensionAdmin.js.map +1 -1
- package/lib/cjs/extension/ExtensionHost.js.map +1 -1
- package/lib/cjs/extension/ExtensionImpl.js.map +1 -1
- package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
- package/lib/cjs/extension/providers/ExtensionLoadScript.js.map +1 -1
- package/lib/cjs/extension/providers/LocalExtensionProvider.js.map +1 -1
- package/lib/cjs/extension/providers/RemoteExtensionProvider.js.map +1 -1
- package/lib/cjs/gltf/GltfModel.js.map +1 -1
- package/lib/cjs/gltf/GltfParser.js.map +1 -1
- package/lib/cjs/gltf/GltfSchema.js.map +1 -1
- package/lib/cjs/properties/AngleDescription.js.map +1 -1
- package/lib/cjs/properties/FormattedQuantityDescription.js.map +1 -1
- package/lib/cjs/properties/LengthDescription.js.map +1 -1
- package/lib/cjs/public/scripts/checkbrowser.js +24 -24
- package/lib/cjs/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/BasicUnitsProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/cjs/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -1
- package/lib/cjs/quantity-formatting/UnitsData.js.map +1 -1
- package/lib/cjs/render/CanvasDecoration.js.map +1 -1
- package/lib/cjs/render/Decorations.js.map +1 -1
- package/lib/cjs/render/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/FrameStats.js.map +1 -1
- package/lib/cjs/render/GraphicBranch.js.map +1 -1
- package/lib/cjs/render/GraphicBuilder.js.map +1 -1
- package/lib/cjs/render/GraphicPrimitive.js.map +1 -1
- package/lib/cjs/render/InstancedGraphicParams.js.map +1 -1
- package/lib/cjs/render/MockRender.js.map +1 -1
- package/lib/cjs/render/ParticleCollectionBuilder.js.map +1 -1
- package/lib/cjs/render/Pixel.js.map +1 -1
- package/lib/cjs/render/RealityMeshGraphicParams.js.map +1 -1
- package/lib/cjs/render/RealityMeshParams.js.map +1 -1
- package/lib/cjs/render/RenderClipVolume.js.map +1 -1
- package/lib/cjs/render/RenderGraphic.js.map +1 -1
- package/lib/cjs/render/RenderMaterial.d.ts +8 -0
- package/lib/cjs/render/RenderMaterial.d.ts.map +1 -1
- package/lib/cjs/render/RenderMaterial.js.map +1 -1
- package/lib/cjs/render/RenderMemory.js.map +1 -1
- package/lib/cjs/render/RenderPlan.js.map +1 -1
- package/lib/cjs/render/RenderPlanarClassifier.js.map +1 -1
- package/lib/cjs/render/RenderSystem.js.map +1 -1
- package/lib/cjs/render/RenderTarget.js.map +1 -1
- package/lib/cjs/render/RenderTexture.js.map +1 -1
- package/lib/cjs/render/Scene.js.map +1 -1
- package/lib/cjs/render/ScreenSpaceEffectBuilder.js.map +1 -1
- package/lib/cjs/render/UpsampleRealityMeshParams.js.map +1 -1
- package/lib/cjs/render/VisibleFeature.js.map +1 -1
- package/lib/cjs/render/primitives/AuxChannelTable.js.map +1 -1
- package/lib/cjs/render/primitives/ColorMap.js.map +1 -1
- package/lib/cjs/render/primitives/DisplayParams.js.map +1 -1
- package/lib/cjs/render/primitives/EdgeParams.js.map +1 -1
- package/lib/cjs/render/primitives/PointCloudPrimitive.js.map +1 -1
- package/lib/cjs/render/primitives/PointStringParams.js.map +1 -1
- package/lib/cjs/render/primitives/Polyface.js.map +1 -1
- package/lib/cjs/render/primitives/PolylineParams.js.map +1 -1
- package/lib/cjs/render/primitives/Primitives.js.map +1 -1
- package/lib/cjs/render/primitives/Strokes.js.map +1 -1
- package/lib/cjs/render/primitives/SurfaceParams.js.map +1 -1
- package/lib/cjs/render/primitives/VertexKey.js.map +1 -1
- package/lib/cjs/render/primitives/VertexTable.js.map +1 -1
- package/lib/cjs/render/primitives/VertexTableSplitter.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryList.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
- package/lib/cjs/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilder.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
- package/lib/cjs/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/cjs/render/webgl/AtmosphereUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/AttributeBuffers.js.map +1 -1
- package/lib/cjs/render/webgl/AttributeMap.js.map +1 -1
- package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/cjs/render/webgl/BatchState.js.map +1 -1
- package/lib/cjs/render/webgl/BatchUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/BranchStack.js.map +1 -1
- package/lib/cjs/render/webgl/BranchState.js.map +1 -1
- package/lib/cjs/render/webgl/BranchUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/ClipStack.js.map +1 -1
- package/lib/cjs/render/webgl/ClipVolume.js.map +1 -1
- package/lib/cjs/render/webgl/ClippingProgram.js.map +1 -1
- package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
- package/lib/cjs/render/webgl/Diagnostics.js.map +1 -1
- package/lib/cjs/render/webgl/Disposable.js.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
- package/lib/cjs/render/webgl/EDL.js.map +1 -1
- package/lib/cjs/render/webgl/EdgeGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/EdgeSettings.js.map +1 -1
- package/lib/cjs/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/cjs/render/webgl/FloatRGBA.js.map +1 -1
- package/lib/cjs/render/webgl/FrameBuffer.js.map +1 -1
- package/lib/cjs/render/webgl/FrustumUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/GL.js.map +1 -1
- package/lib/cjs/render/webgl/GLTimer.js.map +1 -1
- package/lib/cjs/render/webgl/Graphic.js.map +1 -1
- package/lib/cjs/render/webgl/HiliteUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/IModelFrameLifecycle.js.map +1 -1
- package/lib/cjs/render/webgl/IndexedEdgeGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/Layer.js.map +1 -1
- package/lib/cjs/render/webgl/LayerCommands.js.map +1 -1
- package/lib/cjs/render/webgl/LightingUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/LineCode.js.map +1 -1
- package/lib/cjs/render/webgl/Material.js.map +1 -1
- package/lib/cjs/render/webgl/Matrix.js.map +1 -1
- package/lib/cjs/render/webgl/Mesh.js.map +1 -1
- package/lib/cjs/render/webgl/MeshData.js.map +1 -1
- package/lib/cjs/render/webgl/MeshGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/PerformanceMetrics.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarGrid.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/cjs/render/webgl/PointCloud.js.map +1 -1
- package/lib/cjs/render/webgl/PointString.js.map +1 -1
- package/lib/cjs/render/webgl/Polyline.js.map +1 -1
- package/lib/cjs/render/webgl/Primitive.js.map +1 -1
- package/lib/cjs/render/webgl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/RealityModelUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/RenderBuffer.js.map +1 -1
- package/lib/cjs/render/webgl/RenderCommands.js.map +1 -1
- package/lib/cjs/render/webgl/RenderFlags.js.map +1 -1
- package/lib/cjs/render/webgl/RenderState.js.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/render/webgl/ScratchDrawParams.js.map +1 -1
- package/lib/cjs/render/webgl/ScreenSpaceEffect.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/cjs/render/webgl/ShadowUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/cjs/render/webgl/StyleUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/Sync.js.map +1 -1
- package/lib/cjs/render/webgl/System.d.ts.map +1 -1
- package/lib/cjs/render/webgl/System.js +2 -0
- package/lib/cjs/render/webgl/System.js.map +1 -1
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/render/webgl/TargetGraphics.js.map +1 -1
- package/lib/cjs/render/webgl/TargetUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/Technique.js.map +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/cjs/render/webgl/TechniqueId.js.map +1 -1
- package/lib/cjs/render/webgl/Texture.js.map +1 -1
- package/lib/cjs/render/webgl/TextureDrape.js.map +1 -1
- package/lib/cjs/render/webgl/ThematicSensors.js.map +1 -1
- package/lib/cjs/render/webgl/ThematicUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/UniformHandle.js.map +1 -1
- package/lib/cjs/render/webgl/VertexLUT.js.map +1 -1
- package/lib/cjs/render/webgl/ViewRectUniforms.js.map +1 -1
- package/lib/cjs/render/webgl/VisibleTileFeatures.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js +154 -154
- package/lib/cjs/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Animation.js +83 -83
- package/lib/cjs/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Atmosphere.js +266 -266
- package/lib/cjs/render/webgl/glsl/Atmosphere.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Blur.js +37 -37
- package/lib/cjs/render/webgl/glsl/Blur.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js +4 -4
- package/lib/cjs/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/ClearTranslucent.js +3 -3
- package/lib/cjs/render/webgl/glsl/ClearTranslucent.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Clipping.js +60 -60
- package/lib/cjs/render/webgl/glsl/Clipping.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Color.js +12 -12
- package/lib/cjs/render/webgl/glsl/Color.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Combine3Textures.js +7 -7
- package/lib/cjs/render/webgl/glsl/Combine3Textures.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CombineTextures.js +5 -5
- package/lib/cjs/render/webgl/glsl/CombineTextures.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Common.js +16 -16
- package/lib/cjs/render/webgl/glsl/Common.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Composite.js +71 -71
- package/lib/cjs/render/webgl/glsl/Composite.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyColor.js +6 -6
- package/lib/cjs/render/webgl/glsl/CopyColor.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js +3 -3
- package/lib/cjs/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/CopyStencil.js +4 -4
- package/lib/cjs/render/webgl/glsl/CopyStencil.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Decode.js +65 -65
- package/lib/cjs/render/webgl/glsl/Decode.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/EDL.js +103 -103
- package/lib/cjs/render/webgl/glsl/EDL.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js +25 -25
- package/lib/cjs/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Edge.js +146 -146
- package/lib/cjs/render/webgl/glsl/Edge.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js +232 -232
- package/lib/cjs/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Fragment.js +41 -41
- package/lib/cjs/render/webgl/glsl/Fragment.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Instancing.js +21 -21
- package/lib/cjs/render/webgl/glsl/Instancing.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Lighting.js +92 -92
- package/lib/cjs/render/webgl/glsl/Lighting.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/LookupTable.js +19 -19
- package/lib/cjs/render/webgl/glsl/LookupTable.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Monochrome.js +13 -13
- package/lib/cjs/render/webgl/glsl/Monochrome.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PlanarClassification.js +188 -188
- package/lib/cjs/render/webgl/glsl/PlanarClassification.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PlanarGrid.js +22 -22
- package/lib/cjs/render/webgl/glsl/PlanarGrid.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PointCloud.js +28 -28
- package/lib/cjs/render/webgl/glsl/PointCloud.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/PointString.js +9 -9
- package/lib/cjs/render/webgl/glsl/PointString.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Polyline.js +213 -213
- package/lib/cjs/render/webgl/glsl/Polyline.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/RealityMesh.js +83 -83
- package/lib/cjs/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/RenderPass.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js +9 -9
- package/lib/cjs/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/SkyBox.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/SkySphere.js +49 -49
- package/lib/cjs/render/webgl/glsl/SkySphere.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js +51 -51
- package/lib/cjs/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Surface.js +239 -239
- package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Thematic.js +134 -134
- package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Translucency.js +19 -19
- package/lib/cjs/render/webgl/glsl/Translucency.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Vertex.js +73 -73
- package/lib/cjs/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Viewport.js +38 -38
- package/lib/cjs/render/webgl/glsl/Viewport.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/ViewportQuad.js.map +1 -1
- package/lib/cjs/render/webgl/glsl/Wiremesh.js +10 -10
- package/lib/cjs/render/webgl/glsl/Wiremesh.js.map +1 -1
- package/lib/cjs/render-primitives.js.map +1 -1
- package/lib/cjs/request/Request.js.map +1 -1
- package/lib/cjs/tile/B3dmReader.js.map +1 -1
- package/lib/cjs/tile/BatchedTileIdMap.js.map +1 -1
- package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -1
- package/lib/cjs/tile/ClassifierTileTree.js.map +1 -1
- package/lib/cjs/tile/ContextShareProvider.js.map +1 -1
- package/lib/cjs/tile/DisclosedTileTreeSet.js.map +1 -1
- package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/GraphicsCollector.js.map +1 -1
- package/lib/cjs/tile/I3dmReader.js.map +1 -1
- package/lib/cjs/tile/IModelTile.js.map +1 -1
- package/lib/cjs/tile/IModelTileRequestChannels.js.map +1 -1
- package/lib/cjs/tile/IModelTileTree.js.map +1 -1
- package/lib/cjs/tile/ImdlReader.d.ts +14 -0
- package/lib/cjs/tile/ImdlReader.d.ts.map +1 -1
- package/lib/cjs/tile/ImdlReader.js +23 -1
- package/lib/cjs/tile/ImdlReader.js.map +1 -1
- package/lib/cjs/tile/LRUTileList.js.map +1 -1
- package/lib/cjs/tile/OPCFormatInterpreter.js.map +1 -1
- package/lib/cjs/tile/PntsReader.js.map +1 -1
- package/lib/cjs/tile/RealityTile.js.map +1 -1
- package/lib/cjs/tile/RealityTileDrawArgs.js.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
- package/lib/cjs/tile/RealityTileTree.js +1 -1
- package/lib/cjs/tile/RealityTileTree.js.map +1 -1
- package/lib/cjs/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/cjs/tile/Tile.js.map +1 -1
- package/lib/cjs/tile/TileAdmin.d.ts +1 -1
- package/lib/cjs/tile/TileAdmin.d.ts.map +1 -1
- package/lib/cjs/tile/TileAdmin.js +3 -1
- package/lib/cjs/tile/TileAdmin.js.map +1 -1
- package/lib/cjs/tile/TileContent.js.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.d.ts +4 -0
- package/lib/cjs/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/cjs/tile/TileDrawArgs.js +4 -0
- package/lib/cjs/tile/TileDrawArgs.js.map +1 -1
- package/lib/cjs/tile/TileGeometryCollector.js.map +1 -1
- package/lib/cjs/tile/TileParams.js.map +1 -1
- package/lib/cjs/tile/TileRequest.js.map +1 -1
- package/lib/cjs/tile/TileRequestChannel.js.map +1 -1
- package/lib/cjs/tile/TileRequestChannels.js.map +1 -1
- package/lib/cjs/tile/TileStorage.js.map +1 -1
- package/lib/cjs/tile/TileTree.js +1 -1
- package/lib/cjs/tile/TileTree.js.map +1 -1
- package/lib/cjs/tile/TileTreeOwner.js.map +1 -1
- package/lib/cjs/tile/TileTreeParams.js.map +1 -1
- package/lib/cjs/tile/TileTreeReference.js.map +1 -1
- package/lib/cjs/tile/TileTreeSupplier.js.map +1 -1
- package/lib/cjs/tile/TileUsageMarker.js.map +1 -1
- package/lib/cjs/tile/TileUser.js.map +1 -1
- package/lib/cjs/tile/TileUserSet.js.map +1 -1
- package/lib/cjs/tile/TiledGraphicsProvider.js.map +1 -1
- package/lib/cjs/tile/ViewFlagOverrides.js.map +1 -1
- package/lib/cjs/tile/internal.js.map +1 -1
- package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/cjs/tile/map/BingElevation.js.map +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/EllipsoidTerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapCartoRectangle.js.map +1 -1
- package/lib/cjs/tile/map/MapFeatureInfo.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerAuthentication.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryProvider.js +2 -2
- package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerTileTreeReference.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/cjs/tile/map/MapTileAvailability.js.map +1 -1
- package/lib/cjs/tile/map/MapTileLoader.js.map +1 -1
- package/lib/cjs/tile/map/MapTiledGraphicsProvider.js.map +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/cjs/tile/map/QuadId.js.map +1 -1
- package/lib/cjs/tile/map/TerrainMeshProvider.js.map +1 -1
- package/lib/cjs/tile/map/TerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/cjs/tile/map/WmsUtilities.js.map +1 -1
- package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
- package/lib/cjs/tools/ClipViewTool.js.map +1 -1
- package/lib/cjs/tools/EditManipulator.js.map +1 -1
- package/lib/cjs/tools/ElementSetTool.js.map +1 -1
- package/lib/cjs/tools/EventController.js.map +1 -1
- package/lib/cjs/tools/IdleTool.js.map +1 -1
- package/lib/cjs/tools/MeasureTool.js.map +1 -1
- package/lib/cjs/tools/PrimitiveTool.js.map +1 -1
- package/lib/cjs/tools/SelectTool.js.map +1 -1
- package/lib/cjs/tools/ToolAdmin.js.map +1 -1
- package/lib/cjs/tools/ToolAssistance.js.map +1 -1
- package/lib/cjs/tools/ToolSettings.js.map +1 -1
- package/lib/cjs/tools/ViewTool.js.map +1 -1
- package/lib/cjs/webgl.js.map +1 -1
- package/lib/esm/AccuDraw.js.map +1 -1
- package/lib/esm/AccuSnap.js.map +1 -1
- package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
- package/lib/esm/ApproximateTerrainHeightsProps.js.map +1 -1
- package/lib/esm/AuxCoordSys.js.map +1 -1
- package/lib/esm/BackgroundMapGeometry.js.map +1 -1
- package/lib/esm/BingLocation.js.map +1 -1
- package/lib/esm/BriefcaseConnection.js.map +1 -1
- package/lib/esm/BriefcaseTxns.js.map +1 -1
- package/lib/esm/CategorySelectorState.js.map +1 -1
- package/lib/esm/ChangeFlags.js.map +1 -1
- package/lib/esm/CheckpointConnection.js.map +1 -1
- package/lib/esm/CoordSystem.js.map +1 -1
- package/lib/esm/DecorationsCache.js.map +1 -1
- package/lib/esm/DevTools.js.map +1 -1
- package/lib/esm/DisplayStyleState.js.map +1 -1
- package/lib/esm/DrawingViewState.js +5 -5
- package/lib/esm/DrawingViewState.js.map +1 -1
- package/lib/esm/ElementLocateManager.js.map +1 -1
- package/lib/esm/EmphasizeElements.js.map +1 -1
- package/lib/esm/EntityState.js.map +1 -1
- package/lib/esm/EnvironmentDecorations.js.map +1 -1
- package/lib/esm/FeatureOverrideProvider.js.map +1 -1
- package/lib/esm/FlashSettings.js.map +1 -1
- package/lib/esm/FrontendHubAccess.js.map +1 -1
- package/lib/esm/FrontendLoggerCategory.js.map +1 -1
- package/lib/esm/Frustum2d.js.map +1 -1
- package/lib/esm/FrustumAnimator.js.map +1 -1
- package/lib/esm/FuzzySearch.js.map +1 -1
- package/lib/esm/GeoServices.js.map +1 -1
- package/lib/esm/GlobeAnimator.js.map +1 -1
- package/lib/esm/GraphicalEditingScope.js.map +1 -1
- package/lib/esm/HitDetail.js.map +1 -1
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.js +23 -23
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/IModelRoutingContext.js.map +1 -1
- package/lib/esm/IModeljs-css.js +133 -133
- package/lib/esm/IModeljs-css.js.map +1 -1
- package/lib/esm/ImageUtil.js.map +1 -1
- package/lib/esm/IpcApp.js.map +1 -1
- package/lib/esm/LinePlaneIntersect.js.map +1 -1
- package/lib/esm/LocalhostIpcApp.js.map +1 -1
- package/lib/esm/MarginPercent.js.map +1 -1
- package/lib/esm/Marker.js.map +1 -1
- package/lib/esm/ModelSelectorState.js.map +1 -1
- package/lib/esm/NativeApp.js.map +1 -1
- package/lib/esm/NativeAppLogger.js.map +1 -1
- package/lib/esm/NoRenderApp.js.map +1 -1
- package/lib/esm/NotificationManager.js.map +1 -1
- package/lib/esm/PerModelCategoryVisibility.js.map +1 -1
- package/lib/esm/PlanarClipMaskState.js.map +1 -1
- package/lib/esm/RealityDataSource.js.map +1 -1
- package/lib/esm/RealityDataSourceCesiumIonAssetImpl.js.map +1 -1
- package/lib/esm/RealityDataSourceContextShareImpl.js.map +1 -1
- package/lib/esm/RealityDataSourceTilesetUrlImpl.js.map +1 -1
- package/lib/esm/SelectionSet.js.map +1 -1
- package/lib/esm/SheetViewState.js.map +1 -1
- package/lib/esm/SpatialViewState.js.map +1 -1
- package/lib/esm/Sprites.js.map +1 -1
- package/lib/esm/StandardView.js.map +1 -1
- package/lib/esm/SubCategoriesCache.js.map +1 -1
- package/lib/esm/TentativePoint.js.map +1 -1
- package/lib/esm/Tiles.js.map +1 -1
- package/lib/esm/UserPreferences.js.map +1 -1
- package/lib/esm/ViewAnimation.js.map +1 -1
- package/lib/esm/ViewContext.js.map +1 -1
- package/lib/esm/ViewCreator2d.js.map +1 -1
- package/lib/esm/ViewCreator3d.js.map +1 -1
- package/lib/esm/ViewGlobalLocation.js.map +1 -1
- package/lib/esm/ViewManager.js.map +1 -1
- package/lib/esm/ViewPose.js.map +1 -1
- package/lib/esm/ViewRect.js.map +1 -1
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/ViewStatus.js.map +1 -1
- package/lib/esm/ViewingSpace.js.map +1 -1
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/ViewportSync.js.map +1 -1
- package/lib/esm/WebWorkerManager.js.map +1 -1
- package/lib/esm/core-frontend.js.map +1 -1
- package/lib/esm/extension/Extension.js.map +1 -1
- package/lib/esm/extension/ExtensionAdmin.js.map +1 -1
- package/lib/esm/extension/ExtensionHost.js.map +1 -1
- package/lib/esm/extension/ExtensionImpl.js.map +1 -1
- package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
- package/lib/esm/extension/providers/ExtensionLoadScript.js.map +1 -1
- package/lib/esm/extension/providers/LocalExtensionProvider.js.map +1 -1
- package/lib/esm/extension/providers/RemoteExtensionProvider.js.map +1 -1
- package/lib/esm/gltf/GltfModel.js.map +1 -1
- package/lib/esm/gltf/GltfParser.js.map +1 -1
- package/lib/esm/gltf/GltfSchema.js.map +1 -1
- package/lib/esm/properties/AngleDescription.js.map +1 -1
- package/lib/esm/properties/FormattedQuantityDescription.js.map +1 -1
- package/lib/esm/properties/LengthDescription.js.map +1 -1
- package/lib/esm/public/scripts/checkbrowser.js +24 -24
- package/lib/esm/quantity-formatting/BaseUnitFormattingSettingsProvider.js.map +1 -1
- package/lib/esm/quantity-formatting/BasicUnitsProvider.js.map +1 -1
- package/lib/esm/quantity-formatting/LocalUnitFormatProvider.js.map +1 -1
- package/lib/esm/quantity-formatting/QuantityFormatter.js.map +1 -1
- package/lib/esm/quantity-formatting/QuantityTypesEditorSpecs.js.map +1 -1
- package/lib/esm/quantity-formatting/UnitsData.js.map +1 -1
- package/lib/esm/render/CanvasDecoration.js.map +1 -1
- package/lib/esm/render/Decorations.js.map +1 -1
- package/lib/esm/render/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/FrameStats.js.map +1 -1
- package/lib/esm/render/GraphicBranch.js.map +1 -1
- package/lib/esm/render/GraphicBuilder.js.map +1 -1
- package/lib/esm/render/GraphicPrimitive.js.map +1 -1
- package/lib/esm/render/InstancedGraphicParams.js.map +1 -1
- package/lib/esm/render/MockRender.js.map +1 -1
- package/lib/esm/render/ParticleCollectionBuilder.js.map +1 -1
- package/lib/esm/render/Pixel.js.map +1 -1
- package/lib/esm/render/RealityMeshGraphicParams.js.map +1 -1
- package/lib/esm/render/RealityMeshParams.js.map +1 -1
- package/lib/esm/render/RenderClipVolume.js.map +1 -1
- package/lib/esm/render/RenderGraphic.js.map +1 -1
- package/lib/esm/render/RenderMaterial.d.ts +8 -0
- package/lib/esm/render/RenderMaterial.d.ts.map +1 -1
- package/lib/esm/render/RenderMaterial.js.map +1 -1
- package/lib/esm/render/RenderMemory.js.map +1 -1
- package/lib/esm/render/RenderPlan.js.map +1 -1
- package/lib/esm/render/RenderPlanarClassifier.js.map +1 -1
- package/lib/esm/render/RenderSystem.js.map +1 -1
- package/lib/esm/render/RenderTarget.js.map +1 -1
- package/lib/esm/render/RenderTexture.js.map +1 -1
- package/lib/esm/render/Scene.js.map +1 -1
- package/lib/esm/render/ScreenSpaceEffectBuilder.js.map +1 -1
- package/lib/esm/render/UpsampleRealityMeshParams.js.map +1 -1
- package/lib/esm/render/VisibleFeature.js.map +1 -1
- package/lib/esm/render/primitives/AuxChannelTable.js.map +1 -1
- package/lib/esm/render/primitives/ColorMap.js.map +1 -1
- package/lib/esm/render/primitives/DisplayParams.js.map +1 -1
- package/lib/esm/render/primitives/EdgeParams.js.map +1 -1
- package/lib/esm/render/primitives/PointCloudPrimitive.js.map +1 -1
- package/lib/esm/render/primitives/PointStringParams.js.map +1 -1
- package/lib/esm/render/primitives/Polyface.js.map +1 -1
- package/lib/esm/render/primitives/PolylineParams.js.map +1 -1
- package/lib/esm/render/primitives/Primitives.js.map +1 -1
- package/lib/esm/render/primitives/Strokes.js.map +1 -1
- package/lib/esm/render/primitives/SurfaceParams.js.map +1 -1
- package/lib/esm/render/primitives/VertexKey.js.map +1 -1
- package/lib/esm/render/primitives/VertexTable.js.map +1 -1
- package/lib/esm/render/primitives/VertexTableSplitter.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryAccumulator.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryList.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryListBuilder.js.map +1 -1
- package/lib/esm/render/primitives/geometry/GeometryPrimitives.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilder.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshBuilderMap.js.map +1 -1
- package/lib/esm/render/primitives/mesh/MeshPrimitives.js.map +1 -1
- package/lib/esm/render/webgl/AtmosphereUniforms.js.map +1 -1
- package/lib/esm/render/webgl/AttributeBuffers.js.map +1 -1
- package/lib/esm/render/webgl/AttributeMap.js.map +1 -1
- package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/esm/render/webgl/BatchState.js.map +1 -1
- package/lib/esm/render/webgl/BatchUniforms.js.map +1 -1
- package/lib/esm/render/webgl/BranchStack.js.map +1 -1
- package/lib/esm/render/webgl/BranchState.js.map +1 -1
- package/lib/esm/render/webgl/BranchUniforms.js.map +1 -1
- package/lib/esm/render/webgl/CachedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/ClipStack.js.map +1 -1
- package/lib/esm/render/webgl/ClipVolume.js.map +1 -1
- package/lib/esm/render/webgl/ClippingProgram.js.map +1 -1
- package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
- package/lib/esm/render/webgl/Diagnostics.js.map +1 -1
- package/lib/esm/render/webgl/Disposable.js.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
- package/lib/esm/render/webgl/EDL.js.map +1 -1
- package/lib/esm/render/webgl/EdgeGeometry.js.map +1 -1
- package/lib/esm/render/webgl/EdgeSettings.js.map +1 -1
- package/lib/esm/render/webgl/FeatureOverrides.js.map +1 -1
- package/lib/esm/render/webgl/FloatRGBA.js.map +1 -1
- package/lib/esm/render/webgl/FrameBuffer.js.map +1 -1
- package/lib/esm/render/webgl/FrustumUniforms.js.map +1 -1
- package/lib/esm/render/webgl/GL.js.map +1 -1
- package/lib/esm/render/webgl/GLTimer.js.map +1 -1
- package/lib/esm/render/webgl/Graphic.js.map +1 -1
- package/lib/esm/render/webgl/HiliteUniforms.js.map +1 -1
- package/lib/esm/render/webgl/IModelFrameLifecycle.js.map +1 -1
- package/lib/esm/render/webgl/IndexedEdgeGeometry.js.map +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/Layer.js.map +1 -1
- package/lib/esm/render/webgl/LayerCommands.js.map +1 -1
- package/lib/esm/render/webgl/LightingUniforms.js.map +1 -1
- package/lib/esm/render/webgl/LineCode.js.map +1 -1
- package/lib/esm/render/webgl/Material.js.map +1 -1
- package/lib/esm/render/webgl/Matrix.js.map +1 -1
- package/lib/esm/render/webgl/Mesh.js.map +1 -1
- package/lib/esm/render/webgl/MeshData.js.map +1 -1
- package/lib/esm/render/webgl/MeshGeometry.js.map +1 -1
- package/lib/esm/render/webgl/PerformanceMetrics.js.map +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/esm/render/webgl/PlanarGrid.js.map +1 -1
- package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/esm/render/webgl/PointCloud.js.map +1 -1
- package/lib/esm/render/webgl/PointString.js.map +1 -1
- package/lib/esm/render/webgl/Polyline.js.map +1 -1
- package/lib/esm/render/webgl/Primitive.js.map +1 -1
- package/lib/esm/render/webgl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/RealityModelUniforms.js.map +1 -1
- package/lib/esm/render/webgl/RenderBuffer.js.map +1 -1
- package/lib/esm/render/webgl/RenderCommands.js.map +1 -1
- package/lib/esm/render/webgl/RenderFlags.js.map +1 -1
- package/lib/esm/render/webgl/RenderState.js.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/render/webgl/ScratchDrawParams.js.map +1 -1
- package/lib/esm/render/webgl/ScreenSpaceEffect.js.map +1 -1
- package/lib/esm/render/webgl/ShaderBuilder.js.map +1 -1
- package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/esm/render/webgl/ShadowUniforms.js.map +1 -1
- package/lib/esm/render/webgl/SolarShadowMap.js.map +1 -1
- package/lib/esm/render/webgl/StyleUniforms.js.map +1 -1
- package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
- package/lib/esm/render/webgl/Sync.js.map +1 -1
- package/lib/esm/render/webgl/System.d.ts.map +1 -1
- package/lib/esm/render/webgl/System.js +2 -0
- package/lib/esm/render/webgl/System.js.map +1 -1
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/render/webgl/TargetGraphics.js.map +1 -1
- package/lib/esm/render/webgl/TargetUniforms.js.map +1 -1
- package/lib/esm/render/webgl/Technique.js.map +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/esm/render/webgl/TechniqueId.js.map +1 -1
- package/lib/esm/render/webgl/Texture.js.map +1 -1
- package/lib/esm/render/webgl/TextureDrape.js.map +1 -1
- package/lib/esm/render/webgl/ThematicSensors.js.map +1 -1
- package/lib/esm/render/webgl/ThematicUniforms.js.map +1 -1
- package/lib/esm/render/webgl/UniformHandle.js.map +1 -1
- package/lib/esm/render/webgl/VertexLUT.js.map +1 -1
- package/lib/esm/render/webgl/ViewRectUniforms.js.map +1 -1
- package/lib/esm/render/webgl/VisibleTileFeatures.js.map +1 -1
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.js +154 -154
- package/lib/esm/render/webgl/glsl/AmbientOcclusion.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Animation.js +83 -83
- package/lib/esm/render/webgl/glsl/Animation.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Atmosphere.js +266 -266
- package/lib/esm/render/webgl/glsl/Atmosphere.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Blur.js +37 -37
- package/lib/esm/render/webgl/glsl/Blur.js.map +1 -1
- package/lib/esm/render/webgl/glsl/ClearPickAndColor.js +4 -4
- package/lib/esm/render/webgl/glsl/ClearPickAndColor.js.map +1 -1
- package/lib/esm/render/webgl/glsl/ClearTranslucent.js +3 -3
- package/lib/esm/render/webgl/glsl/ClearTranslucent.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Clipping.js +60 -60
- package/lib/esm/render/webgl/glsl/Clipping.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Color.js +12 -12
- package/lib/esm/render/webgl/glsl/Color.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Combine3Textures.js +7 -7
- package/lib/esm/render/webgl/glsl/Combine3Textures.js.map +1 -1
- package/lib/esm/render/webgl/glsl/CombineTextures.js +5 -5
- package/lib/esm/render/webgl/glsl/CombineTextures.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Common.js +16 -16
- package/lib/esm/render/webgl/glsl/Common.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Composite.js +71 -71
- package/lib/esm/render/webgl/glsl/Composite.js.map +1 -1
- package/lib/esm/render/webgl/glsl/CopyColor.js +6 -6
- package/lib/esm/render/webgl/glsl/CopyColor.js.map +1 -1
- package/lib/esm/render/webgl/glsl/CopyPickBuffers.js +3 -3
- package/lib/esm/render/webgl/glsl/CopyPickBuffers.js.map +1 -1
- package/lib/esm/render/webgl/glsl/CopyStencil.js +4 -4
- package/lib/esm/render/webgl/glsl/CopyStencil.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Decode.js +65 -65
- package/lib/esm/render/webgl/glsl/Decode.js.map +1 -1
- package/lib/esm/render/webgl/glsl/EDL.js +103 -103
- package/lib/esm/render/webgl/glsl/EDL.js.map +1 -1
- package/lib/esm/render/webgl/glsl/EVSMFromDepth.js +25 -25
- package/lib/esm/render/webgl/glsl/EVSMFromDepth.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Edge.js +146 -146
- package/lib/esm/render/webgl/glsl/Edge.js.map +1 -1
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js +232 -232
- package/lib/esm/render/webgl/glsl/FeatureSymbology.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Fragment.js +41 -41
- package/lib/esm/render/webgl/glsl/Fragment.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Instancing.js +21 -21
- package/lib/esm/render/webgl/glsl/Instancing.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Lighting.js +92 -92
- package/lib/esm/render/webgl/glsl/Lighting.js.map +1 -1
- package/lib/esm/render/webgl/glsl/LogarithmicDepthBuffer.js.map +1 -1
- package/lib/esm/render/webgl/glsl/LookupTable.js +19 -19
- package/lib/esm/render/webgl/glsl/LookupTable.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Monochrome.js +13 -13
- package/lib/esm/render/webgl/glsl/Monochrome.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PlanarClassification.js +188 -188
- package/lib/esm/render/webgl/glsl/PlanarClassification.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PlanarGrid.js +22 -22
- package/lib/esm/render/webgl/glsl/PlanarGrid.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PointCloud.js +28 -28
- package/lib/esm/render/webgl/glsl/PointCloud.js.map +1 -1
- package/lib/esm/render/webgl/glsl/PointString.js +9 -9
- package/lib/esm/render/webgl/glsl/PointString.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Polyline.js +213 -213
- package/lib/esm/render/webgl/glsl/Polyline.js.map +1 -1
- package/lib/esm/render/webgl/glsl/RealityMesh.js +83 -83
- package/lib/esm/render/webgl/glsl/RealityMesh.js.map +1 -1
- package/lib/esm/render/webgl/glsl/RenderPass.js.map +1 -1
- package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js +9 -9
- package/lib/esm/render/webgl/glsl/ScreenSpaceEffect.js.map +1 -1
- package/lib/esm/render/webgl/glsl/SkyBox.js.map +1 -1
- package/lib/esm/render/webgl/glsl/SkySphere.js +49 -49
- package/lib/esm/render/webgl/glsl/SkySphere.js.map +1 -1
- package/lib/esm/render/webgl/glsl/SolarShadowMapping.js +51 -51
- package/lib/esm/render/webgl/glsl/SolarShadowMapping.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Surface.js +239 -239
- package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Thematic.js +134 -134
- package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Translucency.js +19 -19
- package/lib/esm/render/webgl/glsl/Translucency.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Vertex.js +73 -73
- package/lib/esm/render/webgl/glsl/Vertex.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Viewport.js +38 -38
- package/lib/esm/render/webgl/glsl/Viewport.js.map +1 -1
- package/lib/esm/render/webgl/glsl/ViewportQuad.js.map +1 -1
- package/lib/esm/render/webgl/glsl/Wiremesh.js +10 -10
- package/lib/esm/render/webgl/glsl/Wiremesh.js.map +1 -1
- package/lib/esm/render-primitives.js.map +1 -1
- package/lib/esm/request/Request.js.map +1 -1
- package/lib/esm/tile/B3dmReader.js.map +1 -1
- package/lib/esm/tile/BatchedTileIdMap.js.map +1 -1
- package/lib/esm/tile/CesiumAssetProvider.js.map +1 -1
- package/lib/esm/tile/ClassifierTileTree.js.map +1 -1
- package/lib/esm/tile/ContextShareProvider.js.map +1 -1
- package/lib/esm/tile/DisclosedTileTreeSet.js.map +1 -1
- package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/GraphicsCollector.js.map +1 -1
- package/lib/esm/tile/I3dmReader.js.map +1 -1
- package/lib/esm/tile/IModelTile.js.map +1 -1
- package/lib/esm/tile/IModelTileRequestChannels.js.map +1 -1
- package/lib/esm/tile/IModelTileTree.js.map +1 -1
- package/lib/esm/tile/ImdlReader.d.ts +14 -0
- package/lib/esm/tile/ImdlReader.d.ts.map +1 -1
- package/lib/esm/tile/ImdlReader.js +24 -2
- package/lib/esm/tile/ImdlReader.js.map +1 -1
- package/lib/esm/tile/LRUTileList.js.map +1 -1
- package/lib/esm/tile/OPCFormatInterpreter.js.map +1 -1
- package/lib/esm/tile/PntsReader.js.map +1 -1
- package/lib/esm/tile/RealityTile.js.map +1 -1
- package/lib/esm/tile/RealityTileDrawArgs.js.map +1 -1
- package/lib/esm/tile/RealityTileLoader.js.map +1 -1
- package/lib/esm/tile/RealityTileTree.js +1 -1
- package/lib/esm/tile/RealityTileTree.js.map +1 -1
- package/lib/esm/tile/ThreeDTileFormatInterpreter.js.map +1 -1
- package/lib/esm/tile/Tile.js.map +1 -1
- package/lib/esm/tile/TileAdmin.d.ts +1 -1
- package/lib/esm/tile/TileAdmin.d.ts.map +1 -1
- package/lib/esm/tile/TileAdmin.js +3 -1
- package/lib/esm/tile/TileAdmin.js.map +1 -1
- package/lib/esm/tile/TileContent.js.map +1 -1
- package/lib/esm/tile/TileDrawArgs.d.ts +4 -0
- package/lib/esm/tile/TileDrawArgs.d.ts.map +1 -1
- package/lib/esm/tile/TileDrawArgs.js +4 -0
- package/lib/esm/tile/TileDrawArgs.js.map +1 -1
- package/lib/esm/tile/TileGeometryCollector.js.map +1 -1
- package/lib/esm/tile/TileParams.js.map +1 -1
- package/lib/esm/tile/TileRequest.js.map +1 -1
- package/lib/esm/tile/TileRequestChannel.js.map +1 -1
- package/lib/esm/tile/TileRequestChannels.js.map +1 -1
- package/lib/esm/tile/TileStorage.js.map +1 -1
- package/lib/esm/tile/TileTree.js +1 -1
- package/lib/esm/tile/TileTree.js.map +1 -1
- package/lib/esm/tile/TileTreeOwner.js.map +1 -1
- package/lib/esm/tile/TileTreeParams.js.map +1 -1
- package/lib/esm/tile/TileTreeReference.js.map +1 -1
- package/lib/esm/tile/TileTreeSupplier.js.map +1 -1
- package/lib/esm/tile/TileUsageMarker.js.map +1 -1
- package/lib/esm/tile/TileUser.js.map +1 -1
- package/lib/esm/tile/TileUserSet.js.map +1 -1
- package/lib/esm/tile/TiledGraphicsProvider.js.map +1 -1
- package/lib/esm/tile/ViewFlagOverrides.js.map +1 -1
- package/lib/esm/tile/internal.js.map +1 -1
- package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/esm/tile/map/BingElevation.js.map +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/EllipsoidTerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/AzureMapsLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/BingImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/MapBoxLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapCartoRectangle.js.map +1 -1
- package/lib/esm/tile/map/MapFeatureInfo.js.map +1 -1
- package/lib/esm/tile/map/MapLayerAuthentication.js.map +1 -1
- package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryProvider.js +2 -2
- package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
- package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
- package/lib/esm/tile/map/MapLayerTileTreeReference.js.map +1 -1
- package/lib/esm/tile/map/MapTile.js.map +1 -1
- package/lib/esm/tile/map/MapTileAvailability.js.map +1 -1
- package/lib/esm/tile/map/MapTileLoader.js.map +1 -1
- package/lib/esm/tile/map/MapTiledGraphicsProvider.js.map +1 -1
- package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/esm/tile/map/QuadId.js.map +1 -1
- package/lib/esm/tile/map/TerrainMeshProvider.js.map +1 -1
- package/lib/esm/tile/map/TerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/esm/tile/map/WmsUtilities.js.map +1 -1
- package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/esm/tools/AccuDrawTool.js.map +1 -1
- package/lib/esm/tools/ClipViewTool.js.map +1 -1
- package/lib/esm/tools/EditManipulator.js.map +1 -1
- package/lib/esm/tools/ElementSetTool.js.map +1 -1
- package/lib/esm/tools/EventController.js.map +1 -1
- package/lib/esm/tools/IdleTool.js.map +1 -1
- package/lib/esm/tools/MeasureTool.js.map +1 -1
- package/lib/esm/tools/PrimitiveTool.js.map +1 -1
- package/lib/esm/tools/SelectTool.js.map +1 -1
- package/lib/esm/tools/ToolAdmin.js.map +1 -1
- package/lib/esm/tools/ToolAssistance.js.map +1 -1
- package/lib/esm/tools/ToolSettings.js.map +1 -1
- package/lib/esm/tools/ViewTool.js.map +1 -1
- package/lib/esm/webgl.js.map +1 -1
- package/lib/public/assets/MapLayerSources.json +25 -25
- package/lib/public/images/cesium-ion.svg +92 -92
- package/lib/public/images/imodeljs-icon.svg +2 -2
- package/lib/public/locales/en/CoreTools.json +477 -477
- package/lib/public/locales/en/iModelJs.json +170 -170
- package/lib/public/scripts/checkbrowser.js +24 -24
- package/package.json +18 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuxChannelTable.js","sourceRoot":"","sources":["../../../../src/render/primitives/AuxChannelTable.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, Mutable } from \"@itwin/core-bentley\";\r\nimport {\r\n AuxChannelDataType, Point3d, AuxChannel as PolyfaceAuxChannel, Range1d, Range3d, Vector3d,\r\n} from \"@itwin/core-geometry\";\r\nimport { OctEncodedNormal, QParams3d, QPoint3d, Quantization } from \"@itwin/core-common\";\r\nimport { computeDimensions } from \"./VertexTable\";\r\n\r\n/** @internal */\r\nexport interface AuxChannelProps {\r\n readonly name: string;\r\n readonly inputs: number[];\r\n readonly indices: number[];\r\n}\r\n\r\n/** @internal */\r\nexport interface QuantizedAuxChannelProps extends AuxChannelProps {\r\n readonly qOrigin: number[];\r\n readonly qScale: number[];\r\n}\r\n\r\n/** @internal */\r\nexport class AuxChannel implements AuxChannelProps {\r\n public readonly name: string;\r\n public readonly inputs: number[];\r\n public readonly indices: number[];\r\n\r\n public constructor(props: AuxChannelProps) {\r\n this.name = props.name;\r\n this.inputs = props.inputs;\r\n this.indices = props.indices;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AuxDisplacementChannel extends AuxChannel {\r\n public readonly qOrigin: Float32Array;\r\n public readonly qScale: Float32Array;\r\n\r\n public constructor(props: QuantizedAuxChannelProps) {\r\n super(props);\r\n this.qOrigin = Float32Array.from(props.qOrigin);\r\n this.qScale = Float32Array.from(props.qScale);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class AuxParamChannel extends AuxChannel {\r\n public readonly qOrigin: number;\r\n public readonly qScale: number;\r\n\r\n public constructor(props: QuantizedAuxChannelProps) {\r\n super(props);\r\n this.qOrigin = props.qOrigin[0];\r\n this.qScale = props.qScale[0];\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface AuxChannelTableProps {\r\n /** Rectangular array of per-vertex data, of size width * height * numBytesPerVertex bytes. */\r\n readonly data: Uint8Array;\r\n /** The number of 4-byte RGBA columns in each row of the array. */\r\n readonly width: number;\r\n /** The number of rows in the array. */\r\n readonly height: number;\r\n /** The number of vertices in the array. Must be no more than (width * height) / numBytesPerVertex. */\r\n readonly count: number;\r\n /** The number of bytes allocated for each vertex. Must be a multiple of two. */\r\n readonly numBytesPerVertex: number;\r\n /** Displacements used for animations. */\r\n readonly displacements?: QuantizedAuxChannelProps[];\r\n /** Normals used for animations. */\r\n readonly normals?: AuxChannelProps[];\r\n /** Scalar params used for animations. */\r\n readonly params?: QuantizedAuxChannelProps[];\r\n}\r\n\r\n/**\r\n * Represents one or more channels of auxiliary per-vertex data which can be used to animate and resymbolize a mesh in various ways.\r\n * Each channel holds a fixed number of bytes for each vertex (typically 2 bytes for normals and params, 6 bytes for displacements).\r\n * The channels are interleaved in a rectangular array such that the data for each vertex is stored contiguously; that is, if a displacement and\r\n * a normal channel exist, then the first vertex's displacement is followed by the first vertex's normal, which is followed by the second\r\n * vertex's displacement and normal; and so on.\r\n * @internal\r\n */\r\nexport class AuxChannelTable {\r\n /** Rectangular array of per-vertex data, of size width * height * numBytesPerVertex bytes. */\r\n public readonly data: Uint8Array;\r\n /** The number of 4-byte RGBA columns in each row of the array. */\r\n public readonly width: number;\r\n /** The number of rows in the array. */\r\n public readonly height: number;\r\n /** The number of vertices in the array. Must be no more than (width * height) / numBytesPerVertex. */\r\n public readonly numVertices: number;\r\n /** The number of bytes allocated for each vertex. Must be a multiple of two. */\r\n public readonly numBytesPerVertex: number;\r\n /** Displacements used for animations. */\r\n public readonly displacements?: AuxDisplacementChannel[];\r\n /** Normals used for animations. */\r\n public readonly normals?: AuxChannel[];\r\n /** Scalar params used for animations. */\r\n public readonly params?: AuxParamChannel[];\r\n\r\n private constructor(props: AuxChannelTableProps, displacements?: AuxDisplacementChannel[], normals?: AuxChannel[], params?: AuxParamChannel[]) {\r\n this.data = props.data;\r\n this.width = props.width;\r\n this.height = props.height;\r\n this.numVertices = props.count;\r\n this.numBytesPerVertex = props.numBytesPerVertex;\r\n this.displacements = displacements;\r\n this.normals = normals;\r\n this.params = params;\r\n }\r\n\r\n public static fromJSON(props: AuxChannelTableProps): AuxChannelTable | undefined {\r\n let displacements: AuxDisplacementChannel[] | undefined;\r\n let normals: AuxChannel[] | undefined;\r\n let params: AuxParamChannel[] | undefined;\r\n\r\n if (undefined !== props.displacements && 0 < props.displacements.length) {\r\n displacements = [];\r\n for (const displacement of props.displacements)\r\n displacements.push(new AuxDisplacementChannel(displacement));\r\n }\r\n\r\n if (undefined !== props.normals && 0 < props.normals.length) {\r\n normals = [];\r\n for (const normal of props.normals)\r\n normals.push(new AuxChannel(normal));\r\n }\r\n\r\n if (undefined !== props.params && 0 < props.params.length) {\r\n params = [];\r\n for (const param of props.params)\r\n params.push(new AuxParamChannel(param));\r\n }\r\n\r\n return undefined !== displacements || undefined !== normals || undefined !== params ? new AuxChannelTable(props, displacements, normals, params) : undefined;\r\n }\r\n\r\n public static fromChannels(channels: ReadonlyArray<PolyfaceAuxChannel>, numVertices: number): AuxChannelTable | undefined {\r\n return AuxChannelTableBuilder.buildAuxChannelTable(channels, numVertices);\r\n }\r\n}\r\n\r\nfunction invert(num: number): number {\r\n if (0 !== num)\r\n num = 1 / num;\r\n\r\n return num;\r\n}\r\n\r\nclass AuxChannelTableBuilder {\r\n private readonly _view: DataView;\r\n private readonly _props: Mutable<AuxChannelTableProps>;\r\n private readonly _numBytesPerVertex: number;\r\n\r\n private constructor(props: Mutable<AuxChannelTableProps>, numBytesPerVertex: number) {\r\n this._props = props;\r\n this._numBytesPerVertex = numBytesPerVertex;\r\n this._view = new DataView(props.data.buffer);\r\n }\r\n\r\n public static buildAuxChannelTable(channels: ReadonlyArray<PolyfaceAuxChannel>, numVertices: number): AuxChannelTable | undefined {\r\n const numBytesPerVertex = channels.reduce((accum, channel) => accum + computeNumBytesPerVertex(channel), 0);\r\n if (!numBytesPerVertex)\r\n return undefined;\r\n\r\n const nRgbaPerVertex = Math.floor((numBytesPerVertex + 3) / 4);\r\n const nUnusedBytesPerVertex = nRgbaPerVertex * 4 - numBytesPerVertex;\r\n assert(0 === nUnusedBytesPerVertex || 2 === nUnusedBytesPerVertex);\r\n\r\n // We don't want any unused bytes. If we've got 2 extra, make every other vertex's channel start in the middle of the first texel.\r\n let dimensions;\r\n if (0 !== nUnusedBytesPerVertex)\r\n dimensions = computeDimensions(Math.floor((numVertices + 1) / 2), numBytesPerVertex / 2, 0); // twice as many RGBA for half as many vertices.\r\n else\r\n dimensions = computeDimensions(numVertices, nRgbaPerVertex, 0);\r\n\r\n const data = new Uint8Array(dimensions.width * dimensions.height * 4);\r\n const props: Mutable<AuxChannelTableProps> = {\r\n data,\r\n width: dimensions.width,\r\n height: dimensions.height,\r\n count: numVertices,\r\n numBytesPerVertex,\r\n };\r\n\r\n const builder = new AuxChannelTableBuilder(props, numBytesPerVertex);\r\n builder.build(channels);\r\n return AuxChannelTable.fromJSON(props);\r\n }\r\n\r\n private build(channels: ReadonlyArray<PolyfaceAuxChannel>): void {\r\n let byteOffset = 0;\r\n for (const channel of channels) {\r\n if (AuxChannelDataType.Normal === channel.dataType)\r\n this.addNormals(channel, byteOffset);\r\n else if (AuxChannelDataType.Vector === channel.dataType)\r\n this.addDisplacements(channel, byteOffset);\r\n else\r\n this.addParams(channel, byteOffset);\r\n\r\n byteOffset += computeNumBytesPerVertex(channel);\r\n }\r\n }\r\n\r\n private addNormals(channel: PolyfaceAuxChannel, byteOffset: number): void {\r\n const inputs = [];\r\n const indices = [];\r\n\r\n const normal = new Vector3d();\r\n for (let i = 0; i < channel.data.length; i++) {\r\n let byteIndex = byteOffset + i * 2; // 2 bytes per normal\r\n indices.push(byteIndex / 2); // indices aligned to 2-byte intervals\r\n\r\n const data = channel.data[i];\r\n inputs.push(data.input);\r\n\r\n for (let j = 0; j < data.values.length; j += 3) {\r\n normal.x = data.values[j];\r\n normal.y = data.values[j + 1];\r\n normal.z = data.values[j + 2];\r\n normal.normalizeInPlace();\r\n\r\n const encodedNormal = OctEncodedNormal.encode(normal);\r\n this._view.setUint16(byteIndex, encodedNormal, true);\r\n byteIndex += this._numBytesPerVertex;\r\n }\r\n }\r\n\r\n const normals = this._props.normals ?? (this._props.normals = []);\r\n normals.push({\r\n name: channel.name ?? \"\",\r\n inputs,\r\n indices,\r\n });\r\n }\r\n\r\n private addParams(channel: PolyfaceAuxChannel, byteOffset: number): void {\r\n const inputs = [];\r\n const indices = [];\r\n\r\n const range = Range1d.createNull();\r\n for (const data of channel.data) {\r\n inputs.push(data.input);\r\n range.extendArray(data.values);\r\n }\r\n\r\n const qScale = Quantization.computeScale(range.high - range.low);\r\n\r\n for (let i = 0; i < channel.data.length; i++) {\r\n let byteIndex = byteOffset + i * 2; // 2 bytes per double\r\n indices.push(byteIndex / 2); // indices aligned to 2-byte intervals\r\n\r\n for (const value of channel.data[i].values) {\r\n const quantized = Quantization.quantize(value, range.low, qScale);\r\n this._view.setUint16(byteIndex, quantized, true);\r\n byteIndex += this._numBytesPerVertex;\r\n }\r\n }\r\n\r\n const params = this._props.params ?? (this._props.params = []);\r\n params.push({\r\n inputs,\r\n indices,\r\n name: channel.name ?? \"\",\r\n qOrigin: [range.low],\r\n qScale: [invert(qScale)],\r\n });\r\n }\r\n\r\n private addDisplacements(channel: PolyfaceAuxChannel, byteOffset: number): void {\r\n const inputs = [];\r\n const indices = [];\r\n\r\n const point = new Point3d();\r\n const range = Range3d.createNull();\r\n for (const data of channel.data) {\r\n inputs.push(data.input);\r\n for (let i = 0; i < data.values.length; i += 3) {\r\n point.set(data.values[i], data.values[i + 1], data.values[i + 2]);\r\n range.extend(point);\r\n }\r\n }\r\n\r\n const qParams = QParams3d.fromRange(range);\r\n const qPoint = new QPoint3d();\r\n for (let i = 0; i < channel.data.length; i++) {\r\n let byteIndex = byteOffset + i * 6; // 2 bytes per coordinate\r\n indices.push(byteIndex / 2); // indices aligned to 2-byte intervals\r\n\r\n const data = channel.data[i];\r\n for (let j = 0; j < data.values.length; j += 3) {\r\n point.set(data.values[j], data.values[j + 1], data.values[j + 2]);\r\n qPoint.init(point, qParams);\r\n\r\n this._view.setUint16(byteIndex + 0, qPoint.x, true);\r\n this._view.setUint16(byteIndex + 2, qPoint.y, true);\r\n this._view.setUint16(byteIndex + 4, qPoint.z, true);\r\n byteIndex += this._numBytesPerVertex;\r\n }\r\n }\r\n\r\n const displacements = this._props.displacements ?? (this._props.displacements = []);\r\n displacements.push({\r\n inputs,\r\n indices,\r\n name: channel.name ?? \"\",\r\n qOrigin: qParams.origin.toArray(),\r\n qScale: qParams.scale.toArray().map((x) => invert(x)),\r\n });\r\n }\r\n}\r\n\r\nfunction computeNumBytesPerVertex(channel: PolyfaceAuxChannel): number {\r\n const nEntries = channel.data.length;\r\n switch (channel.dataType) {\r\n case AuxChannelDataType.Vector:\r\n return 6 * nEntries; // 3 16-bit quantized coordinate values per entry.\r\n case AuxChannelDataType.Normal:\r\n case AuxChannelDataType.Distance:\r\n case AuxChannelDataType.Scalar:\r\n return 2 * nEntries; // 1 16-bit quantized value per entry.\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"AuxChannelTable.js","sourceRoot":"","sources":["../../../../src/render/primitives/AuxChannelTable.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { assert, Mutable } from \"@itwin/core-bentley\";\nimport {\n AuxChannelDataType, Point3d, AuxChannel as PolyfaceAuxChannel, Range1d, Range3d, Vector3d,\n} from \"@itwin/core-geometry\";\nimport { OctEncodedNormal, QParams3d, QPoint3d, Quantization } from \"@itwin/core-common\";\nimport { computeDimensions } from \"./VertexTable\";\n\n/** @internal */\nexport interface AuxChannelProps {\n readonly name: string;\n readonly inputs: number[];\n readonly indices: number[];\n}\n\n/** @internal */\nexport interface QuantizedAuxChannelProps extends AuxChannelProps {\n readonly qOrigin: number[];\n readonly qScale: number[];\n}\n\n/** @internal */\nexport class AuxChannel implements AuxChannelProps {\n public readonly name: string;\n public readonly inputs: number[];\n public readonly indices: number[];\n\n public constructor(props: AuxChannelProps) {\n this.name = props.name;\n this.inputs = props.inputs;\n this.indices = props.indices;\n }\n}\n\n/** @internal */\nexport class AuxDisplacementChannel extends AuxChannel {\n public readonly qOrigin: Float32Array;\n public readonly qScale: Float32Array;\n\n public constructor(props: QuantizedAuxChannelProps) {\n super(props);\n this.qOrigin = Float32Array.from(props.qOrigin);\n this.qScale = Float32Array.from(props.qScale);\n }\n}\n\n/** @internal */\nexport class AuxParamChannel extends AuxChannel {\n public readonly qOrigin: number;\n public readonly qScale: number;\n\n public constructor(props: QuantizedAuxChannelProps) {\n super(props);\n this.qOrigin = props.qOrigin[0];\n this.qScale = props.qScale[0];\n }\n}\n\n/** @internal */\nexport interface AuxChannelTableProps {\n /** Rectangular array of per-vertex data, of size width * height * numBytesPerVertex bytes. */\n readonly data: Uint8Array;\n /** The number of 4-byte RGBA columns in each row of the array. */\n readonly width: number;\n /** The number of rows in the array. */\n readonly height: number;\n /** The number of vertices in the array. Must be no more than (width * height) / numBytesPerVertex. */\n readonly count: number;\n /** The number of bytes allocated for each vertex. Must be a multiple of two. */\n readonly numBytesPerVertex: number;\n /** Displacements used for animations. */\n readonly displacements?: QuantizedAuxChannelProps[];\n /** Normals used for animations. */\n readonly normals?: AuxChannelProps[];\n /** Scalar params used for animations. */\n readonly params?: QuantizedAuxChannelProps[];\n}\n\n/**\n * Represents one or more channels of auxiliary per-vertex data which can be used to animate and resymbolize a mesh in various ways.\n * Each channel holds a fixed number of bytes for each vertex (typically 2 bytes for normals and params, 6 bytes for displacements).\n * The channels are interleaved in a rectangular array such that the data for each vertex is stored contiguously; that is, if a displacement and\n * a normal channel exist, then the first vertex's displacement is followed by the first vertex's normal, which is followed by the second\n * vertex's displacement and normal; and so on.\n * @internal\n */\nexport class AuxChannelTable {\n /** Rectangular array of per-vertex data, of size width * height * numBytesPerVertex bytes. */\n public readonly data: Uint8Array;\n /** The number of 4-byte RGBA columns in each row of the array. */\n public readonly width: number;\n /** The number of rows in the array. */\n public readonly height: number;\n /** The number of vertices in the array. Must be no more than (width * height) / numBytesPerVertex. */\n public readonly numVertices: number;\n /** The number of bytes allocated for each vertex. Must be a multiple of two. */\n public readonly numBytesPerVertex: number;\n /** Displacements used for animations. */\n public readonly displacements?: AuxDisplacementChannel[];\n /** Normals used for animations. */\n public readonly normals?: AuxChannel[];\n /** Scalar params used for animations. */\n public readonly params?: AuxParamChannel[];\n\n private constructor(props: AuxChannelTableProps, displacements?: AuxDisplacementChannel[], normals?: AuxChannel[], params?: AuxParamChannel[]) {\n this.data = props.data;\n this.width = props.width;\n this.height = props.height;\n this.numVertices = props.count;\n this.numBytesPerVertex = props.numBytesPerVertex;\n this.displacements = displacements;\n this.normals = normals;\n this.params = params;\n }\n\n public static fromJSON(props: AuxChannelTableProps): AuxChannelTable | undefined {\n let displacements: AuxDisplacementChannel[] | undefined;\n let normals: AuxChannel[] | undefined;\n let params: AuxParamChannel[] | undefined;\n\n if (undefined !== props.displacements && 0 < props.displacements.length) {\n displacements = [];\n for (const displacement of props.displacements)\n displacements.push(new AuxDisplacementChannel(displacement));\n }\n\n if (undefined !== props.normals && 0 < props.normals.length) {\n normals = [];\n for (const normal of props.normals)\n normals.push(new AuxChannel(normal));\n }\n\n if (undefined !== props.params && 0 < props.params.length) {\n params = [];\n for (const param of props.params)\n params.push(new AuxParamChannel(param));\n }\n\n return undefined !== displacements || undefined !== normals || undefined !== params ? new AuxChannelTable(props, displacements, normals, params) : undefined;\n }\n\n public static fromChannels(channels: ReadonlyArray<PolyfaceAuxChannel>, numVertices: number): AuxChannelTable | undefined {\n return AuxChannelTableBuilder.buildAuxChannelTable(channels, numVertices);\n }\n}\n\nfunction invert(num: number): number {\n if (0 !== num)\n num = 1 / num;\n\n return num;\n}\n\nclass AuxChannelTableBuilder {\n private readonly _view: DataView;\n private readonly _props: Mutable<AuxChannelTableProps>;\n private readonly _numBytesPerVertex: number;\n\n private constructor(props: Mutable<AuxChannelTableProps>, numBytesPerVertex: number) {\n this._props = props;\n this._numBytesPerVertex = numBytesPerVertex;\n this._view = new DataView(props.data.buffer);\n }\n\n public static buildAuxChannelTable(channels: ReadonlyArray<PolyfaceAuxChannel>, numVertices: number): AuxChannelTable | undefined {\n const numBytesPerVertex = channels.reduce((accum, channel) => accum + computeNumBytesPerVertex(channel), 0);\n if (!numBytesPerVertex)\n return undefined;\n\n const nRgbaPerVertex = Math.floor((numBytesPerVertex + 3) / 4);\n const nUnusedBytesPerVertex = nRgbaPerVertex * 4 - numBytesPerVertex;\n assert(0 === nUnusedBytesPerVertex || 2 === nUnusedBytesPerVertex);\n\n // We don't want any unused bytes. If we've got 2 extra, make every other vertex's channel start in the middle of the first texel.\n let dimensions;\n if (0 !== nUnusedBytesPerVertex)\n dimensions = computeDimensions(Math.floor((numVertices + 1) / 2), numBytesPerVertex / 2, 0); // twice as many RGBA for half as many vertices.\n else\n dimensions = computeDimensions(numVertices, nRgbaPerVertex, 0);\n\n const data = new Uint8Array(dimensions.width * dimensions.height * 4);\n const props: Mutable<AuxChannelTableProps> = {\n data,\n width: dimensions.width,\n height: dimensions.height,\n count: numVertices,\n numBytesPerVertex,\n };\n\n const builder = new AuxChannelTableBuilder(props, numBytesPerVertex);\n builder.build(channels);\n return AuxChannelTable.fromJSON(props);\n }\n\n private build(channels: ReadonlyArray<PolyfaceAuxChannel>): void {\n let byteOffset = 0;\n for (const channel of channels) {\n if (AuxChannelDataType.Normal === channel.dataType)\n this.addNormals(channel, byteOffset);\n else if (AuxChannelDataType.Vector === channel.dataType)\n this.addDisplacements(channel, byteOffset);\n else\n this.addParams(channel, byteOffset);\n\n byteOffset += computeNumBytesPerVertex(channel);\n }\n }\n\n private addNormals(channel: PolyfaceAuxChannel, byteOffset: number): void {\n const inputs = [];\n const indices = [];\n\n const normal = new Vector3d();\n for (let i = 0; i < channel.data.length; i++) {\n let byteIndex = byteOffset + i * 2; // 2 bytes per normal\n indices.push(byteIndex / 2); // indices aligned to 2-byte intervals\n\n const data = channel.data[i];\n inputs.push(data.input);\n\n for (let j = 0; j < data.values.length; j += 3) {\n normal.x = data.values[j];\n normal.y = data.values[j + 1];\n normal.z = data.values[j + 2];\n normal.normalizeInPlace();\n\n const encodedNormal = OctEncodedNormal.encode(normal);\n this._view.setUint16(byteIndex, encodedNormal, true);\n byteIndex += this._numBytesPerVertex;\n }\n }\n\n const normals = this._props.normals ?? (this._props.normals = []);\n normals.push({\n name: channel.name ?? \"\",\n inputs,\n indices,\n });\n }\n\n private addParams(channel: PolyfaceAuxChannel, byteOffset: number): void {\n const inputs = [];\n const indices = [];\n\n const range = Range1d.createNull();\n for (const data of channel.data) {\n inputs.push(data.input);\n range.extendArray(data.values);\n }\n\n const qScale = Quantization.computeScale(range.high - range.low);\n\n for (let i = 0; i < channel.data.length; i++) {\n let byteIndex = byteOffset + i * 2; // 2 bytes per double\n indices.push(byteIndex / 2); // indices aligned to 2-byte intervals\n\n for (const value of channel.data[i].values) {\n const quantized = Quantization.quantize(value, range.low, qScale);\n this._view.setUint16(byteIndex, quantized, true);\n byteIndex += this._numBytesPerVertex;\n }\n }\n\n const params = this._props.params ?? (this._props.params = []);\n params.push({\n inputs,\n indices,\n name: channel.name ?? \"\",\n qOrigin: [range.low],\n qScale: [invert(qScale)],\n });\n }\n\n private addDisplacements(channel: PolyfaceAuxChannel, byteOffset: number): void {\n const inputs = [];\n const indices = [];\n\n const point = new Point3d();\n const range = Range3d.createNull();\n for (const data of channel.data) {\n inputs.push(data.input);\n for (let i = 0; i < data.values.length; i += 3) {\n point.set(data.values[i], data.values[i + 1], data.values[i + 2]);\n range.extend(point);\n }\n }\n\n const qParams = QParams3d.fromRange(range);\n const qPoint = new QPoint3d();\n for (let i = 0; i < channel.data.length; i++) {\n let byteIndex = byteOffset + i * 6; // 2 bytes per coordinate\n indices.push(byteIndex / 2); // indices aligned to 2-byte intervals\n\n const data = channel.data[i];\n for (let j = 0; j < data.values.length; j += 3) {\n point.set(data.values[j], data.values[j + 1], data.values[j + 2]);\n qPoint.init(point, qParams);\n\n this._view.setUint16(byteIndex + 0, qPoint.x, true);\n this._view.setUint16(byteIndex + 2, qPoint.y, true);\n this._view.setUint16(byteIndex + 4, qPoint.z, true);\n byteIndex += this._numBytesPerVertex;\n }\n }\n\n const displacements = this._props.displacements ?? (this._props.displacements = []);\n displacements.push({\n inputs,\n indices,\n name: channel.name ?? \"\",\n qOrigin: qParams.origin.toArray(),\n qScale: qParams.scale.toArray().map((x) => invert(x)),\n });\n }\n}\n\nfunction computeNumBytesPerVertex(channel: PolyfaceAuxChannel): number {\n const nEntries = channel.data.length;\n switch (channel.dataType) {\n case AuxChannelDataType.Vector:\n return 6 * nEntries; // 3 16-bit quantized coordinate values per entry.\n case AuxChannelDataType.Normal:\n case AuxChannelDataType.Distance:\n case AuxChannelDataType.Scalar:\n return 2 * nEntries; // 1 16-bit quantized value per entry.\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorMap.js","sourceRoot":"","sources":["../../../../src/render/primitives/ColorMap.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAc,MAAM,oBAAoB,CAAC;AAE1D,gBAAgB;AAChB,MAAM,OAAO,QAAS,SAAQ,QAAgB;IAG5C;QAAuB,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAF7C,qBAAgB,GAAY,KAAK,CAAC;IAEY,CAAC;IAEhD,QAAQ,CAAC,KAAa,IAAa,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE9D,MAAM,CAAC,KAAa;QAClC,yEAAyE;QACzE,IAAI,IAAI,CAAC,OAAO;YACd,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;;YAEtD,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,CAAC;QAEjE,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,IAAW,eAAe,KAAc,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACvE,IAAW,SAAS,KAAc,OAAO,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEtD,YAAY,CAAC,KAAiB,EAAE,OAAiB;QACtD,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;YACrB,MAAM,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;YACjC,OAAO;SACR;aAAM,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;YAC5B,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SACzC;aAAM;YACL,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM;gBAC7B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;YAEpC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;SAC7D;IACH,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,IAAY;QACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"ColorMap.js","sourceRoot":"","sources":["../../../../src/render/primitives/ColorMap.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAc,MAAM,oBAAoB,CAAC;AAE1D,gBAAgB;AAChB,MAAM,OAAO,QAAS,SAAQ,QAAgB;IAG5C;QAAuB,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAF7C,qBAAgB,GAAY,KAAK,CAAC;IAEY,CAAC;IAEhD,QAAQ,CAAC,KAAa,IAAa,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE9D,MAAM,CAAC,KAAa;QAClC,yEAAyE;QACzE,IAAI,IAAI,CAAC,OAAO;YACd,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;;YAEtD,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,CAAC;QAEjE,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,IAAW,eAAe,KAAc,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACvE,IAAW,SAAS,KAAc,OAAO,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEtD,YAAY,CAAC,KAAiB,EAAE,OAAiB;QACtD,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;YACrB,MAAM,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;YACjC,OAAO;SACR;aAAM,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;YAC5B,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SACzC;aAAM;YACL,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM;gBAC7B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;YAEpC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;SAC7D;IACH,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,IAAY;QACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { assert, compareNumbers, IndexMap } from \"@itwin/core-bentley\";\nimport { ColorDef, ColorIndex } from \"@itwin/core-common\";\n\n/** @internal */\nexport class ColorMap extends IndexMap<number> {\n private _hasTransparency: boolean = false;\n\n public constructor() { super(compareNumbers, 0xffff); }\n\n public hasColor(color: number): boolean { return -1 !== this.indexOf(color); }\n\n public override insert(color: number): number {\n // The table should never contain a mix of opaque and translucent colors.\n if (this.isEmpty)\n this._hasTransparency = ColorMap.isTranslucent(color);\n else\n assert(ColorMap.isTranslucent(color) === this.hasTransparency);\n\n return super.insert(color);\n }\n\n public get hasTransparency(): boolean { return this._hasTransparency; }\n public get isUniform(): boolean { return 1 === this.length; }\n\n public toColorIndex(index: ColorIndex, indices: number[]): void {\n index.reset();\n if (0 === this.length) {\n assert(false, \"empty color map\");\n return;\n } else if (1 === this.length) {\n index.initUniform(this._array[0].value);\n } else {\n const colors = new Uint32Array(this.length);\n for (const entry of this._array)\n colors[entry.index] = entry.value;\n\n index.initNonUniform(colors, indices, this.hasTransparency);\n }\n }\n\n private static isTranslucent(tbgr: number) {\n return !ColorDef.isOpaque(tbgr);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DisplayParams.js","sourceRoot":"","sources":["../../../../src/render/primitives/DisplayParams.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACnI,OAAO,EAAY,SAAS,EAAE,QAAQ,EAAiB,UAAU,EAAiC,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE7I,SAAS,gBAAgB,CAAC,GAAoB,EAAE,GAAoB;IAClE,OAAO,wBAAwB,CAAC,CAAC,KAAqB,EAAE,KAAqB,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACrK,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAqB,EAAE,IAAqB;IAC1E,4HAA4H;IAC5H,6FAA6F;IAC7F,sLAAsL;IACtL,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;GAEG;AACH,MAAa,aAAa;IAaxB,YAAmB,IAAwB,EAAE,SAAmB,EAAE,SAAmB,EAAE,QAAgB,CAAC,EAAE,aAAyB,UAAU,CAAC,KAAK,EACjJ,YAAuB,SAAS,CAAC,IAAI,EAAE,QAAyB,EAAE,QAAwB,EAAE,iBAA0B,KAAK,EAAE,cAA+B;QAZ9I,SAAI,GAAuB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QAajE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QAEtC,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,cAAc,CAAC,CAAC;IACjE,CAAC;IAED,sHAAsH;IAC/G,MAAM,CAAC,aAAa,CAAC,IAAwB,EAAE,EAAiB,EAAE,eAAoE,EAAE,cAAc,GAAG,KAAK;QACnK,MAAM,SAAS,GAAG,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QACjE,QAAQ,IAAI,EAAE;YACZ,KAAK,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5B,IAAI,eAA2C,CAAC;gBAChD,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ,IAAI,SAAS,KAAK,eAAe,EAAE;oBAC9D,MAAM,eAAe,GAAG,eAAe,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;oBACrD,IAAI,SAAS,KAAK,eAAe;wBAC/B,eAAe,GAAG,IAAI,cAAc,CAAC,eAAe,EAAE,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;iBACtF;gBACD,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;aACnM;YACD,KAAK,aAAa,CAAC,IAAI,CAAC,MAAM;gBAC5B,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;YACtF,SAAS,0BAA0B;gBACjC,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;SAC3H;IACH,CAAC;IAED,wGAAwG;IACjG,MAAM,CAAC,aAAa,CAAC,EAAiB,EAAE,cAAuB,EAAE,eAAoE;QAC1I,OAAO,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;IACnG,CAAC;IAED,0GAA0G;IACnG,MAAM,CAAC,eAAe,CAAC,EAAiB;QAC7C,OAAO,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,wGAAwG;IACjG,MAAM,CAAC,aAAa,CAAC,EAAiB;QAC3C,OAAO,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,IAAW,cAAc;QACvB,IAAI,IAAI,CAAC,eAAe;YACtB,OAAO,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC;QAE3C,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;YACpE,4HAA4H;YAC5H,MAAM,SAAS,GAAmB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YACtD,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;gBACtG,OAAO,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC;YAC9C,OAAO,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC;SAC1C;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC;IAChI,CAAC;IAED,IAAW,iBAAiB;QAC1B,OAAO,aAAa,CAAC,cAAc,CAAC,OAAO,KAAK,IAAI,CAAC,cAAc,CAAC;IACtE,CAAC;IAED,IAAW,eAAe,KAAc,OAAO,SAAS,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9G,IAAW,mBAAmB,KAAc,OAAO,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACvF,IAAW,mBAAmB,KAAc,OAAO,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACvF,IAAW,cAAc,KAAiC,OAAO,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACrJ,IAAW,UAAU,KAAc,OAAO,SAAS,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAE9E,qHAAqH;IAC9G,MAAM,CAAC,GAAkB,EAAE,UAAwC,aAAa,CAAC,cAAc,CAAC,MAAM;QAC3G,IAAI,aAAa,CAAC,cAAc,CAAC,KAAK,KAAK,OAAO;YAChD,OAAO,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;aACpC,IAAI,GAAG,KAAK,IAAI;YACnB,OAAO,IAAI,CAAC;QAEd,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI;YACxB,OAAO,KAAK,CAAC;QACf,IAAI,IAAI,CAAC,cAAc,KAAK,GAAG,CAAC,cAAc;YAC5C,OAAO,KAAK,CAAC;QACf,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK;YAC1B,OAAO,KAAK,CAAC;QACf,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG,CAAC,UAAU;YACpC,OAAO,KAAK,CAAC;QACf,IAAI,IAAI,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS;YAClC,OAAO,KAAK,CAAC;QACf,IAAI,IAAI,CAAC,iBAAiB,KAAK,GAAG,CAAC,iBAAiB;YAClD,OAAO,KAAK,CAAC;QACf,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ;YAChC,OAAO,KAAK,CAAC;QACf,IAAI,IAAI,CAAC,cAAc,KAAK,GAAG,CAAC,cAAc;YAC5C,OAAO,KAAK,CAAC;QAEf,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;YACvC,OAAO,KAAK,CAAC;QAEf,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,eAAe,CAAC,GAAkB;QACvC,IAAI,GAAG,KAAK,IAAI;YACd,OAAO,CAAC,CAAC;QAEX,IAAI,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,IAAI,EAAE;YACd,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;YAChE,IAAI,CAAC,KAAK,IAAI,EAAE;gBACd,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC7C,IAAI,CAAC,KAAK,IAAI,EAAE;oBACd,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;oBACvD,IAAI,CAAC,KAAK,IAAI,EAAE;wBACd,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;wBACrD,IAAI,CAAC,KAAK,IAAI,EAAE;4BACd,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;4BACtE,IAAI,CAAC,KAAK,IAAI,EAAE;gCACd,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC;gCAC1E,IAAI,CAAC,KAAK,IAAI,EAAE;oCACd,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC;oCAC1E,IAAI,CAAC,KAAK,IAAI,EAAE;wCACd,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;wCACrD,IAAI,CAAC,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;4CAChE,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;yCACxE;qCACF;iCACF;6BACF;yBACF;qBACF;iBACF;aACF;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,kBAAkB,CAAC,KAAe;QAC9C,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9F,CAAC;;AAjKsB,6BAAe,GAAW,EAAE,AAAb,CAAc,CAAE,yDAAyD;SADpG,aAAa;AAqK1B,gBAAgB;AAChB,WAAiB,aAAa;IAC5B,IAAY,IAIX;IAJD,WAAY,IAAI;QACd,+BAAI,CAAA;QACJ,mCAAM,CAAA;QACN,+BAAI,CAAA;IACN,CAAC,EAJW,IAAI,GAAJ,kBAAI,KAAJ,kBAAI,QAIf;IAED,IAAY,cAIX;IAJD,WAAY,cAAc;QACxB,mDAAI,CAAA;QACJ,yDAAO,CAAA;QACP,yDAAO,CAAA;IACT,CAAC,EAJW,cAAc,GAAd,4BAAc,KAAd,4BAAc,QAIzB;IAED,IAAY,cAGX;IAHD,WAAY,cAAc;QACxB,qDAAK,CAAA;QACL,uDAAM,CAAA;IACR,CAAC,EAHW,cAAc,GAAd,4BAAc,KAAd,4BAAc,QAGzB;AACH,CAAC,EAjBgB,aAAa,KAAb,aAAa,QAiB7B","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, compareBooleans, compareNumbers, comparePossiblyUndefined, compareStringsOrUndefined } from \"@itwin/core-bentley\";\r\nimport { ColorDef, FillFlags, Gradient, GraphicParams, LinePixels, RenderMaterial, RenderTexture, TextureMapping } from \"@itwin/core-common\";\r\n\r\nfunction compareMaterials(lhs?: RenderMaterial, rhs?: RenderMaterial): number {\r\n return comparePossiblyUndefined((lhMat: RenderMaterial, rhMat: RenderMaterial) => lhMat === rhMat ? 0 : compareStringsOrUndefined(lhMat.key, rhMat.key), lhs, rhs);\r\n}\r\n\r\nfunction compareTextureMappings(_lhs?: TextureMapping, _rhs?: TextureMapping): number {\r\n // ###TODO we don't have a way of ordering the textures from the pattern/normal map(s) - not all textures have keys defined.\r\n // For now this will only work if the GraphicBuilder uses a single material for all geometry.\r\n // return comparePossiblyUndefined((lhTex: TextureMapping, rhTex: TextureMapping) => lhTex === rhTex ? 0 : compareStringsOrUndefined(lhTex.texture.key, rhTex.texture.key), lhs, rhs);\r\n return 0;\r\n}\r\n\r\n/** This class is used to determine if things can be batched together for display.\r\n * @internal\r\n */\r\nexport class DisplayParams {\r\n public static readonly minTransparency: number = 15; // Threshold below which we consider a color fully opaque\r\n public readonly type: DisplayParams.Type = DisplayParams.Type.Mesh;\r\n public readonly material?: RenderMaterial; // meshes only\r\n public readonly gradient?: Gradient.Symb;\r\n private readonly _textureMapping?: TextureMapping; // only if material is undefined - e.g. glyphs, gradients\r\n public readonly lineColor: ColorDef; // all types of geometry (edge color for meshes)\r\n public readonly fillColor: ColorDef; // meshes only\r\n public readonly width: number; // linear and mesh (edges)\r\n public readonly linePixels: LinePixels; // linear and mesh (edges)\r\n public readonly fillFlags: FillFlags; // meshes only\r\n public readonly ignoreLighting: boolean; // always true for text and linear geometry; true for meshes only if normals not desired\r\n\r\n public constructor(type: DisplayParams.Type, lineColor: ColorDef, fillColor: ColorDef, width: number = 0, linePixels: LinePixels = LinePixels.Solid,\r\n fillFlags: FillFlags = FillFlags.None, material?: RenderMaterial, gradient?: Gradient.Symb, ignoreLighting: boolean = false, textureMapping?: TextureMapping) {\r\n this.type = type;\r\n this.material = material;\r\n this.gradient = gradient;\r\n this.lineColor = DisplayParams.adjustTransparency(lineColor);\r\n this.fillColor = DisplayParams.adjustTransparency(fillColor);\r\n this.width = width;\r\n this.linePixels = linePixels;\r\n this.fillFlags = fillFlags;\r\n this.ignoreLighting = ignoreLighting;\r\n this._textureMapping = textureMapping;\r\n\r\n assert(undefined === material || undefined === textureMapping);\r\n }\r\n\r\n /** Creates a DisplayParams object for a particular type (mesh, linear, text) based on the specified GraphicParams. */\r\n public static createForType(type: DisplayParams.Type, gf: GraphicParams, resolveGradient?: (grad: Gradient.Symb) => RenderTexture | undefined, ignoreLighting = false): DisplayParams {\r\n const lineColor = DisplayParams.adjustTransparency(gf.lineColor);\r\n switch (type) {\r\n case DisplayParams.Type.Mesh: {\r\n let gradientMapping: TextureMapping | undefined;\r\n if (undefined !== gf.gradient && undefined !== resolveGradient) {\r\n const gradientTexture = resolveGradient(gf.gradient);\r\n if (undefined !== gradientTexture)\r\n gradientMapping = new TextureMapping(gradientTexture, new TextureMapping.Params());\r\n }\r\n return new DisplayParams(type, lineColor, DisplayParams.adjustTransparency(gf.fillColor), gf.rasterWidth, gf.linePixels, gf.fillFlags, gf.material, gf.gradient, ignoreLighting, gradientMapping);\r\n }\r\n case DisplayParams.Type.Linear:\r\n return new DisplayParams(type, lineColor, lineColor, gf.rasterWidth, gf.linePixels);\r\n default: // DisplayParams.Type.Text\r\n return new DisplayParams(type, lineColor, lineColor, 0, LinePixels.Solid, FillFlags.Always, undefined, undefined, true);\r\n }\r\n }\r\n\r\n /** Creates a DisplayParams object that describes mesh geometry based on the specified GraphicParams. */\r\n public static createForMesh(gf: GraphicParams, ignoreLighting: boolean, resolveGradient?: (grad: Gradient.Symb) => RenderTexture | undefined): DisplayParams {\r\n return DisplayParams.createForType(DisplayParams.Type.Mesh, gf, resolveGradient, ignoreLighting);\r\n }\r\n\r\n /** Creates a DisplayParams object that describes linear geometry based on the specified GraphicParams. */\r\n public static createForLinear(gf: GraphicParams): DisplayParams {\r\n return DisplayParams.createForType(DisplayParams.Type.Linear, gf);\r\n }\r\n\r\n /** Creates a DisplayParams object that describes text geometry based on the specified GraphicParams. */\r\n public static createForText(gf: GraphicParams): DisplayParams {\r\n return DisplayParams.createForType(DisplayParams.Type.Text, gf);\r\n }\r\n\r\n public get regionEdgeType(): DisplayParams.RegionEdgeType {\r\n if (this.hasBlankingFill)\r\n return DisplayParams.RegionEdgeType.None;\r\n\r\n if (this.gradient !== undefined && undefined !== this.gradient.flags) {\r\n // Even if the gradient is not outlined, produce an outline to be displayed as the region's edges when fill ViewFlag is off.\r\n const gradFlags: Gradient.Flags = this.gradient.flags;\r\n if (0 !== (gradFlags & Gradient.Flags.Outline) || FillFlags.None === (this.fillFlags & FillFlags.Always))\r\n return DisplayParams.RegionEdgeType.Outline;\r\n return DisplayParams.RegionEdgeType.None;\r\n }\r\n return (!this.fillColor.equals(this.lineColor)) ? DisplayParams.RegionEdgeType.Outline : DisplayParams.RegionEdgeType.Default;\r\n }\r\n\r\n public get wantRegionOutline(): boolean {\r\n return DisplayParams.RegionEdgeType.Outline === this.regionEdgeType;\r\n }\r\n\r\n public get hasBlankingFill(): boolean { return FillFlags.Blanking === (this.fillFlags & FillFlags.Blanking); }\r\n public get hasFillTransparency(): boolean { return 255 !== this.fillColor.getAlpha(); }\r\n public get hasLineTransparency(): boolean { return 255 !== this.lineColor.getAlpha(); }\r\n public get textureMapping(): TextureMapping | undefined { return undefined !== this.material ? this.material.textureMapping : this._textureMapping; }\r\n public get isTextured(): boolean { return undefined !== this.textureMapping; }\r\n\r\n /** Determines if the properties of this DisplayParams object are equal to those of another DisplayParams object. */\r\n public equals(rhs: DisplayParams, purpose: DisplayParams.ComparePurpose = DisplayParams.ComparePurpose.Strict): boolean {\r\n if (DisplayParams.ComparePurpose.Merge === purpose)\r\n return 0 === this.compareForMerge(rhs);\r\n else if (rhs === this)\r\n return true;\r\n\r\n if (this.type !== rhs.type)\r\n return false;\r\n if (this.ignoreLighting !== rhs.ignoreLighting)\r\n return false;\r\n if (this.width !== rhs.width)\r\n return false;\r\n if (this.linePixels !== rhs.linePixels)\r\n return false;\r\n if (this.fillFlags !== rhs.fillFlags)\r\n return false;\r\n if (this.wantRegionOutline !== rhs.wantRegionOutline)\r\n return false;\r\n if (this.material !== rhs.material)\r\n return false;\r\n if (this.textureMapping !== rhs.textureMapping)\r\n return false;\r\n\r\n if (!this.fillColor.equals(rhs.fillColor))\r\n return false;\r\n if (!this.lineColor.equals(rhs.lineColor))\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n public compareForMerge(rhs: DisplayParams): number {\r\n if (rhs === this)\r\n return 0;\r\n\r\n let diff = compareNumbers(this.type, rhs.type);\r\n if (0 === diff) {\r\n diff = compareBooleans(this.ignoreLighting, rhs.ignoreLighting);\r\n if (0 === diff) {\r\n diff = compareNumbers(this.width, rhs.width);\r\n if (0 === diff) {\r\n diff = compareNumbers(this.linePixels, rhs.linePixels);\r\n if (0 === diff) {\r\n diff = compareNumbers(this.fillFlags, rhs.fillFlags);\r\n if (0 === diff) {\r\n diff = compareBooleans(this.wantRegionOutline, rhs.wantRegionOutline);\r\n if (0 === diff) {\r\n diff = compareBooleans(this.hasFillTransparency, rhs.hasFillTransparency);\r\n if (0 === diff) {\r\n diff = compareBooleans(this.hasLineTransparency, rhs.hasLineTransparency);\r\n if (0 === diff) {\r\n diff = compareMaterials(this.material, rhs.material);\r\n if (0 === diff && undefined === this.material && this.isTextured) {\r\n diff = compareTextureMappings(this.textureMapping, rhs.textureMapping);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return diff;\r\n }\r\n\r\n /**\r\n * Given a ColorDef object, check its transparency and if it falls below the minimum, mark the color as fully opaque.\r\n * @return The original reference to the color provided, which has possibly been modified.\r\n */\r\n public static adjustTransparency(color: ColorDef): ColorDef {\r\n return (color.colors.t < DisplayParams.minTransparency) ? color.withTransparency(0) : color;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport namespace DisplayParams { // eslint-disable-line no-redeclare\r\n export enum Type {\r\n Mesh,\r\n Linear,\r\n Text,\r\n }\r\n\r\n export enum RegionEdgeType {\r\n None,\r\n Default,\r\n Outline,\r\n }\r\n\r\n export enum ComparePurpose {\r\n Merge, // considers colors equivalent if both have or both lack transparency\r\n Strict, // compares all members\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"DisplayParams.js","sourceRoot":"","sources":["../../../../src/render/primitives/DisplayParams.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { assert, compareBooleans, compareNumbers, comparePossiblyUndefined, compareStringsOrUndefined } from \"@itwin/core-bentley\";\nimport { ColorDef, FillFlags, Gradient, GraphicParams, LinePixels, RenderMaterial, RenderTexture, TextureMapping } from \"@itwin/core-common\";\n\nfunction compareMaterials(lhs?: RenderMaterial, rhs?: RenderMaterial): number {\n return comparePossiblyUndefined((lhMat: RenderMaterial, rhMat: RenderMaterial) => lhMat === rhMat ? 0 : compareStringsOrUndefined(lhMat.key, rhMat.key), lhs, rhs);\n}\n\nfunction compareTextureMappings(_lhs?: TextureMapping, _rhs?: TextureMapping): number {\n // ###TODO we don't have a way of ordering the textures from the pattern/normal map(s) - not all textures have keys defined.\n // For now this will only work if the GraphicBuilder uses a single material for all geometry.\n // return comparePossiblyUndefined((lhTex: TextureMapping, rhTex: TextureMapping) => lhTex === rhTex ? 0 : compareStringsOrUndefined(lhTex.texture.key, rhTex.texture.key), lhs, rhs);\n return 0;\n}\n\n/** This class is used to determine if things can be batched together for display.\n * @internal\n */\nexport class DisplayParams {\n public static readonly minTransparency: number = 15; // Threshold below which we consider a color fully opaque\n public readonly type: DisplayParams.Type = DisplayParams.Type.Mesh;\n public readonly material?: RenderMaterial; // meshes only\n public readonly gradient?: Gradient.Symb;\n private readonly _textureMapping?: TextureMapping; // only if material is undefined - e.g. glyphs, gradients\n public readonly lineColor: ColorDef; // all types of geometry (edge color for meshes)\n public readonly fillColor: ColorDef; // meshes only\n public readonly width: number; // linear and mesh (edges)\n public readonly linePixels: LinePixels; // linear and mesh (edges)\n public readonly fillFlags: FillFlags; // meshes only\n public readonly ignoreLighting: boolean; // always true for text and linear geometry; true for meshes only if normals not desired\n\n public constructor(type: DisplayParams.Type, lineColor: ColorDef, fillColor: ColorDef, width: number = 0, linePixels: LinePixels = LinePixels.Solid,\n fillFlags: FillFlags = FillFlags.None, material?: RenderMaterial, gradient?: Gradient.Symb, ignoreLighting: boolean = false, textureMapping?: TextureMapping) {\n this.type = type;\n this.material = material;\n this.gradient = gradient;\n this.lineColor = DisplayParams.adjustTransparency(lineColor);\n this.fillColor = DisplayParams.adjustTransparency(fillColor);\n this.width = width;\n this.linePixels = linePixels;\n this.fillFlags = fillFlags;\n this.ignoreLighting = ignoreLighting;\n this._textureMapping = textureMapping;\n\n assert(undefined === material || undefined === textureMapping);\n }\n\n /** Creates a DisplayParams object for a particular type (mesh, linear, text) based on the specified GraphicParams. */\n public static createForType(type: DisplayParams.Type, gf: GraphicParams, resolveGradient?: (grad: Gradient.Symb) => RenderTexture | undefined, ignoreLighting = false): DisplayParams {\n const lineColor = DisplayParams.adjustTransparency(gf.lineColor);\n switch (type) {\n case DisplayParams.Type.Mesh: {\n let gradientMapping: TextureMapping | undefined;\n if (undefined !== gf.gradient && undefined !== resolveGradient) {\n const gradientTexture = resolveGradient(gf.gradient);\n if (undefined !== gradientTexture)\n gradientMapping = new TextureMapping(gradientTexture, new TextureMapping.Params());\n }\n return new DisplayParams(type, lineColor, DisplayParams.adjustTransparency(gf.fillColor), gf.rasterWidth, gf.linePixels, gf.fillFlags, gf.material, gf.gradient, ignoreLighting, gradientMapping);\n }\n case DisplayParams.Type.Linear:\n return new DisplayParams(type, lineColor, lineColor, gf.rasterWidth, gf.linePixels);\n default: // DisplayParams.Type.Text\n return new DisplayParams(type, lineColor, lineColor, 0, LinePixels.Solid, FillFlags.Always, undefined, undefined, true);\n }\n }\n\n /** Creates a DisplayParams object that describes mesh geometry based on the specified GraphicParams. */\n public static createForMesh(gf: GraphicParams, ignoreLighting: boolean, resolveGradient?: (grad: Gradient.Symb) => RenderTexture | undefined): DisplayParams {\n return DisplayParams.createForType(DisplayParams.Type.Mesh, gf, resolveGradient, ignoreLighting);\n }\n\n /** Creates a DisplayParams object that describes linear geometry based on the specified GraphicParams. */\n public static createForLinear(gf: GraphicParams): DisplayParams {\n return DisplayParams.createForType(DisplayParams.Type.Linear, gf);\n }\n\n /** Creates a DisplayParams object that describes text geometry based on the specified GraphicParams. */\n public static createForText(gf: GraphicParams): DisplayParams {\n return DisplayParams.createForType(DisplayParams.Type.Text, gf);\n }\n\n public get regionEdgeType(): DisplayParams.RegionEdgeType {\n if (this.hasBlankingFill)\n return DisplayParams.RegionEdgeType.None;\n\n if (this.gradient !== undefined && undefined !== this.gradient.flags) {\n // Even if the gradient is not outlined, produce an outline to be displayed as the region's edges when fill ViewFlag is off.\n const gradFlags: Gradient.Flags = this.gradient.flags;\n if (0 !== (gradFlags & Gradient.Flags.Outline) || FillFlags.None === (this.fillFlags & FillFlags.Always))\n return DisplayParams.RegionEdgeType.Outline;\n return DisplayParams.RegionEdgeType.None;\n }\n return (!this.fillColor.equals(this.lineColor)) ? DisplayParams.RegionEdgeType.Outline : DisplayParams.RegionEdgeType.Default;\n }\n\n public get wantRegionOutline(): boolean {\n return DisplayParams.RegionEdgeType.Outline === this.regionEdgeType;\n }\n\n public get hasBlankingFill(): boolean { return FillFlags.Blanking === (this.fillFlags & FillFlags.Blanking); }\n public get hasFillTransparency(): boolean { return 255 !== this.fillColor.getAlpha(); }\n public get hasLineTransparency(): boolean { return 255 !== this.lineColor.getAlpha(); }\n public get textureMapping(): TextureMapping | undefined { return undefined !== this.material ? this.material.textureMapping : this._textureMapping; }\n public get isTextured(): boolean { return undefined !== this.textureMapping; }\n\n /** Determines if the properties of this DisplayParams object are equal to those of another DisplayParams object. */\n public equals(rhs: DisplayParams, purpose: DisplayParams.ComparePurpose = DisplayParams.ComparePurpose.Strict): boolean {\n if (DisplayParams.ComparePurpose.Merge === purpose)\n return 0 === this.compareForMerge(rhs);\n else if (rhs === this)\n return true;\n\n if (this.type !== rhs.type)\n return false;\n if (this.ignoreLighting !== rhs.ignoreLighting)\n return false;\n if (this.width !== rhs.width)\n return false;\n if (this.linePixels !== rhs.linePixels)\n return false;\n if (this.fillFlags !== rhs.fillFlags)\n return false;\n if (this.wantRegionOutline !== rhs.wantRegionOutline)\n return false;\n if (this.material !== rhs.material)\n return false;\n if (this.textureMapping !== rhs.textureMapping)\n return false;\n\n if (!this.fillColor.equals(rhs.fillColor))\n return false;\n if (!this.lineColor.equals(rhs.lineColor))\n return false;\n\n return true;\n }\n\n public compareForMerge(rhs: DisplayParams): number {\n if (rhs === this)\n return 0;\n\n let diff = compareNumbers(this.type, rhs.type);\n if (0 === diff) {\n diff = compareBooleans(this.ignoreLighting, rhs.ignoreLighting);\n if (0 === diff) {\n diff = compareNumbers(this.width, rhs.width);\n if (0 === diff) {\n diff = compareNumbers(this.linePixels, rhs.linePixels);\n if (0 === diff) {\n diff = compareNumbers(this.fillFlags, rhs.fillFlags);\n if (0 === diff) {\n diff = compareBooleans(this.wantRegionOutline, rhs.wantRegionOutline);\n if (0 === diff) {\n diff = compareBooleans(this.hasFillTransparency, rhs.hasFillTransparency);\n if (0 === diff) {\n diff = compareBooleans(this.hasLineTransparency, rhs.hasLineTransparency);\n if (0 === diff) {\n diff = compareMaterials(this.material, rhs.material);\n if (0 === diff && undefined === this.material && this.isTextured) {\n diff = compareTextureMappings(this.textureMapping, rhs.textureMapping);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n return diff;\n }\n\n /**\n * Given a ColorDef object, check its transparency and if it falls below the minimum, mark the color as fully opaque.\n * @return The original reference to the color provided, which has possibly been modified.\n */\n public static adjustTransparency(color: ColorDef): ColorDef {\n return (color.colors.t < DisplayParams.minTransparency) ? color.withTransparency(0) : color;\n }\n}\n\n/** @internal */\nexport namespace DisplayParams { // eslint-disable-line no-redeclare\n export enum Type {\n Mesh,\n Linear,\n Text,\n }\n\n export enum RegionEdgeType {\n None,\n Default,\n Outline,\n }\n\n export enum ComparePurpose {\n Merge, // considers colors equivalent if both have or both lack transparency\n Strict, // compares all members\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EdgeParams.js","sourceRoot":"","sources":["../../../../src/render/primitives/EdgeParams.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 { LinePixels, MeshEdge, OctEncodedNormalPair, PolylineData } from \"@itwin/core-common\";\r\nimport { MeshArgs, MeshArgsEdges } from \"./mesh/MeshPrimitives\";\r\nimport { VertexIndices } from \"./VertexTable\";\r\nimport { TesselatedPolyline, wantJointTriangles } from \"./PolylineParams\";\r\nimport { IModelApp } from \"../../IModelApp\";\r\n\r\n/**\r\n * Describes a set of line segments representing edges of a mesh.\r\n * Each segment is expanded into a quad defined by two triangles.\r\n * The positions are adjusted in the shader to account for the edge width.\r\n * @internal\r\n */\r\nexport interface SegmentEdgeParams {\r\n /** The 24-bit indices of the tesselated line segment */\r\n readonly indices: VertexIndices;\r\n /**\r\n * For each 24-bit index, 4 bytes:\r\n * the 24-bit index of the vertex at the other end of the segment, followed by\r\n * an 8-bit 'quad index' in [0..3] indicating which point in the expanded quad the vertex represents.\r\n */\r\n readonly endPointAndQuadIndices: Uint8Array;\r\n}\r\n\r\nfunction convertPolylinesAndEdges(polylines?: PolylineData[], edges?: MeshEdge[]): SegmentEdgeParams | undefined {\r\n let numIndices = undefined !== edges ? edges.length : 0;\r\n if (undefined !== polylines)\r\n for (const pd of polylines)\r\n numIndices += (pd.vertIndices.length - 1);\r\n\r\n if (0 === numIndices)\r\n return undefined;\r\n\r\n numIndices *= 6;\r\n const indexBytes = new Uint8Array(numIndices * 3);\r\n const endPointAndQuadIndexBytes = new Uint8Array(numIndices * 4);\r\n\r\n let ndx: number = 0;\r\n let ndx2: number = 0;\r\n\r\n const addPoint = (p0: number, p1: number, quadIndex: number) => {\r\n VertexIndices.encodeIndex(p0, indexBytes, ndx);\r\n ndx += 3;\r\n VertexIndices.encodeIndex(p1, endPointAndQuadIndexBytes, ndx2);\r\n endPointAndQuadIndexBytes[ndx2 + 3] = quadIndex;\r\n ndx2 += 4;\r\n };\r\n\r\n if (undefined !== polylines) {\r\n for (const pd of polylines) {\r\n const num = pd.vertIndices.length - 1;\r\n for (let i = 0; i < num; ++i) {\r\n let p0 = pd.vertIndices[i];\r\n let p1 = pd.vertIndices[i + 1];\r\n if (p1 < p0) { // swap so that lower index is first.\r\n p0 = p1;\r\n p1 = pd.vertIndices[i];\r\n }\r\n addPoint(p0, p1, 0);\r\n addPoint(p1, p0, 2);\r\n addPoint(p0, p1, 1);\r\n addPoint(p0, p1, 1);\r\n addPoint(p1, p0, 2);\r\n addPoint(p1, p0, 3);\r\n }\r\n }\r\n }\r\n\r\n if (undefined !== edges) {\r\n for (const meshEdge of edges) {\r\n const p0 = meshEdge.indices[0];\r\n const p1 = meshEdge.indices[1];\r\n addPoint(p0, p1, 0);\r\n addPoint(p1, p0, 2);\r\n addPoint(p0, p1, 1);\r\n addPoint(p0, p1, 1);\r\n addPoint(p1, p0, 2);\r\n addPoint(p1, p0, 3);\r\n }\r\n }\r\n\r\n return {\r\n indices: new VertexIndices(indexBytes),\r\n endPointAndQuadIndices: endPointAndQuadIndexBytes,\r\n };\r\n}\r\n\r\n/**\r\n * A set of line segments representing edges of curved portions of a mesh.\r\n * Each vertex is augmented with a pair of oct-encoded normals used in the shader\r\n * to determine whether or not the edge should be displayed.\r\n * @internal\r\n */\r\nexport interface SilhouetteParams extends SegmentEdgeParams {\r\n /** Per index, 2 16-bit oct-encoded normals */\r\n readonly normalPairs: Uint8Array;\r\n}\r\n\r\nfunction convertSilhouettes(edges: MeshEdge[], normalPairs: OctEncodedNormalPair[]): SilhouetteParams | undefined {\r\n const base = convertPolylinesAndEdges(undefined, edges);\r\n if (undefined === base)\r\n return undefined;\r\n\r\n const normalPairBytes = new Uint8Array(normalPairs.length * 6 * 4);\r\n const normalPair16 = new Uint16Array(normalPairBytes.buffer);\r\n\r\n let ndx = 0;\r\n for (const pair of normalPairs) {\r\n for (let i = 0; i < 6; i++) {\r\n normalPair16[ndx++] = pair.first.value;\r\n normalPair16[ndx++] = pair.second.value;\r\n }\r\n }\r\n\r\n return {\r\n indices: base.indices,\r\n endPointAndQuadIndices: base.endPointAndQuadIndices,\r\n normalPairs: normalPairBytes,\r\n };\r\n}\r\n\r\n/** A lookup table of edges for a mesh. The table is partitioned such that the lower partition contains simple segment edges\r\n * and the upper partition contains silhouette edges. Each entry in the lower partition consists of 2 24-bit indices into\r\n * a [[VertexTable]] from which to obtain the endpoints of the edge. Each entry in the upper partition consists of 2 24-bit\r\n * vertex indices followed by two 16-bit [[OctEncodedNormal]]s.\r\n * If both partitions exist then one row may exist between them containing a mix of segments and silhouettes; in this case a handful\r\n * of padding bytes may exist between the last segment and the first silhouette.\r\n * @see [[IndexedEdgeParams.edges]].\r\n * @internal\r\n */\r\nexport interface EdgeTable {\r\n /** The rectangular lookup table. */\r\n readonly data: Uint8Array;\r\n /** Width of the table. */\r\n readonly width: number;\r\n /** Height of the table. */\r\n readonly height: number;\r\n /** The number of segments in the lower partition. */\r\n readonly numSegments: number;\r\n /** The number of padding bytes inserted between the partitions to preserve alignment of data. */\r\n readonly silhouettePadding: number;\r\n}\r\n\r\n/** Describes the edges of a surface as a lookup table. Each edge consists of six identical indices into the lookup table, forming a quad.\r\n * @see [[EdgeParams.indexed]].\r\n * @internal\r\n */\r\nexport interface IndexedEdgeParams {\r\n /** The indices into [[edges]]. */\r\n readonly indices: VertexIndices;\r\n /** The lookup table indexed by [[indices]]. */\r\n readonly edges: EdgeTable;\r\n}\r\n\r\nexport interface EdgeTableInfo {\r\n /** Width of the table. */\r\n readonly width: number;\r\n /** Height of the table. */\r\n readonly height: number;\r\n /** The number of segments in the lower partition. */\r\n readonly silhouettePadding: number;\r\n /** The starting byte index of silhouettes */\r\n readonly silhouetteStartByteIndex: number;\r\n}\r\n\r\nexport function calculateEdgeTableParams(numSegmentEdges: number, numSilhouettes: number, maxSize: number): EdgeTableInfo {\r\n // Each segment edge requires 2 24-bit indices = 6 bytes = 1.5 RGBA values.\r\n // Each silhouette requires the same as segment edge plus 2 16-bit oct-encoded normals = 10 bytes = 2.5 RGBA values.\r\n let nRgbaRequired = Math.ceil(1.5 * numSegmentEdges + 2.5 * numSilhouettes);\r\n const silhouetteStartByteIndex = numSegmentEdges * 6;\r\n let silhouettePadding = 0;\r\n let width = nRgbaRequired;\r\n let height = 1;\r\n if (nRgbaRequired >= maxSize) {\r\n // Make roughly square to reduce unused space in last row.\r\n width = Math.ceil(Math.sqrt(nRgbaRequired));\r\n // Each entry's data must fit on the same row. 15 RGBA = 60 bytes = lowest common multiple of 6, 10, and 4.\r\n const remainder = width % 15;\r\n if (0 !== remainder)\r\n width += 15 - remainder;\r\n\r\n // If the table contains both segments and silhouettes, there may be one row containing a mix of the two where padding\r\n // is required between them.\r\n if (numSilhouettes > 0 && numSegmentEdges > 0) {\r\n const silOffset = silhouetteStartByteIndex % 60; // some multiple of 6.\r\n silhouettePadding = (60 - silOffset) % 10;\r\n nRgbaRequired += Math.ceil(silhouettePadding / 4);\r\n }\r\n\r\n height = Math.ceil(nRgbaRequired / width);\r\n if (width * height < nRgbaRequired)\r\n height++;\r\n }\r\n\r\n return {\r\n width,\r\n height,\r\n silhouettePadding,\r\n silhouetteStartByteIndex,\r\n };\r\n}\r\n\r\nfunction buildIndexedEdges(args: MeshArgsEdges, doPolylines: boolean, maxSize: number): IndexedEdgeParams | undefined {\r\n const hardEdges = args.edges?.edges;\r\n const silhouettes = args.silhouettes;\r\n const polylines = doPolylines ? args.polylines?.lines : undefined;\r\n\r\n const numHardEdges = hardEdges?.length ?? 0;\r\n const numSilhouettes = silhouettes?.edges?.length ?? 0;\r\n const numPolylines = polylines ? polylines.reduce((count: number, pd: PolylineData) => count + Math.max(0, pd.vertIndices.length - 1), 0) : 0;\r\n const numSegmentEdges = numHardEdges + numPolylines;\r\n const numTotalEdges = numSegmentEdges + numSilhouettes;\r\n if (numTotalEdges === 0)\r\n return undefined;\r\n\r\n // Each edge is a quad consisting of six vertices. Each vertex is an identical 24-bit index into the lookup table.\r\n const indices = 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 indices.setNthIndex(i * 6 + j, i);\r\n\r\n const {width, height, silhouettePadding, silhouetteStartByteIndex } = calculateEdgeTableParams (numSegmentEdges, numSilhouettes, maxSize);\r\n\r\n const data = new Uint8Array(width * height * 4);\r\n function setUint24(byteIndex: number, value: number): void {\r\n data[byteIndex + 0] = value & 0x0000ff;\r\n data[byteIndex + 1] = (value & 0x00ff00) >>> 8;\r\n data[byteIndex + 2] = (value & 0xff0000) >>> 16;\r\n }\r\n\r\n function setEdge(index: number, startPointIndex: number, endPointIndex: number): void {\r\n const byteIndex = index * 6;\r\n setUint24(byteIndex, startPointIndex);\r\n setUint24(byteIndex + 3, endPointIndex);\r\n }\r\n\r\n let curIndex = 0;\r\n if (hardEdges)\r\n for (const edge of hardEdges)\r\n setEdge(curIndex++, edge.indices[0], edge.indices[1]);\r\n\r\n if (polylines) {\r\n for (const pd of polylines) {\r\n const num = pd.vertIndices.length - 1;\r\n for (let i = 0; i < num; i++) {\r\n const p0 = pd.vertIndices[i];\r\n const p1 = pd.vertIndices[i + 1];\r\n // Ensure lower index is first.\r\n if (p0 < p1)\r\n setEdge(curIndex++, p0, p1);\r\n else\r\n setEdge(curIndex++, p1, p0);\r\n }\r\n }\r\n }\r\n\r\n if (silhouettes?.edges) {\r\n assert(undefined !== silhouettes.normals);\r\n assert(silhouettes.normals.length === silhouettes.edges.length);\r\n function setSilhouette(index: number, start: number, end: number, normals: OctEncodedNormalPair): void {\r\n const byteIndex = silhouetteStartByteIndex + silhouettePadding + index * 10;\r\n setUint24(byteIndex, start);\r\n setUint24(byteIndex + 3, end);\r\n data[byteIndex + 6] = normals.first.value & 0xff;\r\n data[byteIndex + 7] = (normals.first.value & 0xff00) >>> 8;\r\n data[byteIndex + 8] = normals.second.value & 0xff;\r\n data[byteIndex + 9] = (normals.second.value & 0xff00) >>> 8;\r\n }\r\n\r\n curIndex = 0;\r\n for (let i = 0; i < silhouettes.edges.length; i++)\r\n setSilhouette(curIndex++, silhouettes.edges[i].indices[0], silhouettes.edges[i].indices[1], silhouettes.normals[i]);\r\n }\r\n\r\n return {\r\n indices,\r\n edges: {\r\n data,\r\n width,\r\n height,\r\n numSegments: numSegmentEdges,\r\n silhouettePadding,\r\n },\r\n };\r\n}\r\n\r\n/** Describes the edges of a mesh. */\r\nexport interface EdgeParams {\r\n /** The edge width in pixels. */\r\n readonly weight: number;\r\n /** The line pattern in which edges are drawn. */\r\n readonly linePixels: LinePixels;\r\n /** Simple single-segment edges, always displayed when edge display is enabled. */\r\n readonly segments?: SegmentEdgeParams;\r\n /** Single-segment edges of curved surfaces, displayed based on edge normal relative to eye. */\r\n readonly silhouettes?: SilhouetteParams;\r\n /** Polyline edges, always displayed when edge display is enabled. */\r\n readonly polylines?: TesselatedPolyline;\r\n /** Silhouettes and simple-segment edges, compactly represented as indices into a lookup table. */\r\n readonly indexed?: IndexedEdgeParams;\r\n}\r\n\r\n/** @internal */\r\nexport namespace EdgeParams {\r\n export function fromMeshArgs(meshArgs: MeshArgs, maxWidth?: number): EdgeParams | undefined {\r\n const args = meshArgs.edges;\r\n if (!args)\r\n return undefined;\r\n\r\n const doJoints = wantJointTriangles(args.width, true === meshArgs.is2d);\r\n const polylines = doJoints ? TesselatedPolyline.fromMesh(meshArgs) : undefined;\r\n\r\n let segments: SegmentEdgeParams | undefined;\r\n let silhouettes: SilhouetteParams | undefined;\r\n let indexed: IndexedEdgeParams | undefined;\r\n\r\n if (IModelApp.tileAdmin.enableIndexedEdges) {\r\n indexed = buildIndexedEdges(args, !doJoints, maxWidth ?? IModelApp.renderSystem.maxTextureSize);\r\n } else {\r\n segments = convertPolylinesAndEdges(undefined, args.edges.edges);\r\n silhouettes = args.silhouettes.edges && args.silhouettes.normals ? convertSilhouettes(args.silhouettes.edges, args.silhouettes.normals) : undefined;\r\n }\r\n\r\n if (!segments && !silhouettes && !polylines && !indexed)\r\n return undefined;\r\n\r\n return {\r\n weight: args.width,\r\n linePixels: args.linePixels,\r\n segments,\r\n silhouettes,\r\n polylines,\r\n indexed,\r\n };\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"EdgeParams.js","sourceRoot":"","sources":["../../../../src/render/primitives/EdgeParams.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { LinePixels, MeshEdge, OctEncodedNormalPair, PolylineData } from \"@itwin/core-common\";\nimport { MeshArgs, MeshArgsEdges } from \"./mesh/MeshPrimitives\";\nimport { VertexIndices } from \"./VertexTable\";\nimport { TesselatedPolyline, wantJointTriangles } from \"./PolylineParams\";\nimport { IModelApp } from \"../../IModelApp\";\n\n/**\n * Describes a set of line segments representing edges of a mesh.\n * Each segment is expanded into a quad defined by two triangles.\n * The positions are adjusted in the shader to account for the edge width.\n * @internal\n */\nexport interface SegmentEdgeParams {\n /** The 24-bit indices of the tesselated line segment */\n readonly indices: VertexIndices;\n /**\n * For each 24-bit index, 4 bytes:\n * the 24-bit index of the vertex at the other end of the segment, followed by\n * an 8-bit 'quad index' in [0..3] indicating which point in the expanded quad the vertex represents.\n */\n readonly endPointAndQuadIndices: Uint8Array;\n}\n\nfunction convertPolylinesAndEdges(polylines?: PolylineData[], edges?: MeshEdge[]): SegmentEdgeParams | undefined {\n let numIndices = undefined !== edges ? edges.length : 0;\n if (undefined !== polylines)\n for (const pd of polylines)\n numIndices += (pd.vertIndices.length - 1);\n\n if (0 === numIndices)\n return undefined;\n\n numIndices *= 6;\n const indexBytes = new Uint8Array(numIndices * 3);\n const endPointAndQuadIndexBytes = new Uint8Array(numIndices * 4);\n\n let ndx: number = 0;\n let ndx2: number = 0;\n\n const addPoint = (p0: number, p1: number, quadIndex: number) => {\n VertexIndices.encodeIndex(p0, indexBytes, ndx);\n ndx += 3;\n VertexIndices.encodeIndex(p1, endPointAndQuadIndexBytes, ndx2);\n endPointAndQuadIndexBytes[ndx2 + 3] = quadIndex;\n ndx2 += 4;\n };\n\n if (undefined !== polylines) {\n for (const pd of polylines) {\n const num = pd.vertIndices.length - 1;\n for (let i = 0; i < num; ++i) {\n let p0 = pd.vertIndices[i];\n let p1 = pd.vertIndices[i + 1];\n if (p1 < p0) { // swap so that lower index is first.\n p0 = p1;\n p1 = pd.vertIndices[i];\n }\n addPoint(p0, p1, 0);\n addPoint(p1, p0, 2);\n addPoint(p0, p1, 1);\n addPoint(p0, p1, 1);\n addPoint(p1, p0, 2);\n addPoint(p1, p0, 3);\n }\n }\n }\n\n if (undefined !== edges) {\n for (const meshEdge of edges) {\n const p0 = meshEdge.indices[0];\n const p1 = meshEdge.indices[1];\n addPoint(p0, p1, 0);\n addPoint(p1, p0, 2);\n addPoint(p0, p1, 1);\n addPoint(p0, p1, 1);\n addPoint(p1, p0, 2);\n addPoint(p1, p0, 3);\n }\n }\n\n return {\n indices: new VertexIndices(indexBytes),\n endPointAndQuadIndices: endPointAndQuadIndexBytes,\n };\n}\n\n/**\n * A set of line segments representing edges of curved portions of a mesh.\n * Each vertex is augmented with a pair of oct-encoded normals used in the shader\n * to determine whether or not the edge should be displayed.\n * @internal\n */\nexport interface SilhouetteParams extends SegmentEdgeParams {\n /** Per index, 2 16-bit oct-encoded normals */\n readonly normalPairs: Uint8Array;\n}\n\nfunction convertSilhouettes(edges: MeshEdge[], normalPairs: OctEncodedNormalPair[]): SilhouetteParams | undefined {\n const base = convertPolylinesAndEdges(undefined, edges);\n if (undefined === base)\n return undefined;\n\n const normalPairBytes = new Uint8Array(normalPairs.length * 6 * 4);\n const normalPair16 = new Uint16Array(normalPairBytes.buffer);\n\n let ndx = 0;\n for (const pair of normalPairs) {\n for (let i = 0; i < 6; i++) {\n normalPair16[ndx++] = pair.first.value;\n normalPair16[ndx++] = pair.second.value;\n }\n }\n\n return {\n indices: base.indices,\n endPointAndQuadIndices: base.endPointAndQuadIndices,\n normalPairs: normalPairBytes,\n };\n}\n\n/** A lookup table of edges for a mesh. The table is partitioned such that the lower partition contains simple segment edges\n * and the upper partition contains silhouette edges. Each entry in the lower partition consists of 2 24-bit indices into\n * a [[VertexTable]] from which to obtain the endpoints of the edge. Each entry in the upper partition consists of 2 24-bit\n * vertex indices followed by two 16-bit [[OctEncodedNormal]]s.\n * If both partitions exist then one row may exist between them containing a mix of segments and silhouettes; in this case a handful\n * of padding bytes may exist between the last segment and the first silhouette.\n * @see [[IndexedEdgeParams.edges]].\n * @internal\n */\nexport interface EdgeTable {\n /** The rectangular lookup table. */\n readonly data: Uint8Array;\n /** Width of the table. */\n readonly width: number;\n /** Height of the table. */\n readonly height: number;\n /** The number of segments in the lower partition. */\n readonly numSegments: number;\n /** The number of padding bytes inserted between the partitions to preserve alignment of data. */\n readonly silhouettePadding: number;\n}\n\n/** Describes the edges of a surface as a lookup table. Each edge consists of six identical indices into the lookup table, forming a quad.\n * @see [[EdgeParams.indexed]].\n * @internal\n */\nexport interface IndexedEdgeParams {\n /** The indices into [[edges]]. */\n readonly indices: VertexIndices;\n /** The lookup table indexed by [[indices]]. */\n readonly edges: EdgeTable;\n}\n\nexport interface EdgeTableInfo {\n /** Width of the table. */\n readonly width: number;\n /** Height of the table. */\n readonly height: number;\n /** The number of segments in the lower partition. */\n readonly silhouettePadding: number;\n /** The starting byte index of silhouettes */\n readonly silhouetteStartByteIndex: number;\n}\n\nexport function calculateEdgeTableParams(numSegmentEdges: number, numSilhouettes: number, maxSize: number): EdgeTableInfo {\n // Each segment edge requires 2 24-bit indices = 6 bytes = 1.5 RGBA values.\n // Each silhouette requires the same as segment edge plus 2 16-bit oct-encoded normals = 10 bytes = 2.5 RGBA values.\n let nRgbaRequired = Math.ceil(1.5 * numSegmentEdges + 2.5 * numSilhouettes);\n const silhouetteStartByteIndex = numSegmentEdges * 6;\n let silhouettePadding = 0;\n let width = nRgbaRequired;\n let height = 1;\n if (nRgbaRequired >= maxSize) {\n // Make roughly square to reduce unused space in last row.\n width = Math.ceil(Math.sqrt(nRgbaRequired));\n // Each entry's data must fit on the same row. 15 RGBA = 60 bytes = lowest common multiple of 6, 10, and 4.\n const remainder = width % 15;\n if (0 !== remainder)\n width += 15 - remainder;\n\n // If the table contains both segments and silhouettes, there may be one row containing a mix of the two where padding\n // is required between them.\n if (numSilhouettes > 0 && numSegmentEdges > 0) {\n const silOffset = silhouetteStartByteIndex % 60; // some multiple of 6.\n silhouettePadding = (60 - silOffset) % 10;\n nRgbaRequired += Math.ceil(silhouettePadding / 4);\n }\n\n height = Math.ceil(nRgbaRequired / width);\n if (width * height < nRgbaRequired)\n height++;\n }\n\n return {\n width,\n height,\n silhouettePadding,\n silhouetteStartByteIndex,\n };\n}\n\nfunction buildIndexedEdges(args: MeshArgsEdges, doPolylines: boolean, maxSize: number): IndexedEdgeParams | undefined {\n const hardEdges = args.edges?.edges;\n const silhouettes = args.silhouettes;\n const polylines = doPolylines ? args.polylines?.lines : undefined;\n\n const numHardEdges = hardEdges?.length ?? 0;\n const numSilhouettes = silhouettes?.edges?.length ?? 0;\n const numPolylines = polylines ? polylines.reduce((count: number, pd: PolylineData) => count + Math.max(0, pd.vertIndices.length - 1), 0) : 0;\n const numSegmentEdges = numHardEdges + numPolylines;\n const numTotalEdges = numSegmentEdges + numSilhouettes;\n if (numTotalEdges === 0)\n return undefined;\n\n // Each edge is a quad consisting of six vertices. Each vertex is an identical 24-bit index into the lookup table.\n const indices = new VertexIndices(new Uint8Array(numTotalEdges * 6 * 3));\n for (let i = 0; i < numTotalEdges; i++)\n for (let j = 0; j < 6; j++)\n indices.setNthIndex(i * 6 + j, i);\n\n const {width, height, silhouettePadding, silhouetteStartByteIndex } = calculateEdgeTableParams (numSegmentEdges, numSilhouettes, maxSize);\n\n const data = new Uint8Array(width * height * 4);\n function setUint24(byteIndex: number, value: number): void {\n data[byteIndex + 0] = value & 0x0000ff;\n data[byteIndex + 1] = (value & 0x00ff00) >>> 8;\n data[byteIndex + 2] = (value & 0xff0000) >>> 16;\n }\n\n function setEdge(index: number, startPointIndex: number, endPointIndex: number): void {\n const byteIndex = index * 6;\n setUint24(byteIndex, startPointIndex);\n setUint24(byteIndex + 3, endPointIndex);\n }\n\n let curIndex = 0;\n if (hardEdges)\n for (const edge of hardEdges)\n setEdge(curIndex++, edge.indices[0], edge.indices[1]);\n\n if (polylines) {\n for (const pd of polylines) {\n const num = pd.vertIndices.length - 1;\n for (let i = 0; i < num; i++) {\n const p0 = pd.vertIndices[i];\n const p1 = pd.vertIndices[i + 1];\n // Ensure lower index is first.\n if (p0 < p1)\n setEdge(curIndex++, p0, p1);\n else\n setEdge(curIndex++, p1, p0);\n }\n }\n }\n\n if (silhouettes?.edges) {\n assert(undefined !== silhouettes.normals);\n assert(silhouettes.normals.length === silhouettes.edges.length);\n function setSilhouette(index: number, start: number, end: number, normals: OctEncodedNormalPair): void {\n const byteIndex = silhouetteStartByteIndex + silhouettePadding + index * 10;\n setUint24(byteIndex, start);\n setUint24(byteIndex + 3, end);\n data[byteIndex + 6] = normals.first.value & 0xff;\n data[byteIndex + 7] = (normals.first.value & 0xff00) >>> 8;\n data[byteIndex + 8] = normals.second.value & 0xff;\n data[byteIndex + 9] = (normals.second.value & 0xff00) >>> 8;\n }\n\n curIndex = 0;\n for (let i = 0; i < silhouettes.edges.length; i++)\n setSilhouette(curIndex++, silhouettes.edges[i].indices[0], silhouettes.edges[i].indices[1], silhouettes.normals[i]);\n }\n\n return {\n indices,\n edges: {\n data,\n width,\n height,\n numSegments: numSegmentEdges,\n silhouettePadding,\n },\n };\n}\n\n/** Describes the edges of a mesh. */\nexport interface EdgeParams {\n /** The edge width in pixels. */\n readonly weight: number;\n /** The line pattern in which edges are drawn. */\n readonly linePixels: LinePixels;\n /** Simple single-segment edges, always displayed when edge display is enabled. */\n readonly segments?: SegmentEdgeParams;\n /** Single-segment edges of curved surfaces, displayed based on edge normal relative to eye. */\n readonly silhouettes?: SilhouetteParams;\n /** Polyline edges, always displayed when edge display is enabled. */\n readonly polylines?: TesselatedPolyline;\n /** Silhouettes and simple-segment edges, compactly represented as indices into a lookup table. */\n readonly indexed?: IndexedEdgeParams;\n}\n\n/** @internal */\nexport namespace EdgeParams {\n export function fromMeshArgs(meshArgs: MeshArgs, maxWidth?: number): EdgeParams | undefined {\n const args = meshArgs.edges;\n if (!args)\n return undefined;\n\n const doJoints = wantJointTriangles(args.width, true === meshArgs.is2d);\n const polylines = doJoints ? TesselatedPolyline.fromMesh(meshArgs) : undefined;\n\n let segments: SegmentEdgeParams | undefined;\n let silhouettes: SilhouetteParams | undefined;\n let indexed: IndexedEdgeParams | undefined;\n\n if (IModelApp.tileAdmin.enableIndexedEdges) {\n indexed = buildIndexedEdges(args, !doJoints, maxWidth ?? IModelApp.renderSystem.maxTextureSize);\n } else {\n segments = convertPolylinesAndEdges(undefined, args.edges.edges);\n silhouettes = args.silhouettes.edges && args.silhouettes.normals ? convertSilhouettes(args.silhouettes.edges, args.silhouettes.normals) : undefined;\n }\n\n if (!segments && !silhouettes && !polylines && !indexed)\n return undefined;\n\n return {\n weight: args.width,\n linePixels: args.linePixels,\n segments,\n silhouettes,\n polylines,\n indexed,\n };\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointCloudPrimitive.js","sourceRoot":"","sources":["../../../../src/render/primitives/PointCloudPrimitive.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"PointCloudPrimitive.js","sourceRoot":"","sources":["../../../../src/render/primitives/PointCloudPrimitive.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { FeatureIndex, QParams3d } from \"@itwin/core-common\";\n\nexport interface PointCloudArgs {\n positions: Uint8Array | Uint16Array | Float32Array;\n qparams: QParams3d;\n colors: Uint8Array;\n features: FeatureIndex;\n voxelSize: number;\n colorFormat: \"bgr\" | \"rgb\";\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointStringParams.js","sourceRoot":"","sources":["../../../../src/render/primitives/PointStringParams.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE3D;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAK5B,YAAmB,QAAqB,EAAE,OAAsB,EAAE,MAAc;QAC9E,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,IAAkB;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU;YACxB,OAAO,SAAS,CAAC;QAEnB,MAAM,QAAQ,GAAG,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,SAAS,KAAK,QAAQ;YACxB,OAAO,SAAS,CAAC;QAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,IAAI,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAC3C,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE;YACxB,iEAAiE;YACjE,WAAW,GAAG,EAAE,CAAC;YACjB,KAAK,MAAM,QAAQ,IAAI,SAAS;gBAC9B,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,WAAW;oBAC1C,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACjC;QAED,MAAM,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,CAAC,aAAa,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,CAAC;QAEpD,OAAO,IAAI,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"PointStringParams.js","sourceRoot":"","sources":["../../../../src/render/primitives/PointStringParams.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE3D;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAK5B,YAAmB,QAAqB,EAAE,OAAsB,EAAE,MAAc;QAC9E,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,IAAkB;QACrC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU;YACxB,OAAO,SAAS,CAAC;QAEnB,MAAM,QAAQ,GAAG,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,SAAS,KAAK,QAAQ;YACxB,OAAO,SAAS,CAAC;QAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,IAAI,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAC3C,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE;YACxB,iEAAiE;YACjE,WAAW,GAAG,EAAE,CAAC;YACjB,KAAK,MAAM,QAAQ,IAAI,SAAS;gBAC9B,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,WAAW;oBAC1C,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACjC;QAED,MAAM,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,CAAC,aAAa,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,CAAC;QAEpD,OAAO,IAAI,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { PolylineArgs } from \"./mesh/MeshPrimitives\";\nimport { VertexIndices, VertexTable } from \"./VertexTable\";\n\n/** Describes point string geometry to be submitted to the rendering system.\n * @internal\n */\nexport class PointStringParams {\n public readonly vertices: VertexTable;\n public readonly indices: VertexIndices;\n public readonly weight: number;\n\n public constructor(vertices: VertexTable, indices: VertexIndices, weight: number) {\n this.vertices = vertices;\n this.indices = indices;\n this.weight = weight;\n }\n\n public static create(args: PolylineArgs): PointStringParams | undefined {\n if (!args.flags.isDisjoint)\n return undefined;\n\n const vertices = VertexTable.createForPolylines(args);\n if (undefined === vertices)\n return undefined;\n\n const polylines = args.polylines;\n let vertIndices = polylines[0].vertIndices;\n if (1 < polylines.length) {\n // We used to assert this wouldn't happen - apparently it does...\n vertIndices = [];\n for (const polyline of polylines)\n for (const vertIndex of polyline.vertIndices)\n vertIndices.push(vertIndex);\n }\n\n const vertexIndices = VertexIndices.fromArray(vertIndices);\n assert(vertexIndices.length === vertIndices.length);\n\n return new PointStringParams(vertices, vertexIndices, args.width);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Polyface.js","sourceRoot":"","sources":["../../../../src/render/primitives/Polyface.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAKH,gBAAgB;AAChB,MAAM,OAAO,iBAAiB;IAM5B,IAAW,eAAe,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhD,MAAM,CAAC,MAAM,CAAC,MAAqB,EAAE,EAAmB,EAAE,eAAwB,IAAI,EAAE,WAAoB,KAAK;QACtH,OAAO,IAAI,iBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IACnE,CAAC;IAED,YAAoB,MAAqB,EAAE,EAAmB,EAAE,YAAqB,EAAE,QAAiB;QACtG,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAEM,KAAK,KAAwB,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1I,SAAS,CAAC,KAAgB,IAAa,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CAClG;AAED,gBAAgB;AAChB,MAAM,OAAO,qBAAsB,SAAQ,KAAwB;IACjE,YAAY,GAAG,IAAyB;QACtC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACjB,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"Polyface.js","sourceRoot":"","sources":["../../../../src/render/primitives/Polyface.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAKH,gBAAgB;AAChB,MAAM,OAAO,iBAAiB;IAM5B,IAAW,eAAe,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhD,MAAM,CAAC,MAAM,CAAC,MAAqB,EAAE,EAAmB,EAAE,eAAwB,IAAI,EAAE,WAAoB,KAAK;QACtH,OAAO,IAAI,iBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IACnE,CAAC;IAED,YAAoB,MAAqB,EAAE,EAAmB,EAAE,YAAqB,EAAE,QAAiB;QACtG,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAEM,KAAK,KAAwB,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1I,SAAS,CAAC,KAAgB,IAAa,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CAClG;AAED,gBAAgB;AAChB,MAAM,OAAO,qBAAsB,SAAQ,KAAwB;IACjE,YAAY,GAAG,IAAyB;QACtC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACjB,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { IndexedPolyface, Transform } from \"@itwin/core-geometry\";\nimport { DisplayParams } from \"./DisplayParams\";\n\n/** @internal */\nexport class PolyfacePrimitive {\n public readonly displayParams: DisplayParams;\n private _polyface: IndexedPolyface;\n public readonly displayEdges: boolean;\n public readonly isPlanar: boolean;\n\n public get indexedPolyface() { return this._polyface; }\n\n public static create(params: DisplayParams, pf: IndexedPolyface, displayEdges: boolean = true, isPlanar: boolean = false) {\n return new PolyfacePrimitive(params, pf, displayEdges, isPlanar);\n }\n\n private constructor(params: DisplayParams, pf: IndexedPolyface, displayEdges: boolean, isPlanar: boolean) {\n this.displayParams = params;\n this._polyface = pf;\n this.displayEdges = displayEdges;\n this.isPlanar = isPlanar;\n }\n\n public clone(): PolyfacePrimitive { return new PolyfacePrimitive(this.displayParams, this._polyface.clone(), this.displayEdges, this.isPlanar); }\n public transform(trans: Transform): boolean { return this._polyface.tryTransformInPlace(trans); }\n}\n\n/** @internal */\nexport class PolyfacePrimitiveList extends Array<PolyfacePrimitive> {\n constructor(...args: PolyfacePrimitive[]) {\n super(...args);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolylineParams.js","sourceRoot":"","sources":["../../../../src/render/primitives/PolylineParams.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 { Point3d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { LinePixels, PolylineData, PolylineTypeFlags, QPoint3dList } from \"@itwin/core-common\";\r\nimport { MeshArgs, PolylineArgs } from \"./mesh/MeshPrimitives\";\r\nimport { VertexIndices, VertexTable } from \"./VertexTable\";\r\n\r\n/** Parameter associated with each vertex index of a tesselated polyline. */\r\nconst enum PolylineParam { // eslint-disable-line no-restricted-syntax\r\n kNone = 0,\r\n kSquare = 1 * 3,\r\n kMiter = 2 * 3,\r\n kMiterInsideOnly = 3 * 3,\r\n kJointBase = 4 * 3,\r\n kNegatePerp = 8 * 3,\r\n kNegateAlong = 16 * 3,\r\n kNoneAdjustWeight = 32 * 3,\r\n}\r\n\r\n/**\r\n * Represents a tesselated polyline.\r\n * Given a polyline as a line string, each segment of the line string is triangulated into a quad.\r\n * Based on the angle between two segments, additional joint triangles may be inserted in between to enable smoothly-rounded corners.\r\n * @internal\r\n */\r\nexport interface TesselatedPolyline {\r\n /** 24-bit index of each vertex. */\r\n readonly indices: VertexIndices;\r\n /** 24-bit index of the previous vertex in the polyline. */\r\n readonly prevIndices: VertexIndices;\r\n /** 24-bit index of the next vertex in the polyline, plus 8-bit parameter describing the semantics of this vertex. */\r\n readonly nextIndicesAndParams: Uint8Array;\r\n}\r\n\r\nexport namespace TesselatedPolyline {\r\n export function fromMesh(args: MeshArgs): TesselatedPolyline | undefined {\r\n const tesselator = PolylineTesselator.fromMesh(args);\r\n return tesselator?.tesselate();\r\n }\r\n}\r\n\r\nclass PolylineVertex {\r\n public isSegmentStart: boolean = false;\r\n public isPolylineStartOrEnd: boolean = false;\r\n public vertexIndex: number = 0;\r\n public prevIndex: number = 0;\r\n public nextIndex: number = 0;\r\n\r\n public constructor() { }\r\n\r\n public init(isSegmentStart: boolean, isPolylineStartOrEnd: boolean, vertexIndex: number, prevIndex: number, nextIndex: number) {\r\n this.isSegmentStart = isSegmentStart;\r\n this.isPolylineStartOrEnd = isPolylineStartOrEnd;\r\n this.vertexIndex = vertexIndex;\r\n this.prevIndex = prevIndex;\r\n this.nextIndex = nextIndex;\r\n }\r\n\r\n public computeParam(negatePerp: boolean, adjacentToJoint: boolean = false, joint: boolean = false, noDisplacement: boolean = false): number {\r\n if (joint)\r\n return PolylineParam.kJointBase;\r\n\r\n let param: PolylineParam;\r\n if (noDisplacement)\r\n param = PolylineParam.kNoneAdjustWeight; // prevent getting tossed before width adjustment\r\n else if (adjacentToJoint)\r\n param = PolylineParam.kMiterInsideOnly;\r\n else\r\n param = this.isPolylineStartOrEnd ? PolylineParam.kSquare : PolylineParam.kMiter;\r\n\r\n let adjust = 0;\r\n if (negatePerp)\r\n adjust = PolylineParam.kNegatePerp;\r\n if (!this.isSegmentStart)\r\n adjust += PolylineParam.kNegateAlong;\r\n\r\n return param + adjust;\r\n }\r\n}\r\n\r\nclass PolylineTesselator {\r\n private _polylines: PolylineData[];\r\n private _doJoints: boolean;\r\n private _numIndices = 0;\r\n private _vertIndex: number[] = [];\r\n private _prevIndex: number[] = [];\r\n private _nextIndex: number[] = [];\r\n private _nextParam: number[] = [];\r\n private _position: Point3d[] = [];\r\n\r\n public constructor(polylines: PolylineData[], points: QPoint3dList | Point3d[], doJointTriangles: boolean) {\r\n this._polylines = polylines;\r\n if (points instanceof QPoint3dList) {\r\n for (const p of points.list)\r\n this._position.push(p.unquantize(points.params));\r\n } else {\r\n this._position = points;\r\n }\r\n\r\n this._doJoints = doJointTriangles;\r\n }\r\n\r\n public static fromPolyline(args: PolylineArgs): PolylineTesselator {\r\n return new PolylineTesselator(args.polylines, args.points, wantJointTriangles(args.width, args.flags.is2d));\r\n }\r\n\r\n public static fromMesh(args: MeshArgs): PolylineTesselator | undefined {\r\n if (undefined !== args.edges?.polylines.lines && undefined !== args.points)\r\n return new PolylineTesselator(args.edges.polylines.lines, args.points, wantJointTriangles(args.edges.width, true === args.is2d));\r\n\r\n return undefined;\r\n }\r\n\r\n public tesselate(): TesselatedPolyline {\r\n this._tesselate();\r\n\r\n const vertIndex = VertexIndices.fromArray(this._vertIndex);\r\n const prevIndex = VertexIndices.fromArray(this._prevIndex);\r\n\r\n const nextIndexAndParam = new Uint8Array(this._numIndices * 4);\r\n for (let i = 0; i < this._numIndices; i++) {\r\n const index = this._nextIndex[i];\r\n const j = i * 4;\r\n VertexIndices.encodeIndex(index, nextIndexAndParam, j);\r\n nextIndexAndParam[j + 3] = this._nextParam[i] & 0x000000ff;\r\n }\r\n\r\n return {\r\n indices: vertIndex,\r\n prevIndices: prevIndex,\r\n nextIndicesAndParams: nextIndexAndParam,\r\n };\r\n }\r\n\r\n private _tesselate() {\r\n const v0 = new PolylineVertex(), v1 = new PolylineVertex();\r\n const maxJointDot = -0.7;\r\n\r\n for (const line of this._polylines) {\r\n if (line.numIndices < 2)\r\n continue;\r\n\r\n const last = line.numIndices - 1;\r\n const isClosed: boolean = line.vertIndices[0] === line.vertIndices[last];\r\n\r\n for (let i = 0; i < last; ++i) {\r\n const idx0 = line.vertIndices[i];\r\n const idx1 = line.vertIndices[i + 1];\r\n const isStart: boolean = (0 === i);\r\n const isEnd: boolean = (last - 1 === i);\r\n const prevIdx0 = isStart ? (isClosed ? line.vertIndices[last - 1] : idx0) : line.vertIndices[i - 1];\r\n const nextIdx1 = isEnd ? (isClosed ? line.vertIndices[1] : idx1) : line.vertIndices[i + 2];\r\n\r\n v0.init(true, isStart && !isClosed, idx0, prevIdx0, idx1);\r\n v1.init(false, isEnd && !isClosed, idx1, nextIdx1, idx0);\r\n\r\n const jointAt0: boolean = this._doJoints && (isClosed || !isStart) && this._dotProduct(v0) > maxJointDot;\r\n const jointAt1: boolean = this._doJoints && (isClosed || !isEnd) && this._dotProduct(v1) > maxJointDot;\r\n\r\n if (jointAt0 || jointAt1) {\r\n this._addVertex(v0, v0.computeParam(true, jointAt0, false, false));\r\n this._addVertex(v1, v1.computeParam(false, jointAt1, false, false));\r\n this._addVertex(v0, v0.computeParam(false, jointAt0, false, true));\r\n this._addVertex(v0, v0.computeParam(false, jointAt0, false, true));\r\n this._addVertex(v1, v1.computeParam(false, jointAt1, false, false));\r\n this._addVertex(v1, v1.computeParam(false, jointAt1, false, true));\r\n this._addVertex(v0, v0.computeParam(false, jointAt0, false, true));\r\n this._addVertex(v1, v1.computeParam(false, jointAt1, false, true));\r\n this._addVertex(v0, v0.computeParam(false, jointAt0, false, false));\r\n this._addVertex(v0, v0.computeParam(false, jointAt0, false, false));\r\n this._addVertex(v1, v1.computeParam(false, jointAt1, false, true));\r\n this._addVertex(v1, v1.computeParam(true, jointAt1, false, false));\r\n\r\n if (jointAt0)\r\n this.addJointTriangles(v0, v0.computeParam(false, true, false, true), v0);\r\n\r\n if (jointAt1)\r\n this.addJointTriangles(v1, v1.computeParam(false, true, false, true), v1);\r\n } else {\r\n this._addVertex(v0, v0.computeParam(true));\r\n this._addVertex(v1, v1.computeParam(false));\r\n this._addVertex(v0, v0.computeParam(false));\r\n this._addVertex(v0, v0.computeParam(false));\r\n this._addVertex(v1, v1.computeParam(false));\r\n this._addVertex(v1, v1.computeParam(true));\r\n }\r\n }\r\n }\r\n }\r\n\r\n private addJointTriangles(v0: PolylineVertex, p0: number, v1: PolylineVertex): void {\r\n const param = v1.computeParam(false, false, true);\r\n for (let i = 0; i < 3; i++) {\r\n this._addVertex(v0, p0);\r\n this._addVertex(v1, param + i + 1);\r\n this._addVertex(v1, param + i);\r\n }\r\n }\r\n\r\n private _dotProduct(v: PolylineVertex): number {\r\n const pos: Point3d = this._position[v.vertexIndex];\r\n const prevDir: Vector3d = Vector3d.createStartEnd(this._position[v.prevIndex], pos);\r\n const nextDir: Vector3d = Vector3d.createStartEnd(this._position[v.nextIndex], pos);\r\n return prevDir.dotProduct(nextDir);\r\n }\r\n\r\n private _addVertex(vertex: PolylineVertex, param: number): void {\r\n this._vertIndex[this._numIndices] = vertex.vertexIndex;\r\n this._prevIndex[this._numIndices] = vertex.prevIndex;\r\n this._nextIndex[this._numIndices] = vertex.nextIndex;\r\n this._nextParam[this._numIndices] = param;\r\n this._numIndices++;\r\n }\r\n}\r\n\r\n/** Strictly for tests. @internal */\r\nexport function tesselatePolyline(polylines: PolylineData[], points: QPoint3dList, doJointTriangles: boolean): TesselatedPolyline {\r\n const tesselator = new PolylineTesselator(polylines, points, doJointTriangles);\r\n return tesselator.tesselate();\r\n}\r\n\r\n/**\r\n * Describes a set of tesselated polylines.\r\n * Each segment of each polyline is triangulated into a quad. Additional triangles may be inserted\r\n * between segments to enable rounded corners.\r\n */\r\nexport class PolylineParams {\r\n public readonly vertices: VertexTable;\r\n public readonly polyline: TesselatedPolyline;\r\n public readonly isPlanar: boolean;\r\n public readonly type: PolylineTypeFlags;\r\n public readonly weight: number;\r\n public readonly linePixels: LinePixels;\r\n\r\n /** Directly construct a PolylineParams. The PolylineParams takes ownership of all input data. */\r\n public constructor(vertices: VertexTable, polyline: TesselatedPolyline, weight: number, linePixels: LinePixels, isPlanar: boolean, type: PolylineTypeFlags = PolylineTypeFlags.Normal) {\r\n this.vertices = vertices;\r\n this.polyline = polyline;\r\n this.isPlanar = isPlanar;\r\n this.weight = weight;\r\n this.linePixels = linePixels;\r\n this.type = type;\r\n }\r\n\r\n /** Construct from an PolylineArgs. */\r\n public static create(args: PolylineArgs): PolylineParams | undefined {\r\n assert(!args.flags.isDisjoint);\r\n const vertices = VertexTable.createForPolylines(args);\r\n if (undefined === vertices)\r\n return undefined;\r\n\r\n const tesselator = PolylineTesselator.fromPolyline(args);\r\n if (undefined === tesselator)\r\n return undefined;\r\n\r\n return new PolylineParams(vertices, tesselator.tesselate(), args.width, args.linePixels, args.flags.isPlanar, args.flags.type);\r\n }\r\n}\r\n\r\nexport function wantJointTriangles(weight: number, is2d: boolean): boolean {\r\n // Joints are incredibly expensive. In 3d, only generate them if the line is sufficiently wide for them to be noticeable.\r\n const jointWidthThreshold = 3;\r\n return is2d || weight >= jointWidthThreshold;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"PolylineParams.js","sourceRoot":"","sources":["../../../../src/render/primitives/PolylineParams.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { assert } from \"@itwin/core-bentley\";\nimport { Point3d, Vector3d } from \"@itwin/core-geometry\";\nimport { LinePixels, PolylineData, PolylineTypeFlags, QPoint3dList } from \"@itwin/core-common\";\nimport { MeshArgs, PolylineArgs } from \"./mesh/MeshPrimitives\";\nimport { VertexIndices, VertexTable } from \"./VertexTable\";\n\n/** Parameter associated with each vertex index of a tesselated polyline. */\nconst enum PolylineParam { // eslint-disable-line no-restricted-syntax\n kNone = 0,\n kSquare = 1 * 3,\n kMiter = 2 * 3,\n kMiterInsideOnly = 3 * 3,\n kJointBase = 4 * 3,\n kNegatePerp = 8 * 3,\n kNegateAlong = 16 * 3,\n kNoneAdjustWeight = 32 * 3,\n}\n\n/**\n * Represents a tesselated polyline.\n * Given a polyline as a line string, each segment of the line string is triangulated into a quad.\n * Based on the angle between two segments, additional joint triangles may be inserted in between to enable smoothly-rounded corners.\n * @internal\n */\nexport interface TesselatedPolyline {\n /** 24-bit index of each vertex. */\n readonly indices: VertexIndices;\n /** 24-bit index of the previous vertex in the polyline. */\n readonly prevIndices: VertexIndices;\n /** 24-bit index of the next vertex in the polyline, plus 8-bit parameter describing the semantics of this vertex. */\n readonly nextIndicesAndParams: Uint8Array;\n}\n\nexport namespace TesselatedPolyline {\n export function fromMesh(args: MeshArgs): TesselatedPolyline | undefined {\n const tesselator = PolylineTesselator.fromMesh(args);\n return tesselator?.tesselate();\n }\n}\n\nclass PolylineVertex {\n public isSegmentStart: boolean = false;\n public isPolylineStartOrEnd: boolean = false;\n public vertexIndex: number = 0;\n public prevIndex: number = 0;\n public nextIndex: number = 0;\n\n public constructor() { }\n\n public init(isSegmentStart: boolean, isPolylineStartOrEnd: boolean, vertexIndex: number, prevIndex: number, nextIndex: number) {\n this.isSegmentStart = isSegmentStart;\n this.isPolylineStartOrEnd = isPolylineStartOrEnd;\n this.vertexIndex = vertexIndex;\n this.prevIndex = prevIndex;\n this.nextIndex = nextIndex;\n }\n\n public computeParam(negatePerp: boolean, adjacentToJoint: boolean = false, joint: boolean = false, noDisplacement: boolean = false): number {\n if (joint)\n return PolylineParam.kJointBase;\n\n let param: PolylineParam;\n if (noDisplacement)\n param = PolylineParam.kNoneAdjustWeight; // prevent getting tossed before width adjustment\n else if (adjacentToJoint)\n param = PolylineParam.kMiterInsideOnly;\n else\n param = this.isPolylineStartOrEnd ? PolylineParam.kSquare : PolylineParam.kMiter;\n\n let adjust = 0;\n if (negatePerp)\n adjust = PolylineParam.kNegatePerp;\n if (!this.isSegmentStart)\n adjust += PolylineParam.kNegateAlong;\n\n return param + adjust;\n }\n}\n\nclass PolylineTesselator {\n private _polylines: PolylineData[];\n private _doJoints: boolean;\n private _numIndices = 0;\n private _vertIndex: number[] = [];\n private _prevIndex: number[] = [];\n private _nextIndex: number[] = [];\n private _nextParam: number[] = [];\n private _position: Point3d[] = [];\n\n public constructor(polylines: PolylineData[], points: QPoint3dList | Point3d[], doJointTriangles: boolean) {\n this._polylines = polylines;\n if (points instanceof QPoint3dList) {\n for (const p of points.list)\n this._position.push(p.unquantize(points.params));\n } else {\n this._position = points;\n }\n\n this._doJoints = doJointTriangles;\n }\n\n public static fromPolyline(args: PolylineArgs): PolylineTesselator {\n return new PolylineTesselator(args.polylines, args.points, wantJointTriangles(args.width, args.flags.is2d));\n }\n\n public static fromMesh(args: MeshArgs): PolylineTesselator | undefined {\n if (undefined !== args.edges?.polylines.lines && undefined !== args.points)\n return new PolylineTesselator(args.edges.polylines.lines, args.points, wantJointTriangles(args.edges.width, true === args.is2d));\n\n return undefined;\n }\n\n public tesselate(): TesselatedPolyline {\n this._tesselate();\n\n const vertIndex = VertexIndices.fromArray(this._vertIndex);\n const prevIndex = VertexIndices.fromArray(this._prevIndex);\n\n const nextIndexAndParam = new Uint8Array(this._numIndices * 4);\n for (let i = 0; i < this._numIndices; i++) {\n const index = this._nextIndex[i];\n const j = i * 4;\n VertexIndices.encodeIndex(index, nextIndexAndParam, j);\n nextIndexAndParam[j + 3] = this._nextParam[i] & 0x000000ff;\n }\n\n return {\n indices: vertIndex,\n prevIndices: prevIndex,\n nextIndicesAndParams: nextIndexAndParam,\n };\n }\n\n private _tesselate() {\n const v0 = new PolylineVertex(), v1 = new PolylineVertex();\n const maxJointDot = -0.7;\n\n for (const line of this._polylines) {\n if (line.numIndices < 2)\n continue;\n\n const last = line.numIndices - 1;\n const isClosed: boolean = line.vertIndices[0] === line.vertIndices[last];\n\n for (let i = 0; i < last; ++i) {\n const idx0 = line.vertIndices[i];\n const idx1 = line.vertIndices[i + 1];\n const isStart: boolean = (0 === i);\n const isEnd: boolean = (last - 1 === i);\n const prevIdx0 = isStart ? (isClosed ? line.vertIndices[last - 1] : idx0) : line.vertIndices[i - 1];\n const nextIdx1 = isEnd ? (isClosed ? line.vertIndices[1] : idx1) : line.vertIndices[i + 2];\n\n v0.init(true, isStart && !isClosed, idx0, prevIdx0, idx1);\n v1.init(false, isEnd && !isClosed, idx1, nextIdx1, idx0);\n\n const jointAt0: boolean = this._doJoints && (isClosed || !isStart) && this._dotProduct(v0) > maxJointDot;\n const jointAt1: boolean = this._doJoints && (isClosed || !isEnd) && this._dotProduct(v1) > maxJointDot;\n\n if (jointAt0 || jointAt1) {\n this._addVertex(v0, v0.computeParam(true, jointAt0, false, false));\n this._addVertex(v1, v1.computeParam(false, jointAt1, false, false));\n this._addVertex(v0, v0.computeParam(false, jointAt0, false, true));\n this._addVertex(v0, v0.computeParam(false, jointAt0, false, true));\n this._addVertex(v1, v1.computeParam(false, jointAt1, false, false));\n this._addVertex(v1, v1.computeParam(false, jointAt1, false, true));\n this._addVertex(v0, v0.computeParam(false, jointAt0, false, true));\n this._addVertex(v1, v1.computeParam(false, jointAt1, false, true));\n this._addVertex(v0, v0.computeParam(false, jointAt0, false, false));\n this._addVertex(v0, v0.computeParam(false, jointAt0, false, false));\n this._addVertex(v1, v1.computeParam(false, jointAt1, false, true));\n this._addVertex(v1, v1.computeParam(true, jointAt1, false, false));\n\n if (jointAt0)\n this.addJointTriangles(v0, v0.computeParam(false, true, false, true), v0);\n\n if (jointAt1)\n this.addJointTriangles(v1, v1.computeParam(false, true, false, true), v1);\n } else {\n this._addVertex(v0, v0.computeParam(true));\n this._addVertex(v1, v1.computeParam(false));\n this._addVertex(v0, v0.computeParam(false));\n this._addVertex(v0, v0.computeParam(false));\n this._addVertex(v1, v1.computeParam(false));\n this._addVertex(v1, v1.computeParam(true));\n }\n }\n }\n }\n\n private addJointTriangles(v0: PolylineVertex, p0: number, v1: PolylineVertex): void {\n const param = v1.computeParam(false, false, true);\n for (let i = 0; i < 3; i++) {\n this._addVertex(v0, p0);\n this._addVertex(v1, param + i + 1);\n this._addVertex(v1, param + i);\n }\n }\n\n private _dotProduct(v: PolylineVertex): number {\n const pos: Point3d = this._position[v.vertexIndex];\n const prevDir: Vector3d = Vector3d.createStartEnd(this._position[v.prevIndex], pos);\n const nextDir: Vector3d = Vector3d.createStartEnd(this._position[v.nextIndex], pos);\n return prevDir.dotProduct(nextDir);\n }\n\n private _addVertex(vertex: PolylineVertex, param: number): void {\n this._vertIndex[this._numIndices] = vertex.vertexIndex;\n this._prevIndex[this._numIndices] = vertex.prevIndex;\n this._nextIndex[this._numIndices] = vertex.nextIndex;\n this._nextParam[this._numIndices] = param;\n this._numIndices++;\n }\n}\n\n/** Strictly for tests. @internal */\nexport function tesselatePolyline(polylines: PolylineData[], points: QPoint3dList, doJointTriangles: boolean): TesselatedPolyline {\n const tesselator = new PolylineTesselator(polylines, points, doJointTriangles);\n return tesselator.tesselate();\n}\n\n/**\n * Describes a set of tesselated polylines.\n * Each segment of each polyline is triangulated into a quad. Additional triangles may be inserted\n * between segments to enable rounded corners.\n */\nexport class PolylineParams {\n public readonly vertices: VertexTable;\n public readonly polyline: TesselatedPolyline;\n public readonly isPlanar: boolean;\n public readonly type: PolylineTypeFlags;\n public readonly weight: number;\n public readonly linePixels: LinePixels;\n\n /** Directly construct a PolylineParams. The PolylineParams takes ownership of all input data. */\n public constructor(vertices: VertexTable, polyline: TesselatedPolyline, weight: number, linePixels: LinePixels, isPlanar: boolean, type: PolylineTypeFlags = PolylineTypeFlags.Normal) {\n this.vertices = vertices;\n this.polyline = polyline;\n this.isPlanar = isPlanar;\n this.weight = weight;\n this.linePixels = linePixels;\n this.type = type;\n }\n\n /** Construct from an PolylineArgs. */\n public static create(args: PolylineArgs): PolylineParams | undefined {\n assert(!args.flags.isDisjoint);\n const vertices = VertexTable.createForPolylines(args);\n if (undefined === vertices)\n return undefined;\n\n const tesselator = PolylineTesselator.fromPolyline(args);\n if (undefined === tesselator)\n return undefined;\n\n return new PolylineParams(vertices, tesselator.tesselate(), args.width, args.linePixels, args.flags.isPlanar, args.flags.type);\n }\n}\n\nexport function wantJointTriangles(weight: number, is2d: boolean): boolean {\n // Joints are incredibly expensive. In 3d, only generate them if the line is sufficiently wide for them to be noticeable.\n const jointWidthThreshold = 3;\n return is2d || weight >= jointWidthThreshold;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Primitives.js","sourceRoot":"","sources":["../../../../src/render/primitives/Primitives.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, SortedArray } from \"@itwin/core-bentley\";\r\nimport { GraphicBuilder } from \"../GraphicBuilder\";\r\n\r\n/** @internal */\r\nexport namespace ToleranceRatio {\r\n export const vertex = 0.1;\r\n export const facetArea = 0.1;\r\n}\r\n\r\n/** Specifies under what circumstances a GeometryAccumulator should generate normals.\r\n * @internal\r\n */\r\nexport enum NormalMode {\r\n Never, // Never generate normals\r\n Always, // Always generate normals\r\n CurvedSurfacesOnly, // Generate normals only for curved surfaces\r\n}\r\n\r\n/** @internal */\r\nexport enum SurfacesOnly { Yes = 1, No = 0 } // Yes indicates polylines will not be generated, only meshes.\r\n\r\n/** @internal */\r\nexport enum PreserveOrder { Yes = 1, No = 0 } // Yes indicates primitives will not be merged, and the order in which they were added to the GraphicBuilder will be preserved.\r\n\r\n/** @internal */\r\nexport enum GenerateEdges { Yes = 1, No = 0 } // Yes indicates edges will be generated for surfaces\r\n\r\n/** @internal */\r\nexport class GeometryOptions {\r\n public readonly normals: NormalMode;\r\n public readonly surfaces: SurfacesOnly;\r\n public readonly preserveOrder: PreserveOrder;\r\n public readonly edges: GenerateEdges;\r\n constructor(edges: GenerateEdges, normals: NormalMode = NormalMode.Always, surfaces: SurfacesOnly = SurfacesOnly.No, preserveOrder: PreserveOrder = PreserveOrder.No) {\r\n this.normals = normals;\r\n this.surfaces = surfaces;\r\n this.preserveOrder = preserveOrder;\r\n this.edges = edges;\r\n }\r\n\r\n public get wantSurfacesOnly(): boolean { return this.surfaces === SurfacesOnly.Yes; }\r\n public get wantPreserveOrder(): boolean { return this.preserveOrder === PreserveOrder.Yes; }\r\n public get wantEdges(): boolean { return this.edges === GenerateEdges.Yes; }\r\n\r\n public static createForGraphicBuilder(params: GraphicBuilder, normals: NormalMode = NormalMode.Always, surfaces: SurfacesOnly = SurfacesOnly.No): GeometryOptions {\r\n return new GeometryOptions(params.wantEdges ? GenerateEdges.Yes : GenerateEdges.No, normals, surfaces, params.preserveOrder ? PreserveOrder.Yes : PreserveOrder.No);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class Triangle {\r\n public readonly indices = new Uint32Array(3);\r\n public readonly visible = [true, true, true];\r\n public singleSided: boolean;\r\n\r\n public constructor(singleSided: boolean = true) { this.singleSided = singleSided; }\r\n\r\n public setIndices(a: number, b: number, c: number) {\r\n this.indices[0] = a;\r\n this.indices[1] = b;\r\n this.indices[2] = c;\r\n }\r\n\r\n public setEdgeVisibility(a: boolean, b: boolean, c: boolean) {\r\n this.visible[0] = a;\r\n this.visible[1] = b;\r\n this.visible[2] = c;\r\n }\r\n\r\n public isEdgeVisible(index: number) {\r\n assert(index < 3 && index >= 0);\r\n return this.visible[index];\r\n }\r\n\r\n public get isDegenerate() { return this.indices[0] === this.indices[1] || this.indices[0] === this.indices[2] || this.indices[1] === this.indices[2]; }\r\n}\r\n\r\n/** @internal */\r\nexport class TriangleList {\r\n private readonly _flags: number[] = [];\r\n public readonly indices: number[] = [];\r\n\r\n public get length(): number { return this._flags.length; }\r\n public get isEmpty(): boolean { return 0 === this.length; }\r\n\r\n public addTriangle(triangle: Triangle): void {\r\n let flags = triangle.singleSided ? 1 : 0;\r\n for (let i = 0; i < 3; i++) {\r\n if (triangle.isEdgeVisible(i))\r\n flags |= (0x0002 << i);\r\n\r\n this.indices.push(triangle.indices[i]);\r\n }\r\n\r\n this._flags.push(flags);\r\n }\r\n\r\n public addFromTypedArray(indices: Uint8Array | Uint16Array | Uint32Array, flags: number = 0) {\r\n for (let i = 0; i < indices.length;) {\r\n this.indices.push(indices[i++]);\r\n this.indices.push(indices[i++]);\r\n this.indices.push(indices[i++]);\r\n this._flags.push(flags);\r\n }\r\n }\r\n\r\n public getTriangle(index: number, out?: Triangle): Triangle {\r\n const triangle = undefined !== out ? out : new Triangle();\r\n\r\n if (index > this.length) {\r\n assert(false);\r\n return new Triangle();\r\n }\r\n\r\n const flags = this._flags[index];\r\n triangle.singleSided = 0 !== (flags & 0x0001);\r\n\r\n const baseIndex = index * 3;\r\n for (let i = 0; i < 3; i++) {\r\n triangle.indices[i] = this.indices[baseIndex + i];\r\n triangle.visible[i] = 0 !== (flags & 0x0002 << i);\r\n }\r\n\r\n return triangle;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class TriangleKey {\r\n private readonly _sortedIndices = new Uint32Array(3);\r\n\r\n public constructor(triangle: Triangle) {\r\n const index = triangle.indices;\r\n const sorted = this._sortedIndices;\r\n\r\n if (index[0] < index[1]) {\r\n if (index[0] < index[2]) {\r\n sorted[0] = index[0];\r\n if (index[1] < index[2]) {\r\n sorted[1] = index[1];\r\n sorted[2] = index[2];\r\n } else {\r\n sorted[1] = index[2];\r\n sorted[2] = index[1];\r\n }\r\n } else {\r\n sorted[0] = index[2];\r\n sorted[1] = index[0];\r\n sorted[2] = index[1];\r\n }\r\n } else {\r\n if (index[1] < index[2]) {\r\n sorted[0] = index[1];\r\n if (index[0] < index[2]) {\r\n sorted[1] = index[0];\r\n sorted[2] = index[2];\r\n } else {\r\n sorted[1] = index[2];\r\n sorted[2] = index[0];\r\n }\r\n } else {\r\n sorted[0] = index[2];\r\n sorted[1] = index[1];\r\n sorted[2] = index[0];\r\n }\r\n }\r\n\r\n assert(sorted[0] < sorted[1]);\r\n assert(sorted[1] < sorted[2]);\r\n }\r\n\r\n public compare(rhs: TriangleKey): number {\r\n let diff = 0;\r\n for (let i = 0; i < 3; i++) {\r\n diff = this._sortedIndices[i] - rhs._sortedIndices[i];\r\n if (0 !== diff)\r\n break;\r\n }\r\n\r\n return diff;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class TriangleSet extends SortedArray<TriangleKey> {\r\n public constructor() {\r\n super((lhs: TriangleKey, rhs: TriangleKey) => lhs.compare(rhs));\r\n }\r\n public insertKey(triangle: Triangle, onInsert: (triangleKey: TriangleKey) => any): number {\r\n return this.insert(new TriangleKey(triangle), onInsert);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"Primitives.js","sourceRoot":"","sources":["../../../../src/render/primitives/Primitives.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { assert, SortedArray } from \"@itwin/core-bentley\";\nimport { GraphicBuilder } from \"../GraphicBuilder\";\n\n/** @internal */\nexport namespace ToleranceRatio {\n export const vertex = 0.1;\n export const facetArea = 0.1;\n}\n\n/** Specifies under what circumstances a GeometryAccumulator should generate normals.\n * @internal\n */\nexport enum NormalMode {\n Never, // Never generate normals\n Always, // Always generate normals\n CurvedSurfacesOnly, // Generate normals only for curved surfaces\n}\n\n/** @internal */\nexport enum SurfacesOnly { Yes = 1, No = 0 } // Yes indicates polylines will not be generated, only meshes.\n\n/** @internal */\nexport enum PreserveOrder { Yes = 1, No = 0 } // Yes indicates primitives will not be merged, and the order in which they were added to the GraphicBuilder will be preserved.\n\n/** @internal */\nexport enum GenerateEdges { Yes = 1, No = 0 } // Yes indicates edges will be generated for surfaces\n\n/** @internal */\nexport class GeometryOptions {\n public readonly normals: NormalMode;\n public readonly surfaces: SurfacesOnly;\n public readonly preserveOrder: PreserveOrder;\n public readonly edges: GenerateEdges;\n constructor(edges: GenerateEdges, normals: NormalMode = NormalMode.Always, surfaces: SurfacesOnly = SurfacesOnly.No, preserveOrder: PreserveOrder = PreserveOrder.No) {\n this.normals = normals;\n this.surfaces = surfaces;\n this.preserveOrder = preserveOrder;\n this.edges = edges;\n }\n\n public get wantSurfacesOnly(): boolean { return this.surfaces === SurfacesOnly.Yes; }\n public get wantPreserveOrder(): boolean { return this.preserveOrder === PreserveOrder.Yes; }\n public get wantEdges(): boolean { return this.edges === GenerateEdges.Yes; }\n\n public static createForGraphicBuilder(params: GraphicBuilder, normals: NormalMode = NormalMode.Always, surfaces: SurfacesOnly = SurfacesOnly.No): GeometryOptions {\n return new GeometryOptions(params.wantEdges ? GenerateEdges.Yes : GenerateEdges.No, normals, surfaces, params.preserveOrder ? PreserveOrder.Yes : PreserveOrder.No);\n }\n}\n\n/** @internal */\nexport class Triangle {\n public readonly indices = new Uint32Array(3);\n public readonly visible = [true, true, true];\n public singleSided: boolean;\n\n public constructor(singleSided: boolean = true) { this.singleSided = singleSided; }\n\n public setIndices(a: number, b: number, c: number) {\n this.indices[0] = a;\n this.indices[1] = b;\n this.indices[2] = c;\n }\n\n public setEdgeVisibility(a: boolean, b: boolean, c: boolean) {\n this.visible[0] = a;\n this.visible[1] = b;\n this.visible[2] = c;\n }\n\n public isEdgeVisible(index: number) {\n assert(index < 3 && index >= 0);\n return this.visible[index];\n }\n\n public get isDegenerate() { return this.indices[0] === this.indices[1] || this.indices[0] === this.indices[2] || this.indices[1] === this.indices[2]; }\n}\n\n/** @internal */\nexport class TriangleList {\n private readonly _flags: number[] = [];\n public readonly indices: number[] = [];\n\n public get length(): number { return this._flags.length; }\n public get isEmpty(): boolean { return 0 === this.length; }\n\n public addTriangle(triangle: Triangle): void {\n let flags = triangle.singleSided ? 1 : 0;\n for (let i = 0; i < 3; i++) {\n if (triangle.isEdgeVisible(i))\n flags |= (0x0002 << i);\n\n this.indices.push(triangle.indices[i]);\n }\n\n this._flags.push(flags);\n }\n\n public addFromTypedArray(indices: Uint8Array | Uint16Array | Uint32Array, flags: number = 0) {\n for (let i = 0; i < indices.length;) {\n this.indices.push(indices[i++]);\n this.indices.push(indices[i++]);\n this.indices.push(indices[i++]);\n this._flags.push(flags);\n }\n }\n\n public getTriangle(index: number, out?: Triangle): Triangle {\n const triangle = undefined !== out ? out : new Triangle();\n\n if (index > this.length) {\n assert(false);\n return new Triangle();\n }\n\n const flags = this._flags[index];\n triangle.singleSided = 0 !== (flags & 0x0001);\n\n const baseIndex = index * 3;\n for (let i = 0; i < 3; i++) {\n triangle.indices[i] = this.indices[baseIndex + i];\n triangle.visible[i] = 0 !== (flags & 0x0002 << i);\n }\n\n return triangle;\n }\n}\n\n/** @internal */\nexport class TriangleKey {\n private readonly _sortedIndices = new Uint32Array(3);\n\n public constructor(triangle: Triangle) {\n const index = triangle.indices;\n const sorted = this._sortedIndices;\n\n if (index[0] < index[1]) {\n if (index[0] < index[2]) {\n sorted[0] = index[0];\n if (index[1] < index[2]) {\n sorted[1] = index[1];\n sorted[2] = index[2];\n } else {\n sorted[1] = index[2];\n sorted[2] = index[1];\n }\n } else {\n sorted[0] = index[2];\n sorted[1] = index[0];\n sorted[2] = index[1];\n }\n } else {\n if (index[1] < index[2]) {\n sorted[0] = index[1];\n if (index[0] < index[2]) {\n sorted[1] = index[0];\n sorted[2] = index[2];\n } else {\n sorted[1] = index[2];\n sorted[2] = index[0];\n }\n } else {\n sorted[0] = index[2];\n sorted[1] = index[1];\n sorted[2] = index[0];\n }\n }\n\n assert(sorted[0] < sorted[1]);\n assert(sorted[1] < sorted[2]);\n }\n\n public compare(rhs: TriangleKey): number {\n let diff = 0;\n for (let i = 0; i < 3; i++) {\n diff = this._sortedIndices[i] - rhs._sortedIndices[i];\n if (0 !== diff)\n break;\n }\n\n return diff;\n }\n}\n\n/** @internal */\nexport class TriangleSet extends SortedArray<TriangleKey> {\n public constructor() {\n super((lhs: TriangleKey, rhs: TriangleKey) => lhs.compare(rhs));\n }\n public insertKey(triangle: Triangle, onInsert: (triangleKey: TriangleKey) => any): number {\n return this.insert(new TriangleKey(triangle), onInsert);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Strokes.js","sourceRoot":"","sources":["../../../../src/render/primitives/Strokes.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAKH,gBAAgB;AAChB,MAAM,OAAO,yBAAyB;IAEpC,YAAY,SAAoB,EAAE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;CACnE;AAED,gBAAgB;AAChB,MAAM,OAAO,0BAA2B,SAAQ,KAAgC;IAC9E,YAAY,GAAG,IAAiC;QAC9C,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACjB,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,OAAO,gBAAgB;IAMpB,MAAM,CAAC,MAAM,CAAC,MAAqB,EAAE,UAAmB,EAAE,QAAiB;QAChF,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED,YAAoB,MAAqB,EAAE,UAAmB,EAAE,QAAiB;QAC/E,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAEM,SAAS,CAAC,KAAgB;QAC/B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,KAAK,CAAC,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAChD;IACH,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,OAAO,oBAAqB,SAAQ,KAAuB;IAC/D,YAAY,GAAG,IAAwB;QACrC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACjB,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"Strokes.js","sourceRoot":"","sources":["../../../../src/render/primitives/Strokes.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAKH,gBAAgB;AAChB,MAAM,OAAO,yBAAyB;IAEpC,YAAY,SAAoB,EAAE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;CACnE;AAED,gBAAgB;AAChB,MAAM,OAAO,0BAA2B,SAAQ,KAAgC;IAC9E,YAAY,GAAG,IAAiC;QAC9C,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACjB,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,OAAO,gBAAgB;IAMpB,MAAM,CAAC,MAAM,CAAC,MAAqB,EAAE,UAAmB,EAAE,QAAiB;QAChF,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED,YAAoB,MAAqB,EAAE,UAAmB,EAAE,QAAiB;QAC/E,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAChD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAEM,SAAS,CAAC,KAAgB;QAC/B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,KAAK,CAAC,2BAA2B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAChD;IACH,CAAC;CACF;AAED,gBAAgB;AAChB,MAAM,OAAO,oBAAqB,SAAQ,KAAuB;IAC/D,YAAY,GAAG,IAAwB;QACrC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACjB,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { Point3d, Transform } from \"@itwin/core-geometry\";\nimport { DisplayParams } from \"./DisplayParams\";\n\n/** @internal */\nexport class StrokesPrimitivePointList {\n public points: Point3d[];\n constructor(points: Point3d[] = []) { this.points = [...points]; }\n}\n\n/** @internal */\nexport class StrokesPrimitivePointLists extends Array<StrokesPrimitivePointList> {\n constructor(...args: StrokesPrimitivePointList[]) {\n super(...args);\n }\n}\n\n/** @internal */\nexport class StrokesPrimitive {\n public readonly displayParams: DisplayParams;\n public readonly isDisjoint: boolean;\n public readonly isPlanar: boolean;\n public strokes: StrokesPrimitivePointLists;\n\n public static create(params: DisplayParams, isDisjoint: boolean, isPlanar: boolean) {\n return new StrokesPrimitive(params, isDisjoint, isPlanar);\n }\n\n private constructor(params: DisplayParams, isDisjoint: boolean, isPlanar: boolean) {\n this.displayParams = params;\n this.strokes = new StrokesPrimitivePointLists();\n this.isDisjoint = isDisjoint;\n this.isPlanar = isPlanar;\n }\n\n public transform(trans: Transform) {\n for (const strk of this.strokes) {\n trans.multiplyPoint3dArrayInPlace(strk.points);\n }\n }\n}\n\n/** @internal */\nexport class StrokesPrimitiveList extends Array<StrokesPrimitive> {\n constructor(...args: StrokesPrimitive[]) {\n super(...args);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SurfaceParams.js","sourceRoot":"","sources":["../../../../src/render/primitives/SurfaceParams.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAKH,gBAAgB;AAChB,MAAM,CAAN,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,+CAAK,CAAA;IACL,2CAAG,CAAA;IACH,qDAAQ,CAAA;IACR,2DAAW,CAAA;IACX,qEAAgB,CAAA;AAClB,CAAC,EANW,WAAW,KAAX,WAAW,QAMtB;AAED,gBAAgB;AAChB,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,QAAQ,KAAK,EAAE;QACb,KAAK,WAAW,CAAC,KAAK,CAAC;QACvB,KAAK,WAAW,CAAC,GAAG,CAAC;QACrB,KAAK,WAAW,CAAC,QAAQ,CAAC;QAC1B,KAAK,WAAW,CAAC,WAAW,CAAC;QAC7B,KAAK,WAAW,CAAC,gBAAgB;YAC/B,OAAO,IAAI,CAAC;QACd;YACE,OAAO,KAAK,CAAC;KAChB;AACH,CAAC;AAuBD,gBAAgB;AAChB,MAAM,UAAU,qBAAqB,CAAC,MAAkC;IACtE,IAAI,SAAS,KAAK,MAAM;QACtB,OAAO,SAAS,CAAC;;QAEjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAChD,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"SurfaceParams.js","sourceRoot":"","sources":["../../../../src/render/primitives/SurfaceParams.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAKH,gBAAgB;AAChB,MAAM,CAAN,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,+CAAK,CAAA;IACL,2CAAG,CAAA;IACH,qDAAQ,CAAA;IACR,2DAAW,CAAA;IACX,qEAAgB,CAAA;AAClB,CAAC,EANW,WAAW,KAAX,WAAW,QAMtB;AAED,gBAAgB;AAChB,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,QAAQ,KAAK,EAAE;QACb,KAAK,WAAW,CAAC,KAAK,CAAC;QACvB,KAAK,WAAW,CAAC,GAAG,CAAC;QACrB,KAAK,WAAW,CAAC,QAAQ,CAAC;QAC1B,KAAK,WAAW,CAAC,WAAW,CAAC;QAC7B,KAAK,WAAW,CAAC,gBAAgB;YAC/B,OAAO,IAAI,CAAC;QACd;YACE,OAAO,KAAK,CAAC;KAChB;AACH,CAAC;AAuBD,gBAAgB;AAChB,MAAM,UAAU,qBAAqB,CAAC,MAAkC;IACtE,IAAI,SAAS,KAAK,MAAM;QACtB,OAAO,SAAS,CAAC;;QAEjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAChD,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { FillFlags, RenderMaterial, RenderTexture } from \"@itwin/core-common\";\nimport { VertexIndices } from \"./VertexTable\";\n\n/** @internal */\nexport enum SurfaceType {\n Unlit,\n Lit,\n Textured,\n TexturedLit,\n VolumeClassifier,\n}\n\n/** @internal */\nexport function isValidSurfaceType(value: number): boolean {\n switch (value) {\n case SurfaceType.Unlit:\n case SurfaceType.Lit:\n case SurfaceType.Textured:\n case SurfaceType.TexturedLit:\n case SurfaceType.VolumeClassifier:\n return true;\n default:\n return false;\n }\n}\n\n/** @internal */\nexport interface SurfaceRenderMaterial {\n readonly isAtlas: false;\n readonly material: RenderMaterial;\n}\n\n/** @internal */\nexport interface SurfaceMaterialAtlas {\n readonly isAtlas: true;\n // Overrides surface alpha to be translucent. Implies `overridesAlpha`.\n readonly hasTranslucency: boolean;\n // Overrides surface alpha to be opaque or translucent.\n readonly overridesAlpha: boolean;\n // offset past the END of the vertex data; equivalently, number of 32-bit colors in color table preceding material atlas.\n readonly vertexTableOffset: number;\n readonly numMaterials: number;\n}\n\n/** @internal */\nexport type SurfaceMaterial = SurfaceRenderMaterial | SurfaceMaterialAtlas;\n\n/** @internal */\nexport function createSurfaceMaterial(source: RenderMaterial | undefined): SurfaceMaterial | undefined {\n if (undefined === source)\n return undefined;\n else\n return { isAtlas: false, material: source };\n}\n\n/** @internal */\nexport interface SurfaceParams {\n readonly type: SurfaceType;\n readonly indices: VertexIndices;\n readonly fillFlags: FillFlags;\n readonly hasBakedLighting: boolean;\n readonly textureMapping?: {\n texture: RenderTexture;\n alwaysDisplayed: boolean;\n };\n readonly material?: SurfaceMaterial;\n}\n\n"]}
|