CN117011492B - 图像渲染方法、装置、电子设备及存储介质 - Google Patents

图像渲染方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117011492B
CN117011492B CN202311200361.6A CN202311200361A CN117011492B CN 117011492 B CN117011492 B CN 117011492B CN 202311200361 A CN202311200361 A CN 202311200361A CN 117011492 B CN117011492 B CN 117011492B
Authority
CN
China
Prior art keywords
rendering
grid
vertex
style information
target
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
CN202311200361.6A
Other languages
English (en)
Other versions
CN117011492A (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 CN202311200361.6A priority Critical patent/CN117011492B/zh
Publication of CN117011492A publication Critical patent/CN117011492A/zh
Application granted granted Critical
Publication of CN117011492B publication Critical patent/CN117011492B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • G06T17/205Re-meshing
    • 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
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/05Geographic models
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本申请实施例公开了一种图像渲染方法、装置、电子设备及存储介质,通过生成渲染样式信息对应的顶点标识,将顶点标识添加至渲染样式信息以及所关联的待渲染网格的顶点属性中,通过顶点标识来标记渲染样式信息对应的顶点,将多个待渲染网格进行合并得到至少一个目标网格,再将目标网格与各个渲染样式信息发送至图形处理器,以供图形处理器根据顶点标识筛选出各个渲染样式信息对应的目标像素片段进行渲染,在实现独立渲染各个待渲染网格的基础上,有效地减少网格的数量,降低与图形处理器之间的交互频率,优化图像渲染的卡顿现象,提高图像渲染的流畅性,可广泛应用于地图、导航、智慧交通、辅助驾驶、影视制作、虚拟现实等场景。

Description

图像渲染方法、装置、电子设备及存储介质
技术领域
本申请涉及图像处理技术领域,特别是涉及一种图像渲染方法、装置、电子设备及存储介质。
背景技术
随着计算机技术的发展,图像渲染已经成为多个领域的关键技术之一。例如,在地图的使用场景中,通常基于网格数据来渲染出地图界面进行显示。相关技术中,在进行精度较高的图像渲染时,由于待渲染的元素的数量较多,相应地网格的数量也会较多,同时网格的数量会随着业务开发而成倍地增长,使得在图像渲染时会出现卡顿,降低了图像渲染的流畅性。
发明内容
以下是对本申请详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
本申请实施例提供了一种图像渲染方法、装置、电子设备及存储介质,能够提高图像渲染的流畅性。
一方面,本申请实施例提供了一种图像渲染方法,包括:
获取多个待渲染网格以及各个所述待渲染网格关联的渲染样式信息;
生成所述渲染样式信息对应的顶点标识,将所述顶点标识添加至所述渲染样式信息中,以及添加至所关联的所述待渲染网格的顶点属性中;
将多个所述待渲染网格进行合并,得到至少一个目标网格,将所述目标网格配置为被对应的所述渲染样式信息共同引用的网格;
将所述目标网格与各个所述渲染样式信息发送至图形处理器,以供所述图形处理器根据所述顶点标识筛选出各个所述渲染样式信息对应的目标像素片段进行渲染,其中,所述目标像素片段基于所述目标网格中的目标顶点转换得到,所述目标顶点与所述渲染样式信息具备相同的所述顶点标识。
另一方面,本申请实施例提供了一种图像渲染方法,包括:
获取目标网格和多个渲染样式信息,其中,所述目标网格由各个所述渲染样式信息关联的待渲染网格合并得到,所述待渲染网格的顶点属性以及所述渲染样式信息均包括顶点标识,所述目标网格被配置为被所述渲染样式信息共同引用的网格;
根据所述顶点标识筛选出各个所述渲染样式信息对应的目标像素片段进行渲染,其中,所述目标像素片段由所述目标网格中的目标顶点转换得到,所述目标顶点与所述渲染样式信息具备相同的所述顶点标识。
另一方面,本申请实施例还提供了一种图像渲染装置,包括:
信息获取模块:用于获取多个待渲染网格以及各个待渲染网格关联的渲染样式信息;
顶点标识获取模块:用于生成渲染样式信息对应的顶点标识,将顶点标识添加至渲染样式信息中,以及添加至所关联的待渲染网格的顶点属性中;
网格合并模块:用于将多个待渲染网格进行合并,得到至少一个目标网格,将目标网格配置为被对应的渲染样式信息共同引用的网格;
渲染信息发送模块:用于将目标网格与各个渲染样式信息发送至图形处理器,以供图形处理器根据顶点标识筛选出各个渲染样式信息对应的目标像素片段进行渲染,其中,目标像素片段基于目标网格中的目标顶点转换得到,目标顶点与渲染样式信息具备相同的顶点标识。
进一步,上述网格合并模块具体用于:
生成目标网格的第一网格标识,其中,第一网格标识用于标记不同的目标网格;
将各个目标网格分别作为一个渲染批次,在当前的渲染批次中,对于目标网格对应的各个渲染样式信息,分别根据第一网格标识从网格缓存区中读取目标网格,将读取到的目标网格配置为被渲染样式信息共同引用的网格。
进一步,渲染样式信息被配置为样式对象,上述网格合并模块1703还用于:
将对应同一个目标网格的多个样式对象合并为样式对象列表;
根据第一网格标识、目标网格和样式对象列表,构建目标网格所在的渲染批次的批次对象。
进一步,上述网格合并模块还用于:
遍历批次对象中的样式对象列表,获取样式对象列表中当前的样式对象;
为当前的样式对象创建场景节点对象,根据样式对象创建材质对象,将材质对象与场景节点对象进行绑定,将样式对象中的顶点标识添加至材质对象;
根据第一网格标识从网格缓存区中读取目标网格,将读取到的目标网格配置为被场景节点对象共同引用的网格
进一步,目标网格由多个网格类型相同的待渲染网格合并得到,网格类型用于指示待渲染网格所建模的元素的类型,上述网格合并模块还用于:
获取待渲染网格的网格类型以及渲染样式信息的样式类型;
将网格类型与样式类型进行拼接,得到目标网格的第一网格标识。
进一步,上述网格合并模块还用于:
当根据第一网格标识无法从网格缓存区中读取目标网格时,将第一网格标识以及目标网格关联写入至网格缓存区中。
进一步,上述顶点标识获取模块还用于:
当同一个待渲染网格分别关联不同的渲染样式信息时,获取当前的待渲染网格的第二网格标识,根据第二网格标识得到所关联的各个渲染样式信息对应的顶点标识,其中,第二网格标识用于标记不同的待渲染网格;
当同一个渲染样式信息分别关联不同的待渲染网格时,获取渲染样式信息的样式标识,将样式标识作为渲染样式信息对应的顶点标识,其中,样式标识用于标记不同的渲染样式信息;
当不同的待渲染网格分别关联不同的渲染样式信息时,获取第二网格标识,根据第二网格标识得到所关联的渲染样式信息对应的顶点标识,或者,获取样式标识,将样式标识作为渲染样式信息对应的顶点标识。
进一步,待渲染网格被划分为多个子网格,各个子网格分别关联不同的渲染样式信息,上述顶点标识获取模块还用于:
获取用于标记子网格的子网格标识;
将第二网格标识和子网格标识进行拼接,得到所关联的各个渲染样式信息对应的顶点标识。
另一方面,本申请实施例还提供了一种图像渲染装置,包括:
渲染信息接收模块:用于获取目标网格和多个渲染样式信息,其中,目标网格由各个渲染样式信息关联的待渲染网格合并得到,待渲染网格的顶点属性以及渲染样式信息均包括顶点标识,目标网格被配置为被渲染样式信息共同引用的网格;
渲染模块:用于根据顶点标识筛选出各个渲染样式信息对应的目标像素片段进行渲染,其中,目标像素片段由目标网格中的目标顶点转换得到,目标顶点与渲染样式信息具备相同的顶点标识。
进一步,渲染模块具体用于:
对目标网格中的各个顶点进行光栅化,得到多个候选像素片段,其中,候选像素片段的片段属性包括片段标识,片段标识由对应的顶点中顶点标识插值得到;
将片段标识与当前的渲染样式信息中的顶点标识进行一致性匹配,当匹配结果为相一致时,将候选像素片段确定为目标像素片段,将目标像素片段进行渲染。
进一步,渲染模块还用于:
在渲染管线中创建全局变量,从当前的渲染样式信息中获取顶点标识,将全局变量赋值为顶点标识;
遍历多个候选像素片段,将当前的候选像素片段的片段标识与全局变量进行一致性匹配。
进一步,渲染模块还用于:
当匹配结果为不一致时,调用片元着色器中的丢弃函数,基于丢弃函数将候选像素片段进行裁剪;
或者,当匹配结果为不一致时,将候选像素片段的透明度设置为预设值。
另一方面,本申请实施例还提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述的图像渲染方法。
另一方面,本申请实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行实现上述的图像渲染方法。
另一方面,本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行实现上述的图像渲染方法。
本申请实施例至少包括以下有益效果:通过获取多个待渲染网格以及各个待渲染网格关联的渲染样式信息,生成渲染样式信息对应的顶点标识,将顶点标识添加至渲染样式信息以及所关联的待渲染网格的顶点属性中,能够通过顶点标识来标记渲染样式信息对应的顶点,然后,将多个待渲染网格进行合并,得到至少一个目标网格,将目标网格配置为被对应的渲染样式信息共同引用的网格,从而有效地减少了网格的数量,再将目标网格与各个渲染样式信息发送至图形处理器,以供图形处理器根据顶点标识筛选出各个渲染样式信息对应的目标像素片段进行渲染,可见,即便将多个待渲染网格合并为目标网格,图形处理器也能够在渲染时通过顶点标识来对目标网格进行拆分,筛选出各个渲染样式信息对应的目标像素片段进行渲染,从而在实现独立渲染各个待渲染网格的基础上,有效地减少了网格的数量,降低了与图形处理器之间的交互频率,优化了图像渲染的卡顿现象,提高了图像渲染的流畅性。
本申请的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。
附图说明
附图用来提供对本申请技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
图1为本申请实施例在高精地图制作场景的应用示意图。
图2为本申请实施例在游戏画面渲染场景的应用示意图。
图3为本申请实施例提供的一种可选的实施环境的示意图。
图4为本申请实施例提供的图像渲染方法的一种可选的流程图。
图5为本申请实施例提供的待渲染网格的示意图。
图6为本申请实施例提供的待渲染网格的一种可选的示意图。
图7为本申请实施例提供的待渲染网格的另一种可选的示意图。
图8为本申请实施例提供的待渲染网格与渲染样式信息的关联示意图。
图9为本申请实施例提供的将目标网格配置为被场景节点对象共同引用的网格的流程示意图。
图10为本申请实施例中目标网格的场景节点对象的示意图。
图11为本申请实施例提供的图像渲染方法的一种可选的流程图。
图12为本申请实施例提供的渲染示意图。
图13是本申请实施例提供的另一种可选的渲染示意图。
图14为本申请实施例提供的另一种可选的渲染示意图。
图15为本申请实施例提供的***逻辑架构示意图。
图16为本申请实施例的图像渲染方法的整体处理流程图。
图17为本申请实施例提供的图像渲染装置的一种可选的结构示意图。
图18为本申请实施例提供的图像渲染装置的另一种可选的结构示意图。
图19为本申请实施例提供的终端的部分结构框图。
图20为本申请实施例提供的服务器的部分结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
需要说明的是,在本申请的各个具体实施方式中,当涉及到需要根据目标对象属性信息或属性信息集合等与目标对象特性相关的数据进行相关处理时,都会先获得目标对象的许可或者同意,而且,对这些数据的收集、使用和处理等,都会遵守相关法律法规和标准。其中,目标对象可以是用户。此外,当本申请实施例需要获取目标对象属性信息时,会通过弹窗或者跳转到确认页面等方式获得目标对象的单独许可或者单独同意,在明确获得目标对象的单独许可或者单独同意之后,再获取用于使本申请实施例能够正常运行的必要的目标对象相关数据。
为便于理解本申请实施例提供的技术方案,这里先对本申请实施例使用的一些关键名词进行解释:
图像渲染:是指将三维场景或图形数据转化为二维图像的过程。在计算机图形学中,图像渲染涉及到对场景中的几何形状、光照、材质等进行计算和模拟,最终生成最终的图像结果。图像渲染的主要目标是产生逼真、具有阴影、反射、折射、纹理等效果的二维图像,以模拟现实世界的光照和材质属性,用于视觉呈现、动画制作等领域。
Unity:是一个跨平台游戏引擎和开发工具,提供一个可视化的开发环境,允许开发者通过拖放和编写脚本来创建游戏场景、角色、动画、特效等元素。同时支持多种平台,包括Windows、macOS、Linux、iOS、Android等,使开发者能够将游戏发布到不同的操作***和设备上。可用于创建二维、三维游戏和交互式应用程序,广泛应用于虚拟现实、增强现实、模拟仿真等领域。
着色器(Shader)是计算机图形学中一种特殊的程序,用于描述和控制图形渲染管线中的光照、阴影、材质等效果。它是一种在图形处理器(Graphics Processing Unit,GPU)上运行的程序,负责计算和处理图形的每个像素或顶点的属性和外观。在图形渲染过程中,Shader可以定义物体的颜色、纹理、透明度、反射、折射等视觉效果,以及如何受到光照的影响。通过编写Shader代码,开发者可以自定义渲染效果,实现各种独特的视觉效果,从而使游戏或应用程序更加逼真、艺术化或独特。
随着计算机技术的发展,图像渲染已经成为多个领域的关键技术之一。例如,在地图的使用场景中,通常基于网格数据来渲染出地图界面进行显示。相关技术中,在进行精度较高的图像渲染时,由于待渲染的元素的数量较多,相应地网格的数量也会较多,同时网格的数量会随着业务开发而成倍地增长,使得在图像渲染时会出现卡顿,降低了图像渲染的流畅性。
基于此,本申请实施例提供了一种图像渲染方法、装置、电子设备及存储介质,能够提高图像渲染的流畅性。
本申请实施例提供的方法可应用于各种场景,包括但不限于地图、导航、智慧交通、辅助驾驶、影视制作、虚拟现实等场景。
示例性地,参照图1,图1为本申请实施例在高精地图制作场景的应用示意图。在高精地图制作场景,通过本申请实施例的图像渲染方法,进行包括地形渲染、植被渲染、水体渲染、建筑物和结构物渲染、阴影和光照渲染以及特效渲染等渲染过程。其中,地形渲染是通过使用合适的地形纹理、高程数据和着色技术将地图的地形特征呈现出来,这里的地形包括山脉、河流、湖泊、平原等。植被渲染是通过添加植被纹理和模型,在地图中渲染树木、草地、灌木等植被元素,以此增加高精地图的自然感和生态环境。水体渲染是对于海洋、湖泊、河流等水体,使用适当的着色和反射技术来实现真实感的水体渲染,以使高精地图中的水体看起来更具质感和逼真度。建筑物和结构物渲染是通过使用合适的纹理和光照效果,渲染出建筑物的外观和细节,使其在高精地图中更加逼真。阴影和光照渲染是通过模拟太阳光照射在地图中创建动态的阴影效果,增加场景的深度感和真实感。特效渲染是应用各种特效,如雨、雪、火等增强地图的沉浸感。可见,本申请实施例的图像渲染方法能够适用于地图制作场景,将地理信息和环境特征以视觉化的方式展示给对象,生成逼真、生动的高精地图。
示例性地,参照图2,图2为本申请实施例在游戏画面渲染场景的应用示意图。本申请实施例的图像渲染方法还可以用于游戏画面渲染场景,将游戏中的虚拟场景、角色和特效以逼真的方式呈现给目标对象。其中游戏画面渲染过程包括:对山脉、河流、森林等地形特征的地形渲染;使用角色模型、纹理贴图和骨骼动画技术的游戏角色渲染;通过模拟不同类型的光源(如太阳、灯泡等)以及阴影投射,用以营造真实的光照变化和场景深度感的场景渲染;通过使用粒子***、着色器和贴图动画等技术,实现包括火焰、烟雾、水体模拟等各种动态特效的特效渲染;通过使用高分辨率的纹理贴图和合适的材质属性(如金属、玻璃、木材),增加游戏场景的细节和真实感的纹理和材质渲染;为游戏添加色彩校正、景深、运动模糊等效果,以提升视觉效果和艺术表现的后期渲染等。本申请实施例的图像渲染方法在游戏画面渲染过程中能够创建预期的视觉效果,提升游戏的沉浸感和体验感。
参照图3,图3为本申请实施例提供的一种可选的实施环境的示意图,该实施环境包括终端301和数据处理服务器302,其中,终端301和数据处理服务器302之间通过通信网络连接。
示例性地,以高精地图制作场景为例,终端301可以为车载终端,数据处理服务器302可以获取多个待渲染网格以及各个待渲染网格关联的渲染样式信息,数据处理服务器302的中央处理器生成渲染样式信息对应的顶点标识,将顶点标识添加至渲染样式信息中,以及添加至所关联的待渲染网格的顶点属性中,再将多个待渲染网格进行合并,得到至少一个目标网格,将目标网格配置为被对应的渲染样式信息共同引用的网格,再将目标网格与各个渲染样式信息发送至数据处理服务器302的图形处理器,以供图形处理器根据顶点标识筛选出各个渲染样式信息对应的目标像素片段进行渲染,其中,目标像素片段基于目标网格中的目标顶点转换得到,目标顶点与渲染样式信息具备相同的顶点标识,数据处理服务器302最后将渲染得到的地图数据发送至终端301进行显示。
除此以外,数据处理服务器302也可以将多个待渲染网格以及各个待渲染网格关联的渲染样式信息发送至终端301,终端301的中央处理器生成渲染样式信息对应的顶点标识,将顶点标识添加至渲染样式信息中,以及添加至所关联的待渲染网格的顶点属性中,再将多个待渲染网格进行合并,得到至少一个目标网格,将目标网格配置为被对应的渲染样式信息共同引用的网格,再将目标网格与各个渲染样式信息发送至终端301的图形处理器,以供图形处理器根据顶点标识筛选出各个渲染样式信息对应的目标像素片段进行渲染后显示。
相应地,终端301可以将渲染得到的地图数据显示在地图产品导航界面中,增强导航界面的可视化效果,帮助驾驶对象更好地感知周围道路环境,例如清晰地看到路面状况、街道布局、交叉口等细节信息,提高驾驶对象对驾驶环境的了解和反应能力,从而降低事故发生概率,提升驾驶的安全性。其中,地图产品可以是高精度虚拟地图、普通精度地图、城市道路模型等各种地图产品。
终端301可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、智能家电、车载终端等,但并不局限于此。终端301以及数据处理服务器302可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例在此不做限制。
数据处理服务器302可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。另外,数据处理服务器302还可以是区块链网络中的一个节点服务器。
下面详细描述本申请实施例提供的图像渲染方法的原理。
参照图4,图4为本申请实施例提供的图像渲染方法的一种可选的流程图,该图像渲染方法应用于中央处理器,可以由服务器执行,或者也可以由终端执行,或者也可以由服务器和终端配合执行,在本申请实施例中,以该方法由服务器执行为例进行说明。该图像渲染方法包括但不限于以下步骤401至步骤404。
步骤401:获取多个待渲染网格以及各个待渲染网格关联的渲染样式信息。
其中,根据业务需求建立三维模型后,利用网格表示三维物体或表面的基本几何结构,网格由顶点、边和面组成,通过连接顶点、边和面来描述物体的外观和形状。网格中每个顶点都有其在三维空间中的坐标,边描述了两个顶点之间的连接关系,而面则是由边所围成的平面区域。其中,网格具有不同的拓扑结构,例如三角网格和四边形网格。在三角网格中,每个面由三条边组成,而四边形网格则由四条边组成。通常三角网格是最常见和广泛使用的网格类型,因为其具有更简单的结构和更好的计算性能。通过对网格进行顶点调整、面片细分、纹理映射等操作,可以创建出逼真的三维图像,并在渲染引擎中进行光照、阴影、纹理等处理。该实施例中,根据业务渲染需求获取一个或多个未渲染的网格作为待渲染网格,然后根据具体的业务需求进行后续的渲染过程。
其中,待渲染网格关联的渲染样式信息指的是根据业务需求为待渲染网格执行的外观和效果等相关的属性参数,用来描述待渲染网格在渲染后的图像中呈现的样式。该实施例中渲染样式信息包括颜色和材质属性、纹理属性、光照属性、透明度属性、反射属性等参数。其中,颜色和材质属性用于定义物体的表面颜色、反射率和光泽度,具体地,颜色和材质属性可以是不同的RGB值或材质贴图,用以实现不同的外观效果,如金属、塑料、木纹等。纹理属性用于定义包括纹理映射、法线贴图、凹凸贴图等纹理效果,利用不同的纹理效果将图像贴片映射到物体的表面,使物体看起来更真实、具有细节和复杂性。光照和阴影属性用于定义光照的类型、颜色、强度和方向,以及生成的阴影效果,结合光照和阴影属性可以改变物体的感知形状和明暗程度,提供更加逼真的场景渲染效果。透明度属性用于控制物体的透明度和半透明度,使其能够显示出背后物体的一部分或全部,透明度属性在渲染玻璃、液体和烟雾等场景中非常重要。反射属性用于定义物体表面如何反射光线并生成颜色,该参数用于设定计算光照时使用的不同算法和参数。可以理解的是,渲染样式信息的选择和应用取决于具体的应用场景和业务需求。另外,待渲染网格也可以按照顺序关联多种不同的渲染样式信息,通过调整和组合这些渲染样式信息获得丰富多样的视觉效果,实现对渲染对象外观的精确控制。
上述步骤在获取待渲染网格的同时,获取该待渲染网格关联的渲染样式信息。
步骤402:生成渲染样式信息对应的顶点标识,将顶点标识添加至渲染样式信息中,以及添加至所关联的待渲染网格的顶点属性中。
其中,为了对渲染样式信息和待渲染网格之间的关系进行关联,为每个渲染样式信息生成顶点标识,并将顶点标识与渲染样式信息和待渲染网格关联,确保渲染样式信息和待渲染网格之间的唯一关系,避免渲染过程中出现冲突或混淆。并且通过使用顶点标识,在不同的渲染场景中可以根据顶点标识对应的渲染样式信息获取待渲染网格所需的样式,实现个性化和定制化的渲染效果。另外可以构建渲染样式信息列表,用于存储渲染样式信息和顶点标识的对应关系,在需要时共享、复用和组合这些渲染样式信息。其中,顶点标识的格式可以根据实际业务需求设定。如果有新的渲染样式信息,则根据业务需求约定的格式生成新的顶点标识,并将其和新的渲染样式信息关联,将两者的关联关系存储在渲染样式信息列表中。
在一种可能的实现方式中,待渲染网格可能具有相同或者不同的渲染需求。此时需要根据不同的渲染需求生成渲染样式信息对应的顶点标识。渲染样式信息对应的顶点标识可以根据待渲染网格的第二网格标识或者渲染样式信息对应的样式标识得到。生成渲染样式信息对应的顶点标识的过程具体包括步骤:1)当同一个待渲染网格分别关联不同的渲染样式信息时,获取当前的待渲染网格的第二网格标识,根据第二网格标识得到所关联的各个渲染样式信息对应的顶点标识,其中,第二网格标识用于标记不同的待渲染网格;2)当同一个渲染样式信息分别关联不同的待渲染网格时,获取渲染样式信息的样式标识,将样式标识作为渲染样式信息对应的顶点标识,其中,样式标识用于标记不同的渲染样式信息;3)当不同的待渲染网格分别关联不同的渲染样式信息时,获取第二网格标识,根据第二网格标识得到所关联的渲染样式信息对应的顶点标识,或者,获取样式标识,将样式标识作为渲染样式信息对应的顶点标识。
其中,不同待渲染网格的需求有三种情况,第一种情况是:同一个待渲染网格关联多个不同的渲染样式信息,此时获取用于标记待渲染网格的第二网格标识,将多个不同的渲染样式信息的顶点标识都设置成这个第二网格标识,使得将待渲染网格以及对应的多个渲染样式信息利用第二网络标识对应起来。第二种情况是:多个不同的待渲染网格关联同一个渲染样式信息,此时渲染样式信息的顶点标识为该渲染样式信息的样式标识,样式标识可以用于区分不同的渲染样式信息。第三种情况是:不同的待渲染网格分别关联不同的渲染样式信息,此时顶点标识可以是待渲染网格对应的第二网格标识也可以是渲染样式信息对应的样式标识。总之,上述三种方式均可以有效地实现待渲染网格和渲染样式信息之间的关联,使得在渲染过程中能够按照预期的方式应用不同的样式信息。
在一种可能的实现方式中,待渲染网格中顶点具有对应的顶点属性,例如,位置、法线、颜色、纹理坐标、切线和副切线等。其中,位置表示顶点的空间坐标,用于确定顶点在三维空间中的位置。法线是垂直于网格面片的矢量,用于描述顶点所在网格面片的方向和光照信息。法线用于计算光照和阴影效果。颜色用于在渲染过程中给顶点着色,使其在屏幕上呈现出不同的颜色。纹理坐标用于将纹理映射到顶点上,纹理坐标是二维坐标,指定了顶点在纹理图像中的位置,用于实现贴图效果。切线和副切线用于在三维模型中进行法线映射和纹理映射时的辅助属性。
由于网格具有拓扑结构,网格中包括多个顶点,而顶点和边可以构成面片,因此网格中包括多个三角面片。以三角面片为例,每个面片由三个顶点组成,因此为了表示顶点的位置,顶点属性中还包括顶点索引,顶点索引用于指示这些顶点在顶点列表中的位置。具体来说,顶点索引是一个整数数组,每个元素表示一个顶点在顶点列表中的索引值。通过顶点索引,可以确定哪些顶点共同构成一个面片。例如,如果顶点索引为[0,1,2],则表示顶点列表中的第0、1、2个顶点组成了一个面片。另外,由于每个网格中包括至少一个面片,因此网格中的顶点索引可以构成一个顶点索引列表。使用顶点索引的好处是可以减少存储和处理顶点数据的开销。相比于直接存储每个面片的顶点坐标,通过顶点索引可以共享相同顶点的数据,避免冗余存储。这在包含大量重复顶点的复杂模型中尤为重要,可以节省存储空间并提高渲染效率。另外,顶点索引可以与顶点属性一起使用。例如,对于每个面片的顶点坐标、法线、纹理坐标等属性,可以通过顶点索引进行对应匹配,从而为每个面片准确地获取相应的属性数据。
在一种可能的实现方式中,待渲染网格的数量为多个,且每个待渲染网格中均包含多个顶点,利用渲染样式信息对待渲染网格进行渲染实质上是利用渲染样式信息对顶点进行渲染,因此本申请实施例在待渲染网格中顶点的顶点属性中添加渲染样式信息对应的顶点标识。参照图5,图5为本申请实施例提供的待渲染网格的示意图。例如待渲染网格的数量为3个,分别是Mesh1、Mesh2、Mesh3,Mesh1中有2个顶点d1和d2;Mesh2中有3个顶点d3、d4和d5;Mesh3中有1个顶点d6(需要补充说明的是,为了便于描述原理,这里只取数量较少的顶点进行说明,实际上一个Mesh中的顶点数量远不止图5所示的数量),根据业务需求获取的渲染样式信息包括y1、y2和y3。假设Mesh1关联的渲染样式信息为y1,Mesh2关联的渲染样式信息为y2,Mesh3关联的渲染样式信息为y3。此时,为上述实施例中第三种情况,不同的待渲染网格关联不同的渲染样式信息,假设顶点标识根据待渲染网格的第二网格标识得到,则在渲染样式信息y1中添加对应的顶点标识“Mesh1”,在渲染样式信息y2中添加对应的顶点标识“Mesh2”,在渲染样式信息y3中添加对应的顶点标识“Mesh3”。同时,在顶点d1的顶点属性、顶点d2的顶点属性中增加顶点标识“Mesh1”,在顶点d3的顶点属性、顶点d4的顶点属性和顶点d5的顶点属性中增加顶点标识“Mesh2”,在顶点d6的顶点属性中增加顶点标识“Mesh3”。使得能够根据顶点标识能够定位到顶点所属的待渲染网络以及待渲染网格所关联的渲染样式信息。
在一种可能的实现方式中,如果待渲染网格中不同区域具有不同的渲染需求,则可以将待渲染网格划分成子网格,另外各个子网格可以分别关联相同或者不同的渲染样式信息。将待渲染网格划分为多个子网格,根据第二网格标识得到所关联的各个渲染样式信息对应的顶点标识的过程具体包括步骤:获取用于标记子网格的子网格标识,将第二网格标识和子网格标识进行拼接,得到所关联的各个渲染样式信息对应的顶点标识。
示例性地,在地图渲染场景中,待渲染网格可以包括道路数据,将道路进一步细分成:机动车道、自行车道和人行道,此时从道路数据中得到机动车道相关数据作为一个子网格,得到自行车道相关数据作为一个子网格以及得到人行道相关数据作为一个子网格。
其中,将第二网格标识和子网格标识进行拼接,得到顶点属性对应的顶点标识,其中可以利用预设的符号进行拼接得到拼接标识,例如预设的符号可以是:“+”、“-”、“#”等。下面本实施例中选择“#”符号进行示意。
在一种可能的实现方式中,待渲染网格划分得到的子网格的大小可以不同,每个子网格中包含的顶点数量也不限定,每个子网格关联的渲染样式信息可以相同也可以不同。参照图6,图6为本申请实施例提供的待渲染网格的又一示意图。待渲染网格的数量为2个,分别是Mesh4和Mesh5,业务需求对应的渲染样式信息包括y4、y5、y6、y7和y8。其中,Mesh4中有5个顶点d7、d8、d9、d10和d11;Mesh5中有4个顶点d12、d13、d14和d15。根据业务需求将待渲染网格Mesh4划分成3个子网格,子网格分别是SubMesh41、SubMesh42和SubMesh43,其中,SubMesh41中包含的顶点为d7和d8,SubMesh42中包含的顶点为d9,SubMesh43中包含的顶点为d10和d11。将待渲染网格Mesh5划分成2个子网格,子网格分别是SubMesh51和SubMesh51,其中,SubMesh51中包含的顶点为d12,SubMesh52中包含的顶点为d13、d14和d15。假设SubMesh41关联的渲染样式信息为y4,SubMesh42关联的渲染样式信息为y5,SubMesh43关联的渲染样式信息为y6,SubMesh51关联的渲染样式信息为y7,SubMesh52关联的渲染样式信息为y8。
假设图6中,待渲染网格Mesh4和Mesh5对应的第二网格标识为“Mesh4”和“Mesh5”,子网格SubMesh41、SubMesh42和SubMesh43对应的子网格标识,分别是“SubMesh41”、“SubMesh42”和“SubMesh43”,子网格SubMesh51和SubMesh52对应的子网格标识,分别是“SubMesh51”和“SubMesh52”,则进行第二网格标识和子网格标识拼接后,子网格SubMesh41、SubMesh42和SubMesh43分别对应的拼接标识为:“Mesh4#SubMesh41”、“Mesh4#SubMesh42”和“Mesh4#SubMesh43”,子网络SubMesh51和SubMesh52分别对应的拼接标识为:“Mesh5#SubMesh51”和“Mesh5#SubMesh52”。
因此,渲染样式信息为y4对应的顶点标识为“Mesh4#SubMesh41”,渲染样式信息为y5对应的顶点标识为“Mesh4#SubMesh42”,渲染样式信息为y6对应的顶点标识为“Mesh4#SubMesh43”,渲染样式信息为y7对应的顶点标识为“Mesh5#SubMesh51”,渲染样式信息为y8对应的顶点标识为“Mesh5#SubMesh52”。此时,在Mesh4的顶点d7的顶点属性、顶点d8的顶点属性中添加顶点标识“Mesh4#SubMesh41”,在顶点d9的顶点属性中添加顶点标识“Mesh4#SubMesh42”,在顶点d10的顶点属性和顶点d11的顶点属性中添加顶点标识“Mesh4#SubMesh43”,在顶点d12的顶点属性中添加顶点标识“Mesh5#SubMesh51”,在顶点d13、顶点d14和顶点d15的顶点属性中添加顶点标识“Mesh5#SubMesh52”。
另外,如果不同的子网格需要设置相同的渲染样式信息,则将获取渲染样式信息的样式标识,将样式标识作为渲染样式信息对应的顶点标识,对子网格中顶点的顶点属性添加该样式标识。
上述实施例中,如果待渲染网格划分成子网格后,则子网格关联的渲染样式信息的顶点标识由第二网格标识和子网格标识拼接得到,而未划分子网格的待渲染网格的顶点标识可以根据待渲染网格的第二网格标识得到。另外,多个待渲染网格并非全部都需要划分成子网格,可以根据业务需求,仅选取其中一部分划分子网格。参照图7,图7为本申请实施例提供的待渲染网格的又一示意图。图7中示例了5个待渲染网格,仅其中第三个待渲染网格具有对应的子网格。因此第三个待渲染网格中子网格关联的渲染样式信息的顶点标识由待渲染网格对应地第二网格标识和子网格对应地子网格标识拼接得到,其他待渲染网格关联的渲染样式信息的顶点标识由待渲染网格对应的第二网格标识得到。
本申请实施例中待渲染网格和渲染样式信息之间的关联根据实际业务需求设定。相同的渲染样式信息可以关联不同的待渲染网格,或者相同的渲染样式信息可以关联不同的待渲染网格中的子网格,或者相同的渲染样式信息可以关联不同待渲染网格中部分子网格以及其他的待渲染网格。参照图8,图8为本申请实施例提供的待渲染网格与渲染样式信息的关联示意图。图8中示例了5个待渲染网格,分别是Mesh6、Mesh7、Mesh8、Mesh9和Mesh10,其中,Mesh6包括2个子网格,分别是subMesh61和subMesh62,Mesh8包括2个子网格,分别是subMesh81、subMesh82,渲染样式信息包括y9、y10和y11。其中,Mesh7、Mesh8的subMesh81和Mesh6的subMesh62关联渲染样式信息y9;Mesh6的subMesh61和Mesh8的subMesh82关联渲染样式信息y10;Mesh9和Mesh10关联渲染样式信息y11。
根据上述实施例中顶点标识的设置方法,由于渲染样式信息y9同时关联待渲染网格以及其他待渲染网格的多个子网格,因此利用渲染样式信息y9的样式标识作为顶点标识,同样地,渲染样式信息y10和渲染样式信息y11也利用样式标识作为顶点标识。假如渲染样式信息y9的样式标识为“y9”,渲染样式信息y10的样式标识为“y10”,渲染样式信息y11的样式标识为“y11”。此时,将关联渲染样式信息y9的待渲染网格Mesh7以及子网格subMesh81和subMesh62中顶点的顶点标识都设置为“y9”,将关联渲染样式信息y10的子网格subMesh61和subMesh82中顶点的顶点标识都设置为“y10”,将关联渲染样式信息y11的待渲染网格Mesh9和Mesh10中顶点的顶点标识都设置为“y11”。
经过上述实施例对渲染样式信息和顶点属性都添加相应的顶点标识,通过顶点标识能够标记每个顶点对应的渲染样式信息,无需依赖于其所处的待渲染网格以及其在顶点索引列表中的索引位置。如果业务需求更新,需要更改部分顶点的渲染样式信息,则获取新的渲染样式信息对应的顶点标识,利用该顶点标识更新对应顶点的顶点属性。通过添加顶点标识可以增强渲染管线的灵活性和扩展性,能够根据业务需要选择渲染哪些顶点,以满足特定的渲染需求。本申请实施例将顶点标识添加到顶点属性中可以提供更灵活、易于管理和操作的顶点的数据结构,能够实现局部定制渲染。
步骤403:将多个待渲染网格进行合并,得到至少一个目标网格,将目标网格配置为被对应的渲染样式信息共同引用的网格。
其中,Unity的渲染过程中,主线程(Unity Main)负责处理场景更新和渲染等任务,渲染操作是在主线程上执行的,具体包括创建、修改和上传Mesh数据。而Unity的渲染管线并不支持多线程同时访问和修改渲染资源。在渲染过程中,主线程需要按照特定的顺序执行各个渲染阶段,以确保正确的渲染结果。如果在这个过程中有其他线程修改了渲染资源,就会破坏渲染流水线的完整性,导致渲染错误。为了避免线程冲突错误,Unity要求所有与渲染相关的操作必须在主线程上进行,并且采用同步方式进行。这样可以确保渲染资源在渲染管线中的正确使用,并保持线程安全。可以理解的是,在Unity Main线程以同步方式进行上传时,过于频繁会导致渲染线程卡顿,在渲染时,需要避免上传的Mesh数量过多,影响渲染性能。
因此,本申请实施例中将多个待渲染网格按照网格类型进行合并,将相同的网格类型对应的待渲染网格合并在一起,进而得到每个类型对应的目标网格,有效地减少了网格的数量。其中,网格类型用于指示待渲染网格所建模的元素的类型。这里元素的类型可以根据具体的应用场景设定,例如地形建模场景中网格类型包括地表、山脉、丘陵等自然环境中的地形;建筑建模场景中网格类型包括房屋、城市、建筑物等人造结构;人物建模场景中网格类型包括人类、生物或虚拟角色;物体建模场景中网格类型包括家具、车辆、道具等实体物体;植被建模场景中网格类型包括树木、草地、植物等自然环境中的植被;道路建模场景中网格类型包括道路、街道、路径等交通路线;水体建模场景中网格类型包括湖泊、河流、海洋等水体;天空建模场景中网格类型包括天空、云层、大气效果等天空元素;特效建模场景中网格类型包括火焰、烟雾、***等特殊效果;UI界面建模场景中网格类型包括用户界面、图标、按钮等与用户交互的界面元素。
在一种可能的实现方式中,将目标网格配置为被对应的渲染样式信息共同引用的网格,包括:生成目标网格的第一网格标识,其中,第一网格标识用于标记不同的目标网格;接着将各个目标网格分别作为一个渲染批次,在当前的渲染批次中,对于目标网格对应的各个渲染样式信息,分别根据第一网格标识从网格缓存区中读取目标网格,将读取到的目标网格配置为被渲染样式信息共同引用的网格。
其中,由于目标网格由多个网格类型相同的待渲染网格合并得到,而网格类型用于指示待渲染网格所建模的元素的类型,因此生成目标网格的第一网格标识的过程具体包括:获取待渲染网格的网格类型以及渲染样式信息的样式类型,将网格类型与样式类型进行拼接,得到目标网格的第一网格标识。
示例性地,假设渲染样式信息包括颜色和材质属性、纹理属性、光照属性、透明度属性、反射属性等参数,因此渲染样式信息的样式类型可以包括:颜色类型、材质类型、纹理类型、光照类型、透明度类型、反射类型等。假设待渲染网格所建模的元素的类型为道路,则待渲染网格的网格类型为道路类型,渲染样式信息的样式类型为颜色类型,且待渲染的颜色为灰色。此时将网格类型与样式类型进行拼接,得到目标网格的第一网格标识为:道路类型+灰色。
在一种可能的实现方式中,将各个目标网格分别作为一个渲染批次指的是:将同一种第一网格标识对应的待渲染网格作为一个目标网格,然后将该目标网格包含的所有待渲染网格作为一个渲染批次。
其中,批处理器(Batcher)是Unity中的一个渲染优化技术,用于合并和减少渲染调用的数量,从而提高性能。渲染调用过程是指将待渲染的图形数据发送给GPU进行绘制的过程,而这些调用的数量可能会对性能产生较大的影响。批处理器的主要作用是通过将多个网格和材质的渲染调用合并为较少的批次,来减少CPU和GPU之间的通信开销。可以同时处理多个相似的网格和材质,将其合并到同一个批次中。这样就可以减少状态切换所需的开销、图形数据传输的次数,最大程度地利用硬件资源,从而提高图形渲染的效率和质量。
本申请实施例中渲染批次指的是利用批处理器将需要渲染的待渲染网格按照目标网格进行打包,每个目标网格作为一个批次进行渲染,实现在渲染时尽可能少地切换,最小化状态切换次数和接口调用的数量,从而提升渲染性能。具体地渲染优化打包过程中,批处理器将目标网格中所有待渲染网格的一系列顶点以及关联的渲染样式信息打包到一个批次中,通过一次调用渲染引擎的方法来渲染该批次中所有的顶点。另外,还利用批处理器对目标网格中待渲染数据进行排序,合理规划物体的渲染顺序,使得图形渲染更加流畅。
在一种可能的实现方式中,将目标网格配置为被对应的渲染样式信息共同引用的网格,可以是利用批处理器将该渲染批次中的目标网格配置为共享网格,将目标网格作为一个共享网格进行调用,共享网格是由所有渲染样式信息共享的网格,通过使用相同的几何数据来减少物体之间的差异性,从而实现渲染批次的共享和优化。本实施例中目标网格建立过程包括:对于每个待渲染网格,提取其顶点属性中的几何数据,如顶点、法线、纹理坐标等,并确保提取的几何数据处于相同的格式和布局。接着对于提取的几何数据,应用优化技术和压缩算法,例如顶点缓存优化、索引缓存优化、顶点位置压缩等,以减少数据的大小并提高内存访问效率,对于提取和优化的几何数据中相似的几何数据进行合并,消除冗余。另外除了几何数据外,还需要记录每个待渲染网格的属性变量,如材质属性、位置、旋转等。建立目标网格后更新属性变量,确保每个待渲染网格的属性正确应用到目标网格上。得到的目标网格被配置为渲染批次的共享网格后,在每次渲染时,可以将目标网格和各个渲染样式信息的属性变量传递给图形处理器的渲染引擎,确保每个渲染样式信息正确渲染到其预定位置上,充分利用图形处理器的并行处理能力,从而提高渲染性能和效率。
在一种可能的实现方式中,渲染样式信息被配置为样式对象,将各个目标网格分别作为一个渲染批次的过程具体包括:将对应同一个目标网格的多个样式对象合并为样式对象列表,接着根据第一网格标识、目标网格和样式对象列表,构建目标网格所在的渲染批次的批次对象。
其中,样式对象(Style Object)是用于指定待渲染网格的样式和属性的数据结构,每个渲染批次中的样式对象包含了要应用于待渲染网格的各种属性,例如材质、纹理、颜色、透明度等。本申请实施例中将每一个渲染样式信息生成一个样式对象,由于渲染样式信息都对应有顶点标识,因此每个样式对象具有与渲染样式信息一致的顶点标识。考虑到每个渲染批次中包含多个待渲染网格,同时每个待渲染网格关联至少一个渲染样式信息,为了便于管理,可以利用样式对象列表管理对应同一个目标网格的多个样式对象。
另外,将每个渲染批次生成对应的批次对象,批次对象负责管理和组织要进行批处理的渲染批次的渲染操作,在渲染时将其一次性提交给渲染管线。另外,批次对象会维护和管理渲染状态,如渲染目标、混合模式、光照设置等,在每个渲染批次中,批次对象会确保使用相同的渲染状态来执行渲染操作,以避免不必要的状态切换和开销。进一步地,批次对象还用于添加渲染操作、执行批次渲染、清除状态等操作的接口,便于利用接口管理和控制批处理过程。
示例性地,批次对象中包括待渲染网格的第一网格标识、目标网格和样式对象列表,其中目标网格包括所有待渲染网格的顶点构成的顶点列表以及所有待渲染网格中顶点的顶点索引构成的索引列表。因此,参照表1,本申请实施例中批次对象包括以下字段:
表1
在一种可能的实现方式中,在利用批处理器生成渲染批次后,在当前的渲染批次中,对于目标网格对应的各个渲染样式信息,分别根据第一网格标识从网格缓存区中读取目标网格,将读取到的目标网格配置为被渲染样式信息共同引用的网格的过程具体包括:遍历批次对象中的样式对象列表,获取样式对象列表中当前的样式对象,接着为当前的样式对象创建场景节点对象,根据样式对象创建材质对象,将材质对象与场景节点对象进行绑定,将样式对象中的顶点标识添加至材质对象,最后根据第一网格标识从网格缓存区中读取目标网格,将读取到的目标网格配置为被场景节点对象共同引用的网格。
其中,网格缓存区指的是全局缓存中用于存储目标网格对应的共享网格的区域。具体地,全局缓存是一种用于存储并共享大量重复或常用资源的数据结构。在这种机制下,资源只在需要时才被创建和加载,然后保存在一个全局缓存中供不同的对象和场景使用,以避免重复创建和加载资源所带来的性能问题,会检测所有共享资源的使用情况,并根据需要调整缓存大小和清除不再使用的资源,能够有效管理和共享资源,以确保***资源的最大利用效率,提高***的性能和效率,特别适用于需要频繁加载资源的场景。
上述实施例中,参照图9,图9为本申请实施例提供的将目标网格配置为被场景节点对象共同引用的网格的流程示意图。该实施例中,具有多个目标网格,因此批处理器生成多个批次对象。首先遍历批次对象,从中选取一个批次对象作为当前的批次对象,接着遍历当前的批次对象中样式对象列表,按照样式对象列表中的顺序,在样式对象列表中逐一获取样式对象作为当前的样式对象,接着为当前的样式对象创建场景节点对象。
其中,场景节点对象(Game Object)是Unity中最基本的构建单元,代表场景中的实体,实体可以是角色、物体、触发器等,并通过组件的添加和脚本的编写来赋予其行为和功能。通过对Game Object对象的操作,开发者可以创建交互性强、丰富多样的场景。另外,每个Game Object对象都可以包含多个组件(Component),这些组件定义了Game Object对象的行为和功能。例如,Transform组件用于控制Game Object对象的位置、旋转和缩放;Renderer组件用于渲染Game Object对象的图形;Collider组件用于处理碰撞检测等。在Unity的开发中,通过编写脚本可以对Game Object对象进行控制和操作,例如,获取GameObject对象的引用,并使用相应的函数和属性,开发者可以改变其属性、触发动画、响应输入等。
场景节点对象中包括网格过滤器(Mesh Filter)组件和网格渲染器(MeshRenderer)组件。在Unity中,网格过滤器组件是用于存储和管理几何网格数据的组件。通常与网格渲染器组件一起使用。网格过滤器组件用来存储和管理场景节点对象的几何网格数据,包括顶点坐标、三角面索引、纹理坐标、法线等数据。接着网格过滤器组件将存储的几何网格数据提供给网格渲染器组件进行渲染,网格渲染器组件根据网格过滤器组件提供的网格数据以及材质等属性,发送数据到着色器,利用着色器将对象渲染到屏幕上。
参照图9中,为当前的样式对象创建一个场景节点对象,接着根据当前的样式对象创建材质对象,将材质对象与场景节点对象进行绑定,并将样式对象中的顶点标识添加至材质对象。其中,材质对象是利用场景节点对象中网格渲染器组件根据样式对象对应的渲染样式信息设置的一个或多个材质属性,用来表征根据渲染样式信息进行渲染后对应的渲染效果。得到材质对象后,可以将材质对象赋值给场景节点对象的网格渲染器组件的shared Material属性进行材质对象与场景节点对象的绑定,以确保材质能够被应用到目标网格中。另外,由于在渲染时需要根据顶点标识选取渲染样式信息和待渲染网格中的顶点,因此利用材质对象渲染材质时,为了定位对应的顶点,需要将顶点标识添加至材质对象中。例如使用Material.SetVectorArray()方法将顶点标识添加到对应的材质对象中,使得顶点标识能够在渲染时传递给着色器,着色器在进行着色时可以根据顶点标识选取材质对象对应的顶点。
上述图9中,样式对象列表中的每一个样式对象都会对应一个场景节点对象,所有场景节点对象都通过共享方式挂载到目标网格对应的共享网格。具体是将目标网格对应的共享网格赋值给场景节点对象的网格滤波器组件的shared Mesh属性。多个场景节点对象可以共享同一个目标网格,能够减少内存占用和渲染调用,提高渲染性能和效率。另外,本实施例根据第一网格标识从网格缓存区中查询是否存在目标网格,如果查询结果表示根据第一网格标识能够从网格缓存区中读取到目标网格时,则读取目标网格,并将读取到的目标网格配置为被场景节点对象共同引用的网格。如果查询结果表示根据第一网格标识无法从网格缓存区中读取目标网格时,则根据第一网格标识创建对应的目标网格,并将第一网格标识和目标网格的关联关系写入至网格缓存区中。例如样式对象列表中第一个样式对象的场景节点对象可能无法在网格缓存区中查找到目标网格,此时根据需要创建一个目标网格的实例,将该实例添加到网格缓存区中,之后将其分配给第一个样式对象的场景节点对象。后续样式对象的场景节点对象则可以直接在网格缓存区中查询到对应的目标网格。
示例性地,参照图10,图10为本申请实施例中目标网格的场景节点对象的示意图。图10中,每个场景节点对象下配置对应的材质对象,材质对象中包括对应的顶点标识,同时多个场景节点对象挂载在同一个目标网格下,目标网格被多个场景节点对象共同引用。
上述过程中,对于当前的批次对象,逐一生成每个样式对象对应的场景节点对象,并将其挂载在目标网格中。接着选取下一个批次对象作为当前的批次对象,执行上述过程生成场景节点对象,并挂载与对应的目标网格中。
步骤404:将目标网格与各个渲染样式信息发送至图形处理器,以供图形处理器根据顶点标识筛选出各个渲染样式信息对应的目标像素片段进行渲染。
其中,目标像素片段基于目标网格中的目标顶点转换得到,目标顶点与渲染样式信息具备相同的顶点标识。
其中,待渲染网格经过上述实施例的过程转化为目标网格,此时将目标网格以及待渲染网格分别关联的各个渲染样式信息共同发送至图形处理器。图形处理器接收到目标网格与各个渲染样式信息后,首先根据顶点标识筛选出目标顶点,基于目标网格中的目标顶点转换得到目标像素片段,进而对目标像素片段进行渲染。
本申请实施例通过获取多个待渲染网格以及各个待渲染网格关联的渲染样式信息,生成渲染样式信息对应的顶点标识,将顶点标识添加至渲染样式信息以及所关联的待渲染网格的顶点属性中,能够通过顶点标识来标记渲染样式信息对应的顶点,然后,将多个待渲染网格进行合并,得到至少一个目标网格,将目标网格配置为被对应的渲染样式信息共同引用的网格,从而有效地减少了网格的数量,再将目标网格与各个渲染样式信息发送至图形处理器,以供图形处理器根据顶点标识筛选出各个渲染样式信息对应的目标像素片段进行渲染,可见,即便将多个待渲染网格合并为目标网格,图形处理器也能够在渲染时通过顶点标识来对目标网格进行拆分,筛选出各个渲染样式信息对应的目标像素片段进行渲染,从而在实现独立渲染各个待渲染网格的基础上,有效地减少了网格的数量,降低了与图形处理器之间的交互频率,优化了图像渲染的卡顿现象,提高了图像渲染的流畅性。
下面描述本申请实施例中图形处理器根据接收到目标网格与各个渲染样式信息进行渲染的具体渲染过程。
参照图11,图11为本申请实施例提供的图像渲染方法的一种可选的流程图,该图像渲染方法应用于图形处理器,可以由服务器执行,或者也可以由终端执行,或者也可以由服务器和终端配合执行,在本申请实施例中,以该方法由服务器执行为例进行说明。该图像渲染方法包括但不限于以下步骤1101至步骤1102。
步骤1101:获取目标网格和多个渲染样式信息。
其中,目标网格由各个渲染样式信息关联的待渲染网格合并得到。待渲染网格为根据业务渲染需求获取的一个或多个未渲染的网格。待渲染网格关联的渲染样式信息指的是根据业务需求为待渲染网格执行的外观和效果等相关的属性参数,用来描述待渲染网格在渲染后的图像中呈现的样式。该实施例中渲染样式信息包括颜色和材质属性、纹理属性、光照属性、透明度属性、反射属性等参数。目标网格是将多个待渲染网格按照网格类型进行合并,将相同的网格类型对应的待渲染网格合并在一起,进而得到的每个类型对应的目标网格,目的是在渲染过程中减少网格的数量。另外,利用批处理器将需要渲染的待渲染网格按照目标网格进行打包,每个目标网格作为一个渲染批次进行渲染,实现在渲染时尽可能少地切换,最小化状态切换次数和接口调用的数量,从而提升渲染性能。具体地渲染优化打包过程中,批处理器将目标网格中所有待渲染网格的一系列顶点以及关联的渲染样式信息打包到一个渲染批次中。另外目标网格配置为被对应的渲染样式信息共同引用的网格。
在一种可能的实现方式中,渲染样式信息对应的顶点标识包括以下几种:1)当同一个待渲染网格分别关联不同的渲染样式信息时,获取当前的待渲染网格的第二网格标识,第二网格标识用于标记不同的待渲染网格,各个渲染样式信息对应的顶点标识为第二网格标识;2)当同一个渲染样式信息分别关联不同的待渲染网格时,获取渲染样式信息的样式标识,样式标识用于标记不同的渲染样式信息,渲染样式信息对应的顶点标识为样式标识;3)当不同的待渲染网格分别关联不同的渲染样式信息时,渲染样式信息对应的顶点标识为第二网格标识或者样式标识。
其中,待渲染网格的数量为多个,且每个待渲染网格中均包含多个顶点,利用渲染样式信息对待渲染网格进行渲染实质上是利用渲染样式信息对顶点进行渲染,因此本申请实施例在待渲染网格中顶点的顶点属性中添加渲染样式信息对应的顶点标识。待渲染网格中顶点的顶点属性中包括对应关联的渲染样式信息的顶点标识。由于渲染样式信息和顶点属性都添加相应的顶点标识,通过顶点标识能够标记每个顶点对应的渲染样式信息,无需依赖于其所处的待渲染网格以及其在顶点索引列表中的索引位置。
步骤1102:根据顶点标识筛选出各个渲染样式信息对应的目标像素片段进行渲染。
其中,目标像素片段由目标网格中的目标顶点转换得到,目标顶点与渲染样式信息具备相同的顶点标识。
其中,由于顶点的顶点属性中包括对应渲染样式信息的顶点标识,因此图形处理器在逐一对渲染样式信息进行渲染时,能够根据顶点标识筛选出各个渲染样式信息对应的顶点作为目标顶点,目标顶点与渲染样式信息具备相同的顶点标识。然后将目标顶点转化为目标像素片段,对目标像素片段进行渲染。可见,即便图形处理器接收的是多个待渲染网格合并的目标网格,图形处理器也能够在渲染时通过顶点标识来对目标网格进行拆分,筛选出各个渲染样式信息对应的目标像素片段,因此不仅实现独立渲染各个待渲染网格的基础,同时在渲染时无需与大量的待渲染网格进行交互,降低交互频率,从而可以优化图像渲染的卡顿现象,提高图像渲染的流畅性。
在一种可能的实现方式中,根据顶点标识筛选出各个渲染样式信息对应的目标像素片段进行渲染的过程具体包括:对目标网格中的各个顶点进行光栅化,得到多个候选像素片段,其中,候选像素片段的片段属性包括片段标识,片段标识由对应的顶点中顶点属性包含的顶点标识插值得到。接着将片段标识与当前的渲染样式信息中的顶点标识进行一致性匹配,当匹配结果为相一致时,将候选像素片段确定为目标像素片段,将目标像素片段进行渲染。
其中,选取当前的渲染样式信息,然后对于每个候选像素片段,将其片段标识与当前渲染样式信息中的顶点标识进行比较。如果片段标识与顶点标识一致,表示该候选像素片段是目标像素片段,对于确定为目标像素片段的候选像素片段,可以将其进行渲染。
在一种可能的实现方式中,也可以先根据当前的渲染样式信息中的顶点标识从目标网格的顶点进行一致性匹配,当匹配结果为相一致时,将该顶点确定为目标顶点,接着对各个目标顶点进行光栅化,得到多个目标像素片段,将目标像素片段进行渲染。
在一种可能的实现方式中,假设网格为三角网格,对顶点进行光栅化得到候选像素片段的过程具体包括:首先根据输入的顶点对应的顶点索引获取三角形,从其提取三个顶点的位置信息和相关属性,接着计算三角形的边信息,即计算每个边的插值相关信息,其中插值相关信息包括斜率、边长等。接着计算当前三角形的最小Y坐标值和最大Y坐标值,根据这两个Y坐标值确定扫描线的范围,然后从最小Y坐标值开始,向上逐行扫描至最大Y坐标值,对于每条扫描线,找到与三角形相交交点,接着计算当前扫描线与三角形的交点,利用扫描线的Y坐标和边的信息来计算扫描线与三角形边的交点的X坐标,再根据当前扫描线上的两个交点的X坐标,确定扫描线的起始和结束点,根据扫描线的起始和结束点得到候选像素片段。接下来对候选像素片段进行插值,根据当前候选像素片段在扫描线上的位置和三角形顶点的属性值,如纹理坐标、颜色、法线等,在候选像素片段中使用插值计算得到候选像素片段对应的属性值,与三角形顶点的顶点标识进行插值,从而计算出片段的片段标识。重复上述过程,直至得到所有候选像素片段的片段标识。
在一种可能的实现方式中,可以选择较为简单的方式得到候选像素片段的片段属性中的片段标识,例如对目标网格中的各个顶点进行光栅化,将每个三角网格作为一个候选像素片段,将该三角网格中包含的所有像素点的顶点标识都设置为顶点的顶点标识,即该候选像素片段的片段标识即对应三角形顶点的顶点标识。
在一种可能的实现方式中,将片段标识与当前的渲染样式信息中的顶点标识进行匹配的过程具体包括:在渲染管线中创建全局变量,从当前的渲染样式信息中获取顶点标识,将全局变量赋值为顶点标识;接着遍历多个候选像素片段,将当前的候选像素片段的片段标识与全局变量进行一致性匹配。
其中,渲染管线(Rendering Pipeline),也称作图形管线,是图形处理器中用于生成最终图像的一系列处理阶段和算法的流程。渲染管线对输入的几何数据(如顶点、线段、三角形等)进行处理,将其进行渲染和显示,转换为最终的图像输出。渲染管线是图形渲染的核心组成部分,常用于实时渲染应用。渲染管线的作用过程包括以下几个阶段:几何处理阶段,负责对输入的几何数据进行变换、裁剪和投影等操作,这些操作将几何数据从对象空间变换到最终的裁剪空间,并生成屏幕上的二维坐标。光栅化阶段,将几何数据转换为屏幕上的像素点,主要用于确定哪些像素被覆盖,并生成片段或像素片段,包括像素的位置和属性。片段处理阶段,对每个片段进行处理,例如进行纹理采样、光照计算、深度测试等操作,在这个阶段计算出片段的最终颜色值。输出合成阶段,将处理后的片段合成为最终的图像,该阶段包括深度测试、模板测试和像素混合等操作,最终将最终颜色值写入帧缓冲区。渲染管线将图形数据经过一系列的处理步骤转化为最终的图像结果,方便实时渲染应用的展示和交互。
上述实施例中,在渲染管线中创建的全局变量为uniform变量,在渲染管线中,uniform变量是一种全局变量类型,uniform变量用于在渲染管线的不同阶段之间传递数据。uniform变量在整个渲染过程中保持不变,变量的值可以在应用程序中设置,并在渲染管线的各个阶段中使用。本实施例中渲染管线创建uniform变量的过程为:首先定义变量类型和变量名称,在着色器中使用关键字"uniform"来声明uniform变量。接着设置uniform变量的值,在应用程序中需要获取uniform变量的引用或位置,将从当前的渲染样式信息中获取的顶点标识作为变量值传递给该变量。然后在渲染管线的各个阶段的着色器中,直接使用uniform变量,通过使用uniform变量,在渲染管线的不同阶段之间传递和共享数据,例如在不同阶段共享相同的转换矩阵、光照参数等,而不需要每个阶段都进行手动传递,能够提升渲染效率。
由于上述过程将从当前的渲染样式信息中获取的顶点标识作为变量值赋予uniform变量,因此在进行一致性匹配时,遍历多个候选像素片段,将当前的候选像素片段的片段标识与全局变量中赋值的顶点标识进行一致性匹配,进而得到每个候选像素片段的匹配结果,接着对匹配结果指示的目标像素片段进行渲染。
其中,图形处理器每次接收一个渲染批次对应的批次对象进行渲染,由于每个批次对象中可能包括多个共同引用目标网格的渲染样式信息,而每个渲染样式信息都对应生成一个场景节点对象,因此图像处理器在同一个批次对象中会接收到多个场景节点对象,图形处理器针对每个场景节点对象生成一个draw call函数,draw call函数是图形接口提供的进行绘制的函数方法,每运行一次draw call函数则调用一次图形绘制接口。每个drawcall函数都会触发渲染管线的各个阶段的执行,最终将几何数据转换为屏幕上的可见像素,在该批次对象中对应的draw call函数均执行完成后,就会得到目标网格对应的渲染结果。
本申请实施例中,如果同一个批次对象中多个待渲染网格关联相同的渲染样式信息,则为对应的待渲染网格的顶点中添加与渲染样式信息一致的顶点属性,同时每个渲染样式信息对应一个draw call函数,可见draw call函数的调用次数与该渲染批次中待渲染网格的渲染样式信息的种类相关,将渲染需求与待渲染网格的数量解耦,渲染样式信息的数量仅与渲染需求相关,即便业务需求增长,需要渲染更多的网格,也只需根据业务需求对应的渲染样式信息生成顶点标识,在网格中的相关顶点中添加对应的顶点标识,无需因为网格增加而生成更多的渲染批次,使得一方面满足业务增长需求,另一方面减少渲染卡顿的可能性能。
在一种可能的实现方式中,将片段标识与当前的渲染样式信息中的顶点标识进行一致性匹配,会得到两个匹配结果,一个匹配结果为一致,此时得到目标像素片段,另一个匹配结果为不匹配,当匹配结果为不一致时,调用片元着色器中的丢弃函数,基于丢弃函数将候选像素片段在目标网格中进行裁剪,去除该部分的候选像素片段。或者,当匹配结果为不一致时,将候选像素片段的透明度设置为预设值。
其中,片元着色器中的丢弃函数为discard函数,用于丢弃当前处理的候选像素片段,即告诉图形处理器不需要对该候选像素片段进行进一步处理和输出。该实施例中将discard函数与顶点标识匹配的条件语句结合使用,当匹配结果为候选像素片段的片段标识与当前的渲染样式信息中的顶点标识不一致时,则满足条件,执行discard函数,在执行discard函数后,当前候选像素片段将被丢弃,不会输出到帧缓冲区,避免对不需要渲染的候选像素片段进行额外的计算和处理。另外,也可以利用片元着色器中gl_FragColor变量,指定当前候选像素片段的输出颜色的透明度设置为完全透明,此时预设值为透明度为100%。
参照图12,图12为本申请实施例中渲染示意图。图12中在某个渲染样式信息对应的渲染过程中,目标网格中包括片段标识与渲染样式信息的顶点标识一致的目标像素网格以及其他候选像素网格,图12中利用三角表示目标像素网格,圆表示其他候选像素网格。假设渲染样式信息为“渲染成黑色”。此时一方面可以利用片元着色器中的丢弃函数剔除其他候选像素网格,仅渲染筛选出的目标像素网格将其渲染成黑色。另一方面可以利用片元着色器中gl_FragColor变量将其他候选像素网格的透明度设置为100%,图12中渲染图像中利用虚线表示透明度为100%,实际场景中透明度100%在渲染后的图像中不可见,另外,目标像素网格按照渲染样式信息渲染成黑色。
可见,通过上述过程能够控制在针对渲染样式信息进行渲染时,根据顶点标识选取该渲染样式信息需要渲染的目标像素片段,做到剔除其余片段,只对该目标像素片段进行渲染的效果,或者将其余片段设为全透明,该目标像素片段按照渲染样式信息进行渲染的效果。
在一种可能的实现方式中,渲染样式信息按照业务场景的渲染顺序执行,即图形处理器按照顺序调用draw call函数。参照图13,图13是本申请实施例提供的渲染示意图。图13中示出了两个渲染样式信息,假设目标像素片段为矩形,按照渲染顺序,第一个渲染样式信息为“斜条纹填充”,第二个渲染样式信息为“黑色加粗边框”,则按照顺序执行drawcall函数,首先对矩形进行斜条纹填充得到斜条纹矩形,接着对斜条纹矩形增加黑色加粗边框,即可得到渲染后的矩形框。
在一种可能的实现方式中,参照图14,图14为本申请实施例提供的又一渲染示意图。图中目标网格包括三个待渲染网格,目标网格中关联的渲染样式信息有三个,假设与第一个渲染样式信息关联的顶点以空心三角表示,与第二个渲染样式信息关联的顶点以黑色填充三角表示,与第三个渲染样式信息关联的顶点以斜线填充三角表示。因此图形处理器逐一调用对应的draw call函数,渲染时利用片元着色器中的丢弃函数剔除非目标像素片段。首先利用顶点标识将第一个渲染样式信息关联的目标像素片段筛选出来进行渲染,此时空心三角作为目标像素片段被筛选出来进行渲染。接着利用顶点标识将第二个渲染样式信息关联的目标像素片段筛选出来进行渲染,此时黑色实心三角作为目标像素片段被筛选出来进行渲染。最后利用顶点标识将第三个渲染样式信息关联的目标像素片段筛选出来进行渲染,此时斜边填充三角作为目标像素片段被筛选出来进行渲染。
本申请实施例中图形处理器接收目标网格与各个渲染样式信息,根据顶点标识筛选出各个渲染样式信息对应的目标像素片段进行渲染,可见,即便将多个待渲染网格合并为目标网格,图形处理器也能够在渲染时通过顶点标识来对目标网格进行拆分,筛选出各个渲染样式信息对应的目标像素片段进行渲染,从而在实现独立渲染各个待渲染网格的基础上,有效地减少了网格的数量,降低了与图形处理器之间的交互频率,优化了图像渲染的卡顿现象,提高了图像渲染的流畅性。
下面整体描述中央处理器和图形处理器在本申请实施例的图像渲染方法中的处理过程。
参照图15,图15为本申请实施例提供的***逻辑架构示意图。
图15中渲染引擎包括:瓦片缓存、样式管理、数据引擎、元素建模模块、样式装饰、几何建模工具箱、网格材质传输中枢以及网格管理器。
其中,在瓦片缓存中,待渲染的数据被划分为固定大小的瓦片,每个瓦片包含小部分数据,例如地图的一部分区域或图像的一部分,这些瓦片以层次结构的形式进行组织,可以通过不同级别的细节来渲染。例如道路瓦片可以根据道路等级分成不同级别,0-1等级、3-4等级道路或其他等级道路,不同级别对应不同颜色进行渲染。当需要渲染特定区域时,渲染引擎会根据当前视图的位置和缩放级别来计算所需的瓦片。然后首先检查瓦片缓存,看是否已经有相应的瓦片数据可用。如果瓦片数据已经存在于瓦片缓存中,渲染引擎会直接使用缓存中的数据进行渲染,不需要从原始数据源中获取瓦片。如果瓦片数据不在缓存中,渲染引擎会从原始数据源中获取相应的瓦片,并将其存储到瓦片缓存中供以后使用。这样在后续的渲染中,相同的瓦片就可以直接从缓存中获取,而无需再次访问原始数据源,从而减少了数据访问和加载时间。样式管理用于管理待渲染的数据使用到的所有渲染样式信息,存储渲染样式信息列表。样式装饰用于在对象或场景的渲染过程中,通过添加额外的视觉效果和装饰来增强其外观和吸引力。这些额外的效果可以是纹理、阴影、反射、透明度、动画等,用于使对象或场景更加生动和引人注目。数据引擎用于管理和处理与渲染相关的数据的组件或模块,负责从不同的数据源获取所需的数据,并根据渲染需求进行处理和转换,以提供给渲染引擎进行渲染。几何建模工具箱是一组用于创建和编辑几何模型的工具和算法,提供了包括:基本几何体生成、曲线和曲面建模、组合和变换操作、布尔运算、曲面细分、实体建模、网格编辑和修饰、参数化建模等在内的建模工具,用来创建和编辑各种复杂的几何形状,实现想象中的场景、角色和物体,并在渲染引擎中进行逼真的渲染和展示。网格材质传输中枢是一种用于在不同的网格形状之间传输材质数据的工具或插件,主要用于在三维建模软件中创建和编辑一个网格模型的材质(包括颜色、纹理、法线贴图等),然后将其应用到另一个网格模型上。通常情况下,不同网格形状之间的材质传输是很困难的,这是因为不同形状之间的面数、顶点数量、纹理映射等属性可能不同,这会导致材质数据无法正确地对应到新形状上。网格材质传输中枢具有材质采样、属性匹配、材质传输、材质调整等功能,能够将一个网格模型的材质应用到另一个网格模型上,无需手动编辑和调整材质,是两个模型能够获得一致的渲染结果。
示例性地,元素建模模块用于将顶点标识添加至渲染样式信息中以及添加至所关联的待渲染网格的顶点属性中,对渲染样式信息和顶点属性都添加相应的顶点标识,通过顶点标识能够标记每个顶点对应的渲染样式信息,无需依赖于其所处的待渲染网格以及其在顶点索引列表中的索引位置。如果业务需求更新,需要更改部分顶点的渲染样式信息,则获取新的渲染样式信息对应的顶点标识,利用该顶点标识更新对应顶点的顶点属性。通过添加顶点标识可以增强渲染管线的灵活性和扩展性,能够根据业务需要选择渲染哪些顶点,以满足特定的渲染需求。本申请实施例将顶点标识添加到顶点属性中可以提供更灵活、易于管理和操作的顶点的数据结构,能够实现局部定制渲染。
示例性地,网格管理器用于将多个待渲染网格按照网格类型进行合并,将相同的网格类型对应的待渲染网格合并在一起,进而得到每个类型对应的目标网格,有效地减少了网格的数量,另外,还用于将目标网格配置为被对应的渲染样式信息共同引用的网格。
图15的图像处理器的渲染引擎包括:Unity网格生成模块、材质创建模块、着色器脚本模块、全局场景管理和全局材质管理。
其中,全局场景管理在渲染过程用于控制场景加载和切换、场景可见性控制以及场景数据持久化。全局场景管理能够加载和切换不同的场景,在渲染过程中确保正确的场景被渲染。并且根据需要设置场景的可见性,只渲染当前活动和可见的场景,减少渲染开销,提高渲染性能。另外处理场景数据的保存和恢复,确保在场景切换时重要数据的传递和保存。全局材质管理在渲染过程中用于控制材质创建和加载、材质属性设置、材质应用和替换以及材质共享和复用。全局材质管理能够创建和加载材质实例,准备要应用到几何体上的材质属性。也可以设置几何体的材质属性,例如颜色、纹理、透明度等,这些属性会在渲染过程中影响几何体的外观,不同的材质属性设置可以实现各种效果,比如反射、折射、光照等。还用于将材质应用到几何体的渲染器上,使其在渲染过程中显示所设置的属性。另外,优化材质的共享和复用,减少内存占用和渲染开销,使得相同的材质可以在多个几何体之间共享,避免重复创建和加载相同的材质。本申请实施例中全局场景管理和全局材质管理通过统一的接口和机制,在渲染过程中确保正确的场景被渲染,并使几何体按需使用正确的材质属性进行渲染。
另外,Unity网格生成模块用于接收目标网格,将其转化成Unity定义的渲染结构,添加到Unity的全局场景管理中。另外,材质创建模块根据接收到的各个渲染样式信息中的材质属性,调用材质的接口,设置该材质的各种属性值,例如颜色、纹理、透明度、反射率等,并将该材质应用到要呈现的渲染器上,使该渲染后的外观符合所设置的材质属性。着色器脚本模块用于根据分组标识,在目标网格中筛选出各个渲染样式信息对应的顶点进行渲染。
由上述可见,本申请实施例的渲染过程由中央处理器和图形处理器共同完成。其中,中央处理器和图形处理器可以独立外置,也可以集成在一起。本实施例对此不做限定。
参照图16,图16为本申请实施例的图像渲染方法的整体处理流程图。
首先是中央处理器的网格建模阶段,获取多个待渲染网格以及各个待渲染网格关联的渲染样式信息,然后生成渲染样式信息对应的顶点标识,将顶点标识添加至渲染样式信息中,以及添加至所关联的待渲染网格的顶点属性中。
其中,待渲染网格是根据业务渲染需求获取一个或多个未渲染的网格,待渲染网格关联的渲染样式信息指的是根据业务需求为待渲染网格执行的外观和效果等相关的属性参数,用来描述待渲染网格在渲染后的图像中呈现的样式。该实施例中渲染样式信息包括颜色和材质属性、纹理属性、光照属性、透明度属性、反射属性等参数。
其中,为了对渲染样式信息和待渲染网格之间的关系进行关联,为每个渲染样式信息生成顶点标识,并将顶点标识与渲染样式信息和待渲染网格关联,确保渲染样式信息和待渲染网格之间的唯一关系,避免渲染过程中出现冲突或混淆。并且通过使用顶点标识,在不同的渲染场景中可以根据顶点标识对应的渲染样式信息获取待渲染网格所需的样式,实现个性化和定制化的渲染效果。
在一种可能的实现方式中,不同待渲染网格的需求有三种情况,第一种情况是:同一个待渲染网格关联多个不同的渲染样式信息,此时获取用于标记待渲染网格的第二网格标识,将多个不同的渲染样式信息的顶点标识都设置成这个第二网格标识,使得将待渲染网格以及对应的多个渲染样式信息利用第二网络标识对应起来。第二种情况是:多个不同的待渲染网格关联同一个渲染样式信息,此时渲染样式信息的顶点标识为该渲染样式信息的样式标识,样式标识可以用于区分不同的渲染样式信息。第三种情况是:不同的待渲染网格分别关联不同的渲染样式信息,此时顶点标识可以是待渲染网格对应的第二网格标识也可以是渲染样式信息对应的样式标识。总之,上述三种方式均可以有效地实现待渲染网格和渲染样式信息之间的关联,使得在渲染过程中能够按照预期的方式应用不同的样式信息。
在一种可能的实现方式中,待渲染网格的数量为多个,且每个待渲染网格中均包含多个顶点,利用渲染样式信息对待渲染网格进行渲染实质上是利用渲染样式信息对顶点进行渲染,因此本申请实施例在待渲染网格中顶点的顶点属性中添加渲染样式信息对应的顶点标识。
另外,如果待渲染网格中不同区域具有不同的渲染需求,则可以将待渲染网格划分成子网格,另外各个子网格可以分别关联相同或者不同的渲染样式信息。将待渲染网格划分为多个子网格,根据第二网格标识得到所关联的各个渲染样式信息对应的顶点标识的过程具体包括步骤:获取用于标记子网格的子网格标识,将第二网格标识和子网格标识进行拼接,得到所关联的各个渲染样式信息对应的顶点标识。
经过对渲染样式信息和顶点属性都添加相应的顶点标识,通过顶点标识能够标记每个顶点对应的渲染样式信息,无需依赖于其所处的待渲染网格以及其在顶点索引列表中的索引位置。
参照图16,接着进入中央处理器的批次对象生成阶段。将多个待渲染网格进行合并,得到至少一个目标网格。其中,将多个待渲染网格按照网格类型进行合并,将相同的网格类型对应的待渲染网格合并在一起,进而得到每个类型对应的目标网格,有效地减少网格的数量。其中,网格类型用于指示待渲染网格所建模的元素的类型。这里元素的类型可以根据具体的应用场景设定。
在一种可能的实现方式中,将目标网格配置为被对应的渲染样式信息共同引用的网格,包括:生成目标网格的第一网格标识,其中,第一网格标识用于标记不同的目标网格;接着将各个目标网格分别作为一个渲染批次,在当前的渲染批次中,对于目标网格对应的各个渲染样式信息,分别根据第一网格标识从网格缓存区中读取目标网格,将读取到的目标网格配置为被渲染样式信息共同引用的网格。
参照图16,接着进入中央处理器的场景节点对象创建阶段。在利用批处理器生成渲染批次后,在当前的渲染批次中,对于目标网格对应的各个渲染样式信息,分别根据第一网格标识从网格缓存区中读取目标网格,将读取到的目标网格配置为被渲染样式信息共同引用的网格的过程具体包括:遍历批次对象中的样式对象列表,获取样式对象列表中当前的样式对象,接着为当前的样式对象创建场景节点对象,根据样式对象创建材质对象,将材质对象与场景节点对象进行绑定,将样式对象中的顶点标识添加至材质对象,最后根据第一网格标识从网格缓存区中读取目标网格,将读取到的目标网格配置为被场景节点对象共同引用的网格。
其中,场景节点对象中包括网格过滤器(Mesh Filter)组件和网格渲染器(MeshRenderer)组件。网格过滤器组件为用于存储和管理对象的几何网格数据的组件,包括顶点坐标、三角面索引、纹理坐标、法线等数据。接着网格过滤器组件将存储的几何网格数据提供给网格渲染器组件,网格渲染器组件将网格过滤器组件提供的目标网格和多个渲染样式信息发送至着色器进行渲染。
其中,样式对象列表中的每一个样式对象都会对应一个场景节点对象,所有场景节点对象都通过共享方式挂载到目标网格对应的共享网格。具体是将目标网格对应的共享网格赋值给场景节点对象的网格滤波器组件的shared Mesh属性。多个场景节点对象可以共享同一个目标网格,能够减少内存占用和渲染调用,提高渲染性能和效率。
参照图16,进入图形处理器的渲染阶段。图形处理器的着色器获取目标网格和多个渲染样式信息,从中得到顶点标识和个渲染样式信息对应的材质对象,接着根据顶点标识筛选出各个渲染样式信息对应的目标像素片段进行渲染,得到渲染结果。
在一种可能的实现方式中,根据顶点标识筛选出各个渲染样式信息对应的目标像素片段进行渲染的过程具体包括:对目标网格中的各个顶点进行光栅化,得到多个候选像素片段,其中,候选像素片段的片段属性包括片段标识,片段标识由对应的顶点中顶点属性包含的顶点标识插值得到。接着将片段标识与当前的渲染样式信息中的顶点标识进行一致性匹配,当匹配结果为相一致时,将候选像素片段确定为目标像素片段,将目标像素片段进行渲染。
其中,选取当前的渲染样式信息,然后对于每个候选像素片段,将其片段标识与当前渲染样式信息中的顶点标识进行比较。如果片段标识与顶点标识一致,表示该候选像素片段是目标像素片段,对于确定为目标像素片段的候选像素片段,可以将其进行渲染。
在一种可能的实现方式中,也可以先根据当前的渲染样式信息中的顶点标识从目标网格的顶点进行一致性匹配,当匹配结果为相一致时,将该顶点确定为目标顶点,接着对各个目标顶点进行光栅化,得到多个目标像素片段,将目标像素片段进行渲染。
在一种可能的实现方式中,将片段标识与当前的渲染样式信息中的顶点标识进行匹配,会得到两个匹配结果,一个匹配结果为一致,此时得到目标像素片段,另一个匹配结果为不匹配,当匹配结果为不一致时,调用片元着色器中的丢弃函数,基于丢弃函数将候选像素片段在目标网格中进行裁剪,去除该部分的候选像素片段。或者,当匹配结果为不一致时,将候选像素片段的透明度设置为预设值。
由于顶点的顶点属性中包括对应渲染样式信息的顶点标识,因此图形处理器在逐一对渲染样式信息进行渲染时,能够根据顶点标识筛选出各个渲染样式信息对应的顶点作为目标顶点,目标顶点与渲染样式信息具备相同的顶点标识。然后将目标顶点转化为目标像素片段,对目标像素片段进行渲染。可见,即便图形处理器接收的是多个待渲染网格合并的目标网格,图形处理器也能够在渲染时通过顶点标识来对目标网格进行拆分,筛选出各个渲染样式信息对应的目标像素片段,因此不仅实现独立渲染各个待渲染网格的基础,同时在渲染时无需与大量的待渲染网格进行交互,降低交互频率,从而可以优化图像渲染的卡顿现象,提高图像渲染的流畅性。
可以理解的是,本申请实施例中通过获取多个待渲染网格以及各个待渲染网格关联的渲染样式信息,生成渲染样式信息对应的顶点标识,将顶点标识添加至渲染样式信息以及所关联的待渲染网格的顶点属性中,能够通过顶点标识来标记渲染样式信息对应的顶点,然后,将多个待渲染网格进行合并,得到至少一个目标网格,将目标网格配置为被对应的渲染样式信息共同引用的网格,从而有效地减少了网格的数量,再将目标网格与各个渲染样式信息发送至图形处理器,以供图形处理器根据顶点标识筛选出各个渲染样式信息对应的目标像素片段进行渲染,可见,即便将多个待渲染网格合并为目标网格,图形处理器也能够在渲染时通过顶点标识来对目标网格进行拆分,筛选出各个渲染样式信息对应的目标像素片段进行渲染,从而在实现独立渲染各个待渲染网格的基础上,有效地减少了网格的数量,降低了与图形处理器之间的交互频率,优化了图像渲染的卡顿现象,提高了图像渲染的流畅性。
可以理解的是,虽然上述各个流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本实施例中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时间执行完成,而是可以在不同的时间执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
参照图17,图17为本申请实施例提供的图像渲染装置的一种可选的结构示意图,该第一图像渲染装置1700包括:
信息获取模块1701:用于获取多个待渲染网格以及各个待渲染网格关联的渲染样式信息;
顶点标识获取模块1702:用于生成渲染样式信息对应的顶点标识,将顶点标识添加至渲染样式信息中,以及添加至所关联的待渲染网格的顶点属性中;
网格合并模块1703:用于将多个待渲染网格进行合并,得到至少一个目标网格,将目标网格配置为被对应的渲染样式信息共同引用的网格;
渲染信息发送模块1704:用于将目标网格与各个渲染样式信息发送至图形处理器,以供图形处理器根据顶点标识筛选出各个渲染样式信息对应的目标像素片段进行渲染,其中,目标像素片段基于目标网格中的目标顶点转换得到,目标顶点与渲染样式信息具备相同的顶点标识。
进一步,上述网格合并模块1703具体用于:
生成目标网格的第一网格标识,其中,第一网格标识用于标记不同的目标网格;
将各个目标网格分别作为一个渲染批次,在当前的渲染批次中,对于目标网格对应的各个渲染样式信息,分别根据第一网格标识从网格缓存区中读取目标网格,将读取到的目标网格配置为被渲染样式信息共同引用的网格。
进一步,渲染样式信息被配置为样式对象,上述网格合并模块1703还用于:
将对应同一个目标网格的多个样式对象合并为样式对象列表;
根据第一网格标识、目标网格和样式对象列表,构建目标网格所在的渲染批次的批次对象。
进一步,上述网格合并模块1703还用于:
遍历批次对象中的样式对象列表,获取样式对象列表中当前的样式对象;
为当前的样式对象创建场景节点对象,根据样式对象创建材质对象,将材质对象与场景节点对象进行绑定,将样式对象中的顶点标识添加至材质对象;
根据第一网格标识从网格缓存区中读取目标网格,将读取到的目标网格配置为被场景节点对象共同引用的网格。
进一步,目标网格由多个网格类型相同的待渲染网格合并得到,网格类型用于指示待渲染网格所建模的元素的类型,上述网格合并模块1703还用于:
获取待渲染网格的网格类型以及渲染样式信息的样式类型;
将网格类型与样式类型进行拼接,得到目标网格的第一网格标识。
进一步,上述网格合并模块1703还用于:
当根据第一网格标识无法从网格缓存区中读取目标网格时,将第一网格标识以及目标网格关联写入至网格缓存区中。
进一步,上述顶点标识获取模块1702还用于:
当同一个待渲染网格分别关联不同的渲染样式信息时,获取当前的待渲染网格的第二网格标识,根据第二网格标识得到所关联的各个渲染样式信息对应的顶点标识,其中,第二网格标识用于标记不同的待渲染网格;
当同一个渲染样式信息分别关联不同的待渲染网格时,获取渲染样式信息的样式标识,将样式标识作为渲染样式信息对应的顶点标识,其中,样式标识用于标记不同的渲染样式信息;
当不同的待渲染网格分别关联不同的渲染样式信息时,获取第二网格标识,根据第二网格标识得到所关联的渲染样式信息对应的顶点标识,或者,获取样式标识,将样式标识作为渲染样式信息对应的顶点标识。
进一步,待渲染网格被划分为多个子网格,各个子网格分别关联不同的渲染样式信息,上述顶点标识获取模块1702还用于:
获取用于标记子网格的子网格标识;
将第二网格标识和子网格标识进行拼接,得到所关联的各个渲染样式信息对应的顶点标识。
上述第一图像渲染装置1700与基于中央处理器的图像渲染方法基于相同的发明构思,上述过程描述了本申请实施例的图像渲染方法,通过获取多个待渲染网格以及各个待渲染网格关联的渲染样式信息,生成渲染样式信息对应的顶点标识,将顶点标识添加至渲染样式信息以及所关联的待渲染网格的顶点属性中,能够通过顶点标识来标记渲染样式信息对应的顶点,然后,将多个待渲染网格进行合并,得到至少一个目标网格,将目标网格配置为被对应的渲染样式信息共同引用的网格,从而有效地减少了网格的数量,再将目标网格与各个渲染样式信息发送至图形处理器,以供图形处理器根据顶点标识筛选出各个渲染样式信息对应的目标像素片段进行渲染,可见,即便将多个待渲染网格合并为目标网格,图形处理器也能够在渲染时通过顶点标识来对目标网格进行拆分,筛选出各个渲染样式信息对应的目标像素片段进行渲染,从而在实现独立渲染各个待渲染网格的基础上,有效地减少了网格的数量,降低了与图形处理器之间的交互频率,优化了图像渲染的卡顿现象,提高了图像渲染的流畅性。
参照图18,图18为本申请实施例提供的图像渲染装置的一种可选的结构示意图,该第二图像渲染装置1800包括:
渲染信息接收模块1801:用于获取目标网格和多个渲染样式信息,其中,目标网格由各个渲染样式信息关联的待渲染网格合并得到,待渲染网格的顶点属性以及渲染样式信息均包括顶点标识,目标网格被配置为被渲染样式信息共同引用的网格;
渲染模块1802:用于根据顶点标识筛选出各个渲染样式信息对应的目标像素片段进行渲染,其中,目标像素片段由目标网格中的目标顶点转换得到,目标顶点与渲染样式信息具备相同的顶点标识。
进一步,渲染模块1802具体用于:
对目标网格中的各个顶点进行光栅化,得到多个候选像素片段,其中,候选像素片段的片段属性包括片段标识,片段标识由对应的顶点中顶点标识插值得到;
将片段标识与当前的渲染样式信息中的顶点标识进行一致性匹配,当匹配结果为相一致时,将候选像素片段确定为目标像素片段,将目标像素片段进行渲染。
进一步,渲染模块1802还用于:
在渲染管线中创建全局变量,从当前的渲染样式信息中获取顶点标识,将全局变量赋值为顶点标识;
遍历多个候选像素片段,将当前的候选像素片段的片段标识与全局变量进行一致性匹配。
进一步,渲染模块1802还用于:
当匹配结果为不一致时,调用片元着色器中的丢弃函数,基于丢弃函数将候选像素片段进行裁剪;
或者,当匹配结果为不一致时,将候选像素片段的透明度设置为预设值。
上述第二图像渲染装置1800与基于图形处理器的图像渲染方法基于相同的发明构思,上述过程描述了本申请实施例的图像渲染方法,图形处理器在逐一对渲染样式信息进行渲染时,能够根据顶点标识筛选出各个渲染样式信息对应的顶点作为目标顶点,目标顶点与渲染样式信息具备相同的顶点标识。然后将目标顶点转化为目标像素片段,对目标像素片段进行渲染。可见,即便图形处理器接收的是多个待渲染网格合并的目标网格,图形处理器也能够在渲染时通过顶点标识来对目标网格进行拆分,筛选出各个渲染样式信息对应的目标像素片段,因此不仅实现独立渲染各个待渲染网格的基础,同时在渲染时无需与大量的待渲染网格进行交互,降低交互频率,从而可以优化图像渲染的卡顿现象,提高图像渲染的流畅性。
本申请实施例提供的用于执行上述图像渲染方法的电子设备可以是终端,参照图19,图19为本申请实施例提供的终端的部分结构框图,该终端包括:摄像头组件1910、第一存储器1920、输入单元1930、显示单元1940、传感器1950、音频电路1960、无线保真(wireless fidelity,简称WiFi)模块1970、第一处理器1980、以及电源1990等部件。本领域技术人员可以理解,图19中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
摄像头组件1910可用于采集图像或视频。可选地,摄像头组件1910包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。
第一存储器1920可用于存储软件程序以及模块,第一处理器1980通过运行存储在第一存储器1920的软件程序以及模块,从而执行终端的各种功能应用以及数据处理。
输入单元1930可用于接收输入的数字或字符信息,以及产生与终端的设置以及功能控制有关的键信号输入。具体地,输入单元1930可包括触摸面板1931以及其他输入装置1932。
显示单元1940可用于显示输入的信息或提供的信息以及终端的各种菜单。显示单元1940可包括显示面板1941。
音频电路1960、扬声器1961,传声器1962可提供音频接口。
电源1990可以是交流电、直流电、一次性电池或可充电电池。
传感器1950的数量可以为一个或者多个,该一个或多个传感器1950包括但不限于:加速度传感器、陀螺仪传感器、压力传感器、光学传感器等等。其中:
加速度传感器可以检测以终端建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器可以用于检测重力加速度在三个坐标轴上的分量。第一处理器1980可以根据加速度传感器采集的重力加速度信号,控制显示单元1940以横向视图或纵向视图进行用户界面的显示。加速度传感器还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器可以检测终端的机体方向及转动角度,陀螺仪传感器可以与加速度传感器协同采集用户对终端的3D动作。第一处理器1980根据陀螺仪传感器采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器可以设置在终端的侧边框和/或显示单元1940的下层。当压力传感器设置在终端的侧边框时,可以检测用户对终端的握持信号,由第一处理器1980根据压力传感器采集的握持信号进行左右手识别或快捷操作。当压力传感器设置在显示单元1940的下层时,由第一处理器1980根据用户对显示单元1940的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
光学传感器用于采集环境光强度。在一个实施例中,第一处理器1980可以根据光学传感器采集的环境光强度,控制显示单元1940的显示亮度。具体地,当环境光强度较高时,调高显示单元1940的显示亮度;当环境光强度较低时,调低显示单元1940的显示亮度。在另一个实施例中,第一处理器1980还可以根据光学传感器采集的环境光强度,动态调整摄像头组件1910的拍摄参数。
在本实施例中,该终端所包括的第一处理器1980可以执行前面实施例的图像渲染方法。
本申请实施例提供的用于执行上述图像渲染方法的电子设备也可以是服务器,参照图20,图20为本申请实施例提供的服务器的部分结构框图,服务器2000可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上第二处理器2022和第二存储器2032,一个或一个以上存储应用程序2042或数据2044的存储介质2030(例如一个或一个以上海量存储装置)。其中,第二存储器2032和存储介质2030可以是短暂存储或持久存储。存储在存储介质2030的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器2000中的一系列指令操作。更进一步地,第二处理器2022可以设置为与存储介质2030通信,在服务器2000上执行存储介质2030中的一系列指令操作。
服务器2000还可以包括一个或一个以上电源2026,一个或一个以上有线或无线网络接口2050,一个或一个以上输入输出接口2058,和/或,一个或一个以上操作***2041,例如Windows Server TM,Mac OS XTM,Unix TM,Linux TM,Free BSDTM等等。
服务器2000中的第二处理器2022可以用于执行图像渲染方法。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质用于存储程序代码,程序代码用于执行前述各个实施例的图像渲染方法。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行实现上述的图像渲染方法。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便描述本申请的实施例,例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或装置不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或装置固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
应了解,在本申请实施例的描述中,多个(或多项)的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
还应了解,本申请实施例提供的各种实施方式可以任意进行组合,以实现不同的技术效果。
以上是对本申请的较佳实施进行了具体说明,但本申请并不局限于上述实施方式,熟悉本领域的技术人员在不违背本申请精神的共享条件下还可作出种种等同的变形或替换,这些等同的变形或替换均包括在本申请权利要求所限定的范围内。

