2011-04-10 10 views
7

Estoy buscando recursos que me puedan proporcionar una mejor comprensión de qué tipo de cosas se usan los sombreadores en los juegos, qué pueden hacer, y tal vez lo más importante, qué ellos no pueden. Entiendo cómo funciona la línea de gráficos y todo eso, y he creado sombreadores muy básicos en GLSL (principalmente para reemplazar la funcionalidad de la línea de función fija), pero aún no entiendo completamente qué cosas solo son posibles con sombreadores personalizados. , que las cosas se pueden hacer de manera más eficiente, etc. He podido encontrar algunos ejemplos de ciertas técnicas, sobre todo la iluminación, pero estoy buscando una descripción general de su uso.Descripción general/presentación de técnicas/usos de sombreado para juegos

También se aprecian los enlaces y las explicaciones de ciertas técnicas interesantes, a diferencia de una descripción general (pero menos que una visión general;)), preferiblemente en GLSL o pseudocódigo.

+0

Esta pregunta podría ser más adecuada para http://gamedev.stackexchange.com/ – Twelve47

+0

Creo que esta es una pregunta muy válida. He estado pensando en esto también, que es la razón por la que he encontrado tu pregunta aquí. También estoy un poco decepcionado por la promesa de tener una cartera totalmente programable. No poder probar fragmentos cercanos fue una sorpresa. Pero creo que hay muchas posibilidades cuando se trata de combinar texturas (una pesadilla en una tubería fija). Creo que GLSL no es una receta instantánea para efectos geniales (que algunos hacen que suene), pero definitivamente tendrá sus aplicaciones. – zmippie

Respuesta

4

Bien, considerando que DirectX y OpenGL se han movido hacia un sistema solo de sombreador (es decir, sin función fija), la respuesta a su pregunta "qué efectos son posibles solo con sombreadores" podría ser "todo".

Algunas técnicas que creo que no eran posibles/factible sin shaders programables (o mediante el uso de muy específico de recuadro negro APIs), sin embargo, son:

iluminación
  1. Per-pixel
  2. mapeo Shadow.
  3. Desgaste de la GPU (es decir, desvanecimiento de la paleta de la matriz) para mallas animadas.
  4. Cualquiera de los varios efectos posteriores al proceso que son comunes en la actualidad: bloom, SSAO, profundidad de campo, etc.
  5. Sombreado diferido.
  6. La implementación de "otros" modelos arbitrarios/iluminación como Oren-Nayar, Cook-Torrance, Lamer-iluminación, etc.

y la lista puede seguir, y estoy seguro que algunas personas no estarán de acuerdo con mi evaluación de que esto no podría lograrse con la funcionalidad de función fija (a través de hacks o varias extensiones de funciones fijas).

Lo que se reduce a es, antes de sombreadores programables, un efecto dado tuvo que ser implementado en el hardware/controlador por el proveedor y debe ser algo que podría expresarse razonablemente a través de la API. Ahora puede ejecutar efectivamente cualquier código definido por el usuario que desee (dentro de las limitaciones de las diferentes etapas de sombreado y otras limitaciones del hardware) para que tenga la flexibilidad de personalizar en gran medida su canalización de representación e inventar nuevas técnicas como mejor le parezca.

Eche un vistazo a los primeros dos libros GPU Gems (que se pueden leer de forma gratuita en el sitio web de Nvidia) para conocer los tipos de técnicas que aparecían una vez que el hardware programable estaba disponible.

+1

Aunque estoy de acuerdo con la respuesta, aquí hay un pequeño comentario: el mapeo de sombras es realmente posible con GL fijo/función (no sé sobre D3D) y también hay una extensión para desvanecimiento de paleta de matriz (y estoy seguro que D3D lo tiene, también). Pero seguramente estos no son tan flexibles como un sombreador (y la extensión de skinning no es compatible ampliamente). –

Cuestiones relacionadas