中微子
我上一次写Neutrino时是直接渲染到屏幕上,这与我在使用低分辨率,基于像素的游戏时的外观并不完全一样。 因此,上周我花了一天的时间坐下来完成渲染路径,目的是对过程进行一些控制,并接近CRT的“光辉”。
最后,您可能已经阅读了一个相当标准的过程。
- 帕累托游戏
- ORB Beta:一款真正困难且具有教育意义的益智类街机游戏。
- 6个有用的提示和技巧,可以完全控制您的Android设备(无挂机问题)
- 我们十年的游戏机生涯发生了什么?
- 开发人员日志— AVANT GARDE INVESTIGATE-#0.002 v1.06
阶段1:将背景磁贴图和在当前刻度内在VBO中收集的所有精灵渲染为480×270像素的纹理。 我之所以选择此尺寸,是因为它是1080p屏幕的四分之一,因此可以很好地缩放到我的4k显示器,但又不会太笨拙,无法在屏幕上留下像素的大小。
Stage2:然后,通过高通“滤镜”将在第1阶段中生成的纹理渲染为第二个480×270纹理。 Atm此滤镜检查像素亮度,以正常方式渲染高于某个亮度的任何像素,并以其自身的某个可定义的较小倍数渲染低于该级别的任何像素。 我可以完全丢弃这些失败的像素,但是我发现当出现斜坡时效果看起来更好。
Stage3:来自阶段2的纹理在两次遍历中被模糊,一次是水平的,一次是垂直的。 可以在运行时定义其分辨率,但是我发现我可以通过模糊来自阶段2的低分辨率纹理来获得良好的结果,然后在绘制模糊结果时获得双线性滤波的好处, ,作为最终组合的一部分
Stage4:我使用第1阶段的低分辨率纹理在屏幕上绘制一个全屏四边形。这是用一个简单的“ scanline”着色器渲染的,它检查像素的输出位置:每隔一行渲染一次”黑暗”,用于扫描线。 对于“正常”线,着色器检查像素,将第一个偏置为红色,将第二个偏置为绿色,将第三个偏置为蓝色,将第四个偏置为“暗”。 之后,重新绘制相同的四边形,但是使用第4遍中的模糊纹理,同样,我可以控制此盛开纹理的贡献量……
这可能是扫描线效果的最简单形式。 它不是在模拟PAL或NTSC屏幕。 没有磷光体的持久性-尽管我可能会通过使用模糊的“ bloom”纹理作为累加器在一定程度上加以补充,并且没有桶形移位器来模拟旧屏幕的曲线。
我确实看过Tim Lottes CRT像素着色器(https://www.shadertoy.com/view/XsjSzR),但是它需要大量调整才能在X1的Intel GPU上良好运行。 而且还有Super Win The Game(http://www.gamasutra.com/blogs/KylePittman/20150420/241442/CRT_Simulation_in_Super_Win_the_Game.php)中的Kyle PIttman着色器,我也对此予以了折扣。
老实说,我不会选择这两种外观。 我真正关心的只是在黑暗的房间里盯着拱廊的感觉,那里的白色像素太白了,某些颜色在眼球上留下了些许色彩。 页面顶部的屏幕快照是一个相当精简的示例,它显示了我最终的位置,因为,如果我进行了一些设置,我可以去一些疯狂的地方。

所有这些对于播放器都是可选的。 我知道有些人讨厌扫描线-为什么要模仿破烂的技术? -但我可能会设置一些不同的预设供您选择,因此具有一定年份的我们这些人会感到宾至如归。
(我很想保留所有可用的设置,但这可能意味着每次我在网上看到游戏的屏幕截图时,都会讨厌某些疯狂的设置,我讨厌…)
可能的待办事项 :在此添加一些饱和度控件可能很方便。 也许还有一个颜色查询表,因此我可以在Affinty Photo中设置曲线并将其烘焙到最终输出中?
下一场比赛
我很兴奋。 希望能尽快展示更多。 😉