完整资料进入【数字空间】查看——搜索"writebug"
Part 1 Whitted-Style Ray Tracing
Step 0. 算法流程
为了渲染出一张图片,RayTrace()计算了给定像素点的色彩取值。
根据光路可逆原理,可以从人眼作为出发点,沿着指向该pixel的某一点的方向发出一条ray。
Step1:射线求交 这条ray会碰到一个物体(墙壁、球、灯),所以计算这条ray和所有物体最近的交点,取交点距离ray发射点最近的点,即为这个ray第一次碰到的物体,同时求出交点和平面法向量。
Step2:判断是否被直接光照,做局部Phong Shading 如果该点被一些光线直接照射到(计算该点到光源连线间是否有物体遮挡),可以对所有照射到该点的光线,对该交点进行Bling Phong模型的局部光照模型计算其直接光照的影响。
Step3:递归求间接光照 同时光在该交点还会发生折射和反射(作业中未考虑折射,故后面只考虑反射),受到反射的间接光照影响,等于对从该交点发出沿反射光路径走出的ray,重新到Step1继续求。但是这一步反射的光在该交点会发生能量衰减,这和反射系数相关,然后才照射到人眼中,所以之后计算的间接光照需要累乘一个weight。
考虑递归10次能量衰减的就几乎很小了,故循环次数设为10。
这是Whitted-Style RayTracing实现的主要流程。
标签:照射到,反射,C语言,该点,交点,照明,全局,光照,ray From: https://blog.51cto.com/u_16075443/6892790