searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

基于负反馈策略针云游戏场景画面撕裂的解决办法

2024-10-31 09:28:46
0
0

数字化浪潮席卷全球,云计算已成IT行业发展之核。云游戏作为新兴技术力量,将游戏渲染从玩家设备转移至集中服务器,革新游戏体验。然而,高帧率云游戏却面临着画面撕裂的难题。

画面撕裂自游戏诞生之日起便困扰着玩家。在传统本地游戏中,由于显示器刷新率与显卡帧率不同步,画面撕裂现象便会产生。当显示器刷新画面时,若显卡同时生成下一帧,此时显存中存储渲染好画面的寄存器在进行两帧画面数据的切换,显示器读取寄存器后上下部分画面便会来自不同帧,导致画面撕裂,因此当显卡输出的帧率大于显示器刷新率或者小于显示器刷新率时都会出现画面撕裂。

针对画面撕裂问题,业界普遍采用垂直同步(V-Sync)技术进行解决。该技术通过降低显卡帧率至显示器刷新率,有效减少画面撕裂现象。然而,垂直同步并非完美解决方案。其会导致显卡等待显示器刷新后才能渲染画面,进而产生输入延迟。此外,此功能的显示器刷新率是固定的,当显卡帧率低于显示器刷新率时,垂直同步还会将显卡帧率限制为显示器刷新率的一半或四分之一(倍数关系不会造成画面撕裂),造成帧率大幅下降,影响游戏流畅度,因此该技术主要运用于显卡帧率高于显示器刷新率场景。权衡利弊,部分玩家为了追求游戏性能,会选择关闭垂直同步。

针对垂直同步的缺点,显卡公司英伟达和AMD各自推出了G-Sync和FreeSync技术,该技术反向通过动态调整显示器的刷新频率来匹配显卡帧率,这种技术在显卡帧率介于下限帧率(G-SYNC支持超低下限4-10hz都可以工作,G-Sync Compatible(G-Sync的兼容版)和FreeSync多数是42HZ)和显示器最高刷新率之间时,不需要让显卡降低帧率,可以在保证游戏流畅度和低延迟的同时有效解决画面撕裂的问题,因此该技术主要运用于显卡帧率低于显示器最高刷新率场景,但该技术需要显示器兼容。

垂直同步和G-Sync/FreeSync技术分别能解决显卡帧率高于和低于显示器刷新率导致画面撕裂的问题,前者会导致延迟和卡顿,后者只能适用于本地游戏场景。而云游戏由于需要经过服务器渲染,编码,网络传输,客户端解码,显示等过程,情况更为复杂,由于G-Sync/FreeSync技术需要显卡和显示器之间的通信以配合做到帧率同步,而云游戏的显卡在服务端,显示器在客户端,无法做到通信同步。再而由于中间经过了网络传输,即使将服务端的画面帧率和客户端的显示器刷新率做了固定统一,但是画面帧在经过编解码延迟和网络传输延迟后,会出现客户端的帧生成时间不稳定,例如即使服务器稳定生成60FPS的画面,但是经过编解码和网络传输后,在客户端接收时帧率往往会在50FPS-70FPS中间波动,因此即使显示器设置为60FPS刷新率,也会在客户端产生画面撕裂。

综上所述,目前云游戏在高帧率场景下画面撕裂的解决办法主要有以下难题

1)传统的垂直同步,会造成画面延迟,并且在显卡帧率低于显示器情况下会造成帧率大幅下滑。

2)G-Sync/FreeSync技术是基于本地游戏环境,需要显卡和显示器做直接通信,以解决画面撕裂问题,云游戏由于显卡和显示器物理相隔无法实现该操作。

3)通过锁定同步服务器显卡渲染帧率和客户方显示器画面刷新率,会因为画面的编解码延迟和网络传输延迟导致客户端帧生成时间不稳定,导致帧率波动,而后导致画面撕裂。

