漫反射:兰伯特和半兰伯特

本文介绍了漫反射的基础——兰伯特定律,它规定反射光线的强度与法线和光源方向的余弦值成正比。然而,兰伯特定律在光照不足的区域会导致全黑。为解决此问题,文章提出了半兰伯特光照模型,它通过平均法线和光源方向的点积来提供更平滑的明暗过渡,即使在背面也能呈现一定的细节。此外,还分享了一个Unity中的半兰伯特着色器实现示例。
摘要由CSDN通过智能技术生成

兰伯特定律(Lambert is law);

反射光线的强度与表面法线和光源方向之间夹角的余弦值成正比;

漫反射公式:C diffuse=(C light * M diffuse)max(0, <N*<L)

(入射光线 的颜色和强度 * 材质 的漫反射系数)max(0, 表面法线 *光源方向的点积)

弊端就是在模型光照无法达到的区域通常是全黑的,没有任何明暗变化。

 

半兰伯特光照模(Half Lambert);

C diffuse=(C light * M diffuse)(0.5( <N*<L)+0.5)

背面无光也可以有明暗变化

半兰伯特是没有任何物理依据的,他仅仅是一个视觉加强技术


shader "Unity Shader Book/Chapter6/HalfLambert"{
    properties{
        _Diffuse("Diffuse",Color) = (1,1,1,1)
    }
    SubShader{
            pass {
                Tags{"LightMode" = "ForwardBase"}

                CGPROGRAM
#pragma vertex vert
#pragma fragment frag

#include "Lighting.cginc"
                    fixed4 _Diffuse;

            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值