#version 330 core in vec2 wspTekstur; uniform sampler2D ProbnikTekstury; out vec3 kolor_out; float Jasnosc(vec4 kolor) { return (kolor.r + kolor.g + kolor.b)/3.0; } vec4 SkalaSzarosci(vec4 kolor) { float jasnosc = Jasnosc(kolor); return vec4(jasnosc, jasnosc, jasnosc, kolor.a); } const vec2 rozmiarOkna = vec2(800,600); const int zakres = 3; //parametr decydujacy o "rozmyciu" obrazu void main() { //kolor_out = texture(ProbnikTekstury, wspTekstur).rgb; //kolor_out = SkalaSzarosci(texture(ProbnikTekstury, wspTekstur)).rgb; //widok zza lodu //vec2 przesuniecie = 0.01 * vec2(sin(80.0*wspTekstur.x), cos(60.0*wspTekstur.y)); //kolor_out = texture(ProbnikTekstury, wspTekstur + przesuniecie).rgb; //zmniejszanie rozdzielczosci tekstury vec4 teksel = vec4(0); float sumaWag = 0; for(int ix = -zakres; ix <= zakres; ix++) { for(int iy = -zakres; iy <= zakres; iy++) { float dx = ix / rozmiarOkna.x; float dy = iy / rozmiarOkna.y; //float r2 = dx*dx + dy*dy; float waga = 1; //tu można wymyślną funkcję teksel += texture(ProbnikTekstury, wspTekstur + vec2(dx, dy)) * waga; sumaWag += waga; } } teksel.rgb /= sumaWag; teksel.a = 1; kolor_out = teksel.rgb; }