English | Italian | Spanish | Mandarin
TOC: エフェクトとシェーダー
Back: 頂点シェーダーの準備
Next: 表示するための数式
頂点シェーダーはメッシュの頂点ごとに呼ばれます。ここ?で学んだように、頂点シェーダーの入力は今処理されているメッシュの頂点に保存されているデータです:
vs2ps VS( float4 PosO : POSITION, float4 TexCd : TEXCOORD0) { ... }
現在の頂点の位置であるPosOベクトルに関心を向けて下さい。頂点の垂直位置(y座標)に依存したx座標のオフセットを追加してみます:
PosO.x += sin(PosO.y);
波を制御するためにいくつかのパラメータを追加します:
PosO.x += sin(PosO.y * Frequency + Phase) * Amplitude;
そうすると入力を伴う頂点シェーダーは次の様になります:
float Frequency = 10; float Phase = 0; float Amplitude = 0.01; vs2ps VS( float4 PosO : POSITION, float4 TexCd : TEXCOORD0) { //declare output struct vs2ps Out; //offset x coordinate PosO.x += sin(PosO.y * Frequency + Phase) * Amplitude; //transform position Out.Pos = mul(PosO, tWVP); //transform texturecoordinates Out.TexCd = mul(TexCd, tTex); return Out; }
そして、その結果パッチはこの様になります:
anonymous user login
~5h ago
~7d ago
~7d ago
~7d ago
~21d ago
~1mth ago
~1mth ago
~1mth ago
~1mth ago
~1mth ago