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

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

本讲内容

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

复习:渲染方程

Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第1张图片

复习:关于概率

Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第2张图片

Monte Carlo Integration(蒙特卡洛积分)

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

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(全局光照内的效果)
    Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第7张图片
Whited-Style Ray Tracing是错的
  • 但是渲染方程是对的,解方程有两个拦路虎:
    • 积分
    • 而且递归定义

使用蒙特卡罗方法试图解渲染方程

  • 问题:解一个点的直接光照

  • 上面有面光源,还有摄像头,箱子
    Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第8张图片

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

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

  • 就是解半球不同方向的积分
    Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第9张图片

  • 要考虑f(x)和pdf都是多少
    Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第10张图片

  • 我们已经可以把方程写成蒙特卡洛积分的形式
    Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第11张图片

  • 积分怎么写出来?(直接光照情况)
    Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第12张图片

  • 更进一步,引入间接光照,一种简单的想法——相当于在p点看q点
    Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第13张图片

  • 算法补充(蓝色字)递归了家人们
    Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第14张图片

  • 然而问题并没有被解决

    • 问题1:这样光线的数量会爆炸(除了n=1的时候)!
      Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第15张图片
  • 再改!用一根光线的说! 但是噪声太大了!(以后说咋办)
    Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第16张图片

  • 形成了一条连接视点与光源的路径,算法(也算是有蒙特卡洛积分,对于每个像素):
    Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第17张图片

  • 上图解决了问题一

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

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

    • 打了(P)对其结果返回值Lo除以P
    • 不大(1-P)结果就是0
  • 通过这种方式Lo就是期望!
    Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第18张图片

  • 轮盘赌后的代码,加了个P_RR:
    Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第19张图片

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

    • 效果受到SPP的制约
      Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第20张图片
  • 问题在于对于不同大小的光源,每个着色点打到光源的光线数目看运气,很多光线浪费了!

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

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

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

  • 要把渲染方程写成在光源上的积分!
    Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第21张图片

  • 可以,要知道dω和dA的关系,这很简单,因为我们定义过立体角,把dA向单位球上投影就行!如下式:
    Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第22张图片

  • 更进一步,重写渲染方程:
    Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第23张图片

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

    1. 光源(无需RR)
    2. 非光滑(需要RR)
  • 写出来!
    Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第24张图片

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

    • 要是光源和着色点直接有别的物体呢?要判断!
    • 取光源和着色点连线看有物体吗?
  • 路径追踪算法就这样了!
    Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第25张图片

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

遗留的一些问题,小东西

  • 把path tracing写对非常难!

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

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

  • 早期与当今概念区别:
    Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第26张图片

一些没说的话题
  • 具体咋采样啊?
  • 蒙特卡洛积分采用啥样的pdf最好呢
  • 随机数很重要吗?
    Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第27张图片
  • 能不能结合随机采样和采样光源?
  • 为什么平均起来就是像素的radiance?是否需要加权平均,还是简单平均?
  • 算出来的radiance是颜色吗,这是咋做的?
  • 路径追踪算不算入门?算啊!敬畏科学吧!
    Games101笔记——Lecture 16: Ray Tracing 4(Monte Carlo Path Tracing)_第28张图片

好好学习,敬畏科学!

你可能感兴趣的:(Games101,概率论,图形学)