LookingGlass/client/renderers/EGL/shader/ffx_cas.frag
2021-08-10 00:54:54 +10:00

69 lines
1.2 KiB
GLSL

#version 300 es
precision mediump float;
in vec2 iFragCoord;
out vec4 fragColor;
uniform sampler2D iChannel0;
uniform uvec2 uInRes[8];
uniform uvec2 uOutRes;
uniform float uSharpness;
// the following are not available until verion 400 or later
// so we implement our own versions of them
uint bitfieldExtract(uint val, int off, int size)
{
uint mask = uint((1 << size) - 1);
return uint(val >> off) & mask;
}
uint bitfieldInsert(uint a, uint b, int c, int d)
{
uint mask = ~(0xffffffffu << d) << c;
mask = ~mask;
a &= mask;
return a | (b << c);
}
#define A_GPU 1
#define A_GLSL 1
#include "ffx_a.h"
vec3 imageLoad(ivec2 point)
{
return texelFetch(iChannel0, point, 0).rgb;
}
AF3 CasLoad(ASU2 p)
{
return imageLoad(p).rgb;
}
void CasInput(inout AF1 r,inout AF1 g,inout AF1 b) {}
#include "ffx_cas.h"
void main()
{
uvec2 point = uvec2(iFragCoord * vec2(uInRes[0].xy));
vec4 color;
vec2 inputResolution = vec2(uInRes[0]);
vec2 outputResolution = vec2(uOutRes);
uvec4 const0;
uvec4 const1;
CasSetup(const0, const1, uSharpness,
inputResolution.x, inputResolution.y,
outputResolution.x, outputResolution.y);
CasFilter(
fragColor.r, fragColor.g, fragColor.b,
point,
const0, const1,
true);
}