Unity (九) Shader:SurfaceShader:添加法线贴图效果

写一个Shader :

 Shader "Surface/SurfaceShader004" {
Properties 
{      

_MainTex("主纹理",2d)=""{}
_BumpMap("法线贴图",2D)=""{}
_MainColor("",COLOR)=(1,0,0,1)
}
SubShader
 {

    CGPROGRAM //--------------------CG语言开头

    //编译指令 着色器类型 着色器函数名称 光照模型  其他设置
    #pragma    surface    surf        Lambert   finalcolor:setcolor
     
     struct Input 
     {
        float2 uv_MainTex;  //定义一个主纹理的UV坐标
float2 uv_BumpMap;   //定义法线贴图的UV坐标

     };
         sampler2D _MainTex;  //定义纹理对象
 sampler2D _BumpMap;  //定义法线贴图对象
 fixed4 _MainColor;    //定义颜色

 void surf(Input IN,inout SurfaceOutput o)  //函数
 {
 //通过UV查找纹理中该顶点的颜色值,然后赋值
  o.Albedo=tex2D(_MainTex,IN.uv_MainTex).rgb;

 // o.Albedo*=_MainColor.rgb;写在其他设置的setcolor函数里也可以
  o.Normal=UnpackNormal(tex2D(_BumpMap,IN.uv_BumpMap)); //接收法线

 }
 //颜色设置函数
 void setcolor(Input IN,SurfaceOutput o,inout fixed4 color)
 {
 color*=_MainColor;
 
 }


ENDCG //----------------------------CG语言结尾
 }
FallBack "Diffuse"
}


创建一个材质球,并设置Shader为刚写的
SurfaceShader004
效果如下:


 

 

 

 





 

转载于:https://www.cnblogs.com/yugejuhao/p/7510649.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值