#version 330 core in vec2 wspTekstur; uniform sampler2D ProbnikTekstury; out vec3 kolor_out; const vec2 rozmiarOkna = vec2(800,600); uniform float Czas; uniform vec2 srodekFali = rozmiarOkna / 2; uniform float dlugoscFali = 50; uniform float wielkoscZnieksztalcenia = 0.05; //wykladnik void main() { //kolor_out = texture(ProbnikTekstury, wspTekstur + vec2(0,0.01*sin(100*wspTekstur.x + 10*Czas))).rgb; vec2 polozenie = wspTekstur * rozmiarOkna - srodekFali; //wspolrzedne w pikselach wzgledem srodka fali float odleglosc = length(polozenie); //odleglosc od srodka fali w pikselach float przeskalowanyCzas = 50 * Czas; float promienFali = odleglosc - przeskalowanyCzas; if(promienFali <= dlugoscFali && promienFali >= - dlugoscFali) { //kolor_out = vec3(1,0,0); //float znieksztalcenie = 1; float znieksztalcenie = 1 - pow(abs(promienFali * dlugoscFali), wielkoscZnieksztalcenia); vec2 zmienionePolozenie = polozenie + normalize(polozenie) * promienFali * znieksztalcenie; kolor_out = texture(ProbnikTekstury, (zmienionePolozenie + srodekFali)/rozmiarOkna).rgb; } //else kolor_out = vec3(1,1,1); else kolor_out = texture(ProbnikTekstury, wspTekstur).rgb; }