「DirectX 9~11に比べて超高機能/高性能だと聞いたけれど、
複雑すぎて何をしているかわからない」
「ゲームエンジンのメンテナンスをするために、
最新のDirectXの基礎を知りたい」
「フルスクラッチでMMDのモデルを
表示/アニメーションさせてみたい」
そんなC++プログラマーに向けた、
DirectX 12の「導きの書」がついに登場!
◆3Dグラフィックスの基礎
◆グラフィックスパイプラインとステージ
◆PMDデータの読み込みと描画
◆VMDデータの読み込みとアニメーション再生
◆IK
◆ポストエフェクト
など、本当に知りたかった
DirectX 12プログラミングの基本がこの1冊に!!
DirectXは初めてという人も、
DirectX 9や10で止まってしまっている人も、
本書を心強い相棒にして、挑戦の旅へと出掛けましょう!
■Part 1 基礎理論編
Chapter 1 前提となる知識とDirectX 12の概略
1.1 本書で使用するC++
1.2 本書で使用する数学
1.3 初歩的なレンダリング理論
1.4 ハードウェアの基礎知識
1.5 DirectXの歴史と変化
Chapter 2 グラフィックスパイプラインとさまざまなシェーダー
2.1 グラフィックスパイプラインとは
2.2 シェーダーとは
■Part 2 実践編(1)
Chapter 3 初期化から画面クリアまで
3.1 最初のプロジェクト
3.2 ウィンドウ表示とDirect3Dの初期化
3.3 画面色のクリア
3.4 エラー対応
Chapter 4 ポリゴンの表示
4.1 グラフィックスパイプラインのおさらい
4.2 頂点情報の作成
4.3 頂点バッファー
4.4 頂点情報のコピー(マップ)
4.5 はじめてのシェーダー
4.6 シェーダーの読み込みと生成
4.7 頂点レイアウト
4.8 グラフィックスパイプラインステートの作成
4.9 ルートシグネチャ
4.10 ビューポートとシザー矩形
4.11 三角形ポリゴンを四角形にしてみる
Chapter 5 ポリゴンにテクスチャを貼り付ける
5.1 DirectX 12におけるテクスチャ
5.2 頂点情報にuv情報を追加する
5.3 シェーダーにuv情報を追加する
5.4 テクスチャデータの作成
5.5 テクスチャバッファー
5.6 ID3D12Resource::WriteToSubresource()メソッドによるデータ転送
5.7 シェーダーリソースビュー
5.8 ルートシグネチャにスロットとテクスチャの関連を記述する
5.9 描画時の設定
5.10 ピクセルシェーダーのプログラムを変更
5.11 画像ファイルを読み込んで表示する
5.12 ID3D12GraphicsCommandList::CopyTextureRegion()メソッドによる転送
5.13 d3dx12.h(CD3DX~)の導入
Chapter 6 行列による座標変換
6.1 行列の基本
6.2 定数バッファーとシェーダーからの利用
6.3 行列を変更してみる(2D編)
6.4 行列を用いて3D化してみる
6.5 回転アニメーションさせてみよう
Chapter 7 PMDの読み込みとモデルの表示
7.1 MMDのダウンロード
7.2 PMDデータとは
7.3 PMDにおける頂点データ
7.4 PMDヘッダー構造体
7.5 PMDの頂点構造体とレイアウトの準備
7.6 読み込んだ頂点データの描画
7.7 インデックスデータの読み込みと利用
7.8 法線データの表示
7.9 深度バッファーの導入
7.10 ランバートの余弦則
7.11 シェーダー側でランバートの余弦則を実装する
7.12 法線ベクトルも回転させて正しい結果を得る
Chapter 8 マテリアル(材質)
8.1 マテリアルとは
8.2 PMDファイルからマテリアルデータを読み込む
8.3 シェーダーへの転送と表示
8.4 マテリアルに合わせてテクスチャを貼る
8.5 テクスチャの有無に応じた処理
8.6 他のモデルも試してみよう
8.7 スペキュラとアンビエントの実装
8.8 テクスチャファイルがTGAやDDSの場合
8.9 トゥーンシェーディング
Chapter 9 リファクタリング
9.1 便利なクラスや構造体・マクロ
9.2 main.cppからApplicationクラスへ
9.3 用途によって簡単な分類を行う
9.4 結果としてのApplication.cpp
■Part 3 実践編(2)
Chapter 10 スキニングとアニメーション
10.1 スキニング(スキンメッシュアニメーション)
10.2 ボーン情報のロード
10.3 ツリーの構築
10.4 頂点シェーダーでボーン行列の配列を扱う
10.5 ボーン行列バッファーの作成
10.6 回転行列でモデルにポーズを付ける
10.7 MMDのアニメーションデータ(VMDファイル)
10.8 クォータニオンと回転行列
10.9 VMDデータを読み込んでポーズを付ける
10.10 VMDデータを使ったアニメーション
10.11 ベジェ曲線補間と2つの近似法
10.12 ベジェによるイーズインイーズアウトの実装
Chapter 11 インバースキネマティクス(IK)
11.1 インバースキネマティクス(IK)とは
11.2 余弦定理を用いた簡易的IK(間点が1つ)
11.3 CCD-IK(間点が複数)
11.4 2DにおけるCCD-IKの実装
11.5 PMDにおけるCCD-IK
11.6 その他VMDやIKの仕様を考慮する
Chapter 12 マルチパスレンダリング
12.1 マルチパスレンダリングとは
12.2 レンダリング先を変更しテクスチャとして利用する
12.3 単純なポストエフェクト
Chapter 13 影行列とシャドウマップ
13.1 シャドウ(影)とは
13.2 影行列を用いた地面影
13.3 シャドウマップの導入(マルチパスの応用)
■Part 4 応用編
Chapter 14 マルチレンダーターゲットとその応用
14.1 ピクセルシェーダーの出力を複数にする(色・法線)
14.2 色・法線情報によるディファードシェーディング
14.3 高輝度成分抽出とブルーム(光のもれ)
14.4 簡易的な被写界深度の実装
Chapter 15 スクリーンスペースアンビエントオクルージョン(SSAO)
15.1 アンビエントオクルージョンとは
15.2 数式から考えるアンビエントオクルージョン
15.3 スクリーンスペースアンビエントオクルージョン(SSAO)の実装
■Part 5 ライブラリ編
Chapter 16 imguiの利用
16.1 imguiとは
16.2 imguiの組み込み
16.3 imguiの活用例
Chapter 17 Effekseerライブラリの利用
17.1 Effekseerとは
17.2 Effekseerライブラリの取得と準備
17.3 Effekseerライブラリの組み込み
Chapter 18 DirectXTKの利用(文字列表示)
18.1 DirectXTKとは
18.2 DirectXTK12の入手
18.3 DirectXTKの組み込み
18.4 フォントを指定して文字列を表示する
18.5 文字セットの作成と日本語表示