着色器的处理方法、装置、电子设备及程序产品与流程

文档序号:33712340发布日期:2023-04-01 00:25阅读:48来源:国知局
着色器的处理方法、装置、电子设备及程序产品与流程

1.本技术涉及地图处理技术领域,尤其涉及一种着色器的处理方法、装置、电子设备及程序产品。


背景技术:

2.着色器(shader)用于实现图像渲染,指的是一组供电子设备在执行图像渲染任务时使用的指令。示例性的,如着色器可以用于计算图像的颜色明暗等。
3.在地图领域,存在地图中的多个元素需要被渲染成相同效果的场景。目前,对于需要被渲染成相同效果的每个元素,研发人员需要编写每个元素的着色器,着色器的生成效率低。


技术实现要素:

4.本技术提供一种着色器的处理方法、装置、电子设备及程序产品,可以提高着色器的生成效率。
5.第一方面,本技术提供一种着色器的处理方法,所述方法包括:
6.获取第一着色器,所述第一着色器包括至少一个目标数据:地图元素的属性数据、顶点着色器数据以及像素着色器数据;在所述第一着色器中提取所述至少一个目标数据;根据所述至少一个目标数据,以及着色器模板,生成第二着色器,所述着色器模板包括:基于所述至少一个目标数据将所述地图元素渲染成预设效果的渲染数据,所述第二着色器用于将所述地图元素渲染成所述预设效果。
7.第二方面,本技术提供一种着色器的处理装置,所述装置包括:
8.处理模块,用于获取第一着色器,所述第一着色器包括至少一个目标数据:地图元素的属性数据、顶点着色器数据以及像素着色器数据;在所述第一着色器中提取所述至少一个目标数据;着色器生成模块,用于根据所述至少一个目标数据,以及着色器模板,生成第二着色器,所述着色器模板包括:基于所述至少一个目标数据将所述地图元素渲染成预设效果的渲染数据,所述第二着色器用于将所述地图元素渲染成所述预设效果。
9.第三方面,本技术提供一种电子设备,包括:处理器、以及存储器;所述处理器与所述存储器通信连接;
10.所述存储器存储计算机执行指令;
11.所述处理器执行所述存储器存储的计算机执行指令,以实现如第一方面任一项所述的方法。
12.第四方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面任一项所述的方法。
13.第五方面,本技术提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面任一项所述的方法。
14.本技术提供一种着色器的处理方法、装置、电子设备及程序产品,可以预先设置着色器模板,着色器模板中包括基于至少一个目标数据将地图元素渲染成预设效果的渲染数据,用户只需编写每个地图元素的部分代码,如地图元素不同的属性数据、顶点着色器数据以及像素着色器数据等,无需对每个地图元素重复编写渲染数据,电子设备可以根据第一着色器和着色器模板,就可以生成将地图元素渲染成预设效果的第二着色器。本技术在可以实现生成着色器的基础上,且对于需要被渲染成相同效果的地图元素,用户只需编写一套该着色器模板,以及编写每个地图元素的差异部分的数据即可,无需对每个地图元素重复编写渲染数据,可以减少用户的编写工作量,提高着色器的生成效率。
附图说明
15.为了更清楚地说明本技术或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
16.图1为本技术提供的着色器的处理方法的一种流程示意图;
17.图2为本技术提供的电子设备的一种界面示意图;
18.图3为本技术提供的生成第二着色器的一种流程示意图;
19.图4为本技术提供的着色器的处理方法适用的一种场景示意图;
20.图5为本技术提供的着色器的处理方法的另一种流程示意图;
21.图6为本技术提供的着色器的处理方法的另一种流程示意图;
22.图7为本技术提供的着色器的处理方法的另一种流程示意图;
23.图8为本技术提供的着色器的处理装置的一种结构示意图;
24.图9为本技术提供的一种电子设备的硬件结构示意图。
25.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本技术构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。
具体实施方式
26.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术中的附图,对本技术中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
27.下面首先对本技术涉及到的部分名词概念进行解释:
28.本技术实施例中涉及的电子设备可以为终端或者服务器等任意一种具有处理功能的设备,本技术实施例对电子设备的形态不做限制。
29.地图元素:地图中的元素,可以包括但不限于商场、写字楼、餐厅、超市、游乐场、景区、公交站、绿地、河流等。
30.地图元素的效果:不同的地图元素的效果可以不同。示例性的,河流的效果可以是平面效果,商场的效果可以是三维立体效果。本技术实施例涉及不同的地图元素的通用效
果,即不同的地图元素的相同效果,该相同效果可以包括但不限于:光、阴影、反射等效果。
31.示例性的,以光效果为例,光效果可以理解为将地图元素渲染成具备一定角度、一定亮度的打光效果。
32.着色器(shader):用于实现图像渲染,用来替代固定渲染管线的可编辑程序,或者可以将着色器理解为供电子设备在执行图像渲染任务时使用的指令。在一种示例中,电子设备中的图形处理器(graphics processing unit,gpu)可以运行着色器,以执行图像渲染任务,实现图像的渲染。
33.过程pass:为实现一个效果所执行的流程。本技术中可以将实现每个效果所执行的流程称为一个pass,示例性的,如当效果包括光和阴影时,光可以对应一个pass,如光pass,阴影可以对应一个pass,如阴影pass。
34.一个pass可以包括多个渲染步骤,示例性的,如阴影pass包括:深度计算步骤、场景计算步骤等。本技术实施例对不同pass包括的渲染步骤不做赘述,可以参照现有技术中的相关描述。
35.pass着色器:用于将地图元素渲染成一个效果。示例性的,pass着色器可以包括:光pass着色器、阴影pass着色器等。其中,gpu运行光pass着色器可以将地图元素渲染成具备光效果,gpu运行阴影pass着色器可以将地图元素渲染成具备阴影效果。
36.渲染管线:用于将原始图像数据转换为电子设备的屏幕上有色的二维像素输出。其中,gpu可以运行小程序,进而在渲染管线中处理数据,以实现图像的渲染。在一种示例中,gpu运行的小程序可以称为着色器。
37.在一种示例中,渲染管线可以称为渲染流水线。其中,渲染管线为了将地图元素渲染成光、阴影等效果,可以将光pass着色器和阴影pass着色器组织在一起,输入地图元素,且按照pass着色器的执行顺序,执行光pass着色器和阴影pass着色器,以将地图元素渲染成光、阴影效果。也就是说,渲染管线可以组织效果对应的着色器,且执行效果对应的着色器,以实现地图元素的渲染。
38.地图客户端可以运行着色器,执行图像渲染任务,进而在地图客户端显示地图元素。在一种实施例中,存在地图中的多个元素被渲染成相同效果的场景,如商场、写字楼、餐厅、超市、游乐场等均被渲染成光、阴影的效果。目前,针对相同的效果,研发人员需要编写每个地图元素的着色器,增加了研发人员的重复编写工作,着色器生成效率低。
39.在一种示例中,为了提高着色器的生成效率,可以封装功能函数库,针对不同的地图元素所需的效果,电子设备调用地图元素对应的函数即可。该种实现方式虽然能够在一定程度上提高着色器的生成效率,但研发人员需要预先了解功能函数库支持的效果,且功能函数库需要提供多个接口,以便于电子设备调用不同的函数,增加了研发人员的学习成本。
40.另外,该种实现方式中,因为不同地图元素被渲染成相同效果所使用的数据不同,因此还是需要预先编写不同地图元素对应的函数,仍会增加重复编写工作,着色器生成效率低。另外,一旦地图元素的渲染策略有变动,需要重新编写地图元素对应的函数,维护难度大。应理解,地图元素的渲染策略可以理解为使用的数据或者渲染步骤有变动等。
41.基于目前地图渲染中存在的问题,本技术提供一种着色器的处理方法,可以预先创建着色器模板,着色器模板包括将地图元素渲染成预设效果的渲染数据,这样针对需要
被渲染成预设效果的地图元素,研发人员只需编写除了渲染数据之外的其他数据,电子设备可以根据研发人员编写的数据以及着色器模板,就可以生成着色器。本技术可以避免研发人员的重复编写工作,提高着色器的生成效率。在一种示例中,可以将研发人员作为用户,该用户可以理解为配置着色器的用户。
42.应理解,预设效果可以理解为光、阴影、反射等效果。本技术提供的着色器的处理方法的执行主体可以为,终端或者服务器等任意一种具有处理功能的电子设备,下述实施例中以电子设备为例进行说明。
43.下面结合具体地实施例对本技术的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
44.图1为本技术提供的着色器的处理方法的一种流程示意图。如图1所示,该方法可以包括以下步骤:
45.s101、获取第一着色器,第一着色器包括至少一个目标数据:地图元素的属性数据、顶点着色器数据以及像素着色器数据。
46.第一着色器为用户编写的。第一着色器可以包括至少一个目标数据:地图元素的属性数据、顶点着色器数据以及像素着色器数据。其中,地图元素的属性数据、顶点着色器数据以及像素着色器数据均可以称为目标数据。
47.在一种示例中,顶点着色器数据可以包括顶点着色器代码(vertex shader),vertex shader用于负责地图元素的顶点的几何关系等的计算,可以在gpu渲染地图元素的顶点时被执行。像素着色器数据可以包括像素着色器代码(fragment shader),fragment shader主要负责像素颜色等的计算,可以在gpu渲染屏幕上的像素时执行。在一种示例中,像素着色器还可以称为片段着色器。
48.在一种示例中,地图元素的属性数据可以包括如下至少一项:地图元素的顶点坐标,法线,纹理坐标,顶点颜色等信息,变换矩阵,材质,光照参数和颜色等信息。在一种示例中,地图元素的属性数据还可以包括:属性数据的属性,如地图元素的顶点坐标是世界坐标系下的,还是屏幕坐标系下的。如地图元素的顶点坐标是2位的,还是3位的或者是4位的。在一种示例中,第一着色器中可以包括状态信息,该状态信息可以包括属性数据的属性。
49.在一种示例中,地图元素的属性数据可以包括:attribute信息、uniform信息,以及varying信息。其中,attribute信息可以理解为vertex shader中使用的信息,如attribute信息可以包括顶点的数据,如:顶点坐标,法线,纹理坐标,顶点颜色等。uniform信息可以理解为vertex shader和fragment shader中共同使用的信息,如uniform信息可以包括变换矩阵,材质,光照参数和颜色等信息。varying信息是vertex shader和fragment shader之间做数据传递使用的,示例性的,vertex shader可以修改varying信息的值,然后fragment shader使用该varying信息的值。
50.在一种示例中,顶点着色器数据还可以包括地图元素的属性数据,如顶点着色器数据可以包括顶点的数据。或者顶点着色器数据中包括的顶点着色器代码可以用于计算得到地图元素的属性数据,如顶点的数据。在一种示例中,像素着色器数据还可以包括地图元素的属性数据,如变换矩阵,材质,光照参数和颜色等信息。或者像素着色器数据中包括的像素着色器代码可以用于计算得到地图元素的属性数据,如变换矩阵,材质,光照参数和颜色等信息。
51.应理解,至少一个目标数据可以理解为:用于将地图元素渲染成预设效果需要使用的数据。
52.在不同地图元素需求被渲染成相同效果的情况下,不同地图元素的第一着色器可以不同。以第一着色器包括地图元素的属性数据、顶点着色器数据以及像素着色器数据为例。示例性的,地图元素1的第一着色器可以包括:地图元素1的属性数据、顶点着色器数据以及像素着色器数据,其中,地图元素1的属性数据可以包括顶点坐标和顶点颜色。地图元素2的第一着色器可以包括:地图元素2的属性数据、顶点着色器数据以及像素着色器数据,其中,地图元素2的属性数据可以包括材质,光照参数和颜色。
53.在一些实施例中,在同一地图元素需求被渲染成相同效果的情况下,同一地图元素的第一着色器可以不同。换句话说,同一地图元素需求被渲染成预设效果时,用户可以编写不同的第一着色器。以地图元素1为例,地图元素1的第一着色器可以包括:地图元素的属性数据、顶点着色器数据以及像素着色器数据中的至少一个。
54.示例性的,地图元素1的第一着色器可以包括地图元素的属性数据。或者,地图元素1的第一着色器可以包括顶点着色器代码,该顶点着色器代码可以用于生成地图元素1的属性数据。这样,本技术实施例中,电子设备根据地图元素1不同的第一着色器,均可以生成第二着色器,生成第二着色器的过程可以参照下述实施例中的相关描述。
55.针对不同的地图元素,用户可以编写不同的第一着色器,针对同一地图元素,用户也可以编写不同的第一着色器,只要第一着色器中的数据能够支撑将地图元素渲染成预设效果即可。本技术实施例对用户如何编写地图元素的第一着色器不作限制。
56.在一些实施例中,电子设备例如可以通过应用程序接口(application programming interface,api),或者,图像用户界面(graphical user interface,gui),接收用户输入的第一着色器,或者接收用户导入的第一着色器。示例性的,用户可以在电子设备上编写第一着色器,相应的,电子设备可以获取第一着色器。在一些实施例中,电子设备例如可以通信接口与其他设备交互,以接收来自其他设备的第一着色器。示例性的,用户可以在其他设备上编写第一着色器,且用户可以触发其他设备向电子设备发送第一着色器。本实施例对电子设备获取第一着色器的方式不做限制。
57.在一些实施例中,电子设备中可以预先存储多个第一着色器,如该多个第一着色器为用户导入至电子设备中的。其中,该多个第一着色器可以单独存储,如一个第一着色器存储在一个文件中。或者,该多个第一着色器可以共同存储,如该多个第一着色器可以存储在一个文件中,且采用不同的标识区分不同的第一着色器。示例性的,标识可以为第一着色器的名称或编号等,本技术对此不作限制。
58.在该实施例中,用户可以在电子设备中选择第一着色器,以触发电子设备获取第一着色器。图2为本技术提供的电子设备的一种界面示意图。示例性的,参照图2中的a,以一个第一着色器存储在一个文件中为例,电子设备可以显示多个文件的名称,如文件1和文件2,每个文件夹中包括一个第一着色器。如用户选择文件1,可以触发电子设备获取文件1中的第一着色器。应理解,图2中以电子设备为计算机为例进行说明。
59.s102、在第一着色器中提取至少一个目标数据。
60.在一些实施例中,电子设备可以根据预先设置的关键词,在第一着色器中提取至少一个目标数据。
61.在一种示例中,对于地图元素的属性数据来说,关键词如可以包括:顶点坐标,法线,纹理坐标,顶点颜色,变换矩阵,材质,光照参数和颜色等,以用于提取第一着色器中的地图元素的属性数据。在一种示例中,对于地图元素的属性数据来说,关键词如可以包括:attribute,uniform,以及varying,以用于提取第一着色器中的地图元素的属性数据。
62.在一种示例中,对于顶点着色器数据来说,关键词可以为vertex(或vertex code),顶点着色器数据的关键词可以基于第一着色器中包含的顶点着色器数据进行设置,以便于电子设备可以提取第一着色器中的顶点着色器数据。在一种示例中,对于像素着色器数据来说,关键词可以为fragment(或fragment code),像素着色器数据的关键词可以基于第一着色器中包含的像素着色器数据进行设置,以便于电子设备可以提取第一着色器中的像素着色器数据。
63.在一些实施例中,用户可以按照预设格式编写第一着色器。其中,预设格式可以定义第一着色器中目标数据的位置。示例性的,如预设格式定义第一着色器的前10行为地图元素的属性数据,第11行至第15行为顶点着色器数据,以及第16行至第20行为像素着色器数据。
64.在该实施例中,电子设备可以根据该预设格式定义的第一着色器中目标数据的位置,可以在第一着色器中提取至少一个目标数据。
65.s103、根据至少一个目标数据,以及着色器模板,生成第二着色器,着色器模板包括:基于至少一个目标数据将地图元素渲染成预设效果的渲染数据,第二着色器用于将地图元素渲染成预设效果。
66.着色器模板可以包括:基于至少一个目标数据将地图元素渲染成预设效果的渲染数据。渲染数据可以理解为逻辑代码,以阴影效果为例,渲染数据可以包括深度逻辑代码和场景逻辑代码。深度逻辑代码在执行时,可以用于计算地图元素的深度信息,场景逻辑代码在执行时,可以用于计算地图元素所处的场景信息。
67.应理解,对于第一着色器中包含的至少一个目标数据,着色器模板中包括基于该至少一个目标数据的将地图元素渲染成预设效果的渲染数据。示例性的,假设一个第一着色器中包括顶点的数据,另一第一着色器中包括变换矩阵,材质等信息,以深度计算逻辑代码为例,着色器模板中可以包括基于顶点的数据,计算地图元素的深度信息的逻辑代码,还可以包括基于变换矩阵,材质等信息,计算地图元素的深度信息的逻辑代码。
68.本技术中预先设置了着色器模板,即预先编写了用于将地图元素渲染成预设效果的渲染数据(逻辑代码),这样对于需要被渲染成相同效果的地图元素,只需编写一套该着色器模板即可,无需对每个地图元素均重复编写逻辑代码。
69.在一些实施例中,电子设备可以将至少一个目标数据填入着色器模板,生成第二着色器。示例性的,着色器模板可以定义填入至少一个目标数据的位置,电子设备可以根据预先定义的位置,将至少一个目标数据填入着色器模板。示例性的,如着色器模板定义第二行用于填入地图元素的属性数据,则当电子设备从第一着色器中提取地图元素的属性数据后,可以将地图元素的属性数据填入着色器模板的第二行。示例性的,如着色器模板定义第二行用于填入地图元素的属性数据中的顶点的数据,第四行用于填入地图元素的属性数据中的颜色,则当电子设备从第一着色器中提取顶点的数据以及颜色后,可以将顶点的数据填入着色器模板的第二行,以及将颜色填入着色器模板的第四行。
70.图3为本技术提供的生成第二着色器的一种流程示意图。参照图3,以第一着色器包括地图元素的属性数据、顶点着色器代码,以及像素着色器代码为例,电子设备可以在第一着色器中提取地图元素的属性数据、顶点着色器代码,以及像素着色器代码,且将地图元素的属性数据、顶点着色器代码,以及像素着色器代码分别填写至着色器模板中对应的位置,得到第二着色器。
71.第二着色器用于将地图元素渲染成预设效果,换句话说,在第二着色器运行时可以将地图元素渲染成预设效果。示例性的,如gpu可以运行第二着色器,以便于gpu可以将地图元素渲染成预设效果。
72.图4为本技术提供的着色器的处理方法适用的一种场景示意图。参照图4,在该场景中,电子设备生成第二着色器后,可以将第二着色器上传至服务器。该服务器如可以为资源服务器,和/或,发布服务器。图4中以电子设备为计算机为例进行说明。
73.其中,当服务器包括资源服务器时,资源服务器可以将第二着色器作为地图的资源下发至地图客户端,这样地图客户端在显示地图时,可以运行第二着色器,渲染地图元素,这样地图客户端可以显示具备预设效果的地图元素。
74.其中,当服务器包括发布服务器时,电子设备可以将第二着色器打包在地图发布包中,且将地图发布包上传至发布服务器,在地图客户端请求更新地图版本时,发布服务器可以向地图客户端发送地图发布包,以便于地图客户端在显示地图时,可以运行地图发布包中的第二着色器,更新渲染地图元素,这样地图客户端可以显示具备预设效果的地图元素。在一种示例中,当电子设备为发布服务器时,电子设备可以将第二着色器打包在地图发布包中,且将地图发布包推送至地图客户端。
75.本技术实施例中,可以预先设置着色器模板,着色器模板中包括基于至少一个目标数据将地图元素渲染成预设效果的渲染数据,用户只需编写每个地图元素的部分代码,如地图元素不同的属性数据、顶点着色器数据以及像素着色器数据等差异数据,无需对每个地图元素重复编写渲染数据,电子设备可以根据第一着色器和着色器模板,就可以生成将地图元素渲染成预设效果的第二着色器。本技术在实现生成着色器的基础上,且对于需要被渲染成相同效果的地图元素,用户只需编写一套该着色器模板,以及编写每个地图元素与渲染相关的差异数据即可,无需对每个地图元素重复编写渲染数据,可以减少用户的编写工作量,提高着色器的生成效率。
76.另外,用户无需了解渲染数据能够提供的预设效果,只需编写至少一个目标数据,避免了增加学习成本的问题。且,本技术中将需要用户编写的第一着色器和着色器模板隔离开,减少二者的耦合,在该种情况下,若地图元素的渲染策略有变动,如增加了一种效果的渲染数据或者修改了渲染数据,用户只需要修改着色器模板就可以,无需重新编写第一着色器,可以提高开发效率,降低维护成本。
77.在一些实施例中,用户可以在电子设备上修改着色器模板,电子设备可以响应于用户对着色器模板的修改操作,更新着色器模板。本技术实施例对用户如何修改着色器模板的过程不做限制,应理解,在着色器模板更新后,电子设备响应于用于提供的第一着色器,可以根据更新后的着色器模板,生成第二着色器,该过程可以参照图1所示的实施例中的描述。
78.在一些实施例中,预设效果可以包括至少一个,相应的,着色器模板可以包括基于
至少一个目标数据将地图元素渲染成不同预设效果的渲染数据。示例性的,一个着色器模板中可以包括将地图元素渲染成不同预设效果的渲染数据。
79.在一些实施例中,为了便于维护不同预设效果的渲染数据,可以将不同预设效果的渲染数据设置在不同的模板中。在该实施例中,可以预先设置至少一个着色器模板,着色器模板可以为pass着色器模板,换句话说,本技术可以预先设置至少一个pass着色器模板,下述实施例中以“至少一个pass着色器模板”进行说明。相应的,第二着色器可以为至少一个,其中,电子设备可以根据至少一个目标数据,以及至少一个pass着色器模板,得到至少一个第二着色器,第二着色器为pass着色器。换句话说,电子设备可以根据至少一个目标数据,以及至少一个pass着色器模板,得到至少一个pass着色器,下述实施例中以“至少一个pass着色器”进行说明。不同的pass着色器可以用于将地图元素渲染成不同的预设效果,即每个第二着色器用于将地图元素渲染成不同的预设效果。
80.示例性的,预设效果包括:光、阴影以及反射效果,则着色器模板可以包括:光pass着色器模板、阴影pass着色器模板,以及反射pass着色器模板。在该实施例中,若任一个效果对应的着色器模板有修改,用户可以修改该效果对应的着色器模板,无需在一个着色器模板查找该效果的渲染数据的位置然后再修改,便于用户维护着色器模板。
81.在一些实施例中,pass着色器模板中可以定义用户可以选择的渲染步骤以及地图元素的属性数据。示例性的,如地图元素需求被渲染成阴影效果,阴影pass着色器模板中可以定义需要使用顶点的数据,或颜色信息,则用户在编写第一着色器时,可以在第一着色器中携带顶点的数据,和/或,颜色信息。
82.示例性的,如地图元素需求被渲染成阴影效果,阴影pass着色器模板可以包括将地图元素渲染成阴影效果的至少一个渲染步骤,阴影pass着色器模板可以定义用户可以选择的渲染步骤。如将地图元素渲染成阴影效果包括步骤1、步骤2,以及步骤3,且阴影pass着色器模板可以定义可选择的步骤2,即用户可以选择将地图元素渲染成阴影效果时执行步骤2或不执行步骤2,步骤2可以作为用户可选择的渲染步骤。示例性的,如步骤2可以为法线校正步骤,执行法线校正步骤后的准确性更好,但不执行法线校正步骤可以提高处理效果也可以达到阴影渲染效果。
83.在该实施例中,用户可以按照pass着色器模板中定义的可选择的渲染步骤以及地图元素的属性数据,编写第一着色器。
84.参照图5,在一种实施例中,本技术提供的着色器的处理方法可以包括如下步骤:
85.s501、获取第一着色器。
86.s502、在第一着色器中提取至少一个目标数据。
87.s501-s502可以参照s101-s102中的相关描述。
88.s503、将至少一个目标数据填入目标着色器模板中,得到至少一个候选着色器,目标着色器模板包含于至少一个着色器模板中。
89.在一种示例中,目标着色器模板可以理解为:至少一个pass着色器模板中的目标pass着色器模板,至少一个候选着色器可以称为至少一个候选pass着色器。其中,目标着色器模板包含于至少一个着色器模板中,可以理解为:目标pass着色器模板包含于至少一个pass着色器模板中。
90.在一些实施例中,目标pass着色器模板可以包括至少一个pass着色器模板中的每
个pass着色器模板。在该示例中,电子设备可以将至少一个目标数据填入每个pass着色器模板中,得到至少一个候选pass着色器。
91.在一些实施例中,用户可以自主选择部分预设效果,在该示例中,目标pass着色器模板可以包括至少一个pass着色器模板中的部分pass着色器模板。
92.在一种示例中,参照图2,用户可以在选择文件1之前,即触发电子设备获取第一着色器之前选择部分预设效果,或者,用户可以在选择文件1之后,选择部分预设效果。示例性的,以用户选择文件1之后选择预设效果为例,用户选择文件1之后,电子设备可以显示至少一个预设效果的标识,以供用户选择。
93.其中,在一种示例中,电子设备中可以存储预设效果和pass着色器模板的标识的对应关系,pass着色器模板的标识可以为预设效果的名称或编号,或pass着色器模板的编号或名称。电子设备响应于用户对至少一个预设效果的标识的操作,可以确定用户需求的预设效果,进而基于预设效果和pass着色器模板的标识的对应关系,在至少一个pass着色器模板中确定用户选择的效果对应的pass着色器模板,且将该用户选择的效果对应的pass着色器模板作为目标pass着色器模板。
94.参照图2中的b,以至少一个预设效果包括:光、阴影,以及反射为例。如用户选择光和阴影效果,则电子设备可以确定用户需求将地图元素渲染成光和阴影效果,电子设备可以将至少一个pass着色器模板中的光pass着色器模板和阴影pass着色器模板,作为目标pass着色器模板。
95.在一种示例中,电子设备确定目标pass着色器模板后,可以将目标pass着色器模板的状态标记为可使用状态,且将至少一个pass着色器模板中的其他pass着色器模板的状态标记为不可使用状态。这样,电子设备在生成第二着色器时,可以根据至少一个pass着色器模板的状态,确定使用被标记为“可使用状态”的目标pass着色器模板。
96.本技术中,电子设备可以将至少一个目标数据填入目标pass着色器模板(如至少一个pass着色器模板中的每个pass着色器模板或用户选择的pass着色器模板),得到至少一个候选着色器。
97.在一种示例中,每个pass着色器模板可以定义填入至少一个目标数据的位置,相应的,目标pass着色器模板可以定义填入至少一个目标数据的位置。电子设备可以根据目标pass着色器模板预先定义的位置,将至少一个目标数据填入目标pass着色器模板对应的位置处,得到至少一个候选pass着色器,该种示例可以参照s103中的相关描述。
98.在一种示例中,每个pass着色器模板可以包括:填入至少一个目标数据的位置的指示信息,相应的,目标pass着色器模板可以包括:填入至少一个目标数据的位置的指示信息。在该示例中,电子设备可以根据目标pass着色器模板中的指示信息,确定填入至少一个目标数据的位置,进而将至少一个目标数据填入目标pass着色器模板对应的位置处,得到至少一个候选pass着色器。
99.在一些实施例中,电子设备可以将至少一个候选pass着色器,作为至少一个pass着色器。在该实施例中,gpu在运行每个pass着色器时,可以根据每个pass着色器对应的效果需要使用的目标数据,在每个pass着色器中选择对应的目标数据进行渲染计算,以将地图元素渲染成预设效果。
100.在该实施例中,可以预先配置第一配置信息,该第一配置信息用于指示每个pass
着色器对应的效果需要使用的目标数据。换句话说,第一配置信息用于指示每个pass着色器包含的目标数据,即第一配置信息用于指示每个第二着色器包含的目标数据。在该种示例中,因为电子设备将至少一个目标数据填入目标pass着色器模板,因此每个候选pass着色器均包含至少一个目标数据,gpu在运行每个候选pass着色器时,可以根据第一配置信息,在每个候选pass着色器中选择对应的目标数据进行渲染计算。
101.示例性的,如至少一个目标数据包括顶点的数据和颜色信息,第一配置信息中配置光效果需要使用的目标数据包括顶点的数据,配置阴影效果需要使用的目标数据包括颜色信息。电子设备将顶点的数据和颜色信息填入光pass着色器模板,得到候选光pass着色器,以及电子设备将顶点的数据和颜色信息填入阴影pass着色器模板,得到候选阴影pass着色器。gpu在运行光候选pass着色器时,可以根据第一配置信息,基于顶点的数据,将地图元素渲染为光效果,同理地,gpu在运行阴影候选pass着色器时,可以根据第一配置信息,基于颜色信息,将地图元素渲染为阴影效果。
102.s504、根据第一配置信息,调整每个候选着色器包含的目标数据,得到至少一个第二着色器,第一配置信息用于指示每个第二着色器包含的目标数据。
103.本技术中,电子设备可以根据第一配置信息,预先调整每个候选pass着色器包含的目标数据,得到至少一个pass着色器。每个pass着色器用于将地图元素渲染成不同的预设效果。其中,电子设备可以根据第一配置信息,在每个候选pass着色器中删除该候选pass着色器运行时不使用的数据,保留该候选pass着色器运行时使用的数据,这样电子设备可以得到准确的pass着色器。在该种实现方式中,gpu在运行pass着色器时无需根据第一配置信息,选择使用的数据,可以避免运行出错,还可以提高渲染速度。
104.示例性的,如至少一个目标数据包括顶点的数据和颜色信息,至少一个pass着色器模板包括光pass着色器模板和阴影pass着色器模板,第一配置信息中配置光效果需要使用的目标数据包括顶点的数据,配置阴影效果需要使用的目标数据包括颜色信息。电子设备可以将顶点的数据和颜色信息填入光pass着色器模板,得到候选光pass着色器,以及电子设备将顶点的数据和颜色信息填入阴影pass着色器模板,得到候选阴影pass着色器。电子设备根据第一配置信息,可以删除候选光pass着色器中的颜色信息,得到光pass着色器,且电子设备可以删除候选阴影pass着色器中的顶点的数据,得到阴影pass着色器。
105.本技术实施例中,可以预先配置至少一个效果的pass着色器模板,这样电子设备可以根据至少一个目标数据,以及至少一个pass着色器模板,得到至少一个pass着色器,即至少一个第二着色器,以便于达到将地图元素渲染成不同的预设效果的目的。另,本技术中电子设备在将至少一个目标数据填入目标pass着色器模板中后,还可以根据第一配置信息,调整候选pass着色器中的包含的目标数据,这样可以得到准确的pass着色器。
106.将地图元素渲染成一个预设效果,需要历经多个渲染步骤。示例性的,以阴影效果为例,渲染步骤可以包括:法线校正步骤、深度计算步骤,以及场景计算步骤。相应的,每个pass着色器模板包括一组渲染数据,每组渲染数据对应至少一个渲染步骤。示例性的,阴影pass着色器模板中包括的渲染数据,可以对应“法线校正步骤、深度计算步骤,以及场景计算步骤”这三个渲染步骤,也就是说,阴影pass着色器模板中的渲染数据可以包括执行法线校正步骤的渲染数据、深度计算步骤的渲染数据,以及场景计算步骤的渲染数据。
107.在一些实施例中,参照图5所示的实施例,电子设备在生成至少一个pass着色器
时,可以保留pass着色器模板中的渲染数据,这样pass着色器在运行时,gpu可以执行pass着色器中包含的每个渲染步骤,以将地图元素渲染成预设效果。
108.在一些实施例中,用户还可以自主配置每个效果的渲染步骤,使得pass着色器可以在将地图元素渲染成预设效果的基础上,还可以减少渲染步骤,提高渲染速度。在该实施例中,用户可以在编写第一着色器时,在第一着色器中添加第二配置信息,该第二配置信息用于指示每个pass着色器中渲染数据对应的渲染步骤。
109.在该实施例中,参照图6,如上s504可以替换为s504a:
110.s504a,根据第一配置信息,调整每个候选着色器包含的目标数据,以及根据第二配置信息,调整每个候选着色器包含的渲染数据,得到至少一个第二着色器。
111.电子设备根据第一配置信息,调整每个候选pass着色器包含的目标数据,可以参照s504中的相关描述。
112.本技术中,在调整每个候选pass着色器包含的目标数据的基础上,电子设备还可以根据第二配置信息,调整每个候选pass着色器包含的渲染数据,得到至少一个pass着色器。其中,电子设备可以根据第二配置信息,删除每个候选pass着色器包含的部分渲染数据,得到少一个pass着色器。
113.第二配置信息用于指示每个pass着色器中渲染数据对应的渲染步骤,即第二配置信息用于指示每个第二着色器中渲染数据对应的渲染步骤。以至少一个pass着色器为例,在一种示例中,第二配置信息中可以包括每个pass着色器需要执行的渲染步骤的名称,或者第二配置信息中可以包括每个pass着色器不需要执行的渲染步骤的名称。
114.在一种示例中,第二配置信息中可以包括:每个pass着色器中渲染数据对应的渲染步骤的状态信息。示例性的,以阴影效果为例,第二配置信息中可以包括法线校正步骤的状态信息为“off”,用于指示阴影着色器中渲染数据对应的渲染步骤不包括法线校正步骤。
115.示例性的,以阴影效果为例,阴影pass着色器模板包括的渲染数据对应的渲染步骤包括:法线校正步骤、深度计算步骤以及场景计算步骤。用户可以在第一着色器中配置第二配置信息,第二配置信息中法线校正步骤的状态信息为“off”,则基于该第二配置信息,电子设备可以删除阴影候选pass着色器模板中法线校正步骤对应的渲染数据,得到阴影pass着色器。
116.在一种示例中,第二配置信息还可以包括每个pass着色器中渲染数据对应的渲染步骤采用的渲染方案。示例性的,对于深度计算步骤来说,可以采用方案1、方案2计算深度,阴影pass着色器模板包括方案1和方案2的逻辑代码,用户可以在第二配置信息中定义深度计算步骤采用的渲染方案,如方案1,则电子设备可以根据第二配置信息,进一步删除阴影候选pass着色器模板中方案2对应的渲染数据,得到阴影pass着色器。
117.本技术实施例中,用户可以基于自身需求,配置将地图元素渲染成预设效果所执行的渲染步骤,以及渲染步骤采用的渲染方案,灵活性高。
118.图7为本技术提供的着色器的处理方法的另一种流程示意图。参照图7,电子设备可以获取第一着色器,图7以第一着色器包括:地图元素的属性数据、顶点着色器代码,以及像素着色器代码为例。
119.如地图元素的属性数据包括:attribute vec4myattri;
120.uniform vec4myuniform;
121.varying vec4myvarying;
122.以及,
123.uniform sample2d tax1;
124.uniform vec4myuniform2;
125.varying vec4myvarying;
126.如顶点着色器代码包括:void vertex(){
127.myvarying=myattri*myuniform
128.}
129.如像素着色器代码包括:void fragment(){
130.albedo=myvarying*myuniform2
131.}
132.另,第一着色器中可以包括第二配置信息,如render_state,state1,state2。示例性的,如state1表征需要进行深度计算步骤,state2表征深度计算具体采用的方案1。
133.其中,电子设备可以在第一着色器中提取attribute信息、uniform信息、varying信息、顶点着色器代码、像素着色器代码,以及第二配置信息。第二配置信息中可以包括每个pass着色器中渲染数据对应的渲染步骤,以及渲染步骤采用的渲染方案。
134.电子设备可以将attribute信息、uniform信息、varying信息、顶点着色器代码、像素着色器代码填入至目标pass着色器模板中。应理解,图7中以目标pass着色器模板包括pass1着色器模板和pass1着色器模板为例进行说明,电子设备在将attribute信息、uniform信息、varying信息、顶点着色器代码、像素着色器代码填入至目标pass着色器模板中后,可以得到候选pass1着色器和候选pass2着色器。
135.另,电子设备可以根据第一配置信息,调整pass1着色器模板和pass1着色器模板包含的目标数据,以及根据第二配置信息,调整pass1着色器模板和pass1着色器模板包含的渲染数据,得到pass1着色器和pass2着色器,可以参照图7所示。应理解的是,图7中所示的代码为示例说明,并不构成对本技术的限制。
136.综上,本技术提供的着色器的处理方法可以包括如下步骤:
137.步骤1:建立着色器模板,着色器模板可以包括至少一个pass着色器模板。
138.a,可以基于至少一个pass着色器模板确定渲染总流程,如渲染总流程包括光效果和阴影效果。
139.b,在一种示例中,用户可以选择目标pass着色器模板,也就是说,本技术可以对pass着色器模板通过state进行控制,如将pass着色器模板标记为可使用或不可使用状态,可以用于不同pass开启或关闭。
140.c,用户根据pass着色器模板,可以编写第一着色器,如第一着色器中可以包括attribute信息、uniform信息、varying信息等。另,pass着色器模板中可以定义用户可以选择的渲染步骤以及地图元素的属性数据,用于基于pass着色器模板,可以配置每个pass着色器模板中渲染数据对应的渲染步骤,以及渲染步骤采用的渲染方案等。
141.步骤2:根据着色器模板,编写第一着色器。
142.用户可以编写第一着色器,第一着色器中包括至少一个目标数据,且用户还可以在第一着色器中配置每个pass着色器模板中渲染数据对应的渲染步骤,以及渲染步骤采用
的渲染方案等,即在第一着色器中添加第二配置信息。示例性的,对于不同的pass着色器,可以配置渲染步骤的状态信息,以实现渲染步骤的配置。
143.步骤3:融合流程。
144.a,电子设备在第一着色器中提取第二配置信息、attribute信息、uniform信息、varying信息、顶点着色器代码,以及像素着色器代码。
145.b,电子设备将attribute信息、uniform信息、varying信息、顶点着色器代码,以及像素着色器代码注入目标pass着色器模板中,得到至少一个候选pass着色器。
146.c,根据第一配置信息,遍历目标pass着色器,调整每个候选pass着色器中的目标数据,以及根据第二配置信息,调整每个候选pass着色器中的渲染数据,得到至少一个pass着色器。应理解,每个pass着色器可以供渲染管线各个阶段进行使用,以将地图元素渲染成不同的预设效果。
147.图8为本技术提供的着色器的处理装置的一种结构示意图。如图8所示,该装置包括:处理模块81,着色器生成模块82,以及,显示模块83。其中,
148.处理模块81,用于获取第一着色器,第一着色器包括至少一个目标数据:地图元素的属性数据、顶点着色器数据以及像素着色器数据,以及在第一着色器中提取至少一个目标数据。
149.着色器生成模块82,用于根据至少一个目标数据,以及着色器模板,生成第二着色器,着色器模板包括:基于至少一个目标数据将地图元素渲染成预设效果的渲染数据,第二着色器用于将地图元素渲染成预设效果。
150.在一种可能的实现方式中,着色器模板为至少一个,第二着色器为至少一个,每个第二着色器用于将地图元素渲染成不同的预设效果。
151.着色器生成模块82,具体用于将至少一个目标数据填入目标着色器模板中,得到至少一个候选着色器,目标着色器模板包含于至少一个着色器模板中;以及,根据第一配置信息,调整每个候选着色器包含的目标数据,得到至少一个第二着色器,第一配置信息用于指示每个第二着色器包含的目标数据。
152.在一种可能的实现方式中,每个着色器模板包括一组渲染数据,每组渲染数据对应至少一个渲染步骤,第一着色器还包括第二配置信息,第二配置信息用于指示每个第二着色器中渲染数据对应的渲染步骤。
153.着色器生成模块82,具体用于根据第一配置信息,调整每个候选着色器包含的目标数据,以及根据第二配置信息,调整每个候选着色器包含的渲染数据,得到至少一个第二着色器。
154.在一种可能的实现方式中,显示模块83,用于显示至少一个预设效果的标识。
155.处理模块81,还用于响应于用户对至少一个预设效果的标识的操作,在至少一个着色器模板中确定目标着色器模板。
156.在一种可能的实现方式中,处理模块81,还用于将目标着色器模板的状态标记为可使用状态,且将至少一个着色器模板中的其他着色器模板的状态标记为不可使用状态。
157.在一种可能的实现方式中,每个着色器模板还包括:填入至少一个目标数据的位置的指示信息。着色器生成模块82,具体用于根据目标着色器模板中的指示信息,将至少一个目标数据填入目标着色器模板中。
158.在一种可能的实现方式中,处理模块81,还用于响应于用户对着色器模板的修改操作,更新着色器模板。
159.在一种可能的实现方式中,处理模块81,还用于将所述第二着色器上传至服务器,所述服务器用于将所述第二着色器推送至地图客户端,所述第二着色器用于所述地图客户端将所述地图元素渲染成所述预设效果;或者,将所述第二着色器打包在地图发布包中,且将所述地图发布包推送至所述地图客户端。
160.本技术提供的着色器的处理装置,用于执行前述着色器的处理方法实施例,其实现原理与技术效果类似,对此不再赘述。
161.图9为本技术提供的一种电子设备的硬件结构示意图。如图9所示的电子设备10包括存储器11、处理器12、通信接口13。
162.存储器11、处理器12、通信接口13之间彼此通信连接。例如,存储器11、处理器12、通信接口13之间可以采用网络连接的方式,实现通信连接。或者,上述电子设备10还可以包括总线14。存储器11、处理器12、通信接口13通过总线14实现彼此之间的通信连接。图9是以存储器11、处理器12、通信接口13通过总线14实现彼此之间的通信连接的电子设备10。
163.存储器11可以是只读存储器(read only memory,rom),静态存储设备,动态存储设备或者随机存取存储器(random access memory,ram)。存储器11可以存储程序(计算机执行指令),当存储器11中存储的程序被处理器12执行时,处理器12和通信接口13用于执行本技术所提供的着色器的处理方法。
164.处理器12可以采用通用的中央处理器(central processing unit,cpu),微处理器,应用专用集成电路(application specific integrated circuit,asic),图形处理器(graphics processing unit,gpu)或者一个或多个集成电路。
165.处理器12还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本技术的第一节点的功能可以通过处理器12中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器12还可以是通用处理器、数字信号处理器(digital signal processing,dsp)、专用集成电路(asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本技术下文实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术下文实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器11,处理器12读取存储器11中的信息,结合其硬件完成本技术的电子设备的功能。
166.通信接口13使用例如但不限于收发器一类的收发模块,来实现电子设备10与其他设备或通信网络之间的通信。例如,可以通过通信接口13获取第一着色器。
167.当上述电子设备10包括总线14时,总线14可包括在电子设备10各个部件(例如,存储器11、处理器12、通信接口13)之间传送信息的通路。
168.在一种示例中,电子设备10还可以包括显示屏15,显示屏15用于显示电子设备10的界面。在一种示例中,显示屏15可以看作电子设备10的屏幕。
169.本技术还提供了一种计算机可读存储介质,该计算机可读存储介质可以包括:u
盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁盘或者光盘等各种可以存储程序代码的介质,具体的,该计算机可读存储介质中存储有程序指令,程序指令用于上述实施例中的方法。
170.本技术还提供一种程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。电子设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得电子设备实施上述的各种实施方式提供的着色器的处理方法。
171.本文中的术语“多个”是指两个或两个以上。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系;在公式中,字符“/”,表示前后关联对象是一种“相除”的关系。另外,需要理解的是,在本技术的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
172.可以理解的是,在本技术的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本技术的实施例的范围。
173.最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1