CN114429513A - 可见元素的确定方法和装置、存储介质及电子设备 - Google Patents

可见元素的确定方法和装置、存储介质及电子设备 Download PDF

Info

Publication number
CN114429513A
CN114429513A CN202210037758.7A CN202210037758A CN114429513A CN 114429513 A CN114429513 A CN 114429513A CN 202210037758 A CN202210037758 A CN 202210037758A CN 114429513 A CN114429513 A CN 114429513A
Authority
CN
China
Prior art keywords
scene
scene element
target
pixel
elements
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
Application number
CN202210037758.7A
Other languages
English (en)
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 CN202210037758.7A priority Critical patent/CN114429513A/zh
Publication of CN114429513A publication Critical patent/CN114429513A/zh
Priority to PCT/CN2022/129514 priority patent/WO2023134277A1/zh
Priority to US18/343,236 priority patent/US20230343021A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal

Landscapes

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

Abstract

本申请公开了一种可见元素的确定方法和装置、存储介质及电子设备。其中,该方法包括:在目标视角下对第一场景元素集合中的各个场景元素进行渲染,得到目标渲染图像;根据目标渲染图像中的每个像素的颜色值,确定每个像素所在的场景元素的编号,得到目标编号集合;在第一场景元素集合中确定第二场景元素集合,并将第二场景元素集合中的场景元素确定为在目标视角下的可见元素。本申请解决了可见集的计算效率低的技术问题。

Description

