我写了一个光线跟踪程序,除了我不确定遍历光线树的算法外,其他所有功能似乎都在起作用。在每个碰撞点处,程序都会存储对象的颜色,其反射率指数以及该点处的光强度(镜面和漫反射,环境是一个常数)。有人可以帮我解释一下我在穿越射线树时如何准确地将物体的颜色和光强度结合在一起吗?
最佳答案
从Nvidia Developer Zone:
surfaceColor =发光+环境+漫反射+镜面反射
这里,
发光= Ke
哪里:
Ke是材料的发光颜色。
环境= Ka x globalAmbient
哪里:
Ka是材料的环境反射率,
globalAmbient是入射的环境光的颜色。
漫射= Kd x lightColor x max(N·L,0)
哪里:
Kd是材料的漫反射颜色,
lightColor是入射的漫射光的颜色,
N是归一化的表面法线,
L是朝向光源的归一化矢量,并且
P是阴影点。
镜面反射= Ks x lightColor x面向x(max(N·H,0))^光泽
哪里:
Ks是材料的镜面反射颜色,
lightColor是入射的镜面反射光的颜色,
N是归一化的表面法线,
V是朝向视点的归一化向量,
L是朝向光源的归一化矢量,
H是介于V和L之间的归一化向量,
P是阴影点,并且
如果N·L大于0,则对数为1,否则为0。