ゲーム開発の1つの醍醐味である美麗なCGグラフィックス。
現在はゲームエンジンが担う部分も大きいですが、それを活用するため、またゲーム制作・CGの根幹を理解するために、ゲームグラフィクスの知識が必要となります。
そんな一段上のゲーム開発をするための、「ゲームグラフィックス(CG)」に関する書籍を、人気・高評価のおすすめ本として以下でまとめて紹介していきます。
発売したて・発売予定の新書をピックアップ
技術書は情報の鮮度も重要、人気ランキングの前に新しい書籍もチェックしておきましょう。
- 2021/03/18発売 「[増補改訂]GPUを支える技術 ――超並列ハードウェアの快進撃[技術基礎] (WEB+DB PRESS plus)」
- 2021/06/09発売 「HLSL シェーダーの魔導書 シェーディングの基礎からレイトレーシングまで」
- 2021/06/29発売 「Unityゲーム プログラミング・バイブル」
- 2021/10/12発売 「Direct3D12 ゲームグラフィックス実践ガイド」
- 2021/12/01発売 「HTMLグラフィックスプログラミング―初心者のための画像の操作からゲーム開発まで」
- ゲームグラフィックスの本 人気ランキング/10冊詳細
- ゲームグラフィックス 2020 CGWORLD特別編集版
- ゲームグラフィックス 2019 CGWORLD特別編集版
- ゲームグラフィックス 2018 CGWORLD特別編集版
- ゲームグラフィックス 2016 CGWORLD特別編集版
- ゲームグラフィックス 2017 CGWORLD特別編集版
- Unity ゲームエフェクト マスターガイド
- HLSL シェーダーの魔導書 シェーディングの基礎からレイトレーシングまで
- Direct3D12 ゲームグラフィックス実践ガイド
- Unity C# ゲームプログラミング入門 2020対応
- [ゲーム&モダンJavaScript文法で2倍楽しい]グラフィックスプログラミング入門——リアルタイムに動く画面を描く。...
- ゲームグラフィックスの本 最新・高評価のおすすめの5冊
- ゲームグラフィックス参考書「新書一覧(2021年、2022年刊行)」
- ゲームグラフィックス参考書「Kindle Unlimited 読み放題 人気本ランキング」
- 動画編:本より高コスパ?「Udemy ゲームグラフィックス おすすめ講座」
- 関連:ゲーム開発に関する参考書
ゲームグラフィックスの本 人気ランキング/10冊詳細
以下が「ゲームグラフィックスの本」人気ランキングと人気の10冊詳細です。
(2022/08/18 12:12 更新)
Rank | 製品 | 価格 |
---|---|---|
1 | ||
2 | ||
3 | ||
4 | ||
5 | ||
6 | ||
7 | ||
8 | ||
9 | ||
10 | [ゲーム&モダンJavaScript文法で2倍楽しい]グラフィックスプログラミング入門——リアルタイムに動く画面を描く。プログラマー直伝の基... 発売日 2020/01/11 杉本 雅広 (技術評論社) 総合評価 | |
11 | ||
12 | ||
13 | ||
14 | ||
15 | ||
16 | ゲームグラフィックス 2013 CGWORLD特別編集版 (Works books) 発売日 2013/09/09 久代 忠史, 高木 貞武, 宮田 悠輔, オガワコウサク(有限会社グリグリ) (ワークスコーポレーション) 総合評価 | |
17 | あなたの知らないところでソフトウェアは何をしているのか? ―映画やゲームのグラフィックス、データ検索、暗号化、セキュリティー、データ圧縮、ル... 発売日 2016/05/18 V. Anton Spraul (オライリージャパン) 総合評価 | |
18 | DirectX 11 3Dプログラミング―Windows Vista/7/8(8.1)対応 定番「3DグラフィックスAPI」の基礎知識と使い... 発売日 2015/05/01 I/O編集部 (工学社) 総合評価 | |
19 | ||
20 |
ゲームグラフィックス 2020 CGWORLD特別編集版
3DCG&映像制作の専門誌「CGWORLD」に掲載されたゲームグラフィックス記事を集めた2020年版の事例集! 本年度版は『ポケットモンスター ソード・シールド』『ドラゴンボールZ KAKAROT』をはじめ、コンソールとスマホゲームの注目タイトルを多数掲載しています。表紙は和風ダークファンタジーの傑作『仁王2』、新規描き下ろしビジュアル! 実写と見紛うようなフォトリアルなタイトルからデフォルメの利いたアニメ調のタイトルまで多彩なビジュアルの作品を取り上げており、キャラクターはもちろん、背景やエフェクトなど、各社独自の制作ノウハウを膨大な図版と共に堪能できます。
●収録タイトル
・仁王2
・ポケットモンスター ソード・シールド
・ドラゴンボールZ KAKAROT
・グランブルーファンタジー ヴァーサス
・ソードアート・オンライン アリシゼーション リコリス
・新サクラ大戦
・龍が如く7 光と闇の行方
・ASTRAL CHAIN
・CODE VEIN
・SAMURAI SPIRITS
・BLADE XLORD―ブレイドエクスロード―
・マジカミ
※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。
●収録タイトル
・仁王2
・ポケットモンスター ソード・シールド
・ドラゴンボールZ KAKAROT
・グランブルーファンタジー ヴァーサス
・ソードアート・オンライン アリシゼーション リコリス
・新サクラ大戦
・龍が如く7 光と闇の行方
・ASTRAL CHAIN
・CODE VEIN
・SAMURAI SPIRITS
・BLADE XLORD―ブレイドエクスロード―
・マジカミ
※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。
↓全て表示↑少なく表示
内容サンプル


目次
CONSOLE GAME(ドラゴンボールZ KAKAROT
龍が如く7 光と闇の行方
新サクラ大戦
仁王2
ポケットモンスター ソード・シールド
ソードアート・オンライン アリシゼーション リコリス
SAMURAI SPIRITS
ASTRAL CHAIN
グランブルーファンタジー ヴァーサス
CODE VEIN)
SMARTPHONE GAME(BLADE XLORD-ブレイドエクスロードー
マジカミ)
龍が如く7 光と闇の行方
新サクラ大戦
仁王2
ポケットモンスター ソード・シールド
ソードアート・オンライン アリシゼーション リコリス
SAMURAI SPIRITS
ASTRAL CHAIN
グランブルーファンタジー ヴァーサス
CODE VEIN)
SMARTPHONE GAME(BLADE XLORD-ブレイドエクスロードー
マジカミ)
↓全て表示↑少なく表示
Users Voice
内容サンプル


ゲームグラフィックス 2019 CGWORLD特別編集版
3DCG&映像制作の専門誌「CGWORLD」に掲載されたゲームグラフィックス記事を集めた2019年版の事例集! キャラクターから背景まで。モデリング、アニメーション、ライティング、エフェクトなど、各社独自の制作ノウハウがここまでじっくり読めるのは本書だけ。ゲーム開発関係者やゲーム業界を目指す学生にぜひ読んでほしいメイキング資料集です。
●収録タイトル
・デビル メイ クライ 5
・SEKIRO: SHADOWS DIE TWICE
・エースコンバット7 スカイズ・アンノウン
・OCTOPATH TRAVELER
・Fate/Grand Order Arcade
・GOD EATER 3
・少女☆歌劇 レヴュースタァライト -Re LIVE-
・禍つヴァールハイト
・アリス・ギア・アイギス
・アトリエ オンライン ~ブレセイルの錬金術士~
※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。
●収録タイトル
・デビル メイ クライ 5
・SEKIRO: SHADOWS DIE TWICE
・エースコンバット7 スカイズ・アンノウン
・OCTOPATH TRAVELER
・Fate/Grand Order Arcade
・GOD EATER 3
・少女☆歌劇 レヴュースタァライト -Re LIVE-
・禍つヴァールハイト
・アリス・ギア・アイギス
・アトリエ オンライン ~ブレセイルの錬金術士~
※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。
↓全て表示↑少なく表示
内容サンプル


目次
FEATURE(デビルメイクライ5
SEKIRO:SHADOWS DIE TWICE
エースコンバット7スカイズ・アンノウン)
PICKUP TITLES(OCTOPATH TRAVELER
Fate
Grand Order Arcade
GOD EATER 3)
SMARTPHONE GAME(少女☆歌劇レヴュースタァライトーRe LIVE-
禍つヴァールハイト
アリス・ギア・アイギス
アトリエオンライン~ブレセイルの錬金術士~)
SEKIRO:SHADOWS DIE TWICE
エースコンバット7スカイズ・アンノウン)
PICKUP TITLES(OCTOPATH TRAVELER
Fate
Grand Order Arcade
GOD EATER 3)
SMARTPHONE GAME(少女☆歌劇レヴュースタァライトーRe LIVE-
禍つヴァールハイト
アリス・ギア・アイギス
アトリエオンライン~ブレセイルの錬金術士~)
↓全て表示↑少なく表示
内容サンプル


ゲームグラフィックス 2018 CGWORLD特別編集版
3DCG&映像制作の専門誌「CGWORLD」に掲載されたゲームグラフィック開発のノウハウを凝縮した2018年版の事例集! 本年度版は『モンスターハンター:ワールド』のグラフィックス制作を、50ページを超える大ボリュームで解説! このほか、人気タイトルを豊富にラインナップしました!
※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。
※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。
内容サンプル


内容サンプル


ゲームグラフィックス 2016 CGWORLD特別編集版
3DCG&映像制作の専門誌「CGWORLD」に掲載されたゲームグラフィック開発のノウハウを凝縮した2016年版の事例集!
今年度版では、PS4などハイスペックな今世代機向けやアーケードの人気タイトルを豊富にラインナップしました!
※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。
今年度版では、PS4などハイスペックな今世代機向けやアーケードの人気タイトルを豊富にラインナップしました!
※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。
内容サンプル


目次
Feature(METAL GEAR SOLID 5 THE PHANTOM PAIN)
Game Making(ストリートファイター5
GUILTY GEAR Xrd-REVELATOR-
ガンスリンガーストラトス3
DARK SOULS 3
艦これアーケード
イグジストアーカイヴ
聖闘士星矢ソルジャーズ・ソウル
バイオハザードアンブレラコア
NARUTO-ナルトー疾風伝ナルティメットストーム4)
Game Making(ストリートファイター5
GUILTY GEAR Xrd-REVELATOR-
ガンスリンガーストラトス3
DARK SOULS 3
艦これアーケード
イグジストアーカイヴ
聖闘士星矢ソルジャーズ・ソウル
バイオハザードアンブレラコア
NARUTO-ナルトー疾風伝ナルティメットストーム4)
↓全て表示↑少なく表示
Users Voice
内容サンプル


ゲームグラフィックス 2017 CGWORLD特別編集版
3DCG&映像制作の専門誌「CGWORLD」に掲載されたゲームグラフィック開発のノウハウを凝縮した2017年版の事例集!今年度版では、PS4などの今世代機向けやアーケードゲーム、話題のPS VRまで、人気タイトルを豊富にラインナップしました!
※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。
※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。
内容サンプル


Users Voice
内容サンプル


Unity ゲームエフェクト マスターガイド
(概要)
本書は,Unity上でゲームエフェクトを制作していく過程を解説した書籍です。Shader Graphを使用してシェーダーを作成し,Shurikenでエフェクト制作する過程を解説していきます。またHoudiniなどのDCC(Digital Content Creation)ツールを使ったリソース制作の方法についても解説しています。
Shurikenだけに的を絞った本ではなく,エフェクトに必要なシェーダー制作,リソース制作などにも踏み込んで解説しており,内容とレベルで妥協はありません。ゲームエフェクトの制作現場における必携の1冊です。
(こんな方におすすめ)
・ゲームエフェクトを制作する人全般
(目次)
1-1 エフェクトとは、パーティクルとは
1-2 本書で使用するツール
1-3 エフェクト制作のワークフロー
1-4 Unityの画面説明
1-5 エフェクトのフォルダ構成と管理
1-6 エフェクトで使用するマテリアルとシェーダー
1-7 作成した素材の読み込みと設定方法
2-1 エディタとモジュールの説明
2-2 カラーとカーブエディタの使用方法
2-3 テクスチャアニメーションとUVスクロール
2-4 Custom Vertex Streamとプリセット機能
3-1 Mainモジュール
3-2 EmissionモジュールとShapeモジュール
3-3 Velocity系モジュール
3-4 Color系モジュール
3-5 SizeモジュールとRotation系モジュール
3-6 NoiseモジュールとExternal Forcesモジュール
3-7 CollisionモジュールとTriggerモジュール
3-8 Sub EmitterモジュールとTexture Sheet Animationモジュール
3-9 LightモジュールとTrailモジュール
3-10 RendererモジュールとCustom Dataモジュール
4-1 舞い上がる木の葉エフェクトの作成
4-2 流星エフェクトの作成
4-3 防御エフェクトの作成
4-4 移動するキャラクタから発生するバフエフェクトの作成
5-1 バリアエフェクトの作成
5-2 Houdiniの基礎知識
5-3 Houdiniを使った球体状メッシュの作成
5-4 Shader Graphを使ったシェーダーの作成
5-5 マテリアルからのパラメータの調整
5-6 半球状メッシュのエフェクトの組み合わせ
6-1 闇の柱エフェクトの作成
6-2 メッシュの作成
6-3 シェーダーの作成
6-4 エフェクトの組み立て
6-5 柱の周りを旋回するダストパーティクルの作成
6-6 螺旋状に上昇するトレイルの制作
7-1 電撃属性ビームエフェクトの作成
7-2 電撃シェーダーの作成
7-3 シェーダーの完成
7-4 チャージ時のライトと光の粒の作成
7-5 チャージ完了時のフラッシュとコアの作成
7-6 ビームエフェクトの完成
8-1 地面に叩きつける斬撃エフェクトの作成
8-2 トゥーン系シェーダーの作成
8-3 シェーダーの改良
8-4 斬撃エフェクトの作成
8-5 インパクトエフェクトの作成
8-6 インパクトエフェクトへの要素の追加
9-1 Substance Designerを使ったテクスチャ作成
9-2 SubstanceテクスチャのUnityでの使用方法
9-3 AfterEffectsを使ったテクスチャ作成
9-4 CC Kaleida(万華鏡)エフェクトを使った素材の作成
本書は,Unity上でゲームエフェクトを制作していく過程を解説した書籍です。Shader Graphを使用してシェーダーを作成し,Shurikenでエフェクト制作する過程を解説していきます。またHoudiniなどのDCC(Digital Content Creation)ツールを使ったリソース制作の方法についても解説しています。
Shurikenだけに的を絞った本ではなく,エフェクトに必要なシェーダー制作,リソース制作などにも踏み込んで解説しており,内容とレベルで妥協はありません。ゲームエフェクトの制作現場における必携の1冊です。
(こんな方におすすめ)
・ゲームエフェクトを制作する人全般
(目次)
Chapter 1 エフェクトの概要
Chapter 2 パーティクルエディタの概要
Chapter 3 各モジュールの働き
Chapter 4 基本的なエフェクトの作成
Chapter 5 バリアエフェクトの作成
Chapter 6 闇の柱エフェクトの作成
Chapter 7 ビームエフェクトの作成
Chapter 8 斬撃エフェクトの作成
Chapter 9 テクスチャの制作
↓全て表示↑少なく表示
内容サンプル


