美文网首页Shader编程
Shader入门概览 (一)

Shader入门概览 (一)

作者: xzhuan | 来源:发表于2018-04-12 16:03 被阅读39次
    Aitin原创稿件,转载请注明出处!
    1.贴图资源下载
    

    传送门 密码:laty
    资源临时 取消

    2.unity 导入资源包 youyiu.unitypackage
    
    3.书写和使用第一个Shader
    在空白处右键->Create->Shader,
    或者是直接点Create下拉菜单->Shader,创建一个Shader文件,取名为   “testShader”。
    然后双击打开它,Unity会默认使用名为MonoDevelop的编辑器打开这个Shader文件
    
    发现Unity已经为我们写好了很多代码。
    我们不妨自己重新写点不一样的东西。删掉原本的这些代码,拷贝如下代码到编辑器中:。
    //-----------------------------------------------【Shader说明】----------------------------------------------  
    //      Shader功能:   凹凸纹理显示+自选边缘颜色和强度  
    //     使用语言:   Shaderlab  
    //---------------------------------------------------------------------------------------------------------------------  
    
    
    Shader "Shader编程/testShader"
    {
       //-------------------------------【属性】-----------------------------------------  
       Properties
       {
           _MainTex("【纹理】Texture", 2D) = "white" {}
       _BumpMap("【凹凸纹理】Bumpmap", 2D) = "bump" {}
       _RimColor("【边缘颜色】Rim Color", Color) = (0.17,0.36,0.81,0.0)
           _RimPower("【边缘颜色强度】Rim Power", Range(0.6,9.0)) = 1.0
       }
    
           //----------------------------【开始一个子着色器】---------------------------  
           SubShader
       {
           //渲染类型为Opaque,不透明  
           Tags{ "RenderType" = "Opaque" }
    
           //-------------------开始CG着色器编程语言段-----------------  
           CGPROGRAM
    
           //使用兰伯特光照模式  
    #pragma surface surf Lambert  
    
           //输入结构  
           struct Input
       {
           float2 uv_MainTex;//纹理贴图  
           float2 uv_BumpMap;//法线贴图  
           float3 viewDir;//观察方向  
       };
    
       //变量声明  
       sampler2D _MainTex;//主纹理  
       sampler2D _BumpMap;//凹凸纹理  
       float4 _RimColor;//边缘颜色  
       float _RimPower;//边缘颜色强度  
    
                       //表面着色函数的编写  
       void surf(Input IN, inout SurfaceOutput o)
       {
           //表面反射颜色为纹理颜色  
           o.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb;
           //表面法线为凹凸纹理的颜色  
           o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
           //边缘颜色  
           half rim = 1.0 - saturate(dot(normalize(IN.viewDir), o.Normal));
           //边缘颜色强度  
           o.Emission = _RimColor.rgb * pow(rim, _RimPower);
       }
    
       //-------------------结束CG着色器编程语言段------------------  
       ENDCG
       }
    
           //“备胎”为普通漫反射  
           Fallback "Diffuse"
    }
    拷贝完成,保存一下这段代码,unity会自动检测和编译被保存的代码,
    我只需返回Unity窗口,等待编译完成即可
    
    4.挂载 纹理贴图 效果如下
    
    哇咔咔 ~~

    相关文章

      网友评论

        本文标题:Shader入门概览 (一)

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