文章目录
- 前言
- 一、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
}
}
}