В отличие от попиксельного освещения, где цвет рассчитывается для каждого видимого пикселя, в данном случае все рассчеты идут в вершинном шейдере. Выглядит это, безусловно, хуже, зато работает быстрее. При добавлении восьми источников света фпс упал с 200 до 160. Данный подход может быть использован при глобальном использовании шейдеров в программе в случае нахождения камеры на достаточно большом расстоянии от источников света, где "повершинность" освещения будет слабо заметна. Или, например, при текстурировании\освещении ландшафта на слабых конфигурациях, где попиксельное освещение с бампом может сильно осложнить жизнь.
Демка, cg_libs_2.0.0.12
Демка, cg_libs_2.0.0.12
Эм, что-то слабо видна повершинность. Судя по всему сетка регулярная, т.е. много полигонов на полу и потолке?
ОтветитьУдалитьМарцелл, выглядит интересно... из последних твоих постов можно сделать вывод, что делаешь какую-то indoor рпг! круть!
ОтветитьУдалитьperfect daemon, хм... давроде на полу чуть слева прям синий ромб виден... хотя могу ошибаться))
perfect daemon, комната построена из девяти тайлов. Пол каждого тайла - 18 треугольников.
ОтветитьУдалитьТакое ощущение, что использование шейдерного повершинного освещение, визуально немного хуже обычной OGL лампочки.
Lampogolovii, не, я пока просто прорабатываю шейдеры, которые могут потребоваться в будущем.
Вообще в планах - переписать класс TGLBaseMesh под себя для более удобного использования шейдеров, выкинуть все ненужное оттуда.
Марцелл, то бишь на пол более 150 полигонов. Неудивительно, что на полу довольно ровный для вершинного переход.
ОтветитьУдалитьНасчет обычного glLight - может ты опустил часть вычислений, присущих для fixed pipeline?