Fog とは、カメラからの距離に応じてオブジェクトに色を重ねるエフェクトです
例えば青のFogを適応した場合右画像のようになります
これは Shader 側で行われている処理で Shader が Fog に対応していなければ適応されません
Shader
Vertex Shader
pragma に multi_compile_fog を定義して
struct, vert, frag に適応する処理を追加する必要があります
Shader "Unlit/Shader" { SubShader { Pass { CGPROGRAM ・・・ // make fog work #pragma multi_compile_fog ・・・ struct v2f { float2 uv : TEXCOORD0; UNITY_FOG_COORDS(1) float4 vertex : SV_POSITION; }; ・・・ v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = TRANSFORM_TEX(v.uv, _MainTex); UNITY_TRANSFER_FOG(o,o.vertex); return o; } fixed4 frag (v2f i) : SV_Target { // sample the texture fixed4 col = tex2D(_MainTex, i.uv); // apply fog UNITY_APPLY_FOG(i.fogCoord, col); return col; } ENDCG } } }
Surface Shader
pragma の 定義に nofog を追加することで無効にできます
#pragma surface surf Standard fullforwardshadows nofog
Fog の設定
Window/Rendering/Lighting Settins から ウィンドウを開いて Scene/Other Setting/Fog でOnOffやパラメータを変更できる