可见元素的确定方法和装置、存储介质及电子设备
技术领域
本申请涉及计算机领域,具体而言,涉及一种可见元素的确定方法和装置、存储介质及电子设备。
背景技术
在图形渲染研究领域和行业应用中,可见性判定被应用在场景渲染性能优化、光线投射等过程。可是在三维场景中获取在某个视点下的场景元素可见集合。
光栅化渲染方法是目前常用的可见集计算方法,其主要原理是以视点为中心,调用图形处理单元(Graphics Processing Unit,简称Graphics Processing Unit,简称GPU)在对三维场景中的场景元素进行渲染,将渲染后的帧缓冲区读回到中央处理器(CentralProcessing Unit,简称CPU)端进行判定。然而大量的数据复制操作需要占用CPU资源,导致帧缓冲的回读时间较长,效率低。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种可见元素的确定方法和装置、存储介质及电子设备,以至少解决可见集的计算效率低的技术问题。
根据本申请实施例的一个方面,提供了一种可见元素的确定方法,包括:在目标视角下对第一场景元素集合中的各个场景元素进行渲染,得到目标渲染图像,其中,所述第一场景元素集合包括目标场景中在目标视角下待渲染的场景元素,所述各个场景元素具有对应的编号,所述目标渲染图像中的每个像素的颜色值根据所述每个像素所属的场景元素的编号渲染得到,在所述目标视角下所述第一场景元素集合中存在被遮挡的场景元素时,所述目标渲染图像包括所述第一场景元素集合中除所述被遮挡的场景元素之外的场景元素中的像素;根据所述目标渲染图像中的每个像素的颜色值,确定所述每个像素所在的场景元素的编号,得到目标编号集合;在所述第一场景元素集合中确定第二场景元素集合,并将所述第二场景元素集合中的场景元素确定为在所述目标视角下的可见元素,其中,所述第二场景元素集合中的场景元素的编号为所述目标编号集合中的编号。
可选地,在目标视角下对第一场景元素集合中的各个场景元素进行渲染,得到目标渲染图像之前,所述方法还包括:在所述目标三维场景中查找位于所述目标视角的范围内的场景元素,得到所述第一场景元素集合。
可选地,所述在目标视角下对第一场景元素集合中的各个场景元素进行渲染,得到目标渲染图像,包括:根据所述第一场景元素集合中的各个场景元素的编号,分别确定所述各个场景元素对应的颜色值,其中,编号不同的场景元素对应的颜色值不同;将所述各个场景元素中的像素的颜色值确定为所述各个场景元素对应的颜色值,其中,同一个场景元素中的像素的颜色值均为所述同一个场景元素对应的颜色值;按照所述各个场景元素在所述目标视角下的位置,将所述各个场景元素中的像素的颜色值存储在目标存储空间中对应的存储位置上,其中,在所述各个场景元素中存在第一场景元素和第二场景元素、且所述第一场景元素在所述目标视角下的位置被所述第二场景元素在所述目标视角下的位置遮挡时,在所述目标存储空间中存储的所述第一场景元素中的像素的颜色值被所述第二场景元素中的像素的颜色值覆盖,所述目标存储空间中存储的像素的颜色值是所述目标渲染图像中的像素的颜色值。
可选地,所述按照所述各个场景元素在所述目标视角下的位置,将所述各个场景元素中的像素的颜色值存储在目标存储空间中对应的存储位置上,包括:对所述第一场景元素集合中的各个场景元素执行以下操作,在执行以下操作时,所述各个场景元素为当前场景元素,所述当前场景元素在所述目标视角下的位置为当前位置:在所述目标存储空间中查找与所述当前位置对应的当前存储位置;在所述当前存储位置上已经存储了一个场景元素中的像素的颜色值时,在所述当前存储位置上将存储的所述一个场景元素中的像素的颜色值覆盖成所述当前场景元素中的像素的颜色值,其中,所述一个场景元素在所述目标视角下的位置被所述当前场景元素在所述目标视角下的位置遮挡;在所述当前存储位置上未存储任何场景元素中的像素的颜色值时,将所述当前场景元素中的像素的颜色值存储在所述当前存储位置上。
可选地,所述根据所述第一场景元素集合中的各个场景元素的编号,分别确定所述各个场景元素对应的颜色值,包括:对所述第一场景元素集合中的各个场景元素执行以下操作,在执行以下操作时,所述各个场景元素为当前场景元素:获取所述当前场景元素的编号;对所述当前场景元素的编号进行逻辑运算,得到所述当前场景元素对应的颜色值。
可选地,所述根据所述目标渲染图像中的每个像素的颜色值,确定所述每个像素所在的场景元素的编号,得到目标编号集合,包括:对所述目标存储空间中存储的各个像素的颜色值执行以下操作,在执行以下操作时,所述各个像素为当前像素:对所述当前像素的颜色值进行与所述逻辑运算对应的逆逻辑运算,得到所述当前像素所在的场景元素的编号。
可选地,所述根据所述目标渲染图像中的每个像素的颜色值,确定所述每个像素所在的场景元素的编号,得到目标编号集合,包括:通过目标线程集合并行地获取所述目标渲染图像中的像素的颜色值,并根据获取到的像素的颜色值,确定所述获取到的像素的颜色值所在的场景元素的编号,其中,所述目标渲染图像中包括多个图像块,所述目标线程集合中的每个线程用于每次读取所述目标渲染图像中的目标尺寸的图像块中的像素的颜色值。
可选地,在将所述第二场景元素集合中的场景元素确定为在所述目标视角下的可见元素,包括:在所述第二场景元素集合为第二模型集合、所述第二场景元素集合中的各个场景元素为所述第二模型集合中的各个模型时,将所述第二模型集合中的各个模型确定为在所述目标视角下的可见模型;或者在所述第二场景元素集合为第二图元集合、所述第二场景元素集合中的各个场景元素为所述第二图元集合中的各个图元时,将所述第二图元集合中的各个图元确定为在所述目标视角下的可见图元。
可选地,所述在目标视角下对第一场景元素集合中的各个场景元素进行渲染,得到目标渲染图像,包括:在所述第一场景元素集合为第一模型集合、所述第一场景元素集合中的各个场景元素为所述第一模型集合中的各个模型时,根据所述各个模型的编号,确定所述第一模型集合中的各个模型对应的颜色值,其中,编号不同的模型对应的颜色值不同,同一个模型中的像素的颜色值均为所述同一个模型对应的颜色值;根据所述第一模型集合中的各个模型对应的颜色值、以及所述各个模型在所述目标视角下的位置,确定所述目标渲染图像;或者在所述第一场景元素集合为第一图元集合、所述第一场景元素集合中的各个场景元素为所述第一图元集合中的各个图元时,根据所述各个图元的编号,确定所述第一图元集合中的各个图元对应的颜色值,其中,编号不同的图元对应的颜色值不同,同一个图元中的像素的颜色值均为所述同一个图元对应的颜色值;根据所述第一图元集合中的各个图元对应的颜色值、以及所述各个图元在所述目标视角下的位置,确定所述目标渲染图像。
可选地,在将所述第二场景元素集合中的场景元素确定为在所述目标视角下的可见元素的情况下,所述方法还包括:将第一数组中与所述第二场景元素集合对应的第一单元集合的取值设置为第一值,并将所述第一数组中除所述第一单元集合之外的单元的取值设置为第二值,其中,所述第一数组中的单元数量为所述第一场景元素集合中的场景元素的数量,所述第一数组中的单元与所述第一场景元素集合中的场景元素具有一一对应的关系,取值为所述第一值的单元表示对应的场景元素是所述目标视角下的可见元素,取值为所述第二值的单元表示对应的场景元素是所述目标视角下的不可见元素;将所述第一数组发送给目标处理器件;或者将第二数组中与所述第二场景元素集合对应的第二单元集合的取值设置为第一值,将所述第二数组中的第三单元集合中除所述第二单元集合之外的单元的取值设置为第二值,并将所述第二数组中除所述第三单元集合之外的单元的取值设置为第三值,其中,所述第三单元集合是所述第二数组中与所述第一场景元素集合对应的单元集合,所述第二数组中的单元数量为所述目标三维场景中的场景元素的数量,所述第二数组中的单元与所述目标三维场景中的场景元素具有一一对应的关系,取值为所述第一值的单元表示对应的场景元素是所述目标视角下的可见元素,取值为所述第二值的单元表示对应的场景元素是所述目标视角下的不可见元素,取值为所述第三值的单元表示对应的场景元素不位于所述目标视角的范围内;将所述第二数组发送给目标处理器件。
根据本申请实施例的另一方面,还提供了一种可见元素的确定装置,包括:渲染模块,用于在目标视角下对第一场景元素集合中的各个场景元素进行渲染,得到目标渲染图像,其中,所述第一场景元素集合包括目标场景中在目标视角下待渲染的场景元素,所述各个场景元素具有对应的编号,所述目标渲染图像中的每个像素的颜色值根据所述每个像素所属的场景元素的编号渲染得到,在所述目标视角下所述第一场景元素集合中存在被遮挡的场景元素时,所述目标渲染图像包括所述第一场景元素集合中除所述被遮挡的场景元素之外的场景元素中的像素;第一确定模块,用于根据所述目标渲染图像中的每个像素的颜色值,确定所述每个像素所在的场景元素的编号,得到目标编号集合;第二确定模块,用于在所述第一场景元素集合中确定第二场景元素集合,并将所述第二场景元素集合中的场景元素确定为在所述目标视角下的可见元素,其中,所述第二场景元素集合中的场景元素的编号为所述目标编号集合中的编号。
根据本申请实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述可见元素的确定方法。
根据本申请实施例的又一个方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行如以上可见元素的确定方法。
根据本申请实施例的又一方面,还提供了一种电子设备,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为通过所述计算机程序执行上述的可见元素的确定方法。
在本申请实施例中,将三维场景中的各个场景元素进行编号,在对目标视角下的场景元素进行渲染时,各个场景元素的颜色值是根据场景元素的编号得到的颜色。通过渲染得到的目标渲染图像中每个像素的颜色值,可以得到目标渲染图像中每个像素所在的场景元素的编号,进而根据编号就可以确定在目标视角下的可见场景元素集合。这样就不用将渲染后的帧缓冲区读回到CPU端,节省了CPU的资源,提升了可见集的计算效率,进而解决了可见集的计算效率低的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种可选的可见元素的确定方法的应用环境的示意图;
图2是根据本申请实施例的一种可选的可见元素的确定方法的流程图;
图3是根据本申请实施例的一种可选的目标三维场景示意图;
图4是根据本申请实施例的一种可选的目标视角示意图;
图5是根据本申请实施例的一种可选的目标存储空间示意图;
图6是根据本申请实施例的一种可选的图像块示意图;
图7是根据本申请实施例的一种可选的数组示意图;
图8是根据本申请实施例的又一种可选的数组示意图;
图9是根据本申请实施例的一种可选的开发界面示意图;
图10是根据本申请实施例的又一种可选的开发界面示意图;
图11是根据本申请实施例的一种可选的可见元素的确定装置的结构示意图;
图12是根据本申请实施例的一种可选的电子设备的计算机系统结构框图;
图13是根据本申请实施例的一种可选的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一个方面,提供了一种可见元素的确定方法,可选地,作为一种可选的实施方式,上述可见元素的确定方法可以但不限于应用于如图1所示的应用环境中。上述应用环境中包括终端设备101、服务器102和数据库103。
可选地,在本实施例中,上述终端设备可以是配置有目标客户端的终端设备,可以包括但不限于以下至少之一:手机(如Android手机、iOS手机等)、笔记本电脑、平板电脑、掌上电脑、MID(Mobile Internet Devices,移动互联网设备)、PAD、台式电脑、智能电视等。目标客户端可以是视频客户端、即时通信客户端、浏览器客户端、游戏客户端等。上述网络可以包括但不限于:有线网络,无线网络,其中,该有线网络包括:局域网、城域网和广域网,该无线网络包括:蓝牙、WIFI及其他实现无线通信的网络。上述服务器102可以是单一服务器,也可以是由多个服务器组成的服务器集群,或者是云服务器。上述数据库103用于存储数据,包括但不限于三维场景中的场景元素,渲染图像等。上述仅是一种示例,本实施例中对此不作任何限定。
可选地,作为一种可选的实施方式,如图2所示,上述可见元素的确定方法包括:
步骤S202,在目标视角下对第一场景元素集合中的各个场景元素进行渲染,得到目标渲染图像,其中,所述第一场景元素集合包括目标场景中在目标视角下待渲染的场景元素,所述各个场景元素具有对应的编号,所述目标渲染图像中的每个像素的颜色值根据所述每个像素所属的场景元素的编号渲染得到,在所述目标视角下所述第一场景元素集合中存在被遮挡的场景元素时,所述目标渲染图像包括所述第一场景元素集合中除所述被遮挡的场景元素之外的场景元素中的像素;
其中,上述目标场景包括但不限于是三维场景,例如可以虚拟游戏场景中的三维游戏场景。上述场景元素包括但不限于三维场景中的空间区域、场景模型、模型三角形、图元等,例如,可以是虚拟游戏场景中的虚拟元素,可以是虚拟道具、虚拟角色、虚拟物体等。假设目标视角下的三维场景中包括N个场景元素(N的值可以根据实际情况而定,例如200、300、1000等),这N个场景元素具有对应的编号,假设编号为0至N-1,每个场景元素的颜色值(三原色,简称RGB)是根据场景元素的编号进行编码得到的,具体的编码方式参见下述实施例。根据每个场景元素对应的颜色值对目标视角下三维场景中的场景元素进行渲染,得到目标渲染图像。在对目标视角下三维场景中的场景元素进行渲染的过程中,在目标视角下不可见的场景元素的像素颜色并不会在目标渲染图像上。例如,目标视角下的场景元素包括A、B、C,假设在目标视角下A被B遮挡,则在目标渲染图像中并不会有A的颜色值。
步骤S204,根据所述目标渲染图像中的每个像素的颜色值,确定所述每个像素所在的场景元素的编号,得到目标编号集合;
其中,对目标渲染图像中每个像素的颜色值进行解码,可以得到该像素所在的场景元素的编码,进而该编码对应的场景元素,即为目标视角下的可见元素。进而通过对目标渲染图像中每个像素的颜色值,可以确定在该目标视角下的可见场景元素的集合。
步骤S206,在所述第一场景元素集合中确定第二场景元素集合,并将所述第二场景元素集合中的场景元素确定为在所述目标视角下的可见元素,其中,所述第二场景元素集合中的场景元素的编号为所述目标编号集合中的编号。
其中,在渲染时场景元素的颜色值是根据编号进行编码得到的。根据渲染得到的目标渲染图像的每个像素的颜色值可以解码出该像素所在的场景元素的编号。与编号对应的场景元素即为该目标视角下的可见元素。进而通过对目标渲染图像中每个像素的颜色值,可以确定在该目标视角下的可见场景元素的集合,也可称为可见集(第二场景元素集合)。
可选地,上述可见元素的确定方法的执行主体可以是计算着色器。
可选地,所述方法还包括:在目标视角下对第一场景元素集合中的各个场景元素进行渲染,得到目标渲染图像之前,所述方法还包括:在所述目标三维场景中查找位于所述目标视角的范围内的场景元素,得到所述第一场景元素集合。
作为一个可选的方式,以图3所示的目标三维场景为例,如图中所示的目标三维场景中包括场景元素A、B、C、D、E,其中,场景元素A、B、C位于目标视角范围内,上述第一场景元素集合中包括场景元素A、B、C。
可选地,所述在目标视角下对第一场景元素集合中的各个场景元素进行渲染,得到目标渲染图像,包括:根据所述第一场景元素集合中的各个场景元素的编号,分别确定所述各个场景元素对应的颜色值,其中,编号不同的场景元素对应的颜色值不同;将所述各个场景元素中的像素的颜色值确定为所述各个场景元素对应的颜色值,其中,同一个场景元素中的像素的颜色值均为所述同一个场景元素对应的颜色值;按照所述各个场景元素在所述目标视角下的位置,将所述各个场景元素中的像素的颜色值存储在目标存储空间中对应的存储位置上,其中,在所述各个场景元素中存在第一场景元素和第二场景元素、且所述第一场景元素在所述目标视角下的位置被所述第二场景元素在所述目标视角下的位置遮挡时,在所述目标存储空间中存储的所述第一场景元素中的像素的颜色值被所述第二场景元素中的像素的颜色值覆盖,所述目标存储空间中存储的像素的颜色值是所述目标渲染图像中的像素的颜色值。
作为一个可选的实施方式,假设上述第一场景元素集合中包括N个场景元素,对上述N个场景元素进行编号,从0到n-1,将每个编号作为该场景元素的索引index,根据每个场景元素索引,对每个场景元素的颜色值进行编码,得到该场景元素对应的颜色值,编码公式:
Figure BDA0003469102470000101
其中,colorred(index)、colorgreen(index)和colorblue(index)为对应索引的场景元素的三原色RGB的颜色值,也就是颜色值包括colorred(index)、colorgreen(index)和colorblue(index),mod为取余运算。h是预设参数,可以根据实际情况设置,例如,可以是128、256、512等。从上述编码公式可以看出,编号不同的场景元素编码得到的颜色值不同。一个场景元素对应一个编号,一个编号对应一个颜色值,进而一个场景元素对应一个颜色值,也就是一个场景元素是一种颜色。
作为一个可选的实施方式,以图3所示的目标场景为例,第一场景元素集合中包括场景元素A、B、C,对场景元素A、B、C进行编号,假设A的编号为0,B的编号为1,C的标号为2。通过上述编码公式得到场景元素A的颜色值为(colorred(0),colorgreen(0),colorblue(0)),场景元素B的颜色值为(colorred(1),colorgreen(1),colorblue(1)),场景元素C的颜色值为(colorred(2),colorgreen(2),colorblue(2))。
作为一个可选的实施方式,若上述场景元素为模型,设置模型渲染的材质为无光照的纯色材质,将材质所用的颜色设置为对应的颜色值。若上述场景元素为图元,根据原有模型设置代理模型,将每个图元的顶点颜色设置为对应的颜色值。并设置代理模型使用的材质为无光照的顶点颜色。对于未被遮挡的遮挡物模型(该模型未被遮挡,且该模型遮挡了其他模型)可以使用无光照的纯黑色材质。设置上述材质时,可以将背面剔除的开关设置为原有模型的材质背面剔除开关。
作为一个可选的实施方式,在渲染阶段清空帧缓冲区,关闭反走样、高动态范围和后处理功能,避免对渲染结果产生影响。作为一个可选的实施方式,上述目标存储空间可以是帧缓冲区,在帧缓冲区中对上述第一场景元素集合中的场景元素进行渲染,按照第一场景元素集合中的各个场景元素在目标视角下的位置,将各个场景元素的像素的颜色值存储在对应的存储位置上。
作为一个可选的实施方式,在帧缓冲区中渲染各个场景元素时,按照目标渲染顺序对各个场景元素进行渲染,目标渲染顺序与场景元素与目标视点的距离相关,与目标视点距离越远的场景元素排序越靠前。以图4所示的场景元素A、B、C为例,其中,场景元素A、B、C与目标视点之间的距离从远到近依次是C、A、B,在渲染阶段的渲染顺序是C、A、B。
在图4所示的目标视角下,第一场景元素A被第二场景元素B遮挡,由于A与目标视点的距离大于B与目标视点的距离。在渲染时先渲染A在渲染B。也就是先将场景元素A的像素的颜色值存储在目标存储空间的对应存储位置,再将场景元素B的颜色值存储在目标存储空间的对应位置,由于存储位置出现了重叠。在渲染场景元素B之后,场景元素A的颜色值被场景元素B的颜色值覆盖,目标存储空间中不存在场景元素A的颜色值。如图5所示的渲染过程中color(2)为元素场景元素C的颜色值,包括(colorred(2),colorgreen(2),colorblue(2)),color(0)为场景元素A的颜色值,包括(colorred(0),colorgreen(0),colorblue(0)),color(1)为场景元素B的颜色值,包括(colorred(1),colorgreen(1),colorblue(1)),如图中所示在对场景元素进行渲染的过程中,先将场景元素C的颜色值存储在目标存储空间的对应存储位置500,再将场景元素A的颜色值存储在目标存储空间的对应存储位置501,最后将场景元素B的颜色值存储在目标存储空间的对应位置501。由于场景元素B与场景元素A在目标视角下重叠,在目标存储空间的存储位置上重叠,重叠的存储位置为501,在目标存储空间中场景元素B的颜色值将场景元素A的颜色值覆盖。在渲染的目标渲染图像中并不存在场景元素A,目标存储空间中也不存在场景元素A的颜色值。
可选地,所述按照所述各个场景元素在所述目标视角下的位置,将所述各个场景元素中的像素的颜色值存储在目标存储空间中对应的存储位置上,包括:对所述第一场景元素集合中的各个场景元素执行以下操作,在执行以下操作时,所述各个场景元素为当前场景元素,所述当前场景元素在所述目标视角下的位置为当前位置:在所述目标存储空间中查找与所述当前位置对应的当前存储位置;在所述当前存储位置上已经存储了一个场景元素中的像素的颜色值时,在所述当前存储位置上将存储的所述一个场景元素中的像素的颜色值覆盖成所述当前场景元素中的像素的颜色值,其中,所述一个场景元素在所述目标视角下的位置被所述当前场景元素在所述目标视角下的位置遮挡;在所述当前存储位置上未存储任何场景元素中的像素的颜色值时,将所述当前场景元素中的像素的颜色值存储在所述当前存储位置上。
作为一个可选的实施方式,如图5所示在对模型元素进行渲染的过程中,按照模型元素C、A、B的渲染顺序进行渲染。在对场景元素A进行渲染时,将场景元素A的颜色值存储在目标存储空间的存储位置501。如果存储位置501上没有存储数值,则将颜色值color(0)存储在目标存储空间的存储位置501(当前存储位置)。
在对场景元素B进行渲染时,场景元素B在目标存储空间的存储位置为501,该存储位置501已存储场景元素A的颜色值color(0),则场景元素B的颜色值color(1)将存储场景元素A的颜色值color(0)覆盖,在存储位置为501上存储场景元素B的颜色值color(1),存储位置为501上不在存储场景元素A的颜色值color(0)。
先将模型元素C的颜色值存储在目标存储空间的对应存储位置,再将场景元素A的颜色值存储在目标存储空间的对应存储位置,最后将场景元素B的颜色值存储在目标存储空间的对应位置。由于场景元素B与场景元素A在目标视角下重叠,在目标存储空间的存储位置上重叠,在目标存储空间中场景元素B的颜色值将场景元素A的颜色值覆盖。在渲染的目标渲染图像中并不存在场景元素A,目标存储空间中也不存在场景元素A的颜色值。
可选地,所述根据所述第一场景元素集合中的各个场景元素的编号,分别确定所述各个场景元素对应的颜色值,包括:对所述第一场景元素集合中的各个场景元素执行以下操作,在执行以下操作时,所述各个场景元素为当前场景元素:获取所述当前场景元素的编号;对所述当前场景元素的编号进行逻辑运算,得到所述当前场景元素对应的颜色值。
作为一个可选的实施方式,上述逻辑运算为上述编码公式:
Figure BDA0003469102470000141
其中,index为当前场景元素的编号,对应的颜色值包括上述colorred(index)、colorgreen(index)和colorblue(index)。上述h是预设参数,可以根据实际情况设置,例如,可以是128、256、512等。
可选地,所述根据所述目标渲染图像中的每个像素的颜色值,确定所述每个像素所在的场景元素的编号,得到目标编号集合,包括:对所述目标存储空间中存储的各个像素的颜色值执行以下操作,在执行以下操作时,所述各个像素为当前像素:对所述当前像素的颜色值进行与所述逻辑运算对应的逆逻辑运算,得到所述当前像素所在的场景元素的编号。
作为一个可选的实施方式,上述逆逻辑运算为解码运算,解码方程为:
index=colorblue×h2+colorgreen×h+colorred-1
其中,colorblue、colorgreen、colorred为像素的颜色值,index为像素所在的场景元素的编号。其中,h与上述编码公式中的h相同,可以根据实际情况而定,例如:128、256、512等。
可选地,所述根据所述目标渲染图像中的每个像素的颜色值,确定所述每个像素所在的场景元素的编号,得到目标编号集合,包括:通过目标线程集合并行地获取所述目标渲染图像中的像素的颜色值,并根据获取到的像素的颜色值,确定所述获取到的像素的颜色值所在的场景元素的编号,其中,所述目标渲染图像中包括多个图像块,所述目标线程集合中的每个线程用于每次读取所述目标渲染图像中的目标尺寸的图像块中的像素的颜色值。
作为一个可选的实施方式,目标线程集合为Ts,Ts的宽高可以为(64,16),并行线程总量为64×16×1=1024。假设帧缓冲区的大小的宽度W为4096像素,高度H为2048像素,也就是目标渲染图像的宽度为4096像素,高度为2048像素,分别是64和16的整数倍。按照Ts的宽高(64,16)将目标渲染图像分配成各个图片块。每个图像块的大小为:(W,H)/(64,16)。每个图像块尺寸大小是(64,128)。如图6中所示,对于目标线程集合中的线程(0,0,0),需要处理的图像块1为(0,0)到(63,127)。目标线程集合中的每个线程都需要遍历其对应的图像块中的元素,加载每个像素的颜色值,用上述解码方程,解码出每个像素所在的场景元素的编号index。直到遍历完目标渲染图像中的所有像素。
可选地,在将所述第二场景元素集合中的场景元素确定为在所述目标视角下的可见元素,包括:在所述第二场景元素集合为第二模型集合、所述第二场景元素集合中的各个场景元素为所述第二模型集合中的各个模型时,将所述第二模型集合中的各个模型确定为在所述目标视角下的可见模型;或者在所述第二场景元素集合为第二图元集合、所述第二场景元素集合中的各个场景元素为所述第二图元集合中的各个图元时,将所述第二图元集合中的各个图元确定为在所述目标视角下的可见图元。
可选地,所述在目标视角下对第一场景元素集合中的各个场景元素进行渲染,得到目标渲染图像,包括:在所述第一场景元素集合为第一模型集合、所述第一场景元素集合中的各个场景元素为所述第一模型集合中的各个模型时,根据所述各个模型的编号,确定所述第一模型集合中的各个模型对应的颜色值,其中,编号不同的模型对应的颜色值不同,同一个模型中的像素的颜色值均为所述同一个模型对应的颜色值;根据所述第一模型集合中的各个模型对应的颜色值、以及所述各个模型在所述目标视角下的位置,确定所述目标渲染图像;或者在所述第一场景元素集合为第一图元集合、所述第一场景元素集合中的各个场景元素为所述第一图元集合中的各个图元时,根据所述各个图元的编号,确定所述第一图元集合中的各个图元对应的颜色值,其中,编号不同的图元对应的颜色值不同,同一个图元中的像素的颜色值均为所述同一个图元对应的颜色值;根据所述第一图元集合中的各个图元对应的颜色值、以及所述各个图元在所述目标视角下的位置,确定所述目标渲染图像。
可选地,在将所述第二场景元素集合中的场景元素确定为在所述目标视角下的可见元素的情况下,所述方法还包括:将第一数组中与所述第二场景元素集合对应的第一单元集合的取值设置为第一值,并将所述第一数组中除所述第一单元集合之外的单元的取值设置为第二值,其中,所述第一数组中的单元数量为所述第一场景元素集合中的场景元素的数量,所述第一数组中的单元与所述第一场景元素集合中的场景元素具有一一对应的关系,取值为所述第一值的单元表示对应的场景元素是所述目标视角下的可见元素,取值为所述第二值的单元表示对应的场景元素是所述目标视角下的不可见元素;将所述第一数组发送给目标处理器件;或者将第二数组中与所述第二场景元素集合对应的第二单元集合的取值设置为第一值,将所述第二数组中的第三单元集合中除所述第二单元集合之外的单元的取值设置为第二值,并将所述第二数组中除所述第三单元集合之外的单元的取值设置为第三值,其中,所述第三单元集合是所述第二数组中与所述第一场景元素集合对应的单元集合,所述第二数组中的单元数量为所述目标三维场景中的场景元素的数量,所述第二数组中的单元与所述目标三维场景中的场景元素具有一一对应的关系,取值为所述第一值的单元表示对应的场景元素是所述目标视角下的可见元素,取值为所述第二值的单元表示对应的场景元素是所述目标视角下的不可见元素,取值为所述第三值的单元表示对应的场景元素不位于所述目标视角的范围内;将所述第二数组发送给目标处理器件。
作为一个可选的实施方式,上述第一数组是数组S,上述第一单元集合中的单元是第一数组中的数组单元,例如S[i]。上述第一值为1,第二值为0。上述第一数组中包括的单元数量为第一场景元素集合中场景元素的数量,也就是目标视角范围内的场景元素的数量。假设第一场景元素集合中包括1024个场景元素,则第一数组中包括1024个数组单元,每个数组单元对应一个场景元素。如图7中所示,对于可见的场景元素(编号i),其对应的数组单元S[i]中的数值为第一值1,对于不可见的场景元素(编号j),其对应的数组单元S[j]中的数值为第二值0。
作为一个可选的实施方式,上述第二数组S,上述第一值为1,第二值为0,第三值可以为-1。上述第二数组中包括的单元数量为目标三维场景中的场景元素的数量(大于或等于目标视角范围内场景元素的数量(第一场景元素集合中的数量))。假设三维场景中的场景元素的数量为2028,则第一数组中包括2028个数组单元,每个数组单元对应目标三维场景中的一个场景元素。假设第一场景元素集合中包括1024个场景元素,则在第二数组S中第三单元集合中包括的1024个数组单元,分别对应于第一场景元素集合中的1024个场景元素。第一场景元素集合中包括可见的场景元素和不可见的场景元素,对于第一场景元素集合中的可见场景元素,对应于第二数组中的第二单元集合,第二单元集合中的每个单元的取值为1,如图8中所示可见的场景元素对应的数组单元的取值为1。对于第一场景元素集合中不可见的场景元素,对应于第三单元集合中除了第二单元集合之外的其他数组单元,取值为0。如图8中所示不可见的场景元素对应的数组单元的取值为0。对于数组中除了第一场景元素集合对应的第三单元集合之外的数组单元,如图8中所述取值设置为-1。
作为一个可选的实施方式,上述目标处理器件为CPU,由计算着色器将上述第一数组和第二数组发送给CPU。
可选地,在计算着色器初始化阶段,首先定义计算着色器的线程宽度为Ts=(64,16,1),并行线程总量为64×16×1=1024。可以将工作任务数量n对齐到1024宽度,设为n’,有:
Figure BDA0003469102470000171
新建一个数据类型为无符号整型,长度为n’的数组S用来存放可见性,上述mod为取余运算,将图元/模型数量n、对齐后的数量n’和数组S传输到计算着色器。调用计算着色器的清空数据核函数,对数组S进行初始化。
在清空数据核函数中,工作线程的宽度与Ts一致,核函数的输入是三维的无符号整型变量Coord。工作线程总数为1024,工作任务量为n’,则每个线程的工作量为Stripe=n’/1024。也就是,线程(0,0,0)需要将数组S的第0到第Stripe-1个元素进行清空,线程(1,0,0)需要将数组S的第Stripe到第2×Stripe-1个元素进行清空,以此类推…即对于编号为Coord的工作线程,需要赋值:S[i]=0,在核函数执行完成之后,数组S中的一共n’个元素全部被设置为0。其中:
Figure BDA0003469102470000181
在并行获取可见集阶段,在计算着色器中,定义另一个核函数用来计算可见集。宽度为W,高度为H的任务量,按照Ts的宽高(64,16)分配成各个图片块,每个块的大小为:(W,H)/(64,16)。每个线程都需要遍历对应的图像块,加载每个像素的颜色值,用解码方程index=colorblue×2562+colorgreen×256+colorred-1进行解码,如果index<n,则设置S[index]=1。直到遍历完成所有的像素。
计算着色器将可见集S回读到内存中,CPU判定其中元素,为0代表该元素不可见,为1代表该元素可见。
作为一个可选的实施方式,可以以Unity工具插件的形式给图形渲染开发流程提供支持。如图9所示的开发界面中,其中第一个按钮用来初始化场景的可见性数据系统,第二个按钮用来卸载该系统,第三个按钮可以展开设置窗口。展开设置窗口的界面如图10所示。在图10所示的界面中,开发人员可以设置需要计算可见集的位置,设置区域和计算密度。点击最下方的构建按钮即可开始生成可见集。开发人员也能通过编写脚本,调用插件灵活进行渲染并获取可见集,之后按照需求进行后续的处理即可。插件提供了用来调试中间结果的方法,开发人员仍可以选择将帧缓冲以纹理的形式回读回来,查看帧缓冲此时的颜色。
作为一个可选的实施方式,以渲染虚拟游侠场景中的场景元素为例,可以包括如下步骤:
S1,对目标视角下虚拟游戏场景中的虚拟场景元素进行渲染,得到目标视角下的虚拟游戏场景图,上述虚拟场景元素包括但不限于虚拟游戏场景中的虚拟元素,例如,虚拟角色、虚拟道具、虚拟物体等;
在上述渲染的过程中,对上述目标视角下的虚拟场景元素进行编号,编号的方式可以根据实际情况设置,例如,可以是1、2、3…等,在渲染时每个虚拟场景元素对应的颜色值通过如下公式得到:
Figure BDA0003469102470000191
其中,index为虚拟场景元素的编号,colorred(index)、colorgreen(index)和colorblue(index)为对应编号的虚拟场景元素的三原色RGB的颜色值,也就是颜色值包括colorred(index)、colorgreen(index)和colorblue(index),mod为取余运算。h是预设参数,可以根据实际情况设置,例如,可以是128、256、512等。从上述编码公式可以看出,编号不同的虚拟场景元素编码得到的颜色值不同。一个虚拟场景元素对应一个编号,一个编号对应一个颜色值,进而一个虚拟场景元素对应一个颜色值,也就是一个虚拟场景元素是一种颜色。
在渲染时,按照各个虚拟场景元素在虚拟游戏场景中目标视角下的位置,将各个虚拟场景元素中的像素的颜色值存储在帧缓冲区中对应的存储位置上。
在上述帧缓冲区中存储虚拟场景元素是,若虚拟场景元素A目标视角下的位置被虚拟场景元素B在目标视角下的位置遮挡时,在上述帧缓冲区中存储的虚拟场景元素A中的像素的颜色值虚拟场景元素B的颜色值覆盖。
如图5所示的渲染过程中color(0)为虚拟场景元素A的颜色值,color(1)为虚拟场景元素B的颜色值,包括(colorred(1),colorgreen(1),colorblue(1)),如图中所示在对虚拟场景元素进行渲染的过程中,先将虚拟场景元素A的颜色值存储在目标存储空间的对应存储位置501,再将虚拟场景元素B的颜色值存储在目标存储空间的对应位置501。由于虚拟场景元素B与虚拟场景元素A在目标视角下重叠,在帧缓冲区的存储位置上重叠,重叠的存储位置为501,在帧缓冲区中虚拟场景元素B的颜色值将虚拟场景元素A的颜色值覆盖。在渲染的虚拟游戏场景如中并不存在虚拟场景元素A,帧缓冲区中也不存在场景元素A的颜色值。
S2,获取上述渲染得到的虚拟游戏场景图中的每个像素的颜色值,并根据颜色值确定每个像素对应的虚拟场景元素的编号。
具体地,可以通过解码得到虚拟游戏场景图中每个像素对应的场景元素的编号,解码方程为:
index=colorblue×h2+colorgreen×h+colorred-1
其中,colorblue、colorgreen、colorred为像素的颜色值,index为像素所在的场景元素的编号。其中,h与上述编码公式中的h相同,可以根据实际情况而定,例如:128、256、512等。
S3,根据上述解码得到的场景元素的编号,得到在目标视角下,虚拟游戏场景中的可见虚拟场景元素。
通过上述实施例,可以在虚拟游戏场景中快速的确定在各个视角下的可见虚拟场景元素,提升了各个视角下虚拟游戏场景的渲染效率,在玩家快速切换游戏视角时,可以快速切换到相应视角下的游戏画面,加快了游戏画面的渲染速度,提高了游戏体验。
本申请中,获取可见集的过程中用回读可见性数组取代回读缓冲区,极大提升计算效率。兼容于现有的大部分图形生产流程,并对不同的运行平台具有可缩放性,可以被应用于业界不同的图形渲染产品中。用回读可见集数据代替回读帧缓冲区,能够大大提升效率,从而使得应用的时候能够用更高的分辨率进行渲染。以一张4096×2048分辨率的帧缓冲为例,RGBA32格式的缓冲区大小为4096×2048×4Byte=32MB。假设其中包含10万个图元,其数据量也仅占0.38MB。且在实际工程中,一个视点的多个视面产生的数个乃至数十个帧缓冲,可以多次调用计算着色器核函数来反复向可见集写入,最终读取回CPU的数据量还能够保持不变。这使得获取可见集在应用中的灵活性、效率和准确性都能够大大提升。本申请能够灵活被应用在Unity 3D引擎、Unreal引擎等商业引擎中,能够根据项目的实际需求进行修改,应用在实时渲染和离线计算过程中。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
根据本申请实施例的另一个方面,还提供了一种用于实施上述可见元素的确定方法的可见元素的确定装置。如图11所示,该装置包括:渲染模块1102,用于在目标视角下对第一场景元素集合中的各个场景元素进行渲染,得到目标渲染图像,其中,所述第一场景元素集合包括目标场景中在目标视角下待渲染的场景元素,所述各个场景元素具有对应的编号,所述目标渲染图像中的每个像素的颜色值根据所述每个像素所属的场景元素的编号渲染得到,在所述目标视角下所述第一场景元素集合中存在被遮挡的场景元素时,所述目标渲染图像包括所述第一场景元素集合中除所述被遮挡的场景元素之外的场景元素中的像素;第一确定模块1104,用于根据所述目标渲染图像中的每个像素的颜色值,确定所述每个像素所在的场景元素的编号,得到目标编号集合;第二确定模块1106,用于在所述第一场景元素集合中确定第二场景元素集合,并将所述第二场景元素集合中的场景元素确定为在所述目标视角下的可见元素,其中,所述第二场景元素集合中的场景元素的编号为所述目标编号集合中的编号。
可选地,上述装置还用于在目标视角下对第一场景元素集合中的各个场景元素进行渲染,得到目标渲染图像之前,在所述目标三维场景中查找位于所述目标视角的范围内的场景元素,得到所述第一场景元素集合。
可选地,上述装置还用于根据所述第一场景元素集合中的各个场景元素的编号,分别确定所述各个场景元素对应的颜色值,其中,编号不同的场景元素对应的颜色值不同;将所述各个场景元素中的像素的颜色值确定为所述各个场景元素对应的颜色值,其中,同一个场景元素中的像素的颜色值均为所述同一个场景元素对应的颜色值;按照所述各个场景元素在所述目标视角下的位置,将所述各个场景元素中的像素的颜色值存储在目标存储空间中对应的存储位置上,其中,在所述各个场景元素中存在第一场景元素和第二场景元素、且所述第一场景元素在所述目标视角下的位置被所述第二场景元素在所述目标视角下的位置遮挡时,在所述目标存储空间中存储的所述第一场景元素中的像素的颜色值被所述第二场景元素中的像素的颜色值覆盖,所述目标存储空间中存储的像素的颜色值是所述目标渲染图像中的像素的颜色值。
可选地,上述装置还用于对所述第一场景元素集合中的各个场景元素执行以下操作,在执行以下操作时,所述各个场景元素为当前场景元素,所述当前场景元素在所述目标视角下的位置为当前位置:在所述目标存储空间中查找与所述当前位置对应的当前存储位置;在所述当前存储位置上已经存储了一个场景元素中的像素的颜色值时,在所述当前存储位置上将存储的所述一个场景元素中的像素的颜色值覆盖成所述当前场景元素中的像素的颜色值,其中,所述一个场景元素在所述目标视角下的位置被所述当前场景元素在所述目标视角下的位置遮挡;在所述当前存储位置上未存储任何场景元素中的像素的颜色值时,将所述当前场景元素中的像素的颜色值存储在所述当前存储位置上。
可选地,上述装置还用于对所述第一场景元素集合中的各个场景元素执行以下操作,在执行以下操作时,所述各个场景元素为当前场景元素:获取所述当前场景元素的编号;对所述当前场景元素的编号进行逻辑运算,得到所述当前场景元素对应的颜色值。
可选地,上述装置还用于对所述目标存储空间中存储的各个像素的颜色值执行以下操作,在执行以下操作时,所述各个像素为当前像素:对所述当前像素的颜色值进行与所述逻辑运算对应的逆逻辑运算,得到所述当前像素所在的场景元素的编号。
可选地,上述装置还用于通过目标线程集合并行地获取所述目标渲染图像中的像素的颜色值,并根据获取到的像素的颜色值,确定所述获取到的像素的颜色值所在的场景元素的编号,其中,所述目标渲染图像中包括多个图像块,所述目标线程集合中的每个线程用于每次读取所述目标渲染图像中的目标尺寸的图像块中的像素的颜色值。
可选地,上述装置还用于在所述第二场景元素集合为第二模型集合、所述第二场景元素集合中的各个场景元素为所述第二模型集合中的各个模型时,将所述第二模型集合中的各个模型确定为在所述目标视角下的可见模型;在所述第二场景元素集合为第二图元集合、所述第二场景元素集合中的各个场景元素为所述第二图元集合中的各个图元时,将所述第二图元集合中的各个图元确定为在所述目标视角下的可见图元。
可选地,上述装置还用于在所述第一场景元素集合为第一模型集合、所述第一场景元素集合中的各个场景元素为所述第一模型集合中的各个模型时,根据所述各个模型的编号,确定所述第一模型集合中的各个模型对应的颜色值,其中,编号不同的模型对应的颜色值不同,同一个模型中的像素的颜色值均为所述同一个模型对应的颜色值;根据所述第一模型集合中的各个模型对应的颜色值、以及所述各个模型在所述目标视角下的位置,确定所述目标渲染图像;在所述第一场景元素集合为第一图元集合、所述第一场景元素集合中的各个场景元素为所述第一图元集合中的各个图元时,根据所述各个图元的编号,确定所述第一图元集合中的各个图元对应的颜色值,其中,编号不同的图元对应的颜色值不同,同一个图元中的像素的颜色值均为所述同一个图元对应的颜色值;根据所述第一图元集合中的各个图元对应的颜色值、以及所述各个图元在所述目标视角下的位置,确定所述目标渲染图像。
可选地,上述装置还用于在将所述第二场景元素集合中的场景元素确定为在所述目标视角下的可见元素的情况下,将第一数组中与所述第二场景元素集合对应的第一单元集合的取值设置为第一值,并将所述第一数组中除所述第一单元集合之外的单元的取值设置为第二值,其中,所述第一数组中的单元数量为所述第一场景元素集合中的场景元素的数量,所述第一数组中的单元与所述第一场景元素集合中的场景元素具有一一对应的关系,取值为所述第一值的单元表示对应的场景元素是所述目标视角下的可见元素,取值为所述第二值的单元表示对应的场景元素是所述目标视角下的不可见元素;将所述第一数组发送给目标处理器件;将第二数组中与所述第二场景元素集合对应的第二单元集合的取值设置为第一值,将所述第二数组中的第三单元集合中除所述第二单元集合之外的单元的取值设置为第二值,并将所述第二数组中除所述第三单元集合之外的单元的取值设置为第三值,其中,所述第三单元集合是所述第二数组中与所述第一场景元素集合对应的单元集合,所述第二数组中的单元数量为所述目标三维场景中的场景元素的数量,所述第二数组中的单元与所述目标三维场景中的场景元素具有一一对应的关系,取值为所述第一值的单元表示对应的场景元素是所述目标视角下的可见元素,取值为所述第二值的单元表示对应的场景元素是所述目标视角下的不可见元素,取值为所述第三值的单元表示对应的场景元素不位于所述目标视角的范围内;将所述第二数组发送给目标处理器件。
根据本申请的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序/指令,该计算机程序/指令包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1209从网络上被下载和安装,和/或从可拆卸介质1211被安装。在该计算机程序被中央处理器1201执行时,执行本申请实施例提供的各种功能。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
图12示意性地示出了用于实现本申请实施例的电子设备的计算机系统结构框图。
需要说明的是,图12示出的电子设备的计算机系统1200仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图12所示,计算机系统1200包括中央处理器1201(Central Processing Unit,CPU),其可以根据存储在只读存储器1202(Read-Only Memory,ROM)中的程序或者从存储部分1208加载到随机访问存储器1203(Random Access Memory,RAM)中的程序而执行各种适当的动作和处理。在随机访问存储器1203中,还存储有系统操作所需的各种程序和数据。中央处理器1201、在只读存储器1202以及随机访问存储器1203通过总线1204彼此相连。输入/输出接口1205(Input/Output接口,即I/O接口)也连接至总线1204。
以下部件连接至输入/输出接口1205:包括键盘、鼠标等的输入部分1206;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1207;包括硬盘等的存储部分1208;以及包括诸如局域网卡、调制解调器等的网络接口卡的通信部分1209。通信部分1209经由诸如因特网的网络执行通信处理。驱动器1210也根据需要连接至输入/输出接口1205。可拆卸介质1211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1210上,以便于从其上读出的计算机程序根据需要被安装入存储部分1208。
特别地,根据本申请的实施例,各个方法流程图中所描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1209从网络上被下载和安装,和/或从可拆卸介质1211被安装。在该计算机程序被中央处理器1201执行时,执行本申请的系统中限定的各种功能。
根据本申请实施例的又一个方面,还提供了一种用于实施上述可见元素的确定方法的电子设备,该电子设备可以是图1所示的终端设备或服务器。本实施例以该电子设备为服务器为例来说明。如图13所示,该电子设备包括存储器1302和处理器1304,该存储器1302中存储有计算机程序,该处理器1304被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述电子设备可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,在目标视角下对第一场景元素集合中的各个场景元素进行渲染,得到目标渲染图像,其中,所述第一场景元素集合包括目标场景中在目标视角下待渲染的场景元素,所述各个场景元素具有对应的编号,所述目标渲染图像中的每个像素的颜色值根据所述每个像素所属的场景元素的编号渲染得到,在所述目标视角下所述第一场景元素集合中存在被遮挡的场景元素时,所述目标渲染图像包括所述第一场景元素集合中除所述被遮挡的场景元素之外的场景元素中的像素;
S2,根据所述目标渲染图像中的每个像素的颜色值,确定所述每个像素所在的场景元素的编号,得到目标编号集合;
S3,在所述第一场景元素集合中确定第二场景元素集合,并将所述第二场景元素集合中的场景元素确定为在所述目标视角下的可见元素,其中,所述第二场景元素集合中的场景元素的编号为所述目标编号集合中的编号。
可选地,本领域普通技术人员可以理解,图13所示的结构仅为示意,电子装置电子设备也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图13其并不对上述电子装置电子设备的结构造成限定。例如,电子装置电子设备还可包括比图13中所示更多或者更少的组件(如网络接口等),或者具有与图13所示不同的配置。
其中,存储器1302可用于存储软件程序以及模块,如本申请实施例中的可见元素的确定方法和装置对应的程序指令/模块,处理器1304通过运行存储在存储器1302内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的可见元素的确定方法。存储器1302可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1302可进一步包括相对于处理器1304远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器1302具体可以但不限于用于存储场景元素等信息。作为一种示例,如图13所示,上述存储器1302中可以但不限于包括上述可见元素的确定装置中的渲染模块1102、第一确定模块1104及第二确定模块1106。此外,还可以包括但不限于上述可见元素的确定装置中的其他模块单元,本示例中不再赘述。
可选地,上述的传输装置1306用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1306包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1306为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
此外,上述电子设备还包括:显示器1308,用于显示上述可见场景元素;和连接总线1310,用于连接上述电子设备中的各个模块部件。
在其他实施例中,上述终端设备或者服务器可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(P2P,Peer To Peer)网络,任意形式的计算设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点。
根据本申请的一个方面,提供了一种计算机可读存储介质,计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。
可选地,在本实施例中,上述计算机可读存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,在目标视角下对第一场景元素集合中的各个场景元素进行渲染,得到目标渲染图像,其中,所述第一场景元素集合包括目标场景中在目标视角下待渲染的场景元素,所述各个场景元素具有对应的编号,所述目标渲染图像中的每个像素的颜色值根据所述每个像素所属的场景元素的编号渲染得到,在所述目标视角下所述第一场景元素集合中存在被遮挡的场景元素时,所述目标渲染图像包括所述第一场景元素集合中除所述被遮挡的场景元素之外的场景元素中的像素;
S2,根据所述目标渲染图像中的每个像素的颜色值,确定所述每个像素所在的场景元素的编号,得到目标编号集合;
S3,在所述第一场景元素集合中确定第二场景元素集合,并将所述第二场景元素集合中的场景元素确定为在所述目标视角下的可见元素,其中,所述第二场景元素集合中的场景元素的编号为所述目标编号集合中的编号。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (14)

