- Geometry shader
-
Un geometry shader (abreviado GS) es un modelo de programación de shader introducido con Shader Model 4.0 de DirectX 10. Las primeras tarjetas gráficas en soportar Geometry Shaders fueron las GPUs NVIDIA GeForce 8800. Esta característica es soportada en Direct 3D 10 y OpenGL 3.2 (o OpenGL 1.1 usando la extensión EXT_geometry_shader4).
Contenido
Funcionamiento
Un geometry shader 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 geometry shader son ejecutados después de los vertex shaders. 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 geometry shader. El shader puede emitir primitivas, que son rasterizadas y sus fragmentos al final son pasados al fragment shader.
Algunos de los típicos usos del geometry shader son, por ejemplo, la generación de un punto de sprite,[1] teselado geométrico, extrusión del volumen de sombra y el renderizado de un solo paso a cube map.
Un ejemplo típico y muy usado, de los beneficios que aporta los geometry shaders 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 geometry shader y dependiendo de la complejidad requerida, el shader 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,[2] desarrollado por Histopyramids permite obtener mejor rendimiento que los geometry shaders en multiples situaciones.[3]
Programación
Los Geometry shaders pueden ser programados en los siguientes lenguajes: Ensamblador, Cg, HLSL de Direct3D (empezando con DirectX 10) y GLSL de OpenGL.
Véase también
- Vertex shader
- Pixel shader
- Graphics pipeline
- Direct3D
- OpenGL
Referencias
Categoría:- Gráficos de computador en 3D
Wikimedia foundation. 2010.