shader学习之路(1)- half lambert

本文介绍了Half Lambert光照模型,一种提高物体在背光时亮度的算法,常见于游戏开发。通过Unity3D自定义surface shader实现,详细讲解了关键代码段和效果对比,帮助理解其工作原理。
摘要由CSDN通过智能技术生成
在学习这个shader之前先提个常用概念,即光照模型,LightModel(光照模型)即是对于物体怎么对打在其上的光做出视觉反应的数学模型,意即表达物体对光反应产生的视觉效果与入射光、物体表面属性等数值相关联的数学表达。
大致了解了光照模型的概念,接下来介绍下今天的主角,Half Lambert模型,该模型是Valve在开发经典游戏《Half-Life(半衰期)》(半条命这个译名真是后无古人的误翻啊……)是发明的,在以前的游戏中,一旦模型背对着光源,模型表面的亮度会立刻降低,使得整个模型显得平面化,毕竟游戏世界并非像现实中有各种漫散射光能照亮背光的一面,所以half-lambert算法提高了物体在背对光源时的亮度,由于其并非根据真实物理推算出来的结果,而仅仅是一种视觉感受的提升,所以其实现方式并不复杂,很多shader入门书籍都介绍过这种算法,不必担心完全看不懂。

未启用/启用half-lambert算法(右侧为启用)
现在我们来看看怎么实现这个算法,首先因为vs对shader关键字高亮支持并不太好(联网工具包中的shader高亮插件其实还行),所以可以用引擎自带的mono dev或者sublime text来编写Cg文件,这个看大家个人喜好了,有空我会介绍下vs和sublime text对shader关键字高亮的设置。
打开unity3d,在project栏中的Assets下建立Materials Shader两个文件夹(良好的资源管理是开发工程的必要前提),在shader中创建一个surface shader并将之命名为halfLambert。

打开shader文件,可以看到默认的属性栏Properties,这下面的变量不仅要在下面的代码中使用,同时也能在引擎的inspector中进行调整。

现在我们将其修改为如下属性:
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值