switch模拟器吧 关注:11,518贴子:7,515
  • 1回复贴,共1

Yuzu进展报告2022年8月【edge浏览器机翻】

只看楼主收藏回复

欢迎回来,你们!八月是充满进步的一个月。大量的图形更改,内核和文件系统改进,以及更多的工作投入到网络仿真中。请看下一张幻灯片!
图形更改
本月包括了七月份大片发布的一些值得注意的修复程序。虽然在技术上确实在yuzu的发布日工作,但我们花了一些时间来解决稳定性问题。Xenoblade Chronicles 3Xenoblade Chronicles 3
上个月提到的第一个是yuzu的着色器重新编译器的修复。柚子不使用 GLSL 编译器来生成 SPIR-V,即伏尔坎着色器语言。相反,它直接生成SPIR-V,这要快得多,但出错的可能性更大。在这种情况下,着色器重新编译器未能在 SPIR-V 着色器中声明某些变量,并将对它们的引用保留为 null,从而导致着色器在编译时使驱动程序崩溃。Maide和byte[]很快发现并修复了这个问题,允许游戏在发布日在Vulkan中运行。

使用的管道集非常庞大,许多管道缓存在扩展游戏后会超过15000个条目。对于所有图形后端,yuzu 会在游戏开始之前预编译着色器,并且不允许在编译完成之前启动着色器。在 GLSL 上使用 OpenGL 时,编译需要一整分钟才能完成,管道缓存的大小与 生成的管道缓存一样大。更糟糕的是,您以前无法在编译进程时取消该进程。如果你尝试过,柚子会冻结并继续等待编译完成,然后再允许你关闭游戏。byte[] 解决了这个轻微的 UX 烦恼,让着色器编译器在每个着色器编译后检查取消,允许编译随时立即停止。Xenoblade Chronicles 3Xenoblade Chronicles 3

Xenoblade Chronicles 3的大量管道也会导致仿真问题。因为yuzu试图给你一个尽可能无口吃的体验,它试图在你开始玩之前将所有已知的管道加载到内存中。如果一个游戏只有几千个管道,这可能是一个合理的提议。但是,将 Xenoblade 的 15000 多个不同管道全部保留在内存中的同时会导致 GPU 驱动程序中的内存使用量飙升。旧的Cemu用户可能还记得在使用NVIDIA GPU时遇到类似的问题。
为此,byte[] 在 yuzu 中查找了可能导致 GPU 驱动程序保留比它需要的更多的内存的任何问题。byte[] 注意到 OpenGL 除了跟踪已编译的着色器源代码之外,还会跟踪着色器源代码的单个对象。正确允许释放这些着色器源代码对象会回收大量浪费的内存。用户现在可以期望在运行OpenGL并遭受情感伤害时会降低VRAM和RAM的使用率。

柚子的OpenGL后端一直有一段时间的优势是稳定性。它并没有真正崩溃。然而,瓦勒坎是另一个故事。即使在前面提到的最初的Vulkan着色器修复之后,游戏仍然会在过场动画中随机崩溃。byte[] 能够可靠地重现问题,并发现 yuzu 在 GPU 处理中收到了一些无效的引用。无论这是否是游戏合法做的事情,或者只是一个仿真错误,他都认为yuzu可以通过传递图像视图VK_NULL_HANDLE来避免崩溃,而不是尝试为空图像创建图像视图,这肯定会崩溃。Xenoblade Chronicles 3

Windows上的AMD用户对瓦肯的支持一无所知。我们的一位测试人员(你的编写者)获取了一个包含 Vulkan 验证错误的日志,并确定崩溃是由于尝试使用 Windows 驱动程序不支持的某些顶点格式造成的。但是,它们由 Linux 梅萨驱动程序支持。byte[] 还确定了一种相反的情况,其中Windows驱动程序支持一种格式,但不支持RADV,并实现了一种通用的解决方法,该解决方法将替换两种情况的兼容格式,同时修复多个崩溃。Xenoblade Chronicles 3RADV

一些与《异度之刃》无关的GPU更改也在本月进行了更改。
多年后,自从我们的Vulkan后端开始以来,柚子终于通过新的贡献者djrobx在Vulkan中添加了对VSync的支持。正如添加它的拉取请求所描述的那样,如果仿真和显示非常接近精确同步,那么当新生成的帧不会决定性地落在下一个要显示的帧时,可能会出现抖动。此更改允许 yuzu 将帧与显示器刷新率完全同步,从而防止任何抖动。谢谢!

不再撕裂,火神版
Merry是《发电机组》的作者(也是现实生活中的白魔法师),他优化了GPU在平铺和直到图像之间进行转换的过程。这不会对游戏的性能产生太大影响,因为它们通常避免在平铺和未平铺图像之间进行转换,但它显着提高了自制应用程序的性能,这些应用程序将每一帧转换为显示到控制台。
关于不寻常的技术,冯辰普拉斯实现了对称为矩形纹理的传统OpenGL格式的支持。

【对比】
传统功能似乎在一些游戏工作室中很受欢迎
作为此更改的副作用,Morph 必须发出管道缓存清除。
您可能在想,但所有的纹理都不是矩形的吗?这是真的,但是使矩形纹理与众不同的是,它们在着色器中索引,坐标从0到其宽度/高度 - 纹素坐标,而不是0到1 - 归一化坐标。这个模式不是很有用,所以看到它仍然被游戏使用是一个惊喜。此更改修复了 and 中的许多渲染问题(两个游戏使用相同的引擎)。Fast RMXThe Touryst
【对比】
不再在深渊(图瑞斯特)度假
对于 ,则在游戏中的图形设置中禁用可修复过度正确的渲染错误。测试表明,OpenGL似乎更适合这款游戏。Fast RMXDYNAMIC CAMERA EXPOSURE

vonchenplus还专注于自制啤酒,它实现了对让 RetroArch 自制啤酒在柚子内部工作所需的一些支持。是的,更多的“模拟器中的模拟器”恶作剧。
第一步是服务,用于控制控制台上的时钟速度,该服务被存根以允许 RetroArch 启动。时钟速度的仿真对柚子来说意义不大,所以这不是损失。第二个是 by 的一种特殊行为,它使用不同的帧缓冲器裁剪,并且在没有正确仿真的情况下出现在屏幕的中间。clkrstswitch-mesa
在准备发布更改时,Tobi发现了一些问题,这些问题使其无法正常工作。byte[]发现它可以在单核中启动,但游戏在Vulkan中的渲染非常糟糕。为此,byte[] 添加了对游戏使用的 R16G16B16X16 格式的支持,修复了渲染问题。尽管如此,还需要做更多的工作才能使这个游戏在柚子上玩。Project LondonRocket League

【对比】
在他的 Magnum Opus 上工作时,byte[] 还针对 和 的先前性能修复程序实施了解决方法。虽然性能修复应该是无回归的,因为它是缓冲区缓存中的一个错误,但许多游戏需要更改之前不太准确的行为。,并且所有游戏都有一些额外的闪烁,这些闪烁是在此拉取请求之后引入的,因此byte[]使该功能,悲观的刷新,可选,并且默认情况下禁用,因为大多数游戏不受影响。Super Mario GalaxySuper Mario SunshineMario + Rabbids Kingdom BattleSplatoon 2Super Smash Bros. Ultimate

最后,在本月的GPU更改列表中,german77以及Skyline模拟器的章程为某些游戏使用的视口旋转扩展添加了仿真。这些由具有扩展名的NVIDIA GPU支持,但不是AMD或英特尔GPU,因此一些游戏看起来会颠倒或翻转。像、 、 和许多其他游戏现在可以在 AMD 和英特尔上玩!Street of Rage 4CelesteAxiom Verge
逆向攀岩(天琴)的新含义
【对比】
CPU、内核和文件系统仿真
对于仍在运行不支持的 Windows 版本的用户,我们有一些好消息!由于vladkosi进行了调查,梅里能够在快速记忆中实现所需的更改,以再次支持早于Windows 10版本1803的Windows版本。
虽然这对Windows 7团伙来说是个好消息,但它并没有改变我们对操作系统版本支持的立场:只有Linux,Windows 10版本1803和更新的版本受到官方支持。时间将告诉我们,在将来对Vulkan和内存管理进行更改后,与旧Windows版本的兼容性会发生什么变化,但就目前而言,它们的使用寿命更长。
但好消息并不止于此。以下是一些旨在帮助模组社区的更改!
过去,不允许向模组添加内联注释,因为我们以一种使它们不兼容的方式解析文本。Morph 现在分隔十六进制值字符串,允许模组制作者添加注释。例如:pchtxt
Before: here to here v v12345678 12345678 // comment ^ ^After: here to here
我们当前的文件系统仿真可以被认为是意大利面条式代码,因为在可用的信息较少时进行了旧的猜测,并且由不再为项目做出贡献的开发人员进行了拼凑。没有办法给它涂上糖衣,这是Morph一年多来一直在努力工作的主要原因,完全重写了当前的虚拟文件系统实现。Project Gaia
同时,可以做一些进一步的拼凑工作,以减少开发人员和模组制作者目前忍受的麻烦。例如,由一堆零填充,模组制作者更习惯于缩写形式,而不包括开头不相关的零。为了解决这个问题,byte[] 使用 fmt 解析构建 ID 字符串,以便在需要时动态添加所需的零。Build IDs
vonchenplus继续专注于改进 RetroArch 在 yuzu 中的体验,他发现在解析目录时递归计算文件大小会对性能产生负面影响,在这种情况下,当使用模拟器(在模拟器内)启动游戏时,这被视为“加载时间”。简单地忽略此信息是改善用户体验的好方法。请注意,此更改无助于在柚子上运行本机 Switch 游戏,它只会为 RetroArch 提供更快的加载时间。
用户界面更改
长期以来,人们一直在要求柚子的音量更大,而Maide做到了。现在,如果用户转到 ,他们可以将音量设置为200%,真正将其设置为11!Emulation > Configure… > Audio

