En el curso de shaders del Gamelab no pueden explicarlo todo, está claro. Hay mucha materia que cubrir y solo se dan unas pinceladas básicas para tener un conocimiento general. Sin embargo, me parece que la descripción de fragment es algo bastante importante y que explica que, a pesar de que pixel shader sea un término bastante general, Jacobo use de vez en cuando fragment shader, que es lo correcto.

Un fragment es un punto de la escena final. De hecho, habitualmente coincidirá con un pixel. ¿Cuando es algo distinto? cuando utilizamos antialiasing, por ejemplo. El antialiasing se basa en dibujar la escena con más fragments que píxeles, para conseguir que al “emborronar” los bordes no se pierda detalle. Es decir, se renderiza la escena el doble de grande (por ejemplo) y al reducirla al tamaño real de la pantalla los bordes aparecen suavizados, pero no se ha perdido calidad por ello.

Ahora muchos os explicaréis por qué el antialiasing suele afectar tanto al framerate, porque obliga a renderizar escenas enormes. Lo curioso es que a mayor resolución, mayor es la escena que tenemos que renderizar con antialiasing. Sin embargo, a mayor resolución, menos necesitaremos antialiasing, porque al tener más píxeles en la imágen habrá menos diente de sierra. El antialiasing es más conveniente utilizarlo cuando vamos a usar bajas resoluciones, porque mejora mucho el aspecto visual y el impacto es menor que con altas resoluciones.

En esos casos, hay muchos más fragments que píxeles, así que se ve bien la diferencia entre ámbos. Hay que tener en cuenta que los fragment shaders se ejecutan por fragment (por eso lo de pixel shader engaña), por lo que en escenas con antialiasing con muchas muestras el rendimiento cae en picado si usamos shaders complejos.