• Добро пожаловать на Quest3D - Русскоязычное сообщество.
 

[G] Комплексное освещение

Автор Sqwer, 25 июля 2009, 10:13:41

« назад - далее »

Sqwer

Шейдеры позволяют творить чудеса, и часто эти чудеса основываются на освещении (например: бамп спекуляр дифуз). Расчитать всё это для одного источника света - не проблема, но если потребуется вместо одного источника применять несколько!!!
Придётся для каждого источника отрисовывать объект заново.

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

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

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

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

Viik

Такие источники просто не учитываються. К примеру в UE3, на ГГ действуют только 3-4 ближайщих и наибольших по приоритету ИС, остальное игнорируеться.

Sqwer

#2
Что же это за освещение если оно без теней! 8)

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

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

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

Viik

Можно использовать paraboloid shadow maps, работает намного быстрее кубемапы и жрет меньше памяти, но есть свои баги.
С рендером в кубемапу на 10-м и 11-м директ иксе никаких проблем нет, там это делаеться быстро за один проход.
Опять же никто не вешает тени на каждый источник света.

barmadjar

А можно ли как то сделать протяженный источник света?
Или, может, есть у кого-нибудь какие соображения как сделать освещение в тоннеле?

Viik

Всмысле протяженный? Тонели вродебы лампочками освещают  ;)
Если ты имееш ввиду что-то вроде освещение тонеля на его выходе на поверхность или светлое помещение, то можно просто использовать директ лайт расположенный в начале тонеля и затухающий по растоянию.

Sqwer

а если Вы имеете ввиду что-то похожее на "заводскую" люминисцентную лампу, то директ 9 не умеет работать с этим.

barmadjar

Sqwer
Да, именно что-то вроде этого.
Дело в том, что в сцене имеются длинные тонели (до 4-х км), а при том, что директ 9, как я понимаю, поддерживает не более 8-ми источников, освещать кучей лампочек будет сложно, а освещать нужно обязательно. Насяльника спросила - возможно ли осветить протяженным источником. В Максе вроде возможно сделать протяженный источник, а вот в Квесте, похоже увы.

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

Sqwer

#8
Вопрос: Как Богу удалось создать мир всего за шесть дней ?

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

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

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

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

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

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

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

barmadjar

Sqwer

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

→|๖ۣۜDen|←

Цитата: Sqwer от 30 июля 2009, 14:37:12
...ИС меняют положение по заранее подготовленному массиву. Для местоположения света производим выборку ближайших элементов массива к камере.
Пример собран на 4.0 с помощью массивов. Красный - самый ближний свет, жёлтый - дальше ближнего, зелёный - самый дальний из трёх (в моём случае производилась выборка ближайших трёк точек).


Рассудите! Кто знает: если всё тоже самое сделать на ОО, будет ли выигрышь в быстроте?
Не тупи, Denil!ツ Quest3D v4.3.2

Sqwer

Спасибо →|Den|←.

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

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

Ruslan

barmadjar
В твоем случае, лучше использовать лайтмап.
тоннель заанврапить одинаковыми лайтмапапи, заранее запечеными в максе, например с помощью VRay там можно с помощью материала VRayLight сделать "протяженный источник света".

→|๖ۣۜDen|←

Не тупи, Denil!ツ Quest3D v4.3.2

KBECT0MAH

Цитата: →|Den|← от 01 августа 2009, 14:49:09
→;D ;D ;D←

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

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