掌桥专利:专业的专利平台
掌桥专利
首页

一种反射纹理补全方法、装置、设备和存储介质

文献发布时间:2024-04-18 19:52:40



技术领域

本申请涉及电子游戏渲染技术领域,尤其涉及一种反射纹理补全方法、装置、设备和存储介质。

背景技术

随着移动端机器性能的不断进步,移动端游戏的不断发展,画质竞争已进入白热化,平面反射这种早已在PC和主机平台游戏广泛使用的画面效果,在移动端游戏也变得不可或缺,十分适用于表现光滑表面、镜面、水面倒影等视觉效果。

由于移动平台机器性能有限,选择屏幕空间平面反射技术来实现移动端游戏的反射视觉效果是十分合适的,许多游戏都采用了这一技术。屏幕空间平面反射技术实质是根据屏幕图像来生成反射纹理,再由着色器获取该纹理并绘制反射内容,性能均衡稳定。

然而,屏幕空间平面反射技术有自身的局限性。由于屏幕外的内容无法获知,反射纹理的残缺是不可避免的,这导致在某些视角下的反射效果表现很差。在实际应用中,反射纹理的残缺部分往往是场景中天空的部分,可以在着色器中对场景中的天空盒多进行一次采样,将采样结果与屏幕空间平面反射技术生成的反射纹理混合来补全反射内容,但对天空盒采样的结果并非真实的反射结果,混合后的视觉效果不佳。

发明内容

本申请提供了一种反射纹理补全方法、装置、设备和存储介质,用于改善使用屏幕空间平面反射技术无法获取屏幕外的反射内容,导致反射纹理残缺从而视觉效果不佳这一固有缺陷,以及采用天空盒采样结果去修补反射纹理存在效果不佳的技术问题。

有鉴于此,本申请第一方面提供了一种反射纹理补全方法,包括:

基于屏幕空间平面反射技术从主摄像机获取的图像中生成反射纹理;

将所述主摄像机的朝向旋转到反射朝向,所述主摄像机的原朝向和反射朝向基于反射平面成镜像;

竖直翻转所述主摄像机的画面,并让所述主摄像机渲染一次天空盒,将获取的图像渲染到纹理,得到反射方向上的天空纹理;

将所述反射纹理和所述天空纹理进行混合,得到补全后反射纹理。

可选的,所述竖直翻转所述主摄像机的画面,包括:

将所述主摄像机的投影矩阵乘以预置参数矩阵,实现竖直翻转所述主摄像机的画面,所述预置参数矩阵为

可选的,所述方法还包括:

恢复所述主摄像机的朝向和投影矩阵。

可选的,所述将所述反射纹理和所述天空纹理进行混合,得到补全后反射纹理,包括:

通过A通道混合所述反射纹理和所述天空纹理,得到补全后反射纹理,混合过程为:

refl.rgb=lerp(reflSkybox.rgb,refl.rgb,refl.a);

式中,refl.rgb为反射纹理的颜色,refl.a为反射纹理A通道的值,reflSkybox.rgb为天空纹理的颜色,lerp()为线性插值函数。

本申请第二方面提供了一种反射纹理补全装置,包括:

反射纹理生成单元,用于基于屏幕空间平面反射技术从主摄像机获取的图像中生成反射纹理;

旋转单元,用于将所述主摄像机的朝向旋转到反射朝向,所述主摄像机的原朝向和反射朝向基于反射平面成镜像;

天空纹理生成单元,用于竖直翻转所述主摄像机的画面,并让所述主摄像机渲染一次天空盒,将获取的图像渲染到纹理,得到反射方向上的天空纹理;

纹理混合单元,用于将所述反射纹理和所述天空纹理进行混合,得到补全后反射纹理。

可选的,所述天空纹理生成单元,具体用于:

将所述主摄像机的投影矩阵乘以预置参数矩阵,实现竖直翻转所述主摄像机的画面,所述预置参数矩阵为

让所述主摄像机渲染一次天空盒,将获取的图像渲染到纹理,得到反射方向上的天空纹理。

可选的,所述装置还包括:

恢复单元,用于恢复所述主摄像机的朝向和投影矩阵。

可选的,所述纹理混合单元,具体用于:

通过A通道混合所述反射纹理和所述天空纹理,得到补全后反射纹理,混合过程为:

refl.rgb=lerp(reflSkybox.rgb,refl.rgb,refl.a);

式中,refl.rgb为反射纹理的颜色,refl.a为反射纹理A通道的值,reflSkybox.rgb为天空纹理的颜色,lerp()为线性插值函数。

本申请第三方面提供了一种反射纹理补全设备,所述设备包括处理器以及存储器;

所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;

所述处理器用于根据所述程序代码中的指令执行第一方面任一种所述的反射纹理补全方法。

本申请第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码被处理器执行时实现第一方面任一种所述的反射纹理补全方法。

从以上技术方案可以看出,本申请具有以下优点:

