02_vertex_and_fragment_program

今回は,バーテックスシェーダとフラグメントシェーダの両方を使う(バーテックスシェーダは前回と同じもの).
GLの方で行う処理の変更点は,01_vertex_programと違い,フラグメントシェーダの設定も行う必要があるぐらい.

フラグメントシェーダ(C2E2f_passthru.cg)を見ると,
struct C2E2f_Output {
float4 color : COLOR;
};

C2E2f_Output C2E2f_passthru(float4 color : COLOR)
{
C2E2f_Output OUT;
OUT.color = color;
return OUT;
}
入力はフラグメントの色のみで,これはセマンティック変数.出力も色のみ.何か体調がよくない.風邪引き始めのような雰囲気.
このフラグメントシェーダは,ラスタライザによって内挿された色をそのままフラグメントの色として出力する.

Cgのチュートリアルのページに書いてある話を意訳すると,
フラグメントシェーダのプログラムはバーテックスよりも簡単.バーテックスは座標を返さなければならず,更にカラー,テクスチャ座標,それ以外のバーテックス毎の出力を返すかもしれない.
一方で,フラグメントは,全ての引数からフレームバッファを更新する一つのカラーを出力する(場合によってはdepthを返したりするけど).
と言った感じか.
実際にプログラムを実行すると,全ての頂点が緑色をした複数の星が表示される.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s