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


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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值