Показать сообщение отдельно
Старый 06.09.2011, 19:55   #6
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: 2D освещение

Сообщение от MoKa Посмотреть сообщение
Я бы сделал как, можно даже с бампом (и это просто).

Рендеришь слой уровня в отдельную текстуру, чтобы вот она была, уже как бы готова для рисования на экран, рисуешь затенённую (цвета амбиента).

Далее, для каждого источника, создаёшь квад размером с источник, и натягиваешь эту текстуру уровня используя screen-space координаты (это можно realtime в шейдере просто очень вычислить), далее рисуешь её, только умножая на цвет источника света, и инвертированную дистанцию. А именно, должно быть в центре 1.0, а ближе к краям 0. Этот квад который рисуешь, рисуй с блендом ADDITIVE (или как там он, ну который засветляет), и будет чики пуки.
Главное учти, что нужно отрисовать уровень либо с альфой, либо делать маску для этого дела.

Таким образом 20 источников будет ваще сказка и просто рисовать, также можно сделать красивый бамп.

UPD:
Вот примеры качества что делал, можно по разному считать дистанцию, и применять математическую градацию, можно и блики сделать, по 10 источников на каждой картинке, на оффисном старом компе, летало.




Скрины то с Vertex2d, а это далеко не XNA. если так делать мне кажется на твоём оффисном копе всё будет совсем не "летать"
(Offline)
 
Ответить с цитированием