1.一种可见元素的确定方法,其特征在于,包括:
在目标视角下对第一场景元素集合中的各个场景元素进行渲染,得到目标渲染图像,其中,所述第一场景元素集合包括目标场景中在目标视角下待渲染的场景元素,所述各个场景元素具有对应的编号,所述目标渲染图像中的每个像素的颜色值根据所述每个像素所属的场景元素的编号渲染得到,在所述目标视角下所述第一场景元素集合中存在被遮挡的场景元素时,所述目标渲染图像包括所述第一场景元素集合中除所述被遮挡的场景元素之外的场景元素中的像素;
根据所述目标渲染图像中的每个像素的颜色值,确定所述每个像素所在的场景元素的编号,得到目标编号集合;
在所述第一场景元素集合中确定第二场景元素集合,并将所述第二场景元素集合中的场景元素确定为在所述目标视角下的可见元素,其中,所述第二场景元素集合中的场景元素的编号为所述目标编号集合中的编号。
2.根据权利要求1所述的方法,其特征在于,在目标视角下对第一场景元素集合中的各个场景元素进行渲染,得到目标渲染图像之前,所述方法还包括:
在所述目标场景中查找位于所述目标视角的范围内的场景元素,得到所述第一场景元素集合。
3.根据权利要求1所述的方法,其特征在于,所述在目标视角下对第一场景元素集合中的各个场景元素进行渲染,得到目标渲染图像,包括:
根据所述第一场景元素集合中的各个场景元素的编号,分别确定所述各个场景元素对应的颜色值,其中,编号不同的场景元素对应的颜色值不同;
将所述各个场景元素中的像素的颜色值确定为所述各个场景元素对应的颜色值,其中,同一个场景元素中的像素的颜色值均为所述同一个场景元素对应的颜色值;
按照所述各个场景元素在所述目标视角下的位置,将所述各个场景元素中的像素的颜色值存储在目标存储空间中对应的存储位置上,其中,在所述各个场景元素中存在第一场景元素和第二场景元素、且所述第一场景元素在所述目标视角下的位置被所述第二场景元素在所述目标视角下的位置遮挡时,在所述目标存储空间中存储的所述第一场景元素中的像素的颜色值被所述第二场景元素中的像素的颜色值覆盖,所述目标存储空间中存储的像素的颜色值是所述目标渲染图像中的像素的颜色值。
4.根据权利要求3所述的方法,其特征在于,所述按照所述各个场景元素在所述目标视角下的位置,将所述各个场景元素中的像素的颜色值存储在目标存储空间中对应的存储位置上,包括:
对所述第一场景元素集合中的各个场景元素执行以下操作,在执行以下操作时,所述各个场景元素为当前场景元素,所述当前场景元素在所述目标视角下的位置为当前位置:
在所述目标存储空间中查找与所述当前位置对应的当前存储位置;在所述当前存储位置上已经存储了一个场景元素中的像素的颜色值时,在所述当前存储位置上将存储的所述一个场景元素中的像素的颜色值覆盖成所述当前场景元素中的像素的颜色值,其中,所述一个场景元素在所述目标视角下的位置被所述当前场景元素在所述目标视角下的位置遮挡;
在所述当前存储位置上未存储任何场景元素中的像素的颜色值时,将所述当前场景元素中的像素的颜色值存储在所述当前存储位置上。
5.根据权利要求3所述的方法,其特征在于,所述根据所述第一场景元素集合中的各个场景元素的编号,分别确定所述各个场景元素对应的颜色值,包括:
对所述第一场景元素集合中的各个场景元素执行以下操作,在执行以下操作时,所述各个场景元素为当前场景元素:
获取所述当前场景元素的编号;
对所述当前场景元素的编号进行逻辑运算,得到所述当前场景元素对应的颜色值。
6.根据权利要求5所述的方法,其特征在于,所述根据所述目标渲染图像中的每个像素的颜色值,确定所述每个像素所在的场景元素的编号,得到目标编号集合,包括:
对所述目标存储空间中存储的各个像素的颜色值执行以下操作,在执行以下操作时,所述各个像素为当前像素:
对所述当前像素的颜色值进行与所述逻辑运算对应的逆逻辑运算,得到所述当前像素所在的场景元素的编号。
7.根据权利要求1所述的方法,其特征在于,所述根据所述目标渲染图像中的每个像素的颜色值,确定所述每个像素所在的场景元素的编号,得到目标编号集合,包括:
通过目标线程集合并行地获取所述目标渲染图像中的像素的颜色值,并根据获取到的像素的颜色值,确定所述获取到的像素的颜色值所在的场景元素的编号,其中,所述目标渲染图像中包括多个图像块,所述目标线程集合中的每个线程用于每次读取所述目标渲染图像中的目标尺寸的图像块中的像素的颜色值。
8.根据权利要求1所述的方法,其特征在于,在将所述第二场景元素集合中的场景元素确定为在所述目标视角下的可见元素,包括:
在所述第二场景元素集合为第二模型集合、所述第二场景元素集合中的各个场景元素为所述第二模型集合中的各个模型时,将所述第二模型集合中的各个模型确定为在所述目标视角下的可见模型;或者
在所述第二场景元素集合为第二图元集合、所述第二场景元素集合中的各个场景元素为所述第二图元集合中的各个图元时,将所述第二图元集合中的各个图元确定为在所述目标视角下的可见图元。
9.根据权利要求1所述的方法,其特征在于,所述在目标视角下对第一场景元素集合中的各个场景元素进行渲染,得到目标渲染图像,包括:
在所述第一场景元素集合为第一模型集合、所述第一场景元素集合中的各个场景元素为所述第一模型集合中的各个模型时,根据所述各个模型的编号,确定所述第一模型集合中的各个模型对应的颜色值,其中,编号不同的模型对应的颜色值不同,同一个模型中的像素的颜色值均为所述同一个模型对应的颜色值;根据所述第一模型集合中的各个模型对应的颜色值、以及所述各个模型在所述目标视角下的位置,确定所述目标渲染图像;或者
在所述第一场景元素集合为第一图元集合、所述第一场景元素集合中的各个场景元素为所述第一图元集合中的各个图元时,根据所述各个图元的编号,确定所述第一图元集合中的各个图元对应的颜色值,其中,编号不同的图元对应的颜色值不同,同一个图元中的像素的颜色值均为所述同一个图元对应的颜色值;根据所述第一图元集合中的各个图元对应的颜色值、以及所述各个图元在所述目标视角下的位置,确定所述目标渲染图像。
10.根据权利要求1至9中任一项所述的方法,其特征在于,在将所述第二场景元素集合中的场景元素确定为在所述目标视角下的可见元素的情况下,所述方法还包括:
将第一数组中与所述第二场景元素集合对应的第一单元集合的取值设置为第一值,并将所述第一数组中除所述第一单元集合之外的单元的取值设置为第二值,其中,所述第一数组中的单元数量为所述第一场景元素集合中的场景元素的数量,所述第一数组中的单元与所述第一场景元素集合中的场景元素具有一一对应的关系,取值为所述第一值的单元表示对应的场景元素是所述目标视角下的可见元素,取值为所述第二值的单元表示对应的场景元素是所述目标视角下的不可见元素;将所述第一数组发送给目标处理器件;或者
将第二数组中与所述第二场景元素集合对应的第二单元集合的取值设置为第一值,将所述第二数组中的第三单元集合中除所述第二单元集合之外的单元的取值设置为第二值,并将所述第二数组中除所述第三单元集合之外的单元的取值设置为第三值,其中,所述第三单元集合是所述第二数组中与所述第一场景元素集合对应的单元集合,所述第二数组中的单元数量为所述目标场景中的场景元素的数量,所述第二数组中的单元与所述目标场景中的场景元素具有一一对应的关系,取值为所述第一值的单元表示对应的场景元素是所述目标视角下的可见元素,取值为所述第二值的单元表示对应的场景元素是所述目标视角下的不可见元素,取值为所述第三值的单元表示对应的场景元素不位于所述目标视角的范围内;将所述第二数组发送给目标处理器件。
11.一种可见元素的确定装置,其特征在于,包括:
渲染模块,用于在目标视角下对第一场景元素集合中的各个场景元素进行渲染,得到目标渲染图像,其中,所述第一场景元素集合包括目标场景中在目标视角下待渲染的场景元素,所述各个场景元素具有对应的编号,所述目标渲染图像中的每个像素的颜色值根据所述每个像素所属的场景元素的编号渲染得到,在所述目标视角下所述第一场景元素集合中存在被遮挡的场景元素时,所述目标渲染图像包括所述第一场景元素集合中除所述被遮挡的场景元素之外的场景元素中的像素;
第一确定模块,用于根据所述目标渲染图像中的每个像素的颜色值,确定所述每个像素所在的场景元素的编号,得到目标编号集合;
第二确定模块,用于在所述第一场景元素集合中确定第二场景元素集合,并将所述第二场景元素集合中的场景元素确定为在所述目标视角下的可见元素,其中,所述第二场景元素集合中的场景元素的编号为所述目标编号集合中的编号。
12.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行所述权利要求1至10任一项中所述的方法。
13.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1至10任一项所述方法的步骤。
14.一种电子设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至10任一项中所述的方法。
CN202210037758.7A 2022-01-13 2022-01-13 可见元素的确定方法和装置、存储介质及电子设备 Pending CN114429513A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202210037758.7A CN114429513A (zh) 2022-01-13 2022-01-13 可见元素的确定方法和装置、存储介质及电子设备
PCT/CN2022/129514 WO2023134277A1 (zh) 2022-01-13 2022-11-03 可见元素的确定方法和装置、存储介质及电子设备
US18/343,236 US20230343021A1 (en) 2022-01-13 2023-06-28 Visible element determination method and apparatus, storage medium, and electronic device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210037758.7A CN114429513A (zh) 2022-01-13 2022-01-13 可见元素的确定方法和装置、存储介质及电子设备

