版本:Unity 6 (6000.0)
语言:英语
旧版的预构建着色器
普通着色器系列

内置着色器之用法和性能

Unity 中的着色器通过 材质一种用于定义如何渲染表面的资源。 更多信息
参见 术语表
来进行使用,该着色器从本质上讲就是通过纹理之类的参数将 着色器在 GPU 上运行的程序。 更多信息
参见 术语表
代码进行组合的。

当选择“材质”本身或使用该材质的 游戏对象Unity 场景中的基本对象,它可以表现为人物、道具、风景、照相机、航点等。一个游戏对象的运行功能由连接到它上的组件定义。 更多信息
参见 术语表
时,材质属性将显示在 检视器Unity 窗口,其中会显示有关当前选定的游戏对象、资源或项目设置的信息,让你可以检视和编辑值。 更多信息
参见 术语表
中。该材质检查器看上去就像这样

根据使用的具体着色器,每个材质在检视器中的外观会稍有不同。该着色器本身确定了哪些类型的属性可供在检视器中进行调整。材质检视器在 材质参考页 中进行了详细描述。请记住,着色器通过材质来进行实现。所以尽管该着色器定义了将在检视器中显示的属性,但每个材质实际上包含来自滑块、颜色和纹理的经过调整的数据。关于这一点要记住的最重要的事情是,单个着色器可以在多个材质中使用,但单个材质不可以使用多个着色器。

着色器名称

更改旧版着色器的名称会影响它的功能。这是因为在 Unity 5.0 之前,着色器的一些功能是由它的路径和名称决定的。旧版着色器仍然像这样工作。要了解更多信息,请参阅 旧版着色器名称

性能注意事项

可以影响游戏整体性能的因素有很多。本页面主要针对内置着色器的性能问题进行探讨。着色器的性能主要取决于两方面:着色器本身以及项目或特定相机场景中特定视角图像的组件。输出内容要么显示在屏幕上,要么作为纹理捕获。 更多信息
术语表
使用的渲染路径渲染管道用于呈现图形的技术。选择不同的渲染路径会影响照明和着色的计算。一些渲染路径比其他渲染路径更适合于不同的平台和硬件。 更多信息
术语表
。有关编写自己的着色器时获取性能提示的信息,请参阅ShaderLab 着色器性能页面。

渲染路径和着色器性能

在 Unity 支持的渲染路径中,延迟着色内置渲染管道中的一种渲染路径,在可以影响游戏对象的灯光数量上没有限制。所有灯光都是逐像素评估的,这意味着它们都与法线贴图等正确交互。此外,所有灯光都可以配置 Cookie 和阴影。 更多信息
术语表
顶点光照路径拥有最高的可预测性能。在延迟着色中,每个对象通常绘制一次,无论受哪些灯光的影响。类似地,在顶点光照中,每个对象通常绘制一次。因此,着色器中的性能差异主要取决于它们使用多少纹理以及执行什么计算。

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

前向渲染路径中,着色器的性能取决于着色器本身和场景场景包含游戏的环境和菜单。把每个独特的场景文件想象为一个独特的关卡。在每个场景中,你可以放置你的环境、障碍和装饰品,本质上以模块化方式设计和构建你的游戏。 更多信息
术语表
中的灯光。以下小节将详解具体内容。从性能角度来看,着色器有两个基本类别:顶点光照像素光照

顶点光照着色器在前向渲染渲染路径,根据光照渲染一个或多个视口中影响对象的物体。光照本身也因其设置和强度不同而被前向渲染处理方式。更多信息
参见词汇表
道路上通常比像素光照着色器便宜。这些着色器使用所有光照一次性根据网格Unity 的主要图形原语。网格构成了 3D 世界的大部分。Unity 支持三角形或四边形多边形网格。Nurbs、Nurms 和细分曲面必须转换为多边形。更多信息
参见词汇表
顶点计算光照。此因,无论有多少光照打在物体上,它只需要绘制一次。

像素光照着色器计算每个像素电脑图像中最小的单位。像素大小取决于屏幕分辨率。像素光照计算在每个屏幕像素上进行。更多信息
参见词汇表
的最终光照。此因,为了取得环境和主要方向光,物体必须绘制一次;为了取得其他打在物体上的光照,必须再次绘制一次。因此,公式为 N 个渲染视口,其中 N 为打在物体上的像素光照的最终数量。这会增加 CPU 处理并向显卡发送命令以及显卡处理顶点和绘制像素的负载。像素光照物体在屏幕上的尺寸也会影响其绘制速度。物体越大,绘制速度越慢。

因此,像素光照着色器对性能有影响,但这种影响可以带来一些惊人的效果:阴影、法线贴图、漂亮的镜面高光和光照饼干等等。

记住,可以将光照强制为像素(“重要”)或顶点/球谐函数(“不重要”)模式。任何打在像素光照着色器上的顶点光照都会根据物体的顶点或整个物体计算,并且不会增加像素光照相关的渲染成本或视觉效果。

一般着色器性能

内置着色器来看,其复杂性大致按以下顺序排列

  • 无光照。这只是一个纹理,不受任何光照影响。
  • VertexLit(顶点光照).
  • 漫反射.
  • 法线贴图。这比漫反射稍微贵一点:它增加了另一个纹理(法线贴图)和一些着色器指令。
  • 镜面反射。这会增加镜面高光计算。
  • 法线贴图高光。再次强调,这比高光成本稍微高一些。
  • 视差法线贴图。这增加了视差法线贴图计算。
  • 视差法线贴图高光。这增加了视差法线贴图和高光计算。

移动简化着色器

另外,Unity 在“移动”分类下还有几种针对移动平台的简化着色器。这些着色器也可以在其他平台上运行,因此如果您能够接受它们的简化(例如:近似高光,不支持逐材质颜色等),请尝试使用它们!

如要查看针对每个着色器做出的具体简化,请查看“内置着色器”包中的 .shader 文件,相关信息列在文件顶部的部分注释中。

移动着色器的部分常见变更示例包括:

  • 没有用于着色着色器的材质颜色或主色。
  • 对于采用 法线贴图一种凹凸贴图纹理,允许您向模型中添加表面细节(如凸起、凹槽和划痕),这些细节可以像通过真实几何体呈现一样捕捉光线。
    参见 术语表
    的着色器,将使用基础纹理的平铺和偏移。
  • 粒子着色器不支持 AlphaTestColorMask
  • 有限的功能和照明支持 - 例如,某些着色器仅支持一束定向光。
旧版的预构建着色器
普通着色器系列