【问题标题】:Voxel Cone Traced Soft Shadows体素锥跟踪软阴影
【发布时间】:2013-02-01 06:50:30
【问题描述】:

我最近在 OpenGL 4.3 中使用体素锥体跟踪实现了软阴影,方法是在光的方向上跟踪一个锥体并累积不透明度值。

我试图解决或隐藏的关键是当被遮挡的表面越来越接近遮挡物时非常体素化的阴影效果,以及由于表面体素化而隐藏阴影中的清晰点。我正在使用 64x64x64 的低分辨率体素;但是,即使我使用更高分辨率的体素,跟踪中仍会捕获更高 mip-map 级别的一些低分辨率体素。

所以我的第一个想法是:我希望能够保留最远的阴影最柔和的部分,并用阴影贴图替换更靠近遮挡物的阴影部分。阴影贴图会随着它远离每个遮挡物而逐渐消失,我会以某种方式将它与锥形跟踪阴影混合。

谁能想出一种方法来根据与每个对象的距离为阴影贴图淡化阴影,然后让它平滑地融合到锥形跟踪阴影中?

我的另一个想法是以某种方式在更接近遮挡物的表面上跟踪阴影,但这可能太昂贵了。

或者,我欢迎任何其他想法来帮助改进我的软阴影算法。

我还制作了一段视频来展示它的动态:

https://www.youtube.com/watch?v=SUiUlRojBpM

仍然没有找到解决阴影问题的方法。

【问题讨论】:

  • +1 – 最后又是一个问题,这不是新手级别的问题,让我的大脑发痒:) 让我看看我能想到什么……
  • 在圆锥追踪算法中,是否使用体素的alpha值来表示体素是否被占用?如果是这样,opengl 中的默认 mipmapping 算法可能无法为您提供正确的结果。您还使用稀疏体素八叉树表示吗?
  • 对于间接漫反射和镜面反射,我通过在所有 6 个方向上偏移 1 个体素来采样 3D 纹理 - 对于每个 mip 级别。如果我正确理解了理论,我想这给了我 2x2x2 的“砖块”。我跟踪圆锥,直到不透明度值变为 1 并达到我定义的最大距离。我注意到默认的 mipmapping 不是很平滑,所以我想如果我使用 3x3x3 砖块,我的结果应该会有所改善 - 性能成本更高?我没有使用八叉树结构,但这在要实现的事情列表中。
  • 任何与斯坦福模型有关的问题都是一个好问题。
  • 我不知道你是如何应用你的阴影的,但我们假设你有一个着色器并且你做了一个阴影贴图查找。如果对象随后被遮挡,我们可以简单地获得从表面上的点到灯光的距离,并根据一些任意参数进行淡化。不过,这将是阴影贴图和“混合”区域中的软阴影之间的差异。我不知道你是否认为这太昂贵了,但它不需要光线追踪,而且它只会发生在阴影区域。

标签: opengl shadow voxel


【解决方案1】:

我猜测“清晰点”伪影的发生是由于大型体素尺寸仅部分填充几何体:“累积不透明度值。”。从光栅化像素转换为体素时,您要采集多少个样本?如果样本体积/体素体积很小,则正确渲染透明度可能会出现问题 - 较亮区域会指示噪点。

另外,你的体素的透明度方向是否依赖? Based on the author's original paper。方向依赖性对于确保正确渲染半透明体素很重要。

A quick picture to explain

“对于一个阴影贴图,然后让它平滑地融合到锥形跟踪阴影中?”

这似乎是你在踢自己的脚。您会获得更大的性能影响,并获得阴影映射和体素锥跟踪的缺点。体素锥追踪很昂贵,但可以提供漂亮的柔和阴影并进行全局照明。阴影贴图更擅长制作硬阴影,并且在较小的场景中速度更快,但随着您添加更多几何图形,您最终会多次重绘相同的东西,每个灯光至少一次。

顺便说一句,做得很好。我在为我自己的体素锥跟踪的 DirectX 实现进行初步研究时遇到了您的问题。

[编辑]

我意识到我在图片中打错了。右边的图片应该是 4/64,而不是 4/16。我忘记了 Z 维度。

【讨论】:

  • 很高兴看到其他人也在研究这项技术。我没有使用方向相关的透明度。我最初计划用实体体素化替换我的表面体素化,这应该消除孔洞并消除“空心”镜面反射(即,由于体素的半透明混合,我的镜面反射是透明的)。我对使用方向相关体素的担心是它的成本要比使用实体体素化高得多。
【解决方案2】:

好吧,在这种情况下,您可以通过添加更多灯光来实现。您可以添加更多靠近原始灯光的灯光,然后将灯光的阴影与一束较近的灯光的阴影组合在一起。这就是“区域光”效果。

【讨论】:

    猜你喜欢
    • 2013-01-03
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    相关资源
    最近更新 更多