CN117710549A - 渲染方法及设备 - Google Patents
渲染方法及设备 Download PDFInfo
- Publication number
- CN117710549A CN117710549A CN202311361765.3A CN202311361765A CN117710549A CN 117710549 A CN117710549 A CN 117710549A CN 202311361765 A CN202311361765 A CN 202311361765A CN 117710549 A CN117710549 A CN 117710549A
- Authority
- CN
- China
- Prior art keywords
- data
- rendering
- map
- rendered
- related data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 264
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000012545 processing Methods 0.000 claims abstract description 45
- 230000006978 adaptation Effects 0.000 claims abstract description 34
- 238000011176 pooling Methods 0.000 claims description 27
- 238000007781 pre-processing Methods 0.000 claims description 21
- 230000008569 process Effects 0.000 claims description 20
- 239000003086 colorant Substances 0.000 claims description 6
- 230000000694 effects Effects 0.000 abstract description 16
- 230000009466 transformation Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 238000005286 illumination Methods 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000004040 coloring Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
- G06T15/205—Image-based rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/05—Geographic models
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Remote Sensing (AREA)
- Computing Systems (AREA)
- Image Generation (AREA)
Abstract
本申请提供一种渲染方法及设备,可用于图像处理技术领域。该方法包括:通过地图引擎生成点云格式的地图相关数据;通过适配层调用地图引擎提供的数据访问接口,对地图相关数据进行处理,生成网格格式的待渲染数据;通过渲染层调用可编程渲染管线对待渲染数据进行渲染。本申请实施例可以将地图引擎提供的地图相关数据转换为可编程渲染管线可识别的网格格式,以通过可渲染编程管线的完整渲染工作流程和工具链实现渲染,有助于提高渲染效果。
Description
技术领域
本申请涉及图像处理技术领域,尤其涉及一种渲染方法及设备。
背景技术
图像渲染是图像显示过程中的一个重要环节,用于将三维模型或场景转换为二维图像。在地图应用程序中,需要对地图相关数据进行渲染。
现有技术中,地图应用程序是基于地图引擎实现的应用程序,地图引擎不仅可以提供地图相关数据,还可以根据这些地图相关数据进行图像渲染,以实现地图显示。地图应用程序调用地图引擎即可实现地图的各种功能,例如,路线规划、导航等。
然而,上述方案存在渲染效果较差的问题。
发明内容
本申请提供一种渲染方法及设备,用以提高渲染效果。
第一方面,本申请提供一种渲染方法,包括:
通过地图引擎生成点云格式的地图相关数据;
通过适配层调用所述地图引擎提供的数据访问接口,对所述地图相关数据进行处理,生成网格格式的待渲染数据;
通过渲染层调用可编程渲染管线对所述待渲染数据进行渲染。
可选地,所述通过适配层调用所述地图引擎提供的数据访问接口,对所述地图相关数据进行处理,生成网格格式的待渲染数据,包括:
调用所述数据访问接口,将所述地图相关数据从所述点云格式转换为所述网格格式;
对所述网格格式的所述地图相关数据进行预处理,得到待渲染数据。
可选地,所述调用所述数据访问接口,将所述地图相关数据从所述点云格式转换为所述网格格式,包括:
在所述适配层中注册处于系统级的第一数据结构,以封装所述地图相关数据在所述地图引擎中对应的第二数据结构;
通过所述适配层调用所述地图引擎提供的数据访问接口,基于所述第一数据结构,将所述地图相关数据从所述点云格式转换为所述网格格式。
可选地,所述对所述网格格式的所述地图相关数据进行预处理,得到待渲染数据,包括:
将磁盘中数据量大于或等于预设阈值的目标数据预加载到池化系统中,所述目标数据包括以下至少一种:自定义的几何数据和/或所述地图相关数据中几何数据相对应的属性数据;
对所述池化系统中的目标数据和所述网格格式的所述地图相关数据,进行预处理得到待渲染数据。
可选地,所述对所述池化系统中的目标数据和所述网格格式的所述地图相关数据,进行预处理得到待渲染数据,包括:
根据所述池化系统中的所述目标数据和所述网格格式的所述地图相关数据,生成立体化面元;
从所述立体化面元中删除内部顶点和重复顶点,以得到所述待渲染数据。
可选地,所述从所述立体化面元中删除内部顶点和重复顶点,以得到所述待渲染数据之后,还包括:
将所述待渲染数据划分为多个分组;
对于每个所述分组,通过所述分组对应的事件中心将所述待渲染数据在所述分组中的数据分发给所述渲染层。
可选地,所述通过渲染层调用可编程渲染管线对所述待渲染数据进行渲染,包括:
通过所述渲染层确定所述待渲染数据的复杂度;
通过所述渲染层确定所述复杂度对应的渲染策略,以调用所述可编程渲染管线对所述待渲染数据进行渲染。
可选地,所述通过所述渲染层确定所述复杂度对应的渲染策略,以调用所述可编程渲染管线对所述待渲染数据进行渲染,包括:
通过所述渲染层在所述可编程渲染管线的应用阶段,根据所述待渲染数据生成渲染图元列表,以发送给图形处理单元,所述渲染图元列表包括至少一个渲染图元和对应的渲染状态,所述渲染状态和所述复杂度相关;
所述图形处理单元在所述可编程渲染管线的几何阶段,将所述渲染图元的顶点坐标从模型空间转换为二维空间中的屏幕坐标;
所述图形处理单元在所述可编程渲染管线的光栅化阶段,根据所述屏幕坐标和所述渲染状态确定像素颜色,以进行像素渲染。
可选地,所述地图相关数据包括非托管对象模型,所述待渲染数据包括托管对象模型,所述第二数据结构包括句柄。
第二方面,本申请提供一种渲染装置,包括:
数据获取模块,用于通过地图引擎生成点云格式的地图相关数据;
数据处理模块,用于通过适配层调用所述地图引擎提供的数据访问接口,对所述地图相关数据进行处理,生成网格格式的待渲染数据;
渲染模块,用于通过渲染层调用可编程渲染管线对所述待渲染数据进行渲染。
可选地,所述数据处理模块还用于:
调用所述数据访问接口,将所述地图相关数据从所述点云格式转换为所述网格格式;
对所述网格格式的所述地图相关数据进行预处理,得到待渲染数据。
可选地,所述数据处理模块还用于:
在所述适配层中注册处于系统级的第一数据结构,以封装所述地图相关数据在所述地图引擎中对应的第二数据结构;
通过所述适配层调用所述地图引擎提供的数据访问接口,基于所述第一数据结构,将所述地图相关数据从所述点云格式转换为所述网格格式。
可选地,所述数据处理模块还用于:
将磁盘中数据量大于或等于预设阈值的目标数据预加载到池化系统中,所述目标数据包括以下至少一种:自定义的几何数据和/或所述地图相关数据中几何数据相对应的属性数据;
对所述池化系统中的目标数据和所述网格格式的所述地图相关数据,进行预处理得到待渲染数据。
可选地,所述数据处理模块还用于:
根据所述池化系统中的所述目标数据和所述网格格式的所述地图相关数据,生成立体化面元;
从所述立体化面元中删除内部顶点和重复顶点,以得到所述待渲染数据。
可选地,所述数据处理模块还用于:
将所述待渲染数据划分为多个分组;
对于每个所述分组,通过所述分组对应的事件中心将所述待渲染数据在所述分组中的数据分发给所述渲染层。
可选地,所述渲染模块还用于:
通过所述渲染层确定所述待渲染数据的复杂度;
通过所述渲染层确定所述复杂度对应的渲染策略,以调用所述可编程渲染管线对所述待渲染数据进行渲染。
可选地,所述渲染模块还用于:
通过所述渲染层在所述可编程渲染管线的应用阶段,根据所述待渲染数据生成渲染图元列表,以发送给图形处理单元,所述渲染图元列表包括至少一个渲染图元和对应的渲染状态,所述渲染状态和所述复杂度相关;
所述图形处理单元在所述可编程渲染管线的几何阶段,将所述渲染图元的顶点坐标从模型空间转换为二维空间中的屏幕坐标;
所述图形处理单元在所述可编程渲染管线的光栅化阶段,根据所述屏幕坐标和所述渲染状态确定像素颜色,以进行像素渲染。
可选地,所述地图相关数据包括非托管对象模型,所述待渲染数据包括托管对象模型,所述第二数据结构包括句柄。
第三方面,本申请提供一种电子设备,包括存储器和至少一个处理器;
其中,存储器存储计算机执行指令;
至少一个处理器执行存储器存储的计算机执行指令,使得电子设备实现前述第一方面的方法。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面所述的方法。
第五方面,本申请提供一种计算机程序产品,用于实现第一方面的方法。
本申请提供的渲染方法及设备,可以通过地图引擎生成点云格式的地图相关数据;通过适配层调用地图引擎提供的数据访问接口,对地图相关数据进行处理,生成网格格式的待渲染数据;通过渲染层调用可编程渲染管线对待渲染数据进行渲染。本申请实施例可以将地图引擎提供的地图相关数据转换为可编程渲染管线可识别的网格格式,以通过可渲染编程管线的完整渲染工作流程和工具链实现渲染,有助于提高渲染效果。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是本申请实施例提供的软件代码架构示意图;
图2是本申请实施例提供的一种渲染方法的步骤流程图;
图3是本申请实施例提供的一种渲染过程的详细流程图;
图4是本申请实施例提供的一种渲染装置的结构框图;
图5是本申请实施例提供的一种电子设备的结构框图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
本申请适用于具有地图的任意应用程序中,例如,自动驾驶、智慧城市等垂直应用程序中。本申请可以将地图相关数据进行渲染,地图相关数据是地图引擎提供的。地图引擎也可以将地图相关数据直接进行渲染,以实现路线规划、导航功能。但是,地图引擎提供的自身渲染功能缺少完善的渲染工作流程和工具链,导致其渲染的画面细节不够丰富,渲染效果较差。
为了解决上述技术问题,本申请实施例基于可编程渲染管线(SRP,ScriptableRender Pipeline)提供的渲染工作流程和工具链进行开发,实现地图相关数据的渲染。然而可编程渲染管线无法直接识别及使用地图引擎提供的地图相关数据,基于此,本申请设置了适配层,以将地图相关数据从可编程渲染管线无法识别的点云格式转换为可以识别的网格格式。因此,本申请的渲染过程是结合地图引擎和可编程渲染管线的过程。
综上所述,本申请实施例可以将地图引擎提供的地图相关数据转换为可编程渲染管线可识别的网格格式,以通过可渲染编程管线的完整渲染工作流程和工具链实现渲染,有助于提高渲染效果。
此外,本申请可以根据实际产品需求,对可编程渲染管线进行灵活的二次开发,有助于提高渲染策略的灵活性,并且还可以进一步提高渲染效果和渲染过程的跨平台能力。相较于直接对地图引擎进行扩展开发实现渲染,本申请的方案可以降低开发成本。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图1是本申请实施例提供的软件代码架构示意图。参照图1所示,本申请实施例提供的软件代码架构包括三层:地图引擎、适配层和渲染层。其中,地图引擎用于生成地图相关数据。适配层用于调用地图引擎提供的数据访问接口,以访问地图相关数据。渲染层用于调用可编程渲染管线进行渲染。
图2是本申请实施例提供的一种渲染方法的步骤流程图。参照图2所示,本申请的渲染方法可以包括:
S201:通过地图引擎生成点云格式的地图相关数据。
其中,地图引擎也可以成为导航引擎(Navigation Engine),地图引擎可以为Native导航引擎。地图引擎提供的地图相关数据可以包括但不限于:HD(High Definition,高清晰度)地图要素、SD(Standard Definition,标准清晰度)地图要素、样式及属性等。地图引擎中设置有数据访问接口,外部程序调用数据访问接口即可获取到地图引擎生成的地图相关数据,进而可以对地图相关数据进行进一步的处理。
可以理解的是,点云格式的地图相关数据是一个坐标系下的点的数据集,包括但不限于:三维坐标位置、颜色、分类值、强度值、时间信息等。
在一些实施方式中,地图引擎是通过C++编程实现的,生成的地图相关数据包括非托管对象模型。
S202:通过适配层调用地图引擎提供的数据访问接口,对地图相关数据进行处理,生成网格格式的待渲染数据。
其中,点云格式是渲染层无法识别的格式,而网格格式是可编程渲染管线可识别的格式。网格格式用于通过顶点、边和面的组合表示三维对象几何图形,网格格式的数据也可以成为网格模型。
基于此,适配层可以先通过数据访问接口访问地图相关数据,进而可以对点云格式的地图相关数据进行处理,生成网格(mesh)格式的待渲染数据。这样,使可编程渲染管线可以识别待渲染数据,为后续的渲染过程提供了条件。
具体的,待渲染数据可以是将地图相关数据转换格式得到的数据,也可以是转换格式得到的数据进一步预处理得到的数据。
在一些实施方式中,网格格式的待渲染数据的生成过程可以包括:首先,调用地图引擎提供的数据访问接口,将地图相关数据从点云格式转换为网格格式;然后,对网格格式的地图相关数据进行预处理,得到待渲染数据。其中,预处理可以为任意处理,包括但不限于:预加载、扩展、筛选、缓存、并行化处理以及发送等。预处理可以根据实际应用场景灵活实现,可以通过预处理提高数据精度和丰富性,进一步的提高渲染效果。
在一些实施方式中,在将地图相关数据从点云格式转换为网格格式时,可以在适配层中注册处于系统级的第一数据结构,以封装地图相关数据在地图引擎中对应的第二数据结构,再通过适配层调用地图引擎提供的数据访问接口,基于第一数据结构,将地图相关数据从点云格式转换为网格格式。
在将地图相关数据转换为网格格式时,可以将地图相关数据划分为多种类型的地图子数据,每种类型的地图子数据对应一种映射关系,以转换为网格格式,不同类型的地图子数据可以对应不同的映射关系。这样,可以为不同类型的地图子数据选取合适的映射关系,以更准确的实现数据转换,有助于提高渲染准确度,减少由于映射关系错误而导致的数据转换不准确,进而影响渲染准确度。
可以理解的是,本申请实施例通过系统级的第二数据结构对第一数据结构进行封装,以通过系统监听第一数据结构是否出现异常,以在出现异常时,尽快的对异常进行处理。这样,可以更好的保证对第一数据结构的顺利使用,提高代码安全性和健壮性,减少渲染异常的发生。例如,上述地图相关数据包括非托管对象模型C++对象模型,待渲染数据包括托管C#对象模型,第二数据结构包括句柄,用于指向地图相关数据对应的C++对象模型,第一数据结构是C#中用于封装句柄的数据结构IntPtr。这样,在句柄因线程意外终止或堆栈溢出而出现异常时,可以通过系统级的第一数据结构IntPtr实现异常处理,避免句柄异常而导致调用数据访问接口异常。
需要说明的是,上述非托管对象模型和上述托管对象模型之间,在数据类型、方法签名和错误处理机制等方面均存在较大差异,因此,两者之间的代码并不能互用和移植。因此,本申请实施例通过平台调用技术,也就是通过适配层调用数据访问接口的方式,对地图相关数据进行转换和预处理,具有成本较低、可靠性较高以及效率较高的特点。
从上述说明可知,在通过上述方式得到网格格式的地图相关数据之后,还可以对其进行预处理。具体的,当预处理包括预加载时,首先,将磁盘中数据量大于或等于预设阈值的目标数据预加载到池化系统中;然后,对池化系统中的目标数据和网格格式的地图相关数据,进行预处理得到待渲染数据。
其中,目标数据包括以下至少一种:适配层中自定义的几何数据和/或地图相关数据中几何数据相对应的属性数据。几何数据是用于表示几何对象,属性数据用于表示几何对象的属性,几何数据和属性数据均需要以几何对象为单位进行加载。当一个几何对象的几何数据的数据量大于或等于预设阈值时,可以将该几何对象的几何数据预加载到池化系统中;当一个几何对象的属性数据大雨或等于预设阈值时,可以将该几何对象的属性数据预加载到池化系统中。这样,可以减少对目标数据和地图相关数据进行预处理所需要消耗的预加载时长,提高预处理效率,进而减少预处理过程中的卡顿。
在预加载上述目标数据之后,对于地图相关数据中的每个几何对象,需要将地图相关数据中对应的几何数据和其在目标数据中对应的属性数据进行绑定,作为该几何对象的完整数据,以使待渲染数据中包括每个几何对象对应的完整数据,有助于后续渲染的准确进行。
上述池化系统中的目标数据可以对应有效期,在该有效期内,可以重复使用该目标数据,以生成待渲染数据。在该有效期结束时,可以从池化系统中删除该目标数据,这样可以保证目标数据在一定时间内有效,避免目标数据长期占用池化系统,可以节约池化系统的存储资源。
在一些实施方式中,在根据池化系统中的目标数据和地图相关数据,生成待渲染数据时,首先,根据池化系统中的目标数据和网格格式的地图相关数据,生成立体化面元;然后,从立体化面元中删除内部顶点和重复顶点,以得到待渲染数据。
其中,立体化面元是通过顶点扩充得到的,可以使几何对象更加立体化,有助于进一步提高渲染效果。例如,对于高清晰度场景中,可以将绿地的顶部顶点向上继续扩展,生成绿地的立体化面元,实现绿地拔高效果,还可以将水系的底部顶点继续向下扩展,生成水系的立体化面元,实现水系下沉效果,可以营造出更加立体的底图渲染效果。
此外,在顶点扩充得到立体化面元之后,可能会存在一些不同几何对象之间的重复顶点,和/或集合对象的内部顶点。为了进一步提高立体化面元的渲染效果,可以将内部顶点和重复顶点进行删除。
在上述根据池化系统中的目标数据和地图相关数据,生成待渲染数据时,数据量较大会导致计算机运算量较大,运算效率较低,进而导致渲染效率较低。为了提高运算效率和渲染效率,可以将该过程并行进行,包括但不限于:通过多线程并行进行和通过多CPU(Central Processing Unit,中央处理单元)并行进行。具体地,在需要将目标数据和地图相关数据划分为多组待扩展数据,以为每组待扩展数据分配CPU和/或线程,以使其对该组待扩展数据生成立体化面元,并删除内部顶点和重复顶点。
在分配CPU时,可以先获取各CPU的状态,根据其状态为待扩展数据分配CPU。其中,状态可以包括但不限于:是否正常运行、负载情况。因此,可以优先选取正常运行且负载最小的CPU。
同理,在分配线程时,可以先获取各线程的状态,根据其状态为待扩展数据分配线程。因此,可以优先选取正常运行且负载最小的线程。
在得到上述待渲染数据之后,还需要将待渲染数据发送给渲染层,这里的发送策略可以包括但不限于以下两种。
在第一种发送策略中,将所有待渲染数据通过一个事件中心发送给渲染层。
在第二种发送策略中,首先,可以将待渲染数据划分为多个分组,每个分组对应一个事件中心,不同分组可以对应不同的事件中心;然后,对于每个分组,通过该分组对应的事件中心将待渲染数据在该分组中的数据分发给渲染层。
上述两种发送策略中,事件中心均用于通过消息的方式发送待渲染数据,可以在高效发送待渲染数据的同时,降低了适配层和渲染层之间的耦合度,提高了软件的扩展能力和维护能力。此外,相较于第一种发送策略,第二种发送策略可以进一步的提高发送效率。
S203:通过渲染层调用可编程渲染管线对待渲染数据进行渲染。
其中,可编程渲染管线是可以进行二次开发的平台,具有完整的工具链和渲染流程。本申请的可编程渲染管线可以是Unity平台的可编程渲染管线。
在一些实施方式中,调用可编程渲染管线的过程可以包括:通过渲染层确定待渲染数据的复杂度,并通过渲染层确定上述复杂度对应的渲染策略,以调用可编程渲染管线对待渲染数据进行渲染。
其中,复杂度与待渲染数据的精细度相关联。当待渲染数据的精细度越高时,其复杂度越高,渲染要求越高;当待渲染数据的精细度越低时,其复杂度越低,渲染要求越低。
基于上述复杂度和渲染要求,本申请可以为不同复杂度的待渲染数据设置不同的渲染策略。对于复杂度较高的待渲染数据,可以设置渲染效果较高的渲染策略;对于复杂度较低的待渲染数据,可以设置渲染效果较低的渲染策略。因此,相较于针对不同复杂度的待渲染数据设置相同的渲染策略,本申请不仅可以更好的提高渲染质量,还可以在一定程度上降低渲染复杂度。
上述调用可编程渲染管线的渲染过程可以包括三个阶段:应用阶段、几何阶段和光栅化阶段。应用阶段由CPU(Central Processing Unit,中央处理单元)执行,几何阶段和光栅化阶段均由GPU(Graph Processing Unity,图形处理单元)执行。
在可编程渲染管线的应用阶段,渲染层根据待渲染数据生成渲染图元列表,以发送给,渲染图元列表包括至少一个渲染图元和对应的渲染状态,渲染状态和复杂度相关。
其中,渲染状态包括但不限于:材质、纹理、着色器等,因此,不同复杂度的待渲染数据对应不同材质、和/或、不同纹理、和/或、不同着色器。在得到渲染图元列表之后,渲染层可以通过调用渲染绘制指令DrawCall,将渲染图元列表发送给图形处理单元。
在上述应用阶段中,还可以将渲染图元列表中的目标渲染图元进行删除,以将渲染图元列表中的保留渲染图元和渲染状态发送给图形处理单元。其中,目标渲染图元可以包括相机视口外的渲染图元,也就是不会显示的渲染图元,因此,可以在不影响显示的前提下减少渲染图元,进而可以提高渲染效率。
在可编程渲染管线的几何阶段,图形处理单元将渲染图元列表中渲染图元的顶点坐标从模型空间转换为二维空间中的屏幕坐标。
具体地,可以先通过模型变换将顶点坐标从模型空间转换为世界空间中的坐标,再通过观察变换将世界空间中的坐标转换为观察空间的坐标,然后通过投影变换将观察空间的坐标转换为裁剪空间的坐标,最后将裁剪空间的坐标进行屏幕映射得到二维空间中的屏幕坐标。
上述观察空间是以摄像机的位置为原点构建的空间,可以提高渲染的准确度。上述模型变换、观察变换、投影变换和屏幕映射等过程均可以通过矩阵实现,通过对应的矩阵实现对应的坐标变换。
在可编程渲染管线的光栅化阶段,图形处理单元根据屏幕坐标和渲染状态确定像素颜色,以进行像素渲染。
在上述光栅化阶段中,需要将图元像素化。具体的,在图元像素化过程中,根据图元的屏幕坐标确定每个图元所对应的像素,以进行PBS(Physically Based Shading,基于物理着色)光照计算、阴影计算和图像后处理。其中,PBS光照计算包括:直接光照和间接光照(Ambient Occlusion,环境光遮蔽)计算。
在图元像素化之后,还需要进行逐图元操作。具体的,在逐图元操作过程中,对每个图元,需要对其进行可编程的深度测试和模版测试,例如,标准清晰度图元和高清晰度图元因高度问题导致的渲染层级遮挡处理,需要对标准清晰度图元和高清晰度图元采用不同的深度测试,以及导航小地图的图层外边界采用对应的模板测试进行遮罩处理等。
在逐图元操作之后,还需要进行逐图元混合。具体的,对于测试通过的图元,可以将其颜色和已经存储在颜色缓冲区中的颜色进行混合,得到图元的各个像素颜色,以进行像素渲染。
在一种可选的应用场景中,本申请实施例的渲染层使用Unity(一种实时三维互动内容创作和运营平台)提供的可编程渲染管线实现渲染,可编程渲染管线是通过C#实现的。为了提高与Unity的适配性,适配层同样采用C#实现。而地图引擎是通过C++实现的。如此,可以通过适配层实现地图引擎和可编程渲染管线的结合,不仅具有地图引擎较高的数据处理能力,还具有可编程渲染管线的高质量渲染效果和灵活性渲染。
并且,本申请实施例通过地图引擎、适配层和渲染层三层实现,每个层是独立封装的,有助于提高代码的可管理性和可读性。
图3是本申请实施例提供的一种渲染过程的详细流程图。参照图3所示,上述渲染过程的详细流程包括以下步骤。
S301:通过地图引擎生成点云格式的地图相关数据。
S302:在适配层中注册处于系统级的第一数据结构,以封装地图相关数据在地图引擎中对应的第二数据结构。
S303:通过适配层调用地图引擎提供的数据访问接口,基于第一数据结构,将地图相关数据从点云格式转换为网格格式。
S304:将磁盘中数据量大于或等于预设阈值的目标数据预加载到池化系统中,目标数据包括以下至少一种:自定义的几何数据和/或地图相关数据中几何数据相对应的属性数据。
S305:根据池化系统中的目标数据和网格格式的地图相关数据,生成立体化面元。
S306:从立体化面元中删除内部顶点和重复顶点,以得到待渲染数据。
S307:将待渲染数据划分为多个分组。
S308:对于每个分组,通过分组对应的事件中心将待渲染数据在分组中的数据分发给渲染层。
S309:通过渲染层确定待渲染数据的复杂度。
S310:通过渲染层在可编程渲染管线的应用阶段,根据待渲染数据生成渲染图元列表,以发送给图形处理单元,渲染图元列表包括至少一个渲染图元和对应的渲染状态,渲染状态和复杂度相关。
S311:图形处理单元在可编程渲染管线的几何阶段,将渲染图元的顶点坐标从模型空间转换为二维空间中的屏幕坐标。
S312:图形处理单元在可编程渲染管线的光栅化阶段,根据屏幕坐标和渲染状态确定像素颜色,以进行像素渲染。
需要说明的是,上述S301至S312可以在相互独立的基础上,灵活调整顺序,本申请对其顺序不加限制。
图4是本申请实施例提供的一种渲染装置的结构框图,参照图4所示,上述渲染装置400包括:
数据获取模块401,用于通过地图引擎生成点云格式的地图相关数据。
数据处理模块402,用于通过适配层调用所述地图引擎提供的数据访问接口,对所述地图相关数据进行处理,生成网格格式的待渲染数据。
渲染模块403,用于通过渲染层调用可编程渲染管线对所述待渲染数据进行渲染。
可选地,所述数据处理模块402还用于:
调用所述数据访问接口,将所述地图相关数据从所述点云格式转换为所述网格格式;对所述网格格式的所述地图相关数据进行预处理,得到待渲染数据。
可选地,所述数据处理模块402还用于:
在所述适配层中注册处于系统级的第一数据结构,以封装所述地图相关数据在所述地图引擎中对应的第二数据结构;通过所述适配层调用所述地图引擎提供的数据访问接口,基于所述第一数据结构,将所述地图相关数据从所述点云格式转换为所述网格格式。
可选地,所述数据处理模块402还用于:
将磁盘中数据量大于或等于预设阈值的目标数据预加载到池化系统中,所述目标数据包括以下至少一种:自定义的几何数据和/或所述地图相关数据中几何数据相对应的属性数据;对所述池化系统中的目标数据和所述网格格式的所述地图相关数据,进行预处理得到待渲染数据。
可选地,所述数据处理模块402还用于:
根据所述池化系统中的所述目标数据和所述网格格式的所述地图相关数据,生成立体化面元;从所述立体化面元中删除内部顶点和重复顶点,以得到所述待渲染数据。
可选地,所述数据处理模块402还用于:
将所述待渲染数据划分为多个分组;对于每个所述分组,通过所述分组对应的事件中心将所述待渲染数据在所述分组中的数据分发给所述渲染层。
可选地,所述渲染模块403还用于:
通过所述渲染层确定所述待渲染数据的复杂度;通过所述渲染层确定所述复杂度对应的渲染策略,以调用所述可编程渲染管线对所述待渲染数据进行渲染。
可选地,所述渲染模块403还用于:
通过所述渲染层在所述可编程渲染管线的应用阶段,根据所述待渲染数据生成渲染图元列表,以发送给图形处理单元,所述渲染图元列表包括至少一个渲染图元和对应的渲染状态,所述渲染状态和所述复杂度相关;所述图形处理单元在所述可编程渲染管线的几何阶段,将所述渲染图元的顶点坐标从模型空间转换为二维空间中的屏幕坐标;所述图形处理单元在所述可编程渲染管线的光栅化阶段,根据所述屏幕坐标和所述渲染状态确定像素颜色,以进行像素渲染。
可选地,所述地图相关数据包括非托管对象模型,所述待渲染数据包括托管对象模型,所述第二数据结构包括句柄。
上述装置实施例与前述方法实施例对应,具体说明可以参照前述方法实施例中的说明,本申请实施例在此不再赘述。
图5是本申请实施例提供的一种电子设备的结构框图。该电子设备600包括存储器602和至少一个处理器601。
其中,存储器602存储计算机执行指令。
至少一个处理器601执行存储器602存储的计算机执行指令,使得电子设备600实现前述图2中的方法。
此外,该电子设备600还可以包括接收器603和发送器604,接收器603用于接收从其余装置或设备的信息,并转发给处理器601,发送器604用于将信息发送到其余装置或设备。
在示例性实施例中,还提供了一种非临时性的计算机可读存储介质,该计算机可读存储介质中存储有计算机执行指令,该计算机执行指令被处理器执行时用于实现上述渲染方法。
在示例性实施例中,还提供了一种计算机程序产品,用于实现前述渲染方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (12)
1.一种渲染方法,其特征在于,所述方法包括:
通过地图引擎生成点云格式的地图相关数据;
通过适配层调用所述地图引擎提供的数据访问接口,对所述地图相关数据进行处理,生成网格格式的待渲染数据;
通过渲染层调用可编程渲染管线对所述待渲染数据进行渲染。
2.根据权利要求1所述的方法,其特征在于,所述通过适配层调用所述地图引擎提供的数据访问接口,对所述地图相关数据进行处理,生成网格格式的待渲染数据,包括:
调用所述数据访问接口,将所述地图相关数据从所述点云格式转换为所述网格格式;
对所述网格格式的所述地图相关数据进行预处理,得到待渲染数据。
3.根据权利要求2所述的方法,其特征在于,所述调用所述数据访问接口,将所述地图相关数据从所述点云格式转换为所述网格格式,包括:
在所述适配层中注册处于系统级的第一数据结构,以封装所述地图相关数据在所述地图引擎中对应的第二数据结构;
通过所述适配层调用所述地图引擎提供的数据访问接口,基于所述第一数据结构,将所述地图相关数据从所述点云格式转换为所述网格格式。
4.根据权利要求2所述的方法,其特征在于,所述对所述网格格式的所述地图相关数据进行预处理,得到待渲染数据,包括:
将磁盘中数据量大于或等于预设阈值的目标数据预加载到池化系统中,所述目标数据包括以下至少一种:自定义的几何数据和/或所述地图相关数据中几何数据相对应的属性数据;
对所述池化系统中的目标数据和所述网格格式的所述地图相关数据,进行预处理得到待渲染数据。
5.根据权利要求4所述的方法,其特征在于,所述对所述池化系统中的目标数据和所述网格格式的所述地图相关数据,进行预处理得到待渲染数据,包括:
根据所述池化系统中的所述目标数据和所述网格格式的所述地图相关数据,生成立体化面元;
从所述立体化面元中删除内部顶点和重复顶点,以得到所述待渲染数据。
6.根据权利要求5所述的方法,其特征在于,所述从所述立体化面元中删除内部顶点和重复顶点,以得到所述待渲染数据之后,还包括:
将所述待渲染数据划分为多个分组;
对于每个所述分组,通过所述分组对应的事件中心将所述待渲染数据在所述分组中的数据分发给所述渲染层。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述通过渲染层调用可编程渲染管线对所述待渲染数据进行渲染,包括:
通过所述渲染层确定所述待渲染数据的复杂度;
通过所述渲染层确定所述复杂度对应的渲染策略,以调用所述可编程渲染管线对所述待渲染数据进行渲染。
8.根据权利要求7所述的方法,其特征在于,所述通过所述渲染层确定所述复杂度对应的渲染策略,以调用所述可编程渲染管线对所述待渲染数据进行渲染,包括:
通过所述渲染层在所述可编程渲染管线的应用阶段,根据所述待渲染数据生成渲染图元列表,以发送给图形处理单元,所述渲染图元列表包括至少一个渲染图元和对应的渲染状态,所述渲染状态和所述复杂度相关;
所述图形处理单元在所述可编程渲染管线的几何阶段,将所述渲染图元的顶点坐标从模型空间转换为二维空间中的屏幕坐标;
所述图形处理单元在所述可编程渲染管线的光栅化阶段,根据所述屏幕坐标和所述渲染状态确定像素颜色,以进行像素渲染。
9.根据权利要求3至6任一项所述的方法,其特征在于,所述地图相关数据包括非托管对象模型,所述待渲染数据包括托管对象模型,所述第二数据结构包括句柄。
10.一种渲染装置,其特征在于,包括:
数据获取模块,用于通过地图引擎生成点云格式的地图相关数据;
数据处理模块,用于通过适配层调用所述地图引擎提供的数据访问接口,对所述地图相关数据进行处理,生成网格格式的待渲染数据;
渲染模块,用于通过渲染层调用可编程渲染管线对所述待渲染数据进行渲染。
11.一种电子设备,包括存储器和至少一个处理器;
其中,所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的所述计算机执行指令,使得所述电子设备实现权利要求1至9任一项所述的渲染方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311361765.3A CN117710549A (zh) | 2023-10-19 | 2023-10-19 | 渲染方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311361765.3A CN117710549A (zh) | 2023-10-19 | 2023-10-19 | 渲染方法及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117710549A true CN117710549A (zh) | 2024-03-15 |
Family
ID=90161297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311361765.3A Pending CN117710549A (zh) | 2023-10-19 | 2023-10-19 | 渲染方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117710549A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118069773A (zh) * | 2024-04-18 | 2024-05-24 | 杭州涂鸦信息技术有限公司 | 地图构建系统及方法 |
-
2023
- 2023-10-19 CN CN202311361765.3A patent/CN117710549A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118069773A (zh) * | 2024-04-18 | 2024-05-24 | 杭州涂鸦信息技术有限公司 | 地图构建系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8325177B2 (en) | Leveraging graphics processors to optimize rendering 2-D objects | |
JP4769984B2 (ja) | タイルベース・グラフィック・レンダリング | |
US8907968B2 (en) | Image rendering device, image rendering method, and image rendering program for rendering stereoscopic panoramic images | |
CN107358649B (zh) | 地形文件的处理方法和装置 | |
CN111402374B (zh) | 多路视频与三维模型融合方法及其装置、设备和存储介质 | |
CN106528096B (zh) | 一种在d3d12全屏游戏源上绘制弹幕图像的方法及系统 | |
CN113947657B (zh) | 目标模型的渲染方法、装置、设备及存储介质 | |
US9536333B2 (en) | Method and apparatus for improved processing of graphics primitives | |
EP3419286A1 (en) | Processing of 3d image information based on texture maps and meshes | |
CN109785417B (zh) | 一种实现OpenGL累积操作的方法及装置 | |
CN111400024B (zh) | 渲染过程中的资源调用方法、装置和渲染引擎 | |
CN106990961B (zh) | 一种WebGL图形渲染引擎的建立方法 | |
CN111047506B (zh) | 环境图生成和孔填充 | |
CN117710549A (zh) | 渲染方法及设备 | |
KR20230007358A (ko) | 증강 현실을 위한 멀티레이어 재투영 기법들 | |
CN113593027B (zh) | 一种三维航电显控界面装置 | |
CN111754381A (zh) | 图形渲染方法、装置和计算机可读存储介质 | |
US10733782B2 (en) | Graphics processing systems | |
CN110910504A (zh) | 区域的三维模型的确定方法及装置 | |
CN114002701A (zh) | 一种实时渲染点云的方法、装置、电子设备及系统 | |
CN114092575B (zh) | 数字地球实时着色方法和装置 | |
US20150015574A1 (en) | System, method, and computer program product for optimizing a three-dimensional texture workflow | |
CN111798554A (zh) | 一种渲染参数确定方法、装置、设备及存储介质 | |
KR20180038793A (ko) | 영상 데이터 처리 방법 및 장치 | |
US20230316626A1 (en) | Image rendering method and apparatus, computer device, and computer-readable storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |