【问题标题】:What does "filter" mean in Realistic Ray Tracing?真实光线追踪中的“滤镜”是什么意思?
【发布时间】:2018-01-27 06:39:30
【问题描述】:

我在看Realistic Ray Tracing这本书,我看不懂盒子过滤器代码:

void boxFilter(Vector2* samples, int num_samples)
{
    for (int i = 0; i < num_samples; i++)
    {
        samples[i].x = samples[i].x - 0.5f;
        samples[i].y = samples[i].y - 0.5f;
    }
} 

在我看来,“过滤器”是一个权重数组,而采样是产生位置产生光线,过滤器是组合结果(所以过滤器方法应该返回float[],但是上面的函数返回一个@ 987654324@)。代码是什么意思?

【问题讨论】:

  • 似乎这个函数适用于采样位置而不是图像的采样值。书中关于给定函数还有什么要说的吗?
  • 在这里您可以找到由 Peter Shirley 和 R. Keith Morley 撰写的 REALISTIC RAY TRACING 第二版的源代码(AK Peters,2003 年)源代码:bitbucket.org/Vertexwahn/galileo/src/default - 也许这有助于澄清您的问题

标签: raytracing


【解决方案1】:

盒式过滤的基本思想是,无论样本落在图像平面“像素”的哪个位置,盒式过滤器都会使渲染器表现得好像它落在该像素的确切中心一样。

我没有读过那本特别的书,但我猜在那个代码片段中,sample[].x.y 是返回的射线命中的int(或以前的floor()ed)位置图像平面,像素坐标。因此,从每个像素中减去.5 会将样本置于每个像素的几何中心,因此,它是一个框式过滤器。

有关框过滤(和其他过滤器)的深入讨论,请参阅基于物理的渲染,第 7 章,“采样和重建”。

【讨论】:

    猜你喜欢
    • 2017-03-26
    • 2012-05-18
    • 1970-01-01
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多