Games101 Path Tracing

Path Tracing

PT主要是为了解决RT中无法处理漫反射的问题。

下图分别为直接光照(无漫反射)和全局光照的结果区别。(color bleeding)

捕获JPG

solution 1 simple Monte Carlo

使用Monte Carlo公式求解渲染方程,得到以下解决方案:

捕获111JPG

随机地选择N条光线,向外射出,查看其是否可以打到光源上。

solution 2 Global Illumination

上述表达式有一个问题,当射出的光线没有打到光源,而是打到了另一个物体上时,应该怎么做?

回答是使用递归,在第二次打到的地方再次进行shade。

捕获44JPG

捕获9JPG

solution 3 Path Tracing

上述方案依旧有问题——如果每一次打出N根光线,第二次就会打出N*N根光线…光线的数量呈指数级增加,这是不可以接受的。为了解决这个问题,我们只能令N=1,也就是说,在每一个shading point,我们只随机选择一根光线打出。

捕获20JPG

solution 4 Russian Roulette(RR)

上述方案依旧有问题——对于递归而言,何时才是递归的终止条件?

这里我们采用RR的思想,我们先自己决定一个概率p,那么,在一个shading point内,有p的概率光线将会被打出,有(1-p)的概率光线将不会被打出。

由简单的概率论知识我们就可以得到:E = p*(Lo/p)+(1-p)*0 = Lo

所以可以由此得到以下伪代码:

捕获JPG

solution 5 sampling the light

由以上四个方案组成了一个正确的PT的解决方案。

但是PT还有一些问题,比如在low spp的情况下,噪声非常大。

捕获111JPG

注:spp(sample per pixel)指的是一个像素内打出的光线数。

捕获hhhJPG

如下图,绿色像素的spp为3。

上述问题主要在于,我们从shading point打出的很多光线并没有和光源相交,都被浪费掉了,所以效率很低。

为了解决这个问题,我们可以选择直接从光源采样,而不是从shading point采样。我们需要做一些积分变换。

捕获分割JPG

因此,我们最后得到的radiance主要是由两个部分组成:

  • light source(直接从光源采样,不需要RR)

  • other reflectors(间接的,需要RR)

最后得到伪代码:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值