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

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

Страницы: 1 2 3 4 5 Следующая »
#45
21:13, 2 июля 2011

90 стоял )) я обновил пост 43.. опять видимо када ты писал
)


#46
21:50, 2 июля 2011

The Andreyp
> просто я не понял... почему ты кубмап пассе пишешь вертекс после MVP
> а в лайтпасе сравниваешь с вертекс на MV

По факту нам нужная линейная глубина, по хорошему мы ее получаем после преобразования MVP, по факту же при построении кубмапы писать линейную глубину все равно что писать расстояние от позиции лайта до каждого фрагмента, т.е. можно заменить шейдер построения кубмапы на такой и ничего не изменится (если тебе так понятнее будет):

// cube.vs
layout(location = VERT_POSITION) in vec3 position;

uniform struct Transform
{
  vec3 viewPos;
  mat4 viewProjMat;
  mat4 modelMat;
} transform;

out Vertex
{
  vec4 distance;
} vertex;

void main(void)
{
  vec4 vertPosition = transform.modelMat * vec4(position, 1.0);
  vertex.distance   = vertPosition - vec4(transform.viewPos, 1.0);
  gl_Position       = transform.viewProjMat * vertPosition;
}

//cube.fs
in Vertex
{
  vec4 distance;
} vertex;

layout(location = FRAG_COLOR) out float color;

void main(void)
{
  const float esm_factor = 0.8;
  color = exp(esm_factor * length(vertex.distance));
}

PS. transform.viewPos в данном случае это позиция лайта, т.к. рендер мы производим с позиции лайта.

#47
22:29, 2 июля 2011

А вообще-то с такими правками корректней, так что обновил исходники и ссылки.
OpenGL ESM omni light demo

#48
22:46, 2 июля 2011

thx 1 more time
)

#49
0:31, 3 июля 2011

а esm_factor

я так понял это просто чтобы уменьшить число в експ.. чтобы не было переполнений...

интересно как его вычислять...

может основываясь на размере бокса уровня... хз

#50
2:30, 3 июля 2011

The Andreyp
> интересно как его вычислять...
Как как, тюнить руками по факту, каких-то общих рекомендаций для его подбора не существует.

#51
12:44, 3 июля 2011

слуш а если не ЕСМ то что?

#52
14:44, 3 июля 2011

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

Лучше рассмотрю еще технику мягкий теней позже, что-нибудь вроде ESM + PCSS + MipMap, для дирекшонал лайта.

#53
15:17, 3 июля 2011

А еще обновил блур фильтр для дирекшонал света http://www.gamedev.ru/files/?id=68861

#54
15:48, 3 июля 2011

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

Вот такое вот размытие с кубемапой 256х256 на каждую грань:
Изображение

#55
15:53, 3 июля 2011

там по идее ктото грит надо семплить кубемапу с dLightVector и тада усреднять...

ты выложишь эту версию?

#56
16:03, 3 июля 2011

The Andreyp
> ты выложишь эту версию?
Ну вот пока демка, исходники чуть позже: ESM omni light demo w/blur

Потестируй скажи как будет работать, скрин если можно и в логе если есть ошибки какие-нибудь - тоже сюда.

#57
16:13, 3 июля 2011

так намана все вроде
тока вот это

http://dl.dropbox.com/u/5862637/svms.JPG

ты случайно не в скриспасе блюриш тень?

#58
16:18, 3 июля 2011

The Andreyp
> ты случайно не в скриспасе блюриш тень?
Нет конечно!

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

#59
16:26, 3 июля 2011

ну тада все ок

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

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