OpenGL: рендеринг более 8 источников света, как?
Как мне реализовать более 8 источников света в OpenGL?
Я хотел бы эффективно использовать неограниченное количество источников света.
Итак, какой метод для этого предпочтителен?
2 ответа
Отложенное затенение.
В двух словах, вы визуализируете свою сцену без каких-либо огней. Вместо этого вы сохраняете нормали и мировые позиции вместе с текстурированными пикселями в нескольких буферах кадров (так называемые цели рендеринга). Вы даже можете сделать это за один проход, если используете расширение для нескольких целей рендеринга.
Как только вы подготовите свои буферы, вы начнете рендерить кучу полноэкранных четырехугольников, каждый с программой пиксельных шейдеров, которая считывает нормали и положения и вычисляет свет для одного или нескольких источников света.
Так как свет аддитивен, вы можете отображать столько полноэкранных квадратов, сколько захотите, и накапливать свет для стольких источников света, сколько захотите.
Последний шаг создает композицию между вашим светом и неосвещенным текстурированным буфером кадров.
Это более или менее современный способ сделать это. Однако получить туман и прозрачность при работе с такой системой - непростая задача.