Games101 笔记 13 光线跟踪1
光栅化不容易做全局性的效果
- 软阴影
- 毛玻璃
- 间接光照
基础光线追踪算法
光线
1.光线是沿着直线传播的(尽管是错的, 因为光有波动性)
2.光线和光线不会发生碰撞 (尽管是错的)
3.光线从光源出发到我们的眼镜(光路可逆, )
光线投射
1.从摄像机穿过成像平面打出一根光线, 到场景中,
2.和场中物体的交点和光源连接, 判断是否在阴影中.
Recursive (Whitted-Style) Ray Tracing
Camera Ray / Eye Ray 也被成为 Primay ray. 之后传递的叫做Secondary rays,
往光源方向为了判断可见性的叫shadow rays
把光路上所有点的结果加到 映射屏幕上.
模拟光线的不断弹射过程
光线方程
光线是由一个起点和方向.
光线和球的交点
因为满足2个公式, 所以是下面一个公式
一般性的隐式表面
可以转换为光线和平面的交点, 然后如果在平面内, 再计算是否在三角形内.
光线即在光线上, 也在平面上
更简化的算法.
点在三角形内, 可以用重心坐标来表示.
克拉默法则直接变换公式
性能挑战
Bounding Volumes (包围盒/ 包围体积)
用一个简单的东西把物体包起来,
如果光线碰不到包围, 更不会碰到物体
长方体是3个不同的对面组成的.
先考虑二维平面的,
查看3个平面上的.
最后一个是求前2个向量的交集
tmin, tmax 可能是-值
tmin 这组记录最大值, tmax 记录一个最小值.
exit时间大于enter, 就是有交点.
如果光线离开时间小于0
盒子一个在光线的背后
离开时间正的, 进入时间负的
光线肯定在盒子里
总结起来
当前仅当T(enter) < T(exit) T(exit) >= 0
为什么要轴对齐,
垂直相对 计算容易一些.