Доводилось ли кому-нибудь пытаться сделать это?
Передо мной встала задача реализации на XNA:
Ночь (очень слабый синеватый эмбиент), на сцене присутствуют приблизительно от 2 до 20 динамических источников света. Каждый
источник (стандартно) имеет радиус и цвет, тоже изменяющиеся динамически. Они двигаются. Задача теней не стоит, как излишняя
для моей игры.
Сцена - это задник (который не должен освещаться), уровень и ГГ.
Как все это лучше провернуть? С минимальной нагрузкой на центральный и графический процессоры?
Число источников света специально мне ограничивать не хотелось бы, хотя штук двадцать, думаю вполне хватит. Пока они (их параметры) сохранены в List.
Что придумалось:
Так как уровень сохранен в массив, то можно сделать параллельный массив с цветом для каждой ячейки, а его в свою очередь обновлять в каждом вызове Update. Но тогда свет получится "квадратным".
Можно написать шейдер. Я (так как особенно в теме не разбираюсь) полез в интернет и нашел подходящий пример:
http://iandreev.wordpress.com/2011/06/30/pointilgh/
Можно его как-то развить до произвольного числа источников?
Может сделать несколько проходов, сменяя параметр, и создав "маску
теней", а потом отрисовав ее поверх сцены?
Третий вариант - сделать вышеупомянутую маску в коде игры, создав новый RenderTarget и, закрасив его в темно синий, натыкать туда текстур источника, разного размера и расцветки.