文章插图
文章插图
【nds模拟器资源 NDS模拟器下载】模拟器中的 Filter 或 Shader 基本都是基于图像本身的 。一般来说模拟器不会提供与几何相关的 shader(32 位机以后会有少量这类 shader) 。也就是说,模拟器滤镜生成的图像都是在不清楚游戏本身运行逻辑的情况下,单纯对最终输出的图像进行变换 。因此这里用 Filter 远比用 Shader 来得更为精确 。不过因为 RetroArch 的滤镜系统将其称为 Shader,因此之后将不分辨该用词(shader = 滤镜 = filter) 。
以下将从抗锯齿滤镜、放大增强滤镜、效果滤镜和硬件仿真滤镜四个角度对模拟器常用滤镜进行介绍,并着重对现在应该如何模拟 CRT 进行说明 。
抗锯齿滤镜
对模拟器常见的 2D 游戏,抗锯齿滤镜基本没什么用,所以只是简单介绍一下 。
首先是为什么要抗锯齿 。大家知道时域采样往往要用规则采样 。时域采样在频域中相当于用狄拉克梳子卷积信号本身,如果被采样信号的带宽低于采样信号的奈奎斯特频率,就没问题,不然就会堆叠失真产生 aliasing(一维叫混叠,二维叫锯齿) 。在空间域中采样几何本身或者现实世界图片的时候,规则采样用得很少,因为很容易对周期性高频信号出现 aliasing 。人们通过局部改进分辨率、随机采样等等途径进行抗锯齿,就产生了各种 AA 算法 。
我们知道模拟器滤镜都是作用于屏幕空间(不是模拟器图形设置中的 AA 选项),和图形渲染不同:它往往是通过减少图像中的高频信号,而非增加采样频率或改变采样策略进行 AA 的 。是纯粹的初次采样完毕之后的空间域行为,不需要获知图形的几何信息 。
常用的屏幕空间 AA 就是 FXAA 了,其具体原理太过繁琐,可参考此贴: