シェーダはGPU(Graphics Processing Unit)で動くプログラムで、3Dモデルデータの座標変換やライティング処理を担います。
まずはGPUの歴史をWikiで軽く振り返ってみましょう。
・1970年代、アーケードゲーム基盤で、CPUの描画処理を補助するプロセッサーが使われ始める
描画処理は比較的重い処理なので、CPUのRAMを節約するため用途として利用されるようになります。(インベーダーゲームなどの時代ですね)
・1980年 NECのPCにグラフィックカードが搭載
2D描画メインでグラフィックカードの解像度・処理速度・コストなどが競われました
3Dは1980年末ごろナムコのレースゲームがアーケード基盤で用いられるようになりました。
・1990年 Windows3.0が登場
グラフィカルユーザインターフェースが主流になり、PCの描画負荷が上がります。
Windows標準の高機能なアクセラレータにより、高価な汎用グラフィックカードが一掃されました。
このころからOpenGL、DirectDrawなどのグラフィックAPI(GPUのプログラミングインターフェース)が発展していきます。
・1994年、GPUの名称がPlaystationでSonyGPUとして正式に表記される
このころにはナムコやセガのアーケードゲームで3Dが一般的になってましたが
PSの登場により3Dゲームが世界に浸透していきました。
PCのビデオカードでは1999年のNVidia のGeforceが人気を博します。
グラフィックAPIも3Dに対応し、表現力が向上しましたが、
コマンドが複雑化し使いづらくなる問題が生じていました。
OPENGLはこれがもとで一時期人気が低迷しました。
・2001年、NVidiaがGeForce3 でプログラマブルシェーダを発表
頂点毎の座標変換・ピクセル毎のライティングなどをシェーダプログラムに任せることで、
肥大化傾向にあったAPIがシンプルに維持できるようになりました。
頂点シェーダ・ピクセルシェーダ・ジオメトリシェーダと種類を増やしつつも
これが現在のGPU・シェーダの標準形式になります。
・2007年 NVidia CUDA を発表 GPGPU(汎用GPU)の始まり
GPUの高い並列演算力を利用して、描画処理だけでなく物理シミュレーション、統計などで
利用されるようになりました。
・2010年~現在
PCビデオカードでは主にNVidia・AMDが競合、
PS4やXBOXOneなどのゲーム機でAMDのGPUが採用され、
NvidiaのGPUは自動車Naviシステムや、スマートフォン・NintendoSwithなどのモバイルGPU、ディープラーニングなど幅広く利用されています。
振り返るとシェーダの導入は画期的だったようです。
命令の複雑さを維持したまま、シェーダをプログラムすることで
グラフィック表現を拡張していくことが可能になりました。
又、プログラミング可能なGPUというアイデアはGPGPUにつながり
GPUの並列性を様々な領域に応用可能となりました。
3Dグラフィック描画の基本的な処理の流れとしては、
CPUがOpenGLなどのAPIでGPUにデータ・コマンドを送り、
頂点シェーダで座標変換、ピクセルシェーダでライティング処理を行って
スクリーン上のピクセル色を算出します。
今回はこのあたりにして、
次回、シェーダによる具体的な処理を解説したいと思います。