Switch模拟器Ryujinx进度报告2022-7月

Switch模拟器Ryujinx进度报告2022-7月

异度之刃3

Switch模拟器Ryujinx进度报告2022-7月

现在是八月。

七月发生了太多事情,以至于感觉比区区的 31 天要长得多。 一个新的 异度之刃,精灵宝可梦,patreon 目标终于实现了; 我们真的要记住这个月。 那么,我们为这份进度报告准备了什么? 我们对所有更改进行了定期总结,对 AMD 进行了一些讨论(最近似乎是一个片段),而且,不要忽视它,这是一个大标志,如果您需要了解 Vulkan 请阅读之前的文章!

没有必要再拖延了,所以在我们开始之前,请先看看我们的 patreon 目标。

Patreon目标:

Vulkan GPU 后端 – 已合并!

ARB 着色器 – 2021 年 4 月达到的目标。

工作正在进行中,请稍等片刻,直到我们能够将此更新交付到我们满意的状态。

通过使用 OpenGL API 提高 NVIDIA GPU 上的着色器编译速度,ARB 着色器将进一步减少首次运行时的卡顿。

2000 美元/月 – 纹理包/替换功能 – 快到了!

这将有助于替换游戏中的图形纹理,从而实现自定义纹理增强、备用控制器按钮图形等。

一旦目标得以维持,预计到达时间:~3-4 周

2500 美元/月 – 一名全职开发人员 – 尚未见面。

这笔每月捐款将允许该项目的创始人 gdkchan 全职开发 Ryujinx。 我们所有的贡献者目前只在业余时间从事该项目!

5000 美元/月 – 额外的全职开发人员 – 尚未见面。

这笔每月捐款将允许额外的 Ryujinx 团队开发人员全职从事该项目。

显卡:

分辨率缩放修复本月让我们迈出了一大步,riperiperi 解决了缩放某些 Unity(虚幻引擎) 游戏时特别烦人的错误,例如 时光之帽 和 Cruis’n Blast(赛车竞速游戏)。 当这些游戏的缩放比例超过原始分辨率时,这些游戏会在屏幕上涂上红色,这使得缩放这些游戏有点像一把双刃剑。 幸运的是,这里的解决方案是简单的 避免缩放这些反叛纹理 ,同时继续缩放其它所有内容。

解决了屏幕上出现的红色渲染错误

解决了屏幕上的红色渲染错误

SD高达战斗联盟演示在发布时启动,但不幸的是在游戏中崩溃。 原因被追查为 DMA 线性纹理副本的快速路径中的错误,但通过 强制 FindTexture 方法仅匹配具有 精确 副本高度 的线性纹理,游戏现在启动并且看起来运行良好。

SD高达战斗联盟

我们如何管理采样器池的问题终于在本月出现,在 女仆向右跑 中表现不佳。 考虑到这款游戏在视觉上的基础性,令人惊讶的是它在现代硬件上难以达到 30FPS 以上。 纹理池缓存的硬限制为 4,这意味着如果游戏需要使用超过4这个值,则 4 个中的一个将被删除,并且需要在需要时重新创建,从而导致创建时的一些主要性能下降。 通过创建采样器池缓存并更好地评估何时可以安全地处理池,大大提高了超过 4 个限制的游戏的性能。 大多数游戏只使用一个纹理池,所以不会影响到其它游戏。

女仆向右跑

JUMP 大乱斗 豪华版 是一款在相当长一段时间内都 非常接近 图形准确的游戏,唯一剩下的主要视觉错误和场景中出现绿光。

JUMP 大乱斗 豪华版出现的绿光

这里的问题是着色器上的一个简单的数据丢失错误。 由于解码器在某些情况下没有考虑分支指令,因此生成的着色器代码会跳过一些重要信息。 通过修复这个遗漏, gdkchan 终于在这个特殊的游戏上解决了。

JUMP大乱斗豪华版 正常的样子

