差分

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

シェーダー

2,901 バイト除去, 2019年8月23日 (金) 07:43
編集の要約なし
==DirectXのシェーダー==
[[DirectX]]では上位[[シェーダーモデル]]として[[HLSL]](High-Level Shader Language:上位レベルシェーダ言語)が採用されている。 DirectXでは「[[HLSL]]はDirectX9から実装された高級シェーダー言語であり[[C言語]]風な書き方ができるようになっている。 現在、シェーダーモデル1~5までが存在しており、それぞれでの使える機能・対応する[[DirectX]]自体のバージョンが違うため、注意が必要となる Direct3D 9の場合(シェーダーモデル1.x~3.0)は、[[頂点シェーダー]]と[[ピクセルシェーダー]]の二つが提供されていた。 Direct3D 10.xの場合(シェーダーモデル4.x)は、そこに[[ジオメトリシェーダー]]が追加。 Direct3D 11.xの場合(シェーダーモデル5.0)では、[[ハルシェーダー]]、[[ドメインシェーダー]]、[[コンピュートシェーダー]](計算シェーダー、演算シェーダー)が追加となった。 ただし、コンピュートシェーダーに関してはグラフィックパイプラインの機能ではなく、[[物理演算]]やアニメーション計算などの計算時に[[GPU]]を使用するための機能として提供されている。 なお、ファイルの[[拡張子]]は「[[.fx]]」となっている ---- 例:HLSLによる単純な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のシェーダー==
匿名利用者

案内メニュー