Unity实验室之Shader优化

前言

最近有人问到写Shader需要注意哪些地方及如何优化,正好笔者也在研究这方面,这里主要针对Unity来说,其它平台或引擎也可以参考,本文主要分如下几个方面来说:Shader的选择属性和状态的设置数据类型选择代码编写举例调试

Unity中Shader的选择

Unity中现在可以新建4种Shader,分别是Standard Surface Shader,Unlit Shader,Image Effect Shader,Compute Shader.
- Standard Surface Shader: 主要用于光照,Unity封装好了许多光照模型,如果项目中需要比较多的光照,可以选用这个类型的Shader
- Unlit Shader:就是普通的Vertex&Fragment Shader,可以用CG语言来写,这种Shader封装的比较少,效果,光照都要自己码代码。
- Image Effect Shader:主要用于后期处理,和Unlit Shader一样,唯一有点区别的是,关闭了Cull,ZWrite,打开了ZTest。
- Compute Shader:这个主要是GPU计算,这个不太熟悉,也就不探讨这个了。

笔记的建议是尽量用Unlit Shader来写,一方面封装的少,可以更深入了解底层,一方面可以自己动手实现任何想要的效果。也没有引入好多光照方面的变量,效率上会比Surface Shader高
如果想省时间,又不想了解光照具体实现的,Surface Shader可以帮你快速实现效果。

属性和状态的设置

  • 大部分shader都有_Color属性,但如果你并没有使用,那么就应该去掉,避免无谓的计算,其它的自动生成的属性或无用的属性也都应该去掉。
  • Alpha Test,Cull,Zwrite,ZTest等能关的都关掉,需要时再打开。
  • 排除延迟渲染的pass(通道)
  • 关闭渲染附加通道&#x
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值