CN116051704A - 渲染方法及装置 - Google Patents
渲染方法及装置 Download PDFInfo
- Publication number
- CN116051704A CN116051704A CN202211040621.3A CN202211040621A CN116051704A CN 116051704 A CN116051704 A CN 116051704A CN 202211040621 A CN202211040621 A CN 202211040621A CN 116051704 A CN116051704 A CN 116051704A
- Authority
- CN
- China
- Prior art keywords
- rendering
- module
- application
- ray tracing
- image
- 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 211
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000012545 processing Methods 0.000 claims abstract description 60
- 230000008569 process Effects 0.000 claims abstract description 20
- 238000004422 calculation algorithm Methods 0.000 claims description 61
- 238000012360 testing method Methods 0.000 claims description 27
- 238000004088 simulation Methods 0.000 claims description 12
- 230000015654 memory Effects 0.000 claims description 9
- 238000004806 packaging method and process Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 4
- 238000004220 aggregation Methods 0.000 claims 2
- 230000002776 aggregation Effects 0.000 claims 2
- 230000000694 effects Effects 0.000 abstract description 20
- 230000004044 response Effects 0.000 abstract description 6
- 238000012827 research and development Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 33
- 238000004891 communication Methods 0.000 description 16
- 238000005516 engineering process Methods 0.000 description 10
- 238000010295 mobile communication Methods 0.000 description 9
- 238000011161 development Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000005538 encapsulation Methods 0.000 description 5
- 230000003139 buffering effect Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000003416 augmentation Effects 0.000 description 2
- 238000005286 illumination Methods 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000005293 physical law Methods 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000005111 flow chemistry technique Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
Images
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
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- 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
- G06T5/00—Image enhancement or restoration
- G06T5/70—Denoising; Smoothing
-
- 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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请实施例提供一种渲染方法及装置,应用于移动终端,移动终端中运行第一应用、第一应用的渲染管道以及图像处理平台,所述方法包括:第一应用在运行的过程中,发出渲染指令,响应于渲染指令,第一应用的渲染管道调用图像处理平台,图像处理平台响应于调用,基于光线追踪获得渲染图像,第一应用显示渲染图像。基于光线追踪的渲染方式能够改善渲染图像的效果,并且,渲染管道无需再提供渲染图像,而是调用图像处理平台获得渲染图像,因此,还能够降低第一应用的研发成本。
Description
技术领域
本申请涉及电子信息技术领域,尤其涉及一种渲染方法及装置。
背景技术
随着计算机技术的发展,越来越多的应用程序,例如游戏应用或者视频应用等应用程序,需要在电子设备上显示画质精美的图像。这些图像通常是由电子设备基于三维场景中的模型进行渲染得到。
渲染得到的图像例如阴影(Shadow)的效果优劣主要体现:是否符合物理规律以及是否贴近真实效果。如何改善渲染得到的图像的效果是目前研究的热点之一。
发明内容
本申请提供了一种渲染方法及装置,目的在于解决如何改善渲染得到的图像的效果的问题。
为了实现上述目的,本申请提供了以下技术方案:
本申请的第一方面提供一种渲染方法,应用于移动终端,移动终端中运行第一应用、第一应用的渲染管道以及图像处理平台,所述方法包括:第一应用在运行的过程中,发出渲染指令,响应于渲染指令,第一应用的渲染管道调用图像处理平台,图像处理平台响应于调用,基于光线追踪获得渲染图像,第一应用显示渲染图像。基于光线追踪的渲染方式能够改善渲染图像的效果,并且,渲染管道无需再提供渲染图像,而是调用图像处理平台获得渲染图像,因此,还能够降低第一应用的研发成本。
在一些实现方式中,第一应用的渲染管道调用图像处理平台的方式包括:第一应用的渲染管道基于渲染硬件层接口,向图像处理平台上的光线追踪渲染模块传输调用指令。渲染硬件层接口能够兼容多种类型的应用,具有较优的兼容性能。
在一些实现方式中,基于光线追踪获得渲染图像的方式包括:基于光线追踪获得待去噪渲染图像,对待去噪渲染图像进行去噪处理,得到渲染图像,从而进一步改善渲染图像的效果。
在一些实现方式中,图像处理平台上设置有三维图形处理扩展库,三维图形处理扩展库包括vulkan图形库中的各个模块以及算法集合模块,算法集合模块包括封装模块以及算法模块,封装模块封装算法模块与vulkan图形库中的各个模块的对应关系,算法模块包括实现基于光线追踪获得渲染图像的光线追踪渲染算法模块。三维图形处理扩展库的结构为图像处理平台响应于调用实现基于光线追踪的渲染奠定基础。
在一些实现方式中,基于光线追踪获得渲染图像的方式包括:响应于算法模块中的光线追踪渲染算法模块被调用,通过对应关系,查询得到目标模块,目标模块为光线追踪渲染算法模块对应的vulkan图形库中的模块,至少基于光线追踪渲染算法模块以及目标模块,获得渲染图像。
在一些实现方式中,第一应用显示渲染图像的方式包括:在第一应用通过渲染管道从图像处理平台获得渲染图像后,显示渲染图像。渲染管道无需再执行渲染,而是从图像处理平台获得渲染图像,传输至第一应用显示,所以能够降低第一应用的开发成本。
在一些实现方式中,在第一应用通过渲染管道从图像处理平台获得渲染图像之前,还包括:图像处理平台的光线追踪渲染算法模块基于渲染硬件层接口,向渲染管道传输渲染图像。
在一些实现方式中,图像处理平台上的光线追踪渲染算法模块的测试过程包括:创建模拟应用,触发模拟应用发出渲染指令,响应于渲染指令,调用光线追踪渲染算法模块得到渲染结果,基于渲染结果测试光线追踪渲染算法模块。对光线追踪渲染算法模块的测试,有利于创建、测试、优化以及调试光线追踪渲染算法模块,从而进一步改善渲染的效果。
本申请的第二方面提供一种电子设备,包括:一个或多个处理器,以及一个或多个存储器,存储器存储有一个或多个程序,当一个或者多个程序被处理器执行时,使得电子设备执行本申请的第一方面提供的渲染方法。
本申请的第三方面提供一种计算机可读存储介质,计算机可读存储介质中存储计算机程序,当计算机程序被处理器执行时,使得处理器执行本申请的第一方面提供的渲染方法。
本申请的第四方面一种计算机程序产品,计算机程序产品包括:计算机程序代码,当计算机程序代码在电子设备上运行时,使得电子设备执行本申请的第一方面提供的渲染方法。
附图说明
图1a为使用光栅化渲染技术得到的阴影的示例图;
图1b为使用光线追踪技术到的阴影的示例图;
图2为电子设备的一种硬件结构示例图;
图3为电子设备的一种软件框架示例图;
图4为实现本申请实施例提供的渲染方法的三维图形处理扩展库的结构示例;
图5为本申请实施例提供的渲染方法的流程图;
图6a为含有噪声的阴影图像的示例;
图6b为去除噪声的阴影图像的示例;
图7为移动渲染管道调用gfxvulkan.so的流程中的信息的设置流程;
图8为移动渲染管道调用gfxvulkan.so的流程中主循环流程;
图9为本申请实施例公开的GraphicsLayer框架的结构示例图;
图10为GraphicsLayer框架中的逻辑功能模块以及基本功能模块的结构示例图;
图11为本申请实施例公开的对光线追踪渲染算法模块的测试流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本申请实施例中,“一个或多个”是指一个、两个或两个以上;“和/或”,描述关联对象的关联关系,表示可以存在三种关系;例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请实施例涉及的多个,是指大于或等于两个。需要说明的是,在本申请实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
在传统的图像处理方法中,通常采用光栅化处理对三维场景进行渲染,以得到能够显示三维场景的图像。然而,采用光栅化处理方法进行渲染所得到的图像的效果较差,即往往难以呈现逼真(逼真可以理解为符合物理规律以及贴近真实效果)的画面。例如,渲染得到的图像中通常难以真实还原场景中的光线反射、折射以及阴影等效果。
为了改善光栅化渲染方式存在的问题,光线追踪渲染技术应运而生。光线追踪渲染技术的原理为:从摄影机的位置,通过图像平面上的像素位置,发射一束光线到三维场景中,求光线和几何图形间最近的交点,再求该交点的着色。如果该交点的材质是反射性的,可以在该交点向的反射方向继续追踪,并且继续求取反射后的交点的着色。也就是说,光线追踪方法是通过追踪光线在三维场景中的传播过程,来计算投影与全局光照,从而渲染得到二维图像。
图1a中的区域W1为使用光栅化渲染技术得到的窗户W的Shadow,可以看出,与W相比,W1不符合实际效果。图1b中的区域W2为使用光线追踪技术得到的W的Shadow,显而易见的,W2与W1相比,更贴近实际效果以及更遵循物理规律。
对比图1a和图1b可以看出,使用光线追踪渲染技术得到的Shadow更遵循物理规律也更贴近实际场景下的效果。
但发明人在研究的过程中发现,因为光线追踪渲染技术需要更多的算力和内存等资源,而手机等移动终端不如台式机的资源充沛,所以应用的开发方,例如游戏厂商,难以在移动终端运行的应用上使用光线追踪渲染技术,因此,移动终端运行的应用中呈现的图像的渲染效果欠佳。
并且,可以理解的是,移动终端受到体积的限制,移动终端上用于图像渲染的硬件组件如GPU,通常不具备能够支持光线追踪渲染技术的模块。
综上所述,光线追踪渲染技术难以应用在移动终端,因此,移动终端运行的应用中呈现的图像的渲染效果欠佳,如图1a所示。
本申请的以下实施例中提供一种渲染方法,目的在于,基于硬件的支撑,在终端中设置图像处理平台,将光线追踪渲染模块设置在图像处理平台,并向应用开放光线追踪渲染模块的调用接口,使得应用能够调用光线追踪渲染模块得到渲染结果图像。
本申请的实施例提供的渲染方法应用在终端,可以理解的是,终端并不限于移动终端。终端包括但不限于:平板电脑、PC、超级移动个人计算机(ultra-mobile personalcomputer,UMPC)、车载设备、上网本、个人数字助理(personal digital assistant,PDA)。
以终端为手机为例,图2为电子设备的一种结构示例。电子设备可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。
其中,传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。可以理解的是,本实施例所述渲染方法及装置应用的电子设备中,GPU的算力资源以及集成度均能够支持基于光线追踪的渲染技术。
电子设备的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。
移动通信模块150可以提供应用在电子设备上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。
无线通信模块160可以提供应用在电子设备上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(Bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近场无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code divisionmultiple access,CDMA),宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(globalnavigation satellite system,GLONASS),北斗卫星导航系统(beidou navigationsatellite system,BDS),准天顶卫星系统(quasi-zenith satellite system,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
应理解,除了图2中列举的各种部件或者模块之外,本申请实施例对电子设备的结构不做具体限定。在本申请另一些实施例中,电子设备还可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
在图2所示的电子设备上运行操作系统,操作系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。
以分层架构为例,如图3所示,分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,Android系统包括四层,从上至下分别为应用程序层,应用程序框架层,本地服务(Native)层,以及内核层。
应用程序层包括一系列应用程序。本申请的实施例涉及的应用程序包括游戏和视频等需要进行渲染显示的应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。应用程序框架层中与渲染显示有关的模块包括虚幻引擎(Unreal Engineer)。UnrealEngineer中包括移动渲染管道,以渲染的对象的类型进行划分,移动渲染管道中包括以下模块:阴影、环境光遮蔽(Ambient Occlusion,AO)、反射、全局光照(Global Illuminaion,GI)以及透明度。以阴影为例,阴影用于提供渲染得到显示在游戏等应用界面中的阴影的功能。可以理解的是,在电子设备下载游戏应用程序包后,Unreal Engineer即被设置在应用框架层中。可以理解的是,本实施例中,考虑到UE引擎市占率高,开源可高度定制,技术方案成熟,所以使用UE为例进行说明。除了移动渲染管道之外,渲染管道还可以为前向(Forward)渲染管道与延迟(Deferred)渲染管道。
Native层中与本申请实施例相关的模块包括三维图形处理库、二维图形引擎以及三维图形处理扩展库。三维图形处理扩展库中包括但不限于实现光线追踪渲染算法和去噪算法的算法模块。三维图形处理扩展库为向移动渲染管道提供光线追踪渲染功能等功能的功能库,并且可以理解的是,三维图形处理扩展库通过渲染硬件层接口(Render hardwareinterface,RHI)与移动渲染管道进行交互。图3中,以图像处理平台包括三维图形处理扩展库为例,可以理解的是,三维图形处理库以及二维图形引擎也可以设置在图像处理平台上。
在某些实现方式中,三维图形处理扩展库被封装为gfxvulkan.so的形式,被配置在图像处理平台,并提供RHI供上层调用。
内核层是硬件和软件之间的层。内核层至少包括显示驱动、GPU驱动以及CPU驱动。
可以理解是,Android系统中的以上各层中的模块可以参见Android系统的说明,这里不再赘述。本申请实施例虽然以Android系统为例进行说明,但是其基本原理同样适用于基于iOS或Windows等操作系统的电子设备。
Android系统通过内核层与硬件平台的硬件进行交互,与本申请实施例相关的一个示例为:三维图形处理扩展库中的光线追踪渲染算法模块响应于移动渲染管道中的阴影的调用,通过GPU驱动在GPU中支持运行光线追踪渲染算法的模块运行光线追踪渲染算法,得到作为渲染结果的阴影图像。
图4为三维图形处理扩展库即gfxvulkan.so的具体结构,即gfxvulkan.so包括三部分,第一部分称为core,第二部分称为vulkan,第三部分称为gfx(即算法集合模块)。
core中包括实现基础功能的模块,基础功能可以理解为vulkan以及gfx运行所需的内存调用等基础的功能。图4中,实现基础功能的模块以kernel、存储(memory)、core以及util为例,各个模块的具体功能不再赘述。
vulkan包括vulkan图形库的各个模块,图4中以vkdevice、vkwrapper、vkfunction以及vkdebug为例。即gfxvulkan.so中保留了vulkan图形库的功能,记为vulkan。这里不再对vulkan图形库的各个模块的具体功能进行赘述。
gfx包括各个算法模块,图4中以光线追踪渲染算法模块raytracing以及降噪算法模块denoise为例。
算法模块被调用的情况下,需要调用vulkan中的各个模块,所以可以理解的是,gfx中还包括gfxvulkan(即封装模块),gfxvulkan中封装gfx中的各个算法模块与vulkan中的各个模块的对应关系。任一对应关系中,算法模块被调用的情况下,通过查询该对应关系,调用vulkan中对应的模块。即光线追踪渲染算法模块被调用,通过查询对应关系,通过调用光线追踪算法模块对应的vulkan图形库中的模块以及实现基础功能的模块,获得渲染图像。
可以理解的是,raytracing以及denoise可以集成设置,以降低带宽开销,如仅需要一幅16F的浮点纹理图像,从而降低渲染开销,并且仅需要增加两个Pass,而RayQuery等大部分计算可以放在缓冲器TileBuffer中,易于集成渲染流程,更适用于黑盒测试,并且兼容Forward与Deferred渲染管道。
基于图3和图4,以在游戏界面显示基于光线追踪渲染得到的阴影图像(如图1b所示)为例,渲染流程如图5所示,包括以下步骤:
S51、游戏应用在运行的过程中,向移动渲染管道发送渲染指令。
可以理解的是,游戏应用在运行的过程中,有显示各种对象的需求,在基于预先配置的渲染数据确认需要对待显示的对象进行渲染的情况下,游戏应用向移动渲染管道发送渲染指令。
在本实施例中,假设渲染指令指示渲染某个物体的Shadow。
S52、移动渲染管道中的阴影渲染模块基于渲染指令,调用raytracing。
在某些实现方式中,渲染指令可以携带渲染类型的信息,渲染类型包括移动渲染管道中的各个模块可实现的类型,如阴影渲染、AO、以及反射等。移动渲染管道中的各个模块基于渲染类型的信息,确认是否对渲染指令做出响应,在确认对渲染指令做出响应的情况下,调用gfxvulkan.so中相应的模块。
在另一些实现方式中,渲染指令携带移动渲染管道中作为接收端的信息,如阴影渲染模块的信息,接收端响应于渲染指令,调用gfxvulkan.so中相应的模块。
可以理解的是,gfxvulkan.so中相应的模块是接收端基于实现的功能确定的需要调用的模块,在某些实现方式中,预先在移动渲染管道中的各个模块中配置需要调用的模块的信息。
本实施例中,以gfxvulkan.so中相应的模块是raytracing为例。
如前所述,阴影渲染模块基于RHI与raytracing交互数据。
S53、raytracing在响应于调用指令获得渲染结果后,向denoise发送渲染结果。
本实施例中不再赘述raytracing基于光线追踪渲染算法获得渲染结果的流程。
S54、denoise对渲染结果进行去噪处理后,向阴影渲染模块发送去噪后的阴影图像。
可以理解的是,去噪处理有利于去除渲染结果的噪声,从而提高作为渲染结果的图像的质量。
以图6a和图6b为例,图6a中的区域A1为渲染结果,可以看出,渲染结果中包括噪声(如区域A1的“毛边”),图6b中的区域A2为对区域A1进行去噪处理的结果,可以看出,经过去噪处理后,渲染结果中的噪声有所减少(即区域A2的毛边有减少)。
可以理解的是,图4以及图5中,均以raytracing与denoise分开设置为例,也可以将denoise的功能集成在raytracing,这里不做限定。
需要说明的是,图5中以denoise向阴影渲染模块反馈去噪后的渲染结果为例,在另一些实现方式中,denoise将去噪后的渲染结果发送至raytracing,raytracing向阴影渲染模块反馈去噪后的渲染结果。
在某些实现方式中,denoise或raytracing基于RHI向阴影渲染模块反馈去噪后的渲染结果。
S55、阴影渲染模块将去噪后的阴影图像显示在游戏界面中。
从图5所示的流程可以看出,上层应用能够调用gfxvulkan.so中的模块实现渲染,因为gfxvulkan.so中的模块基于光线追踪的渲染技术,所以能够得到较优效果的渲染图像。
并且,应用的渲染管道能够通过调用接口调用图像处理平台上的模块实现基于光线追踪的渲染,所以,应用的开发方无需再关注提升渲染效果的开发,从而降低应用的开发方的成本。可以理解的是,移动终端上下载的有渲染需求的应用,均能够调用图像处理平台上的模块实现基于光线追踪的渲染。例如,在某些实现方式中,某款游戏应用被下载并安装到手机后,该款游戏应用的UE也被安装至应用程序框架层,在该款游戏运行的过程中,UE调用gfxvulkan.so中的光线追踪渲染算法模块获得阴影的渲染图像,而UE不再进行阴影的渲染。并且,在另一款游戏也被安装在手机后,也能够通过相同的方式调用gfxvulkan.so中的光线追踪渲染算法模块获得阴影的渲染图像。
综上所述,图5所示的流程不仅能够获得较优的渲染图像,还能降低应用开发方的成本并兼容多种应用。
可以理解的是,图5所示的流程中,vulkan或gfx被调用的情况下,vulkan或gfx运行时对core的调用过程不再赘述。图5中仅以阴影的渲染为例,但可以理解的是,gfxvulkan.so中还可以设置AO和反射等算法,UE能够调用gfxvulkan.so中的相应模块实现其它功能。
可以理解的是,移动渲染管道中的模块调用gfxvulkan.so中的模块的具体流程,从代码在实际的软件环境中执行的角度,分为两部分,一部分为信息的设置流程,一部分为调用流程中的主循环流程。
图7为信息的设置流程,包括以下步骤:
S701、判断是否为win32系统,如果是,执行S702,如果否,执行S716。
本实施例中,假设移动中的系统包括win32系统和android系统两种。
S702、创建win32平台。
S703、创建窗口。
S704、初始化设备。
S705、创建实例。
S706、选择显卡。
S707、设置属性。
S708、创建设备。
S709、获取队列。
S710、初始化交换链。
S711、创建画布。
S712、获取显卡画布的支撑情况。
S713、创建信号。
S714、创建交换链。
S715、创建图片视口。
S716、创建android平台。
S717、设置android App。
S718、设置App主执行函数。
S719、设置App回调函数。
S720、设置窗体变更回调函数。
图8为主循环流程,包括以下步骤:
S801、判断是否为win32系统,如果是,执行S802,如果否,执行S814。S802、开始win32主循环。
S803、帧移动。
S804、等待Fence。
S805、重置Fence。
S806、请求图片。
S807、开始命令缓存。
S808、绑定渲染管线。
S809、开始绘制。
S810、结束渲染通道。
S811、结束命令缓存。
S812、命令队列提交。
S813、交换链进行层现。
S814、开始android主循环。
S815、进程执行。
S816、初始化android窗体。
S817、初始化设备。
S818、创建实例。
S819、选择显卡。
S820、设置属性。
S821、创建设备。
S822、获取队列。
S823、初始化交换链。
S824、创建画布。
S825、获取显卡画布的支撑情况。
S826、创建信号。
S827、创建交换链。
S828、创建图片视口。
S829、帧移动。
S830、等待Fence。
S831、重置Fence。
S832、请求图片。
S833、开始命令缓存。
S834、绑定渲染管线。
S835、开始绘制。
S836、结束渲染通道。
S837、结束命令缓存。
S838、命令队列提交。
S839、交换链进行层现。
本申请的实施例中,对图7以及图8中所示的各个步骤的具体实现方式不再赘述。
图9为本申请实施例公开的GraphicsLayer框架,GraphicsLayer框架用于开发、创建以及测试gfxvulkan.so。
GraphicsLayer框架包括三层,从下至上的第一层为gfxvulkan,第二层为类封装层,第三层为测试(test)层。
gfxvulkan的具体结构如图9所示,包括Vulkan和待测试的算法模块,图9中以待测试的算法模块为Ray Tracking为例。gfxvulkan还包括元加载器(Volk),Volk中封装有加载流程,即启动Volk即可执行加载流程,以提高测试的便利性。可以理解的是,gfxvulkan用于对算法模块进行开发或测试,Vulkan和Volk用于在开发或测试过程中提供相应的功能。
类封装层可以理解为,对渲染过程中的基本操作模块进行抽象封装得到。图9中示出类封装层中的一些实现逻辑功能的模块,而可以理解的是,这些实现逻辑功能的模块需要调用一些实现基本功能的模块,才能够实现逻辑功能,图10示出了类封装层的中的逻辑功能模块以及基本功能模块。
图10所示的一些模块的功能如下:
Application:应用程序基类,负责整个流程控制。
TestApp:Application的子类,根据自己的渲染目标,实现相应的渲染接口。
Device:对物理设备以及逻辑设备相关操作的抽象类,主要负责实例与设备的创建,以及队列(图形和计算)的创建。
Swapchain:对交换链相关操作的抽象类,主要负责对交换链、Image、ImageView和各种信号的创建以及流程处理。
Platform:对不同平台下的通性操作进行的抽象。
Win32 Platform:继承于类Platform,主要处理的是windows端的特性操作。
Android Platform:继承于类Platform,主要处理的是android端的特性操作。
Window:对于不同平台下的关于窗体的通性操作抽象。
Win32 Window:继承于类Window,主要处理的是windows端的特性操作。
Android Window:继承于类Window,主要处理的是android端的特性操作。
图10中以上未涉及的模块的功能,这里不再赘述。
可以理解的是,类封装层的作用为模拟移动渲染管道中的模块对gfxvulkan中的模块调用的功能,具体的调用流程可以参见图7以及图8,这里不再赘述。
测试层为创建模拟应用以及触发整体流程的入口。
可以理解的是,与图5所示的真实应用调用gfxvulkan.so的区别在于,测试流程需要基于测试层创建模拟应用,测试的具体流程如图11所示,包括以下步骤:
S111、测试层响应于开始指令,设置模拟应用的信息。
模拟应用可以理解为模拟真实应用的应用程序包。
在某些实现方式中,测试层基于用户输入的信息,设置模拟应用的信息。
S112、测试层基于模拟应用的信息,创建模拟应用。
S113、测试层触发模拟应用发出渲染指令。
在某些实现方式中,渲染指令向类封装层中的Run函数发出,以触发Run函数的运行。
可以理解的是,测试层中的主函数(Main)执行S111-S113。
S114、类封装层响应于渲染指令,调用gfxvulkan中的算法模块RayTracking。
可以理解的是,模拟应用与真实应用类似的,先执行图7的设置流程,再执行图8的主循环流程,实现调用对gfxvulkan中的算法模块的调用。具体流程由图10所示的各个模块协同实现,这里不再赘述。
在某些实现方式中,类封装层设置有Run函数,Run函数封装S114。
S115、gfxvulkan中被调用的模块Ray Tracking响应于调用,执行算法流程,并向类封装层传输渲染结果。
可以理解的是,Ray Tracking基于Vulkan以及Volk(图11中未画出)执行算法流程。
可以理解的是,类封装层能够将渲染结果进行显示,并进行参数检测等测试操作,测试Ray Tracking的算法效果。
S116、类封装层在主循环结束后,销毁数据。
在某些实现方式中,销毁数据可以理解为销毁主循环中利用和产生的数据。
可以理解的是,在经过以上测试过程后,能够获得算法模块Ray Tracking的渲染效果,从而实现对算法模块Ray Tracking的测试。
可以理解的是,测试流程中的各个步骤能够基于图9以及图10的各个模块的协作实现,这里不再赘述。
基于图11可以看出,GraphicsLayer框架有利于得到性能更优的光线追踪渲染算法模块。
Claims (10)
1.一种渲染方法,其特征在于,应用于移动终端,所述移动终端中运行第一应用、所述第一应用的渲染管道以及图像处理平台,所述方法包括:
所述第一应用在运行的过程中,发出渲染指令;
响应于所述渲染指令,所述第一应用的渲染管道调用所述图像处理平台;
所述图像处理平台响应于调用,基于光线追踪获得渲染图像;
所述第一应用显示所述渲染图像。
2.根据权利要求1所述的方法,其特征在于,所述第一应用的渲染管道调用所述图像处理平台,包括:
所述第一应用的渲染管道基于渲染硬件层接口,向所述图像处理平台上的光线追踪渲染模块传输调用指令。
3.根据权利要求1或2所述的方法,其特征在于,所述基于光线追踪获得渲染图像,包括:
基于光线追踪获得待去噪渲染图像;
对所述待去噪渲染图像进行去噪处理,得到所述渲染图像。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述图像处理平台上设置有三维图形处理扩展库,所述三维图形处理扩展库包括vulkan图形库中的各个模块以及算法集合模块,所述算法集合模块包括封装模块以及算法模块,所述封装模块封装所述算法模块与vulkan图形库中的各个模块的对应关系;
所述算法模块包括实现基于光线追踪获得渲染图像的光线追踪渲染算法模块。
5.根据权利要求4所述的方法,其特征在于所述基于光线追踪获得渲染图像,包括:
响应于所述算法模块中的光线追踪渲染算法模块被调用,通过所述对应关系,查询得到目标模块,所述目标模块为所述光线追踪渲染算法模块对应的vulkan图形库中的模块;
至少基于所述光线追踪渲染算法模块以及所述目标模块,获得所述渲染图像。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述第一应用显示所述渲染图像,包括:
在所述第一应用通过所述渲染管道从所述图像处理平台获得所述渲染图像后,显示所述渲染图像。
7.根据权利要求6所述的方法,其特征在于,在所述第一应用通过所述渲染管道从所述图像处理平台获得所述渲染图像之前,还包括:
所述图像处理平台的光线追踪渲染算法模块基于渲染硬件层接口,向所述渲染管道传输所述渲染图像。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述图像处理平台上的光线追踪渲染算法模块的测试过程包括:
创建模拟应用;
触发所述模拟应用发出渲染指令;
响应于所述渲染指令,调用所述光线追踪渲染算法模块得到渲染结果;
基于所述渲染结果测试所述光线追踪渲染算法模块。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
一个或多个存储器;
所述存储器存储有一个或多个程序,当所述一个或者多个程序被所述处理器执行时,使得所述电子设备执行权利要求1-8任一项所述的渲染方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储计算机程序,当所述计算机程序被处理器执行时,使得所述处理器执行权利要求1-8任一项所述的渲染方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211040621.3A CN116051704A (zh) | 2022-08-29 | 2022-08-29 | 渲染方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211040621.3A CN116051704A (zh) | 2022-08-29 | 2022-08-29 | 渲染方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116051704A true CN116051704A (zh) | 2023-05-02 |
Family
ID=86113888
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211040621.3A Pending CN116051704A (zh) | 2022-08-29 | 2022-08-29 | 渲染方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116051704A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346141A (zh) * | 2013-07-26 | 2015-02-11 | 北京畅游天下网络技术有限公司 | 一种渲染方法与渲染装置 |
CN111861854A (zh) * | 2019-04-30 | 2020-10-30 | 华为技术有限公司 | 用于图形渲染的方法及装置 |
CN112206517A (zh) * | 2020-10-22 | 2021-01-12 | 网易(杭州)网络有限公司 | 一种渲染方法、装置、存储介质及计算机设备 |
CN114442894A (zh) * | 2022-04-06 | 2022-05-06 | 荣耀终端有限公司 | 屏幕显示画面调整方法、装置及电子设备 |
CN114581589A (zh) * | 2020-11-30 | 2022-06-03 | 华为技术有限公司 | 图像处理方法及相关装置 |
CN114596403A (zh) * | 2022-03-15 | 2022-06-07 | Oppo广东移动通信有限公司 | 图像处理方法、装置、存储介质及终端 |
-
2022
- 2022-08-29 CN CN202211040621.3A patent/CN116051704A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346141A (zh) * | 2013-07-26 | 2015-02-11 | 北京畅游天下网络技术有限公司 | 一种渲染方法与渲染装置 |
CN111861854A (zh) * | 2019-04-30 | 2020-10-30 | 华为技术有限公司 | 用于图形渲染的方法及装置 |
CN112206517A (zh) * | 2020-10-22 | 2021-01-12 | 网易(杭州)网络有限公司 | 一种渲染方法、装置、存储介质及计算机设备 |
CN114581589A (zh) * | 2020-11-30 | 2022-06-03 | 华为技术有限公司 | 图像处理方法及相关装置 |
CN114596403A (zh) * | 2022-03-15 | 2022-06-07 | Oppo广东移动通信有限公司 | 图像处理方法、装置、存储介质及终端 |
CN114442894A (zh) * | 2022-04-06 | 2022-05-06 | 荣耀终端有限公司 | 屏幕显示画面调整方法、装置及电子设备 |
Non-Patent Citations (1)
Title |
---|
谭东: "Android开发进阶实战", 机械工业出版社, pages: 226 - 230 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3751418B1 (en) | Resource configuration method and apparatus, terminal, and storage medium | |
WO2021052437A1 (zh) | 一种应用启动方法及电子设备 | |
CN113094123A (zh) | 应用程序中功能的实现方法、装置、电子设备和存储介质 | |
CN111494936A (zh) | 画面渲染方法、设备、系统及存储介质 | |
CN110991368B (zh) | 相机场景识别方法及相关装置 | |
CN116055773A (zh) | 一种多屏协同方法、系统及电子设备 | |
CN115499897B (zh) | WiFi网络接入方法及相关装置 | |
CN112068903A (zh) | 应用程序的加载方法、应用程序的加载装置、介质与设备 | |
CN111563466A (zh) | 人脸检测方法及相关产品 | |
CN111078316B (zh) | 布局文件加载方法、装置、存储介质及电子设备 | |
CN111274043A (zh) | 近场通信方法及装置、系统、存储介质和电子设备 | |
CN116051704A (zh) | 渲染方法及装置 | |
CN115309547B (zh) | 处理异步binder调用的方法和装置 | |
WO2022111660A1 (zh) | 一种图片处理方法及装置 | |
CN116188724A (zh) | 动画渲染的方法、装置、设备及存储介质 | |
CN115629976A (zh) | 一种内核测试方法、装置和存储介质 | |
CN114238074A (zh) | 一种子应用的调试方法、装置、设备及存储介质 | |
CN114332118A (zh) | 图像处理方法、装置、设备及存储介质 | |
CN110033406B (zh) | 用于处理图像的方法和装置 | |
US20240036891A1 (en) | Sub-application running method and apparatus, electronic device, program product, and storage medium | |
CN116991302B (zh) | 应用与手势导航栏兼容运行方法、图形界面及相关装置 | |
CN117724726B (zh) | 一种数据处理方法和相关装置 | |
CN116688494B (zh) | 生成游戏预测帧的方法和电子设备 | |
CN116059643A (zh) | 游戏渲染方法和渲染方法、设备及存储介质 | |
CN117695626A (zh) | 游戏数据的识别方法、设备及存储介质 |
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 |