掌桥专利:专业的专利平台
掌桥专利
首页

一种渲染方法及其相关设备

文献发布时间:2024-04-18 19:52:40


一种渲染方法及其相关设备

技术领域

本申请涉及计算机领域,尤其涉及一种渲染方法及其相关设备。

背景技术

在图形学的渲染技术中,为了实现更为真实和逼真的渲染画面,无论是基于光栅化渲染和还是基于光线追踪的渲染技术,都需要将全局光照纳入考虑范围之内。实时性渲染中如何实现全局光照效果,一直是较为困难的问题。不同材质对全局光照的影响不同,由于漫反射(diffuse)材质表面会将光照信息均匀地进行散射,因此漫反射全局光照(diffuse global illumination,diffuse GI)是全局光照中影响最大的一个成分。由于diffuse材质的视点无关属性,因此对于静态光源场景,可以通过离线烘焙等方式,将场景光照信息缓存到对应的贴图上,在运行时的时候直接查找贴图进行插值快速计算得到全局光照结果,但是由于忽略可见性项,导致场景中会存在漏光现象。

现有的全局光照技术,对于动态全局照明要么需要计算机、主机等高性能平台,要么则需要提前烘焙以适应终端设备的低算力要求,因此,亟需一种可以在终端设备上实现的全局光照技术。

发明内容

第一方面,本申请提供了一种渲染方法,所述方法应用于终端设备,所述方法包括:

获取待渲染的虚拟场景中光照探针的纹理信息;其中,渲染是指将以文本二进制等方式存储的3D(3-dimension)数据绘制成图像的过程。虚拟场景也可以称之为空间场景,是指虚拟空间,如室内虚拟空间、卖场虚拟空间等。在该空间场景中可以具有光源以及物体。物体可以根据不同的虚拟空间设置不同的物体。

根据所述光照探针的纹理信息,对所述虚拟场景进行光照计算,得到第一辐照度贴图,其中所述第一辐照度贴图的分辨率低于所述虚拟场景的渲染结果所需的分辨率;

具体的,在计算得到第一辐照度贴图时,可以获取所述第一辐照度贴图中的每个像素相邻的光照探针的纹理信息,并对所述相邻的光照探针的纹理信息进行基于加权的插值。

基于物理光学原理可知,空间中每个位置处的光照效果,可以看作是周围每个发光点在该点的光照效果的叠加。因此,在获得了空间中每个光照探针位置处的光照情况后,要想获得空间中目标对象上(即目标位置)的光照情况,可以先获取该目标位置附近几个光照探针的光照信息,然后,将这几个光照探针作为光源,计算这几个光照探针所发射的光束在所述目标位置的漫反射,进而获得所述目标位置的光照信息,也就是第一辐照度贴图中的每个像素点的像素值。

对所述第一辐照度贴图进行上采样,以得到第二辐照度贴图,所述第二辐照度贴图与所述虚拟场景的渲染结果所需的分辨率相同,所述第二辐照度贴图用于进行所述虚拟场景的间接光渲染。

为了能够得到虚拟场景的渲染结果所需的分辨率相同的辐照度贴图,需要对第一辐照度贴图进行上采样,以得到与所述虚拟场景的渲染结果所需的分辨率相同的第二辐照度贴图。

在现有的实现中,在原分辨率下进行原分辨率的着色计算,会造成较大计算负载,无法适应移动端的算力需求,使得应用无法流畅运行。本申请实施例中,通过渲染一个降分辨率的辐照度贴图(第一辐照度贴图),可以降低计算开销,进而可以使得应用可以在拥有全局光照的效果的前提下,实时运行。

在一种可能的实现中,所述第一辐照度贴图的长宽比与所述第二辐照度贴图的长宽比一致,所述第一辐照度贴图的像素点数量少于所述第二辐照度贴图的像素点数量。

在一种可能的实现中,所述方法还包括:获取所述虚拟场景中的直接光光源信息;根据所述直接光光源信息,通过阴影贴图(shadow map)的方式,对所述虚拟场景进行光照计算,得到第三辐照度贴图,所述第三辐照度贴图用于进行所述虚拟场景的直接光渲染。

本申请实施例中,交点的直接光着色可以采用shadow map的方式进行计算,将交点转换到光源所在视角下,并将其深度值与shadow map的深度值进行比较,以此判断交点与该光源的可见性。

在一种可能的实现中,可以将间接光照和直接光照进行叠加,作为最终合成输出。

通过上述方式,相比现有技术中对probe发射光线与场景的交点进行直接光着色时,需要再发射一根光线判断与光源的可见性,计算代价较高,不适合移动端算力。本申请实施例通过采用shadow map代替原先光线跟踪的方式来进行直接光着色。在保证原有画质的前提下,减少了直接光计算的开销,使得probe的更新速度更快,能使得应用实时运行。

在一种可能的实现中,所述对所述第一辐照度贴图进行上采样,以得到第二辐照度贴图,包括:

通过邻域搜索算法,对所述第一辐照度贴图进行上采样,以得到第二辐照度贴图。

由于第一辐照度贴图的分辨率小于所述虚拟场景的渲染结果所需的分辨率,如果直接基于第一辐照度贴图进行间接光渲染,会导致渲染结果出现走样现象。因此,本申请实施例中,可以采用邻域搜索的方式为原着色点找寻最接近的数值,减少走样现象。

在一种可能的实现中,所述第一辐照度贴图包括多个第一像素点(例如可以基于uv坐标进行查表确定的),所述第二辐照度贴图包括第二像素点,所述第二像素点在位置上对应于所述第一辐照度贴图上的目标像素点,所述目标像素点与所述多个第一像素点相邻,在所述通过邻域搜索算法,对所述第一辐照度贴图进行上采样时,具体可以基于所述多个第一像素点中存在与所述目标像素点的相似度大于阈值的第一像素点,根据所述相似度大于阈值的第一像素点,得到所述第二像素点;基于所述多个第一像素点中不存在与所述目标像素点的相似度大于阈值的第一像素点,对所述多个第一像素点进行平均值计算,以得到所述第二像素点。

具体的,可以利用第一辐照度贴图,采用邻域搜索策略对原分辨率的像素进行间接光着色。在进行邻域搜索策略的实现中,可以在第一辐照度贴图对应点周围一定范围之内的像素作为候选值,通过法线、距离等条件进行判断,满足阈值条件则直接选中计算间接光照;否则取范围内点的平均值计算间接光照。

