¿Por qué el mapeo de sombras es el estándar?

41

Aunque soy un programador de profesión, apenas he tocado el desarrollo del juego. He tenido esta pregunta durante algún tiempo, y ahora que estoy investigando el desarrollo del juego, pensé que sería un buen momento para preguntar.

¿Por qué el mapeo de sombras parece ser la forma exclusiva en que los juegos usan para crear sombras? Para ser franco, se ve terrible. Incluso los juegos modernos con configuraciones de sombra maximizadas tienen sombras irregulares en bloque que distraen mucho.

Doom 3, fabricado hace 11 años, utilizó volúmenes de sombra que se veían mucho mejor que cualquier implementación de mapa de sombras que haya visto, que incluye juegos AAA lanzados la misma semana que se publica esta pregunta. Las modificaciones de terceros para Doom 3 incluso suavizaron los bordes de las sombras, haciéndolos aún más visualmente impresionantes.

¿Hay algún tipo de problemas técnicos o limitaciones con la implementación de cosas como los volúmenes sombra? ¿Los mapas de sombras son tan fáciles de implementar que los desarrolladores ni siquiera consideran otra cosa?

La única información que he podido encontrar sobre el tema es que los polígonos que componen los volúmenes pueden ser bastante grandes y ser más exigentes. Quizás los volúmenes sombra tienen requisitos de sistema mucho más altos, pero si ese es el caso, ¿cómo se salieron con la suya en 2004?

Esta pregunta no es específica para el mapeo de sombras versus los volúmenes de sombra, simplemente son los únicos 2 que he visto utilizados en productos completos y simplemente no he podido encontrar mucha información sobre otras técnicas.

gnoblin
fuente
3
Solo una nota: Doom 3 era extremadamente intensivo en rendimiento para su día, y todavía está entrecortado incluso en algunos sistemas modernos (y no estoy hablando de GPU integradas, a pesar de que realmente no sería inapropiado aquí; seguro, es muy probable debido a su antigüedad, pero ...). Y lo he visto correr en muchas computadoras donde las sombras y la iluminación simplemente no funcionaban . Obviamente, hay muchas complejidades para obtener sombras en un juego, y Doom 3 es un buen ejemplo de lo difícil que son los gráficos realistas en una gran cantidad de configuraciones de computadora.
Luaan
1
Doom 3 estaba años adelantado a su tiempo cuando comenzó el desarrollo (al menos dada la opción de API de gráficos). Tenía varios backends para manejar generaciones de hardware pre-Shader Model 2.0 y eso significaba que aproximadamente 1/4 del motor es apenas portátil (es anterior incluso a GLSL) y los 3/4 restantes son codepaths para antiguas extensiones de hardware NV y ATI que eran irrelevantes para cuando se lanzó el juego. Su elección de volúmenes de sombra de plantilla fue quizás el menor de sus problemas.
Andon M. Coleman

Respuestas:

48

El mapeo de sombras y las sombras de stencil (volúmenes de sombras) son definitivamente los dos grandes, como usted ha mencionado, así que me limitaré a comparar los dos. Y como ha señalado las deficiencias más obvias del mapeo de sombras y las ventajas de las sombras de plantilla, haré lo contrario.

