zoukankan      html  css  js  c++  java
  • Shader 入门笔记(三) ShaderLab 初识

    Unity中,Unity Shader 都是ShaderLab 来编写的。ShaderLab 是Unity提供的编写Unity Shader 的一种说明性语言。

        1)Properties :定义了着色器所需要的各种属性。这些属性讲会出现在Inspector。

        2) SubShader:每一个Unity Shader文件可以包含多个SubShader语义块,但最少要有一个。 

        SubShader{

        //可选的

        [Tags]

        //[RenderSetUp]

        Pass{

        }

        //Other Passes

        }

         Pass:每个pass定义了一次完整的渲染流程,但是pass数目过多,往往会造成渲染性能的下降。因此尽量使用最小数目的Pass。

        3)渲染状态设置指令:设置显卡的各种状态。

        状态名称      设置指令                            解释

        Cull        Cull Back | Front | Off                      设置剔除模式;剔除证明/背面/关闭剔除

        ZTest       ZTest Less Greater | LEqual | GEqual |Equal |NotEqual |Always      设置深度测试时使用的函数

        ZWrite       ZWrite On/Off                           开启/关闭 深度写入

        Blend      Blend SrcFactor DstFactor                       开启并设置混合模式

        当在SubShader快中设置了上述渲染状态,将会应用到所有的pass;如果我们不想,可以再pass中单独进行上面的操作。

        4)SubShader 的标签

         键值对(Key/Value Pair),它的健和值都是字符串类型。这些键值对是SubShader和渲染引擎之间的沟通桥梁。

    告诉Unity的渲染引擎:SubShader希望咋样以及何时渲染这个对象。

        Tags {"TagName1" = "Value1" "TagName2" = "Value2"}

        

        标签类型                说明                                              例子

        Queue      控制渲染顺序,指定该物体属于哪一个渲染队列,通过这种方式可以保证所有的透明物体可以在所有不透明的物体后面被渲染    Tags {"Queue" = "Transparent"}

        RenderType    对着色器进行分类。                                                  Tags {"RenderType" = "Opaque"}

        DisableBatching   一些SubShader在使用Unity的批处理功能会出现问题。这时可以通过该标签直接指明是否对该SubShader使用批处理        Tags{"DisableBatching"= "True"}

        ForecNoShadowCasting  控制使用该SubShader的物体是否会投射阴影。                                  Tags {"ForceNoShadowCasting" = "True"}

        IgnoreProjector     如果该标签值为“true”,那么使用该SubShader的物体将不会受Projector的影响。通常用于半透明物体。            Tags {"IgnoreProjector" = "True"}

        CanUseSpriteAtlas  当该SubShader用于精灵(Sprites),将该标签设为“false”

        PreviewType    指明材质面板将如何预览该材质。默认情况下,材质将显示为一个球形,我们通过把标签的值设为“Plane” “SkyBox”来改变预览类型  Tags {"PreviewType" = "Plane"}

    上述标签仅可以在SubShader中声明,而不可以在Pass块中声明。Pass块虽然也可以定义标签,但这些标签不同于SubShader的标签类型。

        

        Pass 块

  • 相关阅读:
    体温填报APP--流程设计
    构建之法阅读笔记(一)
    家庭记账本(七)
    家庭记账本(六)
    家庭记账本(五)
    家庭记账本(四)
    家庭记账本(三)
    家庭记账本(二)
    家庭记账本(一)
    20210207 BaseAdapter
  • 原文地址:https://www.cnblogs.com/u3ddjw/p/8082469.html
Copyright © 2011-2022 走看看