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

Tipos de shaders (III) - Procesadores de geometría

Es el último tipos de shader existente en la actualidad, introducido en la versión 4.0 de Shader Model. Para poder utilizarlo es necesario contar con DirectX 10, disponible a partir de Windows Vista, o bien una extensión de OpenGL: GL_EXT_geometry_shader4. El primer hardware en soportar este tipo de programas fue la nVidia 8800.

Hasta cierto punto un geometry shader es una versión potenciada de un vertex shader, al recibir como entrada vértices de la geometría que compone la escena y generar como salida también vértices. Los vertex shaders, como se apuntó en una entrada previa, están limitados en cuanto al resultado que pueden generar: siempre un vértice, tras aplicarle todas las transformaciones que desee, pero sin posibilidad de eliminar o agregar vértices. Un geometry shader, por el contrario, tiene la capacidad para generar geometría dinámicamente, produciendo un conjunto de vértices a partir de una sola entrada.

Interpuesto entre la etapa de procesamiento de vértices y el resto del pipeline de la GPU, un geometry shader recibe como entrada una primitiva, puede ser un punto, un segmento de línea o un triángulo, y puede generar entre 0 y 1024 valores. Éstos irán asociados a una de tres primitivas posibles: puntos, secuencias de líneas (linestrip) y secuencias de triángulos (trianglestrip). De esta forma un geometry shader puede ser usado para generar efectos complejos, por ejemplo una explosión, a partir de unos pocos datos de entrada, realizando todo el trabajo en la GPU en lugar de en la CPU.

Arquitectura unificada de las actuales GPU

Aunque los geometry shaders aparecen en un hardware que cuenta con la arquitectura unificada, esquematizada en la figura superior, desde una perspectiva lógica el lugar que ocuparían en el cauce gráfico sería el que puede verse en la figura inferior.

Cauce gráfico tras la introducción de los geometry shaders

Al igual que para hacer referencia a pixel shaders y vertex shaders se utilizan las abreviaciones PS y VS, respectivamente, los geometry shaders suelen aparecer en la literatura como GS. Estos serán los acrónimos que se empleen en las entradas siguientes, correspondientes a una breve serie titulada Lenguajes de programación de shaders, en los que se tratará sobre Cg, HLSL y OGLSL, entre otros.


Publicado el 15/12/2009

Curso de shaders

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