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

Расчёт z координаты в фрагментном шейдере

#0
10:21, 16 дек. 2015


#1
11:10, 16 дек. 2015

pdn_mail
> почему у меня всё стянуто к 1?
математика мать её. Всегда так, если аппаратура считает глубину.

#2
11:11, 16 дек. 2015
почему у меня всё стянуто к 1?

Во всем виноваты квантовая запутонность и кот Шрёдингера :)
+ Показать
#3
11:27, 16 дек. 2015

ronniko
> Во всем виноваты квантовая запутанность и кот Шрёдингера
Наконец то всё стало на свои места  8)

#4
11:47, 16 дек. 2015

pdn_mail
> Причём тут аппаратура?
При том, что ей так удобнее и быстрее считать математику.
А так, разумеется, причина в самой сущности матрицы проекции.

#5
11:58, 16 дек. 2015

Считает, да. Вопрос то в другом.
Хорошо, задаю последовательно.
Камера находится в точке 0,0,0, вершина в точке 0,0,-0.001
Когда я задаю glDepthRange(near_,far_); near_ = 0.0001, far = 100.  Ближайшая вершина получается с экранной координатой 0.999962, но она ведь должна быть где-то ближе к 0,0001

#6
12:02, 16 дек. 2015

z буффер приводится к значению от 0.0f до 1.0f. Такой промежуток позволяет математически и аппаратно оптимизировать драйвера и аппаратуру.

#7
12:11, 16 дек. 2015

k119_55524
> z буффер приводится к значению от 0.0f до 1.0f. Такой промежуток позволяет
> математически и аппаратно оптимизировать драйвера и аппаратуру.
Это только значения которые инициализируются по умолчанию, вы можете переопределить их через glDepthRange.
Иначе не считали бы подобным образом:

ndcPos.z = (2.0 * gl_FragCoord.z - gl_DepthRange.near - gl_DepthRange.far) /
    (gl_DepthRange.far - gl_DepthRange.near);
По вашему gl_DepthRange.far - gl_DepthRange.near  всегда равно 1.
#8
12:15, 16 дек. 2015

Там в вашей формуле зачем знак деления стоит?  :)

#9
12:20, 16 дек. 2015

Если считает аппаратура, то график изменения нелинейный. Если считать вручную, то можно добиться линейности, всё от математики, мать её, зависит  :)

#10
12:29, 16 дек. 2015

Прошу прощения если кого ввёл в заблуждение терминологией своей про z буффер. Его здесь нет, я так назвал просто экранные координаты по оси Z в gl_FragCoord.

#11
12:34, 16 дек. 2015

Ясно :)

+ Показать

я сижу тут антибиотиками накачанный

Однако интересный метод изучения 3д графики :)
я сижу тут антибиотиками накачанный

А представь у кого еще хуже дела и он смотрел твою тему :)
+ Показать


PS: Если что , то всегда все сваливай на квантовую запутонность и кота Шрёдингера :) В 3д графике пригодиться.

#12
12:51, 16 дек. 2015

А-ха-ха. Вот это я косанул *)
Как удалить эту ветку? а то такой позор )
И вообще, я сижу тут антибиотиками накачанный, голова туго соображает, а вы злые все, ткнуть носом надо было сильнее, всего делов.

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

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

Тема закрыта.