Войти
OpenGL communityФорум

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

Страницы: 1 2 3 4 5 Следующая »
#0
12:40, 22 мая 2011

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

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


#1
12:40, 22 мая 2011

Жду рациональной критики :)

#2
14:06, 22 мая 2011

во второй glGenTextures наверно буит depth_texture

#3
14:06, 22 мая 2011

L.A.
> во второй glGenTextures наверно буит depth_texture
Да, сейчас поправим.

#4
14:46, 22 мая 2011

> чем ближе кастер к приемнику тем мягче тень

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

#5
15:03, 22 мая 2011

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

Изображение
#6
15:04, 22 мая 2011

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

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

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

#7
20:35, 22 июня 2011

КУл тока вопрос

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

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

#8
21:14, 22 июня 2011

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

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

#9
21:31, 22 июня 2011

)) да уж - ты нужен людям

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

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

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

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

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

#10
21:38, 22 июня 2011

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 значения расстояний - текущей
> сцены и того что записано в кубмапе.. (будь то линейно или нативно глубина)
Да. все делается точно также.

#11
21:56, 22 июня 2011

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

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

#12
22:12, 22 июня 2011

The Andreyp
Вынеси в отдельный пост тему. Там разберемся.
Все же не очень хорошо здесь это обсуждать.

#13
22:33, 22 июня 2011

VirT

http://www.gamedev.ru/code/forum/?id=149063
it is here

#14
23:17, 22 июня 2011

VirT
> Здесь много лишних операций.
Я ж говорю, заметка устарела. И ты путаешь, тут пишется не глубина а расстояние от позиции источника света до точки, а глубину как раз надо, после обновления заметки так и будет, вобщем только ждать.

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

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

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