包含此页的版本:
不含此页的版本:
此页面包含有关使用Properties块ShaderLabUnity 用于定义 Shader 对象结构的语言。更多信息
请参阅术语表定义材料属性的代码着色器在 GPU 上运行的程序。更多信息
请参阅术语表对象。
| 功能名称 | 普遍渲染管线(Render Pipeline) 获取场景内容并将其显示在屏幕上的一系列作。Unity 允许您从预构建的渲染管道中进行选择,或编写自己的渲染管道。更多信息 请参阅术语表(URP) |
高清渲染管线 (HDRP) | 定制 SRP | 内置渲染管线 |
|---|---|---|---|---|
| ShaderLab:属性块 | 是 在 HLSL 代码 中,必须将每个材质的变量放在相同的 CBUFFER用于 SRP Batcher 兼容性。 |
是 在 HLSL 代码 中,必须将每个材质的变量放在相同的 CBUFFER用于 SRP Batcher 兼容性。 |
是 在 HLSL 代码 中,必须将每个材质的变量放在相同的 CBUFFER用于 SRP Batcher 兼容性。 |
是的 |
| 签名 | 功能 |
|---|---|
Properties{<Material property declaration><Material property declaration>}
|
将给定属性保存为材质资源的一部分,并在渲染期间使用存储在材质资源中的值。 一个 Properties块可以包含任意数量的材料属性声明。 |
所有材料属性声明都遵循以下基本格式:
[optional: attribute] name("display text in Inspector", type name) = default value
确切的语法因类型而异。
本节包含以下信息:
默认值的类型名称和语法取决于属性的类型。
在着色器代码中,通常所有属性名称都以下划线字符开头。本页上的示例遵循此约定。
| 类型 | 语法示例 | 评论 |
|---|---|---|
| 整数 | _ExampleName ("Integer display name", Integer) = 1 |
这种类型由实整数支持(与旧版不同Int下面描述的类型,由浮点数支持)。当你想使用整数时,请使用它而不是 Int。 |
| Int(旧版) | _ExampleName ("Int display name", Int) = 1 |
注意:此旧类型由浮点数而不是整数支持。仅出于向后兼容性原因,支持它。使用Integertype 代替。 |
| 浮 |
_ExampleName ("Float display name", Float) = 0.5_ExampleName ("Float with range", Range(0.0, 1.0)) = 0.5
|
范围滑块的最大值和最小值包括在内。 |
| 纹理2D |
_ExampleName ("Texture2D display name", 2D) = "" {}_ExampleName ("Texture2D display name", 2D) = "red" {}
|
在默认值字符串中输入以下值以使用 Unity 的内置纹理之一:“白色”(RGBA:1,1,1),“黑色”(RGBA:0,0,0,1),“灰色”(RGBA:0.5,0.5,0.5,1),“凹凸”(RGBA:0.5,0.5,1,1)或“红色”(RGBA:1,0,0,1)。 如果将字符串留空或输入无效值,则默认为“灰色”。 注意:这些默认纹理在检查器中不可见。 |
| 纹理2DArray | _ExampleName ("Texture2DArray display name", 2DArray) = "" {} |
有关详细信息,请参阅纹理数组。 |
| 纹理3D | _ExampleName ("Texture3D", 3D) = "" {} |
默认值为“灰色”(RGBA:0.5,0.5,0.5,1)纹理。 |
| 立方体贴图(Cubemap) 六个方形纹理的集合,可以表示环境中的反射或几何体后面绘制的天空盒。这六个正方形形成了一个围绕物体的假想立方体的面;每个面表示沿世界轴方向(上、下、左、右、前和后)的视图。更多信息 请参阅术语表 |
_ExampleName ("Cubemap", Cube) = "" {} |
默认值为“灰色”(RGBA:0.5,0.5,0.5,1)纹理。 |
| 立方体贴图数组 | _ExampleName ("CubemapArray", CubeArray) = "" {} |
请参阅立方体贴图数组。 |
| 颜色 | _ExampleName("Example color", Color) = (.25, .5, .5, 1) |
这映射到着色器代码中的 float4。 材质检查器 显示一个颜色选取器。如果希望将值编辑为四个单独的浮点数,请使用 Vector 类型。 |
| 向量 | _ExampleName ("Example vector", Vector) = (.25, .5, .5, 1) |
这映射到着色器代码中的 float4。 材质检查器 显示四个单独的浮点字段。如果希望使用颜色选择器编辑值,请使用颜色类型。 |
Unity 为材质属性保留了一些名称。当您使用这些名称之一创建材质属性时,Unity 会执行预定义作。除非您打算使用此功能,否则不要使用这些名称。
| 名字 | 语法示例 | 功能 |
|---|---|---|
| _TransparencyLM | _TransparencyLM ("Transmissive Texture", 2D) = "white" {} |
在光照贴图期间启用自定义RGB透明度。 有关更多信息,请参阅光照贴图和着色器。 |
Material 属性声明可以有一个可选属性,告诉 Unity 如何处理它们。
除了此处列出的属性外,您还可以使用相同的语法将 MaterialPropertyDrawer 添加到材质属性。这些允许您控制材质属性在检查器一个Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
请参阅术语表窗。
| 属性 | 功能 |
|---|---|
[Gamma] |
指示浮点或矢量属性使用 sRGB 值,这意味着如果项目中的颜色空间需要,则必须将其与其他 sRGB 值一起转换。有关详细信息,请参阅着色器程序中的属性。 |
[HDR] |
指示纹理或颜色属性使用高动态范围 (HDR) 值。 对于纹理属性,如果分配了 LDR 纹理,Unity 编辑器会显示警告。对于颜色属性,Unity 编辑器使用 HDR 颜色选择器来编辑此值。 |
[HideInInspector] |
告诉 Unity 编辑器在 Inspector 中隐藏此属性。 |
[MainTexture] |
设置材质的主纹理,你可以使用 Material.mainTexture 访问该纹理。 默认 情况下,Unity 会考虑属性名称为 name _MainTex作为主要纹理。如果您的纹理具有不同的属性名称,但您希望 Unity 将其视为主纹理,请使用此属性。如果多次使用此属性,Unity 将使用第一个属性并忽略后续属性。 注意:使用此属性设置主纹理时,当你使用纹理mipmap流送调试视图模式或自定义调试工具时,纹理在 游戏(Game) 视图中不可见。 |
[MainColor] |
设置材质的主颜色,您可以使用 Material.color 访问该颜色。 默认情况下,Unity 会考虑属性名称为 name _Color作为主色调。如果您的颜色具有不同的属性名称,但您希望 Unity 将其视为主颜色,请使用此属性。如果多次使用此属性,Unity 将使用第一个属性并忽略后续属性。 |
[NoScaleOffset] |
告诉 Unity 编辑器隐藏此纹理属性的平铺和偏移字段。 |
[Normal] |
指示纹理属性需要法线贴图。 如果分配了不兼容的纹理,Unity 编辑器会显示警告。 |
[PerRendererData] |
指示纹理属性将以 MaterialPropertyBlock 的形式来自每个渲染器的数据。 材质检查器 将这些属性显示为只读。 |