当前位置:首页>游戏攻略>从手游机型分级聊聊手机芯片的发展和引擎相关的支持(二)

从手游机型分级聊聊手机芯片的发展和引擎相关的支持(二)

  • 更新时间 2026-09-19 00:24:49
从手游机型分级聊聊手机芯片的发展和引擎相关的支持(二)
上篇聊了手机芯片的发展,从功能机时代没有 GPU,讲到现在旗舰芯片能跑硬件光追。这篇回到我们做项目的视角,聊聊机型的分档,以及Unity 和 Unreal 引擎对分档适配有哪些支持?

一、先搞清楚:手机 SoC 里到底装了什么?

很多人说手机芯片,脑子里想到的就是 CPU。但实际上手机芯片叫 SoC(System on Chip,片上系统),它不是一个单独的处理器,而是把一整套系统都塞进了一颗芯片里。
一颗典型的手机 SoC 里面,大概有这些东西:
  • CPU:通用计算核心,跑游戏逻辑、UI、物理、AI 行为树这些。现在的旗舰 CPU 一般是「超大核 + 大核 + 小核」的三丛集架构,比如 1 个 X 系列超大核 + 3 个 A7 系列大核 + 4 个 A5 系列小核。
  • GPU:图形处理器,负责画面渲染。模型顶点变换、像素着色、纹理采样、后处理,全是 GPU 的活。对游戏来说,GPU 比 CPU 更重要,因为手游的性能瓶颈绝大多数时候在 GPU 上,不是 CPU。
  • 基带:处理移动通信信号,4G/5G 上网、打电话全靠它。跟游戏性能直接关系不大,但基带差了会导致网络延迟高、掉线,间接影响游戏体验。
  • ISP:图像信号处理器,负责拍照和视频的图像处理。跟游戏基本无关。
  • NPU:神经网络处理单元,负责 AI 计算。现在主要用来做 AI 超分、AI 插帧、AI 画质增强,部分游戏已经开始用 NPU 做画面 upscale。
  • 内存控制器:管理内存的读写。内存带宽对游戏非常重要——贴图、模型数据都要从内存读到 GPU,带宽不够就会卡住,GPU 再强也没用。
为什么说 GPU 比 CPU 更决定手游体验?因为一个游戏画面的生成过程,大部分工作量是在 GPU 上。CPU 每帧算游戏逻辑(角色位置、碰撞、动画状态),然后把数据丢给 GPU;GPU 要对屏幕上几百万个像素逐个计算颜色,还要处理纹理、光照、阴影、后处理。同样的游戏逻辑,CPU 可能只占两三毫秒,但 GPU 渲染可能要占十几毫秒。
这也是为什么我们分档的时候,首先看的是 GPU 型号,而不是 CPU 核心数。有些芯片 CPU 核心数很多,但 GPU 弱,游戏表现照样不行——早年联发科的「十核」处理器就是典型,CPU 看着吓人,GPU 跟不上,跑游戏还是卡。
还有一个容易被忽略的点:内存带宽。GPU 再强,如果内存带宽不够,贴图读不上来,GPU 就得闲着等数据。高端芯片用的是 LPDDR5X,带宽比低端机的 LPDDR4X 高了 50% 以上,这个差距在高分辨率贴图的游戏里非常明显。

二、机型分档:我们项目里具体是怎么做的?

第一步:建设备库和评分体系。

我们不会自己去判断每台手机的强弱,而是维护一张设备表,里面有市面上主流机型的芯片型号、GPU 型号、内存大小、系统版本、屏幕分辨率,然后给每台设备打一个综合性能分。这个分数的依据有几个来源:第三方设备性能数据库、我们自己跑的基准测试数据、以及线上埋点回收的真实帧率和崩溃数据。
上线之后,线上数据会持续修正分档。有些芯片纸面参数不错,但实际游戏里因为驱动问题表现很差,就得手动降档;有些芯片虽然老,但驱动优化好,实际帧率比预期高,可以往上提一档。

第二步:按档位配置资源和渲染参数。

分档的维度非常多,我列几个最核心的,以及三档分别怎么配:
  • 模型 LOD:同一个模型做 3 到 4 个精度等级。高端机 LOD 切换距离远,你站在山顶能看到山脚下的人在动;低端机切换距离近,远处的人还没进视野就被裁掉了。
  • 贴图分辨率和 Mipmap:高端机用全分辨率 2048×2048 甚至 4096,中端降到 1024,低端降到 512。Mipmap 就是贴图的预缩小版本,GPU 根据距离自动选合适的级别,低端机可以整体降一级 mip 来省内存和带宽。
  • Shader 变体:同一个材质编译出多个变体。高端用完整的 PBR 加法线加高度加细节贴图,中端砍掉高度和细节,低端直接用最简单的漫反射 shader。引擎根据设备档位自动加载对应变体。
  • 粒子特效:高端机粒子数量、发射器数量、拖尾长度全部拉满;中端减数量减时长;低端直接关掉非关键粒子,只保留最必要的打击反馈。
  • 阴影:这里要特别说明,移动端基本不用全场景实时光照。行业标准做法是:场景光照全部烘焙到 Lightmap 里,角色用 1 盏动态方向光来照亮。高端机可以给角色开实时动态阴影(阴影贴图分辨率 1024,距离短),中端用角色脚下贴一个假阴影贴图,低端用最简单的圆形假阴影,甚至直接关掉。场景本身不接收动态阴影,全靠烘焙。
  • 后处理:bloom、景深、抗锯齿、颜色分级这些全屏效果,高端全开,中端开 bloom 和 FXAA,低端全关。
  • 渲染分辨率缩放:这是低端机最后的杀手锏——直接把渲染分辨率降到屏幕分辨率的 60% 到 70%,画面会糊一点,但帧率能救回来。
  • 帧率限制:高端机开放 60/90/120 帧,中端锁 30 或 60,低端锁 30。

第三步:资源变体包和按档位下发。

不会把所有档位的资源都打进一个安装包里,那样包体太大。现在主流做法是出资源变体包——基础包带通用资源,高端贴图、高模、高级 shader 变体作为额外的资源包,只有高端设备才下载。

第四步:运行时自适应降级。

分档不是一成不变的。游戏运行时会实时监测帧率和设备温度,如果连续 10 秒低于目标帧率,或者温度超过阈值,就自动降一档——先关阴影,再减粒子,再降分辨率。同时给玩家一个「流畅优先 / 画质优先」的手动开关。这个机制非常重要,因为有些设备虽然分在高端档,但边充电边玩、后台开了很多 app,实际性能会下降,自适应降级能保证不卡死。

三、Unity 引擎对分档适配的支持

Unity 是目前手游用得最多的引擎,它对分档适配有一套完整的原生工具,不用自己从零造轮子。
Quality Settings 是 Unity 分档的核心。内置的画质设置面板,可以预设多套画质等级(Ultra、High、Medium、Low),每套等级分别配置阴影距离、抗锯齿、纹理质量、LOD 偏差、粒子数量、垂直同步等参数。运行时一行代码 QualitySettings.SetQualityLevel() 就能切换。项目里一般会在启动时根据设备评分自动设置对应等级,玩家也可以在设置里手动改。
LOD Group 组件挂在模型上,配置不同距离下显示哪个 LOD 等级的模型,引擎自动切换。这个组件还可以配合 LOD 偏差(LOD Bias)使用,低端机把偏差调小,模型会更早切换到低模,进一步省性能。
Shader 变体和关键字是 Unity 材质分级的关键。用#pragmamulti_compile 或 shader_feature 定义材质的功能开关(比如有没有法线、有没有高光、有没有边缘光),编译时生成多个变体,运行时根据档位设置关键字,引擎自动用对应变体。这样低端机用的是砍掉了复杂计算的简化 shader,高端机用完整版,不用写两套材质。
Mipmap 和纹理流式加载(Mipmap Streaming)可以根据相机距离和内存预算,自动加载合适级别的 mip。低端机内存不够时,系统自动降低纹理质量,避免 OOM(内存溢出)。这个功能在大场景开放世界手游里特别重要。
OnDemandRendering 是 Unity 2021.2 引入、2022 之后稳定的功能,可以动态调整渲染帧率。不需要满帧渲染的时候(比如 UI 界面、过场动画)自动降帧省电,战斗场景再升回去。对手游的续航优化很有帮助。
SRP(可编程渲染管线)包括 URP 和 HDRP,都支持按设备动态切换渲染特性。URP 是现在手游的主流,它的 Renderer Feature 机制可以很方便地按档位开关后处理、软阴影等功能。低端机直接关掉整个后处理栈,高端机全开。
Device Simulator 是编辑器里的模拟工具,可以模拟不同设备的屏幕分辨率、性能等级、系统信息,不用每次都打包到真机上测。虽然不能完全代替真机测试,但前期调参很方便。
简单说,Unity 的分档工具链比较轻量、上手快,中小团队也能快速搭起来。它的思路是「预设等级 + 运行时切换」,大部分参数在编辑器里配好就行,代码量不大。

四、Unreal Engine 对分档适配的支持

