图形学基础 | 高级光照 Blinn-Phong

OpenGL学习脚印:Blinn-Phong光照模型
Advanced Lighting

Phong不能处理的情况

Phong模型在计算镜面光系数为:

float   specFactor = pow(max(dot(reflectDir, viewDir), 0.0), 32); // 32为镜面高光系数

高光发射的值由 反射向量和观察向量决定. 当两者的夹角θ超过90时,截断为0.0.就没有高光反射分量了.
因此Phong模型能处理的是下面的左图中(θ≤90)的情况
而对于右图中(θ>90)的情况则镜面光成分计算为0.
在这里插入图片描述
而右图的这种情况实际上是存在的,将镜面光成分取为0,没有很好地体现实际光照情况。

Blinn-Phong

在这里插入图片描述
Blinn-Phong模型不再依赖于反射向量
而是采用了所谓的 半程向量(Halfway Vector),即光线与视线夹角一半方向上的一个单位向量。当半程向量与法线向量越接近时,镜面光分量就越大。
在这里插入图片描述
当观察向量与反射向量越接近,那么半角向量与法向量N越接近,观察者看到的镜面光成分越强。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值