shaderlab 关键点记录

1.C#获取着色器标签的接口

可以使用 Material.GetTag API 从 C# 脚本中读取子着色器标签,

2.常用的标签

subshader的标签

"RenderPipeline" = "[name]" //向 Unity 告知此子着色器是否与 URP 或 HDRP 兼容。

值:UniversalRenderPipeline //此子着色器仅与 URP 兼容。

值:HighDefinitionRenderPipeline //此子着色器仅与 HDRP 兼容。

标签未声明:此子着色器与 URP 和 HDRP 不兼容。


pass标签

"Queue" = "[queue name]" pass在name这个渲染队列

"Queue" = "[queue name] + [offset]"在相对于命名队列的给定偏移处使用未命名队列。

这种用法十分有用的一种示例情况是透明的水,它应该在不透明对象之后绘制,但是在透明对象之前绘制。

值:Background 背景渲染队列。

Geometry 几何体渲染队列。

AlphaTest AlphaTest 渲染队列。

Transparent 指定透明渲染队列。

Overlay 覆盖渲染队列。

要是需要动态设置渲染队列,可以在C#中使用下面的枚举和api进行设置

在 C# 脚本中,可以通过使用 Rendering.RenderQueue 枚举设置 Material.renderQueue 的值


RenderType标签

"RenderType" = "[renderType]" 渲染类型 这个标签标识具有匹配 RenderType 标签值的子着色器

内置着色器中的着色器替换标签:

Opaque:大部分着色器(法线自发光反射和地形着色器)。

Transparent:大部分半透明着色器(透明、粒子、字体和地形附加通道着色器)。

TransparentCutout:遮罩透明度着色器(透明镂空、两个通道植被着色器)。

Background:天空盒着色器。

Overlay:光环、光晕着色器。

TreeOpaque:地形引擎树皮。

TreeTransparentCutout:地形引擎树叶。

TreeBillboard:地形引擎公告牌树。

Grass:地形引擎草。

GrassBillboard:地形引擎公告牌草。深度

这个标签是子着色器的标签


ForceNoShadowCasting 标签

"ForceNoShadowCasting" = "[state]" 标签阻止子着色器中的几何体投射(有时是接收)阴影。确切行为取决于渲染管线和渲染路径。如果使用着色器替换,但是不希望从其他子着色器继承阴影通道,这可能非常有用。

值: True

Unity 阻止此子着色器中的几何体投射阴影。在内置渲染管线中,对于前向、旧版顶点光照或旧版延迟渲染路径,Unity 还会阻止此子着色器中的几何体接收阴影。在 HDRP 中,这不会阻止几何体投射接触阴影。

False

Unity 不会阻止此子着色器中的几何体投射或接收阴影。这是默认值。


DisableBatching 标签

"DisableBatching" = "[state]" Unity 是否对使用此子着色器的所有几何体阻止动态批处理。

值:

True :Unity 对使用此子着色器的几何体阻止动态批处理。

False :Unity 不会对使用此子着色器的几何体阻止动态批处理。这是默认值。

LODFading:对于属于 Fade Mode 值不为 None 的 LODGroup 一部分的所有几何体,Unity 会阻止动态批处理。否则,Unity 不会阻止动态批处理。


IgnoreProjector 标签

"IgnoreProjector" = "[state]" Unity 在渲染此几何体时是否忽略投影器。

值:

True:Unity 在渲染此几何体时忽略投影器。

False:Unity 在渲染此几何体时不会忽略投影器。这是默认值。


PreviewType 标签

PreviewType 子着色器 Tag 告知 Unity 编辑器如何在材质 Inspector 中显示使用此子着色器的材质。

"PreviewType" = "[shape]" Unity 编辑器用于显示使用此子着色器的材质预览的形状。

值;

球体:在球体上显示材质。这是默认值。

平面 (Plane):在平面上显示材质。

Skybox:在天空盒上显示材质。


CanUseSpriteAtlas 标签

在使用 Legacy Sprite Packer 的项目中使用此子着色器标签可警告用户着色器依赖于原始纹理坐标,因此不应将其纹理打包到图集中。

"CanUseSpriteAtlas" = "[state]"使用此子着色器的精灵是否与 Legacy Sprite Packer 兼容。

值:

True:使用此子着色器的精灵与 Legacy Sprite Packer 兼容。这是默认值。

False:使用此子着色器的精灵与 Legacy Sprite Packer 不兼容。

CanUseSpriteAtlas 值为 False 的子着色器与带有 Legacy Sprite Packer 打包标签的精灵一起使用时,Unity 会在 Inspector 中显示错误消息。

相关推荐
黄思搏1 天前
Unity坐标转换指南 - 3D与屏幕UI坐标互转
ui·3d·unity
weixin_424294671 天前
在 Unity 游戏开发中,为视频选择 VP8 还是 H.264
unity·游戏引擎
一步一个foot-print2 天前
【Unity】Light Probe 替代点光源给环境动态物体加光照
unity·游戏引擎
@LYZY2 天前
Unity 中隐藏文件规则
unity·游戏引擎·游戏程序·vr
霜绛2 天前
C#知识补充(二)——命名空间、泛型、委托和事件
开发语言·学习·unity·c#
Sator12 天前
使用Unity ASE插件设置数值不会生效的问题
unity·游戏引擎
程序猿追2 天前
轻量级云原生体验:在OpenEuler 25.09上快速部署单节点K3s
人工智能·科技·机器学习·unity·游戏引擎
B0URNE2 天前
【Unity基础详解】(7)Unity核心:动画系统
unity·游戏引擎
我的golang之路果然有问题2 天前
mac M系列芯片 unity 安装会遇到的错误以及解决
经验分享·学习·macos·unity·游戏引擎
Hody913 天前
【XR开发系列】2025 年 XR 开发入门,我该选择 Unity 还是 Unreal Engine?
unity·xr·虚幻