Accessing global fog properties
All properties shown in the inspector can be set or modified at runtime using scripting.
First you need to get a reference to the main script which can be done easily using:
using VolumetricFogAndMist;
…
VolumetricFog fog = VolumetricFog.instance;
Then, you can set any property like the fog color or wind speed/direction:
fog.color = new Color(1,0,0);
fog.speed = 0.5f;
fog.windDirection = Vector3.right;
Although you can set any property using this way, you can also assign a whole profile:
fog.profile = myprofile; // my profile is a VolumetricFogProfile scriptableobject
List of useful runtime Volumetric Fog properties
Unless specified, all properties can return or set a value. For example, fog.profile will return the currently assigned profile while fog.profile = … will assign a new profile and apply its settings immediately.
Please note that the VolumetricFog script exposes many more properties which usually are set either in the inspector or through a profile. Here’s a reduced list of most frequent used properties at runtime.
Property name | Type | Description |
preset | FOG_PRESET | Gets or sets a legacy factory preset (ie: WindyMist, SeaClouds, etc.) |
profile | VolumetricForProfile | Gets or sets a fog profile with predefined settings. See “Profiles” in Special Section of this document for more details. |
useFogVolumes | bool | Specifies if fog volumes can be detected and used. Fog Volumes are special areas where a custom profile can be applied producing a smooth transition. Check “Fog Volumes” section for more details. |
sun | GameObject | Gets or sets the gameobject used as Sun. This is usually the directional light. |
distance | float | Start distance of the fog in meters. |
distanceFallOff | float (0-5) | Controls the gradient transition between camera and the starting distance. |
height | float | Height of the fog. |
heightFallOff | float (0-1) | Controls the gradient vertical transition. |
baselineHeight | float | Specifies the altitude in meters at which the fog starts. |
baselineRelativeToCamera | bool | If true, the baselineHeight is relative to the camera Y coordinate. Otherwise the baselineHeight is relative to 0 altitude. |
density | float (0-1.25) | The fog density. |
alpha | float (0-1.05) | Transparency of the fog. |
color | Color | Albedo color of the fog. |
specularColor | Color | Specular color of the fog. |
copySunColor | bool | If Sun color and intensity should be used. If false, the lightColor and lightIntensity properties are used instead. |
lightColor | Color | The color of the directional light. |
lightIntensity | float | The intensity or brightness of the directional light. |
speed | float (0-1) | Speed of the wind animation. |
windDirection | Vector3 | Normalized direction of the wind animation (only X & Z axis are used). |
useRealTime | bool | If the wind animation timing should use realtime clock or not. If true, any change in speed will be smoother. |
turbulence | float (0-10) | Turbulence amount. 0 = disables this effect. |
skyColor | Color | The color of the sky haze effect. |
skyHaze | float | The altitude of the sky haze effect (0 = disables it completely). |
FOG VOID RELATED | ||
character | GameObject | The character or gameobject to be followed by the fog void. |
fogVoidPosition | Vector3 | The position of the fog void if not following a gameobject (character property is null). |
fogVoidTopology | FOG_VOID_TOPOLOGY | If the fog void is spherical or boxed. |
fogVoidRadius | float | Radius of the fog void. |
fogVoidDepth | float | Depth of the fog void (if boxed). |
fogVoidHeight | float | Height of the fog void (if boxed). |
FOG AREA RELATED | ||
fogAreaCenter | GameObject | The character or gameobject to be followed by this fog area. |
fogAreaFollowMode | FOG_AREA_FOLLOW_MODE | If the fog area follows in 3D or 2D (X/Z plane only). |
fogAreaPosition | Vector3 | The position of the fog area if not following a gameobject (fogAreaCenter is null). |
fogAreaTopology | FOG_AREA_TOPOLOGY | If the fog area is spherical or boxed. |
fogAreaRadius | float | Radius of the fog area. |
fogAreaDepth | float | Depth of the fog area (if boxed). |
fogAreaHeight | float | Height of the fog area (if boxed). |
OTHER | ||
Downsampling | int | 1 = no downsampling (native screen resolution). Increasing downsampling improves performance at quality expense. |
sunShadows | bool | If directional light shadows should be used. |
Fog of War methods
The following fog of war methods are available:
ResetFogOfWar()
General reset function which removes any previous change to fog of war transparency.
ResetFogOfWarAlpha(…)
Restores fog immediately at a given position with radius or bounds.
SetFogOfWarAlpha(…)
Changes the transparency of the fog in an area. This method is overloaded and can accept different paremeters and options:
-
Accepts a world position and a radius, or a bounds, or a world position and size, a collider, a gameobject, …
-
Desired alpha and specify if this value replaces the existing transparency or if it blends with it (blendAlpha parameter).
-
The duration of the transition (pass 0 to set the alpha immediately).
-
The smoothness/harshness of the border (by default it uses the global setting in Fog Of War section which is 1f).
-
The restore delay and duration (by default it uses the global settings in Fog Of War section). Pass 0 to restore delay to make the change permanent.
float GetFogOfWarAlpha(Vector3 worldPosition)
Returns the transparency (0-1) of the fog of war at the given world position.
Texture2D fogOfWarTexture
Sets/returns the currently assigned fog of war texture which stores the transparency values.
Color32[] fogOfWarTextureData
Sets/returns the contents of the fog of war texture.