Tengo curiosidad acerca de cómo manejar muchas luces en una escena. Dado un mapa muy grande en un juego de rol, con mazmorras (con luces allí), etc. Sé acerca de la iluminación diferida, pero eso solo responde cómo representar muchas luces. Pero mi pregunta es más: cómo no renderizar muchas luces. Obviamente, es deseable renderizar solo las luces que afectan la escena, pero no conozco una técnica / un algoritmo para archivar esto. Nadie quiere ni es capaz de renderizar 500 puntos de luz, solo porque hay en algún lugar del mapa. Pero uno no puede simplemente tomar una línea recta desde la luz hasta el jugador y probar si hay algo en el medio. La distancia tampoco parece un buen indicador. (¿Luz del sol?)
tl; dr: ¿Cómo puedo determinar qué luces afectan la escena para representarlas solo?
Respuestas:
Incluso más simple que los volúmenes delimitadores;
Asigna un radio a cada luz. Cuando se trata de renderizar su escena, simplemente verifique si la distancia entre sus objetos de escena y cada luz es menor que el radio de la luz. Si es así, usa la luz, de lo contrario, sáltatela.
Solo una fracción más complicada, dependiendo de la importancia del rendimiento:
También puede hacer una especie de verificación de fase amplia con esto. Simplemente defina una cuadrícula espacial que almacene las manijas para sus luces en una celda de cuadrícula, luego solo realice la verificación de distancia en las luces que están en las celdas dentro del radio máximo de los objetos de su escena.
fuente
La forma más simple en que puedo pensar (seamos honestos, la única forma en que he pensado) es darle a cada luz un volumen delimitador . Si el volumen delimitador se cruza con el frustum de la vista (o un volumen delimitador del frustum de la vista), aplique la luz.
Todavía podría haber luces que se apliquen aunque no afecten ningún objeto visible, pero es simple y rápido. La disposición inteligente de su gráfico de escena podría significar que solo unas pocas verificaciones de intersección eliminan la mayoría de sus luces (al igual que lo que se hace para el sacrificio de objetos).
Algo así como el sol podría no tener un volumen delimitador (para indicar que siempre debe aplicarse).
fuente