Доступ к данным, переданным из вершинного шейдера во фрагментный шейдер - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть этот вершинный шейдер в GLSL, который я использую с пользовательским эффектом / материалом Qt3D :

attribute vec3 vertexPosition;
attribute vec3 vertexNormal;

varying vec3 worldPosition;
varying vec3 worldNormal;

uniform mat4 modelMatrix;
uniform mat3 modelNormalMatrix;
uniform mat4 modelViewProjection;

void main()
{
    worldNormal = normalize( modelNormalMatrix * vertexNormal );
    worldPosition = vec3( modelMatrix * vec4( vertexPosition, 1.0 ) );

    gl_Position = modelViewProjection * vec4( vertexPosition, 1.0 );
}

Я понимаю, что varying данные (out данные в более новых версиях, если GLSL) передаются из моего вершинного шейдера в фрагмента шейдера.

Могу ли я перейти между шейдерными вершинными фрагментами и получить доступ к данным varying / out в моем коде C ++?Есть ли практический пример, на который я могу сослаться?


Моя цель - обнаруживать и получать глобальные / мировые позиции с определенным условием, например, иметь z, который больше 10, как показано ниже,Мне нужно иметь доступ к этим z > 10 позициям в моем коде C ++.

// ...
varying vec3 higherThanTen;
// ...
void main()
{
    // ...
    if ( worldPosition.z > 10 ) {
        higherThanTen = worldPosition;
    }
    // ...
}
...