Home Forums Games202-高质量实时渲染 关于作业1中泊松采样的疑惑 Reply To: 关于作业1中泊松采样的疑惑

#8001 Score: 0
Ryushinn
Participant
2 pts

感谢助教回答!我自己也做了些实验确认了使用0.5时才是均匀采样,这里贴一下实验过程和结果供其他人参考。

使用PCF(fiterSize均为0.05)的情况下可视化Visibility,分别使用0.5、0.75参数得到以下两幅图:

参数为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.75+重要性采样

可以看到结果确实和使用0.5时一样,从p(x)就可以看出使用0.75时并不是均匀采样。所以理论上使用0.75参数的时候如果不做重要性采样加权,得到的结果是错的、有偏的,虽然这次作业中影响并不大,但也值得注意。

  • This reply was modified 3 years ago by Ryushinn.