川野 竜一 著
「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 文字セットの作成と日本語表示
内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。
正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。
本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。
刷数は奥付(書籍の最終ページ)に記載されています。
書籍の種類:
書籍の刷数:
本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。
対象の書籍は正誤表がありません。
発生刷 | ページ数 | 書籍改訂刷 | 電子書籍訂正 | 内容 | 登録日 | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|
1刷 | 041 Note「Hull Shader ステージでは分割は行われない」1行目 |
4刷 | 済 |
|
2024.02.14 | ||||||
1刷 | 048 上から2番目のコードの3行目および4行目 |
2刷 | 済 |
|
2020.03.18 | ||||||
1刷 | 061 「main.cppの中身は、ひとまず次の内容をそのまま書いてください。」の下のコード 2行目 |
4刷 | 済 |
|
2024.02.20 | ||||||
1刷 | 066 1つ目のコード3行目 |
3刷 | 済 |
|
2020.05.29 | ||||||
1刷 | 078 本文下から2行目 |
2刷 | 済 |
|
2020.03.03 | ||||||
1刷 | 079 「●スワップチェーンの生成」3つ目のコード 下から1~7行目 |
3刷 | 済 |
|
2022.02.21 | ||||||
1刷 | 083 3つ目のコード、1行目 |
2刷 | 済 |
|
2020.03.18 | ||||||
1刷 | 121 見出し「エラーが起きた場合」の上に掲載しているコード 下から1行目 |
3刷 | 済 |
|
2021.04.23 | ||||||
1刷 | 122 1つ目のコード 1~3行目 |
3刷 | 済 |
|
2021.05.14 | ||||||
1刷 | 136 2つ目、3つ目の箇条書き |
3刷 | 済 |
|
2020.05.29 | ||||||
1刷 | 137 「4.8.6 入力レイアウトの設定」の「●InputLayout」2行目 |
3刷 | 済 |
|
2021.04.23 | ||||||
1刷 | 141 「D3D12_ROOT_SIGNATURE_DESCの設定」2つ目のソースコード 3行目 |
4刷 | 済 |
|
2022.09.22 | ||||||
1刷 | 145 1つ目のコード直後 |
2刷 | 済 |
|
2020.02.25 | ||||||
1刷 | 146 2つ目のコード |
2刷 | 済 |
|
2020.03.18 | ||||||
1刷 | 159 コード最終行 |
2刷 | 済 |
|
2020.03.02 | ||||||
1刷 | 164 「5.7.2 シェーダーリソースビューを作る」ソースコード 3行目 |
4刷 | 済 |
|
2022.09.22 | ||||||
1刷 | 170 「5.9.1 ルートシグネチャの指定」に掲載のコード |
3刷 | 済 |
|
2021.04.23 | ||||||
1刷 | 174 本文下から7行目 |
2刷 | 済 |
|
2020.03.06 | ||||||
1刷 | 177 本文1行目 |
2刷 | 済 |
|
2020.02.18 | ||||||
1刷 | 192 「d3dx12.hを使うと、これを以下のように書き直すことができます。」の下のコードについて |
4刷 | 済 |
|
2021.04.21 | ||||||
1刷 | 198 「6.1.2 XMMATRIX構造体」直前の本文 |
3刷 | 済 |
|
2020.05.29 | ||||||
1刷 | 199 1つ目のNote |
3刷 | 済 |
|
2020.05.29 | ||||||
1刷 | 201 本文下から2行目末 |
2刷 | 済 |
|
2020.02.20 | ||||||
1刷 | 208 本文3行目(2つ目のコード直後) |
2刷 | 済 |
|
2020.03.18 | ||||||
1刷 | 208 4つ目のコード 1~2行目 |
2刷 | 済 |
|
2021.12.16 | ||||||
1刷 | 222 「6.4.6 コーディング」ソースコード1行目 |
4刷 | 済 |
|
2022.09.22 | ||||||
1刷 | 228 2段落目先頭行 |
2刷 | 済 |
|
2020.02.18 | ||||||
1刷 | 263 Note内2行目 |
2刷 | 済 |
|
2020.02.25 | ||||||
1刷 | 264 「ディスクリプタヒープの作成」に掲載しているコード |
4刷 | 済 |
|
2023.01.25 | ||||||
1刷 | 271 「パス合成関数」ソースコード 下から3行目 |
4刷 | 済 |
|
2023.01.25 | ||||||
1刷 | 272 「Note /か\か」ソースコード下から3行目 |
4刷 | 済 |
|
2023.01.25 | ||||||
1刷 | 277 2つ目のソースコード 1行目 |
4刷 | 済 |
|
2023.01.25 | ||||||
1刷 | 279 1つ目のソースコード 1行目 |
4刷 | 済 |
|
2023.01.25 | ||||||
1刷 | 295 最終行 |
4刷 | 済 |
|
2023.01.25 | ||||||
1刷 | 299 2つ目のソースコード |
4刷 | 済 |
|
2023.01.25 | ||||||
1刷 | 300 コード5行目および6行目 |
2刷 | 済 |
|
2020.03.02 | ||||||
1刷 | 301 1つ目のNote内のコード4行目および5行目 |
2刷 | 済 |
|
2021.12.16 | ||||||
1刷 | 301 1つ目および2つ目のコード、構造体内メンバー |
2刷 | 済 |
|
2020.03.02 | ||||||
1刷 | 302 2つ目のソースコード |
4刷 | 済 |
|
2023.01.25 | ||||||
1刷 | 302 1つ目のコード、構造体内メンバー |
2刷 | 済 |
|
2020.03.02 | ||||||
1刷 | 303 最終行 |
4刷 | 済 |
|
2023.01.25 | ||||||
1刷 | 304 1つ目のコード、2行目 |
2刷 | 済 |
|
2020.03.02 | ||||||
1刷 | 311 1つ目のソースコード 下から3行目 |
4刷 | 済 |
|
2023.01.25 | ||||||
1刷 | 313 ソースコード 1行目 |
4刷 | 済 |
|
2023.01.25 | ||||||
1刷 | 314 1つ目のコード中のfor文 |
3刷 | 済 |
|
2020.09.25 | ||||||
1刷 | 327 1つ目のソースコード 6行目 |
4刷 | 済 |
|
2023.01.25 | ||||||
1刷 | 329 3つ目のコード |
2刷 | 済 |
|
2020.03.18 | ||||||
1刷 | 368 ・表情(ブレンドシェイプ)のデータ:23 バイト |
4刷 | 済 |
|
2023.01.25 | ||||||
1刷 | 374 下から6行目 |
4刷 | 済 |
|
2023.01.25 | ||||||
1刷 | 382 本文4~5行目 |
3刷 | 済 |
|
2020.05.29 | ||||||
1刷 | 448 コード7行目 |
2刷 | 済 |
|
2020.03.18 | ||||||
1刷 | 449 本文 上から4行目 |
3刷 | 済 |
|
2020.05.25 | ||||||
1刷 | 464 図12.1 左側のオブジェクト |
3刷 | 済 |
|
2020.05.29 | ||||||
1刷 | 484 図12.13 右上、右下、左下(全3箇所) |
3刷 | 済 |
|
2020.05.29 | ||||||
1刷 | 494 上から3つ目に掲載しているコードの下から5行目 |
3刷 | 済 |
|
2021.04.23 | ||||||
1刷 | 507 数式(2) |
3刷 | 済 |
|
2020.05.29 | ||||||
1刷 | 589 4つ目のコード末尾 |
3刷 | 済 |
|
2020.05.29 | ||||||
1刷 | 621 本文6行目と「Note Releaseビルドの場合」内(2箇所) |
3刷 | 済 |
|
2020.05.29 | ||||||
1刷 | 読者特典-84 Appendix 1(数学編)84ページ 1行目 |
未 | 未 |
|
2021.05.13 |