shader入门精要2

顶点着色器和片元着色器之间的通信

  1. 顶点着色器着色器需要包含一个变量(SV_POSITION),不然渲染器无法得到裁剪空间的顶点坐标
    Shader “Custom/Together” {
    SubShader
    {
    pass
    {
    CGPROGRAM
    #pragma vertex vert
    #pragma fragment frag

    	//顶点着色器的输入
    
    	struct a2v
    	{
    		float4 vertex:POSITION;
    		float3 normal :NORMAL;
    		float4 texcoord :TEXCOORD0;
    	};
    	//定义顶点着色器的输出
    	struct v2f
    	{
    		float4 pos:SV_POSITION;
    		fixed3 color :COLOR0;
    	};
    	//(输入到屏幕空间)
      void vert(in a2v v,out v2f o)
       {
    	   //声明输出结构
    	 
           o.pos = UnityObjectToClipPos(v.vertex);//顶点信息
    	   o.color=v.normal*0.5+fixed3(0.5,0.5,0.5);//法线的方向(0,0,1)*0.5+(0.5,0.5,0.5)
      }
       fixed4 frag(v2f i):SV_Target
       {
    	   return fixed4(i.color,1.0);
       }
       ENDCG
    }
    

    }
    FallBack “Diffuse”
    }
    在这里插入图片描述
    这是一个渐变的材质
    实现关键:
    在这里插入图片描述
    编译过程报错的解决:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    因为编译没有报错提示,一定要注意关键字的书写和前后变量命名的一致性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值