我想计算一个像素投影金字塔在glsl顶点着色器中当前顶点位置处的眼睛空间宽度,但我似乎无法得到正确的数学。这是一个明显不正确的例子:GLSL顶点着色器中的眼睛空间像素宽度
// GLSL VERTEX SHADER
#version 410 compatibility
uniform vec4 viewport; // same as glViewport
in vec4 gl_Vertex;
void main()
{
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
float pixelWidth = gl_Position.z/viewport.z;
<snip>
但是这并没有考虑FOV或剪切平面。
这些函数仅在片段着色器中可用,我在询问顶点着色器,所以这对我没有帮助。 – atb
查看我更新的答案。 –
好的,使用你的语义我需要在顶点着色器当前顶点z深度处的“像素金字塔”的世界空间宽度。你的答案仍然不能帮助我,但感谢您的信息。 – atb