美文网首页
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