Notifications
Article
[特別企画:Unityスタッフ連載]2週目・名雪 通 [4/5]
Updated 17 days ago
123
0
こんにちわ!ジ・エンジニアこと名雪です!
いよいよ最後のGPUの話をしたいと思います。

GPUのお仕事

月曜日、GPUがHDMIなどに出力して画面表示をしているとお話ししましたが、GPUができることはそれだけではありません。GPUは↓のような流れで3Dグラフィックスを描画することができます。
この流れを「グラフィックスパイプライン」と呼びます。
※もっともGPUがCRTCやVDPと呼ばれたころは、単にビデオメモリの内容を映像信号にして出力するだけでした。
※グラフィックアクセラレータと呼ばれるころになると、直線や曲線の描画や矩形のコピーを高速に行えるようになりました。
※実際は上記の流れを複数回繰り返すことで影など複雑な描画を行なっています。
※現代のグラフィックスパイプラインでは頂点シェーダーとピクセルシェーダーの間にジオメトリシェーダーというものもあります。

頂点シェーダー

頂点シェーダーはポリゴンを構成する頂点の内容を加工することができます。
例えばカメラの位置をオブジェクトの位置を行列計算して、スクリーンに投影するための座標を算出したりします。
※シェーダーとはもともと「陰影・グラデーションを付ける」という意味です。
※位置情報にグラデーション???とも思いますが、経緯があってそう呼んでいるのでしょう。

ピクセルシェーダー

ピクセルシェーダーは頂点シェーダーが処理した情報を元にポリゴンを描画する際、1ピクセルごとに呼ばれるシェーダーです。
テクスチャーから対応する座標の色などを取得して描画を行います。

プログラマブルシェーダー

頂点シェーダー・ピクセルシェーダーとも当初は役割が決まっていたため、GPU上にハードウェアとして実装されていました。
しかし、3Dグラフィックスが進化する中でそのアルゴリズムを毎回ハードウェア化するのは非効率だということで、シェーダーの処理内容をプログラムで記述する「プログラマブルシェーダー」が生まれました。
UnityでもShaderLab言語によりシェーダーを記述することができます。
ハードウェアとして実装されていたシェーダーはプログラマブルシェーダーに対比して「固定機能シェーダー」と呼ばれます。

GPGPU

地球上の誰かがふと思った… 『GPUめっちゃコア多くて速いからグラフィック以外の処理もさせないともったいないわ』
そこで生まれたのがGPGPU(General-purpose computing on graphics processing units…GPUによる汎用計算処理)です。
GPUとビデオメモリを経由してデータをやりとりし、多量のデータを高速に計算することが可能になりました。昨今話題の技術であるディープラーニング神もGPGPUの発明によって実用にいたったと言っていいでしょう。
Unityでもコンピュートシェーダーという機能を通して使うことができます。
※逆に「CPUのコアをむっちゃ増やせばGPUの代わりができるんじゃね?」と思ったCPUメーカーもいましたが、製品はまだリリースされていません。

それでは明日

UnityがGameObjectを配置したシーンを表示する時に、GPUがどのような処理をしているか、神が隕也阜縺ョ遶ッ縺ァ豕「縺悟シセ縺代k 荳サ繧井ソコ縺ッ霈昴>縺ヲ縺?k
繧「繧キ繝?ラ繝?せ繝医↓蜷域?シ縺励
Unityお学びグループ

Tags:
Toru Nayuki
5
Comments