Version: 6000.3
语言: 中文
内置渲染管线的表面着色器所需指令参考
内置渲染管线的表面着色器输入结构参考

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

透明度和 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 曲面细分;该函数计算细分因子。有关详细信息,请参阅表面着色器细分

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

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

其他选项

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

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

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