Pregunta

Como lo entiendo, se realiza la asignación de sombras haciendo que la escena desde la perspectiva de la luz para crear un mapa de profundidad. Luego, vuelva a hacer la escena del POV de la cámara, y para cada punto (fragmento en GLSL) en la escena, calcula la distancia desde allí a la fuente de luz; Si coincide con lo que tiene en su mapa de sombras, entonces está a la luz, de lo contrario está en la sombra.

Estaba leyendo a través de este tutorial para tener una idea de cómo hacer la mapas de sombra con Un punto / luz omnidireccional.

bajo la sección 12.2.2 DICE:

Utilizamos un solo mapa de sombra para todas las fuentes de luz

y luego menos de 12.3.6 dice:

1) Calcule la distancia cuadrada del píxel actual a la fuente de luz.
...
4) Compare el valor de distancia calculado con el valor de MAP de sombra para determinar si estamos en la sombra.

que es aproximadamente lo que dije anteriormente.

¿Qué no entiendo es si hemos horneado todas nuestras luces en un mapa de sombras, entonces con qué luz necesitamos comparar la distancia? La distancia horneada en el mapa no debe corresponder con nada, porque es una mezcla de todas las luces, ¿no es así?

Estoy seguro de que me estoy perdiendo algo, pero con suerte, alguien me puede explicar esto.


Además, si estamos usando un solo mapa de sombra, ¿cómo lo mezclamos para todas las fuentes de luz?

Para una sola fuente de luz, el mapa de la sombra solo almacena la distancia del objeto más cercano a la luz (es decir, un mapa de profundidad), pero para múltiples fuentes de luz, ¿qué contendría?

¿Fue útil?

Solución

Usted ha reducido la oración corta prematuramente:

Utilizamos un solo mapa de sombra para todas las fuentes de luz, creando una imagen Con representación de multipass y realizando un paso para cada luz. fuente.

Entonces, el mapa de sombra contiene los datos de una sola fuente de luz a la vez, pero usan solo un mapa porque solo hacen una luz a la vez.

Creo que esto fluye en su segunda pregunta: la luz es aditiva, por lo que combina los resultados de múltiples luces simplemente agregándolas juntas. En el caso de GEMS GPU, se suman directamente en el búfer de marco, sin duda debido al número relativamente limitado de muestreadores de textura de almacenamiento disponibles en las GPU en ese momento. Hoy en día, probablemente quiera hacer una combinación de combinación en el búfer de marco y directamente en el sombreador de fragmentos.

También se aplica generalmente la prueba de "Pixel se enciende si es menor o igual a la distancia en el búfer de la sombra más un poco" en lugar de igual a igual, debido a la acumulación de errores de redondeo de punto flotante.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top