UE 的分档体系更偏工业级,配置粒度更细,功能更强大,但复杂度也更高。适合对画质要求极高的重度手游。
Device Profiles 是 UE 分档的核心机制。可以为每一类设备(比如 iOS 高端、Android 高端、Android 中端、Android 低端)创建一个 Device Profile,里面用控制台变量(CVar)控制几乎所有渲染参数——阴影分辨率、贴图最大尺寸、LOD 距离、后处理质量、粒子数量、帧率上限,全部通过 CVar 控制。设备启动时根据型号自动匹配对应的 Profile。这个机制比 Unity 的 Quality Settings 粒度细得多,几乎每个渲染参数都能单独控制。
Scalability Settings 是 UE 内置的可扩展性设置,分 Overall、ViewDistance、AntiAliasing、PostProcess、Shadow、Texture、Effects、Foliage、Shading 九个维度,每个维度 0 到 3 共四档。可以用 Scalability::SetQualityLevels() 一键切换,也可以单独设置某个维度。这个相当于 Unity 的 Quality Settings,但维度分得更细。
LOD 系统方面,UE 的静态网格和骨骼网格都支持多级 LOD,而且有一个 Unity 没有的东西叫 HLOD(Hierarchical LOD)——把远处的多个物体合并成一个代理网格,大幅降低低端机的 Draw Call。在大场景开放世界里,HLOD 是保证低端机能跑的关键。
Material Quality Levels 是 UE 材质分级的方式。在材质编辑器里可以为不同质量等级定义不同的节点图,高端用完整的 PBR 加各种细节,低端直接走简化分支,跳过复杂计算。这个比 Unity 的 Shader 变体更直观,直接在材质图里分支,不用写宏。
Mobile Forward Renderer(移动端前向渲染器)是 UE 专门为手机优化的渲染路径,支持按设备开关 HDR、MSAA、景深等特性。UE 的移动端渲染优化做得很深入,前向渲染器本身就针对移动端的 tile-based GPU 架构做了优化。
CVar 运行时动态调整是 UE 做自适应降级的利器。几乎所有渲染参数都是 CVar,可以在运行时实时修改,比如温度高了就 r.Shadow.MaxResolution 512 降阴影分辨率,帧率低了就调整场景颜色缓冲精度。做自适应降级非常方便,不用重启渲染管线。
总的来说,UE 的分档更强大、粒度更细、工业级程度更高,但学习曲线也更陡。适合有一定技术积累、对画质要求高的团队。

五、各大芯片厂商游戏表现横评(开发者视角)

讲完引擎,再说说我们实际项目里对各家芯片的体感。这个不是跑分,是真金白银在几十上百款手机上测出来的经验。
高通骁龙:整体游戏体验最好的安卓芯片。Adreno GPU 性能强、驱动更新积极、开发者文档完善,而且因为市场份额大,游戏引擎和中间件对 Adreno 的优化最充分。我们项目里一般把高通旗舰作为「高端基准档」,所有高端画质首先在骁龙 8 系上调好,再往其他平台移植。高通的问题是旗舰发热降频,尤其是三星代工的那几代(888、8 Gen1),玩一会就烫,烫了就降频,帧率波动大。换回台积电之后(8+ Gen1、8 Gen2、8 Gen3)好了很多。
联发科:这几年进步很大。天玑 9000 系列之后,GPU 性能追上来了,CPU 也很强,能效比不错。但有个问题是 Mali GPU 的驱动优化参差不齐,不同机型、不同系统版本的表现差异比较大,有时候同一个芯片在不同手机上帧率能差 10 帧以上。中低端的天玑芯片 GPU 偏弱,跑重度游戏比较吃力,需要多砍一些特效。整体来说,联发科现在是「旗舰能用,中端够用,低端看情况」。
苹果 A 系列:移动端游戏体验的天花板。单核性能领先安卓一代以上,自研 GPU 架构效率极高,而且 iOS 系统对 GPU 的调度非常稳定,不会出现安卓那种突然降频掉帧的情况。iOS 机型少,适配成本低,我们一般只需要针对最近 3–4 代 iPhone 做优化就行。苹果的问题是机型少、封闭生态,而且高端 iPhone 的散热也一般,长时间高负载还是会降频,但比安卓旗舰控制得好。
华为麒麟(曾经):调度非常均衡,NPU 领先,游戏体验极佳。麒麟 980、990、9000 这几代,GPU 性能虽然不是最强,但功耗控制好,帧率稳定,长时间玩也不容易烫。而且华为的 GPU Turbo 技术对游戏有专门优化,部分游戏帧率比同级别高通还稳。断供之后麒麟成了历史,现在新出的麒麟 9000S 因为制程受限,GPU 性能跟旗舰还有差距,但至少回来了。
三星 Exynos:纸面参数强,实际游戏体验经常翻车。功耗和发热控制不稳定,Mali GPU 的驱动优化也不如高通,而且因为对外供货少,游戏厂商的适配优先级低。我们项目里如果遇到 Exynos 机型,一般要单独测一遍,经常能发现一些奇怪的渲染 bug。现在三星自己的旗舰都在部分市场改用高通了,Exynos 的存在感越来越低。
紫光展锐:主要在入门和低端市场。虎贲系列的 GPU 性能比较弱,跑重度手游基本只能开最低画质,而且要做比较激进的资源删减。但展锐芯片的优势是价格低、功耗控制还行,在非洲、东南亚这些新兴市场占有率很高。我们做海外发行的项目,展锐机型是低端适配里不可忽视的一部分,不能忽略。

