A9VG电玩部落论坛

 找回密码
 注册
搜索
查看: 1444|回复: 9

[原创] 《新神》的像素风格和多图层渲染

[复制链接]

精华
0
帖子
66
威望
0 点
积分
67 点
种子
12 点
注册时间
2021-1-1
最后登录
2021-12-19
 楼主| 发表于 2021-2-20 12:53  ·  四川 | 显示全部楼层 |阅读模式
《新神》刚开始开发的时候,考虑到成本和能力限制,我决定做成 2D 像素风格游戏。不过,像素风格不代表容易或简陋,实际上可能比非像素还难做。现在的像素风格已经不是 FC 时代那种淳朴的像素风格了,比如 17 年 E3 上惊艳世界的《The Last Night》就用到了光照、反射、景深、体积光等现代 3D 游戏技术。虽然此游戏至今都没做完,但凭借优秀的美术已赚足了关注。

The Last Night
《The Last Night》给了我启发,我决定在像素风格基础上加入 PBR 光照,同时启用 HDR 渲染。渲染时使用原始分辨率,仅让物体像素化。这样一来,2D 物体就有了“厚度”感,简洁的像素配上光照也显得很精致。

但要实现这一点并不轻松。《新神》是双摇杆射击游戏,这意味着物体是可以旋转的。另外为了更好的相机控制,画面需要支持缩放。一般游戏实现旋转和缩放都不是问题,但像素游戏就麻烦了,因为像素图案可能变得边缘模糊、难以辨识。这与贴图的采样原理有关。

下左图是直接放大三倍的原始像素图,看起来没问题;将它旋转一定角度后就变成了下中图,这时我们发现它的像素轮廓变得杂乱;您可能发现这是因为 Point Filter Mode 的结果,于是换成了 Bilinear Filter Mode,结果就是下右图,虽然看不到杂乱的轮廓,但物体也变得模糊了,因为原图分辨率不足。

最直接的解决办法是,将原始图像放大几倍再渲染,但这会占用放大倍数的平方倍的显存,对工作流也会产生巨大影响。因此我没有这样做,我的做法是将像素图矢量化。在商店资源 Pixel Mesh Builder 的基础上,我加入了法线、自发光和平滑度的支持,并且将所有信息存储在一个 Mesh 上。在渲染时,开启 MSAA 即可产生既锐利又平滑的像素边缘,也可以不受限制地旋转和缩放了。


4 in 1
至此像素风格的技术问题基本解决了,但画面表现力仍然不足。对比《The Last Night》就可以发现,它的画面富有层次,并且还有虚化效果。于是,我决定加上更多的 2D 图层。

这方面很多 2D 游戏都做得不错,其中《Ori》系列给我留下了深刻的印象。之前看过一篇文章,《Ori》的开发者分享了他们的多图层实现方案。他们将不同的图层分别独立渲染然后混合起来,而不是放在一起渲染。

Ori and the Will of the Wisps
将不同图层分别独立渲染的好处是,可以分别设置每个图层的渲染质量、渲染缩放以及整体颜色系数,还可以将图层模糊以模拟镜头虚化。因为虚化的图层并不需要渲染的很清晰,因此分辨率不必太高。通过调节每一层相机的 Orthographic Size 即可控制渲染缩放,同时也让每个图层运动速度产生了差异,模拟出透视效果。整体颜色系数可以用来微调各层的亮度和颜色,甚至可以让前景半透明,以免挡住玩家视线。

在《新神》里,我通过改造 Unity 通用渲染管线实现了多图层渲染。这里有几个细节值得一提。

第一个是支持透明通道的模糊算法。比方说求两个颜色的平均色,正确结果应该是 (x.rgb*x.a+y.rgb*y.a)/(x.a+y.a)。细节不好解释,您可以自己推理一下看看。

然后是模糊半径。为了在不同分辨率的屏幕上保持镜头虚化程度一致,你需要实现一种分辨率无关的模糊。我做了一些近似处理,不同分辨率下看起来差异不大。

