#version 460
#ifndef WEBGPU
#extension GL_EXT_multiview : require
#endif
#extension GL_EXT_samplerless_texture_functions : require
#extension GL_GOOGLE_include_directive : require

#include "lovr.glsl"

float screenPxRange() {
  vec2 screenTexSize = vec2(1.) / fwidth(UV);
  return max(.5 * dot(Material.sdfRange, screenTexSize), 1.);
}

float median(float r, float g, float b) {
  return max(min(r, g), min(max(r, g), b));
}

vec4 lovrmain() {
  vec3 msdf = getPixel(ColorTexture, UV).rgb;
  float sdf = median(msdf.r, msdf.g, msdf.b);
  float screenPxDistance = screenPxRange() * (sdf - .5);
  float alpha = clamp(screenPxDistance + .5, 0., 1.);
  if (alpha <= 0.) discard;
  return vec4(Color.rgb, Color.a * alpha);
}
