All Downloads are FREE. Search and download functionalities are using the official Maven repository.

shaders.Distortion.fs Maven / Gradle / Ivy

The newest version!
#version 330

uniform vec2 EyeToSourceUVScale = vec2(1.0);
uniform vec2 EyeToSourceUVOffset = vec2(0.0);

uniform sampler2D Texture0;
uniform bool samples = false;

in vec4 oColor;
in vec2 oTanEyeAngle;
in vec2 oTexCoord0;
out vec4 FragColor;
vec2 delta = fwidth(oTanEyeAngle);

vec2 tanEyeAngleToTexture(vec2 v) {
   vec2 result =  v * EyeToSourceUVScale + EyeToSourceUVOffset;
   result.y = 1.0 - result.y;
   return result; 
}

void main()
{
    vec3 color = textureLod(Texture0, oTexCoord0, 0.0).rgb;
    float count = 1.0;
    if (samples && any(greaterThan(delta, vec2(0.005)))) {
        vec2 texSample1 = tanEyeAngleToTexture(oTanEyeAngle * 0.998);
        color += textureLod(Texture0, texSample1, 0.0).rgb;
        vec2 texSample2 = tanEyeAngleToTexture(oTanEyeAngle * 1.002); 
        color += textureLod(Texture0, texSample2, 0.0).rgb;
        count = count + 2.0;
    } 
    if (samples && any(greaterThan(delta, vec2(0.010)))) {
        vec2 texSample1 = oTanEyeAngle;
        texSample1.x *= 0.996; 
        texSample1.y *= 1.004; 
        texSample1 = tanEyeAngleToTexture(texSample1);
        color += textureLod(Texture0, texSample1, 0.0).rgb;
        vec2 texSample2 = oTanEyeAngle; 
        texSample2.x *= 1.004; 
        texSample2.y *= 0.996; 
        texSample2 = tanEyeAngleToTexture(texSample2);
        color += textureLod(Texture0, texSample2, 0.0).rgb;
        count = count + 2.0;
    } 
    if (samples && any(greaterThan(delta, vec2(0.015)))) {
        vec2 texSample1 = oTanEyeAngle;
        texSample1.x *= 0.994; 
        texSample1.y *= 1.006; 
        texSample1 = tanEyeAngleToTexture(texSample1);
        color += textureLod(Texture0, texSample1, 0.0).rgb;
        vec2 texSample2 = oTanEyeAngle; 
        texSample2.x *= 1.006; 
        texSample2.y *= 0.994; 
        texSample2 = tanEyeAngleToTexture(texSample2);
        color += textureLod(Texture0, texSample2, 0.0).rgb;
        count = count + 2.0;
    }
    FragColor = vec4(color / count, 1);
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy