平凡なゲームクリエイターのメモ帳

ゲームに関する情報や技術の置き場所

Shaderの種類と役割

シェーダーを触りたいけど何から勉強すればいいのか分からない・シェーダーを少し触ったことがあるけどまだ理解が曖昧という方向けに、VertexShader・PixelShader等それぞれのシェーダーの特徴とできることをなるべく簡潔に説明していこうと思います。

 

シェーダーの種類

VertexShader・TessellationShader・GeometryShader・PixelShader・ComputeShaderの5つのシェーダーを今回は紹介します。レンダリングパイプライン(Shaderの通る流れ)の解説は別の記事でしようと思います。

MeshShader等、上記以外にもいろんなシェーダーがあると思いますが今回は割愛させてもらいます...!

それぞれのシェーダーの役割

・VertexShader

頂点単位で加工するシェーダーです。
入力頂点データを座標変換することが基本的な役割になります。
光源や陰影の処理をすることもできます。(←PixelShaderが担当することが多いです)

・TessellationShader

ほぼテッセレーション専用のシェーダーです。
テッセレーションはポリゴンを動的に分割する技術です。
今回はHullShader・Tessellator・DomainShaderの3つを総称してTessellationShaderと紹介させてもらいます。(ややこしいシェーダーなのでまた今度詳しく説明します)

・GeometryShader

複数の頂点ごとに加工するシェーダーです。
基本的には3頂点ごとの三角形のポリゴン(プリミティブ)を加工します。
頂点数の増減・プリミティブの種類を変更・ポイントスプライトの生成等、プリミティブに対するさまざまなアプローチができます。

 

 ・PixelShader

ピクセル単位で加工するシェーダーです。
光源や陰影の処理・ポストエフェクト(後処理)・テクスチャを参照しバンプマッピング等、ピクセルに対するさまざまなアプローチができます。
フラグメントシェーダーと呼ばれることもあります。

 ・ComputeShader

計算・演算を得意とするシェーダーです。
シェーダーという名がついていますが、他のシェーダーと違ってレンダリングパイプラインとは別に独立しており、超高速にさまざまな汎用計算をすることが可能です。
かなり特殊な奴で仲間外れにされがちです。

シェーダーのおすすめ勉強順

はじめにPixelShaderで光源や陰影の処理をして遊ぶのがいいかと思います。
PixelShaderの流れを理解できれば、おのずとVertexShader・GeometryShaderの流れや扱い方も理解できると思います。
TessellationShader・ComputeShaderはややこしい部類なので後回しで大丈夫です。

結局のところ楽しみながら勉強をするのが一番効率が良いので、実装してみたい技術等を見つけたら上記の内容は無視していただいて大丈夫です。
やりたいことをやりましょう!

最後までお読みいただきありがとうございました。