Quest3D - Русскоязычное сообщество

Quest3D => Визуализация, Шейдеры => Тема начата: Sqwer от 25 Июля 2009, 09:13:41



Название: [G] Комплексное освещение
Отправлено: Sqwer от 25 Июля 2009, 09:13:41
Шейдеры позволяют творить чудеса, и часто эти чудеса основываются на освещении (например: бамп спекуляр дифуз). Расчитать всё это для одного источника света - не проблема, но если потребуется вместо одного источника применять несколько!!!
Придётся для каждого источника отрисовывать объект заново.

Как правило, в сцене более одного источника света и остро встаёт вопрос о рендеринге сцены. Для 8 источников света POM посчитать - накладно будет.

При методе прямой отрисовки (Forward Render) в играх расчитывают "по полной программе" только 1-3 источника света, но как же с остальным быть? Приведу пример :на вас бежит толпа боевиков с автоматами и все стреляют без плямягасителей, таким образом в сцене одновреммено используется много источников света, не рисовать же все источники по продвинутому шейду?

Может просто взять и посчитать только дифуз для таких источников?  Хочу выслушать мнения.

Deferred Shading не предлагать.


Название: Re: [Графика]Комплексное освещение
Отправлено: Viik от 25 Июля 2009, 13:36:49
Такие источники просто не учитываються. К примеру в UE3, на ГГ действуют только 3-4 ближайщих и наибольших по приоритету ИС, остальное игнорируеться.


Название: Re: [Графика]Комплексное освещение
Отправлено: Sqwer от 29 Июля 2009, 20:55:40
Что же это за освещение если оно без теней! 8)

Тень по направленному источнику света делать не сложно, но как же дела предстоят с точечным светом, лучи которого направлены во все стороны?

В голову пока ничего не проходит, кроме как на каждый ИС рендить кубмапу глубины. Есть ли иные способы задания теней от точечного света?

Дороговато будет для каждого ИС кубмапу 16разрядную делать.


Название: Re: [Графика]Комплексное освещение
Отправлено: Viik от 30 Июля 2009, 00:24:51
Можно использовать paraboloid shadow maps, работает намного быстрее кубемапы и жрет меньше памяти, но есть свои баги.
С рендером в кубемапу на 10-м и 11-м директ иксе никаких проблем нет, там это делаеться быстро за один проход.
Опять же никто не вешает тени на каждый источник света.


Название: Re: [Графика]Комплексное освещение
Отправлено: barmadjar от 30 Июля 2009, 00:35:36
А можно ли как то сделать протяженный источник света?
Или, может, есть у кого-нибудь какие соображения как сделать освещение в тоннеле?


Название: Re: [Графика]Комплексное освещение
Отправлено: Viik от 30 Июля 2009, 00:38:20
Всмысле протяженный? Тонели вродебы лампочками освещают  ;)
Если ты имееш ввиду что-то вроде освещение тонеля на его выходе на поверхность или светлое помещение, то можно просто использовать директ лайт расположенный в начале тонеля и затухающий по растоянию.


Название: Re: [Графика]Комплексное освещение
Отправлено: Sqwer от 30 Июля 2009, 01:16:16
а если Вы имеете ввиду что-то похожее на "заводскую" люминисцентную лампу, то директ 9 не умеет работать с этим.


Название: Re: [Графика]Комплексное освещение
Отправлено: barmadjar от 30 Июля 2009, 01:58:58
Sqwer
Да, именно что-то вроде этого.
Дело в том, что в сцене имеются длинные тонели (до 4-х км), а при том, что директ 9, как я понимаю, поддерживает не более 8-ми источников, освещать кучей лампочек будет сложно, а освещать нужно обязательно. Насяльника спросила - возможно ли осветить протяженным источником. В Максе вроде возможно сделать протяженный источник, а вот в Квесте, похоже увы.

Viik
а свет в конце тонеля и так есть - снаружи то солнце ;)


Название: Re: [Графика]Комплексное освещение
Отправлено: Sqwer от 30 Июля 2009, 13:37:12
Вопрос: Как Богу удалось создать мир всего за шесть дней ?

Ответ: У него не было предыдущих инсталляций, совместимость с которыми надо было обеспечить. И он к тому же сильно сэкономил на документации.

Цитировать
поддерживает не более 8-ми источников, освещать кучей лампочек будет сложно
это для стандартного пипелайна, но шейдеры (целесообразно СМ3 и выше) позволяют обходить это.

Есть 2 явных выхода: диферед рендеринг (и куча проблем с индексацией материалов впридачу) или форвардом освещать по Фонгу без эффектов (таких как спекуляр).

Есть ещё один: для статики использовать гибридное освещение (лайтмапы и 2-4 динамических ИС со всеми эффектами) для динамики использовать эмбиент карты  и 2-4 ИС (для мягкости освещения можно использовать полламберта).

Вся 3Д графика - обман. Наша оснавная задача - представить реальное физическое поведение в приближённых моделях или отвлечь просмоторщика от графики.

