惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
有赞技术团队
有赞技术团队
www.infosecurity-magazine.com
www.infosecurity-magazine.com
大猫的无限游戏
大猫的无限游戏
爱范儿
爱范儿
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threatpost
V
Visual Studio Blog
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - Franky
人人都是产品经理
人人都是产品经理
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
The Cloudflare Blog
N
News and Events Feed by Topic
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
AWS News Blog
AWS News Blog
S
SegmentFault 最新的问题
T
Tailwind CSS Blog
Hugging Face - Blog
Hugging Face - Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Spread Privacy
Spread Privacy
J
Java Code Geeks
博客园 - 聂微东
T
Tor Project blog
宝玉的分享
宝玉的分享
博客园 - 叶小钗
Webroot Blog
Webroot Blog
博客园 - 【当耐特】
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
H
Heimdal Security Blog
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
I
InfoQ
Security Latest
Security Latest
Martin Fowler
Martin Fowler
Hacker News: Ask HN
Hacker News: Ask HN
P
Privacy International News Feed
C
CERT Recently Published Vulnerability Notes
Latest news
Latest news
雷峰网
雷峰网
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cisco Blogs
H
Help Net Security
L
LINUX DO - 最新话题
L
LINUX DO - 热门话题

机核

游戏性能旗舰最强之选,一加 Ace 6 至尊版国补到手价2999元起 6元钱自己更换电动车刹车线 《生化危机9:安魂曲》编剧Haris Orkin专访 摸金游戏?音乐游戏!暗区新赛季这把能弹的琴有何来历? 好评国产武侠SRPG《息风谷战略》免费DLC现已推出 | 机核 GCORES 碎片 《生化危机:安魂曲》将于5月实装首个免费更新内容 | 机核 GCORES 新锐东方游戏,谱写世界新章! 沉浸式恋爱视觉小说游戏《心象演算》免费试玩版现已正式上线 | 机核 GCORES 互动影游《代号三国:龙起》上线!穿越三国与曹操并肩、与佳人同行、与权谋博弈! 《老头收集梦想生活》,游戏酒桌会6,录音笔VOL.689 | 机核 GCORES 破界·共生——《白日梦:无限世界》五大核心游戏特点解析 价格已到史低,锐龙5 9600X/锐龙7 9700X正适合抄底 时间循环之旅即刻启程!《归环》一周目测试今日开启 热门在线韩游变魂游,洛奇衍生作能否打破“花瓶”魔咒? LG UltraGear evo 全新高端显示器系列:当“5K”遇见“AI”,不止强大,更懂热爱 反套路三国互动影游《代号三国:龙起》今日上线! 愿望单登记人数突破10万!备受瞩目的“女儿养成游戏” 《梦幻魔法公主》今日于Steam平台上线!限时八折优惠中 《黑神话:悟空》全球音乐会2026巡演将于4月29日12时开票 | 机核 GCORES “Snowguelike”生存肉鸽挖矿新作《蛙穿雪境》公布发售日期,5月7日正式上线 | 机核 GCORES 重塑移动办公、AI创作新境!全新华硕灵耀Air系列、ProArt 骁龙版震撼首发,创芯未来 均分88:《Saros》媒体评分汇总 | 机核 GCORES 上海烛龙公布合作遗迹探险游戏《吉时已到》首支预告片 | 机核 GCORES 首个独立游戏《萝薇日记》已上线Steam! 烛龙新IP《吉时已到》首曝,打造国内首款中式合作遗迹探险游戏 喜加一:《暗黑破坏神Ⅳ》国服现已开启限时免费领取本体活动 | 机核 GCORES 新版《生化危机》电影定于9月18日上映,官方网站现已上线 | 机核 GCORES 《冲就完事模拟器2》“星球大战”联动DLC正式宣布 | 机核 GCORES SteamController将于5月4日发售,售价99美元 | 机核 GCORES 事已至此,内存这么用也算省钱了,“2+1”非对称双通道应用实测 505游戏母公司现已收购《明末:渊虚之羽》IP | 机核 GCORES 基石 手动杂谈12|格斗游戏也能讲好故事 | 机核 GCORES I Love You Mr Snowball 我的向日葵小姐 会比GTA6先发售吗?最硬核的生存游戏《DAYZ》要推新DLC了 周记02:在2026遇到新怪谈 什么硬件,能让游戏Loading界面快速消失? | 机核 GCORES GadioSpec《百年风云世界杯》免费试听集 | 机核 GCORES 百年风云世界杯Vol.1丨足球崛起 | 机核 GCORES 100年前,一群人提前替我们经历了AI恐惧 | 机核 GCORES 《呼啸山庄》2026 ——一辆当代艺术的大卡车冲撞了我的大脑 手游《天穗之咲稻姬:日之香巡灵传》宣布将于7月27日停服 | 机核 GCORES 集结梦之队,征战世界杯,《最佳球会ONLINE》上线Steam 山水绝景随心拼 休闲建造游戏《千里山河录》Steam商店页公开 巫师帽、法袍、魔杖,为什么它们是影视、游戏里的法师必备三件套? 《无鞘信使》-第一章 复古风自动战斗肉鸽《终结之终结》Steam商店页面现已上线 电脑里有一款不破不立的MMO,录音笔VOL.688 | 机核 GCORES 《生化危机》30周年纪念周边发售,这次是真的“保护伞” 可靠耐用+AI全能,惠普战66 2025锐龙版深度体验 《时之书:无尽终章》关卡“大航海时代”全球首次公开 经典名作《乌龙派出所》改编经营模拟游戏《乌龙派出所~阿两的商店街物语~》正式宣布支持简体中文 明日开冲,解锁反套路三国互动影游《代号三国:龙起》即将上线 独立游戏《这是我的宝藏!》已发售~ 降低难度不是唯一解,无压力死亡也是好体验 Netflix官宣新片《普通人》:讲述韩国现代史上的权力风暴 《生化危机:安魂曲》全球销量现已突破700万份 《绝地鸭卫》PC版5月15日正式发售 亡妻回忆录?女性向情感叙事游戏《S-mail》现已正式发售 全新酷黑风格,酷睿Ultra 200S PLUS的高性价比搭档!七彩虹BATTLE-AX B860M-PLUS S WIFI7 V20 超级黑刃主板测评 胖狗 索尼发布了港台地区PS5产品价格调整公告,将于5月1日起实施 二次元怪猎+性感美女!《碧蓝幻想:无尽黄昏》开启Beta公测 这款怪谈类型中式恐怖游戏居然更新了?! 《百日战纪 -最终防卫学园-》改编漫画将于今年冬季开启连载 《如被附身,请致电我们》:匈牙利黑色幽默恐怖小说 《竹屿山房杂部卷五》(译文) 大树 超越引擎 摄影分享丨四月 碎片杂记vol.72 当老式FPS与老式动画技术碰撞出新时代的火花—《神探杰克鼠》 想做独游,如何避免首个项目就褒姒? 在线多人动作游戏《OCTOPinbs》将于5月12日上线Steam! 《酒鬼女神的酒诡》确定将于2026年登陆Steam 《CRYMELIGHT》将于11月5日(周四)正式发售!4月25日开始预购! 钢铁国度MKI部落Evolution,蛮兵部分 【钢铁国度】部落-Primal MK I,蛮兵部分 这是一个高中生用ai跑出来的作品,我自称他为物理神话 钢铁国度MKI部落Metamorphosis,蛮兵部分上 钢铁国度MKI部落Metamorphosis,蛮兵部分下 INDIE Live Expo于4月25日举办:首发9款新作,超200款独立游戏亮相 暗黑卡牌策略新作《魔忌:穷鼠啮狸》发布全新中文试玩版和发售预告片,4月30日正式上线在即 战锤40K长篇小说:变节者・苦难主宰(三)(全书完) 战锤40K长篇小说:变节者・苦难主宰(二) 战锤40K长篇小说:变节者・苦难主宰(一) 英语语言学习丨短语专题1:短语的特点 唯一的EVE战争 【少前同人】【M200】战术人形会梦见音乐会吗 【昏迷3】即将发售,前作主角悉数到场!“恶灵”宋老师化身可操控角色 业内人士:游戏公司“十有八九”使用生成式AI,包括卡普空 欢庆一周年:《光与影:33号远征队》全新纪念艺术图、超值折扣与免费更新同步上线 才刚刚开始呢 【抽奖】《星际卡车司机》推出免费大型更新,四折平史低折扣进行中 四人合作FPS游戏《佣兵猎手》抢先体验重大更新 1 现已上线 Raw Fury新作《深馅地牢 Deep Dish Dungeon》将于今秋加入 XGP 塔防幸存者游戏《魔怪来袭》推出首个 DLC 《饿狼传说:群狼之城》1周年纪念!新DLC“沃尔夫冈·克劳萨”今日参战 猫狗相伴 欢乐闯关 双人合作平台跳跃游戏《猫狗同行》上线Steam商店页 《同行:月球逃脱》(Together: Moon Escape)上线将于明日上线Steam
GDC文章粗读——看看《Hi-Fi RUSH》的卡通渲染(上)
Hakumen · 2024-05-17 · via 机核