本文所提出的基于负反馈策略针云游戏场景画面撕裂的解决办法核心思维是将客户端解码后的帧率和客户端显示器刷新率做同步,因为云游戏的画面撕裂是在客户端显示器读取客户端显卡显存中解码后的画面时出现的撕裂。因此只要解决了客户端的同步即可解决画面撕裂问题。本发明是通过自适应垂直同步技术,虚拟显示器技术,物理延迟统计技术,G-Sync和Free-Sync技术结合负反馈策略共同作用以达到客户端画面同步以消除云游戏画面撕裂的问题。核心思想是将服务器显卡的渲染帧率限制到客户端显示器最高刷新率的(100-n)%,n值由帧率信息从编码到解码全流程的延迟波动来动态调整,这样帧信息到达客户端后因延迟产生的帧生成时间不稳定也有n%的向上冗余,这样限制帧率后可以尽可能消除解码后帧率(由服务端显卡帧率影响)高于显示器刷新率场景下的画面撕裂。客户端开启G-Sync\FreeSync功能和客户端解码帧率做同步(和本地游戏场景不同,这里不和服务端显卡渲染帧率做同步),其会主动调整客户端显示器刷新率以适配解码后的帧率,这项能尽可能消除解码后帧率低于显示器刷新率场景下的画面撕裂。

需要以下准备工作:

1)开发一个支持动态修改刷新率的服务端虚拟显示器(vMonitor)。

2)云游戏串流开始前,客户端将客户端显示器的刷新率发送给服务端,服务端将服务端虚拟显示器设置为客户端显示器刷新率的(100-n)%,n初始值为10。

3)同时服务端通过显卡API接口,开启服务端显卡的自适应垂直同步功能。该功能会将服务端显卡渲染帧率控制在0FPS到虚拟显示器的刷新率(客户端显示器刷新率的(100-n)%)。

4)客户端显示器开启G-Sync/FreeSync功能,以适配客户端解码后的帧率变化,消除画面撕裂。

0条评论
0 / 1000
l****n
12文章数
0粉丝数
l****n
12 文章 | 0 粉丝
原创

基于负反馈策略针云游戏场景画面撕裂的解决办法

2024-10-31 09:28:46
0
0

数字化浪潮席卷全球,云计算已成IT行业发展之核。云游戏作为新兴技术力量,将游戏渲染从玩家设备转移至集中服务器,革新游戏体验。然而,高帧率云游戏却面临着画面撕裂的难题。

画面撕裂自游戏诞生之日起便困扰着玩家。在传统本地游戏中,由于显示器刷新率与显卡帧率不同步,画面撕裂现象便会产生。当显示器刷新画面时,若显卡同时生成下一帧,此时显存中存储渲染好画面的寄存器在进行两帧画面数据的切换,显示器读取寄存器后上下部分画面便会来自不同帧,导致画面撕裂,因此当显卡输出的帧率大于显示器刷新率或者小于显示器刷新率时都会出现画面撕裂。

针对画面撕裂问题,业界普遍采用垂直同步(V-Sync)技术进行解决。该技术通过降低显卡帧率至显示器刷新率,有效减少画面撕裂现象。然而,垂直同步并非完美解决方案。其会导致显卡等待显示器刷新后才能渲染画面,进而产生输入延迟。此外,此功能的显示器刷新率是固定的,当显卡帧率低于显示器刷新率时,垂直同步还会将显卡帧率限制为显示器刷新率的一半或四分之一(倍数关系不会造成画面撕裂),造成帧率大幅下降,影响游戏流畅度,因此该技术主要运用于显卡帧率高于显示器刷新率场景。权衡利弊,部分玩家为了追求游戏性能,会选择关闭垂直同步。

针对垂直同步的缺点,显卡公司英伟达和AMD各自推出了G-Sync和FreeSync技术,该技术反向通过动态调整显示器的刷新频率来匹配显卡帧率,这种技术在显卡帧率介于下限帧率(G-SYNC支持超低下限4-10hz都可以工作,G-Sync Compatible(G-Sync的兼容版)和FreeSync多数是42HZ)和显示器最高刷新率之间时,不需要让显卡降低帧率,可以在保证游戏流畅度和低延迟的同时有效解决画面撕裂的问题,因此该技术主要运用于显卡帧率低于显示器最高刷新率场景,但该技术需要显示器兼容。

