Games101 笔记 13 光线跟踪1

光栅化不容易做全局性的效果

  • 软阴影
  • 毛玻璃
  • 间接光照

Games101 笔记 13 光线跟踪1

Games101 笔记 13 光线跟踪1

基础光线追踪算法

光线

1.光线是沿着直线传播的(尽管是错的, 因为光有波动性)

2.光线和光线不会发生碰撞  (尽管是错的)

3.光线从光源出发到我们的眼镜(光路可逆, )

Games101 笔记 13 光线跟踪1

光线投射

1.从摄像机穿过成像平面打出一根光线, 到场景中,

2.和场中物体的交点和光源连接, 判断是否在阴影中.

Games101 笔记 13 光线跟踪1

 

Games101 笔记 13 光线跟踪1

Games101 笔记 13 光线跟踪1Games101 笔记 13 光线跟踪1

Recursive (Whitted-Style) Ray Tracing

Games101 笔记 13 光线跟踪1

Games101 笔记 13 光线跟踪1

Games101 笔记 13 光线跟踪1

Games101 笔记 13 光线跟踪1

Games101 笔记 13 光线跟踪1

Camera Ray / Eye Ray 也被成为 Primay ray.  之后传递的叫做Secondary rays,

往光源方向为了判断可见性的叫shadow rays

把光路上所有点的结果加到 映射屏幕上.

模拟光线的不断弹射过程

光线方程

光线是由一个起点和方向.

Games101 笔记 13 光线跟踪1

光线和球的交点

因为满足2个公式, 所以是下面一个公式

Games101 笔记 13 光线跟踪1

Games101 笔记 13 光线跟踪1

一般性的隐式表面

Games101 笔记 13 光线跟踪1

Games101 笔记 13 光线跟踪1

可以转换为光线和平面的交点, 然后如果在平面内, 再计算是否在三角形内.

Games101 笔记 13 光线跟踪1

Games101 笔记 13 光线跟踪1

光线即在光线上, 也在平面上

Games101 笔记 13 光线跟踪1

更简化的算法. 

点在三角形内, 可以用重心坐标来表示.

克拉默法则直接变换公式

Games101 笔记 13 光线跟踪1

性能挑战

Games101 笔记 13 光线跟踪1

Bounding Volumes (包围盒/ 包围体积)
用一个简单的东西把物体包起来,
如果光线碰不到包围, 更不会碰到物体
 

Games101 笔记 13 光线跟踪1

长方体是3个不同的对面组成的.

Games101 笔记 13 光线跟踪1
先考虑二维平面的,

查看3个平面上的.

最后一个是求前2个向量的交集

Games101 笔记 13 光线跟踪1

tmin, tmax 可能是-值

tmin 这组记录最大值,  tmax 记录一个最小值.

exit时间大于enter, 就是有交点.

Games101 笔记 13 光线跟踪1
如果光线离开时间小于0 

    盒子一个在光线的背后

离开时间正的, 进入时间负的

    光线肯定在盒子里

总结起来 

    当前仅当T(enter) < T(exit)  T(exit) >= 0

Games101 笔记 13 光线跟踪1
为什么要轴对齐, 

垂直相对 计算容易一些.

Games101 笔记 13 光线跟踪1