リアルタイムグラフィックスの数学 - GLSL ではじめるシェーダプログラミング(リアルタイムグラフィックスノスウガク ジーエルエスエルデハジメルシェーダプログラミング)
デザイン・グラフィックス- 著者:
- 巴山 竜来(ハヤマ タツキ)
- 出版社:
- 技術評論社
- 出版日:
- 2022年08月31日頃
- ISBN:
- 9784297130343
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
本書はリアルタイムグラフィックスの基本を理解するための解説書です。
リアルタイムグラフィックス、つまり「即時に生成される」グラフィックスは
いまやゲームからビデオチャットまで広く利用されており、多くの方が目にするものになっています。
この技術の根本には数学があり、数学的知識を身につけることで、多様なグラフィックスを生み出すコードの中身、グラフィックス生成のしくみを、きちんと理解できるようになります。
ゼロからしっかり理解したいと考える方に、本書は断然おすすめです。
第 0 章 Hello World
0.1 OpenGL,WebGL,GLSL について知っておくべき最小限のこと
0.2 フラグメントカラー
0.3 ビューポート解像度とフラグメント座標
■第 1 部 アート・オブ・ノイズ
第 1 章 補間
1.1 線形補間とグラデーション
1.2 階段関数によるポスタリゼーション
1.3 極座標を使ったマッピング
第 2 章 疑似乱数
2.1 レガシー
2.2 進数表示とビット演算
2.3 ビット演算を使ったハッシュ関数
第 3 章 値ノイズ
3.1 値ノイズの構成法
3.2 グラデーションの滑らかさと微分
3.3 偏微分と勾配
第 4 章 勾配ノイズ
4.1 勾配ノイズの構成法
4.2 パーリンノイズ
第 5 章 ノイズの調理法
5.1 再帰
5.2 画像処理
■第 2 部 距離がつくりし世界
第 6 章 胞体ノイズ
6.1 第 1 近傍距離とボロノイ分割
6.2 胞体ノイズの構成
第 7 章 距離と SDF
7.1 2 次元 SDF
7.2 物差しを変える
第 8 章 3D レンダリング
8.1 天地創造
8.2 SDF 形状のレンダリング
第 9 章 SDF の調理法
9.1 モデリング
9.2 空間の操作
技書の森解説
シェーダを書いてみたいが線形代数や三角関数に自信がない、という人にとって最初のハードルは「どの数学がどの映像表現に対応するのか」が見えないことです。本書はその対応関係を GLSL のコードで直接示しながら、ベクトル演算・行列変換・ノイズ関数といったリアルタイムグラフィックスに不可欠な数学をひとつずつ積み上げていきます。著者の巴山竜来氏は数学とジェネラティブアートの接点を長く研究してきた人物で、数式を視覚的な結果に結びつける説明に一貫した安定感があります。
特徴的なのは、数学の理論を先に体系立てるのではなく、「画面上のこの表現を作るにはこの演算が必要」という逆引きの構成を取っている点です。フラグメントシェーダ上で SDF (符号付き距離関数) を描いたり、レイマーチングで立体を生成したりする実例を通じて、抽象的だった数式が動く映像として手応えを持ち始めます。高校数学の範囲を超える部分も扱いますが、都度コードで検証できるため置いていかれにくい設計です。
ゲーム開発やクリエイティブコーディングで「見た目の原理を理解して制御したい」段階に進むとき、フレームワークのパラメータ調整だけでは限界が来ます。本書はその限界を数学の力で突破するための入口として、 GPU プログラミングと数学を同時に学べる稀有な一冊です。
言及 Qiita 記事 (2 件)
言及 Zenn 記事 (1 件)
この本に興味がある方におすすめ
この本に関連
関連記事
機械学習 / ディープラーニング本ガイド - エンジニアが読むべき AI 技術書の選び方
機械学習の基礎から実践まで学べる技術書の選び方を紹介。「Python ではじめる機械学習」などのハンズオン本を軸に、数学が苦手な人向けの学習ルート、ディープラーニング本への進み方、ML 本の賞味期限の見極め方を解説します。
機械学習に必要な数学の本ガイド - 「どこまでやるか」で選ぶ 3 レベル
機械学習 / ディープラーニングに必要な数学を学ぶ本の選び方を 3 レベル (数式アレルギーの解消 → 機械学習で使う数学だけ → 数理を体系的に) で整理。学び直しの範囲を絞り、挫折せずに必要十分な数学を身につけるルートを解説します。
ゲームが好きならプログラミングの本も読める
ゲームの攻略本を読んだことがあるなら、プログラミングの本も読めます。攻略本とプログラミング本の共通点から、読書のハードルを下げます。
関連用語
依存グラフとは - モジュール間の依存関係を可視化する方法
依存グラフはパッケージやモジュール間の依存関係を有向グラフで表現する手法。循環依存の検出 / ビルド順序の決定 / 影響範囲分析での活用法を解説
グラフアルゴリズム
ノードとエッジで構成されるグラフ構造に対する探索 / 最短経路 / 接続性の分析アルゴリズム
グラフデータベース
ノード (エンティティ) とエッジ (関係) でデータを表現し、複雑な関係性のクエリに特化したデータベース
カナリアリリース
新バージョンを少数のユーザーに先行公開し、問題がないことを確認してから全体に展開するデプロイ手法
マテリアライズドビュー
クエリ結果を事前に計算 / 保存し、読み取り性能を向上させるデータベースの仕組み
Blue/Green デプロイ
2 つの同一環境を用意し、トラフィックを切り替えることでゼロダウンタイムデプロイを実現する手法