Unity手册-标准着色器和内置着色器

标准着色器

Unity 标准着色器是一个包含一整套功能的内置着色器。此着色器可用于渲染“真实世界”的对象,如石头、木头、玻璃、塑料和金属,并支持各种着色器类型和组合。只需在材质编辑器中使用或不使用各种纹理字段和参数即可启用或禁用此着色器的功能。

标准着色器还包含一种称为__基于物理着色 (Physically Based Shading)__ 的高级光照模型。基于物理着色 (PBS) 以一种模仿现实的方式模拟材质和光照之间的相互作用。PBS 最近才在实时图形中成为可能。在光照和材质需要以直观而逼真的状态共存的情况下,这种光照模型的效果最佳。

我们基于物理着色背后的理念是创建一种用户友好的方法,在不同的光照条件下实现一致、合理的外观。它模拟了光在现实中的表现,而不使用可能有效或无效的多个临时模型。为此,它遵循物理学原理,包括能量守恒(意味着对象反射的光绝不会多于接受的光)、菲涅耳反射(所有表面在掠射角处具有更高的反射率)以及表面如何遮挡自身(所谓的几何术语)等等。

标准着色器在设计时就考虑了硬表面(也称为“建筑材质”),能够处理大多数现实世界的材质,如石头、玻璃、陶瓷、黄铜、银或橡胶。甚至对于皮肤、头发和布料等非硬质材质也表现得很不错。

通过标准着色器,可将大量着色器类型(例如漫射、镜面反射、凹凸镜面反射、反射)组合到同一个可处理所有材质类型的着色器中。这样做的好处是,在场景的所有区域都使用相同的光照计算,从而在使用该着色器的所有模型中提供逼真、一致且可信的光照和着色分布。

内置着色器

在引入基于物理的标准着色器之前,Unity 提供了 80 多种内置着色器,每种着色器都有不同的用途。这些着色器仍然包含在 Unity 中,用于实现向后兼容,建议尽可能在新项目中使用标准着色器。

  1. 性能注意事项
    有许多因素会影响游戏的整体性能。着色器的性能主要取决于两个方面:着色器本身以及项目或特定摄像机使用的渲染路径。
    在 Unity 支持的渲染路径中:

延迟着色和顶点光照路径具有最可预测的性能。
在延迟着色中,每个对象通常被绘制一次(无论哪些光源影响它)。同样,在顶点光照中,每个对象通常被绘制一次。因此,着色器的性能差异主要取决于它们使用的纹理数量以及它们执行的计算。

在前向渲染路径中,着色器的性能取决于着色器本身和场景光照这两种因素。以下部分将进行详细介绍。从性能角度看,有两种基本的着色器类别:
顶点光照(Vertex-Lit) 和**像素光照 (Pixel-Lit)**。
前向渲染路径中的__顶点光照__着色器总是比像素光照着色器的成本更低。这些着色器同时使用所有光源基于网格顶点来计算光照。因此,无论在对象上有多少光照,都只需要绘制一次。
__像素光照__着色器计算绘制的每个像素的最终光照。因此,必须绘制一次对象以获取环境和主方向光,并针对每次额外光照绘制一次对象。因此,方案为 N 个渲染 pass,其中 N 表示照射在对象上的最终像素光照数。这种方案增加了 CPU
处理和发送命令到显卡以及在显卡上处理顶点并绘制像素的工作负载。像素光照对象在屏幕上的大小也会影响绘制该对象的速度。对象越大,绘制得越慢。
所以,像素光照着色器会带来性能成本,但这样的成本可产生一些出色的效果:阴影、法线贴图、漂亮的镜面高光和光照剪影,不一而足。
请记住,可强制光照进入像素(“重要”)或顶点/SH(“非重要”)模式。在像素光照着色器上照射的任何顶点光照都将基于对象的顶点或整个对象进行计算,并且不会计入与像素光照关联的渲染成本或视觉效果。

内置着色器的复杂程度从低到高的顺序大致如下:
无光照 (Unlit)。这只是一种纹理,不受任何光照的影响。 *顶点光照 (VertexLit)。
漫射 (Diffuse)。
法线贴图 (Normal mapped)。此项比漫射的成本略高:增加了一个纹理(法线贴图)和一些着色器指令。
镜面反射 (Specular)。此项增加了镜面高光计算。
法线贴图镜面反射 (Normal Mapped Specular)。同样,此项比镜面反射的成本略高。
视差法线映射 (Parallax Normal mapped)。此项增加了视差法线贴图计算。
视差法线贴图镜面反射 (Parallax Normal Mapped Specular)。此项增加了视差法线贴图计算和镜面高光计算。
  1. 移动端简化着色器:
    此外,Unity 还有几个针对移动平台的简化着色器,位于“Mobile”类别下。这些着色器也适用于其他平台,因此如果能容忍使用它们经过简化这一事实(例如近似镜面反射、无每种材质的颜色支持等),可尝试使用它们!

    要查看每个着色器已进行的具体简化情况,请查看“内置着色器”包中的 .shader 文件,此文件顶端的一些注释中列出了相关信息。

    移动端着色器中常见的一些更改示例如下:

    着色器没有用于着色的材质颜色或主色。
    对于采用法线贴图的着色器,使用了基础纹理的平铺和偏移。
    粒子着色器不支持 AlphaTest 或 ColorMask。
    有限的功能和光照支持,例如,一些着色器仅支持一个方向光。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值