Visual Studio のグラフィックス診断ツールの 1 つである [グラフィックス ピクセル履歴] は、特定のピクセルがゲームまたはアプリケーションの特定のフレームの間に Direct3D のイベントによってどのような影響を受けたかを理解するのに役立ちます。
[グラフィックス ピクセル履歴] ウィンドウを次に示します。
![]()
ピクセルの履歴について
[グラフィックス ピクセル履歴] を使用すると、レンダー ターゲットの特定のピクセルが特定のフレームの間に Direct3D のイベントによってどのような影響を受けたかを分析できます。後続のイベント (または同じイベントの後続のプリミティブ) によってピクセルの最終的なカラー値の変更が続行される場合でも、特定の Direct3D イベントのレンダリングに関する問題を特定することができます。たとえば、ピクセルが正しく表示されず、別の半透明のピクセルによって覆われてしまうため、両ピクセルの色がフレーム バッファーでブレンドされることがあります。このような問題は、レンダー ターゲットの最終的なコンテンツがあればそれに従って診断できますが、ない場合は困難です。
[グラフィックス ピクセル履歴] ウィンドウには、選択したフレームの過程におけるピクセルの全履歴が表示されます。ウィンドウの上部にある [最終フレーム バッファー] には、フレームの最後にフレーム バッファーに書き込まれる色と、ピクセルに関する追加情報 (所属するフレーム、画面座標など) が表示されます。また、この領域には [アルファの描画] チェック ボックスがあります。このチェック ボックスをオンにすると、[最終フレーム バッファー] のカラー値と中間カラー値がチェッカー ボード パターンで透過的に表示されます。チェック ボックスがオフの場合、カラー値のアルファ チャネルは無視されます。
ウィンドウの下部には、ピクセルの色に影響を与える可能性があるイベントと、フレーム バッファーのピクセルの初期カラー値と最終カラー値を表す [初期] と [最終] の擬似イベントが表示されます。最初の色の値は、ピクセル (通常は Clear のイベント) の色を変更した最初のイベントによって決まります。ピクセルに影響を与えるイベントが他にない場合でも、ピクセルの履歴には常にこの 2 つの擬似イベントが存在します。ピクセルに影響を与える可能性がある他のイベントがある場合は、初期イベントと最終イベントの間に表示されます。このイベントは、展開して詳細を表示できます。レンダー ターゲットを消去するような単純なイベントの場合、イベントの効果はカラー値に対してのみ現れます。描画呼び出しなどのより複雑なイベントでは、ピクセルの色に関与する可能性がある 1 つ以上のプリミティブが生成されます。
イベントによって描画されたプリミティブは、プリミティブ型とインデックスのほか、オブジェクトの合計プリミティブ数によって識別されます。たとえば、三角形 (1456) / (6214) のような識別子は、プリミティブが 6214 の三角形で構成されるオブジェクトの 1456 番目の三角形に対応することを意味します。各プリミティブ識別子の左側には、そのピクセルに対してプリミティブが持つ効果を示すアイコンがあります。ピクセルの色に影響を与えるプリミティブは、結果の色で塗りつぶされた角の丸い四角形によって表されます。ピクセルの色に対する効果が除外されたプリミティブは、ピクセルが除外された理由を示すアイコンで表されます。これらのアイコンは、この記事の後半のセクション「プリミティブの除外」で説明します。
各プリミティブを展開すると、ピクセル シェーダーの出力が既存のピクセルの色にどのようにマージされ、結果色が生成されたかを調べることができます。ここから、プリミティブに関連付けられたピクセル シェーダー コードも調査またはデバッグし、さらに頂点シェーダーのノードを展開して頂点シェーダーの入力を調べることができます。
プリミティブの除外
ピクセルの色に対する効果がプリミティブから除外される場合、その除外はさまざまな理由によって発生することがあります。各理由は、この表で示すアイコンで表されます。
Icon |
除外の理由 |
|---|---|
|
ピクセルは深度テストに失敗したため除外されました。 |
|
ピクセルはハサミ テストに失敗したため除外されました。 |
|
ピクセルはステンシル テストに失敗したため除外されました。 |
描画の呼び出しの除外
テストに失敗したため、描画の呼び出しのプリミティブがすべてレンダー ターゲットに影響するから除外されると、描画の呼び出しは、配置できないし、除外の理由に対応するアイコンがその横に表示されます。描画呼び出しの除外の理由は、ソース除外の理由に似ており、アイコンは似ています。
シェーダー コードの表示とデバッグ
プリミティブの下にある、シェーダーに関連付けられているコントロールを使用すると、頂点シェーダー、ハル シェーダー、ドメイン シェーダー、ジオメトリ シェーダー、またはピクセル シェーダーの各コードを表示またはデバッグできます。
シェーダーのソース コードを表示するには
- 表示するシェーダーに関連付けられているプリミティブの下で、シェーダーのタイトルを選択します。たとえば、頂点シェーダーのソース コードを表示するには、[頂点シェーダー] を選択します。
シェーダーをデバッグするには
- デバッグするシェーダーに関連付けられているプリミティブの下で、シェーダーのタイトルの右側の [デバッグ開始] を選択します。
グラフィックス オブジェクトへのリンク
ピクセルの履歴でグラフィックスのイベントを理解するには、イベントの時点のデバイスの状態、またはイベントによって参照される Direct3D のオブジェクトに関する情報が必要な場合があります。ピクセルの履歴の各イベントには、[グラフィックス ピクセル履歴] にその時点における最新のデバイスの状態と関連オブジェクトへのリンクが表示されます。