UnityでカメラごとにFogのOn/Offを切り替える方法

UnityでFogは[Window] » [Lighting]から設定できますが、全体での設定になるのでカメラごとにFogをOnにしたりOffにしたりという設定ができません。そこで、On/Offを切り替えたい場合はOnPreRender/OnPostRenderで設定するスクリプトを使うという方法があるみたいです。

public class ExampleClass : MonoBehaviour
{
  private bool revertFogState = false;

  void OnPreRender()
  {
    revertFogState = RenderSettings.fog;
    RenderSettings.fog = enabled;
  }

  void OnPostRender()
  {
    RenderSettings.fog = revertFogState;
  }
}

Unity - Scripting API: MonoBehaviour.OnPreRender()より

ちなみに、確かめたことはありませんが、On/Offの切り替えで特別なコストが発生するということはないそうです。

リンク

Unity – Scripting API: MonoBehaviour.OnPreRender()
https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnPreRender.html

Fog per Camera Unity Community
https://forum.unity3d.com/threads/fog-per-camera.119888/

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です