美文网首页
ShaderLab: Pass Tags

ShaderLab: Pass Tags

作者: Bonging | 来源:发表于2018-09-25 20:36 被阅读0次

    https://docs.unity3d.com/Manual/SL-PassTags.html

            pass通过tags告诉渲染引擎它们期望何时、怎样被渲染。


    语法

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

            指定TagName1持有Value1的值,TagName2持有Value2的值。可以随心所欲的指定许多tags。


    细节

            tags是基础的键值对,在一个pass中tags用来控制这个pass在光照流水线中扮演一个什么样的角色(环境光,顶点光照,像素光照等等),并且其他一些选项。请注意下面的tag只会在pass中被识别,在subshader中不会被识别。


    LightMode tag

            LightMode tag定义了pass在光照流水线中的角色。查看渲染流水线章节(链接见原网页)获取更多信息。这些tag很少手动调用,大多数需要与光照交互的shader都会被写成表面shader,并且所有这些细节都会被考虑到。

            LightMode tag的可选值是:

            ·Always:始终渲染;没有光照。

            ·ForwardBase:用于正向渲染,应用环境光,主平行光,顶点/ SH光和光照贴图。

            ·ForwardAdd:用于正向渲染,应用逐像素添加的光照,每个光照都会通过pass一次。

            ·Deferred:用于延时着色,渲染g-buffer。

            ·ShadowCaster:将对象深度渲染到阴影贴图或深度纹理中。

            ·MotionVectors:用于计算每个对象的运动矢量。

            ·PrepassBase:用于旧的延时光照,渲染法线和镜面反射指数。

            ·PrepassFinal:用于旧的延时光照,通过组合纹理,光照和自发光来渲染最终颜色。

            ·Vertex:当对象未进行光照贴图时,用于旧的顶点光照渲染 ; 应用所有顶点光照。

            ·VertexLMRGBM:在对象进行光照贴图时用于旧的Vertex光照渲染;在lightmap是RGBM编码的平台上(PC和控制台)。

            ·VertexLM:在对象进行光照贴图时用于旧的Vertex光照渲染;在光照贴图采用双LDR编码的平台上(移动平台)。


    PassFlags tag

            一个pass可以用一个标志表明改变渲染流水线是怎么样传递数据给pass的。这通过PassFlags tag来完成,用一个具有空格分离标志名字的值。目前支持的标志是:

            ·OnlyDirectional:当pass使用ForwardBase类型时,这个标志使只有主平行光和环境光/lightprobe数据可以传递到shader。这意味着不重要的光照数据不会被传递到顶点光照或是球面谐波shader变量中。查看正向渲染部分获取更多信息(链接见原网页)。


    RequireOptions tag

            一个pass可以表明它只在一些额外的条件被满足的情况下被渲染,这是通过使用RequireOptions tag来完成的,值为一个空格分离符的字符串选项。目前被Unity支持的选项是:

            ·SoftVegetation:只有当在Quality Settings选项中Soft Vegetation被开启时才渲染此通道。


    也可以看看

            SubShader也可以设置Tag,请看SubShader Tag章节(链接见原网页)。

    相关文章

      网友评论

          本文标题:ShaderLab: Pass Tags

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