「シェーダー」の版間の差分

imported>Administrator
編集の要約なし
imported>Administrator
編集の要約なし
1行目: 1行目:
'''シェーダー'''([[英語]]:shader)とは、本来は3DCGで陰影処理を行うことをいう。
'''シェーダー'''([[英語]]:shader)とは、本来は3DCGで「陰影処理を」行うことをいう。現在では主に[[GPU]]で行う様々な処理の総称となっている。
現在では主に[[GPU]]で行う処理の総称となっている。
==概要==
シェーダーは大きくわけて[[GPU]]が固定機能として持つ「[[固定シェーダー]]」と、[[プログラマ]]が独自の処理を記述できる「[[プログラマブルシェーダー]]」に分けられる。


 
現在ではプログラマブルシェーダーが主流であるため「シェーダー=プログラマブルシェーダー」となっていることが多い。2018年時点で固定シェーダーを採用している現役製品は[[ニンテンドー3DS]]くらいである。
== 概要 ==
シェーダーは大きくわけてGPUが固定機能として持つ「固定シェーダー」と、
プログラマが独自の処理を記述できる「[[プログラマブルシェーダー]]」に分けられる。
 
現在ではプログラマブルシェーダーが主流であるため「シェーダー=プログラマブルシェーダー」となっていることが多い。2018年時点で固定シェーダーを採用している現役製品はニンテンドー3DSくらいである。


また、ほとんどの[[ゲームフレームワーク]]や[[ゲームエンジン]]では無駄に[[プログラミング]]しなくても定番のレンダリング処理はあらかじめ[[固定シェーダー]]として用意されている。これらでは内部的にはプログラマブルシェーダーを叩いているがソフトウェア的に固定シェーダーに見せている。
また、ほとんどの[[ゲームフレームワーク]]や[[ゲームエンジン]]では無駄に[[プログラミング]]しなくても定番のレンダリング処理はあらかじめ[[固定シェーダー]]として用意されている。これらでは内部的にはプログラマブルシェーダーを叩いているがソフトウェア的に固定シェーダーに見せている。
13行目: 9行目:
最近は[[人工知能]]だ[[ブロックチェーン]]だと[[GPGPU]]の絡みで普通の計算もし易い仕様のプログラミング言語も増えている。
最近は[[人工知能]]だ[[ブロックチェーン]]だと[[GPGPU]]の絡みで普通の計算もし易い仕様のプログラミング言語も増えている。


== DXライブラリのシェーダー ==
==DXライブラリのシェーダー==
[[DXライブラリ]]においては、シェーダーを[[C言語]]っぽい言語で書き、付属のツールで[[コンパイル]]することができる。
[[DXライブラリ]]においては、シェーダーを[[C言語]]っぽい言語で書き、付属のツールで[[コンパイル]]することができる。


=== 頂点シェーダー ===
===頂点シェーダー===
未稿
未稿


=== ピクセルシェーダー ===
===ピクセルシェーダー===
バイナリの主な[[拡張子]]は".pso"すなわち「[[ファンタジースターオンライン|ぷそ]]」である。
バイナリの主な[[拡張子]]は".pso"すなわち「[[ファンタジースターオンライン|ぷそ]]」である。


[[テクスチャ]]([[プログラム]]で指定した画像)上の位置(左上を(0.0,0.0)、右下を(1.0,1.0)とする)などのパラメータが渡され、
[[テクスチャ]]([[プログラム]]で指定した画像)上の位置(左上を(0.0,0.0)、右下を(1.0,1.0)とする)などのパラメータが渡され、
その位置に書き込みたい色の[[データ]]を返す。
その位置に書き込みたい色の[[データ]]を返す。色のデータは、[[RGBA]]の各要素をそれぞれ0.0~1.0の実数で表す形式で入出力する。
色のデータは、[[RGBA]]の各要素をそれぞれ0.0~1.0の実数で表す形式で入出力する。


例:[[グレースケール]]化
例:[[グレースケール]]化
59行目: 54行目:
一応[[行列]]の積などの計算もできそうだが、普通に計算したほうが速いし正確。
一応[[行列]]の積などの計算もできそうだが、普通に計算したほうが速いし正確。


== DirectXのシェーダー==
==DirectXのシェーダー==
[[DirectX]]では上位[[シェーダーモデル]]として[[HLSL]](High-Level Shader Language:上位レベルシェーダ言語)が採用されている。
[[DirectX]]では上位[[シェーダーモデル]]として[[HLSL]](High-Level Shader Language:上位レベルシェーダ言語)が採用されている。


136行目: 131行目:
</pre>
</pre>


== Unityのシェーダー ==
==Unityのシェーダー==
未稿
未稿


== OpenGLのシェーダー ==
==OpenGLのシェーダー==
未稿
未稿


== 関連項目 ==
== Metalのシェーダー ==
* [[画像処理]]
 
* [[シェーディング言語]]
* [[Metal Shading Language]]
* [[MonoGameでシェーダーを使う]]
 
==関連項目==
 
*[[画像処理]]
*[[シェーディング言語]]
*[[MonoGameでシェーダーを使う]]


[[category: コンピューター・グラフィックス]]
[[category: コンピューター・グラフィックス]]
[[category: 3DCG]]
[[category: 3DCG]]