В вашем случае обмануть можно так: используем гибридное освещение, где 4 ИС меняют положение по заранее подготовленному массиву. Для местоположения света производим выборку ближайших элементов массива к камере.

А отвлечь: использовать блум.


Название: Re: [Графика]Комплексное освещение
Отправлено: barmadjar от 30 Июля 2009, 21:49:12
Sqwer

Спасибо за ответ!
В шейдерах, к сожалению, не силен. С лайтмапами тоже не ясно как быть - как получить их для длинного извилистого тунеля ??? (Честно говоря, о лайтмапах знаю только в теории - никогда не пользовался, только в Квесте один раз получил, когда пример разбирал) Про динамические ИС я думал, видимо, придется применить их.


Название: Re: [Графика]Комплексное освещение
Отправлено: →|๖ۣۜDen|← от 31 Июля 2009, 17:16:45
...ИС меняют положение по заранее подготовленному массиву. Для местоположения света производим выборку ближайших элементов массива к камере.
Пример собран на 4.0 с помощью массивов. Красный - самый ближний свет, жёлтый - дальше ближнего, зелёный - самый дальний из трёх (в моём случае производилась выборка ближайших трёк точек).

Рассудите! Кто знает: если всё тоже самое сделать на ОО, будет ли выигрышь в быстроте?


Название: Re: [Графика]Комплексное освещение
Отправлено: Sqwer от 01 Августа 2009, 12:11:31
Спасибо →|Den|←.

barmadjar это как раз про то ,что я говорил.
Ничто не мешает для каждого иточника света указать в массиве параметры, например цвет.  Пример доработан и сохранён на  4.2.2 (rar arxiv).

Цитировать
Рассудите! Кто знает: если всё тоже самое сделать на ОО, будет ли выигрышь в быстроте?
Очень интересно, но могу сказать, что в ОО вроде как нет алгоритма сортировки. А от своего мнения: очень удобно работать с массивами.


Название: Re: [Графика]Комплексное освещение
Отправлено: Ruslan от 01 Августа 2009, 12:31:59
barmadjar
В твоем случае, лучше использовать лайтмап.
тоннель заанврапить одинаковыми лайтмапапи, заранее запечеными в максе, например с помощью VRay там можно с помощью материала VRayLight сделать "протяженный источник света".


Название: Re: [Графика]Комплексное освещение
Отправлено: →|๖ۣۜDen|← от 01 Августа 2009, 13:49:09
→;D ;D ;D (http://depositfiles.com/files/pqst8ib6v)←


Название: Re: [Графика]Комплексное освещение
Отправлено: KBECT0MAH от 01 Августа 2009, 17:30:43
→;D ;D ;D (http://depositfiles.com/files/pqst8ib6v)←

Ну →|Den|←, ну шутник  :D  ты бы хоть предупредил что там шутка,
а то народ кинется качать в надежде на решение всех своих проблем ;)

Кому не жалко 8,6 MB трафика, качайте, улыбнетесь  ;D
.


Название: Re: [Графика]Комплексное освещение
Отправлено: Sqwer от 01 Августа 2009, 19:41:00
→|Den|← как дембель.

По теме: полученное решение включеня/выключения ИС очень резко влияет на картинку. Действительно, больше подходит как решения для каста света , для выстрелов например.

В случае с персонажем это почти не заметно, но как же быть со статикой?  Есть бредовая идея для статики: использовать лаймапы для дифузного освещения (это е тественно т.к. этот эффект не зависит от видового вектора), и (не смейтесь) использовать векторы лучей источника света (т.е. напраление откуда он пришёл) для просчёта бликовой состовляющей.

Пойду порыбачу на геймдеве .  ;D

Улов: http://www.gamedev.ru/code/faq/?id=3575


Название: Re: [Графика]Комплексное освещение
Отправлено: Viik от 03 Августа 2009, 15:15:55
Используя один источник света можно имитировать несколько. Для этого можно использовать маски (киношники их называют Cookies). Например для того чтобы сделать вытянутую лампу или серию таких ламп. Можно использовать один направленный источник света с тенями или без не суть важно, идея в том что когда мы считаем освещенность опеределенной точки дополнительно учитываем маску.
Можно пойти еще дальше и вместо вычисления затухания света математикой в шейдере, использовать предварительно посчитанные или нарисованные текстуры, если вы имели дело с IES lights то поймете о чем я.
вот пример такого подхода, в сцене используеться один точечный источник света с тенями:
http://www.powerrender.com/2008/powerrender7/movies/ScalingLights.wmv (http://www.powerrender.com/2008/powerrender7/movies/ScalingLights.wmv)

в атаче скриншот с примером использования маски


Название: Re: [Графика]Комплексное освещение
Отправлено: barmadjar от 06 Августа 2009, 01:56:59
Спасибо всем за советы!
Пока обойтись придется все-таки динамическими ИС

Viik
А каким образом маску учитывать в Q3D? Помещать ее перед ИС?