@itwin/core-frontend 4.3.0-dev.33 → 4.3.0-dev.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/lib/cjs/extension/ExtensionRuntime.js +1 -0
  3. package/lib/cjs/extension/ExtensionRuntime.js.map +1 -1
  4. package/lib/cjs/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  5. package/lib/cjs/render/webgl/SurfaceGeometry.js +28 -2
  6. package/lib/cjs/render/webgl/SurfaceGeometry.js.map +1 -1
  7. package/lib/cjs/render/webgl/ThematicUniforms.d.ts.map +1 -1
  8. package/lib/cjs/render/webgl/ThematicUniforms.js +6 -8
  9. package/lib/cjs/render/webgl/ThematicUniforms.js.map +1 -1
  10. package/lib/cjs/render/webgl/glsl/Surface.d.ts.map +1 -1
  11. package/lib/cjs/render/webgl/glsl/Surface.js +7 -11
  12. package/lib/cjs/render/webgl/glsl/Surface.js.map +1 -1
  13. package/lib/cjs/render/webgl/glsl/Thematic.d.ts.map +1 -1
  14. package/lib/cjs/render/webgl/glsl/Thematic.js +10 -8
  15. package/lib/cjs/render/webgl/glsl/Thematic.js.map +1 -1
  16. package/lib/cjs/tile/map/ArcGISTileMap.d.ts +5 -3
  17. package/lib/cjs/tile/map/ArcGISTileMap.d.ts.map +1 -1
  18. package/lib/cjs/tile/map/ArcGISTileMap.js +4 -16
  19. package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
  20. package/lib/cjs/tile/map/ArcGisUtilities.d.ts +27 -12
  21. package/lib/cjs/tile/map/ArcGisUtilities.d.ts.map +1 -1
  22. package/lib/cjs/tile/map/ArcGisUtilities.js +25 -17
  23. package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
  24. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  25. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js +6 -1
  26. package/lib/cjs/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  27. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  28. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +4 -1
  29. package/lib/cjs/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  30. package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.d.ts.map +1 -1
  31. package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.js +2 -1
  32. package/lib/cjs/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  33. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  34. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +4 -2
  35. package/lib/cjs/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  36. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  37. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +5 -4
  38. package/lib/cjs/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  39. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts +16 -2
  40. package/lib/cjs/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  41. package/lib/cjs/tile/map/MapLayerFormatRegistry.js +33 -10
  42. package/lib/cjs/tile/map/MapLayerFormatRegistry.js.map +1 -1
  43. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts +3 -4
  44. package/lib/cjs/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  45. package/lib/cjs/tile/map/MapLayerImageryFormats.js +32 -4
  46. package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
  47. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts +5 -0
  48. package/lib/cjs/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  49. package/lib/cjs/tile/map/MapLayerImageryProvider.js +41 -0
  50. package/lib/cjs/tile/map/MapLayerImageryProvider.js.map +1 -1
  51. package/lib/cjs/tile/map/MapLayerSources.d.ts +26 -7
  52. package/lib/cjs/tile/map/MapLayerSources.d.ts.map +1 -1
  53. package/lib/cjs/tile/map/MapLayerSources.js +22 -4
  54. package/lib/cjs/tile/map/MapLayerSources.js.map +1 -1
  55. package/lib/cjs/tile/map/WmsCapabilities.d.ts +3 -1
  56. package/lib/cjs/tile/map/WmsCapabilities.d.ts.map +1 -1
  57. package/lib/cjs/tile/map/WmsCapabilities.js +11 -2
  58. package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
  59. package/lib/cjs/tile/map/WmtsCapabilities.d.ts +3 -1
  60. package/lib/cjs/tile/map/WmtsCapabilities.d.ts.map +1 -1
  61. package/lib/cjs/tile/map/WmtsCapabilities.js +11 -2
  62. package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
  63. package/lib/esm/extension/ExtensionRuntime.js +2 -1
  64. package/lib/esm/extension/ExtensionRuntime.js.map +1 -1
  65. package/lib/esm/render/webgl/SurfaceGeometry.d.ts.map +1 -1
  66. package/lib/esm/render/webgl/SurfaceGeometry.js +29 -3
  67. package/lib/esm/render/webgl/SurfaceGeometry.js.map +1 -1
  68. package/lib/esm/render/webgl/ThematicUniforms.d.ts.map +1 -1
  69. package/lib/esm/render/webgl/ThematicUniforms.js +8 -10
  70. package/lib/esm/render/webgl/ThematicUniforms.js.map +1 -1
  71. package/lib/esm/render/webgl/glsl/Surface.d.ts.map +1 -1
  72. package/lib/esm/render/webgl/glsl/Surface.js +7 -11
  73. package/lib/esm/render/webgl/glsl/Surface.js.map +1 -1
  74. package/lib/esm/render/webgl/glsl/Thematic.d.ts.map +1 -1
  75. package/lib/esm/render/webgl/glsl/Thematic.js +10 -8
  76. package/lib/esm/render/webgl/glsl/Thematic.js.map +1 -1
  77. package/lib/esm/tile/map/ArcGISTileMap.d.ts +5 -3
  78. package/lib/esm/tile/map/ArcGISTileMap.d.ts.map +1 -1
  79. package/lib/esm/tile/map/ArcGISTileMap.js +5 -17
  80. package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
  81. package/lib/esm/tile/map/ArcGisUtilities.d.ts +27 -12
  82. package/lib/esm/tile/map/ArcGisUtilities.d.ts.map +1 -1
  83. package/lib/esm/tile/map/ArcGisUtilities.js +25 -17
  84. package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
  85. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.d.ts.map +1 -1
  86. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js +6 -1
  87. package/lib/esm/tile/map/ImageryProviders/ArcGISImageryProvider.js.map +1 -1
  88. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.d.ts.map +1 -1
  89. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js +4 -1
  90. package/lib/esm/tile/map/ImageryProviders/ArcGISMapLayerImageryProvider.js.map +1 -1
  91. package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.d.ts.map +1 -1
  92. package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.js +2 -1
  93. package/lib/esm/tile/map/ImageryProviders/TileUrlImageryProvider.js.map +1 -1
  94. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.d.ts.map +1 -1
  95. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js +4 -2
  96. package/lib/esm/tile/map/ImageryProviders/WmsMapLayerImageryProvider.js.map +1 -1
  97. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.d.ts.map +1 -1
  98. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js +5 -4
  99. package/lib/esm/tile/map/ImageryProviders/WmtsMapLayerImageryProvider.js.map +1 -1
  100. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts +16 -2
  101. package/lib/esm/tile/map/MapLayerFormatRegistry.d.ts.map +1 -1
  102. package/lib/esm/tile/map/MapLayerFormatRegistry.js +34 -11
  103. package/lib/esm/tile/map/MapLayerFormatRegistry.js.map +1 -1
  104. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts +3 -4
  105. package/lib/esm/tile/map/MapLayerImageryFormats.d.ts.map +1 -1
  106. package/lib/esm/tile/map/MapLayerImageryFormats.js +33 -5
  107. package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
  108. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts +5 -0
  109. package/lib/esm/tile/map/MapLayerImageryProvider.d.ts.map +1 -1
  110. package/lib/esm/tile/map/MapLayerImageryProvider.js +41 -0
  111. package/lib/esm/tile/map/MapLayerImageryProvider.js.map +1 -1
  112. package/lib/esm/tile/map/MapLayerSources.d.ts +26 -7
  113. package/lib/esm/tile/map/MapLayerSources.d.ts.map +1 -1
  114. package/lib/esm/tile/map/MapLayerSources.js +22 -4
  115. package/lib/esm/tile/map/MapLayerSources.js.map +1 -1
  116. package/lib/esm/tile/map/WmsCapabilities.d.ts +3 -1
  117. package/lib/esm/tile/map/WmsCapabilities.d.ts.map +1 -1
  118. package/lib/esm/tile/map/WmsCapabilities.js +11 -2
  119. package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
  120. package/lib/esm/tile/map/WmtsCapabilities.d.ts +3 -1
  121. package/lib/esm/tile/map/WmtsCapabilities.d.ts.map +1 -1
  122. package/lib/esm/tile/map/WmtsCapabilities.js +11 -2
  123. package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
  124. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  125. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  126. package/package.json +18 -18
package/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Change Log - @itwin/core-frontend
2
2
 
3
- This log was last generated on Mon, 20 Nov 2023 16:16:07 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 30 Nov 2023 17:07:27 GMT and should not be manually modified.
4
4
 
5
5
  ## 4.2.4
6
6
  Mon, 20 Nov 2023 16:14:45 GMT
@@ -201,6 +201,11 @@ Mon, 22 May 2023 15:34:14 GMT
201
201
  - add physics-based Atmospheric scattering shader
202
202
  - Localize tooltips for view clip decorations.
203
203
 
204
+ ## 3.7.17
205
+ Mon, 20 Nov 2023 18:24:23 GMT
206
+
207
+ _Version update only_
208
+
204
209
  ## 3.7.16
205
210
  Mon, 16 Oct 2023 12:49:07 GMT
206
211
 
