ShaderLab: SubShader Tags

25 篇文章 0 订阅
25 篇文章 0 订阅

ShaderLab: SubShader Tags

Subshaders 使用 tags 来表示,其期望的在渲染引擎中渲染的方式和时间。

Syntax

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

声明了 TagName1 的值为 Value1, TagName2 的值为 Value2。 你可以有任意的tag。

Details

Tags 是基本的键值对。在一个 SubShader 内 tags 被用来声明渲染顺序和其他参数。注意,下列由Unity定义的 tags 必须在 SubShader 块内,不能在 Pass 块内。

除了内建的 Unity 定义的 tags 外,你也自定义 tags 并使用 Material.GetTag 函数查询他们。

Rendering Order - Queue tag

你可以使用 Queue tag 定义你的对象的渲染顺序。一个 shader 渲染队列的取决于,要保证透明 shader 在非透明对象之后被绘制。

这里有4个被定义的渲染队列,但是在预定义队列之间可以有更多的队列。预定义队列为:

  • Background - 该队列在任何其他队列之前渲染。你通常使用该队列,在物体真的需要出现在背景中的时候。
  • Geometry (default) - 用作大多数物体。 非透明几何体,使用该队列。
  • AlphaTest - 需要 alpha 测试的几何体使用该队列。它是与 Geometry 分离的队列,因为在所有固定物体渲染完,在渲染 alpha 测试对象,会更加高效。
  • Transparent - 该队列位于 GeometryAlphaTest 之后,在 back-to-front 顺序下。所有的 alpha 混合(例如 不写入深度缓存的 shader)对象应该在该队列(玻璃,例子特效)。
  • Overlay - 该队列意味着覆盖效果。任何最后渲染的对象,应该放在这个队列(e.g. lens flares)。
Shader "Transparent Queue Example"
{
     SubShader
     {
        Tags { "Queue" = "Transparent" }
        Pass
        {
            // rest of the shader body...
        }
    }
}

一个例子,来说明如何渲染透明对象

某些特殊情况,可以使用队列之间的值。在内部,每个队列由一个整型索引表示; Background 是 1000, Geometry 是 2000, AlphaTest 是 2450, Transparent 是 3000, Overlay 是 4000。如果一个 shader 的队列如下:

Tags { "Queue" = "Geometry+1" }

这将导致该对象,在所有非透明物体渲染后渲染,但是在透明对象渲染之前。队列的索引为 2001( geometry 加一)。在你希望一些对象永远被绘制在另一些对象之间时,这会很有用。例如,在大多数情况下,透明的水应该在非透明物体渲染完后渲染,但是起渲染应该在透明物体渲染之前。

队列到2500 (“Geometry+500”) 是被考虑作为“非透明”使用的,并且为了更好的渲染表现,请优化渲染顺序。更高的渲染顺序被考虑作为 “透明对象” 的渲染队列,并且将对象按照距离排序,由远及近的渲染。天空盒在所有不透明对象渲染完,和透明对象渲染之前渲染。

RenderType tag

RenderType 该 tag 将 shader 分类为几个预定义的组,例如 是一个 非透明 shader,或者是一个 alpha 测试 shader 等。该 tag 被 Shader Replacement 使用,在某些情况,用来产生 camera’s depth texture

DisableBatching tag

一些 shader (大多数为做对象空间顶点变形的 shader) 在 Draw Call Batching 被使用时,不会工作 – 这是因为,batching 会将所有的几何体转换到世界空间,因此将丢失“对象空间”。

DisableBatching tag 可以被用来禁止 Batching。其有三个可能的值: “True” (总是对该 shader 禁用 batching), “False” (不禁用 batching;这是默认值) 和 “LODFading” (当 LOD fading 激活时禁用 batching;通常用于树木)。

ForceNoShadowCasting tag

如果 ForceNoShadowCasting tag 被定义,并且值为 “True”,那么使用该 subshader 渲染的对象,将永远不会投射阴影。这通常在你置换透明对象 shader 时不希望对象继承来自其他 subshader 的阴影时,非常有用。

IgnoreProjector tag

如果 IgnoreProjector tag 被定义,并且值为 “True”,那么使用该 shader 的对象,不会被 Projector 影响。这通常在半透明对象上很有用,因为 Projectors 无法影响他们。

CanUseSpriteAtlas tag

设置 CanUseSpriteAtlas tag 为 “False” 如果该 shader 是为精灵写的,并且当他们被包装为图集的时候,该 shader 将不会起作用(请看 Sprite Packer)。

PreviewType tag

PreviewType 指示材质的监控预览该如何显示该材质。默认情况下,材质显示为球体,但是 PreviewType 也可以被设置为 “Plane” (将会以2D屏幕的方式展现) 或 “Skybox” (将会展现为天空盒)。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值