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

Viewing 1 reply thread
  • Author
    Posts
    • #7992 Score: 0
      Ryushinn
      Participant
      2 pts

      作业1中poissonDiskSamples函数里的采样点生成代码如下:

        for( int i = 0; i < NUM_SAMPLES; i ++ ) {
          poissonDisk[i] = vec2( cos( angle ), sin( angle ) ) * pow( radius, 0.75 );
          radius += radiusStep;
          angle += ANGLE_STEP;
        }

      如果这里是为了生成单位圆上的均匀采样,应该是pow(radius, 0.5)才对吧。就像均匀采样函数uniformDiskSamples里面radius = sqrt(sampleY)一样。

      参考虎书sampling一章的证明:
      假设用极坐标r,θ表示单位圆上的一点s,则有ds = r * dr * dθ。

      若令r = pow(radius, 0.5), θ = angle,则有ds = d(0.5 * r^2) * dθ = 0.5 * d(radius) * d(angle),即在radius-angle空间均匀采样等于在单位圆上均匀采样。

      若令r = pow(radius, 0.75), θ = angle,则有ds = (3/4) * sqrt(radius) * d(radius) * d(angle),此时在radius-angle空间的均匀采样并不等于在单位圆上均匀采样。

    • #7994 Score: 0
      JZZ
      Keymaster
      2 pts

      我们使用的poisson disk在生成过程上是在单位圆上一层一层的生成采样点,层宽是 1/ sampleNumber,同层采样点的theta之间差着一个固定的angleStep,整体是从一个点呈螺旋型往外生成采样点。从最后的生成点的分布来看,更像是一个二维高斯,中间要密一些,不是均匀的。在文档里有采样函数的可视化链接,可以看一下。

      3/4我的理解是这样,生成的采样点一开始卡着圆环的外边生成, 3/4 是一个让采样点回归到圆环内的缩放系数,换成别的也行。

      提高采样数至200或更高,对比均匀采样和possion圆盘的差别,应该会有有趣的结果。

      • #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 8 months ago by Ryushinn.
Viewing 1 reply thread
  • You must be logged in to reply to this topic.