基于图形学中渲染的光线追踪算法综述
abstract:
Ray tracing is a method which could approximates real-world light sources. With the rapid development of graphic cards , ray tracing is become p
光线追踪是一种可以模拟出近似与现实光照的方法,相较于传统光栅化它消耗的算力更为巨大但模拟的光源也更接近于现实。 近些年来随着硬件发展的迅速,计算机的算力已经可以允许我们大规模使用复杂的光线追踪进行渲染。把光线追踪分为。。。。 本文列举一些当前比较主流的光线追踪算法,并且详细描述了不同方法的优缺点与对整个CG领域的贡献。并在结尾总结了光线追踪的未来发展趋势。
introduction:
To compare it with rasterization , it cost more time to render.
关于现实生活中的光线得到历史。。
关于ray tarcing 的历史 。。最早的ray tracing 模型 LINKS-1 Computer 的简要介绍。。
目前主流的ray tracing model 介绍 : whitted-style。。 通常ray tracing 需要大量的算力进行计算。 但我们可以用一些加速方法。 比如BVH 。。。。
总的来说ray tracing 的基本流程是。。 我们首先有一个model 首先选用合适的加速方法。。 然后进行光追渲染。。。
light in CG VS light in real life
尽管光追能做到拟真是世界光源,但光线追踪和物理上光的反射不太一样,在cg中我们这么定义:
- 光沿直线传播
- 光线相交互不影响
- 光路可逆,光线传入眼睛可以当作眼睛发出光线。
但现实中的光源特点:
- 接近于无限反射。直到电磁波消耗殆尽。
- 现实中的光是由一种电磁波。
- 不可能被计算机模拟。
光栅化 VS 光线追踪
因为光栅化没法做到很真实的物理效果,所以我们尝试使用光线追踪, 因为光追会显现出来更加真实的物理效果,反之会消耗更多的时间去渲染。
- 光栅化只能反射2次。但光线追踪可以反射任意多次。
第一种类别的model (whitted-style)
(在这里应该写出来这种model 属于那种类别。 对此类别进行分析 。 距离处whitted-style的优缺点)
就是将单一的pinhole camera model 进行递归 ,从而模拟出光线多次反射的效果 ,命名为recurive ray tracing 。但需要注意以下两点:
- 光线强度会随着反射次数的增加而逐渐衰减。
- 每个三角形的光都有可能是由很多个光源复合而成的。这里就涉及到了权重值问题,比如黄色光和红色光同时射入,这个三角形应该被渲染成橘色。但由于入射光的亮度可能不同,橘色的深浅也有不同。通过不断的累加颜色最终得到像素应该呈现的颜色。
优点是:
缺点是:
第二种类别的model ():
关于model的加速结构 :
BVM:
Oct-Tree (八叉树): 有不同的分法。比如不停的划分,直到其中有一块包围盒不包含物品位置。
KD-Tree(二叉树): 拼多多树,先横砍一刀沿物品切线。再每个包围盒竖直砍一刀。 目的是保持包围盒的均匀。三纬xyzxyz不断重复切。
BSP-Tree(二叉树): 也是不断砍。但是不好计算。之前我们提到的包围盒AABB就是因为沿着xyz轴的包围盒好被计算。
其他加速结构:
应用辐射度量学来增强光线追踪的真实性:
\
神经网络用于 ray tracing 加速
面临问题: 算法过于复杂。无法解决 。但我们可以引入机器学习model来加速