Forum Replies Created
-
AuthorPosts
-
如果上一帧的颜色被clamp到mean周围的一个过于小的范围内的话,结果就会偏模糊,因为求mean本身就相当于在filter场景。
可以试着调高k或者用标准差:mean ± k * sqrt(Variance)This post has received 1 vote up.1. 无论u是cosTheta还是sinTheta,Eavg的式子都可以写成2 * \integrate{ E(u) * u du },所以采用课程的定义或者作业框架的定义应该都可以
2. 我也认为框架给的求Eavg这部分代码有点奇怪,我是直接Eu*u*2了,最终得到的结果比参考图要亮,不知道LZ是不是也偏亮。
而且个人感觉作业文档的Eavg参考图好像是错的:Eavg的图整体要比Emu的图暗一些(把两张图并排对比,roughness大的部分尤为明显)。// 编辑:要在主楼里回复的..搞错辽….
同样有这个疑问,101课件的Direct Illumination图也是同一张,灯笼也是亮着的。
帮顶一下求个高人解答。
给lz点赞,之前做出了和作业文档一样的效果就以为没问题了,但测试skybox那个envmap的时候发现了这个问题,来论坛上一看直接找到答案了233
感觉这个还是个蛮严重的bug,直接导致light vector的预计算全错,我截图还得重截一遍 :<
1. R0是一个变量,但是它已经不在积分内了。打表是对积分值的预计算,所以R0不参与打表。
2. F项被引入了积分,但是BRDF项fr本身就带F项,上下消掉了,积分式里面最后并没有F项。这里闫老师上课有提过一句,写成这种形式只是为了帮助同学们理解“R0是如何被提出积分项的”。感谢助教回答!我自己也做了些实验确认了使用0.5时才是均匀采样,这里贴一下实验过程和结果供其他人参考。
使用PCF(fiterSize均为0.05)的情况下可视化Visibility,分别使用0.5、0.75参数得到以下两幅图:
可以看到使用0.75时,离圆心越近采样越密集,相当于filterSize偏小所以边缘更清晰。
如果我们做一下重要性采样,对采样值除以概率密度p(x),应该就会得到和使用0.5时一样的结果。我使用如下代码求概率密度p(x)并对采样值做加权:...... float r = sqrt(pow(poissonDisk[i].x , 2.0) + pow(poissonDisk[i].y , 2.0)); float px = 2.0 / (3.0 * PI * pow(r, 2.0 / 3.0)); if(coords.z > 1e-2 + unpack(texture2D(shadowMap, coords.xy + filterSize * poissonDisk[i]))) occluded += 1.0 / (PI * px * float(PCF_NUM_SAMPLES)) ; .....
得到下面的结果:
可以看到结果确实和使用0.5时一样,从p(x)就可以看出使用0.75时并不是均匀采样。所以理论上使用0.75参数的时候如果不做重要性采样加权,得到的结果是错的、有偏的,虽然这次作业中影响并不大,但也值得注意。
- This reply was modified 3 years, 7 months ago by Ryushinn.
分得清楚一些的话应该是:Light只提供VP的接口,在Material的Constructor里面自行乘上M。
但也可以把CalcLightMVP理解成“计算某个物体在该光源的下的MVP矩阵”,个人代码习惯而已没对错之分。1. 用cubemap
2. 用单个视锥体框住你希望投射阴影的物体 -
AuthorPosts