Скорее всего, вы получаете z-бой под крутыми углами (то есть, когда все точки имеют очень похожие значения z), потому что
1) У вас слишком низкое разрешение z-буфера, т. Е. Вы установили 16-разрядный буфер z - попробуйте изменить разрешение на 32-разрядное
2) Ваша модель очень маленькая, т.е. все ваши точки расположены слишком близко друг к другу. Вы можете попробовать увеличить модель.
Использование фиксированного смещения даст противоречивые результаты, поскольку большинство схем z-буфера смещены, чтобы дать более высокое разрешение, чем ближе вы находитесь к плану ближнего клипа, т.е. вам нужно меньшее смещение, чем ближе вы находитесь к плоскости ближнего клипа.
Вот статья gamedev , в которой более подробно обсуждается проблема
Обратите внимание, что сглаживание и изменение шейдера вряд ли помогут здесь (если вы не сделали какой-нибудь необычный пиксельный шейдер для модуляции значений z, но это кажется мне излишним, хотя я не эксперт по пиксельным / фрагментным шейдерам так что это может быть выполнимо)