文章目录
- 前言
- 一、Unity中的雾效在哪开启
- 二、Unity中不同种类雾的区别
- 1、线性雾
- 2、指数雾1(推荐用这个,兼具效果和性能)
- 3、指数雾2(效果更真实,性能消耗多)
- 三、在我们自己的Shader中实现判断,是否开启雾效
- 1、我们先定义一个关于雾效的宏
- 2、获取Unity雾效的颜色
前言
我们在这篇文章中讲述一下,在Unity的Shader中的雾效
一、Unity中的雾效在哪开启
二、Unity中不同种类雾的区别
1、线性雾
效果:
2、指数雾1(推荐用这个,兼具效果和性能)
效果:
3、指数雾2(效果更真实,性能消耗多)
效果:
三、在我们自己的Shader中实现判断,是否开启雾效
我们新建一个Unlit Shader 用于测试
1、我们先定义一个关于雾效的宏
#pragma multi_compile_fog
这个宏中有三个变体,分别对应之前的三种雾
2、获取Unity雾效的颜色
unity_FogColor
我们返回该值看一下效果:
return unity_FogColor;
最终代码:
//unity的雾效
Shader "MyShader/P1_9_2"
{SubShader{Tags { "RenderType"="Opaque" }Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#pragma multi_compile_fog#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;};struct v2f{float4 vertex : SV_POSITION;};v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);return o;}fixed4 frag (v2f i) : SV_Target{return unity_FogColor;}ENDCG}}
}