そうめんさんが個人的なメモとしてHLSLについて分かったことをつらつらと
勉強しながらなので間違ってることもあるかも
その時は指摘してもらえれば幸いです
-
HLSLのエントリーポイントはtechnique*(11行目)
-
C言語でいうmain()関数のようなもの
-
techniqueの中では
パス
という括りの中を流れ、途中で
他のパスに行くことはない
-
パスは複数あってもいい
-
パスの中には
頂点シェーダ関数
*(14行目)と
ピクセルシェーダ関数
*(15行目)の呼び出しがあり、プログラムからパスを選択し描画する
-
それぞれの関数が複数呼び出された時、
最後に呼び出された物
が適応される
-
呼び出される順番は頂点シェーダ関数から
-
頂点シェーダ関数には
頂点シェーダ入力セマンティクス
というものが一つづつ渡される(なんのこっちゃ
-
ただし、上のリンクを見てもらえば分かる通り頂点シェーダ入力セマンティクスには沢山の項目があり、全部覚えるのは大変! ということで引数を指定できる素晴らしい機能が
-
3行目 (float3 pos : POSITION) の用に( 型名 変数名 : セマンティクス) とすることで引数を選択することができる!便利!
-
頂点シェーダ関数は返り値として
頂点シェーダ出力セマンティクス
というものを返す
-
ピクセルシェーダ関数でも同様にピクセルシェーダ入力セマンティクスというものがある
-
と言うことはピクセルシェーダ出力セマンティクスもあり、ピクセルシェーダ関数が返す色がスクリーンに表示される
何も動作しない最小のプログラム(fx composer2.5 で書き出された空のfxファイル
1: float4x4 WorldViewProj : WorldViewProjection;
2:
3: float4 mainVS(float3 pos : POSITION) : POSITION{
4: return mul(float4(pos.xyz, 1.0), WorldViewProj);
5: }
6:
7: float4 mainPS() : COLOR {
8: return float4(1.0, 1.0, 1.0, 1.0);
9: }
10:
11: technique technique0 {
12: pass p0 {
13: CullMode = None;
14: VertexShader = compile vs_3_0 mainVS();
15: PixelShader = compile ps_3_0 mainPS();
16: }
17: }
最終更新:2011年10月24日 03:49