CN114255315A - 一种渲染方法、装置及设备 - Google Patents
一种渲染方法、装置及设备 Download PDFInfo
- Publication number
- CN114255315A CN114255315A CN202110080547.7A CN202110080547A CN114255315A CN 114255315 A CN114255315 A CN 114255315A CN 202110080547 A CN202110080547 A CN 202110080547A CN 114255315 A CN114255315 A CN 114255315A
- Authority
- CN
- China
- Prior art keywords
- rendering
- patch
- current
- rendering result
- historical
- 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 590
- 238000000034 method Methods 0.000 title claims abstract description 236
- 230000008569 process Effects 0.000 claims abstract description 81
- 238000005070 sampling Methods 0.000 claims description 54
- 230000015654 memory Effects 0.000 claims description 31
- 238000012545 processing Methods 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 9
- 230000000007 visual effect Effects 0.000 description 42
- 238000013461 design Methods 0.000 description 24
- 238000010586 diagram Methods 0.000 description 18
- 239000000463 material Substances 0.000 description 18
- 238000004891 communication Methods 0.000 description 17
- 238000004364 calculation method Methods 0.000 description 15
- 238000005516 engineering process Methods 0.000 description 13
- 239000011159 matrix material Substances 0.000 description 7
- 238000005286 illumination Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 239000003086 colorant Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 238000012935 Averaging Methods 0.000 description 2
- 238000005266 casting Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000012780 transparent material Substances 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 239000003518 caustics Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005315 distribution function Methods 0.000 description 1
- 210000000887 face Anatomy 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000013215 result calculation Methods 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation 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/06—Ray-tracing
-
- 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
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/006—Mixed reality
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- Geometry (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
Abstract
本申请提供一种渲染方法及装置。该方法用于渲染应用,该应用包括至少一个模型,每个模型包括多个面片,该渲染方法在渲染该应用的当前帧的过程中,确定当前视平面中像素对应的目标面片,获取该应用的历史帧的渲染过程中获得的目标面片的历史渲染结果,根据所述目标面片的历史渲染结果,计算所述像素的当前渲染结果。该渲染方法通过复用历史渲染结果,计算当前渲染结果,有效的提升了光线追踪渲染的效率。
Description
技术领域
本申请涉及图形渲染领域,特别涉及一种渲染方法、装置及设备。
背景技术
光线追踪渲染技术一直是计算机图形学领域的基础技术,至今为止,该技术是实现高品质,真实感,高画质图像的最主要技术。但该技术一直以来,需要较长的计算时间,才能完成大量的蒙特卡洛积分计算过程,生成最终计算结果。所以,该技术一直应用在离线渲染场景,如影视,动画等领域。随着计算机硬件算力升级,近年来,随着一些对于实时性需要较强的渲染业务领域(游戏,虚拟现实)开始出现,对于光线追踪渲染技术的需要越来越强烈。
针对光线追踪渲染技术,如何实现实时的图形渲染成为了业界重点关注的问题。
发明内容
本申请提供了一种渲染方法,该方法可以提升渲染的效率。
本申请的第一方面提供了一种渲染方法,该渲染方法用于渲染应用,该应用包括至少一个模型,每个模型包括多个面片。该方法包括:渲染该应用的当前帧的过程中,确定当前帧对应的当前视平面中像素对应的目标面片,该目标面片包括于该多个面片;获取该应用的历史帧的渲染过程中获得的该目标面片的历史渲染结果;根据该目标面片的历史渲染结果,计算所述像素的当前渲染结果。
该渲染方法通过复用该目标面片的历史渲染结果,减少了在对该目标面片在当前帧中进行光线追踪渲染时的追踪光线数,提升了光线追踪渲染的效率。
在一些可能的设计中,该方法还包括:该渲染方法在渲染当前帧的过程中,通过获取目标面片在历史帧中对应的历史渲染结果,计算该目标面片在当前帧中对应的当前渲染结果。进一步地,根据目标面片的当前渲染结果,计算当前视平面中像素的当前渲染结果。随后,对该视平面的每个像素执行以上方法,以获取该视平面的渲染结果,也即获取所述当前帧。
在一些可能的设计中,该方法还包括:对该目标面片进行光线追踪渲染,获得该目标面片的中间渲染结果。该根据该目标面片的历史渲染结果,计算该像素的当前渲染结果,包括:根据该目标面片的历史渲染结果和该目标面片的中间渲染结果,计算该目标面片的当前渲染结果;根据该目标面片的当前渲染结果,计算该像素的当前渲染结果。
该渲染方法通过在对该目标面片进行光线追踪之后,利用该目标面片的中间渲染结果提升该目标面片的当前渲染结果,在对该目标面片发出的追踪光线数不变的情况下,提升了该目标面片的渲染结果,有效的提升了光线追踪渲染的效率。
对该目标面片进行光线追踪渲染以获得该目标面片的中间渲染结果这一步骤可以发生在获取该面片的历史渲染结果之前或之后。可选的,该步骤还可以与获取该面片的历史渲染结果这一步骤同时发生。
在一些可能的设计中,该方法还包括:确定该目标面片的历史渲染结果对应的采样数量高于阈值。根据该目标面片的历史渲染结果,计算该像素的当前渲染结果,包括:将该目标面片的历史渲染结果作为该目标面片的当前渲染结果,该目标面片的当前渲染结果用于计算该像素的当前渲染结果。
对于历史渲染结果对应的采样数量高于阈值的该目标面片,直接将该目标面片的历史渲染结果作为该目标面片的当前渲染结果,可以避免对该目标面片进行光线追踪渲染,并且直接复用该面片的历史渲染结,有效的提升了当前视平面的整体渲染效率。
在一些可能的设计中,该方法还包括:确定该目标面片的历史渲染结果对应的采样数量不高于阈值。该根据所述目标面片的历史渲染结果,计算该像素的当前渲染结果,包括:对该目标面片进行光线追踪渲染,获得该目标面片的中间渲染结果;根据该目标面片的中间渲染结果和该目标面片的历史渲染结果,计算该目标面片的当前渲染结果;根据该目标面片的当前渲染结果,计算该像素的渲染结果。
对于历史渲染结果对应的采样数量不高于阈值的该目标面片,在对该目标面片进行光线追踪渲染的同时,复用了该目标面片的历史渲染结果,可以减少对该目标面片发出的追踪光线数,从而有效的提升了当前视平面的整体渲染效率。
在计算该目标面片的当前渲染结果的过程中,获取的该目标面片的过程渲染结果也即该目标面片的中间渲染结果。一般的,可以对该目标面片进行光线追踪渲染以获得该目标面片的中间渲染结果,此处进行的光线追踪渲染的追踪光线数小于阈值。
在一些可能的设计中,该方法还包括:存储该目标面片的当前渲染结果。该目标面片的当前渲染结果可以存储至内存中,以供后续帧的渲染过程中被复用,通过为后续帧中该目标面片的当前渲染结果提供可以复用的历史渲染结果,可以有效的提升后续帧中该目标面片的渲染效率。
在一些可能的设计中,该方法还包括:该当前视平面在第一应用中生成,该目标面片的历史渲染结果在第二应用中生成。
在一些可能的设计中,该方法还包括:该目标面片的历史渲染结果和该当前视平面在同一应用中生成。
在一些可能的设计中,该方法还包括:该目标面片的历史渲染结果基于光线追踪渲染获得。
本申请的第二方面提供了一种渲染引擎,该装置包括处理单元和存储单元:该处理单元,在渲染应用的当前帧的过程中,用于确定当前视平面中像素对应的目标面片;获取所述应用的历史帧的渲染过程中获得的所述目标面片的历史渲染结果;根据所述目标面片的历史渲染结果,计算所述像素的当前渲染结果,其中,所述应用包括至少一个模型,每个模型包括多个面片;该存储单元,用于存储所述应用的历史帧的渲染过程中获得的所述目标面片的历史渲染结果。
在一些可能的设计中,该处理单元还用于,根据所述目标面片的历史渲染结果,计算所述像素的当前渲染结果前,对所述目标面片进行光线追踪渲染,获得所述目标面片的中间渲染结果;根据所述目标面片的历史渲染结果和所述目标面片的中间渲染结果,确定所述目标面片的当前渲染结果;根据所述目标面片的当前渲染结果,确定所述像素的当前渲染结果。
在一些可能的设计中,该处理单元还用于:用于确定所述目标面片的历史渲染结果对应的采样数量高于阈值;将所述面片的历史渲染结果作为所述面片的当前渲染结果,所述面片的当前渲染结果用于确定所述像素的当前渲染结果。
在一些可能的设计中,该处理单元还用于:用于确定所述目标面片的历史渲染结果对应的采样数量不高于阈值;对所述目标面片进行光线追踪渲染,获得所述目标面片的中间渲染结果;根据所述目标面片的中间渲染结果和所述目标面片的历史渲染结果,确定所述目标面片的当前渲染结果;根据所述目标面片的当前渲染结果,确定所述像素的渲染结果。
在一些可能的设计中,该存储单元,用于存储所述目标面片的当前渲染结果。
本申请的第三方面提供了一种包含指令的计算机程序产品,当该指令被计算机设备集群运行时,使得该计算机设备集群执行如第一方面或第一方面的任意可能的设计提供的方法。
本申请的第四方面提供了一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备集群执行时,所述计算设备集群执行如第一方面或第一方面的任意可能的设计提供的方法。
本申请的第五方面提供了一种计算设备集群,包括至少一个计算设备,每个计算设备包括处理器和存储器;至少一个计算设备的处理器用于执行至少一个计算设备的存储器中存储的指令,以使得该计算设备执行如第一方面或第一方面的任意可能的设计提供的方法。
在一些可能的设计中,该计算设备集群包括一个计算设备,该计算设备包括处理器和存储器;该处理器用于执行该存储器中存储的指令以运行第二方面或第二方面的任意可能的设计提供的方法提供的渲染引擎,以使得该计算设备执行如第一方面或第一方面的任意可能的设计提供的方法。
在一些可能的设计中,该计算设备集群包括至少两个计算设备,每个计算设备包括处理器和存储器。该至少两个计算设备的处理器用于执行该该至少两个计算设备的存储器中存储的指令以运行第二方面或第二方面的任意可能的设计提供的方法提供的渲染引擎,以使得该计算设备集群执行如第一方面或第一方面的任意可能的设计提供的方法。每个计算设备运行了渲染引擎的包括的部分单元。
附图说明
为了更清楚地说明本申请实施例的技术方法,下面将对实施例中所需使用的附图作以简单地介绍。
图1(a)为本申请实施例提供的一种单一视点下的渲染结构示意图;
图1(b)为本申请实施例提供的一种面片划分示意图;
图1(c)为本申请实施例提供的一种像素与面片对应关系的示意图;
图1(d)为本申请实施例提供的一种像素投影区域的示意图;
图2为本申请实施例提供的一种渲染结构示意图;
图3为本申请实施例提供的一种包含多进程的应用场景示意图;
图4为本申请实施例提供的一种多视点的场景结构示意图;
图5为本申请实施例提供的一种渲染方法的流程图;
图6为本申请实施例提供的一种当前初始公共信息表;
图7为本申请实施例提供的一种当前初始对应关系表;
图8为本申请实施例提供的一种当前公共信息表;
图9为本申请实施例提供的一种当前对应关系表;
图10为本申请实施例提供的另一种渲染方法的流程图;
图11为本申请实施例提供的一种当前共享信息表;
图12为本申请实施例提供的另一种当前对应关系表;
图13为本申请实施例提供的一种渲染引擎的结构示意图;
图14为本申请实施例提供的一种计算设备的结构示意图;
图15为本申请实施例提供的一种计算设备集群的结构示意图;
图16为本申请实施例提供的一种计算设备集群的连接方式示意图;
图17为本申请实施例提供的一种计算设备集群的连接方式示意图。
具体实施方式
本申请实施例中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
首先对本申请实施例中所涉及到的一些技术术语进行介绍。
面片(tile):面片是指二维或三维空间中最小的平面构成单元。通常在渲染中,需要将空间中的模型划分成无数个微小的平面。这些平面又被称为面片,它们可以是任意多边形,常用的是三角形和四边形。这些面片各条边的交点则是各个面片的顶点。面片可以是根据模型的材质或颜色等信息随机划分的。此外,考虑到每一个面片都有正反两面,而通常只有一面是可以被看到的。因此,在一些情况下需要对面片进行背面剔除的操作。
每面片追踪光线数(sample per mesh,SPM):每面片追踪光线数是指每一个面片中通过的光线数量。其中,面片是在三维空间中的最小单元。通常我们看到的屏幕是由一个个的像素排列而成的,每一个像素对应空间中的一个或多个面片。像素的颜色是根据其对应面片的颜色(red,green,blue,RGB)计算得到的。在光线追踪中,每面片追踪光线数的大小可以影响渲染的结果。每面片追踪光线数越大,意味着从视点会有更多的光线投向三维空间中的模型。每一面片上被投射的光线数越多,各个面片的渲染结果计算就可以更为准确。
光栅化(rasterization):光栅化是将屏幕空间中的3D图形,转化到二维视平面上的光栅图像的过程。光栅化的过程包含了两部分的工作,第一部分工作:决定窗口坐标中的哪些整型栅格区域被基本图元占用。第二部分工作:分配一个渲染结果和一个深度值到各个区域。把模型的数学描述以及与模型相关的颜色信息转换为屏幕上用于对应位置的像素及用于填充像素的颜色,这个过程称为光栅化。
光线追踪(raytracing):光线追踪又称为光迹跟踪或光线追迹,来自于几何光学的一项通用技术,它通过跟踪与光学表面发生交互作用的光线从而得到光线经过路径的模型。它用于光学系统设计,如照相机镜头、显微镜、望远镜以及双目镜等。当用于渲染时,跟踪从眼睛发出的光线而不是光源发出的光线,通过这样一项技术生成编排好的场景的数学模型显现出来。这样得到的结果类似于光线投射与扫描线渲染方法的结果,但是这种方法有更好的光学效果。例如对于反射与折射有更准确的模拟效果,并且效率非常高,所以当追求这样高质量结果时候经常使用这种方法。具体地,光线追踪方法首先计算一条光线在被介质吸收,或者改变方向前,光线在介质中传播的距离、方向以及到达的新位置。然后从这个新的位置产生出一条新的光线,使用同样的处理方法,最终计算出一个完整的光线在介质中传播的路径。由于该算法是成像系统的完全模拟,所以可以模拟生成复杂的图片。
图形渲染随着计算机算力的提高和行业发展的需要逐渐成为业界的焦点,目前图形渲染技术主要有光栅化和光线追踪两种。
对于光照的真实感实现,光栅化可以通过光线投射计算完成。但是对于额外的视觉效果:软阴影,全局光照,焦散等,则需要通过数据建模,使用其他的方法进行处理。例如全局光照需要使用光照贴图(light map),辐照度贴图(irradiance map)等方法进行拟合,对于软阴影使用阴影映射(shadow map)的技术进行拟合。此种开发方式较为繁琐,拟合后的视觉效果不尽如人意。虽然光栅化渲染技术可以支持多视点同时渲染,其实现过程需要在最后视角变换时,追加角度变换处理来实现,但是精确度较差。因此,下文采用的渲染技术主要是光线追踪。
需要说明的是本文所提到的光线追踪指示的是通过模拟光线的投射获得渲染结果的一类方法。具体地,可以包括向后光线追踪、分布式光线追踪和双向路径追踪等方法。
为了使得本申请的技术方案更加清楚、易于理解,在对本申请提供的渲染方法进行介绍之前,先对渲染技术涉及的三个基本概念——面片、顶点和像素之间的关系进行介绍。
图1(a)示出了一种单一视点下的渲染结构示意图。该渲染结构至少包含虚拟视点100、虚拟视平面200、模型300和光源302。
虚拟视点100是在空间中模拟的人的一只眼睛或多只眼睛,用于感知三维结构。其中,每一帧画面对应一个空间。按照视点数量划分,虚拟视点100可以分为单目视点、双目视点和多目视点。具体地,双目视点或多目视点是指从两个及两个以上的不同的视点获取两幅或多幅图像来重构目标模型3D结构或深度信息。
虚拟视平面200是一种空间中的模拟显示屏。虚拟视平面200的构建主要由虚拟视点100到虚拟视平面200的距离和屏幕分辨率这两个因素决定。
其中,虚拟视点100到虚拟视平面200的距离指的是虚拟视点100到虚拟视平面200的垂直距离。进一步地,该距离可以根据需求进行设置。
屏幕分辨率指的是虚拟视平面200所包含的像素数量。换言之,虚拟视平面200包含一个或多个像素。例如在图1(a)中,虚拟视平面200包含9像素(3*3)。
在一些可能的实现方式中,经过渲染操作获得的结果可以用于输出。在一次光线追踪中,虚拟视平面200中每一个像素的渲染结果共同构成一帧画面。也即,在一次光线追踪中,一个虚拟视平面200对应一帧画面。
与虚拟视平面相对应的,是在用户端侧用于输出最终结果的显示屏。该显示屏的屏幕分辨率不一定等于虚拟视平面的屏幕分辨率。
当显示屏和虚拟视平面200的屏幕分辨率相等时,可以将虚拟视平面200上的渲染结果按照1:1的比例输出至显示屏。
当显示屏和虚拟视平面200的屏幕分辨率不同时,则将虚拟视平面200上的渲染结果按照一定的比例输出至显示屏。其中,具体的比例的计算属于现有技术,这里不再赘述。
空间中可以包含一个或多个模型300。虚拟视平面200对应的渲染结果中可以包含哪些模型300,由对应的虚拟视点100与各模型300之间的相对位置决定。
在进行渲染操作前,通常需要将模型表面划分成多个面片。其中,各个面片的大小和形状可以一致,也可以不一致。具体地,面片的划分方法属于现有技术,这里不再赘述。
图1(b)示出了模型300的一个面的面片划分情况。如图1(b)所示,模型300的一个面被划分成了6个不同大小的三角形面片。
空间中所有的顶点不仅包括模型300各个面的交点(例如D1、D2、D4、D6),还包括各个面片的顶点(例如D0、D3、D5)。
图1(c)示出了一种像素与面片对应关系的示意图。图1(c)中加粗的方框即图1(a)中虚拟视平面200中一个像素在模型300上的投影。可以看到,该像素投影区域分别覆盖了面片1至6的部分区域。所述像素投影区域指示的是该像素在模型上的投影所围成的区域。
一个像素投影区域可以覆盖多个面片,也可以仅覆盖一个面片。其中,当一个像素投影区域仅覆盖一个面片时,可以覆盖该面片的全部区域,也可以覆盖该面片的部分区域。
例如,如图1(d)所示,一个像素投影区域覆盖了面片6的部分区域。也即,面片6可以同时覆盖多个像素投影区域。
综上所述,空间中各模型的表面可以被划分成多个多边形面片,空间中的所有顶点即各个多边形面片顶点的集合。而一个像素对应的像素投影区域可以覆盖一个或多个面片,一个面片也可以覆盖一个或多个像素对应的像素投影区域。
光源302是空间中设置的虚拟光源,用于生成空间中的光照环境。光源302的类型可以是以下光源中的任意一种:点光源、面光源和线光源等。进一步地,空间中可以包括一个或多个光源302。进一步地,当空间中存在多个光源302时,不同的光源类型可以不同。
上述空间中虚拟视点的设置、虚拟视平面的设置、模型的建立和面片的划分等操作,通常都在执行渲染操作之前已经完成了。上述这些步骤可以由影视渲染引擎或游戏渲染引擎等渲染引擎执行。例如,游戏渲染引擎(unity)或虚幻引擎(unreal)等。
在将虚拟视点、虚拟视平面、光源和各模型的相对位置关系设置好后,渲染引擎即可接收上述相对位置关系及相关信息。具体地,所述信息包括虚拟视点的类型和数量、虚拟视平面到虚拟视点的距离和屏幕分辨率、光照环境、各模型与虚拟视点之间的相对位置关系、各模型的面片划分情况、面片编号信息和面片材质信息等。在获得上述信息后,渲染引擎可以进一步地执行下文中的渲染方法600。
接下来将对光线追踪的实现方法进行介绍。图2示出了一种光线追踪的场景图。图中包括虚拟视点100、虚拟视平面200、模型300、光源302和三束光线(第一光线、第二光线和第三光线)。
虚拟视平面200呈现渲染结果是以像素为单位的,而每一个像素的渲染结果等于在本次光线追踪过程中穿过该像素的光线的渲染结果的平均值。而每一束光线的渲染结果的计算属于现有技术,因此不在此赘述。
实际上,每一束光线都是从光源发出,在接触到空间中一个或多个面片后,在每个接触点发生下述情形中的一种:折射、反射或漫反射。然后穿过虚拟视平面200,最后进入虚拟视点100。也即,进入用户的眼睛。
具体地,每个面片都具有一定的颜色和材质特征。面片的材质可以分为以下三种:透明材质、光滑的不透明材质和粗糙的不透明材质。根据面片材质的不同,面片对于光的折/反射情况又可以分为折射、反射和漫反射三种情况。其中,光线接触透明材质会发生折射,光线接触表面光滑的不透明材质会发生反射,光线接触表面粗糙的不透明材质会发生漫反射。
需要说明的是,对于会发生漫反射的材质而言,接触点从各个角度反射出光线的颜色通常是一样的。换言之,在模型和光源的相对位置和其他条件不变的前提下,不同的两个虚拟视点看到同一个可以发生漫反射的点的颜色是一样的。
因此,理论上来说,如果可以将空间中所有可以发生漫反射的点的出射光线的颜色保存在该点上,在之后的光线追踪中再需要计算该点的出射光线颜色时,可以直接复用。但是考虑到模型中的点的数量有无数个,因此对于点的渲染结果难以实现存储和复用。
出射光线的颜色由光源和接触点所在面片的颜色决定,而同一面片各个点的颜色一致的。因此,可以将点近似扩大至面片这一类微小单元。换言之,可以将各个点的渲染结果存储在各个所在的面片上。以面片为单位存储渲染结果,有利于提升光线追踪的计算效率。
在光线追踪中,我们认为光线是从虚拟视点发出,因此部分光线可能在接触到面片后不能回到光源,从而所述光线不具有颜色。因此,在光线追踪中对各个面片的渲染结果的计算需要对面片发出一定数量的光线。进一步地,可以通过根据这些光线的颜色,确定各个面片的渲染结果。例如,可以通过删除采样值中差异过大的光线的渲染结果再求均值的方法确定该面片存储的渲染结果。
从图2中可以看到,虚拟视平面200共包含9个像素。其中中间的像素(边框加粗的像素)中至少有三条从虚拟视点100处发出的光线穿过,分别为第一光线、第二光线和第三光线。以第一光线为例,在空间中接触到模型300的面片6后,其出射光线回到了光源302。
如果由顶点D0、D1和D6围成的三角形面片6的材质为透明材质或光滑的不透明材质,即会发生折射或反射,那么不将第一光线的渲染结果存储在面片6上。
如果由顶点D0、D1和D6围成的三角形面片6的材质为粗糙的不透明材质,即会发生漫反射,那么可以将第一光线的渲染结果存储在面片6上。
可以看到,第一光线对应的第一接触点和第三光线对应的第三接触点均落在了面片6的内部。如上所述,第一光线和第三光线的渲染结果可以不同。可以通过求上述两束光线的渲染结果的均值确定面片6上存储的渲染结果。可选的,也可以去掉其中一个明显异常的渲染结果,将另一束光线的渲染结果作为面片6上存储的渲染结果。
当前光线追踪渲染方法受困于算力和传统图形处理器(graphics processingunit,GPU)架构的设计,每次只能针对一个视点进行视点范围内的渲染。例如,当多个用户联网,进入同一个渲染场景时刻,其GPU渲染进程之间无法共享渲染成果。而实际上,针对相同的渲染场景,大量光线在不同用户视点范围内是可以进行光路共享的。具体地,大量渲染场景的光线路径分布、光照强度分布、当前光线分布的概率分布函数和光传输矩阵等,均可以共享,并且是无偏的。
面向渲染的过程,尤其是实时渲染,当前商用光线追踪无法提供多视点同时渲染的计算方法。目前大部分显卡的计算过程是针对单一用户的视点(camera)进行光线追踪计算。由于其SPM和反弹次数(bounce)设置受困于算力和硬件设计,形成充满噪点的图像后仍需要通过时序重建滤波器进行后处理。也即,不能进行不同视点之间的渲染结果共享。同时,更不能利用不同空间中的渲染结果进行共享。
有鉴于此,下文提供了一种可以多视点共享的渲染方法。具体地,当多个视点都同时处于同一空间中时,多个视点之间可以共享光线追踪的中间计算结果,然后据此输出渲染结果。进一步地,为了提升前述输出图像的质量,还可以利用部分包含相同面片的空间中多个视点的光线追踪得到的面片的中间渲染结果。
首先介绍一种包含多进程的应用场景。其中,所述多进程属于一个应用中一个或多个进程。如图3所示,该场景中至少包含两帧不同的画面,也即,历史帧和当前帧。就时间顺序而言,此处示出的历史帧的形成时间先于当前帧的形成时间。
如上所述,一个虚拟视点对应一个虚拟视平面,一个虚拟视平面一次光线追踪的渲染结果为一帧画面。此时,一个虚拟视点可以对应一个进程。而在一个进程基于光线追踪产生一帧画面的同时,同一帧内的其他进程可以同时产生一帧画面。
例如,以进程400为例。在传统的光线追踪渲染中,进程400可以通过向模型库408发送信息404来组成待渲染内容410。
其中,模型库408中包括一个或多个模型。通常来说,各个模型在空间中的位置是固定的。可选的,各个模型的位置也可以由进程404通过发送指令来控制。需要说明的是,对于模型库408而言,光源也可以是一种具有特定参数的模型。
信息404中可以包括参数和指令。其中,参数至少包括虚拟视点和虚拟视平面在空间中的坐标参数。而指令可以包括对模型的修改和移动等。
例如,在游戏中用户可以点击开始按钮,进而通过进程400向模型库408发送信息。模型库408通过配置模型从而生成初始化模型集合,即待渲染内容410。其中,待渲染内容中包括一个或多个模型及模型信息。
历史帧中某一进程对应的面片渲染结果,可以用于确定当前帧中某一进程的渲染结果。其中,某一进程对应的面片渲染结果可以包括一帧或多帧对应的面片渲染结果。换言之,可以根据某一进程的包含至少的一帧历史帧对应的面片渲染结果,计算当前视平面的渲染结果。
如上所述,历史帧可以包括一帧或多帧。下文以历史帧中某一进程对应一帧视平面渲染结果为例进行介绍。
下文以进程400和500为例进行介绍。
进程400可以通过向模型库408发送信息404,生成待渲染内容410。渲染引擎可以根据待渲染内容410,生成面片渲染结果416。进一步地,可以获得渲染结果420用于输出。
同样的,在当前帧中,进程500可以按照类似上述过程的方法生成渲染结果516。需要说明的是,渲染引擎410在生成面片渲染结果512时,至少可以根据历史帧中的面片渲染结果414获得。上述情况的前提是待渲染内容410和待渲染内容508中包含一个或多个相同的面片。可选的,若在待渲染内容412中存在和待渲染内容508中相同的面片,面片渲染结果418也可用于计算面片渲染结果512。
在一种可能的实现方式中,进程400和进程500在不同帧中对应同一虚拟视点。也即,进程400和进程500实际为同一应用中的不同进程,主要区别在于运行的时间不同。
例如,假设历史帧是当前帧的上一帧。在游戏画面中,同一视点对应的画面在连续的几帧,尤其是上下帧中,不会发生太大的变化。因此可以通过复用一个或多个历史帧中的一个或多个面片渲染结果,提升对当前帧中面片渲染结果的质量和获取速度。
在一种可能的实现方式中,进程400和进程500在不同帧中对应不同的虚拟视点。也即,进程400和进程500实际为同一应用中的在不同时间运行的不同进程。
例如,假设历史帧是当前帧的上一帧。在游戏中,两个不同视点可以是对应物理距离很远的两个玩家。而在游戏中,这样的两个玩家的渲染画面对应的两个空间,分别在上下两帧中存在相同面片的几率较大。因为对于大型的网络游戏而言,同时在线人数通常在10万到100万之间。并且,大多数玩家的画面集中在一些典型的场景中。其中,所述场景对应一个包含一个或多个面片的空间。
因此,通过复用一个或多个其他视点对应的历史帧中的一个或多个面片渲染结果,可以大大提升对当前帧中面片渲染结果的质量和获取速度。
需要说明的是,在上述两种可能的实现方式中,图3中示出的进程可以运行在本地设备上,也可以运行在云端。同样的,模型库和渲染引擎有着类似的部署/运行环境。
具体地,进程可以运行在本地设备上时,所述本地设备可以是服务器。其中,服务器可以是一台或多台。可选的,还可以是终端设备。例如手机、电脑或平板电脑等。
可选的,进程还可以运行在云服务器上。其中,云服务器可以是一台或多台。
模型库可以部署在本地设备上。所述本地设备可以是服务器。其中,服务器可以是一台或多台。可选的,还可以是终端设备。例如手机、电脑或平板电脑等。
可选的,也可以部署在云服务器上。考虑到模型库中需要存储应用中大量的模型数据,因此对于存储的要求较高。上述的一些终端设备,例如手机和平板电脑等可能不具备存储大量数据的能力,因此需要将模型库部署在一台或多台云服务器上。
渲染引擎的输入量是待渲染内容,输出量是待渲染内容对应的渲染结果。可选的,还可以输出待渲染内容包含的面片的渲染结果。
渲染引擎可以是由一台或多台计算设备组成的计算设备集群,也可以是一种计算机程序产品,还可以是一种实体装置。
上述的设备或产品均可以部署在本地设备侧。可选的,也均可以部署在云服务器侧。
例如,在上述的一类可能的实现方式中,也即,当进程400和进程500实际为同一应用对应的不同进程时。对于一些模型数据量较小的应用,进程和模型库均可以部署在本地设备上。考虑到光线追踪的计算量,渲染引擎可以部署在云服务器侧。对于一些模型数据量较小的应用,模型库可以部署在本地设备上。渲染引擎和模型库可以部署在云服务器侧。
又例如,在上述的另一类可能的实现方式中,也即,当进程400和进程500实际为不同应用中的不同进程时。进程可以运行在本地设备上,而模型库和渲染引擎更适合部署在云服务器侧。
接下来介绍一种包含多视点的渲染场景结构图。如图4所示,一种多视点的场景结构图中至少包括两个虚拟视点100和102、两个虚拟视点对应的虚拟视平面200和202、模型300和光源302。
此处的虚拟视点对应图3中进程。具体地,一个虚拟视点对应一个进程。而模型可以对应图3中模型库中的模型。
接下来基于图4对空间中信息表的建立和更新情况进行概述。
图4中包含左右两帧画面,分别为左侧的历史帧和右侧的当前帧。
以右侧的当前帧为例。在接收了由模型300和光源302构成的待渲染内容后,对于待渲染内容中包含的一个或多个模型300建立当前初始公共信息表。此处,待渲染内容包含一个模型300。其中,公共信息表是以模型中的面片为单位建立的,还包括了各面片的渲染结果等信息。
同时,对当前帧中各个虚拟视平面建立初始对应关系表。以虚拟视点106对应的虚拟视平面206为例,建立当前初始对应关系表。其中,对应关系表是以虚拟视平面中的像素为单位建立的,还包括了各像素和模型中各面片的对应关系以及各像素的颜色等信息。
需要说明的是,上述的初始公共信息表和初始对应关系表的建立并无时间上的先后顺序。
同理,在左侧的历史帧中,也已经对于模型300建立了历史初始公共信息表,对于虚拟视平面102建立了历史初始对应关系表。此外,在历史帧中根据历史初始公共信息表和历史初始对应关系表已经获得了历史公共信息表。
需要说明的是,历史公共信息表的获得时间先于当前公共信息表的获得时间,但历史公共信息表的获得时间不一定先于当前初始公共信息表的建立时间。
在右侧的当前帧中,可以根据历史公共信息表,获得当前对应关系表,进而获得虚拟视平面206的渲染结果。下面对两种可能的实现方式进行介绍。在下述的两种可能的实现方式中,当前帧和历史帧采用的是相同的实现方式。
在一种可能的实现方式中,首先根据历史公共信息表建立当前初始公共信息表,然后根据当前初始对应关系表,确定当前初始公共信息表需要进行光线追踪的面片。在对所述面片进行光线追踪渲染后,更新当前初始公共信息表,获得当前公共信息表。进一步地,根据当前公共信息表更新当前初始对应关系表,获得当前对应关系表。最后,根据当前对应关系表,确定视平面206对应的渲染结果。
在一种可能的实现方式中,首先对待渲染内容中的面片进行光线追踪渲染,根据光线追踪渲染的结果建立当前初始公共信息表。然后根据历史公共信息表更新当前初始公共信息表,获得当前公共信息表。根据当前公共信息表对当前初始对应关系表进行更新,获得当前对应关系表。最后,根据当前对应关系表,确定视平面206对应的渲染结果。
接下来对渲染方法进行详细的介绍。
图5示出了一种渲染方法的流程图,介绍了渲染方法600。图5示出了两个视平面的渲染流程图,分别对应当前视平面和历史视平面的渲染流程图。其中,就时间顺序上而言,当前视平面对应当前帧,历史视平面对应历史帧。
需要说明的是,对于历史视平面的渲染方法和对当前视平面的渲染方法一致,均为渲染方法600。因此下文主要以当前视平面对应的流程图进行介绍。
该渲染方法可以由渲染引擎800执行。该方法包括3个部分,即预处理部分、光线追踪部分和获得当前渲染结果部分。
首先,预处理部分包括S400至S404。
S200,渲染引擎800获取当前待渲染内容及相关参数。
首先,渲染引擎800得当前待渲染内容。具体的,当前渲染内容可以是基于图3中的进程产生的。具体地,可以根据进程包含的参数和指令在模型库中对模型进行选择和组合后形成当前待渲染内容。因此,待渲染内容可以从一个可以根据进程的信息调用模型库的装置或进程处获得。
其次,待渲染内容中包括一个或多个模型及各个模型的信息。例如,图4中的模型300。具体地,各个模型的面片划分情况、面片编号以及各个模型和面片的坐标。
此外,所述相关参数包括虚拟视点和虚拟视平面的坐标,以及光源参数等。
渲染引擎800获取当前待渲染内容及相关参数后,即可对当前待渲染内容进行渲染。
S202,渲染引擎800以当前待渲染内容中的面片为单位,建立当前初始公共信息表。
根据S200中获取的当前待渲染内容中各个面片的编号可以建立当前初始公共信息表。具体地,当前初始公共信息表包括各个面片的编号以及各个面片的采样值、渲染结果和材质。
首先,可以对各个面片的采样值和存储的渲染结果进行初始化。所述采样值是指在光线追踪的过程中,面片作为光线首次在空间中接触到的面片的次数。
颜色的表征方式有RGB模式、CMYK模式和Lab模式等,下文以RGB模式为例。图6示出了一种当前初始公共信息表,其中面片编号从1依次编号至p,p指示的是空间内中面片的数量。
其中,采样值和存储的渲染结果均需要进行初始化。可选的,可以将各个面片的采样值的初始值设置为0。
可选的,在一些可能的实现方式中,还可以根据历史帧中获得的历史公共信息表对当前初始公共信息表进行初始化。具体的关于如何获得历史公共信息表将在下文中进行介绍。
需要说明的是,当历史视平面存在对应的历史公共信息表时,根据S202中建立的当前初始公共信息表中的面片编号,可以在历史公共信息表中查询各个面片对应的采样值和渲染结果。进一步地,将所述查询得到的采样值和渲染结果更新为当前初始公共信息表中各个面片对应的采样值和存储的渲染结果的初始值。
需要说明的是,步骤S200与步骤S202没有固定的执行时序。换言之,步骤S202可以先于步骤S200被执行,也可以后于S200被执行,还可以和步骤S200同时被执行。
S204,渲染引擎800建立当前视平面对应的的当前初始对应关系表。
根据在S200中获得的各个面片的坐标,可以确定各个面片在当前视平面上的对应位置,从而建立当前待渲染内容中各个面片与当前视平面中各个像素的对应关系。进一步地,根据所述对应关系,可以建立当前初始对应关系表。所述当前初始对应关系表包含像素与面片的对应关系、面片的深度值和存储的渲染结果以及像素的渲染结果。
具体地,面片是处于三维空间中的微小单元,在经过从模型坐标系到世界坐标系,然后到视图坐标系,再到投影坐标系,最后到视口坐标系这一系列坐标系的变化后,最终映射在二维的视平面上。以遍历的方式对视平面中的每一个像素进行判断,判断像素的部分或全部区域是否被面片所覆盖。对于有面片覆盖的像素,记录该像素与覆盖面片的对应关系。关于像素和面片的覆盖关系已经在上文中介绍过了,不再赘述。此外,还需要对视平面中的像素进行编号。
图7示出了一种当前视平面下像素与面片的当前初始对应关系表。该当前初始对应关系表中包含了像素与面片的对应关系、面片的深度值和渲染结果以及像素的渲染结果。
具体地,如图7所示,像素与面片之间的对应关系可以是一个像素对应一个或多个面片。例如,面片1,2和6均覆盖了像素1的部分或全部面积。面片m覆盖了像素n的部分或全部面积。其中,n和m不一定相等。
需要说明的是,当多个面片对应一个像素时,所述多个面片覆盖像素中区域可以不同,也可以相同。具体地,因为各个面片的深度不同,因此可以存在两个及两个以上的面片覆盖在同一个像素内的区域发生重叠的情况。
像素与面片之间的对应关系也可以是一个或多个像素对应一个面片。例如,面片1同时覆盖了像素1和2的部分或全部面积。
每个面片的深度可以根据围成该面片的线段相交的顶点的深度计算而来的。每个面片的深度可以等于上述顶点的深度的平均值。具体地,所述平均值可以是算术平均值,也可以是加权平均值。
可选的,可以根据面片的深度和当前初始公共信息表中各面片的材质,可以确定各个像素对应的可视面片,从而提升光线追踪渲染的效率。其中,一个可视面片可以是一个目标面片。也即,作为光线追踪渲染的目标。具体的可视面片的确定方法将在S406中详细介绍。
在步骤S204中,还需要对可视面片上存储的渲染结果和像素渲染结果分别进行初始化处理。具体地,可视面片上存储的渲染结果和像素渲染结果均初始化为0。
需要说明的是,步骤S402和S404没有固定的执行时序。换言之,步骤S404可以先于步骤S402被执行,也可以后于S402被执行,还可以和步骤S402同时被执行。
根据在S402和S404分别建立的第一公共信息表和第一对应关系表,可以进一步地确定需要进行光线追踪的面片。具体地,光线追踪部分包括S406和S408。
S206,渲染引擎800根据当前初始对应关系表、当前初始公共信息表对部分面片进行光线追踪。
根据当前初始对应关系表中各个像素对应的面片编号和面片对应的深度值和材质,确定各像素对应的可视面片集。所述可视面片集指的是在该像素对应的面片中属于可视面片的面片的集合。根据可视面片集中各面片的采样值和采样阈值,对部分可视面片进行光线追踪的操作。
首先,根据面片的材质、当前初始关系表中的面片编号和面片深度值,可以获得各像素对应的可视面片集。
具体地,以像素为单元,分别确定各个像素中的可视面片集。当一个像素对应一个面片时,该面片为可视面片。当一个像素对应多个面片时,应当按照深度由小到大的顺序进行排列。在这一情况下,在深度由小到大的顺序中,可视面片包括深度值小于或等于首次出现不透明材质的面片的深度值的面片。
以图7为例,像素n对应面片m,则无论面片m是否为不透明材质,面片m都是可视面片。像素1对应面片1,2和6,假设这三个面片的深度关系为D1<D2<D6,并且面片2为不透明材质,面片1和6均为透明材质。那么对于像素1而言,首次出现不透明材质的面片的深度为D2,因此可视面片应该包括深度值小于或等于D2的面片,即面片1和2。
需要说明的是,视平面中不同的像素对应的可视面片集可以不同。
其次,在获得各像素对应的可视面片集后,可以根据当前初始公共信息表中的采样阈值对部分面片进行光线追踪的操作。其中,采样阈值可以根据需求进行设置。具体地,查询上述可视面片集中的面片在当前初始公共信息表中对应的采样值。
若该面片的采样值大于或等于采样阈值,则直接获取该面片的渲染结果用于更新当前初始公共信息表。
若该面片的采样值小于采样阈值,则对该面片进行光线追踪的操作。
可选的,若该面片的采样值小于采样阈值,则基于一定几率对该面片进行光线追踪的操作。具体地,对于由采样值小于采样阈值的可视面片组成的待采样面片集,在待采样面片集中随机选取k个面片进行随机采样。其中,k可以根据需要进行设置,k小于等于待采样面片集中的面片数量。这k个面片的选取方法可以是简单随机方法,也可以是低差异序列等方法。随机采样的方法可以是简单随机采样,也可以是超级采样等方法。
光线追踪的过程是从虚拟视点向空间中的k个面片分别发出光线,并进行光线追踪。其中,虚拟视点可以对这k个面片分别发出相同数量的光线,也可以分别发出不同数量的光线。需要说明的是,无论是发出相同数量的光线,还是不同数量的光线,每一次采样中到达每一个面片的光线数量都可以小于或等于采样阈值。
如果一个面片的采样值为1,则代表有一束光线在空间中首次接触到的面片为该面片,因此计算该面片的颜色。如果一个面片的采样值大于1,则代表有两束或两束以上的光线在空间中首次接触到的面片为该面片。
对于上述面片的中间渲染结果的计算,是通过分别计算从虚拟视点发出的光线的颜色来实现的。对于采样值为1的面片,其渲染结果为光线的颜色。对于采样值大于或等于2的面片,其渲染结果等于该面片上的采样光线的平均值。具体地,所述平均值可以是算术平均值,也可以是加权平均值。
S208,渲染引擎800根据光线追踪结果获得当前对应关系表和当前公共信息表。
根据在步骤S408中获得的待采样面片集中面片的中间渲染结果,可以获得当前公共信息表和当前对应关系表。
当在S206中确定可视面片的采样值大于或等于采样阈值时,则直接获取该面片的渲染结果用于更新当前初始公共信息表。同时,不对当前初始公共信息表中面片的采样值进行修改。因此,该面片的信息在当前初始公共信息表和当前公共信息表中保持一致。
当在S206中确定可视面片的采样值小于采样阈值时,根据当前初始公共信息表中面片的渲染结果和在步骤S206中获得的面片的中间渲染结果,可以获得当前渲染结果。进一步地,根据当前渲染结果对当前初始公共信息表进行更新。
在一种可能的实现方式中,通过计算当前初始公共信息表中面片的渲染结果和在步骤S206中获得的面片的中间渲染结果的平均值的方法,可以确定当前渲染结果。其中,所述平均值可以是算术平均值,也可以是加权平均值。将当前初始公共信息表中待采样面片对应的渲染结果更新为当前渲染结果。同时,对当前初始公共信息表中的待采样面片的采样值执行更新的操作。图8示出了一种当前公共信息表。
在这一类可能的实现方式中,例如面片1属于可视面片,且其在图6所示的当前初始公共信息表中的采样值S1大于采样阈值。也即,在对公共信息表进行更新时,不需要对面片1的采样值和渲染结果进行更新的操作。又例如面片2属于可视面片且其在图6所示的当前初始公共信息表中的采样值S2小于采样阈值。也即,需要对其在图8所示的当前公共信息表中的采样值和渲染结果进行更新。具体地,将图6中的渲染结果C2更新为C2'。其中,C2'等于面片2在步骤S406中的渲染结果和C2的平均值。此外,还需要将面片2在图6和图8中的采样值S2更新为S2'。其中,S2'等于S2加上在步骤S206中面片2上的采样光线数k。
根据当前公共信息表,可以对图7中的当前初始对应关系表进行更新,从而获得当前对应关系表。
具体地,根据当前公共信息表,可以获得当前对应关系表中的可视面片渲染结果。进一步地,可以获得像素格渲染结果。例如,如图7所示,对于像素1,其对应的面片1、2和6中,面片6属于不可视面片。因此以面片1和2为单位,在图8所示的当前公共信息表中进行查询,可以获得像素1对应的可视面片渲染结果C1和C2'。
根据像素对应的可视面片渲染结果,可以确定像素渲染结果。其中,像素渲染结果可以等于可视面片渲染结果的平均值。具体地,所述平均值可以是算术平均值,也可以是加权平均值。例如,在图9所示的当前对应关系表中,像素1的渲染结果P1等于C1和C2'的平均值。
在一种可能的实现方式中,还可以将当前初始公共信息表中面片的渲染结果和扩展后的在步骤S206中获得的面片的中间渲染结果数列组成第一数列。进一步地,通过计算这个第一数列的方差,可以确定当前渲染结果。
在上一种可能的实现方式中提到,当前渲染结果可以等于当前初始公共信息表中面片的渲染结果和在步骤S206中获得的面片的中间渲染结果的均值。换言之,当前渲染结果可以由当前初始公共信息表中面片的渲染结果和在步骤S206中获得的面片的中间渲染结果组成的数列乘以一定的系数矩阵得到。因此,利用当前渲染结果除以上述系数矩阵即可得到一个数列。其中,该数列即扩展后的当前渲染结果数列。
同理,在步骤S206中获得的面片的中间渲染结果可以通过除以系数矩阵得到扩展后的在步骤S206中获得的中间渲染结果数列。需要说明的是,本实施例中渲染结果的更新是逐帧发生的。因此,系数矩阵可以是固定的数值,也可以是在上一帧中对渲染结果更新的过程中使用的系数矩阵。对于首帧中的在步骤S206中获得的面片的中间渲染结果(也即步骤S202中初始化的渲染结果),可以采用固定数值的系数矩阵。
在这一类可能的实现方式中,例如面片1属于可视面片,且其在图6所示的当前初始公共信息表中的采样值S1大于采样阈值。也即,在对公共信息表进行更新时,不需要对面片1的采样值和渲染结果进行更新的操作。又例如面片2属于可视面片且其在图6所示的当前初始公共信息表中的采样值S2小于采样阈值。也即,需要对该面片的采样值和渲染结果进行更新。
具体地,将面片2在步骤S206中的面片的中间渲染结果和面片2对应的扩展后的C2组成面片2对应的新的数列。计算所述新的数列的方差,根据所述方差和第一方差阈值,确定当前渲染结果。其中,第一方差阈值可以根据需求进行设置。
当所述数列的方差大于方差阈值时,将当前初始公共信息表中面片2对应的渲染结果更新为C2'。其中,C2'等于面片2在步骤S206中的面片的中间渲染结果。同时,将当前初始公共信息表中面片2对应的采样值S2更新为S2'。其中,S2'等于1。
当所述数列的方差小于或等于第一方差阈值时,将当前初始公共信息表中面片2对应的渲染结果更新为C2'。其中,C2'等于面片2在步骤S206中的面片的中间渲染结果和C2的平均值。所述平均值可以是算术平均值,也可以是加权平均值。
根据上述两种情形中的当前公共信息表,可以对图7中的当前初始对应关系表进行更新。
根据当前公共信息表,可以获得当前对应关系表中的可视面片渲染结果。进一步地,可以获得像素格渲染结果。例如,对于像素1,其对应的面片1、2和6中,面片6属于不可视面片。因此以面片1和2为单位,在图8所示的当前公共信息表中进行查询可以获得像素1对应的可视面片渲染结果C1和C2'。
根据像素对应的可视面片渲染结果,可以确定像素渲染结果。其中,像素渲染结果可以等于可视面片渲染结果的平均值。具体地,所述平均值可以是算术平均值,也可以是加权平均值。例如,在图9所示的当前对应关系表中,像素1的渲染结果P1等于C1和C2’的平均值。
需要说明的是,在步骤S202中用到的历史公共信息表的获得方法同本步骤中当前公共信息表的获得方法。
在S408中对待采样面片集中的面片进行了光线追踪渲染,获得了待采样面片集中各个面片的中间渲染结果。根据当前面片的中间渲染结果,可以获得当前公共信息表和当前对应关系表,从而获得当前渲染结果。具体地,获得当前渲染结果部分包括S410。
S410,渲染引擎800获得当前渲染结果。
根据当前对应关系表中各像素的渲染结果,可以获得当前渲染结果。
需要说明的是,S210获得的当前渲染结果可以用于在输出屏幕上直接进行输出,也可以作为下一步去噪操作的原始图像/数据。
图10示出了另一种渲染方法的流程图,介绍了渲染方法700。图10示出了两个视平面的渲染流程图,分别对应当前视平面和历史视平面的渲染流程图。其中,就时间顺序上而言,当前视平面对应当前帧,历史视平面对应历史帧。
如上文所述,本申请根据历史公共信息表,获得当前对应关系表,进而获得视平面对应的渲染结果的实现方法至少有两种。第一种是图5所示的一种渲染方法600。而下文中给出的是另一种渲染方法700。
渲染方法600是在对待渲染内容进行光线追踪之前根据历史公共信息表,初始化其当前初始公共信息表,进而获得当前面片的渲染结果,最终获得待渲染内容的当前渲染结果。而渲染方法700是先对待渲染内容进行光线追踪渲染,获得当前面片的中间渲染结果,再根据历史公共信息表,获得待渲染内容的当前渲染结果。
需要说明的是,渲染方法700中先于复用步骤进行的光线追踪渲染可以是常规的光线追踪渲染。因此,渲染方法700中的当前面片的中间渲染结果可以是常规光线追踪获得的面片的渲染结果。
可选的,也可以是渲染方法600这样的光线追踪方法。因此,渲染方法700中的当前面片的中间渲染结果也可以是渲染方法600中获得的当前面片的渲染结果。
需要说明的是,在渲染方法700中提到的当前面片的中间渲染结果不同于渲染方法600中提到的当前面片的中间渲染结果。所述中间渲染结果指示的是在最终获得当前面片的渲染结果之前面片的渲染结果。也即,在这两种方法中,在计算该面片的当前渲染结果的过程中,获取的该面片的过程渲染结果也即该面片的中间渲染结果。一般的,可以对该面片进行光线追踪渲染以获得该面片的中间渲染结果,此处进行的光线追踪渲染的追踪光线数小于阈值。
在图10中,对于历史视平面的渲染方法和对当前视平面的渲染方法一致,均为渲染方法700。因此下文主要以当前视平面对应的流程图进行介绍。
渲染方法700可以由渲染引擎800执行。该方法包括3个部分,即光线追踪部分、信息复用部分和获得当前渲染结果部分。
首先,光线追踪部分为S400和S402。
S400:渲染引擎800获取当前待渲染内容、相关参数、当前中间公共信息表和当前中间对应关系表。
该步骤中渲染引擎获得当前待渲染内容、相关参数的方法与上文中S200完全一致,不再赘述。
需要说明的是,渲染引擎800在此获取的当前中间公共信息表,可以是在常规光线追踪过程中获得的当前公共信息表。可选的,也可以是在渲染方法600中的步骤S208中获得的当前公共信息表。其中,常规光线追踪过程中获得的当前公共信息表的获得方法与渲染方法600中的步骤S202建立当前初始公共信息表的方法类似,故不再赘述。
需要说明的是,渲染引擎800在此获取的当前中间对应关系表,可以是在常规光线追踪过程中获得的当前对应关系表。可选的,也可以是在渲染方法600中的步骤S208中获得的当前对应关系表。其中,常规光线追踪过程中获得的当前对应关系表的获得方法与渲染方法600中的步骤S204建立当前初始对应关系表的方法类似,故不再赘述。
S402:渲染引擎800对当前待渲染内容进行光线追踪并获得当前面片的中间渲染结果。
如前所述,当前待渲染内容中包括一个或多个模型,每个模型至少包含一个面片。因此在该步骤中对当前待渲染内容进行光线追踪即可获得当前面片的中间渲染结果。
具体的光线追踪方法可以是现有技术,不再赘述。
可选的,具体的光线追踪方法还可以参照渲染方法600执行。换言之,渲染方法600中S208中获得的当前面片的渲染结果即本步骤中的当前面片的中间渲染结果。
在这一步中对当前待渲染内容进行光线追踪后,该面片的采样值其实也会变化。因此,在一些可能的实现方式中,可以将此时待渲染内容中的面片的采样值和阈值进行对比。若所述采样值大于阈值,可以直接输出渲染结果。
但是考虑到第一方面,复用可以进一步的提升前述面片的渲染结果。第二方面,渲染方法700可以适用于采样值低的光线追踪方法。通常认为,在进行S402中的采样后,前述面片的采样值可以小于阈值。综合以上两点,下文将以前述面片采样值小于阈值的情况进行介绍。
在对待渲染内容进行光线追踪渲染后,可以获得当前面片的中间渲染结果。进一步地,通过复用历史公共信息表中的部分信息,可以获得当前面片的渲染结果。具体的信息复用部分包括S404和S406。
S404:渲染引擎800以当前待渲染内容包含的面片为单位,建立当前共享信息表。
以当前待渲染内容中的面片为单位,根据历史公共信息表,可以建立当前共享信息表。其中,历史公共信息表的获得方式将在后文中进行介绍。
可选的,也可以以当前待渲染内容中的可视面片为单位,建立当前共享信息表。具体的可视面片的获得方法类似渲染方法600中步骤S206中所设方法,故不再赘述。
下文以当前待渲染内容中的可视面片为单位,建立当前共享信息表为例进行介绍。
首先根据当前中间对应关系表中每一个像素对应的可视面片集,建立当前视平面对应的当前可视面片总集。具体地,将每一个像素对应的可视面片集中的面片提取出来,共同构成一个当前可视面片总集。
例如,如图11所示,当前可视面片总集至少包括面片1、2和n。其中,n小于或等于图6中的p。也即,小于或等于当前待渲染内容中的面片总数。
需要说明的是,不同像素对应的可视面片可以部分相同。例如,在图9中,像素1的可视面片集中包括面片1和2,而像素2的可视面片集中包括面片1、3和4。也即,在像素1和像素2中,面片1都属于可视面片。可选的,对于在当前可视面片总集中重复出现的面片,使其出现一次即可。
以当前可视面片总集中的面片为单位,可以建立当前共享信息表。当前共享信息表包括当前待渲染内容中所有的可视面片、各可视面片所对应的历史视平面对应的编号、各可视面片在各空间中渲染结果。共享信息表还包括更新后的面片渲染结果,初始值为0。
具体地,选取当前可视面片总集中的某一面片,搜索渲染引擎800中存储的历史公共信息表。当历史公共信息表中存有该面片的信息时,获取历史公共信息表中该面片对应的渲染结果。进一步地,获得当前共享信息表中该面片在各视平面中对应的的渲染结果。以此类推,可以为当前待渲染内容中所有可视面片建立一个当前共享信息表。
可选的,在渲染方法700中,考虑到可以在光线追踪之后通过复用历史公共信息表中的部分面片的渲染结果,可以在光线追踪时适当减少追踪光线数,以提升光线追踪的效率。关于是否需要减少追踪光线数可以根据实际情况决定。
需要说明的是,在光线追踪过程中,尤其是在上述的减少追踪光线数的情况下,可能出现步骤S402中的光线追踪数加上步骤S404中获取的历史面片的渲染结果中面片的追踪光线数仍然小于采样阈值的情况。在这样的情况下,可以考虑统计在该应用中该类情况出现的概率,根据所述概率决定是否采用该类方法。可选的,也可以对应用所涉的全部面片进行分类,选取部分模型对应的面片执行这类渲染方法。
在这一类可能的实现方式中,如图11所示,当前待渲染内容中的面片1在第二、第三和第九空间中也是可视面片。同时,面片1在上述三个视平面对应的渲染结果分别是C1-2、C1-3和C1-9。
当历史公共信息表中存有该面片的信息时,提取历史公共信息表中该面片对应的渲染结果。进一步地,获得共享信息表中该面片的渲染结果。以此类推,可以为当前待渲染内容中的可视面片建立一个当前共享信息表。
S406,渲染引擎800根据当前共享信息表和当前面片的中间渲染结果,获得当前对应关系表和当前公共信息表。
根据和图11共享信息表中的各视平面对应的渲染结果,可以获得更新后的可视面片的渲染结果。
具体地,将当前面片的中间渲染结果和当前共享信息表中各视平面对应的渲染结果组成第二数列。根据所述第二数列的方差与第二方差阈值,更新可视面片的渲染结果。
当所述第二数列的方差小于或等于第二方差阈值时,将当前共享信息表中可视面片的渲染结果更新为第二数列的平均值。其中,所述平均值可以是算术平均值,也可以是加权平均值。进一步地,还可以更新当前中间对应关系表中面片对应的渲染结果。
如上所述,当前中间公共信息表可以是渲染方法600中的获得的当前公共信息表(图8)。换言之,当前面片的中间渲染结果可以根据图8确定。因此,下文以图8为例进行介绍。在图8中,若由面片1在当前中间公共信息表中颜色C1和共享信息表中对应空间中的渲染结果C1-2、C1-3和C1-9共同组成第二数列,其方差小于或等于第二方差阈值,则将当前共享信息表中面片1对应的渲染结果去确定为C1'。其中,C1'等于C1、C1-2、C1-3和C1-9的平均值。同时,将图12所示的当前对应关系表中的可视面片渲染结果中的C1更新为C1'。
当所述第二数列的方差大于第二方差阈值时,对当前共享信息表进行更新。具体地,将图11中当前面片对应的空间编号和对应空间中的渲染结果清零。同时,不对当前中间对应关系表中可视面片的渲染结果进行更新。
例如,在图11中,若由面片1在如图8所示的当前中间公共信息表中颜色C1和当前共享信息表中对应空间中的渲染结果C1-2、C1-3和C1-9共同组成第二数列,其方差大于第二方差阈值,则将当前共享信息表中面片1对应的渲染结果更新为C1'。其中,C1'等于C1。同时,对图12中可视面片渲染结果中渲染结果C1不做修改(因为C1'等于C1)。
在获得了更新后的可视面片渲染结果的当前共享信息表后,可以获得图12中的当前对应关系表。进一步,可以获得当前待渲染内容的渲染结果。
例如,在图11中确定的可视面片1对应的更新后的存储渲染结果为C1'。至少将当前对应关系表中可视面片渲染结果中涉及面片1的渲染结果分别更新为C1'。进一步地,像素1的渲染结果P1'等于C1'和C2”的平均值。
在获得当前公共对应关系表的同时,可以根据面片的渲染结果对当前中间公共信息表(如图8)进行更新,获得当前公共信息表。
需要说明的是,在步骤S404中获取的历史公共信息表的获得方法同当前公共信息表的获得方法。
在获得当前对应关系表后,可以获得当前待渲染内容的渲染结果。接下来是获得当前渲染结果部分。
S408,渲染引擎800获得当前待渲染内容的渲染结果。
在获得当前对应关系表中的可视面片的渲染结果后,可以被进一步确定各像素的渲染结果,并且获得步骤S400中获取的待渲染内容的渲染结果。
需要说明的是,S408获得的渲染结果可以用于在输出屏幕上直接进行输出,也可以作为下一步去噪操作的原始图像/数据。
本申请还提供一种渲染引擎800,如图13所示,包括:
通信单元802,用于在S200获取当前待渲染内容及相关参数。通信单元S202还用于在S206中接收设置的采样阈值。可选的,通信单元802还用于在S208中接收第一方差阈值。在S400中,通信单元802用于获取当前待渲染内容、相关参数、当前中间公共信息表和当前中间对应关系表。通信单元802还用于在S406中接收第二方差阈值。
存储单元804,用于存储在S200中获取的应用的模型数据。在渲染方法600中,存储单元804用于存储S202中获得的当前初始公共信息表和历史公共信息表。还用于存储在S204中获得的当前初始对应关系表。在S208中获得的当前对应关系表和当前公共信息表都被存储至存储单元804中。存储单元804还用于存储S210中获得的当前渲染结果。
在渲染方法700中,存储单元804用于存储S400中获得的当前待渲染内容、相关参数、当前中间公共信息表和当前中间对应关系表。在S402中获得的当前面片的中间渲染记过和在S404中获得的当前共享信息表都将被存储至存储单元804中。存储单元804还用于存储S406中获得的当前公共信息表和当前对应关系表。存储单元804还用存储S408中获得的当前待渲染内容的渲染结果。
处理单元806,在渲染方法600中,用于在S202中建立当前初始公共信息表和在S204中建立当前初始对应关系表。处理单元806还用于在S206中根据当前对应关系表、当前公共信息表对部分面片进行光线追踪。在S208中获得当前对应关系表和当前公共信息表的操作也由处理单元806执行。此外,S210中的当前渲染结果的获得操作也是由处理单元806执行。
在渲染方法700中,处理单元806用于在S402中对当前待渲染内容进行光线追踪并获得当前面片的中间渲染结果。在S404中建立当前共享信息表的操作也是由处理单元806执行。在步骤S406中,处理单元806用于根据当前共享信息表和当前面片的中间渲染结果,获得当前公共信息表和当前对应关系表。此外,S408中的当前渲染结果的获得操作也是由处理单元806执行。
具体地,处理单元806可以包括复用单元808和光线追踪单元810。
具体地,在渲染方法600中,复用单元808用于在S202中建立当前初始公共信息表和在S204中建立当前初始对应关系表。光线追踪单元810用于在S206中根据当前对应关系表、当前公共信息表对部分面片进行光线追踪。在S208中获得当前对应关系表和当前公共信息表的操作也由光线追踪单元810执行。此外,S210中的当前渲染结果的获得操作也是由光线追踪单元810执行。
在渲染方法700中,复用单元808用于在S402中对当前待渲染内容进行光线追踪并获得当前面片的中间渲染结果。在S404中建立当前共享信息表的操作也是由复用单元808执行。在步骤S406中,光线追踪单元810用于根据当前共享信息表和当前面片的中间渲染结果,获得当前公共信息表和当前对应关系表。此外,S408中的当前渲染结果的获得操作也是由光线追踪单元810执行。
可选的,通信单元202还用于返回S210和S408中的获得的当前渲染结果。
本申请还提供一种计算设备900。如图14所示,计算设备包括:总线902、处理器904、存储器906和通信接口908。处理器904、存储器906和通信接口908之间通过总线902通信。计算设备900可以是服务器或终端设备。应理解,本申请不限定计算设备700中的处理器、存储器的个数。
总线902可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。总线904可包括在计算设备900各个部件(例如,存储器906、处理器904、通信接口908)之间传送信息的通路。
处理器904可以包括中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。
在一些可能的实现方式中,处理器904可以包含一个或多个图形处理器。该处理器904用于执行存储在存储器906中的指令以实现前述渲染方法600或渲染方法700。
在一些可能的实现方式中,处理器904可以包括一个或多个中央处理器和一个或多个图形处理器。该处理器904用于执行存储在存储器906中的指令以实现前述渲染方法600或渲染方法700。
存储器906可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。处理器904还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard diskdrive,HDD)或固态硬盘(solid state drive,SSD)。存储器906中存储有可执行的程序代码,处理器904执行该可执行的程序代码以实现前述渲染方法600或渲染方法700。具体的,存储器906上存有渲染引擎800用于执行渲染方法600或渲染方法700的指令。
通信接口903使用例如但不限于网络接口卡、收发器一类的收发模块,来实现计算设备900与其他设备或通信网络之间的通信。例如,可以通过通信接口903获取信息404、信息406等。
本申请实施例还提供了一种计算设备集群。如图15所示,所述计算设备集群包括至少一个计算设备900。该计算设备集群中包括的计算设备集群可以全部是终端设备,也可以全部是云服务器,还可以部分是云服务器部分是终端设备。
在上述的三种关于计算设备集群的部署方式下,计算设备集群中的一个或多个计算设备900中的存储器906中可以存有相同的渲染引擎800用于执行渲染方法600或渲染方法700的指令。
在一些可能的实现方式中,该计算设备集群中的一个或多个计算设备900也可以用于执行渲染引擎800用于执行渲染方法600或渲染方法700的部分指令。换言之,一个或多个计算设备900的组合可以共同执行渲染引擎800用于执行渲染方法600或渲染方法700的指令。
需要说明的是,计算设备集群中的不同的计算设备900中的存储器906可以存储不同的指令,用于执行渲染方法600或渲染方法700的部分功能。
图16示出了一种可能的实现方式。如图16所示,两个计算设备900A和900B通过通信接口908实现连接。计算设备900A中的存储器上存有用于执行通信单元802、复用单元808和光线追踪单元810的功能的指令。计算设备900B中的存储器上存有用于执行存储单元804的功能的指令。换言之,计算设备900A和900B的存储器906共同存储了渲染引擎800用于执行渲染方法600或渲染方法700的指令。
图16所示的计算设备集群之间的连接方式可以是考虑到本申请提供的渲染方法600或渲染方法700需要大量存储历史帧中的面片的历史渲染结果。因此,考虑将存储功能交由计算设备900B执行。
应理解,图16中示出的计算设备900A的功能也可以由多个计算设备900完成。同样,计算设备900B的功能也可以由多个计算设备900完成。
在一些可能的实现方式中,计算设备集群中的一个或多个计算设备可以通过网络连接。其中,所述网络可以是广域网或局域网等等。图17示出了一种可能的实现方式。如图17所示,两个计算设备900C和900D之间通过网络进行连接。具体地,通过各个计算设备中的通信接口与所述网络进行连接。在这一类可能的实现方式中,计算设备900C中的存储器906中存有执行通信单元802和复用单元808的指令。同时,计算设备900D中的存储器906中存有执行存储单元804和光线追踪单元810的指令。
图17所示的计算设备集群之间的连接方式可以是考虑到本申请提供的渲染方法600或渲染方法700需要进行光线追踪的大量计算和存储大量历史帧中的面片的历史渲染结果,因此考虑将光线追踪单元810和存储单元804实现的功能交由计算设备900D执行。
应理解,图17中示出的计算设备900C的功能也可以由多个计算设备900完成。同样,计算设备900D的功能也可以由多个计算设备900完成。
本申请实施例还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示计算设备执行上述应用于渲染引擎800的渲染方法600或700。
本申请实施例还提供了一种包含指令的计算机程序产品。所述计算机程序产品可以是包含指令的,能够运行在计算设备上或被储存在任何可用介质中的软件或程序产品。当所述计算机程序产品在至少一个计算机设备上运行时,使得至少一个计算机设备执行上述渲染方法600或700。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。
Claims (16)
1.一种渲染方法,其特征在于,所述渲染方法用于渲染应用,所述应用包括至少一个模型,每个模型包括多个面片,所述方法包括:
渲染所述应用的当前帧的过程中,确定当前视平面中像素对应的目标面片;
获取所述应用的历史帧的渲染过程中获得的所述目标面片的历史渲染结果;
根据所述目标面片的历史渲染结果,计算所述像素的当前渲染结果。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标面片的历史渲染结果,计算所述像素的当前渲染结果前,所述方法还包括:
对所述目标面片进行光线追踪渲染,获得所述目标面片的中间渲染结果;
所述根据所述目标面片的历史渲染结果,计算所述像素的当前渲染结果,包括:
根据所述目标面片的历史渲染结果和所述目标面片的中间渲染结果,计算所述目标面片的当前渲染结果;
根据所述目标面片的当前渲染结果,计算所述像素的当前渲染结果。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述目标面片的历史渲染结果对应的采样数量高于阈值;
所述根据所述目标面片的历史渲染结果,计算所述像素的当前渲染结果,包括:
将所述目标面片的历史渲染结果作为所述目标面片的当前渲染结果,所述目标面片的当前渲染结果用于计算所述像素的当前渲染结果。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述目标面片的历史渲染结果对应的采样数量不高于阈值;
所述根据所述目标面片的历史渲染结果,计算所述像素的当前渲染结果,包括:
对所述目标面片进行光线追踪渲染,获得所述目标面片的中间渲染结果;
根据所述目标面片的中间渲染结果和所述目标面片的历史渲染结果,计算所述目标面片的当前渲染结果;
根据所述目标面片的当前渲染结果,计算所述像素的渲染结果。
5.根据权利要求2至4任一所述的方法,其特征在于,所述方法还包括:
存储所述目标面片的当前渲染结果。
6.根据权利要求2至5任一所述的方法,其特征在于,所述当前视平面在第一应用中生成,所述目标面片的历史渲染结果在第二应用中生成。
7.根据权利要求2至5任一所述的方法,其特征在于,所述目标面片的历史渲染结果和所述当前视平面在一个应用中生成。
8.根据权利要求1至7任一所述的方法,其特征在于,所述目标面片的历史渲染结果基于光线追踪渲染获得。
9.一种渲染引擎,其特征在于,所述渲染引擎包括处理单元和存储单元:
所述处理单元,用于渲染应用的当前帧的过程中,确定当前视平面中像素对应的目标面片;获取所述应用的历史帧的渲染过程中获得的所述目标面片的历史渲染结果;根据所述目标面片的历史渲染结果,计算所述像素的当前渲染结果,其中,所述应用包括至少一个模型,每个模型包括多个面片;
所述存储单元,用于存储所述应用的历史帧的渲染过程中获得的所述目标面片的历史渲染结果。
10.如权利要求9所述的渲染引擎,其特征在于,所述处理单元,用于根据所述目标面片的历史渲染结果,计算所述像素的当前渲染结果前,对所述目标面片进行光线追踪渲染,获得所述目标面片的中间渲染结果;根据所述目标面片的历史渲染结果和所述目标面片的中间渲染结果,确定所述目标面片的当前渲染结果;根据所述目标面片的当前渲染结果,确定所述像素的当前渲染结果。
11.如权利要求9所述的渲染引擎,其特征在于,所述处理单元,用于确定所述目标面片的历史渲染结果对应的采样数量高于阈值;
将所述面片的历史渲染结果作为所述面片的当前渲染结果,所述面片的当前渲染结果用于确定所述像素的当前渲染结果。
12.如权利要求9所述的渲染引擎,其特征在于,所述处理单元,用于确定所述目标面片的历史渲染结果对应的采样数量不高于阈值;
对所述目标面片进行光线追踪渲染,获得所述目标面片的中间渲染结果;根据所述目标面片的中间渲染结果和所述目标面片的历史渲染结果,确定所述目标面片的当前渲染结果;根据所述目标面片的当前渲染结果,确定所述像素的渲染结果。
13.如权利要求10至12中任一所述的渲染引擎,其特征在于,所述存储单元,用于
存储所述目标面片的当前渲染结果。
14.一种计算机程序产品,其特征在于,所述计算机程序产品包括指令,当所述指令被计算机设备集群运行时,使得所述计算机设备集群执行如权利要求的1至8中任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备集群执行时,所述计算设备集群执行如权利要求1至8中任一项所述的方法。
16.一种计算设备集群,其特征在于,包括至少一个计算设备,每个计算设备包括处理器和存储器;
所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备集群执行如权利要求1至8中任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP21871629.8A EP4213102A4 (en) | 2020-09-25 | 2021-09-26 | RENDERING METHOD AND APPARATUS, AND DEVICE |
PCT/CN2021/120584 WO2022063260A1 (zh) | 2020-09-25 | 2021-09-26 | 一种渲染方法、装置及设备 |
US18/189,677 US20230230311A1 (en) | 2020-09-25 | 2023-03-24 | Rendering Method and Apparatus, and Device |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011023679 | 2020-09-25 | ||
CN2020110236798 | 2020-09-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114255315A true CN114255315A (zh) | 2022-03-29 |
Family
ID=80790874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110080547.7A Pending CN114255315A (zh) | 2020-09-25 | 2021-01-21 | 一种渲染方法、装置及设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230230311A1 (zh) |
EP (1) | EP4213102A4 (zh) |
CN (1) | CN114255315A (zh) |
WO (1) | WO2022063260A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023231215A1 (zh) * | 2022-06-01 | 2023-12-07 | 合众新能源汽车股份有限公司 | 一种场景渲染方法、装置、电子设备及存储介质 |
WO2024087883A1 (zh) * | 2022-10-28 | 2024-05-02 | 腾讯科技(深圳)有限公司 | 视频画面渲染方法、装置、设备和介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116958386A (zh) * | 2022-04-12 | 2023-10-27 | 华为云计算技术有限公司 | 一种数据处理的方法、系统和设备 |
GB2623816A (en) * | 2022-10-28 | 2024-05-01 | Velox Xr Ltd | Apparatus, method, and computer program for network communications |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8633927B2 (en) * | 2006-07-25 | 2014-01-21 | Nvidia Corporation | Re-render acceleration of frame with lighting change |
US20100265250A1 (en) * | 2007-12-21 | 2010-10-21 | David Koenig | Method and system for fast rendering of a three dimensional scene |
CN106127843B (zh) * | 2016-06-16 | 2019-05-17 | 福建数博讯信息科技有限公司 | 三维虚拟场景的渲染方法和装置 |
CN111340928B (zh) * | 2020-02-19 | 2022-05-03 | 杭州群核信息技术有限公司 | 一种结合光线跟踪的Web端实时混合渲染方法、装置及计算机设备 |
CN111275803B (zh) * | 2020-02-25 | 2023-06-02 | 北京百度网讯科技有限公司 | 3d模型渲染方法、装置、设备和存储介质 |
CN111627116B (zh) * | 2020-05-29 | 2024-02-27 | 联想(北京)有限公司 | 图像渲染控制方法、装置及服务器 |
-
2021
- 2021-01-21 CN CN202110080547.7A patent/CN114255315A/zh active Pending
- 2021-09-26 EP EP21871629.8A patent/EP4213102A4/en active Pending
- 2021-09-26 WO PCT/CN2021/120584 patent/WO2022063260A1/zh unknown
-
2023
- 2023-03-24 US US18/189,677 patent/US20230230311A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023231215A1 (zh) * | 2022-06-01 | 2023-12-07 | 合众新能源汽车股份有限公司 | 一种场景渲染方法、装置、电子设备及存储介质 |
WO2024087883A1 (zh) * | 2022-10-28 | 2024-05-02 | 腾讯科技(深圳)有限公司 | 视频画面渲染方法、装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
EP4213102A4 (en) | 2024-04-03 |
EP4213102A1 (en) | 2023-07-19 |
US20230230311A1 (en) | 2023-07-20 |
WO2022063260A1 (zh) | 2022-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2017206325A1 (zh) | 全局光照的计算方法及装置 | |
WO2022063260A1 (zh) | 一种渲染方法、装置及设备 | |
US11699263B2 (en) | Apparatus, method and computer program for rendering a visual scene | |
US20200357128A1 (en) | Image reconstruction for virtual 3d | |
US10924727B2 (en) | High-performance light field display simulator | |
US11232628B1 (en) | Method for processing image data to provide for soft shadow effects using shadow depth information | |
CN112184873B (zh) | 分形图形创建方法、装置、电子设备和存储介质 | |
CN112288873A (zh) | 渲染方法和装置、计算机可读存储介质、电子设备 | |
CN114863014B (zh) | 一种三维模型的融合显示方法及设备 | |
KR20170091710A (ko) | 디지털 비디오 렌더링 | |
WO2022156451A1 (zh) | 一种渲染方法及装置 | |
CN116664752B (zh) | 基于图案化光照实现全景显示的方法、系统及存储介质 | |
CN116758208A (zh) | 全局光照渲染方法、装置、存储介质及电子设备 | |
US20230206567A1 (en) | Geometry-aware augmented reality effects with real-time depth map | |
KR20230022153A (ko) | 소프트 레이어링 및 깊이 인식 복원을 사용한 단일 이미지 3d 사진 | |
CN115690284A (zh) | 一种渲染方法、装置及存储介质 | |
US11830140B2 (en) | Methods and systems for 3D modeling of an object by merging voxelized representations of the object | |
WO2023029424A1 (zh) | 一种对应用进行渲染的方法及相关装置 | |
CN116958386A (zh) | 一种数据处理的方法、系统和设备 | |
WO2023109582A1 (zh) | 处理光线数据的方法、装置、设备和存储介质 | |
US20230090732A1 (en) | System and method for real-time ray tracing in a 3d environment | |
JP2007299080A (ja) | 画像生成方法及び画像生成装置 | |
Laukkanen | Sample reprojection for real-time light field path tracing | |
CN116958364A (zh) | 一种数据处理方法及相关装置 | |
CN117459694A (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 |