プログラミング系のネタをまとめていきます。

レンダリングパスの種類


レンダリングパスの指定によって、ライト、シャドウなどの効果が変わってくる。

レンダリングパスの設定は、
  • Player Settings : デフォルト設定になる。
  • 各Cameraの Rendering Path : カメラごとにレンダリングパスを変更できる。
ライト計算法線マップ
LightCookie
リアルタイムシャドウ
Deferred Lighting全ライトがピクセル単位
Forward Renderingライト数上限有りでピクセル単位
directional light 1つ
Vertex Lit頂点単位××

※その他詳細はリファレンスで。

Deferred Lighting(遅延ライティング)

  • Unity Pro のみ利用可能。
  • ライトの個数に制限がない。
  • 処理不可はスクリーン上のライトのサイズに比例する。

レンダリングプロセス

  1. Base Pass : オブジェクトをスクリーン空間にレンダリング。併せて、デプスバッファ、法線バッファ、スペキュラパワーが作成される。
  2. Lighting Pass : デプスバッファ、法線バッファ、スペキュラパワーを元にライティング計算する。
  3. Final Pass : オブジェクトをもう一度描画。計算されたライトを合成する。
  • 法線バッファ : ARGB32。Aにはスペキュラパワー。
  • ライティングバッファ : ARGB32。RBG:ディフューズライト。A:スペキュラーライト。

※詳細はリファレンスで。
Lighting Pass

スクリーン空間上で計算するので、シーンの複雑さに影響されない。
ライトモデルは Blinn-Phong のみ。
カメラに交差しないポイントライト、スポットライトはZバッファテストで3次元形状としてレンダリングされる。
ディレクショナルライトと、near planeに交差するスポットライト、ポイントライトはフルスクリーンの四角形としてレンダリングされる。
Final Pass
前パスのライトと合わせて、全オブジェクトがもう一度レンダリングされる。
ここでライトマップが適用される。

Forward Rendering


明るいと判定されるライトはピクセル単位でライト計算が行われる。
最大4つのポイントライトは頂点単位でライト計算が行われる。
残りのライトは、球面調和補間(Spherical Harmonics : SH)で計算される。
  • Render Modeが Not Important に設定されたライトは、常に頂点単位かSHで計算される。
  • Render Modeが Important に設定されたライトは、常にピクセル単位で計算される。
  • 明るいディレクションライトは常にピクセル単位。
  • ピクセル単位で描画されるライトは、QualitySettings - Pixel Light Count の数が最大。明るいライトから順に描画される。

リファレンス


描画の流れの詳細な説明があります。

http://docs.unity3d.com/Documentation/Components/R...

Vertex Lit


オブジェクトの頂点ごとに、全ライトを計算してレンダリングする。

描画コストは一番少なく、幅広いハードウェアでサポートされる。
ただし、シャドウ、法線マップ、ライトクッキー(Light Cookie)、詳細なスペキュラーはサポートしていない。

その他

Light Cookie


テクスチャによる、ライトをマスクする機能。

  • テクスチャのアルファチャンネルで明るさを指定。
  • スポットライト、ディレクショナルライトで設定可能。
  • ライト計算がピクセル単位の時のみ反映される。
タグ

Menu

メインコンテンツ

プログラミング

機器

Macツール

各種情報

Wiki内検索

おまかせリンク

Androidアプリ

AdSense

技術書


管理人/副管理人のみ編集できます