DirectXでは、このようなことができることを知っています。
struct GBufferVertexOut
{
float4 position : POSITION0;
float4 normal : TEXCOORD0;
float2 texCoord : TEXCOORD1;
};
GBufferFragOut GBuffersFS(GBufferVertexOut inVert)
{
GBufferFragOut buffOut;
buffOut.normal = normalize(inVert.normal);
buffOut.normal = ( buffOut.normal + 1 ) * .5;
buffOut.diffuse = tex2D( diffuseSampler, inVert.texCoord );
buffOut.diffuse.a = tex2D( ambientSampler, inVert.texCoord ).r;
buffOut.specular = float4( 1, 1, 1, 1 );
return buffOut;
}
したがって、フラグメントの結果は、openGLシェーダーを変換して同様のことを実行しようとしている情報のコレクションです。
しかし、あなたもそれをすることができますか?「FragmentColor」用のvec4以外のopenGLフラグメントシェーダーを使用したことがありますが、これまでに何も返さなかったため、さらに返すことができるという情報が見つからないようです。