cannorin / kanikama

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

KanikamaGI

KanikamaGIはVRChatでの使用を想定した、ライトマップをランタイムで更新する仕組みです。

Kanikama1 Image from Gyazo

動作環境

使い方

動作確認用ワールド


特徴

  • Udonを使っているのでVRChatで動きます。
  • UnityのRealtimeGIを使用しないため、高負荷でも(多分)止まりません。
  • 毎フレーム更新できます。
  • 通常の静的なGIと併用できます。
  • StanardシェーダーにKanikama機能を追加したシェーダーが入っています。
  • Directionalモードに対応しています。

残念なところ

  • 光源の数だけライトマップの枚数が増えるため、ワールドの容量が大きくなります。
  • ライトプローブの動的な更新はできません。
  • Bakery未対応(いつか対応します)

光源として使えるもの

  • ライト
    • Baked、Mixedに対応しています。
  • 発光マテリアル
    • StandardシェーダーのEmissionに対応しています。
  • 環境光
    • Ambient Lightの明るさと色を変えることができます。
  • モニター
    • 画面を最大で16個のマスに分割して、それぞれを発光マテリアルをつけた板ポリとして扱うことでGIに映像を反映します。

仕組み

  1. 事前に光源の数だけライトマップをベイクします。
  2. ランタイムではUdonとシェーダーを使って、ベイクした複数のライトマップを合成し、RenderTextureに出力します。
  3. RenderTextureは事前にGIを反映されたいオブジェクトのマテリアルに配っておくので、ライティングが更新されます。

仕組み自体はよく知られており、新しいものではありません。KanikamaGIの開発では以下を参考にしました。

また、開発では以下のリポジトリとアセットにお世話になりました。


LICENSE

MIT


Links

About

License:MIT License


Languages

Language:C# 78.9%Language:ShaderLab 11.1%Language:HLSL 7.7%Language:GLSL 2.2%