添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

图形工具标准着色系统利用灵活的着色器实现类似于 Unity 的标准(或 Lit)着色器的视觉效果。 它实施 Fluent Design System 原则,并在混合现实设备上保持高性能。

有关图形工具/标准着色器变体的多个演示,请参阅 Material Gallery 示例 。 有关图形工具/标准画布的示例,请参阅 UnityUI 示例

图形工具/标准着色系统是一种“超级着色器”,它使用 Unity 的着色器程序变体功能 ,根据材料属性自动生成最佳着色器代码。 当用户在材料检查器中选择材料属性时,他们只需承担已启用的功能的性能费用。

为了更好地支持传统的 Unity 工作流程和 UnityUI (画布)工作流程,图形工具/标准着色系统有两个着色器入口点:

UnityUI

UnityUI 支持

图形工具标准着色系统与 Unity 的内置 UI 系统(称为 UnityUI )配合使用。 Graphics Tools/Standard Canvas 应该用于 UnityUI 画布中的所有材料。

图形工具中的 Canvas CanvasRenderer 会根据需要提示添加 ScaleMeshEffect.cs

在 UnityUI 组件上, unity_ObjectToWorld 矩阵(或 URP 中的 UNITY_MATRIX_M )不是图形组件所在的本地变换的变换矩阵,而是其父画布的变换矩阵。 许多图形工具/标准画布着色器效果需要知道对象比例。 为解决此问题, ScaleMeshEffect.cs 会在构造 UI 网格期间将缩放信息存储到 UV 通道属性中。

在使用 Unity 图像组件时,建议为源图像指定“None (Sprite)”,以防止 Unity UI 生成其他顶点。

材料检查器

“图形工具/标准”和“图形工具/标准画布”着色器都有自定义材料检查器,称为 StandardShaderGUI.cs。 检查器基于用户选择自动启用/禁用着色器功能,并帮助设置渲染状态。 有关每项功能的详细信息,请将鼠标悬停在 Unity 编辑器中的每个属性上,以获取工具提示。

检查器 UI 是动态的。 UI 的某些部分将随着功能的启用和禁用而改变。

检查器可以分为多个功能区域,如下所述。

检查器的第一个部分控制材料的渲染状态。 渲染模式可确定何时以及如何渲染材料。 Graphics Tools/Standard Graphics Tools/Standard Canvas 着色器的目标是镜像显示 在 Unity/Standard 着色器中找到的渲染模式 。 “图形工具/标准”和“图形工具/标准画布”着色器还包括附加渲染模式和自定义渲染模式,以实现完全的用户控制。

允许创建透明效果,在不透明区域和透明区域之间具有硬边缘。 在此模式下,没有半透明区域,纹理要么为 100% 不透明,要么为不可见。 使用透明度创建材料形状(如植物)时,这非常有用。 允许通过透明度值以使对象完全淡出,包括该对象可能带有的任何镜面高光或反射。 如果要让对象动态淡入或淡出,此模式非常有用。它不适合用于渲染逼真的透明材料(如透明塑料或玻璃),因为反射和高光也会淡出。 适用于渲染逼真的透明材料,如透明塑料或玻璃。 在此模式下,材料本身会带有透明度值(基于纹理的 alpha 通道和着色颜色的 alpha)。 但是,反射和高光将仍以完整清晰度可见,就像真实的透明材料一样。 启用一种附加混合模式,该模式将以前的像素颜色与当前像素颜色相加。 这是避免出现透明排序问题的首选透明模式。 允许手动控制渲染模式的每个方面。 仅适用于高级用途。

此部分的主要功能是控制材料的反照率颜色和 基于物理的渲染 选项。

若要提高 Unity 标准着色器每像素的奇偶校验,可通过 通道包装 来控制所有金属性、平滑度、放射性和遮挡性值。

使用通道包装时,只需对一个纹理采样并将其加载到内存中,而不是对四个单独的纹理执行此操作。 在某个程序(如 Substance 或 Photoshop)中编写纹理贴图时,可以手动包装它们,如下所示:

主图部分还有一个用于三平面映射和超采样抗锯齿的选项。 它还包含在选中“放射”复选框后用于添加彩色放射纹理贴图的选项。

三平面映射是一种以编程方式为网格映射纹理的技术。 通常用于地形、没有 UV 的网格或难以展开的形状。 此实现支持世界空间或局部空间投影、混合平滑度的规范和法线贴图支持。 请注意,使用的每个纹理都需要 3 个纹理样本,因此请在性能至关重要的情况下谨慎使用。

超样本抗锯齿 应该用于显示图标或图像的所有材料,这些图标或图像的细节从远处看很重要。

渲染选项主要控制材料的照明设置。 此材料部分还包含一些其他特征,用于控制表面颜色、半透明度或位置。 有关照明的详细信息,请参阅 下文

Fluent 选项

Fluent 是一种 Microsoft 产品中跨 UI 组件使用的设计框架。 本部分包含一些有助于在任意表面上模拟 Fluent 设计系统原则的功能。 如果正在寻找定制的 Fluent 着色器,可以在“图形工具/画布”和“图形工具/非画布”着色器命名空间中找到。

类似于 Unity 内置着色器中的高级部分。 此部分控制渲染顺序以及是否应生成 GPU 实例化变体。 此外,还有可配置的模具测试支持可用于实现各种效果。 例如门户:

“图形工具/标准”和“图形工具/标准画布”着色器都使用简单类似的技术来实现照明。 由于着色器不针对物理正确性和能量守恒进行计算,因此它能够快速有效地渲染内容。 Blinn-Phong 是一种主要照明技术,它与菲涅耳透镜和基于图像的照明相结合,以接近于基于物理的照明。 着色器支持以下照明技术:

着色器会遵循场景中第一束 Unity 定向光(若启用)的方向、颜色和强度。

不会考虑将动态点光、投射光或任何其他 Unity 光用于实时照明。 此时不支持遮光罩。

着色器通过 球谐函数 (若启用)使用光源探针来逼近场景中的灯光。

对每个顶点执行球谐函数计算,且不结合光源探针,以此降低计算成本。

对于静态照明,着色器会遵循由 Unity 的 光照映射系统 构建的光照图。 将渲染器标记为 static(或 lightmap static),即可使用光照图。

与使用 Unity 标准着色器相比,使用图形工具标准着色系统的主要优势之一是性能更高。 按设计,“图形工具/标准”和“图形工具/标准画布”着色器仅使用启用的功能。 但是,“图形工具/标准”和“图形工具/标准画布”着色器也经过了编写,可提供与 Unity 标准着色器相当的美学效果,但成本要低得多。 比较着色器性能的一种简单方法是借助需要在 GPU 上执行的操作的数量。 计算量可能会因启用的功能和其他渲染配置而产生波动。

一般来说,应使用图形工具标准着色器,而不是移动混合现实设备上的内置着色器。 但是,使用 RenderDoc 等工具来分析场景总是明智的。

  • 邻近感应灯
  •