Shader中的Tags

SubShader内部可以有标签(Tags)的定义。Tags指定了这个SubShader的渲染顺序(时机),以及其他的一些设置。


1、"Queue"标签 :定义渲染顺序,预制值为 :

      (1)、Background :值为1000,多用于天空盒

      (2)、Geometry :值为2000,大部分物体都处于这个队列中,不透明的物体也处于这个队列中,这个队列内部的物体的渲染顺序会作进一步的优化(从近到远early-z test可以剔除不需经过FS处理的片元)。其它队列中的物体都是按照空间位置的从远到近进行渲染的

      (3)、AlphaTest :值为2450,已进行AlphaTest的物体处于这个队列中

      (4)、Transparent :值为3000,透明物体

      (5)、Overlay :值为4000,镜头光晕

      (6)、用户可以自定义值 :例如 :"Queue" = "Background + 100"



2、"RenderType"标签 :Unity可以运行时替换符合特定RenderType的所有Shader

   Unity内建的RenderType包括 :

      (1)、Opaque :绝大部分不透明的物体使用的都是这个标签

      (2)、Transparent :绝大多数透明的物体使用的都是这个,包括粒子特效

      (3)、Background :天空盒

      (4)、Overlay :GUI、镜头光晕使用

      (5)、可以自定义RenderType,可以参考Rendering with Replaced Shaders




3、ForceNoShadowCasting :值为"true",表示不接收阴影




4、IgnoreProjector :值为"true",表示不接收Projector组件的投影





Pass中的Tags

      最重要的Tag是"LightMode",指定Pass和Unity的某一种渲染路径(Rendering Path)搭配使用


        (1)、ForwardBase :可支持顶点光照

        (2)、ForwardAdd :

        (3)、Always :永远都渲染,不处理光照

        (4)、ShadowCaster :渲染产生阴影的物体

        (5)、ShadowCollector :收集物体阴影到屏幕坐标buffer里



  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在UnityTags是一种特殊的关键字,用于在Shader指定一些渲染相关的信息,例如渲染类型、渲染队列、渲染器名称等。Tags通常被用于告诉Unity如何处理Shader,以及如何在场景使用该Shader。 下面是一些常用的Tags及其含义: - RenderType:指定渲染类型,例如Opaque(不透明)、Transparent(半透明)、TransparentCutout(半透明带透明贴图)等。 - Queue:指定渲染队列,用于控制Shader的渲染顺序。具有相同队列的Shader将按照其在场景的顺序进行渲染。 - DisableBatching:禁用批处理,用于控制是否对多个物体使用相同的Shader进行批处理。如果禁用批处理,则会为每个物体单独进行渲染,可能会影响性能。 - RenderPipeline:指定渲染管线,用于控制Shader在哪个渲染管线使用(例如Built-in或Universal Render Pipeline)。 - ShaderLOD:指定Shader的LOD级别,用于控制Shader在不同距离下的细节程度。较远的物体可以使用较低的LOD级别以提高性能。 Tags通常出现在Shader文件的SubShader,用于告诉Unity如何处理该SubShader。例如,在以下示例,我们使用RenderType标签指定该SubShader渲染类型为Opaque: ```ShaderLab SubShader { Tags { "RenderType"="Opaque" } // ... } ``` 除了在Shader文件使用Tags之外,我们还可以在Unity Editor使用Tags进行场景配置。例如,在设置相机的渲染路径时,我们可以使用Tags来指定渲染管线: ```C# Camera.main.depthTextureMode = DepthTextureMode.Depth; Camera.main.renderingPath = RenderingPath.Forward; Camera.main.actualRenderingPath = RenderingPath.Forward; Camera.main.clearFlags = CameraClearFlags.SolidColor; Camera.main.backgroundColor = Color.black; Camera.main.allowHDR = true; Camera.main.allowMSAA = true; Camera.main.allowDynamicResolution = true; Camera.main.SetReplacementShader(Shader.Find("MyShader"), "RenderType=Opaque"); ``` 使用Tags可以为我们提供更多的灵活性和控制权,使得Shader在不同的场景都能够得到良好的表现。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值