Entiendo las principales diferencias entre texelFetch
y texture
, pero tengo algunas preguntas sobre los detalles:
- ¿
texelFetch
Implica una penalización de rendimiento? ¿Como no usar un caché o algo así? - ¿Son
texelFetch
etexture
intercambiables cuando se usanGL_NEAREST
?
opengl
textures
performance
Martin Perry
fuente
fuente
Respuestas:
texelFetch
es muy diferente detexture
.texture
es su función habitual de acceso a la textura que maneja el filtrado y las[0,1]
coordenadas de textura normalizadas ( ).texelFetch
accede directamente a un texel en la textura (sin filtrado) usando coordenadas no normalizadas (p. ej.,(64,64)
en el texel del medio-ish en una textura de 128x128 vs(.5,.5)
en coordenadas normalizadas).fuente
texture
o necesita que el hardware no lo haga y, por lo tanto, debe usartexelFetch
)texelFetch
es más rápido y el filtrado del vecino más cercano es suficiente, no puede cambiar el contexto a filtrado NN por cualquier razón, sería razonable preferirlotexture
.texelFetch
ytexture
funciona de manera diferente en formas fundamentales. Vea también las entradas: coordenadas de textura vs coordenadas normalizadas. Sirven para diferentes propósitos. El uno no es solo una optimización del otro.Como no hay una respuesta aceptada, agrego información, solo quería agregar cosas que Sean no dijo en su respuesta.
TexelFetch trata la textura como una imagen, para que pueda acceder exactamente al contenido de píxeles. Usualmente haces eso cuando necesitas exactamente ese contenido, lo cual es en pocas pero útiles ocasiones:
Tex2D trata la textura como una textura. No desea el contenido exacto de un píxel, pero desea el resultado más realista. Una lectura de textura estándar es una operación muy compleja e implica la lectura de datos interpolados de uno o más niveles de mipmap y luego se interpola nuevamente. Todas esas operaciones costosas son para evitar artefactos visuales.
GL_NEAREST no funcionará igual porque en los polígonos más alejados está leyendo datos en el nivel de mapa MIP más pequeño, que no son los mismos datos exactos que leería de una búsqueda de texel.
Hay un caso en el que Tex2D (casi) funciona igual que TexelFetch:
fuente