本申请提供了一种反射纹理补全方法,包括:基于屏幕空间平面反射技术从主摄像机获取的图像中生成反射纹理;将主摄像机的朝向旋转到反射朝向,主摄像机的原朝向和反射朝向基于反射平面成镜像;竖直翻转主摄像机的画面,并让主摄像机渲染一次天空盒,将获取的图像渲染到纹理,得到反射方向上的天空纹理;将反射纹理和天空纹理进行混合,得到补全后反射纹理。

本申请中,在基于屏幕空间平面反射技术生成反射纹理后,将主摄像机的朝向旋转到反射朝向,并竖直翻转所述主摄像机的画面,让主摄像机渲染一次天空盒,将获取的图像渲染到纹理,得到反射方向上的天空纹理,通过运用反射相机的做法,渲染出反射方向上的天空纹理,是真实的反射结果,混合后的视觉效果表现很好,改善了使用屏幕空间平面反射技术无法获取屏幕外的反射内容,导致反射纹理残缺从而视觉效果不佳这一固有缺陷,以及采用天空盒采样结果去修补反射纹理存在效果不佳的技术问题。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。

图1为本申请实施例提供的一种反射纹理补全方法的一个流程示意图;

图2为本申请实施例提供的一种主摄像机朝向示意图;

图3为本申请实施例提供的一种反射纹理补全装置的一个结构示意图。

具体实施方式

本申请提供了一种反射纹理补全方法、装置、设备和存储介质,用于改善使用屏幕空间平面反射技术无法获取屏幕外的反射内容,导致反射纹理残缺从而视觉效果不佳这一固有缺陷,以及采用天空盒采样结果去修补反射纹理存在效果不佳的技术问题。

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

由于移动平台机器性能有限,选择屏幕空间平面反射技术来实现移动端游戏的反射视觉效果是十分合适的,许多游戏都采用了这一技术。屏幕空间平面反射技术实质是根据屏幕图像来生成反射纹理,再由着色器获取该纹理并绘制反射内容,性能均衡稳定。然而,屏幕空间平面反射技术有自身的局限性。由于屏幕外的内容无法获知,反射纹理的残缺是不可避免的,这导致在某些视角下的反射效果表现很差。在实际应用中,反射纹理的残缺部分往往是场景中天空的部分。为了改善该问题,本申请提供了一种反射纹理补全方法,旨在对屏幕空间平面反射技术生成的反射纹理中缺失的天空部分内容进行补全,从而优化视觉效果。

为了便于理解,请参阅图1,本申请实施例提供了一种反射纹理补全方法,该方法基于Unity引擎实现,方法包括:

步骤101、基于屏幕空间平面反射技术从主摄像机获取的图像中生成反射纹理。

通过游戏当前主摄像机在当前朝向下获取屏幕图像,再基于屏幕空间平面反射技术将当前主摄像机获取的屏幕图像渲染到纹理,生成反射纹理。其中,屏幕空间平面反射技术属于现有技术,在此不再对反射纹理的具体生成过程进行赘述。

步骤102、将主摄像机的朝向旋转到反射朝向,主摄像机的原朝向和反射朝向基于反射平面成镜像。

将游戏当前主摄像机的朝向旋转到反射朝向,其中,主摄像机的原朝向和反射朝向是基于反射平面成镜像的,可以参考图2。该做法类似于反射相机的做法,但不需要调整主摄像机的位置,因为这里只需要渲染天空盒的内容,而摄像机永远处于天空盒的中心。

步骤103、竖直翻转主摄像机的画面,并让主摄像机渲染一次天空盒,将获取的图像渲染到纹理,得到反射方向上的天空纹理。

在旋转主摄像机的朝向后,竖直翻转主摄像机的画面,可以通过将主摄像机的投影矩阵乘以预置参数矩阵

在竖直翻转主摄像机的画面后,让主摄像机渲染一次天空盒,获取主摄像机当前获取的图像,将该图像渲染到纹理,得到反射方向上的天空纹理。此时获取的天空纹理为真实的反射结果。

进一步,在获取到天空纹理后,恢复主摄像机的朝向和投影矩阵。

步骤104、将反射纹理和天空纹理进行混合,得到补全后反射纹理。

在获取到天空纹理后,需要确定天空纹理和由屏幕空间平面反射技术产生的反射纹理如何进行混合。本申请实施例发现,反射纹理的A通道标识了纹理何处具有实际的反射内容,因此,可以通过A通道来混合反射纹理和天空纹理。A通道中越趋近1(即越白)的地方倾向于绘制反射纹理的内容,越趋近0(即越黑)的地方倾向于绘制天空纹理的内容。本申请实施例采用插值方式来混合反射纹理和天空纹理,具体为:

refl.rgb=lerp(reflSkybox.rgb,refl.rgb,refl.a);

式中,refl.rgb为反射纹理的颜色,refl.a为反射纹理A通道的值,reflSkybox.rgb为天空纹理的颜色,lerp()为线性插值函数。

在混合天空纹理和反射纹理后,通过相关场景物体的着色器绘制反射内容,通过对比发现,补全天空纹理后的效果比原效果美观很多。

