座標系
仕様
- DirectX (旧 Direct3D) では、「左手座標系」を用いる。
ドキュメント:
座標変換
種類
- ワールド変換
- ビュー変換
- 投影変換
演算
- 並進 (Translation)
- 回転 (Rotation)
- 拡大縮小 (Scale)
- 合成 (Multiply)
ドキュメント:
変換パイプライン | Microsoft Learn [公式]
DirectXMath プログラミング ガイド | Microsoft Learn [公式]
参考:
HLSL mul and D3DXMATRIX order mismatch – Stack Overflow
use mul(vector, matrix) or mul(matrix, vector) in HLSL – Graphics and GPU Programming – GameDev.net
深度バッファ
ドキュメント:
深度バッファー v9 | Microsoft Learn [公式]
プロジェクション変換 v9 | Microsoft Learn [公式]
Z バッファーのパフォーマンス v9 | Microsoft Learn [公式]
深度バイアス
深度オフセットは次の式で計算される。
(深度オフセット) = m * (スロープスケール深度バイアス) + (深度バイアス)
ここで m
は次の式で求められる三角ポリゴンの最大深度勾配である。
m = max(abs(dz / dx), abs(dz / dy))
設定
- スロープスケール深度バイアス (範囲:
-1.0
~1.0
/デフォルト:0.0
) - 深度バイアス (範囲:
-1.0
~1.0
/デフォルト:0.0
)
ドキュメント:
深度バイアス v9 | Microsoft Learn [公式]
ステンシルバッファ
ステンシル値の操作
Keep
: 現在の値を保持するZero
: ゼロクリアするReplace
: 参照値で置き換えるIncrSat
: 値を 1 だけ増やし、結果をクランプするDecrSat
: 値を 1 だけ減らし、結果をクランプするInvert
: 値を反転させるIncr
: 値を 1 だけ増やす (結果はラップする)Decr
: 値を 1 だけ減らす (結果はラップする)
ステンシル参照値
- ステンシル参照値は、通常グラフィックス API により指定される。
→SetStencilRef
- ピクセルシェーダーにより、描画毎にピクセル単位で書き換えることができる。(※ DirectX 11.3 または 12 以降)
→SV_StencilRef
ドキュメント:
ステンシル バッファの手法 v9 | Microsoft Learn [公式]
シェーダー指定ステンシル参照値 | Microsoft Learn [公式]
参考:
ステンシルバッファを使ってオブジェクトをマスクする (Unity) | KENTO
ステンシルによるクリッピング描画 | マルペケつくろーどっとコム
How can I mark a pixel in the stencil buffer? – Game Development Stack Exchange
深度テスト/ステンシルテスト
深度テスト
DepthEnable
: 深度テストを有効にするかどうかを指定するDepthWriteMask
: 深度の書き込みを許可するかどうか指定するDepthFunc
: 比較に用いる関数を指定する
ステンシルテスト
StencilEnable
: ステンシルテストを有効にするかどうかを指定するStencilReadMask
: 読み取りマスクStencilWriteMask
: 書き込みマスクStencilFailOp
: テスト失敗時の操作StencilDepthFailOp
: 深度テスト失敗時の操作StencilPassOp
: テスト通過時の操作StencilFunc
: 比較に用いる関数を指定する
ドキュメント:
D3D12_DEPTH_STENCIL_DESC 構造体 | Microsoft Learn [公式]
CD3DX12_DEPTH_STENCIL_DESC 構造体 | Microsoft Learn [公式]
D3D12_DEPTH_STENCILOP_DESC 構造体 | | Microsoft Learn [公式]
D3D12_DEPTH_WRITE_MASK 列挙 | Microsoft Learn [公式]
D3D12_COMPARISON_FUNC 列挙 | Microsoft Learn [公式]
D3D12_STENCIL_OP 列挙 | Microsoft Learn [公式]
earlydepthstencil | Microsoft Learn [公式]
テクスチャ
ドキュメント:
テクスクチャーの概要 v11 | Microsoft Learn [公式]
参考:
テクスチャ専用機能 | いまさら Direct3D11 入門
ミップマップ (MipMap)
参考:
ミップマップを使ってラフネスのある材質のリフレクションを実装した | My life accelerated
フォグ (Fog)
ドキュメント:
ピクセル霧 v9 | Microsoft Learn [公式]
D3DFOGMODE 列挙 v9 | Microsoft Learn [公式]
霧の種類 v9 | Microsoft Learn [公式]
クォータニオン (Quaternion)
ドキュメント:
四元数関数 – DirectXMath ライブラリ | Microsoft Learn [公式]
2D 描画
参考:
pass coordinates of a vertex as int and not float – Stack Overflow
multiplication matrix-vector in HLSL does not give the correct result – Microsoft Q&A