ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Unity性能优化_Shader

Unity性能优化_Shader 介绍一些优化Shader的方法。一 内存优化1 LOD/可控的SubShader加载Shader LOD的动态加载与释放不同级别的Shader LOD动态加载当前需要使用的Shader LODsubshader减少shaderlab内存占用需要修改引擎源码。2 运行时压缩如果有条件利用时间换空间的话。默认的runtime的shader创建过程在transfer中会将实际的shader code进行解压并在之后parse的过程中创建的subprogram中进行保存 (programCode 字段)。压缩LZ4HC保存在subprograme内的shader code在compile到gpu时再解压Unity默认情况下保存的是已经解压过的shader code。节约内存但是可能warmup或直接compile gpu program时的时间开销增大。3 Shader变体优化Unity性能优化_Shader_变体-CSDN博客二 ALU计算优化精简算法移动平台最好禁用Standard材质特别是全屏绘制的物体需要尽量简化Shader比如空气墙。降低浮点数精度在移动平台下GPU可在执⾏⼀个float操作的同等周期内执⾏2个half操作。尤其是屏占⽐较⾼、半透明物件所⽤的shader优化的收益较⾼。通过Xcode性能分析工具可以得到有效提示复杂函数Transcendental mathematical functions (such as pow, exp, log, cos, sin, tan) are quite resource-intensive, so avoid using them where possible on low-end hardware. Consider using lookup textures as an alternative to complex math calculations if applicable.Avoid writing your own operations (such as normalize, dot, inversesqrt). Unity’s built-in options ensure that the driver can generate much better code.Remember that the Alpha Test (discard) operation often makes your fragment shader slower.分支循环为了合批⽽添加if/else如果实际效果不明显建议使⽤Shader变体来解决其他移除Material中没有使用到的属性禁止一些不必要的操作或用替代方案比如GrabPass适配中低端手机考虑减少纹理采样次数参考Unity – Manual: Optimizing shader runtime performance
返回列表