<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">import{d as n}from"./ReadDepth.glsl-e64ee32e.js";import{t as u,n as l,i as v,a as s}from"./Uniform-5601f45a.js";import{o}from"./Texture2DBindUniform-cde5ebb1.js";import{l as p}from"./HighlightReadBitmap.glsl-0b28e445.js";import{n as x}from"./Matrix3PassUniform-13950c42.js";import{e as f}from"./IntegerBindUniform-d36f1363.js";var d;(function(e){e[e.NONE=0]="NONE",e[e.ColorAlpha=1]="ColorAlpha",e[e.FrontFace=2]="FrontFace",e[e.COUNT=3]="COUNT"})(d||(d={}));function $(e,{occlusionPass:t,terrainDepthTest:c,cullAboveTerrain:i}){const h=e.vertex,r=e.fragment;if(!c)return h.code.add("void forwardViewPosDepth(vec3 pos) {}"),void r.code.add(`${t?"bool":"void"} discardByTerrainDepth() { ${u(t,"return false;")}}`);e.varyings.add("viewPosDepth","float"),h.code.add(`void forwardViewPosDepth(vec3 pos) {
    viewPosDepth = pos.z;
  }`),r.include(n),r.uniforms.add(new o("terrainDepthTexture",g=&gt;{var a;return(a=g.terrainDepth)==null?void 0:a.attachment})).code.add(l`
    ${t?"bool":"void"} discardByTerrainDepth() {
      float depth = texelFetch(terrainDepthTexture, ivec2(gl_FragCoord.xy), 0).r;
      float linearDepth = linearizeDepth(depth);
      ${t?"return viewPosDepth &lt; linearDepth &amp;&amp; depth &lt; 1.0;":`if(viewPosDepth ${i?"&gt;":"&lt;="} linearDepth) discard;`}
    }`)}function T(e){e.code.add(l`vec4 premultiplyAlpha(vec4 v) {
return vec4(v.rgb * v.a, v.a);
}
vec3 rgb2hsv(vec3 c) {
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
vec4 p = c.g &lt; c.b ? vec4(c.bg, K.wz) : vec4(c.gb, K.xy);
vec4 q = c.r &lt; p.x ? vec4(p.xyw, c.r) : vec4(c.r, p.yzx);
float d = q.x - min(q.w, q.y);
float e = 1.0e-10;
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), min(d / (q.x + e), 1.0), q.x);
}
vec3 hsv2rgb(vec3 c) {
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
}
float rgb2v(vec3 c) {
return max(c.x, max(c.y, c.z));
}`)}class m extends v{constructor(t,c){super(t,"ivec2",s.Bind,(i,h)=&gt;i.setUniform2iv(t,c(h)))}}function A(e,t){const{fragment:c}=e;t.output===x.Highlight?(c.uniforms.add(new o("depthTexture",i=&gt;i.mainDepth),new o("highlightTexture",i=&gt;i.highlightMixTexture),new f("highlightLevel",i=&gt;i.highlightLevel??0),new m("highlightMixOrigin",i=&gt;i.highlightMixOrigin)),e.outputs.add("fragHighlight","vec2",0),e.include(p),c.code.add(l`vec2 getAccumulatedHighlight() {
return texelFetch(highlightTexture, ivec2(gl_FragCoord.xy) - highlightMixOrigin, 0).rg;
}
void outputHighlight(bool occluded) {
if (highlightLevel == 0) {
uint bits = occluded ? 3u : 1u;
fragHighlight = vec2(float(bits) / 255.0, 0.0);
} else {
int ll = (highlightLevel &amp; 3) &lt;&lt; 1;
int li = (highlightLevel &gt;&gt; 2) &amp; 3;
uint bits;
if (occluded) {
bits = 3u &lt;&lt; ll;
} else {
bits = 1u &lt;&lt; ll;
}
vec2 combinedHighlight = getAccumulatedHighlight();
uint accumulatedI = uint(combinedHighlight[li] * 255.0);
combinedHighlight[li] = float(bits | accumulatedI) / 255.0;
fragHighlight = combinedHighlight;
}
}
bool isHighlightOccluded() {
float sceneDepth = texelFetch(depthTexture, ivec2(gl_FragCoord.xy), 0).x;
return gl_FragCoord.z &gt; sceneDepth + 5e-7;
}
void calculateOcclusionAndOutputHighlight() {
outputHighlight(isHighlightOccluded());
}`),t.canHaveOverlay&amp;&amp;c.code.add(l`void calculateOcclusionAndOutputHighlightOverlay(vec2 highlightToAdd) {
uint levelBits = readLevelBits(highlightToAdd, highlightLevel);
if ((levelBits &amp; 1u) == 0u) { discard; }
outputHighlight(isHighlightOccluded());
}`)):c.code.add(l`void calculateOcclusionAndOutputHighlight() {}`)}const F=1/255.5;export{d as a,$ as b,A as d,T as e,F as o};
</pre></body></html>