Come determinare quale livello di mipmap è stato utilizzato durante il campionamento di una trama in uno shader di frammenti GLSL?Come accedere al livello mipmap automatico nella trama dello shader del frammento GLSL?
ho capito che posso provare manualmente un particolare livello mipmap di una texture con il metodo textureLod(...)
:
uniform sampler2D myTexture;
void main()
{
float mipmapLevel = 1;
vec2 textureCoord = vec2(0.5, 0.5);
gl_FragColor = textureLod(myTexture, textureCoord, mipmapLevel);
}
Oppure potrei permettere il livello di mipmap da selezionare automaticamente utilizzando texture(...)
come
uniform sampler2D myTexture;
void main()
{
vec2 textureCoord = vec2(0.5, 0.5);
gl_FragColor = texture(myTexture, textureCoord);
}
Preferisco quest'ultimo, perché mi fido del giudizio del guidatore sul livello appropriato di mipmap più di quanto non faccia mio.
Ma mi piacerebbe sapere quale livello di mipmap è stato utilizzato nel processo di campionamento automatico, per aiutarmi a campionare razionalmente i pixel vicini. C'è un modo in GLSL per accedere alle informazioni su quale livello di mipmap è stato utilizzato per un campione di texture automatico?
Quale versione di GLSL stai prendendo di mira? GLSL 4.00 supporta ['textureQueryLod (...)'] (https://www.opengl.org/sdk/docs/man/html/textureQueryLod.xhtml), che fa esattamente quello che vuoi. –