Итак, у меня есть самозванец (реальная геометрия - это куб, возможно, обрезанный, а геометрия импостера - губка Менгера), и мне нужно рассчитать его глубину.
Я могу легко вычислить сумму, которую нужно компенсировать в мировом пространстве. К сожалению, я потратил несколько часов, чтобы не беспокоить его глубину.
Единственные правильные результаты, которые я могу получить, - это когда я иду:
gl_FragDepth = gl_FragCoord.z
В принципе, мне нужно знать, как вычисляется gl_FragCoord.z, чтобы я мог:
- Возьмите обратное преобразование из gl_FragCoord.z в пространство глаз
- Добавить возмущение глубины
- Преобразуйте эту возмущенную глубину обратно в то же пространство, что и исходный gl_FragCoord.z.
Извиняюсь, если это похоже на дублирующий вопрос; там есть несколько других сообщений, которые обращаются к подобным вещам. Однако после реализации всех из них никто не работает правильно. Вместо того, чтобы пытаться выбрать один, чтобы получить помощь, на данный момент я прошу полный код, который это делает. Это должно быть всего несколько строк.