OpenGL community
GameDev.ru / Сообщества / OpenGL community / Форум / Реализация ESM (exponential shadow maps) (комментарии)

Реализация ESM (exponential shadow maps) (комментарии)

Страницы: 1 2 3 4 5 Следующая »
KpeHDeJIbПостоялецwww22 мая 201112:40#0
Реализация ESM (exponential shadow maps) (комментарии)

Это сообщение сгенерировано автоматически.

KpeHDeJIbПостоялецwww22 мая 201112:40#1
Жду рациональной критики :)
L.A.Удалёнwww22 мая 201114:06#2
во второй glGenTextures наверно буит depth_texture
KpeHDeJIbПостоялецwww22 мая 201114:06#3
L.A.
> во второй glGenTextures наверно буит depth_texture
Да, сейчас поправим.
ExecutorУдалёнwww22 мая 201114:46#4
> чем ближе кастер к приемнику тем мягче тень

Дык это же вообще не правильно.
Должно быть наоборот.

KpeHDeJIbПостоялецwww22 мая 201115:03#5
В шейдерах кстати используется линейная глубина до фрагмента, если вы обратили внимание. Это один из способов, сильно зависит от геометрии сцены. Еще один способ - нелинейная, он зависит в основном от глубины и расположения near-plane отсечения. Я его сейчас покрутил немного, впринципе добился чтобы он работал, так что заметку переделаю в угоду более универсального способа. Вот последний скрин кстати:

Изображение

KpeHDeJIbПостоялецwww22 мая 201115:04#6
Executor
> Дык это же вообще не правильно.
> Должно быть наоборот.

Такой вот ESM, тюнится параметрами.

Правка: Ну и я собственно написал что это главная проблема ESM - light leaking.
Правка2: Вот тут есть немного пояснений http://wrice.blogspot.com/2010/04/why-does-light-leak-happens-on-soft.html

The AndreypПостоялецwww22 июня 201120:35#7
КУл тока вопрос

...
Если я буду делать это для точечных лайтов - там по идее кубемапы флоат куда пишется длина ветктора от точки до лайта... и соотвественно не нативная глубина.. (ну как обычно делают) а у тебя через нативную глубину вроде

и как мне к этому применить ЕСМ?

KpeHDeJIbПостоялецwww22 июня 201121:14#8
The Andreyp
У меня никак руки не доходят, тут два варианта для построения ESM:
1. Писать в карту функцию от линейного расстояния до точки, в итоге зависимость от масштабов модели и все такое, не очень удобно (сейчас этот способ представлен в заметке).
2. Писать в карту функцию от глубины, тут уже влияют ближняя и дальняя плоскости глубины, но тут тюнить проще (это тот способ на который надо статью переделать).

Вобщем у меня уже код то готов, но внести правки в статью все никак времени не найду, на выходных выделю раз уж вопросы появляются.

The AndreypПостоялецwww22 июня 201121:31#9
)) да уж - ты нужен людям

а ЕСМ мне уберет этот алиасинг

http://dl.dropbox.com/u/5862637/R.f.d000.jpg

или это ваще независит от есм

.
математика для кубмапов такая же будет?? имея 2 значения расстояний - текущей сцены и того что записано в кубмапе.. (будь то линейно или нативно глубина)

я просто применяю тужу формулу и все??
или сравниваемые значения надо приводить к интревалу какомунить?

VirTПостоялецwww22 июня 201121:38#10
KpeHDeJIb
void main(void)
{
  const float esm_factor = 0.6;
  color = exp(esm_factor * length(vertex.viewPos.xyz - vertex.position.xyz));
}
Здесь много лишних операций. После умножения похиции на MVP в z координате линейное расстояние от 0 до farPlane, в w от nearPlane до farPlane.
Если хочешь хранить линейную глубину, что более правильно, по просто бери z или w, кому как больше нравится на самом деле.
Если хочешь нелинейную, то z/w.

Дальше, ты зря упустил теорию. Она является самой важной.
>Впринципе именно сейчас нам нужно применить какой-нибудь фильтр к текстуре exp_texture, но на этом я останавливаться сейчас не буду, это на усмотрение читателя
Вот это-то и важно. Почему здесь мы можем использовать GL_LINEAR, а при обычных shadow map не можем? Только линеар? А что будет если туда подставить анизотропную фильтрацию?
Почему мы можем блюрить эти тени, а обычные не можем.

The Andreyp
> а ЕСМ мне уберет этот алиасинг
Это не алиазинг. Здесь проблема с биосом.
> математика для кубмапов такая же будет?? имея 2 значения расстояний - текущей
> сцены и того что записано в кубмапе.. (будь то линейно или нативно глубина)
Да. все делается точно также.

The AndreypПостоялецwww22 июня 201121:56#11
2VirT

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

float zoffset=0.03;

  float depth = textureCube(Shadow, LightVec).a*invRadius+zoffset;
  float thisDepth = length(LightVec)*invRadius;
  bool shadow = thisDepth < depth;

с таким биасом ваще жесть получается

одни обрубки какието...

http://dl.dropbox.com/u/5862637/R.f.d-001.jpg

cubemap - float32

Автор - прошу прощения что порчу атмосферу - прост раз уж зашел разговор

VirTПостоялецwww22 июня 201122:12#12
The Andreyp
Вынеси в отдельный пост тему. Там разберемся.
Все же не очень хорошо здесь это обсуждать.
The AndreypПостоялецwww22 июня 201122:33#13
KpeHDeJIbПостоялецwww22 июня 201123:17#14
VirT
> Здесь много лишних операций.
Я ж говорю, заметка устарела. И ты путаешь, тут пишется не глубина а расстояние от позиции источника света до точки, а глубину как раз надо, после обновления заметки так и будет, вобщем только ждать.

VirT
> Вот это-то и важно.
Кому как, сделать проход фильтром блюра я думаю проще чем найти информацию про ESM на GLSL, это факт :)

Страницы: 1 2 3 4 5 Следующая »

/ Форум / OpenGL community

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

2001—2018 © GameDev.ru — Разработка игр