屏幕空间平面反射技术的性能消耗和视觉表现比较均衡,反射相机的性能消耗很高,视觉表现很好。本申请实施例在性能消耗可接受的范围内,运用反射相机的思路,对屏幕空间平面反射技术生成的反射纹理中的失真部分进行优化补全,优化了视觉效果;并且,本申请实施例中的补全方法对于开发人员来说有更高的可控性,可调节渲染效率,比起在着色器中多采样一次天空盒,本申请允许开发人员权衡画质表现精度和性能消耗,调控渲染天空纹理时的分辨率和天空盒特效,使视觉效果和渲染效率达到平衡。由于大部分游戏场景的天空盒色调简单,反射纹理也不需要十分精细,完全可以降低渲染天空纹理的分辨率,以降低渲染耗时。经测试,在天空纹理的分辨率降低到原分辨率的0.04倍时,平面反射的视觉效果依然十分良好,此时渲染天空纹理的GPU耗时为渲染场景天空盒的18%~30%,合理范围内的耗时增加换取了平面反射效果的巨大提升。

本申请实施例中,在基于屏幕空间平面反射技术生成反射纹理后,将主摄像机的朝向旋转到反射朝向,并竖直翻转所述主摄像机的画面,让主摄像机渲染一次天空盒,将获取的图像渲染到纹理,得到反射方向上的天空纹理,通过运用反射相机的做法,渲染出反射方向上的天空纹理,是真实的反射结果,混合后的视觉效果表现很好,改善了使用屏幕空间平面反射技术无法获取屏幕外的反射内容,导致反射纹理残缺从而视觉效果不佳这一固有缺陷,以及采用天空盒采样结果去修补反射纹理存在效果不佳的技术问题。

以上为本申请提供的一种反射纹理补全方法的一个实施例,以下为本申请提供的一种反射纹理补全装置的一个实施例。

请参考图3,本申请实施例提供的一种反射纹理补全装置,包括:

反射纹理生成单元,用于基于屏幕空间平面反射技术从主摄像机获取的图像中生成反射纹理;

旋转单元,用于将主摄像机的朝向旋转到反射朝向,主摄像机的原朝向和反射朝向基于反射平面成镜像;

天空纹理生成单元,用于竖直翻转主摄像机的画面,并让主摄像机渲染一次天空盒,将获取的图像渲染到纹理,得到反射方向上的天空纹理;

纹理混合单元,用于将反射纹理和天空纹理进行混合,得到补全后反射纹理。

本申请实施例中,反射纹理生成单元通过游戏当前主摄像机在当前朝向下获取屏幕图像,再基于屏幕空间平面反射技术将当前主摄像机获取的屏幕图像渲染到纹理,生成反射纹理。其中,屏幕空间平面反射技术属于现有技术,在此不再对反射纹理的具体生成过程进行赘述。

旋转单元将主摄像机的朝向旋转到反射朝向,其中,主摄像机的原朝向和反射朝向基于反射平面成镜像。天空纹理生成单元将主摄像机的投影矩阵乘以预置参数矩阵,实现竖直翻转主摄像机的画面,预置参数矩阵为

作为进一步地改进,装置还包括:

恢复单元,用于恢复主摄像机的朝向和投影矩阵。在天空纹理生成单元获取到天空纹理后,恢复单元恢复主摄像机的朝向和投影矩阵。

在获取到天空纹理后,需要确定天空纹理和由屏幕空间平面反射技术产生的反射纹理如何进行混合。本申请实施例发现,反射纹理的A通道标识了纹理何处具有实际的反射内容,因此,可以通过A通道来混合反射纹理和天空纹理。A通道中越趋近1(即越白)的地方倾向于绘制反射纹理的内容,越趋近0(即越黑)的地方倾向于绘制天空纹理的内容。因此,纹理混合单元通过A通道混合反射纹理和天空纹理,得到补全后反射纹理,混合过程为:

refl.rgb=lerp(reflSkybox.rgb,refl.rgb,refl.a);

式中,refl.rgb为反射纹理的颜色,refl.a为反射纹理A通道的值,reflSkybox.rgb为天空纹理的颜色,lerp()为线性插值函数。

本申请实施例中,在基于屏幕空间平面反射技术生成反射纹理后,将主摄像机的朝向旋转到反射朝向,并竖直翻转所述主摄像机的画面,让主摄像机渲染一次天空盒,将获取的图像渲染到纹理,得到反射方向上的天空纹理,通过运用反射相机的做法,渲染出反射方向上的天空纹理,是真实的反射结果,混合后的视觉效果表现很好,改善了使用屏幕空间平面反射技术无法获取屏幕外的反射内容,导致反射纹理残缺从而视觉效果不佳这一固有缺陷,以及采用天空盒采样结果去修补反射纹理存在效果不佳的技术问题。

本申请实施例还提供了一种反射纹理补全设备,设备包括处理器以及存储器;

存储器用于存储程序代码,并将程序代码传输给处理器;

处理器用于根据程序代码中的指令执行前述方法实施例中的反射纹理补全方法。

本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质用于存储程序代码,程序代码被处理器执行时实现前述方法实施例中的反射纹理补全方法。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“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-OnlyMemory,英文缩写:ROM)、随机存取存储器(英文全称:Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

技术分类

06120116334351