六、移动端到底有没有实时光照和全局光照?

实时光照:支持,但非常受限。
移动端支持动态方向光、点光源、聚光灯,但数量严格受限。一般中低端机只允许 1 盏动态方向光(通常是太阳光),高端机可以加到 2–3 盏。动态光的阴影极其昂贵,移动端通常只给角色开实时阴影,而且阴影分辨率很低(512 或 1024),距离很短。
所以实际项目里的标准做法是:场景光照全部烘焙到 Lightmap,角色用 1 盏动态方向光照亮,角色脚下用实时阴影或假阴影贴图。场景本身不做全实时光照,因为性能扛不住。
全局光照(GI):移动端基本没有真正的实时 GI。
Unity 的 Enlighten 实时 GI、UE 的 Lumen,在移动端都不支持。硬件光追虽然在 2022 年之后的旗舰芯片上有了,但目前主要用来做反射(水面、光滑地面),完整的实时光追 GI 计算量太大,手机功耗和散热扛不住。
那移动端的「全局光照效果」是怎么来的?全靠预计算:
  • 烘焙 Lightmap:把直接光 + 间接光(弹射光、颜色溢出)全部提前算好,烘焙成贴图贴在场景上,运行时直接采样,零成本。这是 99% 手游的做法。
  • Light Probe(光照探针):场景里放一堆探针,烘焙时记录每个位置的间接光信息,运行时动态物体(角色、道具)根据所在位置插值取探针的光照,这样角色走到不同区域会有对应的颜色变化,看起来像是受到了全局光照影响。
  • Reflection Probe(反射探针):提前烘焙环境反射,运行时给金属、光滑材质用。
  • SSGI(屏幕空间全局光照):少数高端手游开始尝试,用屏幕空间信息模拟间接光,效果有限但比没有强。只在高端机开,中低端关掉。
  • 天空光 + 环境光遮蔽(AO):用统一的环境光颜色加上 SSAO 模拟明暗变化,成本低,是标配。
所以准确说,移动端的「全局光照」是烘焙好的静态 GI + 探针插值给动态物体 + 后处理模拟,不是实时计算的。很多画面看起来很真实的手游(比如《原神》《鸣潮》),场景光照也都是烘焙的,加上优秀的后处理和美术调色,看起来像实时 GI 而已。

七、未来趋势

最后聊聊未来几年手机芯片和手游适配的几个方向。
AI 超分和 AI 插帧会越来越普及。旗舰芯片的 NPU 算力越来越强,用 NPU 做画面超分辨率(把 720p 渲染结果超分到 1080p 显示)和插帧(把 30 帧插到 60 帧),可以用较低的渲染成本换来较好的视觉体验。现在部分旗舰手机已经在系统层面支持了,未来游戏引擎会原生集成。
移动端光追会从「有这个功能」走向「真正能用」。目前光追反射效果有限,未来随着 GPU 算力提升和功耗优化,可能会出现光追阴影、光追全局光照的移动端版本,但距离全场景实时光追 GI 还很远。
高低配差距不会缩小,反而可能拉大。旗舰永远在卷新特性(光追、全局光照、高帧率),低端永远在追基础体验。芯片代差决定了这个差距只会越来越大,我们做分档适配的工作量也会越来越大。
国产芯片回归是一个值得关注的变量。华为麒麟逐步恢复,展锐向中端冲击,如果未来国产芯片能在中高端站稳,手游适配的格局可能会有变化。

结尾

做手游这么多年,最深的感受是:我们的天花板,永远被芯片行业牵着走。
芯片往前走一步,我们才能多开一个特效、多上一级贴图、多支持一个帧率。芯片卡住了,我们就得想办法砍模型、砍贴图、砍粒子、降分辨率。所有的优化、降级、适配,本质上都是在移动端硬件的性能边界里做内容。
从功能机时代没有 GPU,到现在旗舰芯片能跑硬件光追,手机芯片用三十年走完了 PC 显卡二十年的路。而我们做游戏的,就是在这条路上,跟着芯片的脚步,把越来越多的画面塞进一块越来越小的屏幕里。
这大概就是手游客户端开发的宿命吧——永远在跟芯片较劲,永远在性能和画质之间找平衡。

随机文章