Part1.效果图
(使用遮罩纹理前)
(使用遮罩纹理后)
可以看到,遮罩纹理可以使得高光更加细腻、更加可控
Part2.原理简介
遮罩纹理本质也是一张纹理,它反映了某像素点被高光影响的程度
通过遮罩纹理,我们可以屏蔽高光对一些不希望被高光照亮的区域的影响,还可调节高光在不同区域的表现程度,使得高光富有变化,更加细腻,真实感更强
对于遮罩纹理的采样也和其他种类纹理一样,是在片元着色器完成的,完成采样后乘在高光项的计算式后即可
Part3.代码逐段解析
Properties
{
_Color ("Color", Color) = (1,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_BumpMap("Normal Map", 2D) = "bump" {}
_BumpScale("Bump Scale", Float) = -0.8
_SpecularMask("Specular Mask", 2D) = "white"{} //遮罩纹理
_SpecularScale("Specular Scale", Float) = 1.0 //遮罩纹理强度因子
_Specular("Specular", Color) = (1,1,1,1)
_Gloss("Gloss", Range(8.0, 256)) = 200
}
在属性块中,我们需要额外定义遮罩纹理和遮罩纹理强度因子(用于对遮罩强度进行控制)
struct a2v{
float4 vertex : POSITION;
float3