Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)

Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)

本讲内容

  • 简要复习上节课
  • 蒙特卡洛积分
  • 路径最终

复习:渲染方程

渲染方程

复习:关于概率

关于概率

Monte Carlo Integration(蒙特卡洛积分)

  • 为了什么而提出?
    • 给任意函数计算其从a到b的定积分
    • 通常对于比较复杂的函数,是一种数值方法
    • 黎曼积分:认为竖直每份是微小长方形
    • 蒙特卡洛积分:在a和b直接随机取数直接近似一个长方形,如此采样许多次然后取平均——在积分域内不断采样,将长方形面积求平均
    • 蒙特卡洛积分具体表示
      蒙特卡洛积分具体表示
    • 举例说明
      在这里插入图片描述
      在这里插入图片描述
    • 蒙特卡洛积分有一种特殊情况,就是随机变量是均匀采样
    • 最后得到蒙特卡洛积分(只需要知道最后采样区间的PDF是多少就可以),注意:
      • N越大,结果越准
      • 定义在x上的积分,得采样x,别的不行
        在这里插入图片描述

Path Tracing

Motivation: Whited-Style Ray Tracing
  • Whited-Style ray tracing
    • 不断弹射光线(镜面反射/折射)
    • 在粗糙表面漫反射
  • 这么做对吗:
  • Path Tracing为改进Whited-Style ray tracing的问题而提出
Whited-Style Ray Tracing的问题
  1. 对于glossy(相比mirror没那么光滑)表面的效果不对,不应沿着镜面反射
  2. 对于漫反射,打到diffuse物体就停了,不继续打了,考虑不到漫反射物体之间的光照,下图中右图物体左面发红的现象被称为color bleeding(全局光照内的效果)
    color bleeding
Whited-Style Ray Tracing是错的
  • 但是渲染方程是对的,解方程有两个拦路虎:
    • 积分
    • 而且递归定义
使用蒙特卡罗方法试图解渲染方程
  • 问题:解一个点的直接光照

  • 上面有面光源,还有摄像头,箱子
    解一个点的直接光照

  • 忽略渲染方程的发光项,不再区分渲染方程和反射方程

  • 直接光照说明这个光只能是光源的

  • 就是解半球不同方向的积分
    在这里插入图片描述

  • 要考虑f(x)和pdf都是多少
    在这里插入图片描述

  • 我们已经可以把方程写成蒙特卡洛积分的形式
    在这里插入图片描述

  • 积分怎么写出来?(直接光照情况)
    在这里插入图片描述

  • 更进一步,引入间接光照,一种简单的想法——相当于在p点看q点
    在这里插入图片描述

  • 算法补充(蓝色字)递归了家人们
    在这里插入图片描述

  • 然而问题并没有被解决

    • 问题1:这样光线的数量会爆炸(除了n=1的时候)!
      在这里插入图片描述
  • 再改!用一根光线的说! 但是噪声太大了!(以后说咋办)
    在这里插入图片描述

  • 形成了一条连接视点与光源的路径,算法(也算是有蒙特卡洛积分,对于每个像素):
    在这里插入图片描述

  • 上图解决了问题一

  • 还有一个问题:递归的终止条件呢?算法停不了了!虽然现实世界也不会停,但是也不能限制弹射次数,这会导致能量损失。

  • 解决新的问题的方法:Russian Roulette(RR)——俄罗斯轮盘赌
    按概率停止弹射,给自己定一个概率,以一定的概率P打光线,

    • 打了(P)对其结果返回值Lo除以P
    • 不大(1-P)结果就是0
  • 通过这种方式Lo就是期望!
    在这里插入图片描述

  • 轮盘赌后的代码,加了个P_RR:
    在这里插入图片描述

  • 目前算法已经正确了!但是不够高效!

    • 效果受到SPP的制约
      在这里插入图片描述
  • 问题在于对于不同大小的光源,每个着色点打到光源的光线数目看运气,很多光线浪费了!

  • 是否有不浪费光线的采样方法?

  • 开始难了,对于着色点在光源上进行采样!

  • 但是渲染方程不定义在光源上!不符合蒙特卡洛的原则了!

  • 要把渲染方程写成在光源上的积分!
    在这里插入图片描述

  • 可以,要知道dω和dA的关系,这很简单,因为我们定义过立体角,把dA向单位球上投影就行!如下式:
    在这里插入图片描述

  • 更进一步,重写渲染方程:
    在这里插入图片描述

  • 之前我们是盲目地在着色点去采样,现在是直接对光源进行采样,radiance来自于两部分

    1. 光源(无需RR)
    2. 非光滑(需要RR)
  • 写出来!
    在这里插入图片描述

  • 所有问题已经解决,除了还有一个小问题!

    • 要是光源和着色点直接有别的物体呢?要判断!
    • 取光源和着色点连线看有物体吗?
  • 路径追踪算法就这样了!
    在这里插入图片描述

  • 点光源很难,先不说了,可以做成很小的面积光源

遗留的一些问题,小东西
  • 把path tracing写对非常难!

  • 学习可以帮助我们深入理解!

  • 这还算入门吗?非常算!

  • 早期与当今概念区别:
    在这里插入图片描述

一些没说的话题
  • 具体咋采样啊?
  • 蒙特卡洛积分采用啥样的pdf最好呢
  • 随机数很重要吗?
    在这里插入图片描述
  • 能不能结合随机采样和采样光源?
  • 为什么平均起来就是像素的radiance?是否需要加权平均,还是简单平均?
  • 算出来的radiance是颜色吗,这是咋做的?
  • 路径追踪算不算入门?算啊!敬畏科学吧!
    在这里插入图片描述

好好学习,敬畏科学!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值