UnityShader优化

一、计算量优化

        对不影响最终效果但仍在计算的删除;

        尽量在脚本中计算然后传递给着色器,如果不可以的话尽量从像素着色器移动顶点着色器中计算。因为通常像素着色器执行的次数多于顶点着色器。

二、Surface Shader

        Surface Shader方便用户快捷的处理照明,高效的产生底层的vertex和fragment shader。适合编写与光照交互的着色器。Surface Shader有一些选项可以用来优化。

        优化:

        approxview使用逐顶点而不是逐像素的规范化观察向量,确切的说是规范化的时候对观察方向是逐顶点的。

        镜面反射着色器类型使用halfasview更快,因为halfasview使用一个介于光照方向和观察方向之间的half vector来代替真正的观察方向。

       noforwardadd着色器仅完全支持前向渲染中的一个定向光源。其余的光源仍然可以有逐顶点光照或球谐的效果。减少了着色器大小,即使存在多个灯光始终只渲染一次。

       noambient禁用着色器的环境光和球谐光照。

三、精度优化

       float(32bits),half(16bits)fixed(11bits)

       世界空间位置和纹理坐标,使用float精度。

       其他一切(矢量,HDR颜色等),首先使用half精度,必要时增加精度。移动GPU具有实际half精度支持。通常更快,并且使用更少的功率来进行计算。

       纹理数据的非常简单的操作,使用fixed精度。

四、减少指令数量

      除法写成除数的倒数。

       简化表达式,比如将去除括号,将多项乘法分成多个加法,会简单指令周期。

       sign函数如果不需要x=0的情况,可以自己实现。

        使用纹理读取的方式减轻运算量。

(持续更新)

参考:https://www.cnblogs.com/jaffhan/p/7358383.html;

http://www.cnblogs.com/leeplogs/p/7339097.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值