90 стоял )) я обновил пост 43.. опять видимо када ты писал
)
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 в данном случае это позиция лайта, т.к. рендер мы производим с позиции лайта.
А вообще-то с такими правками корректней, так что обновил исходники и ссылки.
OpenGL ESM omni light demo
thx 1 more time
)
а esm_factor
я так понял это просто чтобы уменьшить число в експ.. чтобы не было переполнений...
интересно как его вычислять...
может основываясь на размере бокса уровня... хз
The Andreyp
> интересно как его вычислять...
Как как, тюнить руками по факту, каких-то общих рекомендаций для его подбора не существует.
слуш а если не ЕСМ то что?
Вобщем почитал про блюр кубемапы и решил что делать его я не буду, там сплошной геморой, неохота связываться :)
Лучше рассмотрю еще технику мягкий теней позже, что-нибудь вроде ESM + PCSS + MipMap, для дирекшонал лайта.
А еще обновил блур фильтр для дирекшонал света http://www.gamedev.ru/files/?id=68861
Вобщем с небольшим хаком получилось сделать размытие кубемапы через блюр всех граней по очереди, хак в том что ближе к краю текстуры размытие не делается, таким образом края остаются "сшиваемыми" и в то же время тень размыта, но там где нету размытия это немного заметно, особенно на монотонных поверхностях если подлететь поближе.
там по идее ктото грит надо семплить кубемапу с dLightVector и тада усреднять...
ты выложишь эту версию?
The Andreyp
> ты выложишь эту версию?
Ну вот пока демка, исходники чуть позже: ESM omni light demo w/blur
Потестируй скажи как будет работать, скрин если можно и в логе если есть ошибки какие-нибудь - тоже сюда.
так намана все вроде
тока вот это
http://dl.dropbox.com/u/5862637/svms.JPG
ты случайно не в скриспасе блюриш тень?
The Andreyp
> ты случайно не в скриспасе блюриш тень?
Нет конечно!
> тока вот это
Я же писал про это уже выше, на границах граней кубемапы не блюрится тень, отсюда и такое вот, поверхность однородная поэтому хорошо заметно.
ну тада все ок
Тема в архиве.