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

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

Страницы: 1 2 3 Следующая »
#15
12:21, 12 ноя 2009

http://www.humus.name/index.php?page=News&ID=255

#16
12:51, 12 ноя 2009

andriano
> а лишь как одно из специфических решений целесообразных только при некоторых
> экзотических условиях.
Примерно - shadowmap.

#17
12:59, 12 ноя 2009

да низя же так делать ни шедоумеп ничего. почитайте плиз ссылку. если вы в vs выдадите в z линейную величину, а в w единичку, то получите неправильную (не-перспективно корректную) интерполяцию глубины. не получите w-buffer.
для получения w-buffer придется писать глубину попиксельно, что губительно и для шедоумепа в т.ч.

#18
13:04, 12 ноя 2009

Tag
> если вы в vs выдадите в z линейную величину, а в w единичку, то получите
> неправильную (не-перспективно корректную) интерполяцию глубины. не получите
> w-buffer.
Ето разумеется так. Но оно все-равно работает, если геометрия не сильно low-poly в скрин спейсе!

#19
13:09, 12 ноя 2009

Z, ну если тебе чудовищные артефакты побоку и hi-z побоку, то конечно. и я не знаю реальных случаев, где геометрия была бы подходяще тесселирована. хотя, при должной фантазии, - все это еще один аргумент в пользу аппаратной тесселяции! :))

#20
13:21, 12 ноя 2009

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

А я считаю это плюс... Для теней лучше подходит...

Tag
И каким образом это мешает шадоумапу?

Вершинный:

in vec4 in_Vertex;

out float linearZ;

void main()
{
    gl_Position = matMVP * in_Vertex;
    linearZ = ...;
}

Где тут проблема? Где какой w-буффер? Где hi-z?

#21
13:27, 12 ноя 2009

Executor
>И каким образом это мешает шадоумапу?
Таким - что треугольники получаются выпуклые к центру. Это будет нормально? Не может эта выпуклость отбросить тень?

#22
13:29, 12 ноя 2009

Мы статью обсуждаем, а там написано несколько другое. А именно linearZ передается не в отдельном интерполяторе а в Z координате позиции.

#23
13:34, 12 ноя 2009

sgi
> Мы статью обсуждаем, а там написано несколько другое. А именно linearZ
> передается не в отдельном интерполяторе а в Z координате позиции.

Это же просто пример в статье... Зачем же всё буквально воспринимать, там показан принцип...

#24
13:35, 12 ноя 2009

Executor
ну. и что дальше с интерполятором linearZ делать? писать глубину попиксельно?  это медленно.

#25
13:39, 12 ноя 2009

вместо статьи топикстартера читайте лучше заметку хумуса. для лучшего распределения юзайте перевернутый f24s8.

#26
13:57, 12 ноя 2009

Tag
> Z, ну если тебе чудовищные артефакты побоку и hi-z побоку, то конечно.
Ето из-за биаса делалось, не более. Сделать его для нелинейной глубинъ у меня не получилось.

>и я не знаю реальных случаев, где геометрия была бы подходяще тесселирована.
Ну, бъвают такие случаи - у меня влизи бъли полики на четверть екрана и все работало.

#27
14:11, 12 ноя 2009

Tag
> ну. и что дальше с интерполятором linearZ делать? писать глубину попиксельно? это медленно.

gl_FragColor = vec4(linearZ);
С чего это вдруг медленно стало? О_О
В ДХ9 это вообще единственный способ отрендерить в шадоумапу, а что туда пишется (линейная глубина или не линейная, или мусор какой) вообще не имеет никакого значения...

#28
14:15, 12 ноя 2009

Tag
> ну. и что дальше с интерполятором linearZ делать? писать глубину попиксельно?
> это медленно.

в DS под DX9 так и делают ( или целиком xyz пишут или отдельно глубину )

#29
14:34, 12 ноя 2009

Executor
> В ДХ9 это вообще единственный способ отрендерить в шадоумапу
Да ну.

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

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