こんにちわ、Pocolです。
Direct3D12を触り始めたのですが,いくつかよく分からん用語があるのでメモとして残しておこうかなと思います。
Root Signature
リソースとシェーダーの対応付けを行うためのテーブルの定義で,レジスタとのバインド状態を指定するようです。
直接 Descriptor を格納すると 4個しか入らないので DescriptorTable と組み合わせて使うようです。
https://msdn.microsoft.com/en-us/library/windows/desktop/dn899208(v=vs.85).aspx
D3D12_ROOT_SIGNATURE_DESC ルートシグニチャのレイアウトを表します。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn986747(v=vs.85).aspx D3D12_ROOT_PARAMTER ルートシグニチャのスロットを表します。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn879477(v=vs.85).aspx D3D12_ROOT_PARAMTER_TYPE ルートシグニチャのスロットのタイプを表します。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn879478(v=vs.85).aspx D3D12_ROOT_DESCRIPTOR_TABLE Descriptor Heapに次々と表示されるDescriptor範囲の集合としてDescriptor Tableのレイアウトを表します。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn859382(v=vs.85).aspx D3D12_DESCRIPTOR_RANGE DescriptorTable内の与えられたDescriptorの範囲を定義する。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn859380(v=vs.85).aspx D3D12_DESCRIPTOR_RANGE_TYPE 範囲タイプを指定する。指定するデータ範囲がSRVを表すものなら,D3D12_DESCRIPTOR_RANGE_TYPE_SRVを指定する。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn859381(v=vs.85).aspx D3D12_ROOT_CONSTANTS 1つの定数バッファとして表示されるルートシグニチャ内の定数インラインを表します。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn879475(v=vs.85).aspx D3D12_SHADER_VISIBILITY 与えられたルートシグニチャのスロットのコンテンツにアクセス可能なシェーダを指定します。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn879482(v=vs.85).aspx D3D12_STATIC_SAMPLER_DESC 静的サンプラーを表します。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn986748(v=vs.85).aspx D3D12_ROOT_SIGNATURE_FLAGS ルートシグニチャのレイアウトのオプションを指定します。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn879480(v=vs.85).aspx
ルートシグニチャの例
https://msdn.microsoft.com/en-us/library/windows/desktop/dn899123(v=vs.85).aspx
Descriptor
D3D12における単一リソースのバインディング(結び付け)の基本単位。
https://msdn.microsoft.com/en-us/library/windows/desktop/dn899109(v=vs.85).aspx
関係するものは以下のとおり。
* Index Buffer View D3D12_INDEX_BUFFER_VIEW 構造体を使用して作成。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn891445(v=vs.85).aspx * Vertex Buffer View D3D12_VERTEX_BUFFER_VIEW 構造体を使用して作成。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn903819(v=vs.85).aspx * Shader Resource View D3D12_SHADER_RESOURCE_VIEW_DESC 構造体を使用して作成。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn770406(v=vs.85).aspx 作成には ID3D12Device::CreateShaderResourceView を呼び出します。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn788672(v=vs.85).aspx * Constant Buffer View D3D12_CONSTANT_BUFFER_VIEW_DESC 構造体を使用して作成。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn770351(v=vs.85).aspx 作成には ID3D12Device::CreateConstantBufferView を呼び出します。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn788659(v=vs.85).aspx * Sampler D3D12_SAMPLER_DESC 構造体を使用して作成。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn770403(v=vs.85).aspx 作成には ID3D12Device::CreateSampler を呼び出します。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn788671(v=vs.85).aspx * Unordered Access View D3D12_UNORDERED_ACCESS_VIEW_DESC 構造体を使用して作成。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn770451(v=vs.85).aspx 作成には ID3D12Device::CreateUnorderedAccessView を呼び出します。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn788674(v=vs.85).aspx * Stream Output View D3D12_STREAM_OUTPUT_DESC 構造体を使用して作成。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn770410(v=vs.85).aspx * Render Target View D3D12_RENDER_TARGET_VIEW_DESC 構造体を使用して作成。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn770389(v=vs.85).aspx 作成には ID3D12Device::CreateRenderTargetView を呼び出します。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn788668(v=vs.85).aspx * Depth Stencil View D3D12_DEPTH_STENCIL_VIEW_DESC 構造体を使用して作成。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn770357(v=vs.85).aspx 作成には ID3D12Device::CreateDepthStencilView を呼び出します。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn788661(v=vs.85).aspx
Descriptor Heap
Descriptor Heap は Descriptor の連続するメモリ割り当てのコレクションです。
Descriptor Heap は Pipeline Stat Object(PSO), Shader Resource View (SRV), Unordered Access View (UAV), Constant Buffer View (CBV)などいくつかのオブジェクトタイプを含みます。
Resource Hazard
http://www.isus.jp/article/game-special/direct3d-12-overview-part-3-resource-binding/から引用。
何かが描画ターゲットやテクスチャーとバウンドされている場合、その処理中はランタイムとドライバーの両方が追跡しています。 ランタイムとドライバーがバインドを検出すると、古い設定をアンバインドし、新しい設定を適用します。 この方法でゲームは必要に応じてスイッチを作り、ソフトウェア・スタックはシーンの背後にあるスイッチを管理します。 さらに、ドライバーは描画ターゲットをテクスチャーとして使用するため、GPU パイプラインをフラッシュする必要があります。 そうしないと、GPU でリタイアする前にピクセルが読み取られると、コヒーレント状態を保てません。
上記の参照ページに詳細が載っているので、そちらを見たほうが早い。
Conservative Rasterization
Conservative Rasterization はピクセルレンダリングにある確実性を追加します。特に,衝突検出アルゴリズムに有用とのこと。
Conservative Rasterization は,描画されたプリミティブによって,少なくとも部分的に覆われるすべてのピクセルがラスタライズされ,ピクセルシェーダが起動します。
https://msdn.microsoft.com/en-us/library/windows/desktop/dn914594(v=vs.85).aspx
Rasterizer Ordered View
ラスタライズ処理によって同一画面座標上となったピクセルの陰影処理に起用されるピクセルシェーダの処理順を規定できる機能らしい。
GDCでは,OITの話をしていた。https://software.intel.com/sites/default/files/managed/4a/38/OIT-to-Volumetric-Shadow-Mapping.pdf