- float sum = 0.0;
- float mult;
- for (int j=0;j<filtersize;j++)
- {
- for (int i=0;i<filtersize;i++)
- {
- newcoord=vec2(floor(coord[0])-float(filtersize)*0.5+float(i),floor(coord[1])-float(filtersize)*0.5+float(j)); //das berechnet die Position des nächsten Texels
- newvec=(newcoord[0]/MapSize*2.0-1.0)*normalize(cross(look,up))+(newcoord[1]/MapSize*2.0-1.0)*up+look; //das auch
- depth = textureCube(shadow, newvec).x; //Tiefe auslesen
- rd=b/(depth-a);
- mult=1.0;
- //hier ist die Gewichtung
- if (j==0){mult*=1.0-y;}
- if (j==filtersize-1){mult*=y;}
- if (i==0){mult*=1.0-x;}
- if (i==filtersize-1){mult*=x;}
- if ((dis-epsilon*dis)<=rd){sum+=mult;} //bestimmt letztendlich ob der Texel Schatten verursacht oder nicht
- }
- }
- return sum/float((filtersize-1)*(filtersize-1));