Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Glsl 光栅化和二次反射_Glsl_Fragment Shader_Raytracing_Vertex Shader_Rasterizing - Fatal编程技术网

Glsl 光栅化和二次反射

Glsl 光栅化和二次反射,glsl,fragment-shader,raytracing,vertex-shader,rasterizing,Glsl,Fragment Shader,Raytracing,Vertex Shader,Rasterizing,我一直致力于开发一个基于GPU的水下成像声纳仿真系统,用于实时应用(详见我的文章)。任务部分是混响现象,可以用多径算法表示 这项工作在使用着色器的光栅化管道中使用预先计算的信息(法线、深度和角度)来计算模拟声纳数据,但是,这种方法仅限于主反射。所以我需要考虑二次反射。光线跟踪能否仅用于混合管道(光栅化和光线跟踪)中的这一部分?我希望能提供帮助 使用光线跟踪,为了计算次反射,通常需要首先计算每条光线的主反射,然后从该位置递归发射另一条光线。我想你可以跳过光线跟踪的第一个反射部分,如果你可以使用着色

我一直致力于开发一个基于GPU的水下成像声纳仿真系统,用于实时应用(详见我的文章)。任务部分是混响现象,可以用多径算法表示

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

我希望能提供帮助

使用光线跟踪,为了计算次反射,通常需要首先计算每条光线的主反射,然后从该位置递归发射另一条光线。我想你可以跳过光线跟踪的第一个反射部分,如果你可以使用着色器结果来确定每条光线的起始位置和反射方向。您可以使用深度信息、像素坐标和摄影机参数来确定光线的原点,并使用法线信息来确定光线的方向,从而将光线从着色器结果中的像素中射出

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


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

你好@kylengelmann,谢谢你的评论!我使用光栅化来计算第一次反射,因为在此之前,我不需要模拟声路来计算基本声纳参数(回波反射、脉冲距离和水平视野)。我可以使用预先计算的灯光信息来执行此过程。此外,我跳过了使用完整的方法(如nvidia optix),因为模拟器变得独立于视频卡,并且服务于较旧的计算机。现在我已经研究了如何将多路径现象包括到我的应用程序中,我猜使用光栅化进行二次反射确实很困难。有了这个,我认为光线跟踪可以完成这一步,不过我对新想法很开放!:)你能详细说明我如何使用预计算的数据(法线、像素坐标、深度)来模拟光线的原点吗?我看了一下全局照明技术,但是有几位作者注意到它们的计算成本很高。你有小费吗?再一次感谢。如果你能使用完整的光线追踪技术,那么你应该考虑不使用预先计算的数据,因为它只是不必要地使事情变得复杂,但是如果你想尝试一下,这就是我认为的工作:对于每个像素,计算它的世界位置和世界表面正常。然后,计算出来自摄像机、声纳或任何产生声音的物体的光线来自哪个方向,并将其反射到表面法线上。然后从每个像素进行光线跟踪,光线的原点位于像素的世界位置,方向是您先前使用曲面法线计算的方向