|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Nov 2013
Сообщений: 86
|
Несколько источников света.
Здравствуйте.
Последнее время решил разобраться с Stage3D и AGAL, потому что, хоть и можно использовать готовые движки, интересно знать, как что работает. Нагуглил и прочитал несколько интересных статей и более менее разобрался с основами: зачем нужны матрицы, как шейдеры написать и так далее. Читал еще вот эту статью и этот блог - так вот там вполне понятно описывается, как создать один источник света, и написать шейдеры с освещением по Ламберту или Фонгу - но только для одного источника. А как сделать, чтобы их было несколько? Ведь в Alternativa и Away это можно. Кроме того, они ведь еще и разные бывают, точечные или направленные. Мне хотя бы теоретически объяснить или в какие-нибудь статьи тыкнуть. Спасибо. Добавлено через 2 часа 5 минут Продолжаю гуглить на эту тему, нашел Deferred Shading, читаю. Возможно ли и будет ли нормальным подходом использовать его в Stage3D? Последний раз редактировалось FlasherEgor; 02.06.2014 в 11:36. |
|
|||||
Привет! Сейчас пилим deferred lighting в Away3D. Deferred shading будет смысл делать в Flash Player 15. Они уберут обязательное требование очистки всех буферов при смене рендер таргетов, что мешает реализовать идеологию в один проход непрозрачной геометрии.
Про источники света. Если forward renderer. Динамически формируешь шейдер который рассчитывает каждый источник света, все параметры источников света передаешь в шейдер через константы. Если количество строк в шейдере вылезло за пределы, формируешь второй и последующие дроуколы в которые пихаешь оставшиеся источники света и рисуешь их с ADD бленд модом. Стоит отметить что блендмоды очень дорогие особенно на мобильных устройствах. Подробнее можно почитать в Apple документации по использованию OpenGL ES 2.0. Если deferred shading или deferred lighting подход. Первым проходом непрозрачной геометрии заполняешь world normal и world position(или depth) буферы. Потом создаешь аккумуляционный буфер для диффузного света и спекуляра(обычно используют монохромный и хранят в альфа канале диффузного). Рисуешь Lightbuffer, у тебя уже есть все данные чтобы рассчитать как влияет свет на объекты(позиция и нормаль). И далее уже по сценарию deferred shading или deferred lighting. Непрозрачная геометрия рисуется через forward подход с forward светом. |
|
|||||
Регистрация: Nov 2013
Сообщений: 86
|
Большое спасибо! Буду дальше разбираться и экспериментировать, но теперь хотя бы знаю в общих чертах, что делать.
|
Часовой пояс GMT +4, время: 13:54. |
|
« Предыдущая тема | Следующая тема » |
|
|