ПрограммированиеФорумГрафика

[Forward renderer] Затенение сцены и вообще... (2 стр)

Страницы: 1 2 3 Следующая »
#15
13:59, 14 фев 2010

FROL
> Во, во, это lightcut и есть
ааа, вот оно что!  ну дык это можно сделать : ) это не так то и сложно : ))

Aldaron
> к примеру, из известного, это рендерить несколько ShadowMap в одну текстуру
рендерить не получится. у меня же VSM.  там нужно 2 компонента для глубины.  ну, поидее, 2  лайта в текстуре но не 4!!  4 лайта можно в 1 текстуру залить потом - заблюрить все 4 VSM карты, найти коэффициент затенения и записать в один канал. и так 4 источника света.  потом эту мапу кидать в шейдер.

Aldaron
> Думаю, у кого радиус( зона) покрытия больше
я думаю сделать так:
1. сделать источники света с ForceShadow (ну вдруг понадобятся такие которые ОБЯЗАТЕЛЬНО при любой ситуациии должны отбрасывать тень?
2. рассчитывать "вес" источника света на видимой территории (не просто радиус а  сколько пространства освещает в фрустуме.


вообще я себе хреново представляю всю систему рендеринга теней и шейдинга сцены : (

Я напишу как у меня сейчас а вы исправьте "как надо", ок?

сразу скажу - не пугайтесь!  сделано ОЧЕНЬ тупо!!!  но я всегда делаю сначала лишь бы хоть как-то работало а потом делаю нормально : D

1. определяется список источников света, которые вносят вклад в освещение фрустума
2. Z-Pass:: (тупо) для первых попавшихся 4 рендерим карту глубины  (с самим рендерингом всё в порядке)
3. идёт рендеринг сцены: для каждого объекта я получаю 8 источников света, которые на него влияют.  определяю из них те, которые кастуют тени.  сортирую так, что первыми в шейдер передаются источники света с тенями. В шейдер передаётся и флаг - имеет ли источник света теневую карту. 

Пример:  есть сцена.. много лайтов.  Мы рисуем объект - получаем 8 ближайших лайтов (или меньше).  Из них 3 кастуют тени.  (S - источник света с тенью, W - без тени)  получаю такой списко источников света:  S,W,W,S,W,S,W,W

Я его сортирую так: S,S,S,W,W,W,W,W.  Эти лайты заливаю в шейдер (все их параметры)

в шейдере(псевдокод):

for(int i = 0; i< lightsCount; i++)
{
if(lightAttributes[i].x == 1) //проверяем флаг - кастует ли источник света тень
{
//осторожно!!   дальше идёт аще маразм!!! : ))))
float lightDepth;
if(i == 0)
    lightDepth = tex2D(sm0, tc);
else if(i==1)
    lightDepth = tex2D(sm1, tc);
else if(i==2)
    lightDepth = tex2D(sm2, tc);
else
    lightDepth = tex2D(sm3, tc);

// рассчёт сосвещения с тенью.
}
}

вообщем в шейдере отдельно 4 2D сэмплера для карт теней (для каждого источника света своя текстура). Пока поддерживаются шейдером только 2D тени!!


я знаю что это бред аццкий.  Расскажите, кому не влом, пожалуйста, как именно весь процесс должен "правильно" выглядеть, чтобы и DPSM поддерживать и вообще правильно всё сделать.  буду мегопризнателен!!

#16
13:59, 14 фев 2010

IronNick
>проверку на препятствия между ними делаешь?
Честно говоря не проверяю, но сейчас подумаю над этим
> если разные радиусы?
только если приближены к среднему значению
> цвет(в том числе и тени)?
Здесь считаю только Depth, цвет уже потом
> качество теней?
Среднее между всеми
> статик/динамик лайт?
Только для динамических, для статики там свои подходы
> проверка на этапе старта или риалтайм?
Старта и если изменяется положения источника, или добавляется новый

#17
17:02, 14 фев 2010

и всёже pay attention to псто #10, #15

#18
18:20, 14 фев 2010

покурил код и пейперы... всё вроде верно в parabaloid- мапах!  (в шейдере)  видимо я не те матрицы передаю.

ну проекционная нафиг не нужна, мировая нужна полюбому (в обычном виде) а вот видовая это что?  я так понял, что от видовой нужна только позиция камеры и сделал (псевдокод) matrix M = Matrix.Invert(Matrix.Translation(LightPosition));  не,бред   видимо я ошибся.  как же правильно?

#19
19:51, 14 фев 2010

поставил FarCry1, посмотрел как у них сделано затенение  (у мну Crysis: Warhead а на нём SandBox2 почемуто не пашыд)

после некоторых тестов  был реально удивлён!! Аще аццки всё сделано : ))  Динамическая тень только от 1 источника света!  Длина тени сильно урезана а при удалении камеры от объекта тень вообще пропадает.  Тень рисуется от ближайшего источника света при чём этот источник должен быть дна довольно маленьком расстоянии (порядка 1-1.5 метра) иначе тень считается от солнца!  Больше всего меня поразило освещение!  Я ессно выставил графику на максимум.. так вот.  На объект максимум 5 лайтов (включая солнце).  Тени от солнца почемуто нету на объекте (солнце тени не кастит) и жуткий эмбиент почемуто аццки подсвечивает объект изнутри о_О  а когда 5 динамических источников света добавляю внутрь ангара (тестил всё в ангаре) то эмбиент от солнца резко пропадает.. ну .. ещё куда ни шло.. в игре то этого типа не будет видно - ан нет!! У них же источники света куллятся по фрустуму и когда игрок стоит посреди ангара и поворачивается так, что 1 источник света уходит из вида то резко врубается отсвещение от солнца!!!  аще ацки выглядит!  А я считал фаркрай довольно технологичной гамой : )  А там такой бред шо ну ппц аще о_О  или это я сильно загоняюсь с "идеальным"" освещением? : )

