目录
④ 对每个交点进行阴影计算, 结果都要考虑进同一个像素的着色
t值有两个限制: 1.必须是实数 2.正数(光线是正方向的)
第十三节课 : Ray tracing(光线追踪 1)
为什么要使用光线追踪?
光栅化不能很好地处理全局效应
-软阴影
-特别是当光线反弹不止一次时
光栅化速度快, 但是质量相对较低
光线追踪是准确的,符合物理. 但是非常慢
光栅化: 实时 , 光线追踪: 离线的
一核CPU需要10K小时,在生产中渲染一帧
为了使用光线追踪, 提出三个关于光线的假设 :
① 光以直线传播(尽管这是错误的)
② 如果光线交叉,不会相互碰撞(尽管这仍然是错误的)
③ 光线从光源传播到眼睛(但在光路可逆性作用下,物理学是不变的),因此可以假设眼睛发出感知光的线,经过各种反射最终到达光源.
光线追踪类似于 “人的眼睛发出感觉光线进入世界”
下图是以前错误的结论
光线追踪的步骤:
① 生成一个在摄像机面前的图, 这个图由很多像素组成, 从摄像机出发, 经过某个指定像素, 射向场景中的某个点.
② 从场景中某个点射向点光源一条射线, 通过是否有遮挡, 可以判断该点是否有阴影
光线追踪 -- 产生眼睛光线
(假设为针孔摄像机, 没有体积)
第一条光线的描述如下:
① 眼睛光线从眼睛出发, 并且穿过像素
② 穿过像素后, 求眼睛光线与场景的最近交点.
③ 产生交点后, 就遮挡了这条眼睛光线后面可能会有的更多交点
第二条光线描述如下:
① 连接交点与点光源, 检测是否有物体阻挡, 也就是检测交点是否为点光源所见.
② 根据该点的法线, 入射角度和出射角度执行阴影计算, 结果写入先前所经过像素的颜色.
递归的(Whitted-Style)光线追踪
Whitted-style假设反射都是完美反射
下面该球为玻璃球, 可折射可反射.
光线路径步骤如下: