《图形编程技术学习》(二十八)Phong等简单光照明的局限性

一、Phong、Blinn等简单光照明模式的弱点

1.仅考虑光源直接照射的效果(直接光照)

2.没有考虑非光源直接照射的效果(间接光照)

二、全局光照模拟 = 直接光照 + 间接光照

光线跟踪

一个光线跟踪程序数学地确定和复制从一幅图像的光线的路线,但是方向相反(从眼睛返回原点)。真实的世界光线是从光源直接照射到我们的眼镜或者经过多次反弹再到达我们的眼镜,当我们试图用计算机模拟的时候我们就会发现这是非常困难的尤其是在大的场景下,一个光源就要经过无数次反射会有无数条光线到达我们的摄像机,计算量极大,理所当然的我们会想到,我们可以减少光线的数量以及反弹的次数啊,确实,但如果我们反过来想,光线不从光源发出而是从摄像机发出,经过多次反弹最终到达光源,我们只需要计算目前我们所看到的画面的光照,而不用考虑不会反射到我们当前的画面的光线,这样我们就极大的减少了计算量。最终光线得到颜色信息,映射在屏幕上成为像素,无数的像素组成一起就渲染成了一张图片了。

光线追踪技术原理。光线从人眼方向射出,透射在绿色球体表面,通过折射,一部分光线又被投射在红色三角形上,并同时产生自然阴影。

参考链接:https://www.jianshu.com/p/63b83ce95599

辐射度

参考链接:https://wenku.baidu.com/view/38615f895022aaea988f0f23.html

光子映射

动机

光线跟踪虽然简单、强大、易实现,但真实世界的很多东西无法很好地处理。比如:Bleeding(辉映),Caustics(焦散)——光被汇聚在一起的现象。

直到1993年,光子映射被提出,光线跟踪都无法有效解决这两个问题,而光子映射对这两个问题提供了良好的解决方案。辉映和焦散现象都是漫反射面的间接光照造成的。用光子映射方法,这类光照可以用预计算的光子图(Photon map)来估计。将光线跟踪扩展为光子映射,可以产生一种能解决任何直接或间接光照的方法。而且光子映射也能处理中间介质(participating media)情况,并且很易于做并行计算。

什么是光子映射

基于光子映射的全局光照算法有两步:第一步,从光源向场景发射光子,并在它们碰到非镜面物体时将它们保存在一个光子图(photon map)中,以建立光子图。第二步,使用统计技术从光子图中提取出场景中所有点的入射通量以及反射辐射能。光子图与场景表述是完全分离开的,这一特性使得光子映射方法能够处理很复杂的场景,包括千万个三角面片,实例化的几何体,复杂的过程式物体。

与有限元辐射度方法相比,光子映射的优势是不用Meshing。简单场景下辐射度的速度可以很快,但一旦场景复杂,辐射度速度就远远落后于光子映射了。而且光子跟踪还能处理非漫射表面及焦散线,辐射度就办不到。

和光路跟踪,双向光路跟踪及Metropolis这些能用很少的内存开销模拟所有全局光照效果的Monte Carlo光线跟踪方法相比,光子映射的最大优点就是高效,不过代价是需要额外的内存存放光子图。对大部分场景光子映射算法都很快,而且最终效果比Monte Carlo的要好,因为光子映射产生的错误大多产生的是不易引起注意低频信号,Monte Carlo的则往往是高频信号。

参考链接:https://www.cnblogs.com/starfallen/archive/2013/05/22/3091823.html

三、关于光照明模型的参考书

《Advanced Global Illumination》 《Real-time Rendering》
《Physically Based Rendering: From Theory to Implementation》
《全局光照技术:从离线到实时渲染》

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值