?

Log in

No account? Create an account
 
 
12 August 2006 @ 02:09 am
Математика рулит  
Итак, я использую в HLFX 0.6 попиксельное освещение. Для его расчета я взял вот такую формулу:



Вроде все правильно. Мы прибавляем к лайтмапе вклад диффузного бампа, сохраняем в текстуру, потом умножаем на неосвещенную сцену, и наконец прибавляем спекулярный бамп. Меня смущало вот что:
1. Требуется два прохода рендера (для лайтмапы и для неосвещенной сцены), и оба требуют привязки соответствующего шейдера (lightmap или unlit).
2. Приходилось два раза перебирать списки источников света. А это означает, что приходилось дважды рисовать теневые объемы и дважды выполнять ресурсоемкие операции по очистке стенсил-буфера.
3. Ну и копирование лайтмапы в текстуру - это означает остановку конвеера, что очень плохо.

На помощь пришло простейшее алгебраическое преобразование :) Только не говорите, что это очевидно - это мне теперь очевидно. А до этого я этого не осознавал. Формула теперь выглядит так:



Это добавило дополнительный проход для аттенуации (из-за ограничение на количество текстурных блоков), но она рисуется только в альфу и не сильно понижает fps. Зато все вышеперечисленные недостатки исчезли. FPS вырос в два раза :)
Потратил весь вечер на переписывание кода бампа (в который раз!), но оно того стоило %)
 
 
 
(Anonymous) on August 14th, 2006 07:24 pm (UTC)
XaeroX, слушай, как МОЗГ наростить?
Я вообще тупой такой, даже стыдно как то, особенно когда в люди куда-нибудь выбираешься... У всех вокруг какие-то дела проблемы... а передо мной всегда стоят только три вопроса: пожрать, поспать и поиграть... То что обо мне говорят "зато человек хороший", меня уже как-то не радует. Помоги советом. Как немного поумнеть?
Не знаю математикой там заняться... помогает говорят... некоторым...
Вот ты с чего начинал?


XaeroXxaerox on August 15th, 2006 02:52 am (UTC)
Я начинал с Visual Basic for Applications... в 2001 году =)
А вообще чтобы стать программистом, нужно переспать с программисткой, ога ;)
(Anonymous) on August 16th, 2006 11:05 am (UTC)
"переспать с программисткой", хм, надо будет куда-нибудь себе записать...
Desann: Alex Row ухмыляющийсяdesann on October 14th, 2008 11:06 pm (UTC)
Хaerox, а ты не мог бы перезалить картинки с формулами, ибо не открываются, а мне жутко интересно. )))
XaeroXxaerox on October 14th, 2008 11:53 pm (UTC)
Ничего себе, какую ты старую запись откопал)))
Перезалил и отредактировал пост.
Desanndesann on October 15th, 2008 12:16 pm (UTC)
Спасибо.
А я вот все извращаюсь...
в Q3 на модели накладываю текстуру со спекуляром:
((((Texture + S1) + S2) + S3) + S4) * Lightmap
где S1-4 - карты спекуляра, сделанные из карты нормалей.
А потом думаю, стоит ли так извращаться, когда можно рисовать только одну совмещенную карту спекуляра.))
XaeroXxaerox on October 15th, 2008 03:21 pm (UTC)
Что такое "карты спекуляра, сделанные из карты нормалей"? о.О
И по-моему спекуляр не умножается на лайтмапу - иначе это погасит все яркие блики.
Desanndesann on October 16th, 2008 10:02 pm (UTC)
>>Что такое "карты спекуляра, сделанные из карты нормалей"? о.О
Это берется фотошоп, из карты выдираются красный и зеленый каналы и их инверсии.

Ну да, по самой задумке спекуляра он прибавляться к текстуре с лайтмапой. Просто в Q3 нет обычного бампа, приходится задавать объем и извращаться с тем, чем есть - т.е. со спекуляром. Если помножать его на лайтмапу, то выглядит это очень даже неплохо. :-)