@@ -200,6 +200,7 @@ const extensionExports = {
200
200
  ThematicDisplayMode: core_common_1.ThematicDisplayMode,
201
201
  ThematicGradientColorScheme: core_common_1.ThematicGradientColorScheme,
202
202
  ThematicGradientMode: core_common_1.ThematicGradientMode,
203
+ ThematicGradientTransparencyMode: core_common_1.ThematicGradientTransparencyMode,
203
204
  Tile: core_frontend_1.Tile,
204
205
  TileAdmin: core_frontend_1.TileAdmin,
205
206
  TileBoundingBoxes: core_frontend_1.TileBoundingBoxes,
@@ -1 +1 @@
1
- {"version":3,"file":"ExtensionRuntime.js","sourceRoot":"","sources":["../../../src/extension/ExtensionRuntime.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 Extensions\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\n/* eslint-disable @itwin/no-internal-barrel-imports */\r\n/* eslint-disable sort-imports */\r\n\r\nimport { ExtensionHost } from \"./ExtensionHost\";\r\n\r\nconst globalSymbol = Symbol.for(\"itwin.core.frontend.globals\");\r\nif ((globalThis as any)[globalSymbol])\r\n throw new Error(\"Multiple @itwin/core-frontend imports detected!\");\r\n\r\n// BEGIN GENERATED CODE\r\nimport {\r\n // @public enum(s) from @itwin/core-frontend\r\n ACSDisplayOptions,\r\n ACSType,\r\n ActivityMessageEndReason,\r\n BeButton,\r\n BeModifierKeys,\r\n ClipEventType,\r\n ContextRotationId,\r\n CoordSource,\r\n CoordSystem,\r\n CoordinateLockOverrides,\r\n EventHandled,\r\n FlashMode,\r\n FrontendLoggerCategory,\r\n GraphicType,\r\n HitDetailType,\r\n HitGeomType,\r\n HitParentGeomType,\r\n HitPriority,\r\n HitSource,\r\n InputSource,\r\n KeyinParseError,\r\n LocateAction,\r\n LocateFilterStatus,\r\n ManipulatorToolEvent,\r\n MessageBoxIconType,\r\n MessageBoxType,\r\n MessageBoxValue,\r\n OutputMessageAlert,\r\n OutputMessagePriority,\r\n OutputMessageType,\r\n ParseAndRunResult,\r\n SelectionMethod,\r\n SelectionMode,\r\n SelectionProcessing,\r\n SelectionSetEventType,\r\n SnapHeat,\r\n SnapMode,\r\n SnapStatus,\r\n StandardViewId,\r\n StartOrResume,\r\n TileBoundingBoxes,\r\n TileGraphicType,\r\n TileLoadPriority,\r\n TileLoadStatus,\r\n TileTreeLoadStatus,\r\n TileVisibility,\r\n ToolAssistanceImage,\r\n ToolAssistanceInputMethod,\r\n UniformType,\r\n VaryingType,\r\n ViewStatus,\r\n // @public real(s) from @itwin/core-frontend\r\n AccuDrawHintBuilder,\r\n AccuSnap,\r\n ActivityMessageDetails,\r\n AuxCoordSystem2dState,\r\n AuxCoordSystem3dState,\r\n AuxCoordSystemSpatialState,\r\n AuxCoordSystemState,\r\n BeButtonEvent,\r\n BeButtonState,\r\n BeTouchEvent,\r\n BeWheelEvent,\r\n BingElevationProvider,\r\n BingLocationProvider,\r\n CategorySelectorState,\r\n ChangeFlags,\r\n Cluster,\r\n ContextRealityModelState,\r\n DecorateContext,\r\n Decorations,\r\n DisclosedTileTreeSet,\r\n DisplayStyle2dState,\r\n DisplayStyle3dState,\r\n DisplayStyleState,\r\n DrawingModelState,\r\n DrawingViewState,\r\n EditManipulator,\r\n ElementLocateManager,\r\n ElementPicker,\r\n ElementState,\r\n EmphasizeElements,\r\n EntityState,\r\n EventController,\r\n FeatureSymbology,\r\n FlashSettings,\r\n FrustumAnimator,\r\n GeometricModel2dState,\r\n GeometricModel3dState,\r\n GeometricModelState,\r\n GlobeAnimator,\r\n GraphicBranch,\r\n GraphicBuilder,\r\n HiliteSet,\r\n HitDetail,\r\n HitList,\r\n IModelConnection,\r\n IconSprites,\r\n InputCollector,\r\n InteractiveTool,\r\n IntersectDetail,\r\n LocateOptions,\r\n LocateResponse,\r\n MarginPercent,\r\n Marker,\r\n MarkerSet,\r\n ModelSelectorState,\r\n ModelState,\r\n NotificationHandler,\r\n NotificationManager,\r\n NotifyMessageDetails,\r\n OffScreenViewport,\r\n OrthographicViewState,\r\n PerModelCategoryVisibility,\r\n PhysicalModelState,\r\n Pixel,\r\n PrimitiveTool,\r\n RenderClipVolume,\r\n RenderContext,\r\n RenderGraphic,\r\n RenderGraphicOwner,\r\n RenderSystem,\r\n Scene,\r\n ScreenViewport,\r\n SectionDrawingModelState,\r\n SelectionSet,\r\n SheetModelState,\r\n SheetViewState,\r\n SnapDetail,\r\n SpatialLocationModelState,\r\n SpatialModelState,\r\n SpatialViewState,\r\n Sprite,\r\n SpriteLocation,\r\n TentativePoint,\r\n Tile,\r\n TileAdmin,\r\n TileDrawArgs,\r\n TileRequest,\r\n TileRequestChannel,\r\n TileRequestChannelStatistics,\r\n TileRequestChannels,\r\n TileTree,\r\n TileTreeReference,\r\n TileUsageMarker,\r\n Tiles,\r\n Tool,\r\n ToolAdmin,\r\n ToolAssistance,\r\n ToolSettings,\r\n TwoWayViewportFrustumSync,\r\n TwoWayViewportSync,\r\n ViewClipClearTool,\r\n ViewClipDecoration,\r\n ViewClipDecorationProvider,\r\n ViewClipTool,\r\n ViewCreator2d,\r\n ViewCreator3d,\r\n ViewManager,\r\n ViewManip,\r\n ViewPose,\r\n ViewPose2d,\r\n ViewPose3d,\r\n ViewRect,\r\n ViewState,\r\n ViewState2d,\r\n ViewState3d,\r\n ViewTool,\r\n ViewingSpace,\r\n Viewport,\r\n canvasToImageBuffer,\r\n canvasToResizedCanvasWithBars,\r\n connectViewportFrusta,\r\n connectViewportViews,\r\n connectViewports,\r\n extractImageSourceDimensions,\r\n getCompressedJpegFromCanvas,\r\n getImageSourceFormatForMimeType,\r\n getImageSourceMimeType,\r\n imageBufferToBase64EncodedPng,\r\n imageBufferToCanvas,\r\n imageBufferToPngDataUrl,\r\n imageElementFromImageSource,\r\n imageElementFromUrl,\r\n queryTerrainElevationOffset,\r\n readElementGraphics,\r\n readGltfGraphics,\r\n synchronizeViewportFrusta,\r\n synchronizeViewportViews,\r\n} from \"../core-frontend\";\r\n\r\nimport {\r\n // @public enum(s) from @itwin/core-common\r\n BackgroundFill,\r\n BackgroundMapType,\r\n BatchType,\r\n BisCodeSpec,\r\n BriefcaseIdValue,\r\n ChangeOpCode,\r\n ChangedValueState,\r\n ChangesetType,\r\n CommonLoggerCategory,\r\n ECSqlSystemProperty,\r\n ECSqlValueType,\r\n ElementGeometryOpcode,\r\n FeatureOverrideType,\r\n FillDisplay,\r\n FillFlags,\r\n FontType,\r\n GeoCoordStatus,\r\n GeometryClass,\r\n GeometryStreamFlags,\r\n GeometrySummaryVerbosity,\r\n GlobeMode,\r\n GridOrientationType,\r\n HSVConstants,\r\n ImageBufferFormat,\r\n ImageSourceFormat,\r\n LinePixels,\r\n MassPropertiesOperation,\r\n MonochromeMode,\r\n Npc,\r\n PlanarClipMaskMode,\r\n PlanarClipMaskPriority,\r\n QueryRowFormat,\r\n Rank,\r\n RenderMode,\r\n SectionType,\r\n SkyBoxImageType,\r\n SpatialClassifierInsideDisplay,\r\n SpatialClassifierOutsideDisplay,\r\n SyncMode,\r\n TerrainHeightOriginMode,\r\n TextureMapUnits,\r\n ThematicDisplayMode,\r\n ThematicGradientColorScheme,\r\n ThematicGradientMode,\r\n TxnAction,\r\n TypeOfChange,\r\n // @public real(s) from @itwin/core-common\r\n ClipIntersectionStyle,\r\n ColorByName,\r\n ColorDef,\r\n FrustumPlanes,\r\n QParams2d,\r\n QParams3d,\r\n QPoint2d,\r\n QPoint2dBuffer,\r\n QPoint2dBufferBuilder,\r\n QPoint2dList,\r\n QPoint3d,\r\n QPoint3dBuffer,\r\n QPoint3dBufferBuilder,\r\n QPoint3dList,\r\n Quantization,\r\n} from \"@itwin/core-common\";\r\n\r\nconst extensionExports = {\r\n ACSDisplayOptions,\r\n ACSType,\r\n AccuDrawHintBuilder,\r\n AccuSnap,\r\n ActivityMessageDetails,\r\n ActivityMessageEndReason,\r\n AuxCoordSystem2dState,\r\n AuxCoordSystem3dState,\r\n AuxCoordSystemSpatialState,\r\n AuxCoordSystemState,\r\n BackgroundFill,\r\n BackgroundMapType,\r\n BatchType,\r\n BeButton,\r\n BeButtonEvent,\r\n BeButtonState,\r\n BeModifierKeys,\r\n BeTouchEvent,\r\n BeWheelEvent,\r\n BingElevationProvider,\r\n BingLocationProvider,\r\n BisCodeSpec,\r\n BriefcaseIdValue,\r\n CategorySelectorState,\r\n ChangeFlags,\r\n ChangeOpCode,\r\n ChangedValueState,\r\n ChangesetType,\r\n ClipEventType,\r\n ClipIntersectionStyle,\r\n Cluster,\r\n ColorByName,\r\n ColorDef,\r\n CommonLoggerCategory,\r\n ContextRealityModelState,\r\n ContextRotationId,\r\n CoordSource,\r\n CoordSystem,\r\n CoordinateLockOverrides,\r\n DecorateContext,\r\n Decorations,\r\n DisclosedTileTreeSet,\r\n DisplayStyle2dState,\r\n DisplayStyle3dState,\r\n DisplayStyleState,\r\n DrawingModelState,\r\n DrawingViewState,\r\n ECSqlSystemProperty,\r\n ECSqlValueType,\r\n EditManipulator,\r\n ElementGeometryOpcode,\r\n ElementLocateManager,\r\n ElementPicker,\r\n ElementState,\r\n EmphasizeElements,\r\n EntityState,\r\n EventController,\r\n EventHandled,\r\n FeatureOverrideType,\r\n FeatureSymbology,\r\n FillDisplay,\r\n FillFlags,\r\n FlashMode,\r\n FlashSettings,\r\n FontType,\r\n FrontendLoggerCategory,\r\n FrustumAnimator,\r\n FrustumPlanes,\r\n GeoCoordStatus,\r\n GeometricModel2dState,\r\n GeometricModel3dState,\r\n GeometricModelState,\r\n GeometryClass,\r\n GeometryStreamFlags,\r\n GeometrySummaryVerbosity,\r\n GlobeAnimator,\r\n GlobeMode,\r\n GraphicBranch,\r\n GraphicBuilder,\r\n GraphicType,\r\n GridOrientationType,\r\n HSVConstants,\r\n HiliteSet,\r\n HitDetail,\r\n HitDetailType,\r\n HitGeomType,\r\n HitList,\r\n HitParentGeomType,\r\n HitPriority,\r\n HitSource,\r\n IModelConnection,\r\n IconSprites,\r\n ImageBufferFormat,\r\n ImageSourceFormat,\r\n InputCollector,\r\n InputSource,\r\n InteractiveTool,\r\n IntersectDetail,\r\n KeyinParseError,\r\n LinePixels,\r\n LocateAction,\r\n LocateFilterStatus,\r\n LocateOptions,\r\n LocateResponse,\r\n ManipulatorToolEvent,\r\n MarginPercent,\r\n Marker,\r\n MarkerSet,\r\n MassPropertiesOperation,\r\n MessageBoxIconType,\r\n MessageBoxType,\r\n MessageBoxValue,\r\n ModelSelectorState,\r\n ModelState,\r\n MonochromeMode,\r\n NotificationHandler,\r\n NotificationManager,\r\n NotifyMessageDetails,\r\n Npc,\r\n OffScreenViewport,\r\n OrthographicViewState,\r\n OutputMessageAlert,\r\n OutputMessagePriority,\r\n OutputMessageType,\r\n ParseAndRunResult,\r\n PerModelCategoryVisibility,\r\n PhysicalModelState,\r\n Pixel,\r\n PlanarClipMaskMode,\r\n PlanarClipMaskPriority,\r\n PrimitiveTool,\r\n QParams2d,\r\n QParams3d,\r\n QPoint2d,\r\n QPoint2dBuffer,\r\n QPoint2dBufferBuilder,\r\n QPoint2dList,\r\n QPoint3d,\r\n QPoint3dBuffer,\r\n QPoint3dBufferBuilder,\r\n QPoint3dList,\r\n Quantization,\r\n QueryRowFormat,\r\n Rank,\r\n RenderClipVolume,\r\n RenderContext,\r\n RenderGraphic,\r\n RenderGraphicOwner,\r\n RenderMode,\r\n RenderSystem,\r\n Scene,\r\n ScreenViewport,\r\n SectionDrawingModelState,\r\n SectionType,\r\n SelectionMethod,\r\n SelectionMode,\r\n SelectionProcessing,\r\n SelectionSet,\r\n SelectionSetEventType,\r\n SheetModelState,\r\n SheetViewState,\r\n SkyBoxImageType,\r\n SnapDetail,\r\n SnapHeat,\r\n SnapMode,\r\n SnapStatus,\r\n SpatialClassifierInsideDisplay,\r\n SpatialClassifierOutsideDisplay,\r\n SpatialLocationModelState,\r\n SpatialModelState,\r\n SpatialViewState,\r\n Sprite,\r\n SpriteLocation,\r\n StandardViewId,\r\n StartOrResume,\r\n SyncMode,\r\n TentativePoint,\r\n TerrainHeightOriginMode,\r\n TextureMapUnits,\r\n ThematicDisplayMode,\r\n ThematicGradientColorScheme,\r\n ThematicGradientMode,\r\n Tile,\r\n TileAdmin,\r\n TileBoundingBoxes,\r\n TileDrawArgs,\r\n TileGraphicType,\r\n TileLoadPriority,\r\n TileLoadStatus,\r\n TileRequest,\r\n TileRequestChannel,\r\n TileRequestChannelStatistics,\r\n TileRequestChannels,\r\n TileTree,\r\n TileTreeLoadStatus,\r\n TileTreeReference,\r\n TileUsageMarker,\r\n TileVisibility,\r\n Tiles,\r\n Tool,\r\n ToolAdmin,\r\n ToolAssistance,\r\n ToolAssistanceImage,\r\n ToolAssistanceInputMethod,\r\n ToolSettings,\r\n TwoWayViewportFrustumSync,\r\n TwoWayViewportSync,\r\n TxnAction,\r\n TypeOfChange,\r\n UniformType,\r\n VaryingType,\r\n ViewClipClearTool,\r\n ViewClipDecoration,\r\n ViewClipDecorationProvider,\r\n ViewClipTool,\r\n ViewCreator2d,\r\n ViewCreator3d,\r\n ViewManager,\r\n ViewManip,\r\n ViewPose,\r\n ViewPose2d,\r\n ViewPose3d,\r\n ViewRect,\r\n ViewState,\r\n ViewState2d,\r\n ViewState3d,\r\n ViewStatus,\r\n ViewTool,\r\n ViewingSpace,\r\n Viewport,\r\n canvasToImageBuffer,\r\n canvasToResizedCanvasWithBars,\r\n connectViewportFrusta,\r\n connectViewportViews,\r\n connectViewports,\r\n extractImageSourceDimensions,\r\n getCompressedJpegFromCanvas,\r\n getImageSourceFormatForMimeType,\r\n getImageSourceMimeType,\r\n imageBufferToBase64EncodedPng,\r\n imageBufferToCanvas,\r\n imageBufferToPngDataUrl,\r\n imageElementFromImageSource,\r\n imageElementFromUrl,\r\n queryTerrainElevationOffset,\r\n readElementGraphics,\r\n readGltfGraphics,\r\n synchronizeViewportFrusta,\r\n synchronizeViewportViews,\r\n};\r\n\r\n// END GENERATED CODE\r\n\r\nconst getExtensionApi = (_id: string) => {\r\n return {\r\n exports: {\r\n // exceptions\r\n ExtensionHost,\r\n // automated\r\n ...extensionExports,\r\n },\r\n };\r\n};\r\n\r\n(globalThis as any)[globalSymbol] = {\r\n getExtensionApi,\r\n};\r\n"]}
1
+ {"version":3,"file":"ExtensionRuntime.js","sourceRoot":"","sources":["../../../src/extension/ExtensionRuntime.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 Extensions\r\n */\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\n/* eslint-disable @itwin/no-internal-barrel-imports */\r\n/* eslint-disable sort-imports */\r\n\r\nimport { ExtensionHost } from \"./ExtensionHost\";\r\n\r\nconst globalSymbol = Symbol.for(\"itwin.core.frontend.globals\");\r\nif ((globalThis as any)[globalSymbol])\r\n throw new Error(\"Multiple @itwin/core-frontend imports detected!\");\r\n\r\n// BEGIN GENERATED CODE\r\nimport {\r\n // @public enum(s) from @itwin/core-frontend\r\n ACSDisplayOptions,\r\n ACSType,\r\n ActivityMessageEndReason,\r\n BeButton,\r\n BeModifierKeys,\r\n ClipEventType,\r\n ContextRotationId,\r\n CoordSource,\r\n CoordSystem,\r\n CoordinateLockOverrides,\r\n EventHandled,\r\n FlashMode,\r\n FrontendLoggerCategory,\r\n GraphicType,\r\n HitDetailType,\r\n HitGeomType,\r\n HitParentGeomType,\r\n HitPriority,\r\n HitSource,\r\n InputSource,\r\n KeyinParseError,\r\n LocateAction,\r\n LocateFilterStatus,\r\n ManipulatorToolEvent,\r\n MessageBoxIconType,\r\n MessageBoxType,\r\n MessageBoxValue,\r\n OutputMessageAlert,\r\n OutputMessagePriority,\r\n OutputMessageType,\r\n ParseAndRunResult,\r\n SelectionMethod,\r\n SelectionMode,\r\n SelectionProcessing,\r\n SelectionSetEventType,\r\n SnapHeat,\r\n SnapMode,\r\n SnapStatus,\r\n StandardViewId,\r\n StartOrResume,\r\n TileBoundingBoxes,\r\n TileGraphicType,\r\n TileLoadPriority,\r\n TileLoadStatus,\r\n TileTreeLoadStatus,\r\n TileVisibility,\r\n ToolAssistanceImage,\r\n ToolAssistanceInputMethod,\r\n UniformType,\r\n VaryingType,\r\n ViewStatus,\r\n // @public real(s) from @itwin/core-frontend\r\n AccuDrawHintBuilder,\r\n AccuSnap,\r\n ActivityMessageDetails,\r\n AuxCoordSystem2dState,\r\n AuxCoordSystem3dState,\r\n AuxCoordSystemSpatialState,\r\n AuxCoordSystemState,\r\n BeButtonEvent,\r\n BeButtonState,\r\n BeTouchEvent,\r\n BeWheelEvent,\r\n BingElevationProvider,\r\n BingLocationProvider,\r\n CategorySelectorState,\r\n ChangeFlags,\r\n Cluster,\r\n ContextRealityModelState,\r\n DecorateContext,\r\n Decorations,\r\n DisclosedTileTreeSet,\r\n DisplayStyle2dState,\r\n DisplayStyle3dState,\r\n DisplayStyleState,\r\n DrawingModelState,\r\n DrawingViewState,\r\n EditManipulator,\r\n ElementLocateManager,\r\n ElementPicker,\r\n ElementState,\r\n EmphasizeElements,\r\n EntityState,\r\n EventController,\r\n FeatureSymbology,\r\n FlashSettings,\r\n FrustumAnimator,\r\n GeometricModel2dState,\r\n GeometricModel3dState,\r\n GeometricModelState,\r\n GlobeAnimator,\r\n GraphicBranch,\r\n GraphicBuilder,\r\n HiliteSet,\r\n HitDetail,\r\n HitList,\r\n IModelConnection,\r\n IconSprites,\r\n InputCollector,\r\n InteractiveTool,\r\n IntersectDetail,\r\n LocateOptions,\r\n LocateResponse,\r\n MarginPercent,\r\n Marker,\r\n MarkerSet,\r\n ModelSelectorState,\r\n ModelState,\r\n NotificationHandler,\r\n NotificationManager,\r\n NotifyMessageDetails,\r\n OffScreenViewport,\r\n OrthographicViewState,\r\n PerModelCategoryVisibility,\r\n PhysicalModelState,\r\n Pixel,\r\n PrimitiveTool,\r\n RenderClipVolume,\r\n RenderContext,\r\n RenderGraphic,\r\n RenderGraphicOwner,\r\n RenderSystem,\r\n Scene,\r\n ScreenViewport,\r\n SectionDrawingModelState,\r\n SelectionSet,\r\n SheetModelState,\r\n SheetViewState,\r\n SnapDetail,\r\n SpatialLocationModelState,\r\n SpatialModelState,\r\n SpatialViewState,\r\n Sprite,\r\n SpriteLocation,\r\n TentativePoint,\r\n Tile,\r\n TileAdmin,\r\n TileDrawArgs,\r\n TileRequest,\r\n TileRequestChannel,\r\n TileRequestChannelStatistics,\r\n TileRequestChannels,\r\n TileTree,\r\n TileTreeReference,\r\n TileUsageMarker,\r\n Tiles,\r\n Tool,\r\n ToolAdmin,\r\n ToolAssistance,\r\n ToolSettings,\r\n TwoWayViewportFrustumSync,\r\n TwoWayViewportSync,\r\n ViewClipClearTool,\r\n ViewClipDecoration,\r\n ViewClipDecorationProvider,\r\n ViewClipTool,\r\n ViewCreator2d,\r\n ViewCreator3d,\r\n ViewManager,\r\n ViewManip,\r\n ViewPose,\r\n ViewPose2d,\r\n ViewPose3d,\r\n ViewRect,\r\n ViewState,\r\n ViewState2d,\r\n ViewState3d,\r\n ViewTool,\r\n ViewingSpace,\r\n Viewport,\r\n canvasToImageBuffer,\r\n canvasToResizedCanvasWithBars,\r\n connectViewportFrusta,\r\n connectViewportViews,\r\n connectViewports,\r\n extractImageSourceDimensions,\r\n getCompressedJpegFromCanvas,\r\n getImageSourceFormatForMimeType,\r\n getImageSourceMimeType,\r\n imageBufferToBase64EncodedPng,\r\n imageBufferToCanvas,\r\n imageBufferToPngDataUrl,\r\n imageElementFromImageSource,\r\n imageElementFromUrl,\r\n queryTerrainElevationOffset,\r\n readElementGraphics,\r\n readGltfGraphics,\r\n synchronizeViewportFrusta,\r\n synchronizeViewportViews,\r\n} from \"../core-frontend\";\r\n\r\nimport {\r\n // @public enum(s) from @itwin/core-common\r\n BackgroundFill,\r\n BackgroundMapType,\r\n BatchType,\r\n BisCodeSpec,\r\n BriefcaseIdValue,\r\n ChangeOpCode,\r\n ChangedValueState,\r\n ChangesetType,\r\n CommonLoggerCategory,\r\n ECSqlSystemProperty,\r\n ECSqlValueType,\r\n ElementGeometryOpcode,\r\n FeatureOverrideType,\r\n FillDisplay,\r\n FillFlags,\r\n FontType,\r\n GeoCoordStatus,\r\n GeometryClass,\r\n GeometryStreamFlags,\r\n GeometrySummaryVerbosity,\r\n GlobeMode,\r\n GridOrientationType,\r\n HSVConstants,\r\n ImageBufferFormat,\r\n ImageSourceFormat,\r\n LinePixels,\r\n MassPropertiesOperation,\r\n MonochromeMode,\r\n Npc,\r\n PlanarClipMaskMode,\r\n PlanarClipMaskPriority,\r\n QueryRowFormat,\r\n Rank,\r\n RenderMode,\r\n SectionType,\r\n SkyBoxImageType,\r\n SpatialClassifierInsideDisplay,\r\n SpatialClassifierOutsideDisplay,\r\n SyncMode,\r\n TerrainHeightOriginMode,\r\n TextureMapUnits,\r\n ThematicDisplayMode,\r\n ThematicGradientColorScheme,\r\n ThematicGradientMode,\r\n ThematicGradientTransparencyMode,\r\n TxnAction,\r\n TypeOfChange,\r\n // @public real(s) from @itwin/core-common\r\n ClipIntersectionStyle,\r\n ColorByName,\r\n ColorDef,\r\n FrustumPlanes,\r\n QParams2d,\r\n QParams3d,\r\n QPoint2d,\r\n QPoint2dBuffer,\r\n QPoint2dBufferBuilder,\r\n QPoint2dList,\r\n QPoint3d,\r\n QPoint3dBuffer,\r\n QPoint3dBufferBuilder,\r\n QPoint3dList,\r\n Quantization,\r\n} from \"@itwin/core-common\";\r\n\r\nconst extensionExports = {\r\n ACSDisplayOptions,\r\n ACSType,\r\n AccuDrawHintBuilder,\r\n AccuSnap,\r\n ActivityMessageDetails,\r\n ActivityMessageEndReason,\r\n AuxCoordSystem2dState,\r\n AuxCoordSystem3dState,\r\n AuxCoordSystemSpatialState,\r\n AuxCoordSystemState,\r\n BackgroundFill,\r\n BackgroundMapType,\r\n BatchType,\r\n BeButton,\r\n BeButtonEvent,\r\n BeButtonState,\r\n BeModifierKeys,\r\n BeTouchEvent,\r\n BeWheelEvent,\r\n BingElevationProvider,\r\n BingLocationProvider,\r\n BisCodeSpec,\r\n BriefcaseIdValue,\r\n CategorySelectorState,\r\n ChangeFlags,\r\n ChangeOpCode,\r\n ChangedValueState,\r\n ChangesetType,\r\n ClipEventType,\r\n ClipIntersectionStyle,\r\n Cluster,\r\n ColorByName,\r\n ColorDef,\r\n CommonLoggerCategory,\r\n ContextRealityModelState,\r\n ContextRotationId,\r\n CoordSource,\r\n CoordSystem,\r\n CoordinateLockOverrides,\r\n DecorateContext,\r\n Decorations,\r\n DisclosedTileTreeSet,\r\n DisplayStyle2dState,\r\n DisplayStyle3dState,\r\n DisplayStyleState,\r\n DrawingModelState,\r\n DrawingViewState,\r\n ECSqlSystemProperty,\r\n ECSqlValueType,\r\n EditManipulator,\r\n ElementGeometryOpcode,\r\n ElementLocateManager,\r\n ElementPicker,\r\n ElementState,\r\n EmphasizeElements,\r\n EntityState,\r\n EventController,\r\n EventHandled,\r\n FeatureOverrideType,\r\n FeatureSymbology,\r\n FillDisplay,\r\n FillFlags,\r\n FlashMode,\r\n FlashSettings,\r\n FontType,\r\n FrontendLoggerCategory,\r\n FrustumAnimator,\r\n FrustumPlanes,\r\n GeoCoordStatus,\r\n GeometricModel2dState,\r\n GeometricModel3dState,\r\n GeometricModelState,\r\n GeometryClass,\r\n GeometryStreamFlags,\r\n GeometrySummaryVerbosity,\r\n GlobeAnimator,\r\n GlobeMode,\r\n GraphicBranch,\r\n GraphicBuilder,\r\n GraphicType,\r\n GridOrientationType,\r\n HSVConstants,\r\n HiliteSet,\r\n HitDetail,\r\n HitDetailType,\r\n HitGeomType,\r\n HitList,\r\n HitParentGeomType,\r\n HitPriority,\r\n HitSource,\r\n IModelConnection,\r\n IconSprites,\r\n ImageBufferFormat,\r\n ImageSourceFormat,\r\n InputCollector,\r\n InputSource,\r\n InteractiveTool,\r\n IntersectDetail,\r\n KeyinParseError,\r\n LinePixels,\r\n LocateAction,\r\n LocateFilterStatus,\r\n LocateOptions,\r\n LocateResponse,\r\n ManipulatorToolEvent,\r\n MarginPercent,\r\n Marker,\r\n MarkerSet,\r\n MassPropertiesOperation,\r\n MessageBoxIconType,\r\n MessageBoxType,\r\n MessageBoxValue,\r\n ModelSelectorState,\r\n ModelState,\r\n MonochromeMode,\r\n NotificationHandler,\r\n NotificationManager,\r\n NotifyMessageDetails,\r\n Npc,\r\n OffScreenViewport,\r\n OrthographicViewState,\r\n OutputMessageAlert,\r\n OutputMessagePriority,\r\n OutputMessageType,\r\n ParseAndRunResult,\r\n PerModelCategoryVisibility,\r\n PhysicalModelState,\r\n Pixel,\r\n PlanarClipMaskMode,\r\n PlanarClipMaskPriority,\r\n PrimitiveTool,\r\n QParams2d,\r\n QParams3d,\r\n QPoint2d,\r\n QPoint2dBuffer,\r\n QPoint2dBufferBuilder,\r\n QPoint2dList,\r\n QPoint3d,\r\n QPoint3dBuffer,\r\n QPoint3dBufferBuilder,\r\n QPoint3dList,\r\n Quantization,\r\n QueryRowFormat,\r\n Rank,\r\n RenderClipVolume,\r\n RenderContext,\r\n RenderGraphic,\r\n RenderGraphicOwner,\r\n RenderMode,\r\n RenderSystem,\r\n Scene,\r\n ScreenViewport,\r\n SectionDrawingModelState,\r\n SectionType,\r\n SelectionMethod,\r\n SelectionMode,\r\n SelectionProcessing,\r\n SelectionSet,\r\n SelectionSetEventType,\r\n SheetModelState,\r\n SheetViewState,\r\n SkyBoxImageType,\r\n SnapDetail,\r\n SnapHeat,\r\n SnapMode,\r\n SnapStatus,\r\n SpatialClassifierInsideDisplay,\r\n SpatialClassifierOutsideDisplay,\r\n SpatialLocationModelState,\r\n SpatialModelState,\r\n SpatialViewState,\r\n Sprite,\r\n SpriteLocation,\r\n StandardViewId,\r\n StartOrResume,\r\n SyncMode,\r\n TentativePoint,\r\n TerrainHeightOriginMode,\r\n TextureMapUnits,\r\n ThematicDisplayMode,\r\n ThematicGradientColorScheme,\r\n ThematicGradientMode,\r\n ThematicGradientTransparencyMode,\r\n Tile,\r\n TileAdmin,\r\n TileBoundingBoxes,\r\n TileDrawArgs,\r\n TileGraphicType,\r\n TileLoadPriority,\r\n TileLoadStatus,\r\n TileRequest,\r\n TileRequestChannel,\r\n TileRequestChannelStatistics,\r\n TileRequestChannels,\r\n TileTree,\r\n TileTreeLoadStatus,\r\n TileTreeReference,\r\n TileUsageMarker,\r\n TileVisibility,\r\n Tiles,\r\n Tool,\r\n ToolAdmin,\r\n ToolAssistance,\r\n ToolAssistanceImage,\r\n ToolAssistanceInputMethod,\r\n ToolSettings,\r\n TwoWayViewportFrustumSync,\r\n TwoWayViewportSync,\r\n TxnAction,\r\n TypeOfChange,\r\n UniformType,\r\n VaryingType,\r\n ViewClipClearTool,\r\n ViewClipDecoration,\r\n ViewClipDecorationProvider,\r\n ViewClipTool,\r\n ViewCreator2d,\r\n ViewCreator3d,\r\n ViewManager,\r\n ViewManip,\r\n ViewPose,\r\n ViewPose2d,\r\n ViewPose3d,\r\n ViewRect,\r\n ViewState,\r\n ViewState2d,\r\n ViewState3d,\r\n ViewStatus,\r\n ViewTool,\r\n ViewingSpace,\r\n Viewport,\r\n canvasToImageBuffer,\r\n canvasToResizedCanvasWithBars,\r\n connectViewportFrusta,\r\n connectViewportViews,\r\n connectViewports,\r\n extractImageSourceDimensions,\r\n getCompressedJpegFromCanvas,\r\n getImageSourceFormatForMimeType,\r\n getImageSourceMimeType,\r\n imageBufferToBase64EncodedPng,\r\n imageBufferToCanvas,\r\n imageBufferToPngDataUrl,\r\n imageElementFromImageSource,\r\n imageElementFromUrl,\r\n queryTerrainElevationOffset,\r\n readElementGraphics,\r\n readGltfGraphics,\r\n synchronizeViewportFrusta,\r\n synchronizeViewportViews,\r\n};\r\n\r\n// END GENERATED CODE\r\n\r\nconst getExtensionApi = (_id: string) => {\r\n return {\r\n exports: {\r\n // exceptions\r\n ExtensionHost,\r\n // automated\r\n ...extensionExports,\r\n },\r\n };\r\n};\r\n\r\n(globalThis as any)[globalSymbol] = {\r\n getExtensionApi,\r\n};\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SurfaceGeometry.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/SurfaceGeometry.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAA8C,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE3F,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAkC,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,WAAW,EAA+B,MAAM,eAAe,CAAC;AAE/E,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,gBAAgB;AAChB,wBAAgB,aAAa,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAEpD;AAMD,gBAAgB;AAChB,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IAExC,IAAW,UAAU,qBAA4B;WAEnC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,GAAG,eAAe,GAAG,SAAS;IAKzF,IAAW,UAAU,IAAI,OAAO,CAG/B;IAEM,OAAO;IAKP,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAI9D,IAAW,KAAK,YAAmG;IACnH,IAAW,cAAc,YAAwG;IACjI,IAAW,UAAU,YAAgE;IACrF,IAAW,YAAY,YAAgF;IACvG,IAAW,OAAO,YAAgC;IAClD,IAAoB,uBAAuB,YAA2B;IACtE,IAAW,aAAa,YAAuE;IAC/F,IAAW,YAAY,YAAgE;IACvF,IAAoB,uBAAuB,YAE1C;IAED,IAAoB,kBAAkB,YAKrC;IAED,IAAoB,SAAS,SAAmB;IAChD,IAAoB,MAAM,cAAwB;IAClD,IAAoB,YAAY,cAAwB;IAExD,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,wBAAwB,CAAC,EAAE,gBAAgB,GAAG,IAAI;IAmBxE,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAK/D,IAAW,WAAW,IAAI,WAAW,CAAgC;IACrE,IAAoB,YAAY,YAAyB;IACzD,IAAoB,gBAAgB,YAAyC;IAC7E,IAAW,WAAW,IAAI,WAAW,CASpC;IAEe,QAAQ,CAAC,MAAM,EAAE,MAAM;IAOvB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAwD7C,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAmBnD,IAAoB,YAAY,IAAI,YAAY,GAAG,SAAS,CAAmC;IAExF,UAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO;IAIhD,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO;IAIlD,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAwDhF,OAAO;IASP,OAAO,CAAC,YAAY;IA2BpB,OAAO,CAAC,cAAc;CAavB"}
1
+ {"version":3,"file":"SurfaceGeometry.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/SurfaceGeometry.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAgF,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE7H,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAkC,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,WAAW,EAA+B,MAAM,eAAe,CAAC;AAE/E,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,gBAAgB;AAChB,wBAAgB,aAAa,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAEpD;AAMD,gBAAgB;AAChB,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IAExC,IAAW,UAAU,qBAA4B;WAEnC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,GAAG,eAAe,GAAG,SAAS;IAKzF,IAAW,UAAU,IAAI,OAAO,CAG/B;IAEM,OAAO;IAKP,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,GAAG,IAAI;IAI9D,IAAW,KAAK,YAAmG;IACnH,IAAW,cAAc,YAAwG;IACjI,IAAW,UAAU,YAAgE;IACrF,IAAW,YAAY,YAAgF;IACvG,IAAW,OAAO,YAAgC;IAClD,IAAoB,uBAAuB,YAA2B;IACtE,IAAW,aAAa,YAAuE;IAC/F,IAAW,YAAY,YAAgE;IACvF,IAAoB,uBAAuB,YAE1C;IAED,IAAoB,kBAAkB,YAKrC;IAED,IAAoB,SAAS,SAAmB;IAChD,IAAoB,MAAM,cAAwB;IAClD,IAAoB,YAAY,cAAwB;IAExD,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,wBAAwB,CAAC,EAAE,gBAAgB,GAAG,IAAI;IAmBxE,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAK/D,IAAW,WAAW,IAAI,WAAW,CAAgC;IACrE,IAAoB,YAAY,YAAyB;IACzD,IAAoB,gBAAgB,YAAyC;IAC7E,IAAW,WAAW,IAAI,WAAW,CASpC;IAEe,QAAQ,CAAC,MAAM,EAAE,MAAM;IAOvB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAoF7C,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAmBnD,IAAoB,YAAY,IAAI,YAAY,GAAG,SAAS,CAAmC;IAExF,UAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO;IAIhD,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO;IAIlD,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAwDhF,OAAO;IASP,OAAO,CAAC,YAAY;IA2BpB,OAAO,CAAC,cAAc;CAavB"}
@@ -108,7 +108,8 @@ class SurfaceGeometry extends MeshGeometry_1.MeshGeometry {
108
108
  return target.isReadPixelsInProgress ? opaquePass : "translucent";
109
109
  const vf = target.currentViewFlags;
110
110
  // When rendering thematic isolines, we need translucency because they have anti-aliasing.
111
- if (target.wantThematicDisplay && this.supportsThematicDisplay && target.uniforms.thematic.wantIsoLines)
111
+ const thematic = target.wantThematicDisplay && this.supportsThematicDisplay ? target.uniforms.thematic.thematicDisplay : undefined;
112
+ if (thematic && target.uniforms.thematic.wantIsoLines)
112
113
  return "translucent";
113
114
  // In wireframe, unless fill is explicitly enabled for planar region, surface does not draw
114
115
  if (core_common_1.RenderMode.Wireframe === vf.renderMode && !this.mesh.isTextureAlwaysDisplayed) {
@@ -120,6 +121,18 @@ class SurfaceGeometry extends MeshGeometry_1.MeshGeometry {
120
121
  // If transparency disabled by render mode or view flag, always draw opaque.
121
122
  if (!vf.transparency || core_common_1.RenderMode.SolidFill === vf.renderMode || core_common_1.RenderMode.HiddenLine === vf.renderMode)
122
123
  return opaquePass;
124
+ // A gradient texture applied by analysis style always fully determines the transparency of the surface.
125
+ if (this.hasScalarAnimation && undefined !== target.analysisTexture) {
126
+ (0, core_bentley_1.assert)(undefined !== target.analysisStyle?.thematic);
127
+ switch (target.analysisStyle.thematic.thematicSettings.textureTransparency) {
128
+ case core_common_1.TextureTransparency.Translucent:
129
+ return "translucent";
130
+ case core_common_1.TextureTransparency.Opaque:
131
+ return opaquePass;
132
+ case core_common_1.TextureTransparency.Mixed:
133
+ return `${opaquePass}-translucent`;
134
+ }
135
+ }
123
136
  // We have 3 sources of alpha: the material, the texture, and the color.
124
137
  // Base alpha comes from the material if it overrides it; otherwise from the color.
125
138
  // The texture's alpha is multiplied by the base alpha.
@@ -130,8 +143,21 @@ class SurfaceGeometry extends MeshGeometry_1.MeshGeometry {
130
143
  hasAlpha = mat.hasTranslucency;
131
144
  else
132
145
  hasAlpha = this.getColor(target).hasTranslucency;
146
+ // Thematic gradient can optionally multiply gradient alpha with surface alpha.
147
+ if (thematic && thematic.gradientSettings.transparencyMode === core_common_1.ThematicGradientTransparencyMode.MultiplySurfaceAndGradient) {
148
+ switch (thematic.gradientSettings.textureTransparency) {
149
+ case core_common_1.TextureTransparency.Opaque:
150
+ // This surface's alpha gets multiplied by 1 - gradient colors are all opaque.
151
+ return hasAlpha ? "translucent" : opaquePass;
152
+ case core_common_1.TextureTransparency.Translucent:
153
+ // This surface's alpha gets multiplied by < 1 - gradient colors are all translucent.
154
+ return "translucent";
155
+ case core_common_1.TextureTransparency.Mixed:
156
+ // The gradient contains a mix of translucent and opaque colors.
157
+ return hasAlpha ? "translucent" : `${opaquePass}-translucent`;
158
+ }
159
+ }
133
160
  if (!hasAlpha) {
134
- // ###TODO handle TextureTransparency.Mixed; remove Texture.hasTranslucency.
135
161
  const tex = this.wantTextures(target, true) ? this.texture : undefined;
136
162
  switch (tex?.transparency) {
137
163
  case core_common_1.TextureTransparency.Translucent:
@@ -1 +1 @@
1
- {"version":3,"file":"SurfaceGeometry.js","sourceRoot":"","sources":["../../../../src/render/webgl/SurfaceGeometry.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 WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { FillFlags, RenderMode, TextureTransparency, ViewFlags } from \"@itwin/core-common\";\r\nimport { SurfaceType } from \"../../common/render/primitives/SurfaceParams\";\r\nimport { VertexIndices } from \"../../common/render/primitives/VertexIndices\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { ShaderProgramParams } from \"./DrawCommand\";\r\nimport { GL } from \"./GL\";\r\nimport { BufferHandle, BufferParameters, BuffersContainer } from \"./AttributeBuffers\";\r\nimport { MaterialInfo } from \"./Material\";\r\nimport { Pass, RenderOrder, RenderPass, SurfaceBitIndex } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { MeshData } from \"./MeshData\";\r\nimport { MeshGeometry } from \"./MeshGeometry\";\r\n\r\n/** @internal */\r\nexport function wantMaterials(vf: ViewFlags): boolean {\r\n return vf.materials && RenderMode.SmoothShade === vf.renderMode;\r\n}\r\n\r\nfunction wantLighting(vf: ViewFlags) {\r\n return RenderMode.SmoothShade === vf.renderMode && vf.lighting;\r\n}\r\n\r\n/** @internal */\r\nexport class SurfaceGeometry extends MeshGeometry {\r\n private readonly _buffers: BuffersContainer;\r\n private readonly _indices: BufferHandle;\r\n\r\n public get lutBuffers() { return this._buffers; }\r\n\r\n public static create(mesh: MeshData, indices: VertexIndices): SurfaceGeometry | undefined {\r\n const indexBuffer = BufferHandle.createArrayBuffer(indices.data);\r\n return undefined !== indexBuffer ? new SurfaceGeometry(indexBuffer, indices.length, mesh) : undefined;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._buffers.isDisposed\r\n && this._indices.isDisposed;\r\n }\r\n\r\n public dispose() {\r\n dispose(this._buffers);\r\n dispose(this._indices);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n stats.addSurface(this._indices.bytesUsed);\r\n }\r\n\r\n public get isLit() { return SurfaceType.Lit === this.surfaceType || SurfaceType.TexturedLit === this.surfaceType; }\r\n public get isTexturedType() { return SurfaceType.Textured === this.surfaceType || SurfaceType.TexturedLit === this.surfaceType; }\r\n public get hasTexture() { return this.isTexturedType && undefined !== this.texture; }\r\n public get hasNormalMap() { return this.isLit && this.isTexturedType && undefined !== this.normalMap; }\r\n public get isGlyph() { return this.mesh.isGlyph; }\r\n public override get alwaysRenderTranslucent() { return this.isGlyph; }\r\n public get isTileSection() { return undefined !== this.texture && this.texture.isTileSection; }\r\n public get isClassifier() { return SurfaceType.VolumeClassifier === this.surfaceType; }\r\n public override get supportsThematicDisplay() {\r\n return !this.isGlyph;\r\n }\r\n\r\n public override get allowColorOverride() {\r\n // Text background color should not be overridden by feature symbology overrides - otherwise it becomes unreadable...\r\n // We don't actually know if we have text.\r\n // We do know that text background color uses blanking fill. So do ImageGraphics, so they're also going to forbid overriding their color.\r\n return FillFlags.Blanking !== (this.fillFlags & FillFlags.Blanking);\r\n }\r\n\r\n public override get asSurface() { return this; }\r\n public override get asEdge() { return undefined; }\r\n public override get asSilhouette() { return undefined; }\r\n\r\n protected _draw(numInstances: number, instanceBuffersContainer?: BuffersContainer): void {\r\n const system = System.instance;\r\n\r\n // If we can't write depth in the fragment shader, use polygonOffset to force blanking regions to draw behind.\r\n const offset = RenderOrder.BlankingRegion === this.renderOrder && !system.supportsLogZBuffer;\r\n if (offset) {\r\n system.context.enable(GL.POLYGON_OFFSET_FILL);\r\n system.context.polygonOffset(1.0, 1.0);\r\n }\r\n\r\n const bufs = instanceBuffersContainer !== undefined ? instanceBuffersContainer : this._buffers;\r\n bufs.bind();\r\n system.drawArrays(GL.PrimitiveType.Triangles, 0, this._numIndices, numInstances);\r\n bufs.unbind();\r\n\r\n if (offset)\r\n system.context.disable(GL.POLYGON_OFFSET_FILL);\r\n }\r\n\r\n public override wantMixMonochromeColor(target: Target): boolean {\r\n // Text relies on white-on-white reversal.\r\n return !this.isGlyph && (this.isLitSurface || this.wantTextures(target, this.hasTexture));\r\n }\r\n\r\n public get techniqueId(): TechniqueId { return TechniqueId.Surface; }\r\n public override get isLitSurface() { return this.isLit; }\r\n public override get hasBakedLighting() { return this.mesh.hasBakedLighting; }\r\n public get renderOrder(): RenderOrder {\r\n if (FillFlags.Behind === (this.fillFlags & FillFlags.Behind))\r\n return RenderOrder.BlankingRegion;\r\n\r\n let order = this.isLit ? RenderOrder.LitSurface : RenderOrder.UnlitSurface;\r\n if (this.isPlanar)\r\n order = order | RenderOrder.PlanarBit;\r\n\r\n return order;\r\n }\r\n\r\n public override getColor(target: Target) {\r\n if (FillFlags.Background === (this.fillFlags & FillFlags.Background))\r\n return target.uniforms.style.backgroundColorInfo;\r\n else\r\n return this.colorInfo;\r\n }\r\n\r\n public override getPass(target: Target): Pass {\r\n // Classifiers have a dedicated pass\r\n if (this.isClassifier)\r\n return \"classification\";\r\n\r\n let opaquePass: Pass = this.isPlanar ? \"opaque-planar\" : \"opaque\";\r\n\r\n // When reading pixels, glyphs are always opaque. Otherwise always transparent (for anti-aliasing).\r\n if (this.isGlyph)\r\n return target.isReadPixelsInProgress ? opaquePass : \"translucent\";\r\n\r\n const vf = target.currentViewFlags;\r\n\r\n // When rendering thematic isolines, we need translucency because they have anti-aliasing.\r\n if (target.wantThematicDisplay && this.supportsThematicDisplay && target.uniforms.thematic.wantIsoLines)\r\n return \"translucent\";\r\n\r\n // In wireframe, unless fill is explicitly enabled for planar region, surface does not draw\r\n if (RenderMode.Wireframe === vf.renderMode && !this.mesh.isTextureAlwaysDisplayed) {\r\n const fillFlags = this.fillFlags;\r\n const showFill = FillFlags.Always === (fillFlags & FillFlags.Always) || (vf.fill && FillFlags.ByView === (fillFlags & FillFlags.ByView));\r\n if (!showFill)\r\n return \"none\";\r\n }\r\n\r\n // If transparency disabled by render mode or view flag, always draw opaque.\r\n if (!vf.transparency || RenderMode.SolidFill === vf.renderMode || RenderMode.HiddenLine === vf.renderMode)\r\n return opaquePass;\r\n\r\n // We have 3 sources of alpha: the material, the texture, and the color.\r\n // Base alpha comes from the material if it overrides it; otherwise from the color.\r\n // The texture's alpha is multiplied by the base alpha.\r\n // So we must draw in the translucent pass if the texture has transparency OR the base alpha is less than 1.\r\n let hasAlpha = false;\r\n const mat = wantMaterials(vf) ? this.mesh.materialInfo : undefined;\r\n if (undefined !== mat && mat.overridesAlpha)\r\n hasAlpha = mat.hasTranslucency;\r\n else\r\n hasAlpha = this.getColor(target).hasTranslucency;\r\n\r\n if (!hasAlpha) {\r\n // ###TODO handle TextureTransparency.Mixed; remove Texture.hasTranslucency.\r\n const tex = this.wantTextures(target, true) ? this.texture : undefined;\r\n switch (tex?.transparency) {\r\n case TextureTransparency.Translucent:\r\n hasAlpha = true;\r\n break;\r\n case TextureTransparency.Mixed:\r\n opaquePass = `${opaquePass}-translucent`;\r\n break;\r\n }\r\n }\r\n\r\n return hasAlpha ? \"translucent\" : opaquePass;\r\n }\r\n\r\n protected _wantWoWReversal(target: Target): boolean {\r\n const fillFlags = this.fillFlags;\r\n if (FillFlags.None !== (fillFlags & FillFlags.Background))\r\n return false; // fill color explicitly from background\r\n\r\n if (FillFlags.None !== (fillFlags & FillFlags.Always))\r\n return true; // fill displayed even in wireframe\r\n\r\n const vf = target.currentViewFlags;\r\n if (RenderMode.Wireframe === vf.renderMode || vf.visibleEdges)\r\n return false; // never invert surfaces when edges are displayed\r\n\r\n if (this.isLit && wantLighting(vf))\r\n return false;\r\n\r\n // Don't invert white pixels of textures...\r\n return !this.wantTextures(target, this.hasTexture);\r\n }\r\n\r\n public override get materialInfo(): MaterialInfo | undefined { return this.mesh.materialInfo; }\r\n\r\n public useTexture(params: ShaderProgramParams): boolean {\r\n return this.wantTextures(params.target, this.hasTexture);\r\n }\r\n\r\n public useNormalMap(params: ShaderProgramParams): boolean {\r\n return this.wantNormalMaps(params.target, this.hasNormalMap);\r\n }\r\n\r\n public computeSurfaceFlags(params: ShaderProgramParams, flags: Int32Array): void {\r\n const target = params.target;\r\n const vf = target.currentViewFlags;\r\n\r\n const useMaterial = wantMaterials(vf);\r\n flags[SurfaceBitIndex.IgnoreMaterial] = useMaterial ? 0 : 1;\r\n flags[SurfaceBitIndex.HasMaterialAtlas] = useMaterial && this.hasMaterialAtlas ? 1 : 0;\r\n\r\n flags[SurfaceBitIndex.ApplyLighting] = 0;\r\n flags[SurfaceBitIndex.HasColorAndNormal] = 0;\r\n if (this.isLit) {\r\n flags[SurfaceBitIndex.HasNormals] = 1;\r\n if (wantLighting(vf))\r\n flags[SurfaceBitIndex.ApplyLighting] = 1;\r\n\r\n // Textured meshes store normal in place of color index.\r\n // Untextured lit meshes store normal where textured meshes would store UV coords.\r\n // Tell shader where to find normal.\r\n if (!this.isTexturedType) {\r\n flags[SurfaceBitIndex.HasColorAndNormal] = 1;\r\n }\r\n } else {\r\n flags[SurfaceBitIndex.HasNormals] = 0;\r\n }\r\n\r\n flags[SurfaceBitIndex.HasTexture] = this.useTexture(params) ? 1 : 0;\r\n flags[SurfaceBitIndex.HasNormalMap] = this.useNormalMap(params) ? 1 : 0;\r\n flags[SurfaceBitIndex.UseConstantLodTextureMapping] = this.mesh.textureUsesConstantLod ? 1 : 0;\r\n flags[SurfaceBitIndex.UseConstantLodNormalMapMapping] = this.mesh.normalMapUsesConstantLod ? 1 : 0;\r\n\r\n // The transparency threshold controls how transparent a surface must be to allow light to pass through; more opaque surfaces cast shadows.\r\n flags[SurfaceBitIndex.TransparencyThreshold] = params.target.isDrawingShadowMap ? 1 : 0;\r\n flags[SurfaceBitIndex.BackgroundFill] = 0;\r\n switch (params.renderPass) {\r\n // NB: We need this for opaque pass due to SolidFill (must compute transparency, discard below threshold, render opaque at or above threshold)\r\n case RenderPass.OpaqueLinear:\r\n case RenderPass.OpaquePlanar:\r\n case RenderPass.OpaqueGeneral:\r\n case RenderPass.Translucent:\r\n case RenderPass.WorldOverlay:\r\n case RenderPass.OpaqueLayers:\r\n case RenderPass.TranslucentLayers:\r\n case RenderPass.OverlayLayers: {\r\n const mode = vf.renderMode;\r\n if (!this.isGlyph && (RenderMode.HiddenLine === mode || RenderMode.SolidFill === mode)) {\r\n flags[SurfaceBitIndex.TransparencyThreshold] = 1;\r\n if (RenderMode.HiddenLine === mode && FillFlags.Always !== (this.fillFlags & FillFlags.Always)) {\r\n // fill flags test for text - doesn't render with bg fill in hidden line mode.\r\n flags[SurfaceBitIndex.BackgroundFill] = 1;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private constructor(indices: BufferHandle, numIndices: number, mesh: MeshData) {\r\n super(mesh, numIndices);\r\n this._buffers = BuffersContainer.create();\r\n const attrPos = AttributeMap.findAttribute(\"a_pos\", TechniqueId.Surface, false);\r\n assert(undefined !== attrPos);\r\n this._buffers.addBuffer(indices, [BufferParameters.create(attrPos.location, 3, GL.DataType.UnsignedByte, false, 0, 0, false)]);\r\n this._indices = indices;\r\n }\r\n\r\n private wantTextures(target: Target, surfaceTextureExists: boolean): boolean {\r\n if (this.hasScalarAnimation && undefined !== target.analysisTexture)\r\n return true;\r\n\r\n if (!surfaceTextureExists)\r\n return false;\r\n\r\n if (this.mesh.isTextureAlwaysDisplayed)\r\n return true;\r\n\r\n if (this.supportsThematicDisplay && target.wantThematicDisplay)\r\n return false;\r\n\r\n const fill = this.fillFlags;\r\n const flags = target.currentViewFlags;\r\n\r\n // ###TODO need to distinguish between gradient fill and actual textures...\r\n switch (flags.renderMode) {\r\n case RenderMode.SmoothShade:\r\n return flags.textures;\r\n case RenderMode.Wireframe:\r\n return FillFlags.Always === (fill & FillFlags.Always) || (flags.fill && FillFlags.ByView === (fill & FillFlags.ByView));\r\n default:\r\n return FillFlags.Always === (fill & FillFlags.Always);\r\n }\r\n }\r\n\r\n private wantNormalMaps(target: Target, normalMapExists: boolean): boolean {\r\n if (!normalMapExists || !target.displayNormalMaps)\r\n return false;\r\n\r\n const flags = target.currentViewFlags;\r\n\r\n switch (flags.renderMode) {\r\n case RenderMode.SmoothShade:\r\n return flags.textures;\r\n default:\r\n return false;\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"SurfaceGeometry.js","sourceRoot":"","sources":["../../../../src/render/webgl/SurfaceGeometry.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 WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { FillFlags, RenderMode, TextureTransparency, ThematicGradientTransparencyMode, ViewFlags } from \"@itwin/core-common\";\r\nimport { SurfaceType } from \"../../common/render/primitives/SurfaceParams\";\r\nimport { VertexIndices } from \"../../common/render/primitives/VertexIndices\";\r\nimport { RenderMemory } from \"../RenderMemory\";\r\nimport { AttributeMap } from \"./AttributeMap\";\r\nimport { ShaderProgramParams } from \"./DrawCommand\";\r\nimport { GL } from \"./GL\";\r\nimport { BufferHandle, BufferParameters, BuffersContainer } from \"./AttributeBuffers\";\r\nimport { MaterialInfo } from \"./Material\";\r\nimport { Pass, RenderOrder, RenderPass, SurfaceBitIndex } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueId } from \"./TechniqueId\";\r\nimport { MeshData } from \"./MeshData\";\r\nimport { MeshGeometry } from \"./MeshGeometry\";\r\n\r\n/** @internal */\r\nexport function wantMaterials(vf: ViewFlags): boolean {\r\n return vf.materials && RenderMode.SmoothShade === vf.renderMode;\r\n}\r\n\r\nfunction wantLighting(vf: ViewFlags) {\r\n return RenderMode.SmoothShade === vf.renderMode && vf.lighting;\r\n}\r\n\r\n/** @internal */\r\nexport class SurfaceGeometry extends MeshGeometry {\r\n private readonly _buffers: BuffersContainer;\r\n private readonly _indices: BufferHandle;\r\n\r\n public get lutBuffers() { return this._buffers; }\r\n\r\n public static create(mesh: MeshData, indices: VertexIndices): SurfaceGeometry | undefined {\r\n const indexBuffer = BufferHandle.createArrayBuffer(indices.data);\r\n return undefined !== indexBuffer ? new SurfaceGeometry(indexBuffer, indices.length, mesh) : undefined;\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return this._buffers.isDisposed\r\n && this._indices.isDisposed;\r\n }\r\n\r\n public dispose() {\r\n dispose(this._buffers);\r\n dispose(this._indices);\r\n }\r\n\r\n public collectStatistics(stats: RenderMemory.Statistics): void {\r\n stats.addSurface(this._indices.bytesUsed);\r\n }\r\n\r\n public get isLit() { return SurfaceType.Lit === this.surfaceType || SurfaceType.TexturedLit === this.surfaceType; }\r\n public get isTexturedType() { return SurfaceType.Textured === this.surfaceType || SurfaceType.TexturedLit === this.surfaceType; }\r\n public get hasTexture() { return this.isTexturedType && undefined !== this.texture; }\r\n public get hasNormalMap() { return this.isLit && this.isTexturedType && undefined !== this.normalMap; }\r\n public get isGlyph() { return this.mesh.isGlyph; }\r\n public override get alwaysRenderTranslucent() { return this.isGlyph; }\r\n public get isTileSection() { return undefined !== this.texture && this.texture.isTileSection; }\r\n public get isClassifier() { return SurfaceType.VolumeClassifier === this.surfaceType; }\r\n public override get supportsThematicDisplay() {\r\n return !this.isGlyph;\r\n }\r\n\r\n public override get allowColorOverride() {\r\n // Text background color should not be overridden by feature symbology overrides - otherwise it becomes unreadable...\r\n // We don't actually know if we have text.\r\n // We do know that text background color uses blanking fill. So do ImageGraphics, so they're also going to forbid overriding their color.\r\n return FillFlags.Blanking !== (this.fillFlags & FillFlags.Blanking);\r\n }\r\n\r\n public override get asSurface() { return this; }\r\n public override get asEdge() { return undefined; }\r\n public override get asSilhouette() { return undefined; }\r\n\r\n protected _draw(numInstances: number, instanceBuffersContainer?: BuffersContainer): void {\r\n const system = System.instance;\r\n\r\n // If we can't write depth in the fragment shader, use polygonOffset to force blanking regions to draw behind.\r\n const offset = RenderOrder.BlankingRegion === this.renderOrder && !system.supportsLogZBuffer;\r\n if (offset) {\r\n system.context.enable(GL.POLYGON_OFFSET_FILL);\r\n system.context.polygonOffset(1.0, 1.0);\r\n }\r\n\r\n const bufs = instanceBuffersContainer !== undefined ? instanceBuffersContainer : this._buffers;\r\n bufs.bind();\r\n system.drawArrays(GL.PrimitiveType.Triangles, 0, this._numIndices, numInstances);\r\n bufs.unbind();\r\n\r\n if (offset)\r\n system.context.disable(GL.POLYGON_OFFSET_FILL);\r\n }\r\n\r\n public override wantMixMonochromeColor(target: Target): boolean {\r\n // Text relies on white-on-white reversal.\r\n return !this.isGlyph && (this.isLitSurface || this.wantTextures(target, this.hasTexture));\r\n }\r\n\r\n public get techniqueId(): TechniqueId { return TechniqueId.Surface; }\r\n public override get isLitSurface() { return this.isLit; }\r\n public override get hasBakedLighting() { return this.mesh.hasBakedLighting; }\r\n public get renderOrder(): RenderOrder {\r\n if (FillFlags.Behind === (this.fillFlags & FillFlags.Behind))\r\n return RenderOrder.BlankingRegion;\r\n\r\n let order = this.isLit ? RenderOrder.LitSurface : RenderOrder.UnlitSurface;\r\n if (this.isPlanar)\r\n order = order | RenderOrder.PlanarBit;\r\n\r\n return order;\r\n }\r\n\r\n public override getColor(target: Target) {\r\n if (FillFlags.Background === (this.fillFlags & FillFlags.Background))\r\n return target.uniforms.style.backgroundColorInfo;\r\n else\r\n return this.colorInfo;\r\n }\r\n\r\n public override getPass(target: Target): Pass {\r\n // Classifiers have a dedicated pass\r\n if (this.isClassifier)\r\n return \"classification\";\r\n\r\n let opaquePass: Pass = this.isPlanar ? \"opaque-planar\" : \"opaque\";\r\n\r\n // When reading pixels, glyphs are always opaque. Otherwise always transparent (for anti-aliasing).\r\n if (this.isGlyph)\r\n return target.isReadPixelsInProgress ? opaquePass : \"translucent\";\r\n\r\n const vf = target.currentViewFlags;\r\n\r\n // When rendering thematic isolines, we need translucency because they have anti-aliasing.\r\n const thematic = target.wantThematicDisplay && this.supportsThematicDisplay ? target.uniforms.thematic.thematicDisplay : undefined;\r\n if (thematic && target.uniforms.thematic.wantIsoLines)\r\n return \"translucent\";\r\n\r\n // In wireframe, unless fill is explicitly enabled for planar region, surface does not draw\r\n if (RenderMode.Wireframe === vf.renderMode && !this.mesh.isTextureAlwaysDisplayed) {\r\n const fillFlags = this.fillFlags;\r\n const showFill = FillFlags.Always === (fillFlags & FillFlags.Always) || (vf.fill && FillFlags.ByView === (fillFlags & FillFlags.ByView));\r\n if (!showFill)\r\n return \"none\";\r\n }\r\n\r\n // If transparency disabled by render mode or view flag, always draw opaque.\r\n if (!vf.transparency || RenderMode.SolidFill === vf.renderMode || RenderMode.HiddenLine === vf.renderMode)\r\n return opaquePass;\r\n\r\n // A gradient texture applied by analysis style always fully determines the transparency of the surface.\r\n if (this.hasScalarAnimation && undefined !== target.analysisTexture) {\r\n assert(undefined !== target.analysisStyle?.thematic);\r\n switch (target.analysisStyle.thematic.thematicSettings.textureTransparency) {\r\n case TextureTransparency.Translucent:\r\n return \"translucent\";\r\n case TextureTransparency.Opaque:\r\n return opaquePass;\r\n case TextureTransparency.Mixed:\r\n return `${opaquePass}-translucent`;\r\n }\r\n }\r\n\r\n // We have 3 sources of alpha: the material, the texture, and the color.\r\n // Base alpha comes from the material if it overrides it; otherwise from the color.\r\n // The texture's alpha is multiplied by the base alpha.\r\n // So we must draw in the translucent pass if the texture has transparency OR the base alpha is less than 1.\r\n let hasAlpha = false;\r\n const mat = wantMaterials(vf) ? this.mesh.materialInfo : undefined;\r\n if (undefined !== mat && mat.overridesAlpha)\r\n hasAlpha = mat.hasTranslucency;\r\n else\r\n hasAlpha = this.getColor(target).hasTranslucency;\r\n\r\n // Thematic gradient can optionally multiply gradient alpha with surface alpha.\r\n if (thematic && thematic.gradientSettings.transparencyMode === ThematicGradientTransparencyMode.MultiplySurfaceAndGradient) {\r\n switch (thematic.gradientSettings.textureTransparency) {\r\n case TextureTransparency.Opaque:\r\n // This surface's alpha gets multiplied by 1 - gradient colors are all opaque.\r\n return hasAlpha ? \"translucent\" : opaquePass;\r\n case TextureTransparency.Translucent:\r\n // This surface's alpha gets multiplied by < 1 - gradient colors are all translucent.\r\n return \"translucent\";\r\n case TextureTransparency.Mixed:\r\n // The gradient contains a mix of translucent and opaque colors.\r\n return hasAlpha ? \"translucent\" : `${opaquePass}-translucent`;\r\n }\r\n }\r\n\r\n if (!hasAlpha) {\r\n const tex = this.wantTextures(target, true) ? this.texture : undefined;\r\n switch (tex?.transparency) {\r\n case TextureTransparency.Translucent:\r\n hasAlpha = true;\r\n break;\r\n case TextureTransparency.Mixed:\r\n opaquePass = `${opaquePass}-translucent`;\r\n break;\r\n }\r\n }\r\n\r\n return hasAlpha ? \"translucent\" : opaquePass;\r\n }\r\n\r\n protected _wantWoWReversal(target: Target): boolean {\r\n const fillFlags = this.fillFlags;\r\n if (FillFlags.None !== (fillFlags & FillFlags.Background))\r\n return false; // fill color explicitly from background\r\n\r\n if (FillFlags.None !== (fillFlags & FillFlags.Always))\r\n return true; // fill displayed even in wireframe\r\n\r\n const vf = target.currentViewFlags;\r\n if (RenderMode.Wireframe === vf.renderMode || vf.visibleEdges)\r\n return false; // never invert surfaces when edges are displayed\r\n\r\n if (this.isLit && wantLighting(vf))\r\n return false;\r\n\r\n // Don't invert white pixels of textures...\r\n return !this.wantTextures(target, this.hasTexture);\r\n }\r\n\r\n public override get materialInfo(): MaterialInfo | undefined { return this.mesh.materialInfo; }\r\n\r\n public useTexture(params: ShaderProgramParams): boolean {\r\n return this.wantTextures(params.target, this.hasTexture);\r\n }\r\n\r\n public useNormalMap(params: ShaderProgramParams): boolean {\r\n return this.wantNormalMaps(params.target, this.hasNormalMap);\r\n }\r\n\r\n public computeSurfaceFlags(params: ShaderProgramParams, flags: Int32Array): void {\r\n const target = params.target;\r\n const vf = target.currentViewFlags;\r\n\r\n const useMaterial = wantMaterials(vf);\r\n flags[SurfaceBitIndex.IgnoreMaterial] = useMaterial ? 0 : 1;\r\n flags[SurfaceBitIndex.HasMaterialAtlas] = useMaterial && this.hasMaterialAtlas ? 1 : 0;\r\n\r\n flags[SurfaceBitIndex.ApplyLighting] = 0;\r\n flags[SurfaceBitIndex.HasColorAndNormal] = 0;\r\n if (this.isLit) {\r\n flags[SurfaceBitIndex.HasNormals] = 1;\r\n if (wantLighting(vf))\r\n flags[SurfaceBitIndex.ApplyLighting] = 1;\r\n\r\n // Textured meshes store normal in place of color index.\r\n // Untextured lit meshes store normal where textured meshes would store UV coords.\r\n // Tell shader where to find normal.\r\n if (!this.isTexturedType) {\r\n flags[SurfaceBitIndex.HasColorAndNormal] = 1;\r\n }\r\n } else {\r\n flags[SurfaceBitIndex.HasNormals] = 0;\r\n }\r\n\r\n flags[SurfaceBitIndex.HasTexture] = this.useTexture(params) ? 1 : 0;\r\n flags[SurfaceBitIndex.HasNormalMap] = this.useNormalMap(params) ? 1 : 0;\r\n flags[SurfaceBitIndex.UseConstantLodTextureMapping] = this.mesh.textureUsesConstantLod ? 1 : 0;\r\n flags[SurfaceBitIndex.UseConstantLodNormalMapMapping] = this.mesh.normalMapUsesConstantLod ? 1 : 0;\r\n\r\n // The transparency threshold controls how transparent a surface must be to allow light to pass through; more opaque surfaces cast shadows.\r\n flags[SurfaceBitIndex.TransparencyThreshold] = params.target.isDrawingShadowMap ? 1 : 0;\r\n flags[SurfaceBitIndex.BackgroundFill] = 0;\r\n switch (params.renderPass) {\r\n // NB: We need this for opaque pass due to SolidFill (must compute transparency, discard below threshold, render opaque at or above threshold)\r\n case RenderPass.OpaqueLinear:\r\n case RenderPass.OpaquePlanar:\r\n case RenderPass.OpaqueGeneral:\r\n case RenderPass.Translucent:\r\n case RenderPass.WorldOverlay:\r\n case RenderPass.OpaqueLayers:\r\n case RenderPass.TranslucentLayers:\r\n case RenderPass.OverlayLayers: {\r\n const mode = vf.renderMode;\r\n if (!this.isGlyph && (RenderMode.HiddenLine === mode || RenderMode.SolidFill === mode)) {\r\n flags[SurfaceBitIndex.TransparencyThreshold] = 1;\r\n if (RenderMode.HiddenLine === mode && FillFlags.Always !== (this.fillFlags & FillFlags.Always)) {\r\n // fill flags test for text - doesn't render with bg fill in hidden line mode.\r\n flags[SurfaceBitIndex.BackgroundFill] = 1;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private constructor(indices: BufferHandle, numIndices: number, mesh: MeshData) {\r\n super(mesh, numIndices);\r\n this._buffers = BuffersContainer.create();\r\n const attrPos = AttributeMap.findAttribute(\"a_pos\", TechniqueId.Surface, false);\r\n assert(undefined !== attrPos);\r\n this._buffers.addBuffer(indices, [BufferParameters.create(attrPos.location, 3, GL.DataType.UnsignedByte, false, 0, 0, false)]);\r\n this._indices = indices;\r\n }\r\n\r\n private wantTextures(target: Target, surfaceTextureExists: boolean): boolean {\r\n if (this.hasScalarAnimation && undefined !== target.analysisTexture)\r\n return true;\r\n\r\n if (!surfaceTextureExists)\r\n return false;\r\n\r\n if (this.mesh.isTextureAlwaysDisplayed)\r\n return true;\r\n\r\n if (this.supportsThematicDisplay && target.wantThematicDisplay)\r\n return false;\r\n\r\n const fill = this.fillFlags;\r\n const flags = target.currentViewFlags;\r\n\r\n // ###TODO need to distinguish between gradient fill and actual textures...\r\n switch (flags.renderMode) {\r\n case RenderMode.SmoothShade:\r\n return flags.textures;\r\n case RenderMode.Wireframe:\r\n return FillFlags.Always === (fill & FillFlags.Always) || (flags.fill && FillFlags.ByView === (fill & FillFlags.ByView));\r\n default:\r\n return FillFlags.Always === (fill & FillFlags.Always);\r\n }\r\n }\r\n\r\n private wantNormalMaps(target: Target, normalMapExists: boolean): boolean {\r\n if (!normalMapExists || !target.displayNormalMaps)\r\n return false;\r\n\r\n const flags = target.currentViewFlags;\r\n\r\n switch (flags.renderMode) {\r\n case RenderMode.SmoothShade:\r\n return flags.textures;\r\n default:\r\n return false;\r\n }\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ThematicUniforms.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/ThematicUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAA2B,eAAe,EAA6C,MAAM,oBAAoB,CAAC;AACzH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIlC;;GAEG;AACH,qBAAa,gBAAiB,YAAW,eAAe;IACtD,OAAO,CAAC,QAAQ,CAAC,CAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,CAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,SAAS,CAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;IACpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;IACrD,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,kBAAkB,CAA2B;IACrD,OAAO,CAAC,gBAAgB,CAAC,CAAkB;IAEpC,OAAO,SAAK;IAEnB,OAAO,KAAK,eAAe,GAA4C;IAEvE,IAAW,eAAe,IAAI,eAAe,GAAG,SAAS,CAExD;IAED,IAAW,YAAY,IAAI,OAAO,CAIjC;IAED,IAAW,aAAa,IAAI,OAAO,CAElC;IAED,IAAW,iBAAiB,IAAI,OAAO,CAEtC;IAED,IAAW,uBAAuB,IAAI,OAAO,CAE5C;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,OAAO,CAAC,cAAc,CAAkB;IAExC,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,mBAAmB;IASpB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAkE5B,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKvC,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKtC,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAK9C,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAK7C,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAK7C,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAK9C,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI;IAK5D,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAK5C,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKhD,IAAW,UAAU,IAAI,OAAO,CAE/B;IAEM,OAAO;CAIf"}
1
+ {"version":3,"file":"ThematicUniforms.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/ThematicUniforms.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EACoB,eAAe,EACzC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIlC;;GAEG;AACH,qBAAa,gBAAiB,YAAW,eAAe;IACtD,OAAO,CAAC,QAAQ,CAAC,CAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,CAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,SAAS,CAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;IACrD,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,kBAAkB,CAA2B;IACrD,OAAO,CAAC,gBAAgB,CAAC,CAAkB;IAEpC,OAAO,SAAK;IAEnB,OAAO,KAAK,eAAe,GAA4C;IAEvE,IAAW,eAAe,IAAI,eAAe,GAAG,SAAS,CAExD;IAED,IAAW,YAAY,IAAI,OAAO,CAIjC;IAED,IAAW,aAAa,IAAI,OAAO,CAElC;IAED,IAAW,iBAAiB,IAAI,OAAO,CAEtC;IAED,IAAW,uBAAuB,IAAI,OAAO,CAE5C;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,OAAO,CAAC,cAAc,CAAkB;IAExC,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,mBAAmB;IASpB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAgE5B,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKvC,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKtC,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAK9C,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAK7C,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAK7C,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAK9C,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI;IAK5D,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAK5C,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKhD,IAAW,UAAU,IAAI,OAAO,CAE/B;IAEM,OAAO;CAIf"}
@@ -26,9 +26,9 @@ class ThematicUniforms {
26
26
  this._colorMix = 0.0;
27
27
  this._axis = new Float32Array(3);
28
28
  this._sunDirection = new Float32Array(3);
29
- this._marginColor = new Float32Array(3);
29
+ this._marginColor = new FloatRGBA_1.FloatRgba();
30
30
  this._displayMode = new Float32Array(1);
31
- this._fragSettings = new Float32Array(3); // gradientMode, distanceCutoff, stepCount
31
+ this._fragSettings = new Float32Array(4); // gradientMode, distanceCutoff, stepCount, > 0.0 if multiply gradient alpha
32
32
  this._numSensors = 0;
33
33
  this._gradientDimension = _getGradientDimension();
34
34
  this.syncKey = 0;
@@ -102,15 +102,13 @@ class ThematicUniforms {
102
102
  this._updateAxis(this.thematicDisplay.axis, (core_common_1.ThematicDisplayMode.Slope === this.thematicDisplay.displayMode) ? target.uniforms.frustum.viewMatrix : undefined);
103
103
  if (core_common_1.ThematicDisplayMode.HillShade === this.thematicDisplay.displayMode)
104
104
  this._updateSunDirection(this.thematicDisplay.sunDirection, target.uniforms.frustum.viewMatrix);
105
- const marginRgb = FloatRGBA_1.FloatRgb.fromColorDef(this.thematicDisplay.gradientSettings.marginColor);
106
- this._marginColor[0] = marginRgb.red;
107
- this._marginColor[1] = marginRgb.green;
108
- this._marginColor[2] = marginRgb.blue;
105
+ this._marginColor.setColorDef(this.thematicDisplay.gradientSettings.marginColor);
109
106
  this._displayMode[0] = this.thematicDisplay.displayMode;
110
107
  this._fragSettings[0] = this.thematicDisplay.gradientSettings.mode;
111
108
  const sensorSettings = this.thematicDisplay.sensorSettings;
112
109
  this._fragSettings[1] = (undefined === sensorSettings) ? 0 : this.thematicDisplay.sensorSettings.distanceCutoff;
113
110
  this._fragSettings[2] = Math.min(this.thematicDisplay.gradientSettings.stepCount, this._gradientDimension);
111
+ this._fragSettings[3] = this.thematicDisplay.gradientSettings.transparencyMode === core_common_1.ThematicGradientTransparencyMode.SurfaceOnly ? 0.0 : 1.0;
114
112
  // If we want sensors and have no distance cutoff, then create a global shared sensor texture.
115
113
  if (target.wantThematicSensors && !(this._distanceCutoff > 0)) {
116
114
  this._numSensors = sensorSettings.sensors.length;
@@ -135,7 +133,7 @@ class ThematicUniforms {
135
133
  }
136
134
  bindMarginColor(uniform) {
137
135
  if (!(0, Sync_1.sync)(this, uniform))
138
- uniform.setUniform3fv(this._marginColor);
136
+ this._marginColor.bind(uniform);
139
137
  }
140
138
  bindDisplayMode(uniform) {
141
139
  if (!(0, Sync_1.sync)(this, uniform))
@@ -143,7 +141,7 @@ class ThematicUniforms {
143
141
  }
144
142
  bindFragSettings(uniform) {
145
143
  if (!(0, Sync_1.sync)(this, uniform))
146
- uniform.setUniform3fv(this._fragSettings);
144
+ uniform.setUniform4fv(this._fragSettings);
147
145
  }
148
146
  bindTexture(uniform, unit) {
149
147
  (0, core_bentley_1.assert)(undefined !== this._texture);
@@ -1 +1 @@
1
- {"version":3,"file":"ThematicUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/ThematicUniforms.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 WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport { Gradient, RenderTexture, ThematicDisplay, ThematicDisplayMode, ThematicGradientMode } from \"@itwin/core-common\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { TextureUnit } from \"./RenderFlags\";\r\nimport { desync, sync } from \"./Sync\";\r\nimport { TextureHandle } from \"./Texture\";\r\nimport { ThematicSensors } from \"./ThematicSensors\";\r\nimport { Angle, Range3d, Transform, Vector3d } from \"@itwin/core-geometry\";\r\nimport { Target } from \"./Target\";\r\nimport { System } from \"./System\";\r\nimport { FloatRgb } from \"./FloatRGBA\";\r\n\r\n/** Maintains state for uniforms related to thematic display.\r\n * @internal\r\n */\r\nexport class ThematicUniforms implements WebGLDisposable {\r\n private _sensors?: ThematicSensors; // NB: This is only used if no distance cutoff is applied (this is shared among all batches)\r\n private _texture?: TextureHandle;\r\n private readonly _range = new Float32Array(2);\r\n private _colorMix = 0.0;\r\n private readonly _axis = new Float32Array(3);\r\n private readonly _sunDirection = new Float32Array(3);\r\n private readonly _marginColor = new Float32Array(3);\r\n private readonly _displayMode = new Float32Array(1);\r\n private readonly _fragSettings = new Float32Array(3); // gradientMode, distanceCutoff, stepCount\r\n private _numSensors = 0;\r\n private _gradientDimension = _getGradientDimension();\r\n private _thematicDisplay?: ThematicDisplay;\r\n\r\n public syncKey = 0;\r\n\r\n private get _distanceCutoff(): number { return this._fragSettings[1]; }\r\n\r\n public get thematicDisplay(): ThematicDisplay | undefined {\r\n return this._thematicDisplay;\r\n }\r\n\r\n public get wantIsoLines(): boolean {\r\n if (undefined !== this.thematicDisplay)\r\n return ThematicDisplayMode.Height === this._displayMode[0] && ThematicGradientMode.IsoLines === this.thematicDisplay.gradientSettings.mode;\r\n return false;\r\n }\r\n\r\n public get wantSlopeMode(): boolean {\r\n return (undefined !== this.thematicDisplay) ? ThematicDisplayMode.Slope === this._displayMode[0] : false;\r\n }\r\n\r\n public get wantHillShadeMode(): boolean {\r\n return (undefined !== this.thematicDisplay) ? ThematicDisplayMode.HillShade === this._displayMode[0] : false;\r\n }\r\n\r\n public get wantGlobalSensorTexture(): boolean {\r\n return !(this._distanceCutoff > 0);\r\n }\r\n\r\n public get bytesUsed(): number {\r\n return this._sensors ? this._sensors.bytesUsed : 0;\r\n }\r\n\r\n private _scratchVector = new Vector3d();\r\n\r\n private _updateAxis(axis: Vector3d, viewMatrix?: Transform) {\r\n const tAxis = (viewMatrix !== undefined) ? viewMatrix.multiplyVector(axis, this._scratchVector) : axis;\r\n tAxis.normalizeInPlace();\r\n this._axis[0] = tAxis.x;\r\n this._axis[1] = tAxis.y;\r\n this._axis[2] = tAxis.z;\r\n }\r\n\r\n private _updateSunDirection(sunDir: Vector3d, viewMatrix: Transform) {\r\n viewMatrix.multiplyVector(sunDir, this._scratchVector);\r\n this._scratchVector.negate(this._scratchVector);\r\n this._scratchVector.normalizeInPlace();\r\n this._sunDirection[0] = this._scratchVector.x;\r\n this._sunDirection[1] = this._scratchVector.y;\r\n this._sunDirection[2] = this._scratchVector.z;\r\n }\r\n\r\n public update(target: Target): void {\r\n const plan = target.plan;\r\n\r\n if (this.thematicDisplay && plan.thematic && this.thematicDisplay.equals(plan.thematic) && this._texture) {\r\n if (undefined !== this._sensors)\r\n this._sensors.update(target.uniforms.frustum.viewMatrix);\r\n\r\n if (ThematicDisplayMode.Slope === this.thematicDisplay.displayMode) {\r\n this._updateAxis(this.thematicDisplay.axis, target.uniforms.frustum.viewMatrix);\r\n desync(this);\r\n } else if (ThematicDisplayMode.HillShade === this.thematicDisplay.displayMode) {\r\n this._updateSunDirection(this.thematicDisplay.sunDirection, target.uniforms.frustum.viewMatrix);\r\n desync(this);\r\n }\r\n\r\n return;\r\n }\r\n\r\n desync(this);\r\n\r\n this._thematicDisplay = plan.thematic;\r\n this._texture = dispose(this._texture);\r\n if (!this.thematicDisplay)\r\n return;\r\n\r\n if (ThematicDisplayMode.Slope === this.thematicDisplay.displayMode) {\r\n this._range[0] = Angle.degreesToRadians(this.thematicDisplay.range.low);\r\n this._range[1] = Angle.degreesToRadians(this.thematicDisplay.range.high);\r\n } else {\r\n this._range[0] = this.thematicDisplay.range.low;\r\n this._range[1] = this.thematicDisplay.range.high;\r\n }\r\n\r\n this._colorMix = this.thematicDisplay.gradientSettings.colorMix;\r\n\r\n this._updateAxis(this.thematicDisplay.axis, (ThematicDisplayMode.Slope === this.thematicDisplay.displayMode) ? target.uniforms.frustum.viewMatrix : undefined);\r\n\r\n if (ThematicDisplayMode.HillShade === this.thematicDisplay.displayMode)\r\n this._updateSunDirection(this.thematicDisplay.sunDirection, target.uniforms.frustum.viewMatrix);\r\n\r\n const marginRgb = FloatRgb.fromColorDef(this.thematicDisplay.gradientSettings.marginColor);\r\n this._marginColor[0] = marginRgb.red;\r\n this._marginColor[1] = marginRgb.green;\r\n this._marginColor[2] = marginRgb.blue;\r\n\r\n this._displayMode[0] = this.thematicDisplay.displayMode;\r\n\r\n this._fragSettings[0] = this.thematicDisplay.gradientSettings.mode;\r\n\r\n const sensorSettings = this.thematicDisplay.sensorSettings;\r\n this._fragSettings[1] = (undefined === sensorSettings) ? 0 : this.thematicDisplay.sensorSettings.distanceCutoff;\r\n\r\n this._fragSettings[2] = Math.min(this.thematicDisplay.gradientSettings.stepCount, this._gradientDimension);\r\n\r\n // If we want sensors and have no distance cutoff, then create a global shared sensor texture.\r\n if (target.wantThematicSensors && !(this._distanceCutoff > 0)) {\r\n this._numSensors = sensorSettings.sensors.length;\r\n this._sensors = dispose(this._sensors);\r\n this._sensors = ThematicSensors.create(target, Range3d.createNull());\r\n }\r\n\r\n const symb = Gradient.Symb.createThematic(this.thematicDisplay.gradientSettings);\r\n const image = symb.getThematicImageForRenderer(this._gradientDimension);\r\n this._texture = TextureHandle.createForImageBuffer(image, RenderTexture.Type.ThematicGradient);\r\n }\r\n\r\n public bindRange(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform2fv(this._range);\r\n }\r\n\r\n public bindAxis(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform3fv(this._axis);\r\n }\r\n\r\n public bindSunDirection(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform3fv(this._sunDirection);\r\n }\r\n\r\n public bindMarginColor(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform3fv(this._marginColor);\r\n }\r\n\r\n public bindDisplayMode(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform1fv(this._displayMode);\r\n }\r\n\r\n public bindFragSettings(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform3fv(this._fragSettings);\r\n }\r\n\r\n public bindTexture(uniform: UniformHandle, unit: TextureUnit): void {\r\n assert(undefined !== this._texture);\r\n this._texture.bindSampler(uniform, unit);\r\n }\r\n\r\n public bindNumSensors(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform1i(this._numSensors);\r\n }\r\n\r\n public bindSensors(uniform: UniformHandle): void {\r\n assert(undefined !== this._sensors);\r\n this._sensors.texture.bindSampler(uniform, TextureUnit.ThematicSensors);\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return undefined === this._texture && undefined === this._sensors;\r\n }\r\n\r\n public dispose() {\r\n this._texture = dispose(this._texture);\r\n this._sensors = dispose(this._sensors);\r\n }\r\n}\r\n\r\nfunction _getGradientDimension(): number {\r\n const preferDimension = 8192;\r\n const maxDimension = System.instance.maxTextureSize;\r\n return (preferDimension > maxDimension) ? maxDimension : preferDimension;\r\n}\r\n"]}
1
+ {"version":3,"file":"ThematicUniforms.js","sourceRoot":"","sources":["../../../../src/render/webgl/ThematicUniforms.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 WebGL\r\n */\r\n\r\nimport { assert, dispose } from \"@itwin/core-bentley\";\r\nimport {\r\n Gradient, RenderTexture, ThematicDisplay, ThematicDisplayMode, ThematicGradientMode, ThematicGradientTransparencyMode,\r\n} from \"@itwin/core-common\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { TextureUnit } from \"./RenderFlags\";\r\nimport { desync, sync } from \"./Sync\";\r\nimport { TextureHandle } from \"./Texture\";\r\nimport { ThematicSensors } from \"./ThematicSensors\";\r\nimport { Angle, Range3d, Transform, Vector3d } from \"@itwin/core-geometry\";\r\nimport { Target } from \"./Target\";\r\nimport { System } from \"./System\";\r\nimport { FloatRgba } from \"./FloatRGBA\";\r\n\r\n/** Maintains state for uniforms related to thematic display.\r\n * @internal\r\n */\r\nexport class ThematicUniforms implements WebGLDisposable {\r\n private _sensors?: ThematicSensors; // NB: This is only used if no distance cutoff is applied (this is shared among all batches)\r\n private _texture?: TextureHandle;\r\n private readonly _range = new Float32Array(2);\r\n private _colorMix = 0.0;\r\n private readonly _axis = new Float32Array(3);\r\n private readonly _sunDirection = new Float32Array(3);\r\n private readonly _marginColor = new FloatRgba();\r\n private readonly _displayMode = new Float32Array(1);\r\n private readonly _fragSettings = new Float32Array(4); // gradientMode, distanceCutoff, stepCount, > 0.0 if multiply gradient alpha\r\n private _numSensors = 0;\r\n private _gradientDimension = _getGradientDimension();\r\n private _thematicDisplay?: ThematicDisplay;\r\n\r\n public syncKey = 0;\r\n\r\n private get _distanceCutoff(): number { return this._fragSettings[1]; }\r\n\r\n public get thematicDisplay(): ThematicDisplay | undefined {\r\n return this._thematicDisplay;\r\n }\r\n\r\n public get wantIsoLines(): boolean {\r\n if (undefined !== this.thematicDisplay)\r\n return ThematicDisplayMode.Height === this._displayMode[0] && ThematicGradientMode.IsoLines === this.thematicDisplay.gradientSettings.mode;\r\n return false;\r\n }\r\n\r\n public get wantSlopeMode(): boolean {\r\n return (undefined !== this.thematicDisplay) ? ThematicDisplayMode.Slope === this._displayMode[0] : false;\r\n }\r\n\r\n public get wantHillShadeMode(): boolean {\r\n return (undefined !== this.thematicDisplay) ? ThematicDisplayMode.HillShade === this._displayMode[0] : false;\r\n }\r\n\r\n public get wantGlobalSensorTexture(): boolean {\r\n return !(this._distanceCutoff > 0);\r\n }\r\n\r\n public get bytesUsed(): number {\r\n return this._sensors ? this._sensors.bytesUsed : 0;\r\n }\r\n\r\n private _scratchVector = new Vector3d();\r\n\r\n private _updateAxis(axis: Vector3d, viewMatrix?: Transform) {\r\n const tAxis = (viewMatrix !== undefined) ? viewMatrix.multiplyVector(axis, this._scratchVector) : axis;\r\n tAxis.normalizeInPlace();\r\n this._axis[0] = tAxis.x;\r\n this._axis[1] = tAxis.y;\r\n this._axis[2] = tAxis.z;\r\n }\r\n\r\n private _updateSunDirection(sunDir: Vector3d, viewMatrix: Transform) {\r\n viewMatrix.multiplyVector(sunDir, this._scratchVector);\r\n this._scratchVector.negate(this._scratchVector);\r\n this._scratchVector.normalizeInPlace();\r\n this._sunDirection[0] = this._scratchVector.x;\r\n this._sunDirection[1] = this._scratchVector.y;\r\n this._sunDirection[2] = this._scratchVector.z;\r\n }\r\n\r\n public update(target: Target): void {\r\n const plan = target.plan;\r\n\r\n if (this.thematicDisplay && plan.thematic && this.thematicDisplay.equals(plan.thematic) && this._texture) {\r\n if (undefined !== this._sensors)\r\n this._sensors.update(target.uniforms.frustum.viewMatrix);\r\n\r\n if (ThematicDisplayMode.Slope === this.thematicDisplay.displayMode) {\r\n this._updateAxis(this.thematicDisplay.axis, target.uniforms.frustum.viewMatrix);\r\n desync(this);\r\n } else if (ThematicDisplayMode.HillShade === this.thematicDisplay.displayMode) {\r\n this._updateSunDirection(this.thematicDisplay.sunDirection, target.uniforms.frustum.viewMatrix);\r\n desync(this);\r\n }\r\n\r\n return;\r\n }\r\n\r\n desync(this);\r\n\r\n this._thematicDisplay = plan.thematic;\r\n this._texture = dispose(this._texture);\r\n if (!this.thematicDisplay)\r\n return;\r\n\r\n if (ThematicDisplayMode.Slope === this.thematicDisplay.displayMode) {\r\n this._range[0] = Angle.degreesToRadians(this.thematicDisplay.range.low);\r\n this._range[1] = Angle.degreesToRadians(this.thematicDisplay.range.high);\r\n } else {\r\n this._range[0] = this.thematicDisplay.range.low;\r\n this._range[1] = this.thematicDisplay.range.high;\r\n }\r\n\r\n this._colorMix = this.thematicDisplay.gradientSettings.colorMix;\r\n\r\n this._updateAxis(this.thematicDisplay.axis, (ThematicDisplayMode.Slope === this.thematicDisplay.displayMode) ? target.uniforms.frustum.viewMatrix : undefined);\r\n\r\n if (ThematicDisplayMode.HillShade === this.thematicDisplay.displayMode)\r\n this._updateSunDirection(this.thematicDisplay.sunDirection, target.uniforms.frustum.viewMatrix);\r\n\r\n this._marginColor.setColorDef(this.thematicDisplay.gradientSettings.marginColor);\r\n\r\n this._displayMode[0] = this.thematicDisplay.displayMode;\r\n\r\n this._fragSettings[0] = this.thematicDisplay.gradientSettings.mode;\r\n\r\n const sensorSettings = this.thematicDisplay.sensorSettings;\r\n this._fragSettings[1] = (undefined === sensorSettings) ? 0 : this.thematicDisplay.sensorSettings.distanceCutoff;\r\n\r\n this._fragSettings[2] = Math.min(this.thematicDisplay.gradientSettings.stepCount, this._gradientDimension);\r\n this._fragSettings[3] = this.thematicDisplay.gradientSettings.transparencyMode === ThematicGradientTransparencyMode.SurfaceOnly ? 0.0 : 1.0;\r\n\r\n // If we want sensors and have no distance cutoff, then create a global shared sensor texture.\r\n if (target.wantThematicSensors && !(this._distanceCutoff > 0)) {\r\n this._numSensors = sensorSettings.sensors.length;\r\n this._sensors = dispose(this._sensors);\r\n this._sensors = ThematicSensors.create(target, Range3d.createNull());\r\n }\r\n\r\n const symb = Gradient.Symb.createThematic(this.thematicDisplay.gradientSettings);\r\n const image = symb.getThematicImageForRenderer(this._gradientDimension);\r\n this._texture = TextureHandle.createForImageBuffer(image, RenderTexture.Type.ThematicGradient);\r\n }\r\n\r\n public bindRange(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform2fv(this._range);\r\n }\r\n\r\n public bindAxis(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform3fv(this._axis);\r\n }\r\n\r\n public bindSunDirection(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform3fv(this._sunDirection);\r\n }\r\n\r\n public bindMarginColor(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n this._marginColor.bind(uniform);\r\n }\r\n\r\n public bindDisplayMode(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform1fv(this._displayMode);\r\n }\r\n\r\n public bindFragSettings(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform4fv(this._fragSettings);\r\n }\r\n\r\n public bindTexture(uniform: UniformHandle, unit: TextureUnit): void {\r\n assert(undefined !== this._texture);\r\n this._texture.bindSampler(uniform, unit);\r\n }\r\n\r\n public bindNumSensors(uniform: UniformHandle): void {\r\n if (!sync(this, uniform))\r\n uniform.setUniform1i(this._numSensors);\r\n }\r\n\r\n public bindSensors(uniform: UniformHandle): void {\r\n assert(undefined !== this._sensors);\r\n this._sensors.texture.bindSampler(uniform, TextureUnit.ThematicSensors);\r\n }\r\n\r\n public get isDisposed(): boolean {\r\n return undefined === this._texture && undefined === this._sensors;\r\n }\r\n\r\n public dispose() {\r\n this._texture = dispose(this._texture);\r\n this._sensors = dispose(this._sensors);\r\n }\r\n}\r\n\r\nfunction _getGradientDimension(): number {\r\n const preferDimension = 8192;\r\n const maxDimension = System.instance.maxTextureSize;\r\n return (preferDimension > maxDimension) ? maxDimension : preferDimension;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Surface.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Surface.ts"],"names":[],"mappings":"AAIA;;GAEG;AAMH,OAAO,EAC2C,cAAc,EAC/D,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACQ,UAAU,EAAE,YAAY,EAAE,WAAW,EAAgB,UAAU,EAAE,YAAY,EAAE,cAAc,EAC3G,MAAM,mBAAmB,CAAC;AAkR3B,gBAAgB;AAChB,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,GAAG,cAAc,CAc5H;AAsED,gBAAgB;AAChB,eAAO,MAAM,eAAe,+SAW3B,CAAC;AAgHF,gBAAgB;AAChB,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,QAoBhH;AAyCD,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,QAsDzI;AAED,eAAO,MAAM,wBAAwB,mWAQpC,CAAC;AA+BF,gBAAgB;AAChB,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CA4G1E;AAED,wBAAgB,oCAAoC,CAAC,OAAO,EAAE,cAAc,QAgB3E"}
1
+ {"version":3,"file":"Surface.d.ts","sourceRoot":"","sources":["../../../../../src/render/webgl/glsl/Surface.ts"],"names":[],"mappings":"AAIA;;GAEG;AAMH,OAAO,EAC2C,cAAc,EAC/D,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACQ,UAAU,EAAE,YAAY,EAAE,WAAW,EAAgB,UAAU,EAAE,YAAY,EAAE,cAAc,EAC3G,MAAM,mBAAmB,CAAC;AAkR3B,gBAAgB;AAChB,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,GAAG,cAAc,CAc5H;AAsED,gBAAgB;AAChB,eAAO,MAAM,eAAe,+SAW3B,CAAC;AAgHF,gBAAgB;AAChB,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,QAoBhH;AAyCD,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,QAsDzI;AAED,eAAO,MAAM,wBAAwB,mWAQpC,CAAC;AA2BF,gBAAgB;AAChB,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CA4G1E;AAED,wBAAgB,oCAAoC,CAAC,OAAO,EAAE,cAAc,QAgB3E"}
@@ -557,16 +557,12 @@ exports.discardClassifiedByAlpha = `
557
557
  bool isTranslucentPass = kRenderPass_Translucent == u_renderPass;
558
558
  return (isOpaquePass && hasAlpha) || (isTranslucentPass && !hasAlpha);
559
559
  `;
560
- const discardByTextureAlpha = `
561
- if (isSurfaceBitSet(kSurfaceBit_HasTexture)) {
562
- float cutoff = abs(u_alphaCutoff);
563
- if (kRenderPass_Translucent == u_renderPass)
564
- return u_alphaCutoff > 0.0 && alpha >= cutoff;
565
- else
566
- return alpha < cutoff;
567
- }
568
-
569
- return false;
560
+ const discardByAlphaCutoff = `
561
+ float cutoff = abs(u_alphaCutoff);
562
+ if (kRenderPass_Translucent == u_renderPass)
563
+ return u_alphaCutoff > 0.0 && alpha >= cutoff;
564
+ else
565
+ return alpha < cutoff;
570
566
  `;
571
567
  function addTransparencyDiscard(frag) {
572
568
  (0, RenderPass_1.addRenderPass)(frag);
@@ -581,7 +577,7 @@ function addTransparencyDiscard(frag) {
581
577
  uniform.setUniform1f(cutoff);
582
578
  });
583
579
  });
584
- frag.set(5 /* FragmentShaderComponent.DiscardByAlpha */, discardByTextureAlpha);
580
+ frag.set(5 /* FragmentShaderComponent.DiscardByAlpha */, discardByAlphaCutoff);
585
581
  }
586
582
  /** @internal */
587
583
  function createSurfaceBuilder(flags) {