不要吵醒你的邻居
要记住的是,某些游戏的音量已调整为它们正在使用的输出。例如,手持设备中的游戏可能比对接式游戏更响亮,因此不要给可怜的耳朵带来压力。
柚子的部分代码仍然基于Citra,甚至有些部分不再相关,或者多年来已经过时了。清理代码是任何项目中无聊但必要的部分,对于开源项目来说更是如此,yuzu也不例外。在早期非常有用的一个功能是加载ELF二进制文件。在早期,开发人员不是处理XCI和NSP转储,而是转储并提取游戏的整个文件结构,并直接加载ELF二进制文件,其方式类似于用户在Windows上打开.exe文件以加载程序的方式。
几年后,这个功能不仅因优雅而玷污,而且还停止了工作。由于它目前不是优先级,并且可能导致用户混淆,因此byte[]将其从“文件”下拉列表中删除。
亚洲语言 Windows 用户注意到游戏列表中的“大小”列和“速度百分比”设置显示的字符非常奇怪。

外星人号码
当然,这是不可接受的,因此Docteh在Windows中实施了必要的更改以解决此问题。

好多了
添加到仅限亚洲语言的 UI 错误列表中,如果用户以中文启动 yuzu,然后切换到英语,则底部的筛选器栏和顶部的游戏列表列将保持未翻译状态,拒绝切换。强迫Qt重新翻译这些对象解决了这个问题,让多克特很高兴。
Docteh 还实现了更多的 UI 修复,清理了“关于”对话框,并使直接连接 UI 中的默认端口号忽略转换。
【对比】
柚子 关于对话框更改
用户抱怨控制器配置文件下拉列表的字符限制太短,抑制了他们的创造力。german77 加强了字符限制。
输入改进
带有控制器的UI导航是柚子的最新补充,因此还有改进的余地。例如,用户报告说,如果启用了“在游戏启动时提示用户”功能,则控制器输入将能够导航选项并启动游戏,但无法实际更改配置文件或取消启动过程。新人琼斯英国用一点Qt魔术解决了这两个问题。谢谢!
有些用户更喜欢依赖 DS4Windows,而不是柚子对游戏控制器的原生支持。虽然这有一个很好的理由,但这是让单个应用程序处理XInput仿真的简单方法,但它也可能导致 german77 发现的一些有趣问题。例如,当前版本的 DS4Windows 无法处理两个后续的振动命令,从而产生(取决于您询问的人)不舒服的持续振动。为了解决这个问题,german77添加了一个小的延迟,以便应用程序不会跳过停止信号。
在一个更丰富多彩的话题上,并打算修复一个错误,german77花了很多时间烹饪如何正确模拟控制器颜色,还有一个修复电池电量图标的配菜!Mario Party Superstars