前言

在我写上一篇介绍ArcSystemWorks的卡通渲染的文章时,还没有微软解散Tango工作室的这个新闻。虽然我个人没有玩过这个游戏,但我也很欣赏他们能做出这款小而美的游戏——这也是微软去年一众拉跨作品中少数意料之外的亮点了。

我在GDC Vault看到这篇今年3月的分享可以下载阅读的时候,几乎就是同一周看到了关于Tango被关闭的新闻。对于微软这个无论经济还是风评都吃亏的决策,网上的讨论已经很多了,我除了遗憾更多的是不意外,毕竟大公司近些年的草台程度已经越来越夸张了,而财报会议之后背锅的往往就是靠拉报表排序来选择。

回到这篇分享,它或许内容编排上略微有些瑕疵,但总的来说是富有热情且干货满满的——大部分不是最先进的技术,但是确实都是很踏实的细节。一方面我能感受到分享人自豪地掏干货的那种热诚,同时结合近况我也能感受非常遗憾;无论如何,希望粗读这篇分享能带大家更了解这个游戏和这个团队,毕竟人活着就还有希望。

*在通读了整个分享原文后,我计划用两篇文章覆盖原文的大约80%以上的内容,中间顺序可能会略微调整一下(除了略去开头的介绍部分外,主要是把面部阴影这一节提前了)。后面的内容还是以翻译原文为主,打星号的则是我自己的备注和评论;另外就是尽管以分析渲染为主,但提到虚幻引擎中的一些细节或许没那么准确,如有不对欢迎指正。

