Shader自学笔记 1.3 使用属性控制渲染效果

来源:互联网 发布:seo网络营销技术 编辑:程序博客网 时间:2024/06/03 19:41
Shader "Custom/one/simple shader" {    Properties{//  声明Color属性    _Color("Color",Color)=(1.0,1.0,1.0,1.0)    }    SubShader {        pass{        CGPROGRAM        //定义顶点函数        #pragma vertex vert         //定义片元函数        #pragma fragment frag//      在CG代码段中,需要一个属性名和类型都匹配的变量        fixed4 _Color;//      使用结构体来定义顶点着色器的输入        struct a2v{        float4 vertex:POSITION;//模型空间顶点坐标        float3 normal:NORMAL;//模型空间法线方向        };//      定义一个着色器的输出        struct v2f{        float4 pos:SV_POSITION;//裁剪空间坐标        fixed3 color:COLOR0;//颜色信息        };        v2f vert(a2v v){        v2f o;        o.pos=mul(UNITY_MATRIX_MVP,v.vertex);//      将[-1,1]的法线值转换成[0,1]作为颜色值        o.color=v.normal*0.5+fixed3(0.5,0.5,0.5);        return o;        }//      SV_Target 输出颜色存储到渲染目标中        fixed4 frag(v2f i):SV_Target{        fixed3 c=i.color;        c*=_Color.rgb;//使用_Color属性控制输出颜色        return fixed4(c,1.0);        }        ENDCG        }    }}

这里写图片描述

0 0