目次
Chapter 1 エフェクトの概要
1-1 エフェクトとは、パーティクルとは
1-2 本書で使用するツール
1-3 エフェクト制作のワークフロー
1-4 Unityの画面説明
1-5 エフェクトのフォルダ構成と管理
1-6 エフェクトで使用するマテリアルとシェーダー
1-7 作成した素材の読み込みと設定方法
Chapter 2 パーティクルエディタの概要
2-1 エディタとモジュールの説明
2-2 カラーとカーブエディタの使用方法
2-3 テクスチャアニメーションとUVスクロール
2-4 Custom Vertex Streamとプリセット機能
Chapter 3 各モジュールの働き
3-1 Mainモジュール
3-2 EmissionモジュールとShapeモジュール
3-3 Velocity系モジュール
3-4 Color系モジュール
3-5 SizeモジュールとRotation系モジュール
3-6 NoiseモジュールとExternal Forcesモジュール
3-7 CollisionモジュールとTriggerモジュール
3-8 Sub EmitterモジュールとTexture Sheet Animationモジュール
3-9 LightモジュールとTrailモジュール
3-10 RendererモジュールとCustom Dataモジュール
Chapter 4 基本的なエフェクトの作成
4-1 舞い上がる木の葉エフェクトの作成
4-2 流星エフェクトの作成
4-3 防御エフェクトの作成
4-4 移動するキャラクタから発生するバフエフェクトの作成
Chapter 5 バリアエフェクトの作成
5-1 バリアエフェクトの作成
5-2 Houdiniの基礎知識
5-3 Houdiniを使った球体状メッシュの作成
5-4 Shader Graphを使ったシェーダーの作成
5-5 マテリアルからのパラメータの調整
5-6 半球状メッシュのエフェクトの組み合わせ
Chapter 6 闇の柱エフェクトの作成
6-1 闇の柱エフェクトの作成
6-2 メッシュの作成
6-3 シェーダーの作成
6-4 エフェクトの組み立て
6-5 柱の周りを旋回するダストパーティクルの作成
6-6 螺旋状に上昇するトレイルの制作
Chapter 7 ビームエフェクトの作成
7-1 電撃属性ビームエフェクトの作成
7-2 電撃シェーダーの作成
7-3 シェーダーの完成
7-4 チャージ時のライトと光の粒の作成
7-5 チャージ完了時のフラッシュとコアの作成
7-6 ビームエフェクトの完成
Chapter 8 斬撃エフェクトの作成
8-1 地面に叩きつける斬撃エフェクトの作成
8-2 トゥーン系シェーダーの作成
8-3 シェーダーの改良
8-4 斬撃エフェクトの作成
8-5 インパクトエフェクトの作成
8-6 インパクトエフェクトへの要素の追加
Chapter 9 テクスチャの制作
9-1 Substance Designerを使ったテクスチャ作成
9-2 SubstanceテクスチャのUnityでの使用方法
9-3 AfterEffectsを使ったテクスチャ作成
9-4 CC Kaleida(万華鏡)エフェクトを使った素材の作成
1-1 エフェクトとは、パーティクルとは
1-2 本書で使用するツール
1-3 エフェクト制作のワークフロー
1-4 Unityの画面説明
1-5 エフェクトのフォルダ構成と管理
1-6 エフェクトで使用するマテリアルとシェーダー
1-7 作成した素材の読み込みと設定方法
Chapter 2 パーティクルエディタの概要
2-1 エディタとモジュールの説明
2-2 カラーとカーブエディタの使用方法
2-3 テクスチャアニメーションとUVスクロール
2-4 Custom Vertex Streamとプリセット機能
Chapter 3 各モジュールの働き
3-1 Mainモジュール
3-2 EmissionモジュールとShapeモジュール
3-3 Velocity系モジュール
3-4 Color系モジュール
3-5 SizeモジュールとRotation系モジュール
3-6 NoiseモジュールとExternal Forcesモジュール
3-7 CollisionモジュールとTriggerモジュール
3-8 Sub EmitterモジュールとTexture Sheet Animationモジュール
3-9 LightモジュールとTrailモジュール
3-10 RendererモジュールとCustom Dataモジュール
Chapter 4 基本的なエフェクトの作成
4-1 舞い上がる木の葉エフェクトの作成
4-2 流星エフェクトの作成
4-3 防御エフェクトの作成
4-4 移動するキャラクタから発生するバフエフェクトの作成
Chapter 5 バリアエフェクトの作成
5-1 バリアエフェクトの作成
5-2 Houdiniの基礎知識
5-3 Houdiniを使った球体状メッシュの作成
5-4 Shader Graphを使ったシェーダーの作成
5-5 マテリアルからのパラメータの調整
5-6 半球状メッシュのエフェクトの組み合わせ
Chapter 6 闇の柱エフェクトの作成
6-1 闇の柱エフェクトの作成
6-2 メッシュの作成
6-3 シェーダーの作成
6-4 エフェクトの組み立て
6-5 柱の周りを旋回するダストパーティクルの作成
6-6 螺旋状に上昇するトレイルの制作
Chapter 7 ビームエフェクトの作成
7-1 電撃属性ビームエフェクトの作成
7-2 電撃シェーダーの作成
7-3 シェーダーの完成
7-4 チャージ時のライトと光の粒の作成
7-5 チャージ完了時のフラッシュとコアの作成
7-6 ビームエフェクトの完成
Chapter 8 斬撃エフェクトの作成
8-1 地面に叩きつける斬撃エフェクトの作成
8-2 トゥーン系シェーダーの作成
8-3 シェーダーの改良
8-4 斬撃エフェクトの作成
8-5 インパクトエフェクトの作成
8-6 インパクトエフェクトへの要素の追加
Chapter 9 テクスチャの制作
9-1 Substance Designerを使ったテクスチャ作成
9-2 SubstanceテクスチャのUnityでの使用方法
9-3 AfterEffectsを使ったテクスチャ作成
9-4 CC Kaleida(万華鏡)エフェクトを使った素材の作成
↓全て表示↑少なく表示
Users Voice
内容サンプル

著者略歴
HLSL シェーダーの魔導書 シェーディングの基礎からレイトレーシングまで
光を自在に操るための
基本の技術を手に入れろ。
DirectXだけでなくUnityでも使われているシェーダー言語HLSL。
本書は、グラフィックスプログラマやテクニカルアーティストをめざす人が、
ハンズオン形式の豊富なサンプルを使って、3Dグラフィックを演出するシェーディング技術を
学ぶための教科書です。
本書では、サンプルプログラムとして、DirectX 12のコーディングをほとんど意識せず、
HLSLプログラミングに集中できるようなミニエンジンが提供されます。
シェーダーの基礎であるレンダリングパイプラインから、最新技術であるレイトレーシングまで、
本書を読めば、あなたもグラフィックスプログラマの仲間入りです!
~本書の内容~
・Chapter 1:レンダリングパイプライン入門
・Chapter 2:はじめてのシェーダー
・Chapter 3:シェーダープログラミングの基本(2)
・Chapter 4:ライティング基礎
・Chapter 5:ライティング発展
・Chapter 6:さまざまなテクスチャの利用
・Chapter 7:PBR(物理ベースレンダリング)
・Chapter 8:2D描画の基礎
・Chapter 9:発展的な2D描画
・Chapter 10:ポストエフェクト
・Chapter 11:シャドウイング
・Chapter 12:ディファードレンダリング
・Chapter 13:ディファードレンダリングとフォワードレンダリングの融合
・Chapter 14:3Dゲームで使える発展的シェーダー
・Chapter 15:コンピュートシェーダー
・Chapter 16:TBR(Tile Based Rendering)
・Chapter 17:レイトレーシング
基本の技術を手に入れろ。
DirectXだけでなくUnityでも使われているシェーダー言語HLSL。
本書は、グラフィックスプログラマやテクニカルアーティストをめざす人が、
ハンズオン形式の豊富なサンプルを使って、3Dグラフィックを演出するシェーディング技術を
学ぶための教科書です。
本書では、サンプルプログラムとして、DirectX 12のコーディングをほとんど意識せず、
HLSLプログラミングに集中できるようなミニエンジンが提供されます。
シェーダーの基礎であるレンダリングパイプラインから、最新技術であるレイトレーシングまで、
本書を読めば、あなたもグラフィックスプログラマの仲間入りです!
~本書の内容~
・Chapter 1:レンダリングパイプライン入門
・Chapter 2:はじめてのシェーダー
・Chapter 3:シェーダープログラミングの基本(2)
・Chapter 4:ライティング基礎
・Chapter 5:ライティング発展
・Chapter 6:さまざまなテクスチャの利用
・Chapter 7:PBR(物理ベースレンダリング)
・Chapter 8:2D描画の基礎
・Chapter 9:発展的な2D描画
・Chapter 10:ポストエフェクト
・Chapter 11:シャドウイング
・Chapter 12:ディファードレンダリング
・Chapter 13:ディファードレンダリングとフォワードレンダリングの融合
・Chapter 14:3Dゲームで使える発展的シェーダー
・Chapter 15:コンピュートシェーダー
・Chapter 16:TBR(Tile Based Rendering)
・Chapter 17:レイトレーシング
↓全て表示↑少なく表示
内容サンプル


