版本:Unity 6 (6000.0)
语言:English
内置渲染管线的表面着色器必需指令参考
内置渲染管线的表面着色器输入结构参考

内置渲染管线的表面着色器可选指令参考

透明度和 Alpha 测试alphaalphatest指令控制。透明度通常有两种类型:传统的 Alpha 混合(用于淡出物体)或更物理真实的“预乘混合”(允许半透明表面保留正确的镜面反射)。启用半透明会使生成的表面着色器在 GPU 上运行的程序。 更多信息
参见 词汇表
代码包含混合命令;而启用 Alpha 剪裁将在生成的像素计算机图像中的最小单位。像素大小取决于屏幕分辨率。像素灯光在每个屏幕像素处计算。 更多信息
参见 词汇表
着色器中进行片段丢弃,基于给定的变量。

  • alphaalpha:auto - 将为简单的照明函数选择淡入淡出透明度(与alpha:fade相同),并为基于物理的照明函数选择预乘透明度(与alpha:premul相同)。
  • alpha:blend - 启用 Alpha 混合。
  • alpha:fade - 启用传统的淡入淡出透明度。
  • alpha:premul - 启用预乘 Alpha 透明度。
  • alphatest:VariableName - 启用 Alpha 剪裁透明度。截止值在具有 VariableName 的浮点变量中。您可能还需要使用addshadow指令生成正确的阴影投射通道。
  • keepalpha - 默认情况下,不透明表面着色器编写内置渲染管线着色器的一种简化方法。 更多信息
    参见 词汇表
    将 1.0(白色)写入 Alpha 通道,无论输出结构的 Alpha 中输出什么或照明函数返回什么。使用此选项允许即使对于不透明表面着色器也保留照明函数的 Alpha 值。
  • decal:add - 加性贴花着色器(例如地形 AddPass)。这适用于位于其他表面顶部的对象,并使用加性混合。参见表面着色器示例
  • decal:blend - 半透明贴花着色器。这适用于位于其他表面顶部的对象,并使用 Alpha 混合。参见表面着色器示例

自定义修改器函数可用于更改或计算传入的顶点数据,或更改最终计算的片段颜色。

  • vertex:VertexFunction - 自定义顶点修改函数。此函数在生成的顶点着色器在渲染 3D 模型时,在模型的每个顶点上运行的程序。 更多信息
    参见 词汇表
    开始时调用,并且可以修改或计算每个顶点的数据。参见表面着色器示例
  • finalcolor:ColorFunction - 自定义最终颜色修改函数。参见表面着色器示例
  • finalgbuffer:ColorFunction - 用于更改 G 缓冲区内容的自定义延迟路径。

阴影和细分 - 可以给出其他指令来控制阴影和细分的处理方式。

  • addshadow - 生成阴影投射通道。通常与自定义顶点修改一起使用,以便阴影投射也获得任何过程化的顶点动画。通常,着色器不需要任何特殊的阴影处理,因为它们只需使用其回退的阴影投射通道即可。
  • fullforwardshadows - 在正向渲染路径渲染管线用于渲染图形的技术。选择不同的渲染路径会影响灯光和阴影的计算方式。某些渲染路径比其他渲染路径更适合不同的平台和硬件。 更多信息
    参见 词汇表
    中支持所有灯光阴影类型。默认情况下,着色器仅支持正向渲染一种渲染路径,它以一次或多次传递渲染每个对象,具体取决于影响对象的光源。灯光本身也会根据其设置和强度由正向渲染以不同的方式处理。 更多信息
    参见 词汇表
    中一个方向光的阴影(以节省内部着色器变体数量)。如果需要在正向渲染中使用点光源或聚光灯阴影,请使用此指令。
  • tessellate:TessFunction - 使用 DX11 GPU 细分;该函数计算细分因子。有关详细信息,请参见表面着色器细分

代码生成选项 - 默认情况下,生成的表面着色器代码尝试处理所有可能的照明/阴影/光照贴图预渲染的纹理,其中包含光源对场景中静态对象的影响。光照贴图覆盖在场景几何体上以创建照明效果。 更多信息
参见 词汇表
场景。但是,在某些情况下,您知道不需要其中的一些场景,并且可以调整生成的代码以跳过它们。这会导致生成更小的着色器,加载速度更快。

  • exclude_path:deferredexclude_path:forward - 不要为给定的渲染路径生成通道(延迟着色内置渲染管线中的一种渲染路径,它对可以影响游戏对象的灯光数量没有限制。所有灯光都按像素进行评估,这意味着它们都与法线贴图等正确交互。此外,所有灯光都可以具有 Cookie 和阴影。 更多信息
    参见 词汇表
    正向分别)。
  • noshadow - 禁用此着色器中的所有阴影接收支持。
  • noambient - 不应用任何环境光或灯光探针灯光探针存储有关光线如何穿过场景中空间的信息。在给定空间内排列的光探针集合可以改善该空间内移动对象和静态 LOD 场景的照明。 更多信息
    参见 词汇表
  • novertexlights - 在正向渲染中不应用任何灯光探针或每个顶点的灯光。
  • nolightmap - 禁用此着色器中的所有光照贴图支持。
  • nodynlightmap - 禁用此着色器中的运行时动态全局照明一组模拟直接和间接照明以提供逼真照明结果的技术。
    参见 词汇表
    支持。
  • nodirlightmap - 禁用此着色器中的方向光照贴图支持。
  • nofog - 禁用所有内置雾支持。
  • nometa - 不生成“元数据”通道(光照贴图和动态全局照明使用该通道提取表面信息)。
  • noforwardadd - 禁用正向渲染加性通道。这使得着色器支持一个完整的定向光,所有其他灯光都按顶点/SH 计算。也使着色器更小。
  • nolppv - 禁用此着色器中的灯光探针代理体积一个组件,允许您对无法使用烘焙光照贴图的大型动态游戏对象(例如,大型粒子系统或蒙皮网格)使用更多照明信息。 更多信息
    参见 词汇表
    支持。
  • noshadowmask - 禁用此着色器的阴影蒙版支持(阴影蒙版与相应的灯光贴图具有相同 UV 布局和分辨率的纹理。 更多信息
    参见 词汇表
    和距离阴影蒙版)。

其他选项

  • softvegetation - 使表面着色器仅在启用软植被时渲染。
  • interpolateview - 在顶点着色器中计算视方向并进行插值;而不是在像素着色器中计算它。这可以使像素着色器更快,但会占用更多纹理插值器。
  • halfasview - 将半方向向量传递到照明函数而不是视方向。半方向将在每个顶点处计算和标准化。这更快,但不完全正确。
  • approxview - 在 Unity 5.0 中已移除。请改用interpolateview
  • dualforward - 在正向渲染路径中使用双光照贴图。
  • dithercrossfade - 使表面着色器支持抖动效果。然后,您可以将此着色器应用于使用配置为交叉淡入淡出过渡模式的LOD 组一个组件,用于管理游戏对象的细节层次 (LOD)。 更多信息
    参见 词汇表
    组件的游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路径点等。游戏对象的功能由附加到它的组件定义。 更多信息
    参见 词汇表

要查看使用上述不同选项的确切区别,可以使用着色器检查器中的“显示生成代码”按钮。

内置渲染管线的表面着色器必需指令参考
内置渲染管线的表面着色器输入结构参考