UWA2020(六)_黑神话悟空写实画面游戏的技术探索之路

大哥们在线问下,UWA2020(六)_黑神话悟空写实画面游戏的技术探索之路
最新回答
风起半山

2026-10-25 18:46:27

《黑神话:悟空》写实画面游戏的技术探索之路主要聚焦于真实感、光照、手游优化及锯齿处理四大方面,具体内容如下:

真实感
  • 真实感不足的原因

    光照组成丢失:AO(环境光遮蔽)、GI(全局光照)缺失,存在影中影的问题,SSAO(屏幕空间环境光遮蔽)没有提供中长距离AO。

    半透明物体问题:半透明物体丢失阴影,物体表面微光照无法表达。

    计算精度问题:实时计算达不到精度,烘焙精度不足,光照效果不正确,光照管线达不到绝对物理光照正确,资源制作不正确。

  • 不同场景的光照需求

    开场场景 - 晴天:有明显方向光和明亮天空盒,Shadowmap + SSAO足以表达效果,暗部变化相对不明显,不需要精确计算的AO/GI。

    开场场景 - 阴天:shadowmap效果被极度弱化,skylight效果极强但难计算和表达,GI约等于单纯的天光,AO表达是关键,包括影中影、DFAO(距离场环境光遮蔽)、物件自身AO。

  • 技术改进方向

    引擎方面:采用PBR Shading Model(基于物理的渲染着色模型)、Physical Camera(物理相机)、physical Light Unit(物理光照单位),以及若干套优缺点的光照方案。

    细节表达:注重细节光照的表达、超大视距性能和精度、半透明光影和精度、体积光的阴影和精度,以及资源的物理正确。

光照
  • 动态光与静态光

    动态光优势:Lightmass主要依赖surface lightmap,而volumetric light无法表达精确的表面光照;开放世界中surface lightmap占用内存和容量很大,植被surface lightmap需求量大且精度大;动态场景更方便制作场景的运动和破坏效果,迭代效率方面,烘焙会降低美术迭代效率。

    距离光照(Distance Field):使用距离场表达场景(静态),通过空间点到模型的最近距离模拟光追,使用三角面和BVH两种组织方式(Grid bucket和global texture),基于ray march实现软阴影/AO(DFAO)/GI等常见功能。其优点是性能好,效果远超光追,有空间查询能力,可在Shader中实现复杂效果,支持动态flowmap、terrain blend;缺点是精度低,容易出现渲染错误和漏光,细节光照无法表达。

    动态物体光照 - Capsule Shadow:Capsule数据容易存储,在ray march中容易计算,可实现软间接shadow(支持影中影),是对静态Distance Field的补充。

  • 动态管线的权衡

    动态管线速度并非绝对慢,如《堡垒之夜》取决于使用的特性以及对场景物件的把控。

    暂时缺乏高品质GI,需要手动补光,合理运用特性(如DFAO),AO精度和表达不是问题。

    可灵活运用各种手段,如DFRTS(用距离场算阴影),其Drawcall远低于shadowmap,不需要每帧把场景多渲染一次,GPU消耗更低;还可使用shadow map cache、Light culling,根据每个动态光是否cast shadow进行局部烘焙。

  • AO与阴影细节处理

    AO问题:SSAO/DFAO不容易表达复杂层级的AO,如衣服的褶皱、树叶之间的遮蔽效果,精度和表现不够好。AO正常下低精度,有时需要高精度,物件的AO非常重要。

    阴影处理:阴影区域下的树叶需要影中影,有时可以用shadowmap模拟/代替AO。好的建模与法线能为物体带来更好细节阴影,高精度AO可直接烘焙到物体上。

  • UE5相关猜测:Lumen结合多种技术的综合GI方案,包括Screen Space细节、Distance Field中距离、Voxel远距离,Nanite使亿级面数模型成为可能,还有Micro Shadow。
手游的优化
  • 手游面临的问题

    主流做法是没有SSAO,有限制使用Shadow map。

    手机GPU有Tile Base特性,浮点运算能力相对可以,但带宽较低,导致Deferred rendering成为非主流,Depth/GBuffer based随机采样算法代价大(如SSAO)。

    手游开始流行高清高帧率,但又要尽可能低能耗低发热,Tile base的on - chip特性使带宽成为重要的耗电降频来源。

  • 优化技术 - Subpass

    一个on chip tile的数据可以在多次绘制中共享,减少带宽消耗,后一个subpass所使用的attachments的像素可以直接从前一个subpass的attachments中的对应位置读取。

    每次绘制不会立即把数据输出到framebuffer,但不能对临近像素进行采样,只能使用同一位置的像素信息。

    典型应用包括on chip buffer、subpass,让高性能的Deferred Rendering成为可能,硬件API支持Vulkan/Metal。

  • 手游具体做法

    Vain Glory(虚荣):分离透明物体和不透明物体区域,减少overdraw区域,使用alpha blend实现抗锯齿(软边过渡),不透明区域更容易规避透明排序;远景把光照烘焙到diffuse(albedo)贴图上,可以提供无限视距的光照阴影;预先烘焙多角度shader,类似unlit,节省了ALU性能消耗,比lightmap更省(少了渲染shadowmap、tex2D shadowmap和shadowmap的内存占用)。

    黑色沙漠:采用直接光 + shadowmap,首次绘制shadowmap,之后根据矩阵推算,移动一定距离重新绘制新的shadowmap,烘焙仅烘焙低精度的GI diffuse,放弃烘焙AO,靠shadowmap补充。

    Zen Garden:针对固定的方向光做烘焙,实现高品质高性能,其他通过Shader造假产生Material光影,高性价比、高性能,解决shadowmap不能覆盖的领域,如透明物体、天空云、远景如瀑布的假阴影和假光照,解决透明光影问题,还使用2D ray march对一些面片粒子做阴影效果,如烟雾用面片做假的体积光,通过Fake AO传入玩家坐标让地面/草面变黑造成AO的感觉。

    光照表现优化:大量的Micro lighting(光照表现)无法在光照管线上表达,只能在shading model(光照模型)上实现,如SSS、Double Lobe Specular、Eye、Hair、Fiber(Moss)、Cloth等。

锯齿
  • 锯齿产生原因

    几何锯齿:尖锐细小的物体容易出现。

    Alpha Test:导致锯齿产生。

    Shading锯齿:高频的Normal变化、HDR亮度等引发。

  • 抗锯齿技术

    资源侧抗锯齿

    Alpha Blend:通过alpha混合实现抗锯齿。

    Normal/Roughness Composite:根据法线去修改roughness,在边缘等地方提高roughness,使其看起来不尖锐,对抗Shading alias,在移动端更有优势。

    mipmap:配合UE4的sharpen功能(锐化效果不要乱用),no mipmap也可用于抗锯齿。

    Temporal Antialising(TAA):PS4主流抗锯齿技术,将超采样的流程分到几帧中运算,可以轻易达到16x级别的超采样样本,有效对抗shading aliasing,额外功能包括animated alpha dither使用alpha test模拟半透明,但存在残影问题,需要velocity信息去resolve,过度模糊时可进行sharpening,还可通过mipmap增强,有Temporal upsample(针对低分辨率)替代方案。

    其他替代方案:NVIDIA的DLSS(深度学习超级采样),AMD的CAS(对比度感知锐化)+ RIS(Radeon图像锐化)。