在一种可能的实现中,所述方法还包括:

基于所述多个第一像素点中不存在与所述目标像素点的相似度大于阈值的第一像素点,对所述多个第一像素点进行平均值计算,以得到所述第二像素点。

在一种可能的实现中,所述邻域搜索算法用于对所述第一辐照度贴图进行反走样。

在一种可能的实现中,所述根据所述光照探针的纹理信息,对所述虚拟场景进行光照计算,包括:获取所述第一辐照度贴图中的每个像素相邻的光照探针的纹理信息;对所述相邻的光照探针的纹理信息进行基于加权的插值。

第二方面,本申请提供了一种渲染装置,所述装置应用于终端设备,所述装置包括:

获取模块,用于获取待渲染的虚拟场景中光照探针的纹理信息;

辐照度贴图计算模块,用于根据所述光照探针的纹理信息,对所述虚拟场景进行光照计算,得到第一辐照度贴图,其中所述第一辐照度贴图的分辨率低于所述虚拟场景的渲染结果所需的分辨率;

上采样模块,用于对所述第一辐照度贴图进行上采样,以得到第二辐照度贴图,所述第二辐照度贴图与所述虚拟场景的渲染结果所需的分辨率相同,所述第二辐照度贴图用于进行所述虚拟场景的间接光渲染。

在一种可能的实现中,所述第一辐照度贴图的长宽比与所述第二辐照度贴图的长宽比一致,所述第一辐照度贴图的像素点数量少于所述第二辐照度贴图的像素点数量。

在一种可能的实现中,所述获取模块,还用于:

获取所述虚拟场景中的直接光光源信息;

所述辐照度贴图计算模块,还用于:

根据所述直接光光源信息,通过阴影贴图(shadow map)的方式,对所述虚拟场景进行光照计算,得到第三辐照度贴图,所述第三辐照度贴图用于进行所述虚拟场景的直接光渲染。

在一种可能的实现中,所述上采样模块,具体用于:

通过邻域搜索算法,对所述第一辐照度贴图进行上采样,以得到第二辐照度贴图。

在一种可能的实现中,所述第一辐照度贴图包括多个第一像素点,所述第二辐照度贴图包括第二像素点,所述第二像素点在位置上对应于所述第一辐照度贴图上的目标像素点,所述目标像素点与所述多个第一像素点相邻,所述上采样模块,具体用于:

基于所述多个第一像素点中存在与所述目标像素点的相似度大于阈值的第一像素点,根据所述相似度大于阈值的第一像素点,得到所述第二像素点。

在一种可能的实现中,所述上采样模块,具体用于:

基于所述多个第一像素点中不存在与所述目标像素点的相似度大于阈值的第一像素点,对所述多个第一像素点进行平均值计算,以得到所述第二像素点。

在一种可能的实现中,所述邻域搜索算法用于对所述第一辐照度贴图进行反走样。

在一种可能的实现中,所述辐照度贴图计算模块,具体用于:

获取所述第一辐照度贴图中的每个像素相邻的光照探针的纹理信息;

对所述相邻的光照探针的纹理信息进行基于加权的插值。

第三方面,本申请提供了一种终端设备,所述终端设备包括处理器和存储器,所述处理器获取存储器中存储的代码,以执行第一方面以及其可选的实现方式中的任意一种。

第四方面,本申请提供了一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质包含计算机指令用于执行上述第一方面及其可选的实现中任一所述的渲染方法。

第五方面,本申请还提供了一种计算机程序产品,包括代码,当所述代码被执行时,用于实现上述第一方面及其可选的实现中任一所述的渲染方法。

第六方面,提供了一种芯片,所述芯片包括处理器,所述处理器用于执行上述第一方面所描述的方法中的部分或全部操作。

本申请提供了一种渲染方法,所述方法应用于终端设备,所述方法包括:获取待渲染的虚拟场景中光照探针的纹理信息;根据所述光照探针的纹理信息,对所述虚拟场景进行光照计算,得到第一辐照度贴图,其中所述第一辐照度贴图的分辨率低于所述虚拟场景的渲染结果所需的分辨率;对所述第一辐照度贴图进行上采样,以得到第二辐照度贴图,所述第二辐照度贴图与所述虚拟场景的渲染结果所需的分辨率相同,所述第二辐照度贴图用于进行所述虚拟场景的间接光渲染。在现有的实现中,在原分辨率下进行原分辨率的着色计算,会造成较大计算负载,无法适应移动端的算力需求,使得应用无法流畅运行。本申请实施例中,通过渲染一个降分辨率的辐照度贴图(第一辐照度贴图),可以降低计算开销,进而可以使得应用可以在拥有全局光照的效果的前提下,实时运行。

附图说明

图1为本申请提供的电子设备的结构示意;

图2为本申请提供的电子设备的结构示意;

图3为本实施例提供的渲染方法的流程示意;

图4为本实施例提供的一个光照探针示意;

图5为本实施例提供的一个降分辨率辐射度贴图的示意;

图6为本实施例提供的渲染方法的流程示意;

图7为本实施例提供的渲染方法的流程示意;

图8为本申请提供的渲染方法的流程示意;

图9为本实施例提供的一个渲染装置的结构示意;

图10为本申请提供的一种终端设备的结构示意。

具体实施方式

下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。在本申请中出现的对步骤进行的命名或者编号,并不意味着必须按照命名或者编号所指示的时间/逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根据要实现的技术目的变更执行次序,只要能达到相同或者相类似的技术效果即可。

为了便于理解本申请的技术方案,首先对本申请涉及的概念做简要介绍。

光线追踪(ray tracing):是一种三维计算机图形学中的特殊渲染算法,该技术跟踪从虚拟相机发出的光线,计算光线在渲染场景中传播的过程,最终将渲染场景的数学模型显现出来,该方法能够实现更加逼真的渲染效果。

漫反射(diffuse):指的是物体表面反射属性,光在物体内部散射后从物体表面再发射出来,呈现视点无关的属性。

高光反射(specular):指的是物体表面反射属性,光打到物体表面后被物体直接反射的部分,与视点相关。

辐射率(radiance):每单位立体角每单位投射面积的辐射通量。

辐照度(irradiance):每单位面积的辐射通量。

直接光照(direct illumination):只考虑直接光源对场景的照明影响。

全局光照(global illumination):除了直接光源对场景照明的影响,也考虑场景中其他物体互相之间的照明影响,更接近现实照明效果。

阴影贴图(shadow map,SM):指的是为了实现直接光照中的阴影效果,以光源为视角出发。

虚拟点光源(virtual point light,VPL):是一种实现全局光照的算法,先将场景中被直接光照照亮的部分构造成虚拟点光源(VPL),然后对于成像的每个pixel,收集场景的VP Ls对其的光照贡献,达到全局照明效果。

反射阴影贴图(reflective shadow map,RSM):是一种实现全局光照的算法,算法假设场景中所有反射物都是diffuse材质,首先生成一张给定分辨率shadow map,作为场景的次级光源的;其次对于每个成像的pixel,根据距离、发现方向等计算次级光源对本pixel的光照贡献。

光照探针(light probe):probe又称为探针,是一种将场景光照信息进行缓存的数据结构,着色点的着色可以从probe进行查询并进行相应的插值计算,以得到间接光照,一般适用于静态光源场景。

光照贴图(light map):将静态物体表面切割成块,并展开到纹理空间;预先计算静态场景中光源对物体表面纹理的着色,并将结果存储成“光照贴图”中供以后使用。一般适用于静态场景的静态物体,而且适用于diffuse材质。

动态漫反射全局光照(dynamic diffuse global illumination,DDGI)是实现动态光源、动态物体的全局光照的方案。利用light probe的存储场景的间接光照信息,并采用光追手段动态进行更新,可以实现实时动态漫反射的全局照明效果。

接下来首先描述本申请的应用架构,本申请实施例提供的渲染方法可以应用于终端设备(也可以称之为电子设备),终端设备又可称之为用户设备(user equipment,UE)或者电子设备,可以部署在陆地上,包括室内或室外、手持或车载;也可以部署在水面上(如轮船等);还可以部署在空中(例如飞机、气球和卫星上等)。电子设备可以是手机(mobilephone)、平板电脑(pad)、具备无线通讯功能的可穿戴设备(如智能手表)、具有定位功能的位置追踪器、带无线收发功能的电脑、虚拟现实(virtual reality,VR)设备、增强现实(augmented rea lity,AR)设备、智慧家庭(smart home)中的无线设备等,本申请对此不作限定。本申请中将前述电子设备及可设置于前述电子设备的芯片统称为电子设备。

本申请中的电子设备可以包括但不限于:智能移动电话、电视、平板电脑、手环、头戴显示设备(Head Mount Display,HMD)、增强现实(augmented reality,AR)设备,混合现实(mixed reality,MR)设备、蜂窝电话(cellular phone)、智能电话(smart phone)、个人数字助理(personal digital assistant,PDA)、平板型电脑、车载电子设备、膝上型电脑(laptop computer)、个人电脑(personal computer,PC)、监控设备、机器人、车载终端、自动驾驶车辆等。当然,在以下实施例中,对该电子设备的具体形式不作任何限制。

示例性地,参阅图1,下面以一个具体的结构为例,对本申请提供的电子设备的结构进行示例性说明。

电子设备100可以包括处理器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,运动传感器180N等。

可以理解的是,本发明实施例示意的结构并不构成对电子设备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可以包括一个或多个接口。接口可以包括集成电路(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)接口等。

I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K,充电器,闪光灯,摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现电子设备100的触摸功能。

I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。

PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。

UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。

MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现电子设备100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现电子设备100的显示功能。

GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。

USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。

可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。

充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。

电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。

电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。

天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。

移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。

调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。

无线通信模块160可以提供应用在电子设备100上的包括无线局域网(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转为电磁波辐射出去。

在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括但不限于:第五代移动通信技术(5th-Generation,5G)系统,全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code division multipleaccess,CDMA),宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(longterm evolution,LTE),蓝牙(bluetooth),全球导航卫星系统(the global navigationsatellite system,GNSS),无线保真(wireless fidelity,WiFi),近距离无线通信(nearfield communication,NFC),FM(也可以称为调频广播),紫蜂协议(Zigbee),射频识别技术(radio frequency identification,RFID)和/或红外(infrared,IR)技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(globalnavigation satellite system,GLONASS),北斗卫星导航系统(beidou navigationsatellite system,BDS),准天顶卫星系统(quasi-zenith satellite system,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)等。

在一些实施方式中,电子设备100也可以包括有线通信模块(图1中未示出),或者,此处的移动通信模块150或者无线通信模块160可以替换为有线通信模块(图1中未示出),该有线通信模块可以使电子设备通过有线网络与其他设备进行通信。该有线网络可以包括但不限于以下一项或者多项:光传送网(optical transport network,OTN)、同步数字体系(synchronous digital hierarchy,SDH)、无源光网络(passive optical network,PON)、以太网(Ethernet)、或灵活以太网(flex Ethernet,FlexE)等。

电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。

显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。

电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。

ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。

摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB摄像头,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。

数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。

视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。

NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。

外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。

内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备100的各种功能应用以及数据处理。

电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。

音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。

扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170A收听音乐,或收听免提通话。

受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。

麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。电子设备100可以设置至少一个麦克风170C。在另一些实施例中,电子设备100可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。

耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。

压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。陀螺仪传感器180B可以用于确定电子设备100的运动姿态。气压传感器180C用于测量气压。在一些实施例中,电子设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。磁传感器180D包括霍尔传感器。电子设备100可以利用磁传感器180D检测翻盖皮套的开合。在一些实施例中,当电子设备100是翻盖机时,电子设备100可以根据磁传感器180D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。距离传感器180F,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180F测距以实现快速对焦。接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测电子设备100是否在口袋里,以防误触。指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。温度传感器180J用于检测温度。在一些实施例中,电子设备100利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,电子设备100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备100对电池142加热,以避免低温导致电子设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备100对电池142的输出电压执行升压,以避免低温导致的异常关机。

触摸传感器180K,也称“触控器件”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。

骨传导传感器180M可以获取振动信号。在一些实施例中,骨传导传感器180M可以获取人体声部振动骨块的振动信号。骨传导传感器180M也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器180M也可以设置于耳机中,结合成骨传导耳机。音频模块170可以基于所述骨传导传感器180M获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器180M获取的血压跳动信号解析心率信息,实现心率检测功能。

运动传感器180N,可以用于对摄像头拍摄的范围内的运动物体进行检测,采集运动物体的运动轮廓或者运动轨迹等。例如,该运动传感器180N可以是红外传感器、激光传感器、动态视觉传感器(dynamic vision sensor,DVS)等,该DVS具体可以包括DAVIS(Dynamicand Active-pixel Vision Sensor)、ATIS(Asynchronous Time-based Image Sensor)或者CeleX传感器等传感器。DVS借鉴了生物视觉的特性,每个像素模拟一个神经元,独立地对光照强度(以下简称“光强”)的相对变化做出响应。当光强的相对变化超过阈值时,像素会输出一个事件信号,包括像素的位置、时间戳以及光强的特征信息。

按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。

马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。

指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。SIM卡接口195用于连接SIM卡。

接下来描述本申请实施例的一种系统架构示意。

图2是说明可以实施本发明中描述的技术的计算装置30的框图。计算装置30可以为本申请实施例中的渲染装置,用于实现本申请实施例中的渲染方法,计算装置30的实例包含但不限于无线装置、移动或蜂窝电话(包含所谓的智能手机)、个人数字助理(personaldigital assistant,PDA)、包含视频显示器的视频游戏控制台、移动视频游戏装置、移动视频会议单元、膝上型计算机、台式计算机、电视机顶盒、平板计算装置、电子书阅读器、固定或移动媒体播放器等等。

在图2的实例中,计算装置30包含具有CPU存储器34的中央处理单元(centralprocessing unit,CPU)32、具有GPU存储器38和一或多个着色单元40的图形处理单元(graphics processing unit,GPU)36、显示器单元42、显示器缓冲单元44、用户接口单元46和存储单元48。此外,存储单元48可以存储具有编译器54的GPU驱动器50、GPU程序52和本机编译的GPU程序56。

CPU 32的实例包含但不限于数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或离散逻辑电路。虽然CPU 32和GPU36在图2的实例中被说明成分开的单元,但是在一些实例中,CPU 32和GPU 36可以集成为单个单元。CPU 32可以执行一或多个应用程序。应用程序的实例可以包含网络浏览器、电子邮件应用程序、电子表格、视频游戏、音频和/或视频捕获、回放或编辑应用程序或其它起始有待经由显示器单元42呈现的图像数据的产生的应用程序。

在图2所示的实例中,CPU 32包含CPU存储器34。CPU存储器34可以表示在执行机器或对象代码时使用的芯片上存储设备或存储器。CPU存储器34可以各自包括能够存储固定数目个数字位的硬件存储器寄存器。CPU 32可以能够比从存储单元48(其可例如经由系统总线存取)读取值或者向存储单元48写入值更迅速地从本机CPU存储器34读取值或者向本机CPU存储器34写入值。

GPU 36表示用于执行图形操作的一或多个专用处理器。也就是说,举例来说,GPU36可以是具有固定功能和用于渲染图形和执行GPU应用程序的可编程组件的专用硬件单元。GPU 36还可包含DSP、通用微处理器、ASIC、FPGA或其它等效的集成或离散逻辑电路。

GPU 36还包含GPU存储器38,其可以表示在执行机器或对象代码时使用的芯片上存储设备或存储器。GPU存储器38可以各自包括能够存储固定数目个数字位的硬件存储器寄存器。GPU 36可以能够比从存储单元48(其可例如经由系统总线存取)读取值或者向存储单元48写入值更迅速地从本机GPU存储器38读取值或者向本机GPU存储器38写入值。

GPU 36还包含着色单元40。如下文更详细地描述,着色单元40可以配置成处理组件的可编程管线。在一些实例中,着色单元40可以称为“着色器处理器”或“统一着色器”,并且可以执行几何形状、顶点、像素或其它着色操作以渲染图形。着色单元40可以包含图2中为了清晰起见未具体展示的一或多个组件,例如用于取出和解码指令的组件、用于实行算术计算的一或多个算术逻辑单元(arithmetic and logic unit,ALU)和一或多个存储器、高速缓存或寄存器。

显示器单元42表示能够显示视频数据、图像、文本或任何其它类型的数据的单元。显示器单元42可以包含液晶显示器(liquid crystal display,LCD)、发光二极管(lightemitting diode,LED)显示器、有机LED(organic light-emitting diode,OLED)、有源矩阵OLED(active-matrix organic light-emitting diode,AMOLED)显示器等等。

显示器缓冲单元44表示专用于为显示器单元42存储数据以供呈现图像(例如照片或视频帧)的存储器或存储装置。显示器缓冲单元44可以表示包含多个存储位置的二维缓冲器。显示器缓冲单元44内的存储位置的数目可以基本上类似于有待在显示器单元42上显示的像素的数目。举例来说,如果显示器单元42经配置以包含640x480个像素,那么显示器缓冲单元44可以包含640x480个存储位置。显示器缓冲单元44可以存储由GPU 36处理的像素中的每一个的最终像素值。显示器单元42可以从显示器缓冲单元44检索最终像素值,并且基于显示器缓冲单元44中存储的像素值显示最终图像。

用户接口单元46表示用户可以用来与计算装置30的其它单元(例如,CPU 32)交互或者以其它方式介接以与计算装置30的其它单元通信的单元。用户接口单元46的实例包含但不限于轨迹球、鼠标、键盘和其它类型的输入装置。用户接口单元46还可以是触摸屏,并且可以并入为显示器单元42的一部分。

存储单元48可以包括一或多个计算机可读存储媒体。存储单元48的实例包含但不限于随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器或可以用于以指令或数据结构的形式存储期望的程序代码并且可以由计算机或处理器存取的任何其它媒体。

在一些实例实施方案中,存储单元48可以包含使得CPU 32和/或GPU 36执行本发明中用于实现CPU 32和GPU 36的功能的指令。在一些实例中,存储单元48可以被视为非暂时性存储媒体。术语“非暂时性”可以指示存储媒体不是体现在载波或传播信号中。然而,术语“非暂时性”不应解释为意味着存储单元48是不能移动的。作为一个实例,存储单元48可以从计算装置30中移除,并且移动到另一装置。作为另一实例,基本上类似于存储单元48的存储单元可以插入到计算装置30中。在某些实例中,非暂时性存储媒体可以存储可能随时间而改变的数据(例如,在RAM中)。

存储单元48存储GPU驱动器50和编译器54、GPU程序52和本机编译的GPU程序56。GPU驱动器50表示提供存取GPU 36的接口的计算机程序或可执行代码。CPU 32执行GPU驱动器50或其若干部分以与GPU 36连接,并且出于此原因,GPU驱动器50在图2的实例中展示为CPU 32内的用虚线框标记的GPU驱动器50。GPU驱动器50可以存取CPU 32执行的程序或其它可执行文件,包含GPU程序52。

GPU程序52可以包含(例如,使用应用程序编程接口(API))用高级(HL)编程语言编写的代码。API的实例包含开放图形库(OpenGL)。总地来说,API包含由相关联的硬件执行的预定的标准化的成组命令。API命令允许用户指令GPU的硬件组件执行命令,而无需用户知道硬件组件的具体情况。

GPU程序52可以调用或者以其它方式包含GPU驱动器50提供的一或多个功能。CPU32总体上执行其中嵌入着GPU程序52的程序,并且在遇到GPU程序52后,即刻将GPU程序52传递给GPU驱动器50(例如,以命令流的形式)。CPU 32在这个上下文中执行GPU驱动器50以处理GPU程序52。举例来说,GPU驱动器50可以通过将GPU程序编译成GPU 36可执行的对象或机器代码而处理GPU程序52。这个对象代码在图2的实例中展示为本机编译的GPU程序56。

在一些实例中,编译器54可以实时或近实时地操作,以在执行其中嵌入着GPU程序52的程序期间编译GPU程序52。举例来说,编译器54总体上表示将根据HL编程语言定义的HL指令精简成低级(LL)编程语言的LL指令的模块。在编译之后,这些LL指令能够由特定类型的处理器或其它类型的硬件(例如FPGA、ASIC等等(包含例如CPU 32和GPU 36)来执行。

在图2的实例中,编译器54可以在执行包含GPU程序52的HL代码时从CPU 32接收GPU程序52。编译器54可以将GPU程序52编译成符合LL编程语言的本机编译的GPU程序56。编译器54接着输出包含LL指令的本机编译的GPU程序56。

GPU 36总体上接收本机编译的GPU程序56(如通过GPU 36内的虚线框标记的“本机编译的GPU程序56”所展示),在这之后,在一些例子中,GPU 36即刻渲染图像并且将图像的经渲染部分输出到显示器缓冲单元44。举例来说,GPU 36可以产生有待在显示器单元42处显示的多个基元。基元可以包含一或多条线(包含曲线、样条等)、点、圆、椭圆、多边形(其中通常将多边形定义为一或多个三角形的集合)或任何其它二维(2D)基元。术语“基元”还可以指代三维(3D)基元,例如立方体、圆柱体、球体、圆锥体、金字塔、圆环等等。总地来说,术语“基元”是指任何被GPU 36渲染以供经由显示器单元42作为图像(或在视频数据的上下文中的帧)显示的几何形状或要素。

GPU 36可以通过应用一或多个模型变换(其也可以在状态数据中指定)将基元或基元的其它状态数据(例如,其定义基元的纹理、亮度、相机配置或其它方面)变换成所谓的“世界空间”。一旦经过变换,GPU 36就可以应用有效相机的视图变换(其同样也可以在定义相机的状态数据中指定)以将基元和光的坐标变换到相机或眼睛空间中。GPU36还可以执行顶点着色以在任何有效光的视图中渲染基元的外观。GPU 36可以在上述模型、世界或视图空间中的一或多个中执行顶点着色(虽然顶点着色通常是在世界空间中执行的)。

一旦基元经过着色,GPU 36就可以执行投影以将图像投影到(作为一个实例)在(-1,-1,-1)和(1,1,1)处具有极点的单位立方体中。这个单位立方体通常称为典型视图体。在将模型从眼睛空间变换到典型视图体之后,GPU 36可以执行裁剪以移除任何不至少部分地驻留在视图体中的基元。换句话说,GPU 36可以移除任何不在相机帧内的基元。GPU 36可以接着将基元的坐标从视图体映射到屏幕空间,从而有效地将基元的3D基元精简成屏幕的2D坐标。

在给定用其相关联的着色数据定义基元的经变换和投影的顶点的情况下,GPU 36可以接着使基元光栅化。举例来说,GPU 36可以计算和设置基元所覆盖的屏幕的像素的颜色。在光栅化期间,GPU 36可以应用与基元相关联的任何纹理(其中纹理可以包括状态数据)。GPU 36还可以在光栅化期间执行Z缓冲器算法(也称为深度测试)以确定是否有任何基元和/或对象被任何其它对象遮蔽。Z缓冲器算法根据基元的深度将基元排序,使得GPU 36知道将每一基元绘制到屏幕上时的次序。GPU 36将经渲染的像素输出到显示器缓冲单元44。

显示器缓冲单元44可以暂时存储经渲染的图像的经渲染的像素,直到整个图像都被渲染了为止。在这个上下文中,可以将显示器缓冲单元44视为图像帧缓冲器。显示器缓冲单元44可以接着发射有待在显示器单元42上显示的经渲染的图像。在一些替代的实例中,GPU 36可以将图像的经渲染的部分直接输出到显示器单元42以供显示,而不是将图像暂时存储在显示器缓冲单元44中。显示器单元42可以接着显示在显示器缓冲器单元78中存储的图像。

在图形学的渲染技术中,为了实现更为真实和逼真的渲染画面,无论是基于光栅化渲染和还是基于光线追踪的渲染技术,都需要将全局光照纳入考虑范围之内。实时性渲染中如何实现全局光照效果,一直是较为困难的问题。不同材质对全局光照的影响不同,由于漫反射(diffuse)材质表面会将光照信息均匀地进行散射,因此漫反射全局光照(diffuse global illumination,diffuse GI)是全局光照中影响最大的一个成分。由于diffuse材质的视点无关属性,因此对于静态光源场景,可以通过离线烘焙等方式,将场景光照信息缓存到对应的贴图上,在运行时的时候直接查找贴图进行插值快速计算得到全局光照结果,但是由于忽略可见性项,导致场景中会存在漏光现象。

现有的全局光照技术,对于动态全局照明要么需要计算机、主机等高性能平台,要么则需要提前烘焙以适应终端设备的低算力要求,因此,亟需一种可以在终端设备上实现的全局光照技术。

下面通过图3对本实施例提供的渲染方法的步骤进行详细说明,图3为本申请实施例提供的一种渲染方法的流程示意,所述方法可以应用于如图1和图2所示的终端设备中,如图3所示,该渲染方法可以包括以下步骤:

301、获取待渲染的虚拟场景中光照探针的纹理信息。

其中,渲染是指将以文本二进制等方式存储的3D(3-dimension)数据绘制成图像的过程。虚拟场景也可以称之为空间场景,是指虚拟空间,如室内虚拟空间、卖场虚拟空间等。在该空间场景中可以具有光源以及物体。物体可以根据不同的虚拟空间设置不同的物体。

在一种可能的实现中,在正式开始渲染前,可以进行几何处理,几何处理阶段可以包括但不限于视点变换、顶点着色、投影、裁剪,场景加速结构构建等步骤。

具体的,正式开始渲染前,用户在设置完渲染场景,会选择渲染视角,该视角决定了最终成像时图像的内容,也会影响到场景中光源对成像时的贡献;场景解析完成后,获取场景的光源,材质,几何数据的加速结构等信息,用于间接光的计算。

在一种可能的实现中,可以对虚拟场景进行模型材质的加载,主要涉及两个部分,第一部分是将需要渲染的模型添加到场景中,第二部分是给场景中的模型添加各自的材质信息和纹理信息。

在一种可能的实现中,在间接光计算之前,需要对场景中的光照探针的参数进行初始化设置。

其中,所述光照探针可以是多种开发引擎,例如Unity、Unreal Engine(UE,虚幻引擎)等中的一种工具,通过光照探针可以捕获并使用穿过场景空白空间的光线的相关信息。光照探针与目前渲染技术中常使用的光照贴图类似,都储存了有关场景中的光照的“烘焙”信息。不同之处在于,光照贴图存储的是有关光线照射到场景中的表面的光照信息;而光照探针存储的是有关光线穿过场景中的空白空间的信息。

在一种可能的实现中,可以预先在待展示的图像帧所对应的虚拟场景中放置一个立方体来标记需要放置光照探针的区域,并在所述区域摆放光照探针。所述虚拟场景包括一个虚拟对象,在该虚拟场景放置一个立方体标记出光照探针所在的区域后,可以按照预设的密度在所述区域放置光照探针。所述光照探针的密度越大,后续进行漫反射计算所获得的光照效果越接近真实情况,但是运算量会随着放置密度的增加而增大,用户可以根据其所处理器的处理能力,权衡所述光照探针和其处理器的计算能力,合理设置所述光照探针的密度。

其中,所述光照探针可以被均匀放置在所述立方体所标记的区域,也可以非均匀地放置在所述立方体所标记的区域,本申请对此不做限制。当然,本领域技术人员可以理解,除了用立方体来标记所述光照探针放置的区域,还可以使用其他多面体来标记所述光照探针放置的区域,本申请对此也不做限制。

此外,当使用立方体标记所述光照探针的方式区域、所述光照探针均匀放置在所标记的区域时,对所述光照探针所发射的光线进行漫反射计算时,能够大大降低漫反射计算的复杂度、降低对处理器运算能力的要求。

在一种可能的实现中,可以根据实际场景判断,针对于当前待渲染的虚拟场景的帧需要对probe进行更新,还是沿用之前的probe信息。当需要probe更新时,可以从每个probe发射出的光线与场景加速结构进行求交,对交点进行着色。其中,着色可以包括直接光和间接光两部分:交点的直接光着色可以采用shadow map的方式,判断交点与光源之间可见性,以此计算当前点的直接光照;交点的间接光着色可以采用probe插值的方式,对邻近网格的probe根据距离进行加权计算,获得交点的间接光照。之后可以利用每个交点的着色值,以及之前的probe上的纹理信息,通过加权平均的方式,计算得到probe上的纹理信息。

在一种可能的实现中,示例性的,在间接光计算阶段,可以对probe进行发射光线并计算交点的radiance。如图4所示,在本实施例中,每个probe可以发射多根(例如144根)光线,然后计算光线与场景的交点。计算完每根光线的radiance,可以据此更新probe纹理信息,根据历史纹理进行加权融合。

更具体的,以一个光照探针为例,可以借助开发引擎自带的光线追踪功能,可以使所述光照探针在360°的空间范围内随机发射指定数量的光线,例如,发射144条射线,并对所有发射的光线进行光线追踪,进而获得光照探针位置处的光照信息。其基本原理如下:当所述光照探针所发射的光线打到虚拟场景中的虚拟对象上,基于光学原理可知,所发射的光线会被虚拟对象的表面漫反射,漫反射的部分光束会打到光照探针的位置,因此,能够基于对当前帧中每个光照探针所发射的光线进行光线追踪,获取每个光照探针所发射的所有光线被虚拟场景中的物体漫反射时,每个光照探针位置处的纹理信息(或者可以称之为光照信息)。其中,所述光照信息,包括所述光照探针位置处的光的辐照度的信息,还可以包括所述光照探针位置处的光束的方向信息。

302、根据所述光照探针的纹理信息,对所述虚拟场景进行光照计算,得到第一辐照度贴图,其中所述第一辐照度贴图的分辨率低于所述虚拟场景的渲染结果所需的分辨率。

在一种可能的实现中,在获取到虚拟场景中多个光照探针的纹理信息之后,可以根据所述光照探针的纹理信息,对所述虚拟场景进行光照计算,得到第一辐照度贴图。

具体的,可以利用光照探针probe的纹理信息,计算成像点的间接光照。具体的,可以根据成像分辨率,渲染一张降分辨率的irradiance map。其中,irradiance map中的每个像素可以通过查询邻近的probe的纹理信息进行加权的插值。所述虚拟场景的渲染结果所需的分辨率可以理解为虚拟场景所要求的的成像分辨率。

在现有的实现中,在原分辨率下进行原分辨率的着色计算,会造成较大计算负载,无法适应移动端的算力需求,使得应用无法流畅运行。本申请实施例中,通过渲染一个降分辨率的辐照度贴图(第一辐照度贴图),可以降低计算开销,进而可以使得应用可以在拥有全局光照的效果的前提下,实时运行。

具体的,在计算得到第一辐照度贴图时,可以获取所述第一辐照度贴图中的每个像素相邻的光照探针的纹理信息,并对所述相邻的光照探针的纹理信息进行基于加权的插值。

基于物理光学原理可知,空间中每个位置处的光照效果,可以看作是周围每个发光点在该点的光照效果的叠加。因此,在获得了空间中每个光照探针位置处的光照情况后,要想获得空间中目标对象上(即目标位置)的光照情况,可以先获取该目标位置附近几个光照探针的光照信息,然后,将这几个光照探针作为光源,计算这几个光照探针所发射的光束在所述目标位置的漫反射,进而获得所述目标位置的光照信息,也就是第一辐照度贴图中的每个像素点的像素值。

在一种可能的实现中,所述第一辐照度贴图的长宽比与所述第二辐照度贴图(第二辐照度贴图的分辨率和虚拟场景的渲染结果所需的分辨率一致)的长宽比一致,所述第一辐照度贴图的像素点数量少于所述第二辐照度贴图的像素点数量。例如可以参照图5所示。

303、对所述第一辐照度贴图进行上采样,以得到第二辐照度贴图,所述第二辐照度贴图与所述虚拟场景的渲染结果所需的分辨率相同,所述第二辐照度贴图用于进行所述虚拟场景的间接光渲染。

为了能够得到虚拟场景的渲染结果所需的分辨率相同的辐照度贴图,需要对第一辐照度贴图进行上采样,以得到与所述虚拟场景的渲染结果所需的分辨率相同的第二辐照度贴图。

由于第一辐照度贴图的分辨率小于所述虚拟场景的渲染结果所需的分辨率,如果直接基于第一辐照度贴图进行间接光渲染,会导致渲染结果出现走样现象。因此,本申请实施例中,可以采用邻域搜索的方式为原着色点找寻最接近的数值,减少走样现象。

在一种可能的实现中,在所述对所述第一辐照度贴图进行上采样,以得到第二辐照度贴图时,具体可以通过邻域搜索算法,对所述第一辐照度贴图进行上采样,以得到第二辐照度贴图。

在一种可能的实现中,所述第一辐照度贴图包括多个第一像素点(例如可以基于uv坐标进行查表确定的),所述第二辐照度贴图包括第二像素点,所述第二像素点在位置上对应于所述第一辐照度贴图上的目标像素点,所述目标像素点与所述多个第一像素点相邻,在所述通过邻域搜索算法,对所述第一辐照度贴图进行上采样时,具体可以基于所述多个第一像素点中存在与所述目标像素点的相似度大于阈值的第一像素点,根据所述相似度大于阈值的第一像素点,得到所述第二像素点;基于所述多个第一像素点中不存在与所述目标像素点的相似度大于阈值的第一像素点,对所述多个第一像素点进行平均值计算,以得到所述第二像素点。

在一种可能的实现中,所述邻域搜索算法用于对所述第一辐照度贴图进行反走样。

具体的,可以利用第一辐照度贴图,采用邻域搜索策略对原分辨率的像素进行间接光着色。在进行邻域搜索策略的实现中,可以在第一辐照度贴图对应点周围一定范围之内的像素作为候选值,通过法线、距离等条件进行判断,满足阈值条件则直接选中计算间接光照;否则取范围内点的平均值计算间接光照。

在probe着色阶段,首先降分辨率生成irradiance map,然后在最终成像时,在irradiance map查找与着色点最接近的像素值。在本实施例中,对于着色点而言,可以会查询其相邻的多个(例如8个)probe的纹理信息进行光照计算。示例性的,最终成像分辨率可以为2163*1080,irradiance map降2倍分辨率,可以只渲染1081*540分辨率图像。最终成像时在irradiance map上用同样uv坐标进行查表,对于查找到的像素,需要对其相邻元素再进行相似搜索,找到最接近的像素进行着色。在本实施例中,将对相邻多个(例如4个)像素(-1,-1),(-1,1),(1,-1),(1,1)以及自己(0,0)执行相似搜索,判断实际着色点的候选像素的法线和深度值的相似度,以此选取最接近的像素点的值。当所有候选像素均不满足条件时,回退到求平均值的情况。邻域搜索的目的是为了消除降分辨率渲染irradiance map带来的走样问题。

在一种可能的实现中,还可以获取所述虚拟场景中的直接光光源信息;根据所述直接光光源信息,通过阴影贴图(shadow map)的方式,对所述虚拟场景进行光照计算,得到第三辐照度贴图,所述第三辐照度贴图用于进行所述虚拟场景的直接光渲染。

本申请实施例中,交点的直接光着色可以采用shadow map的方式进行计算,将交点转换到光源所在视角下,并将其深度值与shadow map的深度值进行比较,以此判断交点与该光源的可见性。

在一种可能的实现中,可以将间接光照和直接光照进行叠加,作为最终合成输出。

通过上述方式,相比现有技术中对probe发射光线与场景的交点进行直接光着色时,需要再发射一根光线判断与光源的可见性,计算代价较高,不适合移动端算力。本申请实施例通过采用shadow map代替原先光线跟踪的方式来进行直接光着色。在保证原有画质的前提下,减少了直接光计算的开销,使得probe的更新速度更快,能使得应用实时运行。

本申请提供了一种渲染方法,所述方法应用于终端设备,所述方法包括:获取待渲染的虚拟场景中光照探针的纹理信息;根据所述光照探针的纹理信息,对所述虚拟场景进行光照计算,得到第一辐照度贴图,其中所述第一辐照度贴图的分辨率低于所述虚拟场景的渲染结果所需的分辨率;对所述第一辐照度贴图进行上采样,以得到第二辐照度贴图,所述第二辐照度贴图与所述虚拟场景的渲染结果所需的分辨率相同,所述第二辐照度贴图用于进行所述虚拟场景的间接光渲染。在现有的实现中,在原分辨率下进行原分辨率的着色计算,会造成较大计算负载,无法适应移动端的算力需求,使得应用无法流畅运行。本申请实施例中,通过渲染一个降分辨率的辐照度贴图(第一辐照度贴图),可以降低计算开销,进而可以使得应用可以在拥有全局光照的效果的前提下,实时运行。

接下里从软件模块的角度,介绍本申请实施例的系统架构:

参照图6,图6是本申请实施例的一个系统架构图的示意:其中,系统架构可以包含场景解析(2001)、几何处理(2002)、直接光计算(2003)、间接光计算(2004)和输出结果(2005)模块。

场景解析模块2001可以解析场景的模型、材质、光源等数据;

几何处理阶段2002包括视点变换、顶点着色、投影、裁剪,场景加速结构构建等步骤,为前置步骤。

直接光计算2003,是计算原有管线计算光源对场景的着色影响。

间接光计算阶段2004,可以通过light probe的提供场景间接光计算,包括两个主要模块:

probe更新阶段2041:每个发射一定数量光线与场景求交,获得交点处得到着色信息和距离信息后,更新对应probe上的信息;

probe着色阶段2042:对每个最终成像阶段的像素。

输出结果模块2005可以将直接光和间接光合成后,保存最终渲染结果。

本申请实施例的产品实现形态,是包含在渲染引擎软件中的程序代码。以图7所示的系统框架为例,本申请实施例的程序代码存在于渲染引擎的运行时的间接光计算阶段。运行时,本申请实施例的程序代码运行主机内存和GPU内存。图7给出了本申请实施例在服务器及平台软件中的实现形态,其中虚线框所示部分为本申请实施例在现有平台软件基础上新增加的模块。在渲染引擎的间接光计算阶段,本申请实施例新增了利用shadow map计算交点radiance(3041)、生成将分辨率irradiance map(3043)以及采用邻域搜索进行间接光计算(3044)三个阶段;最终输出结果阶段(3051),会在结合直接光计算(3031)和间接光计算(3044)的结果,进行光照着色合成,从而实现全局光照的效果。

本申请实施例的创新内容主要体现在间接光计算阶段,其核心思想是在probe更新阶段使用shadow map代替shadow ray进行直接光着色,然后在probe着色阶段降分辨率渲染一张irradiance map,并采用邻域搜索的方式来进行间接光的着色,消除走样。最后将间接光着色结果与直接光进行叠加输出,达到全局照明的效果。

结合图8,详细阐述本申请实施例方法的一个具体实现:正式开始渲染前,用户在设置完渲染场景,会选择渲染视角,该视角决定了最终成像时图像的内容,也会影响到场景中光源对成像时的贡献;场景解析完成后,获取场景的光源,材质,几何数据的加速结构等信息,用于间接光的计算;在间接光计算之前,需要对场景中的probe参数进行初始化设置,应用根据实际场景判断,本次是否需要对probe进行更新,还是沿用之前的probe信息。当需要probe更新时,主要执行两个步骤:1、从每个probe发射出的光线与场景加速结构进行求交,对交点进行着色。着色包括直接光和间接光两部分:交点的直接光着色采用shadow map的方式,判断交点与光源之间可见性,以此计算当前点的直接光照;交点的间接光着色采用probe插值的方式,对邻近网格的probe根据距离进行加权计算,获得交点的间接光照。2、利用每个交点的着色值,以及之前的probe上的纹理信息,通过加权平均的方式,计算得到probe上的纹理信息。利用probe的纹理信息,计算成像点的间接光照。主要执行两个关键步骤:1、根据成像分辨率,渲染一张降分辨率的irradiance map。irradiance map每个像素通过查询邻近的probe的纹理信息进行加权的插值。2、利用irradiance map,采用邻域搜索策略对原分辨率的像素进行间接光着色。邻域搜索策略,在irradiance map对应点周围一定范围之内的像素作为候选值,通过法线、距离等条件进行判断,满足阈值条件则直接选中计算间接光照;否则取范围内点的平均值计算间接光照。将间接光照和直接光照进行叠加,作为最终合成输出。

参照图9,本申请实施例还提供了一种渲染装置,所述装置应用于终端设备,所述装置包括:

获取模块901,用于获取待渲染的虚拟场景中光照探针的纹理信息;

其中,关于获取模块901的具体描述可以参照上述实施例中步骤301的描述,这里不再赘述。

辐照度贴图计算模块902,用于根据所述光照探针的纹理信息,对所述虚拟场景进行光照计算,得到第一辐照度贴图,其中所述第一辐照度贴图的分辨率低于所述虚拟场景的渲染结果所需的分辨率;

其中,关于辐照度贴图计算模块902的具体描述可以参照上述实施例中步骤302的描述,这里不再赘述。

上采样模块903,用于对所述第一辐照度贴图进行上采样,以得到第二辐照度贴图,所述第二辐照度贴图与所述虚拟场景的渲染结果所需的分辨率相同,所述第二辐照度贴图用于进行所述虚拟场景的间接光渲染。

其中,关于上采样模块903的具体描述可以参照上述实施例中步骤303的描述,这里不再赘述。

在一种可能的实现中,所述第一辐照度贴图的长宽比与所述第二辐照度贴图的长宽比一致,所述第一辐照度贴图的像素点数量少于所述第二辐照度贴图的像素点数量。

在一种可能的实现中,所述获取模块,还用于:

获取所述虚拟场景中的直接光光源信息;

所述辐照度贴图计算模块,还用于:

根据所述直接光光源信息,通过阴影贴图(shadow map)的方式,对所述虚拟场景进行光照计算,得到第三辐照度贴图,所述第三辐照度贴图用于进行所述虚拟场景的直接光渲染。

在一种可能的实现中,所述上采样模块,具体用于:

通过邻域搜索算法,对所述第一辐照度贴图进行上采样,以得到第二辐照度贴图。

在一种可能的实现中,所述第一辐照度贴图包括多个第一像素点,所述第二辐照度贴图包括第二像素点,所述第二像素点在位置上对应于所述第一辐照度贴图上的目标像素点,所述目标像素点与所述多个第一像素点相邻,所述上采样模块,具体用于:

基于所述多个第一像素点中存在与所述目标像素点的相似度大于阈值的第一像素点,根据所述相似度大于阈值的第一像素点,得到所述第二像素点。

在一种可能的实现中,所述上采样模块,具体用于:

基于所述多个第一像素点中不存在与所述目标像素点的相似度大于阈值的第一像素点,对所述多个第一像素点进行平均值计算,以得到所述第二像素点。

在一种可能的实现中,所述邻域搜索算法用于对所述第一辐照度贴图进行反走样。

在一种可能的实现中,所述辐照度贴图计算模块,具体用于:

获取所述第一辐照度贴图中的每个像素相邻的光照探针的纹理信息;

对所述相邻的光照探针的纹理信息进行基于加权的插值。

参照图10,图10为本申请提供的一种终端设备1000的结构示意,如图10示出的那样,所述终端设备包括处理器1001和存储器1002,所述CPU用于获取所述存储器的代码以执行上述图3描述的实施例中的步骤。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者其他网络设备等)执行本申请图2实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

相关技术
  • 游戏渲染方法及相关设备
  • 一种页面渲染方法、装置、设备和存储介质
  • 一种仪表板配置渲染方法、系统、设备及存储介质
  • 一种功率控制方法、接收方法、功率分配方法及相关设备
  • 一种基于指纹控制设备的方法及相关设备
  • 一种图像渲染方法及其相关设备
  • 一种图形处理设备、图形渲染管线分配方法及相关装置
技术分类

06120116335016