最近美术同事希望我能帮忙做一个由内而外流光的shader,效果类似下图:
我最初的思路是利用模型的顶点坐标:美术制作模型的时候就将模型的原点设在中心。这样我在vertex shader中用length(i.vertex)求出每个顶点到中心的距离,进而在fragment shader中求出每个像素是否该显示流光。
于是就想做个实验,看看Unity中的模型顶点的分布规律。我写了一个shader,让离原点越近的顶点颜色越偏黑,离原点越远的顶点越偏红。
Shader "Custom/VisualizeVertexPos" {
SubShader {
Pass {
Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
Blend SrcAlpha OneMinusSrcAlpha
Cull Off
Lighting Off
Fog { Color (0,0,0,0) }
CGPROGRAM
#pragma vertex vert
#pragma fragment frag