Logo de Torre de Babel
Portada Libros Artículos Perfil Scholar

Tipos de shaders (II) - Procesadores de fragmentos

Se denominan fragmentos las porciones de la escena, ya en coordenadas 2D, justo antes de aplicarles texturas, color y otros atributos que darán como resultado el píxel final. También se les llama habitualmente pre-píxeles. Los términos fragment shader y pixel shader hacen referencia al mismo elemento: el programa encargado de procesar esos pre-píxeles para generar el píxel que aparecerá en pantalla.

A diferencia de los vertex shaders, no existe una correspondencia uno a uno entre los fragmentos que forman la escena ya en 2D y los píxeles que finalmente conformarán la imagen a mostrar. Esto es debido a que al proyectar de 3D a 2D puede darse el caso de que varios fragmentos correspondan a un mismo píxel, posiblemente con diferentes profundidades en el z-buffer. También podría darse el caso opuesto: que un mismo fragmento deba cubrir más de un píxel físico. Por ello un fragment shader puede generar, al procesar el fragmento recibido, cualquiera de los tres resultados siguientes:

  • No generar ninguna salida, eliminando así el fragmento origen de la imagen final.
  • Producir un píxel a partir del fragmento.
  • Generar más de un píxel para representar al fragmento.

En cuanto a las operaciones que un fragment shader tiene encomendadas, todas ellas van enfocadas a decidir cuál será el color que se asigne al píxel o píxeles generados a partir del fragmento. Para ello se basará en las coordenadas del fragmento, establecidas en etapas previas y que no puede modificar, y la información disponible sobre texturas e iluminación.

Los fragment shaders no aparecieron hasta la versión 2.0 de la especificación Shader Model, razón por lo que en la tabla siguiente no existe una versión 1.0.

Característica PS 2.0 PS 3.0 PS 4.0
Nº máx. instr. 64 512 65536
Registros12 32 4096
Nº máx. instr. textura 32Ilimitado Ilimitado
Control flujo No Limitado
Contador de bucleNo
Nº de texturas 8 Ilimitado Ilimitado
Operadores de bits y enteros nativosNo No
Registros de posiciónNo
Instrucciones de gradienteNo
Registro iluminación a dos carasNo

Publicado el 14/12/2009

Histórico
Curso de shaders

Torre de Babel - Francisco Charte Ojeda - Desde 1997 en la Web