导航到并前往城镇!Emulation > Configure… > Controls > Advanced
为了结束这一部分,我们必须承认我们这边的哎呀。随着红外摄像机支持的初始实施,输出被保存到存储中。每个视频帧作为单独的图像文件...这导致大量文件被写入磁盘,使使用文件管理器进行导航变得痛苦,并占用了大量的可用存储空间。哎呀。german77迅速采取行动,并将输出移动到缓冲区。
如果任何用户受此影响并且无法删除文件,请打开命令提示符或终端,导航到“图片”文件夹,然后运行以一次清除所有文件。del IMG_00*.jpg
硬件部分英特尔 ARC 加入乐趣
我们收到的信息显示,A380 英特尔 GPU 的早期采用者在使用 Vulkan 运行游戏时遇到问题。由于此硬件尚未在全球范围内提供,因此我们的开发人员和测试人员不容易掌握它,因此请在我们的GitHub中发布问题,包括日志文件,或者在我们的论坛或Discord服务器上与我们联系。如果需要,我们会要求您提供更多信息,以找到原因。为早期采用者的困境而欢呼。
利用亮起的阿姆德
使用 AMD GPU 的用户报告说,特定的点总是会导致顶点爆炸。解决此问题的方法是使用OpenGL和2X分辨率乘数运行游戏,越过该区域,保存并切换到Vulkan。Xenoblade Chronicles 3
为什么使用奇怪的特定2X分辨率乘数?出于同样的原因,我们上个月的性能图表没有关于这个新的OpenGL驱动程序的结果,它会导致与驱动程序相关的崩溃。2X可解决此崩溃问题,并且AMD已正确收到此问题的警报。到目前为止,他们还没有消息,但是由于我们访问了他们的Vanguard beta测试程序,因此一旦修复程序在公共驱动程序中发布,我们就会告诉您。现在,在 OpenGL 下,游戏的速度并没有慢多少,但是在 Vulkan 下,着色器的卡顿效果总是会明显好转。Xenoblade Chronicles 2
我们建议将更多模拟器开发人员应用于 Vanguard,因为内置驱动程序 bug 报告工具的间接方法对于控制台模拟器的特定需求并不理想。
英伟达让我们自己去计算
我们确认,当前 516.XX 系列驱动程序影响 Maxwell 和 Pascal GPU 的崩溃至少有很大一部分是由计算着色器中的一些驱动程序更改引起的,这与我们基于计算着色器的 ASTC 纹理解码器产生共鸣。作为解决方案,为了避免将来出现此问题,因为这不是NVIDIA驱动程序更新第一次破坏它,我们正在考虑切换到由Morph开发的多线程CPU解码器。
KOEI游戏上阴影闪烁的原因仍在调查中。
未来项目
合并的延迟不仅会影响主线用户,还会阻碍开发进度。在另一个地狱冻结的例子中(没有人期望AMD修复OpenGL),所有的人的NVIDIA都开源了一些文档(当然,这是我们正在谈论的NVIDIA,他们是如此的封闭源代码,他们甚至没有得到新鲜空气)。这包括 Maxwell 3D 寄存器的专有名称、全新的寄存器,甚至是以前未知的值。由于这个新的官方信息,Maide一直在检查,替换和清理大量代码,但是此更改的合并将不得不等待。预计不会对此进行任何游戏修复,但是清理和易于理解是非常值得的。Project Y.F.C.
一个有趣的实验将使一些带宽匮乏的游戏(如,和等)中的所有用户受益,那就是增加Vulkan的流缓冲区大小的大小。测试显示,即使没有 ReBAR 支持,性能也会提高 10-50%,具体取决于系统,这会将缓冲区大小限制为 256MB。访问所有可用的VRAM为更高的增益提供了可能性!The Legend of Zelda: Breath of the WildXenoblade Chronicles 3SHIN MEGAMI TENSEI V
【对比】
在作者的唠叨过多之后,byte[]实现了一个草稿,以便使用滑块轻松测试该功能,但最终目标是动态管理它,因此不要指望在官方版本中将此功能视为UI选项。
在为《Tobi》做最后的润色时,他一点也不被动:Project London
添加代理套接字数据包的功能,其中包括具有本地网络支持的自定义房间,包括 LAN 游戏,而不仅仅是 LDN。
存根并添加一些必需的数据类型。
对正在进行的聊天室功能的改进。

哦!我们怎么会差点忘记呢?,LDN支持,现在终于出来了!有关详细信息,请参阅专用文章和多人游戏指南。我们将在下一份进度报告中回顾该版本。Project London
这就是所有的人!非常感谢您坚持与我们在一起,我希望下次再见!
特别感谢神秘作家B对本文的帮助!

悬念咬我


IP属地:湖北本楼含有高级字体1楼2022-09-19 13:59回复
    原文链接;https://yuzu-emu.org/entry/yuzu-progress-report-aug-2022/


    IP属地:湖北2楼2022-09-21 00:08
    回复