c++ 多目标像素点漫反射着色的计算错误

ilmyapht  于 2023-04-08  发布在  其他
关注(0)|答案(1)|浏览(103)

我正在做一个光线跟踪器,我添加了漫反射着色。实际上,它是工作的,但如果有多个对象在一个像素它不会给予正确的结果。然而,如果我删除一个对象,渲染图像,它给出正确的结果。顺便说一下,球体是前面的网格我检查了它。我的意思是

它只添加环境光,因为N.L为负,漫反射颜色函数返回零。
我能做什么?我是说这是光线追踪的常见错误吗?

kkih6yb8

kkih6yb81#

您可能需要检查光线与球体和平面相交的部分,并返回最近的命中。
对于底部球体上的黑色像素,应发生以下情况:

  • 计算与球体的交集,返回距离为d0的命中
  • 计算与平面的相交,返回距离为d1的命中
  • whichever distance is smaller(d0 or d1)is the hit you want to use for shading your pixel. so among your hits,find the one with minimum distance. if the distance is infinity then return the background color(black in your case)

相关问题