当前位置: 代码迷 >> 综合 >> GAMES101(5)光线追踪
  详细解决方案

GAMES101(5)光线追踪

热度:14   发布时间:2023-11-25 21:48:30.0

光栅化的问题

  • 软阴影
  • glossy反射
  • 间接光照
  • 速度快但是质量较低

光线追踪问题

  • 光追更加准确但是很慢
  • 往往是离线的生成图像,而光栅化是实时的
  • 光追的假设:光线延直线传播、光线不会发生碰撞、光线从光源出发到达人眼(光路可逆性)。

Whitted-Style光线追踪

  • 几个shadow rays的着色结果都会加回到image plane上
    在这里插入图片描述
  • 光线方程表示:
    在这里插入图片描述
  • 求光线与隐式表面的交点:将光线方程与隐式表面表达式联立,然后解出t,t必须为实数并且t>=0。
  • 求光线与显示表面的交点:求光线与三角形面的交点
    在这里插入图片描述
  • 求光线和三角形交点:首先求三角形所在平面与光线的交点,然后再判定光线与三角形的交点。
  • 平面上的点的定义方式(点法式):
    在这里插入图片描述
  • 计算光线与平面交点:
    在这里插入图片描述
  • 另一种光线与三角形求教的方法:
    在这里插入图片描述
    最后验证t>0,b1>0,b2>0,1-b1-b2>0。
  • 加速光线和表面求交:包围盒
  • 求包围盒与光线交点方法
    在这里插入图片描述
    首先我们需要检查t是否为正,如果t_exit<0说明盒子在光线背后,如果t_exit>=0&&t_enter<0光线在盒子里面。
    如果光线和AABB盒子有交点那么t_enter<t_exit&&t_exit>=0
  • KD-Tree:(所有的三角形都存储在叶子节点上)
    在这里插入图片描述
  • KT-Tree的问题:很难判断包围盒与哪些三角形有交集、一个物体有可能存在多个叶子节点里
  • 物体划分(BVH)
    在这里插入图片描述
  • BVH的问题:如何将让两个子集之间的交叠尽可能的小?
  • 如何划分一个节点?(1.总是划分最长的那个轴 2.在第(中位数)个物体的位置划分)
    在这里插入图片描述
  • 空间划分与物体划分
    在这里插入图片描述

辐射度量学

在这里插入图片描述

  • Radiant Intensity:单位立体角上的功率
    在这里插入图片描述
  • Irradiance:单位面积上的功率(面与光线垂直)
    在这里插入图片描述
  • Radiance
    在这里插入图片描述
  • Radiance与Irradiance和Intensity的关系
    在这里插入图片描述
  • 各个方向上的Radiance之和等于Irradiance。在这里插入图片描述

BRDF(Bidirectional Reflectance Distribution Function )

在这里插入图片描述

  • 反射方程:
    在这里插入图片描述
  • 渲染方程:(加上了自发光)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

蒙特卡洛积分

  • 用一个长方形的面积近似当作积分结果,多次采样求平均得到最终结果。f(x)是求积分的函数,p(x)是采样的函数
    在这里插入图片描述

Whitted-Style 光线追踪的问题

  • 无法判断Glossy材质光线反射的方向。
  • 漫反射材质之间没有反射。

路径追踪

  • 只考虑直接光照
    在这里插入图片描述
  • 支持全局光照
    在这里插入图片描述
  • 上述算法的问题:(1)光线数量增长会爆炸增长(解决方法:每个着色点仅打出一条光线,N=1就叫路径追踪),(2)递归算法没有停止条件。
    在这里插入图片描述
    但是上述算法会产生噪声,因此每个像素进行多次路径追踪求平均
    在这里插入图片描述
    让递归停止的方法:俄罗斯轮盘赌(间接光照)
    在这里插入图片描述
    在这里插入图片描述
  • 路径追踪问题:低效(低效原因:有太多光线不能打到光源上)
    在这里插入图片描述
  • 解决方法:在光源上采样,把渲染方程写成对光源的积分。
    在这里插入图片描述
    在这里插入图片描述