@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
435 lines (400 loc) • 194 kB
JavaScript
"use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[2728],{28491:(e,t,r)=>{r.d(t,{D:()=>z,b:()=>G});var i=r(46686),n=r(32680),o=r(49255),a=r(76591),s=r(76597),c=r(82991),l=r(96336),d=r(10764),u=r(71955),h=r(53466),m=r(92700),f=r(72824),p=r(35640),v=r(40261),g=r(77695),_=r(54849),T=r(74081),x=r(98619),A=r(62602),b=r(22393),E=r(59469),S=r(25618),M=r(96598),C=r(51406),R=r(42398),w=r(11955),I=r(27950),O=r(20693),N=r(33079),y=r(71988),P=r(20304),L=r(31821),D=r(63761),H=r(46540),F=r(60517),B=r(14113),U=r(49788);function G(e){const t=new B.N5,{vertex:r,fragment:G,varyings:z}=t,{output:V,normalType:W,offsetBackfaces:j,instancedColor:k,spherical:Y,receiveShadows:q,snowCover:$,pbrMode:X,textureAlphaPremultiplied:Z,instancedDoublePrecision:J,hasVertexColors:K,hasVertexTangents:Q,hasColorTexture:ee,hasNormalTexture:te,hasNormalTextureTransform:re,hasColorTextureTransform:ie}=e;if((0,O.NB)(r,e),t.include(d.I),z.add("vpos","vec3"),t.include(R.A,e),t.include(c.B,e),t.include(p.G,e),t.include(C.q2,e),!(0,o.RN)(V))return t.include(v.E,e),t;t.include(C.Sx,e),t.include(C.MU,e),t.include(C.O1,e),t.include(C.QM,e),(0,O.yu)(r,e),t.include(l.Y,e),t.include(s.d,e);const ne=W===l.W.Attribute||W===l.W.Compressed;return ne&&j&&t.include(n.M),t.include(g.W,e),t.include(f.Mh,e),k&&t.attributes.add(H.r.INSTANCECOLOR,"vec4"),z.add("vPositionLocal","vec3"),t.include(h.U,e),t.include(i.oD,e),t.include(u.K,e),t.include(m.c,e),r.uniforms.add(new y.E("externalColor",(e=>e.externalColor))),z.add("vcolorExt","vec4"),t.include(M.Z,e),r.main.add(L.H`
forwardNormalizedVertexColor();
vcolorExt = externalColor;
${(0,L.If)(k,"vcolorExt *= instanceColor * 0.003921568627451;")}
vcolorExt *= vvColor();
vcolorExt *= getSymbolColor();
forwardColorMixMode();
vpos = getVertexInLocalOriginSpace();
vPositionLocal = vpos - view[3].xyz;
vpos = subtractOrigin(vpos);
${(0,L.If)(ne,"vNormalWorld = dpNormal(vvLocalNormal(normalModel()));")}
vpos = addVerticalOffset(vpos, localOrigin);
${(0,L.If)(Q,"vTangent = dpTransformVertexTangent(tangent);")}
gl_Position = transformPosition(proj, view, vpos);
${(0,L.If)(ne&&j,"gl_Position = offsetBackfacingClipPosition(gl_Position, vpos, vNormalWorld, cameraPosition);")}
forwardViewPosDepth((view * vec4(vpos, 1.0)).xyz);
forwardLinearDepth();
forwardTextureCoordinates();
forwardColorUV();
forwardNormalUV();
forwardEmissiveUV();
forwardOcclusionUV();
forwardMetallicRoughnessUV();
if (vcolorExt.a < ${L.H.float(U.Q)}) {
gl_Position = vec4(1e38, 1e38, 1e38, 1.0);
}
`),t.include(T.kA,e),t.include(_.n,e),t.include(w.S,e),t.include(J?S.G:S.Bz,e),t.fragment.include(a.HQ,e),t.include(F.z,e),(0,O.yu)(G,e),G.uniforms.add(r.uniforms.get("localOrigin"),new N.t("ambient",(e=>e.ambient)),new N.t("diffuse",(e=>e.diffuse)),new P.m("opacity",(e=>e.opacity)),new P.m("layerOpacity",(e=>e.layerOpacity))),ee&&G.uniforms.add(new D.N("tex",(e=>e.texture))),t.include(E._Z,e),t.include(b.c,e),G.include(I.N),t.include(A.r,e),(0,T.a8)(G),(0,T.eU)(G),(0,x.O4)(G),G.main.add(L.H`
discardBySlice(vpos);
discardByTerrainDepth();
${ee?L.H`
vec4 texColor = texture(tex, ${ie?"colorUV":"vuv0"});
${(0,L.If)(Z,"texColor.rgb /= texColor.a;")}
discardOrAdjustAlpha(texColor);`:L.H`vec4 texColor = vec4(1.0);`}
shadingParams.viewDirection = normalize(vpos - cameraPosition);
${W===l.W.ScreenDerivative?L.H`vec3 normal = screenDerivativeNormal(vPositionLocal);`:L.H`shadingParams.normalView = vNormalWorld;
vec3 normal = shadingNormal(shadingParams);`}
applyPBRFactors();
float ssao = evaluateAmbientOcclusionInverse() * getBakedOcclusion();
vec3 posWorld = vpos + localOrigin;
float additionalAmbientScale = additionalDirectedAmbientLight(posWorld);
float shadow = ${q?"max(lightingGlobalFactor * (1.0 - additionalAmbientScale), readShadowMap(vpos, linearDepth))":(0,L.If)(Y,"lightingGlobalFactor * (1.0 - additionalAmbientScale)","0.0")};
vec3 matColor = max(ambient, diffuse);
vec3 albedo = mixExternalColor(${(0,L.If)(K,"vColor.rgb *")} matColor, texColor.rgb, vcolorExt.rgb, int(colorMixMode));
float opacity_ = layerOpacity * mixExternalOpacity(${(0,L.If)(K,"vColor.a * ")} opacity, texColor.a, vcolorExt.a, int(colorMixMode));
${te?`mat3 tangentSpace = computeTangentSpace(${Q?"normal":"normal, vpos, vuv0"});\n vec3 shadingNormal = computeTextureNormal(tangentSpace, ${re?"normalUV":"vuv0"});`:"vec3 shadingNormal = normal;"}
vec3 normalGround = ${Y?"normalize(posWorld);":"vec3(0.0, 0.0, 1.0);"}
${(0,L.If)($,L.H`
float snow = smoothstep(0.5, 0.55, dot(normal, normalGround));
albedo = mix(albedo, vec3(1), snow);
shadingNormal = mix(shadingNormal, normal, snow);
ssao = mix(ssao, 1.0, snow);`)}
vec3 additionalLight = ssao * mainLightIntensity * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor;
${X===E.A9.Normal||X===E.A9.Schematic?L.H`
float additionalAmbientIrradiance = additionalAmbientIrradianceFactor * mainLightIntensity[2];
${(0,L.If)($,L.H`mrr = mix(mrr, vec3(0.0, 1.0, 0.04), snow);`)}
vec4 emission = ${$?"mix(getEmissions(), vec4(0.0), snow)":"getEmissions()"};
vec3 shadedColor = evaluateSceneLightingPBR(shadingNormal, albedo, shadow, 1.0 - ssao, additionalLight, shadingParams.viewDirection, normalGround, mrr, emission, additionalAmbientIrradiance);`:L.H`vec3 shadedColor = evaluateSceneLighting(shadingNormal, albedo, shadow, 1.0 - ssao, additionalLight);`}
vec4 finalColor = vec4(shadedColor, opacity_);
outputColorHighlightOID(finalColor, vpos);
`),t}const z=Object.freeze(Object.defineProperty({__proto__:null,build:G},Symbol.toStringTag,{value:"Module"}))},57323:(e,t,r)=>{r.d(t,{R:()=>F,b:()=>H});var i=r(46686),n=r(32680),o=r(49255),a=r(76591),s=r(76597),c=r(82991),l=r(96336),d=r(10764),u=r(71955),h=r(53466),m=r(92700),f=r(35640),p=r(40261),v=r(54849),g=r(74081),_=r(98619),T=r(22393),x=r(59469),A=r(25618),b=r(96598),E=r(42398),S=r(11955),M=r(27950),C=r(20693),R=r(33079),w=r(71988),I=r(20304),O=r(31821),N=r(63761),y=r(46540),P=r(60517),L=r(14113),D=r(49788);function H(e){const t=new L.N5,{vertex:r,fragment:H,varyings:F}=t,{output:B,offsetBackfaces:U,instancedColor:G,pbrMode:z,snowCover:V,spherical:W}=e,j=z===x.A9.Normal||z===x.A9.Schematic;if((0,C.NB)(r,e),t.include(d.I),F.add("vpos","vec3"),t.include(E.A,e),t.include(c.B,e),t.include(f.G,e),t.include(b.Z,e),(0,o.RN)(B)&&((0,C.yu)(t.vertex,e),t.include(l.Y,e),t.include(s.d,e),U&&t.include(n.M),G&&t.attributes.add(y.r.INSTANCECOLOR,"vec4"),F.add("vNormalWorld","vec3"),F.add("localvpos","vec3"),t.include(h.U,e),t.include(i.oD,e),t.include(u.K,e),t.include(m.c,e),r.uniforms.add(new w.E("externalColor",(e=>e.externalColor))),F.add("vcolorExt","vec4"),r.main.add(O.H`
forwardNormalizedVertexColor();
vcolorExt = externalColor;
${(0,O.If)(G,"vcolorExt *= instanceColor * 0.003921568627451;")}
vcolorExt *= vvColor();
vcolorExt *= getSymbolColor();
forwardColorMixMode();
bool alphaCut = vcolorExt.a < ${O.H.float(D.Q)};
vpos = getVertexInLocalOriginSpace();
localvpos = vpos - view[3].xyz;
vpos = subtractOrigin(vpos);
vNormalWorld = dpNormal(vvLocalNormal(normalModel()));
vpos = addVerticalOffset(vpos, localOrigin);
vec4 basePosition = transformPosition(proj, view, vpos);
forwardViewPosDepth((view * vec4(vpos, 1.0)).xyz);
forwardLinearDepth();
forwardTextureCoordinates();
gl_Position = alphaCut ? vec4(1e38, 1e38, 1e38, 1.0) :
${(0,O.If)(U,"offsetBackfacingClipPosition(basePosition, vpos, vNormalWorld, cameraPosition);","basePosition;")}
`)),(0,o.RN)(B)){const{hasColorTexture:i,hasColorTextureTransform:n,receiveShadows:o}=e;t.include(g.kA,e),t.include(v.n,e),t.include(S.S,e),t.include(e.instancedDoublePrecision?A.G:A.Bz,e),t.fragment.include(a.HQ,e),t.include(P.z,e),(0,C.yu)(t.fragment,e),(0,_.Gc)(H),(0,g.a8)(H),(0,g.eU)(H),H.uniforms.add(r.uniforms.get("localOrigin"),r.uniforms.get("view"),new R.t("ambient",(e=>e.ambient)),new R.t("diffuse",(e=>e.diffuse)),new I.m("opacity",(e=>e.opacity)),new I.m("layerOpacity",(e=>e.layerOpacity))),i&&H.uniforms.add(new N.N("tex",(e=>e.texture))),t.include(x._Z,e),t.include(T.c,e),H.include(M.N),(0,_.O4)(H),H.main.add(O.H`
discardBySlice(vpos);
discardByTerrainDepth();
vec4 texColor = ${i?`texture(tex, ${n?"colorUV":"vuv0"})`:" vec4(1.0)"};
${(0,O.If)(i,`${(0,O.If)(e.textureAlphaPremultiplied,"texColor.rgb /= texColor.a;")}\n discardOrAdjustAlpha(texColor);`)}
vec3 viewDirection = normalize(vpos - cameraPosition);
applyPBRFactors();
float ssao = evaluateAmbientOcclusionInverse();
ssao *= getBakedOcclusion();
float additionalAmbientScale = additionalDirectedAmbientLight(vpos + localOrigin);
vec3 additionalLight = ssao * mainLightIntensity * additionalAmbientScale * ambientBoostFactor * lightingGlobalFactor;
float shadow = ${o?"max(lightingGlobalFactor * (1.0 - additionalAmbientScale), readShadowMap(vpos, linearDepth))":W?"lightingGlobalFactor * (1.0 - additionalAmbientScale)":"0.0"};
vec3 matColor = max(ambient, diffuse);
${e.hasVertexColors?O.H`vec3 albedo = mixExternalColor(vColor.rgb * matColor, texColor.rgb, vcolorExt.rgb, int(colorMixMode));
float opacity_ = layerOpacity * mixExternalOpacity(vColor.a * opacity, texColor.a, vcolorExt.a, int(colorMixMode));`:O.H`vec3 albedo = mixExternalColor(matColor, texColor.rgb, vcolorExt.rgb, int(colorMixMode));
float opacity_ = layerOpacity * mixExternalOpacity(opacity, texColor.a, vcolorExt.a, int(colorMixMode));`}
${(0,O.If)(V,"albedo = mix(albedo, vec3(1), 0.9);")}
${O.H`vec3 shadingNormal = normalize(vNormalWorld);
albedo *= 1.2;
vec3 viewForward = vec3(view[0][2], view[1][2], view[2][2]);
float alignmentLightView = clamp(dot(viewForward, -mainLightDirection), 0.0, 1.0);
float transmittance = 1.0 - clamp(dot(viewForward, shadingNormal), 0.0, 1.0);
float treeRadialFalloff = vColor.r;
float backLightFactor = 0.5 * treeRadialFalloff * alignmentLightView * transmittance * (1.0 - shadow);
additionalLight += backLightFactor * mainLightIntensity;`}
${(0,O.If)(j,`vec3 normalGround = ${W?"normalize(vpos + localOrigin)":"vec3(0.0, 0.0, 1.0)"};`)}
${j?O.H`float additionalAmbientIrradiance = additionalAmbientIrradianceFactor * mainLightIntensity[2];
${(0,O.If)(V,O.H`mrr = vec3(0.0, 1.0, 0.04);`)}
vec4 emission = ${V?"vec4(0.0)":"getEmissions()"};
vec3 shadedColor = evaluateSceneLightingPBR(shadingNormal, albedo, shadow, 1.0 - ssao, additionalLight, viewDirection, normalGround, mrr, emission, additionalAmbientIrradiance);`:O.H`vec3 shadedColor = evaluateSceneLighting(shadingNormal, albedo, shadow, 1.0 - ssao, additionalLight);`}
vec4 finalColor = vec4(shadedColor, opacity_);
outputColorHighlightOID(finalColor, vpos);`)}return t.include(p.E,e),t}const F=Object.freeze(Object.defineProperty({__proto__:null,build:H},Symbol.toStringTag,{value:"Module"}))},15581:(e,t,r)=>{r.d(t,{S:()=>T,b:()=>v,g:()=>g});var i=r(37585),n=r(48163),o=r(82048),a=r(52540),s=r(34845),c=r(77108),l=r(47286),d=r(33094),u=r(20304),h=r(31821),m=r(63761),f=r(14113);const p=16;function v(){const e=new f.N5,t=e.fragment;return e.include(o.c),e.include(s.Ir),t.include(a.E),t.uniforms.add(new d.U("radius",(e=>g(e.camera)))).code.add(h.H`vec3 sphere[16] = vec3[16](
vec3(0.186937, 0.0, 0.0),
vec3(0.700542, 0.0, 0.0),
vec3(-0.864858, -0.481795, -0.111713),
vec3(-0.624773, 0.102853, -0.730153),
vec3(-0.387172, 0.260319, 0.007229),
vec3(-0.222367, -0.642631, -0.707697),
vec3(-0.01336, -0.014956, 0.169662),
vec3(0.122575, 0.1544, -0.456944),
vec3(-0.177141, 0.85997, -0.42346),
vec3(-0.131631, 0.814545, 0.524355),
vec3(-0.779469, 0.007991, 0.624833),
vec3(0.308092, 0.209288,0.35969),
vec3(0.359331, -0.184533, -0.377458),
vec3(0.192633, -0.482999, -0.065284),
vec3(0.233538, 0.293706, -0.055139),
vec3(0.417709, -0.386701, 0.442449)
);
float fallOffFunction(float vv, float vn, float bias) {
float f = max(radius * radius - vv, 0.0);
return f * f * f * max(vn - bias, 0.0);
}`),t.code.add(h.H`float aoValueFromPositionsAndNormal(vec3 C, vec3 n_C, vec3 Q) {
vec3 v = Q - C;
float vv = dot(v, v);
float vn = dot(normalize(v), n_C);
return fallOffFunction(vv, vn, 0.1);
}`),t.uniforms.add(new m.N("normalMap",(e=>e.normalTexture)),new m.N("depthMap",(e=>e.depthTexture)),new u.m("projScale",(e=>e.projScale)),new m.N("rnm",(e=>e.noiseTexture)),new l.G("rnmScale",((e,t)=>(0,i.hZ)(_,t.camera.fullWidth/e.noiseTexture.descriptor.width,t.camera.fullHeight/e.noiseTexture.descriptor.height))),new u.m("intensity",(e=>e.intensity)),new c.E("screenSize",(e=>(0,i.hZ)(_,e.camera.fullWidth,e.camera.fullHeight)))),e.outputs.add("fragOcclusion","float"),t.main.add(h.H`
float depth = depthFromTexture(depthMap, uv);
// Early out if depth is out of range, such as in the sky
if (depth >= 1.0 || depth <= 0.0) {
fragOcclusion = 1.0;
return;
}
// get the normal of current fragment
vec4 norm4 = texture(normalMap, uv);
if(norm4.a != 1.0) {
fragOcclusion = 1.0;
return;
}
vec3 norm = vec3(-1.0) + 2.0 * norm4.xyz;
float currentPixelDepth = linearizeDepth(depth);
vec3 currentPixelPos = reconstructPosition(gl_FragCoord.xy, currentPixelDepth);
float sum = 0.0;
vec3 tapPixelPos;
vec3 fres = normalize(2.0 * texture(rnm, uv * rnmScale).xyz - 1.0);
// note: the factor 2.0 should not be necessary, but makes ssao much nicer.
// bug or deviation from CE somewhere else?
float ps = projScale / (2.0 * currentPixelPos.z * zScale.x + zScale.y);
for(int i = 0; i < ${h.H.int(p)}; ++i) {
vec2 unitOffset = reflect(sphere[i], fres).xy;
vec2 offset = vec2(-unitOffset * radius * ps);
// don't use current or very nearby samples
if( abs(offset.x) < 2.0 || abs(offset.y) < 2.0){
continue;
}
vec2 tc = vec2(gl_FragCoord.xy + offset);
if (tc.x < 0.0 || tc.y < 0.0 || tc.x > screenSize.x || tc.y > screenSize.y) continue;
vec2 tcTap = tc / screenSize;
float occluderFragmentDepth = linearDepthFromTexture(depthMap, tcTap);
tapPixelPos = reconstructPosition(tc, occluderFragmentDepth);
sum += aoValueFromPositionsAndNormal(currentPixelPos, norm, tapPixelPos);
}
// output the result
float A = max(1.0 - sum * intensity / float(${h.H.int(p)}), 0.0);
// Anti-tone map to reduce contrast and drag dark region farther: (x^0.2 + 1.2 * x^4) / 2.2
A = (pow(A, 0.2) + 1.2 * A * A * A * A) / 2.2;
fragOcclusion = A;`),e}function g(e){return Math.max(10,20*e.computeScreenPixelSizeAtDist(Math.abs(4*e.relativeElevation)))}const _=(0,n.vt)(),T=Object.freeze(Object.defineProperty({__proto__:null,build:v,getRadius:g},Symbol.toStringTag,{value:"Module"}))},95774:(e,t,r)=>{r.d(t,{S:()=>m,b:()=>h});var i=r(82048),n=r(52540),o=r(68259),a=r(20304),s=r(31821),c=r(15976),l=r(63761),d=r(14113);const u=4;function h(){const e=new d.N5,t=e.fragment;e.include(i.c);const r=(u+1)/2,h=1/(2*r*r);return t.include(n.E),t.uniforms.add(new l.N("depthMap",(e=>e.depthTexture)),new c.o("tex",(e=>e.colorTexture)),new o.t("blurSize",(e=>e.blurSize)),new a.m("projScale",((e,t)=>{const r=t.camera.distance;return r>5e4?Math.max(0,e.projScale-(r-5e4)):e.projScale}))),t.code.add(s.H`
void blurFunction(vec2 uv, float r, float center_d, float sharpness, inout float wTotal, inout float bTotal) {
float c = texture(tex, uv).r;
float d = linearDepthFromTexture(depthMap, uv);
float ddiff = d - center_d;
float w = exp(-r * r * ${s.H.float(h)} - ddiff * ddiff * sharpness);
wTotal += w;
bTotal += w * c;
}
`),e.outputs.add("fragBlur","float"),t.main.add(s.H`
float b = 0.0;
float w_total = 0.0;
float center_d = linearDepthFromTexture(depthMap, uv);
float sharpness = -0.05 * projScale / center_d;
for (int r = -${s.H.int(u)}; r <= ${s.H.int(u)}; ++r) {
float rf = float(r);
vec2 uvOffset = uv + rf * blurSize;
blurFunction(uvOffset, rf, center_d, sharpness, w_total, b);
}
fragBlur = b / w_total;`),e}const m=Object.freeze(Object.defineProperty({__proto__:null,build:h},Symbol.toStringTag,{value:"Module"}))},17352:(e,t,r)=>{r.d(t,{b:()=>j,f:()=>x}),r(44208);var i=r(53966),n=r(34727),o=r(4341),a=r(58083),s=r(9093),c=r(38954),l=r(51850),d=r(19419),u=r(88582),h=r(11964),m=r(27921),f=r(71351),p=r(44280),v=r(32114);const g=()=>i.A.getLogger("esri.views.3d.support.geometryUtils.boundedPlane");function _(e=H){return{plane:(0,m.vt)(e.plane),origin:(0,l.o8)(e.origin),basis1:(0,l.o8)(e.basis1),basis2:(0,l.o8)(e.basis2)}}function T(e,t=_()){return x(e.origin,e.basis1,e.basis2,t)}function x(e,t,r,i=_()){return(0,c.c)(i.origin,e),(0,c.c)(i.basis1,t),(0,c.c)(i.basis2,r),A(i),function(e,t){Math.abs((0,c.f)(e.basis1,e.basis2)/((0,c.l)(e.basis1)*(0,c.l)(e.basis2)))>1e-6&&g().warn(t,"Provided basis vectors are not perpendicular"),Math.abs((0,c.f)(e.basis1,N(e)))>1e-6&&g().warn(t,"Basis vectors and plane normal are not perpendicular"),Math.abs(-(0,c.f)(N(e),e.origin)-e.plane[3])>1e-6&&g().warn(t,"Plane offset is not consistent with plane origin")}(i,"fromValues()"),i}function A(e){(0,m.mR)(e.basis2,e.basis1,e.origin,e.plane)}function b(e,t,r){e!==r&&T(e,r);const i=(0,c.h)(v.rq.get(),N(e),t);return(0,c.g)(r.origin,r.origin,i),r.plane[3]-=t,r}function E(e,t=_()){const r=(e[2]-e[0])/2,i=(e[3]-e[1])/2;return(0,c.i)(t.origin,e[0]+r,e[1]+i,0),(0,c.i)(t.basis1,r,0,0),(0,c.i)(t.basis2,0,i,0),(0,m.fA)(0,0,1,0,t.plane),t}function S(e,t,r){return!!(0,m.Ui)(e.plane,t,r)&&y(e,r)}function M(e,t,r){const i=F.get();D(e,t,i,F.get());let o=Number.POSITIVE_INFINITY;for(const a of z){const s=L(e,a,B.get()),l=v.rq.get();if((0,m.T7)(i,s,l)){const e=(0,c.o)(v.rq.get(),t.origin,l),i=Math.abs((0,n.XM)((0,c.f)(t.direction,e)));i<o&&(o=i,(0,c.c)(r,l))}}return o===Number.POSITIVE_INFINITY?C(e,t,r):r}function C(e,t,r){if(S(e,t,r))return r;const i=F.get(),n=F.get();D(e,t,i,n);let o=Number.POSITIVE_INFINITY;for(const a of z){const s=L(e,a,B.get()),l=v.rq.get();if((0,m.gv)(i,s,l)){const e=(0,f.kb)(t,l);if(!(0,m.Tj)(n,l))continue;e<o&&(o=e,(0,c.c)(r,l))}}return I(e,t.origin)<o&&R(e,t.origin,r),r}function R(e,t,r){const i=(0,m._I)(e.plane,t,v.rq.get()),n=(0,h.H6)(P(e,e.basis1),i,-1,1,v.rq.get()),o=(0,h.H6)(P(e,e.basis2),i,-1,1,v.rq.get());return(0,c.d)(r,(0,c.g)(v.rq.get(),n,o),e.origin),r}function w(e,t,r){const{origin:i,basis1:n,basis2:o}=e,a=(0,c.d)(v.rq.get(),t,i),s=(0,p.gr)(n,a),l=(0,p.gr)(o,a),d=(0,p.gr)(N(e),a);return(0,c.i)(r,s,l,d)}function I(e,t){const r=w(e,t,v.rq.get()),{basis1:i,basis2:n}=e,o=(0,c.l)(i),a=(0,c.l)(n),s=Math.max(Math.abs(r[0])-o,0),l=Math.max(Math.abs(r[1])-a,0),d=r[2];return s*s+l*l+d*d}function O(e,t){const r=-e.plane[3];return(0,p.gr)(N(e),t)-r}function N(e){return(0,m.Qj)(e.plane)}function y(e,t){const r=(0,c.d)(v.rq.get(),t,e.origin),i=(0,c.k)(e.basis1),n=(0,c.k)(e.basis2),o=(0,c.f)(e.basis1,r),a=(0,c.f)(e.basis2,r);return-o-i<0&&o-i<0&&-a-n<0&&a-n<0}function P(e,t){const r=B.get();return(0,c.c)(r.origin,e.origin),(0,c.c)(r.vector,t),r}function L(e,t,r){const{basis1:i,basis2:n,origin:o}=e,a=(0,c.h)(v.rq.get(),i,t.origin[0]),s=(0,c.h)(v.rq.get(),n,t.origin[1]);(0,c.g)(r.origin,a,s),(0,c.g)(r.origin,r.origin,o);const l=(0,c.h)(v.rq.get(),i,t.direction[0]),d=(0,c.h)(v.rq.get(),n,t.direction[1]);return(0,c.h)(r.vector,(0,c.g)(l,l,d),2),r}function D(e,t,r,i){const n=N(e);(0,m.mR)(n,t.direction,t.origin,r),(0,m.mR)((0,m.Qj)(r),n,t.origin,i)}const H={plane:(0,m.vt)(),origin:(0,l.fA)(0,0,0),basis1:(0,l.fA)(1,0,0),basis2:(0,l.fA)(0,1,0)},F=new o.I(m.vt),B=new o.I(h.vt),U=(0,l.vt)(),G=new o.I((()=>_())),z=[{origin:[-1,-1],direction:[1,0]},{origin:[1,-1],direction:[0,1]},{origin:[1,1],direction:[-1,0]},{origin:[-1,1],direction:[0,-1]}],V=(0,s.vt)(),W=(0,s.vt)(),j=Object.freeze(Object.defineProperty({__proto__:null,BoundedPlaneClass:class{constructor(){this.plane=(0,m.vt)(),this.origin=(0,l.vt)(),this.basis1=(0,l.vt)(),this.basis2=(0,l.vt)()}},altitudeAt:O,axisAt:function(e,t,r,i){return function(e,t,r){switch(t){case u._.X:(0,c.c)(r,e.basis1),(0,c.n)(r,r);break;case u._.Y:(0,c.c)(r,e.basis2),(0,c.n)(r,r);break;case u._.Z:(0,c.c)(r,N(e))}return r}(e,r,i)},cameraFrustumCoverage:function(e,t){return(t-e)/t},closestPoint:C,closestPointOnSilhouette:M,copy:T,copyWithoutVerify:function(e,t){(0,c.c)(t.origin,e.origin),(0,c.c)(t.basis1,e.basis1),(0,c.c)(t.basis2,e.basis2),(0,m.C)(t.plane,e.plane)},create:_,distance:function(e,t){return Math.sqrt(I(e,t))},distance2:I,distanceToSilhouette:function(e,t){let r=Number.NEGATIVE_INFINITY;for(const i of z){const n=L(e,i,B.get()),o=(0,h.kb)(n,t);o>r&&(r=o)}return Math.sqrt(r)},elevate:b,equals:function(e,t){return(0,c.p)(e.basis1,t.basis1)&&(0,c.p)(e.basis2,t.basis2)&&(0,c.p)(e.origin,t.origin)},extrusionContainsPoint:function(e,t){return(0,m.Tj)(e.plane,t)&&y(e,t)},fromAABoundingRect:E,fromValues:x,getExtent:function(e,t){const r=e.basis1[0],i=e.basis2[1],[n,o]=e.origin;return(0,d.fA)(n-r,o-i,n+r,o+i,t)},intersectRay:S,intersectRayClosestSilhouette:function(e,t,r){if(S(e,t,r))return r;const i=M(e,t,v.rq.get());return(0,c.g)(r,t.origin,(0,c.h)(v.rq.get(),t.direction,(0,c.j)(t.origin,i)/(0,c.l)(t.direction))),r},normal:N,projectPoint:R,projectPointLocal:w,rotate:function(e,t,r,i){return e!==i&&T(e,i),(0,a.$0)(W,t,r),(0,c.t)(i.basis1,e.basis1,W),(0,c.t)(i.basis2,e.basis2,W),A(i),i},setAltitudeAt:function(e,t,r,i){const n=O(e,t),o=(0,c.h)(U,N(e),r-n);return(0,c.g)(i,t,o),i},setExtent:function(e,t,r){return E(t,r),b(r,O(e,e.origin),r),r},transform:function(e,t,r){return e!==r&&T(e,r),(0,a.B8)(V,t),(0,a.mg)(V,V),(0,c.t)(r.basis1,e.basis1,V),(0,c.t)(r.basis2,e.basis2,V),(0,c.t)((0,m.Qj)(r.plane),(0,m.Qj)(e.plane),V),(0,c.t)(r.origin,e.origin,t),(0,m.mP)(r.plane,r.plane,r.origin),r},up:H,updateUnboundedPlane:A,wrap:function(e,t,r){const i=G.get();return i.origin=e,i.basis1=t,i.basis2=r,i.plane=(0,m.LV)(0,0,0,0),A(i),i}},Symbol.toStringTag,{value:"Module"}))},11964:(e,t,r)=>{r.d(t,{Cr:()=>l,H6:()=>h,_I:()=>u,kb:()=>d,vt:()=>c});var i=r(34727),n=r(4341),o=r(38954),a=r(51850),s=r(32114);function c(e){return e?{origin:(0,a.o8)(e.origin),vector:(0,a.o8)(e.vector)}:{origin:(0,a.vt)(),vector:(0,a.vt)()}}function l(e,t,r=c()){return(0,o.c)(r.origin,e),(0,o.d)(r.vector,t,e),r}function d(e,t){const r=(0,o.d)(s.rq.get(),t,e.origin),n=(0,o.f)(e.vector,r),a=(0,o.f)(e.vector,e.vector),c=(0,i.qE)(n/a,0,1),l=(0,o.d)(s.rq.get(),(0,o.h)(s.rq.get(),e.vector,c),r);return(0,o.f)(l,l)}function u(e,t,r){return h(e,t,0,1,r)}function h(e,t,r,n,a){const{vector:c,origin:l}=e,d=(0,o.d)(s.rq.get(),t,l),u=(0,o.f)(c,d)/(0,o.k)(c);return(0,o.h)(a,c,(0,i.qE)(u,r,n)),(0,o.g)(a,a,e.origin)}(0,a.vt)(),(0,a.vt)(),new n.I((()=>c()))},92993:(e,t,r)=>{var i;r.d(t,{n:()=>i}),function(e){e[e.ETC1_RGB=0]="ETC1_RGB",e[e.ETC2_RGBA=1]="ETC2_RGBA",e[e.BC1_RGB=2]="BC1_RGB",e[e.BC3_RGBA=3]="BC3_RGBA",e[e.BC4_R=4]="BC4_R",e[e.BC5_RG=5]="BC5_RG",e[e.BC7_M6_RGB=6]="BC7_M6_RGB",e[e.BC7_M5_RGBA=7]="BC7_M5_RGBA",e[e.PVRTC1_4_RGB=8]="PVRTC1_4_RGB",e[e.PVRTC1_4_RGBA=9]="PVRTC1_4_RGBA",e[e.ASTC_4x4_RGBA=10]="ASTC_4x4_RGBA",e[e.ATC_RGB=11]="ATC_RGB",e[e.ATC_RGBA=12]="ATC_RGBA",e[e.FXT1_RGB=17]="FXT1_RGB",e[e.PVRTC2_4_RGB=18]="PVRTC2_4_RGB",e[e.PVRTC2_4_RGBA=19]="PVRTC2_4_RGBA",e[e.ETC2_EAC_R11=20]="ETC2_EAC_R11",e[e.ETC2_EAC_RG11=21]="ETC2_EAC_RG11",e[e.RGBA32=13]="RGBA32",e[e.RGB565=14]="RGB565",e[e.BGR565=15]="BGR565",e[e.RGBA4444=16]="RGBA4444"}(i||(i={}))},99677:(e,t,r)=>{r.d(t,{D:()=>n});var i=r(78888);async function n(e,t){const{data:r}=await(0,i.A)(e,{responseType:"image",...t});return r}},78662:(e,t,r)=>{r.d(t,{Gd:()=>u,VC:()=>h}),r(44208);var i,n,o,a=r(34727),s=(r(77690),r(29242),r(58083),r(9093)),c=r(38954),l=r(51850),d=(r(31756),r(26857),r(65786));(o=i||(i={}))[o.Undefined=0]="Undefined",o[o.DefinedSize=1]="DefinedSize",o[o.DefinedScale=2]="DefinedScale",function(e){e[e.Undefined=0]="Undefined",e[e.DefinedAngle=1]="DefinedAngle"}(n||(n={}));class u extends d.Y{constructor(e){super(),this.vvSize=e?.size??null,this.vvColor=e?.color??null,this.vvOpacity=e?.opacity??null}}function h(e,t,r){if(!t.vvSize)return(0,c.i)(e,1,1,1),e;for(let i=0;i<3;++i){const n=t.vvSize.offset[i]+r[0]*t.vvSize.factor[i];e[i]=(0,a.qE)(n,t.vvSize.minSize[i],t.vvSize.maxSize[i])}return e}(0,s.vt)(),(0,l.vt)(),(0,s.vt)()},26857:(e,t,r)=>{r.d(t,{b:()=>c});var i=r(90237),n=r(69622),o=r(10107),a=(r(44208),r(53966),r(87811),r(40608));let s=class extends n.A{constructor(){super(...arguments),this.SCENEVIEW_HITTEST_RETURN_INTERSECTOR=!1,this.DECONFLICTOR_SHOW_VISIBLE=!1,this.DECONFLICTOR_SHOW_INVISIBLE=!1,this.DECONFLICTOR_SHOW_GRID=!1,this.LABELS_SHOW_BORDER=!1,this.TEXT_SHOW_BASELINE=!1,this.TEXT_SHOW_BORDER=!1,this.OVERLAY_DRAW_DEBUG_TEXTURE=!1,this.OVERLAY_SHOW_CENTER=!1,this.SHOW_POI=!1,this.TESTS_DISABLE_OPTIMIZATIONS=!1,this.TESTS_DISABLE_FAST_UPDATES=!1,this.DRAW_MESH_GEOMETRY_NORMALS=!1,this.FEATURE_TILE_FETCH_SHOW_TILES=!1,this.FEATURE_TILE_TREE_SHOW_TILES=!1,this.TERRAIN_TILE_TREE_SHOW_TILES=!1,this.I3S_TREE_SHOW_TILES=!1,this.I3S_SHOW_MODIFICATIONS=!1,this.LOD_INSTANCE_RENDERER_DISABLE_UPDATES=!1,this.LOD_INSTANCE_RENDERER_COLORIZE_BY_LEVEL=!1,this.EDGES_SHOW_HIDDEN_TRANSPARENT_EDGES=!1,this.LINE_WIREFRAMES=!1}};(0,i._)([(0,o.MZ)()],s.prototype,"SCENEVIEW_HITTEST_RETURN_INTERSECTOR",void 0),(0,i._)([(0,o.MZ)()],s.prototype,"DECONFLICTOR_SHOW_VISIBLE",void 0),(0,i._)([(0,o.MZ)()],s.prototype,"DECONFLICTOR_SHOW_INVISIBLE",void 0),(0,i._)([(0,o.MZ)()],s.prototype,"DECONFLICTOR_SHOW_GRID",void 0),(0,i._)([(0,o.MZ)()],s.prototype,"LABELS_SHOW_BORDER",void 0),(0,i._)([(0,o.MZ)()],s.prototype,"TEXT_SHOW_BASELINE",void 0),(0,i._)([(0,o.MZ)()],s.prototype,"TEXT_SHOW_BORDER",void 0),(0,i._)([(0,o.MZ)()],s.prototype,"OVERLAY_DRAW_DEBUG_TEXTURE",void 0),(0,i._)([(0,o.MZ)()],s.prototype,"OVERLAY_SHOW_CENTER",void 0),(0,i._)([(0,o.MZ)()],s.prototype,"SHOW_POI",void 0),(0,i._)([(0,o.MZ)()],s.prototype,"TESTS_DISABLE_OPTIMIZATIONS",void 0),(0,i._)([(0,o.MZ)()],s.prototype,"TESTS_DISABLE_FAST_UPDATES",void 0),(0,i._)([(0,o.MZ)()],s.prototype,"DRAW_MESH_GEOMETRY_NORMALS",void 0),(0,i._)([(0,o.MZ)()],s.prototype,"FEATURE_TILE_FETCH_SHOW_TILES",void 0),(0,i._)([(0,o.MZ)()],s.prototype,"FEATURE_TILE_TREE_SHOW_TILES",void 0),(0,i._)([(0,o.MZ)()],s.prototype,"TERRAIN_TILE_TREE_SHOW_TILES",void 0),(0,i._)([(0,o.MZ)()],s.prototype,"I3S_TREE_SHOW_TILES",void 0),(0,i._)([(0,o.MZ)()],s.prototype,"I3S_SHOW_MODIFICATIONS",void 0),(0,i._)([(0,o.MZ)()],s.prototype,"LOD_INSTANCE_RENDERER_DISABLE_UPDATES",void 0),(0,i._)([(0,o.MZ)()],s.prototype,"LOD_INSTANCE_RENDERER_COLORIZE_BY_LEVEL",void 0),(0,i._)([(0,o.MZ)()],s.prototype,"EDGES_SHOW_HIDDEN_TRANSPARENT_EDGES",void 0),(0,i._)([(0,o.MZ)()],s.prototype,"LINE_WIREFRAMES",void 0),s=(0,i._)([(0,a.$)("esri.views.3d.support.debugFlags")],s);const c=new s},46686:(e,t,r)=>{r.d(t,{i$:()=>l,oD:()=>d,xJ:()=>c});var i=r(49255),n=r(33752),o=r(77108),a=r(31821);function s(e){e.varyings.add("linearDepth","float")}function c(e){e.vertex.uniforms.add(new o.E("nearFar",(e=>e.camera.nearFar)))}function l(e){e.vertex.code.add(a.H`float calculateLinearDepth(vec2 nearFar,float z) {
return (-z - nearFar[0]) / (nearFar[1] - nearFar[0]);
}`)}function d(e,t){const{vertex:r}=e;switch(t.output){case i.V.Color:case i.V.ColorEmission:if(t.receiveShadows)return s(e),void r.code.add(a.H`void forwardLinearDepth() { linearDepth = gl_Position.w; }`);break;case i.V.Shadow:case i.V.ShadowHighlight:case i.V.ShadowExcludeHighlight:case i.V.ViewshedShadow:return e.include(n.em,t),s(e),c(e),l(e),void r.code.add(a.H`void forwardLinearDepth() {
linearDepth = calculateLinearDepth(nearFar, vPosition_view.z);
}`)}r.code.add(a.H`void forwardLinearDepth() {}`)}},32680:(e,t,r)=>{r.d(t,{M:()=>n});var i=r(31821);function n(e){e.vertex.code.add(i.H`vec4 offsetBackfacingClipPosition(vec4 posClip, vec3 posWorld, vec3 normalWorld, vec3 camPosWorld) {
vec3 camToVert = posWorld - camPosWorld;
bool isBackface = dot(camToVert, normalWorld) > 0.0;
if (isBackface) {
posClip.z += 0.0000003 * posClip.w;
}
return posClip;
}`)}},82048:(e,t,r)=>{r.d(t,{c:()=>o});var i=r(31821),n=r(46540);function o(e,t=!0){e.attributes.add(n.r.POSITION,"vec2"),t&&e.varyings.add("uv","vec2"),e.vertex.main.add(i.H`
gl_Position = vec4(position, 0.0, 1.0);
${t?i.H`uv = position * 0.5 + vec2(0.5);`:""}
`)}},76591:(e,t,r)=>{r.d(t,{HQ:()=>l,rA:()=>d});var i=r(58083),n=r(9093),o=r(38954),a=r(51850),s=r(40710),c=(r(33079),r(31821));function l(e,t){!function(e,t,...r){h(e,t,...r),t.hasSlicePlane?e.code.add("\n void discardBySlice(vec3 pos) {\n if (sliceByPlane(pos)) {\n discard;\n }\n }\n\n vec4 applySliceOutline(vec4 color, vec3 pos) {\n SliceFactors factors = calculateSliceFactors(pos);\n\n factors.front /= 2.0 * fwidth(factors.front);\n factors.side0 /= 2.0 * fwidth(factors.side0);\n factors.side1 /= 2.0 * fwidth(factors.side1);\n factors.side2 /= 2.0 * fwidth(factors.side2);\n factors.side3 /= 2.0 * fwidth(factors.side3);\n\n // return after calling fwidth, to avoid aliasing caused by discontinuities in the input to fwidth\n if (sliceByFactors(factors)) {\n return color;\n }\n\n float outlineFactor = (1.0 - step(0.5, factors.front))\n * (1.0 - step(0.5, factors.side0))\n * (1.0 - step(0.5, factors.side1))\n * (1.0 - step(0.5, factors.side2))\n * (1.0 - step(0.5, factors.side3));\n\n return mix(color, vec4(vec3(0.0), color.a), outlineFactor * 0.3);\n }\n\n vec4 applySlice(vec4 color, vec3 pos) {\n return sliceEnabled() ? applySliceOutline(color, pos) : color;\n }\n "):e.code.add(c.H`void discardBySlice(vec3 pos) { }
vec4 applySlice(vec4 color, vec3 pos) { return color; }`)}(e,t,new s.W("slicePlaneOrigin",((e,r)=>v(t,e,r))),new s.W("slicePlaneBasis1",((e,r)=>g(t,e,r,r.slicePlane?.basis1))),new s.W("slicePlaneBasis2",((e,r)=>g(t,e,r,r.slicePlane?.basis2))))}function d(e,t){h(e,t,new s.W("slicePlaneOrigin",((e,r)=>v(t,e,r))),new s.W("slicePlaneBasis1",((e,r)=>g(t,e,r,r.slicePlane?.basis1))),new s.W("slicePlaneBasis2",((e,r)=>g(t,e,r,r.slicePlane?.basis2))))}r(65786).Y;const u=c.H`struct SliceFactors {
float front;
float side0;
float side1;
float side2;
float side3;
};
SliceFactors calculateSliceFactors(vec3 pos) {
vec3 rel = pos - slicePlaneOrigin;
vec3 slicePlaneNormal = -cross(slicePlaneBasis1, slicePlaneBasis2);
float slicePlaneW = -dot(slicePlaneNormal, slicePlaneOrigin);
float basis1Len2 = dot(slicePlaneBasis1, slicePlaneBasis1);
float basis2Len2 = dot(slicePlaneBasis2, slicePlaneBasis2);
float basis1Dot = dot(slicePlaneBasis1, rel);
float basis2Dot = dot(slicePlaneBasis2, rel);
return SliceFactors(
dot(slicePlaneNormal, pos) + slicePlaneW,
-basis1Dot - basis1Len2,
basis1Dot - basis1Len2,
-basis2Dot - basis2Len2,
basis2Dot - basis2Len2
);
}
bool sliceByFactors(SliceFactors factors) {
return factors.front < 0.0
&& factors.side0 < 0.0
&& factors.side1 < 0.0
&& factors.side2 < 0.0
&& factors.side3 < 0.0;
}
bool sliceEnabled() {
return dot(slicePlaneBasis1, slicePlaneBasis1) != 0.0;
}
bool sliceByPlane(vec3 pos) {
return sliceEnabled() && sliceByFactors(calculateSliceFactors(pos));
}
bool rejectBySlice(vec3 pos) {
return sliceByPlane(pos);
}`;function h(e,t,...r){t.hasSlicePlane?(e.uniforms.add(...r),e.code.add(u)):e.code.add("bool rejectBySlice(vec3 pos) { return false; }")}function m(e,t,r){return e.instancedDoublePrecision?(0,o.i)(_,r.camera.viewInverseTransposeMatrix[3],r.camera.viewInverseTransposeMatrix[7],r.camera.viewInverseTransposeMatrix[11]):t.slicePlaneLocalOrigin}function f(e,t){return null!=e?(0,o.d)(T,t.origin,e):t.origin}function p(e,t,r){return e.hasSliceTranslatedView?null!=t?(0,i.Tl)(A,r.camera.viewMatrix,t):r.camera.viewMatrix:null}function v(e,t,r){if(null==r.slicePlane)return a.uY;const i=m(e,t,r),n=f(i,r.slicePlane),s=p(e,i,r);return null!=s?(0,o.t)(T,n,s):n}function g(e,t,r,i){if(null==i||null==r.slicePlane)return a.uY;const n=m(e,t,r),s=f(n,r.slicePlane),c=p(e,n,r);return null!=c?((0,o.g)(x,i,s),(0,o.t)(T,s,c),(0,o.t)(x,x,c),(0,o.d)(x,x,T)):i}const _=(0,a.vt)(),T=(0,a.vt)(),x=(0,a.vt)(),A=(0,n.vt)()},76597:(e,t,r)=>{r.d(t,{d:()=>o});var i=r(46686),n=r(31821);function o(e){(0,i.i$)(e),e.vertex.code.add(n.H`vec4 transformPositionWithDepth(mat4 proj, mat4 view, vec3 pos, vec2 nearFar, out float depth) {
vec4 eye = view * vec4(pos, 1.0);
depth = calculateLinearDepth(nearFar,eye.z);
return proj * eye;
}`),e.vertex.code.add(n.H`vec4 transformPosition(mat4 proj, mat4 view, vec3 pos) {
return proj * (view * vec4(pos, 1.0));
}`)}},82991:(e,t,r)=>{r.d(t,{B:()=>_});var i=r(77690),n=r(29242),o=r(9093),a=r(38954),s=r(51850),c=r(49255),l=r(26425),d=r(20693),u=r(23205),h=r(31821),m=r(35644),f=r(40095),p=r(46540),v=r(28449);r(65786).Y;const g=(0,n.vt)();function _(e,t){const r=t.hasModelTransformation,n=t.instancedDoublePrecision;r&&(e.vertex.uniforms.add(new f.X("model",(e=>e.modelTransformation??o.zK))),e.vertex.uniforms.add(new m.k("normalLocalOriginFromModel",(e=>((0,i.Ge)(g,e.modelTransformation??o.zK),g))))),t.instanced&&n&&(e.attributes.add(p.r.INSTANCEMODELORIGINHI,"vec3"),e.attributes.add(p.r.INSTANCEMODELORIGINLO,"vec3"),e.attributes.add(p.r.INSTANCEMODEL,"mat3"),e.attributes.add(p.r.INSTANCEMODELNORMAL,"mat3"));const s=e.vertex;n&&(s.include(l.u,t),s.uniforms.add(new u.d("viewOriginHi",(e=>(0,v.Zo)((0,a.i)(T,e.camera.viewInverseTransposeMatrix[3],e.camera.viewInverseTransposeMatrix[7],e.camera.viewInverseTransposeMatrix[11]),T))),new u.d("viewOriginLo",(e=>(0,v.jA)((0,a.i)(T,e.camera.viewInverseTransposeMatrix[3],e.camera.viewInverseTransposeMatrix[7],e.camera.viewInverseTransposeMatrix[11]),T))))),s.code.add(h.H`
vec3 getVertexInLocalOriginSpace() {
return ${r?n?"(model * vec4(instanceModel * localPosition().xyz, 1.0)).xyz":"(model * localPosition()).xyz":n?"instanceModel * localPosition().xyz":"localPosition().xyz"};
}
vec3 subtractOrigin(vec3 _pos) {
${n?h.H`
// Negated inputs are intentionally the first two arguments. The other way around the obfuscation in dpAdd() stopped
// working for macOS 14+ and iOS 17+.
// Issue: https://devtopia.esri.com/WebGIS/arcgis-js-api/issues/56280
vec3 originDelta = dpAdd(-instanceModelOriginHi, -instanceModelOriginLo, viewOriginHi, viewOriginLo);
return _pos - originDelta;`:"return vpos;"}
}
`),s.code.add(h.H`
vec3 dpNormal(vec4 _normal) {
return normalize(${r?n?"normalLocalOriginFromModel * (instanceModelNormal * _normal.xyz)":"normalLocalOriginFromModel * _normal.xyz":n?"instanceModelNormal * _normal.xyz":"_normal.xyz"});
}
`),t.output===c.V.Normal&&((0,d.S7)(s),s.code.add(h.H`
vec3 dpNormalView(vec4 _normal) {
return normalize((viewNormal * ${r?n?"vec4(normalLocalOriginFromModel * (instanceModelNormal * _normal.xyz), 1.0)":"vec4(normalLocalOriginFromModel * _normal.xyz, 1.0)":n?"vec4(instanceModelNormal * _normal.xyz, 1.0)":"_normal"}).xyz);
}
`)),t.hasVertexTangents&&s.code.add(h.H`
vec4 dpTransformVertexTangent(vec4 _tangent) {
${r?n?"return vec4(normalLocalOriginFromModel * (instanceModelNormal * _tangent.xyz), _tangent.w);":"return vec4(normalLocalOriginFromModel * _tangent.xyz, _tangent.w);":n?"return vec4(instanceModelNormal * _tangent.xyz, _tangent.w);":"return _tangent;"}
}`)}const T=(0,s.vt)()},36782:(e,t,r)=>{r.d(t,{g:()=>a});var i=r(49255),n=r(31821),o=r(46540);function a(e,t){if(t.output!==i.V.ObjectAndLayerIdColor)return e.vertex.code.add(n.H`void forwardObjectAndLayerIdColor() {}`),void e.fragment.code.add(n.H`void outputObjectAndLayerIdColor() {}`);const r=t.objectAndLayerIdColorInstanced;e.varyings.add("objectAndLayerIdColorVarying","vec4"),e.attributes.add(r?o.r.INSTANCEOBJECTANDLAYERIDCOLOR:o.r.OBJECTANDLAYERIDCOLOR,"vec4"),e.vertex.code.add(n.H`
void forwardObjectAndLayerIdColor() {
objectAndLayerIdColorVarying = ${r?"instanceObjectAndLayerIdColor":"objectAndLayerIdColor"} * 0.003921568627451;
}`),e.fragment.code.add(n.H`void outputObjectAndLayerIdColor() {
fragColor = objectAndLayerIdColorVarying;
}`)}},10764:(e,t,r)=>{r.d(t,{I:()=>o});var i=r(31821),n=r(46540);function o(e){e.attributes.add(n.r.POSITION,"vec3"),e.vertex.code.add(i.H`vec3 positionModel() { return position; }`)}},71955:(e,t,r)=>{r.d(t,{K:()=>d});var i=r(42583),n=r(31821),o=r(69270),a=r(74333);class s extends a.n{constructor(e,t){super(e,"int",o.c.Pass,((r,i,n)=>r.setUniform1i(e,t(i,n))))}}var c=r(46540),l=r(43616);function d(e,t){t.hasSymbolColors?(e.include(i.A),e.attributes.add(c.r.SYMBOLCOLOR,"vec4"),e.varyings.add("colorMixMode","mediump float"),e.vertex.code.add(n.H`int symbolColorMixMode;
vec4 getSymbolColor() {
return decodeSymbolColor(symbolColor, symbolColorMixMode) * 0.003921568627451;
}
void forwardColorMixMode() {
colorMixMode = float(symbolColorMixMode) + 0.5;
}`)):(e.fragment.uniforms.add(new s("colorMixMode",(e=>l.Um[e.colorMixMode]))),e.vertex.code.add(n.H`vec4 getSymbolColor() { return vec4(1.0); }
void forwardColorMixMode() {}`))}},53466:(e,t,r)=>{r.d(t,{I:()=>i,U:()=>c});var i,n,o=r(21818),a=r(31821),s=r(46540);function c(e,t){switch(t.textureCoordinateType){case i.Default:return e.attributes.add(s.r.UV0,"vec2"),e.varyings.add("vuv0","vec2"),void e.vertex.code.add(a.H`void forwardTextureCoordinates() {
vuv0 = uv0;
}`);case i.Compressed:return e.attributes.add(s.r.UV0,"vec2"),e.varyings.add("vuv0","vec2"),void e.vertex.code.add(a.H`vec2 getUV0() {
return uv0 / 16384.0;
}
void forwardTextureCoordinates() {
vuv0 = getUV0();
}`);case i.Atlas:return e.attributes.add(s.r.UV0,"vec2"),e.varyings.add("vuv0","vec2"),e.attributes.add(s.r.UVREGION,"vec4"),e.varyings.add("vuvRegion","vec4"),void e.vertex.code.add(a.H`void forwardTextureCoordinates() {
vuv0 = uv0;
vuvRegion = uvRegion;
}`);default:(0,o.Xb)(t.textureCoordinateType);case i.None:return void e.vertex.code.add(a.H`void forwardTextureCoordinates() {}`);case i.COUNT:return}}(n=i||(i={}))[n.None=0]="None",n[n.Default=1]="Default",n[n.Atlas=2]="Atlas",n[n.Compressed=3]="Compressed",n[n.COUNT=4]="COUNT"},92700:(e,t,r)=>{r.d(t,{c:()=>o});var i=r(31821),n=r(46540);function o(e,t){t.hasVertexColors?(e.attributes.add(n.r.COLOR,"vec4"),e.varyings.add("vColor","vec4"),e.vertex.code.add(i.H`void forwardVertexColor() { vColor = color; }`),e.vertex.code.add(i.H`void forwardNormalizedVertexColor() { vColor = color * 0.003921568627451; }`)):e.vertex.code.add(i.H`void forwardVertexColor() {}
void forwardNormalizedVertexColor() {}`)}},72824:(e,t,r)=>{r.d(t,{Mh:()=>u,Zo:()=>h,gy:()=>m});var i=r(21818),n=r(29242),o=r(91829),a=r(96336),s=r(33752),c=r(31821),l=r(98353),d=r(35644);function u(e,t){switch(t.normalType){case a.W.Attribute:case a.W.Compressed:e.include(a.Y,t),e.varyings.add("vNormalWorld","vec3"),e.varyings.add("vNormalView","vec3"),e.vertex.uniforms.add(new l.h("transformNormalGlobalFromModel",(e=>e.transformNormalGlobalFromModel)),new d.k("transformNormalViewFromGlobal",(e=>e.transformNormalViewFromGlobal))),e.vertex.code.add(c.H`void forwardNormal() {
vNormalWorld = transformNormalGlobalFromModel * normalModel();
vNormalView = transformNormalViewFromGlobal * vNormalWorld;
}`);break;case a.W.ScreenDerivative:e.vertex.code.add(c.H`void forwardNormal() {}`);break;default:(0,i.Xb)(t.normalType);case a.W.COUNT:}}class h extends s.dO{constructor(){super(...arguments),this.transformNormalViewFromGlobal=(0,n.vt)()}}class m extends s.EM{constructor(){super(...arguments),this.transformNormalGlobalFromModel=(0,n.vt)(),this.toMapSpace=(0,o.vt)()}}},33752:(e,t,r)=>{r.d(t,{EM:()=>g,dO:()=>v,em:()=>p});var i=r(29242),n=r(9093),o=r(51850),a=r(10764),s=r(26425),c=r(40710),l=r(33079),d=r(31821),u=r(98353),h=r(35644),m=r(40095),f=r(65786);function p(e,t){e.include(a.I);const r=e.vertex;r.include(s.u,t),e.varyings.add("vPositionWorldCameraRelative","vec3"),e.varyings.add("vPosition_view","vec3"),r.uniforms.add(new l.t("transformWorldFromViewTH",(e=>e.transformWorldFromViewTH)),new l.t("transformWorldFromViewTL",(e=>e.transformWorldFromViewTL)),new h.k("transformViewFromCameraRelativeRS",(e=>e.transformViewFromCameraRelativeRS)),new m.X("transformProjFromView",(e=>e.transformProjFromView)),new u.h("transformWorldFromModelRS",(e=>e.transformWorldFromModelRS)),new c.W("transformWorldFromModelTH",(e=>e.transformWorldFromModelTH)),new c.W("transformWorldFromModelTL",(e=>e.transformWorldFromModelTL))),r.code.add(d.H`vec3 positionWorldCameraRelative() {
vec3 rotatedModelPosition = transformWorldFromModelRS * positionModel();
vec3 transform_CameraRelativeFromModel = dpAdd(
transformWorldFromModelTL,
transformWorldFromModelTH,
-transformWorldFromViewTL,
-transformWorldFromViewTH
);
return transform_CameraRelativeFromModel + rotatedModelPosition;
}`),r.code.add(d.H`
void forwardPosition(float fOffset) {
vPositionWorldCameraRelative = positionWorldCameraRelative();
if (fOffset != 0.0) {
vPositionWorldCameraRelative += fOffset * ${t.spherical?d.H`normalize(transformWorldFromViewTL + vPositionWorldCameraRelative)`:d.H`vec3(0.0, 0.0, 1.0)`};
}
vPosition_view = transformViewFromCameraRelativeRS * vPositionWorldCameraRelative;
gl_Position = transformProjFromView * vec4(vPosition_view, 1.0);
}
`),e.fragment.uniforms.add(new l.t("transformWorldFromViewTL",(e=>e.transformWorldFromViewTL))),r.code.add(d.H`vec3 positionWorld() {
return transformWorldFromViewTL + vPositionWorldCameraRelative;
}`),e.fragment.code.add(d.H`vec3 positionWorld() {
return transformWorldFromViewTL + vPositionWorldCameraRelative;
}`)}class v extends f.Y{constructor(){super(...arguments),this.transformWorldFromViewTH=(0,o.vt)(),this.transformWorldFromViewTL=(0,o.vt)(),this.transformViewFromCameraRelativeRS=(0,i.vt)(),this.transformProjFromView=(0,n.vt)()}}class g extends f.Y{constructor(){super(...arguments),this.transformWorldFromModelRS=(0,i.vt)(),this.transformWorldFromModelTH=(0,o.vt)(),this.transformWorldFromModelTL=(0,o.vt)()}}},99208:(e,t,r)=>{r.d(t,{r:()=>a});var i=r(53466),n=r(31821);function o(e){e.fragment.code.add(n.H`vec4 textureAtlasLookup(sampler2D tex, vec2 textureCoordinates, vec4 atlasRegion) {
vec2 atlasScale = atlasRegion.zw - atlasRegion.xy;
vec2 uvAtlas = fract(textureCoordinates) * atlasScale + atlasRegion.xy;
float maxdUV = 0.125;
vec2 dUVdx = clamp(dFdx(textureCoordinates), -maxdUV, maxdUV) * atlasScale;
vec2 dUVdy = clamp(dFdy(textureCoordinates), -maxdUV, maxdUV) * atlasScale;
return textureGrad(tex, uvAtlas, dUVdx, dUVdy);
}`)}function a(e,t){const{textureCoordinateType:r}=t;if(r===i.I.None||r===i.I.COUNT)return;e.include(i.U,t);const a=r===i.I.Atlas;a&&e.include(o),e.fragment.code.add(n.H`
vec4 textureLookup(sampler2D tex, vec2 uv) {
return ${a?"textureAtlasLookup(tex, uv, vuvRegion)":"texture(tex, uv)"};
}
`)}},35640:(e,t,r)=>{r.d(t,{G:()=>l,V:()=>u});var i=r(87317),n=r(91829),o=r(52587),a=r(20693),s=r(71988),c=r(31821);function l(e,t){const r=e.vertex;t.hasVerticalOffset?(u(r),t.hasScreenSizePerspective&&(e.include(o.Y6),(0,o.OH)(r),(0,a.yu)(e.vertex,t)),r.code.add(c.H`
vec3 calculateVerticalOffset(vec3 worldPos, vec3 localOrigin) {
float viewDistance = length((view * vec4(worldPos, 1.0)).xyz);
${t.spherical?c.H`vec3 worldNormal = normalize(worldPos + localOrigin);`:c.H`vec3 worldNormal = vec3(0.0, 0.0, 1.0);`}
${t.hasScreenSizePerspective?c.H`
float cosAngle = dot(worldNormal, normalize(worldPos - cameraPosition));
float verticalOffsetScreenHeight = screenSizePerspectiveScaleFloat(verticalOffset.x, abs(cosAngle), viewDistance, screenSizePerspectiveAlignment);`:c.H`
float verticalOffsetScreenHeight = verticalOffset.x;`}
// Screen sized offset in world space, used for example for line callouts
float worldOffset = clamp(verticalOffsetScreenHeight * verticalOffset.y * viewDistance, verticalOffset.z, verticalOffset.w);
return worldNormal * worldOffset;
}
vec3 addVerticalOffset(vec3 worldPos, vec3 localOrigin) {
return worldPos + calculateVerticalOffset(worldPos, localOrigin);
}
`)):r.code.add(c.H`vec3 addVerticalOffset(vec3 worldPos, vec3 localOrigin) { return worldPos; }`)}const d=(0,n.vt)();function u(e){e.uniforms.add(new s.E("verticalOffset",((e,t)=>{const{minWorldLength:r,maxWorldLength:n,screenLength:o}=e.verticalOffset,a=Math.tan(.5*t.camera.fovY)/(.5*t.camera.fullViewport[3]),s=t.camera.pixelRatio||1;return(0,i.s)(d,o*s,a,r,n)})))}},40261:(e,t,r)=>{r.d(t,{E:()=>x});var i=r(46686),n=r(49255),o=r(76591),a=r(76597),s=r(96336),c=r(36782),l=r(53466),d=r(72824),u=r(80730),h=r(31821);function m(e,t){switch(t.output){case n.V.Shadow:case n.V.ShadowHighlight:case n.V.ShadowExcludeHighlight:case n.V.ViewshedShadow:e.fragment.include(u.U),e.fragment.code.add(h.H`float _calculateFragDepth(const in float depth) {
const float SLOPE_SCALE = 2.0;
const float BIAS = 20.0 * .000015259;
float m = max(abs(dFdx(depth)), abs(dFdy(depth)));
return depth + SLOPE_SCALE * m + BIAS;
}
void outputDepth(float _linearDepth) {
fragColor = floatToRgba4(_calculateFragDepth(_linearDepth));
}`)}}var f=r(2981),p=r(42398),v=r(11955),g=r(20693),_=r(63761),T=r(89192);function x(e,t){const{vertex:r,fragment:u}=e,x=t.hasColorTexture&&t.alphaDiscardMode!==T.sf.Opaque,{output:A,normalType:b,hasColorTextureTransform:E}=t;switch(A){case n.V.Depth:(0,g.NB)(r,t),e.include(a.d,t),e.fragment.include(o.HQ,t),e.include(l.U,t),x&&u.uniforms.add(new _.N("tex",(e=>e.texture))),r.main.add(h.H`vpos = getVertexInLocalOriginSpace();
vpos = subtractOrigin(vpos);
vpos = addVerticalOffset(vpos, localOrigin);
gl_Position = transformPosition(proj, view, vpos);
forwardTextureCoordinates();`),e.include(v.S,t),u.main.add(h.H`
discardBySlice(vpos);
${(0,h.If)(x,h.H`vec4 texColor = texture(tex, ${E?"colorUV":"vuv0"});
discardOrAdjustAlpha(texColor);`)}`);break;case n.V.Shadow:case n.V.ShadowHighlight:case n.V.ShadowExcludeHighlight:case n.V.ViewshedShadow:case n.V.ObjectAndLayerIdColor:(0,g.NB)(r,t),e.include(a.d,t),e.include(l.U,t),e.include(p.A,t),e.include(m,t),e.fragment.include(o.HQ,t),e.include(c.g,t),(0,i.xJ)(e),e.varyings.add("depth","float"),x&&u.uniforms.add(new _.N("tex",(e=>e.texture))),r.main.add(h.H`vpos = getVertexInLocalOriginSpace();
vpos = subtractOrigin(vpos);
vpos = addVerticalOffset(vpos, localOrigin);
gl_Position = transformPositionWithDepth(proj, view, vpos, nearFar, depth);
forwardTextureCoordinates();
forwardObjectAndLayerIdColor();`),e.include(v.S,t),u.main.add(h.H`
discardBySlice(vpos);
${(0,h.If)(x,h.H`vec4 texColor = texture(tex, ${E?"colorUV":"vuv0"});
discardOrAdjustAlpha(texColor);`)}
${A===n.V.ObjectAndLayerIdColor?h.H`outputObjectAndLayerIdColor();`:h.H`outputDepth(depth);`}`);break;case n.V.Normal:{(0,g.NB)(r,t),e.include(a.d,t),e.include(s.Y,t),e.include(d.Mh,t),e.include(l.U,t),e.include(p.A,t),x&&u.uniforms.add(new _.N("tex",(e=>e.texture))),b===s.W.ScreenDerivative&&e.varyings.add("vPositionView","vec3");const i=b===s.W.Attribute||b===s.W.Compressed;r.main.add(h.H`
vpos = getVertexInLocalOriginSpace();
${i?h.H`vNormalWorld = dpNormalView(vvLocalNormal(normalModel()));`:h.H`vPositionView = (view * vec4(vpos, 1.0)).xyz;`}
vpos = subtractOrigin(vpos);
vpos = addVerticalOffset(vpos, localOrigin);
gl_Position = transformPosition(proj, view, vpos);
forwardTextureCoordinates();`),e.fragment.include(o.HQ,t),e.include(v.S,t),u.main.add(h.H`
discardBySlice(vpos);
${(0,h.If)(x,h.H`vec4 texColor = texture(tex, ${E?"colorUV":"vuv0"});
discardOrAdjustAlpha(texColor);`)}
${b===s.W.ScreenDerivative?h.H`vec3 normal = screenDerivativeNormal(vPositionView);`:h.H`vec3 normal = normalize(vNormalWorld);
if (gl_FrontFacing == false){
normal = -normal;
}`}
fragColor = vec4(0.5 + 0.5 * normal, 1.0);`);break}case n.V.Highlight:(0,g.NB)(r,t),e.include(a.d,t),e.include(l.U,t),e.include(p.A,t),x&&u.uniforms.add(new _.N("tex",(e=>e.texture))),r.main.add(h.H`vpos = getVertexInLocalOriginSpace();
vpos = subtractOrigin(vpos);
vpos = addVerticalOffset(vpos, localOrigin);
gl_Position = transformPosition(proj, view, vpos);
forwardTextureCoordinates();`),e.fragment.include(o.HQ,t),e.include(v.S,t),e.include(f.Q,t),u.main.add(h.H`
discardBySlice(vpos);
${(0,h.If)(x,h.H`vec4 texColor = texture(tex, ${E?"colorUV":"vuv0"});
discardOrAdjustAlpha(texColor);`)}
calculateOcclusionAndOutputHighlight();`)}}},22911:(e,t,r)=>{r.d(t,{NL:()=>m,ZX:()=>i});var i,n,o=r(49255),a=r(99208),s=r(40710),c=r(33079),l=r(31821),d=r(15976),u=r(63761),h=(r(25634),r(69270));function m(e,t){if(!(0,o.RN)(t.output))return;const{emissionSource:r,hasEmissiveTextureTransform:n,bindType:m}=t,f=r===i.Texture;f&&(e.include(a.r,t),e.fragment.uniforms.add(m===h.c.Pass?new u.N("texEmission",(e=>e.textureEmissive)):new d.o("texEmission",(e=>e.textureEmissive))));const p=r===i.Value||f;p&&e.fragment.uniforms.add(m===h.c.Pass?new c.t("emissionFactor",(e=>e.emissiveFactor)):new s.W("emissionFactor",(e=>e.emissiveFactor))),e.fragment.code.add(l.H`
vec4 getEmissions() {
vec4 emissions = ${p?"vec4(emissionFactor, 1.0)":"vec4(0.0)"};
${(0,l.If)(f,`emissions *= textureLookup(texEmission, ${n?"emissiveUV":"vuv0"});\n emissions.w = emissions.rgb == vec3(0.0) ? 0.0