SuperAPI AI 工具集

mobile-shader-optimization

编程与开发

查看项目

更新于 10-15 08:24

技能介绍

用途

这个技能用于在编写、审查或优化 Unity 着色器时,面向移动平台(Android、iOS)或任何 GPU 受限环境(Meta Quest VR、低端设备)提供优化指导。当用户提到 mobile、Android、iOS、Mali、Adreno、PowerVR、performance、optimization、fillrate、overdraw、bandwidth、frame budget、half precision、LOD、baked lighting 等关键词,或处理目标帧率低于 60fps 的着色器、分析着色器性能、询问 GPU 架构、比较 URP 的 Simple Lit 与 Complex Lit 时,均可触发该技能。

主要能力

技能给出了一套移动着色器的硬性约束规则:默认使用 half 精度,仅在世界坐标、需要高精度的 UV 和深度计算中使用 float;在 PowerVR 或 Apple GPU 上不使用 discard(clip/alpha-test),以避免破坏 Early-Z/Hidden Surface Removal;移动端着色器图中节点数控制在 100 以内;面向 OpenGL ES 2.0 / WebGL 1.0 时禁用 while/do-while 循环;避免移动端动态分支,改用 step()、lerp()、saturate() 实现无分支替代;标量乘法放在向量乘法之前;限制纹理采样数,低端移动端目标为每片元不超过 4 次;表面着色器使用 noforwardadd 跳过额外的逐像素光照通道。

技能阐述了移动 GPU 的 TBDR(基于瓦片的延迟渲染)架构特点:带宽是主要瓶颈而非计算,过度绘制代价极高,MSAA 在瓦片 GPU 上几乎免费,渲染目标切换昂贵,功耗预算为 3–6W,过热会降频。并分别说明了 Mali、Adreno、PowerVR、Apple A 系列各 GPU 家族的特性。

技能还提供了精度类型映射(float→highp、half→mediump、fixed→lowp)及各自适用场景,给出了顶点着色器与片元着色器的优化对比示例,说明了哪些计算可以移到顶点着色器(边缘光/菲涅尔、视角归一化、雾效因子、简单 UV 动画偏移、光照方向点积),哪些必须保留在片元着色器(纹理采样、法线贴图、精确高光、屏幕空间效果)。

在 Shader LOD 与回退策略方面,技能展示了通过多个 SubShader 设置不同 LOD(300 全质量、150 中等、100 最低)并为运行时按设备显存设置 Shader.globalMaximumLOD 的方法,同时列出内置 LOD 参考值。在烘焙光照方面,建议移动端所有静态几何体使用烘焙光照,实时灯光限制为 1 个方向光主光,动态物体使用光照探针,始终使用 Forward 渲染。

技能给出了 URP 资源配置建议(前向渲染、关闭 Depth Priming、MSAA 2x/4x、按需关闭 HDR 与附加灯光、降低阴影分辨率与距离、限制级联数、按需关闭后处理)以及一份完整的优化审查清单和性能分析工具列表(Unity Frame Debugger、Mali Offline Compiler、Snapdragon Profiler、Arm Performance Studio、RenderDoc、Xcode GPU Profiler)。

使用方式

该技能以规则与清单形式提供,可在用户编写、审查或优化 Unity 移动端/WebGL 着色器时作为参考与检查依据。资料未提供安装命令或调用方式,暂未提供。

适用场景

适用于面向 Android、iOS、Meta Quest VR 及低端设备的 Unity 着色器开发与优化,也适用于移动端着色器性能分析、GPU 架构咨询以及 URP 着色器选型比较。

限制

资料未提供该技能的收费、价格、平台依赖、具体效果保证或可直接运行的安装步骤,暂未提供。部分规则针对特定 GPU 家族(如 PowerVR/Apple 的 discard 限制、Mali 的瓦片尺寸)和特定渲染管线(URP)与图形 API(OpenGL ES 2.0/WebGL 1.0),在使用时需根据目标设备与管线调整。