Version: 6000.3
语言: 中文
旧版预生成着色器
普通着色器系列

内置着色器的用法和性能

Unity 中的着色器通过材质定义表面应如何渲染的资产。更多信息
请参阅术语表
,本质上结合了着色器在 GPU 上运行的程序。更多信息
请参阅术语表
带有纹理等参数的代码。有关着色器/材质关系的深入解释,请点击此处

材质属性将出现在检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
请参阅术语表
当材质本身或游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表
使用材质的。材质检查器如下所示:

每种材质在检查器中看起来都会略有不同,具体取决于它使用的特定着色器。着色器 iself 确定可在 Inspector 中调整的属性类型。材料检查器在材料参考页面中有详细描述。请记住,着色器是通过材质实现的。因此,虽然着色器定义了将在检查器中显示的属性,但每个材质实际上都包含来自滑块、颜色和纹理的调整数据。关于这一点,要记住的最重要的一点是,单个着色器可以在多个材质中使用,但单个材质不能使用多个着色器。

着色器名称

更改旧版着色器的名称可能会影响其功能。这是因为在 Unity 5.0 之前,着色器的某些功能由其路径和名称决定。这仍然是旧版着色器的工作方式。有关详细信息,请参阅旧着色器名称

性能注意事项

有许多因素会影响游戏的整体性能。本页将专门讨论内置着色器的性能注意事项。着色器的性能主要取决于两件事:着色器本身和渲染路径渲染管线用于渲染图形的技术。选择不同的渲染路径会影响照明和着色的计算方式。某些渲染路径比其他路径更适合不同的平台和硬件。更多信息
请参阅术语表
由项目或特定相机在场景中创建特定视点图像的组件。输出要么绘制到屏幕上,要么作为纹理捕获。更多信息
请参阅术语表
.有关编写自己的着色器时的性能提示,请参阅 ShaderLab 着色器性能页面。

渲染路径和着色器性能

从 Unity 支持的渲染路径来看,延迟着色(Deferred Shading) 内置渲染管线中的渲染路径,对可能影响游戏对象的光源数量没有限制。所有光源都是按像素计算的,这意味着它们都与法线贴图等正确交互。此外,所有光源都可以有饼干和阴影。更多信息
请参阅术语表
顶点光照路径具有最可预测的性能。在延迟着色中,每个对象通常绘制一次,无论什么灯光影响它。同样,在顶点光照中,每个对象通常绘制一次。因此,着色器的性能差异主要取决于它们使用的纹理数量以及它们所做的计算。

前向渲染路径中的着色器性能

前向渲染路径中,着色器的性能取决于着色器本身和场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表
.以下部分将对详细信息进行说明。从性能角度来看,着色器有两个基本类别:顶点光照和像素光照

点光照着色器前向渲染一种渲染路径,用于在一个或多个通道中渲染每个对象,具体取决于影响对象的光源。光源本身也因前向渲染而异,具体取决于其设置和强度。更多信息
请参阅术语表
path 总是比 Pixel-Lit 着色器便宜。这些着色器的工作原理是根据meshUnity 的主要图形原语。网格体构成了 3D 世界的很大一部分。Unity 支持三角或四边形多边形网格。Nurbs、Nurms、Subdiv 曲面必须转换为多边形。更多信息
请参阅术语表
顶点,一次使用所有光源。正因为如此,无论有多少光照射在物体上,它都只需要画一次。

像素光照着色器计算每个点的最终光照像素计算机图像中的最小单位。像素大小取决于您的屏幕分辨率。像素光照是在每个屏幕像素下计算的。更多信息
请参阅术语表
那是画出来的。因此,必须绘制对象一次才能获得环境光和主定向光,并且每个额外的光照射在它上面。因此,公式为 N 个渲染通道,其中 N 是照射在对象上的最终像素光源数。这增加了 CPU 处理命令并将其发送到显卡的负载,以及处理顶点和绘制像素的显卡负载。屏幕上像素照明对象的大小也会影响其绘制速度。对象越大,绘制速度越慢。

因此,像素照明着色器需要牺牲性能,但这种成本允许一些壮观的效果:阴影、法线贴图、美观的高光和光线饼干,仅举几例。

请记住,光源可以强制进入像素(“重要”)或顶点/SH(“不重要”)模式。在像素光照着色器上闪耀的任何顶点光源都将根据对象的顶点或整个对象进行计算,并且不会增加与像素光源关联的渲染成本或视觉效果。

常规着色器性能

内置着色器中,它们大致按照复杂性增加的顺序出现:

  • 不点亮。这只是一个纹理,不受任何光照的影响。
  • 顶点点照
  • 扩散。
  • 法线贴图。这比 Diffuse 贵一点:它增加了一个纹理(法线贴图)和几个着色器指令。
  • 镜面反射。这增加了高光计算。
  • 法线贴图镜面反射。同样,这比 Specular 贵一点。
  • 差法线贴图。这增加了视差法线映射计算。
  • 视差法线贴图镜面反射。这增加了视差法线贴图和镜面反射高光计算。

移动简化着色器

此外,Unity 在“移动”类别下有几个针对移动平台的简化着色器。这些着色器也适用于其他平台,因此,如果您可以接受它们的简化(例如近似镜面反射、没有每种材质的颜色支持等),请尝试使用它们!

要查看为每个着色器所做的特定简化,请查看.shader“内置着色器”包中的文件,并且信息在某些注释中列在文件顶部。

移动着色器中常见的一些更改示例包括:

  • 没有用于着色器的材质颜色或主色。
  • 对于着色器,将法线贴图(normal map一种凹凸贴图纹理,允许您向模型添加表面细节,例如凹凸、凹槽和划痕,这些细节可以捕捉光线,就好像它们由真实几何体表示一样。
    请参阅术语表
    ,则使用平铺和与基础纹理的偏移量。
  • 粒子着色器不支持AlphaTestColorMask.
  • 有限的功能和光照支持 - 例如,某些着色器仅支持一个定向光源。
旧版预生成着色器
普通着色器系列