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

Как еще можно сделать Zoom

#0
(Правка: 13:12) 13:02, 1 дек. 2019

кроме модификации проекционной матрицы? Есть ли варианты?
Сейчас у меня Zoom делается так:

+ Показать

но хотелось бы сохранить изначальную проекционную матрицу:
+ Показать

Проблема в том, что при таком Zoom'е в GL на границе Z-Буфера возникает лесенка:
Zoom-дефект | Как еще можно сделать Zoom
Интерполяция не достаточно точная.

В софтрендере из-за 64-битной точности такого глюка нет.

+ Показать

#1
19:55, 1 дек. 2019

Добавь отдельную матрицу для масштабирования

#2
20:51, 1 дек. 2019

eDmk
Депс рэйнж тоже надо зумить, чтоб небыло таких проблем.

#3
20:52, 1 дек. 2019

Ну и проверку глубины лучше выставить в LESS_EQUAL, вместо LESS.

#4
14:00, 3 дек. 2019

eDmk
> кроме модификации проекционной матрицы? Есть ли варианты?
> Сейчас у меня Zoom делается так:

Движением мира вместо скейла в проекции, не?

#5
14:24, 3 дек. 2019

Или, как вариант, крутить фов.

#6
14:43, 3 дек. 2019

nonamezerox
> Движением мира вместо скейла в проекции, не?
>
>
В софтрендере у меня своя проекция и там как раз Zoom и работает. Проблем нет.
В OpenGL проекция зарыта. Модификация PM-матрицы дает эффект лесенки.
Это ошибка из-за недостатка точности при интерполяции. Если брать числа одинарной точности,
то она как раз и возникает. При Double такого нет. FOV у меня как раз через проекционную матрицу и модифицируется. Получается «лесенка». Помогает только уменьшение объектов.
Т.е. смещение размеров объектов в диапазон [0..1].

#7
14:50, 3 дек. 2019

eDmk
Депс рейнж масштабируй пропорционально зуму.

#8
14:59, 3 дек. 2019

nes
> Депс рейнж масштабируй
Как!? Он всегда [0..1].

#9
15:15, 3 дек. 2019

eDmk
> Как!? Он всегда [0..1].
glDepthRange

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