2022-06-21 01:17:37 +00:00
|
|
|
#version 460
|
|
|
|
#extension GL_EXT_multiview : require
|
|
|
|
#extension GL_GOOGLE_include_directive : require
|
|
|
|
#extension GL_EXT_samplerless_texture_functions : require
|
|
|
|
|
|
|
|
#include "lovr.glsl"
|
|
|
|
|
|
|
|
float screenPxRange() {
|
2022-07-07 05:54:56 +00:00
|
|
|
vec2 screenTexSize = vec2(1.) / fwidth(UV);
|
|
|
|
return max(.5 * dot(SDFRange, screenTexSize), 1.);
|
2022-06-21 01:17:37 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
float median(float r, float g, float b) {
|
|
|
|
return max(min(r, g), min(max(r, g), b));
|
|
|
|
}
|
|
|
|
|
2022-07-31 18:18:15 +00:00
|
|
|
vec4 lovrmain() {
|
2022-07-07 05:54:56 +00:00
|
|
|
vec3 msdf = getPixel(ColorTexture).rgb;
|
2022-06-21 01:17:37 +00:00
|
|
|
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;
|
2022-07-31 18:18:15 +00:00
|
|
|
return vec4(Color.rgb, Color.a * alpha);
|
2022-06-21 01:17:37 +00:00
|
|
|
}
|