1 整体的延迟渲染方案

*主机游戏一般都是用延迟渲染作为主要渲染管线的,他们在力所能及的几个方面做了引擎定制化开发。PPT中也大量使用了游戏中角色来模拟发言,可见他们非常喜爱自己做的这款游戏。

*这部分我调整了一下原PPT的顺序并做了抽选和精简,希望能提高易读性。

——由于我们把性能和图形质量视为最优先的项,开发过程中一个挥之不去的恐惧(原文是nagging fear)就是人们会对我们的技术力感到失望。最终,无论是游戏的视觉还是技术上都收到了好评,这对我们是一个很好的结果。

——平衡性能、分辨率和渲染特性(的丰富程度)是很难的。作为图形工程师我们往往会对新的渲染技术感到兴奋,也想要开发出更好的图形技术,不过我们游戏最强调的还是性能与画面质量,为此在选择采用哪些渲染特性时我们必须谨慎考虑。

*英文原文中有graphics和image quality这两个词,在这个语境下前者我翻译成了图形技术。图形技术有时候等于更好的画面,有时候则不是。(原文是... want great graphics, but our game emphasized performance and image quality)

*可以看到自定义风格化渲染主要的区别就是对阴影的处理,其次才是颜色等

*提到延迟渲染就离不开GBuffer,如果还不清楚是啥的可以看看我之前的文章或是网上介绍延迟渲染的资料。可以简单理解成这些帧缓冲都是后续计算光照的数据提供者,针对这部分内容光照不需要额外考虑其它空间中的几何信息了。

*最基础的PBR不透明渲染需要3维的法线(GBufferA中的RGB)、3维的颜色(GBufferC中的RGB)、2维的粗糙度金属度(或高光程度)就足够了,上面的图1中可以看到引擎中和他们做的一些补充与自定义部分(标了Customize的)。

