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

GPSM: Geometry Pitch Shadow Map (комментарии) (11 стр)

Страницы: 16 7 8 9 10 11
#150
14:12, 16 ноя. 2013
С какой стати в w хранится глубина? В w всегда 1 находится на сколько мне известно, а за глубину отвечает z. Или я что-то путаю? Если путаю, то объясните пожалуйста что.
Если разберешься, как строятся матрицы проекции - таких вопросов задавать не будешь. После умножения на матрицу проекции в W как раз оказывается глубина.
#151
15:48, 16 ноя. 2013

MrShoor
> Если разберешься, как строятся матрицы проекции - таких вопросов задавать не
> будешь.
Да, в том и дело, что из всех описаний как это делается следует, что в w всегда 1, а в z глубина.
И если я не правильно разобрался, прошу помочь разобраться правильно.

Вот возьмем пример (http://www.songho.ca/opengl/gl_projectionmatrix.html)
Допустим у нас ортогональная матрица проекции. Зададим для нее l = -r = width/2, b = -t = height/2, n = -f = depth/2. Получим матрицу

mOrtho
(2/width     0              0             0)
(0           2/height       0             0)
(0           0             -2/depth       0)
(0           0              0             1)

И пусть матрица ModelView единичная. Тогда умножая mOrtho на вектор (x, y, z, w) (где w всегда равно 1, так?) получаем

mOrtho
(2/width     0              0             0)   (x)   ( 2x/width )
(0           2/height       0             0) * (y) = ( 2y/height)
(0           0             -2/depth       0)   (z)   (-2z/depth )
(0           0              0             1)   (w)   ( w        )

Т.е. w координата полученного вектора равна 1, а информация о глубине хранится в z.

Ну и вообще проекционная матрица нужна для того, чтоб диапазон значений по x ужимать с (l, r) -> (-1, 1), по y (b, t) -> (-1, 1), по z (-f, -n) -> (-1, 1).
В каком месте в w может попасть глубина?

#152
18:06, 16 ноя. 2013

Все понял. Здесь оказывается используется перспективная проекция.

#153
13:48, 17 ноя. 2013

MaxGucci
Код шейдера был написан на HLSL

float4 posL=mul(mul(IN.position,matWorld),matLight);

Тут и заливается w наверное =)
И на сколько я помню (давно не работал с hlsl) w хранит глубину иначе чем в z.

#154
15:34, 17 ноя. 2013

Аврелий
В w сохраняется просто z координата пикселя. Так устроена матрица перспективной проекции. В z же записывается величина, которая после деления клипается в пределах [0;1], что соответствует области от Near до Far плоскости в DirectX. Для OGL все ровно то же самое, только величина в z после перспективного деления клипается по [-1;1].

Прошло более 1 года
#155
9:56, 14 авг. 2015

Реализовал у себя. Блин, безумно мозолит глаза дрожание теней при движении. Самый весомый аргумент в пользу CSM.
Из-за него GPSM дико алиасит на тонких предметах вдалеке, типа стволов деревьев. Из-за неустранимого дрожания это очень заметно.

Прошло более 1 года
#156
18:55, 2 мар. 2017

-Eugene-
> Реализовал у себя. Блин, безумно мозолит глаза дрожание теней при движении.
> Самый весомый аргумент в пользу CSM.
> Из-за него GPSM дико алиасит на тонких предметах вдалеке, типа стволов
> деревьев. Из-за неустранимого дрожания это очень заметно.

надо было ввести шаг на позицию камеры для ренера источника света... но прошло уже 2 года, так что наверное не актуально =(

#157
19:18, 2 мар. 2017

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

Страницы: 16 7 8 9 10 11
ПрограммированиеФорумГрафика

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