В простом рендере OpenGL значения глубины будут генерироваться матричными преобразованиями в вершинном шейдере.В моем случае мой базовый вершинный шейдер выполняет следующие действия:
mat4 mvpMatrix = ProjectionMatrix * ViewMatrix * ModelMatrix;
vec4 pos = vec4(ObjectPosition.x, ObjectPosition.y, ObjectPosition.z, 1.0);
gl_Position = mvpMatrix * pos;
Три матрицы, которые служат в качестве входных данных, контролируются моим приложением;Я имею полный контроль над ними и могу отработать процесс вручную, если захочу.
Подведем итог: выяснить, какие матрицы вы отправляете в вершинный шейдер, и выполните математику.Преобразование происходит в самом вершинном шейдере, и наиболее важная матрица в вашем случае, вероятно, ProjectionMatrix, она заботится о отображении в [0,1], потому что она (по крайней мере, должна) знать область просмотра.