使用采样器状态
ShaderLab:属性
ShaderLab 语法
Unity 中的所有着色器文件都是用一种称为“ShaderLab”的声明性语言编写的。在文件中,使用嵌套括号语法来声明着色器的各个描述,例如材质检查器中显示的着色器属性、要执行的硬件回退类型以及要使用的混合模式类型。实际的着色器代码写在同一着色器文件中的 CGPROGRAM 片段中。有关详细信息,请参阅编写表面着色器和编写顶点和片段着色器。
此页面和子页面描述了嵌套括号“ShaderLab”的语法。 CGPROGRAM 代码片段是用常规的 HLSL/Cg 着色语言编写的,请参阅相关文档页面。
Shader 是着色器文件的根命令。每个文件必须定义一个(并且只有一个)Shader。着色器指定当这些对象的材质使用此着色器时如何渲染这些对象。
语法
Shader "name" { [Properties] Subshaders [Fallback] [CustomEditor] }
定义着色器。此着色器将以指定的名称显示在材质检查器中。着色器可以选择定义在材质检查器中显示的属性列表。下面是子着色器列表,以及可选的后备和/或自定义编辑器声明。
详细信息属性
着色器可以有属性列表。在着色器中声明的所有属性都显示在 Unity 的材质检查器中。典型属性包括对象颜色、纹理或着色器使用的任何值。
子着色器和回退
每个着色器都包含一组子着色器。必须包含至少一个子着色器。加载着色器时,Unity 将检查子着色器列表并选择最终用户机器支持的第一个子着色器。如果不支持子着色器,Unity 将尝试使用备用着色器。
不同的显卡有不同的功能。这给游戏开发者带来了永恒的问题。您希望您的游戏在最新硬件上看起来很棒unity shader代码提示,但您不希望这些出色的图形仅限于最新硬件的 3%。这是需要子着色器的地方。您可以创建一个具有您能想象到的所有精美图形效果的子着色器贴图笔刷,然后为旧显卡添加更多子着色器。这些子着色器可能会较慢地实现您想要的效果,或者可能选择不实现某些细节。
着色器细节级别 (LOD) 和着色器替换是两种同样基于子着色器的技术,请参阅着色器 LOD 和着色器替换以获取富有想象力的信息。
例子
这是最简单的着色器之一:
这个shader定义了颜色属性_Color__(在Material Inspector中显示为_Main Color_),默认值为(1,0.5,0.5,1) __。然后,定义了一个单独的子着色器。这个子着色器包含一个通道,可以启用固定功能的顶点光照并为其设置基础材质。
有关更复杂的示例unity shader代码提示,请参阅表面着色器示例或顶点和片段着色器示例。
另见
使用采样器状态
ShaderLab:属性