0
点赞
收藏
分享

微信扫一扫

基于C语言设计的全局光照明模型

绪风 2023-07-29 阅读 69

完整资料进入【数字空间】查看——搜索"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语言设计的全局光照明模型_ci

基于C语言设计的全局光照明模型_取值_02

基于C语言设计的全局光照明模型_取值_03

基于C语言设计的全局光照明模型_取值_04

基于C语言设计的全局光照明模型_取值_05

基于C语言设计的全局光照明模型_ci_06

举报

相关推荐

0 条评论