UnityShader介绍新手向,让你一看就懂的那种~

前言

做Unity很久了也不会Shdaer,最近趁着略空闲了解了以下,这里做一个引导,想要更进一步的了解请移步冯乐乐的《UnityShader入门精要》,墙裂推荐!

使用步骤

Shader "Unlit/m_UnlitShader"//一个成功的shdaer必定需要一个名字,在这里我们将其命名为:m_UnlitShader。代表这是我们自己的shader!仪式感满满
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}//图片
    }
    SubShader//语义块,通俗一点的名字是:方法..    PS:unity能够直接运行的方法,这个方法可以定义很多个,unity会寻找可以支持的最牛X的方法来执行,当然。。如果你的显卡太菜,一个方法都执行不了..那就只能执行“ FallBack "Diffuse"”这句话了。
    {
        Tags { "RenderType"="Opaque" }//这玩意儿可有可无,但如果你想更好的装X...emm,更好的使用,那么你需要知道这个。   这个Tag包含了一个键值对..
                                      //如果不好理解,你可以认为是一家有两口子,这家人的功能是告诉Unity:我们要什么时候,采用什么样式渲染这个对象
        LOD 100 //Level of Detail (LOD) 。细节层次,远了用一般般的效果,近了用牛X的效果,每个SubShader都可以有的属性,通过修改脚本中的Shader.globalMaximumLOD赋值就可以改变Shader:不管你好使不好使,我都要让你好使

        Pass     //主角,类似于...Main方法运行
        {
            CGPROGRAM  //cg处理器,醒醒,开始上班啦!!
            #pragma vertex vert //指定哪段代码是顶点shader,把vert作为顶点shader的入口   通俗来讲: vert这个方法已经心里有人了!就是Vertex!,其他方法不要来骚扰了!
            #pragma fragment frag 指定哪段代码是片元着色shader, 这个...同上
            // make fog work
            #pragma multi_compile_fog//雾。装X必备功能,飘飘欲仙必备

            #include "UnityCG.cginc"    //使用"UnityCG.cginc",调用插件,洒洒水啦
           //定义顶点着色器输入结构体
            struct appdata     //
            {
                float4 vertex : POSITION;//获得顶点数据   float4是四维向量,这里相当于告诉渲染引擎,这个属性代表的含义 
                float2 uv : TEXCOORD0;//获得纹理坐标数据  简称:图!
                //float4 normal: NORMAL;//获得法线数据
            };
           //与上边类似,这里使用一个结构体来定义顶点着色器的输出
            struct v2f
            {
                float2 uv : TEXCOORD0;
                UNITY_FOG_COORDS(1)
                float4 vertex : SV_POSITION;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;
            //Vertex 顶点函数
            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);//传递进来的顶点坐标是模型坐标系中的坐标值,需要经过矩阵转换成屏幕坐标
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                UNITY_TRANSFER_FOG(o,o.vertex);
                return o;渲染引擎去工作!
            }
            //fragment 片元函数
            fixed4 frag (v2f i) : SV_Target
            {
                // sample the texture
                fixed4 col = tex2D(_MainTex, i.uv);
                // apply fog
                UNITY_APPLY_FOG(i.fogCoord, col);
                return col;
            }
            ENDCG//cg处理器,去睡觉吧!!
        }
    }
}

总结

Shader使用还是比较简单的,难的只是算法。以上代码如有错误欢迎指正,愿与诸君共勉。

生命不息,coding不停!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值