美文网首页
Shader学习——自定义结构体的使用

Shader学习——自定义结构体的使用

作者: BacteriumFox | 来源:发表于2019-08-16 23:58 被阅读0次
    1. 每个顶点着色器的输入输出需要有对应的结构体,方便把输出的结构传入片元着色器操作
    2. 结构体除自己定义以外,还可以引入UnityShader库 #include "UnityCG.cginc,在库中有unity方便开发者定义的一些常用结构类型,我们可以拿来直接使用
    Shader "Unlit/003"
    {
        Properties
        {
            _MainTex ("Texture", 2D) = "white" {}
            _Color("Color",Color) = (1,1,1,1)
        }
        SubShader
        {
            Tags { "RenderType"="Opaque" }
            LOD 100
    
            Pass
            {
                CGPROGRAM
                #pragma vertex vert
                #pragma fragment frag
                //引入unityShader库
                //#include "UnityCG.cginc"
               
               //只有在CGPROGRAM内再次定义一个与属性块内名字与类型相同的变量,属性块对应的变量才能起作用
               fixed4 _Color;
    
    
               //定义输入结构体
               struct a2v//a application dao vert
               {    
                    float4 vertex:POSITION;//用模型顶点填充V变量
                    float3 normal:NORMAL;//用模型的法线填充n变量
                    float4 texcoord:TEXCOORD;//用模型的第一套UV填充texcoord
               };
    
               //定义输出结构体
               struct v2f// v vert dao frag
               {
                    float4 pos:SV_POSITION;//SV_POSITION 语义告诉Unity :pos 为裁剪空间中的位置信息
                    fixed3 color:COLOR;//COLORO 语义可以储存颜色信息
               };
               
               //使用UnityShader库里预制结构体
               //v2f vert(appdata_full v)
               v2f vert(a2v v)
               {
                    v2f o;
                    o.pos = UnityObjectToClipPos(v.vertex);
                    //将【-1,1】转变成【0,1】的常用方法 x/2+0.5
                    o.color = v.normal * 0.5+fixed3(0.5,0.5,0.5);
                    return o;
               }
    
               fixed4 frag(v2f i):SV_Target
               {
                    fixed3 c= i.color;
                    //.xyzw .rgb .x .y .xw
                    c*=_Color.rgb;
                    return fixed4(c,1);
               }
    
                ENDCG
            }
        }
    }
    
    

    相关文章

      网友评论

          本文标题:Shader学习——自定义结构体的使用

          本文链接:https://www.haomeiwen.com/subject/cqpcsctx.html