#20
20:37, 14 фев 2010

как уже было где-то написанно, меньше знаешь - лучше играешь.
После изучения кучи технологий, спец ефффектов я спризрением начинаю смотреть на графику в играх и смотрю есть ли там паралакс и бамп, по какой технологии сделаны тени, DS или Forward, как сделана водичка и облака и проч хрень.
А ведь раньше играя в игры я не смотрел на артефакты графы или ее недостатки, а просто играл.
Ничего нет совершенного, везде хаки и уловки.

#21
20:53, 14 фев 2010

MAMONT-92
+777

такаяже фишка : )  она наверно у всех разработчиков.  Только я хоть и смотрю на графику, всёравно для меня она не самая важная в игре : )

#22
21:05, 14 фев 2010

 L 
> Больше всего меня поразило освещение! Я ессно выставил графику на максимум..
> так вот. На объект максимум 5 лайтов (включая солнце).

как 5 ? 4 вместе с солнцем, там ешё так чудно включаешь фанарик - он вроде как spot -  а кусок индора освещает не как spot 

> А я считал фаркрай довольно технологичной гамой
Это ты ешё DOOM3 не смотрел :)

#23
21:05, 14 фев 2010

MAMONT-92
> как уже было где-то написанно, меньше знаешь - лучше играешь.

точно, тем более когда ты ещё сам и делаешь графику в игрушке 
у меня в одном месте вектор L не совпадал c реальным в сцене - для крастоты было сделано :)

#24
21:06, 14 фев 2010

 L 
> или это я сильно загоняюсь с "идеальным"" освещением? : )

тебе же ясно сказали - кури DS

#25
21:19, 14 фев 2010

innuendo
> как 5 ? 4 вместе с солнцем
неа! на максимуме у меня в ангаре 4 динамических источника света и солнце светит а когда пятый добавляю то солнце пропадает (не обсчитывается) и при добавлении лайтов также 5 светят!

innuendo
> там ешё так чудно включаешь фанарик - он вроде как spot - а кусок индора
> освещает не как spot
ага и тени от спотов аще НЕТ!  только от PointLight-ов

innuendo
> тебе же ясно сказали - кури DS
а я не менее ясно говорил в разных темах - не-хо-чу. : )  хоцца сделать хорошую графу на forward рендерере + DS ещё осваивать некоторое время придётся а влом и незачем.  100500 лайтов я делать не собираюсь!! меня ВПОЛНЕ УСТРАИВАЕТ 8 лайтов на объект и 4 или 8 шадоумапов (из этих лайтов). Это вполне реализуемо на FR  - в очередной раз пример: Crysis : D

#26
21:20, 14 фев 2010

ФАК! ну ХОТЬ КТО-НИБУДЬ подскажет по DPEM???????

#27
21:23, 14 фев 2010

 L 
> Это вполне реализуемо на FR - в очередной раз пример: Crysis : D
а какой ценой ? когда дойдешь до Deffered Shadows - позови :)

#28
21:30, 14 фев 2010

innuendo
> а какой ценой ?
а какой ценой? я что, шейдер чтоли не напишу? : D  менеджмент теней тотже что и в DR  + слыхал что там нуна плясать с бубном вокруг прозрачностей всяких

мне религия подсказывает  юзать FR : )


п.с.  пруф:
fc_lights | [Forward renderer] Затенение сцены и вообще...

4 динамических лайта + освещение от солнца

#29
22:14, 14 фев 2010

 L 
> а какой ценой? я что, шейдер чтоли не напишу? :
ты доку про Крайзис прочти сначала

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.