最后是半透明的渲染和混合。游戏的渲染机制决定,在透明 RT 图层上渲染,以及将 RT 图层混合起来都需要预乘 Alpha 通道,我肚子疼就不多作解释了。



如果您对《新神》感兴趣,请支持我们的众筹,谢谢:https://zhongchou.modian.com/item/104230.html

精华
0
帖子
680
威望
0 点
积分
739 点
种子
16 点
注册时间
2012-2-28
最后登录
2024-3-26
发表于 2021-2-20 14:23  ·  上海 | 显示全部楼层
像素加PBR的效果看起来很棒啊,支持楼主

精华
0
帖子
66
威望
0 点
积分
67 点
种子
12 点
注册时间
2021-1-1
最后登录
2021-12-19
 楼主| 发表于 2021-2-21 14:21  ·  四川 | 显示全部楼层
lycqayzwy 发表于 2021-2-20 14:23
像素加PBR的效果看起来很棒啊,支持楼主

谢谢,喜欢的话来支持一下众筹吧!
该用户已被禁言

精华
0
帖子
3883
威望
0 点
积分
4348 点
种子
736 点
注册时间
2012-5-21
最后登录
2024-3-3
发表于 2021-2-21 15:06  ·  陕西 | 显示全部楼层
楼主想做这些渲染,高等数学和物理是不是得学得很好?

精华
0
帖子
66
威望
0 点
积分
67 点
种子
12 点
注册时间
2021-1-1
最后登录
2021-12-19
 楼主| 发表于 2021-2-23 00:31  ·  四川 | 显示全部楼层
路个的 发表于 2021-2-21 15:06
楼主想做这些渲染,高等数学和物理是不是得学得很好?

怎么说呢。。现在Unity这样的引擎已经为开发者做了很多事情,对高等数学不了解的话,也可能做出好效果;但深入一些的研发还是绕不开那些知识。但无论如何,编程等开发技术还是有必要深入学习研究的。
该用户已被禁言

精华
0
帖子
3883
威望
0 点
积分
4348 点
种子
736 点
注册时间
2012-5-21
最后登录
2024-3-3
发表于 2021-2-23 01:56  ·  陕西 | 显示全部楼层
余羊9119 发表于 2021-2-23 00:31
怎么说呢。。现在Unity这样的引擎已经为开发者做了很多事情,对高等数学不了解的话,也可能做出好效果; ...

感谢回复!
果然“计算机”的本质还是“计算”。
该用户已被禁言

精华
0
帖子
4503
威望
0 点
积分
4888 点
种子
439 点
注册时间
2012-3-24
最后登录
2024-3-19
发表于 2021-2-23 05:37  ·  江苏 | 显示全部楼层
是~~这样吗
发自A9VG iPhone客户端

精华
0
帖子
509
威望
0 点
积分
562 点
种子
52 点
注册时间
2013-8-27
最后登录
2023-11-8
发表于 2021-2-23 17:04  ·  广东 | 显示全部楼层
像素小飞机还挺帅

精华
0
帖子
66
威望
0 点
积分
67 点
种子
12 点
注册时间
2021-1-1
最后登录
2021-12-19
 楼主| 发表于 2021-2-27 16:41  ·  四川 | 显示全部楼层

就是那样的!

终结者

叛国者

精华
3
帖子
9014
威望
4 点
积分
9503 点
种子
144 点
注册时间
2004-3-12
最后登录
2024-5-7
发表于 2021-2-27 19:14  ·  上海 | 显示全部楼层
很乐于看到优秀像素游戏的发展,资金和技术的不足就用创意和技巧来弥补,做得好像素也可以很好玩,例如野比的生化危机或前阵子的渎神这种。

可惜lz此作是小飞机射击,个人实在无爱,属于不碰的类型,如果以后做arpg或act的时候再支持。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|A9VG电玩部落 川公网安备 51019002005286号

GMT+8, 2024-5-8 06:21 , Processed in 0.236833 second(s), 21 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部