リアルタイムグラフィックスの数学 - GLSL ではじめるシェーダプログラミング

リアルタイムグラフィックスノスウガク ジーエルエスエルデハジメルシェーダプログラミング

リアルタイムグラフィックスの数学 - GLSL ではじめるシェーダプログラミングの表紙
デザイン / グラフィックス
著者:
巴山 竜来(ハヤマ タツキ)
出版社:
技術評論社
出版日:
2022年08月31日頃
ISBN:
9784297130343
在庫:
在庫あり
0
中級者向け
CGデザイン・グラフィックス3DCG数学GLSLシェーダプログラミングOpenGLWebGLグラフィックスプログラミングリアルタイムレンダリンググラフィックス

なぜ注目されているか

総合677位 ↑ 3 ランクアップ 言及 5 件・うち記事 3 件を掲載
言及数
702位
出版前出版日02320222023202420252026

書籍紹介

本書はリアルタイムグラフィックスの基本を理解するための解説書です。
リアルタイムグラフィックス、つまり「即時に生成される」グラフィックスは

いまやゲームからビデオチャットまで広く利用されており、多くの方が目にするものになっています。

この技術の根本には数学があり、数学的知識を身につけることで、多様なグラフィックスを生み出すコードの中身、グラフィックス生成のしくみを、きちんと理解できるようになります。

ゼロからしっかり理解したいと考える方に、本書は断然おすすめです。

第 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 ではじめるシェーダプログラミング』 (巴山竜来 著、技術評論社、2022 年 8 月刊) は、その場で生成されるリアルタイムグラフィックスの根本にある数学を、GLSL のシェーダを書きながら学ぶ解説書です。版元は、多様なグラフィックスを生み出すコードの中身や生成のしくみをゼロからしっかり理解したい人に本書を勧めています。版元の著者紹介によると、巴山竜来氏は専修大学経営学部准教授で、専門は数学 (とくに複素幾何学) と、数学の CG やデジタルファブリケーションへの応用です。同じ版元から『数学から創るジェネラティブアート』も出しています。

第 0 章と 2 部 9 章の構成、補間とノイズから SDF の 3D 描画へ

第 0 章「Hello World」は、OpenGL、WebGL、GLSL について知っておくべき最小限のことと、フラグメントカラー、ビューポート解像度とフラグメント座標を押さえる導入です。第 1 部「アート・オブ・ノイズ」は第 1 章「補間」で線形補間とグラデーション、階段関数によるポスタリゼーション、極座標を使ったマッピングを扱い、第 2 章「疑似乱数」でビット演算を使ったハッシュ関数へ進みます。第 3 章「値ノイズ」と第 4 章「勾配ノイズ」ではノイズの構成法を、微分や偏微分と勾配、パーリンノイズと合わせて取り上げ、第 5 章「ノイズの調理法」で画像処理などへの応用を示します。

第 2 部「距離がつくりし世界」は、第 6 章「胞体ノイズ」で第 1 近傍距離とボロノイ分割を扱い、第 7 章「距離と SDF」で 2 次元の SDF と距離の物差しの取り替えに進みます。第 8 章「3D レンダリング」で SDF で表した形状のレンダリングを扱い、最後の第 9 章「SDF の調理法」はモデリングと空間の操作で締めくくられます。

フラグメントシェーダが画素ごとに色を決める仕組み

フラグメントシェーダは、画面の画素ひとつひとつについて、その座標から色を計算する小さなプログラムです。GPU は多数の画素を同時に処理するため、1 回の描画の中では、隣の画素の計算結果を参照したり、ある画素の結果を次の画素へ持ち越したりする書き方は基本的にできません。そのため、ばらつきのある模様を作るには、座標を入力にとって乱数のような値を返す ハッシュ関数 が欠かせません。格子点に置いた乱数を補間でつなぐのが値ノイズ、格子点に勾配を置いて滑らかさを高めるのが勾配ノイズで、つなぎ目がどれだけ滑らかかは微分で調べられます。本書の目次の補間、疑似乱数、ノイズという並びは、この積み上げと同じ順序です。

距離の考え方も、同じ画素単位の計算に乗ります。ある点から最も近い特徴点までの距離で塗り分けるとボロノイ分割になり、形状の表面までの距離を符号付きで返す関数が SDF (符号付き距離関数) です。SDF で表した 3 次元の形状は、一般に視線に沿って距離の分だけ進む反復で表面を探す方法で描画され、複数の形状を組み合わせたり空間を繰り返したりする操作も、距離の計算式を書き換えるだけで表現できます。ポリゴンのデータを用意せずに数式だけで立体を描ける点が、この手法の大きな利点です。

前提となるプログラミングと数学、頂点変換中心の入門書との違い

GLSL は C 言語 に近い書き方の言語なので、何らかの言語で関数や変数、条件分岐を書いた経験があると読み進めやすくなります。数学は補間から始まりますが、第 3 章には偏微分と勾配の節があり、高校で学ぶ範囲を超える内容にも触れます。また目次には、頂点の座標変換やポリゴンを描画するパイプラインを主題にした項目は見当たりません。3D モデルを表示するアプリケーションの描画の流れを順に学びたい人は、OpenGL や WebGL の描画パイプラインを主題にした入門書を別に選ぶ方が目的に合います。

裏返せば、シェーダで模様や質感を作るクリエイティブコーディングやジェネラティブアートに取り組む人、ゲームの演出でノイズや距離関数を使っていても中身が分からないまま調整している人にとって、ノイズの構成から SDF による 3D 描画までを数学の筋道でたどれる本書は、使っている関数を自分で組み立て直せるようになるための一冊です。コードを書き換えながら式の意味を確かめていく読み方に向いています。

言及した記事 (3 件)

この本に興味がある方におすすめ

関連する本

関連記事

関連用語

共有: