CN116681814A - 一种图像渲染方法和电子设备 - Google Patents
一种图像渲染方法和电子设备 Download PDFInfo
- Publication number
- CN116681814A CN116681814A CN202211139121.5A CN202211139121A CN116681814A CN 116681814 A CN116681814 A CN 116681814A CN 202211139121 A CN202211139121 A CN 202211139121A CN 116681814 A CN116681814 A CN 116681814A
- Authority
- CN
- China
- Prior art keywords
- rendering
- model
- ray
- image
- scene
- 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.)
- Granted
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 256
- 238000000034 method Methods 0.000 title claims abstract description 103
- 239000000463 material Substances 0.000 claims description 36
- 238000004364 calculation method Methods 0.000 claims description 33
- 230000005855 radiation Effects 0.000 claims description 30
- 230000001133 acceleration Effects 0.000 claims description 20
- 238000003860 storage Methods 0.000 claims description 15
- 238000002310 reflectometry Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 abstract description 32
- 230000008569 process Effects 0.000 abstract description 22
- 230000000694 effects Effects 0.000 abstract description 14
- 239000000872 buffer Substances 0.000 description 34
- 230000006870 function Effects 0.000 description 18
- 230000003287 optical effect Effects 0.000 description 18
- 239000011159 matrix material Substances 0.000 description 14
- 238000010586 diagram Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 9
- 238000012805 post-processing Methods 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 238000005070 sampling Methods 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000004040 coloring Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000005236 sound signal Effects 0.000 description 3
- 229920001621 AMOLED Polymers 0.000 description 2
- 239000003086 colorant Substances 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 239000002096 quantum dot Substances 0.000 description 2
- 238000013529 biological neural network Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000019771 cognition Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
- 230000009466 transformation 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/06—Ray-tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本申请公开了一种图像渲染方法和电子设备,涉及图像处理领域。在渲染图像时,可以根据用户选择的渲染方式,对一帧图像中的不同模型采用光栅化、光线查询或光线追踪渲染方式进行渲染;采用三种不同的渲染方式通过三种不同的渲染管线生成一帧目标图像。对于图像中一些需要高质量图像效果的模型采用光线追踪流程,提升图像的整体渲染质量;对于图像中其他模型采用光栅化流程或光线查询流程,提升图像的整体渲染速度;既提高了目标图像的图像质量又提高了渲染速度。
Description
技术领域
本申请涉及图像处理领域,尤其涉及一种图像渲染方法和电子设备。
背景技术
在渲染引擎的更新发展过程中,基于光栅化的渲染架构一直是主流;得益于移动设备中图形处理器(graphics processing unit,GPU)渲染流水线的优化和软件层面渲染算法的迭代,光栅化渲染引擎能够满足大部分业务需求。但是,光栅化方法生成图像与真实场景的差距较大,在一些对图像质量要求非常高的场景无法使用。
随着真实感渲染业务场景越来越多地出现,光线追踪渲染方法,以其基于现实物理规律,可以生成逼近真实世界的渲染结果,而备受关注。然而,光线追踪技术在执行过程中需要构造大量的光线往三维场景中发射,需要进行大量的光线求交运算,算力消耗极大,实时性较差。
GPU加速的光线查询渲染方法,比光栅化的渲染效果更逼真,比光线追踪渲染的处理速度更快,在需要兼顾渲染效果和处理速度的场景得到广泛应用。但是光线查询方法生成的图像效果无法比拟真正光线追踪渲染的效果,其处理速度又逊色于光栅化。
在生成图像时,如何结合各种渲染方法的优点,提升三维渲染图像的真实感的同时,降低整体计算负载,是需要考虑的一个问题。
发明内容
本申请实施例提供一种图像渲染方法和电子设备,能够对一个场景中不同的模型分别采用对应的渲染方法,提升三维渲染图像真实感的同时,降低整体计算负载。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,提供了一种图像渲染方法,该方法包括:加载待渲染场景;获取场景中各个模型的分类标识,根据模型的分类标识对场景中每个模型分别进行渲染,生成目标图像。其中,分类标识用于指示模型的渲染方式,渲染方式包括光栅化、光线查询和光线追踪;对于分类标识指示渲染方式为光栅化的模型,进行光栅化渲染,生成目标图像中第一部分;对于分类标识指示渲染方式为光线查询的模型,进行光线查询渲染,生成目标图像中第二部分;对于分类标识指示渲染方式为光线追踪的模型,进行光线追踪渲染,生成目标图像中第三部分。
在该方法中,在生成一帧目标图像时,对场景中一部分模型采用光栅化渲染方式,一部分模型采用光线查询渲染方式,一部分模型采用光线追踪渲染方式;即采用三种不同的渲染方式通过三种不同的渲染管线生成一帧目标图像。对于整体图像中一些需要高质量图像效果的模型采用光线追踪流程,提升整体图像的渲染质量;对于整体图像中其他模型采用光栅化流程或光线查询流程,提升整体图像的渲染速度;既提高了目标图像的图像质量又提高了渲染速度。
结合第一方面,在一种可能的实施方式中,获取场景中各个模型的分类标识之前,还可以获取场景中各个模型的顶点信息和材质信息;顶点信息用于表示模型在场景中的位置,材质信息包括基础色,粗糙度,反射率和分类标识中至少一项。
这样,各个不同的渲染方式都可以共享模型的顶点信息和材质信息。
结合第一方面,在一种可能的实施方式中,根据模型的分类标识对场景中每个模型分别进行渲染之前,还包括:对场景进行光栅化处理,获取场景中各个模型的深度信息和法线信息;深度信息用于表示模型到图像平面的距离;法线信息用于表示模型表面的法线。
先采用计算速度较快的光栅化处理获取各个模型的深度信息和法线信息,就可以将深度信息和法线信息共享给其他渲染方式。
结合第一方面,在一种可能的实施方式中,对于分类标识指示渲染方式为光线追踪的模型,进行光线追踪渲染,包括:根据场景中各个模型的深度信息计算经过目标图像中各个像素点的初始光线与场景中模型的第一次交点的坐标;根据像素点对应的初始光线、第一次交点的坐标以及材质信息和法线信息计算每个第一次交点对应的第一次反射光线和第一次折射光线;根据像素点对应的第一次交点的坐标、第一次反射光线和第一次折射光线计算经过像素点的光线在所述场景中的全部交点的坐标;根据光源的光辐射能量,经过像素点的光线在场景中的全部交点的坐标,以及光线的波长,计算像素点的光亮度值。
在该方法中,将深度信息和法线信息用于光线追踪渲染过程中计算光线在场景中与模型的第一次交点以及第一次交点处反射产生的第一次反射光线和第一次交点处折射产生的第一次折射光线。节省光线追踪生成图像过程中所有光路的第一次交点计算的计算消耗,降低光线追踪渲染过程中整体的计算量。
结合第一方面,在一种可能的实施方式中,对于分类标识指示渲染方式为光栅化的模型,进行光栅化渲染,生成目标图像中第一部分;对于分类标识指示渲染方式为光线查询的模型,进行光线查询渲染,生成目标图像中第二部分;包括:对于分类标识指示渲染方式为光栅化的不透明模型进行光栅化渲染,生成对应的不透明模型的图像;对于分类标识指示渲染方式为光线查询的不透明模型进行光栅化渲染,生成对应的不透明模型的图像;对于分类标识指示渲染方式为光栅化的半透明模型进行光栅化渲染,生成对应的半透明模型的图像;对于分类标识指示渲染方式为光线查询的半透明模型进行光栅化渲染,生成对应的半透明模型的图像。
在该方法中,将不透明模型与半透明模型分开进行渲染,可以实现半透明模型的光线亮度的效果。
结合第一方面,在一种可能的实施方式中,在获取场景中各个模型的顶点信息和材质信息之后,还包括:根据场景中各个模型的顶点信息生成加速结构和空间管理结构;其中,加速结构用于光线查询渲染中执行射线求交计算,空间管理结构用于光线追踪渲染中执行射线求交计算。
这样,可以加快光线查询和光线追踪中求交计算速度,提升整体渲染速度。
结合第一方面,在一种可能的实施方式中,对于分类标识指示渲染方式为光栅化的模型,进行光栅化渲染,生成目标图像中第一部分;对于分类标识指示渲染方式为光线查询的模型,进行光线查询渲染,生成目标图像中第二部分;对于分类标识指示渲染方式为光线追踪的模型,进行光线追踪渲染,生成目标图像中第三部分之后;还包括:将该第一部分、第二部分和第三部分合并为目标图像。
结合第一方面,在一种可能的实施方式中,对于分类标识指示渲染方式为光线追踪的模型,进行光线追踪渲染之前,还包括:对于分类标识指示渲染方式为光线追踪的半透明模型,更新半透明模型的正面对应的深度信息。
该步骤是为了后续将光线追踪的渲染结果和光栅化+光线查询的渲染结果合并。也就是,当渲染半透明模型的时候,从半透明模型的材质信息可以判断这个模型是不是走光线追踪渲染。如果不走光线追踪渲染,这个半透明模型就直接渲染,不需要将深度值覆盖深度图对应位置的数据。如果这个半透明模型走光线追踪渲染,这里只把这个半透明模型的深度值覆盖深度图对应位置,而不做模型颜色的计算,留到后面光线追踪渲染流程中去计算。
结合第一方面,在一种可能的实施方式中,分类标识是根据用户输入生成的。用户可以选择每个模型的渲染方式。
第二方面,提供了一种电子设备,该电子设备具有实现上述第一方面所述的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
第三方面,提供了一种电子设备,包括:处理器和存储器;该存储器用于存储计算机执行指令,当该电子设备运行时,该处理器执行该存储器存储的该计算机执行指令,以使该电子设备执行如上述第一方面中任一项所述的图像渲染方法。
第四方面,提供了一种电子设备,包括:处理器;所述处理器用于与存储器耦合,并读取存储器中的指令之后,根据所述指令执行如上述第一方面中任一项所述的图像渲染方法。
第五方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机可以执行上述第一方面中任一项所述的图像渲染方法。
第六方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机可以执行上述第一方面中任一项所述的图像渲染方法。
第七方面,提供了一种装置(例如,该装置可以是芯片系统),该装置包括处理器,用于支持电子设备实现上述第一方面中所涉及的功能。在一种可能的设计中,该装置还包括存储器,该存储器,用于保存电子设备必要的程序指令和数据。该装置是芯片系统时,可以由芯片构成,也可以包含芯片和其他分立器件。
其中,第二方面至第七方面中任一种设计方式所带来的技术效果可参见第一方面中不同设计方式所带来的技术效果,此处不再赘述。
附图说明
图1为本申请实施例提供的图像渲染方法所适用的一种电子设备的硬件结构示意图;
图2为一种光栅化渲染的原理示意图;
图3为一种光线追踪渲染的原理示意图;
图4为本申请实施例提供的图像渲染方法的流程示意图;
图5为本申请实施例提供的图像渲染方法的一种场景实例示意图;
图6为本申请实施例提供的图像渲染方法中一种缓存结构示意图;
图7为本申请实施例提供的图像渲染方法的流程示意图;
图8为一种光线追踪渲染的原理示意图;
图9为本申请实施例提供的图像渲染方法的流程示意图;
图10为本申请实施例提供的图像渲染方法的一种原理示意图;
图11为本申请实施例提供的图像渲染方法的一种原理示意图;
图12为本申请实施例提供的图像渲染方法的流程示意图;
图13为本申请实施例提供的一种电子设备结构组成示意图;
图14为本申请实施例提供的一种芯片系统的示意图。
具体实施方式
在本申请实施例的描述中,以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本申请以下各实施例中,“至少一个”、“一个或多个”是指一个或两个以上(包含两个)。术语“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系;例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。术语“连接”包括直接连接和间接连接,除非另外说明。“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请实施例提供的方法可以应用于具备图像处理能力的电子设备。上述电子设备可以包括手机、平板电脑、笔记本电脑、个人电脑(personal computer,PC)、超级移动个人计算机(ultra-mobile personal computer,UMPC)、智能家居设备(比如,智能电视、智慧屏、大屏等)、个人数字助理(personal digital assistant,PDA)、可穿戴设备(比如,智能手表、智能手环等)、车载设备、AR\VR设备、服务器等,本申请实施例对此不做任何限制。
在本申请实施例中,上述电子设备是可以运行操作系统,安装应用程序的电子设备。可选地,电子设备运行的操作系统可以是系统,/>系统,/>系统等。
图1为上述电子设备的一种结构示意图。其中,电子设备100可以包括:处理器110,存储器120,通用串行总线(universal serial bus,USB)接口130,电源模块140,通信模块150,显示屏160,音频模块170,摄像头180,按键190,马达191,指示器192等。
可以理解的是,本实施例示意的结构并不构成对电子设备100的具体限定。在另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
处理110上可以运行操作系统,安装应用程序等。可选地,操作系统可以是系统,/>系统,/>系统等。在一种示例中,处理110中运行有渲染器(或称为渲染引擎),用于将3D物体绘制到屏幕上,形成2D图像。在一些实施例中,渲染器可以运行在CPU上,比如光栅化渲染器;在一些实施例中,渲染器可以运行在GPU上,比如光线追踪渲染器、光线查询渲染器。在一些实施例中,处理110中可以运行有多种渲染器,比如,处理器110中同时运行有光栅化渲染器、光线追踪渲染器和光线查询渲染器。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
存储器120可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在存储器120的指令,从而执行电子设备的各种功能应用以及数据处理。例如,在本申请实施例中,处理器110可以通过执行存储在存储器120中的指令,存储器120可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)。存储数据区可存储电子设备使用过程中所创建的数据(比如视频文件)等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
可以理解的是,本实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备的结构限定。在另一些实施例中,电子设备也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
电源模块140用于为电子设备100的各个部件,如处理器110、存储器120等供电。
通信模块150可以提供应用在电子设备100上的包括无线局域网(wireless localarea networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR),紫峰(ZigBee)等无线通信的解决方案。
电子设备100通过GPU,显示屏160,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏160和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏160用于显示图像,视频等。例如,用于显示渲染好的图像。该显示屏160包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode,AMOLED),柔性发光二极管(flex light-emitting diode,FLED),Mini-LED,Micro-OLED,Micro-OLED,量子点发光二极管(quantum dot light emitting diodes,QLED)等。
电子设备100可以通过ISP,摄像头180,视频编解码器,GPU,显示屏160以及应用处理器等实现拍摄功能。
ISP用于处理摄像头180反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头180中。
摄像头180用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。马达191可以产生振动提示。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,通知等。
下面以上述电子设备100执行本申请实施例提供的图像渲染方法为例进行详细介绍。
光栅化(Raster),光线追踪(Ray Tracing),光线查询(Ray Query)分别是三种不同的图像渲染技术。
光栅化可以理解为,显示屏是由一个个发光点组成的,三维场景中的物体要显示在显示屏上,需要将三维物体转化为显示屏上一个个发光的点。将三维场景投影为显示屏上一个个发光点的过程即光栅化(Raster)。示例性的,图2示出了一种将三角形物体投影到图像平面上像素点的示意图。
光线追踪(Ray Tracing)又称为光迹追踪或光线追迹,用于通过在图像平面中以像素为单位跟踪光线的路径并模拟光线与虚拟对象相遇的效果来生成图像。示例性的,图3示出了光线追踪方法中模拟光线路径的一种示意图。如图3所示,沿着到达视点(人眼或摄像机)的光线的反方向构造光线。该构造的光线与光源发出的光线的路径方向相反。构造的光线与场景中一个物体相交,可能会发生反射,还可能会发生折射;反射或折射后形成新的光线。新的光线还可能会碰到物体而发生反射以及折射。经过多次反射或折射后,一些光线最终到达光源。从视点出发,经过反射或折射后最终到达光源的光线路径称为有效光路。可以理解的,该有效光路也是从光源出发,经过反射或折射后最终到达视点的光线路径。示例性的,图3示出了4条有效光路上的光线。每条有效光路分别经过图像平面(相机屏幕)上一个像素点。如图3所示,有效光路①上有4根光线,有效光路②上有3根光线,有效光路③上有3根光线,有效光路④上有2根光线。需要说明的是,为了便于理解,图3所示每条有效光路上光线与物体相遇的次数较少,也就是说每条有效光路上交点较少。在实际情况中,一般来说,视点发出的光线会在多次反射或折射后,经过漫长的路径,才会到达光源。每条有效光路上的交点都非常多。光线追踪生成图像,即计算图像中每个像素点的光亮度值;像素点的光亮度值是该像素点所在的有效光路上,所有交点处光辐射能量的加权和。
光线查询(Ray Query),也称为Vulkan光线跟踪或实时光线追踪,是一种移动设备上基于GPU加速的实时光线追踪技术。光线查询通常使用光栅化场景和一些光线跟踪方面的混合技术组合,针对构建的优化数据结构(称为加速结构(acceleration structure,AS))执行光线相交运算,可以在复杂场景中获得高性能。示例性的,光线查询的一个典型应用场景是游戏中的实时光线跟踪,其为游戏图像提供降噪等后处理功能,凭借新的图像处理硬件和光线追踪的特性,可以在更低功耗的基础上最大程度提升手机游戏的画质水平。
本申请实施例提供一种图像渲染方法,采用光栅化(Raster)、光线查询(RayQuery)和光线追踪(Ray Tracing)混合渲染框架对一个场景进行渲染,可以对一个场景中的不同模型采用不同的渲染方式;对于整体图像中一些需要高质量图像效果的模型采用光线追踪流程,提升整体图像的渲染质量;对于整体图像中其他模型采用光栅化流程或光线查询流程,提升整体图像的渲染速度。这样,不同渲染方式之间可以共享中间数据,多个渲染方式协同工作,共同对渲染结果贡献,根据业务逻辑生成画质与功耗符合预期的结果。
下面结合附图详细介绍本申请实施例提供的图像渲染方法。示例性,如图4所示,该方法可以包括:
S401、加载待渲染场景,获取该场景中各个模型的顶点信息以及该场景对应的数据信息。
电子设备中保存了用于构造三维场景的各种模型,模型即三维场景中的虚拟物体。用户可以使用各种模型构造每一帧图像的三维场景。示例性的,图5为一帧图像的场景示意图。如图5所示,该三维场景中物体1的模型为球体,物体2的模型为圆柱体,物体3的模型为正方体。当然,模型还可以是天空、地面、墙面等背景物。用户可以通过电子设备的输入装置(比如键盘、鼠标、手写笔、触摸屏等)选择每一帧图像中构造三维场景的各个模型。
在一种示例中,用户可以设置每个模型在三维场景中的位置,电子设备可以根据模型的位置获取模型的顶点信息。顶点信息,用于标记模型的位置。在一种实现方式中,将三角形作为图像渲染中的基本渲染图元。在渲染图像时,对模型(任意几何图形)进行三角剖分,一个模型被视为由一个或多个三角形(且仅由三角形)组成。顶点信息包括顶点数据和索引数据。顶点数据用于表示模型各个顶点的位置,索引数据用于标记组成模型的三角形的顶点。比如,四边形的四个顶点位置分别为v0、v1、v2和v3,对应的索引分别为0,1,2和3。该四边形可以分成两个三角形。索引数据一包括索引0、1和2,对应顶点v0、v1、v2组成的三角形,索引数据二包括1、2和3,对应顶点v1、v2、v3组成的三角形。示例性的,模型的位置信息可以保存于.obj,.fbx,或.c4d等格式的文件中。电子设备加载待渲染场景,可以获取场景中每个模型的顶点信息。
电子设备还可以根据待渲染场景获取该场景对应的数据信息。在一种实现方式中,将场景的数据信息保存至G-Buffer(Geometry Buffer,几何缓存)中,每个场景对应一个G-Buffer。示例性的,G-Buffer用于保存目标图像中每个像素点的深度信息,法线信息,材质信息等。在一种示例中,如图6所示,G-Buffer包括材质缓存,用于保存材质信息;包括深度缓存,用于保存深度信息;包括法线缓存,用于保存法线信息等。
深度信息,用于标记模型与图像平面的距离。在一种示例中,用户可以设置每个模型与图像平面的距离,电子设备根据模型的深度获取模型的深度信息。在一种实现方式中,场景的深度信息可以保存至一张深度图像中。
法线信息,用于标记模型表面各点处的法线的三维坐标。
材质信息,用于表示模型的材质;模型的材质可以包括粗糙度、反射率、基础色、环境光遮蔽数据等。每种模型的材质是预先配置好的。用户选择好模型,即确定了模型的材质。示例性的,模型的材质信息可以保存为图片格式。
用户还可以指定各个模型的渲染方式(比如,光栅化、光线追踪或光线查询等)。本申请实施例中,每种渲染方式分别对应一条渲染管线。光栅化对应光栅化管线、光线查询对应光线查询管线和光线追踪对应光线追踪管线。示例性的,电子设备中预设了每种渲染管线对应的分类标识,比如,分类标识1表示光栅化管线,分类标识2表示光线查询管线,分类标识3表示光线追踪管线。电子设备接收到用户指定的模型的渲染方式,则根据模型的渲染方式确定该模型对应的渲染管线,即确定该模型对应的分类标识。在一种实现方式中,将场景中各个模型的分类标识分别保存在模型对应的材质信息中。这样,电子设备可以采用不同的渲染方式对同一场景中不同模型进行渲染。对于整体图像中一些需要高质量图像效果的模型采用光线追踪流程,提升整体图像的渲染质量;对于整体图像中其他模型采用光栅化流程或光线查询流程,提升整体图像的渲染速度。
S402、根据场景的数据信息和模型的顶点信息构建场景对应的加速结构和空间管理结构。
可选的,可以根据模型的顶点信息构建加速结构。加速结构用于光线查询中执行射线求交计算;采用该加速结构进行射线求交,可以加快求交计算速度。在一种实现方式中,将场景中各个模型的顶点数据绑定到GPU的顶点缓冲区,将索引数据绑定到GPU的索引缓冲区,利用顶点缓冲区和索引缓冲区创建用于光线查询的加速结构。示例性的,将顶点缓冲区和索引缓冲区赋值给VKAccelerationStructureGeometryKHR数据结构,再通过创建AccelerationStructure的指令创建对应的加速结构。
可选的,可以根据场景的数据信息和模型的顶点信息构建空间管理结构。空间管理结构(KD树)用于光线追踪中执行射线求交计算;通过将顶点信息以及顶点对应的材质信息(包括基础色(Albedo),粗糙度,反射率等)组成的场景三角形数据,按照场景三角形的空间位置分布构建最优化的二叉查找树,便于光线追踪的光线在场景中遍历求交点。
S403、按照模型的分类标识对场景中各个模型分别进行渲染,生成目标图像。
在一种实现方式中,根据模型的顶点信息获取场景中各个模型的材质信息,根据模型的材质信息获取模型对应的分类标识。对于分类标识不同的模型,分别采用对应的渲染方式进行渲染,生成模型对应的图像;每个模型对应的图像构成目标图像中的一部分。
示例性的,对于分类标识为1的模型,采用光栅化管线进行光栅化渲染,生成目标图像中第一部分;对于分类标识为2的模型,采用光线查询管线进行光线查询渲染,生成目标图像中第二部分;对于分类标识为3的模型,采用光线追踪管线进行光线追踪渲染,生成目标图像中第三部分。
示例性的,图5所示场景中“地板”、“墙面”和“物体3”的分类标识为1,采用光栅化渲染;“物体2”的分类标识为2,采用光线查询渲染;“物体1”的分类标识为3,采用光线追踪渲染;同一场景中不同模型分别采用三种不同渲染方式进行渲染,共同生成目标图像。电子设备采用不同的渲染方式对同一场景中不同模型进行渲染。比如,图5中“地板”、“墙面”等面积较大且图像质量要求较低的模型采用光栅化渲染,保证整体图像的渲染速度。图5中“物体1”的图像质量要求较高,采用光线追踪渲染,保证整体图像的渲染质量。
可选的,在一种实现方式中,在采用光线查询管线对模型进行光线查询渲染时,可以根据模型的顶点信息获取对应的加速结构,用于执行射线求交计算,加快求交计算速度。
可选的,在一种实现方式中,在采用光线追踪管线对模型进行光线追踪渲染时,可以根据模型的顶点信息和材质信息获取对应的空间管理结构,用于光线追踪中执行射线求交计算;加快求交计算速度。
其中,采用加速结构提升光线查询中射线求交计算速度的具体方法可以参考现有技术中的描述,采用空间管理结构提升光线追踪中射线求交计算速度的具体方法可以参考现有技术中的描述。
本申请实施例提供的图像渲染方法中,在生成一帧目标图像时,对场景中一部分模型采用光栅化渲染方式,一部分模型采用光线查询渲染方式,一部分模型采用光线追踪渲染方式;即采用三种不同的渲染方式通过三种不同的渲染管线生成同一帧目标图像;既提高了目标图像的图像质量又提高了渲染速度。在一些实施例中,在对场景中各个模型采用不同渲染方式分别进行渲染时,不同渲染方式之间可以共享数据。示例性的,图7示出了本申请实施例提供的图像渲染方法的一种具体流程。如图7所示,本申请实施例提供的图像渲染方法可以包括:
S701、加载待渲染场景,获取该场景中各个模型的顶点信息。对场景进行光栅化处理,获取场景对应的数据信息。
模型的属性可以包括不透明模型和半透明模型。每个模型的属性是预先配置的。用户选择了一种模型,即确定了该模型的属性。本申请实施例在光栅化管线和光线查询管线中,先对场景中的不透明模型进行渲染,再对半透明模型进行渲染。
在一些实施方式中,对场景进行光栅化处理,生成场景对应的G-Buffer。根据不透明模型的顶点信息可以获取该不透明模型对应的深度信息、材质信息、法线信息等。
在一种示例中,采用三张RGBA四通道浮点型图像(图像一、图像二和图像三)和一张深度模板图像(图像四)组成的G-Buffer保存不透明模型的顶点信息、深度信息和材质信息。其中,图像一的RGB通道用于存储模型材质信息中的基础色,A通道用于存储材质信息中的分类标识。图像二的RGB通道用于存储模型的法线信息中X轴、Y轴和Z轴的坐标,A通道用于存储模型材质信息中的环境光遮蔽数据。图像三的R通道用于存储模型的材质信息中的粗糙度,G通道用于存储模型的材质信息中的反射率,B通道和A通道保留。图像四的深度通道用于存储模型的深度信息,模板通道保留。
本申请实施例先采用光栅化渲染方式对场景进行处理,获取场景中各个模型的顶点信息、深度信息、材质信息、法线信息等数据信息。这样,就可以将这些数据信息用于光线查询渲染方式和光线追踪渲染方式,提高光线查询渲染方式和光线追踪渲染方式的处理速度。
S702、根据场景的数据信息和模型的顶点信息构建场景对应的加速结构和空间管理结构。
S702的具体内容可以参考S402的描述,此处不再赘述。
S703、对场景中分类标识对应光栅化的不透明模型进行光栅化后处理,生成该不透明模型对应图像;对场景中分类标识对应光线查询的不透明模型进行光线查询后处理,生成该不透明模型对应图像。
后处理即计算目标图像中像素的数据值。在一种实现方式中,将不透明模型对应的数据信息作为输入,对目标图像中每个待着色像素采样G-Buffer中的数据信息;比如,数据信息为G-Buffer中的三张RGBA四通道浮点型图像和一张深度模板图像;即获取数据信息中与目标图像中每个待着色像素对应的数据值。
对于每一个不透明模型,根据模型对应的数据信息(材质信息)获取模型的分类标识。根据不透明模型的分类标识进行判断,如果模型的分类标识对应光栅化,采用光栅化管线按照光栅化流程,渲染不透明模型对应的像素颜色值;如果模型的分类标识对应光线查询,采用光线查询管线按照光线查询流程,渲染不透明模型对应的像素颜色值,计算包括阴影,反射,环境光遮蔽等的效果。其中,在采用光线查询管线对不透明模型进行光线查询渲染时,可以根据该不透明模型的顶点信息获取对应的加速结构,用于执行射线求交计算,加快求交计算速度。
这样,对于场景中分类标识对应光栅化的不透明模型,采用光栅化渲染方式生成了对应图像;对于场景中分类标识对应光线查询的不透明模型,采用光线查询渲染方式生成了对应图像。
S704、对于场景中分类标识对应光线追踪的半透明模型,更新G-Buffer中该模型的正面对应的深度信息。
不透明模型渲染完毕之后,开始半透明模型的渲染。根据G-Buffer中各个模型的材质信息(分类标识)可以确定模型的渲染方式。对于场景中分类标识对应光栅化或光线查询的半透明模型,直接进行渲染。对于场景中分类标识对应光线追踪的半透明模型,这里把这个半透明模型的深度信息覆盖深度图对应位置,而不做模型颜色的计算,留到后面光线追踪渲染流程中去计算。方便后续将光线追踪的结果和光栅化+光线查询的结果合并。
模型的正面即模型面向图像平面的一面。根据G-Buffer中各个模型的材质信息确定分类标识对应光线追踪的模型。将这些模型的正面对应的深度信息渲染到G-Buffer的深度缓存中。
在一种实现方式中,采用如下步骤1-3将模型的深度信息渲染到G-Buffer的深度缓存。
1、关闭Alpha混合:设置VkPipelineColorBlendAttachmentState的blendEnable成员为VK_FALSE。
2、打开背面剔除:设置VkPipelineRasterizationStateCreateInfo的cullMode为VK_CULL_MODE_BACK_BIT。
3、调用Drawcall指令将深度信息渲染到深度缓存。
S705、对于场景中分类标识对应光栅化的半透明模型进行光栅化渲染,生成该半透明模型对应图像;对于场景中分类标识对应光线查询的半透明模型进行光线查询,生成该半透明模型对应图像。
在一种实现方式中,对于对应光栅化渲染的半透明模型,按照半透明模型空间位置从后往前的顺序渲染。示例性的,具体操作如下:
1、打开Alpha混合:设置VkPipelineColorBlendAttachmentState的blendEnable成员为VK_TRUE。
2、打开正面剔除:设置VkPipelineRasterizationStateCreateInfo的cullMode为VK_CULL_MODE_FRONT_BIT。调用Drawcall指令渲染半透明模型的背面。
3、打开背面剔除:设置VkPipelineRasterizationStateCreateInfo的cullMode为VK_CULL_MODE_BACK_BIT。调用Drawcall指令渲染半透明模型的正面。
在一种实现方式中,对于对应光线查询渲染的半透明模型,根据该半透明模型的顶点信息获取对应的加速结构,绑定加速结构,按照材质信息中指定的光线查询渲染半透明模型。
S706、对于场景中分类标识对应光线追踪的模型,采用光线追踪渲染,生成对应图像。
光栅化渲染和光线查询渲染完成之后,开始光线追踪渲染的后处理。可以理解的,一个模型对应的分类标识为光线追踪,则该模型对应的像素点的分类标识为光线追踪。
在一种实现方式中,采样G-Buffer的像素数据,如果当前像素对应的不是光线追踪,则停止渲染操作。如果当前像素对应的是光线追踪,则采用光线追踪进行渲染。
在一些实施例中,可以将S701中对场景进行光栅化处理获取到的数据信息用于光线追踪渲染,提高光线追踪渲染方式的处理速度。
示例性的,图3为光线追踪方法中模拟光线路径的一种示意图。需要说明的是,为了便于理解,图3所示每条有效光路上光线与物体相遇的次数较少,也就是说每条有效光路上交点较少。在实际情况中,一般来说,视点发出的光线会在多次反射或折射后,经过漫长的路径,才会到达光源。每条有效光路上的交点都非常多。示例性的,如图8所示,一根光线(称为光线0)从视点出发,与物体1碰撞产生一个交点P1,在交点P1处反射后形成新的光线(称为光线1);光线1与物体2碰撞产生交点P2,在交点P2处反射后形成光线2;光线2与物体3碰撞产生交点P3,在交点P3处反射后形成光线3;依次类推,经过k次反射后,光线k到达光源。其中,k是远远大于1的数。
光线追踪生成图像,即计算图像中每个像素点的光亮度值;像素点的光亮度值是该像素点所在的有效光路上,所有交点处光辐射能量的加权和。其中,每个交点处的光辐射能量与其所在有效光路上在该交点之前(靠近光源的方向为前)的所有交点处的光辐射能量相关。仍以图8为例,该有效光路对应的像素点的光亮度值是P1处光辐射能量,P2处光辐射能量,P3处光辐射能量……与Pk处光辐射能量的加权和。其中,P1处光辐射能量与P2处光辐射能量相关,P2处光辐射能量与P3处光辐射能量相关,……,Pk-1处光辐射能量与Pk处光辐射能量相关。要计算一个交点处的光辐射能量需要计算该交点之前全部交点的光辐射能量。
其中,一条有效光路上交点Pi处的光辐射能量可以记为Li(Pi,ωi,λ,t),表示t时刻(当前时刻)、波长为λ、入射角度为ωi、交点坐标为Pi的光线的光辐射能量。
示例性的,Li(Pi,ωi,λ,t)可以由公式1计算得到。
Li(Pi,ωi,λ,t)=Le(Pi,ωi,λ,t)+∫Ωfr(Pi,ωj,ωi,λ,t)Lj(Pj,ωj,λ,t)(ωj·Ni)dωj 公式1
其中,j=i+1;ωi是光线在Pi处的入射角度;ωj是光线在Pi处的出射角度,也是光线在Pj处的入射角度;Lj(Pj,ωj,λ,t)为t时刻(当前时刻)、波长为λ、入射角度为ωj、交点坐标为P j的光线的光辐射能量;Ni为交点Pi处的表面法线;fr表示交点Pi对应的模型的材质信息;Le(Pi,ωi,λ,t)表示当交点Pi是光源时的光辐射能量。
可以看出,采用光线追踪渲染生成图像,需要分别针对每个像素点计算该有效光路上各个交点处光辐射能量;要计算各个交点处的光辐射能量,需要先获取各个交点的坐标。光线追踪渲染中,计算交点的过程计算量非常大。
本申请实施例中,可以利用计算速度较快的光栅化渲染方法的输出数据(S701中获取的数据信息),一次性计算出从视点出发的全部n根初始光线,以及每根初始光线分别与场景中物体第一次相遇的n个交点(初始光线与场景中物体第一次相遇的交点称为第一次交点);并计算出每根初始光线在对应的第一次交点处反射产生的反射光线(称为第一次反射光线),以及每根初始光线在对应的第一次交点处折射产生的折射光线(称为第一次折射光线)。可以节省光线追踪生成图像过程中所有光路的第一次交点计算的计算消耗,降低光线追踪渲染过程中整体的计算量。
示例性的,如图9所示,采用光线追踪对模型进行渲染生成对应图像的方法可以包括:
S7061、根据视点位置构建分类标识为光线追踪的每个像素点对应的初始光线。
示例性的,如图10所示,在一条有效光路上,光线从视点出发,经过一个像素点,到达光线与物体的第一次交点。从视点到第一次交点之间的光线即初始光线。可以根据视点位置和各个像素点的位置构建各个像素点对应的初始光线。
以视点是相机为例。获取相机的空间矩阵;相机的空间矩阵表示相机在世界空间的坐标,可以根据相机的空间矩阵获取相机的位置坐标(x0,y0,z0)。在一种示例中,相机的空间矩阵可以是预先配置的。示例性的,相机的空间矩阵是一个4x4的矩阵,该矩阵中第一行第四列的元素表示相机位置坐标在X轴的取值(即x0的值),矩阵中第二行第四列的元素表示相机位置坐标在Y轴的取值(即y0的值),矩阵中第三行第四列的元素表示相机位置坐标在Z轴的取值(即z0的值)。获取到该预先配置的4x4的矩阵,就可以从中获取到相机的位置坐标。
根据目标图像的图像分辨率获取各个像素点的图像空间坐标(u,v)的值。在一种实现方式中,图像空间坐标中u和v的取值范围都为[0.0,1.0]。还可以进一步将图像空间坐标(u,v)转换为取值范围[-1.0,1.0]的标准设备空间坐标。比如,将取值范围都为[0.0,1.0]的u和v的每个值乘2后减1,即可以将u和v的取值范围转换至[-1.0,1.0]。然后,取一个较小的深度值dw,与图像空间坐标(u,v)构建成三维的标准设备坐标(u,v,dw);其中,dw的取值可以为经验取值,比如0.1。即获取到各个像素点的标准设备坐标(u,v,dw)。比如,像素点a的标准设备坐标为(ua,va,dw),像素点b的标准设备坐标为(ub,vb,dw)。
根据相机的位置坐标(x0,y0,z0)和各个像素点的标准设备坐标(u,v,dw)连成向量(x0-u,y0-v,z0-dw),即构建了各个像素点对应的初始光线。示例性的,如图8所示,像素点a对应的初始光线为向量(x0-ua,y0-va,z0-dw),像素点b对应的初始光线为向量(x0-ub,y0-vb,z0-dw)。
S7062、获取各个初始光线在场景中的第一次交点。
根据光栅化渲染的技术实质,光栅化渲染生成的图像中每一个像素点,表示从视点(比如相机)往场景中发射的光线与场景中物体的第一次交点。可以根据光栅化渲染器的生成结果获取光栅化渲染生成图像的各个像素点,即可以获取到从视点(比如相机)往场景中发射的光线(初始光线)在场景中的第一次交点。
在一种实现方式中,获取初始光线在场景中第一次交点的方法包括:
S70621、针对各个像素点采样光栅化渲染结果(G-Buffer信息)中的深度信息,获取各个像素点的深度值d。
S70622、根据目标图像的图像分辨率获取各个像素点的图像空间坐标(u,v)的值。在一种实现方式中,图像空间坐标中u和v的取值范围为[0.0,1.0]。还可以进一步将图像空间坐标(u,v)转换为取值范围[-1.0,1.0]的标准设备空间坐标。根据像素点的深度值d和图像空间坐标(u,v)构建成三维的标准设备坐标(u,v,d)。
S70623、根据视点(相机)的空间矩阵MatView和投影矩阵MatProj,以及像素点的标准设备坐标(u,v,d),获取各个像素点的世界空间坐标(x,y,z)。
示例性的,可以根据如下公式2和公式3计算像素点的世界空间坐标(x,y,z):
(x’,y’,z’,w’)=Inverse(MatView*MatProj)*(u,v,d,1.0); 公式2
(x,y,z)=(x’/w’,y’/w’,z’/w’); 公式3
其中,Inverse表示对矩阵取逆;MatView为相机的空间矩阵,表示相机在世界空间的坐标;MatProj为相机的投影矩阵,表示三维的世界空间到二维的图像空间的坐标变换关系;MatView和MatProj可以是预先配置的;(u,v,d,1.0)是像素点的标准设备坐标(u,v,d)对应的矩阵。
获取了像素点的世界空间坐标(x,y,z),即获取了初始光线在场景中第一次交点的坐标(x,y,z)。示例性的,如图8所示,经过像素点a的初始光线在场景中的第一次交点的坐标为(xa,ya,za),经过像素点b的初始光线在场景中的第一次交点的坐标为(xb,yb,zb)。
S7063、根据初始光线、第一次交点和模型的材质信息获取第一次反射光线和第一次折射光线。
针对各个像素点采样光栅化渲染结果(G-Buffer信息)中的法线信息,获得各个像素点对应的第一次交点处的表面法线N。
针对各个像素点采样场景的材质信息(比如材质图),获取各个像素点对应的材质信息。材质信息可以包括粗糙度、反射率、基础色等。
示例性的,如图11所示,初始光线I到达物体表面发生反射,生成第一次反射光线R1;初始光线I到达物体表面发生折射,生成第一次折射光线R2。
θ1为初始光线I和表面法线N之间的夹角,根据反射的原理,第一次反射光线R1与表面法线N之间的夹角也为θ1。因此,根据初始光线I和表面法线N可以计算出第一次反射光线R1。示例性的,可以根据公式4计算第一次反射光线R1。
R1=I-2*(Dot(N,I))*N 公式4
其中,Dot表示点乘。
θ2为第一次折射光线R2和表面法线N之间的夹角,根据θ1、物体表面两侧的粗糙度η1及η2可以获取θ2。因此,根据初始光线I、表面法线N、物体表面两侧的粗糙度η1及η2可以计算出第一次折射光线R2。示例性的,可以根据公式5计算第一次折射光线R2。
S7064、根据每个像素点对应的第一次反射光线和第一次折射光线,计算光线追踪中全部交点的位置以及光辐射能量,获取每个待着色像素点的数据值。
计算出初始光线在交点P1处的入射角度,以及初始光线在交点P1处的折射光线的入射角度,以及初始光线在交点P1处的折射光线的入射角度;就可以计算出交点P1处的光辐射能量。然后可以采用本领域可以获取到的光线追踪方法计算出交点P2、交点P3……交点Pk的位置以及光辐射能量。根据该有效光路上P1处光辐射能量、P2处光辐射能量、P3处光辐射能量……与Pk处光辐射能量的加权和,可以获取该有效光路对应的像素点的光亮度值。
在该方法中,利用光栅化渲染结果计算第一次交点的位置,取代了传统光线追踪方法中第一次光线遍历求交的过程;这样就提高了光线追踪渲染方式生成图像的整体速度。
在一种实现方式中,绑定空间管理结构(KD树)到UniformBuffer中。将计算出的第一次反射光线和第一次折射光线分布中的每一根光线,通过KD树的数据计算光线追踪的完整逻辑流程,渲染出光线追踪的每个待着色像素点的数据值。
这样,对于场景中分类标识对应光线追踪的模型,采用光线追踪渲染方式生成了对应图像。
S707、将采用光栅化渲染生成的图像、采用光线查询渲染生成的图像以及采用光线追踪渲染生成的图像合并为目标图像。
本申请实施例提供的图像渲染方法,在渲染一帧图像时,对于不同的模型采用不同的渲染方式,采用三种不同的渲染方式通过三种不同的渲染管线生成同一帧目标图像,共享了渲染资源。并且,利用光栅化渲染的中间结果(场景对应的数据信息)减少光线追踪的计算量。对于完整一帧图像渲染的画质和功耗取得整体最优化的结果。
示例性的,图12为本申请实施提供的图像渲染方法的一种流程示意图。如图12所示,渲染引擎进行场景更新,加载一帧待渲染场景。对场景中的模型进行动画更新和物理更新,更新的结果显示为模型空间坐标和空间矩阵的变化以及模型顶点位移造成的空间坐标变化。即获取更新后的场景中各个模型的顶点信息。根据模型的顶点信息创建场景的数据结构,生成用于光线查询的加速结构以及用于光线追踪的空间管理结构(KD树)。先对场景做深度渲染,将场景的深度信息渲染到G-Buffer中的深度图像中。对所有不透明的模型进行渲染,渲染输出模型的颜色、法线、粗糙度/反射率等,以及模型的分类标识;输出到G-Buffer对应的图像中。比如,将场景中的不透明模型的几何和材质信息渲染到三张RGBA四通道浮点型图像和一张深度模板图像组成的G-Buffer中。然后执行后处理,将G-Buffer的图像作为输入,对每个待着色像素采样G-Buffer中的数据,分别按照光栅化或光线查询的流程渲染对应的像素颜色值。如果当前像素用于执行光线查询渲染,则绑定场景的加速结构,调用对应的光线查询算法,计算包括阴影、反射、环境光遮蔽等的效果。不透明模型渲染完毕之后,开始半透明模型的渲染。根据模型类型确定,如果模型是使用光线追踪渲染,将该模型的正面深度信息渲染到G-Buffer的深度缓存中。如果模型是使用光栅化或光线查询渲染,根据模型的材质信息(分类标识),调用对应模型的着色算法(光栅化着色算法或者光线查询着色算法)进行着色。光栅化渲染和光线查询渲染完成之后,开始光线追踪渲染的后处理。采样G-Buffer的像素数据;如果当前像素不是光线追踪渲染,则放弃操作。如果当前像素是光线追踪渲染,计算光线的第一次反射光线和第一次折射光线的分布。然后绑定KD树数据结构,将上一步计算的第一次反射光线和第一次折射光线分布中的每一根光线,通过KD树数据结构计算光线追踪的完整逻辑流程;渲染出光线追踪的像素颜色,输出光线追踪渲染结果。最后,将光栅化渲染结果、光线查询渲染结果和光线追踪渲染结果合成为目标图像。
可以理解的是,本申请实施例提供的电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
本申请实施例可以根据上述方法示例对上述电子设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在一种示例中,请参考图13,其示出了上述实施例中所涉及的电子设备的一种可能的结构示意图。该电子设备1200包括:处理单元1210、存储单元1220和显示单元1230。
其中,处理单元1210,用于对电子设备1200的动作进行控制管理。存储单元1220用于保存电子设备1200的程序代码和数据,处理单元1210调用存储单元1220存储的程序代码,以执行以上方法实施例中的各个步骤。显示单元1230用于显示电子设备1200的用户界面,还可以用于显示生成的目标图像。
当然,上述电子设备1200中的单元模块包括但不限于上述处理单元1210、存储单元1220和显示单元1230。例如,电子设备1200中还可以包括通信单元、电源单元等。通信单元用于电子设备1200与其他电子设备进行通信;电源单元用于对电子设备1200供电。
其中,处理单元1210可以是处理器或控制器,例如可以是中央处理器(centralprocessing unit,CPU),图形处理器(graphics processing unit,GPU),数字信号处理器(digital signal processor,DSP),专用集成电路(application-specific integratedcircuit,ASIC),现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。存储单元1220可以是存储器。显示单元1230可以是显示屏等。
例如,处理单元1210为处理器(如图1所示的处理器110),存储单元1220可以为存储器(如图1所示的存储器120),显示单元1230可以为显示屏(如图1所示的显示屏160)。本申请实施例所提供的电子设备1200可以为图1所示的电子设备100。其中,上述处理器、存储器、显示屏等可以连接在一起,例如通过总线连接。处理器调用存储器存储的程序代码,以执行以上方法实施例中的各个步骤。
本申请实施例还提供一种芯片系统(例如,片上系统(system on a chip,SoC)),如图14所示,该芯片系统包括至少一个处理器1301和至少一个接口电路1302。处理器1301和接口电路1302可通过线路互联。例如,接口电路1302可用于从其它装置(例如电子设备的存储器)接收信号。又例如,接口电路1302可用于向其它装置(例如处理器1301或者电子设备的触摸屏或者电子设备的摄像头)发送信号。示例性的,接口电路1302可读取存储器中存储的指令,并将该指令发送给处理器1301。当所述指令被处理器1301执行时,可使得电子设备执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本申请实施例对此不作具体限定。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令,当所述计算机指令在上述电子设备上运行时,使得该电子设备执行上述方法实施例中各个功能或者步骤。
本申请实施例还提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行上述方法实施例中各个功能或者步骤。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (11)
1.一种图像渲染方法,其特征在于,包括:
加载待渲染场景;
获取所述场景中各个模型的分类标识,所述分类标识用于指示模型的渲染方式,所述渲染方式包括光栅化、光线查询和光线追踪;
根据模型的分类标识对场景中每个模型分别进行渲染,生成目标图像;其中,对于分类标识指示渲染方式为光栅化的模型,进行光栅化渲染,生成目标图像中第一部分;对于分类标识指示渲染方式为光线查询的模型,进行光线查询渲染,生成目标图像中第二部分;对于分类标识指示渲染方式为光线追踪的模型,进行光线追踪渲染,生成目标图像中第三部分。
2.根据权利要求1所述的方法,其特征在于,所述获取所述场景中各个模型的分类标识之前,所述方法还包括:
获取所述场景中各个模型的顶点信息和材质信息;所述顶点信息用于表示模型在场景中的位置,所述材质信息包括基础色,粗糙度,反射率和分类标识中至少一项。
3.根据权利要求2所述的方法,其特征在于,所述根据模型的分类标识对场景中每个模型分别进行渲染之前,所述方法还包括:
对所述场景进行光栅化处理,获取所述场景中各个模型的深度信息和法线信息;所述深度信息用于表示模型到图像平面的距离;所述法线信息用于表示模型表面的法线。
4.根据权利要求3所述的方法,其特征在于,所述对于分类标识指示渲染方式为光线追踪的模型,进行光线追踪渲染,包括:
根据所述场景中各个模型的深度信息计算经过目标图像中各个像素点的初始光线与所述场景中模型的第一次交点的坐标;
根据像素点对应的所述初始光线、所述第一次交点的坐标以及所述材质信息和所述法线信息计算每个所述第一次交点对应的第一次反射光线和第一次折射光线;
根据像素点对应的第一次交点的坐标、第一次反射光线和第一次折射光线计算经过所述像素点的光线在所述场景中的全部交点的坐标;
根据光源的光辐射能量,经过像素点的光线在所述场景中的全部交点的坐标,以及光线的波长,计算像素点的光亮度值。
5.根据权利要求1所述的方法,其特征在于,所述对于分类标识指示渲染方式为光栅化的模型,进行光栅化渲染,生成目标图像中第一部分;对于分类标识指示渲染方式为光线查询的模型,进行光线查询渲染,生成目标图像中第二部分;包括:
对于分类标识指示渲染方式为光栅化的不透明模型进行光栅化渲染,生成对应的不透明模型的图像;
对于分类标识指示渲染方式为光线查询的不透明模型进行光栅化渲染,生成对应的不透明模型的图像;
对于分类标识指示渲染方式为光栅化的半透明模型进行光栅化渲染,生成对应的半透明模型的图像;
对于分类标识指示渲染方式为光线查询的半透明模型进行光栅化渲染,生成对应的半透明模型的图像。
6.根据权利要求2所述的方法,其特征在于,在所述获取所述场景中各个模型的顶点信息和材质信息之后,所述方法还包括:
根据所述场景中各个模型的顶点信息生成加速结构和空间管理结构;所述加速结构用于光线查询渲染中执行射线求交计算,所述空间管理结构用于光线追踪渲染中执行射线求交计算。
7.根据权利要求1-6任意一项所述的方法,其特征在于,所述对于分类标识指示渲染方式为光栅化的模型,进行光栅化渲染,生成目标图像中第一部分;对于分类标识指示渲染方式为光线查询的模型,进行光线查询渲染,生成目标图像中第二部分;对于分类标识指示渲染方式为光线追踪的模型,进行光线追踪渲染,生成目标图像中第三部分之后;所述方法还包括:
将所述第一部分、所述第二部分和所述第三部分合并为所述目标图像。
8.根据权利要求1-6任意一项所述的方法,其特征在于,所述对于分类标识指示渲染方式为光线追踪的模型,进行光线追踪渲染之前,所述方法还包括:
对于分类标识指示渲染方式为光线追踪的半透明模型,更新所述半透明模型的正面对应的深度信息。
9.根据权利要求1-6任意一项所述的方法,其特征在于,所述分类标识是根据用户输入生成的。
10.一种电子设备,其特征在于,包括:处理器和存储器;所述存储器中存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令,当所述指令被所述电子设备执行时,使得所述电子设备执行如权利要求1-9任意一项所述的方法。
11.一种计算机可读存储介质,其特征在于,包括计算机指令;当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-9任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211139121.5A CN116681814B (zh) | 2022-09-19 | 2022-09-19 | 一种图像渲染方法和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211139121.5A CN116681814B (zh) | 2022-09-19 | 2022-09-19 | 一种图像渲染方法和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116681814A true CN116681814A (zh) | 2023-09-01 |
CN116681814B CN116681814B (zh) | 2024-05-24 |
Family
ID=87782467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211139121.5A Active CN116681814B (zh) | 2022-09-19 | 2022-09-19 | 一种图像渲染方法和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116681814B (zh) |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080180442A1 (en) * | 2007-01-30 | 2008-07-31 | Jeffrey Douglas Brown | Stochastic Addition of Rays in a Ray Tracing Image Processing System |
CN108090947A (zh) * | 2018-01-03 | 2018-05-29 | 沈阳品尚科技有限公司 | 一种面向3d场景的光线追踪优化方法 |
CN109862209A (zh) * | 2019-01-04 | 2019-06-07 | 中国矿业大学 | 一种基于光线逆追踪技术还原井下图像的方法 |
CN110969685A (zh) * | 2018-09-28 | 2020-04-07 | 苹果公司 | 使用渲染图的可定制渲染管线 |
US20200273239A1 (en) * | 2019-02-21 | 2020-08-27 | Electronic Arts Inc. | Systems and methods for ray-traced shadows of transparent objects |
CN112184873A (zh) * | 2020-10-19 | 2021-01-05 | 网易(杭州)网络有限公司 | 分形图形创建方法、装置、电子设备和存储介质 |
CN112967369A (zh) * | 2021-04-20 | 2021-06-15 | 北京天空卫士网络安全技术有限公司 | 一种光线展示方法和装置 |
CN113240785A (zh) * | 2021-04-13 | 2021-08-10 | 西安电子科技大学 | 一种多相机联合快速光线追踪方法、系统及应用 |
JP2021163389A (ja) * | 2020-04-03 | 2021-10-11 | ディライトワークス株式会社 | 画像処理装置、画像処理方法、プログラム及び記憶媒体 |
CN113628317A (zh) * | 2020-05-09 | 2021-11-09 | 华为技术有限公司 | 渲染方法、设备以及系统 |
CN113888392A (zh) * | 2021-08-27 | 2022-01-04 | 清华大学 | 一种图像渲染方法、装置、电子设备及存储介质 |
CN114241112A (zh) * | 2021-12-17 | 2022-03-25 | 完美世界(北京)软件科技发展有限公司 | 三维虚拟场景的渲染方法、装置、电子设备及存储介质 |
CN114549730A (zh) * | 2020-11-27 | 2022-05-27 | 华为技术有限公司 | 多光源场景渲染的光源采样权重确定方法及相关设备 |
CN114581589A (zh) * | 2020-11-30 | 2022-06-03 | 华为技术有限公司 | 图像处理方法及相关装置 |
CN114758051A (zh) * | 2020-12-28 | 2022-07-15 | 华为技术有限公司 | 一种图像渲染方法及其相关设备 |
-
2022
- 2022-09-19 CN CN202211139121.5A patent/CN116681814B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080180442A1 (en) * | 2007-01-30 | 2008-07-31 | Jeffrey Douglas Brown | Stochastic Addition of Rays in a Ray Tracing Image Processing System |
CN108090947A (zh) * | 2018-01-03 | 2018-05-29 | 沈阳品尚科技有限公司 | 一种面向3d场景的光线追踪优化方法 |
CN110969685A (zh) * | 2018-09-28 | 2020-04-07 | 苹果公司 | 使用渲染图的可定制渲染管线 |
CN109862209A (zh) * | 2019-01-04 | 2019-06-07 | 中国矿业大学 | 一种基于光线逆追踪技术还原井下图像的方法 |
US20200273239A1 (en) * | 2019-02-21 | 2020-08-27 | Electronic Arts Inc. | Systems and methods for ray-traced shadows of transparent objects |
JP2021163389A (ja) * | 2020-04-03 | 2021-10-11 | ディライトワークス株式会社 | 画像処理装置、画像処理方法、プログラム及び記憶媒体 |
CN113628317A (zh) * | 2020-05-09 | 2021-11-09 | 华为技术有限公司 | 渲染方法、设备以及系统 |
CN112184873A (zh) * | 2020-10-19 | 2021-01-05 | 网易(杭州)网络有限公司 | 分形图形创建方法、装置、电子设备和存储介质 |
CN114549730A (zh) * | 2020-11-27 | 2022-05-27 | 华为技术有限公司 | 多光源场景渲染的光源采样权重确定方法及相关设备 |
CN114581589A (zh) * | 2020-11-30 | 2022-06-03 | 华为技术有限公司 | 图像处理方法及相关装置 |
CN114758051A (zh) * | 2020-12-28 | 2022-07-15 | 华为技术有限公司 | 一种图像渲染方法及其相关设备 |
CN113240785A (zh) * | 2021-04-13 | 2021-08-10 | 西安电子科技大学 | 一种多相机联合快速光线追踪方法、系统及应用 |
CN112967369A (zh) * | 2021-04-20 | 2021-06-15 | 北京天空卫士网络安全技术有限公司 | 一种光线展示方法和装置 |
CN113888392A (zh) * | 2021-08-27 | 2022-01-04 | 清华大学 | 一种图像渲染方法、装置、电子设备及存储介质 |
CN114241112A (zh) * | 2021-12-17 | 2022-03-25 | 完美世界(北京)软件科技发展有限公司 | 三维虚拟场景的渲染方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116681814B (zh) | 2024-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220230380A1 (en) | Watertight ray triangle intersection | |
CN111369655B (zh) | 渲染方法、装置和终端设备 | |
CN110827390A (zh) | 处理无序不透明和α光线/图元交点的方法 | |
CN110827387A (zh) | 没有着色器干预下对交点进行连续层次包围盒遍历的方法 | |
CN113674389B (zh) | 场景渲染方法、装置、电子设备及存储介质 | |
CN107886562A (zh) | 水面渲染方法、装置及可读存储介质 | |
CN113781626A (zh) | 遍历在射线追踪中使用的数据的技术 | |
CN114119853B (zh) | 图像渲染方法、装置、设备和介质 | |
US20230230311A1 (en) | Rendering Method and Apparatus, and Device | |
CN116091676B (zh) | 虚拟对象的面部渲染方法及点云特征提取模型的训练方法 | |
CN110930497B (zh) | 一种全局光照相交加速方法、装置及计算机存储介质 | |
CN104981849A (zh) | 用于丰富深度图的内容的方法和设备 | |
CN113808244A (zh) | 支持运动模糊和运动/变形几何形状的光线追踪硬件加速 | |
CN116051713B (zh) | 渲染方法、电子设备和计算机可读存储介质 | |
CN111161398A (zh) | 一种图像生成方法、装置、设备及存储介质 | |
CN112446943A (zh) | 图像渲染的方法、装置及计算机可读存储介质 | |
CN116740253B (zh) | 一种光线追踪方法和电子设备 | |
CN102981840A (zh) | 基于光子映射图的整体光照计算机模拟处理方法 | |
CN116758208A (zh) | 全局光照渲染方法、装置、存储介质及电子设备 | |
CN116681814B (zh) | 一种图像渲染方法和电子设备 | |
US11830125B2 (en) | Ray-guided water caustics | |
WO2024027286A1 (zh) | 渲染方法、装置、设备及存储介质 | |
US20240054720A1 (en) | Differentiable object insertion using hybrid lighting volumes for synthetic data generation applications | |
CN116993894B (zh) | 虚拟画面的生成方法、装置、设备、存储介质及程序产品 | |
US20230252717A1 (en) | Ray tracing processor |
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 |