访问从顶点着色器传递到片段着色器的数据

时间:2018-12-01 12:17:50

标签: opengl glsl shader qt3d

我在GLSL中有这个顶点着色器,正在与Qt3D custom effect/material一起使用:

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数据(如果是GLSL,则为out数据)是从我的顶点着色器传递到片段着色器的。

我是否可以在顶点片段着色器之间使用C ++代码中的varying / out数据?有什么实际的例子可以参考吗?


我的目标是检测并获取具有特定条件的全球/世界位置,例如使z大于下面的10。我需要能够访问我的C ++代码上的这些z > 10位。

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

0 个答案:

没有答案