Claims (15)

1.一种图像渲染方法,其特征在于,包括:
获取多个待渲染网格以及各个所述待渲染网格关联的渲染样式信息;
生成所述渲染样式信息对应的顶点标识,将所述顶点标识添加至所述渲染样式信息中,以及添加至所关联的所述待渲染网格的顶点属性中;
将多个所述待渲染网格进行合并,得到至少一个目标网格,将所述目标网格配置为被对应的所述渲染样式信息共同引用的网格;
将所述目标网格与各个所述渲染样式信息发送至图形处理器,以供所述图形处理器根据所述顶点标识筛选出各个所述渲染样式信息对应的目标像素片段进行渲染,其中,所述目标像素片段基于所述目标网格中的目标顶点转换得到,所述目标顶点与所述渲染样式信息具备相同的所述顶点标识;
所述生成所述渲染样式信息对应的顶点标识,包括:
当同一个所述待渲染网格分别关联不同的所述渲染样式信息时,获取当前的所述待渲染网格的第二网格标识,根据所述第二网格标识得到所关联的各个所述渲染样式信息对应的顶点标识,其中,所述第二网格标识用于标记不同的所述待渲染网格;
当同一个所述渲染样式信息分别关联不同的所述待渲染网格时,获取所述渲染样式信息的样式标识,将所述样式标识作为所述渲染样式信息对应的顶点标识,其中,所述样式标识用于标记不同的所述渲染样式信息;
当不同的所述待渲染网格分别关联不同的所述渲染样式信息时,获取所述第二网格标识,根据所述第二网格标识得到所关联的所述渲染样式信息对应的顶点标识,或者,获取所述样式标识,将所述样式标识作为所述渲染样式信息对应的顶点标识。
2.根据权利要求1所述的图像渲染方法,其特征在于,所述将所述目标网格配置为被对应的所述渲染样式信息共同引用的网格,包括:
生成所述目标网格的第一网格标识,其中,所述第一网格标识用于标记不同的所述目标网格;
将各个所述目标网格分别作为一个渲染批次,在当前的所述渲染批次中,对于所述目标网格对应的各个所述渲染样式信息,分别根据所述第一网格标识从网格缓存区中读取所述目标网格,将读取到的所述目标网格配置为被所述渲染样式信息共同引用的网格。
3.根据权利要求2所述的图像渲染方法,其特征在于,所述渲染样式信息被配置为样式对象,所述将各个所述目标网格分别作为一个渲染批次,包括:
将对应同一个所述目标网格的多个所述样式对象合并为样式对象列表;
根据所述第一网格标识、所述目标网格和所述样式对象列表,构建所述目标网格所在的渲染批次的批次对象。
4.根据权利要求3所述的图像渲染方法,其特征在于,所述对于所述目标网格对应的各个所述渲染样式信息,分别根据所述第一网格标识从网格缓存区中读取所述目标网格,将读取到的所述目标网格配置为被所述渲染样式信息共同引用的网格,包括:
遍历所述批次对象中的所述样式对象列表,获取所述样式对象列表中当前的所述样式对象;
为当前的所述样式对象创建场景节点对象,根据所述样式对象创建材质对象,将所述材质对象与所述场景节点对象进行绑定,将所述样式对象中的所述顶点标识添加至所述材质对象;
根据所述第一网格标识从网格缓存区中读取所述目标网格,将读取到的所述目标网格配置为被所述场景节点对象共同引用的网格。
5.根据权利要求2所述的图像渲染方法,其特征在于,所述目标网格由多个网格类型相同的所述待渲染网格合并得到,所述网格类型用于指示所述待渲染网格所建模的元素的类型,所述生成所述目标网格的第一网格标识,包括:
获取所述待渲染网格的所述网格类型以及所述渲染样式信息的样式类型;
将所述网格类型与所述样式类型进行拼接,得到所述目标网格的第一网格标识。
6.根据权利要求2所述的图像渲染方法,其特征在于,所述分别根据所述第一网格标识从网格缓存区中读取所述目标网格之后,所述图像渲染方法还包括:
当根据所述第一网格标识无法从所述网格缓存区中读取所述目标网格时,将所述第一网格标识以及所述目标网格关联写入至所述网格缓存区中。
7.根据权利要求1所述的图像渲染方法,其特征在于,所述待渲染网格被划分为多个子网格,各个所述子网格分别关联不同的所述渲染样式信息,所述根据所述第二网格标识得到所关联的各个所述渲染样式信息对应的顶点标识,包括:
获取用于标记所述子网格的子网格标识;
将所述第二网格标识和所述子网格标识进行拼接,得到所关联的各个所述渲染样式信息对应的顶点标识。
8.一种图像渲染方法,其特征在于,包括:
获取目标网格和多个渲染样式信息,其中,所述目标网格由各个所述渲染样式信息关联的待渲染网格合并得到,所述待渲染网格的顶点属性以及所述渲染样式信息均包括顶点标识,所述目标网格被配置为被所述渲染样式信息共同引用的网格;
根据所述顶点标识筛选出各个所述渲染样式信息对应的目标像素片段进行渲染,其中,所述目标像素片段由所述目标网格中的目标顶点转换得到,所述目标顶点与所述渲染样式信息具备相同的所述顶点标识;
所述顶点标识通过以下步骤生成:
当同一个所述待渲染网格分别关联不同的所述渲染样式信息时,获取当前的所述待渲染网格的第二网格标识,根据所述第二网格标识得到所关联的各个所述渲染样式信息对应的顶点标识,其中,所述第二网格标识用于标记不同的所述待渲染网格;
当同一个所述渲染样式信息分别关联不同的所述待渲染网格时,获取所述渲染样式信息的样式标识,将所述样式标识作为所述渲染样式信息对应的顶点标识,其中,所述样式标识用于标记不同的所述渲染样式信息;
当不同的所述待渲染网格分别关联不同的所述渲染样式信息时,获取所述第二网格标识,根据所述第二网格标识得到所关联的所述渲染样式信息对应的顶点标识,或者,获取所述样式标识,将所述样式标识作为所述渲染样式信息对应的顶点标识。
9.根据权利要求8所述的图像渲染方法,其特征在于,所述根据所述顶点标识筛选出各个所述渲染样式信息对应的目标像素片段进行渲染,包括:
对所述目标网格中的各个顶点进行光栅化,得到多个候选像素片段,其中,所述候选像素片段的片段属性包括片段标识,所述片段标识由对应的顶点的所述顶点标识插值得到;
将所述片段标识与当前的所述渲染样式信息中的所述顶点标识进行一致性匹配,当匹配结果为相一致时,将所述候选像素片段确定为目标像素片段,将所述目标像素片段进行渲染。
10.根据权利要求9所述的图像渲染方法,其特征在于,所述将所述片段标识与当前的所述渲染样式信息中的所述顶点标识进行一致性匹配,包括:
在渲染管线中创建全局变量,从当前的所述渲染样式信息中获取所述顶点标识,将所述全局变量赋值为所述顶点标识;
遍历多个所述候选像素片段,将当前的所述候选像素片段的所述片段标识与所述全局变量进行一致性匹配。
11.根据权利要求9所述的图像渲染方法,其特征在于,所述图像渲染方法还包括:
当匹配结果为不一致时,调用片元着色器中的丢弃函数,基于所述丢弃函数将所述候选像素片段进行裁剪;
或者,当匹配结果为不一致时,将所述候选像素片段的透明度设置为预设值。
12.一种图像渲染装置,其特征在于,包括:
信息获取模块:用于获取多个待渲染网格以及各个所述待渲染网格关联的渲染样式信息;
顶点标识获取模块:用于生成所述渲染样式信息对应的顶点标识,将所述顶点标识添加至所述渲染样式信息中,以及添加至所关联的所述待渲染网格的顶点属性中;
网格合并模块:用于将多个所述待渲染网格进行合并,得到至少一个目标网格,将所述目标网格配置为被对应的所述渲染样式信息共同引用的网格;
渲染信息发送模块:用于将所述目标网格与各个所述渲染样式信息发送至图形处理器,以供所述图形处理器根据所述顶点标识筛选出各个所述渲染样式信息对应的目标像素片段进行渲染,其中,所述目标像素片段基于所述目标网格中的目标顶点转换得到,所述目标顶点与所述渲染样式信息具备相同的所述顶点标识;
所述生成所述渲染样式信息对应的顶点标识,包括:
当同一个所述待渲染网格分别关联不同的所述渲染样式信息时,获取当前的所述待渲染网格的第二网格标识,根据所述第二网格标识得到所关联的各个所述渲染样式信息对应的顶点标识,其中,所述第二网格标识用于标记不同的所述待渲染网格;
当同一个所述渲染样式信息分别关联不同的所述待渲染网格时,获取所述渲染样式信息的样式标识,将所述样式标识作为所述渲染样式信息对应的顶点标识,其中,所述样式标识用于标记不同的所述渲染样式信息;
当不同的所述待渲染网格分别关联不同的所述渲染样式信息时,获取所述第二网格标识,根据所述第二网格标识得到所关联的所述渲染样式信息对应的顶点标识,或者,获取所述样式标识,将所述样式标识作为所述渲染样式信息对应的顶点标识。
13.一种图像渲染装置,其特征在于,包括:
渲染信息接收模块:用于获取目标网格和多个渲染样式信息,其中,所述目标网格由各个所述渲染样式信息关联的待渲染网格合并得到,所述待渲染网格的顶点属性以及所述渲染样式信息均包括顶点标识,所述目标网格被配置为被所述渲染样式信息共同引用的网格;
渲染模块:用于根据所述顶点标识筛选出各个所述渲染样式信息对应的目标像素片段进行渲染,其中,所述目标像素片段由所述目标网格中的目标顶点转换得到,所述目标顶点与所述渲染样式信息具备相同的所述顶点标识;
所述顶点标识通过以下步骤生成:
当同一个所述待渲染网格分别关联不同的所述渲染样式信息时,获取当前的所述待渲染网格的第二网格标识,根据所述第二网格标识得到所关联的各个所述渲染样式信息对应的顶点标识,其中,所述第二网格标识用于标记不同的所述待渲染网格;
当同一个所述渲染样式信息分别关联不同的所述待渲染网格时,获取所述渲染样式信息的样式标识,将所述样式标识作为所述渲染样式信息对应的顶点标识,其中,所述样式标识用于标记不同的所述渲染样式信息;
当不同的所述待渲染网格分别关联不同的所述渲染样式信息时,获取所述第二网格标识,根据所述第二网格标识得到所关联的所述渲染样式信息对应的顶点标识,或者,获取所述样式标识,将所述样式标识作为所述渲染样式信息对应的顶点标识。
14.一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11任意一项所述的图像渲染方法。
15.一种计算机可读存储介质,所述存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11任意一项所述的图像渲染方法。
CN202311200361.6A 2023-09-18 2023-09-18 图像渲染方法、装置、电子设备及存储介质 Active CN117011492B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311200361.6A CN117011492B (zh) 2023-09-18 2023-09-18 图像渲染方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311200361.6A CN117011492B (zh) 2023-09-18 2023-09-18 图像渲染方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN117011492A CN117011492A (zh) 2023-11-07
CN117011492B true CN117011492B (zh) 2024-01-05

