I would like to adjust the fog distance for each camera in my scene.
I looked into this script called CameraRenderSettings but I can’t get it to work.
Anybody know how I can get it to work or another script that accomplish this?
I would like to adjust the fog distance for each camera in my scene.
I looked into this script called CameraRenderSettings but I can’t get it to work.
Anybody know how I can get it to work or another script that accomplish this?
Do you have fog enabled? If so - setting fog distance in OnPreRender should do the trick
Is OnPreRender this script?
If so, I don’t see any parameters for adjusting the distance.
Bump!
Any ideas on how to implement this in a script?
Create and drop this script on any camera and change settings at will in the Inspector:
using UnityEngine;
using System.Collections;
public class FogDensity : MonoBehaviour {
public bool fog;
public Color fogColor;
public float fogDensity;
public Color ambientLight;
public float haloStrength;
public float flareStrength;
bool previousFog;
Color previousFogColor;
float previousFogDensity;
Color previousAmbientLight;
float previousHaloStrength;
float previousFlareStrength;
void OnPreRender()
{
previousFog = RenderSettings.fog;
previousFogColor = RenderSettings.fogColor;
previousFogDensity = RenderSettings.fogDensity;
previousAmbientLight = RenderSettings.ambientLight;
previousHaloStrength = RenderSettings.haloStrength;
previousFlareStrength = RenderSettings.flareStrength;
if(fog)
{
RenderSettings.fog = fog;
RenderSettings.fogColor = fogColor;
RenderSettings.fogDensity = fogDensity;
RenderSettings.ambientLight = ambientLight;
RenderSettings.haloStrength = haloStrength;
RenderSettings.flareStrength = flareStrength;
}
}
void OnPostRender()
{
RenderSettings.fog = previousFog;
RenderSettings.fogColor = previousFogColor;
RenderSettings.fogDensity = previousFogDensity;
RenderSettings.ambientLight = previousAmbientLight;
RenderSettings.haloStrength = previousHaloStrength;
RenderSettings.flareStrength = previousFlareStrength;
}
}
works great. I added
using UnityEngine;
using System.Collections;
public class FogDensity : MonoBehaviour {
public bool fog;
public Color fogColor;
public float fogDensity;
public FogModes fogMode;
//public Color ambientLight;
//public float haloStrength;
//public float flareStrength;
bool previousFog;
Color previousFogColor;
float previousFogDensity;
FogModes previousFogMode;
//Color previousAmbientLight;
//float previousHaloStrength;
//float previousFlareStrength;
void OnPreRender() {
previousFog = RenderSettings.fog;
previousFogColor = RenderSettings.fogColor;
previousFogDensity = RenderSettings.fogDensity;
switch (RenderSettings.fogMode) {
case FogMode.Exponential: previousFogMode = FogModes.Exponential; break;
case FogMode.ExponentialSquared: previousFogMode = FogModes.ExponentialSquared; break;
case FogMode.Linear: previousFogMode = FogModes.Linear; break;
}
//previousAmbientLight = RenderSettings.ambientLight;
//previousHaloStrength = RenderSettings.haloStrength;
//previousFlareStrength = RenderSettings.flareStrength;
if(fog) {
RenderSettings.fog = fog;
RenderSettings.fogColor = fogColor;
RenderSettings.fogDensity = fogDensity;
switch (fogMode) {
case FogModes.Exponential: RenderSettings.fogMode = FogMode.Exponential; break;
case FogModes.ExponentialSquared: RenderSettings.fogMode = FogMode.ExponentialSquared; break;
case FogModes.Linear: RenderSettings.fogMode = FogMode.Linear; break;
}
//RenderSettings.ambientLight = ambientLight;
//RenderSettings.haloStrength = haloStrength;
//RenderSettings.flareStrength = flareStrength;
}
}
void OnPostRender() {
RenderSettings.fog = previousFog;
RenderSettings.fogColor = previousFogColor;
RenderSettings.fogDensity = previousFogDensity;
switch (previousFogMode) {
case FogModes.Exponential: RenderSettings.fogMode = FogMode.Exponential; break;
case FogModes.ExponentialSquared: RenderSettings.fogMode = FogMode.ExponentialSquared; break;
case FogModes.Linear: RenderSettings.fogMode = FogMode.Linear; break;
}
//RenderSettings.ambientLight = previousAmbientLight;
//RenderSettings.haloStrength = previousHaloStrength;
//RenderSettings.flareStrength = previousFlareStrength;
}
public enum FogModes {
Exponential,
ExponentialSquared,
Linear
}
}
to allow mode selection.
thanks for sharing
This was helpful, thank you.
A quick tip: You can add [ExecuteAlways] attribute just above the MonoBehaviour in order to preview the fog in the editor without switching to playmode:
[ExecuteAlways]
public class FogDensity : MonoBehaviour
{
// ...
}
I would also like to say Thank You to JasonC001 and starikcetin. You saved me an hour or so trying to figure this out.