差分

ナビゲーションに移動 検索に移動

シェーダー

1,641 バイト追加, 2014年10月2日 (木) 15:14
ただし、コンピュートシェーダーに関してはグラフィックパイプラインの機能ではなく、物理衝突演算やアニメーション計算などの計算時に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]]のシェーダー==
匿名利用者

案内メニュー