美文网首页
shader基础知识

shader基础知识

作者: SeanLink | 来源:发表于2023-10-24 09:41 被阅读0次

创建shader

image.png

shader中的一些属性

Properties
{
    //属性中的一些变量类型
    _Color("Color",Color) = (1,1,1,1)
    _Int("Int",Int) = 1
    _Float("Float",Float) = 1
    _Range("Range",Range(1,10)) = 6
    _Vector("Vector",vector) = (1,1,1,1)
    _2D("Texture",2D) = "Red"
    _3D("Texture",3D) = "Black"
    _Cube("Cube",Cube) = "white" {}
    _MainTex ("Texture", 2D) = "white" {}
}

Pass 着色

 Pass
        {
            CGPROGRAM
            //定点着色器 声明  函数名
            #pragma vertex vert
            //片元着色器 声明 函数名
            #pragma fragment frag
            // make fog work
            #pragma multi_compile_fog
            //导入unity自带的库
            #include "UnityCG.cginc"

            //重新定义  上面变量如果要使用必须在这里重新定义
            fixed4 _Color;

             //结构体 定义一些变量
            struct av2 //一个请求到顶点着色器
            {
                float4 vertex : POSITION; //顶点信息
                float3 normal:  NORMAL; //法线信息
                float2 texcoord : TEXCOORD0; // 第一套UV
            };
        
            struct v2f //顶点信息到片元着色器
            {
                // 裁剪空间的位置信息
                float4 pos : SV_POSITION;
                fixed3 color: COLOR0;
            };

            //sampler2D _MainTex;
            //float4 _MainTex_ST;
            //POSITION 顶点信息到裁剪空间顶点信息 函数实现 对应上面有声明
            v2f vert (appdata v)
            {
                v2f o;
                o.pos = UnityObjectToClipPos(v.vertex); //顶点信息 ----- 到裁剪空间信息的变换 
                o.color = v.normal * 0.5 + fixed(0.5,0.5,0.5); //颜色信息存储
                return o;
            }
            //SV_Target 帧缓存 片元着色器
            fixed4 frag (v2f i) : SV_Target
            {
                fixed3 c = i.color;
                c*=_Color.rgb;
                return fixed4(c,1);
            }
            ENDCG
        }

Tags 标签类型


image.png

顶点着色器


image.png

片元着色器


image.png

片元的比顶点的要消耗性能, 像素级别

相关文章

网友评论

      本文标题:shader基础知识

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