美文网首页Unity3D 游戏开发技术
在Unity3D中的渲染优化-优化Shader

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

作者: SwordMaster | 来源:发表于2017-11-17 17:13 被阅读25次

    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中进行合成。

    相关文章

      网友评论

        本文标题:在Unity3D中的渲染优化-优化Shader

        本文链接:https://www.haomeiwen.com/subject/vmbjvxtx.html