- const vec2 TextureSize=vec2(512.0,512.0);
- void main(void)
- {
- float MipMapLevel=-1.0-log2(min(length(dFdx(gl_TexCoord[0].st)),length(dFdy(gl_TexCoord[0].st))));
- vec4 Color=vec4(TextureSize[0],TextureSize[1],MipMapLevel/5.0,0.0);
- vec4 TexCoord=gl_TexCoord[0];
- //Um den Texturblock zu erhalten, wird die Texturkoordinate mit der
- //Texturgröße multipliziert, dann durch die Blockgröße dividiert und
- //der Nachkommateil entfernt.
- //BlockX=floor(Breite*U/32.0);
- //BlockY=floor(Höhe*V/32.0);
- //Multipliziere Breite*U, Höhe*V.
- //TexturID und MipMapLevel bleiben erhalten, da diese mit 1.0
- //multipliziert werden.
- TexCoord[2]=1.0;
- TexCoord[3]=1.0;
- Color*=TexCoord;
- //Multipliziere 0,03125 mit Höhe und Breite(entspricht Höhe/32 und Breite/32).
- //Multiplikation ist schneller als Division und daher die Umwandlung.
- vec4 Scale=vec4(0.03125,0.03125,1.0,1.0);
- Color*=Scale;
- //Nachkommastellen entfernen und damit die Position, des entsprechenden
- //Texturblockes erhalten.
- Color[0]=floor(Color[0])/(TextureSize[0]*0.03125);
- Color[1]=floor(Color[1])/(TextureSize[0]*0.03125);
- gl_FragColor=Color;
- }