*这张图列举了一些其它的帧缓冲内容如深度、AO等。其中大部分内容后面的章节会分析到。

*这些特性也可以结合前一张帧缓冲来看(大部分会被渲染到一张帧缓冲上)。

*很多特性之前我的文章里也介绍过,例如ProbeGI对应光探针采样和球谐光照技术,SSR是屏幕空间反射的缩写,StaticShadowMap是烘焙的阴影贴图,AOVolume是一种能动态算出AO的策略,SSAO是屏幕空间的AO等。后面和下一篇文章会有章节逐一分析。

*可以感受到引擎中的全局光照就像拼零件一样,把各种高性能高近似度的技术一个一个拼接起来。

——另一件我们想提升的事项是,UE4的后处理是逐摄像机添加并计算的。

——我们感觉这限制得太死了,因为我们想为同一个摄像机渲染的不同区域设置不同的颜色和风格(通过后处理区域)。

*这里解释了逐体积做后处理的思路——基于延迟渲染的GBuffer和DepthBuffer,可以判断着色点是否在体积包围盒的范围内,并添加相应的后处理渲染。

*图中从左到右大概是:深度缓冲、阴影深度、GBuffer、AO和胶囊阴影等、全局光照、动态屏幕空间阴影、静态阴影贴图、屏幕空间反射、Decal灯、后处理勾线。

*标黄的是经过自定义修改的部分。可以看到比人物难度更大的是环境的卡通化渲染,几乎所有光照和阴影都需要做深度的定制化修改。

2 人物面部阴影

*上一篇文章中提到了面部阴影轮廓的问题,只依靠手调法线肯定是不靠谱的。这里很快会就介绍一种目前比较主流的方案。

——Hi-Fi RUSH中角色的自阴影是cel风格着色。阴影和非阴影区域有着清晰的分界线,并且阴影区域会被指定一个特定的颜色。由于有这种阴影风格,视觉质量就取决于阴影的轮廓和颜色表现。

——Hi-Fi RUSH的艺术理念是sharp, clean和colorful,所以阴影也需要始终保持清晰的轮廓。

*这部分理念如果看了上一篇关于罪恶装备卡通渲染的文章,应该能看出其中的一致性。

*除了脸部,角色其它部位的着色都是通过阈值判断法线与光线的夹角(的点乘)来计算的。上一篇也介绍过一样的内容,不过写成step函数会比if有更好的性能。

*对于脸部,最初的方案是调整面部法线。下面就列举了这一方案的一些问题:

*可以看出对于模型视角需要自由转动、或者模型可变化的情况,只调法线都是不适用的了。

——为解决这一问题,我们采用了一张类似高度图(heightmap)的纹理。在内部我们把这个纹理称为阈值纹理(threshold map)。后续我会解释如何制作它,不过让我们先解释一下如何用它来计算阴影。

——首先,计算面部朝向与光线方向的水平分量的夹角。这里水平分量指面部骨骼坐标系中相应的水平分量。最终计算结果为夹角除以Pi之后归一化的值。(注意这里不是用的点乘结果了)

——然后,通过采样阈值纹理,比对上一步计算得到的值就能判断着色点是否在阴影中。

*这也是目前卡通渲染游戏中主要的面部阴影方案了。另外需要注意这个纹理是有左右方向的。

*这样得到的阴影是水平阶段变化的(符合预期)。光线从左侧入射时(对于图中的纹理方向),需要水平翻转阈值纹理。

*这一方案引用自2018年UnitySeoul大会上米哈游贺甲的分享。(说句题外话,贺甲在原神后不久就离开米哈游了,现在也已经不在腾讯了)

*到这里基本就揭秘了目前卡通渲染主流的面部阴影渲染方案。后续只要是想让颜色看起来很“平”的,基本还是这个方案。

3 环境的卡通风格着色

*这部分主要的干货就是有向距离函数(SDF——Signed Distance Function)的应用。

*光照的视觉是通过网点来表现,阴影是通过填充线来表现。熟悉漫画的会发现这是日漫里常用的明暗填充方式。(这里Halftone的翻译直接采用了漫画绘制中的网点,原词本身也是形容一种网格板的结构)

