@arcgis/core 4.23.0-next.20220127 → 4.23.0-next.20220131
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/0463ba46df855a92b9c0.js +1 -0
- package/assets/esri/core/workers/chunks/{8001b0e514bfffe9d7f8.js → 0c15d77d8e817cf45a9a.js} +1 -1
- package/assets/esri/core/workers/chunks/{e657ba0cab29f05d02da.js → 0cd0a6eef51fc5b9ea61.js} +1 -1
- package/assets/esri/core/workers/chunks/{e4896cf85fb2da8a9cc7.js → 17de7a324dfa7f57ad5d.js} +1 -1
- package/assets/esri/core/workers/chunks/{c36f84daa7736878418d.js → 197ec52641aed20029c6.js} +1 -1
- package/assets/esri/core/workers/chunks/{0317f37b6c8705b363fd.js → 1c733b7db092a2a88ef3.js} +1 -1
- package/assets/esri/core/workers/chunks/{9387db408f496e7dd003.js → 214910032945dd2d86b0.js} +1 -1
- package/assets/esri/core/workers/chunks/{d835b2a683fcd8aeeed8.js → 27474b007988855bea9d.js} +1 -1
- package/assets/esri/core/workers/chunks/{e93dfdede0532a89ffa5.js → 2b25fc7945a187c2bb9d.js} +1 -1
- package/assets/esri/core/workers/chunks/{5948923e07bd1662c24a.js → 37c03cfc19086ce631c6.js} +1 -1
- package/assets/esri/core/workers/chunks/44f0c3663b293afbd172.js +1 -0
- package/assets/esri/core/workers/chunks/483d5d8593d96d0f0b15.js +1 -0
- package/assets/esri/core/workers/chunks/49a1a633bb0d93764aae.js +1 -0
- package/assets/esri/core/workers/chunks/{5f1dcb6556820cd0aa31.js → 4be35af7d6babbfe9d84.js} +1 -1
- package/assets/esri/core/workers/chunks/{f9ff3eaf4eb324429fbd.js → 5457962a70bd3c557a75.js} +1 -1
- package/assets/esri/core/workers/chunks/56657f890e0f79f5d2ad.js +1 -0
- package/assets/esri/core/workers/chunks/57856b4a9b8784a69844.js +1 -0
- package/assets/esri/core/workers/chunks/{56274b37ff74ca0d68a6.js → 5d11b97b667921d67ae7.js} +1 -1
- package/assets/esri/core/workers/chunks/{ba5eb394f098968c22d2.js → 655b55ac0cd533d7e9d7.js} +1 -1
- package/assets/esri/core/workers/chunks/70d6bb3c7112cb702389.js +1 -0
- package/assets/esri/core/workers/chunks/810a763373d7f78ae398.js +1 -0
- package/assets/esri/core/workers/chunks/918bb7a7d901544a7367.js +1 -0
- package/assets/esri/core/workers/chunks/949b2269457302ffc64b.js +1 -0
- package/assets/esri/core/workers/chunks/{601e697dc7414bda128a.js → 952980635afc7ec81804.js} +1 -1
- package/assets/esri/core/workers/chunks/{e8741bf421f80213f1d3.js → 9876a1bae350795fab36.js} +1 -1
- package/assets/esri/core/workers/chunks/99619fcb772807c74f3b.js +1 -0
- package/assets/esri/core/workers/chunks/{3f343f792fd9f44d6f25.js → b3f5e91116112b0b612a.js} +1 -1
- package/assets/esri/core/workers/chunks/{9d77467aa71d345fc1b6.js → bcc01bbffaa3bb5f60a8.js} +1 -1
- package/assets/esri/core/workers/chunks/{4c76146014dc15143ba3.js → be588873c16770ceb9ef.js} +1 -1
- package/assets/esri/core/workers/chunks/d1fe53b597351dc58305.js +1 -0
- package/assets/esri/core/workers/chunks/d98dab12b71912fa397b.js +1 -0
- package/assets/esri/core/workers/chunks/{b62e3dccd9f662c0afeb.js → db3c729ce0c0b2690dc9.js} +1 -1
- package/assets/esri/core/workers/chunks/{199670a3a564ebe3bd79.js → e218bde41ffbcc5194f5.js} +1 -1
- package/assets/esri/core/workers/chunks/e21b211913aefde47e30.js +1 -0
- package/assets/esri/core/workers/chunks/{c9cbf8135e95f0f42cd9.js → e287f49184d076af17e2.js} +1 -1
- package/assets/esri/core/workers/chunks/{bde1d5b0a7717350986e.js → e4019b63a1fe74e2c842.js} +1 -1
- package/assets/esri/core/workers/chunks/{6e6a3c5866e8d8820457.js → eb82ff10cef2bde6e57f.js} +1 -1
- package/assets/esri/core/workers/chunks/ebc6f4764b82d4104c65.js +1 -0
- package/assets/esri/core/workers/chunks/{842db82733635dbf25cb.js → ee6e0db58dc64410e687.js} +1 -1
- package/assets/esri/core/workers/chunks/f0a9f161805fc7a30fc5.js +1 -0
- package/assets/esri/core/workers/chunks/f7150547d7e3259a0f29.js +981 -0
- package/assets/esri/core/workers/chunks/fc046a15466c25d081ff.js +1 -0
- package/assets/esri/images/portal/mediaservice16.png +0 -0
- package/assets/esri/libs/vxl/vxlLayer.wasm +0 -0
- package/assets/esri/widgets/Directions/t9n/Directions.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_ar.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_bg.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_bs.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_ca.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_cs.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_da.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_de.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_el.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_en.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_es.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_et.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_fi.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_fr.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_he.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_hr.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_hu.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_id.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_it.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_ja.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_ko.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_lt.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_lv.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_nb.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_nl.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_pl.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_pt-BR.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_pt-PT.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_ro.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_ru.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_sk.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_sl.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_sr.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_sv.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_th.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_tr.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_uk.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_vi.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_zh-CN.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_zh-HK.json +1 -1
- package/assets/esri/widgets/Directions/t9n/Directions_zh-TW.json +1 -1
- package/chunks/BlendLayers.glsl.js +2 -2
- package/chunks/ChapmanAtmosphere.glsl.js +17 -17
- package/chunks/CheckerBoard.glsl.js +3 -3
- package/chunks/Clouds.glsl.js +2 -2
- package/chunks/CloudsComposition.glsl.js +1 -1
- package/chunks/ColorMaterial.glsl.js +12 -12
- package/chunks/ComponentShader.glsl.js +3 -3
- package/chunks/Compositing.glsl.js +1 -1
- package/chunks/DefaultMaterial.glsl.js +33 -33
- package/chunks/EdgeShaderProgram.glsl.js +7 -7
- package/chunks/Fog.glsl.js +10 -12
- package/chunks/HUDMaterial.glsl.js +2 -2
- package/chunks/HighlightComposition.glsl.js +5 -5
- package/chunks/ImageMaterial.glsl.js +6 -6
- package/chunks/LaserlinePath.glsl.js +8 -8
- package/chunks/LineCallout.glsl.js +6 -6
- package/chunks/MeasurementArrow.glsl.js +1 -1
- package/chunks/NativeLine.glsl.js +1 -1
- package/chunks/Path.glsl.js +5 -5
- package/chunks/Pattern.glsl.js +9 -9
- package/chunks/PointRenderer.glsl.js +14 -14
- package/chunks/Precipitation.glsl.js +2 -2
- package/chunks/RealisticTree.glsl.js +21 -21
- package/chunks/RibbonLine.glsl.js +11 -11
- package/chunks/SMAA.glsl.js +40 -40
- package/chunks/ShadedColorMaterial.glsl.js +12 -12
- package/chunks/ShadowCast.glsl.js +6 -6
- package/chunks/ShadowHighlight.glsl.js +4 -4
- package/chunks/SimpleAtmosphere.glsl.js +3 -3
- package/chunks/SlicePlaneMaterial.glsl.js +3 -3
- package/chunks/Stars.glsl.js +3 -3
- package/chunks/Terrain.glsl.js +11 -11
- package/chunks/TextureOnly.glsl.js +2 -2
- package/chunks/WaterSurface.glsl.js +5 -5
- package/chunks/boundedPlane.js +1 -1
- package/core/accessorSupport/watch.js +1 -1
- package/core/loadAll.js +1 -1
- package/geometry/support/frustum.js +1 -1
- package/geometry/support/plane.js +1 -1
- package/interfaces.d.ts +653 -55
- package/layers/RouteLayer.d.ts +4 -0
- package/layers/RouteLayer.js +1 -1
- package/layers/VectorTileLayer.js +1 -1
- package/layers/graphics/controllers/I3SOnDemandController.js +1 -1
- package/layers/graphics/featureConversionUtils.js +1 -1
- package/layers/support/LayerContingentValuesCache.js +1 -1
- package/layers/support/TileInfo.js +1 -1
- package/package.json +1 -1
- package/portal/PortalItem.js +1 -1
- package/rest/support/DirectionLine.d.ts +4 -0
- package/rest/support/DirectionPoint.d.ts +4 -0
- package/rest/support/RouteInfo.d.ts +4 -0
- package/rest/support/RouteInfo.js +1 -1
- package/rest/support/RouteSolveResult.d.ts +4 -0
- package/smartMapping/statistics/support/predominanceUtils.d.ts +4 -0
- package/support/revision.js +1 -1
- package/symbols/FillSymbol3DLayer.js +1 -1
- package/symbols/IconSymbol3DLayer.js +1 -1
- package/symbols/ObjectSymbol3DLayer.js +1 -1
- package/symbols/Symbol3D.js +1 -1
- package/symbols/WebStyleSymbol.js +1 -1
- package/symbols/cim/CIMSymbolRasterizer.js +1 -1
- package/symbols/support/IconSymbol3DLayerResource.js +1 -1
- package/symbols/support/ObjectSymbol3DLayerResource.js +1 -1
- package/symbols/support/Symbol3DAnchorPosition2D.js +1 -1
- package/symbols/support/Symbol3DAnchorPosition3D.js +1 -1
- package/symbols/support/Symbol3DFillMaterial.js +1 -1
- package/symbols/support/Symbol3DIconOutline.js +1 -1
- package/symbols/support/Symbol3DOutline.js +1 -1
- package/symbols/support/Thumbnail.js +1 -1
- package/symbols/support/webStyleSymbolUtils.js +1 -1
- package/views/2d/engine/vectorTiles/SchemaHelper.js +1 -1
- package/views/2d/layers/RouteLayerView2D.js +1 -1
- package/views/3d/environment/ChapmanAtmosphere.glsl.js +1 -1
- package/views/3d/environment/ChapmanAtmosphere.js +1 -1
- package/views/3d/environment/CloudsComposition.glsl.js +1 -1
- package/views/3d/environment/CloudsComposition.js +1 -1
- package/views/3d/environment/CloudsGenerator.js +1 -1
- package/views/3d/environment/Fog.glsl.js +1 -1
- package/views/3d/environment/Fog.js +1 -1
- package/views/3d/environment/NoiseTextureAtlas.js +1 -1
- package/views/3d/environment/PanoramicAtmosphere.js +1 -1
- package/views/3d/environment/Precipitation.glsl.js +1 -1
- package/views/3d/environment/Precipitation.js +1 -1
- package/views/3d/environment/PrecipitationTechnique.js +1 -1
- package/views/3d/environment/SimpleAtmosphere.glsl.js +1 -1
- package/views/3d/environment/SimpleAtmosphere.js +1 -1
- package/views/3d/environment/Stars.glsl.js +1 -1
- package/views/3d/environment/Stars.js +1 -1
- package/views/3d/interactive/analysisTools/slice/sliceToolUtils.js +1 -1
- package/views/3d/interactive/visualElements/ExtendedLineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/MeasurementAreaVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/OutlineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/ParallelLineVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/PointVisualElement.js +1 -1
- package/views/3d/interactive/visualElements/RightAngleQuadVisualElement.js +1 -1
- package/views/3d/layers/FeatureLayerViewBase3D.js +1 -1
- package/views/3d/layers/FeatureLikeLayerView3D.js +1 -1
- package/views/3d/layers/I3SMeshView3D.js +1 -1
- package/views/3d/layers/VectorTileLayerView3D.js +1 -1
- package/views/3d/layers/graphics/Deconflictor.js +1 -1
- package/views/3d/layers/graphics/ElevationAligners.js +1 -1
- package/views/3d/layers/graphics/Graphics3DExtrudeSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DFeatureProcessor.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineCalloutSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DObjectSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DPolygonFillSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/graphicUtils.js +1 -1
- package/views/3d/layers/graphics/lineUtils.js +1 -1
- package/views/3d/layers/graphics/objectResourceUtils.js +1 -1
- package/views/3d/layers/graphics/polygonUtils.js +1 -1
- package/views/3d/layers/graphics/symbolComplexity.js +1 -1
- package/views/3d/layers/i3s/I3SBinaryReader.js +1 -1
- package/views/3d/layers/i3s/I3SCrossfadeHelper.js +1 -1
- package/views/3d/layers/i3s/I3SIndex.js +1 -1
- package/views/3d/layers/i3s/I3SMaterialUtil.js +1 -1
- package/views/3d/layers/i3s/I3SViewportQueries.js +1 -1
- package/views/3d/layers/i3s/PointRenderer.js +1 -1
- package/views/3d/layers/support/HeatmapFeatureProcessor.js +5 -0
- package/views/3d/layers/support/overlayImageUtils.js +1 -1
- package/views/3d/layers/support/patternUtils.js +1 -1
- package/views/3d/state/controllers/local/PinchAndPanController.js +1 -1
- package/views/3d/support/FrustumExtentIntersection.js +1 -1
- package/views/3d/support/LaserLineRenderer.js +1 -1
- package/views/3d/support/LaserlinePathData.js +1 -1
- package/views/3d/terrain/OverlayRenderer.js +1 -1
- package/views/3d/terrain/PatchGeometryFactory.js +1 -1
- package/views/3d/terrain/TerrainRenderer.js +1 -1
- package/views/3d/terrain/TerrainSurface.js +1 -1
- package/views/3d/terrain/Tile.js +1 -1
- package/views/3d/terrain/TileRenderer.js +1 -1
- package/views/3d/terrain/terrainUtils.js +1 -1
- package/views/3d/terrain/tileUtils.js +1 -1
- package/views/3d/webgl-engine/collections/Component/ComponentObjectCollection.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/ComponentTechnique.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/shader/ComponentData.glsl.js +10 -10
- package/views/3d/webgl-engine/collections/Component/Material/shader/ComponentShader.glsl.js +1 -1
- package/views/3d/webgl-engine/collections/Component/SourceGeometry.js +1 -1
- package/views/3d/webgl-engine/core/renderPasses/AllRenderPasses.js +1 -1
- package/views/3d/webgl-engine/core/renderPasses/RenderPass.js +1 -1
- package/views/3d/webgl-engine/core/renderPasses/RenderPassManager.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/ForwardLinearDepth.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/ScreenSizeScaling.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/ScreenSpacePass.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/InstancedDoublePrecision.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/NormalAttribute.glsl.js +4 -4
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/PathVertexPosition.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/PositionAttribute.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/SymbolColor.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/TextureCoordinateAttribute.glsl.js +3 -3
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexColor.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexNormal.glsl.js +6 -6
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexPosition.glsl.js +12 -12
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VertexTextureCoordinates.glsl.js +4 -4
- package/views/3d/webgl-engine/core/shaderLibrary/attributes/VerticalOffset.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/default/DefaultMaterialAuxiliaryPasses.glsl.js +16 -16
- package/views/3d/webgl-engine/core/shaderLibrary/default/RealisticTree.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/hud/HUD.glsl.js +5 -5
- package/views/3d/webgl-engine/core/shaderLibrary/hud/HUDOcclusionPass.glsl.js +3 -3
- package/views/3d/webgl-engine/core/shaderLibrary/raster/BasicGrid.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/shading/ComputeMaterialColor.glsl.js +6 -6
- package/views/3d/webgl-engine/core/shaderLibrary/shading/ComputeNormalTexture.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/shading/ComputeShadingNormal.glsl.js +10 -11
- package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/shading/MultipassGeometryTest.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/shading/MultipassTerrainTest.glsl.js +2 -2
- package/views/3d/webgl-engine/core/shaderLibrary/shading/Normals.glsl.js +6 -6
- package/views/3d/webgl-engine/core/shaderLibrary/shading/ReadBaseColorTexture.glsl.js +4 -4
- package/views/3d/webgl-engine/core/shaderLibrary/shading/ReadShadowMap.glsl.js +6 -6
- package/views/3d/webgl-engine/core/shaderLibrary/shading/Reprojection.glsl.js +4 -4
- package/views/3d/webgl-engine/core/shaderLibrary/shading/ScreenSpaceReflections.glsl.js +5 -5
- package/views/3d/webgl-engine/core/shaderLibrary/shading/VisualVariables.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/shading/Water.glsl.js +10 -10
- package/views/3d/webgl-engine/core/shaderLibrary/terrain/Terrain.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/util/BlendLayers.glsl.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/util/CloudsParallaxShading.glsl.js +4 -4
- package/views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js +1 -1
- package/views/3d/webgl-engine/lib/Camera.js +1 -1
- package/views/3d/webgl-engine/lib/CompositingHelper.js +1 -1
- package/views/3d/webgl-engine/lib/DefaultVertexAttributeLocations.js +1 -1
- package/views/3d/webgl-engine/lib/DefaultVertexBufferLayouts.js +1 -1
- package/views/3d/webgl-engine/lib/Geometry.js +1 -1
- package/views/3d/webgl-engine/lib/GeometryUtil.js +1 -1
- package/views/3d/webgl-engine/lib/GridLocalOriginFactory.js +1 -1
- package/views/3d/webgl-engine/lib/HighlightHelper.js +1 -1
- package/views/3d/webgl-engine/lib/MagnifierHelper.js +1 -1
- package/views/3d/webgl-engine/lib/Material.js +1 -1
- package/views/3d/webgl-engine/lib/RenderGeometry.js +1 -1
- package/views/3d/webgl-engine/lib/RenderingContext.js +1 -1
- package/views/3d/webgl-engine/lib/SSAOHelper.js +1 -1
- package/views/3d/webgl-engine/lib/ShadowAccumulator.js +1 -1
- package/views/3d/webgl-engine/lib/ShadowCastRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/ShadowHighlightHelper.js +1 -1
- package/views/3d/webgl-engine/lib/ShadowMap.js +1 -1
- package/views/3d/webgl-engine/lib/SmaaRenderPass.js +1 -1
- package/views/3d/webgl-engine/lib/TextTextureAtlas.js +1 -1
- package/views/3d/webgl-engine/lib/Texture.js +1 -1
- package/views/3d/webgl-engine/lib/TextureUniformName.js +4 -0
- package/views/3d/webgl-engine/lib/UniformName.js +4 -0
- package/views/3d/webgl-engine/lib/VertexAttribute.js +5 -0
- package/views/3d/webgl-engine/lib/basicInterfaces.js +1 -1
- package/views/3d/webgl-engine/lib/depthRangeUtils.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeShaderTechnique.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/EdgeView.js +1 -1
- package/views/3d/webgl-engine/lib/edgeRendering/bufferLayouts.js +1 -1
- package/views/3d/webgl-engine/lib/lodRendering/InstanceData.js +1 -1
- package/views/3d/webgl-engine/lib/lodRendering/LodRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/lodRendering/RenderInstanceData.js +1 -1
- package/views/3d/webgl-engine/lib/pathGeometryUtils.js +1 -1
- package/views/3d/webgl-engine/materials/CheckerBoardMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/ColorMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/DefaultMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/ImageMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/LineCalloutMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/MeasurementArrowMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/NativeLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/PathMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/PathTechnique.js +1 -1
- package/views/3d/webgl-engine/materials/PatternMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/ShadedColorMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/SlicePlaneMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/VisualVariableMaterialParameters.js +1 -1
- package/views/3d/webgl-engine/materials/WaterTechnique.js +1 -1
- package/views/3d/webgl-engine/materials/internal/DefaultBufferWriter.js +1 -1
- package/views/3d/webgl-engine/materials/internal/MaterialUtil.js +1 -1
- package/views/3d/webgl-engine/materials/internal/bufferWriterUtils.js +1 -1
- package/views/3d/webgl-engine/materials/internal/waterMaterialUtils.js +1 -1
- package/views/3d/webgl-engine/materials/renderers/MergedRenderer.js +1 -1
- package/views/3d/webgl-engine/shaders/CheckerBoard.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/CheckerBoardTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/ColorMaterial.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/ColorMaterialTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/DefaultMaterial.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/DefaultMaterialTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/HUDMaterial.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/HUDMaterialTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/HighlightComposition.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/HighlightTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/ImageMaterial.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/ImageMaterialTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/LaserlinePath.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/LaserlinePathTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/LineCallout.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/LineCalloutTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/Magnifier.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/MeasurementArrow.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/NativeLine.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/Pattern.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/PatternTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/PointRenderer.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/RealisticTreeTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLineTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/SMAA.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/ShadedColorMaterial.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/ShadedColorMaterialTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/ShadowCastTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/ShadowHighlightTechnique.js +1 -1
- package/views/3d/webgl-engine/shaders/SlicePlaneMaterial.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/WaterSurface.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/sources/edgeRenderer/AdjustProjectedPosition.glsl.js +10 -10
- package/views/3d/webgl-engine/shaders/sources/edgeRenderer/DiscardShortEdges.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/sources/edgeRenderer/EdgeShaderProgram.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/sources/edgeRenderer/EdgeUtil.glsl.js +21 -21
- package/views/3d/webgl-engine/shaders/sources/edgeRenderer/LineAmplitude.glsl.js +6 -6
- package/views/3d/webgl-engine/shaders/sources/edgeRenderer/LineOffset.glsl.js +13 -13
- package/views/3d/webgl-engine/shaders/sources/edgeRenderer/UnpackAttributes.glsl.js +6 -6
- package/views/SceneView.js +1 -1
- package/views/interactive/editGeometry/operations/OffsetEdgeVertex.js +1 -1
- package/views/support/WatchUpdatingTracking.js +1 -1
- package/views/webgl/BufferObject.js +1 -1
- package/views/webgl/InstanceCounter.js +1 -1
- package/views/webgl/Program.js +1 -1
- package/webdoc/support/{Thumbnail.js → SlideThumbnail.js} +1 -1
- package/webmap/Bookmark.js +1 -1
- package/webmap/Version.js +1 -1
- package/webscene/Slide.js +1 -1
- package/webscene/Version.js +1 -1
- package/webscene/support/SlideVisibleLayer.js +1 -1
- package/widgets/BasemapGallery/support/basemapCompatibilityUtils.js +1 -1
- package/widgets/Bookmarks/BookmarksViewModel.js +1 -1
- package/widgets/Bookmarks.js +1 -1
- package/widgets/Directions/DirectionsViewModel.js +1 -1
- package/widgets/Directions/support/directionsUtils.js +1 -1
- package/widgets/Directions/support/resources.js +1 -1
- package/widgets/Directions.js +1 -1
- package/widgets/FeatureTemplates/FeatureTemplatesViewModel.js +1 -1
- package/widgets/Search/support/locatorUtils.js +1 -1
- package/widgets/Search.js +1 -1
- package/widgets/TimeSlider.js +1 -1
- package/assets/esri/core/workers/chunks/12c0cabb6c59e65d8546.js +0 -1
- package/assets/esri/core/workers/chunks/322d917e8cb398816a93.js +0 -1
- package/assets/esri/core/workers/chunks/392b6382e06652dd4c80.js +0 -1
- package/assets/esri/core/workers/chunks/3aa73119b055e05bbbeb.js +0 -1
- package/assets/esri/core/workers/chunks/52ea678ba1da0e349919.js +0 -1
- package/assets/esri/core/workers/chunks/5ee497d5d7b0e580526a.js +0 -1
- package/assets/esri/core/workers/chunks/663ad15b86936eb06b69.js +0 -1
- package/assets/esri/core/workers/chunks/83b8fec1650e061aaa56.js +0 -1
- package/assets/esri/core/workers/chunks/9796d54ff12b6429164a.js +0 -1
- package/assets/esri/core/workers/chunks/c093dff4592832ac0973.js +0 -1
- package/assets/esri/core/workers/chunks/d07440469fe7d181c4fd.js +0 -1
- package/assets/esri/core/workers/chunks/dbf192b4ce7e608610f6.js +0 -1
- package/assets/esri/core/workers/chunks/de6cff7b6cbbf99b20d1.js +0 -981
- package/assets/esri/core/workers/chunks/dee9929d95e9fe26929c.js +0 -1
- package/assets/esri/core/workers/chunks/e12d91ef44d6f879a02a.js +0 -1
- package/assets/esri/core/workers/chunks/e59764ee8cf25d4f74e2.js +0 -1
- package/assets/esri/core/workers/chunks/fc7e31d87555beb63291.js +0 -1
- package/assets/esri/core/workers/chunks/fff6b0338f06dad0c45d.js +0 -1
- package/widgets/Directions/support/CostSummary.js +0 -5
- package/widgets/Directions/support/RouteSection.js +0 -5
- package/widgets/Directions/support/RouteSections.js +0 -5
- package/widgets/Directions/support/maneuverUtils.js +0 -5
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.23/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{FoamColor as e}from"./FoamRendering.glsl.js";import{Gamma as o}from"./Gamma.glsl.js";import{PhysicallyBasedRendering as r}from"./PhysicallyBasedRendering.glsl.js";import{ScreenSpaceReflections as t}from"./ScreenSpaceReflections.glsl.js";import{CloudsParallaxShading as i}from"../util/CloudsParallaxShading.glsl.js";import{glsl as
|
|
5
|
+
import{FoamColor as e}from"./FoamRendering.glsl.js";import{Gamma as o}from"./Gamma.glsl.js";import{PhysicallyBasedRendering as r}from"./PhysicallyBasedRendering.glsl.js";import{ScreenSpaceReflections as t}from"./ScreenSpaceReflections.glsl.js";import{CloudsParallaxShading as i}from"../util/CloudsParallaxShading.glsl.js";import{glsl as l}from"../../shaderModules/interfaces.js";function a(a,d){a.include(r,d),a.include(o),a.include(e),d.cloudsReflectionsEnabled&&a.include(i),d.ssrEnabled&&a.include(t,d),a.fragment.constants.add("fresnelSky","vec3",[.02,1,15]).add("fresnelMaterial","vec2",[.02,.1]).add("roughness","float",.015).add("foamIntensityExternal","float",1.7).add("ssrIntensity","float",.65).add("ssrHeightFadeStart","float",3e5).add("ssrHeightFadeEnd","float",5e5).add("waterDiffusion","float",.92).add("waterSeeColorMod","float",.8).add("correctionViewingPowerFactor","float",.4).add("skyZenitColor","vec3",[.52,.68,.9]).add("skyColor","vec3",[.67,.79,.9]).add("cloudFresnelModifier","vec2",[1.2,.01]),a.fragment.code.add(l`PBRShadingWater shadingInfo;
|
|
6
6
|
vec3 getSkyGradientColor(in float cosTheta, in vec3 horizon, in vec3 zenit) {
|
|
7
7
|
float exponent = pow((1.0 - cosTheta), fresnelSky[2]);
|
|
8
8
|
return mix(zenit, horizon, exponent);
|
|
9
|
-
}`),
|
|
9
|
+
}`),a.fragment.code.add(l`vec3 getSeaColor(in vec3 n, in vec3 v, in vec3 l, vec3 color, in vec3 lightIntensity, in vec3 localUp, in float shadow, float foamIntensity, vec3 positionView, vec3 position) {
|
|
10
10
|
float reflectionHit = 0.0;
|
|
11
11
|
float reflectionHitDiffused = 0.0;
|
|
12
12
|
vec3 seaWaterColor = linearizeGamma(color);
|
|
@@ -40,14 +40,14 @@ foam = foamIntensity2FoamColor(foamIntensityExternal, foamIntensity, skyZenitCol
|
|
|
40
40
|
}
|
|
41
41
|
float correctionViewingFactor = pow(max(dot(v, localUp), 0.0), correctionViewingPowerFactor);
|
|
42
42
|
vec3 normalCorrectedClouds = mix(localUp, n, correctionViewingFactor);
|
|
43
|
-
vec3 reflectedWorld = normalize(reflect(-v, normalCorrectedClouds));`),
|
|
43
|
+
vec3 reflectedWorld = normalize(reflect(-v, normalCorrectedClouds));`),d.cloudsReflectionsEnabled&&a.fragment.code.add(l`vec4 cloudsColor = crossFade == 0 ? renderCloud(reflectedWorld, position) : renderCloudCrossFade(reflectedWorld, position);
|
|
44
44
|
cloudsColor.a = 1.0 - cloudsColor.a;
|
|
45
45
|
cloudsColor = pow(cloudsColor, vec4(GAMMA));
|
|
46
|
-
cloudsColor *= clamp(fresnelModifier.y*cloudFresnelModifier[0] - cloudFresnelModifier[1], 0.0, 1.0) * (1.0 - totalFadeInOut);`),
|
|
46
|
+
cloudsColor *= clamp(fresnelModifier.y*cloudFresnelModifier[0] - cloudFresnelModifier[1], 0.0, 1.0) * (1.0 - totalFadeInOut);`),d.ssrEnabled?a.fragment.code.add(l`vec4 viewPosition = vec4(positionView.xyz, 1.0);
|
|
47
47
|
vec3 viewDir = normalize(viewPosition.xyz);
|
|
48
|
-
vec4 viewNormalVectorCoordinate =
|
|
48
|
+
vec4 viewNormalVectorCoordinate = view *vec4(n, 0.0);
|
|
49
49
|
vec3 viewNormal = normalize(viewNormalVectorCoordinate.xyz);
|
|
50
|
-
vec4 viewUp =
|
|
50
|
+
vec4 viewUp = view *vec4(localUp, 0.0);
|
|
51
51
|
vec3 viewNormalCorrectedSSR = mix(viewUp.xyz, viewNormal, correctionViewingFactor);
|
|
52
52
|
vec3 reflected = normalize(reflect(viewDir, viewNormalCorrectedSSR));
|
|
53
53
|
vec3 hitCoordinate = screenSpaceIntersection( normalize(reflected), viewPosition.xyz, viewDir, viewUp.xyz);
|
|
@@ -62,7 +62,7 @@ reflectionHitDiffused = waterDiffusion * reflectionHit;
|
|
|
62
62
|
reflectedColor = linearizeGamma(texture2D(lastFrameColorMap, reprojectedCoordinate).xyz)* reflectionHitDiffused * fresnelModifier.y * ssrIntensity;
|
|
63
63
|
}
|
|
64
64
|
float seeColorMod = mix(waterSeeColorMod, waterSeeColorMod*0.5, reflectionHitDiffused);
|
|
65
|
-
vec3 waterRenderedColor = tonemapACES((1.0 - reflectionHitDiffused) * reflSky + reflectedColor + reflSea * seeColorMod + specular + foam);`):
|
|
66
|
-
}`):
|
|
67
|
-
}`):
|
|
68
|
-
}`)}export{
|
|
65
|
+
vec3 waterRenderedColor = tonemapACES((1.0 - reflectionHitDiffused) * reflSky + reflectedColor + reflSea * seeColorMod + specular + foam);`):a.fragment.code.add(l`vec3 waterRenderedColor = tonemapACES(reflSky + reflSea * waterSeeColorMod + specular + foam);`),d.cloudsReflectionsEnabled?d.ssrEnabled?a.fragment.code.add(l`return waterRenderedColor * (1.0 - (1.0 - reflectionHit) * cloudsColor.a) + (1.0 - reflectionHit) * cloudsColor.xyz;
|
|
66
|
+
}`):a.fragment.code.add(l`return waterRenderedColor * (1.0 - cloudsColor.a) + cloudsColor.xyz;
|
|
67
|
+
}`):a.fragment.code.add(l`return waterRenderedColor;
|
|
68
|
+
}`)}export{a as Water};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.23/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import"../ShaderOutputOptions.js";import"../Slice.glsl.js";import"../Transform.glsl.js";import"../attributes/VertexTangent.glsl.js";import"../output/OutputDepth.glsl.js";import"../output/OutputHighlight.glsl.js";import"../shading/EvaluateSceneLighting.glsl.js";import"../shading/NormalUtils.glsl.js";import"../shading/PhysicallyBasedRenderingParameters.glsl.js";import"./Overlay.glsl.js";import"./Skirts.glsl.js";import"./TerrainTexture.glsl.js";import"../util/HeaderComment.glsl.js";import"../../shaderModules/interfaces.js";import"../../shaderModules/ShaderBuilder.js";import"../../../lib/
|
|
5
|
+
import"../ShaderOutputOptions.js";import"../Slice.glsl.js";import"../Transform.glsl.js";import"../attributes/VertexTangent.glsl.js";import"../output/OutputDepth.glsl.js";import"../output/OutputHighlight.glsl.js";import"../shading/EvaluateSceneLighting.glsl.js";import"../shading/NormalUtils.glsl.js";import"../shading/PhysicallyBasedRenderingParameters.glsl.js";import"./Overlay.glsl.js";import"./Skirts.glsl.js";import"./TerrainTexture.glsl.js";import"../util/HeaderComment.glsl.js";import"../../shaderModules/interfaces.js";import"../../shaderModules/ShaderBuilder.js";import"../../../lib/VertexAttribute.js";export{b as build}from"../../../../../../chunks/Terrain.glsl.js";
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.23/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import"../../shaderModules/interfaces.js";import"../../shaderModules/ShaderBuilder.js";import"../../../lib/
|
|
5
|
+
import"../../shaderModules/interfaces.js";import"../../shaderModules/ShaderBuilder.js";import"../../../lib/VertexAttribute.js";export{b as build}from"../../../../../../chunks/BlendLayers.glsl.js";
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.23/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{glsl as o}from"../../shaderModules/interfaces.js";function t(t){t.fragment.uniforms.add("anchorPosition","vec3").add("anchorPositionCrossFade","vec3").add("fadeInOutFactor","float").add("cloudsHeight","float").add("rotationMatrixClouds","mat4").add("rotationMatrixCloudsCrossFade","mat4").add("radiusCurvatureCorrectionFactor","float").add("radius","float").add("cameraPosition","vec3").add("totalFadeInOut","float").add("crossFade","int").add("crossFadeAnchorFactor","float").add("cloudVariables","vec2").add("cubeMap","samplerCube"),t.fragment.code.add(o`vec3 intersectWithCloudLayer(vec3 dir, vec3
|
|
5
|
+
import{glsl as o}from"../../shaderModules/interfaces.js";function t(t){t.fragment.uniforms.add("anchorPosition","vec3").add("anchorPositionCrossFade","vec3").add("fadeInOutFactor","float").add("cloudsHeight","float").add("rotationMatrixClouds","mat4").add("rotationMatrixCloudsCrossFade","mat4").add("radiusCurvatureCorrectionFactor","float").add("radius","float").add("cameraPosition","vec3").add("totalFadeInOut","float").add("crossFade","int").add("crossFadeAnchorFactor","float").add("cloudVariables","vec2").add("cubeMap","samplerCube"),t.fragment.code.add(o`vec3 intersectWithCloudLayer(vec3 dir, vec3 cameraPosition, vec3 spherePos, float radiusReduction)
|
|
6
6
|
{
|
|
7
7
|
vec3 dirAnchor = normalize(spherePos);
|
|
8
8
|
vec3 sphereOriginOffset = dirAnchor * radiusReduction;
|
|
9
9
|
float radiusClouds = radius + cloudsHeight - radiusReduction;
|
|
10
|
-
float B = 2.0 * dot(
|
|
11
|
-
float C = dot(
|
|
10
|
+
float B = 2.0 * dot(cameraPosition - sphereOriginOffset, dir);
|
|
11
|
+
float C = dot(cameraPosition - sphereOriginOffset, cameraPosition - sphereOriginOffset) - radiusClouds * radiusClouds;
|
|
12
12
|
float det = B * B - 4.0 * C;
|
|
13
13
|
float pointIntDist = max(0.0, 0.5 *(-B + sqrt(det)));
|
|
14
|
-
vec3 intersectionPont =
|
|
14
|
+
vec3 intersectionPont = cameraPosition + dir * pointIntDist;
|
|
15
15
|
intersectionPont = intersectionPont - spherePos;
|
|
16
16
|
return intersectionPont;
|
|
17
17
|
}`),t.fragment.code.add(o`vec3 correctForPlanetCurvature(vec3 dir)
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.23/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{j as i}from"../../../../../../chunks/mat4.js";import{c as
|
|
5
|
+
import{j as i}from"../../../../../../chunks/mat4.js";import{c as o}from"../../../../../../chunks/mat4f32.js";function t(i,o,t){i.setUniform3f("cameraPosition",t[3]-o[0],t[7]-o[1],t[11]-o[2])}function n(i,o){i.setUniformMatrix4fv("proj",o)}function r(o,t,n){i(m,n,t),o.setUniform3fv("localOrigin",t),o.setUniformMatrix4fv("view",m)}function f(i,o){r(i,o.origin,o.camera.viewMatrix)}function a(i,o){i.setUniform4fv("viewport",o.camera.fullViewport)}const m=o();export{t as bindCameraPosition,n as bindProjectionMatrix,f as bindView,r as bindViewCustomOrigin,a as bindViewport};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.23/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import t from"../../../../core/Logger.js";import{lerp as i}from"../../../../core/mathUtils.js";import{isSome as e}from"../../../../core/maybe.js";import{createScreenPointArray as r,createRenderScreenPointArray3 as s}from"../../../../core/screenUtils.js";import{c as h,m as o,l as n,a,t as _,n as p}from"../../../../chunks/mat4.js";import{c as u}from"../../../../chunks/mat4f64.js";import{c as v,e as c}from"../../../../chunks/vec2.js";import{f as w}from"../../../../chunks/vec2f64.js";import{g as d,f as l,i as g,k as y,v as m,d as f,w as x,x as D,a as M,l as T,s as j,c as R,n as F,r as P}from"../../../../chunks/vec3.js";import{c as O,a as V,f as I}from"../../../../chunks/vec3f64.js";import{c as S,g as E,i as L,t as b}from"../../../../chunks/vec4.js";import{f as H,c as k}from"../../../../chunks/vec4f64.js";import{create as B,copy as G,fromMatrix as U}from"../../../../geometry/support/frustum.js";import{create as A}from"../../../../geometry/support/ray.js";import{projectPointSignedLength as C}from"../../../../geometry/support/vector.js";import{ViewingMode as z}from"../../../ViewingMode.js";import{fovd2fovx as W,fovx2fovd as X,fovd2fovy as Y,fovy2fovd as q}from"./Util.js";const N=t.getLogger("esri.views.3d.webgl-engine.lib.Camera");class J{constructor(t=null,i=null,r=null){this._viewUp=O(),this._viewForward=O(),this._viewRight=O(),this._ray=A(),this._viewport=H(0,0,1,1),this._padding=H(0,0,0,0),this._fov=55/180*Math.PI,this._nearFar=w(1,1e3),this._viewDirty=!0,this._viewMatrix=u(),this._projectionDirty=!0,this._projectionMatrix=u(),this._viewProjectionDirty=!0,this._viewProjectionMatrix=u(),this._viewInverseTransposeMatrixDirty=!0,this._viewInverseTransposeMatrix=u(),this._frustumDirty=!0,this._frustum=B(),this._fullViewport=k(),this.pixelRatio=1,this.relativeElevation=0,e(t)&&d(this._ray.origin,t),this._center=e(i)?V(i):O(),this._up=e(r)?V(r):I(0,0,1)}get eye(){return this._ray.origin}set eye(t){this._compareAndSetView(t,this._ray.origin)}get center(){return this._center}set center(t){this._compareAndSetView(t,this._center)}get ray(){return l(this._ray.direction,this.center,this.eye),this._ray}get up(){return this._up}set up(t){this._compareAndSetView(t,this._up)}get viewMatrix(){return this._ensureViewClean(),this._viewMatrix}set viewMatrix(t){h(this._viewMatrix,t),this._viewDirty=!1,this._viewInverseTransposeMatrixDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0}get viewForward(){return this._ensureViewClean(),this._viewForward}get viewUp(){return this._ensureViewClean(),this._viewUp}get viewRight(){return this._ensureViewClean(),this._viewRight}get nearFar(){return this._nearFar}get near(){return this._nearFar[0]}set near(t){this._nearFar[0]!==t&&(this._nearFar[0]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get far(){return this._nearFar[1]}set far(t){this._nearFar[1]!==t&&(this._nearFar[1]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get viewport(){return this._viewport}set viewport(t){this.x=t[0],this.y=t[1],this.width=t[2],this.height=t[3]}get x(){return this._viewport[0]}set x(t){t+=this._padding[it.LEFT],this._viewport[0]!==t&&(this._viewport[0]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get y(){return this._viewport[1]}set y(t){t+=this._padding[it.BOTTOM],this._viewport[1]!==t&&(this._viewport[1]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get width(){return this._viewport[2]}set width(t){this._viewport[2]!==t&&(this._viewport[2]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get height(){return this._viewport[3]}set height(t){this._viewport[3]!==t&&(this._viewport[3]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get fullWidth(){return this._viewport[2]+this._padding[it.RIGHT]+this._padding[it.LEFT]}set fullWidth(t){this.width=t-(this._padding[it.RIGHT]+this._padding[it.LEFT])}get fullHeight(){return this._viewport[3]+this._padding[it.TOP]+this._padding[it.BOTTOM]}set fullHeight(t){this.height=t-(this._padding[it.TOP]+this._padding[it.BOTTOM])}get fullViewport(){return this._fullViewport[0]=this._viewport[0]-this._padding[it.LEFT],this._fullViewport[1]=this._viewport[1]-this._padding[it.BOTTOM],this._fullViewport[2]=this.fullWidth,this._fullViewport[3]=this.fullHeight,this._fullViewport}get aspect(){return this.width/this.height}get padding(){return this._padding}set padding(t){this._padding[it.TOP]===t[it.TOP]&&this._padding[it.RIGHT]===t[it.RIGHT]&&this._padding[it.BOTTOM]===t[it.BOTTOM]&&this._padding[it.LEFT]===t[it.LEFT]||(this._viewport[0]+=t[it.LEFT]-this._padding[it.LEFT],this._viewport[1]+=t[it.BOTTOM]-this._padding[it.BOTTOM],this._viewport[2]-=t[it.RIGHT]+t[it.LEFT]-(this._padding[it.RIGHT]+this._padding[it.LEFT]),this._viewport[3]-=t[it.TOP]+t[it.BOTTOM]-(this._padding[it.TOP]+this._padding[it.BOTTOM]),S(this._padding,t),this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get viewProjectionMatrix(){return this._viewProjectionDirty&&(o(this._viewProjectionMatrix,this.projectionMatrix,this.viewMatrix),this._viewProjectionDirty=!1),this._viewProjectionMatrix}get projectionMatrix(){if(this._projectionDirty){const t=this.width,i=this.height,e=this.near*Math.tan(this.fovY/2),r=e*this.aspect;n(this._projectionMatrix,-r*(1+2*this._padding[it.LEFT]/t),r*(1+2*this._padding[it.RIGHT]/t),-e*(1+2*this._padding[it.BOTTOM]/i),e*(1+2*this._padding[it.TOP]/i),this.near,this.far),this._projectionDirty=!1}return this._projectionMatrix}set projectionMatrix(t){h(this._projectionMatrix,t),this._projectionDirty=!1,this._viewProjectionDirty=!0,this._frustumDirty=!0}get fov(){return this._fov}set fov(t){this._fov=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0}get fovX(){return W(this._fov,this.width,this.height)}set fovX(t){this._fov=X(t,this.width,this.height),this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0}get fovY(){return Y(this._fov,this.width,this.height)}set fovY(t){this._fov=q(t,this.width,this.height),this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0}get distance(){return g(this._center,this.eye)}get frustum(){return this._recomputeFrustum(),this._frustum}get viewInverseTransposeMatrix(){return(this._viewInverseTransposeMatrixDirty||this._viewDirty)&&(a(this._viewInverseTransposeMatrix,this.viewMatrix),_(this._viewInverseTransposeMatrix,this._viewInverseTransposeMatrix),this._viewInverseTransposeMatrixDirty=!1),this._viewInverseTransposeMatrix}depthNDCToWorld(t){const i=2*t-1;return 2*this.near*this.far/(this.far+this.near-i*(this.far-this.near))}get perRenderPixelRatio(){return Math.tan(this.fovX/2)/(this.width/2)}get perScreenPixelRatio(){return this.perRenderPixelRatio*this.pixelRatio}get aboveGround(){return this.relativeElevation&&this.relativeElevation>=0}copyFrom(t){d(this._ray.origin,t.eye),d(this._center,t.center),d(this._up,t.up),S(this._viewport,t.viewport),S(this._padding,t.padding),v(this._nearFar,t.nearFar),this._fov=t.fov,this.relativeElevation=t.relativeElevation;const i=t;return this._viewDirty=i._viewDirty,this._viewDirty||(h(this._viewMatrix,t.viewMatrix),d(this._viewRight,t.viewRight),d(this._viewUp,t.viewUp),d(this._viewForward,t.viewForward)),i._projectionDirty?this._projectionDirty=!0:(h(this._projectionMatrix,t.projectionMatrix),this._projectionDirty=!1),this._viewProjectionDirty=!0,this._frustumDirty=i._frustumDirty,this._frustumDirty||(G(t.frustum,this._frustum),this._frustumDirty=!1),i._viewInverseTransposeMatrixDirty?this._viewInverseTransposeMatrixDirty=!0:(h(this._viewInverseTransposeMatrix,t.viewInverseTransposeMatrix),this._viewInverseTransposeMatrixDirty=!1),S(this._fullViewport,t.fullViewport),this.pixelRatio=t.pixelRatio,this}copyViewFrom(t){this.eye=t.eye,this.center=t.center,this.up=t.up}clone(){return(new J).copyFrom(this)}equals(t){return y(this.eye,t.eye)&&y(this._center,t.center)&&y(this._up,t.up)&&E(this._viewport,t.viewport)&&E(this._padding,t.padding)&&c(this._nearFar,t.nearFar)&&this._fov===t.fov&&this.pixelRatio===t.pixelRatio&&this.relativeElevation===t.relativeElevation}almostEquals(t){if(this.pixelRatio!==t.pixelRatio||Math.abs(t.fov-this._fov)>=.001)return!1;const i=5e-4,e=1-1e-10;m(Z,t.eye,t.center),m($,this.eye,this._center);const r=f(Z,$),s=x(Z),h=x($);return r*r>=e*s*h&&D(t.eye,this.eye)<Math.max(s,h)*i*i&&L(t.padding,this._padding)<.5&&L(t.viewport,this._viewport)<.5}computeRenderPixelSizeAt(t){return this.computeRenderPixelSizeAtDist(this._viewDirectionDistance(t))}computeRenderPixelSizeAtDist(t){return t*this.perRenderPixelRatio}computeScreenPixelSizeAt(t){return this.computeScreenPixelSizeAtDist(this._viewDirectionDistance(t))}_viewDirectionDistance(t){return Math.abs(C(this.viewForward,l(Z,t,this.eye)))}computeScreenPixelSizeAtDist(t){return t*this.perScreenPixelRatio}computeDistanceFromRadius(t,i){return t/Math.tan(Math.min(this.fovX,this.fovY)/(2*(i||1)))}getScreenCenter(t=r()){return t[0]=(this.padding[it.LEFT]+this.width/2)/this.pixelRatio,t[1]=(this.padding[it.TOP]+this.height/2)/this.pixelRatio,t}getRenderCenter(t,i=.5,e=.5){return t[0]=this.padding[it.LEFT]+this.width*i,t[1]=this.padding[it.BOTTOM]+this.height*e,t[2]=.5,t}setGLViewport(t){const i=this.viewport,e=this.padding;t.setViewport(i[0]-e[3],i[1]-e[2],i[2]+e[1]+e[3],i[3]+e[0]+e[2])}applyProjection(t,e,r=!1){t!==K&&d(K,t),K[3]=1,r&&(e[2]=-K[2]),b(K,K,this.projectionMatrix),M(K,K,1/Math.abs(K[3]));const s=this.fullViewport;return e[0]=i(0,s[0]+s[2],.5+.5*K[0]),e[1]=i(0,s[1]+s[3],.5+.5*K[1]),r||(e[2]=.5*(K[2]+1)),e}projectToScreen(t,i){this.projectToRenderScreen(t,tt),this.renderToScreen(tt,i)}projectToRenderScreen(t,e){if(K[0]=t[0],K[1]=t[1],K[2]=t[2],K[3]=1,b(K,K,this.viewProjectionMatrix),0===K[3])return null;M(K,K,1/Math.abs(K[3]));const r=this.fullViewport;return"x"in e?(e.x=i(0,r[0]+r[2],.5+.5*K[0]),e.y=i(0,r[1]+r[3],.5+.5*K[1])):(e[0]=i(0,r[0]+r[2],.5+.5*K[0]),e[1]=i(0,r[1]+r[3],.5+.5*K[1]),e.length>2&&(e[2]=.5*(K[2]+1))),e}unprojectFromScreen(t,i){return this.unprojectFromRenderScreen(this.screenToRender(t,tt),i)}unprojectFromRenderScreen(t,i){if(o(Q,this.projectionMatrix,this.viewMatrix),!a(Q,Q))return null;const e=this.fullViewport;return K[0]=2*(t[0]-e[0])/e[2]-1,K[1]=2*(t[1]-e[1])/e[3]-1,K[2]=2*t[2]-1,K[3]=1,b(K,K,Q),0===K[3]?null:(i[0]=K[0]/K[3],i[1]=K[1]/K[3],i[2]=K[2]/K[3],i)}constrainWindowSize(t,i,e,r=e){const s=t*this.pixelRatio,h=i*this.pixelRatio,o=Math.max(s-e/2,0),n=Math.max(this.fullHeight-h-r/2,0),a=-Math.min(s-e/2,0),_=-Math.min(this.fullHeight-h-r/2,0);return[o,n,e-a- -Math.min(this.fullWidth-s-e/2,0),r-_- -Math.min(h-r/2,0)]}computeUp(t){t===z.Global?this._computeUpGlobal():this._computeUpLocal()}screenToRender(t,i){const e=t[0]*this.pixelRatio,r=this.fullHeight-t[1]*this.pixelRatio;return i[0]=e,i[1]=r,i}renderToScreen(t,i){const e=t[0]/this.pixelRatio,r=(this.fullHeight-t[1])/this.pixelRatio;i[0]=e,i[1]=r}_computeUpGlobal(){l(Z,this.center,this.eye);const t=T(this.center);t<1?(j(this._up,0,0,1),this._markViewDirty()):Math.abs(f(Z,this.center))>.9999*T(Z)*t||(R(this._up,Z,this.center),R(this._up,this._up,Z),F(this._up,this._up),this._markViewDirty())}_computeUpLocal(){P(Z,this.eye,this.center),Math.abs(Z[2])<=.9999&&(M(Z,Z,Z[2]),j(this._up,-Z[0],-Z[1],1-Z[2]),F(this._up,this._up),this._markViewDirty())}_compareAndSetView(t,i){"number"==typeof t[0]&&isFinite(t[0])&&"number"==typeof t[1]&&isFinite(t[1])&&"number"==typeof t[2]&&isFinite(t[2])?y(t,i)||(d(i,t),this._markViewDirty()):N.warn("Camera vector contains invalid number, ignoring value")}_markViewDirty(){this._viewDirty=!0,this._frustumDirty=!0,this._viewProjectionDirty=!0}_recomputeFrustum(){this._frustumDirty&&(U(this.viewMatrix,this.projectionMatrix,this._frustum),this._frustumDirty=!1)}_ensureViewClean(){this._viewDirty&&(p(this._viewMatrix,this.eye,this._center,this._up),j(this._viewForward,-this._viewMatrix[2],-this._viewMatrix[6],-this._viewMatrix[10]),j(this._viewUp,this._viewMatrix[1],this._viewMatrix[5],this._viewMatrix[9]),j(this._viewRight,this._viewMatrix[0],this._viewMatrix[4],this._viewMatrix[8]),this._viewDirty=!1,this._viewInverseTransposeMatrixDirty=!0)}}const K=k(),Q=u(),Z=O(),$=O(),tt=s();var it;!function(t){t[t.TOP=0]="TOP",t[t.RIGHT=1]="RIGHT",t[t.BOTTOM=2]="BOTTOM",t[t.LEFT=3]="LEFT"}(it||(it={}));export{it as PaddingSide,J as default};
|
|
5
|
+
import t from"../../../../core/Logger.js";import{lerp as i}from"../../../../core/mathUtils.js";import{isSome as e}from"../../../../core/maybe.js";import{createScreenPointArray as r,createRenderScreenPointArray3 as s}from"../../../../core/screenUtils.js";import{c as h,m as o,l as n,a,t as _,n as p}from"../../../../chunks/mat4.js";import{c as u}from"../../../../chunks/mat4f64.js";import{c as v,e as c}from"../../../../chunks/vec2.js";import{f as w}from"../../../../chunks/vec2f64.js";import{g as d,f as l,i as g,k as y,v as m,d as f,w as x,x as D,a as M,l as T,s as j,c as R,n as F,r as P}from"../../../../chunks/vec3.js";import{c as O,a as V,f as I}from"../../../../chunks/vec3f64.js";import{c as S,g as E,i as L,t as b}from"../../../../chunks/vec4.js";import{f as H,c as k}from"../../../../chunks/vec4f64.js";import{create as B,copy as G,fromMatrix as U}from"../../../../geometry/support/frustum.js";import{create as A}from"../../../../geometry/support/ray.js";import{projectPointSignedLength as C}from"../../../../geometry/support/vector.js";import{ViewingMode as z}from"../../../ViewingMode.js";import{fovd2fovx as W,fovx2fovd as X,fovd2fovy as Y,fovy2fovd as q}from"./Util.js";const N=t.getLogger("esri.views.3d.webgl-engine.lib.Camera");class J{constructor(t=null,i=null,r=null){this._viewUp=O(),this._viewForward=O(),this._viewRight=O(),this._ray=A(),this._viewport=H(0,0,1,1),this._padding=H(0,0,0,0),this._fov=55/180*Math.PI,this._nearFar=w(1,1e3),this._viewDirty=!0,this._viewMatrix=u(),this._projectionDirty=!0,this._projectionMatrix=u(),this._viewProjectionDirty=!0,this._viewProjectionMatrix=u(),this._viewInverseTransposeMatrixDirty=!0,this._viewInverseTransposeMatrix=u(),this._frustumDirty=!0,this._frustum=B(),this._fullViewport=k(),this.pixelRatio=1,this.relativeElevation=0,e(t)&&d(this._ray.origin,t),this._center=e(i)?V(i):O(),this._up=e(r)?V(r):I(0,0,1)}get eye(){return this._ray.origin}set eye(t){this._compareAndSetView(t,this._ray.origin)}get center(){return this._center}set center(t){this._compareAndSetView(t,this._center)}get ray(){return l(this._ray.direction,this.center,this.eye),this._ray}get up(){return this._up}set up(t){this._compareAndSetView(t,this._up)}get viewMatrix(){return this._ensureViewClean(),this._viewMatrix}set viewMatrix(t){h(this._viewMatrix,t),this._viewDirty=!1,this._viewInverseTransposeMatrixDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0}get viewForward(){return this._ensureViewClean(),this._viewForward}get viewUp(){return this._ensureViewClean(),this._viewUp}get viewRight(){return this._ensureViewClean(),this._viewRight}get nearFar(){return this._nearFar}get near(){return this._nearFar[0]}set near(t){this._nearFar[0]!==t&&(this._nearFar[0]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get far(){return this._nearFar[1]}set far(t){this._nearFar[1]!==t&&(this._nearFar[1]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get viewport(){return this._viewport}set viewport(t){this.x=t[0],this.y=t[1],this.width=t[2],this.height=t[3]}get x(){return this._viewport[0]}set x(t){t+=this._padding[it.LEFT],this._viewport[0]!==t&&(this._viewport[0]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get y(){return this._viewport[1]}set y(t){t+=this._padding[it.BOTTOM],this._viewport[1]!==t&&(this._viewport[1]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get width(){return this._viewport[2]}set width(t){this._viewport[2]!==t&&(this._viewport[2]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get height(){return this._viewport[3]}set height(t){this._viewport[3]!==t&&(this._viewport[3]=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get fullWidth(){return this._viewport[2]+this._padding[it.RIGHT]+this._padding[it.LEFT]}set fullWidth(t){this.width=t-(this._padding[it.RIGHT]+this._padding[it.LEFT])}get fullHeight(){return this._viewport[3]+this._padding[it.TOP]+this._padding[it.BOTTOM]}set fullHeight(t){this.height=t-(this._padding[it.TOP]+this._padding[it.BOTTOM])}get fullViewport(){return this._fullViewport[0]=this._viewport[0]-this._padding[it.LEFT],this._fullViewport[1]=this._viewport[1]-this._padding[it.BOTTOM],this._fullViewport[2]=this.fullWidth,this._fullViewport[3]=this.fullHeight,this._fullViewport}get aspect(){return this.width/this.height}get padding(){return this._padding}set padding(t){this._padding[it.TOP]===t[it.TOP]&&this._padding[it.RIGHT]===t[it.RIGHT]&&this._padding[it.BOTTOM]===t[it.BOTTOM]&&this._padding[it.LEFT]===t[it.LEFT]||(this._viewport[0]+=t[it.LEFT]-this._padding[it.LEFT],this._viewport[1]+=t[it.BOTTOM]-this._padding[it.BOTTOM],this._viewport[2]-=t[it.RIGHT]+t[it.LEFT]-(this._padding[it.RIGHT]+this._padding[it.LEFT]),this._viewport[3]-=t[it.TOP]+t[it.BOTTOM]-(this._padding[it.TOP]+this._padding[it.BOTTOM]),S(this._padding,t),this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0)}get viewProjectionMatrix(){return this._viewProjectionDirty&&(o(this._viewProjectionMatrix,this.projectionMatrix,this.viewMatrix),this._viewProjectionDirty=!1),this._viewProjectionMatrix}get projectionMatrix(){if(this._projectionDirty){const t=this.width,i=this.height,e=this.near*Math.tan(this.fovY/2),r=e*this.aspect;n(this._projectionMatrix,-r*(1+2*this._padding[it.LEFT]/t),r*(1+2*this._padding[it.RIGHT]/t),-e*(1+2*this._padding[it.BOTTOM]/i),e*(1+2*this._padding[it.TOP]/i),this.near,this.far),this._projectionDirty=!1}return this._projectionMatrix}set projectionMatrix(t){h(this._projectionMatrix,t),this._projectionDirty=!1,this._viewProjectionDirty=!0,this._frustumDirty=!0}get fov(){return this._fov}set fov(t){this._fov=t,this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0}get fovX(){return W(this._fov,this.width,this.height)}set fovX(t){this._fov=X(t,this.width,this.height),this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0}get fovY(){return Y(this._fov,this.width,this.height)}set fovY(t){this._fov=q(t,this.width,this.height),this._projectionDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0}get distance(){return g(this._center,this.eye)}get frustum(){return this._recomputeFrustum(),this._frustum}get viewInverseTransposeMatrix(){return(this._viewInverseTransposeMatrixDirty||this._viewDirty)&&(a(this._viewInverseTransposeMatrix,this.viewMatrix),_(this._viewInverseTransposeMatrix,this._viewInverseTransposeMatrix),this._viewInverseTransposeMatrixDirty=!1),this._viewInverseTransposeMatrix}depthNDCToWorld(t){const i=2*t-1;return 2*this.near*this.far/(this.far+this.near-i*(this.far-this.near))}get perRenderPixelRatio(){return Math.tan(this.fovX/2)/(this.width/2)}get perScreenPixelRatio(){return this.perRenderPixelRatio*this.pixelRatio}get aboveGround(){return this.relativeElevation&&this.relativeElevation>=0}copyFrom(t){d(this._ray.origin,t.eye),d(this._center,t.center),d(this._up,t.up),S(this._viewport,t.viewport),S(this._padding,t.padding),v(this._nearFar,t.nearFar),this._fov=t.fov,this.relativeElevation=t.relativeElevation;const i=t;return this._viewDirty=i._viewDirty,this._viewDirty||(h(this._viewMatrix,t.viewMatrix),d(this._viewRight,t.viewRight),d(this._viewUp,t.viewUp),d(this._viewForward,t.viewForward)),i._projectionDirty?this._projectionDirty=!0:(h(this._projectionMatrix,t.projectionMatrix),this._projectionDirty=!1),this._viewProjectionDirty=!0,this._frustumDirty=i._frustumDirty,this._frustumDirty||(G(this._frustum,t.frustum),this._frustumDirty=!1),i._viewInverseTransposeMatrixDirty?this._viewInverseTransposeMatrixDirty=!0:(h(this._viewInverseTransposeMatrix,t.viewInverseTransposeMatrix),this._viewInverseTransposeMatrixDirty=!1),S(this._fullViewport,t.fullViewport),this.pixelRatio=t.pixelRatio,this}copyViewFrom(t){this.eye=t.eye,this.center=t.center,this.up=t.up}clone(){return(new J).copyFrom(this)}equals(t){return y(this.eye,t.eye)&&y(this._center,t.center)&&y(this._up,t.up)&&E(this._viewport,t.viewport)&&E(this._padding,t.padding)&&c(this._nearFar,t.nearFar)&&this._fov===t.fov&&this.pixelRatio===t.pixelRatio&&this.relativeElevation===t.relativeElevation}almostEquals(t){if(this.pixelRatio!==t.pixelRatio||Math.abs(t.fov-this._fov)>=.001)return!1;const i=5e-4,e=1-1e-10;m(Z,t.eye,t.center),m($,this.eye,this._center);const r=f(Z,$),s=x(Z),h=x($);return r*r>=e*s*h&&D(t.eye,this.eye)<Math.max(s,h)*i*i&&L(t.padding,this._padding)<.5&&L(t.viewport,this._viewport)<.5}computeRenderPixelSizeAt(t){return this.computeRenderPixelSizeAtDist(this._viewDirectionDistance(t))}computeRenderPixelSizeAtDist(t){return t*this.perRenderPixelRatio}computeScreenPixelSizeAt(t){return this.computeScreenPixelSizeAtDist(this._viewDirectionDistance(t))}_viewDirectionDistance(t){return Math.abs(C(this.viewForward,l(Z,t,this.eye)))}computeScreenPixelSizeAtDist(t){return t*this.perScreenPixelRatio}computeDistanceFromRadius(t,i){return t/Math.tan(Math.min(this.fovX,this.fovY)/(2*(i||1)))}getScreenCenter(t=r()){return t[0]=(this.padding[it.LEFT]+this.width/2)/this.pixelRatio,t[1]=(this.padding[it.TOP]+this.height/2)/this.pixelRatio,t}getRenderCenter(t,i=.5,e=.5){return t[0]=this.padding[it.LEFT]+this.width*i,t[1]=this.padding[it.BOTTOM]+this.height*e,t[2]=.5,t}setGLViewport(t){const i=this.viewport,e=this.padding;t.setViewport(i[0]-e[3],i[1]-e[2],i[2]+e[1]+e[3],i[3]+e[0]+e[2])}applyProjection(t,e,r=!1){t!==K&&d(K,t),K[3]=1,r&&(e[2]=-K[2]),b(K,K,this.projectionMatrix),M(K,K,1/Math.abs(K[3]));const s=this.fullViewport;return e[0]=i(0,s[0]+s[2],.5+.5*K[0]),e[1]=i(0,s[1]+s[3],.5+.5*K[1]),r||(e[2]=.5*(K[2]+1)),e}projectToScreen(t,i){this.projectToRenderScreen(t,tt),this.renderToScreen(tt,i)}projectToRenderScreen(t,e){if(K[0]=t[0],K[1]=t[1],K[2]=t[2],K[3]=1,b(K,K,this.viewProjectionMatrix),0===K[3])return null;M(K,K,1/Math.abs(K[3]));const r=this.fullViewport;return"x"in e?(e.x=i(0,r[0]+r[2],.5+.5*K[0]),e.y=i(0,r[1]+r[3],.5+.5*K[1])):(e[0]=i(0,r[0]+r[2],.5+.5*K[0]),e[1]=i(0,r[1]+r[3],.5+.5*K[1]),e.length>2&&(e[2]=.5*(K[2]+1))),e}unprojectFromScreen(t,i){return this.unprojectFromRenderScreen(this.screenToRender(t,tt),i)}unprojectFromRenderScreen(t,i){if(o(Q,this.projectionMatrix,this.viewMatrix),!a(Q,Q))return null;const e=this.fullViewport;return K[0]=2*(t[0]-e[0])/e[2]-1,K[1]=2*(t[1]-e[1])/e[3]-1,K[2]=2*t[2]-1,K[3]=1,b(K,K,Q),0===K[3]?null:(i[0]=K[0]/K[3],i[1]=K[1]/K[3],i[2]=K[2]/K[3],i)}constrainWindowSize(t,i,e,r=e){const s=t*this.pixelRatio,h=i*this.pixelRatio,o=Math.max(s-e/2,0),n=Math.max(this.fullHeight-h-r/2,0),a=-Math.min(s-e/2,0),_=-Math.min(this.fullHeight-h-r/2,0);return[o,n,e-a- -Math.min(this.fullWidth-s-e/2,0),r-_- -Math.min(h-r/2,0)]}computeUp(t){t===z.Global?this._computeUpGlobal():this._computeUpLocal()}screenToRender(t,i){const e=t[0]*this.pixelRatio,r=this.fullHeight-t[1]*this.pixelRatio;return i[0]=e,i[1]=r,i}renderToScreen(t,i){const e=t[0]/this.pixelRatio,r=(this.fullHeight-t[1])/this.pixelRatio;i[0]=e,i[1]=r}_computeUpGlobal(){l(Z,this.center,this.eye);const t=T(this.center);t<1?(j(this._up,0,0,1),this._markViewDirty()):Math.abs(f(Z,this.center))>.9999*T(Z)*t||(R(this._up,Z,this.center),R(this._up,this._up,Z),F(this._up,this._up),this._markViewDirty())}_computeUpLocal(){P(Z,this.eye,this.center),Math.abs(Z[2])<=.9999&&(M(Z,Z,Z[2]),j(this._up,-Z[0],-Z[1],1-Z[2]),F(this._up,this._up),this._markViewDirty())}_compareAndSetView(t,i){"number"==typeof t[0]&&isFinite(t[0])&&"number"==typeof t[1]&&isFinite(t[1])&&"number"==typeof t[2]&&isFinite(t[2])?y(t,i)||(d(i,t),this._markViewDirty()):N.warn("Camera vector contains invalid number, ignoring value")}_markViewDirty(){this._viewDirty=!0,this._frustumDirty=!0,this._viewProjectionDirty=!0}_recomputeFrustum(){this._frustumDirty&&(U(this.viewMatrix,this.projectionMatrix,this._frustum),this._frustumDirty=!1)}_ensureViewClean(){this._viewDirty&&(p(this._viewMatrix,this.eye,this._center,this._up),j(this._viewForward,-this._viewMatrix[2],-this._viewMatrix[6],-this._viewMatrix[10]),j(this._viewUp,this._viewMatrix[1],this._viewMatrix[5],this._viewMatrix[9]),j(this._viewRight,this._viewMatrix[0],this._viewMatrix[4],this._viewMatrix[8]),this._viewDirty=!1,this._viewInverseTransposeMatrixDirty=!0)}}const K=k(),Q=u(),Z=O(),$=O(),tt=s();var it;!function(t){t[t.TOP=0]="TOP",t[t.RIGHT=1]="RIGHT",t[t.BOTTOM=2]="BOTTOM",t[t.LEFT=3]="LEFT"}(it||(it={}));export{it as PaddingSide,J as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.23/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{disposeMaybe as
|
|
5
|
+
import{disposeMaybe as e,isNone as t}from"../../../../core/maybe.js";import{OverlayIndex as r}from"../../terrain/interfaces.js";import{createQuadVAO as s}from"./glUtil3D.js";import{C as o}from"../../../../chunks/Compositing.glsl.js";import{CompositingTechniqueConfiguration as i,AlphaMode as a,CompositingTechnique as n}from"../shaders/CompositingTechnique.js";import{PrimitiveType as c}from"../../../webgl/enums.js";import{vertexCount as h}from"../../../webgl/Util.js";class p{constructor(e,t){this._rctx=e,this._techniqueRepository=t}dispose(){this._vao=e(this._vao)}compositeTransparent(e,t,r,s=1){const i=this._rctx;u.alphaMode=a.Alpha,u.function=o.Transparency,u.hasOpacityFactor=1!==s;const p=this._techniqueRepository.acquire(n,u),m=i.useTechnique(p);m.bindTexture(e,"colorTexture"),m.bindTexture(t,"alphaTexture"),m.bindTexture(r,"frontFaceTexture");const l=this._ensureVAO();i.bindVAO(l),i.drawArrays(c.TRIANGLE_STRIP,0,h(l,"geometry")),p.release()}composite(e,t=a.None,s=1,i=o.Standard,p=r.INNER){const m=this._rctx;u.alphaMode=t,u.function=i,u.hasOpacityFactor=1!==s;const l=this._techniqueRepository.acquire(n,u),T=m.useTechnique(l);T.bindTexture(e,"tex"),u.hasOpacityFactor&&T.setUniform1f("opacity",s),i===o.OverlayWithTransparency&&T.setUniform1i("overlayIdx",p);const _=this._ensureVAO();m.bindVAO(_),m.drawArrays(c.TRIANGLE_STRIP,0,h(_,"geometry")),l.release()}_ensureVAO(){return t(this._vao)&&(this._vao=s(this._rctx)),this._vao}}const u=new i;export{p as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.23/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{VertexAttribute as O}from"./
|
|
5
|
+
import{VertexAttribute as O}from"./VertexAttribute.js";const E=new Map([[O.POSITION,0],[O.NORMAL,1],[O.UV0,2],[O.COLOR,3],[O.SIZE,4],[O.TANGENT,4],[O.AUXPOS1,5],[O.SYMBOLCOLOR,5],[O.AUXPOS2,6],[O.FEATUREATTRIBUTE,6],[O.INSTANCEFEATUREATTRIBUTE,6],[O.INSTANCECOLOR,7],[O.MODEL,8],[O.MODELNORMAL,12],[O.MODELORIGINHI,11],[O.MODELORIGINLO,15]]);export{E as Default3D};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.23/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{VertexAttribute as O}from"./
|
|
5
|
+
import{VertexAttribute as O}from"./VertexAttribute.js";import{DataType as e}from"../../../webgl/enums.js";import{VertexElementDescriptor as T}from"../../../webgl/VertexElementDescriptor.js";const n=[new T(O.POSITION,3,e.FLOAT,0,12)],w=[new T(O.POSITION,3,e.FLOAT,0,20),new T(O.UV0,2,e.FLOAT,12,20)],I=[new T(O.POSITION,3,e.FLOAT,0,32),new T(O.NORMAL,3,e.FLOAT,12,32),new T(O.UV0,2,e.FLOAT,24,32)],r=[new T(O.POSITION,3,e.FLOAT,0,16),new T(O.COLOR,4,e.UNSIGNED_BYTE,12,16)],t=[new T(O.POSITION,2,e.FLOAT,0,8)],A=[new T(O.POSITION,2,e.FLOAT,0,16),new T(O.UV0,2,e.FLOAT,8,16)];export{t as Pos2,A as Pos2Tex,n as Pos3,r as Pos3Col,I as Pos3NormalTex,w as Pos3Tex};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.23/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{isNone as t}from"../../../../core/maybe.js";import{PrimitiveType as e
|
|
5
|
+
import{isNone as t}from"../../../../core/maybe.js";import{PrimitiveType as e}from"./basicInterfaces.js";import{BoundingInfo as i}from"./BoundingInfo.js";import{ContentObject as n}from"./ContentObject.js";import{ContentObjectType as s}from"./ContentObjectType.js";import{generateDefaultIndexArray as r,computeAttachmentOriginTriangles as o,computeAttachmentOriginPoints as u}from"./geometryDataUtils.js";import{assert as g}from"./Util.js";import{VertexAttribute as h}from"./VertexAttribute.js";class c extends n{constructor(t,i=[],n=e.Triangle,o=-1){super(),this._primitiveType=n,this.edgeIndicesLength=o,this.type=s.Geometry,this._vertexAttributes=new Map,this._indices=new Map,this._boundingInfo=null;for(const[e,s]of t)s&&this._vertexAttributes.set(e,{...s});if(null==i||0===i.length){const t=d(this._vertexAttributes),e=r(t);this.edgeIndicesLength=this.edgeIndicesLength<0?t:this.edgeIndicesLength;for(const i of this._vertexAttributes.keys())this._indices.set(i,e)}else for(const[e,s]of i)s&&(this._indices.set(e,l(s)),e===h.POSITION&&(this.edgeIndicesLength=this.edgeIndicesLength<0?this._indices.get(e).length:this.edgeIndicesLength))}get vertexAttributes(){return this._vertexAttributes}getMutableAttribute(t){const e=this._vertexAttributes.get(t);return e&&!e.exclusive&&(e.data=Array.from(e.data),e.exclusive=!0),e}get indices(){return this._indices}get indexCount(){const t=this._indices.values().next().value;return t?t.length:0}get primitiveType(){return this._primitiveType}get faceCount(){return this.indexCount/3}get boundingInfo(){return t(this._boundingInfo)&&(this._boundingInfo=this._calculateBoundingInfo()),this._boundingInfo}computeAttachmentOrigin(t){return this.primitiveType===e.Triangle?this._computeAttachmentOriginTriangles(t):this._computeAttachmentOriginPoints(t)}_computeAttachmentOriginTriangles(t){const e=this.indices.get(h.POSITION),i=this.vertexAttributes.get(h.POSITION);return o(i,e,t)}_computeAttachmentOriginPoints(t){const e=this.indices.get(h.POSITION),i=this.vertexAttributes.get(h.POSITION);return u(i,e,t)}invalidateBoundingInfo(){this._boundingInfo=null}_calculateBoundingInfo(){const t=this.indices.get(h.POSITION);if(0===t.length)return null;const n=this.primitiveType===e.Triangle?3:1;g(t.length%n==0,"Indexing error: "+t.length+" not divisible by "+n);const s=r(t.length/n),o=this.vertexAttributes.get(h.POSITION);return new i(s,n,t,o)}}function d(t){const e=t.values().next().value;return null==e?0:e.data.length/e.size}function l(t){if(t.BYTES_PER_ELEMENT===Uint16Array.BYTES_PER_ELEMENT)return t;for(const e of t)if(e>=65536)return t;return new Uint16Array(t)}export{c as Geometry};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.23/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{f as t,c as e,n,a as r,b as a,d as o,s,g as l,m as i}from"../../../../chunks/vec3.js";import{f as c,c as u,a as h}from"../../../../chunks/vec3f32.js";import{c as f}from"../../../../chunks/vec3f64.js";import{create as O,fromPositionAndNormal as A,intersectRay as y}from"../../../../geometry/support/plane.js";import{wrap as I}from"../../../../geometry/support/ray.js";import{VertexAttribute as g,PrimitiveType as M}from"./basicInterfaces.js";import{Vec3Compact as d}from"./BufferVectorMath.js";import{Geometry as m}from"./Geometry.js";import{generateDefaultIndexArray as w}from"./geometryDataUtils.js";import{assert as N}from"./Util.js";const P=d;var U,S,p,z;!function(t){const e=.5,n=[[-e,-e,e],[e,-e,e],[e,e,e],[-e,e,e],[-e,-e,-e],[e,-e,-e],[e,e,-e],[-e,e,-e]],r=[0,0,1,-1,0,0,1,0,0,0,-1,0,0,1,0,0,0,-1],a=[0,0,1,0,1,1,0,1],o=new Uint16Array([0,1,2,2,3,0,4,0,3,3,7,4,1,5,6,6,2,1,1,0,4,4,5,1,3,2,6,6,7,3,5,4,7,7,6,5]),s=new Uint16Array(36);for(let c=0;c<6;c++)for(let t=0;t<6;t++)s[6*c+t]=c;const l=new Uint16Array(36);for(let c=0;c<6;c++)l[6*c+0]=0,l[6*c+1]=1,l[6*c+2]=2,l[6*c+3]=2,l[6*c+4]=3,l[6*c+5]=0;function i(t){Array.isArray(t)||(t=[t,t,t]);const e=new Array(24);for(let r=0;r<8;r++)e[3*r]=n[r][0]*t[0],e[3*r+1]=n[r][1]*t[1],e[3*r+2]=n[r][2]*t[2];return new m([[g.POSITION,{size:3,data:e,exclusive:!0}],[g.NORMAL,{size:3,data:r}],[g.UV0,{size:2,data:a}]],[[g.POSITION,o],[g.NORMAL,s],[g.UV0,l]])}t.createGeometry=i}(U||(U={})),function(t){const e=.5,n=[[-e,0,-e],[e,0,-e],[e,0,e],[-e,0,e],[0,-e,0],[0,e,0]],r=[0,1,-1,1,1,0,0,1,1,-1,1,0,0,-1,-1,1,-1,0,0,-1,1,-1,-1,0],a=new Uint16Array([5,1,0,5,2,1,5,3,2,5,0,3,4,0,1,4,1,2,4,2,3,4,3,0]),o=new Uint16Array([0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7]);function s(t){Array.isArray(t)||(t=[t,t,t]);const e=new Array(18);for(let r=0;r<6;r++)e[3*r]=n[r][0]*t[0],e[3*r+1]=n[r][1]*t[1],e[3*r+2]=n[r][2]*t[2];return new m([[g.POSITION,{size:3,data:e,exclusive:!0}],[g.NORMAL,{size:3,data:r}]],[[g.POSITION,a],[g.NORMAL,o]])}t.createGeometry=s}(S||(S={})),function(r){const a=.5,o=0,s=c(-a,o,-a),l=c(a,o,-a),i=c(0,o,a),h=c(0,o+a,0),f=u(),O=u(),A=u(),y=u(),I=u();t(f,s,h),t(O,s,l),e(A,f,O),n(A,A),t(f,l,h),t(O,l,i),e(y,f,O),n(y,y),t(f,i,h),t(O,i,s),e(I,f,O),n(I,I);const M=[s,l,i,h],d=[0,-1,0,A[0],A[1],A[2],y[0],y[1],y[2],I[0],I[1],I[2]],w=[0,1,2,3,1,0,3,2,1,3,0,2],N=[0,0,0,1,1,1,2,2,2,3,3,3];function P(t){Array.isArray(t)||(t=[t,t,t]);const e=new Array(12);for(let n=0;n<4;n++)e[3*n]=M[n][0]*t[0],e[3*n+1]=M[n][1]*t[1],e[3*n+2]=M[n][2]*t[2];return new m([[g.POSITION,{size:3,data:e,exclusive:!0}],[g.NORMAL,{size:3,data:d}]],[[g.POSITION,new Uint16Array(w)],[g.NORMAL,new Uint16Array(N)]])}r.createGeometry=P}(p||(p={})),function(d){function z(t,e,n,r={uv:!0}){const a=-Math.PI,o=2*Math.PI,s=-Math.PI/2,l=Math.PI,i=Math.max(3,Math.floor(e)),c=Math.max(2,Math.floor(n)),u=(i+1)*(c+1),h=new Float32Array(3*u),f=new Float32Array(3*u),O=new Float32Array(2*u),A=[];let y=0;for(let g=0;g<=c;g++){const e=[],n=g/c,r=s+n*l,u=Math.cos(r);for(let s=0;s<=i;s++){const l=s/i,c=a+l*o,A=Math.cos(c)*u,I=Math.sin(r),g=-Math.sin(c)*u;h[3*y]=A*t,h[3*y+1]=I*t,h[3*y+2]=g*t,f[3*y]=A,f[3*y+1]=I,f[3*y+2]=g,O[2*y]=l,O[2*y+1]=n,e.push(y),++y}A.push(e)}const I=new Uint32Array(2*i*(c-1)*3);y=0;for(let g=0;g<c;g++)for(let t=0;t<i;t++){const e=A[g][t],n=A[g][t+1],r=A[g+1][t+1],a=A[g+1][t];0===g?(I[y++]=e,I[y++]=r,I[y++]=a):g===c-1?(I[y++]=e,I[y++]=n,I[y++]=r):(I[y++]=e,I[y++]=n,I[y++]=r,I[y++]=r,I[y++]=a,I[y++]=e)}const M=[[g.POSITION,I],[g.NORMAL,I]],d=[[g.POSITION,{size:3,data:h,exclusive:!0}],[g.NORMAL,{size:3,data:f,exclusive:!0}]];return r.uv&&(d.push([g.UV0,{size:2,data:O,exclusive:!0}]),M.push([g.UV0,I])),r.offset&&(M[0][0]=g.OFFSET,d[0][0]=g.OFFSET,M.push([g.POSITION,new Uint32Array(I.length)]),d.push([g.POSITION,{size:3,data:Float64Array.from(r.offset),exclusive:!0}])),new m(d,M)}function T(t,e,n){const r=t;let a,o;if(n)a=[0,-1,0,1,0,0,0,0,1,-1,0,0,0,0,-1,0,1,0],o=new Uint32Array([0,1,2,0,2,3,0,3,4,0,4,1,1,5,2,2,5,3,3,5,4,4,5,1]);else{const t=r*(1+Math.sqrt(5))/2;a=[-r,t,0,r,t,0,-r,-t,0,r,-t,0,0,-r,t,0,r,t,0,-r,-t,0,r,-t,t,0,-r,t,0,r,-t,0,-r,-t,0,r],o=new Uint32Array([0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1])}for(let h=0;h<a.length;h+=3)P.scale(a,h,t/P.length(a,h));let s={};function l(e,n){e>n&&([e,n]=[n,e]);const r=e.toString()+"."+n.toString();if(s[r])return s[r];let o=a.length;return a.length+=3,P.add(a,3*e,a,3*n,a,o),P.scale(a,o,t/P.length(a,o)),o/=3,s[r]=o,o}for(let h=0;h<e;h++){const t=o.length,e=new Uint32Array(4*t);for(let n=0;n<t;n+=3){const t=o[n],r=o[n+1],a=o[n+2],s=l(t,r),i=l(r,a),c=l(a,t),u=4*n;e[u]=t,e[u+1]=s,e[u+2]=c,e[u+3]=r,e[u+4]=i,e[u+5]=s,e[u+6]=a,e[u+7]=c,e[u+8]=i,e[u+9]=s,e[u+10]=i,e[u+11]=c}o=e,s={}}const i=new Float32Array(a);for(let h=0;h<i.length;h+=3)P.normalize(i,h);const c=[[g.POSITION,o],[g.NORMAL,o]],u=[[g.POSITION,{size:3,data:new Float32Array(a),exclusive:!0}],[g.NORMAL,{size:3,data:i,exclusive:!0}]];return new m(u,c)}function L(t,e,n,r,a,o,s){const l=e?[e[0],e[1],e[2]]:[0,0,0],i=t?[t[0],t[1],t[2]]:[0,0,1];o=o||[0,0];const c=n?[255*n[0],255*n[1],255*n[2],n.length>3?255*n[3]:255]:[255,255,255,255],u=null!=r&&2===r.length?r:[1,1],h=[[g.POSITION,{size:3,data:l,exclusive:!0}],[g.NORMAL,{size:3,data:i,exclusive:!0}],[g.UV0,{size:o.length,data:o}],[g.COLOR,{size:4,data:c,exclusive:!0}],[g.SIZE,{size:2,data:u}]];if(null!=a){const t=new Float32Array([a[0],a[1],a[2],a[3]]);h.push([g.AUXPOS1,{size:4,data:t}])}if(null!=s){const t=new Float32Array([s[0],s[1],s[2],s[3]]);h.push([g.AUXPOS2,{size:4,data:t}])}return new m(h,null,M.Point)}function R(t,e,n,r,a,o,s,l){if(null!=t){const{data:e}=l.getMutableAttribute(g.NORMAL);e[0]=t[0],e[1]=t[1],e[2]=t[2]}if(null!=e){const{data:t}=l.getMutableAttribute(g.POSITION);t[0]=e[0],t[1]=e[1],t[2]=e[2]}if(null!=n){const{data:t}=l.getMutableAttribute(g.COLOR);t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3]}if(null!=r){const{data:t}=l.getMutableAttribute(g.SIZE);t[0]=r[0],t[1]=r[1]}if(null!=a){const{data:t}=l.getMutableAttribute(g.AUXPOS1);t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3]}if(null!=o){const{data:t}=l.getMutableAttribute(g.UV0);t[0]=o[0],t[1]=o[1]}if(null!=s){const{data:t}=l.getMutableAttribute(g.AUXPOS2);t[0]=s[0],t[1]=s[1],t[2]=s[2],t[3]=s[3]}}function b(t,e){const n=new Float32Array(3*t.length),r=new Float32Array(e?3*t.length:3),a=new Uint32Array(t.length),o=new Uint32Array(t.length);for(let c=0;c<t.length;c++)n[3*c]=t[c][0],n[3*c+1]=t[c][1],n[3*c+2]=t[c][2],e&&(r[3*c]=e[c][0],r[3*c+1]=e[c][1],r[3*c+2]=e[c][2]),a[c]=c,o[c]=0;e||(r[0]=0,r[1]=1,r[2]=0);const s=[0,0],l=[[g.POSITION,a],[g.NORMAL,e?a:o],[g.UV0,o]],i=[[g.POSITION,{size:3,data:n,exclusive:!0}],[g.NORMAL,{size:3,data:r,exclusive:!0}],[g.UV0,{size:2,data:s,exclusive:!0}]];return new m(i,l,M.Point)}function G(){const t=[0,0,0,0,0,100,100,0,0],e=new Uint16Array([0,1,2]),n=[0,1,0],r=new Uint16Array([0,0,0]),a=[0,0],o=new Uint16Array([0,0,0]),s=[[g.POSITION,e],[g.NORMAL,r],[g.UV0,o]],l=[[g.POSITION,{size:3,data:t,exclusive:!0}],[g.NORMAL,{size:3,data:n,exclusive:!0}],[g.UV0,{size:2,data:a,exclusive:!0}]];return new m(l,s)}d.createBoxGeometry=U.createGeometry,d.createDiamondGeometry=S.createGeometry,d.createTetrahedronGeometry=p.createGeometry,d.createSphereGeometry=z,d.createPolySphereGeometry=T,d.createPointGeometry=L,d.updatePointGeometry=R,d.createPointArrayGeometry=b,d.createTriangleGeometry=G;const F=[[-1,-1,0],[1,-1,0],[1,1,0],[-1,1,0]];function V(t=F){const e=new Array(12);for(let c=0;c<4;c++)for(let n=0;n<3;n++)e[3*c+n]=t[c][n];const n=new Uint32Array([0,1,2,2,3,0]),r=[0,0,1],a=new Uint32Array([0,0,0,0,0,0]),o=[0,0,1,0,1,1,0,1],s=[255,255,255,255],l=[[g.POSITION,n],[g.NORMAL,a],[g.UV0,n],[g.COLOR,a]],i=[[g.POSITION,{size:3,data:e,exclusive:!0}],[g.NORMAL,{size:3,data:r,exclusive:!0}],[g.UV0,{size:2,data:o,exclusive:!0}],[g.COLOR,{size:4,data:s,exclusive:!0}]];return new m(i,l)}function j(t,e,n,r,a=!0,o=!0){let s=0;const l=e,i=t;let u=c(0,s,0),h=c(0,s+i,0),f=c(0,-1,0),O=c(0,1,0);r&&(s=i,h=c(0,0,0),u=c(0,s,0),f=c(0,1,0),O=c(0,-1,0));const A=[h,u],y=[f,O],I=n+2,M=Math.sqrt(i*i+l*l);if(r)for(let g=n-1;g>=0;g--){const t=g*(2*Math.PI/n),e=c(Math.cos(t)*l,s,Math.sin(t)*l);A.push(e);const r=c(i*Math.cos(t)/M,-l/M,i*Math.sin(t)/M);y.push(r)}else for(let g=0;g<n;g++){const t=g*(2*Math.PI/n),e=c(Math.cos(t)*l,s,Math.sin(t)*l);A.push(e);const r=c(i*Math.cos(t)/M,l/M,i*Math.sin(t)/M);y.push(r)}const d=new Uint32Array(2*(n+2)*3),w=new Uint32Array(2*(n+2)*3);let N=0,P=0;if(a){for(let t=3;t<A.length;t++)d[N++]=1,d[N++]=t-1,d[N++]=t,w[P++]=0,w[P++]=0,w[P++]=0;d[N++]=A.length-1,d[N++]=2,d[N++]=1,w[P++]=0,w[P++]=0,w[P++]=0}if(o){for(let t=3;t<A.length;t++)d[N++]=t,d[N++]=t-1,d[N++]=0,w[P++]=t,w[P++]=t-1,w[P++]=1;d[N++]=0,d[N++]=2,d[N++]=A.length-1,w[P++]=1,w[P++]=2,w[P++]=y.length-1}const U=new Float32Array(3*I);for(let c=0;c<I;c++)U[3*c]=A[c][0],U[3*c+1]=A[c][1],U[3*c+2]=A[c][2];const S=new Float32Array(3*I);for(let c=0;c<I;c++)S[3*c]=y[c][0],S[3*c+1]=y[c][1],S[3*c+2]=y[c][2];const p=[[g.POSITION,d],[g.NORMAL,w]],z=[[g.POSITION,{size:3,data:U,exclusive:!0}],[g.NORMAL,{size:3,data:S,exclusive:!0}]];return new m(z,p)}function C(t,l,i,f,O,A){const y=f?h(f):c(1,0,0),I=O?h(O):c(0,0,0);A=null==A||A;const M=u();n(M,y);const d=u();r(d,M,Math.abs(t));const w=u();r(w,d,-.5),a(w,w,I);const N=c(0,1,0);Math.abs(1-o(M,N))<.2&&s(N,0,0,1);const P=u();e(P,M,N),n(P,P),e(N,P,M);const U=2*i+(A?2:0),S=i+(A?2:0),p=new Float32Array(3*U),z=new Float32Array(3*S),x=new Float32Array(2*U),v=new Uint32Array(3*i*(A?4:2)),T=new Uint32Array(3*i*(A?4:2));A&&(p[3*(U-2)+0]=w[0],p[3*(U-2)+1]=w[1],p[3*(U-2)+2]=w[2],x[2*(U-2)]=0,x[2*(U-2)+1]=0,p[3*(U-1)+0]=p[3*(U-2)+0]+d[0],p[3*(U-1)+1]=p[3*(U-2)+1]+d[1],p[3*(U-1)+2]=p[3*(U-2)+2]+d[2],x[2*(U-1)]=1,x[2*(U-1)+1]=1,z[3*(S-2)+0]=-M[0],z[3*(S-2)+1]=-M[1],z[3*(S-2)+2]=-M[2],z[3*(S-1)+0]=M[0],z[3*(S-1)+1]=M[1],z[3*(S-1)+2]=M[2]);const L=function(t,e,n){v[t]=e,T[t]=n};let R=0;const b=u(),G=u();for(let e=0;e<i;e++){const t=e*(2*Math.PI/i);r(b,N,Math.sin(t)),r(G,P,Math.cos(t)),a(b,b,G),z[3*e+0]=b[0],z[3*e+1]=b[1],z[3*e+2]=b[2],r(b,b,l),a(b,b,w),p[3*e+0]=b[0],p[3*e+1]=b[1],p[3*e+2]=b[2],x[2*e+0]=e/i,x[2*e+1]=0,p[3*(e+i)+0]=p[3*e+0]+d[0],p[3*(e+i)+1]=p[3*e+1]+d[1],p[3*(e+i)+2]=p[3*e+2]+d[2],x[2*(e+i)+0]=e/i,x[2*e+1]=1;const n=(e+1)%i;L(R++,e,e),L(R++,e+i,e),L(R++,n,n),L(R++,n,n),L(R++,e+i,e),L(R++,n+i,n)}if(A){for(let t=0;t<i;t++){const e=(t+1)%i;L(R++,U-2,S-2),L(R++,t,S-2),L(R++,e,S-2)}for(let t=0;t<i;t++){const e=(t+1)%i;L(R++,t+i,S-1),L(R++,U-1,S-1),L(R++,e+i,S-1)}}const F=[[g.POSITION,v],[g.NORMAL,T],[g.UV0,v]],V=[[g.POSITION,{size:3,data:p,exclusive:!0}],[g.NORMAL,{size:3,data:z,exclusive:!0}],[g.UV0,{size:2,data:x,exclusive:!0}]];return new m(V,F)}function E(t,e,n,r,a){n=n||10,r=null==r||r,N(t.length>1);const o=[[0,0,0]],s=[],l=[];for(let i=0;i<n;i++){s.push([0,-i-1,-(i+1)%n-1]);const t=i/n*2*Math.PI;l.push([Math.cos(t)*e,Math.sin(t)*e])}return d.createPathExtrusionGeometry(l,t,o,s,r,a)}function k(o,i,h,M,d,w=c(0,0,0)){const N=o.length,P=new Float32Array(i.length*N*3+(6*h.length||0)),U=new Float32Array(i.length*N*3+(h?6:0)),S=(i.length-1)*N*6+3*M.length*2,p=new Uint32Array(S),z=new Uint32Array(S);let v=0,T=0,L=0,R=0;const b=u(),G=u(),F=u(),V=u(),j=u(),C=u(),E=u(),k=f(),B=u(),D=u(),X=u(),q=u(),Z=u(),J=O();s(B,0,1,0),t(G,i[1],i[0]),n(G,G),d?(a(k,i[0],w),n(F,k)):s(F,0,0,1),H(G,F,B,B,j,F,x),l(V,F),l(q,j);for(let t=0;t<h.length;t++)r(C,j,h[t][0]),r(k,F,h[t][2]),a(C,C,k),a(C,C,i[0]),P[v++]=C[0],P[v++]=C[1],P[v++]=C[2];U[T++]=-G[0],U[T++]=-G[1],U[T++]=-G[2];for(let t=0;t<M.length;t++)p[L++]=M[t][0]>0?M[t][0]:-M[t][0]-1+h.length,p[L++]=M[t][1]>0?M[t][1]:-M[t][1]-1+h.length,p[L++]=M[t][2]>0?M[t][2]:-M[t][2]-1+h.length,z[R++]=0,z[R++]=0,z[R++]=0;let K=h.length;const Q=h.length-1;for(let s=0;s<i.length;s++){let c=!1;if(s>0){l(b,G),s<i.length-1?(t(G,i[s+1],i[s]),n(G,G)):c=!0,a(D,b,G),n(D,D),a(X,i[s-1],V),A(i[s],D,J);y(J,I(X,b),k)?(t(k,k,i[s]),n(F,k),e(j,D,F),n(j,j)):H(D,V,q,B,j,F,x),l(V,F),l(q,j)}d&&(a(k,i[s],w),n(Z,k));for(let t=0;t<N;t++)if(r(C,j,o[t][0]),r(k,F,o[t][1]),a(C,C,k),n(E,C),U[T++]=E[0],U[T++]=E[1],U[T++]=E[2],a(C,C,i[s]),P[v++]=C[0],P[v++]=C[1],P[v++]=C[2],!c){const e=(t+1)%N;p[L++]=K+t,p[L++]=K+N+t,p[L++]=K+e,p[L++]=K+e,p[L++]=K+N+t,p[L++]=K+N+e;for(let t=0;t<6;t++)z[R++]=p[L-6+t]-Q}K+=N}const W=i[i.length-1];for(let t=0;t<h.length;t++)r(C,j,h[t][0]),r(k,F,h[t][1]),a(C,C,k),a(C,C,W),P[v++]=C[0],P[v++]=C[1],P[v++]=C[2];const Y=T/3;U[T++]=G[0],U[T++]=G[1],U[T++]=G[2];const $=K-N;for(let t=0;t<M.length;t++)p[L++]=M[t][0]>=0?K+M[t][0]:-M[t][0]-1+$,p[L++]=M[t][2]>=0?K+M[t][2]:-M[t][2]-1+$,p[L++]=M[t][1]>=0?K+M[t][1]:-M[t][1]-1+$,z[R++]=Y,z[R++]=Y,z[R++]=Y;const _=[[g.POSITION,p],[g.NORMAL,z]],tt=[[g.POSITION,{size:3,data:P,exclusive:!0}],[g.NORMAL,{size:3,data:U,exclusive:!0}]];return new m(tt,_)}function B(t,e,n){N(t.length>1,"createPolylineGeometry(): polyline needs at least 2 points"),N(3===t[0].length,"createPolylineGeometry(): malformed vertex"),N(null==e||e.length===t.length,"createPolylineGeometry: need same number of points and normals"),N(null==e||3===e[0].length,"createPolylineGeometry(): malformed normal");const r=new Float64Array(3*t.length),a=new Uint32Array(2*(t.length-1));let o=0,s=0;for(let c=0;c<t.length;c++){for(let e=0;e<3;e++)r[o++]=t[c][e];c>0&&(a[s++]=c-1,a[s++]=c)}const l=[],i=[];if(l.push([g.POSITION,a]),i.push([g.POSITION,{size:3,data:r,exclusive:!0}]),e){const n=new Float32Array(3*e.length);let r=0;for(let a=0;a<t.length;a++)for(let t=0;t<3;t++)n[r++]=e[a][t];l.push([g.NORMAL,a]),i.push([g.NORMAL,{size:3,data:n,exclusive:!0}])}return n&&(i.push([g.COLOR,{size:4,data:n}]),l.push([g.COLOR,w(n.length/4)])),new m(i,l,M.Line)}function D(t,e,n,r,a=0){const o=new Array(18),s=[[-e,a,r/2],[n,a,r/2],[0,t+a,r/2],[-e,a,-r/2],[n,a,-r/2],[0,t+a,-r/2]],l=new Uint16Array([0,1,2,3,0,2,2,5,3,1,4,5,5,2,1,1,0,3,3,4,1,4,3,5]);for(let i=0;i<6;i++)o[3*i]=s[i][0],o[3*i+1]=s[i][1],o[3*i+2]=s[i][2];return new m([[g.POSITION,{size:3,data:o,exclusive:!0}]],[[g.POSITION,l]])}function X(t,e){const n=t.getMutableAttribute(g.POSITION).data;for(let r=0;r<n.length;r+=3){const t=n[r],a=n[r+1],o=n[r+2];s(v,t,a,o),i(v,v,e),n[r]=v[0],n[r+1]=v[1],n[r+2]=v[2]}}function q(t,e=t){const n=t.vertexAttributes,r=n.get(g.POSITION).data,a=n.get(g.NORMAL).data;if(a){const t=e.getMutableAttribute(g.NORMAL).data;for(let e=0;e<a.length;e+=3){const n=a[e+1];t[e+1]=-a[e+2],t[e+2]=n}}if(r){const t=e.getMutableAttribute(g.POSITION).data;for(let e=0;e<r.length;e+=3){const n=r[e+1];t[e+1]=-r[e+2],t[e+2]=n}}return e}function Z(t,r,a,s,l){return!(Math.abs(o(r,t))>l)&&(e(a,t,r),n(a,a),e(s,a,t),n(s,s),!0)}function H(t,e,n,r,a,o,s){return Z(t,e,a,o,s)||Z(t,n,a,o,s)||Z(t,r,a,o,s)}d.createSquareGeometry=V,d.createConeGeometry=j,d.createCylinderGeometry=C,d.createTubeGeometry=E,d.createPathExtrusionGeometry=k,d.createPolylineGeometry=B,d.createExtrudedTriangle=D,d.transformInPlace=X,d.cgToGIS=q,d.makeOrthoBasisDirUp=Z,d.makeOrthoBasisDirUpFallback=H}(z||(z={}));const x=.99619469809,v=u(),T=z;export{T as default};
|
|
5
|
+
import{f as t,c as e,n,a as r,b as a,d as o,s,g as l,m as i}from"../../../../chunks/vec3.js";import{f as c,c as u,a as f}from"../../../../chunks/vec3f32.js";import{c as h}from"../../../../chunks/vec3f64.js";import{create as O,fromPositionAndNormal as A,intersectRay as y}from"../../../../geometry/support/plane.js";import{wrap as I}from"../../../../geometry/support/ray.js";import{PrimitiveType as g}from"./basicInterfaces.js";import{Vec3Compact as M}from"./BufferVectorMath.js";import{Geometry as m}from"./Geometry.js";import{generateDefaultIndexArray as d}from"./geometryDataUtils.js";import{assert as w}from"./Util.js";import{VertexAttribute as N}from"./VertexAttribute.js";const P=M;var U,S,p,x;!function(t){const e=.5,n=[[-e,-e,e],[e,-e,e],[e,e,e],[-e,e,e],[-e,-e,-e],[e,-e,-e],[e,e,-e],[-e,e,-e]],r=[0,0,1,-1,0,0,1,0,0,0,-1,0,0,1,0,0,0,-1],a=[0,0,1,0,1,1,0,1],o=new Uint16Array([0,1,2,2,3,0,4,0,3,3,7,4,1,5,6,6,2,1,1,0,4,4,5,1,3,2,6,6,7,3,5,4,7,7,6,5]),s=new Uint16Array(36);for(let c=0;c<6;c++)for(let t=0;t<6;t++)s[6*c+t]=c;const l=new Uint16Array(36);for(let c=0;c<6;c++)l[6*c+0]=0,l[6*c+1]=1,l[6*c+2]=2,l[6*c+3]=2,l[6*c+4]=3,l[6*c+5]=0;function i(t){Array.isArray(t)||(t=[t,t,t]);const e=new Array(24);for(let r=0;r<8;r++)e[3*r]=n[r][0]*t[0],e[3*r+1]=n[r][1]*t[1],e[3*r+2]=n[r][2]*t[2];return new m([[N.POSITION,{size:3,data:e,exclusive:!0}],[N.NORMAL,{size:3,data:r}],[N.UV0,{size:2,data:a}]],[[N.POSITION,o],[N.NORMAL,s],[N.UV0,l]])}t.createGeometry=i}(U||(U={})),function(t){const e=.5,n=[[-e,0,-e],[e,0,-e],[e,0,e],[-e,0,e],[0,-e,0],[0,e,0]],r=[0,1,-1,1,1,0,0,1,1,-1,1,0,0,-1,-1,1,-1,0,0,-1,1,-1,-1,0],a=new Uint16Array([5,1,0,5,2,1,5,3,2,5,0,3,4,0,1,4,1,2,4,2,3,4,3,0]),o=new Uint16Array([0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7]);function s(t){Array.isArray(t)||(t=[t,t,t]);const e=new Array(18);for(let r=0;r<6;r++)e[3*r]=n[r][0]*t[0],e[3*r+1]=n[r][1]*t[1],e[3*r+2]=n[r][2]*t[2];return new m([[N.POSITION,{size:3,data:e,exclusive:!0}],[N.NORMAL,{size:3,data:r}]],[[N.POSITION,a],[N.NORMAL,o]])}t.createGeometry=s}(S||(S={})),function(r){const a=.5,o=0,s=c(-a,o,-a),l=c(a,o,-a),i=c(0,o,a),f=c(0,o+a,0),h=u(),O=u(),A=u(),y=u(),I=u();t(h,s,f),t(O,s,l),e(A,h,O),n(A,A),t(h,l,f),t(O,l,i),e(y,h,O),n(y,y),t(h,i,f),t(O,i,s),e(I,h,O),n(I,I);const g=[s,l,i,f],M=[0,-1,0,A[0],A[1],A[2],y[0],y[1],y[2],I[0],I[1],I[2]],d=[0,1,2,3,1,0,3,2,1,3,0,2],w=[0,0,0,1,1,1,2,2,2,3,3,3];function P(t){Array.isArray(t)||(t=[t,t,t]);const e=new Array(12);for(let n=0;n<4;n++)e[3*n]=g[n][0]*t[0],e[3*n+1]=g[n][1]*t[1],e[3*n+2]=g[n][2]*t[2];return new m([[N.POSITION,{size:3,data:e,exclusive:!0}],[N.NORMAL,{size:3,data:M}]],[[N.POSITION,new Uint16Array(d)],[N.NORMAL,new Uint16Array(w)]])}r.createGeometry=P}(p||(p={})),function(M){function x(t,e,n,r={uv:!0}){const a=-Math.PI,o=2*Math.PI,s=-Math.PI/2,l=Math.PI,i=Math.max(3,Math.floor(e)),c=Math.max(2,Math.floor(n)),u=(i+1)*(c+1),f=new Float32Array(3*u),h=new Float32Array(3*u),O=new Float32Array(2*u),A=[];let y=0;for(let m=0;m<=c;m++){const e=[],n=m/c,r=s+n*l,u=Math.cos(r);for(let s=0;s<=i;s++){const l=s/i,c=a+l*o,A=Math.cos(c)*u,I=Math.sin(r),g=-Math.sin(c)*u;f[3*y]=A*t,f[3*y+1]=I*t,f[3*y+2]=g*t,h[3*y]=A,h[3*y+1]=I,h[3*y+2]=g,O[2*y]=l,O[2*y+1]=n,e.push(y),++y}A.push(e)}const I=new Uint32Array(2*i*(c-1)*3);y=0;for(let m=0;m<c;m++)for(let t=0;t<i;t++){const e=A[m][t],n=A[m][t+1],r=A[m+1][t+1],a=A[m+1][t];0===m?(I[y++]=e,I[y++]=r,I[y++]=a):m===c-1?(I[y++]=e,I[y++]=n,I[y++]=r):(I[y++]=e,I[y++]=n,I[y++]=r,I[y++]=r,I[y++]=a,I[y++]=e)}const g=[[N.POSITION,I],[N.NORMAL,I]],M=[[N.POSITION,{size:3,data:f,exclusive:!0}],[N.NORMAL,{size:3,data:h,exclusive:!0}]];return r.uv&&(M.push([N.UV0,{size:2,data:O,exclusive:!0}]),g.push([N.UV0,I])),r.offset&&(g[0][0]=N.OFFSET,M[0][0]=N.OFFSET,g.push([N.POSITION,new Uint32Array(I.length)]),M.push([N.POSITION,{size:3,data:Float64Array.from(r.offset),exclusive:!0}])),new m(M,g)}function T(t,e,n){const r=t;let a,o;if(n)a=[0,-1,0,1,0,0,0,0,1,-1,0,0,0,0,-1,0,1,0],o=new Uint32Array([0,1,2,0,2,3,0,3,4,0,4,1,1,5,2,2,5,3,3,5,4,4,5,1]);else{const t=r*(1+Math.sqrt(5))/2;a=[-r,t,0,r,t,0,-r,-t,0,r,-t,0,0,-r,t,0,r,t,0,-r,-t,0,r,-t,t,0,-r,t,0,r,-t,0,-r,-t,0,r],o=new Uint32Array([0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1])}for(let f=0;f<a.length;f+=3)P.scale(a,f,t/P.length(a,f));let s={};function l(e,n){e>n&&([e,n]=[n,e]);const r=e.toString()+"."+n.toString();if(s[r])return s[r];let o=a.length;return a.length+=3,P.add(a,3*e,a,3*n,a,o),P.scale(a,o,t/P.length(a,o)),o/=3,s[r]=o,o}for(let f=0;f<e;f++){const t=o.length,e=new Uint32Array(4*t);for(let n=0;n<t;n+=3){const t=o[n],r=o[n+1],a=o[n+2],s=l(t,r),i=l(r,a),c=l(a,t),u=4*n;e[u]=t,e[u+1]=s,e[u+2]=c,e[u+3]=r,e[u+4]=i,e[u+5]=s,e[u+6]=a,e[u+7]=c,e[u+8]=i,e[u+9]=s,e[u+10]=i,e[u+11]=c}o=e,s={}}const i=new Float32Array(a);for(let f=0;f<i.length;f+=3)P.normalize(i,f);const c=[[N.POSITION,o],[N.NORMAL,o]],u=[[N.POSITION,{size:3,data:new Float32Array(a),exclusive:!0}],[N.NORMAL,{size:3,data:i,exclusive:!0}]];return new m(u,c)}function L(t,e,n,r,a,o,s){const l=e?[e[0],e[1],e[2]]:[0,0,0],i=t?[t[0],t[1],t[2]]:[0,0,1];o=o||[0,0];const c=n?[255*n[0],255*n[1],255*n[2],n.length>3?255*n[3]:255]:[255,255,255,255],u=null!=r&&2===r.length?r:[1,1],f=[[N.POSITION,{size:3,data:l,exclusive:!0}],[N.NORMAL,{size:3,data:i,exclusive:!0}],[N.UV0,{size:o.length,data:o}],[N.COLOR,{size:4,data:c,exclusive:!0}],[N.SIZE,{size:2,data:u}]];if(null!=a){const t=new Float32Array([a[0],a[1],a[2],a[3]]);f.push([N.AUXPOS1,{size:4,data:t}])}if(null!=s){const t=new Float32Array([s[0],s[1],s[2],s[3]]);f.push([N.AUXPOS2,{size:4,data:t}])}return new m(f,null,g.Point)}function R(t,e,n,r,a,o,s,l){if(null!=t){const{data:e}=l.getMutableAttribute(N.NORMAL);e[0]=t[0],e[1]=t[1],e[2]=t[2]}if(null!=e){const{data:t}=l.getMutableAttribute(N.POSITION);t[0]=e[0],t[1]=e[1],t[2]=e[2]}if(null!=n){const{data:t}=l.getMutableAttribute(N.COLOR);t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3]}if(null!=r){const{data:t}=l.getMutableAttribute(N.SIZE);t[0]=r[0],t[1]=r[1]}if(null!=a){const{data:t}=l.getMutableAttribute(N.AUXPOS1);t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3]}if(null!=o){const{data:t}=l.getMutableAttribute(N.UV0);t[0]=o[0],t[1]=o[1]}if(null!=s){const{data:t}=l.getMutableAttribute(N.AUXPOS2);t[0]=s[0],t[1]=s[1],t[2]=s[2],t[3]=s[3]}}function b(t,e){const n=new Float32Array(3*t.length),r=new Float32Array(e?3*t.length:3),a=new Uint32Array(t.length),o=new Uint32Array(t.length);for(let c=0;c<t.length;c++)n[3*c]=t[c][0],n[3*c+1]=t[c][1],n[3*c+2]=t[c][2],e&&(r[3*c]=e[c][0],r[3*c+1]=e[c][1],r[3*c+2]=e[c][2]),a[c]=c,o[c]=0;e||(r[0]=0,r[1]=1,r[2]=0);const s=[0,0],l=[[N.POSITION,a],[N.NORMAL,e?a:o],[N.UV0,o]],i=[[N.POSITION,{size:3,data:n,exclusive:!0}],[N.NORMAL,{size:3,data:r,exclusive:!0}],[N.UV0,{size:2,data:s,exclusive:!0}]];return new m(i,l,g.Point)}function G(){const t=[0,0,0,0,0,100,100,0,0],e=new Uint16Array([0,1,2]),n=[0,1,0],r=new Uint16Array([0,0,0]),a=[0,0],o=new Uint16Array([0,0,0]),s=[[N.POSITION,e],[N.NORMAL,r],[N.UV0,o]],l=[[N.POSITION,{size:3,data:t,exclusive:!0}],[N.NORMAL,{size:3,data:n,exclusive:!0}],[N.UV0,{size:2,data:a,exclusive:!0}]];return new m(l,s)}M.createBoxGeometry=U.createGeometry,M.createDiamondGeometry=S.createGeometry,M.createTetrahedronGeometry=p.createGeometry,M.createSphereGeometry=x,M.createPolySphereGeometry=T,M.createPointGeometry=L,M.updatePointGeometry=R,M.createPointArrayGeometry=b,M.createTriangleGeometry=G;const F=[[-1,-1,0],[1,-1,0],[1,1,0],[-1,1,0]];function V(t=F){const e=new Array(12);for(let c=0;c<4;c++)for(let n=0;n<3;n++)e[3*c+n]=t[c][n];const n=new Uint32Array([0,1,2,2,3,0]),r=[0,0,1],a=new Uint32Array([0,0,0,0,0,0]),o=[0,0,1,0,1,1,0,1],s=[255,255,255,255],l=[[N.POSITION,n],[N.NORMAL,a],[N.UV0,n],[N.COLOR,a]],i=[[N.POSITION,{size:3,data:e,exclusive:!0}],[N.NORMAL,{size:3,data:r,exclusive:!0}],[N.UV0,{size:2,data:o,exclusive:!0}],[N.COLOR,{size:4,data:s,exclusive:!0}]];return new m(i,l)}function j(t,e,n,r,a=!0,o=!0){let s=0;const l=e,i=t;let u=c(0,s,0),f=c(0,s+i,0),h=c(0,-1,0),O=c(0,1,0);r&&(s=i,f=c(0,0,0),u=c(0,s,0),h=c(0,1,0),O=c(0,-1,0));const A=[f,u],y=[h,O],I=n+2,g=Math.sqrt(i*i+l*l);if(r)for(let m=n-1;m>=0;m--){const t=m*(2*Math.PI/n),e=c(Math.cos(t)*l,s,Math.sin(t)*l);A.push(e);const r=c(i*Math.cos(t)/g,-l/g,i*Math.sin(t)/g);y.push(r)}else for(let m=0;m<n;m++){const t=m*(2*Math.PI/n),e=c(Math.cos(t)*l,s,Math.sin(t)*l);A.push(e);const r=c(i*Math.cos(t)/g,l/g,i*Math.sin(t)/g);y.push(r)}const M=new Uint32Array(2*(n+2)*3),d=new Uint32Array(2*(n+2)*3);let w=0,P=0;if(a){for(let t=3;t<A.length;t++)M[w++]=1,M[w++]=t-1,M[w++]=t,d[P++]=0,d[P++]=0,d[P++]=0;M[w++]=A.length-1,M[w++]=2,M[w++]=1,d[P++]=0,d[P++]=0,d[P++]=0}if(o){for(let t=3;t<A.length;t++)M[w++]=t,M[w++]=t-1,M[w++]=0,d[P++]=t,d[P++]=t-1,d[P++]=1;M[w++]=0,M[w++]=2,M[w++]=A.length-1,d[P++]=1,d[P++]=2,d[P++]=y.length-1}const U=new Float32Array(3*I);for(let c=0;c<I;c++)U[3*c]=A[c][0],U[3*c+1]=A[c][1],U[3*c+2]=A[c][2];const S=new Float32Array(3*I);for(let c=0;c<I;c++)S[3*c]=y[c][0],S[3*c+1]=y[c][1],S[3*c+2]=y[c][2];const p=[[N.POSITION,M],[N.NORMAL,d]],x=[[N.POSITION,{size:3,data:U,exclusive:!0}],[N.NORMAL,{size:3,data:S,exclusive:!0}]];return new m(x,p)}function C(t,l,i,h,O,A){const y=h?f(h):c(1,0,0),I=O?f(O):c(0,0,0);A=null==A||A;const g=u();n(g,y);const M=u();r(M,g,Math.abs(t));const d=u();r(d,M,-.5),a(d,d,I);const w=c(0,1,0);Math.abs(1-o(g,w))<.2&&s(w,0,0,1);const P=u();e(P,g,w),n(P,P),e(w,P,g);const U=2*i+(A?2:0),S=i+(A?2:0),p=new Float32Array(3*U),x=new Float32Array(3*S),z=new Float32Array(2*U),v=new Uint32Array(3*i*(A?4:2)),T=new Uint32Array(3*i*(A?4:2));A&&(p[3*(U-2)+0]=d[0],p[3*(U-2)+1]=d[1],p[3*(U-2)+2]=d[2],z[2*(U-2)]=0,z[2*(U-2)+1]=0,p[3*(U-1)+0]=p[3*(U-2)+0]+M[0],p[3*(U-1)+1]=p[3*(U-2)+1]+M[1],p[3*(U-1)+2]=p[3*(U-2)+2]+M[2],z[2*(U-1)]=1,z[2*(U-1)+1]=1,x[3*(S-2)+0]=-g[0],x[3*(S-2)+1]=-g[1],x[3*(S-2)+2]=-g[2],x[3*(S-1)+0]=g[0],x[3*(S-1)+1]=g[1],x[3*(S-1)+2]=g[2]);const L=function(t,e,n){v[t]=e,T[t]=n};let R=0;const b=u(),G=u();for(let e=0;e<i;e++){const t=e*(2*Math.PI/i);r(b,w,Math.sin(t)),r(G,P,Math.cos(t)),a(b,b,G),x[3*e+0]=b[0],x[3*e+1]=b[1],x[3*e+2]=b[2],r(b,b,l),a(b,b,d),p[3*e+0]=b[0],p[3*e+1]=b[1],p[3*e+2]=b[2],z[2*e+0]=e/i,z[2*e+1]=0,p[3*(e+i)+0]=p[3*e+0]+M[0],p[3*(e+i)+1]=p[3*e+1]+M[1],p[3*(e+i)+2]=p[3*e+2]+M[2],z[2*(e+i)+0]=e/i,z[2*e+1]=1;const n=(e+1)%i;L(R++,e,e),L(R++,e+i,e),L(R++,n,n),L(R++,n,n),L(R++,e+i,e),L(R++,n+i,n)}if(A){for(let t=0;t<i;t++){const e=(t+1)%i;L(R++,U-2,S-2),L(R++,t,S-2),L(R++,e,S-2)}for(let t=0;t<i;t++){const e=(t+1)%i;L(R++,t+i,S-1),L(R++,U-1,S-1),L(R++,e+i,S-1)}}const F=[[N.POSITION,v],[N.NORMAL,T],[N.UV0,v]],V=[[N.POSITION,{size:3,data:p,exclusive:!0}],[N.NORMAL,{size:3,data:x,exclusive:!0}],[N.UV0,{size:2,data:z,exclusive:!0}]];return new m(V,F)}function E(t,e,n,r,a){n=n||10,r=null==r||r,w(t.length>1);const o=[[0,0,0]],s=[],l=[];for(let i=0;i<n;i++){s.push([0,-i-1,-(i+1)%n-1]);const t=i/n*2*Math.PI;l.push([Math.cos(t)*e,Math.sin(t)*e])}return M.createPathExtrusionGeometry(l,t,o,s,r,a)}function k(o,i,f,g,M,d=c(0,0,0)){const w=o.length,P=new Float32Array(i.length*w*3+(6*f.length||0)),U=new Float32Array(i.length*w*3+(f?6:0)),S=(i.length-1)*w*6+3*g.length*2,p=new Uint32Array(S),x=new Uint32Array(S);let v=0,T=0,L=0,R=0;const b=u(),G=u(),F=u(),V=u(),j=u(),C=u(),E=u(),k=h(),B=u(),D=u(),X=u(),q=u(),Z=u(),J=O();s(B,0,1,0),t(G,i[1],i[0]),n(G,G),M?(a(k,i[0],d),n(F,k)):s(F,0,0,1),H(G,F,B,B,j,F,z),l(V,F),l(q,j);for(let t=0;t<f.length;t++)r(C,j,f[t][0]),r(k,F,f[t][2]),a(C,C,k),a(C,C,i[0]),P[v++]=C[0],P[v++]=C[1],P[v++]=C[2];U[T++]=-G[0],U[T++]=-G[1],U[T++]=-G[2];for(let t=0;t<g.length;t++)p[L++]=g[t][0]>0?g[t][0]:-g[t][0]-1+f.length,p[L++]=g[t][1]>0?g[t][1]:-g[t][1]-1+f.length,p[L++]=g[t][2]>0?g[t][2]:-g[t][2]-1+f.length,x[R++]=0,x[R++]=0,x[R++]=0;let K=f.length;const Q=f.length-1;for(let s=0;s<i.length;s++){let c=!1;if(s>0){l(b,G),s<i.length-1?(t(G,i[s+1],i[s]),n(G,G)):c=!0,a(D,b,G),n(D,D),a(X,i[s-1],V),A(i[s],D,J);y(J,I(X,b),k)?(t(k,k,i[s]),n(F,k),e(j,D,F),n(j,j)):H(D,V,q,B,j,F,z),l(V,F),l(q,j)}M&&(a(k,i[s],d),n(Z,k));for(let t=0;t<w;t++)if(r(C,j,o[t][0]),r(k,F,o[t][1]),a(C,C,k),n(E,C),U[T++]=E[0],U[T++]=E[1],U[T++]=E[2],a(C,C,i[s]),P[v++]=C[0],P[v++]=C[1],P[v++]=C[2],!c){const e=(t+1)%w;p[L++]=K+t,p[L++]=K+w+t,p[L++]=K+e,p[L++]=K+e,p[L++]=K+w+t,p[L++]=K+w+e;for(let t=0;t<6;t++)x[R++]=p[L-6+t]-Q}K+=w}const W=i[i.length-1];for(let t=0;t<f.length;t++)r(C,j,f[t][0]),r(k,F,f[t][1]),a(C,C,k),a(C,C,W),P[v++]=C[0],P[v++]=C[1],P[v++]=C[2];const Y=T/3;U[T++]=G[0],U[T++]=G[1],U[T++]=G[2];const $=K-w;for(let t=0;t<g.length;t++)p[L++]=g[t][0]>=0?K+g[t][0]:-g[t][0]-1+$,p[L++]=g[t][2]>=0?K+g[t][2]:-g[t][2]-1+$,p[L++]=g[t][1]>=0?K+g[t][1]:-g[t][1]-1+$,x[R++]=Y,x[R++]=Y,x[R++]=Y;const _=[[N.POSITION,p],[N.NORMAL,x]],tt=[[N.POSITION,{size:3,data:P,exclusive:!0}],[N.NORMAL,{size:3,data:U,exclusive:!0}]];return new m(tt,_)}function B(t,e,n){w(t.length>1,"createPolylineGeometry(): polyline needs at least 2 points"),w(3===t[0].length,"createPolylineGeometry(): malformed vertex"),w(null==e||e.length===t.length,"createPolylineGeometry: need same number of points and normals"),w(null==e||3===e[0].length,"createPolylineGeometry(): malformed normal");const r=new Float64Array(3*t.length),a=new Uint32Array(2*(t.length-1));let o=0,s=0;for(let c=0;c<t.length;c++){for(let e=0;e<3;e++)r[o++]=t[c][e];c>0&&(a[s++]=c-1,a[s++]=c)}const l=[],i=[];if(l.push([N.POSITION,a]),i.push([N.POSITION,{size:3,data:r,exclusive:!0}]),e){const n=new Float32Array(3*e.length);let r=0;for(let a=0;a<t.length;a++)for(let t=0;t<3;t++)n[r++]=e[a][t];l.push([N.NORMAL,a]),i.push([N.NORMAL,{size:3,data:n,exclusive:!0}])}return n&&(i.push([N.COLOR,{size:4,data:n}]),l.push([N.COLOR,d(n.length/4)])),new m(i,l,g.Line)}function D(t,e,n,r,a=0){const o=new Array(18),s=[[-e,a,r/2],[n,a,r/2],[0,t+a,r/2],[-e,a,-r/2],[n,a,-r/2],[0,t+a,-r/2]],l=new Uint16Array([0,1,2,3,0,2,2,5,3,1,4,5,5,2,1,1,0,3,3,4,1,4,3,5]);for(let i=0;i<6;i++)o[3*i]=s[i][0],o[3*i+1]=s[i][1],o[3*i+2]=s[i][2];return new m([[N.POSITION,{size:3,data:o,exclusive:!0}]],[[N.POSITION,l]])}function X(t,e){const n=t.getMutableAttribute(N.POSITION).data;for(let r=0;r<n.length;r+=3){const t=n[r],a=n[r+1],o=n[r+2];s(v,t,a,o),i(v,v,e),n[r]=v[0],n[r+1]=v[1],n[r+2]=v[2]}}function q(t,e=t){const n=t.vertexAttributes,r=n.get(N.POSITION).data,a=n.get(N.NORMAL).data;if(a){const t=e.getMutableAttribute(N.NORMAL).data;for(let e=0;e<a.length;e+=3){const n=a[e+1];t[e+1]=-a[e+2],t[e+2]=n}}if(r){const t=e.getMutableAttribute(N.POSITION).data;for(let e=0;e<r.length;e+=3){const n=r[e+1];t[e+1]=-r[e+2],t[e+2]=n}}return e}function Z(t,r,a,s,l){return!(Math.abs(o(r,t))>l)&&(e(a,t,r),n(a,a),e(s,a,t),n(s,s),!0)}function H(t,e,n,r,a,o,s){return Z(t,e,a,o,s)||Z(t,n,a,o,s)||Z(t,r,a,o,s)}M.createSquareGeometry=V,M.createConeGeometry=j,M.createCylinderGeometry=C,M.createTubeGeometry=E,M.createPathExtrusionGeometry=k,M.createPolylineGeometry=B,M.createExtrudedTriangle=D,M.transformInPlace=X,M.cgToGIS=q,M.makeOrthoBasisDirUp=Z,M.makeOrthoBasisDirUpFallback=H}(x||(x={}));const z=.99619469809,v=u(),T=x;export{T as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.23/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{isSome as t}from"../../../../core/maybe.js";import{generateUID as i}from"../../../../core/uid.js";import{I as r}from"../../../../chunks/mat4f64.js";import{f as o}from"../../../../chunks/vec3.js";import{c as s}from"../../../../chunks/vec3f64.js";import{projectBuffer as e}from"../../../../geometry/projection.js";import{
|
|
5
|
+
import{isSome as t}from"../../../../core/maybe.js";import{generateUID as i}from"../../../../core/uid.js";import{I as r}from"../../../../chunks/mat4f64.js";import{f as o}from"../../../../chunks/vec3.js";import{c as s}from"../../../../chunks/vec3f64.js";import{projectBuffer as e}from"../../../../geometry/projection.js";import{PrimitiveType as a}from"./basicInterfaces.js";import{Geometry as n}from"./Geometry.js";import{fromValues as h}from"./LocalOriginFactory.js";import{Object3D as m}from"./Object3D.js";import{VertexAttribute as c}from"./VertexAttribute.js";import{WebGLLayer as d}from"./WebGLLayer.js";import{RibbonLineMaterial as g}from"../materials/RibbonLineMaterial.js";class f{constructor(t,r=125e4){this._originSR=t,this._gridSize=r,this._origins=new Map,this._objects=new Map,this._rootOriginId="root/"+i()}getOrigin(i){const r=this._origins.get(this._rootOriginId);if(null==r){if(t(_))return this._origins.set(this._rootOriginId,h(_[0],_[1],_[2],this._rootOriginId)),this.getOrigin(i);const r=h(i[0]+Math.random()-.5,i[1]+Math.random()-.5,i[2]+Math.random()-.5,this._rootOriginId);return this._origins.set(this._rootOriginId,r),r}const s=this._gridSize,e=Math.round(i[0]/s),a=Math.round(i[1]/s),n=Math.round(i[2]/s),m=`${e}/${a}/${n}`;let c=this._origins.get(m);const d=.5*s;if(o(j,i,r.vec3),j[0]=Math.abs(j[0]),j[1]=Math.abs(j[1]),j[2]=Math.abs(j[2]),j[0]<d&&j[1]<d&&j[2]<d){if(c){const t=Math.max(...j);o(j,i,c.vec3),j[0]=Math.abs(j[0]),j[1]=Math.abs(j[1]),j[2]=Math.abs(j[2]);if(Math.max(...j)<t)return c}return r}return c||(c=h(e*s,a*s,n*s,m),this._origins.set(m,c)),c}_drawOriginBox(t,i=[1,1,0,1]){const o=window.view,s=o._stage,h=i.toString();if(!this._objects.has(h)){this._material=new g({width:2,color:i}),s.add(this._material);const t=new d({isPickable:!1}),r=new m({castShadow:!1});s.add(r),t.add(r),s.add(t),this._objects.set(h,r)}const f=this._objects.get(h),_=[0,1,5,4,0,2,1,7,6,2,0,1,3,7,5,4,6,2,0],l=_.length,j=new Array(3*l),u=new Uint16Array(2*(l-1)),b=.5*this._gridSize;for(let r=0;r<l;r++)j[3*r+0]=t[0]+(1&_[r]?b:-b),j[3*r+1]=t[1]+(2&_[r]?b:-b),j[3*r+2]=t[2]+(4&_[r]?b:-b),r>0&&(u[2*r+0]=r-1,u[2*r+1]=r);e(j,this._originSR,0,j,o.renderSpatialReference,0,l);const p=new n([[c.POSITION,{size:3,data:j,exclusive:!0}]],[[c.POSITION,u]],a.Line);s.add(p),f.addGeometry(p,this._material,r)}}let _=null;function l(t){_=t}const j=s();export{f as GridLocalOriginFactory,l as default,l as setTestRootOrigin};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.23/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{disposeMaybe as e,isSome as i}from"../../../../core/maybe.js";import{c as t}from"../../../../chunks/vec4.js";import{f as r}from"../../../../chunks/vec4f32.js";import{c as o}from"../../../../chunks/vec4f64.js";import
|
|
5
|
+
import{disposeMaybe as e,isSome as i}from"../../../../core/maybe.js";import{c as t}from"../../../../chunks/vec4.js";import{f as r}from"../../../../chunks/vec4f32.js";import{c as o}from"../../../../chunks/vec4f64.js";import s from"../../support/debugFlags.js";import{Default3D as a}from"./DefaultVertexAttributeLocations.js";import{Pos2Tex as l}from"./DefaultVertexBufferLayouts.js";import{createQuadVAO as h}from"./glUtil3D.js";import{H as p}from"../../../../chunks/HighlightComposition.glsl.js";import{HighlightCompositionTechniqueConfiguration as c,HighlightCompositionTechnique as u}from"../shaders/HighlightTechnique.js";import{BufferObject as g}from"../../../webgl/BufferObject.js";import{TargetType as n,DepthStencilTargetType as m,TextureType as d,PixelFormat as b,PixelType as T,TextureSamplingMode as f,TextureWrapMode as v,ClearBufferBit as _,Usage as w,PrimitiveType as O}from"../../../webgl/enums.js";import{FramebufferObject as M}from"../../../webgl/FramebufferObject.js";import{vertexCount as x}from"../../../webgl/Util.js";import{VertexArrayObject as y}from"../../../webgl/VertexArrayObject.js";const R=32;class q{constructor(e,i){this._techniqueRep=e,this._rctx=i,this.viewportToRestore=o(),this.defaultOptions={color:r(1,0,1,1),haloColor:r(1,0,1,1),haloOpacity:1,fillOpacity:.2,haloOpacityOccluded:.25,fillOpacityOccluded:.05,shadowColor:r(1,0,1,1),shadowOpacity:.15,occludedShadowOpacity:.075},this._grid={coverageMipmap:null,vao:null,verticalCellCount:0,horizontalCellCount:0,cellPixelSize:0,mipmapLevels:0,viewportWidth:0,viewportHeight:0}}_assertResources(){if(this.quadVAO)return;this.quadVAO=h(this._rctx);const e={colorTarget:n.TEXTURE,depthStencilTarget:m.NONE,width:0,height:0},i={target:d.TEXTURE_2D,pixelFormat:b.RGBA,dataType:T.UNSIGNED_BYTE,samplingMode:f.LINEAR,wrapMode:v.CLAMP_TO_EDGE,width:0,height:0};this.blur0Fbo=new M(this._rctx,e,i),this.blur1Fbo=new M(this._rctx,e,i);const t=new c;t.highlightStage=p.Blur,t.gridOptimization=!1,this.blurTechnique=this._techniqueRep.acquire(u,t),t.highlightStage=p.Blur,t.gridOptimization=!0,this.blurGridTechnique=this._techniqueRep.acquire(u,t),t.highlightStage=p.Apply,t.gridOptimization=!1,this.applyTechnique=this._techniqueRep.acquire(u,t),t.highlightStage=p.Apply,t.gridOptimization=!0,this.applyGridTechnique=this._techniqueRep.acquire(u,t),t.highlightStage=p.Downsample,t.gridOptimization=!1,this.downsampleTechnique=this._techniqueRep.acquire(u,t)}dispose(){if(this._grid.coverageMipmap)for(let e=1;e<this._grid.coverageMipmap.length;e++)this._grid.coverageMipmap[e].dispose();this._grid.vao&&this._grid.vao.dispose(!0),this.quadVAO&&(this.quadVAO.dispose(!0),this.quadVAO=null),this.blur0Fbo=e(this.blur0Fbo),this.blur1Fbo=e(this.blur1Fbo)}get profilingCallback(){return s.HIGHLIGHTS_PROFILE_TO_CONSOLE?e=>console.log(e):null}setDefaultOptions(e){this.defaultOptions=e}render(e,i,r){const o=e.pixelRatio,a=s.HIGHLIGHTS_GRID_OPTIMIZATION_ENABLED,l=this._rctx;this._assertResources(),t(this.viewportToRestore,e.fullViewport);const h=e.fullWidth,p=e.fullHeight,c=Math.ceil(h/o),u=Math.ceil(p/o);this.blur0Fbo.resize(c,u),this.blur1Fbo.resize(c,u),l.bindVAO(this.quadVAO);let g=null;const n=a?this.blurGridTechnique:this.blurTechnique,m=l.useTechnique(n);a?(this._gridUpdateResources(i,R),this._gridComputeMipmap(),g=this._grid.vao,m.bindTexture(this._grid.coverageMipmap[this._grid.mipmapLevels].colorTexture,"coverageTex")):g=this.quadVAO,l.bindVAO(g),l.bindFramebuffer(this.blur0Fbo),l.setViewport(0,0,c,u),l.setClearColor(0,0,0,0),l.clear(_.COLOR_BUFFER_BIT),m.bindTexture(i.colorTexture,"tex"),m.setUniform2f("blurSize",1/c,0),l.drawArrays(n.primitiveType,0,x(g,"geometry")),l.bindFramebuffer(this.blur1Fbo),l.clear(_.COLOR_BUFFER_BIT),m.bindTexture(this.blur0Fbo.colorTexture,"tex"),m.setUniform2f("blurSize",0,1/u),l.drawArrays(n.primitiveType,0,x(g,"geometry")),l.bindFramebuffer(r),l.setViewport(this.viewportToRestore[0],this.viewportToRestore[1],this.viewportToRestore[2],this.viewportToRestore[3]);const d=a?this.applyGridTechnique:this.applyTechnique,b=l.useTechnique(d);if(b.bindTexture(this.blur1Fbo.colorTexture,"tex"),b.bindTexture(i.colorTexture,"origin"),a){const e=this._grid.coverageMipmap[this._grid.mipmapLevels].colorTexture;b.bindTexture(e,"coverageTex")}d.bindApplyPass(this.defaultOptions),l.drawArrays(d.primitiveType,0,x(g,"geometry")),l.bindVAO(null)}_gridUpdateResources(e,i){const t=this._rctx,r=this._grid;let o=!1;if(null===r.coverageMipmap&&(r.coverageMipmap=[e],o=!0),r.viewportWidth===e.width&&r.viewportHeight===e.height||(o=!0,r.viewportWidth=e.width,r.viewportHeight=e.height),r.coverageMipmap[0]=e,r.cellPixelSize!==i&&(r.cellPixelSize=i,o=!0),o){for(let e=1;e<r.coverageMipmap.length;e++)r.coverageMipmap[e].dispose();r.mipmapLevels=Math.ceil(Math.log(r.cellPixelSize)*Math.LOG2E),r.coverageMipmap.length=r.mipmapLevels+1;for(let e=0;e<r.mipmapLevels;e++){const i=r.coverageMipmap[e],o={target:d.TEXTURE_2D,pixelFormat:b.RGB,dataType:T.UNSIGNED_SHORT_5_6_5,samplingMode:f.LINEAR,wrapMode:v.CLAMP_TO_EDGE,width:Math.ceil(i.width/2),height:Math.ceil(i.height/2)},s={colorTarget:n.TEXTURE,depthStencilTarget:m.NONE,width:Math.ceil(i.width/2),height:Math.ceil(i.height/2)};r.coverageMipmap[e+1]=new M(t,s,o)}}const s=Math.ceil(e.height/r.cellPixelSize),h=Math.ceil(e.width/r.cellPixelSize);if(!r.vao||r.verticalCellCount!==s||r.horizontalCellCount!==h){r.verticalCellCount=s,r.horizontalCellCount=h;const e=s+1,i=h+1,o=1/s,p=1/h,c=6,u=4,n=new Float32Array(c*u*e*i);let m=0;for(let t=0;t<e;t++)for(let e=0;e<i;e++)n[m+0]=(e-.5)*p*2-1,n[m+1]=(t-.5)*o*2-1,n[m+2]=e*p,n[m+3]=t*o,n[m+4]=(e+.5)*p*2-1,n[m+5]=(t-.5)*o*2-1,n[m+6]=e*p,n[m+7]=t*o,n[m+8]=(e-.5)*p*2-1,n[m+9]=(t+.5)*o*2-1,n[m+10]=e*p,n[m+11]=t*o,n[m+12]=(e-.5)*p*2-1,n[m+13]=(t+.5)*o*2-1,n[m+14]=e*p,n[m+15]=t*o,n[m+16]=(e+.5)*p*2-1,n[m+17]=(t-.5)*o*2-1,n[m+18]=e*p,n[m+19]=t*o,n[m+20]=(e+.5)*p*2-1,n[m+21]=(t+.5)*o*2-1,n[m+22]=e*p,n[m+23]=t*o,m+=c*u;r.vao&&r.vao.dispose(!0),r.vao=new y(t,a,{geometry:l},{geometry:g.createVertex(t,w.STATIC_DRAW,n)})}}_gridComputeMipmap(){const e=this._rctx,i=this._grid,t=e.useTechnique(this.downsampleTechnique);e.bindVAO(this.quadVAO);for(let r=0;r<i.mipmapLevels;r++){e.bindFramebuffer(i.coverageMipmap[r+1]),t.bindTexture(i.coverageMipmap[r].colorTexture,"tex");const o=i.coverageMipmap[r+1].width,s=i.coverageMipmap[r+1].height;t.setUniform2f("invFramebufferDim",1/o,1/s),e.setViewport(0,0,o,s),e.drawArrays(O.TRIANGLE_STRIP,0,x(this.quadVAO,"geometry"))}}get gpuMemoryUsage(){let e=(i(this.blur0Fbo)?this.blur0Fbo.gpuMemoryUsage:0)+(i(this.blur1Fbo)?this.blur1Fbo.gpuMemoryUsage:0);if(this._grid.coverageMipmap)for(const i of this._grid.coverageMipmap)e+=i.gpuMemoryUsage;return e}get test(){return{coverage:this._grid.coverageMipmap,blur:[this.blur0Fbo,this.blur1Fbo]}}}export{q as default};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.23/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../../chunks/tslib.es6.js";import s from"../../../../core/Accessor.js";import
|
|
5
|
+
import{_ as e}from"../../../../chunks/tslib.es6.js";import s from"../../../../core/Accessor.js";import t from"../../../../core/Evented.js";import r from"../../../../core/Handles.js";import{clamp as i}from"../../../../core/mathUtils.js";import{isNone as o,isSome as a}from"../../../../core/maybe.js";import{createTask as n}from"../../../../core/promiseUtils.js";import{createScreenPointArray as m,createRenderScreenPointArray as u,screenPointObjectToArray as l}from"../../../../core/screenUtils.js";import{isSVG as h}from"../../../../core/urlUtils.js";import{property as p}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/arrayUtils.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as c}from"../../../../core/accessorSupport/decorators/subclass.js";import{requestImage as d}from"../../../../support/requestImageUtils.js";import{Pos2 as _}from"./DefaultVertexBufferLayouts.js";import{createQuadVAO as g}from"./glUtil3D.js";import{Program as f}from"./Program.js";import{VertexAttribute as T}from"./VertexAttribute.js";import{build as v}from"../shaders/Magnifier.glsl.js";import{loadMagnifierResources as y}from"../../../magnifier/resources.js";import{PrimitiveType as k,BlendFactor as R,TextureType as L,PixelFormat as S,PixelType as x,TextureWrapMode as E,TextureSamplingMode as b}from"../../../webgl/enums.js";import{makePipelineState as A,simpleBlendingParams as j,defaultColorWriteParams as w}from"../../../webgl/renderState.js";import{Texture as M}from"../../../webgl/Texture.js";let U=class extends s{constructor(){super(...arguments),this._handles=new r,this._magnifier=null,this._imageSources=null,this._imageLoadTask=null,this._resources=null,this.events=new t,this.attributeLocations=new Map([[T.POSITION,0]]),this.tmpScreenPoint=m(),this.tmpRenderPoint=u()}get updating(){return o(this._imageSources)&&a(this._imageLoadTask)&&!this._imageLoadTask.task.finished}get magnifier(){return this._magnifier}set magnifier(e){if(e===this._magnifier)return;this._handles.removeAll(),this._magnifier=e;const s=()=>{this._updateResourceLoading(),this.events.emit("request-render")};a(this._magnifier)&&this._handles.add(this._magnifier.watch("version",s)),s()}get enabled(){return a(this._validMagnifier)}get _validMagnifier(){return a(this._magnifier)&&this._magnifier.visible&&a(this._magnifier.position)&&this._magnifier.size>0?this._magnifier:null}get factor(){return a(this._magnifier)&&this._magnifier.factor||1}dispose(){this._magnifier=null,this._handles.destroy(),a(this._imageLoadTask)&&(this._imageLoadTask.task.abort(),this._imageLoadTask=null),this._disposeResources()}render(e,s){const t=this._validMagnifier;if(o(t))return;const r=s.camera.pixelRatio,a=Math.ceil(r*t.size);if(this._updateResources(e,a),o(this._resources))return;const n=this._resources.program;e.useProgram(n);const m=this._resources.textures,u=Math.ceil(1/this.factor*a);m.input.resize(u,u);const h=s.camera.fullWidth,p=s.camera.fullHeight;l(t.position,this.tmpScreenPoint);const c=s.camera.screenToRender(this.tmpScreenPoint,this.tmpRenderPoint),d=.5*u,_=.5*u;c[0]=i(c[0],d,h-d-1),c[1]=i(c[1],_,p-_-1);const g=Math.floor(c[0]-d),f=Math.floor(c[1]-_);n.bindTexture(m.input,"textureInput"),e.gl.copyTexImage2D(m.input.descriptor.target,0,m.input.descriptor.pixelFormat,g,f,u,u,0);const T=t.offset.x*r,v=t.offset.y*r,y=(c[0]+T)/h*2-1,R=(c[1]-v)/p*2-1,L=a/h*2,S=a/p*2;e.bindVAO(this._resources.vao),n.bindTexture(m.overlay,"textureOverlay"),n.bindTexture(m.mask,"textureMask"),n.setUniform4f("drawPosition",y,R,L,S),n.setUniform1i("maskEnabled",t.maskEnabled?1:0),n.setUniform1i("overlayEnabled",t.overlayEnabled?1:0),e.setPipelineState(this._resources.pipelineState),e.drawArrays(k.TRIANGLE_STRIP,0,4)}_updateResourceLoading(){const e=this._validMagnifier;if(o(e))return;const s=e.maskUrl,t=e.overlayUrl;!a(this._imageLoadTask)||this._imageLoadTask.maskUrl===s&&this._imageLoadTask.overlayUrl===t||(this._imageLoadTask.task.abort(),this._imageLoadTask=null,this._imageSources=null),a(this._imageSources)||a(this._imageLoadTask)||(this._imageLoadTask={maskUrl:s,overlayUrl:t,task:n((async e=>{const r=o(s)||o(t)?y(e):null,i=a(s)?d(s,{signal:e}):r.then((e=>e.mask)),n=a(t)?d(t,{signal:e}):r.then((e=>e.overlay));this._imageSources={mask:await i,overlay:await n},this._disposeResources(),this.events.emit("request-render")}))},this._imageLoadTask.task.promise.then((()=>this.notifyChange("updating")),(()=>this.notifyChange("updating"))))}_updateResources(e,s){if(!this.enabled)return void this._disposeResources();if(a(this._resources)){if(this._resources.textures.size!==s){const t=this._createTextureResources(e,s);if(o(t))return void this._disposeResources();this._disposeTextureResources(this._resources.textures),this._resources.textures=t}return}const t=this._createTextureResources(e,s);o(t)||(this._resources={textures:t,program:this._createProgram(e),vao:g(e,_,this.attributeLocations,0,1),pipelineState:A({blending:j(R.ONE,R.ONE_MINUS_SRC_ALPHA),depthTest:null,depthWrite:null,colorWrite:w})})}_disposeResources(){o(this._resources)||(this._disposeTextureResources(this._resources.textures),this._resources.program.dispose(),this._resources.vao.dispose(),this._resources=null)}_disposeTextureResources(e){e.mask.dispose(),e.overlay.dispose(),e.input.dispose()}_createTextureResources(e,s){if(o(this._imageSources))return null;this._imageSources.overlay.width=s,this._imageSources.overlay.height=s,this._imageSources.mask.width=s,this._imageSources.mask.height=s;const t=new M(e,{target:L.TEXTURE_2D,pixelFormat:S.RGBA,internalFormat:S.RGBA,dataType:x.UNSIGNED_BYTE,wrapMode:E.CLAMP_TO_EDGE,samplingMode:b.LINEAR,flipped:!0,preMultiplyAlpha:!h(this._imageSources.overlay.src)||!e.driverTest.svgAlwaysPremultipliesAlpha},this._imageSources.overlay),r=new M(e,{target:L.TEXTURE_2D,pixelFormat:S.ALPHA,internalFormat:S.ALPHA,dataType:x.UNSIGNED_BYTE,wrapMode:E.CLAMP_TO_EDGE,samplingMode:b.LINEAR,flipped:!0},this._imageSources.mask);return{input:new M(e,{target:L.TEXTURE_2D,pixelFormat:S.RGBA,internalFormat:S.RGBA,dataType:x.UNSIGNED_BYTE,wrapMode:E.CLAMP_TO_EDGE,samplingMode:b.LINEAR,flipped:!1}),mask:r,overlay:t,size:s}}_createProgram(e){const s=v();return new f(e,s,this.attributeLocations)}};e([p()],U.prototype,"_imageSources",void 0),e([p()],U.prototype,"_imageLoadTask",void 0),e([p({readOnly:!0})],U.prototype,"updating",null),U=e([c("esri/views/3d/webgl-engine/lib/MagnifierHelper")],U);export{U as MagnifierHelper};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.23/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{isSome as e}from"../../../../core/maybe.js";import{ContentObject as r}from"./ContentObject.js";import{ContentObjectType as t}from"./ContentObjectType.js";import{Default3D as s}from"./DefaultVertexAttributeLocations.js";import{copyParameters as i,updateParameters as a}from"../materials/internal/MaterialUtil.js";class n extends r{constructor(e,r){super(),this.type=t.Material,this.supportsEdges=!1,this._visible=!0,this._renderPriority=0,this._insertOrder=0,this._vertexAttributeLocations=s,this._parameters=i(e,r),this.validateParameters(this._parameters)}dispose(){}get parameters(){return this._parameters}update(e){return!1}setParameters(e){a(this._parameters,e)&&(this.validateParameters(this._parameters),this.parametersChanged())}validateParameters(e){}get visible(){return this._visible}set visible(e){e!==this._visible&&(this._visible=e,this.parametersChanged())}shouldRender(e){return this.isVisible()&&this.isVisibleInPass(e.pass)&&0!=(this.renderOccluded&e.renderOccludedMask)}isVisibleInPass(e){return!0}get renderOccluded(){return this.parameters.renderOccluded}get renderPriority(){return this._renderPriority}set renderPriority(e){e!==this._renderPriority&&(this._renderPriority=e,this.parametersChanged())}get insertOrder(){return this._insertOrder}set insertOrder(e){e!==this._insertOrder&&(this._insertOrder=e,this.parametersChanged())}get vertexAttributeLocations(){return this._vertexAttributeLocations}isVisible(){return this._visible}parametersChanged(){e(this.repository)&&this.repository.materialChanged(this)}}var d;!function(e){e[e.Occlude=1]="Occlude",e[e.Transparent=2]="Transparent",e[e.OccludeAndTransparent=4]="OccludeAndTransparent",e[e.OccludeAndTransparentStencil=8]="OccludeAndTransparentStencil",e[e.Opaque=16]="Opaque"}(d||(d={}));const h={renderOccluded:d.Occlude};export{n as Material,d as RenderOccludedFlag
|
|
5
|
+
import{isSome as e}from"../../../../core/maybe.js";import{ContentObject as r}from"./ContentObject.js";import{ContentObjectType as t}from"./ContentObjectType.js";import{Default3D as s}from"./DefaultVertexAttributeLocations.js";import{copyParameters as i,updateParameters as a}from"../materials/internal/MaterialUtil.js";class n extends r{constructor(e,r){super(),this.type=t.Material,this.supportsEdges=!1,this._visible=!0,this._renderPriority=0,this._insertOrder=0,this._vertexAttributeLocations=s,this._parameters=i(e,r),this.validateParameters(this._parameters)}dispose(){}get parameters(){return this._parameters}update(e){return!1}setParameters(e){a(this._parameters,e)&&(this.validateParameters(this._parameters),this.parametersChanged())}validateParameters(e){}get visible(){return this._visible}set visible(e){e!==this._visible&&(this._visible=e,this.parametersChanged())}shouldRender(e){return this.isVisible()&&this.isVisibleInPass(e.pass)&&0!=(this.renderOccluded&e.renderOccludedMask)}isVisibleInPass(e){return!0}get renderOccluded(){return this.parameters.renderOccluded}get renderPriority(){return this._renderPriority}set renderPriority(e){e!==this._renderPriority&&(this._renderPriority=e,this.parametersChanged())}get insertOrder(){return this._insertOrder}set insertOrder(e){e!==this._insertOrder&&(this._insertOrder=e,this.parametersChanged())}get vertexAttributeLocations(){return this._vertexAttributeLocations}isVisible(){return this._visible}parametersChanged(){e(this.repository)&&this.repository.materialChanged(this)}}var d;!function(e){e[e.Occlude=1]="Occlude",e[e.Transparent=2]="Transparent",e[e.OccludeAndTransparent=4]="OccludeAndTransparent",e[e.OccludeAndTransparentStencil=8]="OccludeAndTransparentStencil",e[e.Opaque=16]="Opaque"}(d||(d={}));const h={renderOccluded:d.Occlude};export{h as DefaultMaterialParameters,n as Material,d as RenderOccludedFlag};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.23/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{unwrapOr as t,isNone as r,isSome as i}from"../../../../core/maybe.js";import{generateUID as s}from"../../../../core/uid.js";import{c as a}from"../../../../chunks/mat4.js";import{c as n,I as e}from"../../../../chunks/mat4f64.js";import{m as o}from"../../../../chunks/vec3.js";import{c as h}from"../../../../chunks/vec4f64.js";import{maxScale as m}from"../../support/mathUtils.js";import{
|
|
5
|
+
import{unwrapOr as t,isNone as r,isSome as i}from"../../../../core/maybe.js";import{generateUID as s}from"../../../../core/uid.js";import{c as a}from"../../../../chunks/mat4.js";import{c as n,I as e}from"../../../../chunks/mat4f64.js";import{m as o}from"../../../../chunks/vec3.js";import{c as h}from"../../../../chunks/vec4f64.js";import{maxScale as m}from"../../support/mathUtils.js";import{Object3DState as c}from"./basicInterfaces.js";import{computeAttachmentOriginTriangles as d}from"./geometryDataUtils.js";import{InstanceParameters as f}from"./InstanceParameters.js";import{Object3DStateID as u}from"./Object3DStateID.js";import{VertexAttribute as g}from"./VertexAttribute.js";import{addObject3DStateID as l,removeObject3DStateID as p}from"../materials/renderers/utils.js";class T{constructor(r,i,a={}){this.data=r,this.material=i,this.boundingSphere=h(),this.instanceParameters=new f,this._transformation=n(),this._shaderTransformationDirty=!0,this.layerUid=t(a.layerUid,null),this.graphicUid=t(a.graphicUid,null),this.id=a.id?a.id:s(),this.boundingInfo=t(a.boundingInfo,null),this.calculateShaderTransformation=t(this.calculateShaderTransformation,null),this.castShadow=!!a.castShadow&&a.castShadow}get transformation(){return this._transformation}updateTransformation(t){t(this._transformation),this._shaderTransformationDirty=!0,this.computeBoundingSphere(this._transformation,this.boundingSphere)}shaderTransformationChanged(){this._shaderTransformationDirty=!0}computeBoundingSphere(t,i,s=m(t)){r(this.boundingInfo)||(o(i,this.boundingInfo.getCenter(),t),i[3]=this.boundingInfo.getBSRadius()*s)}get hasShaderTransformation(){return i(this.calculateShaderTransformation)}get primitiveType(){return this.data.primitiveType}getShaderTransformation(){return r(this.calculateShaderTransformation)?t(this.transformation,e):(this._shaderTransformationDirty&&(this._shaderTransformation||(this._shaderTransformation=n()),a(this._shaderTransformation,this.calculateShaderTransformation(t(this.transformation,e))),this._shaderTransformationDirty=!1),this._shaderTransformation)}computeAttachmentOrigin(t){if(this.material.computeAttachmentOrigin)return!!this.material.computeAttachmentOrigin(this,t)&&(i(this._transformation)&&o(t,t,this._transformation),!0);const r=this.indices.get(g.POSITION),s=this.vertexAttributes.get(g.POSITION);return!!d(s,r,t)&&(i(this._transformation)&&o(t,t,this._transformation),!0)}get indices(){return this.data.indices}get vertexAttributes(){return this.data.vertexAttributes}addHighlight(){const t=new u(c.Highlight),r=this.instanceParameters;return r.highlights=l(r.highlights,t),t}removeHighlight(t){const r=this.instanceParameters;r.highlights=p(r.highlights,t)}}class S extends T{}export{T as RenderGeometry,S as ValidatedRenderGeometry};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.23/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{RenderingContext as e}from"../../../webgl/RenderingContext.js";class t extends e{constructor(e,t,
|
|
5
|
+
import{RenderingContext as e}from"../../../webgl/RenderingContext.js";class t extends e{constructor(e,t,r){super(e,t),this.newCache=r,this._refCount=1}dispose(){--this._refCount>0||super.dispose()}ref(){++this._refCount}useTechnique(e,t=null,r){return this.useProgram(e.program),e.bindPipelineState(this,t,r),e.program}get test(){return this.programCache.test}}export{t as RenderingContext};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.23/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{disposeMaybe as e,applySome as t,isSome as s,isNone as i}from"../../../../core/maybe.js";import{a as r}from"../../../../chunks/vec2f64.js";import{i as h}from"../../../../chunks/vec3.js";import{c as o}from"../../../../chunks/vec4f64.js";import{requestImage as
|
|
5
|
+
import{disposeMaybe as e,applySome as t,isSome as s,isNone as i}from"../../../../core/maybe.js";import{a as r}from"../../../../chunks/vec2f64.js";import{i as h}from"../../../../chunks/vec3.js";import{c as o}from"../../../../chunks/vec4f64.js";import{requestImage as n}from"../../../../support/requestImageUtils.js";import{createQuadVAO as a}from"./glUtil3D.js";import{SSAOTechniqueConfiguration as u,SSAOTechnique as l}from"./SSAOTechnique.js";import{inverseProjectionInfo as _}from"./Util.js";import{S as b}from"../../../../chunks/SSAO.glsl.js";import{PrimitiveType as m,TextureType as c,PixelFormat as d,PixelType as f,TextureSamplingMode as p,TextureWrapMode as O,TargetType as T,DepthStencilTargetType as F}from"../../../webgl/enums.js";import{FramebufferObject as x}from"../../../webgl/FramebufferObject.js";import{Texture as B}from"../../../webgl/Texture.js";import{vertexCount as g}from"../../../webgl/Util.js";class S{constructor(e,t,s){this._techniqueRep=e,this._rctx=t,this._requestRender=s,this._enabled=!1,this._ssaoTechniqueConfig=new u,this.quadVAO=null,this._blurSizePx=2,this._attenuation=.5}dispose(){this.quadVAO=e(this.quadVAO)}disposeOffscreenBuffers(){t(this._ssaoFBO,(e=>e.resize(0,0))),t(this._blur0FBO,(e=>e.resize(0,0))),t(this._blur1FBO,(e=>e.resize(0,0)))}set enabled(e){e?this._enable():this._disable()}get enabled(){return this._enabled}get ready(){return this.enabled&&s(this._noiseTexture)&&s(this._ssaoFBO)&&s(this._blur0FBO)&&s(this._blur1FBO)}computeSSAO(e,t,s){if(!this.enabled||i(t)||i(s)||i(this._noiseTexture)||i(this._ssaoFBO)||i(this._blur0FBO)||i(this._blur1FBO))return;const r=this._rctx,o=e.fullViewport,n=o[2],u=o[3],l=n/this._blurSizePx,b=u/this._blurSizePx;this._ssaoFBO.resize(n,u),this._blur0FBO.resize(l,b),this._blur1FBO.resize(l,b);const c=1,d=1,f=n*c,p=u*d;r.bindFramebuffer(this._ssaoFBO),r.setViewport(0,0,n,u);const O=r.useTechnique(this._ssaoTechnique);O.setUniform2f("rnmScale",n/this._noiseTexture.descriptor.width,u/this._noiseTexture.descriptor.height),_(e.projectionMatrix,e.fullWidth,e.fullHeight,A,q),O.setUniform4fv("projInfo",A),O.setUniform2fv("zScale",q),O.setUniform2fv("nearFar",e.nearFar);let T=1/e.computeRenderPixelSizeAtDist(1);O.setUniform1f("projScale",T*c),O.setUniform2f("screenDimensions",f,p);const F=h(e.eye,e.center);let x=20*e.computeRenderPixelSizeAtDist(F);x=Math.max(.1,x),O.setUniform1f("radius",x),O.setUniform1f("intensity",4*this._attenuation/x**6),O.bindTexture(this._noiseTexture,"rnm"),O.bindTexture(s,"normalMap"),O.bindTexture(t,"depthMap"),i(this.quadVAO)&&(this.quadVAO=a(this._rctx)),r.bindVAO(this.quadVAO),r.drawArrays(m.TRIANGLE_STRIP,0,g(this.quadVAO,"geometry"));const B=r.useTechnique(this._blurTechnique);B.bindTexture(this._ssaoFBO.colorTexture,"tex"),B.bindTexture(s,"normalMap"),B.bindTexture(t,"depthMap"),r.setViewport(0,0,f/this._blurSizePx,p/this._blurSizePx),r.bindFramebuffer(this._blur0FBO),B.setUniform2f("screenDimensions",f,p),B.setUniform2f("blurSize",0,this._blurSizePx*c/p),B.setUniform2fv("nearFar",e.nearFar),F>5e4&&(T=Math.max(0,T-(F-5e4))),B.setUniform1f("projScale",T),r.drawArrays(m.TRIANGLE_STRIP,0,g(this.quadVAO,"geometry")),B.setUniform2f("blurSize",this._blurSizePx*d/f,0),r.bindFramebuffer(this._blur1FBO),B.bindTexture(this._blur0FBO.colorTexture,"tex"),r.drawArrays(m.TRIANGLE_STRIP,0,g(this.quadVAO,"geometry")),r.setViewport(o[0],o[1],o[2],o[3])}bind(e,t){this.enabled&&s(this._blur1FBO)&&s(this._ssaoFBO)?(e.bindTexture(this._blur1FBO.colorTexture,"ssaoTex"),e.setUniform4f("viewportPixelSz",t.fullViewport[0],t.fullViewport[1],1/this._ssaoFBO.width,1/this._ssaoFBO.height)):e.setUniform4f("viewportPixelSz",-1,-1,-1,-1)}_selectPrograms(){this._ssaoTechniqueConfig.output=b.SSAO,this._ssaoTechnique=this._techniqueRep.releaseAndAcquire(l,this._ssaoTechniqueConfig,this._ssaoTechnique),this._ssaoTechniqueConfig.output=b.Blur,this._blurTechnique=this._techniqueRep.releaseAndAcquire(l,this._ssaoTechniqueConfig,this._blurTechnique)}_enable(){this.enabled||(this._enabled=!0,this._loadResources((()=>{this._enabled&&this._initialize()})))}_loadResources(e){this._data?e():import("./SSAOHelperData.js").then((t=>{this._data=t,e()}))}_initialize(){const e={target:c.TEXTURE_2D,pixelFormat:d.RGBA,dataType:f.UNSIGNED_BYTE,samplingMode:p.LINEAR,wrapMode:O.CLAMP_TO_EDGE,width:0,height:0},t={colorTarget:T.TEXTURE,depthStencilTarget:F.NONE};n(this._data.noiseTexture).then((s=>{this._enabled&&(this._ssaoFBO=new x(this._rctx,t,e),this._blur0FBO=new x(this._rctx,t,e),this._blur1FBO=new x(this._rctx,t,e),this._noiseTexture=new B(this._rctx,{target:c.TEXTURE_2D,pixelFormat:d.RGBA,dataType:f.UNSIGNED_BYTE,hasMipmap:!0,width:s.width,height:s.height},s),this._requestRender())})),this._selectPrograms()}_disable(){this._enabled=!1,this._noiseTexture=e(this._noiseTexture),this._blur1FBO=e(this._blur1FBO),this._blur0FBO=e(this._blur0FBO),this._ssaoFBO=e(this._ssaoFBO)}get gpuMemoryUsage(){return(s(this._blur0FBO)?this._blur0FBO.gpuMemoryUsage:0)+(s(this._blur1FBO)?this._blur1FBO.gpuMemoryUsage:0)+(s(this._ssaoFBO)?this._ssaoFBO.gpuMemoryUsage:0)}get test(){return{ssao:this._ssaoFBO,blur:this._blur1FBO}}}const q=r(),A=o();export{S as SSAOHelper};
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
See https://js.arcgis.com/4.23/esri/copyright.txt for details.
|
|
4
4
|
*/
|
|
5
|
-
import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Accessor.js";import{equals as i}from"../../../../core/arrayUtils.js";import s from"../../../../core/Handles.js";import{smoothstep as r}from"../../../../core/mathUtils.js";import{isNone as a,disposeMaybe as o}from"../../../../core/maybe.js";import{watch as n,syncAndInitial as h}from"../../../../core/reactiveUtils.js";import{property as c}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as _}from"../../../../core/accessorSupport/decorators/subclass.js";import{j as u,a as l}from"../../../../chunks/mat4.js";import{c as m}from"../../../../chunks/mat4f64.js";import{a as p}from"../../../../chunks/vec2f64.js";import{y as d,g}from"../../../../chunks/vec3.js";import{c as f}from"../../../../chunks/vec3f64.js";import{c as w}from"../../../../chunks/vec4f64.js";import v from"./Camera.js";import{ZERO as b}from"./depthRange.js";import{createQuadVAO as
|
|
5
|
+
import{_ as e}from"../../../../chunks/tslib.es6.js";import t from"../../../../core/Accessor.js";import{equals as i}from"../../../../core/arrayUtils.js";import s from"../../../../core/Handles.js";import{smoothstep as r}from"../../../../core/mathUtils.js";import{isNone as a,disposeMaybe as o}from"../../../../core/maybe.js";import{watch as n,syncAndInitial as h}from"../../../../core/reactiveUtils.js";import{property as c}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/has.js";import"../../../../core/accessorSupport/ensureType.js";import{subclass as _}from"../../../../core/accessorSupport/decorators/subclass.js";import{j as u,a as l}from"../../../../chunks/mat4.js";import{c as m}from"../../../../chunks/mat4f64.js";import{a as p}from"../../../../chunks/vec2f64.js";import{y as d,g}from"../../../../chunks/vec3.js";import{c as f}from"../../../../chunks/vec3f64.js";import{c as w}from"../../../../chunks/vec4f64.js";import v from"./Camera.js";import{ZERO as b}from"./depthRange.js";import{createQuadVAO as j}from"./glUtil3D.js";import{ShadowCastRenderer as S,shadowCastDisabledElevationThreshold as y,shadowCastDisableElevationMax as A,shadowCastDisableElevationMin as C}from"./ShadowCastRenderer.js";import R from"./ShadowMap.js";import{inverseProjectionInfo as T}from"./Util.js";import{S as D,s as F}from"../../../../chunks/ShadowCast.glsl.js";import{ShadowCastTechniqueConfiguration as E,ShadowCastTechnique as M}from"../shaders/ShadowCastTechnique.js";import{TaskPriority as x}from"../../../support/Scheduler.js";import{TargetType as P,DepthStencilTargetType as q,TextureType as U,PixelFormat as V,PixelType as I,TextureSamplingMode as k,TextureWrapMode as L,ClearBufferBit as O}from"../../../webgl/enums.js";import{FramebufferObject as N}from"../../../webgl/FramebufferObject.js";import{vertexCount as z}from"../../../webgl/Util.js";var B;let H=B=class extends t{constructor(e,t,i,r,o,c){super({}),this._rctx=e,this._stage=i,this._prepareForShadowMapPass=r,this._renderToShadowMap=o,this._requestRender=c,this._progress=0,this._sampleCount=0,this._cachedCamera=new v,this._contentCamera=new v,this._enabled=!1,this._cachedLightDirections=[],this._depthRange=b,this._previewing=!1,this._handles=new s,this._cameraForcedForScreenshot=!1,this._shadowMap=new R(e,i.viewingMode),this._shadowMap.enabled=!0,this._vao=j(e);const _={colorTarget:P.TEXTURE,depthStencilTarget:q.NONE,width:0,height:0},u={target:U.TEXTURE_2D,pixelFormat:V.RGBA,dataType:I.UNSIGNED_BYTE,samplingMode:k.LINEAR,wrapMode:L.CLAMP_TO_EDGE,width:0,height:0};this._fbo=new N(e,_,u),this._accumulationParams={camera:this._cachedCamera,linearDepthTexture:null,shadowMap:this._shadowMap,inverseViewMatrix:m(),projInfo:w(),zScale:p()},this._accumulationRenderer=new S(t,e,this,c);const l=this._stage.resourceController.scheduler;this._handles.add(l.registerTask(x.SHADOW_ACCUMULATOR,this)),this._handles.add(n((()=>i.renderView),(e=>{this._handles.remove(B.renderViewHandleKey),a(e)||this._handles.add(e.events.on("force-camera-for-screenshot",(()=>this._cameraForcedForScreenshot=!0)),B.renderViewHandleKey)}),h))}normalizeCtorArgs(){return{}}get computedSamples(){return this._progress}get shadowCastTexture(){return this._fbo.colorTexture}get isAccumulating(){return this._isPreviewing||this._isRefining}get accumulationTechnique(){if(a(this._accumulationTechnique)){const e={rctx:this._rctx,viewingMode:this._stage.viewingMode},t=new E;t.pass=D.Accumulate,this._accumulationTechnique=new M(e,t)}return this._accumulationTechnique}get _isRefining(){return this._isActive&&!this._isDoneAccumulating&&!this._previewing}get _isPreviewing(){return this._isActive&&this._previewing}get _isActive(){return this._enabled&&this._sampleCount>0}get _canAccumulate(){return null!==this._accumulationParams.linearDepthTexture&&this._depthRange!==b&&this._opacityFromElevation>y}get _isDoneAccumulating(){return this._progress>=this._sampleCount}get _lightDirections(){return this._cachedLightDirections}set _lightDirections(e){const t=this._cachedLightDirections;if(i(t,e,d))return;const s=e.length;t.length=s,this._sampleCount=Math.min(F,s);for(let i=0;i<s;++i){const s=e[i],r=t[i]||f();g(r,s),t[i]=r}this._invalidate()}get _projInfo(){return this._accumulationParams.projInfo}get _zScale(){return this._accumulationParams.zScale}get _inverseView(){return this._accumulationParams.inverseViewMatrix}get _opacityFromElevation(){return this._accumulationRenderer.opacityFromElevation}set _opacityFromElevation(e){this._accumulationRenderer.opacityFromElevation=e}get running(){return this._isRefining&&this._canAccumulate&&this._progress>0}runTask(e){for(this._prepareForShadowMapPass(this._cachedCamera,this._contentCamera);!e.done&&!this._isDoneAccumulating;)this._accumulateShadow(),e.madeProgress();this._requestRender()}accumulateFixedSamples(){if(!this.isAccumulating||!this._canAccumulate)return;(this._previewing||0===this._progress||this._cameraForcedForScreenshot)&&this._clear();const e=this._cameraForcedForScreenshot?this._sampleCount:Math.min(B.previewSamples,this._sampleCount-this._progress);for(let t=0;t<e;++t)this._accumulateShadow();this._cameraForcedForScreenshot=!1}render(){this._accumulationRenderer.render()}dispose(){this._stop(),this._handles.destroy(),this._accumulationRenderer=o(this._accumulationRenderer),this._shadowMap=o(this._shadowMap),this._fbo=o(this._fbo),this._vao=o(this._vao),this._accumulationTechnique=o(this._accumulationTechnique),this._cachedLightDirections.length=0,this._sampleCount=0}setOptions(e){void 0!==e.enabled&&this._setEnabled(e.enabled),void 0!==e.previewing&&this.setPreviewing(e.previewing),void 0!==e.lightDirections&&this.setLightDirections(e.lightDirections),this._accumulationRenderer.setOptions(e)}setPreviewing(e){this._previewing!==e&&(this._previewing=e,this._requestRenderIfEnabled())}setLightDirections(e){this._lightDirections=e}setAccumulationDependencies(e,t,i,s){this._accumulationParams.linearDepthTexture=e,this._depthRange=t,this._updateCamera(i),this._contentCamera=s,this.notifyChange("_canAccumulate")}readAccumulatedShadow(e,t){if(!this._isActive||this._progress<1||e<0||e>this._fbo.width||t<0||t>this._fbo.height)return 0;const i=G;return this._fbo.readPixels(e,t,1,1,V.RGBA,I.UNSIGNED_BYTE,i),i[0]/this._progress}_start(){this._progress=0,this._enabled=!0}_stop(){this._enabled=!1}_invalidate(){this._progress=0,this._requestRenderIfEnabled()}_clear(){this._rctx.bindFramebuffer(this._fbo),this._rctx.setClearColor(0,0,0,0),this._rctx.clearSafe(O.COLOR_BUFFER_BIT),this._progress=0}_accumulateShadow(){const e=this._lightDirections[this._progress],t=this._cachedCamera;this._renderToShadowMap(this._shadowMap,e,t,this._depthRange),this._rctx.bindFramebuffer(this._fbo);const i=this.accumulationTechnique;this._rctx.useTechnique(i),i.bindPass(this._accumulationParams),this._rctx.bindVAO(this._vao),this._rctx.drawArrays(i.primitiveType,0,z(this._vao,"geometry")),this._progress++}_updateCamera(e){if(e.equals(this._cachedCamera))return;const{fullWidth:t,fullHeight:i,projectionMatrix:s,viewMatrix:a,center:o}=e;this._cachedCamera.copyFrom(e),this._fbo.resize(t,i),T(s,t,i,this._projInfo,this._zScale),u(this._inverseView,a,o),l(this._inverseView,this._inverseView),this._opacityFromElevation=1-r(C,A,e.relativeElevation)}_setEnabled(e){e!==this._enabled&&(e?this._start():this._stop())}_requestRenderIfEnabled(){this._enabled&&this._requestRender()}get test(){return{lightDirections:this._lightDirections,isDone:()=>this._isDoneAccumulating,isActive:()=>this._isActive}}};H.previewSamples=6,H.renderViewHandleKey="renderView",e([c()],H.prototype,"_progress",void 0),e([c()],H.prototype,"_sampleCount",void 0),e([c()],H.prototype,"_enabled",void 0),e([c()],H.prototype,"_depthRange",void 0),e([c()],H.prototype,"_previewing",void 0),e([c()],H.prototype,"_accumulationRenderer",void 0),e([c()],H.prototype,"_isRefining",null),e([c()],H.prototype,"_isActive",null),e([c()],H.prototype,"_canAccumulate",null),e([c()],H.prototype,"_isDoneAccumulating",null),e([c()],H.prototype,"_opacityFromElevation",null),e([c()],H.prototype,"running",null),H=B=e([_("esri.views.3d.webgl-engine.lib.ShadowAccumulator")],H);const G=new Uint8Array(4);export{H as ShadowAccumulator};
|