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

Z-Fighting, проблема [решено]

#0
(Правка: 13:06) 13:02, 11 янв. 2021

Приветствую.

Есть сцена, в которой на стене находятся выступающие "нахлобучки". Глубина выступа = 0.23 юнита. За "нахлобучками" отрисовывается стена монолитом.

При реалтайм-рендеринге этой сцены в редакторе Blender, всё в порядке. В своём же движке на OpenGL вывожу - при достаточном отдалении камеры получается z-fighting. Точность Z-буфера - 24 бит, проверял при помощи glGetIntegerv(GL_DEPTH_BITS, &bits). Хотел выставить 32 бита - но система не даёт..

Вот не пойму, почему Blender выводит тоже средствами OpenGL и с этой же сценой нет z-fighting'а, насколько далеко не удаляйся от стены..

Можно конечно в стене под "нахлобучками" вырезать дырки, чтобы не было конфликта, но пока лениво и плюс это приведёт к усложнению геометрии - увеличению числа полигонов..

Для наглядности картинка:

example | Z-Fighting, проблема [решено]

Как видно, выступ довольно явный.. И странно, что в моём движке на большом удалении он приводит к z-файтингу..

Есть ли какие-то идеи? Благодарю.


#1
13:09, 11 янв. 2021

DEN 3D
> Есть ли какие-то идеи? Благодарю.
пробовал ли ты искать инфу по теме?
отчего еще зависит точность z-buffer'a кроме битности?

#2
13:11, 11 янв. 2021

https://habr.com/ru/post/434322/

#3
13:26, 11 янв. 2021

Благодарю. Немного увеличил zNear в параметрах камеры - исчез z-fighting.

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