System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于运行时虚拟纹理的地表融合方法技术_技高网

基于运行时虚拟纹理的地表融合方法技术

技术编号:39936680 阅读:7 留言:0更新日期:2024-01-08 22:14
本发明专利技术公开了一种基于运行时虚拟纹理的地表融合方法,运用运行时虚拟纹理在场景中的层级式显示规则,并采用适应该规则的在图形处理器中高效将世界坐标转换为虚拟纹理数组下标的算法,能够高效地在图形处理器着色器程序中访问运行时虚拟纹理,从而实现完美的地表融合效果。

【技术实现步骤摘要】

本专利技术属于图像处理,具体涉及一种基于运行时虚拟纹理的地表融合方法


技术介绍

1、运行时虚拟纹理(rvt)是虚幻引擎4(ue4)支持的一种虚拟纹理方法。它在运行时使用图形处理器(gpu)按需创建其纹素数据,工作方式与传统纹理映射类似。利用运行时虚拟纹理可有效渲染过程生成或分层的复杂材质,使运行时虚拟纹理适用于渲染复杂的地形材质。其能改善地形样条、网格体和材质贴花,及一般地形与对象混合的渲染性能和工作流程。

2、地表融合是在渲染场景物件时,提取地表纹理信息,将其应用到这些物件表面中,以实现和地表平滑过渡的效果。常见的应用包括:渲染地表上的石头、地板物件时,将地表上的植被、沙土信息融合到物件表面。主流的地表渲染方案是通过四张地表纹理贴图以及一张纹理权重控制贴图来实现多样化的地表细节。因此在这种方案下,只需要在渲染场景物件时使用和地表渲染相同的算法采样这五张贴图即可实现地表融合。

3、但是,在使用实时虚拟纹理的应用中,我们无法使用上述方法达成目的,主要包括下述原因:

4、1.对于使用实时虚拟纹理的应用,其纹理权重控制贴图通常是一张尺寸非常大的贴图,甚至不能直接加载进图形处理器中,需要将该权重控制贴图拆分成多张尺寸合适的小贴图。

5、2.实时虚拟纹理支持非常复杂的多层材质,这个过于复杂的算法可能不适合内嵌到场景物件的渲染流程中,否则会增加物件渲染开销。

6、3.在实时虚拟纹理中,还会将地表贴花渲染到虚拟纹理中,这些贴花同样是地表不可缺少的细节,在做地表融合时非常有必要将贴花一起融合进场景物件中,由于贴花实现方式很复杂,很难在场景物件渲染时直接通过贴花算法获取到其本身颜色信息。

7、虽然纹理权重控制贴图的数据量非常大,但是每帧实时生成的地表虚拟纹理的数据量却是可控的,而且贴花信息也可以以极低的代价渲染到实时虚拟纹理中,因此使用了实时虚拟纹理的应用中,最佳的地表融合解决方案就是直接在场景物件渲染时直接读取虚拟纹理中的纹素数据。然而,由于实时虚拟纹理的结构复杂,各个区域的纹理清晰度都不一致,很难直接从世界空间下的坐标转换为虚拟纹理的纹理坐标。


技术实现思路

1、为解决上述问题,本专利技术公开了一种基于运行时虚拟纹理的地表融合方法。

2、为达到上述目的,本专利技术的技术方案如下:

3、基于运行时虚拟纹理的地表融合方法,包括如下步骤:

4、步骤1,划分场景

5、首先将场景均匀划分为m×m个一级区域,然后将每个一级区域划分为四个二级区域,每个二级区域划分为四个三级区域……持续划分直至划分出k级区域;

6、步骤2,加载虚拟纹理

7、加载、卸载虚拟纹理,并决定各个位置的区域层级,保证渲染相机附近的位置使用清晰度更高的高级别区域,而远处则使用清晰度更低的低级别区域;

8、步骤3,地表融合

9、实现地表融合,进行场景渲染;读取虚拟纹理,所有应用于场景显示的虚拟纹理被存储于全局唯一的纹理数组中,通过数组下标直接索引各个虚拟纹理;在确定某区域的虚拟纹理用于场景显示时,更新虚拟纹理索引数据结构,通过此数据结构能够快速将世界坐标转换成其所属区域及其对应的虚拟纹理数组下标。

10、进一步的,所述步骤2中,优先加载低级别区域的虚拟纹理。

11、进一步的,所述步骤3中,虚拟纹理的加载显示时遵循以下规则:

12、只有当区域本身的虚拟纹理加载完成,并且其是k级区域或者其四个子区域中的任意一个没有加载才能显示该区域的虚拟纹理,k级区域是最高层级区域,没有子区域;

13、如果四个子区域的虚拟纹理都已经加载完成,则不能使用该区域的虚拟纹理。

14、进一步的,所述步骤3中通过世界坐标查找虚拟纹理数组下标的过程包括:

15、(1)将世界坐标转换为一级区域坐标,一级区域的索引数据在数据结构中的位置是固定的,可以直接查询到一级区域对应的索引数据;

16、(2)如果当前区域的索引数据是正整数,则当前区域的虚拟纹理已经用于场景显示,该正整数值表示其在虚拟纹理数组中的下标,此时算法结束;

17、(3)如果当前区域的索引数据是负数p,则当前区域的虚拟纹理没有用于场景显示,而是使用的其子区域的虚拟纹理,并且四个子区域的索引数据在数据结构中的起始位置是-(p+1);(4)将世界坐标进一步转换为当前区域的子区域坐标,结合第(3)步中获得的子区域数据起始位置,查询子区域数据,并回到第(2)步继续执行。

18、进一步的,将世界坐标转换为一级区域坐标的公式为:

19、本专利技术的有益效果为:

20、本专利技术运用运行时虚拟纹理在场景中的层级式显示规则,并采用适应该规则的在图形处理器中高效将世界坐标转换为虚拟纹理数组下标的算法,能够高效地在图形处理器着色器程序中访问运行时虚拟纹理,从而实现完美的地表融合效果。

本文档来自技高网...

【技术保护点】

1.基于运行时虚拟纹理的地表融合方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的基于运行时虚拟纹理的地表融合方法,其特征在于,所述步骤3中,虚拟纹理的加载显示时遵循以下规则:

3.根据权利要求1所述的基于运行时虚拟纹理的地表融合方法,其特征在于,所述步骤2中,优先加载低级别区域的虚拟纹理。

4.根据权利要求1所述的基于运行时虚拟纹理的地表融合方法,其特征在于,所述步骤3中通过世界坐标查找虚拟纹理数组下标的过程包括:

5.根据权利要求4所述的基于运行时虚拟纹理的地表融合方法,其特征在于,将世界坐标转换为一级区域坐标的公式为:

【技术特征摘要】

1.基于运行时虚拟纹理的地表融合方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的基于运行时虚拟纹理的地表融合方法,其特征在于,所述步骤3中,虚拟纹理的加载显示时遵循以下规则:

3.根据权利要求1所述的基于运行时虚拟纹理的地表融合方法,其特征在于,所述步骤2中,...

【专利技术属性】
技术研发人员:吴志强
申请(专利权)人:浙江华娱网络科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1