目次
Chapter 1 レンダリングパイプライン入門
1.1 CPUとGPU
1.2 メインメモリとグラフィックスメモリ
1.3 絵が表示されるまでの流れ
Chapter 2 はじめてのシェーダー
2.1 DirectX 7.1以前のレンダリングパイプライン
2.2 シェーダーの導入
2.3 頂点シェーダー入門
2.4 ピクセルシェーダー入門
Chapter 3 シェーダープログラミングの基本
3.1 座標変換
3.2 テクスチャマッピング
3.3 複雑な3Dモデルの表示へ
Chapter 4 ライティング基礎
4.1 ライティングなしの3Dモデル表示
4.2 ライトの種類
4.3 反射:Phongの反射モデル
Chapter 5 ライティング発展
5.1 ポイントライト
5.2 スポットライト
5.3 リムライト
5.4 半球ライト
Chapter 6 さまざまなテクスチャの利用
6.1 法線マップ
6.2 スペキュラマップ
6.3 アンビエントオクルージョンマップ(AOマップ)
Chapter 7 PBR(物理ベースレンダリング)
7.1 PBRとは
7.2 ディズニーの論文によるPBR
Chapter 8 2D描画の基礎
8.1 DirectX 12で2D描画
8.2 2D表示
8.3 αブレンディング
Chapter 9 発展的な2D描画
9.1 リニアワイプ
9.2 その他のワイプ
9.3 画像の色を変化させる
Chapter 10 ポストエフェクト
10.1 オフスクリーンレンダリング
10.2 モノクロ化
10.3 ブラー
10.4 ブルーム
10.5 川瀬式ブルームフィルター
10.6 被写界深度
10.7 カメラの絞りによる六角形ブラー
Chapter 11 シャドウイング
11.1 投影シャドウ
11.2 デプスシャドウ
11.3 PCF(Percentage Closer Filtering)
11.4 VSM(Variance Shadow Maps)
11.5 カスケードシャドウ
Chapter 12 ディファードレンダリング
12.1 フォワードレンダリングとは
12.2 ディファードレンダリングとは
12.3 ディファードレンダリングのメリット
12.4 ディファードレンダリングのデメリット
12.5 ディファードレンダリング入門~拡散反射~
12.6 ディファードレンダリング入門~鏡面反射~
12.7 ディファードレンダリング入門~法線マップ~
12.8 ディファードレンダリング入門~スペキュラマップ~
Chapter 13 ディファードレンダリングとフォワードレンダリングの融合
13.1 半透明問題
13.2 ハイブリッドエンジンの実装
Chapter 14 3Dゲームで使える発展的シェーダー
14.1 レンダリングエンジン
14.2 レンダリングエンジンのカスタマイズ
14.3 輪郭線の描画
14.4 ステルス処理
14.5 ディザリング
Chapter 15 コンピュートシェーダー
15.1 GPGPUとは
15.2 コンピュートシェーダーとは
15.3 データの入力と出力
15.4 構造化バッファー
15.5 アンオーダーアクセスビューとシェーダーリソースビュー
15.6 学生の平均点を計算するプログラムを眺めてみる
15.7 合計点を出力するように改造する
15.8 標準偏差を計算する
15.9 コンピュートシェーダーの並列処理
Chapter 16 TBR(Tile Based Rendering)
16.1 ポイントライト再び
16.2 TBDR(Tile Based Deffered Rendering)
16.3 TBFR(Tile Based Forward Rendering)
Chapter 17 レイトレーシング
17.1 レイトレーシングとは
17.2 レイトレーシング法とラスタライザー法の違い
17.3 レイトレーシング超入門
17.4 テクスチャマッピング
17.5 2次反射
17.6 DirectX Raytracing(DXR)
1.1 CPUとGPU
1.2 メインメモリとグラフィックスメモリ
1.3 絵が表示されるまでの流れ
Chapter 2 はじめてのシェーダー
2.1 DirectX 7.1以前のレンダリングパイプライン
2.2 シェーダーの導入
2.3 頂点シェーダー入門
2.4 ピクセルシェーダー入門
Chapter 3 シェーダープログラミングの基本
3.1 座標変換
3.2 テクスチャマッピング
3.3 複雑な3Dモデルの表示へ
Chapter 4 ライティング基礎
4.1 ライティングなしの3Dモデル表示
4.2 ライトの種類
4.3 反射:Phongの反射モデル
Chapter 5 ライティング発展
5.1 ポイントライト
5.2 スポットライト
5.3 リムライト
5.4 半球ライト
Chapter 6 さまざまなテクスチャの利用
6.1 法線マップ
6.2 スペキュラマップ
6.3 アンビエントオクルージョンマップ(AOマップ)
Chapter 7 PBR(物理ベースレンダリング)
7.1 PBRとは
7.2 ディズニーの論文によるPBR
Chapter 8 2D描画の基礎
8.1 DirectX 12で2D描画
8.2 2D表示
8.3 αブレンディング
Chapter 9 発展的な2D描画
9.1 リニアワイプ
9.2 その他のワイプ
9.3 画像の色を変化させる
Chapter 10 ポストエフェクト
10.1 オフスクリーンレンダリング
10.2 モノクロ化
10.3 ブラー
10.4 ブルーム
10.5 川瀬式ブルームフィルター
10.6 被写界深度
10.7 カメラの絞りによる六角形ブラー
Chapter 11 シャドウイング
11.1 投影シャドウ
11.2 デプスシャドウ
11.3 PCF(Percentage Closer Filtering)
11.4 VSM(Variance Shadow Maps)
11.5 カスケードシャドウ
Chapter 12 ディファードレンダリング
12.1 フォワードレンダリングとは
12.2 ディファードレンダリングとは
12.3 ディファードレンダリングのメリット
12.4 ディファードレンダリングのデメリット
12.5 ディファードレンダリング入門~拡散反射~
12.6 ディファードレンダリング入門~鏡面反射~
12.7 ディファードレンダリング入門~法線マップ~
12.8 ディファードレンダリング入門~スペキュラマップ~
Chapter 13 ディファードレンダリングとフォワードレンダリングの融合
13.1 半透明問題
13.2 ハイブリッドエンジンの実装
Chapter 14 3Dゲームで使える発展的シェーダー
14.1 レンダリングエンジン
14.2 レンダリングエンジンのカスタマイズ
14.3 輪郭線の描画
14.4 ステルス処理
14.5 ディザリング
Chapter 15 コンピュートシェーダー
15.1 GPGPUとは
15.2 コンピュートシェーダーとは
15.3 データの入力と出力
15.4 構造化バッファー
15.5 アンオーダーアクセスビューとシェーダーリソースビュー
15.6 学生の平均点を計算するプログラムを眺めてみる
15.7 合計点を出力するように改造する
15.8 標準偏差を計算する
15.9 コンピュートシェーダーの並列処理
Chapter 16 TBR(Tile Based Rendering)
16.1 ポイントライト再び
16.2 TBDR(Tile Based Deffered Rendering)
16.3 TBFR(Tile Based Forward Rendering)
Chapter 17 レイトレーシング
17.1 レイトレーシングとは
17.2 レイトレーシング法とラスタライザー法の違い
17.3 レイトレーシング超入門
17.4 テクスチャマッピング
17.5 2次反射
17.6 DirectX Raytracing(DXR)
↓全て表示↑少なく表示
Users Voice
内容サンプル


著者略歴
清原隆行(キヨハラタカユキ)
大阪のゲーム開発会社で13年間勤務し、国内だけでなく、海外のゲーム制作にも関わる。主にC++、DirectX、OpenGLなどを利用したコンソールゲーム機のゲーム制作で、ゲームAI、開発ツール制作、DirectXを用いたリアルタイムグラフィックプログラム、最適化などの業務を行ってきた。現在は、愛媛県のゲーム系の専門学校で、主にゲーム制作とCGプログラミングの授業を担当し、後進の育成に取り組んでいる(本データはこの書籍が刊行された当時に掲載されていたものです)
大阪のゲーム開発会社で13年間勤務し、国内だけでなく、海外のゲーム制作にも関わる。主にC++、DirectX、OpenGLなどを利用したコンソールゲーム機のゲーム制作で、ゲームAI、開発ツール制作、DirectXを用いたリアルタイムグラフィックプログラム、最適化などの業務を行ってきた。現在は、愛媛県のゲーム系の専門学校で、主にゲーム制作とCGプログラミングの授業を担当し、後進の育成に取り組んでいる(本データはこの書籍が刊行された当時に掲載されていたものです)
↓全て表示↑少なく表示
Direct3D12 ゲームグラフィックス実践ガイド
(概要)
Direct3D 12を用いてグラフィックスプログラミングの理論と実装を丁寧に解説し、入門書レベルを卒業し脱初心者を目指している読者に有益な情報を提供する書籍です。ゲームエンジンを利用していても、それを支えるグラフィックスAPI関連の知識を学ぶことはより理想に近い開発を行う上で重要な意味を持ちます。本書ではプログラム上の処理に留まらず理論の復習や導出を丁寧に解説することで、技術やシステムの進化に依らない真の実力を身に付けることができるようになります。
(こんな方におすすめ)
・理論から基本を復習したい社会人 1 ~2 年目のプログラマー、グラフィックスプログラマーを目指す学生
(目次)
Chapter1 プログラミングを始める前に
1.1 コンピュータグラフィックスとテクノロジーの発展
1.2 Direct3D概論
1.3 画面にポリゴンが表示されるまでの工程
1.4 Direct3D 12はどこが変わった?
1.5 開発環境の構築
Chapter2 ウィンドウの表示
2.1 プロジェクトの作成
2.2 アプリケーションクラスの作成
2.3 Direct3D 12の初期化処理
2.4 Direct3D 12の描画処理
2.5 Direct3D 12の終了処理
2.6 リファクタリング
2.7 スマートポインタの使用
2.8 デバッグフラグの追加
2.9 メモリリークチェック
Chapter3 ポリゴンの表示
3.1 シェーダの準備
3.2 描画に必要なインタフェースの生成
3.3 頂点バッファの生成
3.4 定数バッファの生成
3.5 ルートシグニチャの生成
3.6 グラフィックスパイプラインステー
3.7 描画コマンドの生成
3.8 インデックスバッファ
3.9 複数図形の描画
Chapter4 テクスチャの表示
4.1 テクスチャとは?
4.2 DirectXTKライブラリの利用
4.3 テクスチャの描画
Chapter5 メッシュの表示
5.1 assimpライブラリを利用したモデルの描画
5.2 フレームワークの整備
Chapter6 基本的なライティング
6.1 光と材質
6.2 Lambertモデル
6.3 Phongモデル
6.4 バンプマッピング
Chapter7 光の数値化
7.1 立体角
7.2 光
7.3 放射分析学
7.4 測光学
7.5 放射量と測光量の単位変換
Chapter8 光伝達のモデル化
8.1 光の伝達を表現するには?
8.2 どのぐらい光が出射される?
8.3 BRDFモデル
8.4 オフスペキュラー
8.5 マイクロファセットに基づくBRDF
Chapter9 色を適切に扱う
9.1 色を表現する
9.2 ディスプレイへの出力
9.3 色の規格
9.4 トーンマッピング
9.5 プログラムの実装
Chapter10 ライトの種類と表現
10.1 光束と放射束の単位変換
10.2 パンクチュアルライト
10.3 フォトメトリックライト
10.4 イメージベースドライト
Chapter11 メッシュシェーダパイプライン
11.1 メッシュシェーダとは?
11.2 ポリゴンの描画
11.3 メッシュレットを用いた描画
AppendixA デバッグの仕方
A1 基本的なデバッグ操作
A2 Direct3D 12のデバッグ
A3 PIX for Windowsを用いたグラフィックスデバッグ
AppendixB DirectX Agility SDKの使用
B1 Agility SDKの使用方法
B2 Agility SDKの動作について
Direct3D 12を用いてグラフィックスプログラミングの理論と実装を丁寧に解説し、入門書レベルを卒業し脱初心者を目指している読者に有益な情報を提供する書籍です。ゲームエンジンを利用していても、それを支えるグラフィックスAPI関連の知識を学ぶことはより理想に近い開発を行う上で重要な意味を持ちます。本書ではプログラム上の処理に留まらず理論の復習や導出を丁寧に解説することで、技術やシステムの進化に依らない真の実力を身に付けることができるようになります。
(こんな方におすすめ)
・理論から基本を復習したい社会人 1 ~2 年目のプログラマー、グラフィックスプログラマーを目指す学生
(目次)
Chapter1 プログラミングを始める前に
1.1 コンピュータグラフィックスとテクノロジーの発展
1.2 Direct3D概論
1.3 画面にポリゴンが表示されるまでの工程
1.4 Direct3D 12はどこが変わった?
1.5 開発環境の構築
Chapter2 ウィンドウの表示
2.1 プロジェクトの作成
2.2 アプリケーションクラスの作成
2.3 Direct3D 12の初期化処理
2.4 Direct3D 12の描画処理
2.5 Direct3D 12の終了処理
2.6 リファクタリング
2.7 スマートポインタの使用
2.8 デバッグフラグの追加
2.9 メモリリークチェック
Chapter3 ポリゴンの表示
3.1 シェーダの準備
3.2 描画に必要なインタフェースの生成
3.3 頂点バッファの生成
3.4 定数バッファの生成
3.5 ルートシグニチャの生成
3.6 グラフィックスパイプラインステー
3.7 描画コマンドの生成
3.8 インデックスバッファ
3.9 複数図形の描画
Chapter4 テクスチャの表示
4.1 テクスチャとは?
4.2 DirectXTKライブラリの利用
4.3 テクスチャの描画
Chapter5 メッシュの表示
5.1 assimpライブラリを利用したモデルの描画
5.2 フレームワークの整備
Chapter6 基本的なライティング
6.1 光と材質
6.2 Lambertモデル
6.3 Phongモデル
6.4 バンプマッピング
Chapter7 光の数値化
7.1 立体角
7.2 光
7.3 放射分析学
7.4 測光学
7.5 放射量と測光量の単位変換
Chapter8 光伝達のモデル化
8.1 光の伝達を表現するには?
8.2 どのぐらい光が出射される?
8.3 BRDFモデル
8.4 オフスペキュラー
8.5 マイクロファセットに基づくBRDF
Chapter9 色を適切に扱う
9.1 色を表現する
9.2 ディスプレイへの出力
9.3 色の規格
9.4 トーンマッピング
9.5 プログラムの実装
Chapter10 ライトの種類と表現
10.1 光束と放射束の単位変換
10.2 パンクチュアルライト
10.3 フォトメトリックライト
10.4 イメージベースドライト
Chapter11 メッシュシェーダパイプライン
11.1 メッシュシェーダとは?
11.2 ポリゴンの描画
11.3 メッシュレットを用いた描画
AppendixA デバッグの仕方
A1 基本的なデバッグ操作
A2 Direct3D 12のデバッグ
A3 PIX for Windowsを用いたグラフィックスデバッグ
AppendixB DirectX Agility SDKの使用
B1 Agility SDKの使用方法
B2 Agility SDKの動作について
↓全て表示↑少なく表示
内容サンプル


