Hice mi parte justa de la programación de juegos en 3D para mi (antiguo) empleador, y también en mis propios motores personalizados para mis propios juegos independientes.
Inicialmente, comencé con Direct3D 9 y D3DX9, que prácticamente hicieron todo por mí y no me obligaron a pensar en términos de sombreadores.
Después de eso, escribí mis primeros sombreadores Direct3D 9, pero usé principalmente un sombreador muy simple para todo lo que hice.
En la iteración más reciente de mi motor de juego, me mudé a Direct3D 11, y con eso creé muchos sombreadores. Realicé el desollado de GPU, partículas calculadas de GPU, mucha iluminación y efectos de procesamiento posterior, todo en la GPU. Cosas realmente geniales.
Hasta ahora solo he usado sombreadores de vértices y píxeles / fragmentos. Aunque todavía hay muchas cosas que aún no he hecho, creo que tengo un conocimiento sólido de lo que hacen los sombreadores de vértices y píxeles / fragmentos, y cómo todo eso encaja en toda la tubería 3D.
Al ponerme al día con los desarrollos más recientes, me he interesado mucho con las nuevas etapas de sombreado. Es decir, el sombreador de geometría, y aún más nuevos, los sombreadores de casco y dominio.
Nunca he usado estas etapas, pero por lo que sé, el sombreador de Geometría, si está habilitado, se ejecuta después del sombreador de vértices, una vez para cada vértice transformado (¿o una vez por primitivo?) Y le permite descartar vértices (¿y primitivos?) , y cree otros nuevos (que supongo que volverán al principio de la tubería).
Supongo que el uso principal del sombreador de geometría sería generar geometría mediante programación en la GPU. Un uso común sería crear quads de cartelera basados en un solo vértice, pero realmente no visualizo muchos otros escenarios comunes aparte de generar fractales y otras cosas que puede generar 100% programáticamente.
En cuanto a los sombreadores Hull y Domain, parece que están relacionados con la teselación (¿creando superficies más lisas a partir de superficies rugosas?), Y deben usarse juntas o no usarse en absoluto. El término "parche" también parece ser común aquí.
¿Alguien querría explicarme, en términos prácticos, para qué sirven estas nuevas etapas de sombreado, cómo encajan en la tubería 3D y en qué casos debería considerar usarlas?