【问题标题】:Ray Tracing Noise光线追踪噪声
【发布时间】:2014-06-18 12:34:21
【问题描述】:

我想知道有光线追踪经验的人是否可以帮助我找出程序中的几个问题,但是我不能发布太多代码,因为这个程序是学校作业。我只是想知道我是否可以得到一些可以帮助我朝着正确方向前进的提示。所以提前谢谢!

首先)如您所见,下面我的光线追踪图像中有大量噪点。该场景由一个悬停在平面上的三角形组成。还有一个点光源。

第二)当我计算阴影光线时不会出现噪点,但是它会为阴影计算错误的颜色。

我的光线追踪算法:

for each pixel,
    color c;
    for each shape in the scene
        send a ray through each pixel and see if it collides with a shape
        if it does
            color = calculate color of ray
        else, color = background color
    return color

To calculate color of ray...
    color c = 0,0,0 // rgb
    for each light source in the scene
        make a new ray (shad_ray) that starts at where the original ray hit the shape...
        ... and ends at the light source
        see if the shadow ray hits a shape on its way to the light
        if it does, 
            calculate ambient color using ambient color of shape material and...
            ... ambient light intensity 
        if not,
            calculate shading with sum of ambient/diffuse/specular components 

我知道这是对算法的非常松散的描述。但如果需要,我可以提供更多信息。

【问题讨论】:

  • 我想如果你知道专业的光线追踪引擎也存在严重的噪音问题,你会感觉更好:brigade.otoy.com/gtc/brigade/2014/03/28/…——观看他们的视频;他们承认这个问题,但尚不清楚他们何时/是否会找到不影响图形质量的可接受解决方案。也许他们需要 GPU 上更高位深度的浮点硬件?

标签: graphics raytracing


【解决方案1】:

这看起来很熟悉,称为"surface acne"。光线追踪阴影的一个常见错误是阴影光线与发出阴影光线的对象相交。由于有限的浮点精度,交点并不总是精确地在一个表面上——它最终会稍微高于或低于。当您投射阴影光线时,您可以再次与该表面相交。它看起来很嘈杂,因为有些位置会自相交,而有些则不会

处理此问题的典型方法是将阴影光线的原点稍微向后移向眼点,或忽略在很短距离内发生的阴影交叉点,或忽略与该表面的所有交叉点(如果您的表面是平面或凸面)。

至于阴影区域的颜色,您可能需要发布实际代码,但看起来您使用的是与阴影光线相交的对象的材质,而不是主光线。

【讨论】:

  • 啊,这就是我教授的意思,好吧。他的指示含糊不清,但我认为你已经澄清了。非常感谢!
猜你喜欢
  • 2011-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-08
  • 2019-11-29
  • 2011-12-08
  • 2012-05-23
相关资源
最近更新 更多