Unity: Туман

Рассматриваю урок Stealth Tutorial, но в Unity 5 туман добавляется по другому (на своем примере):
1. Добавляем на сцену поверхность
2. Создаем для нее материал зеленого цвета (просто чтобы она не была белая)
3. Если теперь добавить туман, то он будет отображаться в окне камеры (на сцене его не будет):
WindowLightingSceneFog
4. По дефолту установлен режим Linear, поэтому эффекта не ощущается. Чтобы тумал «проявился, нужно установить режим Exponential или Exponential Squared.

Согласно уроку, туман нужно добавлять через EditRender Settings и поставить галочку на Fog, а затем выбрать цвет тумана, но в Unity 5.x эти настройки перенесены в Освещение.

 

Если в настройках Lighting выдается предупреждение «Fog does not affect opaque objects in Diferred Shading. Use Global Fog image effect.», то можно использовать свои шейдеры. Чтобы использовать не встроенный шейдер тумана, можно добавить на камеру другие скрипт и шейдер (например из набора Standard Assets):
1. Нам нужны два скрипта: GlobalFog.cs и PostEffectsBase.cs.
2. Чтобы они работали, нужен также шейдер GlobalFog.shader.
3. Теперь выделяем в Инспекторе основную камеру и добавляем ей скрипт GlobalFog.cs.
4. После добавления скрипта в его настройки нужно перетащить шейдер GlobalFog.shader
Unity: Туман
5. Если теперь взглянуть на сцену (через камеру), то туман будет. Правда почему-то он не будет затрагивать небо (SkyBox):
Unity: Туман
Может конечно это сделано для оптимизации, но как-то странно. Поэтому можно попробовать ее отключить, закомментировав пару строк в файле GlobalFog.shader:

//if (dpth == _DistanceParams.y)
//  fogFac = 1.0;

Unity: Туман

Архив со скриптами и шейдером тумана.

Если вы хотите, чтобы эффект тумана отображался не только в окне «Игры», но и в окне «Сцены», в файл GlobalFog.cs необходимо добавить строки:

    //#if UNITY_5_4_OR_NEWER
    [ImageEffectAllowedInSceneView]
    //#endif
Туман, который стелится под ногами, нужно делать уже по другому — с помощью системы частиц (Particle System), но не в этой заметке я не описываю этот урок.