Показать сообщение отдельно
Старый 05.09.2011, 21:30   #1
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
2D освещение

Доводилось ли кому-нибудь пытаться сделать это?

Передо мной встала задача реализации на XNA:
Ночь (очень слабый синеватый эмбиент), на сцене присутствуют приблизительно от 2 до 20 динамических источников света. Каждый
источник (стандартно) имеет радиус и цвет, тоже изменяющиеся динамически. Они двигаются. Задача теней не стоит, как излишняя
для моей игры.
Сцена - это задник (который не должен освещаться), уровень и ГГ.

Как все это лучше провернуть? С минимальной нагрузкой на центральный и графический процессоры?

Число источников света специально мне ограничивать не хотелось бы, хотя штук двадцать, думаю вполне хватит. Пока они (их параметры) сохранены в List.

Что придумалось:
Так как уровень сохранен в массив, то можно сделать параллельный массив с цветом для каждой ячейки, а его в свою очередь обновлять в каждом вызове Update. Но тогда свет получится "квадратным".

Можно написать шейдер. Я (так как особенно в теме не разбираюсь) полез в интернет и нашел подходящий пример: http://iandreev.wordpress.com/2011/06/30/pointilgh/
Можно его как-то развить до произвольного числа источников?

Может сделать несколько проходов, сменяя параметр, и создав "маску
теней", а потом отрисовав ее поверх сцены?

Третий вариант - сделать вышеупомянутую маску в коде игры, создав новый RenderTarget и, закрасив его в темно синий, натыкать туда текстур источника, разного размера и расцветки.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием