Shader 学习笔记(4)

CGPROGRAM

#pragma vertex vert

#pragma fragment frag

struct a2v {

       float4 vertex :POSITION;

       float3 color :COLOR;

       float3 normal:NORMAL;

};

//使用一个结构体定义顶点着色器的输出 v2f=vertex shader to fragment,输出了2个变量pos,color.

struct v2f{

        float4 pos:SV_POSITION;

        fixed3 color:COLOR0;

};

//结构体定好后,原始结构体里的变量是没有赋值的.用结构体v2f定义一个对象vert,从a2v结构体定义对象v中传递数据.函数值返回(除了void函数,其余函数必须有返回值)

v2f vert(a2v v){

v2f o;

o.pos=UnityObjectToClipPos(v.vertex);

o.color=v.normal*0.5+fixed3(0.5,0.5,0.5);

return o;

}

// 片元着色器函数frag,从v2f结构体定义的对象i中取值,对象i中的值其实就是v2f o所return的结果.SV_TARGET是系统值

fixed3 frag(v2f i):SV_TARGET{

return fixed4(i.color,1.0);

}

ENDCG

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值