我想計算一個像素投影金字塔在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