jjzjj

Raytracer

全部标签

c++ - Raytracer 折射错误

我正在用C++编写光线追踪器,但我遇到了一些折射问题。我正在渲染一个球体和一个地平面,球体应该会折射。然而,它看起来更像是一个球体中的一个球体:“外部”球体看起来被正确着色,但没有折射,而“内部”球体看起来像是被自身遮蔽了。这是它的外观链接:http://imgur.com/QVGkeBT.这是相关代码。//insidemainraytracefunctionif(refraction>0.0f){//thesurfaceisrefractive//calculaterefractionvectorRayrefract(intersection,objList[bestObj]->re

c++ - 为什么 raytracer 将球体渲染为椭圆?

在过去的几天里,我第一次破解了光线追踪器。然而,有一些怪癖困扰着我,我真的不知道如何解决。从一开始就存在的一个是场景中球体的形状——渲染时,它们实际上看起来像椭圆形。当然,场景中是有透视的,但最终的造型还是显得怪怪的。我附上了示例渲染图,我遇到的问题在图像左下方的反射球体上尤为明显。我真的不知道是什么原因造成的。可能是光线球相交代码,如下所示:boolSphere::intersect(Rayray,glm::vec3&hitPoint){//ComputeA,BandCcoefficientsfloata=glm::dot(ray.dir,ray.dir);floatb=2.0*gl