光线跟踪:具有区域光源的水平工件

时间:2013-11-14 14:50:32

标签: graphics raytracing

嗨这些水平线的原因是什么?区域光是绿色平面上方的黄色方块。线条图案的变化取决于平面上方区域光线的距离,但它们仍然是水平线条。

我有4个点光源均匀分布在区域光(黄色方形贴片)的表面上。

您可以看到它的外观here(16倍超级采样)。

1 个答案:

答案 0 :(得分:1)

看起来像阴影痤疮:不希望的自阴影,由于近似误差而形成图案。请注意,完全阴影区域中没有线条,这表明问题是阴影系统错误地“认为”绿色平面位于阴影中。

编辑:由于你是光线跟踪,问题可能是你错误地将来自“发射”它们的平面的外向阴影光线相交。以下建议适用于使用阴影贴图进行光栅化,而不适用于光线追踪,但它们仍然可能具有指导意义......


阴影贴图的工作原理是首先从每个灯光的角度绘制深度图,记录阴影对象的“阴影贴图”。然后,在绘制实际图像时,每个像素从阴影贴图中采样阴影深度,并将其与来自像素位置的光的计算深度进行比较:如果像素深度大于阴影深度,则将其遮蔽。 / p>

请注意,如果正在绘制的对象与光最近的阴影对象,则像素深度应与阴影深度相同。但是,由于采样和浮点计算不精确,因此比较仅近似相等。因此,部分时间(基于采样和浮点误差的奇思妙想),它认为像素深度比同一对象引起的阴影深度更远:对象阴影本身。


有几种方法可以避免阴影痤疮。最简单的选项(以及场景的明显选择)是从阴影脚轮列表中删除对象。由于你的飞机看起来像是一个“地板”,所以无论如何都不应该遮挡任何东西。这样做的另一个好处是可以节省将地板绘制到所有阴影贴图上所需的时间......

根据相同的原理,如果对象是“防水的”,单边三角形始终朝外,则应该反转阴影贴图的三角形方向测试。这将从物体的暗侧拍摄阴影深度(无论如何它都是完全阴影,因为它背离光线),因此它不会在光亮的一侧引起痤疮。

如果您的平面物体必须从两侧都可见,您可以对阴影深度施加偏差;图形软件和硬件通常都有这方面的规定。不幸的是,这可能有点繁琐:偏差必须足够大以隐藏采样/计算错误,但又要小到不会导致其他伪影。

相关问题