You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			GLSL
		
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			GLSL
		
	
#version 120
 | 
						|
 | 
						|
uniform sampler2D DiffuseSampler;
 | 
						|
 | 
						|
varying vec2 texCoord;
 | 
						|
varying vec2 oneTexel;
 | 
						|
 | 
						|
uniform vec2 InSize;
 | 
						|
 | 
						|
uniform float Time;
 | 
						|
uniform vec2 Frequency;
 | 
						|
uniform vec2 WobbleAmount;
 | 
						|
 | 
						|
vec3 hue(float h)
 | 
						|
{
 | 
						|
    float r = abs(h * 6.0 - 3.0) - 1.0;
 | 
						|
    float g = 2 - abs(h * 6.0 - 2.0);
 | 
						|
    float b = 2 - abs(h * 6.0 - 4.0);
 | 
						|
    return clamp(vec3(r,g,b), 0.0, 1.0);
 | 
						|
}
 | 
						|
 | 
						|
vec3 HSVtoRGB(vec3 hsv) {
 | 
						|
    return ((hue(hsv.x) - 1.0) * hsv.y + 1.0) * hsv.z;
 | 
						|
}
 | 
						|
 | 
						|
vec3 RGBtoHSV(vec3 rgb) {
 | 
						|
    vec3 hsv = vec3(0.0);
 | 
						|
    hsv.z = max(rgb.r, max(rgb.g, rgb.b));
 | 
						|
    float min = min(rgb.r, min(rgb.g, rgb.b));
 | 
						|
    float c = hsv.z - min;
 | 
						|
 | 
						|
    if (c != 0)
 | 
						|
    {
 | 
						|
        hsv.y = c / hsv.z;
 | 
						|
        vec3 delta = (hsv.z - rgb) / c;
 | 
						|
        delta.rgb -= delta.brg;
 | 
						|
        delta.rg += vec2(2.0, 4.0);
 | 
						|
        if (rgb.r >= hsv.z) {
 | 
						|
            hsv.x = delta.b;
 | 
						|
        } else if (rgb.g >= hsv.z) {
 | 
						|
            hsv.x = delta.r;
 | 
						|
        } else {
 | 
						|
            hsv.x = delta.g;
 | 
						|
        }
 | 
						|
        hsv.x = fract(hsv.x / 6.0);
 | 
						|
    }
 | 
						|
    return hsv;
 | 
						|
}
 | 
						|
 | 
						|
void main() {
 | 
						|
    float xOffset = sin(texCoord.y * Frequency.x + Time * 3.1415926535 * 2.0) * WobbleAmount.x;
 | 
						|
    float yOffset = cos(texCoord.x * Frequency.y + Time * 3.1415926535 * 2.0) * WobbleAmount.y;
 | 
						|
    vec2 offset = vec2(xOffset, yOffset);
 | 
						|
    vec4 rgb = texture2D(DiffuseSampler, texCoord + offset);
 | 
						|
    vec3 hsv = RGBtoHSV(rgb.rgb);
 | 
						|
    hsv.x = fract(hsv.x + Time);
 | 
						|
    gl_FragColor = vec4(HSVtoRGB(hsv), rgb.a);
 | 
						|
}
 |