「シェーダー」の版間の差分
imported>Katariya |
imported>Katariya |
||
| 59行目: | 59行目: | ||
ただし、コンピュートシェーダーに関してはグラフィックパイプラインの機能ではなく、物理衝突演算やアニメーション計算などの計算時にGPUを使用するための機能として提供されている。 | ただし、コンピュートシェーダーに関してはグラフィックパイプラインの機能ではなく、物理衝突演算やアニメーション計算などの計算時にGPUを使用するための機能として提供されている。 | ||
なお、ファイルの拡張子は'''.fx'''となっている | |||
---- | |||
例:[[単純な3Dポリゴンの描画]](バージョンはvs2.0,ps2.0) | |||
<pre> | |||
//グローバル変数 | |||
float4x4 worldViewProjMat; //射影変換用行列 | |||
//テクスチャ | |||
texture modelTexture; // テクスチャ情報の格納 | |||
// サンプラー(テクスチャの状態を規定する構造体) | |||
sampler texSampler = sampler_state | |||
{ | |||
Texture =<modelTexture>; | |||
MinFilter =LINEAR; | |||
MagFilter =LINEAR; | |||
MipFilter =NONE; | |||
AddressU =Clamp; | |||
AddressV =Clamp; | |||
}; | |||
//頂点シェーダからピクセルシェーダーに渡す構造体 | |||
struct VertexShaderResult | |||
{ | |||
float4 Position : POSITION; | |||
float2 TexCoord : TEXCOORD0; | |||
}; | |||
//頂点シェーダ | |||
VertexShaderResult VS( float4 _pos:POSITION, float2 _texCoord:TEXCOORD) | |||
{ | |||
VertexShaderResult Out = (VertexShaderResult )0;//出力データ | |||
Out.Position = mul(_pos, worldViewProjMat);//位置座標 | |||
Out.TexCoord = _texCoord;//テクスチャ座標 | |||
return Out; | |||
} | |||
//ピクセルシェーダ | |||
float4 PS( VertexShaderResult _vertexResult ):COLOR | |||
{ | |||
// テクスチャの貼り付け | |||
return tex2D( texSampler , _vertexResult.TexCoord ); | |||
} | |||
// テクニック | |||
// DirectX側でこのテクニックを指定することで | |||
// このテクニックで指定した頂点シェーダーとピクセルシェーダーで描画を行う | |||
technique SampleShader | |||
{ | |||
pass P0 | |||
{ | |||
VertexShader = compile vs_2_0 VS(); // 頂点シェーダーを2.0のシェーダーモデルで描画 | |||
PixelShader = compile ps_2_0 PS(); // ピクセルシェーダーを2.0のシェーダーモデルで描画 | |||
} | |||
} | |||
</pre> | |||
==[[Unity]]のシェーダー== | ==[[Unity]]のシェーダー== | ||