Publications (1)

Publication Number Publication Date
CN114429513A true CN114429513A (zh) 2022-05-03

Family

ID=81312290

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210037758.7A Pending CN114429513A (zh) 2022-01-13 2022-01-13 可见元素的确定方法和装置、存储介质及电子设备

Country Status (3)

Country Link
US (1) US20230343021A1 (zh)
CN (1) CN114429513A (zh)
WO (1) WO2023134277A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023134277A1 (zh) * 2022-01-13 2023-07-20 腾讯科技(深圳)有限公司 可见元素的确定方法和装置、存储介质及电子设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050162435A1 (en) * 2004-01-22 2005-07-28 Electronic Arts Inc. Image rendering with multi-level Z-buffers
CN113457161B (zh) * 2021-07-16 2024-02-13 深圳市腾讯网络信息技术有限公司 画面展示方法、信息生成方法、装置、设备及存储介质
CN113674389B (zh) * 2021-10-25 2022-03-01 深圳须弥云图空间科技有限公司 场景渲染方法、装置、电子设备及存储介质
CN114429513A (zh) * 2022-01-13 2022-05-03 腾讯科技(深圳)有限公司 可见元素的确定方法和装置、存储介质及电子设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023134277A1 (zh) * 2022-01-13 2023-07-20 腾讯科技(深圳)有限公司 可见元素的确定方法和装置、存储介质及电子设备

