我正在raytracer
为学校建立一个 C 语言。昨天我成功实现了我的第一次递归折射,但是我对结果不是很满意。带有 2 个反光球的我的照片raytracer
我发现水球看起来不像水球,所以如果你对我接下来应该做什么有一些建议,请告诉我,从我读到的内容:
啤酒法
使阴影的黑暗取决于光线穿过折射材料的时间(我想我可以使用啤酒定律)
我怀疑这可能来自我的实现,这就是我所做的:
首先我设置一个这样的材料:
-DIFFUSE 1
-SPECULAR 10
-REFLEXION 0.1
-REFRACTION 0.9
-IOR 1.33
这是我的水料的特点。
由于我使用菲涅耳来计算我应该使用多少透射和折射颜色来计算我的最终颜色,所以我想知道我的反射和折射系数是否不应该是简单的布尔值。现在我正在使用它们来考虑我应该使用多少反射和折射颜色,但是因为我也在使用菲涅尔,所以不是太多了吗?我对这部分有点困惑,很多大学的很多 PDF 都变红了,但是他们没有涵盖精确的混合,他们只是告诉我们使用菲涅尔来选择我们应该使用多少反射或透射光,但是当他们放了伪代码,您可以阅读它们递归地调用它们的函数: if (material->is_reflective) if (material->is_refractive)