プログラマブルシェーダー
2019年8月14日 (水) 04:54時点における124.87.119.49 (トーク)による版
プログラマブルシェーダー(英語:programmable shader)とは、グラフィックカード上のシェーダーで独自のプログラム(カスタムシェーダー)を実行させられるものをいう。
概要
初期のシェーダーは「ハードウェアT&L(最近では対義語的に固定シェーダーと呼ばれることが多い)」などと呼ばれ、いわゆるAPI的な感じで「ライティングをする」などの固定機能がGPUに用意されており、プログラマーは何も考えずポリゴンモデルやテクスチャや座標などをGPUに送信すると表示用の一枚ペラの絵が返ってくるというものであった。この方式は簡潔明瞭という利点と、だれが作っても似たように絵になるという欠点があった。
これをアセンブラのようなプログラミング言語で自前で記述できるようにしたのがプログラマブルシェーダーである。後にHLSLやGLSLなどの高級言語などが登場したが、それでも3Dを扱うプログラマーに求められる作業量・記述量は劇的に増えた。
その結果、よほどの事がないかぎり固定シェーダーでこと足りるのにそんなアホくさいことに労力を割くのは得策ではないとしてUnityやUnreal Engineなどのゲームエンジンが爆発的に普及した。
デバッグ
HLSL
Visual Studio Graphics Analyzerで行う。
- 「デバッグ」→「グラフィックス」→「グラフィックス デバッグの開始」
- フレームキャプチャを行う
- サムネイルの上にあるフレーム番号をクリックする
- Visual Studio Graphics Analyzerが起動する
Metal
Xcodeで行う。
- 普通にデバッグ実行する
- 中段ツールバー(ステップ実行などがあるところ)のカメラアイコンをクリックする
- 右側デバッグナビゲーターに「GPU」が追加され、メインウインドウが切り替わる
- 中段ツールバーも入れ替わり、ゴキブリアイコンが登場する
- 中段ツールバーのゴキブリアイコンをクリックする
- バーテックスシェーダか、フラグメントシェーダかを選ぶダイアログが表示される
- 上部のタブでバーテックスシェーダとフラグメントシェーダを切り替え
- 中段のメインウインドウでポリゴンやピクセルを選ぶ
- 下部の「DEBUG」ボタンを押すとステップ実行やウォッチ変数の表示が開始される
- バーテックスシェーダか、フラグメントシェーダかを選ぶダイアログが表示される
GLSL
目視。ひたらす目視。OpenGL系にステップ実行やウォッチ変数など求めてはいけない。