在很多游戏中,都会让出现模型边缘发光的效果,本文就用表面着色器实现一个简单的边缘发光的效果。
首先我们需要一个最简单的漫反射表面着色器:
Shader "Custom/TestUV" {
Properties {
_MainTex ("Albedo (RGB)", 2D) = "white" {}
}
SubShader {
Tags { "RenderType"="Opaque"}
LOD 200
CGPROGRAM
#pragma surface surf Lambert
sampler2D _MainTex;
struct Input {
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutput o) {
fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}
Properties里增加:
_RimColor("Rim Color", Color) = (1,1,1,1)
_RimPower("Rim Power", Range(0.5,8.0)) = 3.0
SubShader里增加:
f

本文通过表面着色器详细介绍了如何创建模型边缘发光的效果。核心在于计算视图向量与法线向量的点积,通过点积的绝对值得到边缘位置,并依据此值为像素添加自发光,从而实现边缘高亮。
4万+

被折叠的 条评论
为什么被折叠?



