在Unity3D中的渲染优化-优化Shader

1.使用Shader中的LOD技术

Shader的LOD技术可以控制使用的Shader等级,原理是,只有Shader的值小于某个设定的值,这个Shader才会被使用,而使用了那些超过设定值的Shader的物体将不会被渲染执行。

例如,我们通常会在SubShader中使用类似下面的语句来指明该Shader的LOD值:

SubShader{

Tags{"RenderType" =  "Opaque"}

LOD 200

}

我们也可以在Unity Shader的导入面板上看到该Shader的LOD值。在默认情况下,允许的LOD等级是无限大的。这意味着,任何被当前显卡支持的Shader都可以被使用。但是,在某些情况下需要去掉一些有复杂计算的Shade渲染。这时可以使用Shader.maximumLOD或Shader.globalMaximumLOD来设置允许的最大LOD值。

Unity内置的Shader使用了不同的LOD值(Diffuse使用的LOD为200,Bumped Specular的LOD为400)。

2.优化shader的代码

(1)如果可以,尽可能将一些计算放到顶点着色器中进行

(2)在片元着色器中尽可能使用低精度的浮点值进行计算

(3)在使用插值寄存器把数据从顶点着色器传递给下一阶段时,避免使用过多的插值寄存器。

(4)尽可能不要使用分支语句和循环语句

(5)尽可能不要使用discard操作,因为这会影响硬件的某些优化

(6)对于全屏的屏幕后期处理效果来说,尽量把多个特效合并到一个Shader中。例如,哦我们可以把颜色校正和添加噪声等屏幕特效在Bloom特效的最后一个Pass中进行合成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SwordMaster8060

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值