Family

ID=88567446

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311200361.6A Active CN117011492B (zh) 2023-09-18 2023-09-18 图像渲染方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117011492B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117893663B (zh) * 2024-03-13 2024-06-07 北京大学 基于WebGPU的Web图形渲染性能优化方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111508052A (zh) * 2020-04-23 2020-08-07 网易(杭州)网络有限公司 三维网格体的渲染方法和装置
CN112381918A (zh) * 2020-12-03 2021-02-19 腾讯科技(深圳)有限公司 图像渲染方法、装置、计算机设备和存储介质
CN113947657A (zh) * 2021-10-18 2022-01-18 网易(杭州)网络有限公司 目标模型的渲染方法、装置、设备及存储介质
CN116012507A (zh) * 2022-12-23 2023-04-25 星臻科技(上海)有限公司 一种渲染数据处理方法、装置、电子设备及存储介质
CN116245999A (zh) * 2023-05-09 2023-06-09 小米汽车科技有限公司 文字渲染方法、装置、电子设备及可读存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111508052A (zh) * 2020-04-23 2020-08-07 网易(杭州)网络有限公司 三维网格体的渲染方法和装置
CN112381918A (zh) * 2020-12-03 2021-02-19 腾讯科技(深圳)有限公司 图像渲染方法、装置、计算机设备和存储介质
WO2022116759A1 (zh) * 2020-12-03 2022-06-09 腾讯科技(深圳)有限公司 图像渲染方法、装置、计算机设备和存储介质
CN113947657A (zh) * 2021-10-18 2022-01-18 网易(杭州)网络有限公司 目标模型的渲染方法、装置、设备及存储介质
CN116012507A (zh) * 2022-12-23 2023-04-25 星臻科技(上海)有限公司 一种渲染数据处理方法、装置、电子设备及存储介质
CN116245999A (zh) * 2023-05-09 2023-06-09 小米汽车科技有限公司 文字渲染方法、装置、电子设备及可读存储介质

