【Unity】Shader优化
来源:互联网 发布:用c语言编写科学计算器 编辑:程序博客网 时间:2024/04/29 02:23
Shader可优化的几个方面:
》优化变量类型;half 放UV值和颜色值,fixed用于光照计算、颜色、单位向量等;
- float — 完整的 32 位浮点格式,适合用于顶点变换,但性能最慢。
- half — 简化的 16 位浮点格式,适用于纹理 UV 坐标,颜色值等。比 float 大约快两倍。
- fixed — 10位定点格式,适合光照计算、颜色和其它高性能操作,速度大约比 float 快 4 倍
》充分利用内置光照模型;
》共享UV,使用了Main Texture的UV坐标来代替法线贴图的UV坐标;
》开启特定的某些渲染工作,让Shader只工作在特定的渲染器上;
》减少处理的光源个数
把其他所有光源当成了顶点光源,而在计算像素颜色时只计算一个主平行光作为像素光源。
》使用近似值代替精确值;
》减少或压缩贴图;
移动平台的Shader优化
一,排除延迟渲染的pass(通道)。
二,不支持unity自带的贴图系统提供的光照贴图;
三,添加noforwardadd,只对一个方向光进行逐像素文理运算,其他所有灯光都被强制转换成逐顶点的光照;
四,使用半角向量(half vector)作为视线方向并用于高光计算,因为半角向量是基于逐顶点计算的;
1.复杂的数学函数(如 pow,exp,log,cos,sin,tan 等等)会大大增加 GPU 负担,所以一个好的经验法则是,此类运算在每个像素中不得超过一个。考虑在合适时使用查找纹理作为替代选择。
2.alpha 测试运算会让片段速度变慢。(on PowerVR GPUs found in iOS and some Android devices)
3.编写自定义的着色器时,应始终指定浮点变量精度。为获得最佳性能,挑选精度尽可能小的浮点格式至关重要。很多台式机 GPU 均完全忽略运算精确,但是它对于大量移动 GPU 的性能具有重大影响。
4.大部分shader都有_Color属性,但如果你并没有使用,那么就应该去掉,避免无谓的计算。
5.通用的表面着色器虽然通用,但性能其实并不好。因为我们没有光照,所以我建议采用顶点着色器和片段着色器。
参考:unity3d移动平台性能优化专题(8):shader优化
【Unity Shaders】Mobile Shader Adjustment—— 什么是高效的Shader
【Unity Shaders】Mobile Shader Adjustment —— 为手机定制Shader
- 【Unity优化】Shader优化
- 【Unity】Shader优化
- unity shader:渲染优化
- Unity Shader——移动端Shader的优化(Optimize Shader)
- unity shader
- Unity Shader
- Unity-Shader
- unity shader
- Unity Shader
- Unity Shader
- Unity Shader
- unity shader
- Unity Shader中有关设置Material的优化
- Unity描边[Unity Shader]
- Shader以及Unity中的Shader
- Unity Shader 二 发光Shader
- Unity Shader简单Shader一
- Unity Shader简单Shader二
- 【个人收藏】qt超强精美绘图控件 - QCustomPlot一览 及 安装使用教程
- 星沙
- 软判决和硬判决
- 行人检测现状
- 邂逅
- 【Unity】Shader优化
- python 网络编程
- 运用PFA的路灯指示牌GUI程序
- python win32注册表
- 用PYTHON再WIN7中查看开机启动项
- '''Tkinter教程之Pack篇'''
- PYTHON Tkinter GUI
- Ubuntu安装Apache
- [OC学习笔记]协议的一些规则