Unity5 用エフェクト置き場。
こちらのパッケージをインポートすれば大体そのまま使えます:IstEffects.unitypackage
多くはレンダリングパスが deferred であることを前提としています。また、カメラが HDR モードである方がより望ましい結果になります。
スクリーンスペース反射です。
kode80 氏が似たようなものを公開していますが、そちらとはアルゴリズムが違い、
若干残像が残ってしまう欠点があるものの、圧倒的に高速でクオリティも引けを取りません。
実装の詳細に興味があればこちらの記事もどうぞ。
また、上記スクリーンショットの背景はこちらの Raymarcher によるものです。
G-Buffer をレイマーチすることで影を出せるライトです。点光源の他に線光源も扱えるようになっています。
ライティング処理の大部分は公式の CommandBuffer のサンプルプロジェクトから借用しています。
G-Buffer 加工によるスクリーンスペースブーリアン演算です。
重い、影を正しく処理できない、複雑な立体交差で破綻する、などいくつか問題はありますが、見た目に結構インパクトがある効果は得られます。
実装の詳細に興味があればこちらの記事 (の下の方)もどうぞ。
法線と カメラ -> ピクセル位置 の角度が浅い部分を明るくするアレです。
水面とコースティクスです。
水面は G-Buffer をレイマーチすることで屈折をエミュレートしています。コースティクスは 3 次元ノイズで明るくしてそれっぽく見せかけています。
一粒一粒を Point Light として扱うパーティクルレンダラ。MassParticle の拡張。
Mesh の表面を開始点としてレイマーチ (sphere tracing) することで、オブジェクトスペースで distance function をレンダリングする代物。
上の画像は Unity ちゃん以外の背景オブジェクトは全て Cube をピクセルシェーダで加工したものです。
レイマーチによる Metaball。完全に GPU で完結するので、MC 法などでメッシュを生成するよりはずっと高速なはずです。
実装には Media Molecule の方が発表した soft_min() 関数を拝借しています。(詳細。この資料プロシージャルモデリングの類に関する情報の宝庫なのでおすすめです) また、D3D11 世代の機能 (StructuredBuffer) を使っているのでやや環境を選びます。
This work is licensed under a Creative Commons Attribution 4.0 International License.