之前我们介绍的一些Shader效果都是在surf函数中做文章,也就是对渲染过程中的片段进行操作,实现的是模型表面的一些显示效果。然而,Unity Shader还提供对顶点阶段进行控制,来实现顶点的位置,颜色,法线等信息的修改。
一个简单的例子
之前我们给过一个完整的Shader,用#pragma可以指定顶点函数。我们可以写一个简单的顶点函数,它什么也没有做:
Shader "Custom/VertShader" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert vertex:MyVert
sampler2D _MainTex;
struct Input {
float2 uv_MainTex;
};
void MyVert(inout appdata_full v, out Input IN)
{
}
void surf (Input IN, inout SurfaceOutput o) {
half4 c = tex2D (_MainTex, IN

本文介绍了如何在Unity Shader中使用顶点函数实现模型扭曲效果,包括理解顶点函数、处理输入输出变量、调整模型顶点位置以及控制颜色。通过示例代码展示了如何创建一个随时间变化的平面扭动效果,并讨论了顶点和片段阶段计算的效率差异。
最低0.47元/天 解锁文章
4万+





