您的位置:首页 > 其它

如何在表面着色器中使用顶点函数

2015-06-29 16:51 447 查看
一:告诉Unity我们将在着色器中包含一个顶点函数

CGPROGRAM
#pragma surface surf Lambert vertex:vert

说明:在编译着色器时,unity会自动寻找一个名为vert的顶点函数,如果没有找到,会抛出一个编译错误并提示你是否需要添加一个顶点函数

二:为了使surf()函数能够访问顶点函数vert()传入的值, Input结构体中加入新的属性

struct Input {
float2 uv_MainTex;
float3 vertColor;
};


三:编写简单vert函数,

void vert (inout appdata_full v, out Input o) {
UNITY_INITIALIZE_OUTPUT(Input,o);
o.vertColor = v.color;
}

说明:函数中我们访问appdata_full 的内置结构体,该结构体是用于存储顶点信息的,我们通过 o.vertColor = v.color 将顶点信息传入Input结构体,从而达到提取顶点颜色信息的目的。

四:使用

void surf (Input IN, inout SurfaceOutput o) {
o.Albedo = IN.vertColor.rgb*_MainTint.rgb;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: