Cemu VSync 匹配 — 实验性消除撕裂与降低输入延迟
什么是 VSync
VSync(垂直同步)是一种让显卡输出帧率和显示器刷新率同步的技术。目的:
- 防止画面撕裂——显卡输出太快导致一帧里同时出现新画面和旧画面的上下两半
- 减少显卡做无用功(渲染了显示器还没来得及显示的帧)
传统 VSync 的代价:增加输入延迟(等显示器刷完这一帧才能出下一帧)。所以很多玩家关掉 VSync 换低延迟,但画面可能撕裂。
Cemu 的三种 VSync 模式
Options → General settings → Graphics → VSync:
| 模式 | 平台 | 说明 |
|---|---|---|
| Double buffering(OpenGL 默认) | 全平台 | 标准 VSync,双缓冲,避免撕裂但有一定延迟 |
| Match emulated display (Experimental)(Vulkan 独有) | 仅 Vulkan | 利用游戏自身的帧率节奏,延迟更低 |
| Off | 全平台 | 关闭 VSync,最低延迟但可能撕裂 |
Match emulated display 是什么
这是 Cemu 在 Vulkan 后端上实现的实验性 VSync。它不是让 Cemu 被动等显示器刷完,而是:
- 读取 Wii U 游戏自身的帧率节奏(游戏内部想 30fps 还是 60fps)
- 让 Cemu 的渲染输出匹配这个节奏
- 用 Vulkan 的 timeline semaphore 实现精确同步
效果:
- 避免撕裂(和 Double buffering 一样)
- 延迟更低(比 Double buffering 好,接近 Off 的延迟)
- 理论上是最理想的方案
什么时候用哪个模式
Windows + Vulkan 用户
推荐设置顺序:
- Match emulated display (Experimental) — 首选
- 如果遇到问题(画面闪、帧率异常)→ 改 Double buffering
- 如果显示器支持 G-SYNC / FreeSync → 改 Off(因为自适应刷新率已经能避免撕裂了)
Windows + G-SYNC / FreeSync 用户
自适应刷新率显示器本身就能避免撕裂(显示器刷新率随帧率动态调整)。这时候 VSync 设成 Off 就行——既避免撕裂又延迟最低。
macOS / Linux / OpenGL 用户
只有 Double buffering 和 Off 两个选项。推荐 Double buffering(避免撕裂,有少量延迟但在可接受范围)。
实验性意味着什么
"Match emulated display" 标了 Experimental,意思是:
- 绝大多数游戏下表现正常
- 但在少数游戏或特定显示器配置下可能出现问题:帧率锁死、画面闪烁、崩溃
- 如果遇到奇怪的表现,第一时间把 VSync 改成 Double buffering 或 Off 再试
完整 Vulkan 推荐设置
Windows 用户、独立 NVIDIA/AMD 显卡、没有 G-SYNC:
| 设置项 | 推荐值 |
|---|---|
| Graphics API | Vulkan |
| Graphics Device | 性能最强的 GPU(独显) |
| Async shader compiler | ✅ 开启 |
| VSync | Match emulated display (Experimental) |
| Accurate barriers (Debug 菜单) | ❌ 关闭 |
| Audio API | XAudio2 |
画面撕裂怎么办
如果你确实遇到撕裂:
- 确认 VSync 不是 Off
- 如果用的是 Vulkan + 实验性 VSync,试试改 Double buffering
- 检查显示器刷新率设对了(显示器菜单里看原生刷新率)
- Windows 设置 → 高级显示 → 选择刷新率,选显示器的最大值
输入延迟高怎么办
如果你觉得操作延迟太大:
- VSync 改成 Off(接受偶尔撕裂换低延迟)
- 如果显示器有 G-SYNC / FreeSync,保持 VSync Off 就行
- 异步编译确保开启(不要让着色器编译干扰帧率节奏)