CN116681811B - 图像渲染方法、电子设备及可读介质 - Google Patents
图像渲染方法、电子设备及可读介质 Download PDFInfo
- Publication number
- CN116681811B CN116681811B CN202211136706.1A CN202211136706A CN116681811B CN 116681811 B CN116681811 B CN 116681811B CN 202211136706 A CN202211136706 A CN 202211136706A CN 116681811 B CN116681811 B CN 116681811B
- Authority
- CN
- China
- Prior art keywords
- rendering
- image
- pixel
- channel
- model
- 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.)
- Active
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 560
- 238000000034 method Methods 0.000 title claims abstract description 121
- 230000002194 synthesizing effect Effects 0.000 claims abstract description 10
- 239000000463 material Substances 0.000 claims description 31
- 238000007667 floating Methods 0.000 claims description 24
- 230000008569 process Effects 0.000 claims description 22
- 238000003860 storage Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 11
- 238000005070 sampling Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 description 24
- 238000012545 processing Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 12
- 238000004422 calculation algorithm Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 8
- 238000010295 mobile communication Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 7
- 238000002310 reflectometry Methods 0.000 description 7
- 238000004040 coloring Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000003190 augmentative effect Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 229920001621 AMOLED Polymers 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000005286 illumination Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000001465 metallisation Methods 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000002096 quantum dot Substances 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000000007 visual effect Effects 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
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/04—Indexing scheme for image data processing or generation, in general involving 3D image data
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本申请提供了一种图像渲染方法、电子设备及介质,该图像渲染方法包括:响应于图像渲染的命令,获取三维场景中多个模型的模型数据,多个模型中的每个模型的模型数据包括模型的待渲染数据以及模型对应的渲染管线标识,多个模型中的每个模型对应的渲染管线标识用于指示电子设备的一个渲染管线;针对三维场景中的多个模型,分别调用每个模型对应的渲染管线标识指示的渲染管线,渲染模型的待渲染数据,得到渲染管线的渲染结果;合成三维场景中的多个模型对应的渲染管线的渲染结果,得到渲染图像。实现了在不降低图像质量的前提下,降低电子设备执行图像渲染方法的算力要求和功耗要求。
Description
技术领域
本申请涉及图像处理技术领域,尤其涉及一种图像渲染方法、电子设备、计算机程序产品及计算机可读存储介质。
背景技术
随着计算机技术的发展,越来越多的应用程序要求在电子设备上显示画质精美的图像。这些图像通常是由电子设备基于三维场景中的模型进行渲染得到。
电子设备通常采用光栅化对三维场景进行渲染,以得到能够显示三维场景的图像。然而,采用光栅化进行渲染所得到的图像的品质一般,往往难以呈现逼真的画面,尤其难以真实还原三维场景中的光线反射、折射以及阴影等效果。基于此,实时光线追踪技术以及路径追踪技术开始逐渐应用于电子设备。但是,电子设备利用实时光线追踪或路径追踪对三维场景中的模型进行渲染,对电子设备的算力有一定的要求,算力受限的电子设备往往无法应用实时光线追踪技术或路径追踪。即便电子设备的算力足以支持应用实时光线追踪技术或路径追踪技术,电子设备利用实时光线追踪技术或路径追踪技术对三维场景中的模型进行渲染,还存在功耗较高的问题。
发明内容
本申请提供了一种图像渲染方法、电子设备、计算机程序产品及计算机可读存储介质,目的在于实现在不降低图像质量的前提下,降低电子设备执行图像渲染方法的算力要求和功耗要求。
为了实现上述目的,本申请提供了以下技术方案:
第一方面,本申请提供了一种应用于电子设备的图像渲染方法,该电子设备包括光栅化渲染管线、实时光线追踪渲染管线以及路径追踪渲染管线,图像渲染方法包括:响应于图像渲染的命令,获取三维场景中多个模型的模型数据,多个模型中的每个模型的模型数据包括模型的待渲染数据以及模型对应的渲染管线标识,多个模型中的每个模型对应的渲染管线标识用于指示电子设备的一个渲染管线;针对三维场景中的多个模型,分别调用每个模型对应的渲染管线标识指示的渲染管线,渲染模型的待渲染数据,得到渲染管线的渲染结果;合成三维场景中的多个模型对应的渲染管线的渲染结果,得到渲染图像。
由上述内容可以看出:三维场景中的每一个模型的模型数据包括该模型进行渲染时采用的渲染管线的渲染管线标识,因此,电子设备渲染每一个模型时,利用该模型对应的渲染管线标识指示的渲染管线进行渲染。进一步,由于渲染管线可包括光栅化渲染管线、实时光线追踪渲染管线以及路径追踪渲染管线。因此,三维场景中的每一个模型,可以根据业务需求,选择三种渲染管线中的一种进行渲染,实现了一个三维场景中的全部模型,分别由光栅化渲染管线、实时光线追踪渲染管线以及路径追踪渲染管线中的一种渲染完成,进一步实现渲染出的图像,在保证图像的质量的同时,还降低移动设备的算力要求和功耗。
在一个可能的实施方式中,针对三维场景中的多个模型,分别调用每个模型对应的渲染管线标识指示的渲染管线,渲染模型的待渲染数据,得到渲染管线的渲染结果,包括:针对三维场景中的多个不透明模型,分别调用每个不透明模型对应的渲染管线标识指示的渲染管线,渲染不透明模型的待渲染数据,得到渲染管线的第一渲染结果;针对三维场景中的多个半透明模型,分别调用每个半透明模型对应的渲染管线标识指示的渲染管线,渲染半透明模型的待渲染数据,得到渲染管线的第二渲染结果;其中,渲染管线的第一渲染结果和第二渲染结果的叠加结果,为渲染管线的渲染结果。
在一个可能的实施方式中,针对三维场景中的多个不透明模型,分别调用每个不透明模型对应的渲染管线标识指示的渲染管线,渲染不透明模型的待渲染数据,得到渲染管线的第一渲染结果之前,还包括:对三维场景中的多个不透明模型的待渲染数据进行渲染,得到四张图像,四张图像的通道数据为三维场景中的多个不透明模型的待渲染数据;其中,针对三维场景中的多个不透明模型,分别调用每个不透明模型对应的渲染管线标识指示的渲染管线,渲染不透明模型的待渲染数据,得到渲染管线的第一渲染结果,包括:针对三维场景中的多个不透明模型,分别调用每个不透明模型对应的渲染管线标识指示的渲染管线,渲染四张图像的通道数据,得到渲染管线的第一渲染结果。
在本可能的实施方式中,针对三维场景中的不透明模型,进行渲染之前,先对三维场景中的不透明模型的模型数据进行渲染,得到四张图像,可去除三维场景中的无效模型的模型数据对渲染流程的干扰,以及实现对不透明模型进行渲染时,不需要遍历三维场景,只遍历图像的像素,仅对每个像素进行着色,缩小了计算量。
在一个可能的实施方式中,针对三维场景中的多个半透明模型,分别调用每个半透明模型对应的渲染管线标识指示的渲染管线,渲染半透明模型的待渲染数据,得到渲染管线的第二渲染结果的过程中,还包括:生成掩膜图像,掩膜图像的像素的通道数据,用于指示渲染图像中、且与掩膜图像中像素的同等位置的像素的通道数据的来源;其中:合成三维场景中的多个模型对应的渲染管线的渲染结果,得到渲染图像,包括:利用掩膜图像,合成三维场景中的多个模型对应的渲染管线的渲染结果,得到渲染图像。
在一个可能的实施方式中,三维场景中的多个模型对应的渲染管线中,光栅化渲染管线的渲染结果和实时光线追踪渲染管线的渲染结果为第一图像,路径追踪渲染管线的渲染结果为第二图像。
在本可能的实施方式中,光栅化渲染管线的渲染结果和实时光线追踪渲染管线的渲染结果为第一图像,可适配电子设备中,实时光线追踪渲染管线嵌入光栅化渲染管线中,且可降低电子设备采用光栅化渲染管线和实时光线追踪渲染管线渲染图像的功耗。
在一个可能的实施方式中,利用掩膜图像,合成三维场景中的多个模型对应的渲染管线的渲染结果,得到渲染图像,包括:针对掩膜图像中的第一类像素,采样第一图像在第一类像素同等位置的像素的通道数据,作为渲染图像在第一类像素同等位置的像素的通道数据;针对掩膜图像中的第二类像素,采样第二图像在第二类像素同等位置的像素的通道数据,作为渲染图像在第二类像素同等位置的像素的通道数据;针对掩膜图像中的第三类像素,采样第一图像在第三类像素同等位置的像素的通道数据,以及采样第二图像在第三类像素同等位置的像素的通道数据;利用第一图像在第三类像素同等位置的像素的通道数据,以及第二图像在第三类像素同等位置的像素的通道数据,计算出渲染图像在第三类像素同等位置的像素的通道数据;其中,第一类像素在掩膜图像的第一通道的通道数据为第一值,在掩膜图像的第二通道的通道数据为第二值;第二类像素在第一通道的通道数据为第二值,在第二通道的通道数据为第一值;第三类像素在第一通道的通道数据,与在第二通道的通道数据相同。
在一个可能的实施方式中,利用第一图像在第三类像素同等位置的像素的通道数据,以及第二图像在第三类像素同等位置的像素的通道数据,计算出渲染图像在第三类像素同等位置的像素的通道数据,包括:针对掩膜图像中的第三类像素的第一种像素,将第一图像在第三类像素的第一种像素同等位置的像素的通道数据,以及第二图像在第三类像素的第一种像素同等位置的像素的通道数据的和,作为渲染图像在第三类像素的第一种像素同等位置的像素的通道数据;针对掩膜图像中的第三类像素的第二种像素,将第一图像在第三类像素的第二种像素同等位置的像素的通道数据,以及第二图像在第三类像素的第二种像素同等位置的像素的通道数据的加权和,作为渲染图像在第三类像素的第二种像素同等位置的像素的通道数据;其中,掩膜图像中的第三类像素的第一种像素在第一通道的通道数据为第一值,在第二通道的通道数据为第一值;掩膜图像中的第三类像素的第二种像素在第一通道的通道数据为第二值,在第二通道的通道数据为第二值;第一图像在第三类像素的第二种像素同等位置的像素的通道数据的权重,用于反映第一图像在第三类像素的第二种像素的透明度;第二图像在第三类像素的第二种像素同等位置的像素的通道数据的权重,用于反映第二图像在第三类像素的第二种像素的透明度。
在一个可能的实施方式中,三维场景中的每个不透明模型的待渲染数据中的几何信息包括:不透明模型的法线坐标和深度信息;四张图像包括:三张RGBA四通道浮点型图像和一张深度模板图像;其中:深度模板图像的通道数据为三维场景中的多个不透明模型的深度信息;三张RGBA四通道浮点型图像的通道数据为:三维场景中的多个不透明模型的法线坐标,以及多个不透明模型的待渲染数据中的材质信息。
在本可能的实施方式中,RGBA四通道浮点型图像是指图像的每个像素的RGBA每个通道都是32位浮点数,基于此,RGBA四通道浮点型图像可以表示的数据范围更大,也更精确,可以保证能够将几何信息和材质信息等完整的记录。
在一个可能的实施方式中,响应于图像渲染的命令,获取三维场景中多个模型的模型数据包括:响应于电子设备的应用的图像渲染的命令,获取电子设备的应用下发的三维场景中多个模型的模型数据,电子设备的应用为电子设备的系统应用程序,或者电子设备安装的第三方应用程序。
第二方面,本申请提供了一种电子设备,包括:一个或多个处理器、存储器和显示屏;存储器和显示屏与一个或多个处理器耦合,处理器包括光栅化渲染管线、实时光线追踪渲染管线以及路径追踪渲染管线,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,电子设备执行第一方面中任意一项所述的图像渲染方法。
第三方面,本申请提供了一种计算机可读存储介质,用于存储计算机程序,计算机程序被执行时,具体用于实现如第一方面中任意一项所述的图像渲染方法。
第四方面,本申请提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行如第一方面中任意一项所述的图像渲染方法。
附图说明
图1为本申请实施例提供的图像渲染方法的应用场景图;
图2为本申请实施例提供的电子设备的硬件结构图;
图3为本申请实施例提供的电子设备的软件框架图;
图4为本申请实施例提供的电子设备的软件模块执行图像渲染方法的展示图;
图5为本申请实施例提供的一种图像渲染方法的原理展示图;
图6-a、图6-b和图6-c为本申请实施例提供的一种图像渲染方法的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本申请实施例中,“一个或多个”是指一个、两个或两个以上;“和/或”,描述关联对象的关联关系,表示可以存在三种关系;例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B 的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请实施例涉及的多个,是指大于或等于两个。需要说明的是,在本申请实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
在介绍本申请实施例之前,首先对本申请实施例涉及的一些术语或概念进行解释。应理解,本申请对以下术语的命名不作具体限定。以下术语可以有其他命名。重新命名的术语仍满足以下相关的术语解释。
1)渲染引擎(Rendering engine)
渲染是指用软件从模型生成图像的过程,其中,模型是用语言或者数据结构对于三维物体(或称物体、三维模型、模型)的描述,它包括几何、视点、纹理以及照明信息等。图像可以包括数字图像或者位图图像。渲染引擎则可以理解成是利用渲染算法将模型生成图像的软件。一些实施例中,渲染引擎可设置于图形处理器(graphics processing unit,GPU)。
目前,渲染引擎在游戏娱乐、军事、视频制作、地质勘探以及实时模拟等方面有着十分广泛的应用。视频制作已经成为当今渲染引擎发展的重要应用领域,渲染引擎应用于视频制作,决定着视频中画面的真实感、流畅度以及吸引力,用户所看到的的画面、场景、色彩效果等内容都是由渲染引擎直接控制。
2)光栅化(Rasterization)
光栅化是图像渲染的一种实现方法。它是将三维场景中的物体表面采用三角形的形式进行分割,将每个物体的表面分割成若干个三角面,通过坐标变化以及坐标计算的方式,将三角面的三维坐标映射到二维图像上的二维坐标,最后将图像上的三角面覆盖的区域拆解成一个个像素,通过对一个个像素的渲染来实现对整张图像的渲染。
3)实时光线追踪(Real-time Ray Tracing)
光线追踪也是图像渲染的一种实现方法。光线追踪是一种基于模拟真实光线弹射路径渲染成像的技术。其基本工作原理是:从摄像头的位置,通过图像平面上的像素位置,发射一束光线到三维场景中,求光线和几何图形间最近的交点,再求该交点的着色。如果该交点的材质是反射性的,可以在该交点向的反射方向继续追踪,并且继续求取反射后的交点的着色。也就是说,光线追踪是通过追踪光线在三维场景中的传播过程,根据三维场景的模型本身的材质属性同时综合光线路径信息,计算出该模型最终在画面中每一个像素点的颜色信息,从而实现将整个三维场景渲染到一张图像上。然而,由于光线追踪过程中需要追踪三维场景中的每一条光线,其计算开销很大,功耗较高。
目前,移动端应用的光线追踪渲染技术,可称呼为实时光线追踪技术,可以理解成是光线追踪渲染技术的简化版,其能实现光线查询,即仅能实现从摄像头的位置,通过图像平面上的像素位置,发射一束光线到三维场景中,求光线和几何图形间最近的交点,求该交点的着色,无法对该交点的反射方向进行继续追踪。其中,移动端是指在手机、平板等移动设备所使用的客户端软件。
4)路径追踪(Path Tracing)
路径追踪也是图像渲染的一种实现方法。路径追踪与光线追踪的基本工作原理相同,也可以称呼为光线追踪,能够实现通过从视点发出一条光线,光线会与物体表面相交产生反射,根据物体表面的材质属性采样其中一个反射方向,发出另一条光线,如此迭代,直到光线打到光源上或场景外,然后用蒙特卡洛积分的方法计算出光线的贡献值,将此数值作为像素的颜色值写入渲染图像,最终完成整个图像渲染过程。
5)渲染管线(pipeline)
渲染管线也称为渲染流水线、像素流水线或像素管线,是GPU内部处理图形单元信号相互独立的并行处理单元。渲染管线的主要目的就是为了在给定虚拟相机、三维物体、光源、照明模式以及纹理等诸多条件下,生成或绘制出一幅二维图像。
随着计算机技术的发展,越来越多的应用程序,例如游戏应用、VR/AR应用或者视频应用等应用程序,要求在手机、平板等移动设备上显示画质精美的图像。这些图像通常是由移动设备基于三维(three dimensional,3D)场景中的模型进行渲染得到的。图1展示了手机采用图像渲染技术渲染得到的一张图像的画面。该图像包括不透明模型-两栋高楼101,还包括半透明模型-太阳光反射在高楼上形成的光影102。
在传统的图像渲染方法中,移动设备通常采用光栅化对3D场景进行渲染,以得到能够显示3D场景的图像。然而,采用光栅化进行渲染所得到的图像的品质一般,往往难以呈现逼真的画面,尤其难以真实还原3D场景中的光线反射、折射以及阴影等效果。示例性的,图1展示的图像中,移动设备若采用光栅化渲染光影102,光影102的真实度不高。
基于此,实时光线追踪技术以及路径追踪技术开始逐渐应用于移动设备。但是,移动设备利用实时光线追踪或路径追踪技术对三维场景中的模型进行渲染,对移动设备的算力有一定的要求,算力受限的移动设备往往无法应用实时光线追踪技术以及路径追踪技术。即便移动设备的算力足以支持应用实时光线追踪技术以及路径追踪技术,移动设备利用实时光线追踪技术或路径追踪技术对三维场景中的模型进行渲染,还存在功耗较高的问题。
为实现移动设备对三维场景中的模型进行渲染得到图像的过程中,在保证图像的质量的同时,还降低移动设备的算力要求和功耗,本申请实施例提供了一种图像渲染方法。并且,本申请实施例提供的图像渲染方法可以适用于手机,平板电脑,个人数字助理(Personal Digital Assistant,PDA),虚拟现实(virtual reality,VR)设备、增强现实(augmented reality,AR)设备,可穿戴电子设备和智能手表等移动设备;也适用于桌面型、膝上型、笔记本电脑,超级移动个人计算机(Ultra-mobile Personal Computer,UMPC),手持计算机和上网本等PC设备。以下将移动设备和PC设备统称为电子设备。
以手机为例,图2为本申请实施例提供的一种电子设备的组成示例。如图2所示,电子设备200可以包括处理器210、内部存储器220、传感器模块230、移动通信模块240、无线通信模块250、以及显示屏260等。
可以理解的是,本实施例示意的结构并不构成对电子设备200的具体限定。在另一些实施例中,电子设备200可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器210可以包括一个或多个处理单元,例如:处理器210可以包括中央处理器(Central Processing Unit,CPU),调制解调处理器,图形处理器(graphics processingunit, GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,智能传感集线器(sensorhub)和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
在一些实施例中,GPU用于通过渲染管线生成渲染目标,并通过操作系统的图层合成显示模块将渲染目标显示到显示屏260。GPU可以包括多个渲染管线,多个渲染管线之间可以相互独立地并行处理图形信号。
本申请实施例中,GPU可包括光栅化渲染管线、实时光线追踪渲染管线和路径追踪渲染管线。并且,光栅化渲染管线、实时光线追踪渲染管线和路径追踪渲染管线可设置唯一标识进行区分,例如设置id。一些实施例中,实时光线追踪渲染管线还可嵌入光栅化渲染管线中,基于此,实时光线追踪渲染管线和光栅化渲染管线的渲染结果输出到一张图像。
处理器210中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器210 中的存储器为高速缓冲存储器。该存储器可以保存处理器210刚用过或循环使用的指令或数据。如果处理器210需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器210的等待时间,因而提高了系统的效率。
内部存储器220可以用于存储计算机可执行程序代码,可执行程序代码包括指令。处理器210通过运行存储在内部存储器220的指令,从而执行电子设备200的各种功能应用以及数据处理。内部存储器220可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备200使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器220可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器210通过运行存储在内部存储器220的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备200的各种功能应用以及数据处理。
一些实施例中,内部存储器220存储的是用于执行图像渲染操作的指令。处理器210 可以通过执行存储在内部存储器220中的指令,实现控制电子设备进行图像渲染的操作,并最终将图像渲染的结果显示在显示屏260上。
电子设备通过GPU,显示屏260,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏260和应用处理器。GPU通过执行数学和几何计算,用于图像渲染。处理器210可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏260用于显示图像,视频界面等。显示屏260包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emitting diode, OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,AMOLED),柔性发光二极管(flex light-emitting diode,FLED),Miniled, MicroLed,Micro-oled,量子点发光二极管(quantumdot light emitting diodes,QLED)等。在一些实施例中,电子设备可以包括1个或N个显示屏260,N为大于1的正整数。
电子设备200的无线通信功能可以通过天线1,天线2,移动通信模块240,无线通信模块250,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备200中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块240可以提供应用在电子设备200上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块240可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块240可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块240还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块240的至少部分功能模块可以被设置于处理器210中。在一些实施例中,移动通信模块240的至少部分功能模块可以与处理器210的至少部分模块被设置在同一个器件中。
无线通信模块250可以提供应用在电子设备200上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation, FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块250可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块250经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器210。无线通信模块250还可以从处理器210接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
传感器模块230中,压力传感器230A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器230A可以设置于显示屏260。压力传感器230A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器230A,电极之间的电容改变。电子设备根据电容的变化确定压力的强度。当有触摸操作作用于显示屏 260,电子设备根据压力传感器230A检测触摸操作强度。电子设备也可以根据压力传感器 230A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。
触摸传感器230B,也称“触控器件”。触摸传感器230B可以设置于显示屏260,由触摸传感器230B与显示屏260组成触摸屏,也称“触控屏”。触摸传感器230B用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏260提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器230B也可以设置于电子设备的表面,与显示屏260所处的位置不同。
另外,在上述部件之上,电子设备运行有操作系统。例如操作系统,/>操作系统,/>操作系统等。在操作系统上可以安装运行应用程序。
图3为本申请实施例提供的电子设备的软件结构示意图。
分层架构将电子设备的操作系统分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,电子设备的操作系统为Android系统。Android 系统可以分为五层,从上至下分别为应用程序(application,APP)层、应用程序框架层(简称为FWK)、系统库、内核层以及硬件层。
应用程序层可以包括一系列应用程序包。如图3所示,应用程序包可以包括图库、地图、日历、通话、相机、视频应用、游戏应用和VR/AR应用等应用程序。
地图、视频应用、游戏应用和VR/AR应用可以为操作系统自带的原生应用程序,或者也可以为第三方应用程序。地图可用于提供全国地图浏览、导航等功能;视频应用可用于播放、编辑视频;游戏应用用于提供游戏服务;VR/AR应用可以理解成支持虚拟现实或增强现实技术的应用。
一些实施例中,地图、视频应用、游戏应用或者VR/AR应用运行过程中,需要显示图像时,该图像可采用本申请实施例提供的图像渲染方法渲染得到。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。如图3所示,应用程序框架层可以包括窗口管理器,内容提供器,电话管理器,资源管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
电话管理器用于提供电子设备的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。在本申请一些实施例中,应用冷启动会在Android runtime中运行,Android runtime由此获取到应用的优化文件状态参数,进而Android runtime可以通过优化文件状态参数判断优化文件是否因系统升级而导致过时,并将判断结果返回给应用管控模块。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager)、媒体库(Media Libraries)、三维图形处理库(例如:OpenGL ES)、二维图形引擎(例如:SGL)以及渲染引擎等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染、合成和图层处理等。
二维图形引擎是2D绘图的绘图引擎。
渲染引擎的功能如前述内容,此处不再赘述。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,传感器驱动等。一些实施例中,显示驱动用于控制显示屏显示图像;传感器驱动用于控制多个传感器运行,如控制压力传感器和触摸传感器运行。
在上述四层架构之下,接收设备还设置有硬件层,硬件层可包括前述提出的电子设备硬件部件。示例性的,图3展示了显示屏和GPU。其中,GPU如前述内容,可包括光栅化渲染管线、实时光线追踪渲染管线和路径追踪渲染管线。
需要说明的是,本申请实施例虽然以系统为例进行说明,但是其基本原理同样适用于基于/>等操作系统的电子设备。
以下以应用程序层的VR/AR应用为例,对本申请实施例提供的图像渲染方法的一种应用场景进行介绍。
如图4所示,VR/AR应用需要更新显示的图像时,可通过应用程序框架层的渲染框架向渲染引擎下发一个三维场景的模型数据;其中,三维场景的模型数据可包括:三维场景中每个模型的几何信息和材质信息、每个模型对应的渲染管线标识(id),每个模型的透明度信息等。
渲染引擎接收到三维场景的模型数据,利用本申请实施例提供的图像渲染方法处理该三维场景的模型数据,得到渲染图像。渲染引擎可将该渲染图像再经过应用程序框架层的渲染框架向VR/AR应用上传该渲染图像。
VR/AR应用接收到渲染图像,若需要显示该渲染图像,则通过应用程序框架层向显示驱动下发该渲染图像的图像数据,由显示驱动控制显示屏显示渲染图像。当然,VR/AR应用也可以将该渲染图像的图像数据提供给图库应用,由图库应用进行保存。
图5展示了本申请实施例提供的图像渲染方法的原理展示图。以下结合图5,对本申请实施例提供的图像渲染方法的基本原理进行介绍。
如图5所示,渲染引擎接收上层应用程序下发的三维场景中模型的模型数据。并且,渲染引擎接收上层应用程序下发的三维场景的模型数据,可以理解成是场景加载或场景更新。三维场景中模型的模型数据可包括:三维场景中每个模型的模型数据,每个模型的模型数据通常包括:模型的几何信息和材质信息、模型对应的渲染管线标识,模型的透明度信息等。
其中,模型的几何信息用于表示模型的外形,即用于定义模型的外观形状,例如模型可以为球形、立方形。模型一般都是由三角形的网格组成,因此模型的几何信息指代三角形的顶点的空间位置坐标,法线坐标,深度信息以及纹理坐标等。
材质信息用于定义模型与光线交互的行为特诊参数。不同的物质对光线的反射、折射性质不一样,这样才能决定着物体看上去的外观颜色,粗糙度等。材质信息一般包含:模型的基础颜色信息,模型的环境光遮蔽数据,模型的反射率,模型的粗糙度以及模型的金属度等。
通常情况下,渲染引擎加载完成三维场景的模型数据,即完成场景更新之后,可确定三维场景中的模型是否进行了更新。一些实施例中,三维场景中的模型的更新是指模型空间位置更新,可以体现在:模型空间坐标和模型空间矩阵的变化,以及模型的顶点位移调整造成的空间位置变化。
之后,渲染引擎对三维场景中的不透明模型采用光栅化技术进行渲染,将每一个不透明模型的几何信息和材质信息渲染到三张RGBA四通道浮点型图像和一张深度模板图像,三张RGBA四通道浮点型图像和一张深度模板图像组成几何缓冲(Geometry Buffer,GBuffer)。GBuffer指用于存储模型的颜色、法线、世界空间坐标等信息的缓冲区。
其中,三张RGBA四通道浮点型图像分别是:
图像一是反照率/渲染管线标识(Albedo/id),图像一的RGB通道存储不透明模型的基础颜色信息,A通道存储标识该不透明模型使用的渲染管线的渲染管线id。
图像二是法线/环境光遮蔽数据(Normal/AO),图像二的RGB通道存储不透明模型的法线坐标,A通道存储不透明模型的环境光遮蔽数据。
图像三是粗糙度/反射率(Roughness/Reflectivity),图像三的R通道存储不透明模型的粗糙度,G通道存储不透明模型的反射率;B通道存储不透明模型的金属度,A通道留存,可用于提供保存其他数据。
深度模板图像是Depth Buffer,深度模板图像的深度通道用于存储不透明模型的深度信息,模板通道留存,也可用于提供保存其他数据。
需要说明的是,RGBA四通道浮点型图像是指图像的每个像素的RGBA每个通道都是32位浮点数,传统的RGBA四通道图像的每个像素的RGBA每个通道都是8位整数。基于此,RGBA四通道浮点型图像和传统的RGBA四通道图像相比,RGBA四通道浮点型图像可以表示的数据范围大得多,也精确得多。
通常情况下,不透明模型的几何信息和材质信息,如空间坐标,其精度可达到小数点后几位,因此,采用浮点型图像来保存不透明模型的几何信息和材质信息,可以保证几何信息和材质信息等能够被完整的记录。
Drawcall是CPU对底层图像绘制接口的调用命令,命令GPU执行图像渲染操作。因此,渲染引擎响应Drawcall的命令,针对每一个不透明模型,采样GBuffer中的材质数据,并利用该不透明模型对应渲染管线标识指示的渲染管线,对GBuffer中的材质数据进行渲染,得到光栅化/实时光线追踪RGBA0和路径追踪RGBA1两张四通道颜色图像。
其中,由于实时光线追踪渲染管线嵌入光栅化渲染管线中,所以渲染引擎在输出渲染图像时,光栅化渲染管线和实时光线追踪渲染管线的渲染结果输出到同一张图像,路径追踪渲染的结果输出到另外一张图像。
三维场景中的不透明模型被全部渲染完毕之后,渲染引擎针对三维场景中的半透明模型,利用半透明模型对应的渲染管线标识指示的渲染管线,对模型数据中的材质信息和透明度信息进行渲染。
一些实施例中,针对三维场景中的一个半透明模型,若其对应的渲染管线标识指示的渲染管线为光栅化渲染管线或者实时光线追踪渲染管线,渲染引擎则将该模型数据中的材质信息和透明度信息渲染到光栅化/实时光线追踪RGBA0,且输出1到Mask图像的R通道,即在Mask图像的R通道写入1。若其对应的渲染管线标识指示的渲染管线为路径追踪渲染管线,渲染引擎则将该模型数据中的材质信息和透明度信息渲染到路径追踪 RGBA1,且输出1到Mask图像的G通道,即在Mask图像的G通道写入1。
需要说明的是,Mask图像为RGB三通道图像,可在R通道和G通道写入1,当然也可以在三通道中的其他两个通道写入1,如R通道和B通道、G通道和B通道等,并无具体限制。并且,在Mask图像的三个通道中的两个通道写入1,也可以理解成是示例性的说明,并无限制仅能在Mask图像的三个通道中的两个通道写入1,也可以写入其他数值。
由上述内容可知:渲染引擎响应Drawcall的命令,对三维场景中的模型进行渲染,得到光栅化/实时光线追踪RGBA0和路径追踪RGBA1两张四通道颜色图像,以及一张Mask 图像。
还需要说明的是,渲染引擎在对三维场景中的模型进行渲染之前,先针对三维场景中的不透明模型,得到GBuffer,可以理解成是延迟渲染。并且,渲染引擎针对三维场景中的不透明模型,进行渲染之前,先得到GBuffer的目的在于:
1、去除三维场景中的无效模型的模型数据对渲染引擎执行渲染流程的干扰。
三维场景中会包含一些无效模型,例如被遮挡的模型,渲染引擎对三维场景中的模型进行渲染,得到图像之后,图像会不显示无效模型。因此,渲染引擎无需对无效模型进行渲染。基于此,渲染引擎会计算统计三维场景中,位于视野范围内的所有有效模型,将这些模型分成两个队列,一个队列保存所有有效模型中的不透明模型,另一个队列中保存所有有效模型中的半透明模型。渲染引擎先将三维场景中的不透明模型队列中的模型数据,渲染到三张RGBA四通道浮点型图像和一张深度模板图像,即得到GBuffer,渲染引擎再基于GBuffer中的数据,调用渲染管线进行渲染,可以避免渲染引擎调用渲染管线处理三维场景中的无效模型的模型数据,去除三维场景中的无效模型的模型数据对渲染引擎执行渲染流程的干扰。
2、对不透明模型进行渲染时,不需要遍历三维场景,只遍历图像的像素,对每个像素进行着色,因此,先将不透明模型渲染到GBuffer,可以将不透明模型进行渲染过程中的计算量由三维空间压缩到二维空间,缩小了计算量。
渲染引擎得到光栅化/实时光线追踪RGBA0和路径追踪RGBA1两张四通道颜色图像,以及一张Mask图像之后,根据Mask图像中的R通道和G通道的数值,对光栅化/实时光线追踪RGBA0和路径追踪RGBA1的图像数据进行采样,对采样的图像数据进行图像合成,得到渲染图像。
本申请实施例中,三维场景中的每一个模型的模型数据包括该模型进行渲染时采用的渲染管线的渲染管线id,因此,渲染引擎渲染每一个模型时,利用该模型对应的渲染管线 id指示的渲染管线进行渲染。进一步,由于渲染管线可包括光栅化渲染管线、实时光线追踪渲染管线以及路径追踪渲染管线。因此,三维场景中的每一个模型,可以根据业务需求,选择前述三种渲染管线中的一种进行渲染,实现了一个三维场景中的全部模型,分别由光栅化渲染管线、实时光线追踪渲染管线以及路径追踪渲染管线中的一种渲染完成,进一步实现渲染出的图像,在保证图像的质量的同时,还降低移动设备的算力要求和功耗。
以下结合图6-a、图6-b和图6-c,对渲染引擎执行图像渲染方法的实现过程进行说明。
为了便于介绍,渲染引擎执行图像渲染方法可分为三个阶段,第一阶段是渲染引擎对三维场景中的不透明模型进行渲染,由图6-a来展示;第二阶段是渲染引擎对三维场景中的半透明模型进行渲染,由图6-b来展示;第三阶段是渲染引擎合并第二阶段生成的图像形成渲染图像,由图6-c来展示。
还需要说明的是,由图6-a和图6-b可知:渲染引擎先渲染三维场景中的不透明模型,渲染引擎将三维场景中的不透明模型均渲染完毕之后,才可渲染半透明模型。渲染引擎先渲染三维场景中的不透明模型,再渲染半透明模型的原因在于:
半透明模型无法完全遮挡其他模型,透过半透明模型可以看到半透明模型后面的模型。按照空间位置排序,按照从后往前的顺序对三维场景的模型进行渲染,才能保证渲染结果正确。半透明模型位于不透明模型前方,因此,渲染引擎需要先渲染不透明模型,再渲染半透明模型。
图6-a展示了本申请实施例提供的图像渲染方法的第一阶段的渲染流程。如图6-a所示,第一阶段的渲染流程包括:
S601、响应于渲染引擎的更新指令,对三维场景中的模型进行更新。
上层应用调用渲染引擎执行图像渲染时,渲染引擎先需进行场景更新。上层应用可向渲染引擎发送更新指令(更新指令可以理解成是上层应用下发的图像渲染的命令),以控制渲染引擎进行场景更新。渲染引擎响应于渲染引擎的更新指令,加载上层应用更新后的三维场景中模型的模型数据,以实现渲染引擎对三维场景中的模型进行更新。并且,加载可以理解成对上层应用下发的三维场景中模型的模型数据进行接收并保存。
S602、获取三维场景中模型的模型数据。
渲染引擎加载完毕三维场景中模型的模型数据之后,可利用该三维场景中模型的模型数据进行图像渲染,因此,渲染引擎需先读取三维场景中模型的模型数据。
如前述对应图4的内容,三维场景中模型的模型数据可包括:三维场景中每个模型的几何信息和材质信息、每个模型对应渲染管线标识,每个模型的透明度信息等。
模型对应的渲染管线标识用于指示该模型进行图像渲染时需要采用的渲染方法,示例性的,模型对应的渲染管线标识包括光栅化渲染管线的标识、实时光线追踪渲染管线的标识以及路径追踪渲染管线的标识。
模型的透明度信息可以指示该模型是不透明模型还是半透明模型。
S603、根据模型的透明度信息对三维场景中的不透明模型进行渲染,将不透明模型的渲染管线标识、几何信息和材质信息渲染到GBuffer。
通常情况下,三维场景包括的模型为多个,多个模型可能存在不透明模型和半透明模型。渲染引擎首先根据模型的透明度信息,确定三维场景包含的不透明模型。针对每一个不透明模型,渲染引擎将不透明模型的渲染管线标识、几何信息和材质信息渲染到GBuffer 中,其中,GBuffer包括三张RGBA四通道浮点型图像和一张深度模板图像。
如前述对应图5的内容,渲染引擎可对三维场景中的不透明模型采用光栅化技术进行渲染,将不透明模型的几何信息和材质信息渲染到三张RGBA四通道浮点型图像和一张深度模板图像。
其中,三维场景中的不透明模型为多个,不透明模型可按照一定的顺序排序形成队列,渲染引擎将该队列中的一个不透明模型的渲染管线标识、几何信息和材质信息渲染到三张 RGBA四通道浮点型图像和一张深度模板图像之后,再获取该队列中的下一个不透明模型的渲染管线标识、几何信息和材质信息,在三张RGBA四通道浮点型图像和一张深度模板图像上继续渲染不透明模型的渲染管线标识、几何信息和材质信息渲染,如此反复,直至三维场景中的所有不透明模型的渲染管线标识、几何信息和材质信息,均被渲染到三张RGBA四通道浮点型图像和一张深度模板图像。
由此可以看出:三张RGBA四通道浮点型图像和一张深度模板图像保存有三维场景中的每一个不透明模型的渲染管线标识、几何信息和材质信息。如此可以实现三维场景中模型的模型数据,存储到二维图像。
示例性的,渲染引擎渲染出图1展示的图像的过程中,两栋高楼101对应的模型为不透明模型,光影102对应的模型则为半透明模型。渲染引擎先对每一栋高楼101对应的模型进行渲染,将每一栋高楼101对应的模型的渲染管线标识、几何信息和材质信息渲染到GBuffer。
S604、绑定四通道颜色图像RGBA0和RGBA1,将图像RGBA0和RGBA1所有像素数据初始化为(0.0,0.0,0.0,0.0)。
如前述图3对应的实施例内容,GPU中的渲染管线包括光栅化渲染管线、实时光线追踪渲染管线和路径追踪渲染管线,且实时光线追踪渲染管线还可嵌入光栅化渲染管线中,因此,实时光线追踪渲染管线和光栅化渲染管线的渲染结果输出到一张图像,路径追踪渲染管线的渲染结果输出到一张图像。
基于此,渲染引擎绑定两张四通道颜色图像RGBA0和RGBA1,四通道颜色图像RGBA0包括R通道、G通道、B通道和A通道,四通道颜色图像RGBA0包括R通道、G 通道、B通道和A通道。四通道颜色图像RGBA0和RGBA1的所有通道的像素数据初始化为(0.0,0.0,0.0,0.0)。四通道颜色图像RGBA0用于保存实时光线追踪渲染管线和光栅化渲染管线的渲染结果,四通道颜色图像RGBA1用于保存路径追踪渲染管线的渲染结果。
并且,图像RGBA0和RGBA1所有像素数据初始化为(0.0,0.0,0.0,0.0)是一种示例性说明,也可以将图像RGBA0和RGBA1所有像素数据初始化为其他数值。
一些实施例中,渲染引擎利用MRT(Multiple Render Targets,多重渲染目标)技术执行步骤S604至步骤S618。
S605、采样GBuffer中的图像的像素的通道数据。
如前述步骤S603的内容,GBuffer存储有三张RGBA四通道浮点型图像和一张深度模板图像,因此,渲染引擎从GBuffer中获取每张RGBA四通道浮点型图像的每个像素的通道数据,以及深度模板图像的每个像素的通道数据。即一个像素的通道数据包括:该像素在每张RGBA四通道浮点型图像的通道数据,以及在深度模板图像的通道数据。
如前述对应图5的内容,Albedo/id图像的A通道存储标识有不透明模型使用的渲染管线的渲染管线id,即不透明模型使用的渲染管线的渲染管线id,经渲染引擎渲染到Albedo/id 图像,可形成该图像中对应该不透明模型的像素的A通道数据。并且,Albedo/id图像中的像素的A通道数据,可用于指示Albedo/id图像中的像素的渲染方法,即要使用的渲染管线。
由此可以看出,采样的GBuffer中的图像的像素的通道数据,包括像素的渲染管线id。
S606、判断渲染管线id指示像素是否采用光栅化/实时光追方法渲染。
不透明模型的渲染管线id能够指示出像素应该采用哪种渲染方法进行渲染。因此,渲染引擎利用像素的渲染管线id,确定出该像素被渲染时需要调用的渲染管线。
一些实施例中,渲染管线id包括光栅化渲染管线id,实时光线追踪渲染管线id和路径追踪渲染管线id。并且,实时光线追踪渲染管线嵌入光栅化渲染管线。光栅化/实时光追方法代表了光栅化渲染或者实时光线追踪渲染。因此,若像素的渲染管线id为光栅化渲染管线id,渲染引擎还是会调用光栅化渲染管线渲染该像素的通道数据。当然,若像素的渲染管线id为实时光线追踪渲染管线id,则渲染引擎还是会调用实时光线追踪渲染管线渲染该像素的通道数据。
但由于实时光线追踪渲染管线嵌入光栅化渲染管线,光栅化渲染管线和实时光线追踪渲染管线的渲染结果,会输出到同一张图像中,即输出到图像RGBA0。
另一些实施例中,光栅化渲染管线,实时光线追踪渲染管线和路径追踪渲染管线可各自独立。如此,渲染引擎调用光栅化渲染管线,实时光线追踪渲染管线或者路径追踪渲染管线进行图像渲染之后,光栅化渲染管线,实时光线追踪渲染管线以及路径追踪渲染管线的渲染结果,可分别输出为一张图像。
本申请实施例的以下内容,是以光栅化渲染管线和实时光线追踪渲染管线的渲染结果,会输出到同一张图像为例进行介绍。
若判断出渲染管线id指示像素采用光栅化/实时光追方法进行渲染,则执行步骤S607;若判断出渲染管线id指示像素不采用光栅化/实时光追方法进行渲染,则执行步骤S608。
S607、采用光栅化/实时光追方法,对像素的通道数据进行渲染,输出颜色信息到图像 RGBA0的RGB通道。
采用光栅化渲染方法或实时光线追踪渲染方法,对像素的通道数据进行渲染的流程基本相同,区别在于:采用光栅化渲染方法渲染像素的通道数据,要调用光栅化渲染方法的 shader算法进行着色,输出颜色信息到图像RGBA0的RGB通道。
采用实时光线追踪渲染方法渲染像素的通道数据,要调用实时光线追踪渲染方法的 shader算法进行着色,输出颜色信息到图像RGBA0的RGB通道。
其中,图像RGBA0的RGB通道是指图像RGBA0的R通道、G通道和B通道。
S608、采用路径追踪方法对像素的通道数据进行渲染,输出颜色信息到图像RGBA1的RGB通道。
采用路径追踪方法对像素的通道数据进行渲染,要调用路径追踪的shader算法进行着色,输出颜色信息到图像RGBA1的RGB通道。其中,图像RGBA1的RGB通道是指图像RGBA1的R通道、G通道和B通道。
一些实施例中,采用路径追踪方法对一个像素的通道数据进行渲染的原理可以理解成包括下述过程:
1、针对图像上需要执行路径追踪算法的每一个像素,根据像素在图像空间的坐标以及预先定义好的深度信息,构造初始光线,发射初始光线到三维场景中。遍历三维场景的每个模型,计算初始光线与三维场景的模型的交点,并根据交点的位置坐标和材质信息计算反射和折射(统称为发射),以生成新的次级光线,即第一级的次级光线。
2、第一级的次级光线的射线进一步会与三维场景的其他模型形成交点,该交点向三维场景中发射第二级的次级光线的射线,第二级的次级光线的射线再与三维场景的其他模型形成交点,如此反复,直至某一级的次级光线的射线与光源相交,则说明得到有效光路。在形成有效光路过程中,分别利用每一个交点的空间位置坐标、法线坐标、粗糙度、金属度以及反射率,计算出每一个交点向三维场景中发射次级光线的射线携带的光能量数据,简称每一个交点的光能量数据。
3、整条有效光路上每个交点上的光能量数据的加权和,得到像素的颜色信息(也可称为通道数据)。
另一些实施例中,采用路径追踪方法对一个像素的通道数据进行渲染的原理还可以理解成包括下述过程:
1、利用GBuffer中的深度模板图像的像素的深度信息,反算出第一个交点的空间位置坐标。
其中,第一个交点可以理解成光线从视点(摄像头)出发,经过一个像素,到达光线与模型的第一个交点。当然,针对深度模板图像的全部像素,利用该步骤可得到每个像素的第一个交点的空间位置坐标。
需要说明的是,利用GBuffer中的深度模板图像的像素的深度信息,反算出第一个交点的空间位置坐标的一种实施方式包括:
获取GBuffer中的深度模板图像的像素的深度信息d。
获取GBuffer中的RGBA四通道浮点型图像的像素的法线坐标,利用法线坐标计算出空间坐标(u,v)。在一种实现方式中,空间坐标中u和v的取值范围为[0.0,1.0]。还可以进一步将空间坐标(u,v)转换为取值范围[-1.0,1.0]的标准设备空间坐标。根据像素的深度信息 d和空间坐标(u,v)构建成三维的标准设备坐标(u,v,d)。
根据视点(摄像头)的空间矩阵MatView和投影矩阵MatProj,以及像素的标准设备坐标(u,v,d),获取像素的世界空间坐标(x,y,z),该像素的世界空间坐标(x,y,z)即为第一个交点的空间位置坐标。
可以根据如下公式1和公式2计算像素点的世界空间坐标(x,y,z)
公式1
(x’,y’,z’,w’)=Inverse(MatView*MatProj)*(u,v,d,1.0)
公式2
(x,y,z)=(x’/w’,y’/w’,z’/w’)
其中,Inverse表示对矩阵取逆;MatView为摄像头的空间矩阵,表示摄像头在世界空间的坐标;MatProj为摄像头的投影矩阵,表示三维的世界空间到二维的图像空间的坐标变换关系;MatView和MatProj可以是预先配置;(u,v,d,1.0)是像素点的标准设备坐标(u,v, d)对应的矩阵。
2、利用GBuffer中的空间位置坐标、法线坐标、粗糙度、金属度以及反射率,计算第一个交点向三维场景中发射(反射或者折射)第一级的次级光线的射线的方向以及携带的光能量数据。
同理,针对深度模板图像的全部像素,利用该步骤可得到每个像素的第一级的次级光线的射线的方向以及携带的光能量数据。
3、第一级的次级光线的射线进一步会与三维场景的其他模型形成交点,该交点向三维场景中发射第二级的次级光线的射线,第二级的次级光线的射线再与三维场景的其他模型形成交点,如此反复,直至某一级的次级光线的射线与光源相交,则说明得到有效光路。在形成有效光路过程中,分别利用每一个交点的空间位置坐标、法线坐标、粗糙度、金属度以及反射率,计算出每一个交点向三维场景中发射次级光线的射线携带的光能量数据,简称每一个交点的光能量数据。
4、整条有效光路上每个交点上的光能量数据的加权和,得到像素的颜色信息(也可称为通道数据)。
本实施例中,利用光栅化渲染方法的输出数据,即GBuffer中的数据,一次性计算出从视点出发的每一根光线与三维场景中的模型的第一个交点;并计算出每根初始光线在对应的第一个交点处发射产生的第一级的次级光线的射线的方向以及携带的光能量数据。如此,可以节省路径追踪进行图像渲染过程中所有光路的第一个交点计算的计算消耗,降低光线追踪方法中整体的计算量,提升路径追踪方法的整体计算效率。
还需要说明的是,渲染引擎执行前述步骤S605至步骤S608的实现方式可以为:
渲染引擎将三张RGBA四通道浮点型图像中的所有像素的通道数据,以及深度模板图像中的所有像素的通道数据,同步传输到GPU。GPU根据每个像素的渲染管线id,调用该渲染管线id指示的渲染管线对像素进行渲染。最终,GPU可将每个像素的渲染结果同步输出到图像RGBA0和RGBA1。
S609、输出图像RGBA0和RGBA1。
需要说明的是,步骤S609中渲染引擎输出图像RGBA0和RGBA1,并不指代渲染引擎对外输出图像RGBA0和RGBA1,而是指渲染引擎完整第一阶段中对不透明模型的渲染,向下一阶段输出图像RGBA0和RGBA1。
一些实施例中,步骤S609也可为不执行的步骤,即渲染引擎执行完步骤S607和步骤 S608之后,也可执行开启对半透明模型的渲染环节,即执行步骤S610。
图6-b展示了本申请实施例提供的图像渲染方法的第二阶段的渲染流程。如图6-b所示,第二阶段的渲染流程包括:
S610、绑定图像RGBA0和RGBA1,以及两通道的掩膜(Mask)图像。
绑定步骤S609输出的图像RGBA0和RGBA1。图像RGBA0和RGBA1中已经存在不透明模型进行渲染之后的渲染结果。并且,渲染引擎还要绑定一张Mask图像,该Mask 图像的图像大小与图像RGBA0、RGBA1的大小相同。
需要说明的是,因前述步骤S609输出两张图像,因此,该Mask图像为两通道图像。若光栅化渲染管线和实时光线追踪管线分别得到一张独立的图像,前述步骤S609可得到三张图像,Mask图像为则可为三通道图像。每个像素的通道数据用于指示在图像RGBA0 和RGBA1同等位置的像素的通道数据由光栅化渲染管线、实时光线追踪管线和路径追踪渲染管线中的哪一个渲染管线得到,当然还可以指示利用图像RGBA0还是图像RGBA1 在该像素的通道数据,得到渲染图像中该像素的通道数据。
S611、初始化Mask图像,将Mask图像中每个像素的R通道和G通道的数据都写为 0。
如前述对应图5的实施例内容,步骤S611是以Mask图像的R通道和G通道为例进行介绍。本申请实施例中,并不限制仅设置Mask图像中每个像素的R通道和G通道的数据为0,可以设置Mask图像中每个像素在其他两个通道的数据为0。
并且,初始化Mask图像过程中,将Mask图像中每个像素的R通道和G通道的数据写为0也是一种示例性说明,也可以将Mask图像中每个像素的R通道和G通道的数据写为其他数值。
S612、获取半透明模型的几何信息,材质信息以及渲染管线id。
渲染引擎从三维场景中模型的模型数据中,获取半透明模型的几何信息、材质信息以及渲染管线id。三维场景中模型的模型数据包括每一个模型的模型数据,模型数据则包括:模型的几何信息和材质信息,模型的透明度信息,以及模型的渲染管线id。
因此,渲染引擎可先利用每一个模型的透明度信息,确定出半透明模型,再获取半透明模型的几何信息,材质信息以及渲染管线id。
示例性的,渲染引擎渲染出图1展示的图像的过程中,两栋高楼101对应的模型为不透明模型,光影102对应的模型则为半透明模型。渲染引擎通过前述步骤S602至步骤S609,完成了对每一栋高楼101对应的模型进行渲染,渲染引擎再通过执行步骤S610至步骤S618,完成对每一个光影102对应的模型进行渲染。
S613、判断渲染管线id指示当前半透明模型是否采用光栅化/实时光追方法渲染。
半透明模型的渲染管线id能够指示出半透明模型应该采用哪种渲染方法进行渲染。因此,渲染引擎利用半透明模型的渲染管线id,确定出该半透明模型被渲染时需要调用的渲染管线。并且,渲染引擎选择三维场景中的半透明模型作为当前半透明模型,以执行步骤 S613。
步骤S613的具体执行过程,与前述步骤S606基本相同,渲染引擎可采用前述步骤S606 提及的方式,对半透明模型的渲染管线id指示当前半透明模型是否采用光栅化/实时光追方法渲染进行判定。
若半透明模型的渲染管线id指示当前半透明模型采用光栅化/实时光追方法进行渲染,则执行步骤S614;若半透明模型的渲染管线id指示当前半透明模型不是采用光栅化/实时光追方法进行渲染,则执行步骤S615。
S614、采用光栅化/实时光追方法对当前半透明模型进行渲染,输出颜色信息到图像 RGBA0的RGB通道,输出透明度信息到图像RGBA0的A通道,输出1到Mask图像的 R通道。
与前述步骤S607相同,若步骤S613判断出当前半透明模型采用光栅化渲染方法,则调用光栅化渲染方法的shader算法进行着色,输出颜色信息到图像RGBA0的RGB通道,输出透明度信息到图像RGBA0的A通道,输出1到Mask图像的R通道。
若步骤S613判断出当前半透明模型采用实时光线追踪渲染方法,要调用实时光线追踪渲染方法的shader算法进行着色,输出颜色信息到图像RGBA0的RGB通道,输出透明度信息到图像RGBA0的A通道,输出1到Mask图像的R通道。
需要说明的是,因图像RGBA0的RGB通道已经保存有不透明模型的颜色信息,因此,步骤S616执行过程中,渲染引擎需要将半透明模型的颜色信息,叠加到图像RGBA0的 RGB通道已经写入的不透明模型的颜色信息上。
其中:叠加可以理解成:利用混合函数,将图像中的像素的RGB通道的通道数据和半透明模型的颜色信息进行混合运算。当然,图像中的像素的RGB通道的通道数据和半透明模型的颜色信息,均应该理解成是一种数值。
S615、采用路径追踪方法对当前半透明模型进行渲染,输出颜色信息到图像RGBA1的RGB通道,输出透明度信息到图像RGBA1的A通道,输出1到Mask图像的G通道。
若步骤S615判断出当前半透明模型不是采用光栅化/实时光追方法渲染,则调用路径追踪方法对当前半透明模型进行渲染,输出颜色信息到图像RGBA1的RGB通道,输出透明度信息到图像RGBA1的A通道,输出1到Mask图像的G通道。
其中,调用路径追踪方法对当前半透明模型进行渲染过程中,要采用路径追踪方法的 shader算法对当前半透明模型进行着色。
其中,调用路径追踪方法对半透明模型进行渲染,可采用如前述步骤S608中提供的两种实施方式。需要说明的是,因半透明模型的模型数据未保存于GBuffer中,即半透明模型的模型数据未转换成图像的通道数据。因此,在采用前述步骤S608中提供的第二种实施方式,对半透明模型进行渲染之前,可先将半透明模型的模型数据,采用光栅化渲染的方式,渲染到图像。具体方式可参见前述步骤S603中的内容。
S616、判断三维场景中的半透明模型是否被全部渲染。
如果三维场景中的半透明模型被全部渲染,则执行步骤S618;如果三维场景中依然存在未被渲染的半透明模型,则需要执行步骤S617,直到半透明模型被全部渲染,执行步骤 S618。
其中,三维场景中的半透明模型,可以以待渲染队列的形式被输入到GPU,由GPU中的渲染管线进行渲染。因此,待渲染队列中的每一个半透明模型均被渲染管线遍历、且渲染完成,则说明三维场景中的半透明模型被全部渲染。
S617、将三维场景中未被渲染的半透明模型中的一个作为当前半透明模型。
当步骤S616判断出三维场景中依然存在未被渲染的半透明模型,则需要执行步骤S617,将未被渲染的半透明模型中的一个作为当前半透明模型,返回执行步骤S612,直到三维场景中的半透明模型被全部渲染。
S618、输出图像RGBA0、RGBA1和Mask图像。
在完成对三维场景中的半透明模型进行渲染之后,输出得到图像RGBA0、图像RGBA1 和Mask图像,其中,图像RGBA0和图像RGBA1中包含了不透明模型和半透明模型对应像素的颜色信息和透明度信息,Mask图像中包含了指示半透明模型对应像素的存储位置的通道数据。
与前述步骤S609相同,步骤S618中渲染引擎输出图像RGBA0、RGBA1和Mask图像,并不指代渲染引擎对外输出RGBA0、RGBA1和Mask图像,而是指渲染引擎完整第二阶段中对半透明模型的渲染,向下一阶段输出图像RGBA0、RGBA1和Mask图像。
一些实施例中,步骤S618也可为不执行的步骤,即渲染引擎通过步骤S616判断出半透明模型被全部渲染,也可进入图像合并环节,即执行步骤S619。
图6-c展示了本申请实施例提供的图像渲染方法的第三阶段的渲染流程。如图6-c所示,第三阶段的渲染流程包括:
S619、绑定渲染图像。
绑定渲染图像可以理解成获取一张RGB三通道图像,该三通道图像的像素数据进行初始化,一些实施例中,可将三通道图像的像素数据初始化为(0.0,0.0,0.0)。
S620、判断Mask图像的R通道是否为1。
由于Mask图像中的R通道和G通道的数据都可以分别对应0和1,因此,获取Mask 图像的R通道和G通道的数据之后,分别通过步骤S620和下述步骤S621判断Mask图像的R通道和G通道的数据是否为1。
其中,判断Mask图像的R通道是否为1,可以理解成判断Mask图像中的每个像素的R通道是否为1。
当然,本实施例中,是以判断Mask图像的R通道和G通道的数据是否为1为例进行介绍,也可以判断Mask图像的R通道和G通道的数据是否为0。并且,也可以先执行步骤S621再执行步骤S620。
若判断出Mask图像的R通道为1,则执行步骤S621;若判断出Mask图像的R通道不为1,则执行步骤S622。
S621、判断Mask图像的G通道是否为1。
若判断出Mask图像的G通道为1,则执行步骤S623;若判断出Mask图像的G通道不为1,则执行步骤S624。
S622、判断Mask图像的G通道是否为1。
若判断出Mask图像的G通道为1,则执行步骤S625;若判断出Mask图像的G通道不为1,则执行步骤S626。
其中,步骤S621和步骤S622中,判断Mask图像的G通道是否为1,可以理解成判断Mask图像中的每个像素的G通道是否为1。
需要说明的是,利用前述步骤S620至步骤S622,可以确定出Mask图像的所有像素中的四类像素;其中,第一类像素为R通道为1、G通道也为1的像素;第二类像素为R 通道为1、G通道为0的像素;第三类像素为R通道为0、G通道为1的像素;第四类像素为R通道为0、G通道也为0的像素。
针对第一类像素执行下述步骤S623,针对第二类像素执行步骤S624,针对第三类像素执行步骤S625,针对第四类像素执行步骤S626。
S623、采样图像RGBA0中像素的通道数据(x0,y0,z0,w0),以及图像RGBA1中像素的通道数据(x1,y1,z1,w1),利用公式3计算通道数据(x,y,z,w),并输出通道数据(x,y,z,w)到渲染图像。
公式3
(x,y,z,w)=(x0×w0+x1×w1,y0×w0+y1×w1,z0×w0+z1×w1,1.0)
其中,w0为图像RGBA0中像素的A通道数据,w1为图像RGBA1中像素的A通道数据,w为渲染图像中像素的A通道数据;x0为图像RGBA0中像素的R通道数据,x1 为图像RGBA1中像素的R通道数据,x为渲染图像中像素的R通道数据;y0为图像RGBA0 中像素的G通道数据,y1为图像RGBA1中像素的G通道数据,y为渲染图像中像素的G 通道数据;z0为图像RGBA0中像素的B通道数据,z1为图像RGBA1中像素的B通道数据,z为渲染图像中像素的B通道数据。
若Mask图像的一个像素的R通道为1,G通道也为1,说明该像素的通道数据是由渲染引擎既采用光栅化或实时光追方法渲染模型的模型数据,又采用路径追踪方法渲染模型的模型数据得到。因此,要利用图像RGBA0中该像素的通道数据(x0,y0,z0,w0),以及图像RGBA1中该像素的通道数据(x1,y1,z1,w1),计算该像素在渲染图像的通道数据 (x,y,z,w)。
以渲染图像中一个像素的R通道的数据x为例,以下说明采用x=x0×w0+x1×w1计算渲染图像R通道的数据x的理由。
图像RGBA0中,该像素的R通道的数据为颜色数据,A通道的数据为透明度数据,说明图像RGBA1的R通道的数据反映出的图像是有透明度的,因此,需要将图像RGBA0 中的该像素的R通道的数据和A通道的数据的乘积,作为渲染图像中该像素的R通道数据的一个候选值。
同理,图像RGBA1中,该像素的R通道的数据为颜色数据,A通道的数据为透明度数据,说明图像RGBA1的R通道的数据反映出的图像也是有透明度的,因此,需要将图像RGBA1中该像素的R通道的数据和A通道的数据的乘积,作为渲染图像中该像素的R 通道数据的另一个候选值。
出于综合考虑光栅化/实时光追方法和路径追踪方法的缘由,将两个渲染图像中该像素的R通道数据的候选值的和,作为渲染图像中该像素的R通道数据。
S624、采样图像RGBA0中像素的通道数据(x0,y0,z0,w0),并输出到渲染图像。
Mask图像的R通道为1,G通道为0,说明三维场景的一个模型是采用光栅化/实时光追方法进行渲染,因此,渲染引擎获取图像RGBA0的数据(x0,y0,z0,w0),并输出到渲染图像。
S625、采样图像RGBA1中像素的通道数据(x1,y1,z1,w1),并输出到渲染图像。
Mask图像的R通道为0,G通道为1,说明三维场景的一个模型是采用路径追踪方法进行渲染,因此,渲染引擎获取图像RGBA1的数据(x1,y1,z1,w1),并输出到渲染图像。
S626、采样图像RGBA0中像素的通道数据(x0,y0,z0,w0),以及图像RGBA1中像素的通道数据(x1,y1,z1,w1),利用公式4计算通道数据(x,y,z,w),输出通道数据(x,y,z,w) 到渲染图像。
公式4
(x,y,z,w)=(x0+x1,y0+y1,z0+z1,1.0)
Mask图像中的一个像素的R通道为0,G通道为0,说明该像素的通道数据是由渲染引擎既采用光栅化或实时光追方法渲染若干不透明模型的模型数据,又采用路径追踪方法渲染模型的其他不透明模型数据得到,因此,可分别采用图像RGBA0中该像素的通道数据(x0,y0,z0,w0),以及图像RGBA1中该像素的通道数据(x1,y1,z1,w1),利用公式4 计算出通道数据(x,y,z,w),并输出到渲染图像。
渲染引擎针对前述四类像素,均通过步骤S623至步骤S626渲染完成之后,可执行步骤S627。
S627、输出渲染图像。
本步骤中,渲染引擎输出渲染图像,则可以理解成对外输出渲染图像。示例性的,图 4展示的应用场景中,渲染引擎向上层应用VR/AR应用输出渲染图像。
本申请另一实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机或处理器上运行时,使得计算机或处理器执行上述任一个方法中的一个或多个步骤。
计算机可读存储介质可以是非临时性计算机可读存储介质,例如,非临时性计算机可读存储介质可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本申请另一实施例还提供了一种包含指令的计算机程序产品。当该计算机程序产品在计算机或处理器上运行时,使得计算机或处理器执行上述任一个方法中的一个或多个步骤。
Claims (8)
1.一种图像渲染方法,其特征在于,应用于电子设备,所述电子设备包括光栅化渲染管线、实时光线追踪渲染管线以及路径追踪渲染管线,所述图像渲染方法包括:
响应于图像渲染的命令,获取三维场景中多个模型的模型数据,所述多个模型中的每个模型的模型数据包括所述模型的待渲染数据以及所述模型对应的渲染管线标识,所述多个模型中的每个模型对应的渲染管线标识用于指示所述电子设备的一个渲染管线;
针对所述三维场景中的多个模型,分别调用每个所述模型对应的渲染管线标识指示的渲染管线,渲染所述模型的待渲染数据,针对所述三维场景中的多个不透明模型,分别调用每个所述不透明模型对应的渲染管线标识指示的渲染管线,对所述三维场景中的多个不透明模型的待渲染数据进行渲染,渲染所述不透明模型的待渲染数据,得到四张图像,所述四张图像的通道数据为所述三维场景中的多个不透明模型的待渲染数据,渲染所述四张图像的通道数据,得到渲染管线的第一渲染结果;
其中,所述四张图像包括:三张RGBA四通道浮点型图像和一张深度模板图像;
所述RGBA四通道浮点型图像的通道数据为所述三维场景中的多个不透明模型的颜色信息、法线坐标和材质信息;
所述深度模板图像的通道数据为三维场景中的多个不透明模型的深度信息;
针对所述三维场景中的多个半透明模型,分别调用每个所述半透明模型对应的渲染管线标识指示的渲染管线,渲染所述半透明模型的待渲染数据,得到渲染管线的第二渲染结果;
所述渲染管线的第一渲染结果和第二渲染结果的叠加结果,为所述渲染管线的渲染结果,得到渲染管线的渲染结果;
合成所述三维场景中的多个模型对应的渲染管线的渲染结果,得到渲染图像。
2.根据权利要求1所述的图像渲染方法,其特征在于,所述针对所述三维场景中的多个半透明模型,分别调用每个所述半透明模型对应的渲染管线标识指示的渲染管线,渲染所述半透明模型的待渲染数据,得到渲染管线的第二渲染结果的过程中,还包括:
生成掩膜图像,所述掩膜图像的像素的通道数据,用于指示所述渲染图像中、且与所述掩膜图像中像素的同等位置的像素的通道数据的来源;
其中:合成所述三维场景中的多个模型对应的渲染管线的渲染结果,得到渲染图像,包括:
利用所述掩膜图像,合成所述三维场景中的多个模型对应的渲染管线的渲染结果,得到渲染图像。
3.根据权利要求2所述的图像渲染方法,其特征在于,所述三维场景中的多个模型对应的渲染管线中,光栅化渲染管线的渲染结果和所述实时光线追踪渲染管线的渲染结果为第一图像,所述路径追踪渲染管线的渲染结果为第二图像。
4.根据权利要求3所述的图像渲染方法,其特征在于,所述利用所述掩膜图像,合成所述三维场景中的多个模型对应的渲染管线的渲染结果,得到渲染图像,包括:
针对所述掩膜图像中的第一类像素,采样所述第一图像在所述第一类像素同等位置的像素的通道数据,作为所述渲染图像在所述第一类像素同等位置的像素的通道数据;
针对所述掩膜图像中的第二类像素,采样所述第二图像在所述第二类像素同等位置的像素的通道数据,作为所述渲染图像在所述第二类像素同等位置的像素的通道数据;
针对所述掩膜图像中的第三类像素,采样所述第一图像在所述第三类像素同等位置的像素的通道数据,以及采样所述第二图像在所述第三类像素同等位置的像素的通道数据;利用所述第一图像在所述第三类像素同等位置的像素的通道数据,以及所述第二图像在所述第三类像素同等位置的像素的通道数据,计算出渲染图像在所述第三类像素同等位置的像素的通道数据;
其中,所述第一类像素在所述掩膜图像的第一通道的通道数据为第一值,在所述掩膜图像的第二通道的通道数据为第二值;所述第二类像素在所述第一通道的通道数据为第二值,在所述第二通道的通道数据为第一值;所述第三类像素在所述第一通道的通道数据,与在所述第二通道的通道数据相同。
5.根据权利要求4所述的图像渲染方法,其特征在于,所述利用所述第一图像在所述第三类像素同等位置的像素的通道数据,以及所述第二图像在所述第三类像素同等位置的像素的通道数据,计算出渲染图像在所述第三类像素同等位置的像素的通道数据,包括:
针对所述掩膜图像中的第三类像素的第一种像素,将所述第一图像在所述第三类像素的第一种像素同等位置的像素的通道数据,以及所述第二图像在所述第三类像素的第一种像素同等位置的像素的通道数据的和,作为所述渲染图像在所述第三类像素的第一种像素同等位置的像素的通道数据;
针对所述掩膜图像中的第三类像素的第二种像素,将所述第一图像在所述第三类像素的第二种像素同等位置的像素的通道数据,以及所述第二图像在所述第三类像素的第二种像素同等位置的像素的通道数据的加权和,作为所述渲染图像在所述第三类像素的第二种像素同等位置的像素的通道数据;
其中,所述掩膜图像中的第三类像素的第一种像素在所述第一通道的通道数据为第一值,在所述第二通道的通道数据为第一值;所述掩膜图像中的第三类像素的第二种像素在所述第一通道的通道数据为第二值,在所述第二通道的通道数据为第二值;
所述第一图像在所述第三类像素的第二种像素同等位置的像素的通道数据的权重,用于反映所述第一图像在所述第三类像素的第二种像素的透明度;
所述第二图像在所述第三类像素的第二种像素同等位置的像素的通道数据的权重,用于反映所述第二图像在所述第三类像素的第二种像素的透明度。
6.根据权利要求1至5中任意一项所述的图像渲染方法,其特征在于,所述响应于图像渲染的命令,获取三维场景中多个模型的模型数据包括:
响应于所述电子设备的应用的图像渲染的命令,获取所述电子设备的应用下发的三维场景中多个模型的模型数据,所述电子设备的应用为所述电子设备的系统应用程序,或者所述电子设备安装的第三方应用程序。
7.一种电子设备,其特征在于,包括:
一个或多个处理器、存储器和显示屏;
所述存储器和所述显示屏,与所述一个或多个所述处理器耦合,所述处理器包括光栅化渲染管线、实时光线追踪渲染管线以及路径追踪渲染管线,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述一个或多个处理器执行所述计算机指令时,所述电子设备执行如权利要求1至6任意一项所述的图像渲染方法。
8.一种计算机可读存储介质,其特征在于,用于存储计算机程序,所述计算机程序被执行时,具体用于实现如权利要求1至6任意一项所述的图像渲染方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211136706.1A CN116681811B (zh) | 2022-09-19 | 2022-09-19 | 图像渲染方法、电子设备及可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211136706.1A CN116681811B (zh) | 2022-09-19 | 2022-09-19 | 图像渲染方法、电子设备及可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116681811A CN116681811A (zh) | 2023-09-01 |
CN116681811B true CN116681811B (zh) | 2024-04-19 |
Family
ID=87789628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211136706.1A Active CN116681811B (zh) | 2022-09-19 | 2022-09-19 | 图像渲染方法、电子设备及可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116681811B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110969685A (zh) * | 2018-09-28 | 2020-04-07 | 苹果公司 | 使用渲染图的可定制渲染管线 |
CN112381918A (zh) * | 2020-12-03 | 2021-02-19 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、计算机设备和存储介质 |
CN112837402A (zh) * | 2021-03-01 | 2021-05-25 | 腾讯科技(深圳)有限公司 | 场景渲染方法、装置、计算机设备和存储介质 |
CN113205583A (zh) * | 2021-04-28 | 2021-08-03 | 北京字跳网络技术有限公司 | 场景渲染方法、装置、电子设备及可读存储介质 |
WO2022111619A1 (zh) * | 2020-11-30 | 2022-06-02 | 华为技术有限公司 | 图像处理方法及相关装置 |
CN114708369A (zh) * | 2022-03-15 | 2022-07-05 | 荣耀终端有限公司 | 一种图像渲染方法和电子设备 |
CN114782659A (zh) * | 2022-04-26 | 2022-07-22 | 北京字跳网络技术有限公司 | 图像处理方法、装置、设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001063561A1 (en) * | 2000-02-25 | 2001-08-30 | The Research Foundation Of State University Of New York | Apparatus and method for volume processing and rendering |
-
2022
- 2022-09-19 CN CN202211136706.1A patent/CN116681811B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110969685A (zh) * | 2018-09-28 | 2020-04-07 | 苹果公司 | 使用渲染图的可定制渲染管线 |
WO2022111619A1 (zh) * | 2020-11-30 | 2022-06-02 | 华为技术有限公司 | 图像处理方法及相关装置 |
CN114581589A (zh) * | 2020-11-30 | 2022-06-03 | 华为技术有限公司 | 图像处理方法及相关装置 |
CN112381918A (zh) * | 2020-12-03 | 2021-02-19 | 腾讯科技(深圳)有限公司 | 图像渲染方法、装置、计算机设备和存储介质 |
CN112837402A (zh) * | 2021-03-01 | 2021-05-25 | 腾讯科技(深圳)有限公司 | 场景渲染方法、装置、计算机设备和存储介质 |
CN113205583A (zh) * | 2021-04-28 | 2021-08-03 | 北京字跳网络技术有限公司 | 场景渲染方法、装置、电子设备及可读存储介质 |
CN114708369A (zh) * | 2022-03-15 | 2022-07-05 | 荣耀终端有限公司 | 一种图像渲染方法和电子设备 |
CN114782659A (zh) * | 2022-04-26 | 2022-07-22 | 北京字跳网络技术有限公司 | 图像处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116681811A (zh) | 2023-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109478310B (zh) | 在计算环境中使用纹素着色器的多分辨率延迟着色 | |
EP3111318B1 (en) | Cross-platform rendering engine | |
US20230119093A1 (en) | Mechanism to accelerate graphics workloads in a multi-core computing architecture | |
US9715750B2 (en) | System and method for layering using tile-based renderers | |
CN105518742B (zh) | 用于图形处理的任意控制点处的容错抢占机制 | |
US10636112B2 (en) | Graphics processor register data re-use mechanism | |
US10049486B2 (en) | Sparse rasterization | |
US10559112B2 (en) | Hybrid mechanism for efficient rendering of graphics images in computing environments | |
KR20100004119A (ko) | 포스트-렌더링 그래픽스 오버레이 | |
US11094036B2 (en) | Task execution on a graphics processor using indirect argument buffers | |
US20170154403A1 (en) | Triple buffered constant buffers for efficient processing of graphics data at computing devices | |
US10319068B2 (en) | Texture not backed by real mapping | |
WO2017201676A1 (en) | Self-adaptive window mechanism | |
WO2018045551A1 (en) | Training and deploying pose regressions in neural networks in autonomous machines | |
US10628909B2 (en) | Graphics processing unit resource dependency viewer | |
WO2024027237A1 (zh) | 渲染的优化方法、电子设备和计算机可读存储介质 | |
CN117635486A (zh) | 图像处理方法、装置、设备及存储介质 | |
CN110050243B (zh) | 通过使用自主机器中的中间层特征的增强神经回归进行相机重新定位 | |
WO2017200672A1 (en) | Triangle rendering mechanism | |
US20170371662A1 (en) | Extension of register files for local processing of data in computing environments | |
CN115018692A (zh) | 一种图像渲染方法及电子设备 | |
WO2024027286A1 (zh) | 渲染方法、装置、设备及存储介质 | |
CN116681811B (zh) | 图像渲染方法、电子设备及可读介质 | |
US10157440B2 (en) | Static data sharing mechanism for a heterogeneous processing environment | |
EP4455986A1 (en) | Data processing method and apparatus, and device and 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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |