Size: a a a

pro.graphon (and gamedev)

2020 April 05

VK

Vitaliy ◀️TriΔng3l▶️ Kuzmin in pro.graphon (and gamedev)
Экспонента -127 это денормалы, которые флюшатся в 0 (в far), значит, один такой диапазон теряем
источник

VK

Vitaliy ◀️TriΔng3l▶️ Kuzmin in pro.graphon (and gamedev)
Так что, far plane во float32 можно без потери точности делать near plane * 2^127
источник

d

disba1ancer in pro.graphon (and gamedev)
Vitaliy ◀️TriΔng3l▶️ Kuzmin
Экспоненты получаются меньше нуля, у флоата 9 бит на экспоненту, и она хранится со смещением 127
а не 8?
источник

VK

Vitaliy ◀️TriΔng3l▶️ Kuzmin in pro.graphon (and gamedev)
disba1ancer
а не 8?
а, да, 8
источник

d

disba1ancer in pro.graphon (and gamedev)
Vitaliy ◀️TriΔng3l▶️ Kuzmin
Так что, far plane во float32 можно без потери точности делать near plane * 2^127
я всё равно не понял, не объясняй, видимо время ещё не пришло
источник

VK

Vitaliy ◀️TriΔng3l▶️ Kuzmin in pro.graphon (and gamedev)
Я сам недавно подставлял значения в обычную матрицу перспективной проекции, с near и far
источник

VK

Vitaliy ◀️TriΔng3l▶️ Kuzmin in pro.graphon (and gamedev)
источник

VK

Vitaliy ◀️TriΔng3l▶️ Kuzmin in pro.graphon (and gamedev)
https://docs.microsoft.com/en-us/windows/win32/dxtecharts/images/d3dxfrm62.gif (только это надо транспонировать)
источник

d

disba1ancer in pro.graphon (and gamedev)
Vitaliy ◀️TriΔng3l▶️ Kuzmin
Я сам недавно подставлял значения в обычную матрицу перспективной проекции, с near и far
а как тебе мой способ расчёта проекции в шейдере?
источник

VK

Vitaliy ◀️TriΔng3l▶️ Kuzmin in pro.graphon (and gamedev)
disba1ancer
а как тебе мой способ расчёта проекции в шейдере?
Это какой? Тимур ещё постил из какой-то книги (GPU Pro 7, что ли), в один вектор упаковать всё. Но так и надо, зачем лишние операции с нулями, если ты чётко знаешь, что там у тебя всегда будут нули
источник

d

disba1ancer in pro.graphon (and gamedev)
источник

d

disba1ancer in pro.graphon (and gamedev)
Vitaliy ◀️TriΔng3l▶️ Kuzmin
Так что, far plane во float32 можно без потери точности делать near plane * 2^127
это ты про z-буфер на float?
источник

VK

Vitaliy ◀️TriΔng3l▶️ Kuzmin in pro.graphon (and gamedev)
disba1ancer
это ты про z-буфер на float?
Да
источник

VK

Vitaliy ◀️TriΔng3l▶️ Kuzmin in pro.graphon (and gamedev)
допустим, near 1024, far 0.25
источник

d

disba1ancer in pro.graphon (and gamedev)
ну с флоатом там вообще меньше проблем, но на гл полная жопа
источник

VK

Vitaliy ◀️TriΔng3l▶️ Kuzmin in pro.graphon (and gamedev)
a = -(0.25 * 1024) / (0.25 - 1024) = 0.25006105
b = 0.25 / (0.25 - 1024) = -0.0002442
источник

VK

Vitaliy ◀️TriΔng3l▶️ Kuzmin in pro.graphon (and gamedev)
d(0.25) = 0.25006105 / 0.25 - 0.0002442 = 1
d(0.5) = 0.25006105 / 0.5 - 0.0002442 = 0.4998779
d(1) = 0.25006105 / 1 - 0.0002442 = 0.24981685
источник

VK

Vitaliy ◀️TriΔng3l▶️ Kuzmin in pro.graphon (and gamedev)
Короче, не знаю, откуда погрешность вылезла, но что 0.24981685, что 0.25 это примерно 1 * 2^-2 (то есть, Z на 4 near planes от Z на 2 near planes отличается практически только величиной экспоненты), суть та же хоть с far plane, хоть без
источник

d

disba1ancer in pro.graphon (and gamedev)
Vitaliy ◀️TriΔng3l▶️ Kuzmin
Короче, не знаю, откуда погрешность вылезла, но что 0.24981685, что 0.25 это примерно 1 * 2^-2 (то есть, Z на 4 near planes от Z на 2 near planes отличается практически только величиной экспоненты), суть та же хоть с far plane, хоть без
вопрос в том на сколько велика эта погрешность, померить бы в специальных единицах непомню как они называются, помню что единица это расстояние между двумя соседними представимыми числами
источник

d

disba1ancer in pro.graphon (and gamedev)
всем ночи
источник