『Unityゲーム プログラミング・バイブル 2nd Generation』の「No.07 レイマーチング:基礎から応用まで」向けのサンプルプロジェクトです。
RaymarchingTutorial/Assets/RaymarchingTutorialに13個のサンプルシーンがあります。
- Unity 2020.1.8f1
シーン名: 01_UVGradient.unity
このサンプルでは、シェーダープログラミングのウォーミングアップとして、もっとも単純なシェーダーを作成します。
シーン名: 02_Fullscreen.unity
このサンプルでは、Quadをフルスクリーン描画する方法を解説します。
頂点シェーダーを書き換えることで、Unityのカメラの位置に関係なく、Quadが画面全体へ常に描画されるようになります。
シーン名: 03_RaymarchingSphere.unity
このサンプルからは、いよいよレイマーチングを実装します。
シーン名: 04_RaymarchingNormal.unity
このサンプルではライティングに必要な法線の計算について解説します。
シーン名: 05_RaymarchingShading.unity
シーン名: 06_RaymarchingFloor.unity
シーン名: 07_RaymarchingMaterial.unity
このサンプルではオブジェクトごとにマテリアル(色や材質など)を分ける方法と高度なライティングについて解説します。
シーン名: 08_RaymarchingWithUnityCamera.unity
このサンプルではUnityのカメラとレイマーチングのカメラを同期する方法を解説します。
カメラを同期することで、Unityのカメラの設定からレイマーチング内のカメラを動かしたり、シーンビューの自由カメラのモードでレイマーチングの世界を探索したりできます。
シーン名: 09_RaymarchingQuadBounds.unity
このサンプルでは自由にカメラを動かしたときにフラスタムカリングでレイマーチングが描画されなくなる現象を解決します。
シーン名: 10_RaymarchingReflection.unity
このサンプルではレイトレーシングによる鏡面反射を追加する方法を解説します。 図の中央のボールに床のチェッカー模様が写り込んでいますが、これが鏡面反射です。
シーン名: 11_RaymarchingOpRepeat.unity
このサンプルでは、距離関数のオブジェクトを無限に複製する opRep
というオペレーションを紹介します。
シーン名: 12_RaymarchingBoolean.unity
このサンプルでは、距離関数のブーリアン演算による合成を紹介します。
シーン名: 13_RaymarchingBoolean2.unity
このサンプルでは、これまでに紹介した距離関数の無限複製とブーリアン演算を組み合わせることで、鉄骨のような雰囲気の形状をモデリングする方法を解説します。
- ソースコードのライセンスはMITです。