【问题标题】:Area Lighting In Ray Tracing光线追踪中的区域照明
【发布时间】:2012-08-10 20:01:55
【问题描述】:

我有一个关于光线追踪中区域照明的快速问题。我正在从Ray Tracing from the Ground Up 学习这个主题,当没有应用抗锯齿时,我的区域光的结果是这样的:

如您所见,图像中有很多噪点。当我应用抗锯齿时,它看起来很好,并且在应用 256x AA 时看起来像这样:

[阴影颜色的变化微不足道,我改变了阴影的一些属性]

我的问题,这是区域灯的行为方式还是我做错了什么?因为渲染第一个只需要 4 ,而后一个需要将近 20 分钟。感觉好像有什么不对。

我的点光源类和面光源类之间的唯一区别是get_direction 函数。

Point Light 的get_direction 函数:

virtual Vec get_direction(ShadeRec& sr)
{
return Vec(position.x-sr.hit_point.x, position.y-sr.hit_point.y, position.z-sr.hit_point.z).norm();
}

Area Light 的get_direction 函数:

virtual Vec get_direction(ShadeRec& sr)
{
    Vec newLocation;
    newLocation.x = position.x + radius * (2.0 * rand_float() - 1.0);
    newLocation.y = position.y + radius * (2.0 * rand_float() - 1.0);
    newLocation.z = position.z + radius * (2.0 * rand_float() - 1.0);
    return ((newLocation - sr.hit_point).norm());
}

【问题讨论】:

  • 前一种情况,你抽取多少个样本?我猜你只是严重欠采样区域光,导致你看到的结果。
  • 前一种每像素发送一条光线,另一种每像素发送256条光线。那么你的意思是没有任何(或更少)AA​​就没有办法达到第二个的结果?
  • 好吧,您可以尝试不同的(自适应)采样策略。但是对于您所拥有的实施,结果符合预期。至少这是积极的。 ;) 编辑:我从目录中收集到那本书的后面章节正是讨论了这一点。也许值得一看?
  • 你是说Ch。 17 种环境光遮蔽?
  • 总之,当从区域光采样直接照明时,您需要拍摄更多光线。

标签: graphics area raytracing lighting


【解决方案1】:

您发布的渲染时间对我来说非常有意义:

4 seconds * 256 ~= 17 minutes

随机数生成器引入的开销相加。

【讨论】:

    猜你喜欢
    • 2011-12-08
    • 1970-01-01
    • 2016-01-08
    • 1970-01-01
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多