2. 翌週末レイトレーシング
『Ray Tracing: The Next Week』第 2 編を扱います。第 1 編で構築した common/ クレートを段階的に拡張しながら,モーションブラーから始めて,BVH,テクスチャマッピング,パーリンノイズ,矩形ライト,体積レンダリングへと進みます。第 1 編完成時のコード(r1XX クレート群)はそのままビルドできるよう,common/ への変更はすべて加算的に行います。
執筆中
本編は執筆中です。完成済みの章のみ公開しています。
1. はじめに
Ray Tracing: The Next Weekは,Peter Shirley,Trevor David Black,Steve Hollaschによって執筆されたレイトレーシングの入門書です。本稿執筆時点での最新版はVersion 4.0.2(2025-04-25)です。日本語版はinzkyk氏による翻訳が202…
2. モーションブラー
第1編の最終シーンに時間軸を導入し,拡散球を跳ねさせてモーションブラーを生成します。原典v3.2.3ではMovingSphereクラスをSphereとは別に新設し,カメラにシャッター時間の概念を加える方針で実装しています。本稿もこれに従います。新規の道具立ては次の4つです。第1編で書いたr1XXクレートがそのままビルド…
3. 包含立体階層
レイ・オブジェクトのヒット判定はレイトレーサ最大のボトルネックであり,素朴な実装ではオブジェクト数$N$に対して$O(N)$かかります。同じシーンに対して数百万本のレイを発射するという反復構造を活用すれば,二分探索の発想で$O(\log N)$に落とせます。包含立体階層(Bounding Volume Hierarch…
4. ソリッドテクスチャ
グラフィックスにおけるテクスチャとは,物体表面の色をプロシージャルに(あるいは画像参照によって)決める関数の総称です。ソリッドテクスチャは入力に世界座標$(x, y, z)$だけを使うタイプで,木目や大理石など「内側まで詰まった素材」を自然に表現できます。本章では「色」をテクスチャに格上げし,マテリアルが定数色だけでな…
5. パーリンノイズ
パーリンノイズ(Perlin noise)は,1985年にKen Perlinが発表した格子ベースの擬似乱数関数です。入力点の近傍では滑らかに変化し,遠方では一見ランダムに振る舞うので,木目・大理石・雲・地形などの「自然らしい揺らぎ」を持つテクスチャを,画像参照に頼らず手続き的に生成できます。本章では原典の流れに沿って…
6. 画像のテクスチャマッピング
前章までの「色を世界座標から手続き的に決める」テクスチャに加えて,本章では2次元の画像をそのまま貼り付けるImageTextureを導入します。原典で導入するimage_textureをRustに移し,地球の経緯度マップ画像(earthmap.jpg)を球に貼って地球儀を描画します。C++原典は実行時にstb_imag…
7. 矩形と光源
ここまでのレイトレーサは「上下の青-白グラデーションを空として返す」ことで暗黙の環境光を作ってきました。本章では発光マテリアル(emissive material)と軸並行矩形(axis-aligned rectangle)を導入し,シーン中の物体そのものを光源にできるようにします。最終的には有名なCornell bo…
8. インスタンス
前章のCornell boxには壁と天井のライトしか置きませんでした。この章では中に2つの白い箱を置き,さらに壁に対して少しだけ回転させてCornell boxの定番構図に近づけます。そのために必要な部品は次の3つです。1. 6枚の矩形をまとめた箱(box)プリミティブ2.オブジェクトを世界座標で平行移動するTrans…