¿Por qué algunos juegos usan algún patrón de oscilación en lugar del alfa tradicional para la transparencia?


24

Recientemente, he visto algunos juegos en 3D (por ejemplo:) GTA IVpara usar algún tipo de tramado ordenado para simular transparencia / alfa.

Los polígonos no son transparentes como de costumbre, sino que generan una textura difuminada que cambia gradualmente de izquierda a derecha para simular transparencia:

ingrese la descripción de la imagen aquí

El efecto no es desagradable, sino más bien sorprendente al principio (frente a la combinación alfa tradicional)

Excepto por el efecto estético visual que produce, ¿hay alguna razón para que algunos juegos hagan esto (mejor rendimiento, ahorro de ancho de banda o cualquier otra cosa en la que no piense)?

He buscado en la web pero no puedo encontrar nada sobre esta técnica.


Probablemente solo vino junto con el estilo pixel art.
MichaelHouse

@ Byte56 Pixel art style? ¿GTA IV? ¿Eh?
Nathan Reed

@NathanReed Heh, no en GTA IV. OP menciona haberlo visto recientemente en los juegos.
MichaelHouse

1
Encuentro la técnica más agradable que la mezcla alfa cuando se desvanecen los objetos 3D que se acercan demasiado al plano cercano.
Andreas

Respuestas:


27

Este es un enfoque bastante común para la transparencia en los juegos que usan sombreado diferido. La transparencia adecuada no funciona en absoluto con el sombreado diferido, ya que solo los datos de una superficie (profundidad, vector normal, color, etc.) se pueden almacenar en cada píxel, y la transparencia adecuada implica que se superpongan varias superficies en un píxel, cada una de las cuales requiere independencia iluminación.

Hay algunas maneras en que los motores de juego pueden lidiar con esto:

  • Use sombreado hacia adelante (posiblemente con un modelo de iluminación reducida) para superficies transparentes y sombreado diferido para las superficies opacas. Las superficies transparentes deben dibujarse en una pasada separada con clasificación de atrás hacia adelante.
  • Utilice el tramado, más comúnmente conocido como punteado o transparencia de la puerta de la pantalla, que funciona con sombreado diferido ya que proporciona solo una superficie por píxel. Esto funciona particularmente bien para las transiciones LOD, ya que generalmente terminan en una cantidad fija de tiempo, lo que limita el tiempo que el punteado es visible. No funciona muy bien para, por ejemplo, ventanas de vidrio en un edificio.
  • También es posible usar punteado, pero luego aplicar un desenfoque posterior al proceso que recombina los píxeles punteados, dando una aproximación de la transparencia adecuada. Volition hace esto en Saints Row the Third (y quizás también en algunos de sus otros juegos), bajo el nombre de " iluminación inferida ". Esto puede verse bastante bien, pero el desenfoque posterior al proceso es costoso.
  • Y, por supuesto, existen todos los métodos de transparencia independientes del orden , aunque no conozco ningún juego que los use. Son solo para demostraciones tecnológicas hasta ahora.

También se puede usar una combinación de estos enfoques, por ejemplo, sombreado hacia adelante para ventanas de vidrio y punteado para transiciones LOD.

También vale la pena señalar que algunos juegos usan punteado para sombras suaves. Esta es una compensación de rendimiento; Las sombras más bonitas requieren más muestras de textura en el sombreador de píxeles, lo que lleva más tiempo, pero puede obtener resultados que se vean bien usando menos muestras y compensando sus posiciones al azar. El desplazamiento aleatorio produce el efecto punteado.


No sabía sobre la técnica de sombreado diferido (explicado aquí: en.wikipedia.org/wiki/Deferred_shading ). También hablan sobre posibles problemas alfa. Tiene sentido ahora. Gracias por la respuesta
tigrou

0

Es una simple compensación de rendimiento. La combinación alfa requiere la lectura del búfer de color actual, mientras que este tipo de tramado es de solo escritura (o solo de descarte, por supuesto).

Es posible mezclar esta técnica con muestreo múltiple, que luego se denomina alfa para cobertura .


¿De qué tipo de "compensación de rendimiento" estás hablando? Early-Z se apaga si usa un descarte en su sombreador. La mezcla se realiza en el hardware y es rápida.
Tara

En realidad, acabo de probarlo en mi motor en una escena adecuada con una alta resolución: habilitar o deshabilitar la mezcla para TODA la geometría no produjo ninguna diferencia de rendimiento. La respuesta de Nathan Reed es correcta, ya que el dithering generalmente se usa en renderizado diferido.
Tara
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.