GLSL: Как получить пиксель x, y, z положение мира?

Я хочу настроить цвета в зависимости от того, в каком положении xyz они находятся в мире.

Я пробовал это в своем шейдере фрагментов:

varying vec4 verpos;

void main(){
    vec4 c;
    c.x = verpos.x;
    c.y = verpos.y;
    c.z = verpos.z;
    c.w = 1.0;

    gl_FragColor = c;
}

, но кажется, что цвета меняются в зависимости от моей камеры угол / положение, как сделать координаты независимыми от положения / угла моей камеры?

Вот мой вершинный шейдер:

varying vec4 verpos;

void main(){
    gl_Position = ftransform();
    verpos = gl_ModelViewMatrix*gl_Vertex;
}

Edit2: изменен заголовок, поэтому мне нужны мировые координаты, а не координаты экрана!

Edit3: добавил мой полный код

25
задан Rookie 4 February 2011 в 15:35
поделиться