成为全球游戏行业最具影响力的价值连接者
10月22日,虚幻引擎开发者技术交流大会(Unreal Fest Shanghai 2026)在上海开启。首日议程中,祖龙娱乐3D乙游新作《代号:神不言》两次“出场”,除了新曝光的实机技术演示PV,祖龙首席艺术家刘冰分享了游戏角色开发实践,女娲实验室技术负责人Qian Shen则分享了《代号:神不言》的移动端渲染的光影设计思路。
《代号:神不言》自2026年4月首曝起就收获了大量关注,其PV和实机技术演示在B站播放量早已超过1000万;英文版本在海外平台油管(YouTube)同样收获了千万播放;如今,游戏全球预约人数更突破了700万。
从《龙族幻想》《以闪亮之名》到《代号:神不言》,十余年间祖龙完成了从UE4到UE5的技术迭代,如今这份积累正被重投到女性向赛道。《代号:神不言》背后的VVANNA事业部,就是今年2月由工作室升级而来,并专门成立了引擎技术攻坚团队“女娲实验室”。
如今,祖龙在技术探索上又有了新的命题:真实不是终点,当写实成为技术底座之后,风格化还能做到哪一步?在两场分享中,祖龙给出了一些回答。
以下为两场分享实录:
超越写实:基于 MetaHuman 的美型风格化角色探索
大家好,我是刘冰,来自祖龙娱乐。在游戏角色的设计与制作中,我们一直在探索一个问题:在你身边的他,应该是怎样的。今天我想用《代号:神不言》这个项目的分享,介绍我们对美型风格化角色的探索。我们基于MetaHuman的高质量数字人框架,探索出了一套美型风格化角色的实现方案。接下来我会从几个层面,分享我们在角色上的技术实践。首先请看最新的游戏实机演示画面。
我们想做的,不是超写实,而是可信的美型风格化。MetaHuman 的技术底座为我们提供了可信的基础:高质量的技术面部结构与拓扑、成熟的 Fiz[Figure] Rig 优化生态、标准化且可扩展的角色生产框架,为可信的动态表现打下了技术基础。同时,我们希望构建一个真实感与审美相结合、符合美型比例的角色,弱化写实扫描带来的“扫描感”,建立大美型的写实向行动化表达,让角色拥有足以让用户相信的情绪与生命力。
我们要改变角色外观,同时保留 MetaHuman 的整套动画体系,兼顾静态美型与动态自然,让同一技术框架可以支持不同的角色风格,让风格化角色在运动中依然成立。
如前面视频所示,默认的 MetaHuman 框架与我们的目标角色设计之间存在冲突。
第一是比例重构。真实的结构并不是每一幅美型画面的终点,角色其实只是起点,而不是答案。第二是表情的取舍。肌肉和褶皱越真实,不一定越符合角色的审美;有些结构我们需要主动弱化,比如角色法令纹的处理。
第三是动态效果的检验。足够漂亮,不代表在对白和大动作中依然成立。角色的美,要经得住整个运动过程的检验。我们的目标,是让用户感受到“在你身边的他,就应该是这个样子”。
基于现有框架,《代号:神不言》做了四个层面的扩展:造型重构、表情重构、渲染重构,以及基于 RBF 驱动的服装联动。
第一层,造型重构。我们改变面部基础,包括分化面部比例、五官重新塑形、调整眼球与眼睑的关系、嘴唇与口腔结构。
第二层,表情重构。为第二套表现形态形成自己角色SR Layer;比如我们对MetaHuman的三百五十一个表情节点做了定制化处理,针对写实结构加以削弱,让角色更加美型,同时保留角色特点。
第三层,细节渲染。有些真实细节我们主动增加,有些反而主动削弱。物理正确是基础,艺术选择决定最终风格。
第四层,RBF 驱动。我们增强动态效果,让角色在运动过程中,随着关节弯曲,袖口和裤脚可以使用自动提拉的贴合效果。
基于 MetaHuman 框架,这套方案为这款产品提供了强大助力。今天我们还带来了另一段开放的实机演示画面,实现效果可以同时在 PC 和移动端稳定运行,大家请看大屏。
(演示后)《代号:神不言》需要做的,就是在这个基础上继续探索写实与美型风格化之间更大的空间。以上就是我今天的全部分享,期待和大家继续交流,谢谢各位。
刘冰分享了《代号:神不言》的角色美型风格化方向,为了做到这样表达,就需要在光影上“下功夫”。而《代号:神不言》大量特写镜头与影视化打光,对移动端渲染提出了苛刻的要求。怎么让光影参与叙事,又能在手机上稳定跑起来?下半场,女娲实验室技术负责人 Qian Shen 从渲染管线的角度进行分享。
《代号:神不言》的移动端渲染的光影设计
先简单介绍这款作品和我们上一款作品《以闪亮之名》的异同。这款新游戏的渲染管线设计,是围绕自身产品特性定制的。和《以闪亮之名》相同的是,本作同样拥有精细复杂的角色资源,角色渲染效果也是管线重点。二者的区别在于,《代号:神不言》加入大量影视化打光设计,对光影品质要求更高;同时游戏存在大量特写镜头,因此需要把细节打磨得更好,尽可能传递美术设计师赋予角色的表达。
前面的视频大家应该有所感知,每一个镜头,在打光的加持下,都有自己的镜头语言与情绪。从这两张对比图片也能看出打光带来的区别。这套光影方案,已经不能依靠传统方向光搭配 IBL 贴图的思路实现。为满足前面提到的需求,我们采用目前行业主流的延迟渲染管线。因为需要采用 GBuffer 完成各类计算,所以放弃了 one pass(单通道) 流程。
基本上是在 Base Pass 之后,依次处理各类渲染特性,再执行被打断的光照步骤。为了在材质表现上更进一步,我们选用 Substrate 材质系统,主要用于角色各类服装的表现。Substrate 原生面向 PC 平台开发,移植到移动端时,一方面需要做定制化改造;另一方面,如果采用 TensorRay风格的 Substrate,也就是通过树形结构混合多层 slab,性能开销会过高。
不管是存储还是解析,都会带来难以承担的开销。所以我们这边控制为 one closure,放弃树形结构。移动端的改动目标,是保证各个独立渲染特性和 PC 效果保持一致,例如布料、各向异性、多种版本的 3S,或是半透明混合方式等。我们也根据设计师的需求,开发了定制化特性,满足服装表现需求。另外,各类特殊特性仅作用于角色相关资源;场景依旧保留传统 PBR 方案,以此提升性能。
现在聊一下部分材质的处理方式。首先是皮肤材质。对于皮肤,尤其是这种偏写实的游戏,3S 是必不可少的一环。《以闪亮之名》已经使用 screen space 3S(屏幕空间次表面散射),《代号:神不言》也将继续沿用。《以闪亮之名》中的 3S 方案,会在 Base Pass 之前预渲染需要开启 3S 的模型,这个 Pass 只计算 diffuse 相关光照,之后做滤波,最后在 Base Pass 渲染 3S 物体时,直接叠加滤波完成的光照结果。
对于《代号:神不言》,因为采用延迟渲染,我们使用和 PC 一致的流程:在光照 Pass 之后,类似后处理的方式对光照做滤波,再合并 specular。这里选用传统 separable CS(可分离卷积),没有使用开销更高的 body CS(体积卷积) 方案。虽然把 3S 放在光照 Pass 之后会打断渲染通道,无法和后续半透明流程串联,存在一定局限,但如果前置执行,也不会带来明显收益,同样需要做光照结果还原,而且皮肤这类开启 3S 的模型,还会额外增加一层绘制。
我们也借助这个通道拆分的时机,在此处统一处理其他内容,例如整体调整光照参数、处理需要前置预处理的内容。另外,对比原版 PC 管线,这里做了取舍。PC 管线会记录亮度比值区分 diffuse(漫反射) 和 specular(高光),滤波阶段只针对 diffuse 部分处理。如果画面只有 specular,这套方案影响可控。但是本作皮肤、眼睛都支持自发光效果,沿用原有方案处理,渲染结果会出现偏差。左侧截图是旧方案效果,可以看到自发光纹饰部分,和右侧设计师定稿的目标颜色存在偏差。正好光照阶段是独立Pass,不存在 GBuffer 存储压力,所以我们直接将 diffuse 信息单独拆分,占用一组 RGB 通道,保证渲染结果准确。
然后是皮肤上的水渍效果,我们也做了专项处理。
水珠或者水痕本身具备体积属性,法线和底层皮肤并不一致。如果不考虑法线差异,效果会失真;但直接用水珠法线覆盖皮肤法线,又会破坏皮肤本身质感,如左图所示,看起来不像是附着水痕,更像是皮肤本身发生凸起。我们采用双法线方案:水渍与皮肤分别计算各自的 PBR、漫反射结果,再做混合叠加,效果更加自然。同时,配套 Mask 贴图标记水渍的位置与强度信息,方便美术和动画师实时调控。
眼睛也是一个重点模块,我们看一下对应的效果拆解。首先是虹膜的 diffuse,其次是虹膜焦散。这里没有使用幂函数生成高光,而是采用更贴近物理的焦散模拟,还原虹膜聚光效果;角膜高光使用传统 GGX。之后叠加 3S,让眼球质感更温润,避免干涩生硬;最后对眼睛和周边皮肤做模糊处理,衔接更加自然。
下面聊一下光照与着色模块。本作材质复杂度较高,支持多种特性互相组合,例如各向异性叠加闪点、再叠加 3S 等,着色开销压力较大。一方面是 GBuffer 容量紧张,多种特性叠加时,默认三张 GBuffer 无法满足需求。管线选型上有几种方案:全延迟、全前向,或是复杂材质走前向渲染、普通材质走延迟渲染的混合方案。我们目前采用 DEF-before 方案,扩充两张 GBuffer,同时对部分复杂特性做编码压缩,尽可能控制 GBuffer 的占用与大小。
实测发现,移动端相比传统 PBR 管线新增了大量计算,如果直接沿用 PC 的 Uber Shader 方案,性能无法承受,寄存器占用超标,严重影响 GPU 并行性,必须拆分 Shader。前向渲染的 Shader 拆分相对简单,CPU 侧可以提前获知材质组合,直接绑定对应 Shader。延迟渲染可以使用模板标记或者分 Tile 的方式拆分不同 Shader。
我们选择 Tile 拆分方案,如图所示,绿色、粉色以及其他颜色,代表不同 Shader 分支。图中绿色标记为带闪点特性的材质;如果材质对应区域闪点强度为 0,该 Tile 就可以选用简化着色器,跳过闪点计算。当然,该方案需要和设计师沟通材质组合规则,不能无限制随意叠加特性,需要平衡效果与性能。
光照本身的选型上,灯光数量较少时,Probe Light Volume 会比较合适;灯光数量较多时,Light Volume 开销会随材质组合、灯光数量快速上涨,同时每个着色器起始都要读取 GBuffer,开销偏高。所以灯光数量较多的场景,更适合选用 Cluster 光照方案。
接下来聊阴影相关内容。首先是本地光源阴影。本作采用影视化打光思路,同屏光源数量较多,对应的阴影数量也随之增加。原则上有光即有影,为保障画面表现,主光源的阴影尽量保留,这对移动端压力很高。游戏绝大部分场景是静态场景,理论上可以把阴影烘焙到光照贴图,但存在几个问题:动态角色无法接收烘焙阴影;同时光照贴图受压缩影响,容易出现通道串色、精度不足等问题。因此最终选择全 Shadow Map 路线:静态物体预缓存,动态物体单独渲染阴影,再做叠加。
还有一点需要注意,使用 Shadow Map 时,我们会提前生成屏幕空间阴影或者阴影掩码,在光照阶段直接复用结果。目的同样是避免超大复杂着色器,提升 GPU 利用率。最后需要控制阴影数量,同一个像素上叠加过多阴影,视觉收益很低,很难分辨。
我们限制每个 Tile 最多保存 4 组有效阴影,思路类似 Tile Lighting,每个 Tile 维护自身有效的阴影掩码。屏幕整体可以同时存在超过 4 个阴影,给设计师打光留出更高自由度。当然,该方案需要和设计师共同约定制作规范,并配套相关检查工具。Light Map 是另外一条可选路线,这里不展开。
下面说一下点光源阴影。游戏内大部分点光源需求都会改用聚光灯实现,性能优于原生点光源。如果必须使用点光源,也可以考虑用两盏聚光灯拼接模拟。但确实存在无法规避点光源的场景,这种情况下,我们使用四面体阴影贴图替代传统立方贴图。这套方案开销更低,效果也优于双抛物面阴影。如图所示,四面体阴影贴图最终合并到一张 2D 纹理上,后续 Tile 处理也比方贴图更友好。
然后说一下阴影精度问题,对于特写较多的游戏,这点非常关键,角色身上首饰等细小部件很容易出现漏光,拉低画面质感。根源在于玩家相机和光源视锥不一致,阴影精度总会存在问题,不存在完美的解决办法。我们首先测试了各类偏移方案,包括常量偏移、斜率偏移、法线偏移等,在不同场景下都能改善漏光问题,但都不是万能的,效果会在漏光和阴影痤疮之间取舍。还有接收面深度偏移这类算法,效果虽然不错,但开销偏高。所以偏移手段需要配合足够分辨率的阴影贴图兜底。
但贴图尺寸也不能无限制增加。最稳妥的思路,是尽可能利用有限的 Shadow Map 资源,把阴影贴图的像素尽量分配给画面内真正需要阴影的区域,必要时牺牲画面边角的阴影,提升主体精度。以聚光灯举例:聚光灯张角范围可能覆盖角色全身,但镜头只给到手部特写。按标准流程渲染整个灯光范围,分配给手部的阴影像素占比很低,特写镜头极易漏光。这时就把聚光灯阴影范围裁剪收缩到手部区域,角色其他不可见部分不再占用阴影贴图资源。
下面介绍方向光阴影,也就是太阳光的处理。
本作包含城市场景,支持时间流转,方向光阴影实现难度较高。阴影按距离分为两段。近处阴影使用传统 CSM,支持昼夜变化、动态物体。角色精度不足时,可以叠加 Percentage Closer Soft Shadow 提升效果。同时做多重剔除降低开销,除了标准视锥剔除,额外增加阴影投射物剔除:如果一个投射物产生的所有阴影,在玩家视锥内完全不可见,就不再渲染它的阴影。该策略在高楼密集的城市场景收益明显,前方建筑遮挡时,后方大量投射物可以直接渲染。还有一类剔除策略适合远景山地:日出日落低角度光照时,如果山体完全遮挡太阳,可以直接关闭方向光,没有必要继续执行后续光照计算。
中距离阴影需要考虑缓存与分帧,但是时间变化、相机自由转动,常规缓存很难稳定生效。我们采用基于 Tile 的缓存方案,基本原理是将场景分块。每一块维护独立阴影贴图,每一帧只更新其中一部分 Tile,分帧分摊开销。镜头离开某块区域后,缓存结果保留,旋转回该区域时不需要重新渲染。缓存会在物体加载卸载、LOD 切换时失效,失效后不强制立刻刷新,会按照优先级权重排序,判断哪个 Tile 优先更新。这套方案用于处理中距离阴影,动态物体不纳入缓存。
方向光持续转动会造成阴影变化,无法简单缓存。这套方案利用方向光角度变化缓慢的特点,整套缓存系统预存多个角度的阴影贴图,每一次只旋转 1°~2°,提前预渲染下一角度阴影,预留十余秒缓冲时间。时间切换之后,直接调用已经缓存好的 Shadow Map,避免玩家看到阴影跳变。当然这一切的前提是时间变化速率可控,否则来不及缓存,切换瞬间,需要将两个时段的阴影做混合过渡。
最后聊下 GI 和反射。首先是 GI。GI 部分,为保证角色渲染品质,间接光照是重点,影视化打光、特写镜头都高度依赖 GI,这也是移动端和 PC 写实渲染差距最大的模块之一。我们希望实现高质量 AO,阴影内部也保有细腻的反弹光变化。同时也是为了拉近移动端和 PC 的效果差距,如图中展示的角色下巴光线反弹,这部分效果非常关键。
为对齐 PC 效果,移动端接入 Lumen。原生 Lumen 开销过高,无法直接全量运行,必须做定制修改。光照更新方面,大部分场景、灯光为静态,可以提前预计算辐照度信息,运行期直接读取。我们希望角色拥有高质量 GI 效果,所以优先选用高质量 Final Gather,也就是 Screen Probe Together 框架,而非 Uniform Field。Screen Probe Together 整体框架不变,在屏幕空间撒布探针,每个探针分配射线收集辐照度。射线追踪保留 SNGI 和预烘焙辐照度作为远景兜底,舍弃中距离 SDF 追踪。
整套开销依旧很高,因此仅角色启用这套高质量 GI;场景沿用传统光照贴图、Probe 方案处理。角色和场景衔接如果出现断层,可以用 Contact Shadow 补充修复。在引擎内,灯光师按镜头单独布光,因此需要保存多套光照数据。我们看一下对应的效果对比,左侧是旧的 Probe 方案,右侧是新的 Screen Probe GI 方案。在手臂和扶手的衔接处,可以看到 GI 和 AO 让过渡更加自然,手臂能够更好地融入环境。再看一组对比图,左侧还是原有方案,右侧是新方案,身体上的光线可以反弹到脖颈,提亮效果更加自然。
同时衣领处的 AO 遮蔽效果也更加明显。最后我们讨论反射相关内容。本作是现代都市背景,写实渲染下反射效果很突出,也十分关键。相比古风、旷野这类以石头土地为主的场景,都市场景存在大量光泽表面,例如金属、漆面等;地面、立面这类大平面的反射瑕疵,肉眼极易识别。
某种意义上来说,优化反射,更多是为了解决反射漏光问题,这类错误观感非常刺眼。即使依托高密度 GI 信息校正反射球,依旧无法完全根除。整体流程和 UE 原生反射一致:优先屏幕空间反射追踪,追踪失败后走世界空间追踪。我们在世界空间追踪使用硬件光锥,结果准确,效果表现更好。
移动端硬件光锥性能有限,不能无限制使用。这里主要借助光锥完成反射球的正确采样;追踪命中失败后,再对交点重新计算光照,这部分后面细说。我们处理的是光泽表面反射,不是理想镜面,所以光锥拿到结果之后还需要降噪。
光锥主体采用预烘焙方案,图中紫色是场景表面,蓝色为主相机与反射光线。超出 SSR 范围后,常规做法直接按反射方向采样反射球,结果错误;借助光锥得到命中点位置,用命中点减去反射球位置,得到正确采样方向。该方式只采样预烘焙立方贴图,不需要实时计算辐照度,性能友好。我们同时通过内联追踪、简化 BVH 进一步降低光锥开销。精细细节大多会被 SSR 覆盖,简化 BVH 带来的差异很难察觉。
这套方案存在失效场景:动态物体无法预烘焙;反射球摆放位置受限,如果反射射线和反射球之间存在遮挡,采样得到的是遮挡物信息,结果错误。这类场景下,在光锥命中位置实时计算光照。为控制性能,光照计算阶段贴图采样、着色逻辑都做简化;非镜面光泽反射,轻微瑕疵可以接受。
下面看对应的效果展示。如图所示,蓝色区域代表 SSR 成功;绿色区域为 SSR 失效,用光锥辅助采样反射球;红色区域是前述方案全部失效,需要实时计算辐照度。这张图是场景完全使用立方贴图采样的效果,存在明显漏光,可以看到琴键和立面衔接位置有漏光。叠加 SSR 之后漏光减少,但 SSR 失效区域依旧存在瑕疵。再接上光锥校正反射球,主体效果基本正确。最后补充反射球遮挡区域的实时光照兜底,修复量取决于反射球摆放位置和镜头视角。
以上就是本次分享的全部内容,期待后续有机会和大家继续交流。

