【发布时间】:2019-10-07 20:54:17
【问题描述】:
我正在尝试在 C++ 中实现一个简单的基于 CPU 的 Raytracer。 但是在场景中实现反射时,我得到了一些荒谬的结果,反射并没有覆盖我试图反射的整个对象。我已附上图片以供参考。
这是我正在使用的反射算法。
//reflected ray
Vec3 ref =(dir - 2*((dir.dot(Normal))*Normal)).normalized();
Vec3 reflect_orig;
if(depth < MAX_DEPTH && figurelist[figureHit]->reflectness>0.0f ){
if(ref.dot(Normal)<0.0f){
reflect_orig = p0 - (Normal*0.001f);
}
else{
reflect_orig = p0 + (Normal*1e-3f);
}
reflectcolour = reflectcolour+ray_trace(reflect_orig,ref,depth+1);
return Pixelcolour = reflectcolour;
}
else{
Pixelcolour = diffuse+specular;
}
其中“dir”是光线的方向。
【问题讨论】:
标签: c++ graphics 3d raytracing