关于它们可能不应该存在的大型光源的主题:幻影异闻录,容我们说, 太阳的光 导致游戏几乎无法玩的 这是游戏使用的绽放的问题,并且再次是生成的着色器的问题。 通过支持条件退出,我们的视网膜得到了保护!

幻影异闻录

新的 怪物猎人:崛起 DLC 需要进行一些困难的更改才能渲染,这些更改正在逐步推出。 其中第一个允许游戏通过将无约束消除扩展到与常量句柄相结合的着色器来达到其初始屏幕。

怪物猎人崛起

其中的第二个通过 扩展着色器优化器以传播 phi 节点来 。 不幸的是,我们在这里没有图像比较,因为即使是渲染游戏也需要更多的 WIP 更改。 希望在未来的报告中会有完整的整个 DLC 包得前后对比!

自着色器缓存 2.0 以来,积压中的一些旧更改终于能够完成,包括在覆盖抖动中添加 alpha。 对于任何不知道的人:“抖动”是指计算机图形中的一种效果,其中对象或纹理使它们看起来参差不齐:

二哈?

在复古视频游戏中,这被用来为原本泥泞的纹理增加深度; 它最终变得相当标准化,作为一种在摄像机向后移动时使固体物体呈现半透明以保持玩家视野的方法。

宝可梦传说:阿尔宙斯 在环境模型(例如树木和岩石)上使用抖动,但以前没有模拟这种效果,因为它需要在新着色器格式中引入新的着色器专用化。 gdkchan 在缓存重写之前尝试对此进行修复,但如果没有着色器专用化,抖动仿真将需要存在于每个单独的片段着色器上,即使着色器永远不会使用它。 这些问题都 在这个新的实现中得到了解决。

宝可梦传说:阿尔宙斯

还删除了 DMA 处理程序中的一些冗余分配, 由于播放期间的 动画 卡顿较低,这可能会导致 FMV(全动态视频)播放的一些小优化。 这里的结果很难衡量,但这有望消除视频播放中较简单的瓶颈之一。

为了结束 GPU 部分,我们 添加了一个微不足道的 Vulkan 后端 。 不是太大,这里没有大的变化,只有 40,000 行代码。非常优秀!

flatpak 需要快速更新 以确保它不会在选择 Vulkan 时崩溃,我们现在 避免为未使用的常量缓冲区添加着色器缓冲区描述符 ; 一个影响 OpenGL 的更改,但可能会给 Vulkan 带来轻微的性能提升。

CPU/服务:

7 月还带来了一些新的 CPU 和服务修复、实现和存根; 其中第一个是几个 BSD(网络套接字)修复。 现在可以在“接收”方法中使用 DontWait 标志,并且现在可以 的情况 处理通过网络交换字节大小选项 新发布的《超级马里奥奥德赛 Online》模组部分需要这些更改中的第二个,并修复了《神界原罪 2》中的崩溃回溯。

超级马里奥奥德赛 Online

当我们尝试模拟整个 Switch 时,有一些服务是大多数用户甚至可能不会想到的 PC 模拟器。 其中之一是恰当命名的“GetTemperature”服务,您可能已经猜到了,它以摄氏度为单位报告 Switch 的内部温度。 此服务导致自制启动器在启动期间崩溃,因为它试图探测此数据。 ( 存根设置了 42 摄氏度的恒定温度 显然采取了 69 摄氏度……),这似乎满足了自制软件的环境需求。

42

随着在 Switch 上发布 传送门 合集,在我们的服务和 CPU 模拟中都发现了两个问题。 第一个是我们的 Vi 服务中的一个不准确 问题,通过 gdkchan 的 RE 很快解决了 ,第二个是 FCVT Half to Double 转换指令的实现。 通过这些更改,传送门 1 和 2 都可以启动,传送门 1 基本上没有错误。 Portal 2 仍然存在一些图形问题,即不应该剔除的对象。

传送门 合集

用户界面:

用户界面开发在 7 月份非常火爆,尽管没有多少普通用户会看到很多事情发生。 到目前为止,我们已经多次提到我们向 Avalonia 的转变,就在最近,我们指出项目的第 1 部分正在合并。

好吧,第 1 部分可以离开了,因为 7 月合并了第 2 部分和第 3 部分,从而使新 UI 与当前的 GTK 实现相提并论。

第 2 部分 实现了完整的设置窗口:

UI设置窗口

第 3 部分 添加了剩余的上下文窗口:

上下文界面

但是,虽然这些是核心更改,但它们为任何贡献者现在可以带来的修复、添加和调整打开了闸门。 项目文件被清理了 一次 、 两次 ,然后进行了一些 生活质量调整 。

这包括为所有项目启用“分层编译”。 Avalonia 是一个完全“JITed”的框架,而 GTK 被认为是“Native”,这意味着 .NET 运行时通常必须在第一次运行时做很多工作,即使在程序编译后也是如此; 分层编译允许 .NET 启动应用程序而无需应用其所有代码优化,从而加快 GUI 启动时间并总体上减少应用程序延迟。 随着程序越来越频繁地启动,.NET 可以随着时间的推移逐渐开始执行这些优化,而不是一次全部转储。 这也为 GTK 启用了,但作为一个“原生”框架,GTK 不需要像 Avalonia 那样在 GUI 启动上做那么多工作。 当我们第一次运行启用此功能的 Avalonia 应用程序时,我们看到从 14 秒缩短到 3 秒。

“提前”编译还完成了与分层编译类似的任务,通过将一些首次运行成本转移到编译过程中来减少延迟。 这种方法的缺点是文件大小最多增加了 3 倍,开发团队认为对于分层编译的微小改进来说成本太高了。

既然已经实现了功能对等,Emmaus(首席 UI 开发人员)也开始从 GTK 分支出来。 而 用户配置文件编辑器现在使用单个内容对话框, 不是每个选项的新单独窗口。 这意味着更流畅的体验,更少的混乱和打开和关闭窗口之间的延迟,也为即将到来的数据管理器( 保存管理器 已经在工作)的进一步此类内容对话框奠定了基础。

用户配置

除了这些之外,还进行了许多其它杂项更改,包括:

1)一些语法修复 工具提示和选项 包括 GTK 。

2)对 Avalonia 的工具提示进行了改进 ,然后 向后移植到 GTK。

3)简体中文区域设置 并 添加了繁体中文。

4)弹出菜单添加了边框。

5)错误修复 鼠标输入 、 显示控制台切换 和 光标隐藏 已实现。

6)添加了一种解决方法, 允许单击时切换菜单项 而不是仅在其复选框中切换(当 Avalonia 解决此疏忽时将被删除)。

7)修复了 尝试切换控制器中间映射时程序崩溃的错误。

正如您可能看到的,这一切都开始了,在 Avalonia 成为每个人在启动时都会看到的默认 UI 之前,我们已经有一个更长的错误和问题列表需要解决。 解决这些问题后,将开始更改更新程序以向您提供所有新 UI 项目而不是旧项目的过程。 现在,您必须保持耐心,而在后台继续进行无缝体验的工作!

杂项/基础设施:

让我们远离本月的变化。 我们项目的基础架构和 QoL 进行了一些重大修改,包括:

1)确保我们首先加载最新的 FFmpeg 库 (避免由于过时的依赖项导致崩溃)。

2)完全删除 Windows 的 FFmpeg 依赖项 并打包我们自己的绑定。

3)Ryujinx.Audio 并将其 重新格式化 为 MIT 许可证,以与项目的其余部分保持一致。 这是上述“分层编译”功能与我们的许可兼容所必需的。

4)现在可以通过热键调整分辨率缩放 。 默认为未映射,但在合并 Avalonia 时可以映射,或者当前可以通过直接编辑 Ryujinx 数据文件夹中的“config.json”进行映射。

你们中更多人会感兴趣的一个特殊变化是非官方称为“Windows 11 FixTM”。 用户注意到,在更新到 Windows 11 后,Ryujinx 在某些游戏中变得几乎无法玩,因为大量且持续的卡顿显然无缘无故地降低了 FPS。

讨厌的win11

由于 Horizon OS 的运行方式,Windows 等操作系统需要绕过许多怪癖才能准确。 其中之一是我们需要以 4Kb 大小映射内存。 Windows 11 似乎有一个独特的错误,这个过程有时会比在 Windows 10 上花费的时间长数百倍,我们仍然不知道为什么会这样

通过 将内存取消映射处理程序移动到本机处理程序, 我们可以大量减少这些有问题的 4Kb 映射的数量,从而挽救 Windows 11 的困境。

“嘿 Ryujinx 团队,我们听说 AMD 终于修复了他们的 OpenGL 驱动程序?”

好在它终于发生了。 AMD 已经承认 OpenGL 的存在。 正如你可以想象的那样,这是一个值得庆祝的日子。 我们点了披萨,打开香槟,分享了在《超级马里奥奥德赛》中 AMD GPU 只能达到 13FPS 的黑暗日子的美好回忆……

超级马里奥:奥德赛

等等,什么? 它不仅仍然很糟糕,而且 AMD 也设法破坏了 超级马里奥:奥德赛 上的渲染? 咻咻咻咻咻咻

回到更严肃的讨论:它并不像这里在 超级马里奥:奥德赛 上看到的那么糟糕,在某些游戏中,我们确实必须给予 AMD 功劳,因为它在某些情况下显著的对OpenGL 进行了改善。

AMD的NGL/OPGL/Vulkan对比

读过我们的 Vulkan 文章的人应该熟悉这张图,但这里添加的是“NGL”数据集,您可以将其解读为 AMD 新 22.7.1 驱动程序的“New GL”。 除了奇怪的是 超级马里奥:奥德赛 之外,我们测试的所有地方的性能都受到了全面的冲击,超级马里奥:奥德赛 的性能和图形渲染都出现了倒退。 《马里奥赛车 8 豪华版》性能大幅提升,但同样存在全新的视觉错误。

马里奥赛车8:豪华版

Vulkan 仍然是 AMD GPU 系统的最佳选择,但至少 OpenGL 在某些游戏中是一个可行的选择。 密特罗德 生存恐惧 实际上是这里的异常值,比旧驱动程序增加了惊人的 269%,甚至在 Vulkan 上提高了 143%(尽管我们相当肯定这只是由于 API 瓶颈,因为即使是 Nvidia 也看到了更好的 OpenGL 性能这个示例)。

无论哪种方式,我们都希望这可以解决这个问题。 我们很高兴 AMD 终于做了 一些事情 来解决他们的性能障碍,但这应该被视为许多改进中的第一个。 声称 OpenGL 已“修复”还为时过早,我们都希望看到 AMD 继续关注剩余的性能问题、渲染错误和缺乏扩展(这也适用于 Vulkan!)。

结束语

就是这样! 对于那些正在寻找 异度之刃 3 带来的改变的人来说,你将不得不等待下个月,但它的要点是 Vulkan 目前存在随机崩溃,并且 OpenGL 在着色器编译时非常慢,你几乎看不到一些过场动画! 除此之外,性能看起来不错,但我们还不能称之为玩起来很愉快。

模拟器是在数千小时的工作基础上构建和维护的,涵盖从逆向工程、CPU 和 GPU 仿真、服务 HLE 一直到 UI 和 UX 的方方面面。 我们的大门始终向任何有兴趣在 Switch 仿真和 C# 的前沿应用到真正独特的项目的人敞开。 如果这听起来对您来说小菜一碟,请查看我们的 Github 或加入 Discord 。

大家下个月见!

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年8月18日
下一篇 2022年8月18日

相关推荐

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息