2010-01-03 11 views

Respuesta

14

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.

7

OpenGL lights es un sistema simplista, que hasta donde yo sé, ya está en la lista obsoleta. Debe manejar las luces usted mismo escribiendo un shader. Eche un vistazo here.

+1

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: / –

Cuestiones relacionadas