我正在开发一个基于 optix 的项目。我需要使用渐进光子映射,因此我尝试使用样本中的渐进光子映射,但没有实现透明材料。我用谷歌搜索了很多,还试图了解其他包含透明材料的样本(例如 Glass、Tutorial、whitted)。最后,我得到了如下解决方案;
- 找到命中点(交点)(下面的h)
- 从该点生成另一条射线
- 使用新生成点的颜色
通过关注,您还可以找到该部分的代码,但我不明白为什么我会为新生成的光线(上面的第 3 部分)得到黑色(.0f,.0f,0.f)。
optix::Ray ray( h, t, rtpass_ray_type, scene_epsilon );
HitPRD refr_prd;
refr_prd.ray_depth = hit_prd.ray_depth+1;
refr_prd.importance = importance;
rtTrace( top_object, ray, refr_prd );
result += (1.0f - reflection) * refraction_color * refr_prd.attenuation;
任何想法将不胜感激。请注意,在使用函数 rtTrace() 之后, refr_prd.attenuation应该包含一些颜色。我已经提到了反射和反射颜色来帮助你更好地理解这个过程。你可以简单地忽略它们。