神临的Unity shader 学习之法线贴图(三)

上一篇介绍了用贴图来控制漫反射效果,既然说到了贴图的使用方面,那么再说一个贴图的使用方法.这里将会展现如何用贴图控制物体的纹理效果,那就是法相贴图,如下图
这里写图片描述
效果很明显,法线贴图的好处不仅仅是能够让物体的纹理表现更佳真实,而且在使用时相比于单单使用大量模型顶点表现纹理节省了大量消耗.
废话不多说了,上代码.

Shader"myNormalMap"
{
  Properties
  {
    _MainTex("Base Texture",2D)="white"{}//(1)
    _NormalMap("Normal map",2D)="white"{}
  }
  SubShader
  {
    Tags{"RenderType"="Opaque"}
    LOD 200

    CGPROGRAM
    #pragma surface surf Lambert

    sampler2D _MainTex;
    sampler2D _NormalMap;

    struct Input
    {
      float2 uv_MainTex;//(2)
      float2 uv_NormalMap;
    };

    void surf(Input IN,inout SurfaceOutput o)
    {
      fixed4 c = tex2D(_MainTex,IN.uv_MainTex);

      o.Albedo = c.rgb;
      o.Alpha = c.a;
      o.Normal = UnpackNormal(tex2D(_NormalMap,IN.uv_NormalMap));//(3)
    }
    ENDCG
  }
  FallBack"Diffuse"
}

看到这个代码肯定会想到,其实挺简单的嘛,事实就是如此.

(1)向外部构造两个贴图接口

(2)并行计算时,获得对象点的UV坐标,从而利用tex2D函数获得对应属性

(3)UnpackNormal时Unity包装好的使用法线贴图的函数方法,从这里就可以看出它的便捷性了,至于具体是怎么实现的,可以去查看内置的源CG文件,我就不解释了.

好的,就到这里了,下次继续了,公司要弄什么礼仪培训,真无聊,好想换家公司,跳槽是不是咱们的通病?

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值