zoukankan      html  css  js  c++  java
  • Unity3D ShaderLab Half Lambert光照模型

    Half Lambert光照模型

    说到Half Lambert ,就不得不说反恐精英了,在制作反恐精英的过程中,为了防止物体的背面光丢失而显得太过平面化,就用了这个称之为half lambert的技术

    。但是这个half lambert的光照模型是没有任何特殊物理原理,仅仅是增强玩家视觉的一个简单的光照模型例子。

    具体的介绍可以参见Valvewiki

    https://developer.valvesoftware.com/wiki/Half_Lambert

     

    左边是普通的Lambert光照模型效果,右边就是我们说到的HalfLambert

     

    通过点乘的曲线图,我们可以看到使用HalfLambert的光照模型值是要高一半的。

    那么我们怎么来实现呢,下面就动手吧。基于【Unity3D ShaderLab 自定义光照模型】的BasicMyCusDiffuse代码我们继续改。

     

    以上的31行下面添加关键代码>>float halfLight=difLight*0.5+0.5;

    再把col.rgb的赋值处的difLight替换为halfLight。这就完成了。

     

    下面是效果图,场景的灯光为0.2。我们可以看出左侧使用halfLambert光照模型的方块背光面没有右侧的默认Lambert光照模型那么暗。

     

     

    总结而来,Half Lambert的实现原理就是把漫反射的光照值范围分成2半,然后再加上固定的0.5。那么我们通过推算,光照值为0half算得值依然为0.5,而普通的lambert就会是0

    所以有了上面的HalfLambert光照曲线图。Blue的曲线总是比Red曲线要高出一半。这就保证了在光照很差的场景中,我们依然不会看不清物体的背光面。

  • 相关阅读:
    学习使用linux下tags文件
    uboot常用命令详解
    U-boot中TFTP 解释
    eth0: ERROR while getting interface flags: No such device 没有eth0 有其他的eth
    取消挂载 umount 时出现的 “Device is busy”
    Linux的log日志功能
    oracle的安装
    SOA架构设计分析
    立方体模型
    质量属性的六个常见属性场景(淘宝网)
  • 原文地址:https://www.cnblogs.com/2Yous/p/4206959.html
Copyright © 2011-2022 走看看