System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及飞行模拟器视景系统云层渲染领域。更具体地说,本专利技术涉及一种基于gpu加速的体积云渲染方法、系统、存储介质及电子设备。
技术介绍
1、目前,飞行模拟器视景系统的动态云主要有天空盒贴图、面片云层和结合3d噪声图和ray trace技术的体积云三种方案。其中,天空盒贴图的云层效果只是天空盒上的一张静态贴图,优点是渲染效率非常高,缺点是效果不真实,云层没有动态变化效果,而且云层始终处于渲染场景的无穷远处,视点位置始终不能到达云层内部,无法表现处云层中飞行和穿云效果。面片云层是设定好云层的底部海拔高度和顶部海拔高度,底部和顶部各用一张半透明模板纹理渲染出云底面和云顶面,云层内部则不做渲染,优点是渲染效率高,结合纹理动画,当视点处于云底下和云顶上时,也能模拟出云层的动态运动,渲染效果不错,但是云层中飞行和穿云效果非常简陋,因为云层内部不做渲染处理,一般只是用静态的雾效模拟出云层的遮挡效果。结合3d噪声图和ray trace技术的体积云,其原理是从屏幕空间每个像素发射出至少一条射线,对3d纹理进行路径积分,实施动态的计算出当前视点下的云量密度纹理,然后根据这个动态的云量密度纹理渲染出云层,其优点是效果非常好,云层的疏密分布,形状表达,风对云的动态影响有非常真实的表达,也支持任意视点的云层内部飞行效果和真实的穿云效果,但是其缺点也很明显,其计算开销非常大,对计算机性能要求很高,渲染效率一般比较低,画面分辨率越高效率越低,实施渲染的时候,大大拉低了整个视景画面的帧率。
技术实现思路
2、为了实现本专利技术的目的和其它优点,提供了一种基于gpu加速的体积云渲染方法,包括:
3、将云素按照一定方式组合在一起,得到不同大小、形态的云朵模板;
4、将所述云朵模板按照包围盒从大到小的方式顺序存储,得到云朵模板数组;
5、将所述云朵模板数组中的所述云朵模板依次抽取出来,利用所述云朵模板创建云朵对象,并将其插入云层区域内,得到云层;
6、对所述云层中的所有云素对象进行gpu双调排序,再对排序后的云素对象进行渲染,输出云层渲染结果。
7、优选的是,将所述云朵模板数组中的所述云朵模板依次抽取出来,利用所述云朵模板创建云朵对象,并将其插入云层区域内,得到云层,包括:
8、步骤一、将所述云层区域划分为多个格点,并创建一个coverflag列表;
9、步骤二、从所述云朵模板数组中按照包围盒从大到小的顺序抽取云朵模板进行测试,记录当前待测试云朵模板序号为idx并读取包围盒尺寸;
10、步骤三、从所述coverflag列表中随机抽取一个未被覆盖的格点;
11、步骤四、将当前待测试云朵模板放入所述未被覆盖的格点中,判断当前待测试云朵模板是否与所述云层区域内已入列的云朵对象重叠,若没有重叠,则根据当前待测试云朵模板创建云朵对象并放入该未被覆盖的格点,入列并更新coverflag列表,否则,将待测试云朵模板序号递增1,返回步骤二;
12、步骤五、根据coverflag列表计算云层覆盖率,若云层覆盖率大于等于预设云层覆盖率,则结束云层生成,否则,返回步骤二。
13、优选的是,在所述步骤一之前,还包括,修正所述云层区域的大小,使其长宽高都是所述云素尺寸的整数倍。
14、优选的是,所述步骤四中,还包括,若当前待测试云朵模板与所述云层区域内已入列的云朵对象有重叠,则判断当前待测试云朵模板的测试次数是否小于预设次数,若是,则返回步骤三,否则,将待测试云朵模板序号递增1,返回步骤二。
15、优选的是,使用可视化编辑工具将所述云素组合在一起,得到所述云朵模板。
16、优选的是,所述云朵模板数组中的最后一个云朵模板只包含一个云素。
17、优选的是,采用gpu instance,调用vulkan的draw instance api对排序后的云素对象进行渲染。
18、本专利技术还提供了一种基于gpu加速的体积云渲染系统,包括:
19、云朵模块,其用于将云素按照一定方式组合在一起,得到不同大小、形态的云朵模板;
20、云朵模板数组模块,其用于将所述云朵模板按照包围盒从大到小的方式顺序存储,得到云朵模板数组;
21、云层模块,其用于将所述云朵模板数组中的所述云朵模板依次抽取出来,利用所述云朵模板创建云朵对象,并将其插入云层区域内,得到云层;
22、渲染模块,其用于对所述云层中的所有云素对象进行gpu双调排序,再对排序后的云素对象进行渲染,输出云层渲染结果。
23、本专利技术还提供了一种存储介质,其中存储有计算机程序,所述计算机程序被处理器加载执行时,实现上述的体积云渲染方法。
24、本专利技术还提供了一种电子设备,包括:处理器、及存储器;其中,所述存储器用于存储计算机程序;所述处理器用于加载执行所述计算机程序,以使所述电子设备执行上述的体积云渲染方法。
25、本专利技术至少包括以下有益效果:
26、本专利技术的基于gpu加速的体积云渲染方法很好的平衡了渲染效果和渲染效率,更适合复杂的渲染场景,而且根据不同的计算机性能和实际情况,可配置云素的大小,进而控制最终的半透明粒子数量,适用性更广泛;相对于天空盒贴图和面片云方案,本专利技术的性能开销稍高,但渲染质量大幅提升,体积感更强,相对于ray trace技术的体积云,性能大幅提升,实用性更好。
27、本专利技术的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本专利技术的研究和实践而为本领域的技术人员所理解。
本文档来自技高网...【技术保护点】
1.基于GPU加速的体积云渲染方法,其特征在于,包括:
2.如权利要求1所述的基于GPU加速的体积云渲染方法,其特征在于,将所述云朵模板数组中的所述云朵模板依次抽取出来,利用所述云朵模板创建云朵对象,并将其插入云层区域内,得到云层,包括:
3.如权利要求2所述的基于GPU加速的体积云渲染方法,其特征在于,在所述步骤一之前,还包括,修正所述云层区域的大小,使其长宽高都是所述云素尺寸的整数倍。
4.如权利要求3所述的基于GPU加速的体积云渲染方法,其特征在于,所述步骤四中,还包括,若当前待测试云朵模板与所述云层区域内已入列的云朵对象有重叠,则判断当前待测试云朵模板的测试次数是否小于预设次数,若是,则返回步骤三,否则,将待测试云朵模板序号递增1,返回步骤二。
5.如权利要求2所述的基于GPU加速的体积云渲染方法,其特征在于,使用可视化编辑工具将所述云素组合在一起,得到所述云朵模板。
6.如权利要求2所述的基于GPU加速的体积云渲染方法,其特征在于,所述云朵模板数组中的最后一个云朵模板只包含一个云素。
7.如权利要求
8.基于GPU加速的体积云渲染系统,其特征在于,包括:
9.存储介质,其中存储有计算机程序,其特征在于,所述计算机程序被处理器加载执行时,实现如权利要求1-7任一所述的体积云渲染方法。
10.电子设备,其特征在于,包括:处理器、及存储器;其中,所述存储器用于存储计算机程序;所述处理器用于加载执行所述计算机程序,以使所述电子设备执行如权利要求1-7任一所述的体积云渲染方法。
...【技术特征摘要】
1.基于gpu加速的体积云渲染方法,其特征在于,包括:
2.如权利要求1所述的基于gpu加速的体积云渲染方法,其特征在于,将所述云朵模板数组中的所述云朵模板依次抽取出来,利用所述云朵模板创建云朵对象,并将其插入云层区域内,得到云层,包括:
3.如权利要求2所述的基于gpu加速的体积云渲染方法,其特征在于,在所述步骤一之前,还包括,修正所述云层区域的大小,使其长宽高都是所述云素尺寸的整数倍。
4.如权利要求3所述的基于gpu加速的体积云渲染方法,其特征在于,所述步骤四中,还包括,若当前待测试云朵模板与所述云层区域内已入列的云朵对象有重叠,则判断当前待测试云朵模板的测试次数是否小于预设次数,若是,则返回步骤三,否则,将待测试云朵模板序号递增1,返回步骤二。
5.如权利要求2所述的基于gpu加速的体积云渲染方法,其特征在于,使用可视...
【专利技术属性】
技术研发人员:顾东旭,李冰,田策,吴振铎,
申请(专利权)人:北京领为军融科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。