CN113052951B - 物体的渲染处理方法、装置、计算机设备和存储介质 - Google Patents

物体的渲染处理方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN113052951B
CN113052951B CN202110607487.XA CN202110607487A CN113052951B CN 113052951 B CN113052951 B CN 113052951B CN 202110607487 A CN202110607487 A CN 202110607487A CN 113052951 B CN113052951 B CN 113052951B
Authority
CN
China
Prior art keywords
depth
surface layer
rendering
semitransparent
depth data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110607487.XA
Other languages
English (en)
Other versions
CN113052951A (zh
Inventor
庄景天
马晓霏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202110607487.XA priority Critical patent/CN113052951B/zh
Publication of CN113052951A publication Critical patent/CN113052951A/zh
Application granted granted Critical
Publication of CN113052951B publication Critical patent/CN113052951B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Abstract

本申请涉及一种物体的渲染处理方法、装置、计算机设备和存储介质。所述方法包括:针对待渲染的半透明物体,获取所述半透明物体的深度数据;当所述半透明物体在当前视角下具有多层的层次结构时,则根据所述半透明物体的深度数据,识别所述半透明物体在当前视角下的非表面层,并根据所述非表面层对应的颜色数据,渲染所述半透明物体的非表面层,得到初步渲染的结果;根据所述半透明物体在当前视角下的表面层对应的颜色数据,基于所述初步渲染的结果渲染所述半透明物体的表面层,得到所述半透明物体在所述当前视角下的渲染结果。采用本方法能够保证在资源消耗较少的情况下有效提高半透明物体的渲染效果。

Description

物体的渲染处理方法、装置、计算机设备和存储介质
技术领域
本申请涉及图像处理技术领域,特别是涉及一种物体的渲染处理方法、装置、计算机设备和存储介质。
背景技术
随着计算机图像技术的迅速发展,图像渲染技术也日渐成熟,使得图像渲染得到的画面呈现效果越来越生动形象,且越来越逼近现实画面。在图像渲染过程中,对于虚拟场景中的一些不透明物体与半透明物体可以在空间上交织在一起,以展现出透明物体材质和物体的层次关系。
在相关技术中,对于虚拟场景中的半透明物体,通常是将半透明物体到摄像机的距离进行排序,按照距离由远到近依次渲染。然而,这种按距离排序依次渲染的方式,在视角变化较快或物体移动较快的情况下,容易出现渲染顺序错误从而导致产生视觉瑕疵,存在渲染效果较差的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够有效提高半透明物体的渲染效果的物体的渲染处理方法、装置、计算机设备和存储介质。
一种物体的渲染处理方法,所述方法包括:
针对待渲染的半透明物体,获取所述半透明物体的深度数据;
当所述半透明物体在当前视角下具有多层的层次结构时,则
根据所述半透明物体的深度数据,识别所述半透明物体在当前视角下的非表面层,并根据所述非表面层对应的颜色数据,渲染所述半透明物体的非表面层,得到初步渲染的结果;
根据所述半透明物体在当前视角下的表面层对应的颜色数据,基于所述初步渲染的结果渲染所述半透明物体的表面层,得到所述半透明物体在所述当前视角下的渲染结果。
一种物体的渲染处理装置,所述装置包括:
数据获取模块,用于针对待渲染的半透明物体,获取所述半透明物体的深度数据;
非表面层渲染模块,用于当所述半透明物体在当前视角下具有多层的层次结构时,则根据所述半透明物体的深度数据,识别所述半透明物体在当前视角下的非表面层,并根据所述非表面层对应的颜色数据,渲染所述半透明物体的非表面层,得到初步渲染的结果;
表面层渲染模块,用于根据所述半透明物体在当前视角下的表面层对应的颜色数据,基于所述初步渲染的结果渲染所述半透明物体的表面层,得到所述半透明物体在所述当前视角下的渲染结果。
在一个实施例中,所述数据获取模块还用于将所述半透明物体的深度数据中满足深度写入条件的深度数据,写入与待渲染的图像帧对应的深度缓冲区;所述非表面层渲染模块还用于根据所述深度缓冲区中的深度数据,识别所述半透明物体在当前视角下的非表面层。
在一个实施例中,所述数据获取模块还用于针对待渲染的不透明物体,将所述不透明物体的深度数据,写入与待渲染的图像帧对应的深度缓冲区;将所述半透明物体各层次结构对应的深度数据,分别与所述深度缓冲区中不透明物体的深度数据进行比较,确定未被所述不透明物体遮挡的半透明物体;将未被遮挡的所述半透明物体对应的目标深度数据,写入至所述深度缓冲区,以将所述深度缓冲区中的深度数据更新为所述目标深度数据;所述目标深度数据,是未被遮挡的所述半透明物体对应的深度数据中的、且与当前视点距离最近的深度数据。
在一个实施例中,所述非表面层渲染模块还用于将所述半透明物体的各层次结构对应的深度数据,与待渲染的图像帧对应的深度缓冲区中的深度数据进行深度比较;所述深度缓冲区中的深度数据,是未被遮挡的、且与当前视点距离最近的半透明物体对应的深度数据;将深度数据满足第一深度条件的半透明物体的层次结构,确定为所述半透明物体在当前视角下的非表面层;所述第一深度条件为半透明物体的深度数据大于深度缓冲区中的深度数据。
在一个实施例中,所述非表面层渲染模块还用于将所述半透明物体的深度数据与不透明物体的深度数据进行比较,确定未被不透明物体遮挡的半透明物体对应的深度数据;将所述未被不透明物体遮挡的半透明物体的各层次结构对应的深度数据,与待渲染的图像帧对应的深度缓冲区中的深度数据进行深度比较。
在一个实施例中,所述非表面层渲染模块还用于根据所述半透明物体的各层次结构对应的深度数据,确定所述半透明物体在当前视角下的非表面层与当前视点之间的距离;根据所述距离,确定所述半透明物体的非表面层对应的渲染顺序;根据所述非表面层对应的颜色数据,按照所述渲染顺序,渲染所述半透明物体的非表面层,得到初步渲染的结果。
在一个实施例中,所述非表面层渲染模块还用于当所述待渲染的图像帧中包括不透明物体时,将所述不透明物体的颜色数据,写入与所述图像帧对应的颜色缓冲区,以渲染所述不透明物体;按照所述渲染顺序依次将所述非表面层对应的颜色数据,写入所述颜色缓冲区,并与所述颜色缓冲区中的颜色数据依次进行叠加,以渲染所述半透明物体的非表面层,得到初步渲染的结果。
在一个实施例中,所述表面层渲染模块还用于基于所述半透明物体的深度数据,对所述半透明物体的深度进行深度测试,根据第二深度条件确定所述半透明物体在当前视角下的表面层。
在一个实施例中,所述表面层渲染模块还用于将所述半透明物体的各层次结构对应的深度数据,与待渲染的图像帧对应的深度缓冲区中的深度数据进行深度比较;所述深度缓冲区中的深度数据,是未被遮挡的、且与当前视点距离最近的半透明物体对应的深度数据;将深度数据满足第二深度条件的半透明物体的层次结构,确定为所述半透明物体在当前视角下的表面层;所述第二深度条件为半透明物体的深度数据小于等于深度缓冲区中的深度数据。
在一个实施例中,所述表面层渲染模块还用于将所述表面层对应的颜色数据写入所述颜色缓冲区,并与所述颜色缓冲区中的颜色数据进行叠加,以渲染所述半透明物体的表面层,得到所述半透明物体在所述当前视角下的渲染结果。
在一个实施例中,所述数据获取模块还用于通过所述第一渲染通道,获取所述半透明物体的深度数据,将满足深度写入条件的半透明物体的深度数据,写入与待渲染的图像帧对应的深度缓冲区;所述非表面层渲染模块还用于通过所述第二渲染通道,根据所述半透明物体的深度数据和所述深度缓冲区的深度数据,识别所述半透明物体在当前视角下的非表面层,并根据所述非表面层对应的颜色数据,渲染所述半透明物体的非表面层,得到初步渲染的结果;所述表面层渲染模块还用于通过所述第三渲染通道,根据所述半透明物体的深度数据和所述深度缓冲区的深度数据,识别所述半透明物体在当前视角下的表面层,并根据所述表面层对应的颜色数据渲染所述半透明物体的表面层。
在一个实施例中,所述装置还包括不透明物体渲染模块,用于通过与所述不透明物体对应的渲染通道,基于所述不透明物体的深度数据和颜色数据,渲染所述不透明物体,得到不透明物体的渲染结果。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现本申请各实施例的物体的渲染处理方法中的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本申请各实施例的物体的渲染处理方法中的步骤。
一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中;所述计算机设备的处理器从所述计算机可读存储介质读取所述计算机指令,所述处理器执行所述计算机指令时实现本申请各实施例的物体的渲染处理方法中的步骤。
上述物体的渲染处理方法、装置、计算机设备和存储介质,针对待渲染的半透明物体,获取半透明物体的深度数据;当半透明物体在当前视角下具有多层的层次结构时,则基于半透明物体的深度数据,识别半透明物体在当前视角下的非表面层,由此能够精准根据深度数据地识别出半透明物体的非表面层。根据非表面层对应的颜色数据,渲染半透明物体的非表面层,得到初步渲染的结果。然后进一步根据半透明物体在当前视角下的表面层对应的颜色数据,基于初步渲染的结果渲染半透明物体的表面层,得到半透明物体在当前视角下的渲染结果。由于半透明物体的表面层对渲染效果的视觉影响最大,通过先渲染半透明物体的非表面层,再渲染半透明物体的表面层,由此能够最大程度上保证半透明物体的表面层的渲染准确性,以更加精准地对具有多层的层次结构的半透明物体进行渲染,从而能够有效提高半透明物体的渲染结果的准确性,并且不会导致产生较多的资源消耗,进而能够保证在资源消耗较少的情况下有效提高半透明物体的渲染效果。
附图说明
图1为一个实施例中物体的渲染处理方法的应用环境图;
图2为一个实施例中物体的渲染处理方法的流程示意图;
图3为另一个实施例中物体的渲染处理方法的流程示意图;
图4为一个实施例中未被遮挡的半透明物体的深度数据对应的深度示意图;
图5为一个实施例中半透明物体与不透明物体重叠时渲染错误的效果图;
图6为一个实施例中半透明物体与不透明物体重叠时渲染正确的效果图;
图7为另一个实施例中物体的渲染处理方法的流程示意图;
图8为一个具体的实施例中物体的渲染处理方法的流程示意图;
图9为一个实施例中对待渲染的图像帧进行渲染的流程示意图;
图10为一个实施例中图像帧对应的最终的渲染结果的效果示意图;
图11为另一个实施例中图像帧对应的最终的渲染结果的效果示意图;
图12为又一个实施例中图像帧对应的最终的渲染结果的效果示意图;
图13为再一个实施例中图像帧对应的最终的渲染结果的效果示意图;
图14为一个实施例中物体的渲染处理装置的结构框图;
图15为另一个实施例中物体的渲染处理装置的结构框图;
图16为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的物体的渲染处理方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。终端102对待渲染的图像帧进行渲染时,可以从服务器104中获取与图像帧对应的场景数据。针对待渲染的半透明物体,终端102则基于与图像帧对应的场景数据,获取半透明物体的深度数据;当半透明物体在当前视角下具有多层的层次结构时,则根据半透明物体的深度数据,识别半透明物体在当前视角下的非表面层,并根据非表面层对应的颜色数据,渲染半透明物体的非表面层,得到初步渲染的结果;根据半透明物体在当前视角下的表面层对应的颜色数据,基于初步渲染的结果渲染半透明物体的表面层,得到半透明物体在当前视角下的渲染结果。
其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、大数据、人工智能平台以及基于区块链的业务系统等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Block Chain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每个数据块中包含一批次网络信息,用于验证其有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。平台产品服务层提供典型应用的基本能力和实现框架,可以基于这些基本能力叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
本申请各实施例中的物体的渲染处理方法可以采用区块链技术来实现,比如,本申请各实施例中的深度数据和颜色数据等场景数据可以预先存储于区块链节点中,从区块链节点中获取深度数据和颜色数据来实现本申请各实施例中的物体的渲染处理方法。
计算机视觉技术(Computer Vision, CV)计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取信息的人工智能系统。计算机视觉技术通常包括图像处理、图像识别、图像语义理解、图像检索、OCR、视频处理、视频语义理解、视频内容/行为识别、三维物体重建、3D技术、虚拟现实、增强现实、同步定位与地图构建等技术,还包括常见的人脸识别、指纹识别等生物特征识别技术。可以理解,本申请的物体的渲染处理方法,就是基于计算机视觉技术,对待渲染的图像帧进行渲染处理,并能够有效提高场景渲染的效率。
在一个实施例中,如图2所示,提供了一种物体的渲染处理方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
步骤S202,针对待渲染的半透明物体,获取半透明物体的深度数据。
可以理解,在计算机图形中,渲染是指将三维场景中的物体模型,按照设定好的环境、材质、光照及渲染参数,二维投影成数字图像的过程。也就是将三维的虚拟场景经光能传递处理转换为二维图像的过程。
其中,虚拟场景,是指计算机通过数字通讯技术勾勒出的数字化场景,包括二维虚拟场景和三维虚拟场景,可以用虚拟化技术手段来真实模拟出现世界的各种物质形态、空间关系等信息,能够更加直观地展示虚拟场景中物体的形态。随着虚拟场景的应用越来越广泛,例如游戏开发、视频制作、影视特效等。
在三维场景中,当需要对三维的虚拟场景进行展示时,观测点的位置和视角不同,所展示出的场景画面也是不同的。其中,观测点可以是三维场景中的虚拟观测点,观测点在三维场景中所处的位置则为视点,例如可以是虚拟摄像机的位置。通过展示连续的场景画面对应的图像帧,能够动态地展示三维场景。
可以理解,三维场景中可以包括各种场景对象,场景对象可以是三维场景中各种有形态的物体,例如三维场景中的物体可以包括地形、房屋、树木、人物以及服饰等等。可以理解的是,按照物体的透明度属性,可以将三维虚拟场景中的物体分为不透明物体和半透明物体。其中,不透明物体,可以是表示不能被有色光穿过的物体,也就是光无法通过物体找到其后面物体。半透明物体,可以是表示能够被所有色光穿过的物体,也就是具有透明度、且具有允许光通过材料而不分散的物理性质的物体。
通常,半透明物体所覆盖的区域会显示出特殊的效果。不透明物体与半透明物体所处的位置不同,最终显示的效果可能会有差异。例如半透明物体被不透明物体遮挡,与半透明物体未被不透明物体遮挡,所显示的效果是有差异的。
在展示三维场景的过程中,待渲染的图像帧,是表示当前需要渲染处理的图像帧。待渲染的半透明物体,则表示待渲染的图像帧对应的场景画面中所包括的半透明物体。
其中,三维场景中的所有物体都是由三维数据描述的,这些物体共同构成了三维场景。三维空间数据,可以是指三维坐标系下的x轴、y轴、z轴对应的坐标数据。可以理解,深度数据,是指三维场景中的物体与观测点之间的距离信息,反映了三维场景中的物体到当前视点之间的距离,可以用于衡量物体之间的遮挡前后关系。例如,可以通过z轴对应的坐标数据,计算出三维场景中每个物体的深度数据,即可以将物体在z轴坐标下的z值作为物体的深度值。
可以理解,半透明物体的渲染,其本质上是渲染得到这个半透明物体本身的颜色,再获取到渲染缓冲区中已有的场景数据,例如颜色数据和深度数据,然后采用预设方式将二者进行混合而得。当渲染一个半透明物体的时候,渲染缓冲区已经写入了所需的场景数据。因此,半透明物体通常是在最后一步渲染。其中,场景数据,可以是指对待渲染的图像帧进行渲染所需的数据,例如包括顶点数据、深度数据、颜色数据、纹理数据、光照数据等中的至少一种,以基于场景数据渲染出相应的场景画面。
在实时渲染中,若待渲染的图像帧中包括半透明物体,终端则首先获取半透明物体对应的深度数据。然后基于半透明物体的深度数据,对半透明物体进行渲染处理。
在一个实施例中,终端获取半透明物体对应的深度数据后,还可以对半透明物体对应的深度数据进行深度测试,将通过深度测试的深度数据,写入至与待渲染的图像帧对应的深度缓冲区中。
其中,深度测试,是指通过比较深度值将被遮挡住的像素裁剪掉的技术。可以通过自定义设置深度测试的深度测试模式,深度测试模式也即深度条件,选择深度测试满足何种条件下,将对应的像素裁剪掉。
可以理解,在对待渲染的图像帧进行渲染时,每个图像帧对应一个帧缓冲区(Frame Buffer),用于存储图像帧中的像素点对应的渲染数据。帧缓冲区,是由像素组成的二维数组,每个存储单元对应屏幕上的一个像素,整个帧缓冲对应一帧图像即当前屏幕画面。帧缓冲区包括颜色缓冲区(Color Buffer)和深度缓冲区(Depth Buffer),深度缓冲区与颜色缓冲区的大小一致。
其中,深度缓冲区,是指用来存储绘制到屏幕上每一个像素点的深度信息的一块内存缓冲区,为每个像素点对应存储一个深度值。这个深度值,即是从当前视点到对应该像素点的顶点之间的距离。
其中,颜色缓冲区,是最终在屏幕上显示颜色的GPU(图形处理器,GraphicsProcessing Unit)显存区域,能够实时更新储存颜色数据,储存了每个图像帧更新后的最终的颜色数据。终端在渲染图像帧的过程中经过一系列的渲染处理,最终生成的像素点对应的颜色数据则储存在颜色缓冲区中,然后将颜色缓冲区中的颜色数据提交给显示硬件进行显示。
深度缓冲区能够确定哪个物体在前渲染,哪一个物体在后渲染,从而正确的渲染场景中的物体,具体可以通过深度测试来确定。深度测试,即比较通过比较当前绘制的像素点的深度值,与深度缓冲区中对应像素点的深度值,来决定是否绘制当前像素。如果深度测试通过,则绘制当前像素点,并用当前像素点的深度值更新深度缓冲区,反之则不予绘制。
可以理解的是,本实施例中,还可以通过比较,对半透明物体的各层次结构对应的深度数据,与深度缓冲区中的深度数据进行深度测试,从而能够准确识别出半透明物体在当前视角下的非表面层以及表面层。
在其中一个实施例中,终端可以首先获取半透明物体对应的顶点数据。当半透明物体在当前视角下具有多层的层次结构时,则根据顶点数据,确定半透明物体的各层次结构对应的深度数据。
其中,顶点数据,是指三维场景中与物体的顶点相关的数据,包括物体的顶点坐标。可以理解,三维场景的每个物体都具有对应的一个或多个顶点,对应的顶点坐标。三维场景中各顶点对应的坐标可以包括三维的世界空间坐标,还可以包括对应的二维的纹理坐标。
终端在渲染半透明物体的过程中,首先获取当前视角下的待渲染的半透明物体的顶点坐标,然后将获得的顶点坐标输入至顶点着色器中,通过顶点着色器对顶点坐标进行变换处理,以实现顶点在各个坐标空间的变换,从而可以确定出各半透明物体在世界坐标系下的世界坐标、相机坐标系下的相机坐标、屏幕空间坐标以及对应的纹理坐标等。
其中,世界坐标系,是三维场景中定义的空间三维坐标系,用来描述三维场景中的物体和相机视点之间的坐标位置。相机坐标系,是以相机的光心作为原点,Z轴与光轴重合并垂直于成像平面,相机坐标系的X、Y轴与图像坐标系的x,y轴平行。屏幕空间坐标系,即图像坐标系,就是二维的屏幕的坐标,以屏幕的左上方为原点,以像素为单位。若相机坐标系和世界坐标系的坐标原点重合,因此相机坐标和世界坐标下的同一个物体具有相同的深度值。
终端则可以根据半透明物体在世界坐标系下的世界坐标,计算出当前视点下半透明物体的深度数据。例如,半透明物体的世界坐标,包括x、y、z坐标。终端可以根据z坐标下的坐标信息,确定当前视点下半透明物体的深度数据。
终端还可以通过纹理坐标,从与半透明物体对应的纹理贴图中,获取半透明物体的各顶点对应的颜色数据。
终端进而可以通过顶点着色器输出半透明物体的各顶点对应的坐标数据、深度数据以及颜色数据。当半透明物体在当前视角下具有多层的层次结构时,则根据顶点数据中半透明物体各顶点的顶点坐标,计算出半透明物体的各层次结构对应的深度数据。
步骤S204,当半透明物体在当前视角下具有多层的层次结构时,则根据半透明物体的深度数据,识别半透明物体在当前视角下的非表面层,并根据非表面层对应的颜色数据,渲染半透明物体的非表面层,得到初步渲染的结果。
其中,当前视角,是指三维场景中的当前视点对应的视角,具体可以是三维场景中虚拟摄像机当前的视角。摄像机的视角,也即镜头视角,是指镜头中心点到成像平面对角线两端所形成的夹角,用于指示可以实现的视角范围。对于相同的成像面积,镜头焦距越短,其视角就越大,视角范围则更广,能采集到的场景画面的物体则更多。可以理解,当前视角随当前视点的变化而变化,不同视角下,所展示出的场景画面则不同的。
可以理解,物体通常具有相应的结构。结构,是指物体的各个组成部分之间的有序排列和搭配。层次结构,可以是指物体的各个组成部分在结构分布上具有层级次序的结构。例如,物体可能包括多个组成部分,若这些组成部分在结构分不下具有层级次序,则表示该物体具有多层的层次结构。
其中,物体对应的多层的层次结构,可以是物体的各个组成部分自身具有的层次次序形成的层次结构;也可以是物体的各个组成部分在特定状态下产生重叠而形成多层的层次结构,例如单层的层次结构产生重叠后,则会形成多层的层次结构。其中,多层,是指至少两层。每一层的层次结构可以是半透明物体的其中一部分。例如,对于本身只有单层的层次结构的物体,在运动状态下或者视角变化下,可能也会产生重叠的效果,进而形成多层的层次结构,如服饰、纱窗、杯子等等。
具体地,对于半透明物体而言,半透明物体在不同的视角下,呈现出的层次结构可能也不同。可以理解,半透明物体在当前视角下的层次结构,是指在当前视角下半透明物体所呈现出的层次结构。
可以理解的是,当半透明物体在当前视角下具有多层的层次结构时,多层的层次结构中包括表面层和非表面层。其中,区别于半透明物体自身的表面,半透明物体的表面层,是指半透明物体在当前视角下,与当前视点之间的距离最近的层次结构。半透明物体的非表面层,是指在当前视角下,在半透明物体的表面层之后的层次结构。
可以理解,终端可以在识别半透明物体在当前视角下的非表面层的同时,识别半透明物体在当前视角下的表面层。也可以在识别半透明物体在当前视角下的非表面层,并渲染半透明物体的非表面层后,再识别半透明物体在当前视角下的表面层,本申请在此不作限定。
终端则获取半透明物体的深度数据后,则根据半透明物体的深度数据,确定半透明物体在当前视角下的非表面层。具体地,当半透明物体在当前视角下具有多层的层次结构时,半透明物体的深度数据中,则包括半透明物体的每一层的层次结构对应的深度数据。终端进而将半透明物体的各层次结构对应的深度数据进行深度测试,以根据测试结果确定半透明物体在当前视角下的非表面层。
在其中一个实施例中,终端可以将半透明物体的各层次结构对应的深度数据进行深度值比较,确定出深度最小的深度数据。深度最小的深度数据,也就是与当前视点之间的距离最近的深度数据。然后根据预设的深度条件,将半透明物体的各层次结构对应的深度数据,与分别深度最小的深度数据进行深度测试。其中,预设的深度条件可以为深度值大于深度最小的深度数据。终端则将不满足预设的深度条件的深度数据对应的层次结构裁剪掉,将满足预设的深度条件的深度数据对应的层次结构,确定为半透明物体在当前视角下的非表面层,由此能够识别出确定半透明物体在当前视角下的非表面层。
终端识别出确定半透明物体在当前视角下的非表面层后,则获取半透明物体的非表面层对应的颜色数据,然后根据非表面层对应的颜色数据,对半透明物体的非表面层进行渲染。其中,颜色数据,可以是根据半透明物体的非表面层对应的顶点坐标,计算得到的纹理坐标,从与半透明物体的纹理贴图中采样得到的。
可以理解,对半透明物体的非表面层进行渲染的过程,可以将半透明物体的非表面层作为一个整体,先初步渲染半透明物体的非表面层,得到初步渲染的结果。然后终端再将半透明物体的表面层作为一个整体,基于初步渲染的结果对半透明物体的表面层进行渲染。由此能够有效提高半透明物体的各层次结构的渲染结果的准确性。
步骤S206,根据半透明物体在当前视角下的表面层对应的颜色数据,基于初步渲染的结果渲染半透明物体的表面层,得到半透明物体在当前视角下的渲染结果。
可以理解,初步渲染的结果,是指对半透明物体的非表面层进行渲染后的渲染数据,例如初步渲染的结果中包括对半透明物体的非表面层渲染后的颜色数据。
终端对半透明物体的非表面层进行渲染后,然后再对半透明物体的表面层进行渲染。同样地,终端也可以根据半透明物体的深度数据,确定半透明物体在当前视角下的表面层。
具体地,终端可以将半透明物体的各层次结构对应的深度数据进行深度测试,以根据测试结果确定半透明物体在当前视角下的表面层。例如,终端将半透明物体的各层次结构对应的深度数据进行深度值比较,直接将各层次结构对应的深度数据中,深度值最小的层次结构,确定为半透明物体在当前视角下的表面层。
然后,终端则获取半透明物体的表面层对应的颜色数据,然后在初步渲染的结果的基础上,对半透明物体的表面层进行渲染,从而得到半透明物体在当前视角下的渲染结果。
传统的次序无关的半透明渲染方式,通常是基于深度剥离,采用N个Pass(渲染通道)分别渲染出距离摄像机第N近的片元。然后再按照从远到近依次将剥离出的N个图层,分别将每个图层的颜色数据叠加到颜色缓冲中。但这种方式中,每个Pass额外需要2个深度缓冲和1个颜色缓冲,还需要额外的渲染目标来保存深度数据对N层图层进行排序,会导致渲染半透明物体所消耗性能非常高。
上述物体的渲染处理方法中,针对待渲染的半透明物体,终端首先获取半透明物体的深度数据。当半透明物体在当前视角下具有多层的层次结构时,则基于半透明物体的深度数据,识别半透明物体在当前视角下的非表面层,由此能够精准根据深度数据地识别出半透明物体的非表面层。终端则根据非表面层对应的颜色数据,初步渲染半透明物体的非表面层,然后终端进一步根据半透明物体在当前视角下的表面层对应的颜色数据,基于初步渲染的结果渲染半透明物体的表面层,得到半透明物体在当前视角下的渲染结果。由于半透明物体的表面层对渲染效果的视觉影响最大,通过先渲染半透明物体的非表面层,再渲染半透明物体的表面层,由此能够最大程度上保证半透明物体的表面层的渲染准确性,以更加精准地对具有多层的层次结构的半透明物体进行渲染,从而能够有效提高半透明物体的渲染结果的准确性,并且不需要额外增加深度缓冲区等消耗,不会导致产生较多的资源消耗,进而能够保证在资源消耗较少的情况下有效提高半透明物体的渲染效果。
在一个实施例中,上述物体的渲染处理方法还包括:将半透明物体的深度数据中满足深度写入条件的深度数据,写入与待渲染的图像帧对应的深度缓冲区。根据半透明物体的深度数据,识别半透明物体在当前视角下的非表面层,包括:根据深度缓冲区中的深度数据,识别半透明物体在当前视角下的非表面层。
可以理解,三维的虚拟场景需要经过一系列的渲染,使其内容以二维的形式表现到屏幕中。三维的虚拟场景可以通过连续的图像帧展示对应的场景画面。其中,图像帧由多个像素点构成,像素点是待渲染的图像帧中的最小单位。待渲染的半透明物体,最终可以通过一个或多个像素点来呈现。
当前待渲染的图像帧包括目标像素点。目标像素点,是指待渲染的图像帧所对应的像素点,即当前需要被渲染的像素点。对三维的虚拟场景进行渲染,也就是需要计算出待渲染的图像帧的目标像素点对应的深度数据、颜色数据、亮度数据等渲染数据。其中,目标像素点的颜色值、亮度值、深度值等像素信息,可以通过虚拟场景中的场景数据确定。
待渲染的图像帧分别对应一个深度缓冲区和一个颜色缓冲区。其中,深度缓冲区,用于存储目标像素点所对应的物体的深度数据。颜色缓冲区,用于存储目标像素点所对应的物体的颜色数据。目标像素点的位置和颜色数据,决定了该图像帧所呈现出来的样子。
终端获取半透明物体的深度数据后,则将半透明物体的深度数据中满足深度写入条件的深度数据,写入与待渲染的图像帧对应的深度缓冲区,然后对半透明物体的各层次结构对应的深度数据进行深度测试,以确定半透明物体在当前视角下的非表面层。
具体地,若深度缓冲区中已有深度数据,则将半透明物体的各层次结构对应的深度数据,与深度缓冲区中的深度数据进行深度值比较。然后根据预设的深度条件,例如预设的深度条件可以为小于等于深度缓冲区中的深度数据,从而将满足深度写入条件的半透明物体的深度数据,更新写入深度缓冲区中。
若深度缓冲区中没有深度数据,则将半透明物体的各层次结构对应的深度数据,分别进行深度值比较,确定出最小的深度数据。最小的深度数据,也就是与当前视点之间的距离最近的深度数据。然后将最小的深度数据,写入至深度缓冲区中。可以理解,最小的深度数据,也就是相同x、y坐标值下,z坐标值最小的物体的深度数据。由此通过对半透明物体的各层次结构对应的深度数据进行比较,能够准确地识别出半透明物体在当前视角下的非表面层。
在一个实施例中,如图3所示,提供了另一种物体的渲染处理方法,具体包括以下步骤:
步骤S302,针对待渲染的不透明物体,将不透明物体的深度数据,写入与待渲染的图像帧对应的深度缓冲区。
步骤S304,针对待渲染的半透明物体,获取半透明物体的深度数据。
步骤S306,当半透明物体在当前视角下具有多层的层次结构时,将半透明物体各层次结构对应的深度数据,分别与深度缓冲区中不透明物体的深度数据进行比较,确定未被不透明物体遮挡的半透明物体。
步骤S308,将未被不透明物体遮挡的半透明物体对应的目标深度数据,写入至深度缓冲区,以将深度缓冲区中的深度数据更新为目标深度数据。
步骤S310,根据半透明物体的深度数据和深度缓冲区中的深度数据,识别半透明物体在当前视角下的非表面层,并根据非表面层对应的颜色数据,渲染半透明物体的非表面层,得到初步渲染的结果。
步骤S312,根据半透明物体在当前视角下的表面层对应的颜色数据,基于初步渲染的结果渲染半透明物体的表面层,得到半透明物体在当前视角下的渲染结果。
可以理解,若待渲染的图像帧中还包括不透明物体,则需要先对不透明物体进行渲染处理。
具体地,针对待渲染的不透明物体,终端首先获取不透明物体的顶点坐标,然后根据不透明物体的顶点坐标确定不透明物体的深度数据,并将不透明物体的深度数据写入至与待渲染的图像帧对应的深度缓冲区中。其中,写入深度缓冲区的深度数据,为不透明物体的深度数据中满足深度写入条件的深度数据,也就是深度值最小的深度数据,即与当前视点之间的距离最近的不透明物体的深度数据。
在渲染不透明物体之后,终端则获取半透明物体的深度数据,其中包括半透明物体的各层次结构对应的深度数。终端进而将半透明物体各层次结构对应的深度数据,分别与深度缓冲区中不透明物体的深度数据进行比较,当半透明物体的深度数据,小于等于深度缓冲区中的深度数据时,则判定为满足遮挡判断条件,进而将满足遮挡判断条件的半透明物体,确定为未被不透明物体遮挡的半透明物体。可以理解,此时深度缓冲区存储的是与当前视点之间的距离最近的不透明物体的深度数据,因此,当不透明物体的深度数据,小于等于深度缓冲区中的深度数据时,则表示该半透明物体与当前视点之间的距离更近,也就是该半透明物体未被不透明物体遮挡。
然后终端将半透明物体对应的深度数据中,未被遮挡的、且与当前视点距离最近的半透明物体对应的深度数据,确定为半透明物体对应的目标深度数据。进而将未被遮挡的半透明物体对应的目标深度数据,写入至深度缓冲区中,以将深度缓冲区中的深度数据更新为目标深度数据。
由于深度缓冲区中每个像素点只会存储对应的一个深度值,因此将属于未被遮挡的半透明物体的像素点对应的目标深度数据,写入至深度缓冲区时,会将深度缓冲区中对应的深度数据替换为目标深度数据。
进一步地,深度缓冲区中的目标深度数据,则可以用于识别半透明物体在当前视角下的非表面层以及表面层。
以半透明物体为半透明服饰为例,如图4所示,为一个实施例中未被遮挡的半透明物体的目标深度数据对应的深度示意图。将未被遮挡的半透明物体对应的目标深度数据,写入至深度缓冲区后,深度缓冲区中的深度数据对应的示意图。从图4中的深度图可以看出,在深度缓冲区中仅会存储与当前视点之间的距离最近的半透明服饰的表面层。
本实施例中,通过对半透明物体的各层次结构对应的深度数据进行深度测试,能够准确地识别出在当前视角下的与当前视点之间的距离最近的半透明物体,并写入至深度缓冲区中,以进一步准确地渲染半透明物体的非表面层和表面层。
在一个实施例中,根据半透明物体的深度数据,识别半透明物体在当前视角下的非表面层,包括:将半透明物体的各层次结构对应的深度数据,与待渲染的图像帧对应的深度缓冲区中的深度数据进行深度比较;深度缓冲区中的深度数据,是未被遮挡的、且与当前视点距离最近的半透明物体对应的深度数据;将深度数据满足第一深度条件的半透明物体的层次结构,确定为半透明物体在当前视角下的非表面层;第一深度条件为半透明物体的深度数据大于深度缓冲区中的深度数据。
其中,第一深度条件,是指将半透明物体的各层次结构中,判定为半透明物体在当前视角下的非表面层的条件。
可以理解,未被遮挡的半透明物体,是指在当前视角下未被三维场景中的不透明物体所遮挡的半透明物体。
当半透明物体在当前视角下具有多层的层次结构时,终端获取半透明物体的各层次结构对应的深度数据,通过对半透明物体的各层次结构对应的深度数据进行深度测试,从而能够确定出与当前视点距离最近的、且未被遮挡的半透明物体对应的深度数据,并将该深度数据写入至与待渲染的图像帧对应的深度缓冲区中。
然后终端则基于深度缓冲区中的深度数据,对半透明物体的各层次结构对应的深度数据进行深度测试,根据第一深度条件确定半透明物体在当前视角下的非表面层。
具体地,第一深度条件,为半透明物体的深度数据大于深度缓冲区中的深度数据。终端将半透明物体的各层次结构对应的深度数据,分别与深度缓冲区中的深度数据进行比较。由于深度缓冲区中的深度数据,是与当前视点距离最近的、且未被遮挡的半透明物体对应的深度数据,因此半透明物体的其中一部分的层次结构对应的深度数据,大于深度缓冲区中的深度数据时,则可以识别出这部分的层次结构,是半透明物体在当前视角下的非表面层。
例如,以半透明物体在当前视角下具有N层的层次结构为例,每一层的层次结构都具有对应的深度数据,深度数据也即深度值。通过对各层次结构对应的深度值进行比较,可以确定出与当前视点距离最近的、且未被遮挡的半透明物体对应的深度数据,也就是深度值最小的表面层的层次结构,例如可以将表面层作为第1层。然后则可以通过深度测试,确定深度值均大于第1层的层次结构,这些层次结构则为在当前视角下,在第1层之后的层次结构,即第2-N层,也就是半透明物体在当前视角下的非表面层。由此通过对半透明物体的各层次结构对应的深度数据进行深度测试,能够准确地识别出半透明物体在当前视角下的非表面层和表面层。
在一个实施例中,将半透明物体的各层次结构对应的深度数据,与待渲染的图像帧对应的深度缓冲区中的深度数据进行深度比较,包括:将半透明物体的深度数据与不透明物体的深度数据进行比较,确定未被不透明物体遮挡的半透明物体对应的深度数据;将未被不透明物体遮挡的半透明物体的各层次结构对应的深度数据,与待渲染的图像帧对应的深度缓冲区中的深度数据进行深度比较。
可以理解,当待渲染的图像帧对应的场景中还包括不透明物体时,还需要判断半透明物体是否被不透明物体所遮挡。
终端在对半透明物体的各层次结构对应的深度数据进行深度测试时,是将半透明物体的各层次结构对应的深度数据,分别与深度缓冲区中的深度数据进行比较。而此时深度缓冲区中的深度数据,是与当前视点距离最近的、且未被遮挡的半透明物体对应的深度数据。因此当待渲染的图像帧对应的场景中还包括不透明物体时,还需要判断半透明物体是否被不透明物体所遮挡。
具体地,终端可以首先将半透明物体的深度数据与不透明物体的深度数据进行比较,以确定未被不透明物体遮挡的半透明物体对应的深度数据。其中,不透明物体的深度数据,具体为与当前视点距离最近的不透明物体的深度数据。通过将半透明物体的深度数据,分别与不透明物体的深度数据进行比较,当半透明物体的深度值,小于等于与当前视点距离最近的不透明物体的深度值时,则表示半透明物体未被不透明物体遮挡。反之,当半透明物体的深度值,大于与当前视点距离最近的不透明物体的深度值时,则表示半透明物体被不透明物体所遮挡。由此能够确定出确定未被不透明物体遮挡的半透明物体对应的深度数据。
然后,终端进而对半透明物体的各层次结构对应的深度数据进行深度测试,将未被不透明物体遮挡的半透明物体的各层次结构对应的深度数据,与待渲染的图像帧对应的深度缓冲区中的深度数据进行深度比较。将深度数据大于深度缓冲区中的深度数据的半透明物体的层次结构,确定为半透明物体在当前视角下的非表面层。
在其中一个实施例中,若场景中包括不透明物体时,自动需要首先对不透明物体进行渲染处理。在对不透明物体进行渲染的过程中,会将与当前视点距离最近的不透明物体的深度数据,写入深度缓冲区中。然后再对半透明物体进行渲染处理。
由于在对不透明物体进行渲染的过程中,会将不透明物体与当前视点距离最近的不透明物体的深度数据,写入深度缓冲区中,深度缓冲区中的深度数据则会被更新。因此,终端在渲染不透明物体后,还可以将不透明物体的深度数据从深度缓冲区中拷贝出来。具体地,终端可以将深度缓冲区中不透明物体的深度数据拷贝至与待渲染的图像帧对应的渲染目标中。
可以理解,渲染目标(RT,Render Target),是用于存储绘制后的场景数据的中间存储缓冲区或渲染目标纹理,用来记录渲染后的输出结果。然后可以通过像素着色器操从渲染目标中读取所需的场景数据,以便在显示最终的图像帧之前,将其他效果应用于最终的图像帧。
终端在对半透明物体的各层次结构对应的深度数据进行深度测试之前,或对半透明物体的各层次结构对应的深度数据进行深度测试之后,则可以通过将半透明物体的各层次结构对应的深度数据,与渲染目标中不透明物体对应的深度数据进行比较,来判断半透明物体是否被不透明物体遮挡。若待渲染的图像帧中的半透明物体对应的深度数据,小于等于渲染目标中对应像素的不透明物体的深度数据时,则表示这部分像素的半透明物体被不透明物体遮挡。终端进而将这部分被不透明物体遮挡的半透明物体裁剪掉,由此保证被不透明物体遮挡的半透明物体不会被画出。
例如,在识别半透明物体在当前视角下的非表面层的过程中,若直接基于深度缓冲区中的深度数据,对半透明物体的各层次结构对应的深度数据进行深度测试,则在半透明物体与场景中的其他不透明物体重叠时,可能会出现渲染错误。例如,以半透明物体为服饰为例,如图5所示,为一个实施例中半透明物体与不透明物体重叠时渲染错误的效果示意图。参照图5,场景中的服饰52为半透明物体,场景中的房屋、窗帘、草地等为不透明物体。其中,服饰52与当前视点之间的距离,实际应大于窗帘54的与当前视点之间的距离。若基于深度缓冲区中的深度数据,对半透明物体的各层次结构对应的深度数据进行深度测试,则会出现图5所示的渲染错误,也就是将服饰52展示在了窗帘54之前。
通过将半透明物体的各层次结构对应的深度数据,与渲染目标中不透明物体对应的深度数据进行比较,则能够识别出半透明物体是否被不透明物体遮挡。如图6所示,为一个实施例中半透明物体与不透明物体重叠时渲染正确的效果示意图。其中,场景中的服饰62中的其中一部分服饰62a被窗帘64遮挡,另一部分服饰62b未被窗帘64遮挡。通过将被窗帘64遮挡的部分服饰62a裁剪掉,由此被不透明物体遮挡的半透明物体不会被画出,从而能够保证准确地渲染半透明物体。
在一个实施例中,根据非表面层对应的颜色数据,渲染半透明物体的非表面层,得到初步渲染的结果,包括:基于半透明物体的非表面层对应的顶点数据,确定半透明物体在当前视角下的非表面层与当前视点之间的距离;根据距离,确定半透明物体的非表面层对应的渲染顺序;根据非表面层对应的颜色数据,按照渲染顺序渲染半透明物体的非表面层,得到初步渲染的结果。
可以理解,半透明物体的各层次结构对应的深度数据,可以是三维坐标下z轴的坐标值。终端则可以根据深度数据,分别计算出当前视角下的半透明物体的各层次结构与当前视点之间的距离。
终端识别出半透明物体在当前视角下的非表面层后,则获取半透明物体的非表面层对应的颜色数据,然后对半透明物体的非表面层进行渲染。其中,终端可以将半透明物体的非表面层作为一个整体进行渲染处理。
具体地,若半透明物体的非表面层包括多层,终端则根据半透明物体的每一层的层次结构与当前视点之间的距离,对非表面层与当前视点之间的距离进行排序。具体为按照非表面层与当前视点之间的距离,由远至近进行排序,并将排序后的距离次序,确定为半透明物体的非表面层对应的渲染顺序。也就是将半透明物体的非表面层,按照距离当前视点由远至近依次渲染,由此能够准确地渲染半透明物体的非表面层。
终端通过对半透明物体的非表面层对应的顶点坐标进行顶点变换处理,得到顶点变换后的顶点数据,从而可以根据顶点数据确定半透明物体的非表面层对应的纹理坐标,并根据纹理坐标从与半透明物体对应的纹理贴图中,获取与图像帧中属于半透明物体的非表面层的像素点对应的颜色数据。然后根据非表面层对应的颜色数据,按照渲染顺序,初步渲染半透明物体的非表面层。由此能够准确地渲染出半透明物体的非表面层,并得到正确的渲染结果。
在一个实施例中,在获取半透明物体的深度数据之前,上述物体的渲染处理方法还包括:当待渲染的图像帧中包括不透明物体时,将不透明物体的颜色数据,写入与图像帧对应的颜色缓冲区,以渲染不透明物体。
根据非表面层对应的颜色数据,按照渲染顺序渲染半透明物体的非表面层,得到初步渲染的结果,包括:按照渲染顺序依次将非表面层对应的颜色数据,写入颜色缓冲区,并与颜色缓冲区中的颜色数据依次进行叠加,以渲染半透明物体的非表面层,得到初步渲染的结果。
可以理解,若待渲染的图像帧对应的场景中还包括不透明物体,终端则先渲染不透明物体,然后再渲染半透明物体。
具体地,终端首先获取不透明物体的顶点坐标,并对顶点坐标进行顶点变换处理,得到顶点变换后的顶点数据,从而可以根据顶点数据确定不透明物体的深度数据以及物理坐标。终端进而将满足深度写入条件的深度数据,也就是与当前视点的距离最近的深度数据,写入至与待渲染的图像帧对应的深度缓冲区中。终端则根据物理坐标从与不透明物体对应的纹理贴图中,获取与图像帧中属于不透明物体的像素点对应的颜色数据。终端并将属于不透明物体的像素点对应的颜色数据,写入与图像帧对应的颜色缓冲区中对应像素点的位置,以渲染不透明物体。此时,颜色缓冲区中的颜色数据,则是对不透明物体渲染后的颜色数据。
终端进而在渲染不透明物体后,获取半透明物体的各层次结构对应的深度数据,根据各层次结构对应的深度数据,识别出半透明物体在当前视角下的非表面层后,则获取图像帧中属于半透明物体的非表面层的像素点对应的颜色数据。然后,根据非表面层对应的颜色数据,初步渲染半透明物体的非表面层。
可以理解,由于在渲染半透明物体时,已经渲染好了不透明物体。因此,终端则按照半透明物体的非表面层对应的渲染顺序,依次将属于半透明物体的非表面层的像素点对应的颜色数据,写入颜色缓冲区中对应像素点的位置。并与颜色缓冲区中对应像素点的颜色数据依次进行叠加,从而初步渲染半透明物体的非表面层,得到初步渲染的结果。初步渲染的结果,则包括了颜色缓冲区中对非表面层渲染后的颜色数据。
本实施例中,通过将半透明物体的非表面层作为一个整体,按照与当前视点的距离由远至近的顺序,依次渲染半透明物体的非表面层,由此能够准确地渲染出半透明物体的非表面层。
在一个实施例中,在根据半透明物体在当前视角下的表面层对应的颜色数据,基于初步渲染的结果渲染半透明物体的表面层之前,上述物体的渲染处理方法还包括:基于半透明物体的深度数据,对半透明物体的深度进行深度测试,根据第二深度条件确定半透明物体在当前视角下的表面层。
可以理解,终端在识别出半透明物体在当前视角下的非表面层后,可以根据第二深度条件识别半透明物体在当前视角下的表面层。其中,第二深度条件,是指通过深度测试的条件,具体可以是深度值最小,或半透明物体的深度数据小于等于深度缓冲区中的深度数据。
终端在渲染半透明物体的表面层之前,还对半透明物体的各层次结构对应的深度数据进行深度测试,根据第二深度条件确定半透明物体在当前视角下的表面层,以根据测试结果确定半透明物体在当前视角下的表面层。
例如,终端可以直接将半透明物体的各层次结构对应的深度数据进行深度值比较,确定出其中深度值最小的深度数据。深度值最小的深度数据对应的层次结构,即为半透明物体中与当前视点之间的距离最近的层次结构,因此可以直接将这部分层次结构确定为半透明物体在当前视角下的表面层,由此能够准确地识别出半透明物体在当前视角下的表面层。
在一个实施例中,基于半透明物体的深度数据,对半透明物体的深度进行深度测试,根据第二深度条件确定半透明物体在当前视角下的表面层,包括:将半透明物体的各层次结构对应的深度数据,与待渲染的图像帧对应的深度缓冲区中的深度数据进行深度比较;将深度数据满足第二深度条件的半透明物体的层次结构,确定为半透明物体在当前视角下的表面层;第二深度条件为半透明物体的深度数据小于等于深度缓冲区中的深度数据。
其中,第二深度条件,为半透明物体的深度数据小于等于深度缓冲区中的深度数据。可以理解,深度缓冲区中的深度数据,是未被遮挡的、且与当前视点距离最近的半透明物体对应的深度数据。
终端在渲染半透明物体的表面层之前,还对半透明物体的各层次结构对应的深度数据进行深度测试,根据第二深度条件确定半透明物体在当前视角下的表面层。其中,深度缓冲区中的深度数据,是与当前视点距离最近的、且未被遮挡的半透明物体对应的深度数据。
具体地,终端将半透明物体的各层次结构对应的深度数据,分别与深度缓冲区中的深度数据进行比较,当半透明物体的深度数据,小于等于深度缓冲区中的深度数据时,则判定为通过深度测试。终端则裁剪掉未通过深度测试的深度数据对应的半透明物体的层次结构,保留通过深度测试的深度数据对应的半透明物体的层次结构,这部分层次结构即为半透明物体在当前视角下的表面层。
由于深度缓冲区中的深度数据,是与当前视点距离最近的、且未被遮挡的半透明物体对应的深度数据,因此半透明物体的其中一部分的层次结构对应的深度数据,小于等于深度缓冲区中的深度数据时,表示这部分的层次结构,是半透明物体中与当前视点之间的距离最近的层次结构,因此可以将这部分的层次结构,确定为半透明物体在当前视角下的非表面层,由此能够准确地识别出半透明物体在当前视角下的表面层。
在一个实施例中,根据半透明物体在当前视角下的表面层对应的颜色数据,基于初步渲染的结果渲染半透明物体的表面层,得到半透明物体在当前视角下的渲染结果,包括:将表面层对应的颜色数据写入颜色缓冲区,并与颜色缓冲区中的颜色数据进行叠加,以渲染半透明物体的表面层,得到半透明物体在当前视角下的渲染结果。
可以理解,对半透明物体的非表面层进行渲染后,得到的初步渲染的结果中,包括与待渲染的图像帧对应的颜色缓冲区中对非表面层渲染后的颜色数据。
终端根据半透明物体的非表面层对应的颜色数据,渲染半透明物体的非表面层后,再根据半透明物体的表面层对应的颜色数据,渲染半透明物体的表面层。具体地,终端根据半透明物体的深度数据,识别半透明物体在当前视角下的表面层后,则基于半透明物体的表面层对应的顶点数据确定的物理坐标,从与不透明物体对应的纹理贴图中,获取与图像帧中属于半透明物体的表面层的像素点对应的颜色数据。
然后终端将表面层对应的颜色数据写入颜色缓冲区,并与颜色缓冲区中的颜色数据进行叠加。也就是将表面层对应的颜色值,与渲染非表面层后得到的颜色值进行叠加,以渲染半透明物体的表面层,从而得到半透明物体在当前视角下的渲染结果。
在其中一个实施例中,若待渲染的图像帧对应的场景中包括不透明物体时,终端则首先根据不透明物体的深度数据和颜色数据,渲染不透明物体。此时图像帧对应的颜色缓冲区中的颜色数据,则为渲染不透明物体后的颜色数据。然后终端在渲染半透明物体的非表面层时,则将属于半透明物体的非表面层的像素点位置中对应的颜色数据,写入至颜色缓冲区中对应像素点的位置,并与对应像素点已有的渲染不透明物体后的颜色数据进行叠加,得到初步渲染结果。该初步渲染结果则包括颜色缓冲区中的对不透明物体以及半透明物体的非表面层渲染后的颜色数据。
然后终端将属于半透明的表面层的像素点对应的颜色数据,写入颜色缓冲区对应像素点的位置,并与对应像素点的位置中已有的对不透明物体以及半透明物体的非表面层渲染后的颜色数据进行叠加,从而得到场景中所有的不透明物体以及半透明物体在当前视角下的渲染结果,即待渲染的图像帧的最终的渲染结果。
在一个实施例中,如图7所示,提供了另一种物体的渲染处理方法,具体包括以下步骤:
步骤S702,针对待渲染的半透明物体,通过半透明物体对应的第一渲染通道,获取半透明物体的深度数据,将满足深度写入条件的深度数据,写入与待渲染的图像帧对应的深度缓冲区。
步骤S704,通过半透明物体对应的第二渲染通道,当半透明物体在当前视角下具有多层的层次结构时,根据半透明物体的深度数据和深度缓冲区的深度数据,识别半透明物体在当前视角下的非表面层,根据非表面层对应的颜色数据渲染半透明物体的非表面层,得到初步渲染的结果。
步骤S706,通过半透明物体对应的第三渲染通道,根据半透明物体的深度数据和深度缓冲区的深度数据,识别半透明物体在当前视角下的表面层,并根据表面层对应的颜色数据渲染半透明物体的表面层,得到半透明物体在当前视角下的渲染结果。
其中,渲染通道(Render Pass),也即渲染步骤,是指对待渲染的图像帧的渲染过程,往往对应一次待渲染的物体的渲染过程中的一步,也即终端中的程序对应于一次向图形处理器提交的渲染指令的集合。在图像渲染中,渲染通道可以理解为是一道道图像渲染处理工序。场景中的物体通常需要一次或多次渲染操作,每次渲染操作的结果会被累加到最终的呈现结果上。
可以理解,一个渲染通道,则可以理解为一个渲染通道就是渲染管线的单次运行。每个渲染通道可以指定要渲染的物体,这些渲染通道则构成了渲染管线。例如,一个渲染通道中可以包括几何缓冲步骤、光照着色步骤等,以实现对图像帧的渲染处理。
针对待渲染的半透明物体,终端采用与半透明物体对应的三个渲染通道,对半透明物体进行渲染处理。
具体地,终端首先通过半透明物体对应的第一渲染通道,当半透明物体在当前视角下具有多层的层次结构时,获取半透明物体的各层次结构对应的深度数据,然后对半透明物体的各层次结构对应的深度数据进行深度测试,将满足深度写入条件的半透明物体的深度数据,写入与待渲染的图像帧对应的深度缓冲区。
然后,终端通过半透明物体对应的第二渲染通道,根据深度缓冲区中的深度数据,对半透明物体的各层次结构对应的深度数据进行深度测试,将不满足第一深度条件的深度数据对应的层次结构裁剪掉,从而将满足第一深度条件的深度数据对应的层次结构,确定为半透明物体在当前视角下的非表面层。然后终端获取半透明物体的非表面层对应的颜色数据,并将非表面层对应的颜色数据,写入与待渲染的图像帧对应的颜色缓冲区,从而初步渲染半透明物体的非表面层。
终端进而通过半透明物体对应的第三渲染通道,根据深度缓冲区中的深度数据,对半透明物体的各层次结构对应的深度数据进行深度测试,将不满足第二深度条件的深度数据对应的层次结构裁剪掉,从而将满足第二深度条件的深度数据对应的层次结构,确定为半透明物体在当前视角下的表面层。
可以理解,此时的颜色缓冲区中,已有对半透明物体的非表面层渲染后的颜色数据。然后终端获取半透明物体的表面层对应的颜色数据,写入与待渲染的图像帧对应的颜色缓冲区,将表面层对应的颜色数据与颜色缓冲区中,已有对半透明物体的非表面层渲染后的颜色数据进行叠加,以渲染半透明物体的表面层,从而得到半透明物体在当前视角下的渲染结果。
在一个实施例中,在通过第一渲染通道,获取半透明物体的深度数据之前,上述物体的渲染处理方法还包括:通过与不透明物体对应的渲染通道,基于不透明物体的深度数据和颜色数据,渲染不透明物体,得到不透明物体的渲染结果。
可以理解,若待渲染的图像帧对应的场景中还包括不透明物体,则首先通过与不透明物体对应的渲染通道,对不透明物体进行渲染之后,再通过与半透明物体对应的三个渲染通道,对半透明物体进行渲染处理。因此,当待渲染的图像帧中包括不透明物体时,第二渲染通道是基于不透明物体的渲染结果,根据非表面层对应的颜色数据,初步渲染半透明物体的非表面层,得到初步渲染的结果。
具体地,终端首先通过与不透明物体对应的渲染通道,获取不透明物体对应的深度数据和颜色数据。然后对不透明物体对应的深度数据进行深度测试,将满足深度写入条件的深度数据,也就是与当前视点之间的距离最近的不透明物体的像素点对应的深度数据,写入与待渲染的图像帧对应的深度缓冲区。并获取与当前视点之间的距离最近的不透明物体的像素点对应的颜色数据,将颜色数据写入至与待渲染的图像帧对应的颜色缓冲区,以渲染不透明物体,从而得到不透明物体的渲染结果。
其中,不透明物体的渲染结果,包括与待渲染的图像帧对应的深度缓冲区中已有的深度数据,以及与待渲染的图像帧对应的颜色缓冲区中已有的渲染不透明物体后的颜色数据。
然后,终端通过与半透明物体对应的渲染通道,基于不透明物体的渲染结果,对半透明物体进行渲染处理。其中,半透明物体对应的第一渲染通道,对半透明物体的各层次结构对应的深度数据进行深度测试时,则是基于深度缓冲区中已有的与当前视点之间的距离最近的不透明物体对应的深度数据,对半透明物体的各层次结构对应的深度数据进行深度测试。将满足深度写入条件的半透明物体的深度数据,写入与待渲染的图像帧对应的深度缓冲区时,则会对深度缓冲区中的深度数据进行替换。
终端通过半透明物体对应的第二渲染通道,对半透明物体的非表面层进行渲染时,则是基于不透明物体的渲染结果,根据非表面层对应的颜色数据,对半透明物体的非表面层进行渲染。终端通过半透明物体对应的第三渲染通道,对半透明物体的表面层进行渲染时,则是基于不透明物体的渲染结果以及半透明物体的非表面层的渲染结果,根据表面层对应的颜色数据,对半透明物体非表面层进行渲染。
本实施例中,通过不透明物体对应的渲染通道,对不透明物体进行渲染后,然后通过半透明物体对应的三个渲染通道,分别渲染半透明物体的非表面层以及表面层,由此能够无需额外增加与待渲染的图像帧对应的深度缓冲区和颜色缓冲区,不会导致产生较多的资源消耗,就能够实现准确的渲染顺序,从而能够使得渲染效果接近于现实世界中的物体显示效果,进而在保证资源消耗较少的情况下能够有效提高半透明物体的渲染效果。
在一个具体的实施例中,如图8所示,提供了一种具体的物体的渲染处理方法,具体包括以下步骤:
步骤S802,针对待渲染的不透明物体,通过不透明物体对应的渲染通道,对不透明物体的深度数据进行深度测试,将满足深度写入条件的深度数据写入与待渲染的图像帧对应的深度缓冲区。
步骤S804,获取与当前视点的距离最近的不透明物体的像素点对应的颜色数据,将颜色数据,写入至与待渲染的图像帧对应的颜色缓冲区以渲染不透明物体,得到不透明物体的渲染结果。
步骤S806,针对待渲染的在当前视角下具有多层的层次结构的半透明物体,通过与半透明物体对应的第一渲染通道,获取半透明物体的各层次结构对应的深度数据并进行深度测试,将满足深度写入条件的深度数据,更新至深度缓冲区。
步骤S808,通过与半透明物体对应的第二渲染通道,将半透明物体各层次结构对应的深度数据与不透明物体的深度数据进行比较,确定未被不透明物体遮挡的半透明物体对应的深度数据。
步骤S810,基于深度缓冲区中的深度数据,对未被不透明物体遮挡的半透明物体各层次结构对应的深度数据进行深度测试,将深度数据满足第一深度条件的半透明物体的层次结构,确定为半透明物体在当前视角下的非表面层。
步骤S812,根据半透明物体的各层次结构对应的深度数据,确定各层次结构与当前视点之间的距离,根据距离确定半透明物体的非表面层对应的渲染顺序。
步骤S814,按照渲染顺序依次将非表面层对应的颜色数据,写入颜色缓冲区,并与颜色缓冲区中的颜色数据依次进行叠加,以渲染半透明物体的非表面层,得到初步渲染的结果。
步骤S816,通过与半透明物体对应的第二渲染通道,基于深度缓冲区中的深度数据,对各层次结构对应的深度数据进行深度测试,将深度数据满足第二深度条件的半透明物体的层次结构,确定为半透明物体在当前视角下的表面层。
步骤S818,将表面层对应的颜色数据写入颜色缓冲区,并与颜色缓冲区中的颜色数据进行叠加,以渲染半透明物体的表面层,得到半透明物体在当前视角下的渲染结果。
在其中一个实施例中,如图9所示,为对待渲染的图像帧进行渲染的流程示意图。终端首先通过与不透明物体对应的渲染通道,对不透明物体区域中的不透明物体进行渲染后,进而通过透明度测试(Alpha Test),确定需要渲染的区域范围,即仅渲染透明度值在预设透明度值范围内的像素。本实施例中为待渲染的半透明物体的像素对应的像素范围,即半透明物体区域。然后,终端再通过与半透明物体对应的三个渲染通道,对半透明物体进行渲染处理。
具体地,针对待渲染的不透明物体,终端首先通过与半透明物体对应的第一渲染通道,对半透明物体对应的深度数据进行深度测试,将满足深度写入条件的半透明物体的深度数据,写入与待渲染的图像帧对应的深度缓冲区。其中,深度写入条件,也就是第一渲染通道中深度测试的深度测试模式1,具体可以为LessEqual(即深度值小于等于深度缓冲区中的深度值的像素才画出)。在第一渲染通道中关闭了颜色数据写入,只写入深度数据,以为半透明物体对应的第二渲染通道和第三渲染通道的排序提供深度信息。
通过半透明物体对应的第二渲染通道,绘制半透明物体区域中除半透明物体的第1层之外的层次结构。若半透明物体区域中半透明物体包括N层的层次结构,除半透明物体的第1层之外的层次结构,则为第2-N层的半透明物体。其中,在第二渲染通道中关闭了深度数据写入,开启了颜色数据写入,以绘制半透明物体的非表面层。
第二渲染通道中深度测试的深度测试模式2,即第一深度条件,可以为Greater(即深度值大于深度缓冲区中的深度值的像素才画出)。由于表面层的深度小于或等于深度缓冲区中的深度值,不符合第一深度条件,由此可以使得表面层不被画出,而第2-N层的深度在第1层之后,则可以被画出。
具体地,终端则通过第二渲染通道,对半透明物体对应的深度数据进行深度测试,将满足第一深度条件的深度数据对应的半透明物体,确定为半透明物体在当前视角下的非表面层。然后获取非表面层的半透明物体对应的颜色数据,将颜色数据写入至与待渲染的图像帧对应的颜色缓冲区中。
由于深度测试模式为Greater,会导致通过第二渲染通道渲染非表面层的过程中,若非表面层与场景中其他不透明物体重叠时,可能出现渲染错误。因此,需要在通过不透明物体对应的渲染通道,对不透明物体进行渲染后,与待渲染的图像帧对应的颜色缓冲区中的不透明物体的深度数据拷贝出来。具体可以通过帧缓冲区位块传送(Blit),将不透明物体的深度数据拷贝至深度渲染目标中,即用于存储深度数据的深度纹理Depth Texture。然后将半透明物体中各层次结构对应的深度数据,与拷贝出的不透明物体的深度数据进行比较,来判断半透明物体对应的像素是否被场景中的不透明物体的像素所遮挡,则将被遮挡的半透明物体对应的像素裁剪掉而不画出。
然后,终端通过与半透明物体对应的第三渲染通道,绘制半透明物体区域中半透明物体的表面层。其中,在第三渲染通道中关闭了深度数据写入,开启了颜色数据写入,以绘制半透明物体的表面层。第三渲染通道中深度测试的深度测试模式,也就是第二深度条件,仍为深度测试模式1,即为LessEqual(即深度值小于等于深度缓冲区中的深度值的像素才画出)。
具体地,终端则通过第三渲染通道,对半透明物体对应的深度数据进行深度测试,将满足第二深度条件的深度数据对应的半透明物体,确定为半透明物体在当前视角下的表面层。由于在第一渲染通道中已经将半透明物体的表面层对应的深度数据写入了深度缓冲区中,因此在进行深度测试时,第2-N层会被深度测试所裁剪,只有表面层会被画出。
然后获取表面层的半透明物体对应的颜色数据,将颜色数据写入至与待渲染的图像帧对应的颜色缓冲区中,与颜色缓冲区中已有的渲染不透明物体后以及渲染半透明物体的非表面层后的颜色数据进行叠加,从而得到待渲染的图像帧对应的最终的渲染结果。
例如,以半透明物体为半透明服饰为例,其中一个视角下的图像帧对应的最终的渲染结果,如图10所示。从图10中可以看出,半透明服饰10a包括多层的层次结构,也就是包括多层的布料。其中包括半透明服饰本身具有的多层布料,还包括在当前视角下存在交叠形成的多层布料。如图11所示,为一个实施例中另一个视角下的半透明服饰11a的渲染结果的示意图。如图12所示,为一个实施例中又一个视角下的半透明服饰12a的渲染结果的示意图。由此可以看出在无论是在正面还是背面进行观察,在不同视角下的半透明服饰的底部裙摆的穿插顺序不同。通过上述方法对场景中的不透明物体以及半透明物体进行渲染处理后,均能够得到正确的渲染结果。由此能够准确对具有多层的层次结构的半透明物体进行渲染,从而得到正确的渲染结果,有效提高了半透明物体的渲染效果。
例如,以场景中包括多套半透明的服饰为例,可以将多套半透明的服饰作为一个整体的半透明物体。首先对多套半透明的服饰在当前视角下的非表面层进行渲染,然后在对多套半透明的服饰在当前视角下的表面层进行渲染。如图13所示,为另一个实施例中其中一个视角下的图像帧的渲染结果的示意图。从图13中进一步可以看出,通过多套半透明服饰13a重叠的情况下,将多套半透明服13a作为一个整体的半透明物体进行渲染处理。具体地,在半透明物体对应的第一渲染通道中,将多套半透明服13a饰合并在一起绘制。然后再通过第二渲染通道绘制多套半透明服饰13a在当前视角下的非表面层,最后再通过第三渲染通道绘制多套半透明服饰13a在当前视角下的表面层。故在多套半透明物体的渲染情况下,也能准确渲染出表面层的效果。而即时无法保证非表面层的渲染排序的精准度,在表面层正确渲染的情况下几乎不存在视觉瑕疵,因此能得到几乎正确的视觉效果。
在一个测试实施例中,对渲染处理的效率进行测试。具体地,在同一终端中,分别采用上述物体的渲染处理方法,以及传统的对半透明物体不经任何排序处理的渲染方式,渲染同一待渲染的图像帧,具体可以包括上述的半透明服饰,以进行对比测试。其中,进行对测试的终端,可以为移动设备,本实施例中采用手机进行对比测试。
具体的实验测试数据如下:采用传统的对半透明物体不经任何排序处理的渲染方式,GPU渲染处理消耗的时间为1.69ms。采用本申请采用上述物体的渲染处理方法,GPU渲染处理消耗的时间为1.82ms。
由此可以看出,本申请的物体的渲染处理方法,相较于传统的对半透明物体不经任何排序处理的渲染方式,在未显著增加性能消耗的情况下,在绝大部分终端上实现了复杂排序的正确渲染效果,在保证资源消耗较少的情况下有效提高了具有多层次结构的半透明物体的渲染效果。
本申请还提供一种应用场景,该应用场景为三维游戏场景,该游戏场景应用上述的物体的渲染处理方法。具体地,终端中可以运行三维游戏应用,三维游戏应用在运行时,终端则渲染三维游戏场景中连续的图像帧。其中,三维游戏场景可以为三维虚拟场景,其中可以包括不透明物体和半透明物体。其中,半透明物体可能在当前视角下具有多层的层次结构。
具体地,当待渲染的图像帧对应的场景中包括半透明物体时,终端则针对待渲染的半透明物体,获取半透明物体的深度数据。当半透明物体在当前视角下具有多层的层次结构时,则根据半透明物体的各层次结构对应的深度数据,识别半透明物体在当前视角下的非表面层,由此能够精准根据深度数据地识别出半透明物体的非表面层。终端根据非表面层对应的颜色数据,渲染半透明物体的非表面层,得到初步渲染的结果。然后进一步根据半透明物体在当前视角下的表面层对应的颜色数据,基于初步渲染的结果渲染半透明物体的表面层,得到半透明物体在当前视角下的渲染结果。
通过识别出半透明物体的非表面层和表面层,并将多层的半透明物体中的非表面层和表面层分别作为一个整体,然后分别渲染非表面层以及表面层,由此能够有效提高半透明物体的渲染结果的准确性,从而能够更加精准地对半透明物体进行渲染。并且上述的物体的渲染处理方法只采用与待渲染的图像帧对应的本身具有的一个深度缓冲区和颜色缓冲区,不会额外增加缓冲区或渲染目标来处理,由此不会导致产生较多的资源消耗,能够有效保证三维游戏应用的运行效率。因此,即使在性能配置较低的终端或移动设备上,也能够在保证在资源消耗较少的情况下有效提高半透明物体的渲染效果,从而实现在移动设备上能够高效且精准地渲染包括具有多层的层次结构的半透明物体。
本申请还提供一种应用场景,该应用场景为三维环境演示场景,例如旅游环境演示场景、建筑物演示场景等,该三维环境演示场景应用上述物体的渲染处理方法。可以通过终端或具有图像渲染功能的演示屏幕等设备,对三维环境演示场景进行渲染处理。
终端中可以将三维演示场景预先加载至本地,然后在进行渲染处理,也可以从服务器实时获取相应的场景数据并进行渲染处理。三维环境演示场景中可以包括预设了帧序列的连续的图像帧,也可以通过控制三维环境演示场景中的虚拟视角,渲染任意场景的图像帧。其中,三维环境演示场景中也可以包括不透明物体和半透明物体。
具体地,当待渲染的图像帧对应的场景中包括半透明物体时,终端则针对待渲染的半透明物体,获取半透明物体的深度数据。当半透明物体在当前视角下具有多层的层次结构时,则根据半透明物体的各层次结构对应的深度数据,识别半透明物体在当前视角下的非表面层,由此能够精准根据深度数据地识别出半透明物体的非表面层。终端根据非表面层对应的颜色数据,渲染半透明物体的非表面层,得到初步渲染的结果。然后进一步根据半透明物体在当前视角下的表面层对应的颜色数据,基于初步渲染的结果渲染半透明物体的表面层,得到半透明物体在当前视角下的渲染结果。通过将多层的半透明物体中的非表面层和表面层分别作为一个整体,然后分别渲染非表面层以及表面层,由此能够有效提高半透明物体的渲染结果的准确性,从而能够更加精准地对半透明物体进行渲染,并且不会导致产生较多的资源消耗,进而能够保证在资源消耗较少的情况下有效提高半透明物体的渲染效果。
应该理解的是,虽然图2-图3、图7-图8的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-图3、图7-图8中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图14所示,提供了一种物体的渲染处理装置1400,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:数据获取模块1402、非表面层渲染模块1404和表面层渲染模块1406,其中:
数据获取模块1402,用于针对待渲染的半透明物体,获取半透明物体的深度数据。
非表面层渲染模块1404,用于当半透明物体在当前视角下具有多层的层次结构时,则根据半透明物体的深度数据,识别半透明物体在当前视角下的非表面层,并根据非表面层对应的颜色数据,渲染半透明物体的非表面层,得到初步渲染的结果。
表面层渲染模块1406,用于根据半透明物体在当前视角下的表面层对应的颜色数据,基于初步渲染的结果渲染半透明物体的表面层,得到半透明物体在当前视角下的渲染结果。
在一个实施例中,数据获取模块1402还用于将半透明物体的深度数据中满足深度写入条件的深度数据,写入与待渲染的图像帧对应的深度缓冲区;非表面层渲染模块1404还用于根据深度缓冲区中的深度数据,识别半透明物体在当前视角下的非表面层。
在一个实施例中,数据获取模块1402还用于针对待渲染的不透明物体,将不透明物体的深度数据,写入与待渲染的图像帧对应的深度缓冲区;将半透明物体各层次结构对应的深度数据,分别与深度缓冲区中不透明物体的深度数据进行比较,确定未被不透明物体遮挡的半透明物体;将未被遮挡的半透明物体对应的目标深度数据,写入至深度缓冲区,以将深度缓冲区中的深度数据更新为目标深度数据;目标深度数据,是未被遮挡的半透明物体对应的深度数据中的、且与当前视点距离最近的深度数据。
在一个实施例中,非表面层渲染模块1404还用于将半透明物体的各层次结构对应的深度数据,与待渲染的图像帧对应的深度缓冲区中的深度数据进行深度比较;深度缓冲区中的深度数据,是未被遮挡的、且与当前视点距离最近的半透明物体对应的深度数据;将深度数据满足第一深度条件的半透明物体的层次结构,确定为半透明物体在当前视角下的非表面层;第一深度条件为半透明物体的深度数据大于深度缓冲区中的深度数据。
在一个实施例中,非表面层渲染模块1404还用于将半透明物体的深度数据与不透明物体的深度数据进行比较,确定未被不透明物体遮挡的半透明物体对应的深度数据;将未被不透明物体遮挡的半透明物体的各层次结构对应的深度数据,与待渲染的图像帧对应的深度缓冲区中的深度数据进行深度比较。
在一个实施例中,非表面层渲染模块1404还用于根据半透明物体的各层次结构对应的深度数据,确定半透明物体在当前视角下的非表面层与当前视点之间的距离;根据距离,确定半透明物体的非表面层对应的渲染顺序;根据非表面层对应的颜色数据,按照渲染顺序渲染半透明物体的非表面层,得到初步渲染的结果。
在一个实施例中,非表面层渲染模块1404还用于当待渲染的图像帧中包括不透明物体时,将不透明物体的颜色数据,写入与图像帧对应的颜色缓冲区,以渲染不透明物体;按照渲染顺序依次将非表面层对应的颜色数据,写入颜色缓冲区,并与颜色缓冲区中的颜色数据依次进行叠加,以渲染半透明物体的非表面层,得到初步渲染的结果。
在一个实施例中,表面层渲染模块1406还用于基于半透明物体的深度数据,对半透明物体的深度进行深度测试,根据第二深度条件确定半透明物体在当前视角下的表面层。
在一个实施例中,表面层渲染模块1406还用于将半透明物体的各层次结构对应的深度数据,与待渲染的图像帧对应的深度缓冲区中的深度数据进行深度比较;深度缓冲区中的深度数据,是未被遮挡的、且与当前视点距离最近的半透明物体对应的深度数据;将深度数据满足第二深度条件的半透明物体的层次结构,确定为半透明物体在当前视角下的表面层;第二深度条件为半透明物体的深度数据小于等于深度缓冲区中的深度数据。
在一个实施例中,表面层渲染模块1406还用于将表面层对应的颜色数据写入颜色缓冲区,并与颜色缓冲区中的颜色数据进行叠加,以渲染半透明物体的表面层,得到半透明物体在当前视角下的渲染结果。
在一个实施例中,数据获取模块1402还用于通过第一渲染通道,获取半透明物体的深度数据,将满足深度写入条件的半透明物体的深度数据,写入与待渲染的图像帧对应的深度缓冲区;非表面层渲染模块1404还用于通过第二渲染通道,根据半透明物体的深度数据和深度缓冲区的深度数据,识别半透明物体在当前视角下的非表面层,并根据非表面层对应的颜色数据,渲染半透明物体的非表面层,得到初步渲染的结果;表面层渲染模块1406还用于通过第三渲染通道,根据半透明物体的深度数据和深度缓冲区的深度数据,识别半透明物体在当前视角下的表面层,并根据表面层对应的颜色数据渲染半透明物体的表面层。
在一个实施例中,如图15所示,上述物体的渲染处理装置1400还包括不透明物体渲染模块1401,用于通过与不透明物体对应的渲染通道,基于不透明物体的深度数据和颜色数据,渲染不透明物体,得到不透明物体的渲染结果。
关于物体的渲染处理装置的具体限定可以参见上文中对于物体的渲染处理方法的限定,在此不再赘述。上述物体的渲染处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图16所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种物体的渲染处理方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图16中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (15)

1.一种物体的渲染处理方法,其特征在于,所述方法包括:
针对待渲染的半透明物体,获取所述半透明物体的深度数据;
当所述半透明物体在当前视角下具有多层的层次结构时,则
根据所述半透明物体的深度数据,识别所述半透明物体在当前视角下的非表面层,并根据所述非表面层对应的颜色数据,渲染所述半透明物体的非表面层,得到初步渲染的结果;
根据所述半透明物体在当前视角下的表面层对应的颜色数据,基于所述初步渲染的结果渲染所述半透明物体的表面层,得到所述半透明物体在所述当前视角下的渲染结果。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述半透明物体的深度数据中满足深度写入条件的深度数据,写入与待渲染的图像帧对应的深度缓冲区;
所述根据所述半透明物体的深度数据,识别所述半透明物体在当前视角下的非表面层,包括:
根据所述深度缓冲区中的深度数据,识别所述半透明物体在当前视角下的非表面层。
3.根据权利要求2所述的方法,其特征在于,在获取所述半透明物体的深度数据之前,所述方法还包括:
针对待渲染的不透明物体,将所述不透明物体的深度数据,写入与待渲染的图像帧对应的深度缓冲区;
所述将所述半透明物体的深度数据中满足深度写入条件的深度数据,写入与待渲染的图像帧对应的深度缓冲区,包括:
将所述半透明物体各层次结构对应的深度数据,分别与所述深度缓冲区中不透明物体的深度数据进行比较,确定未被所述不透明物体遮挡的半透明物体;
将未被遮挡的所述半透明物体对应的目标深度数据,写入至所述深度缓冲区,以将所述深度缓冲区中的深度数据更新为所述目标深度数据;所述目标深度数据,是未被遮挡的所述半透明物体对应的深度数据中的、且与当前视点距离最近的深度数据。
4.根据权利要求1所述的方法,其特征在于,所述根据所述半透明物体的深度数据,识别所述半透明物体在当前视角下的非表面层,包括:
将所述半透明物体的各层次结构对应的深度数据,与待渲染的图像帧对应的深度缓冲区中的深度数据进行深度比较;所述深度缓冲区中的深度数据,是未被遮挡的、且与当前视点距离最近的半透明物体对应的深度数据;
将深度数据满足第一深度条件的半透明物体的层次结构,确定为所述半透明物体在当前视角下的非表面层;所述第一深度条件为半透明物体的深度数据大于深度缓冲区中的深度数据。
5.根据权利要求4所述的方法,其特征在于,所述将所述半透明物体的各层次结构对应的深度数据,与待渲染的图像帧对应的深度缓冲区中的深度数据进行深度比较,包括:
将所述半透明物体的深度数据与不透明物体的深度数据进行比较,确定未被不透明物体遮挡的半透明物体对应的深度数据;
将所述未被不透明物体遮挡的半透明物体的各层次结构对应的深度数据,与待渲染的图像帧对应的深度缓冲区中的深度数据进行深度比较。
6.根据权利要求1所述的方法,其特征在于,所述根据所述非表面层对应的颜色数据,渲染所述半透明物体的非表面层,得到初步渲染的结果,包括:
根据所述半透明物体的各层次结构对应的深度数据,确定所述半透明物体在当前视角下的非表面层与当前视点之间的距离;
根据所述距离,确定所述半透明物体的非表面层对应的渲染顺序;
根据所述非表面层对应的颜色数据,按照所述渲染顺序渲染所述半透明物体的非表面层,得到初步渲染的结果。
7.根据权利要求6所述的方法,其特征在于,在所述获取所述半透明物体的深度数据之前,所述方法还包括:
当所述待渲染的图像帧中包括不透明物体时,将所述不透明物体的颜色数据,写入与所述图像帧对应的颜色缓冲区,以渲染所述不透明物体;
所述根据所述非表面层对应的颜色数据,按照所述渲染顺序渲染所述半透明物体的非表面层,得到初步渲染的结果,包括:
按照所述渲染顺序依次将所述非表面层对应的颜色数据,写入所述颜色缓冲区,并与所述颜色缓冲区中的颜色数据依次进行叠加,以渲染所述半透明物体的非表面层,得到初步渲染的结果。
8.根据权利要求1所述的方法,其特征在于,在所述根据所述半透明物体在当前视角下的表面层对应的颜色数据,基于所述初步渲染的结果渲染所述半透明物体的表面层之前,所述方法还包括:
基于所述半透明物体的深度数据,对所述半透明物体的深度进行深度测试,根据第二深度条件确定所述半透明物体在当前视角下的表面层。
9.根据权利要求8所述的方法,其特征在于,所述基于所述半透明物体的深度数据,对所述半透明物体的深度进行深度测试,根据第二深度条件确定所述半透明物体在当前视角下的表面层,包括:
将所述半透明物体的各层次结构对应的深度数据,与待渲染的图像帧对应的深度缓冲区中的深度数据进行深度比较;所述深度缓冲区中的深度数据,是未被遮挡的、且与当前视点距离最近的半透明物体对应的深度数据;
将深度数据满足第二深度条件的半透明物体的层次结构,确定为所述半透明物体在当前视角下的表面层;所述第二深度条件为半透明物体的深度数据小于等于深度缓冲区中的深度数据。
10.根据权利要求1所述的方法,其特征在于,所述初步渲染的结果,包括与待渲染的图像帧对应的颜色缓冲区中对所述非表面层渲染后的颜色数据;
所述根据所述半透明物体在当前视角下的表面层对应的颜色数据,基于所述初步渲染的结果渲染所述半透明物体的表面层,得到所述半透明物体在所述当前视角下的渲染结果,包括:
将所述表面层对应的颜色数据写入所述颜色缓冲区,并与所述颜色缓冲区中的颜色数据进行叠加,以渲染所述半透明物体的表面层,得到所述半透明物体在所述当前视角下的渲染结果。
11.根据权利要求1至10任意一项所述的方法,其特征在于,所述半透明物体对应的渲染通道包括第一渲染通道、第二渲染通道和第三渲染通道;
所述获取所述半透明物体的深度数据,包括:
通过所述第一渲染通道,获取所述半透明物体的深度数据,将满足深度写入条件的半透明物体的深度数据,写入与待渲染的图像帧对应的深度缓冲区;
所述根据所述半透明物体的深度数据,识别所述半透明物体在当前视角下的非表面层,并根据所述非表面层对应的颜色数据,渲染所述半透明物体的非表面层,得到初步渲染的结果,包括:
通过所述第二渲染通道,根据所述半透明物体的深度数据和所述深度缓冲区的深度数据,识别所述半透明物体在当前视角下的非表面层,根据所述非表面层对应的颜色数据,渲染所述半透明物体的非表面层,得到初步渲染的结果;
所述根据所述半透明物体在当前视角下的表面层对应的颜色数据,基于所述初步渲染的结果渲染所述半透明物体的表面层,包括:
通过所述第三渲染通道,根据所述半透明物体的深度数据和所述深度缓冲区的深度数据,识别所述半透明物体在当前视角下的表面层,并根据所述表面层对应的颜色数据渲染所述半透明物体的表面层。
12.根据权利要求11所述的方法,其特征在于,当所述待渲染的图像帧中包括不透明物体时,所述第二渲染通道是基于所述不透明物体的渲染结果,根据所述非表面层对应的颜色数据,渲染所述半透明物体的非表面层;
在所述通过所述第一渲染通道,获取所述半透明物体的深度数据之前,所述方法还包括:
通过与所述不透明物体对应的渲染通道,基于所述不透明物体的深度数据和颜色数据,渲染所述不透明物体,得到不透明物体的渲染结果。
13.一种物体的渲染处理装置,其特征在于,所述装置包括:
数据获取模块,用于针对待渲染的半透明物体,获取所述半透明物体的深度数据;
非表面层渲染模块,用于当所述半透明物体在当前视角下具有多层的层次结构时,则根据所述半透明物体的深度数据,识别所述半透明物体在当前视角下的非表面层,并根据所述非表面层对应的颜色数据,渲染所述半透明物体的非表面层,得到初步渲染的结果;
表面层渲染模块,用于根据所述半透明物体在当前视角下的表面层对应的颜色数据,基于所述初步渲染的结果渲染所述半透明物体的表面层,得到所述半透明物体在所述当前视角下的渲染结果。
14.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至12中任一项所述的方法的步骤。
15.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至12中任一项所述的方法的步骤。
CN202110607487.XA 2021-06-01 2021-06-01 物体的渲染处理方法、装置、计算机设备和存储介质 Active CN113052951B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110607487.XA CN113052951B (zh) 2021-06-01 2021-06-01 物体的渲染处理方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110607487.XA CN113052951B (zh) 2021-06-01 2021-06-01 物体的渲染处理方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN113052951A CN113052951A (zh) 2021-06-29
CN113052951B true CN113052951B (zh) 2021-08-03

Family

ID=76518548

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110607487.XA Active CN113052951B (zh) 2021-06-01 2021-06-01 物体的渲染处理方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN113052951B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113694510B (zh) * 2021-08-13 2024-01-09 完美世界(北京)软件科技发展有限公司 游戏角色渲染方法、装置及设备
CN116630516B (zh) * 2023-06-09 2024-01-30 广州三七极耀网络科技有限公司 一种基于3d特性的2d渲染排序方法、装置、设备及介质
CN117095110B (zh) * 2023-10-20 2024-01-09 园测信息科技股份有限公司 面向互联网三维地图的顺序无关透明渲染方法和系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109741414A (zh) * 2018-12-29 2019-05-10 北京金山安全软件有限公司 一种场景中半透明物体的渲染方法、装置及电子设备
CN109741413A (zh) * 2018-12-29 2019-05-10 北京金山安全软件有限公司 一种场景中半透明物体的渲染方法、装置及电子设备
CN111105491A (zh) * 2019-11-25 2020-05-05 腾讯科技(深圳)有限公司 场景渲染方法、装置、计算机可读存储介质和计算机设备
US20200273233A1 (en) * 2019-02-21 2020-08-27 Electronic Arts Inc. Systems and methods for texture-space ray tracing of transparent and translucent objects
CN112153408A (zh) * 2020-09-28 2020-12-29 广州虎牙科技有限公司 直播渲染方法、装置、电子设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109741414A (zh) * 2018-12-29 2019-05-10 北京金山安全软件有限公司 一种场景中半透明物体的渲染方法、装置及电子设备
CN109741413A (zh) * 2018-12-29 2019-05-10 北京金山安全软件有限公司 一种场景中半透明物体的渲染方法、装置及电子设备
US20200273233A1 (en) * 2019-02-21 2020-08-27 Electronic Arts Inc. Systems and methods for texture-space ray tracing of transparent and translucent objects
CN111105491A (zh) * 2019-11-25 2020-05-05 腾讯科技(深圳)有限公司 场景渲染方法、装置、计算机可读存储介质和计算机设备
CN112153408A (zh) * 2020-09-28 2020-12-29 广州虎牙科技有限公司 直播渲染方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN113052951A (zh) 2021-06-29

Similar Documents

Publication Publication Date Title
CN113052951B (zh) 物体的渲染处理方法、装置、计算机设备和存储介质
US11238644B2 (en) Image processing method and apparatus, storage medium, and computer device
US20200250889A1 (en) Augmented reality system
WO2023050992A1 (zh) 用于人脸重建的网络训练方法、装置、设备及存储介质
CN101414383B (zh) 图像处理设备和图像处理方法
CN112837402A (zh) 场景渲染方法、装置、计算机设备和存储介质
CN116710968A (zh) 物理键盘跟踪
US20140002487A1 (en) Animated visualization of alpha channel transparency
CN115428034A (zh) 消息传送系统中的包括3d数据的增强现实内容生成器
US10535188B2 (en) Tessellation edge shaders
CN109471805A (zh) 资源测试方法及装置、存储介质、电子设备
Demir et al. Detecting visual design principles in art and architecture through deep convolutional neural networks
WO2022152116A1 (zh) 图像处理方法、装置、设备、存储介质及计算机程序产品
CN113490050A (zh) 视频处理方法和装置、计算机可读存储介质及计算机设备
US20230037750A1 (en) Systems and methods for generating stabilized images of a real environment in artificial reality
US11451758B1 (en) Systems, methods, and media for colorizing grayscale images
CN110060296A (zh) 估计姿态的方法、电子设备和显示虚拟对象的方法及设备
US20140306953A1 (en) 3D Rendering for Training Computer Vision Recognition
CN116977539A (zh) 图像处理方法、装置、计算机设备、存储介质和程序产品
CN116091329B (zh) 图像处理方法、装置、设备及存储介质
US11210860B2 (en) Systems, methods, and media for visualizing occluded physical objects reconstructed in artificial reality
CN114241172A (zh) 基于全息投影的三维模型展示方法、装置和计算机设备
CN114066715A (zh) 图像风格迁移方法、装置、电子设备以及存储介质
Eskandari et al. Diminished reality in architectural and environmental design: Literature review of techniques, applications, and challenges
US20240062425A1 (en) Automatic Colorization of Grayscale Stereo Images

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40046810

Country of ref document: HK