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

来源:互联网 发布:涤纶低弹网络丝应香莲 编辑:程序博客网 时间:2024/06/07 18:21


一:告诉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;}





0 0
原创粉丝点击