目次
Chapter1 プログラミングを始める前に
1.1 コンピュータグラフィックスとテクノロジーの発展
1.2 Direct3D概論
1.3 画面にポリゴンが表示されるまでの工程
1.3.1 大まかな流れ
1.3.2 描画コマンドの作成
1.3.3 レンダリングパイプライン
1.3.4 コンピュートパイプライン
1.4 Direct3D 12はどこが変わった?
1.4.1 コマンドリストとコマンドキュー
1.4.2 パイプラインステート
1.4.3 ディスクリプタ
1.4.4 ルートシグニチャ
1.4.5 バンドル
1.4.6 インダイレクトコマンド
1.4.7 シェーダモデル 6.0
1.4.8 レイトレーシングパイプライン
1.4.9 可変レートシェーディング
1.4.10 メッシュシェーダパイプライン
1.4.11 サンプラーフィードバック
1.5 開発環境の構築
1.5.1 開発環境について
1.5.2 Visual Studioのインストール
1.5.3 グラフィックスツールの設定
Chapter2 ウィンドウの表示
2.1 プロジェクトの作成
2.2 アプリケーションクラスの作成
2.2.1 Appクラスの実装
2.2.2 Appクラスの呼び出し
2.3 Direct3D 12の初期化処理
2.3.1 デバイスの生成
2.3.2 コマンドキューの生成
2.3.3 スワップチェインの生成
2.3.4 コマンドリストの生成
2.3.5 レンダーターゲットビューの生成
2.3.6 フェンスの生成
2.4 Direct3D 12の描画処理
2.4.1 コマンドの記録開始
2.4.2 書き込みのためのリソースバリア
2.4.3 レンダーターゲットビューの設定
2.4.4 表示のためのリソースバリア
2.4.5 コマンドの記録終了とコマンドリストの実行
2.4.6 表示処理
2.5 Direct3D 12の終了処理
2.6 リファクタリング
2.7 スマートポインタの使用
2.8 デバッグフラグの追加
2.9 メモリリークチェック
Chapter3 ポリゴンの表示
3.1 シェーダの準備
3.1.1 シェーダファイルの作成
3.1.2 頂点シェーダの実装
3.1.3 ピクセルシェーダの実装
3.2 描画に必要なインタフェースの生成
3.3 頂点バッファの生成
3.3.1 頂点データの準備
3.3.2 リソースの生成
3.3.3 頂点データの書き込み
3.3.4 頂点バッファビューの設定
3.4 定数バッファの生成
3.4.1 定数バッファデータの定義
3.4.2 ディスクリプタヒープの生成
3.4.3 リソースの生成
3.4.4 定数バッファビューの生成
3.5 ルートシグニチャの生成
3.5.1 ルートパラメータの種類
3.5.2 ルートシグニチャの生成
3.6 グラフィックスパイプラインステー
3.6.1 入力レイアウトの設定
3.6.2 ラスタライザーステートの設定
3.6.3 ブレンドステートの設定
3.6.4 シェーダの設定
3.6.5 パイプラインステートの生成
3.7 描画コマンドの生成
3.8 インデックスバッファ
3.8.1 インデックスバッファの生成
3.8.2 描画処理の変更
3.9 複数図形の描画
3.9.1 Zバッファ法
3.9.2 深度ステンシルビューの生成
3.9.3 深度ステンシルステートの設定
3.9.4 描画処理の変更
Chapter4 テクスチャの表示
4.1 テクスチャとは?
4.1.1 画像形式
4.1.2 テクスチャ座標
4.1.3 テクスチャアドレッシングモード
4.1.4 ミップマップ
4.1.5 テクスチャフィルタリング
4.2 DirectXTKライブラリの利用
4.2.1 DirectXTK12のインストール
4.2.2 テクスチャデータの準備
4.3 テクスチャの描画
4.3.1 シェーダの準備
4.3.2 頂点バッファの変更
4.3.3 ルートシグニチャの変更
4.3.4 テクスチャの生成
4.3.5 描画関数の変更
Chapter5 メッシュの表示
5.1 assimpライブラリを利用したモデルの描画
5.1.1 assimpライブラリのインストール
5.1.2 メッシュファイルの準備
5.1.3 ファイルのロード処理
5.1.4 メッシュデータの変換処理
5.1.5 メッシュの描画
5.2 フレームワークの整備
5.2.1 ディスクリプタプールクラス
5.2.2 テクスチャクラス
5.2.3 定数バッファクラス
5.2.4 メッシュクラス
5.2.5 マテリアルクラス
Chapter6 基本的なライティング
6.1 光と材質
6.2 Lambertモデル
6.3 Phongモデル
6.4 バンプマッピング
6.4.1 法線マップとは?
6.4.2 法線マップの計算方法
6.4.3 接線空間への基底変換
6.4.4 バンプマッピングの実装
6.4.5 ワールド空間への基底変換
Chapter7 光の数値化
7.1 立体角
7.2 光
7.3 放射分析学
7.3.1 放射エネルギー(radiant energy)
7.3.2 放射束(radiant flux)
7.3.3 放射照度(irradiance)
7.3.4 放射発散度(radiant exitance)
7.3.5 放射強度(radiant intensity)
7.3.6 放射輝度(radiance)
7.4 測光学
7.4.1 錐状体
7.4.2 分光視感度(spectral luminous efficacy)
7.4.3 光束(luminous flux)
7.4.4 光度(luminous intensity)
7.4.5 照度(illuminance)
7.4.6 光束発散度(luminous exitance)
7.4.7 輝度(luminance)
7.5 放射量と測光量の単位変換
Chapter8 光伝達のモデル化
8.1 光の伝達を表現するには?
8.2 どのぐらい光が出射される?
8.2.1 双方向散乱面反射率分布関数
8.2.2 双方向反射率分布関数
8.3 BRDFモデル
8.3.1 Lambertモデル
8.3.2 Phongモデル
8.4 オフスペキュラー
8.4.1 フレネル反射
8.4.2 シャドウイングとマスキング
8.5 マイクロファセットに基づくBRDF
8.5.1 マイクロサーフェイス
8.5.2 マイクロサーフェイスの射影
8.5.3 マイクロファセットに基づくBRDFの導出
8.5.4 シャドウイング・マスキング関数
8.5.5 Cook-Torranceモデル
8.5.6 GGXモデル
Chapter9 色を適切に扱う
9.1 色を表現する
9.1.1 混色
9.1.2 等色実験
9.1.3 CIE 1931 RGB表色系
9.1.4 CIE 1931 XYZ表色系
9.1.5 xy色度図
9.2 ディスプレイへの出力
9.2.1 ガンマ補正
9.2.2 伝達関数
9.2.3 色空間の変換
9.3 色の規格
9.3.1 IEC 61966-2-1規格(sRGB規格)
9.3.2 ITU-R BT.709勧告
9.3.3 ITU-R BT.2100勧告
9.4 トーンマッピング
9.4.1 Reinhardトーンマッピング
9.4.2 HDRディスプレイとトーンマッピ
9.4.3 Reinhardトーンマッピングの拡張
9.4.4 GTトーンマップ
9.5 プログラムの実装
9.5.1 HDRサポートのチェック
9.5.2 HDR画像の準備
9.5.3 レンダーターゲットのフォーマッ
9.5.4 色域変換
9.5.5 トーンマッピングの適用
9.5.6 OETFの適用
Chapter10 ライトの種類と表現
10.1 光束と放射束の単位変換
10.2 パンクチュアルライト
10.2.1 ポイントライト
10.2.2 スポットライト
10.2.3 光の減衰
10.2.4 ディレクショナルライト
10.3 フォトメトリックライト
10.3.1 配光測定のための座標系
10.3.2 IESプロファイルの仕様
10.3.3 IESプロファイルの変換
10.3.4 IESプロファイルの適用
10.4 イメージベースドライト
10.4.1 逆変換法
10.4.2 モンテカルロ積分法
10.4.3 ライトプローブのフィルタリング
10.4.4 ライトプローブの評価
Chapter11 メッシュシェーダパイプライン
11.1 メッシュシェーダとは?
11.2 ポリゴンの描画
11.2.1 メッシュシェーダの実装
11.2.2 パイプラインステートの生成
11.2.3 描画コマンドの発行
11.3 メッシュレットを用いた描画
11.3.1 メッシュレットの生成
11.3.2 シェーダの実装
11.3.3 描画メソッドの修正
AppendixA デバッグの仕方
A1 基本的なデバッグ操作
A1.1 ブレークポイント
A1.2 データウォッチ
A1.3 ステップ実行
A1.4 特定の場所に移動する
A1.5 コールスタック
A1.6 メモリの表示
A1.7 データブレーク
A1.8 CRTデバッグライブラリ
A1.9 並列スタック/並列ウォッチ
A2 Direct3D 12のデバッグ
A2.1 デバッグレイヤーの有効化
A2.2 GPUクラッシュの解析
A3 PIX for Windowsを用いたグラフィックスデバッグ
A3.1 インストールとプログラムの起動方法
A3.2 GPUキャプチャー方法
A3.3 Pipelineビュー
A3.4 頂点シェーダのデバッグ
A3.5 ピクセルシェーダのデバッグ
AppendixB DirectX Agility SDKの使用
B1 Agility SDKの使用方法
B2 Agility SDKの動作について
1.1 コンピュータグラフィックスとテクノロジーの発展
1.2 Direct3D概論
1.3 画面にポリゴンが表示されるまでの工程
1.3.1 大まかな流れ
1.3.2 描画コマンドの作成
1.3.3 レンダリングパイプライン
1.3.4 コンピュートパイプライン
1.4 Direct3D 12はどこが変わった?
1.4.1 コマンドリストとコマンドキュー
1.4.2 パイプラインステート
1.4.3 ディスクリプタ
1.4.4 ルートシグニチャ
1.4.5 バンドル
1.4.6 インダイレクトコマンド
1.4.7 シェーダモデル 6.0
1.4.8 レイトレーシングパイプライン
1.4.9 可変レートシェーディング
1.4.10 メッシュシェーダパイプライン
1.4.11 サンプラーフィードバック
1.5 開発環境の構築
1.5.1 開発環境について
1.5.2 Visual Studioのインストール
1.5.3 グラフィックスツールの設定
Chapter2 ウィンドウの表示
2.1 プロジェクトの作成
2.2 アプリケーションクラスの作成
2.2.1 Appクラスの実装
2.2.2 Appクラスの呼び出し
2.3 Direct3D 12の初期化処理
2.3.1 デバイスの生成
2.3.2 コマンドキューの生成
2.3.3 スワップチェインの生成
2.3.4 コマンドリストの生成
2.3.5 レンダーターゲットビューの生成
2.3.6 フェンスの生成
2.4 Direct3D 12の描画処理
2.4.1 コマンドの記録開始
2.4.2 書き込みのためのリソースバリア
2.4.3 レンダーターゲットビューの設定
2.4.4 表示のためのリソースバリア
2.4.5 コマンドの記録終了とコマンドリストの実行
2.4.6 表示処理
2.5 Direct3D 12の終了処理
2.6 リファクタリング
2.7 スマートポインタの使用
2.8 デバッグフラグの追加
2.9 メモリリークチェック
Chapter3 ポリゴンの表示
3.1 シェーダの準備
3.1.1 シェーダファイルの作成
3.1.2 頂点シェーダの実装
3.1.3 ピクセルシェーダの実装
3.2 描画に必要なインタフェースの生成
3.3 頂点バッファの生成
3.3.1 頂点データの準備
3.3.2 リソースの生成
3.3.3 頂点データの書き込み
3.3.4 頂点バッファビューの設定
3.4 定数バッファの生成
3.4.1 定数バッファデータの定義
3.4.2 ディスクリプタヒープの生成
3.4.3 リソースの生成
3.4.4 定数バッファビューの生成
3.5 ルートシグニチャの生成
3.5.1 ルートパラメータの種類
3.5.2 ルートシグニチャの生成
3.6 グラフィックスパイプラインステー
3.6.1 入力レイアウトの設定
3.6.2 ラスタライザーステートの設定
3.6.3 ブレンドステートの設定
3.6.4 シェーダの設定
3.6.5 パイプラインステートの生成
3.7 描画コマンドの生成
3.8 インデックスバッファ
3.8.1 インデックスバッファの生成
3.8.2 描画処理の変更
3.9 複数図形の描画
3.9.1 Zバッファ法
3.9.2 深度ステンシルビューの生成
3.9.3 深度ステンシルステートの設定
3.9.4 描画処理の変更
Chapter4 テクスチャの表示
4.1 テクスチャとは?
4.1.1 画像形式
4.1.2 テクスチャ座標
4.1.3 テクスチャアドレッシングモード
4.1.4 ミップマップ
4.1.5 テクスチャフィルタリング
4.2 DirectXTKライブラリの利用
4.2.1 DirectXTK12のインストール
4.2.2 テクスチャデータの準備
4.3 テクスチャの描画
4.3.1 シェーダの準備
4.3.2 頂点バッファの変更
4.3.3 ルートシグニチャの変更
4.3.4 テクスチャの生成
4.3.5 描画関数の変更
Chapter5 メッシュの表示
5.1 assimpライブラリを利用したモデルの描画
5.1.1 assimpライブラリのインストール
5.1.2 メッシュファイルの準備
5.1.3 ファイルのロード処理
5.1.4 メッシュデータの変換処理
5.1.5 メッシュの描画
5.2 フレームワークの整備
5.2.1 ディスクリプタプールクラス
5.2.2 テクスチャクラス
5.2.3 定数バッファクラス
5.2.4 メッシュクラス
5.2.5 マテリアルクラス
Chapter6 基本的なライティング
6.1 光と材質
6.2 Lambertモデル
6.3 Phongモデル
6.4 バンプマッピング
6.4.1 法線マップとは?
6.4.2 法線マップの計算方法
6.4.3 接線空間への基底変換
6.4.4 バンプマッピングの実装
6.4.5 ワールド空間への基底変換
Chapter7 光の数値化
7.1 立体角
7.2 光
7.3 放射分析学
7.3.1 放射エネルギー(radiant energy)
7.3.2 放射束(radiant flux)
7.3.3 放射照度(irradiance)
7.3.4 放射発散度(radiant exitance)
7.3.5 放射強度(radiant intensity)
7.3.6 放射輝度(radiance)
7.4 測光学
7.4.1 錐状体
7.4.2 分光視感度(spectral luminous efficacy)
7.4.3 光束(luminous flux)
7.4.4 光度(luminous intensity)
7.4.5 照度(illuminance)
7.4.6 光束発散度(luminous exitance)
7.4.7 輝度(luminance)
7.5 放射量と測光量の単位変換
Chapter8 光伝達のモデル化
8.1 光の伝達を表現するには?
8.2 どのぐらい光が出射される?
8.2.1 双方向散乱面反射率分布関数
8.2.2 双方向反射率分布関数
8.3 BRDFモデル
8.3.1 Lambertモデル
8.3.2 Phongモデル
8.4 オフスペキュラー
8.4.1 フレネル反射
8.4.2 シャドウイングとマスキング
8.5 マイクロファセットに基づくBRDF
8.5.1 マイクロサーフェイス
8.5.2 マイクロサーフェイスの射影
8.5.3 マイクロファセットに基づくBRDFの導出
8.5.4 シャドウイング・マスキング関数
8.5.5 Cook-Torranceモデル
8.5.6 GGXモデル
Chapter9 色を適切に扱う
9.1 色を表現する
9.1.1 混色
9.1.2 等色実験
9.1.3 CIE 1931 RGB表色系
9.1.4 CIE 1931 XYZ表色系
9.1.5 xy色度図
9.2 ディスプレイへの出力
9.2.1 ガンマ補正
9.2.2 伝達関数
9.2.3 色空間の変換
9.3 色の規格
9.3.1 IEC 61966-2-1規格(sRGB規格)
9.3.2 ITU-R BT.709勧告
9.3.3 ITU-R BT.2100勧告
9.4 トーンマッピング
9.4.1 Reinhardトーンマッピング
9.4.2 HDRディスプレイとトーンマッピ
9.4.3 Reinhardトーンマッピングの拡張
9.4.4 GTトーンマップ
9.5 プログラムの実装
9.5.1 HDRサポートのチェック
9.5.2 HDR画像の準備
9.5.3 レンダーターゲットのフォーマッ
9.5.4 色域変換
9.5.5 トーンマッピングの適用
9.5.6 OETFの適用
Chapter10 ライトの種類と表現
10.1 光束と放射束の単位変換
10.2 パンクチュアルライト
10.2.1 ポイントライト
10.2.2 スポットライト
10.2.3 光の減衰
10.2.4 ディレクショナルライト
10.3 フォトメトリックライト
10.3.1 配光測定のための座標系
10.3.2 IESプロファイルの仕様
10.3.3 IESプロファイルの変換
10.3.4 IESプロファイルの適用
10.4 イメージベースドライト
10.4.1 逆変換法
10.4.2 モンテカルロ積分法
10.4.3 ライトプローブのフィルタリング
10.4.4 ライトプローブの評価
Chapter11 メッシュシェーダパイプライン
11.1 メッシュシェーダとは?
11.2 ポリゴンの描画
11.2.1 メッシュシェーダの実装
11.2.2 パイプラインステートの生成
11.2.3 描画コマンドの発行
11.3 メッシュレットを用いた描画
11.3.1 メッシュレットの生成
11.3.2 シェーダの実装
11.3.3 描画メソッドの修正
AppendixA デバッグの仕方
A1 基本的なデバッグ操作
A1.1 ブレークポイント
A1.2 データウォッチ
A1.3 ステップ実行
A1.4 特定の場所に移動する
A1.5 コールスタック
A1.6 メモリの表示
A1.7 データブレーク
A1.8 CRTデバッグライブラリ
A1.9 並列スタック/並列ウォッチ
A2 Direct3D 12のデバッグ
A2.1 デバッグレイヤーの有効化
A2.2 GPUクラッシュの解析
A3 PIX for Windowsを用いたグラフィックスデバッグ
A3.1 インストールとプログラムの起動方法
A3.2 GPUキャプチャー方法
A3.3 Pipelineビュー
A3.4 頂点シェーダのデバッグ
A3.5 ピクセルシェーダのデバッグ
AppendixB DirectX Agility SDKの使用
B1 Agility SDKの使用方法
B2 Agility SDKの動作について
↓全て表示↑少なく表示
内容サンプル


著者略歴
Unity C# ゲームプログラミング入門 2020対応
Unityは、誰もが簡単に無料で高度な3Dゲームを作れるゲームエンジンです。しかし、部品を置いて、キャラを配置するだけでは面白いゲームは作れません。本書は、「Unityは使える。でも面白いゲームを作る方法がわからない」という人のために、面白い3Dゲーム作りに必須のプログラミングをわかりやすく解説した入門書です。ヒューマノイドの操作、2人対戦格闘の作成など、ゲームに必要な機能の組み立て方がわかります。サンプルのDLサービス付き。
※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。
※この商品は固定レイアウトで作成されており、タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また、文字列のハイライトや検索、辞書の参照、引用などの機能が使用できません。
内容サンプル


目次
1 ゲームで使うUnityの基本機能
2 ゲームのデータを管理する
3 アニメーションの活用
4 ヒューマノイドを使いこなす
5 GUIを活用する
6 マルチプレイヤーゲーム
2 ゲームのデータを管理する
3 アニメーションの活用
4 ヒューマノイドを使いこなす
5 GUIを活用する
6 マルチプレイヤーゲーム
Users Voice
内容サンプル


[ゲーム&モダンJavaScript文法で2倍楽しい]グラフィックスプログラミング入門——リアルタイムに動く画面を描く。...
[ゲーム&モダンJavaScript文法で2倍楽しい]グラフィックスプログラミング入門——リアルタイムに動く画面を描く。プログラマー直伝の基本 WEB+DB PRESS plus
(著)杉本 雅広
発売日 2020/01/11
(著)杉本 雅広
発売日 2020/01/11
総合評価
(2022/08/18 12:04時点)
こちらの書籍は 2020/10/28 紙版の2刷に対応するため更新をおこないました。
(概要)
楽しく遊べる2Dゲームの開発を進めながら、グラフィックスプログラミングの基本が学べる入門書。
一度習得すると、ゲームや映像生成、動的可視化をはじめ、幅広い分野で長く役立つグラフィックスプログラミングの基礎。
本書では、リアルタイムに動く画像を描くために求められる技術や考え方を平易に解説します。
開発言語として、エディタとブラウザがあれば開発ができるJavaScriptを採用し、すぐにスタートできる構成が特徴です。
豊富な図解に加え、いまどきのJavaScript(ES2015準拠)の基本文法、これだけは知っておきたい数学知識も厳選収録。
一線の開発者による、現場で活かせるやさしい実践解説です。
(こんな方におすすめ)
・コンピューターグラフィックスとそのプログラミングに興味をお持ちの方々
・広くグラフィックスというテーマに取り組んでいる学生の方々
・ゲーム開発やWeb開発にまつわる知識を、土台から強化していきたい方々
(目次)
第1章 [入門]グラフィックスプログラミング ……長く役立つ基礎の基礎
1.1 グラフィックスとグラフィックスプログラミングの基本 ……CG、2D、3D、画素
1.2 グラフィックスプログラミングの分類 ……活躍の舞台は広い
1.3 グラフィックスプログラミングと技術 ……原則、プログラミング言語、API
1.4 本章のまとめ
第2章 [グラフィックスプログラミングで役立つ]JavaScript/ES2015入門 ……開発環境から文法基礎まで
2.1 本書における開発言語と開発環境 ……JavaScript、Chrome、Windows&macOS
2.2 サンプルと実行環境について ……ファイル構成、ブラウザ&開発ツール
2.3 [グラフィックスプログラミングのための]JavaScript/ES2015の基本 ……基本操作、変数、関数、オブジェクト、演算子
2.4 本章のまとめ
第3章 [基礎]グラフィックスプログラミングと数学 ……三角関数、線型代数、乱数&補間
3.1 角度と三角関数 ……ラジアン、sin(サイン)、cos(コサイン)
3.2 ベクトルと行列 ……点から始める線型代数
3.3 乱数/擬似乱数と補間&イージング ……グラフィックスプログラミングに役立つ数学関連知識
3.4 本章のまとめ
第4章 Canvas2Dから学べる基本 ……Canvas2Dコンテキストと描画命令
4.1 Canvas2Dの基礎知識 ……コンテキストオブジェクト、Document Object Model
4.2 Canvas2Dの基本プリミティブ ……矩形、線、多角形、円、円弧、ベジェ曲線...
4.3 Canvas2Dコンテキストの描画効果&演出機能 ……テキスト、ドロップシャドウ、グラデーション、パターン、アルファブレンディング、コンポジットオペレーション
4.4 本章のまとめ
第5章 ユーザーインタラクションのプログラミング ……ゼロから作るシューティングゲーム❶
5.1 [まずは準備から]シューティングゲームを作る ……ファイル構成とルール
5.2 ゲームの骨格を作る ……土台となるプログラムの設計
5.3 本章のまとめ
第6章 キャラクターと動きのプログラミング ……ゼロから作るシューティングゲーム❷
6.1 キャラクターの実装 ……キャラクター管理クラス、キーの入力によるインタラクティブな移動
6.2 ショットの実装 ……大量ショットのインスタンス、程良い速度、回転描画
6.3 敵キャラクターの実装 ……敵キャラクターの配置、シーン管理&更新、敵キャラクターのタイプ
6.4 本章のまとめ
第7章 状態に応じた判定や演出のプログラミング ……ゼロから作るシューティングゲーム❸
7.1 衝突判定 ……オブジェクト同士の衝突、エフェクト、補間関数/イージング関数
7.2 自機キャラクターの状態に応じた処理 ……ライフの減算、ゲームオーバーの演出、再スタート
7.3 ゲームの品質向上 ……スコア、敵キャラの攻撃力&耐久力、シーン管理、背景、音声、ボスキャラ
7.4 本章のまとめ
第8章 ピクセルと色のプログラミング ピクセルを塗る操作と感覚
8.1 [再入門]グラフィックスを構成するピクセル ……ピクセルと画像処理
8.2 Canvas APIでピクセルを直接操作する ……ピクセル操作の窓口「ImageData」
8.3 画像処理プログラミングの基本テクニック ……ネガポジ反転、グレースケール、2値化、エッジ検出、ノイズ除去、モザイク
8.4 本章のまとめ
(概要)
楽しく遊べる2Dゲームの開発を進めながら、グラフィックスプログラミングの基本が学べる入門書。
一度習得すると、ゲームや映像生成、動的可視化をはじめ、幅広い分野で長く役立つグラフィックスプログラミングの基礎。
本書では、リアルタイムに動く画像を描くために求められる技術や考え方を平易に解説します。
開発言語として、エディタとブラウザがあれば開発ができるJavaScriptを採用し、すぐにスタートできる構成が特徴です。
豊富な図解に加え、いまどきのJavaScript(ES2015準拠)の基本文法、これだけは知っておきたい数学知識も厳選収録。
一線の開発者による、現場で活かせるやさしい実践解説です。
(こんな方におすすめ)
・コンピューターグラフィックスとそのプログラミングに興味をお持ちの方々
・広くグラフィックスというテーマに取り組んでいる学生の方々
・ゲーム開発やWeb開発にまつわる知識を、土台から強化していきたい方々
(目次)
第1章 [入門]グラフィックスプログラミング ……長く役立つ基礎の基礎
1.1 グラフィックスとグラフィックスプログラミングの基本 ……CG、2D、3D、画素
1.2 グラフィックスプログラミングの分類 ……活躍の舞台は広い
1.3 グラフィックスプログラミングと技術 ……原則、プログラミング言語、API
1.4 本章のまとめ
第2章 [グラフィックスプログラミングで役立つ]JavaScript/ES2015入門 ……開発環境から文法基礎まで
2.1 本書における開発言語と開発環境 ……JavaScript、Chrome、Windows&macOS
2.2 サンプルと実行環境について ……ファイル構成、ブラウザ&開発ツール
2.3 [グラフィックスプログラミングのための]JavaScript/ES2015の基本 ……基本操作、変数、関数、オブジェクト、演算子
2.4 本章のまとめ
第3章 [基礎]グラフィックスプログラミングと数学 ……三角関数、線型代数、乱数&補間
3.1 角度と三角関数 ……ラジアン、sin(サイン)、cos(コサイン)
3.2 ベクトルと行列 ……点から始める線型代数
3.3 乱数/擬似乱数と補間&イージング ……グラフィックスプログラミングに役立つ数学関連知識
3.4 本章のまとめ
第4章 Canvas2Dから学べる基本 ……Canvas2Dコンテキストと描画命令
4.1 Canvas2Dの基礎知識 ……コンテキストオブジェクト、Document Object Model
4.2 Canvas2Dの基本プリミティブ ……矩形、線、多角形、円、円弧、ベジェ曲線...
4.3 Canvas2Dコンテキストの描画効果&演出機能 ……テキスト、ドロップシャドウ、グラデーション、パターン、アルファブレンディング、コンポジットオペレーション
4.4 本章のまとめ
第5章 ユーザーインタラクションのプログラミング ……ゼロから作るシューティングゲーム❶
5.1 [まずは準備から]シューティングゲームを作る ……ファイル構成とルール
5.2 ゲームの骨格を作る ……土台となるプログラムの設計
5.3 本章のまとめ
第6章 キャラクターと動きのプログラミング ……ゼロから作るシューティングゲーム❷
6.1 キャラクターの実装 ……キャラクター管理クラス、キーの入力によるインタラクティブな移動
6.2 ショットの実装 ……大量ショットのインスタンス、程良い速度、回転描画
6.3 敵キャラクターの実装 ……敵キャラクターの配置、シーン管理&更新、敵キャラクターのタイプ
6.4 本章のまとめ
第7章 状態に応じた判定や演出のプログラミング ……ゼロから作るシューティングゲーム❸
7.1 衝突判定 ……オブジェクト同士の衝突、エフェクト、補間関数/イージング関数
7.2 自機キャラクターの状態に応じた処理 ……ライフの減算、ゲームオーバーの演出、再スタート
7.3 ゲームの品質向上 ……スコア、敵キャラの攻撃力&耐久力、シーン管理、背景、音声、ボスキャラ
7.4 本章のまとめ
第8章 ピクセルと色のプログラミング ピクセルを塗る操作と感覚
8.1 [再入門]グラフィックスを構成するピクセル ……ピクセルと画像処理
8.2 Canvas APIでピクセルを直接操作する ……ピクセル操作の窓口「ImageData」
8.3 画像処理プログラミングの基本テクニック ……ネガポジ反転、グレースケール、2値化、エッジ検出、ノイズ除去、モザイク
8.4 本章のまとめ
↓全て表示↑少なく表示
内容サンプル


