「シェーダー」の版間の差分
imported>Fallout New Tokyo 編集の要約なし |
Administrator (トーク | 投稿記録) 編集の要約なし |
||
| (5人の利用者による、間の18版が非表示) | |||
| 1行目: | 1行目: | ||
'''シェーダー'''([[英語]] | '''シェーダー'''([[英語]]:shader)とは、本来は3DCGにおいて「陰影処理を行うこと」をいう。現在では「[[GPU]]で行う様々な処理の総称」となっている。 | ||
==[[ | ==概要== | ||
シェーダーは大きくわけて[[GPU]]が固定機能として持つ「[[固定シェーダー]]」と、[[プログラマー]]が独自の処理を記述できる「[[プログラマブルシェーダー]]」に分けられる。 | |||
現在ではプログラマブルシェーダーが主流であるため「シェーダー=プログラマブルシェーダー」となっていることが多い。2018年時点で固定シェーダーを採用している現役製品は[[ニンテンドー3DS]]くらいである。 | |||
また、ほとんどの[[ゲームフレームワーク]]や[[ゲームエンジン]]では無駄に[[プログラミング]]しなくても定番のレンダリング処理はあらかじめ[[固定シェーダー]]として用意されている。これらでは内部的にはプログラマブルシェーダーを叩いているがソフトウェア的に固定シェーダーに見せている。 | |||
最近は[[人工知能]]だ[[ブロックチェーン]]だと[[GPGPU]]の絡みで普通の計算もし易い仕様の[[プログラミング言語]]も増えている。 | |||
==DXライブラリのシェーダー== | |||
[[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の実数で表す形式で入出力する。 | |||
例:[[グレースケール]]化 | 例:[[グレースケール]]化 | ||
| 46行目: | 56行目: | ||
一応[[行列]]の積などの計算もできそうだが、普通に計算したほうが速いし正確。 | 一応[[行列]]の積などの計算もできそうだが、普通に計算したほうが速いし正確。 | ||
==[[DirectX]] | ==DirectXのシェーダー== | ||
[[DirectX]]では「[[HLSL]]」を用いる。 | |||
==Unityのシェーダー== | |||
Unityでは「[[CG言語]]」を用いる。 | |||
==OpenGLのシェーダー== | |||
[[OpenGL]]および[[OpenGL ES]]は「[[GLSL]]」を用いる。 | |||
==[[ | ==Metalのシェーダー== | ||
Metalでは「[[Metal Shading Language]]」を用いる。 | |||
==[[ | == Vulkanのシェーダー == | ||
[[Vulkan]]では「[[GLSL]]」および「[[HLSL]]」の2種類が利用可能となった。 | |||
==関連項目== | ==関連項目== | ||
* [[画像処理]] | *[[画像処理]] | ||
* [[シェーディング言語]] | *[[シェーディング言語]] | ||
*[[MonoGameでシェーダーを使う]] | |||
[[category: コンピューター・グラフィックス]] | |||
[[category: 3DCG]] | |||
[[category: GPU]] | |||