U3D Shader半兰伯特模型

兰伯特光照模型——在平面某点漫反射光的光强与该反射点的法向量和入射光角度的余弦值成正比。逐像素光照可以得到更加哦平滑的光照效果。但是,即便使用了逐像素漫反射光照,有一个问题仍然存在。在光照无法达到的区域,模型的外观通常是全黑的,没有任何明暗变化,这会使模型的背光区域看起来就像一个平面一样,失去了模型细节表现。实际上我们可以通过添加环境光来得到非全黑的效果,但即便这样仍然无法解决背光面明暗一样的缺点。为此,有一种改善技术,就是半兰伯特光照模型,是在原兰伯特光照模型的基础上进行了一个简单的修改。

片元着色器中计算漫反射光照的C#代码:

fixed halfLambert=dot(worldNormal,worldLightDir)*0.5+0.5;
fixed3 diffuse=_LightCorlor0.rgb*_Diffuse.rgb*halfLambert;

fixed3 color=ambient+diffuse;

return fixed4(color,1.0);

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值