游戏灯光渲染方法、装置、设备和存储介质
文献发布时间:2023-06-19 10:08:35
技术领域
本发明涉及图像渲染技术领域,尤其涉及一种游戏灯光渲染方法、装置、设备和存储介质。
背景技术
游戏引擎中会使用到的光源包括聚光灯光源和点光源。相关技术中,游戏引擎只能整体修改光源的灯光颜色和灯光强度,而不能在光源上增加复杂的表现效果。
发明内容
本发明实施例提供一种游戏灯光渲染方法、装置、设备和存储介质,用以自由实现不同的灯光效果。
第一方面,本发明实施例提供一种游戏灯光渲染方法,该方法包括:
获取被预设类型的光源照射到的游戏模型的第一位置,所述第一位置为所述游戏模型中像素的世界位置;
将所述第一位置转换为所述预设类型的光源对应的目标坐标系中的第二位置;
获取蒙版贴图;
基于所述第二位置,对所述蒙版贴图进行采样,得到蒙版贴图采样颜色数据;
基于所述蒙版贴图采样颜色数据以及所述预设类型的光源的灯光颜色数据,确定所述预设类型的光源的渲染效果数据。
可选地,所述预设类型的光源包括聚光灯光源或者点光源。
可选地,所述预设类型的光源为聚光灯光源,所述所述预设类型的光源对应的目标坐标系为所述聚光灯光源的投影空间;
所述基于所述第二位置,对所述蒙版贴图进行采样,得到蒙版贴图采样颜色数据,包括:
将所述第二位置转换为纹理空间中的第三位置;
通过所述第三位置,对所述蒙版贴图进行采样,得到蒙版贴图采样颜色数据。
可选地,所述预设类型的光源为点光源,所述所述预设类型的光源对应的目标坐标系为局部坐标系;
所述基于所述第二位置,对所述蒙版贴图进行采样,得到蒙版贴图采样颜色数据,包括:
通过所述第二位置,对所述蒙版贴图进行采样,得到蒙版贴图采样颜色数据。
可选地,所述预设类型的光源为聚光灯光源,所述蒙版贴图为二维贴图;
所述预设类型的光源为点光源,所述蒙版贴图为立方体贴图,所述立方体贴图包括位于立方体前、后、左、右、上、下6个面的贴图。
可选地,所述基于所述蒙版贴图采样颜色数据以及所述预设类型的光源的灯光颜色数据,确定所述预设类型的光源的渲染效果数据,包括:
将所述蒙版贴图采样颜色数据与所述预设类型的光源的灯光颜色数据相乘,得到所述预设类型的光源的渲染效果数据。
可选地,所述将所述第一位置转换为所述预设类型的光源对应的目标坐标系中的第二位置,包括:
通过WorldToLightClip变换矩阵,将所述第一位置转换为所述预设类型的光源对应的目标坐标系中的第二位置,所述WorldToLightClip变换矩阵用于将世界位置转换到聚光灯光源的投影空间。
第二方面,本发明实施例提供一种游戏灯光渲染装置,包括:
获取模块,用于获取被预设类型的光源照射到的游戏模型的第一位置,所述第一位置为所述游戏模型中像素的世界位置;
转换模块,用于将所述第一位置转换为所述预设类型的光源对应的目标坐标系中的第二位置;
所述获取模块,用于获取蒙版贴图;
采样模块,用于基于所述第二位置,对所述蒙版贴图进行采样,得到蒙版贴图采样颜色数据;
确定模块,用于基于所述蒙版贴图采样颜色数据以及所述预设类型的光源的灯光颜色数据,确定所述预设类型的光源的渲染效果数据。
可选地,所述预设类型的光源包括聚光灯光源或者点光源。
可选地,所述预设类型的光源为聚光灯光源,所述所述预设类型的光源对应的目标坐标系为所述聚光灯光源的投影空间;
所述采样模块,用于:
将所述第二位置转换为纹理空间中的第三位置;
通过所述第三位置,对所述蒙版贴图进行采样,得到蒙版贴图采样颜色数据。
可选地,所述预设类型的光源为点光源,所述所述预设类型的光源对应的目标坐标系为局部坐标系;
所述采样模块,用于:
通过所述第二位置,对所述蒙版贴图进行采样,得到蒙版贴图采样颜色数据。
可选地,所述预设类型的光源为聚光灯光源,所述蒙版贴图为二维贴图;
所述预设类型的光源为点光源,所述蒙版贴图为立方体贴图,所述立方体贴图包括位于立方体前、后、左、右、上、下6个面的贴图。
可选地,所述确定模块,用于:
将所述蒙版贴图采样颜色数据与所述预设类型的光源的灯光颜色数据相乘,得到所述预设类型的光源的渲染效果数据。
可选地,所述转换模块,用于:
通过WorldToLightClip变换矩阵,将所述第一位置转换为所述预设类型的光源对应的目标坐标系中的第二位置,所述WorldToLightClip变换矩阵用于将世界位置转换到聚光灯光源的投影空间。
第三方面,本发明实施例提供一种电子设备,其中包括处理器和存储器,其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器至少可以实现第一方面中的游戏灯光渲染方法。
第四方面,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器至少可以实现第一方面中的游戏灯光渲染方法。
采用本发明,可以将光源照射到的游戏模型的第一位置转换为光源对应的目标坐标系中的第二位置,然后基于第二位置对蒙版贴图进行采样,这样可以获得蒙版贴图采样颜色数据。在得到蒙版贴图采样颜色数据之后,可以基于蒙版贴图采样颜色数据以及光源的灯光颜色数据进行灯光渲染。在上述过程中,可以通过使用二维贴图(蒙版贴图)控制聚光灯投射的颜色和形状,使用立方体贴图(蒙版贴图)控制点光源投射的颜色和形状,从而自由实现不同的灯光效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种游戏灯光渲染方法的流程图示意图;
图2为本发明实施例提供的一种聚光灯光源的渲染方法的流程图示意图;
图3为本发明实施例提供的一种点光源的渲染方法的流程图示意图;
图4为本发明实施例提供的一种游戏灯光渲染方法的流程图示意图;
图5为本发明实施例提供的一种游戏灯光渲染装置的结构示意图;
图6为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
图1为本发明实施例提供的一种游戏灯光渲染方法的流程图,如图1所示,该方法包括如下步骤:
101、获取被预设类型的光源照射到的游戏模型的第一位置,第一位置为游戏模型中像素的世界位置。
102、将第一位置转换为光源对应的目标坐标系中的第二位置。
103、获取蒙版贴图。
104、基于第二位置,对蒙版贴图进行采样,得到蒙版贴图采样颜色数据。
105、基于蒙版贴图采样颜色数据以及光源的灯光颜色数据,确定光源的渲染效果数据。
上述预设类型的光源可以包括聚光灯光源或者点光源。针对不同类型的光源,本发明实施例分别提供一种进行灯光渲染的方法。
下面介绍聚光灯光源的渲染方法。
图2为本发明实施例提供的一种聚光灯光源的渲染方法的流程图,如图2所示,该方法包括如下步骤:
201、获取被聚光灯光源照射到的游戏模型的第一位置,第一位置为游戏模型中像素的世界位置。
202、将第一位置转换为聚光灯光源的投影空间中的第二位置。
203、获取蒙版贴图。
204、将第二位置转换为纹理空间中的第三位置。
205、通过第三位置,对蒙版贴图进行采样,得到蒙版贴图采样颜色数据。
206、基于蒙版贴图采样颜色数据以及聚光灯光源的灯光颜色数据,确定聚光灯光源的渲染效果数据。
实际应用中,可以确定能够被聚光灯光源照射到的游戏模型的第一位置。
上述聚光灯光源的投影空间为一种以聚光灯光源的位置作为坐标系原点、以聚光灯外角作为视场角、且以聚光灯光源照射方向作为坐标系的Z轴方向所建立的空间。
由于世界坐标系与聚光灯光源的投影空间不是同一个空间,因此需要对在世界坐标系中的第一位置进行转换,以得到转换后的位于聚光灯光源的投影空间中的第二位置。
可选地,上述转换的过程可以实现为:通过WorldToLightClip变换矩阵,将第一位置转换为聚光灯光源的投影空间中的第二位置,WorldToLightClip变换矩阵用于将世界位置转换到聚光灯光源的投影空间。
上述Clip表示为转换后的投影空间,也可以称为裁剪空间。实际应用中,可以通过WorldToLightClip变换矩阵,将第一位置转换为聚光灯光源的投影空间中的第二位置。
在得到第二位置之后,可以将第二位置转换为纹理空间中的第三位置。需要说明的是,纹理空间是区别于世界坐标系与投影空间的一种空间。对于投影空间来说,投影空间的左上角坐标为(-1,1),右下角坐标为(1,-1)。对于纹理空间来说,纹理空间的左上角坐标为(0,0),右下角坐标为(1,1)。
为了将第二位置转换为纹理空间中的第三位置,现在假设第二位置为投影空间中的(x,y),第三位置表示为(Tx,Ty),则有:
Tx=x*0.5+0.5;(公式1)
Ty=y*(-0.5)+0.5;(公式2)
通过上述公式,可以将第二位置转换为纹理空间中的第三位置。
在获得第三位置之后,可以获取蒙版贴图。对于聚光灯光源来说,蒙版贴图可以是二维贴图。在获取到蒙版贴图之后,可以通过第三位置,对蒙版贴图进行采样,得到蒙版贴图采样颜色数据。
具体来说,可以使用shader指令,通过第三位置,对蒙版贴图进行采样。这样就可以获得蒙版贴图中某个像素点的蒙版贴图采样颜色数据。
在获得蒙版贴图采样颜色数据之后,可以获取聚光灯光源的灯光颜色数据,将蒙版贴图采样颜色数据与聚光灯光源的灯光颜色数据相乘,得到聚光灯光源的渲染效果数据,以完成聚光灯光源的渲染过程。
下面介绍点光源的渲染方法。
图3为本发明实施例提供的一种点光源的渲染方法的流程图,如图3所示,该方法包括如下步骤:
301、获取被点光源照射到的游戏模型的第一位置,第一位置为游戏模型中像素的世界位置。
302、将第一位置转换为点光源对应的局部坐标系中的第二位置。
303、获取蒙版贴图。
304、通过第二位置,对蒙版贴图进行采样,得到蒙版贴图采样颜色数据。
305、基于蒙版贴图采样颜色数据以及点光源的灯光颜色数据,确定点光源的渲染效果数据。
实际应用中,首先可以确定能够被点光源照射到的游戏模型,然后确定该游戏模型的第一位置。
由于世界坐标系与点光源的投影空间不是同一个空间,因此需要对在世界坐标系中的第一位置进行转换,以得到转换后的位于点光源对应的局部坐标系中的第二位置。
在得到第二位置之后,可以获取蒙版贴图。对于点光源来说,蒙版贴图可以是立方体贴图,立方体贴图可以包括位于立方体前、后、左、右、上、下6个面的贴图,也就是说,立方体的每个面都有一个图像。在获取到蒙版贴图之后,可以通过第二位置,对蒙版贴图进行采样,得到蒙版贴图采样颜色数据。
具体来说,可以使用shader指令,通过第二位置,对蒙版贴图进行采样。这样就可以获得蒙版贴图中某个像素点的蒙版贴图采样颜色数据。
在获得蒙版贴图采样颜色数据之后,可以获取点光源的灯光颜色数据,将蒙版贴图采样颜色数据与点光源的灯光颜色数据相乘,得到点光源的渲染效果数据,以完成点光源的渲染过程。
通过本发明实施例提供的聚光灯光源的渲染方法,最终可以实现类似于商店门口广告投射灯的投射效果,除此以外,还可以实现类似于皮影戏、跑马灯等灯光效果。
另外,通过本发明实施例提供的点光源的渲染方法,最终可以实现类似于蜡烛透过灯笼产生的投影效果,除此以外,还可以实现类似于酒吧舞池等灯光效果。
除了可以单独使用聚光灯光源,单独使用点光源以外,还可以结合聚光灯光源以及点光源来进行渲染。图4本发明实施例提供的一种游戏灯光渲染方法的流程图,如图4所示,该方法包括如下步骤:
401、获取聚光灯光源以及点光源照射到的游戏模型的第一位置,第一位置为游戏模型中像素的世界位置。
402、将第一位置分别转换为聚光灯光源的投影空间中的、以及点光源对应的局部坐标系中的第二位置。
403、获取蒙版贴图。
404、基于第二位置,对蒙版贴图进行采样,得到蒙版贴图采样颜色数据。
105、基于蒙版贴图采样颜色数据、聚光灯光源以及点光源的灯光颜色数据,确定光源的渲染效果数据。
实际应用中,可以确定能够被聚光灯光源照射到的游戏模型的第一位置。
上述聚光灯光源的投影空间为一种以聚光灯光源的位置作为坐标系原点、以聚光灯外角作为视场角、且以聚光灯光源照射方向作为坐标系的Z轴方向所建立的空间。
由于世界坐标系与聚光灯光源的投影空间不是同一个空间,因此需要对在世界坐标系中的第一位置进行转换,以得到转换后的位于聚光灯光源的投影空间中的第二位置。
实际应用中,首先可以确定能够被点光源照射到的游戏模型,然后确定该游戏模型的第一位置。
由于世界坐标系与点光源的投影空间不是同一个空间,因此需要对在世界坐标系中的第一位置进行转换,以得到转换后的位于点光源对应的局部坐标系中的第二位置。
可选地,转换的过程可以实现为:通过WorldToLightClip变换矩阵,将第一位置转换为聚光灯光源的投影空间中的第二位置,WorldToLightClip变换矩阵用于将世界位置转换到聚光灯光源的投影空间。
上述Clip表示为转换后的投影空间,也可以称为裁剪空间。实际应用中,可以通过WorldToLightClip变换矩阵,将第一位置转换为聚光灯光源的投影空间中的第二位置。
在得到第二位置之后,可以将第二位置转换为纹理空间中的第三位置。需要说明的是,纹理空间是区别于世界坐标系与投影空间的一种空间。对于投影空间来说,投影空间的左上角坐标为(-1,1),右下角坐标为(1,-1)。对于纹理空间来说,纹理空间的左上角坐标为(0,0),右下角坐标为(1,1)。
为了将第二位置转换为纹理空间中的第三位置,现在假设第二位置为投影空间中的(x,y),第三位置表示为(Tx,Ty),则有:
Tx=x*0.5+0.5;(公式3)
Ty=y*(-0.5)+0.5;(公式4)
通过上述公式,可以将第二位置转换为纹理空间中的第三位置。
在获得第三位置之后,可以获取蒙版贴图。对于聚光灯光源来说,蒙版贴图可以是二维贴图。在获取到蒙版贴图之后,可以通过第三位置,对蒙版贴图进行采样,得到蒙版贴图采样颜色数据。
具体来说,可以使用shader指令,通过第三位置,对蒙版贴图进行采样。这样就可以获得蒙版贴图中某个像素点的蒙版贴图采样颜色数据。
在获得蒙版贴图采样颜色数据之后,可以获取聚光灯光源的灯光颜色数据,将蒙版贴图采样颜色数据与聚光灯光源的灯光颜色数据相乘,得到聚光灯光源的渲染效果数据,以完成聚光灯光源的渲染过程。
在得到第二位置之后,可以获取蒙版贴图。对于点光源来说,蒙版贴图可以是立方体贴图,立方体贴图可以包括位于立方体前、后、左、右、上、下6个面的贴图,也就是说,立方体的每个面都有一个图像。在获取到蒙版贴图之后,可以通过第二位置,对蒙版贴图进行采样,得到蒙版贴图采样颜色数据。
具体来说,可以使用shader指令,通过第二位置,对蒙版贴图进行采样。这样就可以获得蒙版贴图中某个像素点的蒙版贴图采样颜色数据。
在获得蒙版贴图采样颜色数据之后,可以获取点光源的灯光颜色数据,将蒙版贴图采样颜色数据与点光源的灯光颜色数据相乘,得到点光源的渲染效果数据,以完成点光源的渲染过程。
通过本发明实施例提供的聚光灯光源的渲染方法,最终可以实现类似于商店门口广告投射灯的投射效果,除此以外,还可以实现类似于皮影戏、跑马灯等灯光效果。通过本发明实施例提供的点光源的渲染方法,最终可以实现类似于蜡烛透过灯笼产生的投影效果,除此以外,还可以实现类似于酒吧舞池等灯光效果。
采用本发明,可以将光源照射到的游戏模型的第一位置转换为光源对应的目标坐标系中的第二位置,然后基于第二位置对蒙版贴图进行采样,这样可以获得蒙版贴图采样颜色数据。在得到蒙版贴图采样颜色数据之后,可以基于蒙版贴图采样颜色数据以及光源的灯光颜色数据进行灯光渲染。在上述过程中,可以通过使用二维贴图(蒙版贴图)控制聚光灯投射的颜色和形状,使用立方体贴图(蒙版贴图)控制点光源投射的颜色和形状,从而自由实现不同的灯光效果。
以下将详细描述本发明的一个或多个实施例的游戏灯光渲染装置。本领域技术人员可以理解,这些游戏灯光渲染装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。
图5为本发明实施例提供的一种游戏灯光渲染装置的结构示意图,如图5所示,该装置包括:
获取模块41,用于获取被预设类型的光源照射到的游戏模型的第一位置,所述第一位置为所述游戏模型中像素的世界位置;
转换模块42,用于将所述第一位置转换为所述预设类型的光源对应的目标坐标系中的第二位置;
所述获取模块41,用于获取蒙版贴图;
采样模块43,用于基于所述第二位置,对所述蒙版贴图进行采样,得到蒙版贴图采样颜色数据;
确定模块44,用于基于所述蒙版贴图采样颜色数据以及所述预设类型的光源的灯光颜色数据,确定所述预设类型的光源的渲染效果数据。
可选地,所述预设类型的光源包括聚光灯光源或者点光源。
可选地,所述预设类型的光源为聚光灯光源,所述所述预设类型的光源对应的目标坐标系为所述聚光灯光源的投影空间;
所述采样模块43,用于:
将所述第二位置转换为纹理空间中的第三位置;
通过所述第三位置,对所述蒙版贴图进行采样,得到蒙版贴图采样颜色数据。
可选地,所述预设类型的光源为点光源,所述所述预设类型的光源对应的目标坐标系为局部坐标系;
所述采样模块43,用于:
通过所述第二位置,对所述蒙版贴图进行采样,得到蒙版贴图采样颜色数据。
可选地,所述预设类型的光源为聚光灯光源,所述蒙版贴图为二维贴图;
所述预设类型的光源为点光源,所述蒙版贴图为立方体贴图,所述立方体贴图包括位于立方体前、后、左、右、上、下6个面的贴图。
可选地,所述确定模块44,用于:
将所述蒙版贴图采样颜色数据与所述预设类型的光源的灯光颜色数据相乘,得到所述预设类型的光源的渲染效果数据。
可选地,所述转换模块42,用于:
通过WorldToLightClip变换矩阵,将所述第一位置转换为所述预设类型的光源对应的目标坐标系中的第二位置,所述WorldToLightClip变换矩阵用于将世界位置转换到聚光灯光源的投影空间。
图5所示装置可以执行前述图1至图4所示实施例中提供的游戏灯光渲染方法,详细的执行过程和技术效果参见前述实施例中的描述,在此不再赘述。
在一个可能的设计中,上述图5所示游戏灯光渲染装置的结构可实现为一电子设备,如图6所示,该电子设备可以包括:处理器91、存储器92。其中,所述存储器92上存储有可执行代码,当所述可执行代码被所述处理器91执行时,使所述处理器91至少可以实现如前述图1至图4所示实施例中提供的游戏灯光渲染方法。
可选地,该电子设备中还可以包括通信接口93,用于与其他设备进行通信。
另外,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器至少可以实现如前述图1至图4所示实施例中提供的游戏灯光渲染方法。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例提供的游戏灯光渲染方法可以由某种程序/软件来执行,该程序/软件可以由网络侧提供,前述实施例中提及的电子设备可以将该程序/软件下载到本地的非易失性存储介质中,并在其需要执行前述游戏灯光渲染方法时,通过CPU将该程序/软件读取到内存中,进而由CPU执行该程序/软件以实现前述实施例中所提供的游戏灯光渲染方法,执行过程可以参见前述图1至图4中的示意。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
- 游戏灯光渲染方法、装置、设备和存储介质
- 游戏中的渲染方法、渲染装置、电子设备及可读存储介质