Unity Shader - ShaderLab: Pass Tags Pass的Tags标签

本文深入探讨Unity ShaderLab中Pass的使用,包括Tags标签的作用、语法及如何通过它们控制渲染流程,特别关注光照模型标签(LightModetag)和PassFlags的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录:Unity Shader - 知识点目录(先占位,后续持续更新)
原文:ShaderLab: Pass
版本:2019.1

ShaderLab: Pass

Tags Pass的Tags标签

Pass中使用tags标签可以告诉渲染引擎如果来渲染。

Syntax

语法

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

指定 TagName1 的值为 Value1TagName2 值为 Value2。你可以根据你的需求来添加多个tag内容。

Details

Tags 是一个键值对。Pass 的Tags用于控制该Pass在Unity光照管线中的定位(环境光照,顶点光照,像素光照,等等)。注意下面的tags会被Unity识别,这些tags值能在Pass块中定义,不是再SubShader块下。

LightMode tag

光照模型的tag

LightMode tag 定义了该Pass在Unity光照管线的角色定位。查看 render pipeline 了解更多详情。这些tag很少同于手写;通常需要与光照交互的shader才需要添加这些tag,如Surface Shader都处理了这些细节内容。

LightMode的tag对应可能的值:

  • Always:该对象总会被渲染;但没有光照应用。
  • ForwardBase:用于 Forward rendering(正向渲染),环境光,主要的方向光,顶点或是SH球谐函数和静态烘焙光照贴图都应用了。
  • ForwardAdd:用于 Forward rendering(正向渲染);逐像素的叠加光照应用,每个有效的灯光都会调用一次这样的pass。
  • Deferred:用于 Deferred Shading(延迟着色渲染);渲染到G-Buffer。
  • ShadowCaster:渲染对象深度到一张shadowmap中或是深度纹理中。
  • MotionVectors:用于计算每个对象的运动向量。
  • PrepassBase:用于 legacy Deferred Lighting(旧版本的延迟光照渲染),渲染法线和高光指数。
  • PrepassFinal:用于 legacy Deferred Lighting(旧版本的延迟光照渲染),渲染最终的纹理,光照,自发光的组合颜色。
  • Vertex:用于 legacy Vertex Light rendering(旧版本的顶点光照渲染),当对象不使用静态的光照烘焙贴图时使用;所有顶点光照都会应用。
  • VertexLMRGBM:用于 legacy Vertex Lit rendering (旧版本的顶点光照渲染),当对象是使用了静态光照烘焙贴图时使用;该静态光照烘焙贴图使用RGBM编码(PC 和 游戏主机平台使用)。
  • VertexLM:用于 legacy Vertex Lit rendering(旧版本的顶点光照渲染);当对选哪个使用了静态光照烘焙贴图时使用;静态光照烘焙贴图使用double-LDR编码(移动平台使用)。

PassFlags tag

一个pass可以指定一个标记,告诉 rendering pipeline (Unity渲染管线)如何传递数据给该pass。这可以通过PassFlags来完成,使用一个用空格分隔的flag名称。当前支持的flags有(官方提供的连接都看了,看到最后又倒回了这个页面,没有说明这个PassFlags是哪个,而且下面哪个flags也没有以空格来分开啊,真的无语了):

  • OnlyDirectional:用于ForwardBase类型的pass,这个flag会让unity只会将主要的方向光和环境光/光探针数据传入该shader中。这意味着non-important非重要的光照数据是不会被传入顶点光照或是球谐函数的shader变量中的。查看 Forward rendering 了解更多详情。

RequireOptions tag

一个pass可以指定它会在满足某些外部条件时才被绘制渲染用。这可以使用 RequireOptions tag来完成,值是一个使用空格分隔的字符串。当前支持的有:

  • SoftVegetation:pass的渲染仅在 Quality 窗口中的 Soft Vegetation 开启时。

See Also

SubShader也可设置Tags,查看 SubShader Tags

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值