@arcgis/core 6.0.0-next.32 → 6.0.0-next.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/applications/Urban/meshUtils.d.ts +1 -0
- package/applications/Urban/meshUtils.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{f3dc0bc0e00635855a7a.js → 03daf6f235c6edef6268.js} +1 -1
- package/assets/esri/core/workers/chunks/04a1d08c3b5b1dc7628f.js +1 -0
- package/assets/esri/core/workers/chunks/{1eaf8bfdd3765a90ccc2.js → 0523f893870a1546d7d9.js} +1 -1
- package/assets/esri/core/workers/chunks/{72d20d3957d612f86431.js → 0a508e25ec05363e1f04.js} +1 -1
- package/assets/esri/core/workers/chunks/{84038dd85005fea413eb.js → 139e753d95cfc9470e74.js} +1 -1
- package/assets/esri/core/workers/chunks/15950c2fb173b62ee0ec.js +1 -0
- package/assets/esri/core/workers/chunks/{418addce122dbb8897b4.js → 1a614bac5db42c6263f8.js} +1 -1
- package/assets/esri/core/workers/chunks/{58c3ae6030def2ed5f31.js → 1b17f5f720f6cf3f6d73.js} +1 -1
- package/assets/esri/core/workers/chunks/{f9dc38761b314d33890f.js → 1f51567f47c2e2fc8a23.js} +1 -1
- package/assets/esri/core/workers/chunks/2211ff0a1f1ae8100231.js +1 -0
- package/assets/esri/core/workers/chunks/24ada9511b074dc5ae27.js +1 -0
- package/assets/esri/core/workers/chunks/29c610ce1c81ebb84a6b.js +1 -0
- package/assets/esri/core/workers/chunks/2b4dd42920d37b1ff0a9.js +2 -0
- package/assets/esri/core/workers/chunks/2c8ca43563c4f3e94535.js +1 -0
- package/assets/esri/core/workers/chunks/{55a9eaeb152a3abada67.js → 311e4969f19df63451dd.js} +1 -1
- package/assets/esri/core/workers/chunks/{8da2a10318f49d0dc73a.js → 31ef7b7074b3e3829763.js} +1 -1
- package/assets/esri/core/workers/chunks/{360c944c610efa2051fc.js → 379db67f78161ebd5468.js} +2 -2
- package/assets/esri/core/workers/chunks/{b8fd7c3b36981261378b.js → 38df7b1d58c4bcf693d0.js} +1 -1
- package/assets/esri/core/workers/chunks/{be55771758e4bcef0976.js → 3e406043a374ee17475b.js} +1 -1
- package/assets/esri/core/workers/chunks/46c290108a90518ef695.js +1 -0
- package/assets/esri/core/workers/chunks/{a596779eaeec7310671d.js → 478a89317a12e9b4d146.js} +1 -1
- package/assets/esri/core/workers/chunks/{fcc3902d6d9eda6f09f5.js → 48b8b57f559a53c6c513.js} +1 -1
- package/assets/esri/core/workers/chunks/4f3e0d583cfa9d1d6727.js +2 -0
- package/assets/esri/core/workers/chunks/507ecc3692e6d0700958.js +1 -0
- package/assets/esri/core/workers/chunks/{bd46a04a9ee4ea9e6ef1.js → 5864bce1498a13ee5b7e.js} +2 -2
- package/assets/esri/core/workers/chunks/{f4d91d470ca5fea0bd26.js → 5bd1414220e42cb8ebcf.js} +1 -1
- package/assets/esri/core/workers/chunks/5c3aa8386705c5e40358.js +1 -0
- package/assets/esri/core/workers/chunks/{176d75e76318bfc25a53.js → 60c8eedd06080edab3e3.js} +1 -1
- package/assets/esri/core/workers/chunks/661847f1b7044f21600f.js +1 -0
- package/assets/esri/core/workers/chunks/{1a8d8274df292d65f82e.js → 676c8c0329d68f9f3ac4.js} +1 -1
- package/assets/esri/core/workers/chunks/{29cc6b1705418b1be5d7.js → 687deb918eb48a963c8f.js} +1 -1
- package/assets/esri/core/workers/chunks/{0694c7bcfe71692e2ccf.js → 723df53cfa0189837d01.js} +1 -1
- package/assets/esri/core/workers/chunks/7582654a0fc70910731c.js +1 -0
- package/assets/esri/core/workers/chunks/{1ee4df0fd61440cb5f02.js → 7810586c35dfe1437516.js} +1 -1
- package/assets/esri/core/workers/chunks/8517d96fc8ba7b21d845.js +2 -0
- package/assets/esri/core/workers/chunks/90360c0bd053d3e3fd77.js +1 -0
- package/assets/esri/core/workers/chunks/9c3de54513bf8619271c.js +1 -0
- package/assets/esri/core/workers/chunks/{0e445ec3523de9f2dfa2.js → a107f16cd004626b5018.js} +1 -1
- package/assets/esri/core/workers/chunks/{e3b212f8af448ec29eef.js → a1e8209d00809c9520a0.js} +1 -1
- package/assets/esri/core/workers/chunks/{46453ebfee17b5421d9d.js → bf62be00f3040f91aaee.js} +1 -1
- package/assets/esri/core/workers/chunks/{89dc49e784f7ba3b93ea.js → c034c30e577d620b8e28.js} +1 -1
- package/assets/esri/core/workers/chunks/c5bf19da62a3d31009fe.js +2 -0
- package/assets/esri/core/workers/chunks/{2226c20c38e20713bcb5.js.LICENSE.txt → c5bf19da62a3d31009fe.js.LICENSE.txt} +1 -1
- package/assets/esri/core/workers/chunks/{6bb191b19ce43a27f205.js → caad4f475d6eb01c2850.js} +1 -1
- package/assets/esri/core/workers/chunks/cd55cad81accf51d2989.js +1 -0
- package/assets/esri/core/workers/chunks/db1f7b2562de495b3401.js +2 -0
- package/assets/esri/core/workers/chunks/e0a37d3bcb9a944e53dd.js +1 -0
- package/assets/esri/core/workers/chunks/{fe6dcb21570395e46ce8.js → e0a7a75709121a26f255.js} +1 -1
- package/assets/esri/core/workers/chunks/{096b2bf1c0d69d27f20c.js → e8e54faf947a582b4cf7.js} +1 -1
- package/assets/esri/core/workers/chunks/{636e9c4ac1f9ae98f9d1.js → ea81f9d71b0842a4be26.js} +1 -1
- package/assets/esri/core/workers/chunks/{164c8eeefa8232b2b191.js → eaa0e906b46ae4c84d72.js} +2 -2
- package/assets/esri/core/workers/chunks/{a504a5e06cb89a620799.js → ec8b7476eac4718eb0ac.js} +1 -1
- package/chunks/GlobalIllumination.glsl.js +55 -46
- package/chunks/GlobalIlluminationBlur.glsl.js +13 -9
- package/chunks/RibbonLine.glsl.js +90 -88
- package/config.js +1 -1
- package/core/has.js +1 -1
- package/core/workers.d.ts +1 -0
- package/geometry/support/MeshLocalVertexSpace.d.ts +3 -3
- package/geometry/support/aaBoundingRect.js +1 -1
- package/geometry/support/meshUtils/convertMeshVertexSpace.js +1 -1
- package/geometry/support/meshUtils/vertexSpaceConversion.js +1 -1
- package/identity/IdentityManagerBase.js +1 -1
- package/kernel.d.ts +3 -3
- package/kernel.js +1 -1
- package/layers/VoxelWasmPerSceneView.js +1 -1
- package/layers/WFSLayer.d.ts +8 -4
- package/layers/graphics/sources/WFSSource.js +1 -1
- package/layers/graphics/sources/geojson/geojson.js +1 -1
- package/layers/mixins/ArcGISMapService.d.ts +17 -0
- package/layers/mixins/ArcGISMapService.js +1 -1
- package/layers/ogc/wfsUtils.d.ts +7 -2
- package/layers/ogc/wfsUtils.js +1 -1
- package/layers/ogc/xmlUtils.js +1 -1
- package/package.json +4 -4
- package/rest/route.d.ts +1 -1
- package/rest/support/AreasAndLengthsParameters.d.ts +1 -1
- package/rest/support/LengthsParameters.d.ts +1 -1
- package/symbols/TextSymbol.d.ts +0 -1
- package/views/2d/layers/imagery/BaseImageryTileSubView2D.js +1 -1
- package/views/3d/FocusAreasView.js +1 -1
- package/views/3d/analysis/AreaMeasurement/support/AreaMeasurementVisualization.js +1 -1
- package/views/3d/analysis/DirectLineMeasurement/DirectLineMeasurementVisualization.js +1 -1
- package/views/3d/analysis/ElevationProfile/ElevationProfileLineSceneComputation.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightController.js +1 -1
- package/views/3d/layers/graphics/ElevationAligners.js +1 -1
- package/views/3d/layers/graphics/Graphics3DCore.js +1 -1
- package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DMeshObject3DGraphicLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DSymbol.js +1 -1
- package/views/3d/layers/graphics/Graphics3DWaterSymbolLayer.js +1 -1
- package/views/3d/layers/graphics/Graphics3DWebStyleSymbol.js +1 -1
- package/views/3d/layers/graphics/MeshFastUpdateProcessor.js +1 -1
- package/views/3d/layers/graphics/polygonUtils.js +1 -1
- package/views/3d/state/ScreenSizePerspective.js +1 -1
- package/views/3d/state/ViewStateManager.js +1 -1
- package/views/3d/state/helpers/SceneIntersectionHelper.js +1 -1
- package/views/3d/support/RenderCoordsHelper.js +1 -1
- package/views/3d/terrain/TerrainRenderer.js +1 -1
- package/views/3d/terrain/TerrainSurface.js +1 -1
- package/views/3d/terrain/TileRenderer.js +1 -1
- package/views/3d/webgl-engine/lib/ManagedTexture.js +1 -1
- package/views/3d/webgl-engine/lib/NavigationDepthCache.js +1 -1
- package/views/3d/webgl-engine/lib/Renderer.js +1 -1
- package/views/3d/webgl-engine/lib/RibbonLineVertexInfo.js +1 -1
- package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
- package/views/3d/webgl-engine/materials/WaterMaterial.js +1 -1
- package/views/SceneView.js +1 -1
- package/views/webgl/BufferObject.js +1 -1
- package/views/webgl/FramebufferObject.js +1 -1
- package/widgets/ElevationProfile/ElevationProfileLineView.js +1 -1
- package/widgets/HistogramRangeSlider.d.ts +1 -1
- package/assets/esri/core/workers/chunks/0cc7fba402a93e6d2455.js +0 -2
- package/assets/esri/core/workers/chunks/131185d26343a997495e.js +0 -1
- package/assets/esri/core/workers/chunks/1a3f71c4d97c36050030.js +0 -1
- package/assets/esri/core/workers/chunks/2226c20c38e20713bcb5.js +0 -2
- package/assets/esri/core/workers/chunks/2981e904ab62f3ed80d0.js +0 -2
- package/assets/esri/core/workers/chunks/32cc59e126df8c96a0cf.js +0 -2
- package/assets/esri/core/workers/chunks/5bb6c255bdc8aa9ba23e.js +0 -1
- package/assets/esri/core/workers/chunks/654f5441227579d2b6b4.js +0 -1
- package/assets/esri/core/workers/chunks/7084dd6e10c6c1393e92.js +0 -1
- package/assets/esri/core/workers/chunks/7566321c6a2913f2852b.js +0 -1
- package/assets/esri/core/workers/chunks/7b5cd150a4d0139850be.js +0 -1
- package/assets/esri/core/workers/chunks/7cc9d7a88b64e25fce14.js +0 -1
- package/assets/esri/core/workers/chunks/844eedda8f749972f707.js +0 -2
- package/assets/esri/core/workers/chunks/87177e0f82e8a6ae3189.js +0 -1
- package/assets/esri/core/workers/chunks/9976eaa81085c0d17e14.js +0 -1
- package/assets/esri/core/workers/chunks/a2196a49f89d57a0a1c7.js +0 -1
- package/assets/esri/core/workers/chunks/aba259a70bee68d2edb7.js +0 -1
- package/assets/esri/core/workers/chunks/b9cb92858a576eb6aa06.js +0 -1
- package/assets/esri/core/workers/chunks/c33a9635c294c8774977.js +0 -1
- package/assets/esri/core/workers/chunks/f39c700f3db7db52b522.js +0 -1
- /package/assets/esri/core/workers/chunks/{844eedda8f749972f707.js.LICENSE.txt → 2b4dd42920d37b1ff0a9.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{32cc59e126df8c96a0cf.js.LICENSE.txt → 4f3e0d583cfa9d1d6727.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{bd46a04a9ee4ea9e6ef1.js.LICENSE.txt → 5864bce1498a13ee5b7e.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{0cc7fba402a93e6d2455.js.LICENSE.txt → 8517d96fc8ba7b21d845.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{2981e904ab62f3ed80d0.js.LICENSE.txt → db1f7b2562de495b3401.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{164c8eeefa8232b2b191.js.LICENSE.txt → eaa0e906b46ae4c84d72.js.LICENSE.txt} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{sliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{RibbonVertexPosition as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{EvaluateAmbientOcclusion as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as
|
|
2
|
+
import{sliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.glsl.js";import{RibbonVertexPosition as t}from"../views/3d/webgl-engine/core/shaderLibrary/attributes/RibbonVertexPosition.glsl.js";import{EvaluateAmbientOcclusion as n}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateAmbientOcclusion.glsl.js";import{EvaluateSceneLighting as r}from"../views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js";import{forwardLocalUp as ee}from"../views/3d/webgl-engine/core/shaderLibrary/shading/forwardLocalUp.glsl.js";import{mainLightIntensity as te}from"../views/3d/webgl-engine/core/shaderLibrary/shading/lightingUniforms.js";import{LineStipple as ne,computePixelSize as re}from"../views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js";import{MarkerSizing as ie}from"../views/3d/webgl-engine/core/shaderLibrary/shading/MarkerSizing.glsl.js";import{PiUtils as i}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PiUtils.glsl.js";import{positionOutsideClipSpace as a}from"../views/3d/webgl-engine/core/shaderLibrary/shading/PositionOutsideClipSpace.js";import{readFragmentShadow as o}from"../views/3d/webgl-engine/core/shaderLibrary/shading/readFragmentShadow.glsl.js";import{metersPerRenderUnit as s,screenPixelSizePerDistance as c,inverseProjectionMatrix as l,nearFar as u,viewport as d,pixelRatio as f}from"../views/3d/webgl-engine/core/shaderLibrary/util/cameraUniforms.js";import{ColorConversion as ae}from"../views/3d/webgl-engine/core/shaderLibrary/util/ColorConversion.glsl.js";import{NoPerspectiveWrite as p,NoPerspectiveRead as m}from"../views/3d/webgl-engine/core/shaderLibrary/util/NoPerspective.glsl.js";import{getPackedUint32Field as h}from"../views/3d/webgl-engine/core/shaderLibrary/util/PackedUint32.glsl.js";import{addProjViewLocalOrigin as g}from"../views/3d/webgl-engine/core/shaderLibrary/util/View.glsl.js";import{Float4PassUniform as _}from"../views/3d/webgl-engine/core/shaderModules/Float4PassUniform.js";import{FloatPassUniform as v}from"../views/3d/webgl-engine/core/shaderModules/FloatPassUniform.js";import{glsl as y,If as b}from"../views/3d/webgl-engine/core/shaderModules/glsl.js";import{ribbonLineVertexInfoPacking as x,ribbonLineVertexTypePacking as S,ribbonSubdivisionScale as oe}from"../views/3d/webgl-engine/lib/RibbonLineVertexInfo.js";import{alphaCutoff as se}from"../views/3d/webgl-engine/shaders/alphaCutoff.glsl.js";import{animatedAlpha as C}from"../views/3d/webgl-engine/shaders/animatedAlpha.glsl.js";import{groundMetersToScreenRatio as w,planarDistanceToScreenRatio as T}from"../views/3d/webgl-engine/shaders/lineUniforms.js";import{outputColorHighlightOLID as E}from"../views/3d/webgl-engine/shaders/OutputColorHighlightOLID.glsl.js";import{getTextureBackedBufferModule as D}from"../views/3d/webgl-engine/shaders/RibbonLineTextureBuffer.glsl.js";import{ShaderBuilder as O}from"../views/webgl/ShaderBuilder.js";const k=1;function A(k){let A=new O,{attributes:j,varyings:M,vertex:N,fragment:P}=A,{applyMarkerOffset:F,draped:I,shadingEnabled:L,output:R,capType:z,stippleEnabled:B,falloffEnabled:V,wireframe:H,innerColorEnabled:U,hasAnimation:W,hasScreenSizePerspective:G,worldSized:K,imagePattern:ce,useFlatJoinVarying:q}=k,J=z===2,Y=B&&J,X=V||Y,le=B||J,Z=B&&k.usePerspectiveCorrectStipple,Q=D(k).createBuilder(A,k);N.inputs.add(`position`,()=>Q.getTextureAttribute(`position`)),k.hasVVSize?N.inputs.add(`sizeFeatureAttribute`,()=>Q.getTextureAttribute(`sizeFeatureAttribute`)):N.inputs.add(`size`,()=>k.hasVertexSize?Q.getTextureAttribute(`size`):y`1.0`),k.hasVVOpacity&&N.inputs.add(`opacityFeatureAttribute`,()=>Q.getTextureAttribute(`opacityFeatureAttribute`)),k.hasVVColor?N.inputs.add(`colorFeatureAttribute`,()=>Q.getTextureAttribute(`colorFeatureAttribute`)):N.inputs.add(`color`,()=>k.hasVertexColor?Q.getTextureAttribute(`color`):y`vec4(1.0)`),P.include(i),A.include(t,k),A.include(ne,k),R===11?(A.varyings.add(`objectAndLayerIdColorVarying`,`vec4`),N.code.add(y`
|
|
3
3
|
vec4 getOlidColor() {
|
|
4
4
|
return ${Q.getTextureAttribute(`olidColor`)};
|
|
5
5
|
}
|
|
@@ -7,9 +7,9 @@ import{sliceDraw as e}from"../views/3d/webgl-engine/core/shaderLibrary/Slice.gls
|
|
|
7
7
|
void forwardObjectAndLayerIdColor() {
|
|
8
8
|
objectAndLayerIdColorVarying = getOlidColor();
|
|
9
9
|
}
|
|
10
|
-
`),P.code.add(
|
|
10
|
+
`),P.code.add(y`void outputObjectAndLayerIdColor() {
|
|
11
11
|
fragColor = objectAndLayerIdColorVarying;
|
|
12
|
-
}`)):(N.code.add(
|
|
12
|
+
}`)):(N.code.add(y`void forwardObjectAndLayerIdColor() {}`),P.code.add(y`void outputObjectAndLayerIdColor() {}`));let $=F&&!I;return $&&A.include(ie,k),g(N,k),I&&(K||B)&&N.uniforms.add(K?w:T),K&&!I&&N.uniforms.add(s,c),N.uniforms.add(l,u,d,new v(`miterLimit`,e=>e.join===`miter`?e.miterLimit:0)),N.constants.add(`LARGE_HALF_FLOAT`,`float`,65500),N.constants.add(`EPS`,`float`,.001),N.constants.add(`NUM_JOIN_SUBDIVISIONS`,`float`,k.numJoinSubdivisions),j.add(`ribbonLineVertexInfo`,`uint`),M.add(`vColor`,`vec4`),M.add(`vpos`,`vec3`,{invariant:!0}),M.add(`vLineDistance`,`float`),M.add(`vLineWidth`,`float`),q?M.add(`vIsInsideJoin`,`int`,{flat:!0}):M.add(`vPointTag`,`vec2`),M.add(`vStretchFactor`,`float`),M.add(`vJoinCenterLineSDFs`,`vec2`),M.add(`vSubdivisionFactor`,`float`),B&&M.add(`vLineSizeInv`,`float`),X&&M.add(`vLineDistanceNorm`,`float`),J&&(M.add(`vSegmentSDF`,`float`),M.add(`vReverseSegmentSDF`,`float`)),N.code.add(y`vec3 perpendicular(vec3 v) {
|
|
13
13
|
return vec3(v.y, -v.x, 0.0);
|
|
14
14
|
}
|
|
15
15
|
float nearPlaneInterpolationFactor(float nearPlaneDistance, vec4 start, vec4 end) {
|
|
@@ -20,17 +20,17 @@ float s = sin(a);
|
|
|
20
20
|
float c = cos(a);
|
|
21
21
|
mat2 m = mat2(c, -s, s, c);
|
|
22
22
|
return vec3(m * v.xy, v.z);
|
|
23
|
-
}`),N.code.add(
|
|
23
|
+
}`),N.code.add(y`vec4 projectAndScale(vec4 pos) {
|
|
24
24
|
vec4 posNdc = proj * pos;
|
|
25
25
|
posNdc.xy *= viewport.zw / posNdc.w;
|
|
26
26
|
posNdc.z /= posNdc.w;
|
|
27
27
|
return posNdc;
|
|
28
|
-
}`),N.code.add(
|
|
28
|
+
}`),N.code.add(y`
|
|
29
29
|
void clip(
|
|
30
30
|
inout vec4 pos,
|
|
31
31
|
inout vec4 prev,
|
|
32
32
|
inout vec4 next,
|
|
33
|
-
${
|
|
33
|
+
${b(Z,y`inout float u0, inout float prevU0, inout float nextU0,`)}
|
|
34
34
|
bool isStartVertex
|
|
35
35
|
) {
|
|
36
36
|
float adjustedNearPlaneDistance = nearFar[0] * 0.99;
|
|
@@ -41,7 +41,7 @@ return posNdc;
|
|
|
41
41
|
if (prev.z < -nearFar[0]) {
|
|
42
42
|
// Previous position in front of near plane
|
|
43
43
|
float clipFactor = nearPlaneInterpolationFactor(adjustedNearPlaneDistance, prev, pos);
|
|
44
|
-
${
|
|
44
|
+
${b(Z,y`u0 = mix(prevU0, u0, clipFactor); nextU0 = u0;`)}
|
|
45
45
|
pos = mix(prev, pos, clipFactor);
|
|
46
46
|
next = pos;
|
|
47
47
|
} else {
|
|
@@ -51,7 +51,7 @@ return posNdc;
|
|
|
51
51
|
if (next.z < -nearFar[0]) {
|
|
52
52
|
// Next position in front of near plane
|
|
53
53
|
float clipFactor = nearPlaneInterpolationFactor(adjustedNearPlaneDistance, pos, next);
|
|
54
|
-
${
|
|
54
|
+
${b(Z,y`u0 = mix(u0, nextU0, clipFactor); prevU0 = u0;`)}
|
|
55
55
|
pos = mix(pos, next, clipFactor);
|
|
56
56
|
prev = pos;
|
|
57
57
|
} else {
|
|
@@ -63,61 +63,55 @@ return posNdc;
|
|
|
63
63
|
if (prev.z > -nearFar[0]) {
|
|
64
64
|
// Previous position behind near plane
|
|
65
65
|
float clipFactor = nearPlaneInterpolationFactor(adjustedNearPlaneDistance, pos, prev);
|
|
66
|
-
${
|
|
66
|
+
${b(Z,y`prevU0 = mix(u0, prevU0, clipFactor);`)}
|
|
67
67
|
prev = mix(pos, prev, clipFactor);
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
if (next.z > -nearFar[0]) {
|
|
71
71
|
// Next position behind near plane
|
|
72
72
|
float clipFactor = nearPlaneInterpolationFactor(adjustedNearPlaneDistance, next, pos);
|
|
73
|
-
${
|
|
73
|
+
${b(Z,y`nextU0 = mix(nextU0, u0, clipFactor);`)}
|
|
74
74
|
next = mix(next, pos, clipFactor);
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
-
`),N.uniforms.add(
|
|
79
|
-
uint
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
float subdivisionFactor = float(${
|
|
78
|
+
`),N.uniforms.add(f),N.constants.add(`aaWidth`,`float`,1),P.constants.add(`aaWidth`,`float`,1),N.main.add(y`
|
|
79
|
+
uint vertexType = ${h(x,1,y`ribbonLineVertexInfo`)};
|
|
80
|
+
bool isJoin = ${h(S,0,y`vertexType`)} == 0u;
|
|
81
|
+
float lineSide = ${h(S,1,y`vertexType`)} == 0u ? 1.0 : -1.0;
|
|
82
|
+
bool isStartVertex = ${h(S,2,y`vertexType`)} != 0u;
|
|
83
|
+
float subdivisionFactor = float(${h(x,2,y`ribbonLineVertexInfo`)}) / ${y.float(oe)};
|
|
84
84
|
vec3 position = ${Q.getTextureAttribute(`position`)};
|
|
85
|
-
${B?
|
|
86
|
-
${B&&K?
|
|
85
|
+
${B?y`float u0 = ${Q.getTextureAttribute(`u0`)};`:``}
|
|
86
|
+
${B&&K?y`
|
|
87
87
|
float prevU0 = ${Q.getTextureAttribute(`u0`,-1)};
|
|
88
88
|
float nextU0 = ${Q.getTextureAttribute(`u0`,1)};
|
|
89
|
-
${
|
|
89
|
+
${b(!I,y`
|
|
90
90
|
u0 *= metersPerRenderUnit;
|
|
91
91
|
prevU0 *= metersPerRenderUnit;
|
|
92
92
|
nextU0 *= metersPerRenderUnit;
|
|
93
93
|
`)}
|
|
94
94
|
`:``}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
bool isInsideJoin = vertexType > ${v.int(x)};
|
|
99
|
-
vertexType -= isInsideJoin ? ${v.int(x)} : 0;
|
|
95
|
+
${b(!q,y`
|
|
96
|
+
float textureIndexParity = float(${h(x,0,y`ribbonLineVertexInfo`)} % 2u);
|
|
97
|
+
vPointTag = vec2(textureIndexParity, 1.0 - textureIndexParity);
|
|
100
98
|
`)}
|
|
101
|
-
float lineSide = float(sign(signedVertexType));
|
|
102
|
-
bool isStartVertex = vertexType == 2 || vertexType == 3;
|
|
103
99
|
vec3 prevPosition = ${Q.getTextureAttribute(`position`,-1)};
|
|
104
100
|
vec3 nextPosition = ${Q.getTextureAttribute(`position`,1)};
|
|
105
101
|
|
|
106
|
-
// Cleared geometry has a zero descriptor
|
|
107
|
-
if (
|
|
108
|
-
gl_Position = ${
|
|
102
|
+
// Cleared geometry has a zero descriptor. Texture index 0 is never valid for a vertex, as it is only used for padding.
|
|
103
|
+
if (ribbonLineVertexInfo == 0u) {
|
|
104
|
+
gl_Position = ${a};
|
|
109
105
|
}
|
|
110
106
|
else {
|
|
111
107
|
vec4 pos = view * vec4(position, 1.0);
|
|
112
108
|
vec4 prev = view * vec4(prevPosition, 1.0);
|
|
113
109
|
vec4 next = view * vec4(nextPosition, 1.0);
|
|
114
|
-
|
|
115
|
-
bool isJoin = vertexType < 3;
|
|
116
|
-
`),$&&N.main.add(v`vec4 other = isStartVertex ? next : prev;
|
|
110
|
+
`),$&&N.main.add(y`vec4 other = isStartVertex ? next : prev;
|
|
117
111
|
bool markersHidden = areWorldMarkersHidden(pos.xyz, other.xyz);
|
|
118
112
|
if (!isJoin && !markersHidden) {
|
|
119
113
|
pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
120
|
-
}`),A.include(
|
|
114
|
+
}`),A.include(p),N.code.add(y`
|
|
121
115
|
vec2 computeJoinAndCapDisplacement(
|
|
122
116
|
bool isJoin,
|
|
123
117
|
bool isStartVertex,
|
|
@@ -163,7 +157,7 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
163
157
|
}
|
|
164
158
|
|
|
165
159
|
// Compute stretch compensation for feathering.
|
|
166
|
-
${
|
|
160
|
+
${b(q,y`
|
|
167
161
|
if (subdivisionFactor > 0.0) {
|
|
168
162
|
vIsInsideJoin = 1;
|
|
169
163
|
}
|
|
@@ -197,14 +191,14 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
197
191
|
}
|
|
198
192
|
|
|
199
193
|
if (isOutside && displacementLen > miterLimit * lineWidth) {
|
|
200
|
-
${
|
|
194
|
+
${b(k.roundJoins,y`
|
|
201
195
|
vec3 startDir = perpendicular(leftLen < EPS ? right : left);
|
|
202
196
|
vec3 endDir = perpendicular(rightLen < EPS ? left : right);
|
|
203
|
-
float factor = ${B?
|
|
197
|
+
float factor = ${B?y`min(1.0, subdivisionFactor * ((NUM_JOIN_SUBDIVISIONS + 1.0) / NUM_JOIN_SUBDIVISIONS))`:y`subdivisionFactor`};
|
|
204
198
|
|
|
205
199
|
float rotationAngle = acos(clamp(dot(startDir.xy, endDir.xy), -1.0, 1.0));
|
|
206
200
|
joinDisplacementDir = rotateZ(startDir, -lineSide * factor * rotationAngle);
|
|
207
|
-
`,
|
|
201
|
+
`,y`
|
|
208
202
|
/**
|
|
209
203
|
* Convert to bevel join if miterLimit is exceeded.
|
|
210
204
|
* Here vertices with a subdivisionFactor > 0 are either START vertices or
|
|
@@ -216,19 +210,19 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
216
210
|
vec3 startDir = perpendicular(leftLen < EPS ? right : left);
|
|
217
211
|
vec3 endDir = perpendicular(rightLen < EPS ? left : right);
|
|
218
212
|
|
|
219
|
-
${
|
|
213
|
+
${b(B,y`joinDisplacementDir = (isStartVertex || subdivisionFactor > 0.0) ? endDir : startDir;`,y`joinDisplacementDir = mix(startDir, endDir, subdivisionFactor);`)}
|
|
220
214
|
`)}
|
|
221
215
|
displacementLen = lineWidth;
|
|
222
216
|
}
|
|
223
217
|
} else {
|
|
224
218
|
joinDisplacementDir = perpendicular(isStartVertex ? right : left);
|
|
225
|
-
${z===0?``:
|
|
219
|
+
${z===0?``:y`capDisplacementDir = vec3((isStartVertex ? -right : left).xy, 0.0);`}
|
|
226
220
|
}
|
|
227
221
|
|
|
228
222
|
return (joinDisplacementDir.xy * lineSide + capDisplacementDir.xy) * displacementLen;
|
|
229
223
|
}
|
|
230
|
-
`),N.main.add(
|
|
231
|
-
clip(pos, prev, next, ${
|
|
224
|
+
`),N.main.add(y`
|
|
225
|
+
clip(pos, prev, next, ${b(Z,y`u0, prevU0, nextU0,`)} isStartVertex);
|
|
232
226
|
|
|
233
227
|
vec3 clippedPos = pos.xyz;
|
|
234
228
|
vec3 clippedCenter = mix(pos.xyz, isStartVertex ? next.xyz : prev.xyz, 0.5);
|
|
@@ -240,29 +234,29 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
240
234
|
vec3 left = (pos.xyz - prev.xyz);
|
|
241
235
|
vec3 right = (next.xyz - pos.xyz);
|
|
242
236
|
|
|
243
|
-
float lineSize = getSize(${
|
|
244
|
-
${
|
|
245
|
-
${
|
|
237
|
+
float lineSize = getSize(${b(G,`clippedPos`)});
|
|
238
|
+
${b(B&&G,`float patternLineSize = getSize(clippedCenter);`)}
|
|
239
|
+
${b(B&&!G,`float patternLineSize = lineSize;`)}
|
|
246
240
|
|
|
247
|
-
${
|
|
248
|
-
${
|
|
241
|
+
${b(K,y`
|
|
242
|
+
${b(I,y`float lineSizeScreen = lineSize * groundMetersToScreenRatio;`,y`
|
|
249
243
|
float metersPerScreenPixel = max(-clippedPos.z, nearFar[0]) * metersPerRenderUnit * screenPixelSizePerDistance;
|
|
250
244
|
float lineSizeScreen = lineSize / metersPerScreenPixel;
|
|
251
245
|
`)}
|
|
252
246
|
float lineWidth = lineSizeScreen * pixelRatio + aaWidth;
|
|
253
|
-
`,
|
|
247
|
+
`,y`
|
|
254
248
|
float lineWidth = lineSize * pixelRatio + aaWidth;
|
|
255
249
|
`)}
|
|
256
250
|
|
|
257
251
|
vLineWidth = noPerspectiveWrite(lineWidth, pos.w);
|
|
258
252
|
${B?`vLineSizeInv = noPerspectiveWrite(1.0 / ${K?`lineSize`:`max(lineSize, 1.0)`}, pos.w);`:``}
|
|
259
|
-
`),
|
|
253
|
+
`),le&&N.main.add(y`
|
|
260
254
|
float isEndVertex = float(!isStartVertex);
|
|
261
255
|
vec3 segmentOrigin = mix(pos.xyz, prev.xyz, isEndVertex);
|
|
262
256
|
vec3 segment = mix(right, left, isEndVertex);
|
|
263
257
|
${J?`vec3 segmentEnd = mix(next.xyz, pos.xyz, isEndVertex);`:``}
|
|
264
|
-
`),N.main.add(
|
|
265
|
-
vIsInsideJoin =
|
|
258
|
+
`),N.main.add(y`
|
|
259
|
+
${b(q,y`vIsInsideJoin = 0;`)}
|
|
266
260
|
vStretchFactor = 1.0;
|
|
267
261
|
vSubdivisionFactor = 0.0;
|
|
268
262
|
vJoinCenterLineSDFs = vec2(LARGE_HALF_FLOAT);
|
|
@@ -291,10 +285,10 @@ pos.xyz += normalize(other.xyz - pos.xyz) * getWorldMarkerSize(pos.xyz) * 0.5;
|
|
|
291
285
|
float lineDistNorm = noPerspectiveWrite(lineSide, pos.w);
|
|
292
286
|
|
|
293
287
|
vLineDistance = lineWidth * lineDistNorm;
|
|
294
|
-
${X?
|
|
288
|
+
${X?y`vLineDistanceNorm = lineDistNorm;`:``}
|
|
295
289
|
|
|
296
290
|
pos.xyz += displacement;
|
|
297
|
-
`),N.main.add(
|
|
291
|
+
`),N.main.add(y`if (isJoin) {
|
|
298
292
|
vec2 joinCenterToVertex = displacementXY;
|
|
299
293
|
vec2 leftCenterlineDir = left.xy;
|
|
300
294
|
vec2 rightCenterlineDir = right.xy;
|
|
@@ -309,36 +303,36 @@ dot(vec2(leftCenterlineDir.y, -leftCenterlineDir.x), joinCenterToVertex)
|
|
|
309
303
|
),
|
|
310
304
|
pos.w
|
|
311
305
|
);
|
|
312
|
-
}`),J&&N.main.add(
|
|
306
|
+
}`),J&&N.main.add(y`vec2 segmentDir = normalize(segment.xy);
|
|
313
307
|
vSegmentSDF = noPerspectiveWrite((isJoin && isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentOrigin.xy, segmentDir)), pos.w);
|
|
314
|
-
vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),B&&(I?N.main.add(`float stippleDistanceToScreenRatio = ${K?`groundMetersToScreenRatio`:`planarDistanceToScreenRatio`};`):N.main.add(
|
|
315
|
-
float stippleDistanceToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),N.main.add(
|
|
308
|
+
vReverseSegmentSDF = noPerspectiveWrite((isJoin && !isStartVertex) ? LARGE_HALF_FLOAT : (dot(pos.xy - segmentEnd.xy, -segmentDir)), pos.w);`),B&&(I?N.main.add(`float stippleDistanceToScreenRatio = ${K?`groundMetersToScreenRatio`:`planarDistanceToScreenRatio`};`):N.main.add(y`vec3 segmentCenter = mix((nextPosition + position) * 0.5, (position + prevPosition) * 0.5, isEndVertex);
|
|
309
|
+
float stippleDistanceToScreenRatio = computeWorldToScreenRatio(segmentCenter);`),N.main.add(y`
|
|
316
310
|
float segmentLengthScreenDouble = length(segment.xy);
|
|
317
311
|
float segmentLengthScreen = segmentLengthScreenDouble * 0.5;
|
|
318
312
|
float discreteStippleDistanceToScreenRatio = discretizeStippleDistanceToScreenRatio(stippleDistanceToScreenRatio);
|
|
319
|
-
float segmentLengthRender = ${
|
|
313
|
+
float segmentLengthRender = ${b(K,y`abs(mix(nextU0 - u0, u0 - prevU0, isEndVertex))`,y`length(mix(nextPosition - position, position - prevPosition, isEndVertex))`)};
|
|
320
314
|
|
|
321
|
-
${
|
|
322
|
-
float segmentStartRender = ${
|
|
315
|
+
${b(!I||K,y`
|
|
316
|
+
float segmentStartRender = ${b(K,y`mix(u0, prevU0, isEndVertex)`,y`mix(u0, u0 - segmentLengthRender, isEndVertex)`)};
|
|
323
317
|
`)}
|
|
324
318
|
|
|
325
319
|
vStipplePatternStretch = stippleDistanceToScreenRatio / discreteStippleDistanceToScreenRatio;
|
|
326
|
-
`),I?N.main.add(
|
|
327
|
-
float startPseudoScreen = u0 * discreteStippleDistanceToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):N.main.add(
|
|
328
|
-
float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceToScreenRatio;`),N.uniforms.add(new
|
|
320
|
+
`),I?N.main.add(y`float segmentLengthPseudoScreen = segmentLengthScreen / pixelRatio * discreteStippleDistanceToScreenRatio / stippleDistanceToScreenRatio;
|
|
321
|
+
float startPseudoScreen = u0 * discreteStippleDistanceToScreenRatio - mix(0.0, segmentLengthPseudoScreen, isEndVertex);`):N.main.add(y`float startPseudoScreen = segmentStartRender * discreteStippleDistanceToScreenRatio;
|
|
322
|
+
float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceToScreenRatio;`),N.uniforms.add(new v(`stipplePatternPixelSize`,e=>re(e))),N.main.add(y`
|
|
329
323
|
float patternLength = patternLineSize * stipplePatternPixelSize;
|
|
330
324
|
vec2 stippleDistanceLimits;
|
|
331
325
|
|
|
332
|
-
${
|
|
326
|
+
${b(K,y`
|
|
333
327
|
stippleDistanceLimits = vec2(segmentStartRender, segmentStartRender + segmentLengthRender);
|
|
334
328
|
vStipplePatternStretch = 1.0;
|
|
335
329
|
|
|
336
|
-
${
|
|
330
|
+
${b(ce,y`
|
|
337
331
|
// The v-coordinate used in case of an image pattern.
|
|
338
332
|
bool isLeft = lineSide < 0.0;
|
|
339
333
|
vStippleV = isLeft ? 0.0 : 1.0;
|
|
340
334
|
`)}
|
|
341
|
-
`,
|
|
335
|
+
`,y`
|
|
342
336
|
// Compute the coordinates at both start and end of the line segment, because we need both to clamp to in the
|
|
343
337
|
// fragment shader
|
|
344
338
|
stippleDistanceLimits = computeStippleDistanceLimits(startPseudoScreen, segmentLengthPseudoScreen, segmentLengthScreen, patternLength);
|
|
@@ -358,7 +352,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceT
|
|
|
358
352
|
vStippleDistance += (stippleDisplacementFactor - isEndVertex) * (stippleDistanceLimits.y - stippleDistanceLimits.x);
|
|
359
353
|
}
|
|
360
354
|
|
|
361
|
-
${
|
|
355
|
+
${b(Z,y`
|
|
362
356
|
float segmentStartInverseW = 1.0 / mix(pos.w, prev.w, isEndVertex);
|
|
363
357
|
float segmentEndInverseW = 1.0 / mix(next.w, pos.w, isEndVertex);
|
|
364
358
|
vStipplePerspective = noPerspectiveWrite(
|
|
@@ -374,7 +368,7 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceT
|
|
|
374
368
|
// Disable stipple distance limits on caps
|
|
375
369
|
vStippleLimitsAndCaps.zw = isJoin ? vec2(0.0) :
|
|
376
370
|
isStartVertex ? vec2(1.0, 0.0) : vec2(0.0, 1.0);
|
|
377
|
-
`)),N.main.add(
|
|
371
|
+
`)),N.main.add(y`
|
|
378
372
|
// Convert back into NDC
|
|
379
373
|
pos.xy = (pos.xy / viewport.zw) * pos.w;
|
|
380
374
|
pos.z = pos.z * pos.w;
|
|
@@ -388,25 +382,33 @@ float segmentLengthPseudoScreen = segmentLengthRender * discreteStippleDistanceT
|
|
|
388
382
|
vpos = (inverseProjectionMatrix * pos).xyz;
|
|
389
383
|
gl_Position = pos;
|
|
390
384
|
forwardObjectAndLayerIdColor();
|
|
391
|
-
}`),A.include(E,k),A.include(
|
|
392
|
-
float
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
float
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
float
|
|
403
|
-
|
|
404
|
-
|
|
385
|
+
}`),A.include(E,k),A.include(m),P.include(ae),P.include(se),P.include(e,k),P.main.add(`discardBySlice(vpos);`),P.code.add(y`
|
|
386
|
+
float lineFeatheringFactor(float lineWidth, float lineDistance) {
|
|
387
|
+
/**
|
|
388
|
+
* Determine whether we are inside the feathering region or not, under
|
|
389
|
+
* consideration of triangle stretch and the distance to the centerline.
|
|
390
|
+
*/
|
|
391
|
+
bool isInsideJoin = ${q?y`vIsInsideJoin == 1`:y`any(equal(vPointTag, vec2(0.0)))`};
|
|
392
|
+
float stretchFactor = isInsideJoin ? noPerspectiveRead(vStretchFactor) : 1.0;
|
|
393
|
+
float featherWidth = 2.0;
|
|
394
|
+
// Keep the filter in render-target pixels, including when its two sides overlap on a subpixel stroke.
|
|
395
|
+
float featherStartDistance = lineWidth - featherWidth / stretchFactor;
|
|
396
|
+
float straightFeatherStartDistance = lineWidth - featherWidth;
|
|
397
|
+
float value = abs(lineDistance);
|
|
398
|
+
float feather = (value - featherStartDistance) / (lineWidth - featherStartDistance);
|
|
399
|
+
vec2 joinCenterSDFs = noPerspectiveRead(vJoinCenterLineSDFs);
|
|
400
|
+
float joinCenterDistance = abs(vSubdivisionFactor > 0.5 ? joinCenterSDFs.x : joinCenterSDFs.y);
|
|
401
|
+
float straightFeather = (joinCenterDistance - straightFeatherStartDistance) / (lineWidth - straightFeatherStartDistance);
|
|
402
|
+
feather = isInsideJoin ? max(feather, straightFeather) : feather;
|
|
403
|
+
float coverage = min(lineWidth - aaWidth, 1.0);
|
|
404
|
+
return clamp(1.0 - feather, 0.0, coverage);
|
|
405
|
+
}
|
|
406
|
+
`),P.main.add(y`
|
|
405
407
|
float lineWidth = noPerspectiveRead(vLineWidth);
|
|
406
408
|
float lineDistance = noPerspectiveRead(vLineDistance);
|
|
407
|
-
${
|
|
408
|
-
`),Y&&P.main.add(
|
|
409
|
-
vec4 finalColor = albedo;`):(J&&P.main.add(
|
|
409
|
+
${b(X,y`float lineDistanceNorm = noPerspectiveRead(vLineDistanceNorm);`)}
|
|
410
|
+
`),Y&&P.main.add(y`float nominalLineWidth = lineWidth - aaWidth;`),H?P.main.add(y`vec4 albedo = vec4(1.0, 0.0, 1.0, 1.0);
|
|
411
|
+
vec4 finalColor = albedo;`):(J&&P.main.add(y`
|
|
410
412
|
float sdf = noPerspectiveRead(min(vSegmentSDF, vReverseSegmentSDF));
|
|
411
413
|
vec2 fragmentPosition = vec2(min(sdf, 0.0), lineDistance);
|
|
412
414
|
|
|
@@ -417,7 +419,7 @@ vec4 finalColor = albedo;`):(J&&P.main.add(v`
|
|
|
417
419
|
if (capCoverage < alphaCutoff) {
|
|
418
420
|
discard;
|
|
419
421
|
}
|
|
420
|
-
`),Y?P.main.add(
|
|
422
|
+
`),Y?P.main.add(y`vec2 stipplePosition = vec2(
|
|
421
423
|
min(getStippleCapDistance(), 0.0) * nominalLineWidth,
|
|
422
424
|
lineDistance
|
|
423
425
|
);
|
|
@@ -425,11 +427,11 @@ float stippleRadius = length(stipplePosition);
|
|
|
425
427
|
float stippleCapSDF = (stippleRadius - nominalLineWidth) * 0.5;
|
|
426
428
|
float stippleCoverage = clamp(0.5 - stippleCapSDF, 0.0, 1.0);
|
|
427
429
|
float lineCoverage = min(lineFeatheringFactor(lineWidth, lineDistance), capCoverage);
|
|
428
|
-
float stippleAlpha = lineCoverage > 0.0 ? min(stippleCoverage, lineCoverage) / lineCoverage : 0.0;`):P.main.add(
|
|
429
|
-
color.a = noPerspectiveRead(color.a);`),U&&P.uniforms.add(new
|
|
430
|
+
float stippleAlpha = lineCoverage > 0.0 ? min(stippleCoverage, lineCoverage) / lineCoverage : 0.0;`):P.main.add(y`float stippleAlpha = getStippleAlpha(lineWidth);`),R!==11&&P.main.add(y`discardByStippleAlpha(stippleAlpha, alphaCutoff);`),P.uniforms.add(new _(`intrinsicColor`,e=>e.color)).main.add(y`vec4 color = intrinsicColor * vColor;
|
|
431
|
+
color.a = noPerspectiveRead(color.a);`),U&&P.uniforms.add(new _(`innerColor`,e=>e.innerColor??e.color),new v(`innerWidth`,(e,t)=>e.innerWidth*t.camera.pixelRatio)).main.add(y`float distToInner = abs(lineDistance) - innerWidth;
|
|
430
432
|
float innerAA = clamp(0.5 - distToInner, 0.0, 1.0);
|
|
431
433
|
float innerAlpha = innerColor.a + color.a * (1.0 - innerColor.a);
|
|
432
|
-
color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),P.main.add(`vec4 albedo = blendStipple(color, stippleAlpha);`),V&&(P.uniforms.add(new
|
|
434
|
+
color = mix(color, vec4(innerColor.rgb, innerAlpha), innerAA);`),P.main.add(`vec4 albedo = blendStipple(color, stippleAlpha);`),V&&(P.uniforms.add(new v(`falloff`,e=>e.falloff)),P.main.add(y`albedo.a *= pow(max(0.0, 1.0 - abs(lineDistanceNorm)), falloff);`)),P.main.add(y`albedo.a *= ${Y?`lineCoverage`:`lineFeatheringFactor(lineWidth, lineDistance)`};`),W&&(N.main.add(`vec4 animatedAlphaTimeStamps = ${Q.getTextureAttribute(`timeStamps`)};`),A.include(C,k),P.main.add(`albedo.a *= animatedAlpha();`)),L?(A.include(ee,k),N.main.add(y`forwardLocalUp(position, localOrigin);`),N.main.add(`forwardLinearDepthToReadShadow();`),A.include(o,k),P.include(r,k),P.include(n,k),P.uniforms.add(te).main.add(y`vec3 normal = normalize(upNormal);
|
|
433
435
|
float additionalAmbientScale = additionalDirectedAmbientLight(normal);
|
|
434
436
|
float shadow = readFragmentShadow(additionalAmbientScale);
|
|
435
437
|
float ssao = evaluateAmbientOcclusionInverse();
|
|
@@ -438,4 +440,4 @@ vec3 viewDirection = normalize((inverseViewMatrix * vec4(vpos, 0.0)).xyz);
|
|
|
438
440
|
vec4 finalColor = vec4(
|
|
439
441
|
evaluateSceneLighting(normal, albedo.rgb, shadow, 1.0 - ssao, additionalLight,viewDirection, normal),
|
|
440
442
|
albedo.a
|
|
441
|
-
);`)):P.main.add(`vec4 finalColor = albedo;`)),P.main.add(
|
|
443
|
+
);`)):P.main.add(`vec4 finalColor = albedo;`)),P.main.add(y`outputColorHighlightOLID(applySlice(finalColor, vpos), albedo.rgb);`),A}const j=Object.freeze(Object.defineProperty({__proto__:null,build:A,numRoundJoinSubdivisions:1},Symbol.toStringTag,{value:`Module`}));export{j as R,A as b,k as n};
|
package/config.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import"./core/has.js";import{deepMerge as e}from"./core/object.js";const t={apiKey:void 0,apiKeys:{scopes:[]},applicationName:``,applicationUrl:globalThis.location?.href,assetsPath:``,fontsUrl:`https://static.arcgis.com/fonts`,geometryServiceUrl:`https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer`,geoRSSServiceUrl:`https://utility.arcgis.com/sharing/rss`,kmlServiceUrl:`https://utility.arcgis.com/sharing/kml`,userPrivilegesApplied:!0,portalUrl:`https://www.arcgis.com`,respectPrefersReducedMotion:!0,routeServiceUrl:`https://route-api.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World`,workers:{loaderConfig:{has:{},paths:{},map:{},packages:[]}},request:{crossOriginNoCorsDomains:null,httpsDomains:[`arcgis.com`,`arcgisonline.com`,`esrikr.com`,`premiumservices.blackbridge.com`,`esripremium.accuweather.com`,`gbm.digitalglobe.com`,`firstlook.digitalglobe.com`,`msi.digitalglobe.com`],interceptors:[],internalInterceptors:[],maxUrlLength:2e3,priority:`high`,proxyRules:[],proxyUrl:null,timeout:62e3,trustedServers:[],useIdentity:!0},log:{interceptors:[],level:null}};globalThis.esriConfig&&(e(t,globalThis.esriConfig,!0),delete t.has),t.assetsPath||(t.assetsPath=`https://cdn.jsdelivr.net/npm/@arcgis/core@6.0.0-next.
|
|
2
|
+
import"./core/has.js";import{deepMerge as e}from"./core/object.js";const t={apiKey:void 0,apiKeys:{scopes:[]},applicationName:``,applicationUrl:globalThis.location?.href,assetsPath:``,fontsUrl:`https://static.arcgis.com/fonts`,geometryServiceUrl:`https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer`,geoRSSServiceUrl:`https://utility.arcgis.com/sharing/rss`,kmlServiceUrl:`https://utility.arcgis.com/sharing/kml`,userPrivilegesApplied:!0,portalUrl:`https://www.arcgis.com`,respectPrefersReducedMotion:!0,routeServiceUrl:`https://route-api.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World`,workers:{loaderConfig:{has:{},paths:{},map:{},packages:[]}},request:{crossOriginNoCorsDomains:null,httpsDomains:[`arcgis.com`,`arcgisonline.com`,`esrikr.com`,`premiumservices.blackbridge.com`,`esripremium.accuweather.com`,`gbm.digitalglobe.com`,`firstlook.digitalglobe.com`,`msi.digitalglobe.com`],interceptors:[],internalInterceptors:[],maxUrlLength:2e3,priority:`high`,proxyRules:[],proxyUrl:null,timeout:62e3,trustedServers:[],useIdentity:!0},log:{interceptors:[],level:null}};globalThis.esriConfig&&(e(t,globalThis.esriConfig,!0),delete t.has),t.assetsPath||(t.assetsPath=`https://cdn.jsdelivr.net/npm/@arcgis/core@6.0.0-next.34/assets`,t.defaultAssetsPath=t.assetsPath);export{t as default};
|
package/core/has.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
const e=globalThis,t={...e.esriConfig?.has};function has(n){return typeof t[n]==`function`?t[n]=t[n](e):t[n]}has.add=(e,n,r,i)=>{(i||t[e]===void 0)&&(t[e]=n),r&&has(e)},has.cache=t,has.add(`big-integer-warning-enabled`,!0),has.add(`esri-deprecation-warnings`,!0),has.add(`esri-tests-disable-screenshots`,!1),has.add(`esri-tests-use-full-window`,!1),has.add(`esri-tests-post-to-influx`,!0),has.add(`esri-cim-animations-enable-status`,`enabled`),has.add(`esri-cim-animations-spotlight`,!1),has.add(`esri-cim-animations-freeze-time`,!1),(()=>{has.add(`host-webworker`,e.WorkerGlobalScope!==void 0&&self instanceof e.WorkerGlobalScope);let t=typeof window<`u`&&typeof location<`u`&&typeof document<`u`&&window.location===location&&window.document===document;if(has.add(`host-browser`,t),has.add(`host-node`,!!(typeof e.process==`object`&&e.process.versions?.node&&e.process.versions.v8)),has.add(`dom`,t),has(`host-browser`)){let e=navigator,t=e.userAgent,n=e.appVersion,r=parseFloat(n);if(has.add(`wp`,parseFloat(t.split(`Windows Phone`)[1])||void 0),has.add(`msapp`,parseFloat(t.split(`MSAppHost/`)[1])||void 0),has.add(`khtml`,n.includes(`Konqueror`)?r:void 0),has.add(`edge`,parseFloat(t.split(`Edge/`)[1])||void 0),has.add(`opr`,parseFloat(t.split(`OPR/`)[1])||void 0),has.add(`webkit`,!has(`wp`)&&!has(`edge`)&&parseFloat(t.split(`WebKit/`)[1])||void 0),has.add(`chrome`,!has(`edge`)&&!has(`opr`)&&parseFloat(t.split(`Chrome/`)[1])||void 0),has.add(`android`,!has(`wp`)&&parseFloat(t.split(`Android `)[1])||void 0),has.add(`safari`,n.includes(`Safari`)&&!has(`wp`)&&!has(`chrome`)&&!has(`android`)&&!has(`edge`)&&!has(`opr`)?parseFloat(n.split(`Version/`)[1]):void 0),has.add(`mac`,n.includes(`Macintosh`)),!has(`wp`)&&/(iPhone|iPod|iPad)/.test(t)){let e=RegExp.$1.replace(/P/,`p`),n=/OS ([\d_]+)/.test(t)?RegExp.$1:`1`,r=parseFloat(n.replace(/_/,`.`).replaceAll(`_`,``));has.add(e,r),has.add(`ios`,r)}has(`webkit`)||(t.includes(`Gecko`)&&!has(`wp`)&&!has(`khtml`)&&!has(`edge`)&&has.add(`mozilla`,r),has(`mozilla`)&&has.add(`ff`,parseFloat(t.split(`Firefox/`)[1]||t.split(`Minefield/`)[1])||void 0))}})(),(()=>{if(e.navigator){let e=navigator.userAgent,t=/Android|webOS|iPhone|iPad|iPod|BlackBerry|Opera Mini|IEMobile/i.test(e),n=/iPhone/i.test(e);t&&has.add(`esri-mobile`,t),n&&has.add(`esri-iPhone`,n),has.add(`esri-geolocation`,!!navigator.geolocation)}has.add(`esri-wasm`,`WebAssembly`in e),has.add(`esri-temporal`,`Temporal`in e),has.add(`esri-performance-mode-frames-between-render`,20),has.add(`esri-force-performance-mode`,!1),has.add(`esri-shared-array-buffer`,()=>{let t=`SharedArrayBuffer`in e,n=e.crossOriginIsolated===!1;return t&&!n}),has.add(`wasm-simd`,()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))),has.add(`esri-atomics`,`Atomics`in e),has.add(`esri-workers`,`Worker`in e),has.add(`web-feat:cache`,`caches`in e),has.add(`esri-workers-arraybuffer-transfer`,!has(`safari`)||Number(has(`safari`))>=12),has.add(`min-workers-pool-size`,2),has.add(`max-workers-pool-size`,has(`esri-mobile`)?3:8),has.add(`featurelayer-simplify-thresholds`,[.5,.5,.5,.5]),has.add(`featurelayer-simplify-payload-size-factors`,[1,1,4]),has.add(`featurelayer-animation-enabled`,!0),has.add(`featurelayer-hybrid-tile-enabled`,!0),has.add(`featurelayer-snapshot-enabled`,!0),has.add(`featurelayer-snapshot-initial-tolerance`,0),has.add(`featurelayer-snapshot-point-min-threshold`,8e4),has.add(`featurelayer-snapshot-point-max-threshold`,4e5),has.add(`featurelayer-snapshot-multipoint-min-threshold`,2e4),has.add(`featurelayer-snapshot-multipoint-max-threshold`,1e5),has.add(`featurelayer-snapshot-polygon-min-threshold`,2e3),has.add(`featurelayer-snapshot-polygon-max-threshold`,2e3),has.add(`featurelayer-snapshot-polyline-min-threshold`,2e3),has.add(`featurelayer-snapshot-polyline-max-threshold`,2e3),has.add(`featurelayer-snapshot-max-vertex-count`,25e4),has.add(`featurelayer-snapshot-non-hosted-exceedslimit-enabled`,!0),has.add(`featurelayer-snapshot-concurrency`,4),has.add(`featurelayer-snapshot-allow-editable`,!1),has.add(`featurelayer-snapshot-coverage`,.1),has.add(`featurelayer-pixel-buffering-enabled`,!0),has.add(`featurelayer-query-max-depth`,4),has.add(`featurelayer-query-max-page-size`,8e3),has.add(`featurelayer-query-pausing-enabled`,!1),has.add(`featurelayer-query-tile-concurrency`,4),has.add(`featurelayer-query-tile-max-features`,6e5),has.add(`featurelayer-snapping-density-sample-interval`,10),has.add(`featurelayer-snapping-density-max-vertices-per-feature`,16),has.add(`featurelayer-snapping-density-max-distance`,8),has.add(`featurelayer-advanced-symbols`,!1),has.add(`featurelayer-pbf`,!0),has.add(`featurelayer-pbf-statistics`,!
|
|
2
|
+
const e=globalThis,t={...e.esriConfig?.has};function has(n){return typeof t[n]==`function`?t[n]=t[n](e):t[n]}has.add=(e,n,r,i)=>{(i||t[e]===void 0)&&(t[e]=n),r&&has(e)},has.cache=t,has.add(`big-integer-warning-enabled`,!0),has.add(`esri-deprecation-warnings`,!0),has.add(`esri-tests-disable-screenshots`,!1),has.add(`esri-tests-use-full-window`,!1),has.add(`esri-tests-post-to-influx`,!0),has.add(`esri-cim-animations-enable-status`,`enabled`),has.add(`esri-cim-animations-spotlight`,!1),has.add(`esri-cim-animations-freeze-time`,!1),(()=>{has.add(`host-webworker`,e.WorkerGlobalScope!==void 0&&self instanceof e.WorkerGlobalScope);let t=typeof window<`u`&&typeof location<`u`&&typeof document<`u`&&window.location===location&&window.document===document;if(has.add(`host-browser`,t),has.add(`host-node`,!!(typeof e.process==`object`&&e.process.versions?.node&&e.process.versions.v8)),has.add(`dom`,t),has(`host-browser`)){let e=navigator,t=e.userAgent,n=e.appVersion,r=parseFloat(n);if(has.add(`wp`,parseFloat(t.split(`Windows Phone`)[1])||void 0),has.add(`msapp`,parseFloat(t.split(`MSAppHost/`)[1])||void 0),has.add(`khtml`,n.includes(`Konqueror`)?r:void 0),has.add(`edge`,parseFloat(t.split(`Edge/`)[1])||void 0),has.add(`opr`,parseFloat(t.split(`OPR/`)[1])||void 0),has.add(`webkit`,!has(`wp`)&&!has(`edge`)&&parseFloat(t.split(`WebKit/`)[1])||void 0),has.add(`chrome`,!has(`edge`)&&!has(`opr`)&&parseFloat(t.split(`Chrome/`)[1])||void 0),has.add(`android`,!has(`wp`)&&parseFloat(t.split(`Android `)[1])||void 0),has.add(`safari`,n.includes(`Safari`)&&!has(`wp`)&&!has(`chrome`)&&!has(`android`)&&!has(`edge`)&&!has(`opr`)?parseFloat(n.split(`Version/`)[1]):void 0),has.add(`mac`,n.includes(`Macintosh`)),!has(`wp`)&&/(iPhone|iPod|iPad)/.test(t)){let e=RegExp.$1.replace(/P/,`p`),n=/OS ([\d_]+)/.test(t)?RegExp.$1:`1`,r=parseFloat(n.replace(/_/,`.`).replaceAll(`_`,``));has.add(e,r),has.add(`ios`,r)}has(`webkit`)||(t.includes(`Gecko`)&&!has(`wp`)&&!has(`khtml`)&&!has(`edge`)&&has.add(`mozilla`,r),has(`mozilla`)&&has.add(`ff`,parseFloat(t.split(`Firefox/`)[1]||t.split(`Minefield/`)[1])||void 0))}})(),(()=>{if(e.navigator){let e=navigator.userAgent,t=/Android|webOS|iPhone|iPad|iPod|BlackBerry|Opera Mini|IEMobile/i.test(e),n=/iPhone/i.test(e);t&&has.add(`esri-mobile`,t),n&&has.add(`esri-iPhone`,n),has.add(`esri-geolocation`,!!navigator.geolocation)}has.add(`esri-wasm`,`WebAssembly`in e),has.add(`esri-temporal`,`Temporal`in e),has.add(`esri-performance-mode-frames-between-render`,20),has.add(`esri-force-performance-mode`,!1),has.add(`esri-shared-array-buffer`,()=>{let t=`SharedArrayBuffer`in e,n=e.crossOriginIsolated===!1;return t&&!n}),has.add(`wasm-simd`,()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))),has.add(`esri-atomics`,`Atomics`in e),has.add(`esri-workers`,`Worker`in e),has.add(`web-feat:cache`,`caches`in e),has.add(`esri-workers-arraybuffer-transfer`,!has(`safari`)||Number(has(`safari`))>=12),has.add(`min-workers-pool-size`,2),has.add(`max-workers-pool-size`,has(`esri-mobile`)?3:8),has.add(`featurelayer-simplify-thresholds`,[.5,.5,.5,.5]),has.add(`featurelayer-simplify-payload-size-factors`,[1,1,4]),has.add(`featurelayer-animation-enabled`,!0),has.add(`featurelayer-hybrid-tile-enabled`,!0),has.add(`featurelayer-snapshot-enabled`,!0),has.add(`featurelayer-snapshot-initial-tolerance`,0),has.add(`featurelayer-snapshot-point-min-threshold`,8e4),has.add(`featurelayer-snapshot-point-max-threshold`,4e5),has.add(`featurelayer-snapshot-multipoint-min-threshold`,2e4),has.add(`featurelayer-snapshot-multipoint-max-threshold`,1e5),has.add(`featurelayer-snapshot-polygon-min-threshold`,2e3),has.add(`featurelayer-snapshot-polygon-max-threshold`,2e3),has.add(`featurelayer-snapshot-polyline-min-threshold`,2e3),has.add(`featurelayer-snapshot-polyline-max-threshold`,2e3),has.add(`featurelayer-snapshot-max-vertex-count`,25e4),has.add(`featurelayer-snapshot-non-hosted-exceedslimit-enabled`,!0),has.add(`featurelayer-snapshot-concurrency`,4),has.add(`featurelayer-snapshot-allow-editable`,!1),has.add(`featurelayer-snapshot-coverage`,.1),has.add(`featurelayer-pixel-buffering-enabled`,!0),has.add(`featurelayer-query-max-depth`,4),has.add(`featurelayer-query-max-page-size`,8e3),has.add(`featurelayer-query-pausing-enabled`,!1),has.add(`featurelayer-query-tile-concurrency`,4),has.add(`featurelayer-query-tile-max-features`,6e5),has.add(`featurelayer-snapping-density-sample-interval`,10),has.add(`featurelayer-snapping-density-max-vertices-per-feature`,16),has.add(`featurelayer-snapping-density-max-distance`,8),has.add(`featurelayer-advanced-symbols`,!1),has.add(`featurelayer-pbf`,!0),has.add(`featurelayer-pbf-statistics`,!0),has.add(`featurelayer-pbf-true-curves`,!0),has.add(`feature-layers-workers`,!0),has.add(`feature-polyline-generalization-factor`,1),has.add(`featurelayer-relative-time-queries-enabled`,!0),has.add(`featurelayer-relative-time-queries-bin-window-public`,1),has.add(`featurelayer-relative-time-queries-bin-window-private`,60),has.add(`parquetlayer-full-query-feature-count`,5e5),has.add(`parquetlayer-persistence-enabled`,!0),has.add(`parquetlayer-cache-enabled`,!0),has.add(`parquetlayer-legacy-field-overrides-enabled`,!1),has.add(`sketch-layer-enabled`,!1),has.add(`mapview-transitions-duration`,200),has.add(`mapview-essential-goto-duration`,200),has.add(`mapview-srswitch-adjust-rotation-scale-threshold`,24e6),has.add(`mapserver-pbf-version-support`,10.81),has.add(`mapservice-popup-identify-max-tolerance`,20),has.add(`request-queue-concurrency-global`,64),has.add(`request-queue-concurrency-hosted`,16),has.add(`request-queue-concurrency-non-hosted`,16),has.add(`curve-densification-coarse-segments`,128),has.add(`curve-densification-max-segments`,2e3),has.add(`curve-densification-min-segments`,3),has.add(`curve-densification-pixel-deviation`,.5),has.add(`view-readyState-waiting-delay`,1e3),has.add(`gradient-depth-bias`,.01),has.add(`gradient-depth-epsilon`,1e-8),has.add(`enable-feature:esri-compress-textures`,!0),has.add(`enable-feature:im-shading`,!0),has.add(`enable-feature:im-vertex-normals`,!0),!has(`host-webworker`)&&has(`host-browser`)&&(has.add(`esri-csp-restrictions`,()=>{try{Function()}catch{return!0}return!1}),has.add(`esri-url-encodes-apostrophe`,()=>{let e=window.document.createElement(`a`);return e.href=`?'`,e.href.includes(`?%27`)}))})();export{has as default};
|
package/core/workers.d.ts
CHANGED
|
@@ -50,6 +50,7 @@ export interface OpenOptions extends AbortOptions {
|
|
|
50
50
|
* Set to `true` when loading a custom ES module worker.
|
|
51
51
|
* The default is `false` for backward compatibility with legacy AMD custom workers. Loading custom workers this way is deprecated.
|
|
52
52
|
*
|
|
53
|
+
* @deprecated since version 5.2. This option is temporary and will be removed at version 6.0 when custom worker modules default to ESM. Until then, migrate custom workers to ES modules and set this option to `true`.
|
|
53
54
|
* @default false
|
|
54
55
|
* @since 5.2
|
|
55
56
|
*/
|
|
@@ -18,9 +18,9 @@ export interface MeshLocalVertexSpaceProperties extends Partial<Pick<MeshLocalVe
|
|
|
18
18
|
* [Mesh.spatialReference](https://developers.arcgis.com/javascript/latest/references/core/geometry/Mesh/#spatialReference). For example, with WGS84 the origin contains longitude,
|
|
19
19
|
* latitude, and elevation values; with Web Mercator it contains Web Mercator x, y, and z values.
|
|
20
20
|
*
|
|
21
|
-
* In a global scene with WGS84, CGCS2000, or Web Mercator, the SDK places the model
|
|
22
|
-
* [local tangent plane](https://en.wikipedia.org/wiki/Local_tangent_plane_coordinates)
|
|
23
|
-
* east, the y-axis points north, and the z-axis points up.
|
|
21
|
+
* In a global scene with WGS84, CGCS2000, or Web Mercator, the SDK places the model in a
|
|
22
|
+
* [local tangent plane](https://en.wikipedia.org/wiki/Local_tangent_plane_coordinates)
|
|
23
|
+
* on the ellipsoid at the origin. The x-axis points east, the y-axis points north, and the z-axis points up.
|
|
24
24
|
*
|
|
25
25
|
* The word local refers to local coordinates from the source model. It does not mean this vertex space is used for
|
|
26
26
|
* a [local](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/#viewingMode) SceneView. For local scenes, use
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import{clamp as e,floatEqualUlp as t}from"../../core/mathUtils.js";import n from"../Extent.js";function r(e){return e}function i(e
|
|
2
|
+
import{clamp as e,floatEqualUlp as t}from"../../core/mathUtils.js";import n from"../Extent.js";function r(e){return e}function i(e=$){return r([e[0],e[1],e[2],e[3]])}function a(e){return r([e[0],e[1],e[2],e[3]])}function o(e,t){return e!==t&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3]),e}function s(e,t,n,r,a=i()){return a[0]=e,a[1]=t,a[2]=n,a[3]=r,a}function c(e,t=i()){return t[0]=e.xmin,t[1]=e.ymin,t[2]=e.xmax,t[3]=e.ymax,t}function l(e,t,r=new n){return r.xmin=e[0],r.ymin=e[1],r.xmax=e[2],r.ymax=e[3],r.spatialReference=t,r}function u(e,t){d(e,t[0],t[1])}function d(e,t,n){f(e,t),p(e,n)}function f(e,t){t<e[0]&&(e[0]=t),t>e[2]&&(e[2]=t)}function p(e,t){t<e[1]&&(e[1]=t),t>e[3]&&(e[3]=t)}function m(e,{xmin:t,ymin:n,xmax:r,ymax:i}){e[0]=Math.min(e[0],t),e[1]=Math.min(e[1],n),e[2]=Math.max(e[2],r),e[3]=Math.max(e[3],i)}function h(e,t,n){if(t==null)o(n,e);else if(`length`in t)W(t)?(n[0]=Math.min(e[0],t[0]),n[1]=Math.min(e[1],t[1]),n[2]=Math.max(e[2],t[2]),n[3]=Math.max(e[3],t[3])):(t.length===2||t.length===3)&&(n[0]=Math.min(e[0],t[0]),n[1]=Math.min(e[1],t[1]),n[2]=Math.max(e[2],t[0]),n[3]=Math.max(e[3],t[1]));else switch(t.type){case`extent`:n[0]=Math.min(e[0],t.xmin),n[1]=Math.min(e[1],t.ymin),n[2]=Math.max(e[2],t.xmax),n[3]=Math.max(e[3],t.ymax);break;case`point`:n[0]=Math.min(e[0],t.x),n[1]=Math.min(e[1],t.y),n[2]=Math.max(e[2],t.x),n[3]=Math.max(e[3],t.y)}}function g(e,t){e[0]=Math.min(e[0],t[0]),e[1]=Math.min(e[1],t[1]),e[2]=Math.max(e[2],t[2]),e[3]=Math.max(e[3],t[3])}function _(e,t,n=e){let r=t.length,i=e[0],a=e[1],o=e[2],s=e[3];for(let e=0;e<r;e++){let n=t[e];i=Math.min(i,n[0]),a=Math.min(a,n[1]),o=Math.max(o,n[0]),s=Math.max(s,n[1])}return n[0]=i,n[1]=a,n[2]=o,n[3]=s,n}function v(e){for(let t=0;t<4;t++)if(!isFinite(e[t]))return!1;return!0}function y(e){return e==null||e[0]>=e[2]?0:e[2]-e[0]}function b(e){return e==null||e[1]>=e[3]?0:e[3]-e[1]}function x(e){return y(e)*b(e)}function S(e){return y(e)>0&&b(e)>0}function C(e,t=[0,0]){return t[0]=(e[0]+e[2])/2,t[1]=(e[1]+e[3])/2,t}function w(e){let t=y(e),n=b(e);return Math.sqrt(t*t+n*n)}function T(e,t){return k(e,t[0],t[1])}function E(e,t){let n=t.radius,r=(e[0]+e[2])*.5,i=Math.abs(t.center[0]-r),a=(e[2]-e[0])*.5;if(i>n+a)return!1;let o=(e[1]+e[3])*.5,s=(e[3]-e[1])*.5,c=Math.abs(t.center[1]-o);if(c>n+s)return!1;if(i<a||c<s)return!0;let l=i-a,u=c-s;return l*l+u*u<=n*n}function D(e,t,n){let r=e[0],i=e[1],a=e[2],o=e[3],{x:s,y:c}=t,{x:l,y:u}=n,d=(e,t)=>(u-c)*e+(s-l)*t+(l*c-s*u)<0,f=d(r,o),p=d(a,o),m=d(a,i),h=d(r,i);return!(f===p&&p===m&&m===h&&h===f||s<r&&l<r||s>a&&l>a||c>o&&u>o||c<i&&u<i)}function O(e,t){return e?k(e,t.x,t.y):!1}function k(e,t,n){return t>=e[0]&&n>=e[1]&&t<=e[2]&&n<=e[3]}function A(e,t,n,r){return t>=e[0]-r&&n>=e[1]-r&&t<=e[2]+r&&n<=e[3]+r}function j(e,t,n){return t[0]>=e[0]-n&&t[1]>=e[1]-n&&t[0]<=e[2]+n&&t[1]<=e[3]+n}function M(e,t){return Math.max(t[0],e[0])<=Math.min(t[2],e[2])&&Math.max(t[1],e[1])<=Math.min(t[3],e[3])}function N(e,t,n){return Math.max(t[0],e[0])-n<=Math.min(t[2],e[2])&&Math.max(t[1],e[1])-n<=Math.min(t[3],e[3])}function P(e,t){return t[0]>=e[0]&&t[2]<=e[2]&&t[1]>=e[1]&&t[3]<=e[3]}function F(e,t,n){return t==null?o(n,e):(n[0]=Math.min(e[0],t[0]),n[1]=Math.min(e[1],t[1]),n[2]=Math.max(e[2],t[2]),n[3]=Math.max(e[3],t[3]),n)}function I(t,n,r){if(n==null)return o(r,t);let i=n[0],a=n[1],s=n[2],c=n[3];return r[0]=e(t[0],i,s),r[1]=e(t[1],a,c),r[2]=e(t[2],i,s),r[3]=e(t[3],a,c),r}function L(e,t){let n=(e[0]+e[2])/2,r=(e[1]+e[3])/2,i=Math.max(Math.abs(t[0]-n)-y(e)/2,0),a=Math.max(Math.abs(t[1]-r)-b(e)/2,0);return Math.sqrt(i*i+a*a)}function R(e,t){t[0]=e[2]-e[0],t[1]=e[3]-e[1]}function z(e,t,n,r){return r??=e,r[0]=e[0]+t,r[1]=e[1]+n,r[2]=e[2]+t,r[3]=e[3]+n,r}function B(e,t,n=e){return n[0]=e[0]-t,n[1]=e[1]-t,n[2]=e[2]+t,n[3]=e[3]+t,n}function V(e,t,n=e){return n[0]=t[0],n[1]=t[1],n!==e&&(n[2]=e[2],n[3]=e[3]),n}function H(e,t,n=e){return n[2]=t[0],n[3]=t[1],n!==e&&(n[0]=e[0],n[1]=e[1]),e}function U(e){return e?o(e,Q):i(Q)}function W(e){return e!=null&&e.length===4}function G(e){return(y(e)===0||!isFinite(e[0]))&&(b(e)===0||!isFinite(e[1]))}function K(e,t){return!W(e)||!W(t)?e==null&&t==null||e===t:e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]}function q(e,n,r){return e!=null&&n!=null&&e.every((e,i)=>t(e,n[i],r))}function J(e,t,n){return t==null?!1:n?n.contains(e[0],e[2],t[0])&&n.contains(e[0],e[2],t[2])&&t[1]>e[1]&&t[3]<e[3]:P(e,t)}function Y(e,t,n){return e==null?!1:n?(n.contains(t[0],t[2],e[0])||n.contains(t[0],t[2],e[2])||n.contains(e[0],e[2],t[0]))&&!(e[1]>t[3]||e[3]<t[1]):M(e,t)}function X(e,t){if(t.length!==4||e[0]===e[2]||e[1]===e[3])return!1;for(let n=0;n<t.length;n++){let r=t[n],i=t[(n+1)%t.length];if(r[0]!==e[0]&&r[0]!==e[2]||r[1]!==e[1]&&r[1]!==e[3])return!1;let a=r[1]===i[1]&&r[0]!==i[0],o=r[0]===i[0]&&r[1]!==i[1];if(!a&&!o)return!1}return!0}const Z=r([-1/0,-1/0,1/0,1/0]),Q=r([1/0,1/0,-1/0,-1/0]),$=r([0,0,0,0]),ee=r([0,0,1,1]);export{v as allFinite,q as almostEquals,x as area,C as center,a as clone,P as contains,T as containsPoint,O as containsPointObject,j as containsPointWithMargin,k as containsXY,A as containsXYWithMargin,o as copy,i as create,w as diagonal,L as distance,U as empty,K as equals,X as equalsPoints,h as expand,m as expandExtentInPlace,u as expandPointInPlace,_ as expandWithNestedArray,g as expandWithRect,f as expandXInPlace,d as expandXYInPlace,p as expandYInPlace,c as fromExtent,s as fromValues,S as hasArea,b as height,I as intersection,M as intersects,D as intersectsSegment,E as intersectsSphere,N as intersectsWithMargin,W as is,G as isPoint,Q as negativeInfinity,z as offset,B as pad,Z as positiveInfinity,J as rectangleContainsRectangleCyclicalAware,Y as rectanglesIntersectCyclicalAware,H as setMax,V as setMin,R as size,l as toExtent,F as union,ee as unit,y as width,$ as zero};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import e from"../../../core/Error.js";import{clone as t}from"../../../core/lang.js";import{throwIfAborted as n}from"../../../core/promiseUtils.js";import r from"../MeshVertexAttributes.js";import{addMeshCloneContext as i}from"./meshCloneUtils.js";import{convertVertexSpace as a}from"./vertexSpaceConversion.js";async function o(o,s,c){await Promise.resolve(),n(c);let l=a(o,s
|
|
2
|
+
import e from"../../../core/Error.js";import{clone as t}from"../../../core/lang.js";import{throwIfAborted as n}from"../../../core/promiseUtils.js";import r from"../MeshVertexAttributes.js";import{addMeshCloneContext as i}from"./meshCloneUtils.js";import{convertVertexSpace as a}from"./vertexSpaceConversion.js";async function o(o,s,c){await Promise.resolve(),n(c);let l=a(o,s);if(!l)throw new e(`meshUtils:convertVertexSpace()`,`Failed to convert to provided vertex space due to projection errors`);return o.clone(i(void 0,{vertexAttributes:new r({...l,uv:t(o.vertexAttributes.uv),color:t(o.vertexAttributes.color)}),vertexSpace:s,transform:null}))}export{o as convertMeshVertexSpace};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/6.0/LICENSE.txt */
|
|
2
|
-
import e from"../../../core/Logger.js";import{floatEqualUlp as t}from"../../../core/mathUtils.js";import{getMetersPerCartesianUnitForSR as n,convertUnit as r}from"../../../core/units.js";import{normalFromMat4 as i}from"../../../core/libs/gl-matrix-2/math/mat3.js";import{create as a}from"../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{exactEquals as o,scale as s,invert as c,copy as l,multiply as u}from"../../../core/libs/gl-matrix-2/math/mat4.js";import{IDENTITY as d,create as f}from"../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{negate as p,subtract as m,transformMat4 as h}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as g}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{isEarth as _}from"../../ellipsoidUtils.js";import{WGS84ECEFSpatialReference as v,getSphericalPCPF as y}from"../../spatialReferenceEllipsoidUtils.js";import{computeTranslationToOriginAndRotation as b}from"../../projection/computeTranslationToOriginAndRotation.js";import{projectPointToVector as x}from"../../projection/projectPointToVector.js";import{isRelativeVertexSpace as
|
|
2
|
+
import e from"../../../core/Logger.js";import{floatEqualUlp as t}from"../../../core/mathUtils.js";import{getMetersPerCartesianUnitForSR as n,convertUnit as r}from"../../../core/units.js";import{normalFromMat4 as i}from"../../../core/libs/gl-matrix-2/math/mat3.js";import{create as a}from"../../../core/libs/gl-matrix-2/factories/mat3f64.js";import{exactEquals as o,scale as s,invert as c,copy as l,multiply as u}from"../../../core/libs/gl-matrix-2/math/mat4.js";import{IDENTITY as d,create as f}from"../../../core/libs/gl-matrix-2/factories/mat4f64.js";import{negate as p,subtract as m,transformMat4 as h}from"../../../core/libs/gl-matrix-2/math/vec3.js";import{create as g}from"../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{isEarth as _}from"../../ellipsoidUtils.js";import{WGS84ECEFSpatialReference as v,getSphericalPCPF as y}from"../../spatialReferenceEllipsoidUtils.js";import{computeTranslationToOriginAndRotation as b}from"../../projection/computeTranslationToOriginAndRotation.js";import{projectPointToVector as x}from"../../projection/projectPointToVector.js";import{isRelativeVertexSpace as S,vertexSpaceEquals as C}from"../meshVertexSpaceUtils.js";import{a as w,t as T,b as E}from"../../../chunks/vec3.js";import{logProjectionError as D,projectToPCPF as O,projectNormalToPCPF as k,projectTangentToPCPF as ee,transformNormal as A,transformTangent as j,projectFromPCPF as M,projectNormalFromPCPF as N,projectTangentFromPCPF as P}from"./projection.js";const F=()=>e.getLogger(`esri.geometry.support.meshUtils.vertexSpaceConversion`);function te(e,t,{vertexSpace:n,spatialReference:r}){if(n.type===`georeferenced`){let i=e;if(!x(t,i,r))return!1;let{origin:a}=n;return m(e,i,a),!0}let i=I(r),a=e;if(!x(t,a,i))return!1;let{origin:o}=n,s=$;if(!b(r,o,s,i))return!1;let l=c($,s);return l!=null&&(h(e,a,l),!0)}function ne(e,t,n){let{vertexSpace:r,transform:i,vertexAttributes:a}=e,s=S(r)?i:null,c=q(e.spatialReference,n,3);if(C(r,t)&&(!s||o(s.localMatrix,d))&&J(c)){let{position:e,normal:t,tangent:r}=a,i=n?.allowBufferReuse;return{position:i?e:e.slice(),normal:i?t:t?.slice(),tangent:i?r:r?.slice()}}switch(e.vertexSpace.type){case`local`:return t.type===`local`?V(e,e.vertexSpace,t.origin,n):ie(e,e.vertexSpace,t.origin,n);case`georeferenced`:return t.type===`local`?z(e,e.vertexSpace,t.origin,n):re(e,e.vertexSpace,t.origin,n)}}function re({vertexAttributes:e,transform:t,spatialReference:n},{origin:r},i,a){let o=q(n,a,3),s=r||!J(o)?l(X,t?.localMatrix??d):null;s&&K(s,n,a,3);let{position:c,normal:u,tangent:f}=s?H(e,s):e,m=a?.allowBufferReuse,h=m?c:new Float64Array(c.length),g=c;if(r&&(g=w(h,g,r)),i){let e=p(Q,i);g=w(h,g,e)}return{position:g===e.position&&!m?g.slice():g,normal:u===e.normal&&!m?u?.slice():u,tangent:f===e.tangent&&!m?f?.slice():f}}function I(e){return e==null||_(e)?v:y(e)}function ie(e,t,n,r){let{spatialReference:i,vertexAttributes:a}=e,o=I(i),s=R(e,t,r);if(!s)return null;let c=new Float64Array(a.position.length),l=U(a.position,s,i,c,o);if(!l)return null;let u=W(l,i,c,o,a.normal,s);if(a.normal&&!u)return null;let d=G(l,i,c,o,a.tangent,s);if(a.tangent&&!d)return null;if(n){let e=p(Q,n);w(l,l,e)}return{position:l,normal:u,tangent:d}}function L(e,t,n){let r=R(e,t);if(!r)return null;let i=H(e.vertexAttributes,r),a=I(e.spatialReference);return M(i.position,a,i.position,n)?i:(D(F(),a,n),null)}function R({spatialReference:e,transform:t},{origin:n},r){let i=I(e);return b(e,n,X,i)?(t&&u(X,X,t.localMatrix),K(X,e,r,1),X):(D(F(),e,i),null)}function z({vertexAttributes:e,spatialReference:t,transform:n},{origin:r},a,o){let l=I(t);if(!b(t,a,X,l))return D(F(),t,l),null;let u=1/q(t,o,2);s(X,X,[u,u,u]);let d=c(Z,X),{position:f,normal:p,tangent:m}=B(e,r,n),h=new Float64Array(f.length),g=ae(f,t,d,h,l);if(!g)return null;let _=i(ce,d),v=oe(p,f,t,h,l,_,p===e.normal?void 0:p);if(!v&&p)return null;let y=se(m,f,t,h,l,_,m===e.tangent?void 0:m);return!y&&m?null:{position:g,normal:v,tangent:y}}function B(e,t,n){if(!t)return e;if(!n){let{position:n,normal:r,tangent:i}=e;return{position:w(new Float64Array(n.length),n,t),tangent:i,normal:r}}let r=H(e,n.localMatrix);return w(r.position,r.position,t),r}function V({vertexAttributes:e,spatialReference:t,transform:n},{origin:r},i,a){let o=I(t);if(!b(t,r,X,o))return D(F(),t,o),null;if(n&&u(X,X,n.localMatrix),!b(t,i,Z,o))return D(F(),o,t),null;c(Z,Z);let s=u(X,Z,X);return K(s,t,a,3),H(e,s)}function H(e,t){let n=new Float64Array(e.position.length);T(n,e.position,t);let r=e.normal?new Float32Array(e.normal.length):null,i=e.tangent?new Float32Array(e.tangent.length):null;return r&&e.normal&&A(e.normal,r,t),i&&e.tangent&&j(e.tangent,i,t),{position:n,normal:r,tangent:i}}function U(e,t,n,r,i){T(r,e,t);let a=new Float64Array(e.length);return M(r,i,a,n)?a:(D(F(),i,n),null)}function W(e,t,n,r,i,a){if(i==null)return null;let o=new Float32Array(i.length);return A(i,o,a),N(o,e,t,n,r,o)?o:(D(F(),r,t),null)}function G(e,t,n,r,i,a){if(i==null)return null;let o=new Float32Array(i.length);return j(i,o,a),P(o,e,t,n,r,o)?o:(D(F(),r,t),null)}function K(e,t,n,r){let i=q(t,n,r);J(i)||s(e,e,[i,i,i])}function q(e,t,n){let r=!!(n&1),i=!!(n&2),a=t?.sourceUnit,o=t?.targetUnit;if(!a&&!o)return 1;let s=Y(a,e);!r&&a&&!J(s)&&(F().warn(`source unit conversion not supported`),s=1);let c=1/Y(o,e);return!i&&o&&!J(c)&&(F().warn(`target unit conversion not supported`),c=1),s*c}function J(e){return t(e,1)}function ae(e,t,n,r,i){let a=O(e,t,r,i);if(!a)return D(F(),t,i),null;let o=new Float64Array(a.length);return T(o,a,n),o}function oe(e,t,n,r,i,a,o){if(e==null)return null;let s=o??new Float32Array(e.length);return k(e,t,n,r,i,s)?(E(s,s,a),s):(D(F(),n,i),null)}function se(e,t,n,r,i,a,o){if(e==null)return null;let s=o??new Float32Array(e.length);return ee(e,t,n,r,i,s)?(E(s,s,a,4),s):(D(F(),n,i),null)}function Y(e,t){if(e==null)return 1;let i=n(t);return 1/r(i,`meters`,e)}const X=f(),Z=f(),ce=a(),Q=g(),$=f();export{ne as convertVertexSpace,Y as getUnitToSpatialReferenceScaleConversion,L as projectLocalVertexSpaceToPCPF,te as projectPointToVertexSpace};
|