Forum Replies Created
-
AuthorPosts
-
解决什么了?
在没有间接光照的表情下,光源和整个天花板共面,当着色点在天花板或者光源时,从光源采样,此时着色点和光源采样点的连线就在天花板这个平面上了,和光源法线垂直,所以点乘之后为0
既然天花板除光源以外的部分都可以被间接光照打亮,为什么光源部分就不会受到间接光照的影响呢?
天花板全黑就对了啊,光源在天花板上,直接光照情况下,天花板应该就是全黑的
中间变亮是间接光照导致的,他应该没显示光源而已
那是因为有间接光照,光源又被间接光照照亮,其实光源应该更亮的,你可以判断一下被ray击中的物体是不是光源,是光源就处理一下。如果你想看光源有没有颜色,你可以把间接光照先关掉。
假如ray直接打到光源,那么p点就是光源了,再sample一个光线的话,这个光线和光源那个面的法线会一直垂直,所以你的直接光照dot(-ws, NN)等于0,光源就会是黑的了。
This post has received 1 vote up.我的生成结果非常亮
我也用的openMP,话说你512,ssp设置为32,要多久啊,我差不多54分钟
创建一个新的Intersaction对象,然后作为samplelight函数其中一个参数,你仔细看一下samplelight内部怎么执行的就清楚了
p的话,你用intersection(ray)就可以得到了。
samplelight可以得到采样的光线和对应概率密度函数,前提你需要创建一个Intersection类型的对象和float型的pdf_light,传到函数里,函数用来赋值,这样就可以得到了采样的光线和对应的pdf了。
block的话,你从上面采样的位置向p发一个光线,看得到的交点和p是不是一个点(这里牵涉到一个精度问题,这里可以思考一下,为什么存在精度的问题)。
你这样的本质,不就是把分辨率提高了吗?
This post has received 1 vote down.eye_fov是角度,tan函数接受的是弧度。
我之前也出现过这个问题,我测试了代码的其他地方,发现rasterizer.cpp中//Viewport transformation注释下的vert.z() = vert.z() * f1 + f2;
我反正把这句话注释掉,然后在与z-buffer判断前把z取反变成正的,这是z越小,离镜头就越近,就正确了。我的那个绿色和蓝色交界的地方也有一个明显的黑线
你把r和t输出出来看一下是多少?
tan里面应该是弧度,不是角度
我从清华云盘下载虚拟机镜像失败很多次,能不能再放一个百度网盘的链接呢?
-
AuthorPosts