「シェーダー」の版間の差分
ナビゲーションに移動
検索に移動
imported>Administrator (→関連項目) |
imported>Fallout New Tokyo |
||
1行目: | 1行目: | ||
− | '''シェーダー''' | + | '''シェーダー'''([[英語]]:shader)とは、画像を描画時に加工する機能である。 |
==[[DXライブラリ]]のシェーダー== | ==[[DXライブラリ]]のシェーダー== |
2014年2月26日 (水) 00:45時点における版
シェーダー(英語:shader)とは、画像を描画時に加工する機能である。
DXライブラリのシェーダー
DXライブラリにおいては、シェーダーをC言語っぽい言語で書き、付属のツールでコンパイルすることができる。
頂点シェーダー
未稿
ピクセルシェーダー
テクスチャ(プログラムで指定した画像)上の位置(左上を(0.0,0.0)、右下を(1.0,1.0)とする)などのパラメータが渡され、 その位置に書き込みたい色のデータを返す。 色のデータは、RGBAの各要素をそれぞれ0.0~1.0の実数で表す形式で入出力する。
例:グレースケール化
//おまじない struct PS_INPUT { float4 DiffuseColor : COLOR0; float4 SpecularColor : COLOR1; float2 TextureCoord0 : TEXCOORD0; float2 TextureCoord1 : TEXCOORD1; }; struct PS_OUTPUT { float4 Output : COLOR0; }; sampler DiffuseMapTexture : register(s0); //メインのプログラムを書く PS_OUTPUT main(PS_INPUT PSInput) { PS_OUTPUT PSOutput; float4 nowColor; //指定された場所のテクスチャの色を取得するおまじない nowColor=tex2D(DiffuseMapTexture,PSInput.TextureCoord0); //グレースケールにする計算 PSOutput.Output.r=0.298912f*nowColor.r+0.586611f*nowColor.g+0.114478f*nowColor.b; PSOutput.Output.g=PSOutput.Output.r; PSOutput.Output.b=PSOutput.Output.r; PSOutput.Output.a=nowColor.a; //計算結果を返す return PSOutput; }
一応行列の積などの計算もできそうだが、普通に計算したほうが速いし正確。
DirectXのシェーダー
未稿
Unityのシェーダー
未稿
OpenGLのシェーダー
未稿