「プログラマブルシェーダー」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
8行目: 8行目:
 
その結果、よほどの事がないかぎり[[固定シェーダー]]でこと足りるのにそんなアホくさいことに労力を割くのは得策ではないとして[[Unity]]や[[Unreal Engine]]などの[[ゲームエンジン]]が爆発的に普及した。
 
その結果、よほどの事がないかぎり[[固定シェーダー]]でこと足りるのにそんなアホくさいことに労力を割くのは得策ではないとして[[Unity]]や[[Unreal Engine]]などの[[ゲームエンジン]]が爆発的に普及した。
  
== デバッグ ==
+
==デバッグ==
  
=== HLSL ===
+
===HLSL===
 
Visual Studio Graphics Analyzerで行う。
 
Visual Studio Graphics Analyzerで行う。
  
* 「デバッグ」→「グラフィックス」→「グラフィックス デバッグの開始」
+
*「デバッグ」→「グラフィックス」→「グラフィックス デバッグの開始」
* フレームキャプチャを行う
+
*フレームキャプチャを行う
* サムネイルの上にあるフレーム番号をクリックする
+
*サムネイルの上にあるフレーム番号をクリックする
* Visual Studio Graphics Analyzerが起動する
+
*Visual Studio Graphics Analyzerが起動する
  
=== Metal ===
+
===Metal===
 
Xcodeで行う。
 
Xcodeで行う。
  
* 普通にデバッグ実行する
+
*普通にデバッグ実行する
* 中段ツールバー(ステップ実行などがあるところ)のカメラアイコンをクリックする
+
*中段ツールバー(ステップ実行などがあるところ)のカメラアイコンをクリックする
** 右側デバッグナビゲーターに「GPU」が追加され、メインウインドウが切り替わる
+
**[[ファイル:Xcode-metal-shader-debug-1.png|境界|520x520ピクセル]]
** 中段ツールバーも入れ替わり、ゴキブリアイコンが登場する
+
**右側デバッグナビゲーターに「GPU」が追加され、メインウインドウが切り替わる
* 中段ツールバーのゴキブリアイコンをクリックする
+
**中段ツールバーも入れ替わり、ゴキブリアイコンが登場する
** バーテックスシェーダか、フラグメントシェーダかを選ぶダイアログが表示される
 
*** 上部のタブでバーテックスシェーダとフラグメントシェーダを切り替え
 
*** 中段のメインウインドウでポリゴンやピクセルを選ぶ
 
*** 下部の「DEBUG」ボタンを押すとステップ実行やウォッチ変数の表示が開始される
 
  
=== GLSL ===
+
*中段ツールバーのゴキブリアイコンをクリックする
 +
**[[ファイル:Xcode-metal-shader-debug-2.png|520x520ピクセル]]
 +
**バーテックスシェーダか、フラグメントシェーダかを選ぶダイアログが表示される
 +
***上部のタブでバーテックスシェーダとフラグメントシェーダを切り替え
 +
***中段のメインウインドウでポリゴンやピクセルを選ぶ
 +
***下部の「DEBUG」ボタンを押すとステップ実行やウォッチ変数の表示が開始される
 +
 
 +
===GLSL===
 
目視。ひたらす目視。OpenGL系にステップ実行やウォッチ変数など求めてはいけない。
 
目視。ひたらす目視。OpenGL系にステップ実行やウォッチ変数など求めてはいけない。
  

2019年8月14日 (水) 04:58時点における版

プログラマブルシェーダー英語:programmable shader)とは、グラフィックカード上のシェーダーで独自のプログラム(カスタムシェーダー)を実行させられるものをいう。

概要

初期のシェーダーは「ハードウェアT&L(最近では対義語的に固定シェーダーと呼ばれることが多い)」などと呼ばれ、いわゆるAPI的な感じで「ライティングをする」などの固定機能がGPUに用意されており、プログラマーは何も考えずポリゴンモデルやテクスチャや座標などをGPUに送信すると表示用の一枚ペラの絵が返ってくるというものであった。この方式は簡潔明瞭という利点と、だれが作っても似たように絵になるという欠点があった。

これをアセンブラのようなプログラミング言語で自前で記述できるようにしたのがプログラマブルシェーダーである。後にHLSLGLSLなどの高級言語などが登場したが、それでも3Dを扱うプログラマーに求められる作業量・記述量は劇的に増えた。

その結果、よほどの事がないかぎり固定シェーダーでこと足りるのにそんなアホくさいことに労力を割くのは得策ではないとしてUnityUnreal Engineなどのゲームエンジンが爆発的に普及した。

デバッグ

HLSL

Visual Studio Graphics Analyzerで行う。

  • 「デバッグ」→「グラフィックス」→「グラフィックス デバッグの開始」
  • フレームキャプチャを行う
  • サムネイルの上にあるフレーム番号をクリックする
  • Visual Studio Graphics Analyzerが起動する

Metal

Xcodeで行う。

  • 普通にデバッグ実行する
  • 中段ツールバー(ステップ実行などがあるところ)のカメラアイコンをクリックする
    • Xcode-metal-shader-debug-1.png
    • 右側デバッグナビゲーターに「GPU」が追加され、メインウインドウが切り替わる
    • 中段ツールバーも入れ替わり、ゴキブリアイコンが登場する
  • 中段ツールバーのゴキブリアイコンをクリックする
    • Xcode-metal-shader-debug-2.png
    • バーテックスシェーダか、フラグメントシェーダかを選ぶダイアログが表示される
      • 上部のタブでバーテックスシェーダとフラグメントシェーダを切り替え
      • 中段のメインウインドウでポリゴンやピクセルを選ぶ
      • 下部の「DEBUG」ボタンを押すとステップ実行やウォッチ変数の表示が開始される

GLSL

目視。ひたらす目視。OpenGL系にステップ実行やウォッチ変数など求めてはいけない。

関連項目

  • CUDA = 最先端、NVIDIA製品でしか動かない
  • HLSL = CUDAから実験的な機能を排除したもの。唯一まともなデバッガがある。
  • GLSL = OpenGLValkanなどで使われている。
  • Metal = Apple製品はOpenGLが禁止されこれ一本になった