---
name: "setFog"
type: command
status: ok
groups: ["Environment"]
arma3_since: "0.50"
locality: {"argument": null, "effect": "global", "server_exec": true}
source: https://community.bistudio.com/wiki/setFog
revid: 370471
updated: 2024-12-16T18:09:58Z
---

# setFog

*Command · Environment · Arma 3 v0.50 · introduced in Operation Flashpoint v1.00*

Locality: effect **global** · **server execution only**

## Description

Smoothly change the fog over given time (in seconds). See also [fogParams](../commands/fogParams.md).

> [!NOTE]
> This command is MP synchronised, if executed on server, the changes will propagate globally. If executed on client effect is temporary as it will soon change to the server setting.

## Syntax

### Syntax 1

```sqf
time setFog fog
```

**Parameters:**

- `time`: [Number](../topics/Number.md) - transition time to the new value
- `fog`: [Number](../topics/Number.md) - fog density in range 0..1

**Returns:** [Nothing](../topics/Nothing.md)

### Syntax 2

*since arma3 0.50*

```sqf
time setFog [fogValue, fogDecay, fogBase]
```

**Parameters:**

- `time`: [Number](../topics/Number.md) - transition time to the new value
- `fogValue`: [Number](../topics/Number.md) - normal [fog](../commands/fog.md) value that represents fog density at *fogBase* level, in range 0..1
- `fogDecay`: [Number](../topics/Number.md) - decay of fog density with altitude, in range -1..1; a negative value means a "ceiling" fog
- `fogBase`: [Number](../topics/Number.md) - base altitude ([ASL](../topics/Position.md#positionasl)) of fog (in meters), in range -5000..5000

**Returns:** [Nothing](../topics/Nothing.md)

## Examples

### Example 1

```sqf
15 setFog 0.5;
```

### Example 2

Force no fog:

```sqf
0 setFog 0;
// forceWeatherChange; // change is immediate
999999 setFog 0;
```

### Example 3

```sqf
// Arma 3 examples:
0 setFog [1, 0.01, 0];
0 setFog [1, -1, 70];    // mountain fog, starts from 70m ASL and thickens the higher you climb
0 setFog [1, 1, 60];    // valley fog, starts from 60m ASL and thickens the lower you descend
0 setFog [1, 1, 0];        // fooooog on the waaaater
```

## Multiplayer

Before Arma 3, server and clients could have each a different (local) fog value.

## See also

Arma 3: Improved Fog · [fog](../commands/fog.md) · [fogParams](../commands/fogParams.md) · [fogForecast](../commands/fogForecast.md) · [nextWeatherChange](../commands/nextWeatherChange.md) · [forceWeatherChange](../commands/forceWeatherChange.md) · [setRain](../commands/setRain.md)

## Community notes

**Ceeeb** — 2007-04-20

Only one script command induced weather change (either [setOvercast](../commands/setOvercast.md) or setFog) can be happening at a time.
Starting a new weather change will immediately halt the current weather change.
[setRain](../commands/setRain.md) changes are independent and can occur simultaneously to a weather change.

---

**Zapat** — 2015-12-15

[setTimeMultiplier](../commands/setTimeMultiplier.md) DOES affect transition time.

---

**Killzone_Kid** — 2019-01-10

A little information about how Alt Syntax works.
The *fogValue* is normal [fog](../commands/fog.md) value that could be set independently with original [setFog](../commands/setFog.md) command.
*fogBase* is the ASL altitude at which the fog will start. 0 is the sea level. *fogDecay* is how defined the fog start is. The more defined, the denser is the fog.
1 (or -1) are the max values. If it is positive the fog will be generated below *fogBase* line, if negative, above it.
If *fogDecay* is small, the fog will transition more smoothly from no fog to full fog, and because of that it will cross *fogBase* line by quite a lot, depending on how small is *fogDecay* value.
Current values of *fogDecay* and *fogBase* can be retrieved with [fogParams](../commands/fogParams.md).

---

**Sa-Matra** — 2022-07-05

Few notes about network behavior of the fog:
- Fog is the only weather parameter that is *almost* properly network-synchronized by the engine. You can rely on it for both connected players and JIP players without jumping through hoops like other weather commands.
- *time* is not synchronized over the network exactly, fog values changes will be linear over time where you run the command, while network-synced *time* will be non-linear, but in the end fog is still will be somewhat close between clients and servers, so its not much of a game breaker.
- Say fog all 0 on both server and client, instantly setting fog on the server with `0 setFog 1` or even `0 setFog [1,1,1]` will not set it instantly on clients, but rather interpolate it there over few seconds (~10-15), non-linearly (slower the closer it gets to server values)
- Setting *fogValue* to values above 1 is allowed where you run the command, but network sync will still clamp it to 1, so if you do `0 setFog 100`, clients will still interpolate *fogValue* to 1, including JIP, so make sure you don't set it above 1 if you expect consistent values between server and client for some calculations.

---

**Sa-Matra** — 2022-08-01

Be aware that this command is affected by [setWindStr](../commands/setWindStr.md) and [windStr](../commands/windStr.md)! Max fogValue = 1 - windStr, so if you do `0 setWindStr 1`, setting any fog with time>0 will actually set fog to 0! Doing instant fog changes with time=0 strangely still works though.

<sub>Source: [BI Community Wiki — setFog](https://community.bistudio.com/wiki/setFog) (revision 370471).</sub>
