【问题标题】:Rasterization and Secondary Reflections光栅化和二次反射
【发布时间】:2018-04-15 01:41:46
【问题描述】:

我一直致力于为实时应用开发基于 GPU 的水下成像声纳模拟(在我的last paper 中查看更多详细信息)。任务部分是混响现象,可以用多路径算法来表示。

这项工作在使用着色器的光栅化管道期间使用预先计算的信息(法线、深度和角度)来计算模拟声纳数据,但是这种方式仅限于初级反射。所以我需要考虑二次反射。光线追踪能否仅用于这部分,在混合管道(光栅化和光线追踪)中?

【问题讨论】:

    标签: glsl fragment-shader raytracing vertex-shader rasterizing


    【解决方案1】:

    希望能帮到你!

    使用光线追踪,为了计算二次反射,您通常需要首先计算每条光线的一次反射,然后递归地从该位置射出另一条光线。我想你可以跳过光线追踪的第一个反射部分,如果你可以使用你的着色器结果来确定每条光线从哪里开始以及它应该反射到哪个方向。您可以从着色器结果中的像素中射出光线,使用深度信息、像素坐标和相机参数来确定光线的原点在哪里,并使用法线信息来确定光线应该进入的方向。

    通过查看您项目的论文,我认为光线追踪对于这个项目来说将是一个非常有用的工具,我想知道是否最好只采用完整的光线追踪方法来简化流程。为什么要通过着色器进行主要反射?我建议研究在 gpu 上执行光线跟踪的 nvidia optix,并研究全局照明技术以计算场景中所有对象的反射。全局照明技术还考虑了这样一个事实,即在不使用法线贴图的情况下,表面不会完全光滑,正如您的论文中提到的那样,通过使用蒙特卡洛积分。

    我希望这会有所帮助,如果您希望我澄清任何事情或有任何其他问题,请随时提出!

    【讨论】:

    • 嗨@kylengelmann,感谢您的cmets!我使用光栅化来计算第一次反射,因为直到此刻,我不需要模拟声音路径来计算基本声纳参数(回波反射、脉冲距离和水平视野)。我可以使用预先计算的灯光信息来完成这个过程。另外,我跳过了使用完整的方法(如 nvidia optix),因为模拟器因为模拟器变得独立于视频卡并为较旧的计算机提供服务。
    • 现在我已经搜索了如何将多路径现象包含到我的应用程序中,我想使用光栅化进行二次反射真的很难。有了这个,我认为光线追踪可以进行这一步,但是我愿意接受新的想法! :)
    • 您能否详细说明如何使用预先计算的数据(法线、像素坐标、深度)来模拟光线的原点?我查看了全局照明技术,但是一些作者注意到它们的计算成本很高。你有什么诀窍吗?再次感谢。
    • 如果您可以使用完整的光线追踪技术,那么您应该考虑不使用预先计算的数据,因为它会使事情变得不必要地复杂化,但是如果您想尝试一下,这就是我认为可行:
    • 对于每个像素,计算其世界位置和世界表面法线。然后,找出来自相机或声纳物体或任何产生声音的东西的光线来自哪个方向,并将其反射到表面法线上。然后从每个像素进行光线追踪,光线的原点位于像素的世界位置以及您之前使用表面法线计算的方向
    猜你喜欢
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 2016-12-12
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多