*网点主要运用在:(基于解析算法的)雾,Bloom光晕效果,探针全局光照,屏幕空间反射。

*填充线主要运用在:体积AO阴影,静态阴影纹理,玩家动态阴影纹理,屏幕空间AO。

*下面进入干货部分,主要是SDF用于纹理渲染和把生成的纹理“贴”到场景:

1)SDF用于纹理渲染:

*SDF可以简单理解为对空间中的任何一个点都可以描述它的一种或多种位置关系(例如距离边缘的距离、和其它点的最小距离等)。在这个案例中比较简单,就是一组平铺的0到1纹理坐标映射。

*对于其中一格,首先通过其纹理坐标(左图)、点的颜色、背景颜色、点的半径就可以绘制出一个点。(贴出来的代码页比较简单了,延中心点做了个距离比较)

*在之前的一步基础上增加了长宽比修正平铺,标蓝的是增加的内容。

*整个纹理旋转45度即可。到这一步已经实现了预期效果。

*后面还补充了在公式中如何做抗锯齿计算的内容:

*这里就是上次提到过的smoothstep的作用,阈值在某两个值之间时会有一个从0到1的过渡。通过这个函数可以把边缘渲染成半透渐变的。

*这里还提到如何计算这个宽度的问题,就不展开了,有兴趣可以去看PPT中引用的2012年的文章。

2)把生成的纹理“贴”到场景

——对于类似Bloom和体积雾等效果,我们使用屏幕空间的纹理坐标。(默认会是物体空间转到世界空间的纹理坐标。体积雾可以参考上图的射灯范围)

——我们没有做任何复杂的事,演示的shader已经很接近我们实际在游戏中渲染的屏幕空间的网点了。

*使用屏幕空间纹理坐标主要是为了Bloom和体积雾的网点始终是斜45的。

——屏幕空间的纹理坐标对于不需要表现深度的特性,例如Bloom和体积雾有很好的效果,但在特定的多边形表面上,我们希望网点能看起来像贴在表面上而不是朝向摄像机。因此我们也需要世界空间的纹理坐标。

——为计算世界空间的纹理坐标,我们使用GBuffer中的世界空间法线去计算多表形表面的主要轴(dominant axis),以便(将网点等)投影到对应轴的平面上。

——例如,如果Z值是世界空间法线中的最大值,我们就会选择投影到xy平面上,这意味着我们会选择缩放后的世界空间xy坐标作为投影的纹理坐标。

——对于有穿插的平面,我们没有采用三平面映射(triplanar mapping,是一种在空间中的纹理映射方案)。我们尝试过使用这个渲染技术,但混合的结果过于明显,所以我们选择了简单投射到一个平面上;由于我也没有因为网点和线在平面交叉处被切断的效果被抱怨,所以最终我们保留了这种简化的方案。

——由于我们程序化地生成了这些网点和线,因此我们可以轻松地基于场景光照条件来调整它们的视觉表现。我们使用场景的光照强度(作为参数)来调整网点和填充线的尺寸。

——在这一页的图中,全局光照的网点在靠近光源处更大,在远离光源处更小。

——通过这种简单的技术我们可以用(网点尺寸的)渐变表现出光线延距离衰减的视觉效果,这也使整体的场景视觉更倾向于计算机生成的样式(look more computer generated)。

*网点和填充线后续会作为光照和阴影在各处的基本样式,但其计算方式这里都介绍完了。

最后对比一下卡通风格的光影未开启和开启时的视觉效果:

结语

GDC和SIGGRAPH大家略有了解可能会知道,后者的分享内容都是有行业创新性的论文级别的内容,所以干货很多;而GDC的分享很多其实没那么先锋,有些甚至没有展示其有技术含量的部分,很多分享都做成了开发总览或游戏优点展示。

相比起来Tango的这篇分享篇幅很长细节很多。里面提到的很多特性虽然不是最先进的技术方案,但确实深入细节知无不言,能感受到他们在做分享时的自信与自豪。(在知道结局后就更对其中的一些内容表示遗憾,有一种转喜为悲的感觉)

下周预计会更Tango这篇分享的下半部分,讲讲卡通风格的光源、各种阴影的处理与全局光照。

最后是资料链接: