琵琶行论坛

 找回密码
 注册
每日签到论坛FTP使用教学领取红包(开放!)论坛FTP搜索引擎
查看: 4928|回复: 9

[讨论] SS模拟精度效能研究

[复制链接]

签到天数: 167 天

[LV.7]常住居民III

发表于 2020-10-13 20:14:08 | 显示全部楼层 |阅读模式
本帖最后由 红莲火焰 于 2020-11-12 15:42 编辑

Kronos 2.1.2进度报告(Sega Saturn模拟器)
https://www.libretro.com/index.p ... ga-saturn-emulator/

OpenGL CS视频渲染器
土星是野兽,它有8个处理器,其中有2个自定义图形处理器VDP1和VDP2。VDP2处理背景,VDP1处理精灵、纹理和多边形。

VDP1是每行绘制一条“四边形”线,其基本思想是沿水平边插值端点,然后在这些端点之间绘制纹理线。它必须在斜率改变的地方用一个额外的像素画线,所以所有的像素都有一个相邻的左、右、上或下。他们这样做是为了防止线之间的空隙。

像OpenGL这样的现代图形api不知道如何做到这一点,因为它的渲染管道是基于三角形几何体的,所以基本上它不能再现VDP1的行为。有一些技巧,比如细化,但最终它们只是针对特定问题的解决方案,而不是针对这一问题的所有解决方案。不过,这里有一些好消息:在OpenGL 4.3中,引入了一个名为“计算着色器”的新功能,您可能已经通过Flycast的“顺序无关透明度”(order independent transparency)或N64的“并行”(parallel)中听说过它,这个新组件为OpenGL提供了许多灵活性,并允许实现按行渲染四边形的例程。这就是这个渲染器的目的:精确地再现VDP1的行为。


让我们做一些比较,从头到尾,这些图像是从控制台,Mednafen /甲虫,Kronos(OpenGL CS渲染器),Kronos(旧的OpenGL渲染器,基于YabaSanshiro的)拍摄的。与这些VDP1行为相关的两件事值得注意:

道路边界:在控制台上,Mednafen和Kronos的新渲染器,如果放大,您会注意到它不是一条平滑的线,有点,这是准确的行为;最后一个屏幕虽然平滑线可能看起来更好,但实际上是不准确的。
到处都是孔:如果放大最后一个屏幕截图,您会注意到在山顶,后面的道路上到处都有一些孔,其他屏幕截图中不存在这些孔。
可以使用OpenGL渲染器解决这些漏洞,但最终最终您会在此过程中产生其他问题。直到最近,我们仍使用这种解决方法,但对于Sega Rally而言,它只是放大了道路边界上的点。

这种新渲染器的唯一已知缺点是,它将需要一个相当不错的GPU!

---------------------------------------------------------------

世嘉土星不做3D,而是做3D变形的2D精灵。 而土星模拟器从技术上讲,OpenGL可以做四边形,在OpenGL或D3D中将这些四边形绘制为实际的3D对象,硬件上是通过三角形模拟的四边形,但这样的全3D硬件渲染的精确图形会产生大量渲染错误和其它各种各样问题,并且无法再现土星可以做出许多奇怪的效果(比如“蝴蝶结四边形”)。主要是API的一个限制影响3D加速,老实说,它需要至少有OpenGL 4.3能力的GPU硬件来解决这些问题。

当主机硬件和PC硬件非常不同,并且PC硬件速度足够快,可以在软件中模拟主机硬件处理,一开始就这样做的有SSF。
不过,SSF的作者也使用了DX11 GPGPU加速,在GPU上运行Saturn模拟器。 虽然仍然无法获得更高的分辨率,但你的CPU会被完全释放。
---------------------------------------------------------------
测试不同SS模拟器的声音表现
https://tieba.baidu.com/p/6609996944?see_lz=1

之前TestVer版2018/01/03或更高版本的SSF有一个错误,即内置声源的DSP(混响效果)不起作用。
在SS实机上声音处理采用固定点运算,但SSF旧版默认单精度浮点运算,运行中声音处理会出现异常,程序不定时发生崩溃。由于浮点运算实际处理中会加大误差。这之后,作者从P版R10起对声源处理开始了修正,先将声音处理改为和实机相同的定点运算。

由于土星内置声源DSP(数字信号处理),在混响效果处理上使用了24位浮点运算,实机DSP环形缓冲区中写入的浮点数据是什么格式,世嘉是不公开的,模拟实机的DSP混响处理是个难题。

长久以来作者不清楚DSP混响效果计算的浮点数据(用于旋转滚动的坐标计算格式)。因此SSF在DSP环形缓冲区上没有实现带有所需使用的SCSP寄存器功能,无法正确播放直接访问环形缓冲区的软件声音。似乎世嘉在土星DSP内部使用了定点计算。

过去作者认为没有软件可以完成如此棘手的事情。直到近期才着力开始解决,经过仔细推导,得出了DSP环形缓冲区中写入的浮点数据格式,将此浮点地址转换为定点地址,用于旋转滚动(代表电流采样的正半周)的坐标计算。从R17开始,终于实现对土星DSP功能的完整模拟,作者认为现在的SSF声音听起来像一台真正的实机!

另外,从R12开始加入了XAudio2(音频动态库编程优化处理),借助系统音频底层API;XAudio2处理输出,实现更加清晰动态的数字立体声,因为XAudio2支持音频信号编程处理,信号是声音编程的基本单位,好比是图形中的像素。 处理信号的数字信号处理器 (DSP) 好比是游戏音频的像素着色器,经数字优化补偿后提高了力量感、临场感和清晰度,最大程度还原了SS原声源的层次与空间分布。

最后,谈一下Mednafen,作为多机种模拟器,核心在设计开发框架时要满足的,往往是一个需求类别(优先考虑的是抽象出软件最合理的设计,使得程序具有良好的可读性和扩展性,通常一开始写出的逻辑就为了以后的重用,多机种模拟器包含的许多通用性开发框架就是一步步抽象/埋坑/优化而来的,而不是具体到某个实机其硬件环境指标的需求,所以一定会考虑代码的复用性、组件的复用性、同一个功能对不同场景的复用性。有了复用的能力,才能够用更少的开发去满足更多场景的同类需求问题。

兼容多机种运行环境的软件平台,考虑到实现代码框架环境的通用性,复用性代码的堆砌比较多,为实现某个主机运行所需的兼容环境,比照实机硬件函数 (机制) 的取值精度一般比较低,直观表现在图像/声音效果的还原上,另外程序时钟周期数循环延时问题较ePSXe、SSF模拟PS、SS明显许多,而处理过程反而要占用更高的CPU资源,徒增功耗。还需要进一步修正和优化,以提升执行效率,降低CPU使用率。


签到天数: 262 天

[LV.8]以坛为家I

发表于 2020-10-13 23:04:53 | 显示全部楼层
呃 不明觉厉
回复 支持 反对

使用道具 举报

签到天数: 2 天

[LV.1]初来乍到

发表于 2020-10-14 11:20:12 | 显示全部楼层
Kronos 2.1.3测试过,游戏速度过慢,特别是使用2D滤镜后,帧数过低,没法玩,另外,就是一个加速后背景音乐也会跟着加速,当然主要就是第一个问题太过影响了,如果能解决的话,到是可以。
回复 支持 反对

使用道具 举报

签到天数: 167 天

[LV.7]常住居民III

 楼主| 发表于 2020-10-14 12:25:02 | 显示全部楼层
三种最佳土星模拟器模拟情况:
https://www.reddit.com/r/emulati ... tors_have_all_been/

回复 支持 反对

使用道具 举报

签到天数: 2 天

[LV.1]初来乍到

发表于 2020-10-14 15:54:32 | 显示全部楼层
红莲火焰 发表于 2020-10-14 12:25
三种最佳土星模拟器模拟情况:
https://www.reddit.com/r/emulation/comments/d4273z/the_three_best_satur ...

国内打不开
回复 支持 反对

使用道具 举报

签到天数: 122 天

[LV.7]常住居民III

发表于 2020-10-14 17:16:32 | 显示全部楼层
感觉Kronos 3D方面有前途,但是哑巴 和KRONOS对手柄支持都不好,如果把MEDSAT加上3D优化的话就无敌了
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-10-14 19:30:40 | 显示全部楼层
很久没有看到这个模拟器的消息了,一直在关心这个模拟器,希望越来越好~
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-10-14 20:29:27 | 显示全部楼层
感谢模拟器开发者和支持者的无私付出,我才能在手机上玩ss游戏!
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-10-15 12:34:24 | 显示全部楼层
我觉得土星不是野兽 连个半透明网格都处理的那么麻烦那么多限制,真不知道土星硬件的开发人员是怎么设计和验收的
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2020-10-15 22:19:34 | 显示全部楼层
ooooo 发表于 2020-10-15 12:34
我觉得土星不是野兽 连个半透明网格都处理的那么麻烦那么多限制,真不知道土星硬件的开发人员是怎么设计和 ...

马后炮了。当年连游戏要不要全面转向3D,3D游戏应该用什么技术去做更好都是未知的。大家都是在摸石头过河。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|琵琶行论坛 ( 赣ICP备12000882号 )

GMT+8, 2021-8-5 09:15 , Processed in 0.019529 second(s), 8 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表