垂直同步和G-Sync/FreeSync技术分别能解决显卡帧率高于和低于显示器刷新率导致画面撕裂的问题,前者会导致延迟和卡顿,后者只能适用于本地游戏场景。而云游戏由于需要经过服务器渲染,编码,网络传输,客户端解码,显示等过程,情况更为复杂,由于G-Sync/FreeSync技术需要显卡和显示器之间的通信以配合做到帧率同步,而云游戏的显卡在服务端,显示器在客户端,无法做到通信同步。再而由于中间经过了网络传输,即使将服务端的画面帧率和客户端的显示器刷新率做了固定统一,但是画面帧在经过编解码延迟和网络传输延迟后,会出现客户端的帧生成时间不稳定,例如即使服务器稳定生成60FPS的画面,但是经过编解码和网络传输后,在客户端接收时帧率往往会在50FPS-70FPS中间波动,因此即使显示器设置为60FPS刷新率,也会在客户端产生画面撕裂。

综上所述,目前云游戏在高帧率场景下画面撕裂的解决办法主要有以下难题

1)传统的垂直同步,会造成画面延迟,并且在显卡帧率低于显示器情况下会造成帧率大幅下滑。

2)G-Sync/FreeSync技术是基于本地游戏环境,需要显卡和显示器做直接通信,以解决画面撕裂问题,云游戏由于显卡和显示器物理相隔无法实现该操作。

3)通过锁定同步服务器显卡渲染帧率和客户方显示器画面刷新率,会因为画面的编解码延迟和网络传输延迟导致客户端帧生成时间不稳定,导致帧率波动,而后导致画面撕裂。

本文所提出的基于负反馈策略针云游戏场景画面撕裂的解决办法核心思维是将客户端解码后的帧率和客户端显示器刷新率做同步,因为云游戏的画面撕裂是在客户端显示器读取客户端显卡显存中解码后的画面时出现的撕裂。因此只要解决了客户端的同步即可解决画面撕裂问题。本发明是通过自适应垂直同步技术,虚拟显示器技术,物理延迟统计技术,G-Sync和Free-Sync技术结合负反馈策略共同作用以达到客户端画面同步以消除云游戏画面撕裂的问题。核心思想是将服务器显卡的渲染帧率限制到客户端显示器最高刷新率的(100-n)%,n值由帧率信息从编码到解码全流程的延迟波动来动态调整,这样帧信息到达客户端后因延迟产生的帧生成时间不稳定也有n%的向上冗余,这样限制帧率后可以尽可能消除解码后帧率(由服务端显卡帧率影响)高于显示器刷新率场景下的画面撕裂。客户端开启G-Sync\FreeSync功能和客户端解码帧率做同步(和本地游戏场景不同,这里不和服务端显卡渲染帧率做同步),其会主动调整客户端显示器刷新率以适配解码后的帧率,这项能尽可能消除解码后帧率低于显示器刷新率场景下的画面撕裂。

需要以下准备工作:

1)开发一个支持动态修改刷新率的服务端虚拟显示器(vMonitor)。

2)云游戏串流开始前,客户端将客户端显示器的刷新率发送给服务端,服务端将服务端虚拟显示器设置为客户端显示器刷新率的(100-n)%,n初始值为10。

3)同时服务端通过显卡API接口,开启服务端显卡的自适应垂直同步功能。该功能会将服务端显卡渲染帧率控制在0FPS到虚拟显示器的刷新率(客户端显示器刷新率的(100-n)%)。

4)客户端显示器开启G-Sync/FreeSync功能,以适配客户端解码后的帧率变化,消除画面撕裂。

文章来自个人专栏
云游戏
12 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0