Shader入门概览

xzhuan原创稿件,转载请注明出处!
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入门概览_第1张图片
哇咔咔 ~~

你可能感兴趣的:(Shader入门概览)