¿Cómo debo implementar más de 8 luces en OpenGL?OpenGL: representación de más de 8 luces, ¿cómo?
Me gustaría generar cantidades ilimitadas de luces de manera eficiente.
Entonces, ¿cuál es el método preferido para hacer esto?
¿Cómo debo implementar más de 8 luces en OpenGL?OpenGL: representación de más de 8 luces, ¿cómo?
Me gustaría generar cantidades ilimitadas de luces de manera eficiente.
Entonces, ¿cuál es el método preferido para hacer esto?
Sombreado diferido.
En resumen, renderiza su escena sin luces. En su lugar, almacena las normales y las posiciones mundiales junto con los píxeles texturizados en múltiples búferes de cuadro (llamados objetivos de renderizado). Incluso puede hacer esto en una sola pasada si usa una extensión de renderizado múltiple.
Una vez que tenga preparados sus búfers, comenzará a renderizar un conjunto de cuádruples de pantalla completa, cada uno con un programa de sombreado de píxeles que lee las normales y posiciones y calcula la luz para una o varias fuentes de luz.
Dado que la luz es aditiva, puede procesar la cantidad de cuádruples de pantalla completa que desee y acumular la luz para la cantidad de fuentes de luz que desee.
Un último paso hace una composición entre la luz y el frame-buffer texturizado no iluminado.
Esa es más o menos la forma más avanzada de hacerlo. Sin embargo, conseguir niebla y transparencia trabajando con un sistema de este tipo es un desafío.
el tutorial dice "por lo tanto, el mejor enfoque es compilar diferentes sombreadores para diferentes números de luces". umm ... eso no es realmente lo que quiero hacer, ya que puedo moverme en el mundo y a veces puede haber 100 luces renderizadas, a veces 10 luces ... No me gustaría escribir hasta 2000 sombreadores por cada combinación posible de visible luces. O entendí algo terriblemente incorrecto: / –