Deficiencias de sombra de plantilla

  1. Las sombras coinciden con la forma de la malla de fundición. Esto es muy limitante y es probablemente la razón técnica más importante para no usar sombras de galería de símbolos . Las hojas de los árboles, arbustos, alambradas, rasgaduras en la tela y otros elementos comunes del juego de sombras utilizan transparencia alfa para definir la forma del objeto. Pero dado que las sombras de la plantilla coinciden con la malla y no estrictamente con las partes visibles de la textura en la malla, no se pueden usar para tales objetos. Por ejemplo, un grupo de hojas en un árbol generalmente será una textura de un grupo de hojas en un quad. Las sombras de plantilla solo podrían mostrar la sombra del quad en sí (y tendrá problemas con eso ya que un quad no es una malla cerrada, pero este es un detalle menor que omitiré para esta respuesta, ya que es generalmente capaz de ser trabajado).
  2. No se pueden hacer sombras suaves precisas. Has señalado que Doom 3 ha sido modificado para permitir sombras suaves. Esta versión aquí , al menos, usa mapeo de sombras para sombras suaves. También he visto técnicas de espacio de pantalla para suavizar sombras duras, pero son propensas a todo tipo de problemas.
  3. No se pueden hacer sombras en objetos transparentes. Hay soluciones alternativas para esto: representar sombras para objetos transparentes en pasadas separadas y componerlas después. Pero además de soluciones difíciles, la naturaleza de las sombras de la plantilla es tal que cada píxel en la pantalla es ya sea en la sombra o no. Esta es también la razón de que no haya sombras suaves como se mencionó anteriormente.
  4. La implementación generalmente preferida y más robusta de las sombras de la plantilla, a menudo llamada "Reverso de Carmack", está patentada, como señaló Angew en los comentarios. (No patentado por Carmack; tuvo que solucionarlo para la versión de código abierto de Doom 3)

A favor del mapeo de sombras

Además de no tener las limitaciones que enumeré específicamente para las sombras de plantilla, hay algunas ventajas adicionales para el mapeo de sombras:

  1. Escalabilidad. Si bien el mapeo de sombras no es barato ni perfecto ( ed: pero las sombras de plantilla tampoco son baratas ), es relativamente fácil cambiar la fidelidad por el rendimiento cambiando la resolución de los mapas de sombras o cambiando el filtrado de las sombras. Esto hace que sea relativamente fácil ajustar la calidad / rendimiento de la sombra para diferentes sistemas. Como has señalado, esto a menudo no es perfecto, pero mucho de esto dependerá de la percepción del jugador y la resolución a la que estén jugando (una mayor resolución de pantalla hará que sea más fácil ver el bloqueo de las sombras cartografía). Algunos juegos AAA (como Fracture ) hacen un trabajo increíble con el mapeo de sombras simplemente eligiendo los filtros correctos y ajustando las perillas correctas, mientras que muchos simplemente lo golpean y dicen "lo suficientemente bueno".
  2. Cookies (sombras texturizadas): agregue la textura de un reflector o un vitral, y puede emular todo tipo de fuentes de luz del mundo real. Por cierto, esto también se puede hacer con las sombras de la plantilla, pero implica casi toda la configuración del mapeo de sombras de todos modos (las mismas matrices de proyección utilizadas para proyectar la textura de la luz en los objetos son las que se usan para el mapeo de sombras).
  3. Sombras transparentes: la mayoría de los juegos no intentan mucho con esto, pero las sombras transparentes son posibles con el mapeo de sombras. No solo me refiero a los recortes alfa como los árboles y las cercas como mencioné antes, sino a las sombras parcialmente transparentes, como el humo y el polvo.

Ninguna de esas listas es exhaustiva.

Por lo tanto, si bien sus observaciones sobre el mapeo de sombras y las sombras de galería de símbolos son correctas, las deficiencias de las sombras de galería de símbolos son un obstáculo para muchos efectos deseables, y el mapeo de sombras tiene algunas ventajas propias.

Jibb Smart
fuente
1
Ahhh, no pude considerar la mayoría de estas cosas y las texturas transparentes como las hojas es un problema bastante importante. ¡Gracias por la respuesta!
gnoblin
1
No hay problema :) ¡Algunos de estos son fáciles de perder!
Jibb Smart
8
Diría que un problema adicional con los volúmenes de sombra es que al paso de profundidad no le gusta que la cámara esté dentro de la sombra, y la falla de profundidad está patentada.
Vuelva a instalar Monica
Buen punto, Angew. Agregué eso a las razones para no usar sombras de galería de símbolos, y aclaré la razón principal para no usar las sombras de galería de símbolos como la " razón técnica más importante " para no usarlas, ya que el problema de la patente podría ser un obstáculo por sí solo.
Jibb Smart