Also Published As

Publication number Publication date
WO2023134277A1 (zh) 2023-07-20
US20230343021A1 (en) 2023-10-26

Similar Documents

Publication Publication Date Title
CN107358649B (zh) 地形文件的处理方法和装置
US20230053462A1 (en) Image rendering method and apparatus, device, medium, and computer program product
CN110706341B (zh) 一种城市信息模型的高性能渲染方法、装置及存储介质
US9792718B2 (en) Mapping graphics instructions to associated graphics data during performance analysis
US20100020069A1 (en) Partitioning-based performance analysis for graphics imaging
EP4290464A1 (en) Image rendering method and apparatus, and electronic device and storage medium
WO2023197762A1 (zh) 图像渲染方法、装置、电子设备、计算机可读存储介质及计算机程序产品
CN112312161A (zh) 用于生成视频的方法、装置、电子设备及可读存储介质
CN112307403A (zh) 页面渲染方法、装置、存储介质以及终端
KR101431311B1 (ko) 그래픽 이미지들의 시각적 창작 동안의 성능 분석
CN112675545A (zh) 地表仿真画面的显示方法和装置、存储介质及电子设备
US20230343021A1 (en) Visible element determination method and apparatus, storage medium, and electronic device
CN109448123B (zh) 模型的控制方法及装置、存储介质、电子设备
CN111710020B (zh) 动画渲染方法和装置及存储介质
CN111950057A (zh) 一种建筑信息模型bim的加载方法及装置
US10657705B2 (en) System and method for rendering shadows for a virtual environment
JP5242788B2 (ja) グラフィックス・イメージングのためのパーティション・ベースのパフォーマンス解析
CN114428573B (zh) 特效图像处理方法、装置、电子设备及存储介质
EP4231243A1 (en) Data storage management method, object rendering method, and device
CN114627225A (zh) 图形渲染方法、装置及存储介质
CN114693894A (zh) 一种虚拟世界中图片转换为积木块的方法、系统及装置
CN114463400A (zh) 一种基于纹理对象分割的纹理采样方法与系统
CN114904274A (zh) 云游戏的画面渲染方法、装置、电子设备以及存储介质
CN115705668A (zh) 一种视图绘制的方法、装置及存储介质
CN112752131B (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40072024

Country of ref document: HK