我在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;
}
// ...
}