「バーテックスシェーダー」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
imported>Administrator
1行目: 1行目:
'''バーテックスシェーダー'''([[英語]]:Vertex Shader、和名:頂点シェーダー)とは、[[シェーダー]]のうち、[[グローバル変数]](実質的に[[定数]])と[[ポリゴン]]の頂点データが入力され、それを加工して、出力するものをいう。一般的には[[バーテックスバッファ]]から入力を受け取る。
+
'''バーテックスシェーダー'''([[英語]]:Vertex Shader、和名:頂点シェーダー)とは、[[シェーダー]]のうち、[[グローバル変数]](実質的に[[定数]])と[[ポリゴン]]の頂点データが入力され、それを加工して、出力するものをいう。
  
バーテックスシェーダーと[[ピクセルシェーダー]]の2種類は基本中の基本であるため、[[シェーダーモデル]]を問わず、[[DirectX]]や[[MonoGame]]、[[Unity]]などのプラットフォームを問わず扱えるはずである。
+
 
 +
== 概要 ==
 +
バーテックスシェーダーと[[ピクセルシェーダー]]の2種類は基本中の基本であるため、[[シェーダーモデル]]を問わず、[[DirectX]]や[[MonoGame]]、[[Unity]]などのプラットフォームも問わず扱えるはずである。
 +
 
 +
[[file:バーテックスシェーダー.png|none]]
 +
 
 +
バーテックスシェーダーは、[[バーテックスバッファ]]および[[インデックスバッファ]]で無駄を削がれた頂点データ群を入力として受け取る。
 +
 
 +
出力も頂点データ群である。
 +
この出力は[[ジオメトリシェーダー]]に渡されて[[ピクセル]]群に分解され、その後ピクセルシェーダーに渡される。
 +
なお、近年のパイプラインではバーテックスシェーダーの直後に「[[ハルシェーダー]]」「[[テッセレーター]]」「[[ドメインシェーダー]]」の[[テッセレーション]]三兄弟(実質3つで1つ)を経由することもある。
  
 
== 主な用途 ==
 
== 主な用途 ==

2018年8月31日 (金) 02:11時点における版

バーテックスシェーダー英語:Vertex Shader、和名:頂点シェーダー)とは、シェーダーのうち、グローバル変数(実質的に定数)とポリゴンの頂点データが入力され、それを加工して、出力するものをいう。


概要

バーテックスシェーダーとピクセルシェーダーの2種類は基本中の基本であるため、シェーダーモデルを問わず、DirectXMonoGameUnityなどのプラットフォームも問わず扱えるはずである。

バーテックスシェーダー.png

バーテックスシェーダーは、バーテックスバッファおよびインデックスバッファで無駄を削がれた頂点データ群を入力として受け取る。

出力も頂点データ群である。 この出力はジオメトリシェーダーに渡されてピクセル群に分解され、その後ピクセルシェーダーに渡される。 なお、近年のパイプラインではバーテックスシェーダーの直後に「ハルシェーダー」「テッセレーター」「ドメインシェーダー」のテッセレーション三兄弟(実質3つで1つ)を経由することもある。

主な用途

主に服や草などが「なびく系」のアニメーションを行うのに用いられていることが多い。これらは物理演算エンジンで細かく計算してもいいが、たとえば草原の草を1本単位で物理演算するのはCPUでは論外、専用ハードウエアでも厳しい。そういった場面でそれらしく見せるのに使われる。

小難しいことをしない場合はバーテックスシェーダーはほとんど使われず、頂点データにカメラ座標を行列乗算(カメラから見た位置に変換)して出力することも多い。MonoGameのサンプルプログラムではモデルとカメラのジオメトリ変換CPUで計算していることが多いが、バーテックスシェーダーを使うとかなり速くなるよ。

関連項目