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

Равномерное распределение глубины в z буфере. (комментарии)

Страницы: 1 2 3 Следующая »
#0
16:30, 11 ноя. 2009

Равномерное распределение глубины в z буфере. (комментарии)

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


#1
16:30, 11 ноя. 2009

В начале объявлено

matrix ViewProjection;

потом в вершинном шейдере идет

float4 vec =mul(inPos,WorldView);

опечатка?

#2
21:33, 11 ноя. 2009

Исправляю. WorldView, конечно.

#3
21:37, 11 ноя. 2009

Разве это не приведет к некорректному текстурированию?

#4
21:40, 11 ноя. 2009

С чего бы?
На расчет текстурных координат методика никак не влияет.

#5
21:42, 11 ноя. 2009

Спасибо за инфу, полезно...

#6
21:47, 11 ноя. 2009

Там про один минус не написано - вблизи будет сильнъй z-fighting, т.к. точность вблизи будет ниже чем у нелинейного буфера. И не только z-fighting, будет и альясинг глубинъ совсем близко, если zfar далеко.

#7
22:10, 11 ноя. 2009

GeniusIsme
>С чего бы?
Так значения Z влияют на расчет UV.

#8
22:31, 11 ноя. 2009

>float ScreemHeight;
ScreenHeight

>Потенциально код из предложенного шейдера может работать быстрее, чем еще одно перемножение матриц.
Зачем ещё одно, если можно сделать сразу modelviewprojection.
Да и если два подряд, будет approximately 8 instruction slots used, а с данным шейдером - approximately 18 instruction slots used при компиляции в vs_2_0.
на R600 и выше по тактам выходит одинакого, но на более старых картах может быть хуже. (С одной матрицей - всегда хуже).

>В шейдер нужно пересылать немного меньше данных (на 12 float меньше каждый DIP)
Опять же, при условии передачи modelviewprojection, только проигрываем четыре.

#9
22:32, 11 ноя. 2009

мдэ.

C++

D3DXMATRIX mProj;
D3DXMatrixPerspectiveFovLH(&mProj,fFov,fNear,fFar);
mProj._33/=fFar;
mProj._43/=fFar;
...

HLSL:

float4 vPos = mul(Input.Pos,worldViewProj);
vPos.z = vPos.z * vPos.w;
Output.Pos = vPos;

from http://www.mvps.org/directx/articles/linear_z/linearz.htm

#10
22:35, 11 ноя. 2009

2 namot
Каким же образом?

Вершинный шейдер назначает вершине то UV, которое этой вершине назначено. В общем случае он его не рассчитывает.
Для каждого пикселя значения UV получаются интерполированием значений UV от проекций вершин треугольника. При этом учитываются экранные X и Y вершин, но не Z

2 Z
Ник в тему)

Внесу коррективу. Но я бы не сказал, что в обычных условиях вблизи будет сильный z-fighting. По крайней мере, у себя я не заметил. Но если zfar действительно далеко, то да, уменьшение точности вблизи может стать неприятным.

#11
0:27, 12 ноя. 2009

GeniusIsme
>Для каждого пикселя значения UV получаются интерполированием
> значений UV от проекций вершин треугольника. При этом учитываются
> экранные X и Y вершин, но не Z
Без Z получиться аффинное текстурирование, это выглядит не естественно для треугольников с большими градиентами Z. Такое было только в софтовых растеризаторах. Можно проверить, простой способ, в шейдере присвоить Z одно и тоже значение всем вершинам, и редерить какой нибудь кубик с куллингом (чтоб не иметь проблем с порядком отрисовки).

Интересно было бы посмотреть на это в действии, сравнить результаты.

#12
4:28, 12 ноя. 2009

Можно ли посмотреть трилинейку и анизотропку с/без ?

#13
11:17, 12 ноя. 2009

GeniusIsme
> Но я бы не сказал, что в обычных условиях вблизи будет сильный z-fighting.
Гм, а если так - стандартное распределение вообще-то не случайно придумали. Зачем? Отсюда уже можно отталкиватся и думать. Т.е. я действительнъх причин нелинейного распределения не увидел, одни минуса - а ето странно, люди могут подумать что твой вариант лучше во всех отношениях, что разумеется не верно.
Можно посмотреть и с другой сторонъ: преспективность - она везде в компютерной графике, очень много методов рендеринга используют сей факт - примерно геометрию хорошо делать с нелинейной плотностью, а не наборот. Резолюшн теней - тоже.

#14
12:02, 12 ноя. 2009

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

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

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумГрафика

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