目次
■第1章 [入門]グラフィックスプログラミング ……長く役立つ基礎の基礎
■■1.1 グラフィックスとグラフィックスプログラミングの基本 ……CG、2D、3D、画素
■■■コンピューターグラフィックス ……コンピューターによって描き出されたグラフィックス
■■■2Dと3D ……グラフィックスの生成手順やデータ管理方法が違うだけ
■■■グラフィックスを構成するもの ……出力先は「画素」の集まり
■■■グラフィックスプログラミングの課題や目的 ……画素をどう塗りつぶすか
■■1.2 グラフィックスプログラミングの分類 ……活躍の舞台は広い
■■■情報を伝えるためのグラフィックス
■■■情報を正しく理解するためのグラフィックス
■■■エンターテイメントとしてのグラフィックス
■■■アートとしてのグラフィックス
■■1.3 グラフィックスプログラミングと技術 ……原則、プログラミング言語、API
■■■グラフィックスプログラミングの原則
■■■グラフィックスプログラミングと、プログラミング言語&ツール ……手軽にグラフィックスを生成する選択肢
■■■■Processingでできること
■■■■ゲームエンジンから学び始める
■■■■ツールと基礎/原理の学習
■■■グラフィックスAPI ……DirectX、OpenGL、OpenGL ES
■■■■[まとめ]DirectXとOpenGLの特徴
■■■グラフィックスAPIを利用するアプリケーション
●Column Metal、Vulkan ……AppleとKhronos Groupのその他のグラフィックスAPI
■■■Webとグラフィックス ……JavaScriptと動的なグラフィックス生成機能
■■■JavaScriptとWebブラウザによる効率的な学習の実現
■■■JavaScriptのメリットを活かす ……本書の構成と解説の流れ
■■1.4 本章のまとめ
■第2章 [グラフィックスプログラミングで役立つ]JavaScript/ES2015入門 ……開発環境から文法基礎まで
■■2.1 本書における開発言語と開発環境 ……JavaScript、Chrome、Windows&macOS
■■■サンプルの実行環境 ……Google Chrome
■■■開発環境とテキストエディタ
■■■Webとアプリケーション
■■■■クライアントサイドとサーバーサイド
■■■JavaScriptとECMAScript
●Column ECMAScript規格とWebブラウザの実装の関係
■■■JavaScriptの進化と、グラフィックスプログラミング
■■2.2 サンプルと実行環境について ……ファイル構成、ブラウザ&開発ツール
■■■サンプルの構成と実行方法
■■■Chromeの開発者ツールの基本 ……JavaScriptのデバッグ準備
■■■開発者ツールのパネル&JavaScriptのデバッグ
■■■■Elementパネル ……HTMLドキュメントの構造を確認
■■■■Sourcesパネル ……JavaScriptプログラムの実行制御をデバッグに活用
■■■■Consoleパネル ……JavaScriptのインラインコードの実行結果を確認できる
■■■コメントとJSDoc ……サンプルに含まれるコメントの読み方
■■2.3 [グラフィックスプログラミングのための]JavaScript/ES2015の基本 ……基本操作、変数、関数、オブジェクト、演算子
■■■アラートやコンソールの活用
■■■変数 ……変数名、キーワード、基本的な規約
■■■変数宣言キーワードとスコープ
■■■■ローカルスコープ、グローバルスコープ
■■■■var ……スコープは関数内部限定
■■■■let ……スコープは関数内部とブロック内部
■■■■const ……スコープは関数内部とブロック内部。再代入が行えない
■■■JavaScriptのデータ型
■■■変数の動的型付け ……JavaScriptでは変数自身は型を持たない
●Column 変数宣言キーワードの取捨選択
■■■■動的型付けの言語で気をつけたいこと
●Column null、undefined、Symbol
■■■関数 ……名前付きの関数の定義と呼び出し、関数の戻り値
■■■関数式 ……文と式
■■■■関数式による関数の定義と呼び出し
■■■■無名関数
■■■■アロー関数
●Column 関数の引数と既定値
■■■■関数式と関数の引数
●Column 非同期処理とコールバック関数
●Column JavaScriptと「自動セミコロン挿入」機能
■■■オブジェクト型 ……JavaScriptではプリミティブなデータ以外、すべてがオブジェクト型
■■■配列 ……データをまとめて格納できる。(グラフィックス)プログラミングで頻出のオブジェクト
■■■■配列の要素へのアクセス ……インデックスを指定
■■■オブジェクト ……多種多様なオブジェクトで成り立つJavaScript
■■■■オブジェクトの構造
■■■■オブジェクトの要素へのアクセス
●Column プロパティとメソッド
●Column ビルトインオブジェクトとプロトタイプチェーン
■■■制御構文 ……条件や繰り返し。ロジックを記述する
■■■■if文 ……ある条件に一致した場合&しなかった場合、処理へ進む
■■■■for文 ……カウンター変数を用いて繰り返し処理を行う
●Column JavaScriptの真偽値判定
■■■■while文 ……柔軟な継続条件で繰り返し処理を行う
●Column 無限ループ
■■■■switch文 ……特定の条件に応じた分岐処理
■■■演算子 ……算術、代入、比較、論理、条件
■■■■算術演算子 ……四則演算、剰余
■■■■インクリメント演算子、デクリメント演算子 ……接頭辞と接尾辞に注意
■■■■代入演算子 ……変数に値を代入
■■■■比較演算子 ……原則として厳密比較を使用
■■■■論理演算子 ……&&(AND)、||(OR)
■■■■条件演算子 ……条件に合わせて異なる値を用いたい場合
■■2.4 本章のまとめ
●Column 条件演算子とif文
■第3章 [基礎]グラフィックスプログラミングと数学 ……三角関数、線型代数、乱数&補間
■■3.1 角度と三角関数 ……ラジアン、sin(サイン)、cos(コサイン)
■■■ラジアン ……弧度
■■■■角度の表現 ……度数法と弧度法
■■■■プログラミングと角度 ……ラジアンで考える
●Column ラジアンの捉え方
■■■グラフィックスプログラミングのためのsin、cos ……ラジアン、半径1の円とともに
●Column グラフィックスプログラミングで大活躍(!?)の三角関数
■■3.2 ベクトルと行列 ……点から始める線型代数
■■■ベクトルとスカラー ……量と向き
■■■原点とベクトルの始点と終点 ……点を結ぶ
■■■ベクトルの向き ……単位化、単位ベクトル、(再び)半径1の円
●Column 座標とベクトル ……配列[x, y]は座標なのか、ベクトルなのか
■■■ベクトルと演算 ……加算、減算
●Column 単位化、正規化、規格化、標準化 ……単位化と同様の意味で使われる言葉?
■■■ベクトルのスカラー倍
■■■ベクトルの内積、外積
■■■■内積 ……内積はベクトルAとベクトルBの成す角θに対するコサイン
●Column ベクトルのスカラー倍で速度が変わる
■■■■外積 ……外積はベクトルAとベクトルBの成す角θに対するサイン
●Column ベクトルの内積と外積の使いどころ
■■■行列 ……ベクトルの変形や変換
■■■■回転行列 ……ベクトルを回転させる
■■3.3 乱数/擬似乱数と補間&イージング ……グラフィックスプログラミングに役立つ数学関連知識
■■■乱数と擬似乱数 ……ランダムな状態と擬似乱数の品質
■■■■JavaScriptと乱数(擬似乱数) ……Chrome/V8のXorshift
■■■補間とイージング ……滑らかさや緩やかさの変化の表現
■■3.4 本章のまとめ
●Column あらゆる場面で活躍する補間関数
●Column 擬似乱数とシード値
■第4章 Canvas2Dから学べる基本 ……Canvas2Dコンテキストと描画命令
■■4.1 Canvas2Dの基礎知識 ……コンテキストオブジェクト、Document Object Model
■■■HTML5とCanvas、Canvas API ……ほとんどのブラウザはCanvasに対応
■■■コンテキストオブジェクト ……描画処理のための機能と設定を持つオブジェクト
■■■Canvas2Dコンテキストの取得 ……CanvasRenderingContext2D
■■■HTML要素としてのCanvas ……Canvas要素にはCSSによる余分な装飾は極力行わない
●Column コンテキストの種類
●Column RetinaディスプレイとCanvas要素の大きさ ……CSSサイズ、物理サイズ
■■■Document Object Model ……Canvas要素をはじめ、HTML要素をJavaScriptから参照する
■■4.2 Canvas2Dの基本プリミティブ ……矩形、線、多角形、円、円弧、ベジェ曲線...
■■■矩形の描画 ……fillRect
■■■塗りつぶしと線のスタイル ……fillStyle、strokeStyle
■■■[予習]Canvas2Dサンプルの構成と動作確認
■■■■サンプルの実行 ……HTMLファイルをダブルクリック
■■■■スクリプトファイルの読み込み ……<script>タグ
●Column CSSのrgb関数とrgba関数
■■■■即時関数を使って全体を囲う
■■■■読み完了タイミングの検出 ……addEventListenerとloadイベント
■■■■初期化処理 ……loadイベント後?
■■■■描画処理 ……loadイベント後?
●Column addEventListenerの第3引数の意味
●Column 即時関数と無名関数
■■■■[まとめ]本書サンプルの基本構成のポイント
■■■処理の役割に応じた関数化 ……シンプルな役割
■■■線分(ライン)の描画 ……Canvas2Dコンテキストではパスを利用
■■■■サブパス ……パスを区切る仕組み
■■■■パス&サブパスを使ったラインの描画
■■■■[まとめ]Canvas2Dコンテキストでパスを用いた描画の流れ
■■■パスを利用した多角形の描画 ……一筆書きで座標を連続でつなぐ
■■■ランダムに変化する多角形の描画
■■■円の描画 ……円や円弧の描画もパスを利用
■■■円弧の描画 ……乱数によってランダムに変化する円弧の例
●Column arcメソッドの第6引数
■■■ベジェ曲線 ……2次ベジェ曲線、3次ベジェ曲線、複雑な曲線を描画する
●Column パスを閉じずに描く ……closePath、stroke
■■■画像を利用した描画 ……読み込みの待機にaddEventListener(再び)
■■4.3 Canvas2Dコンテキストの描画効果&演出機能 ……テキスト、ドロップシャドウ、グラデーション、パターン、アルファブレンディング、コンポジットオペレーション
■■■テキストの描画 ……グラフィックスとしてテキストを描く
■■■ドロップシャドウの描画 ……一様に設定内容が反映される点には注意
●Column 文字列のfillとstroke
■■■グラデーションとパターン ……まずは効果を適用する実体のオブジェクトを生成
■■■■グラデーション ……線形グラデーション、円形グラデーション
■■■■パターン ……repeat、repeat-x、repeat-y、no-repeat
■■■アルファブレンディング ……アルファ値で、透明や半透明の描画処理
■■■コンポジットオペレーション ……さまざまな合成の種類
■■■■コンポジットオペエレーションの設定
■■4.4 本章のまとめ
■第5章 ユーザーインタラクションのプログラミング ……ゼロから作るシューティングゲーム?
■■5.1 [まずは準備から]シューティングゲームを作る ……ファイル構成とルール
■■■なぜ、ゲーム作り? ……種々の関連技術の集合体で、小さなゴールを設定しやすい
■■■作成するゲームのファイル構成
■■■作成するゲームの枠組み ……最低限のルールの定義
■■5.2 ゲームの骨格を作る ……土台となるプログラムの設計
■■■HTMLページとしての構造 ……ゲームの舞台となるCanvas要素のための設定
■■■class構文 ……独自の機能や属性を持つクラスを定義できる
●Column loadイベントとDOMContentLoadedイベント
■■■■クラス再入門 ……クラスの概念を持つ言語、持たない言語
■■■■プロトタイプとクラス ……JavaScriptにクラスは存在しない
■■■■[まとめ]クラスベースとプロトタイプベース
■■■■プロトタイプベースの言語の記述と振る舞い ……prototype、new演算子、コンストラクタ関数
■■■■class構文の使い方 ……プロトタイプの記述をわかりやすくする
●Column プロトタイプは拡張できる ……ただし、注意点も
■■■canvas2d.jsに記述したCanvas2DUtilityオブジェクト ……class構文で定義
■■■■コンストラクタ関数でインスタンスを生成できるオブジェクト ……便宜上の「クラス」
■■■■constructor(コンストラクタ)
■■■■property(プロパティ)
■■■■propertyとgetter(プロパティとゲッター) ……プロパティを取得する際に関数を実行したい
●Column setter(セッター) ……プロパティを設定する際に関数を実行したい
■■■■method(メソッド) ……オブジェクトが持っている関数
●Column プロトタイプを用いるメリット ……プロトタイプチェーン
■■■script.jsに記述されたメインプログラム ……シューティングゲーム作成のひな形
■■■メインループ ……アニメーション処理のための基盤を実装
■■■■タイムスタンプの格納と取得
■■■■描画処理 ……塗りつぶし、経過時間の計測、画像の描画、描画処理の再帰呼び出し
■■■ユーザーインタラクション ……ユーザーの入力とaddEventListener
●Column キー入力系イベントの発生順序とリピート
■■■シーン構成を整える ……各種シーンの状態管理の基盤
■■5.3 本章のまとめ
■第6章 キャラクターと動きのプログラミング ……ゼロから作るシューティングゲーム?
■■6.1 キャラクターの実装 ……キャラクター管理クラス、キーの入力によるインタラクティブな移動
■■■クラスの抽象化 ……共通して必要となるパラメーターをまとめて管理
■■■■Positionクラス ……座標を管理するためのクラス
●Column コンストラクタによる値の代入
■■■■Characterクラス ……キャラクターのベースとなる汎用的なクラス
■■■■クラスの継承と自機キャラクタークラス ……class構文のextendsと、super
■■■自機キャラクタークラスを利用したメインプログラム
■■■クラスに特有の処理を一元管理する
■■■キャラクターの幅を考慮した描画
■■■キャラクターの移動をなめらかに行う
■■■■windowオブジェクトへのプロパティ追加
●Column キャラクターの中心 ……3Dでも活かせる座標を意識する感覚
■■■■オブジェクトのプロパティへのアクセス ……ドット記法とブラケット記法
■■■■テンプレートリテラル
■■■■ブラケット記法とテンプレートリテラルを組み合わせる
■■■画面の外に出ないように制限する ……画面の端の判定と座標の補正
●Column 速度をspeedというプロパティに置き換えた意味
■■6.2 ショットの実装 ……大量ショットのインスタンス、程良い速度、回転描画
■■■ショットはキャラクターの一種 ……Characterクラスを継承してShotクラス
■■■キャラクターからショットを放つ ……Characterクラス、Shotクラス、Viperクラス
■■■ショットのことを踏まえた初期化処理 ……大量のショットのインスタンスを扱う
■■■ロードの完了と描画処理
■■■■render関数の呼び出し
■■■ショットが高速に生成されることを防ぐ ……密生するショットの原因と対策
●Column setTimeoutとsetInterval
■■■ショットの進行方向を設定可能にする
■■■異なる種類のショットを同時に放てるようにする
■■■ショットを回転させて描画する
■■■■Canvas2Dコンテキストにおける回転表現
■■■■原点を意識して回転処理を行う
■■■■Canvas2Dコンテキストの状態保存と状態復元
■■■■その他の変更点
●Column Math.PI * 1.5の意味するもの
■■6.3 敵キャラクターの実装 ……敵キャラクターの配置、シーン管理&更新、敵キャラクターのタイプ
●Column サイン、コサインで作るベクトルは常に単位ベクトル
■■■敵キャラクターのためのクラスを実装する
■■■「シーン」という概念 ……SceneManagerクラス
■■■シーン管理クラスの利用とシーン更新用の関数
■■■■[まとめ]シーン関連の変更点
■■■連続して敵キャラクターが出現するシーン
■■■キャラクターに「タイプ」の概念を追加する
■■6.4 本章のまとめ
■第7章 状態に応じた判定や演出のプログラミング ……ゼロから作るシューティングゲーム?
■■7.1 衝突判定 ……オブジェクト同士の衝突、エフェクト、補間関数/イージング関数
■■■衝突を判定するロジック ……形状に応じた判定の基本
■■■■矩形との衝突判定の注意点
■■■ベクトルを利用した衝突判定 ……ベクトルの長さを測る方法の応用
■■■Positionクラスの拡張 ……2つの座標間の距離を計測
■■■自機キャラクターのショットと敵との衝突判定 ……攻撃力とライフ
●Column キャラクターのサイズ
■■■破壊を演出する ……爆発エフェクト
■■■■Explosionクラス
■■■爆発エフェクトの質感を向上する ……ランダム要素を取り入れる
■■■補間関数で減衰するような動きを表現 ……より自然な変化
■■7.2 自機キャラクターの状態に応じた処理 ……ライフの減算、ゲームオーバーの演出、再スタート
■■■自機キャラクターと敵ショットとの衝突判定 ……敵キャラクターの攻撃
■■■ゲームオーバーの演出とゲームの再スタート ……ゲームの終わり。しかし、実装と演出は続く...
■■7.3 ゲームの品質向上 ……スコア、敵キャラの攻撃力&耐久力、シーン管理、背景、音声、ボスキャラ
■■■スコアを集計して表示する
●Column String.padStartメソッド
■■■敵キャラクターのバリエーションを増やす
■■■■自機狙い弾を放つ敵キャラクター
■■■■耐久力の高い敵キャラクター
■■■■シーン管理の見直し ……よりゲームらしく
■■■背景を追加する ……ゲームの舞台を表現する演出
■■■効果音を再生する ……シーンの雰囲気を底上げする演出
■■■■ユーザーの操作を受けてから初期化処理を行う
■■■■音声データを扱う自作クラスを実装する ……Soundクラス
■■■■Promiseと非同期処理
■■■■AudioContextによる音声データの再生
●Column コールバック関数とPromise
●Column JavaScriptとガベージコレクタ
■■■[いよいよ最終仕上げへ]ボスキャラクターやホーミングショットの実装に挑戦!
■■■■ボスキャラクター本体の実装 ……キャラクター自身が「モード」を持つ
■■■■ホーミングショットの実装 ……内積&外積の知識をフル活用
●Column プログラミングと数学や物理
■■7.4 本章のまとめ
■第8章 ピクセルと色のプログラミング ピクセルを塗る操作と感覚
■■8.1 [再入門]グラフィックスを構成するピクセル ……ピクセルと画像処理
■■■そもそもピクセルとは何か? ……グラフィックスを構成する最小の単位
■■■ピクセルを操作する画像処理 ……ある意味ではグラフィックスプログラミングの本質
●Column ペイントソフトは画像処理の宝庫
■■8.2 Canvas APIでピクセルを直接操作する ……ピクセル操作の窓口「ImageData」
■■■[基礎知識]同一生成元ポリシー ……ローカル環境とWebブラウザのセキュリティ
■■■ローカルサーバーを起動してファイルをプレビューする
■■■Chromeの拡張機能を利用したローカルサーバーの起動 ……Web Server for Chrome
●Column (比較的簡単な)その他のローカルサーバー起動方法
■■■ImageDataオブジェクト ……Canvas要素のピクセルを操作する窓口
■■■TypedArray ……数値を効率良く扱える型付き配列
■■■■Uint8ClampedArray形式 ……値がクランプされる特殊な形式
●Column JavaScriptとバイナリデータ ……TypedArray
■■■ピクセルの並び順とデータ構造 ……ImageDataを利用したピクセル情報の抜き出し
■■8.3 画像処理プログラミングの基本テクニック ……ネガポジ反転、グレースケール、2値化、エッジ検出、ノイズ除去、モザイク
■■■ネガポジ反転
■■■グレースケール ……色の鮮やかさと引き換えに。白~灰色~黒の明暗を得る
■■■2値化 ……白か黒か。色が二択
●Column 意外にも奥が深い(!?)グレースケールの世界
■■■エッジ検出 ……色差分を可視化するラプラシアンフィルター
■■■ノイズ除去 ……メディアンフィルターで極端に色が異なるピクセルを除去する
●Column 上下左右だけでなく、斜め方向も加えたラプラシアンフィルター
●Column メディアンフィルターを繰り返し実行する
■■■モザイク ……ピクセルの大きさを変化させる
■■8.4 本章のまとめ
■■1.1 グラフィックスとグラフィックスプログラミングの基本 ……CG、2D、3D、画素
■■■コンピューターグラフィックス ……コンピューターによって描き出されたグラフィックス
■■■2Dと3D ……グラフィックスの生成手順やデータ管理方法が違うだけ
■■■グラフィックスを構成するもの ……出力先は「画素」の集まり
■■■グラフィックスプログラミングの課題や目的 ……画素をどう塗りつぶすか
■■1.2 グラフィックスプログラミングの分類 ……活躍の舞台は広い
■■■情報を伝えるためのグラフィックス
■■■情報を正しく理解するためのグラフィックス
■■■エンターテイメントとしてのグラフィックス
■■■アートとしてのグラフィックス
■■1.3 グラフィックスプログラミングと技術 ……原則、プログラミング言語、API
■■■グラフィックスプログラミングの原則
■■■グラフィックスプログラミングと、プログラミング言語&ツール ……手軽にグラフィックスを生成する選択肢
■■■■Processingでできること
■■■■ゲームエンジンから学び始める
■■■■ツールと基礎/原理の学習
■■■グラフィックスAPI ……DirectX、OpenGL、OpenGL ES
■■■■[まとめ]DirectXとOpenGLの特徴
■■■グラフィックスAPIを利用するアプリケーション
●Column Metal、Vulkan ……AppleとKhronos Groupのその他のグラフィックスAPI
■■■Webとグラフィックス ……JavaScriptと動的なグラフィックス生成機能
■■■JavaScriptとWebブラウザによる効率的な学習の実現
■■■JavaScriptのメリットを活かす ……本書の構成と解説の流れ
■■1.4 本章のまとめ
■第2章 [グラフィックスプログラミングで役立つ]JavaScript/ES2015入門 ……開発環境から文法基礎まで
■■2.1 本書における開発言語と開発環境 ……JavaScript、Chrome、Windows&macOS
■■■サンプルの実行環境 ……Google Chrome
■■■開発環境とテキストエディタ
■■■Webとアプリケーション
■■■■クライアントサイドとサーバーサイド
■■■JavaScriptとECMAScript
●Column ECMAScript規格とWebブラウザの実装の関係
■■■JavaScriptの進化と、グラフィックスプログラミング
■■2.2 サンプルと実行環境について ……ファイル構成、ブラウザ&開発ツール
■■■サンプルの構成と実行方法
■■■Chromeの開発者ツールの基本 ……JavaScriptのデバッグ準備
■■■開発者ツールのパネル&JavaScriptのデバッグ
■■■■Elementパネル ……HTMLドキュメントの構造を確認
■■■■Sourcesパネル ……JavaScriptプログラムの実行制御をデバッグに活用
■■■■Consoleパネル ……JavaScriptのインラインコードの実行結果を確認できる
■■■コメントとJSDoc ……サンプルに含まれるコメントの読み方
■■2.3 [グラフィックスプログラミングのための]JavaScript/ES2015の基本 ……基本操作、変数、関数、オブジェクト、演算子
■■■アラートやコンソールの活用
■■■変数 ……変数名、キーワード、基本的な規約
■■■変数宣言キーワードとスコープ
■■■■ローカルスコープ、グローバルスコープ
■■■■var ……スコープは関数内部限定
■■■■let ……スコープは関数内部とブロック内部
■■■■const ……スコープは関数内部とブロック内部。再代入が行えない
■■■JavaScriptのデータ型
■■■変数の動的型付け ……JavaScriptでは変数自身は型を持たない
●Column 変数宣言キーワードの取捨選択
■■■■動的型付けの言語で気をつけたいこと
●Column null、undefined、Symbol
■■■関数 ……名前付きの関数の定義と呼び出し、関数の戻り値
■■■関数式 ……文と式
■■■■関数式による関数の定義と呼び出し
■■■■無名関数
■■■■アロー関数
●Column 関数の引数と既定値
■■■■関数式と関数の引数
●Column 非同期処理とコールバック関数
●Column JavaScriptと「自動セミコロン挿入」機能
■■■オブジェクト型 ……JavaScriptではプリミティブなデータ以外、すべてがオブジェクト型
■■■配列 ……データをまとめて格納できる。(グラフィックス)プログラミングで頻出のオブジェクト
■■■■配列の要素へのアクセス ……インデックスを指定
■■■オブジェクト ……多種多様なオブジェクトで成り立つJavaScript
■■■■オブジェクトの構造
■■■■オブジェクトの要素へのアクセス
●Column プロパティとメソッド
●Column ビルトインオブジェクトとプロトタイプチェーン
■■■制御構文 ……条件や繰り返し。ロジックを記述する
■■■■if文 ……ある条件に一致した場合&しなかった場合、処理へ進む
■■■■for文 ……カウンター変数を用いて繰り返し処理を行う
●Column JavaScriptの真偽値判定
■■■■while文 ……柔軟な継続条件で繰り返し処理を行う
●Column 無限ループ
■■■■switch文 ……特定の条件に応じた分岐処理
■■■演算子 ……算術、代入、比較、論理、条件
■■■■算術演算子 ……四則演算、剰余
■■■■インクリメント演算子、デクリメント演算子 ……接頭辞と接尾辞に注意
■■■■代入演算子 ……変数に値を代入
■■■■比較演算子 ……原則として厳密比較を使用
■■■■論理演算子 ……&&(AND)、||(OR)
■■■■条件演算子 ……条件に合わせて異なる値を用いたい場合
■■2.4 本章のまとめ
●Column 条件演算子とif文
■第3章 [基礎]グラフィックスプログラミングと数学 ……三角関数、線型代数、乱数&補間
■■3.1 角度と三角関数 ……ラジアン、sin(サイン)、cos(コサイン)
■■■ラジアン ……弧度
■■■■角度の表現 ……度数法と弧度法
■■■■プログラミングと角度 ……ラジアンで考える
●Column ラジアンの捉え方
■■■グラフィックスプログラミングのためのsin、cos ……ラジアン、半径1の円とともに
●Column グラフィックスプログラミングで大活躍(!?)の三角関数
■■3.2 ベクトルと行列 ……点から始める線型代数
■■■ベクトルとスカラー ……量と向き
■■■原点とベクトルの始点と終点 ……点を結ぶ
■■■ベクトルの向き ……単位化、単位ベクトル、(再び)半径1の円
●Column 座標とベクトル ……配列[x, y]は座標なのか、ベクトルなのか
■■■ベクトルと演算 ……加算、減算
●Column 単位化、正規化、規格化、標準化 ……単位化と同様の意味で使われる言葉?
■■■ベクトルのスカラー倍
■■■ベクトルの内積、外積
■■■■内積 ……内積はベクトルAとベクトルBの成す角θに対するコサイン
●Column ベクトルのスカラー倍で速度が変わる
■■■■外積 ……外積はベクトルAとベクトルBの成す角θに対するサイン
●Column ベクトルの内積と外積の使いどころ
■■■行列 ……ベクトルの変形や変換
■■■■回転行列 ……ベクトルを回転させる
■■3.3 乱数/擬似乱数と補間&イージング ……グラフィックスプログラミングに役立つ数学関連知識
■■■乱数と擬似乱数 ……ランダムな状態と擬似乱数の品質
■■■■JavaScriptと乱数(擬似乱数) ……Chrome/V8のXorshift
■■■補間とイージング ……滑らかさや緩やかさの変化の表現
■■3.4 本章のまとめ
●Column あらゆる場面で活躍する補間関数
●Column 擬似乱数とシード値
■第4章 Canvas2Dから学べる基本 ……Canvas2Dコンテキストと描画命令
■■4.1 Canvas2Dの基礎知識 ……コンテキストオブジェクト、Document Object Model
■■■HTML5とCanvas、Canvas API ……ほとんどのブラウザはCanvasに対応
■■■コンテキストオブジェクト ……描画処理のための機能と設定を持つオブジェクト
■■■Canvas2Dコンテキストの取得 ……CanvasRenderingContext2D
■■■HTML要素としてのCanvas ……Canvas要素にはCSSによる余分な装飾は極力行わない
●Column コンテキストの種類
●Column RetinaディスプレイとCanvas要素の大きさ ……CSSサイズ、物理サイズ
■■■Document Object Model ……Canvas要素をはじめ、HTML要素をJavaScriptから参照する
■■4.2 Canvas2Dの基本プリミティブ ……矩形、線、多角形、円、円弧、ベジェ曲線...
■■■矩形の描画 ……fillRect
■■■塗りつぶしと線のスタイル ……fillStyle、strokeStyle
■■■[予習]Canvas2Dサンプルの構成と動作確認
■■■■サンプルの実行 ……HTMLファイルをダブルクリック
■■■■スクリプトファイルの読み込み ……<script>タグ
●Column CSSのrgb関数とrgba関数
■■■■即時関数を使って全体を囲う
■■■■読み完了タイミングの検出 ……addEventListenerとloadイベント
■■■■初期化処理 ……loadイベント後?
■■■■描画処理 ……loadイベント後?
●Column addEventListenerの第3引数の意味
●Column 即時関数と無名関数
■■■■[まとめ]本書サンプルの基本構成のポイント
■■■処理の役割に応じた関数化 ……シンプルな役割
■■■線分(ライン)の描画 ……Canvas2Dコンテキストではパスを利用
■■■■サブパス ……パスを区切る仕組み
■■■■パス&サブパスを使ったラインの描画
■■■■[まとめ]Canvas2Dコンテキストでパスを用いた描画の流れ
■■■パスを利用した多角形の描画 ……一筆書きで座標を連続でつなぐ
■■■ランダムに変化する多角形の描画
■■■円の描画 ……円や円弧の描画もパスを利用
■■■円弧の描画 ……乱数によってランダムに変化する円弧の例
●Column arcメソッドの第6引数
■■■ベジェ曲線 ……2次ベジェ曲線、3次ベジェ曲線、複雑な曲線を描画する
●Column パスを閉じずに描く ……closePath、stroke
■■■画像を利用した描画 ……読み込みの待機にaddEventListener(再び)
■■4.3 Canvas2Dコンテキストの描画効果&演出機能 ……テキスト、ドロップシャドウ、グラデーション、パターン、アルファブレンディング、コンポジットオペレーション
■■■テキストの描画 ……グラフィックスとしてテキストを描く
■■■ドロップシャドウの描画 ……一様に設定内容が反映される点には注意
●Column 文字列のfillとstroke
■■■グラデーションとパターン ……まずは効果を適用する実体のオブジェクトを生成
■■■■グラデーション ……線形グラデーション、円形グラデーション
■■■■パターン ……repeat、repeat-x、repeat-y、no-repeat
■■■アルファブレンディング ……アルファ値で、透明や半透明の描画処理
■■■コンポジットオペレーション ……さまざまな合成の種類
■■■■コンポジットオペエレーションの設定
■■4.4 本章のまとめ
■第5章 ユーザーインタラクションのプログラミング ……ゼロから作るシューティングゲーム?
■■5.1 [まずは準備から]シューティングゲームを作る ……ファイル構成とルール
■■■なぜ、ゲーム作り? ……種々の関連技術の集合体で、小さなゴールを設定しやすい
■■■作成するゲームのファイル構成
■■■作成するゲームの枠組み ……最低限のルールの定義
■■5.2 ゲームの骨格を作る ……土台となるプログラムの設計
■■■HTMLページとしての構造 ……ゲームの舞台となるCanvas要素のための設定
■■■class構文 ……独自の機能や属性を持つクラスを定義できる
●Column loadイベントとDOMContentLoadedイベント
■■■■クラス再入門 ……クラスの概念を持つ言語、持たない言語
■■■■プロトタイプとクラス ……JavaScriptにクラスは存在しない
■■■■[まとめ]クラスベースとプロトタイプベース
■■■■プロトタイプベースの言語の記述と振る舞い ……prototype、new演算子、コンストラクタ関数
■■■■class構文の使い方 ……プロトタイプの記述をわかりやすくする
●Column プロトタイプは拡張できる ……ただし、注意点も
■■■canvas2d.jsに記述したCanvas2DUtilityオブジェクト ……class構文で定義
■■■■コンストラクタ関数でインスタンスを生成できるオブジェクト ……便宜上の「クラス」
■■■■constructor(コンストラクタ)
■■■■property(プロパティ)
■■■■propertyとgetter(プロパティとゲッター) ……プロパティを取得する際に関数を実行したい
●Column setter(セッター) ……プロパティを設定する際に関数を実行したい
■■■■method(メソッド) ……オブジェクトが持っている関数
●Column プロトタイプを用いるメリット ……プロトタイプチェーン
■■■script.jsに記述されたメインプログラム ……シューティングゲーム作成のひな形
■■■メインループ ……アニメーション処理のための基盤を実装
■■■■タイムスタンプの格納と取得
■■■■描画処理 ……塗りつぶし、経過時間の計測、画像の描画、描画処理の再帰呼び出し
■■■ユーザーインタラクション ……ユーザーの入力とaddEventListener
●Column キー入力系イベントの発生順序とリピート
■■■シーン構成を整える ……各種シーンの状態管理の基盤
■■5.3 本章のまとめ
■第6章 キャラクターと動きのプログラミング ……ゼロから作るシューティングゲーム?
■■6.1 キャラクターの実装 ……キャラクター管理クラス、キーの入力によるインタラクティブな移動
■■■クラスの抽象化 ……共通して必要となるパラメーターをまとめて管理
■■■■Positionクラス ……座標を管理するためのクラス
●Column コンストラクタによる値の代入
■■■■Characterクラス ……キャラクターのベースとなる汎用的なクラス
■■■■クラスの継承と自機キャラクタークラス ……class構文のextendsと、super
■■■自機キャラクタークラスを利用したメインプログラム
■■■クラスに特有の処理を一元管理する
■■■キャラクターの幅を考慮した描画
■■■キャラクターの移動をなめらかに行う
■■■■windowオブジェクトへのプロパティ追加
●Column キャラクターの中心 ……3Dでも活かせる座標を意識する感覚
■■■■オブジェクトのプロパティへのアクセス ……ドット記法とブラケット記法
■■■■テンプレートリテラル
■■■■ブラケット記法とテンプレートリテラルを組み合わせる
■■■画面の外に出ないように制限する ……画面の端の判定と座標の補正
●Column 速度をspeedというプロパティに置き換えた意味
■■6.2 ショットの実装 ……大量ショットのインスタンス、程良い速度、回転描画
■■■ショットはキャラクターの一種 ……Characterクラスを継承してShotクラス
■■■キャラクターからショットを放つ ……Characterクラス、Shotクラス、Viperクラス
■■■ショットのことを踏まえた初期化処理 ……大量のショットのインスタンスを扱う
■■■ロードの完了と描画処理
■■■■render関数の呼び出し
■■■ショットが高速に生成されることを防ぐ ……密生するショットの原因と対策
●Column setTimeoutとsetInterval
■■■ショットの進行方向を設定可能にする
■■■異なる種類のショットを同時に放てるようにする
■■■ショットを回転させて描画する
■■■■Canvas2Dコンテキストにおける回転表現
■■■■原点を意識して回転処理を行う
■■■■Canvas2Dコンテキストの状態保存と状態復元
■■■■その他の変更点
●Column Math.PI * 1.5の意味するもの
■■6.3 敵キャラクターの実装 ……敵キャラクターの配置、シーン管理&更新、敵キャラクターのタイプ
●Column サイン、コサインで作るベクトルは常に単位ベクトル
■■■敵キャラクターのためのクラスを実装する
■■■「シーン」という概念 ……SceneManagerクラス
■■■シーン管理クラスの利用とシーン更新用の関数
■■■■[まとめ]シーン関連の変更点
■■■連続して敵キャラクターが出現するシーン
■■■キャラクターに「タイプ」の概念を追加する
■■6.4 本章のまとめ
■第7章 状態に応じた判定や演出のプログラミング ……ゼロから作るシューティングゲーム?
■■7.1 衝突判定 ……オブジェクト同士の衝突、エフェクト、補間関数/イージング関数
■■■衝突を判定するロジック ……形状に応じた判定の基本
■■■■矩形との衝突判定の注意点
■■■ベクトルを利用した衝突判定 ……ベクトルの長さを測る方法の応用
■■■Positionクラスの拡張 ……2つの座標間の距離を計測
■■■自機キャラクターのショットと敵との衝突判定 ……攻撃力とライフ
●Column キャラクターのサイズ
■■■破壊を演出する ……爆発エフェクト
■■■■Explosionクラス
■■■爆発エフェクトの質感を向上する ……ランダム要素を取り入れる
■■■補間関数で減衰するような動きを表現 ……より自然な変化
■■7.2 自機キャラクターの状態に応じた処理 ……ライフの減算、ゲームオーバーの演出、再スタート
■■■自機キャラクターと敵ショットとの衝突判定 ……敵キャラクターの攻撃
■■■ゲームオーバーの演出とゲームの再スタート ……ゲームの終わり。しかし、実装と演出は続く...
■■7.3 ゲームの品質向上 ……スコア、敵キャラの攻撃力&耐久力、シーン管理、背景、音声、ボスキャラ
■■■スコアを集計して表示する
●Column String.padStartメソッド
■■■敵キャラクターのバリエーションを増やす
■■■■自機狙い弾を放つ敵キャラクター
■■■■耐久力の高い敵キャラクター
■■■■シーン管理の見直し ……よりゲームらしく
■■■背景を追加する ……ゲームの舞台を表現する演出
■■■効果音を再生する ……シーンの雰囲気を底上げする演出
■■■■ユーザーの操作を受けてから初期化処理を行う
■■■■音声データを扱う自作クラスを実装する ……Soundクラス
■■■■Promiseと非同期処理
■■■■AudioContextによる音声データの再生
●Column コールバック関数とPromise
●Column JavaScriptとガベージコレクタ
■■■[いよいよ最終仕上げへ]ボスキャラクターやホーミングショットの実装に挑戦!
■■■■ボスキャラクター本体の実装 ……キャラクター自身が「モード」を持つ
■■■■ホーミングショットの実装 ……内積&外積の知識をフル活用
●Column プログラミングと数学や物理
■■7.4 本章のまとめ
■第8章 ピクセルと色のプログラミング ピクセルを塗る操作と感覚
■■8.1 [再入門]グラフィックスを構成するピクセル ……ピクセルと画像処理
■■■そもそもピクセルとは何か? ……グラフィックスを構成する最小の単位
■■■ピクセルを操作する画像処理 ……ある意味ではグラフィックスプログラミングの本質
●Column ペイントソフトは画像処理の宝庫
■■8.2 Canvas APIでピクセルを直接操作する ……ピクセル操作の窓口「ImageData」
■■■[基礎知識]同一生成元ポリシー ……ローカル環境とWebブラウザのセキュリティ
■■■ローカルサーバーを起動してファイルをプレビューする
■■■Chromeの拡張機能を利用したローカルサーバーの起動 ……Web Server for Chrome
●Column (比較的簡単な)その他のローカルサーバー起動方法
■■■ImageDataオブジェクト ……Canvas要素のピクセルを操作する窓口
■■■TypedArray ……数値を効率良く扱える型付き配列
■■■■Uint8ClampedArray形式 ……値がクランプされる特殊な形式
●Column JavaScriptとバイナリデータ ……TypedArray
■■■ピクセルの並び順とデータ構造 ……ImageDataを利用したピクセル情報の抜き出し
■■8.3 画像処理プログラミングの基本テクニック ……ネガポジ反転、グレースケール、2値化、エッジ検出、ノイズ除去、モザイク
■■■ネガポジ反転
■■■グレースケール ……色の鮮やかさと引き換えに。白~灰色~黒の明暗を得る
■■■2値化 ……白か黒か。色が二択
●Column 意外にも奥が深い(!?)グレースケールの世界
■■■エッジ検出 ……色差分を可視化するラプラシアンフィルター
■■■ノイズ除去 ……メディアンフィルターで極端に色が異なるピクセルを除去する
●Column 上下左右だけでなく、斜め方向も加えたラプラシアンフィルター
●Column メディアンフィルターを繰り返し実行する
■■■モザイク ……ピクセルの大きさを変化させる
■■8.4 本章のまとめ
ISBN:9784297110857
出版社:技術評論社
判型:B5変
ページ数:368ページ
定価:2780円(本体)
発行年月日:2020年01月
発売日:2020年01月18日