Gaming Life

一日24時間、ゲームは10時間

DirectX12の魔導書を読んだ

『DirectX12の魔導書』を大体読み終わったので感想。

自分はDirectXOpenGLなどのグラフィックスAPIをほぼ触ったことがなかったので(昔DX11で三角ポリゴン出したくらい?)、勉強として買った。

本の構成は以下の通り。

  • Chapter1 前提となる知識とDirectX12の概略
  • Chapter2 グラフィックスパイプラインと様々なシェーダー
  • Chapter3 初期化から画面クリアまで
  • Chapter4 ポリゴンの表示
  • Chapter5 ポリゴンにテクスチャを貼り付ける
  • Chapter6 行列による座標変換
  • Chapter7 PMDの読み込みとモデルの表示
  • Chapter8 マテリアル
  • Chapter9 リファクタリング
  • Chapter10 スキニングとアニメーション
  • Chapter11 インバースキネマティック(IK)
  • Chapter12 マルチパスレンダリング
  • Chapter13 影行列とシャドウマップ
  • Chapter14 マルチレンダーターゲットとその応用
  • Chapter15 スクリーンスペースアンビエントオクルージョン(SSAO)
  • Chapter16 imguiの利用
  • Chapter17 Effecseerライブラリの利用
  • Chapter18 DirectXTKの利用(文字列表示)

自分はChapter13以降、実装がしんどそうだったので軽く流し読みした程度。その代わり、Chapter12まではかなり時間をかけて実際にコーディングして実装した。(ただしChapter11のIKは難しくて断念した)

以下その頃の作業記録ツイート。

本書は高校数学とC++の最低限の知識がある読者を想定して描かれている。ただ、自分が読んだ限りそこまでの知識でこの本を完走するのは厳しく、追加でグラフィックスパイプライン(頂点シェーダとかピクセルシェーダとか……)など、現代のコンピュータグラフィックスに求められる基礎知識を持っておいたほうが良いと感じた。(副読書としてCGエンジニア検定の参考書あたりを持っておくのがよさそう)

2020年7月現在、DirectX12に関する日本語の参考資料は公式のリファレンスぐらいしかない(追記: すらりんラボさんの本があった)。そのため本書の発売前は、3Dモデルの描画まで実装したら、後は影を描画して終わりくらいの分量かなーと思っていた。

ところが実際には、DirectX12の初期化から始まり、ポリゴンを描画し、3Dモデルの描画にアニメーション、果てはポストプロセスの実装とかなり奥深くまで解説している。ここまでの分量の実装を一冊で解説する本は、DirectX11の解説書も含めて心当たりがない(OpenGLならあるかも)。この分量をこなすのには時間はかかったが、ポストプロセスを使ってアウトラインもどきのシェーダーが実装できた時は感動した。

誤植がやたら多かったのはマイナスポイント。また、Github経由で動作確認が取れているサンプルコードが公開されているのだが、それもある章を境にほぼ別モノに書き換わっていて、対応を取るのに苦労した。

しかしながら、誤植などの対応を取る作業がむしろDirectX12の理解を深める一助となったところがある。誤植がほぼ無い書籍だったら、サンプルコードを写経するばかりで、ほぼ理解できずに終わっていたと思う。なのでヨシ(?)。

総じて、DirectX12の入門書として充分人に勧められるクオリティだった。どうしてもDirectX12を習得しなければならない人や、DirectX12そのものの難解さや書籍中の誤植も笑って許せる、マゾ気質の人は是非買って挑戦してみることをおすすめします。

……これ推薦文になってるのか?