Кажется, в данный момент я нахожусь в затруднительном положении, когда пишу часть рендеринга моего игрового движка. Мой первоначальный план состоял в том, чтобы реализовать, как минимум, динамическое попиксельное освещение с помощью HLSL и иметь световой буфер, взаимодействующий с шейдером максимум для 8 источников света.
Важно отметить, что на данный момент вся моя карта представляет собой трехмерный массив блоков (64x64x64). После ОЧЕНЬ простого алгоритма уменьшения лица я смотрю на лица 32x32x32x6 для рендеринга в худшем случае. Я собираюсь использовать другие методы, чтобы уменьшить нагрузку, но сначала я хотел решить эту проблему.
В настоящее время с 8 источниками света в шейдере я получаю частоту кадров около 60-120 с GTX 470, которая является приличной картой. Очевидно, что есть много других оптимизаций, на которые я должен обратить внимание, но поскольку динамическое освещение не имеет для меня решающего значения (по крайней мере, не для 8 источников света), я изучал картирование освещения.
Если бы у меня было 4x4 люмеля на лицо, я бы посмотрел на атлас текстур для моей карты освещения всего уровня размером 32x32x32x6x16 с 4 байтами на пиксель. В результате получается текстура, которую я бы использовал, размером 2048x2048 (ближайшее разрешение power-2).
Я уже просмотрел несколько источников, особенно этот, http://www.flipcode.com/archives/Light_Mapping_Theory_and_Implementation.shtml, и хотя я понимаю, как реализовать это с базовой сценой, я не понимаю, как я могу реализовать это с моей текущей геометрической ситуацией.
Вот мой вопрос. Есть лучший способ сделать это? Можно ли использовать световую карту такого размера? Я чувствую себя комфортно, используя люмели 4x4 на лицо, поскольку билинейная фильтрация, кажется, в конце концов действительно сглаживает ситуацию. Кроме того, было бы довольно просто объединить статическую систему карт освещения с динамической попиксельной картой с HLSL?