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

Тени, frustum culling, octree/quad-tree...

Страницы: 1 2 3 Следующая »
#0
21:34, 21 авг 2009

Для "не рисования" объектов, которые находятся вне фрустума, обычно используют frustum culling, octree/quad-tree, occlusion query тест и пр. А как быть с тенями (если, объект находится вне фрустума, а тень во фрустуме)?

Для точечного источника света(ис) подходит сфера.
Для спотового ис - бокс (я пока не разбирался, как его вычислять) или, мб, какой-то другой объём?
Для направленного ис я вообще не знаю, какой объём брать (и нужно ли?) и как тут вообще обрезать тени?

Кто реализовывал данную "обрезку теней" (для спотового и направленного ис)? Подскажите, как делали?

Скрин (фрустум):
shadow_0 | Тени, frustum culling, octree/quad-tree...

Скрин (фрустум + octree/quad-tree):
shadow_1 | Тени, frustum culling, octree/quad-tree...

#1
23:25, 21 авг 2009

Отрисовывать геометрию в ShadowMap полностью?

А
> frustum culling, octree/quad-tree, occlusion query тест
применять только к финальной отрисовке(на которую ложатся тени)

#2
0:08, 22 авг 2009

строить очередь видимых объектов с позиции источника света во время SM-прохода

#3
0:19, 22 авг 2009

Надо определить, есть ли контакт между пирамидой и усечённой пирамидой.

#4
2:36, 22 авг 2009

Elec3C
>А как быть с тенями (если, объект находится вне фрустума, а тень во фрустуме)?
тени рисуется на приемнике теней, а он виден в данной ситуации, или я неправильно понял?
по идее Frustum источника и frustum тени это разные frustum.

#5
4:34, 22 авг 2009

BenTech
> Отрисовывать геометрию в ShadowMap полностью
Какая же это оптимизация для направленного ис?

Blew_zc
Это буду делать для точечного и спотового ис.

SNVampyre
Если я правильно понял, это для спотового ис.

Andrey
> frustum тени
Это что ещё такое? Для каждой тени при направленном ис нужно строить ещё и фрустумы тени и по ним уже проверять, попал ли фрустум тени во фрустум камеры?


Для направленного ис:

Скрин (здесь объект находится вне фрустума камеры и не отрисовывается, а сама тень от объекта должна отрисовываться):
shadow_0 | Тени, frustum culling, octree/quad-tree...

Скрин (здесь объект находится вне фрустума камеры и не отрисовывается и сама тень от объекта тоже находится вне фрустума камеры и не должна отрисовываться - как это контролировать можно (строит фрустумы для теней?:) )):
shadow_2 | Тени, frustum culling, octree/quad-tree...

P.S. Все скрины в нулевом посте приведены для направленного ис.

#6
6:53, 22 авг 2009

Elec3C
> Это что ещё такое? Для каждой тени при направленном ис нужно строить ещё и
> фрустумы тени и по ним уже проверять, попал ли фрустум тени во фрустум камеры?
>
>
Я как раз пришел в эту тему предложить тебе сделать именно это.

#7
8:45, 22 авг 2009

BenTech
>>Отрисовывать геометрию в ShadowMap полностью?
:D

Blew_zc
>>строить очередь видимых объектов с позиции источника света во время SM-прохода
У направленного источника нет позиции. Есть только направление.

Elec3C
Т.к. для направленного источника тень имеет тотже размер, что и сам объект, то всю тень можно запихать в бокс.
А уже этот бокс проверять на попадание в фрустум или дерево.

#8
11:58, 22 авг 2009

Elec3C
>Это что ещё такое? Для каждой тени при направленном ис нужно строить ещё и фрустумы тени и по ним уже проверять, >попал ли фрустум тени во фрустум камеры?
Смотри. Для источника света строим frustum(для каждого типа свой если случай с Cube Map там по другому)
далее ищем список объектов для источника света этого, как сказал Blew_zc. Рисуем в текстуру тени.
Далее есть два случая:
- тень будет на самом объекте в случае само затенения - тогда объект будет виден из frustum камеры и он и тень будут видны.
- эта тень будет на приемнике тени,  тогда если виден приемник из frusutm камеры,кусок ландшафта к примеру, рисуем его, ну а текстура тени по идее будет передаваться для шейдера и она автоматически будет видна там где нужно.
Зачем тут что проверять видимости теней я не пойму,
Есть общая текстура тени после SM прохода, она передается в шейдеры. То что видно из frustum камеры рисуется и используется эта текстура.

#9
12:18, 22 авг 2009

@!!ex
> У направленного источника нет позиции. Есть только направление.
значит можно выбрать её самому

#10
19:17, 22 авг 2009

@!!ex
Это как-то тени имеет одинаковый размер, что и объект - помести солнце на горизонт - одинаковый размер тени и объекта?

Andrey
> Зачем тут что проверять видимости теней я не пойму
Перечитай мои посты ещё раз и посмотри внимательно на скрины)

Надо попробовать строить фрустумы от каждой тени и проверять на принадлежность фрустума тени фрустуму камеры.

#11
20:14, 22 авг 2009

Elec3C
>перечитай мои посты ещё раз и посмотри внимательно на скрины)
Теперь я кажется понял что ты хочешь, ты хочешь оптимизировать отрисовку объектов в тень, если тень заведомо не будет видна frustum камеры, не рисовать этот объект для теней. Так ?

#12
20:26, 22 авг 2009

Andrey
Да-да - это мне и нужно реализовать :)

#13
20:29, 22 авг 2009

Камера упирается в землю, смотрит вниз - большой фрустум, ето нормальнъй фрустум. Вътянутъй фрустум - ето фрустум тени. Его юзает для второго прохода по графу сценъ, чтобъ найти все обьектъ, которъе бросают тень в наше view:
Фрустум тени | Тени, frustum culling, octree/quad-tree...

#14
22:48, 22 авг 2009

Elec3C
>>Это как-то тени имеет одинаковый размер, что и объект - помести солнце на горизонт - одинаковый размер тени и объекта?
И что? От направленного источника света тень всегда будет одного размера, на любом расстоянии.
Странно, что это нужно объяснять...

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

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