Sombreador de geometría
# Sombreador de geometría

Un sombreador de geometría No se aplica (del inglés geometry shader, abreviado GS) es un modelo de programación de sombreado introducido con el Shader Model 4.0 de DirectX 10. Las primeras tarjetas gráficas en soportar los sombreadores de geometría fueron las GPU NVIDIA GeForce 8800. Esta característica está implementada en Direct 3D 10 y OpenGL 3.2 (u OpenGL 1.1 usando la extensión EXT_geometry_shader4).

## Funcionamiento

Un sombreador de geometría puede generar nuevas primitivas gráficas, como los puntos, las líneas o los triángulos, estas primitivas creadas son enviadas al principio del pipeline gráfico.

Los programas de sombreado de geometría son ejecutados después de los sombreadores de vértices. Toman como entrada toda la primitiva, a ser posible con información adjunta. Por ejemplo, cuando se operan triángulos, los tres vértices son la entrada del sombreador de geometría. El sombreador puede emitir primitivas, que son rasterizadas y sus fragmentos al final son pasados al sombreador de fragmentos.

Algunos de los típicos usos del sombreador de geometría son, por ejemplo, la generación de un punto de sprite, teselado geométrico, extrusión del volumen de sombra y el renderizado de un solo paso a mapa cúbico.

Un ejemplo típico y muy usado, de los beneficios que aporta los sombreadores de geometría podría ser la modificación automática de la complejidad de una malla. Una serie de líneas representan los puntos de control para una curva que es pasada al sombreador de geometría y dependiendo de la complejidad requerida, el sombreador automáticamente puede generar líneas extra, cada una de las cuales permiten obtener una mejor aproximación de la curva.

Un programa de investigación dirigido por Gernot Ziegler desarrollado por Histopyramids permite obtener mejor rendimiento que los sombreadores de geometría en múltiples situaciones.

## Programación

Los sombreadores de geometría pueden ser programados en los siguientes lenguajes: Ensamblador, Cg, HLSL de Direct3D (empezando con DirectX 10) y GLSL de OpenGL.