Also Published As

Publication number Publication date
CN117011492A (zh) 2023-11-07

Similar Documents

Publication Publication Date Title
US8217990B2 (en) Stereoscopic picture generating apparatus
CN111784833A (zh) 基于WebGL的洪水演进态势三维动态可视化展示方法
CA2790842C (en) Integrated gis system with interactive 3d interface
US8495066B2 (en) Photo-based virtual world creation system for non-professional volunteers
US20070139408A1 (en) Reflective image objects
CN115049811B (zh) 一种数字孪生虚拟三维场景的编辑方法、***及存储介质
CN110335333A (zh) 用于在三维地图中高效渲染云天气效果图形的方法和***
WO2012037157A2 (en) System and method for displaying data having spatial coordinates
JPH02287776A (ja) 大域レンダリングに階層ディスプレイリストを採用する方法
CN117011492B (zh) 图像渲染方法、装置、电子设备及存储介质
CN112419499B (zh) 一种沉浸式的态势场景仿真***
CN104867175A (zh) 一种虚拟效果图实景展示装置及其实现方法
CN114820990B (zh) 一种基于数字孪生的流域防洪可视化方法及***
CN114756937A (zh) 一种基于UE4引擎和Cesium框架的可视化***及方法
CN115690344A (zh) 海绵城市沙盘及天气模拟***
KR101919077B1 (ko) 증강 현실 표시 방법 및 장치
US9401044B1 (en) Method for conformal visualization
US20210241539A1 (en) Broker For Instancing
CN117095110A (zh) 面向互联网三维地图的顺序无关透明渲染方法和***
CN116310041A (zh) 内构效果的渲染方法及装置、电子设备、存储介质
JP2003168130A (ja) リアルタイムで合成シーンのフォトリアルなレンダリングをプレビューするための方法
Kennie et al. Modelling for digital terrain and landscape visualisation
Giertsen et al. An open system for 3D visualisation and animation of geographic information
Diepstraten et al. Automatic generation and non-photorealistic rendering of 2+ 1D Minkowski diagrams
WO2024027237A1 (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
GR01 Patent grant
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40097762

Country of ref document: HK