Amplify Shader Editor 手册翻译
目录
前言(Preface) 1
1. 安装(Installation) 1
2. 救命!我的着色器都是粉色的!(Help ! My Shaders are all Pink !) 1
3. 编辑器(The Editor) 2
4. 画布UI交互(Canvas UI Interaction) 4
4.1 内容分享(Sharing Content) 5
5. 材质和着色器模式(Material and Shader Mode) 5
6. 输出节点(Built-in Renderer)(Output Node(Built-in Renderer)) 6
6.1 引用自定义属性(Referencing Custom Properties) 13
7. 着色器函数(Shader Functions) 13
7.1 产品特性(Features) 14
7.2 比较(Comparison) 14
7.3 创建和使用(Creation and Usage) 15
8. 快捷键(Hotkeys) 16
8.1 颜色连线的模式(Colored Line Mode) 16
8.2 节点预览(Node Previews) 16
8.3 多行模式(Multi-line Mode) 17
8.4 完整的快捷键列表(Full Shortcut List) 17
9. 半透明(Translucency) 18
10. 你的第一个着色器(Your First Shader) 18
11. 第三方兼容性(3rd-Party Compatibility) 21
11.1 Aura2(此为Unity Assets 的一个资产,不作翻译) 21
11.2 Substance Support(此为Adobe 软件,Adobe Substance 3D,不作翻译) 21
11.3 MegaSplat(此为Unity Assets 的一个资产,不作翻译) 22
11.4 Curved World Shaders(此为Unity Assets 的一个资产,不作翻译) 22
11.5 VertExmotion(此为Unity Assets 的一个资产,不作翻译) 23
12. 通用提示(General Tips) 25
12.1 移动端着色器(Mobile Shaders) 25
12.2 安卓(Android) 26

前言(Preface)

本人因为英语能力不是很好,手册的翻译无法避免翻译不准确,也难免会使用机翻,但我会努力斟酌,参考文章进行翻译,如果有英语大佬可以帮忙修改翻译,本人不胜感激。
好了,接下来我们走入 Amplify Shader Editor 的用户手册。

1. 安装(Installation)

  1. 打开 Amplify Shader Editor###.unitypackage
  2. 之后 Unity 会进行加载,然后会弹出 “导入包(Importing package)”窗口,选择全部然后点击导入
  3. Amplify Shader Editor 现在应该已经安装在你的 Unity 项目中,它应该具有以下目录结构:

YourProject\Assets\AmplifyhaderEditor\
YourProject\Assets\AmplifyshaderEditor\Examples\
YourProject\Assets\AmplifyshaderEditor\Plugins\

2. 救命!我的着色器都是粉色的!(Help ! My Shaders are all Pink !)

不用惊慌。一个粉红色(品红色)的着色器是Unity让你知道某些东西没有工作或配置错误。

  1. 你在你当前的渲染中使用了错误的着色器模式

在URP 和 HDRP 之前 SRP 就作为一个可以使用的管线,你的项目渲染不需要特定的着色器类型,所有项目都使用内置的 Unity 渲染着色器。这些旧的着色器通常被称为Built-in, Legacy, Surface Shaders 或 Standard,在某些情况下,他们不与任何新版本的 Scriptable Rendering Pipelines 一起工作。
为了确保你使用的是兼容的 URP 或 HDRP 着色器类型,在输出节点参数中检查其类型名称;我们的着色器类型总是会在 Shader Type 中明确说明使用的是什么管线。
有关如何使用ASE设置SRP的附加说明,请查看相关页面:Scriptable Rendering Pipeline
Amplify Shader Editor 手册翻译(Manual) - 图1

  1. 你有一个着色器错误,这导致它无法按预期执行

检查您的控制台和 ASE 控制台以寻找线索,如果您无法解决这个问题,加入我们的 Discord;如果您相信您找到了产品的漏洞请通过 support@amplify.pt 联系我们。
Amplify Shader Editor 手册翻译(Manual) - 图2

3. 编辑器(The Editor)

Amplify Shader Editor 手册翻译(Manual) - 图3
打开 Amplify Shader Editor 画布,悬浮在上面,在单个窗口中或者在其他的显示屏上使用(如果你有多块屏幕的话)。当你双击 ASE 材质或者 Shader 时,编辑器会自动打开。
Amplify Shader Editor 手册翻译(Manual) - 图4
ASE Shaders 可以直接在项目选项卡中创建,也可以通过菜单下的 Assets > Create > Shader > Amplify Surface Shader 创建。
Amplify Shader Editor 手册翻译(Manual) - 图5

  1. 双击一个 ASE Shader 在ASE 画布中打开它。或者,你也可以它的检查器选项卡中通过点击 Open shader Editor 按钮打开。
  2. 在节点属性标签中直接命名你的着色器,你可以使用正斜杠(/)分隔符来添加自己的类别。 记住,着色器文件名是唯一的,必须在项目资源管理器选项卡手动设置。你可以为文件和目前的着色器使用不同的名称。
  3. 这个区域显示了当前着色器,点击它将在 Project Explorer 选项卡中定位,并选择该着色器。注意绿色的轮廓线,它是一个视觉辅助,让你知道只有当前着色器是激活打开的。

Amplify Shader Editor 手册翻译(Manual) - 图6

  1. 双击使用ASE着色器的材质来打开ASE画布。或者,你可以直接在材质检查器选项卡中点击 “Open in Shader Editor” 来打开它。
  2. 打开材质之后,目前活动的着色器和材质都显示在较低的画布区域。 和材质一样,点击它会在 Project Explorer 选项卡中找到该材质。 注意蓝色的轮廓线,它是一个视觉辅助,让你知道着色器和材质当前都是打开的。

    4. 画布UI交互(Canvas UI Interaction)

    Amplify Shader Editor 手册翻译(Manual) - 图7

  3. 可以在左侧选项卡中调整节点属性。 选择一个节点或输出节点,以显示其参数。有些值可以在节点的实时运行中直接进行调整。如果没有选择节点或多个节点,则输出节点属性总会在此选项卡上显示。通过单击选项卡右上角的减号按钮,可以最小化 Output Node Properties。

  4. 极其简单的保存/更新/清除/编辑按钮。 不可用或禁用时为灰色,最新为绿色,过时为黄色。
    1. Button 1:着色器手动更新(保存和更新)
    2. Button 2:切换着色器实时更新(自动保存和更新)
    3. Button 3:删除或断开连接的节点
    4. Button 4:在文本编辑器中打开着色器
  5. 着色器类型和名称
  6. 画布视图调整
    1. Button 1:选择并聚焦于Output节点
    2. Button 2:聚焦于选定的节点,如果没有选择,将聚焦于整个节点集合。自动缩放也可以通过双击按钮或双击“F”键来完成
  7. Node Palette 选项卡是一个可搜索的节点列表,您可以在其中选择节点并将其直接拖到画布区域。 通过单击选项卡左上角的减号按钮,可以将 Node Palette 选项卡最小化。
  8. 在画布上的任何地方单击鼠标右键,弹出一个可搜索的节点列表,单击节点名来创建它
  9. 按住快捷键并单击画布上的任何位置来创建新节点。快捷键显示在[]内部,位于 Palette 选项卡上各自节点名称的前面。 例如:Key ‘ 1 ‘表示浮点数,Key ‘ 5 ‘表示颜色节点。

Amplify Shader Editor 手册翻译(Manual) - 图8
数据从左到右 — Input Port(输入端口) > Processed Data(处理数据) > Output Port(输出端口)。只有直接或间接连接到输出节点的节点被分析,并用于生成最终的着色器指令。如果一个节点包含未连接的输入端口,ASE将在处理阶段使用内部数据。 内部数据值可以通过Node Property选项卡编辑。
Amplify Shader Editor 手册翻译(Manual) - 图9
Nodes 可以通过鼠标左键单击节点或鼠标左键拖动选定的框来选择节点。按住 “Shift” 键并点击它,就可以从选区中添加或删除节点。按 “CTRL/CMD+A” 选取所有内容。通过鼠标左键单击画布上的空白区域来取消所有选择。按住鼠标左键并拖动选定的节点来移动它们。
Wires 通过按住“Alt”键并单击节点端口或将连接的线拖到空白画布空间并左键单击来删除连接。连接到所选节点的连线被高亮显示,以表示从最左边的节点到最右边的节点的数据流。
Connections 通过左键单击并拖动线从输出端口到输入端口或从空输入端口到输出端口来创建连接。鼠标左键停留在已连接的输入端口上,将从该端口移除线的端点并将其锁定在鼠标光标上,以便您可以将其拖动到另一个端口。将连接拖到空白画布空间上,上下文菜单将自动出现,如果选择了节点类型,则使用第一个有效端口进行连接。
Ports 输出端口可以连接到多个输入端口,但输入端口只接受单个输入。连接线自动捕捉到靠近鼠标光标的端口。 为了更容易使用,活动端口区域是相当宽松的,您甚至可以直接将连线放到端口名称上。
View 用鼠标右键或鼠标中键拖动可平移视图。当框选或将选中的节点移出可见工作区域时,画布将自动滚动。您可以通过鼠标滚轮放大/缩小。缩放的大小是根据画布上的节点位置动态确定的。
Tabs 当ASE窗口宽度降低到750px以下时,节点属性和节点调色板窗口都会自动最小化。您总是可以通过单击矩形按钮将它们最大化。

4.1 内容分享(Sharing Content)

从v1.6.8.002版本开始,你现在可以使用相机按钮拍摄你的着色器的全画布截图
此外,您还可以通过使用链接共享按钮将链接直接复制并粘贴到画布中来达到与他人共享节点

Amplify Shader Editor 手册翻译(Manual) - 图10

5. 材质和着色器模式(Material and Shader Mode)

Amplify Shader Editor 手册翻译(Manual) - 图11
根据你选择着色器或材质资产中加载的Shader文件,你可以在ASE的着色器或材质两种模式的任一模式工作。画布边框作为激活模式的视觉指示器,在着色器模式下显示绿色的轮廓线,在材质模式下显示蓝色的轮廓线。
Amplify Shader Editor 手册翻译(Manual) - 图12
在着色器中设置的值通常被称为默认值。对于任何着色器给定的默认值所做的任何更改都会自动影响到使用它的所有材质。当同时编辑材质和着色器时,请密切注意哪些值正在被修改。
Amplify Shader Editor 手册翻译(Manual) - 图13
不同于Shader中的默认值,材质的值可以是唯一的。材质的值只在材质模式下显示(同时打开材质和着色器)。只有表示变量(Color,Float,Int, Vector, Matrix)的节点有参数类型的下拉菜单,并且可以设置属性。当选择 Property 或 uniform 参数类型时,默认值总是会复制到材质值。每个材质都可以调整,不仅可以创建无限数量的变化,并且仍然同时使用相同的着色器。你可以认为你的材质是你的着色器的实例,每个实例都是独一无二的,但是都是使用相同的默认值创建。
Amplify Shader Editor 手册翻译(Manual) - 图14
你可以复制和粘贴属性值之间的材质使用相同的ASE着色器。 “Open in Shader Editor” 按钮提供了一种打开材质和着色器中使用的Amplify Shader Editor 的快速方法。
Amplify Shader Editor 手册翻译(Manual) - 图15
着色器也可以通过Inspector标签直接打开,点击 “Open in Shader Editor” 按钮。 或者,单击 “Open in Text Editor” 以在当前代码编辑器中打开它。

6. 输出节点(Built-in Renderer)(Output Node(Built-in Renderer))

Attention 本节仅作为一个在标准内置PBR着色渲染器中使用的常见参数的例子。根据使用的着色器类型,你可能会使用不同的参数集或完全不同的顺序。如果您正在寻找特定的 HDRP 或 URP 信息。请阅读相关页面: Scriptable Rendering Pipeline
本节的部分内容直接从Unity Shader参考文档中获得。了解更多: Unity Shader Reference
Amplify Shader Editor 手册翻译(Manual) - 图16

Amplify Shader Editor 手册翻译(Manual) - 图17 General(普遍属性)
1. Shader Name(着色器名称):可编辑文本框,定义了着色器的名称和路径。使用斜杠“/”来定义它的类别和名称; 例如User Samples / Environment Gradient。请注意,此框中显示的名称与文件名不相同,它们必须单独设置。
1. Shader Type(着色器类型):此区域显示当前使用的着色器类型。这些包括您当前项目中拥有的模板。 ASE带有后处理效果,粒子,精灵,UI和无光着色器的预设。 默认设置为表面着色。
1. Light Model(光照模型):定义表面如何反射光线,通常被称为使用的着色器类型。ASE目前提供Standard(metal), Standard Specular, Lambert, Blinn Phong和自定义光照,允许创建一个独特的基于节点的照明模型。
1. Shader Model(着色器模式):当编写Surface Shaders或常规Shader程序时,HLSL源代码可以被编译成不同的“Shader模型”。 更高的着色器编译目标允许使用更现代的GPU功能,但可能使着色器不能在旧的GPU或平台上工作。
1. Precision(精度):定义内部计算的最大精度,使用较低的类型提供额外的性能提升,以换取一些精度; 默认设置为Float -此值限制画布中所有现有属性。
1. Cull Mode(剔除模式):正面 – 剔除 正面几何体,背面 – 剔除 背面几何体,关闭 -禁用剔除(双面材质); 默认设置为剔除背面。
1. Render Path(渲染路径):允许你定义哪个模式(正向/延迟)支持的着色器; 默认设置为“所有”。
1. Cast Shadow(投射阴影):定义着色器是否生成阴影通道,以便能够投射阴影;在材质渲染组件中,仍然可以在每个对象的基础上关闭。
1. Receive Shadows(接收阴影):定义使用着色器的对象是否接收阴影; 这包括自阴影(只有前向渲染); 在材质渲染组件中,仍然可以在每个对象的基础上关闭。
1. Queue Index(队列索引):呈现队列偏移值,接受正整数(稍晚)和负整数(稍早)。
1. Vertex Output(顶点输出):默认为相对,可以设置为绝对;输入的局部顶点偏移量将自动更改为局部顶点位置。
1. LOD(细节级别):默认情况下,允许的LOD级别是无限的,也就是说,用户硬件支持的所有着色器都可以使用。然而,在某些情况下,即使硬件可以支持它们,你也可能想要删除着色器细节。Unity Shader Reference
1. Fallback(回退函数):从项目中可用的着色器中设置一个备用着色器,当主着色器缺少或不支持某个通道时将使用它。
1. Custom Editor(自定义编辑器):自定义检查器允许您使用自定义材料检查器,默认情况下使用ASE自定义材料检查器。
Amplify Shader Editor 手册翻译(Manual) - 图18 Standard Shader Inputs(标准着色器输入)
1. Albedo(反射率):反射率参数控制着色器表面的基本颜色,接受颜色值或纹理贴图。
1. Normal(法线):法线贴图是一种特殊的纹理,允许添加表面细节,比如高多边形网格、凹凸、沟槽和划痕传输的阴影信息。 你可以在这里连接法线贴图或自定义法线向量。
1. Emission(自发光):自发光控制从表面发出的光的颜色和强度,而不管照明条件如何;接受完整的RGB值。
1. Metallic(Metallic workflow only)(金属度(仅限金属工作流)):在金属工作流程中,表面的反射率和光反应通过金属度和光滑度进行修正;两个灰度级输入。您可以使用范围从0到1的值,影响整个表面,甚至连接一个纹理,它将控制金属度,同时为表面的不同区域提供不同的值;0为介质(非金属),1为全金属。
1. Specular(Specular workflow only)(高光(仅限高光工作流)):当在高光模式下工作时,在高光参数中RGB颜色控制高光反射率的强度和颜色。
1. Smoothness (Both workflows)(平滑(同样的工作流)):平滑的概念适用于高光和金属的工作流程,工作方式非常相似; 灰度。 值为1处的完全光滑的表面提供清晰的反射,而值为0处的粗糙的表面会创建粗糙颜色的漫反射颜色; 在某些引擎中,它也被称为“粗糙度”。
1. Ambient Occlusion(环境光遮蔽):遮蔽输入接受一个遮罩纹理贴图,或自定义值,用于提供关于模型的哪个区域应该显示亮或暗的间接照明的信息,这些信息来自环境照明和反射。 遮挡图是一个灰度图像,其中白色表示应该接受完全间接照明的区域,而黑色表示没有间接照明。
1. Transmission(透射):透射是近似光散射的一种高度优化的方法。 换句话说,它定义了当从后面照射时通过一个表面的光有多少,这对于少许细节的资源,如树叶,布料,甚至是蜡制品是理想的; 接受完整的RGB输入。
1. Translucency(半透明):半透明输入允许你以一种简单和优化的方式通过控制光法线角度衰减偏移来近似SSS(次表面散射)效果。 它通常用于皮肤效果,但也足够灵活的可以应用在其他用途; 接受完整的RGB输入。
1. Refraction(Transparent Render Type)(折射(显然易懂的渲染模式)):折射输入需要一个渲染类型设置为Transparent的着色器,用于模拟通过玻璃或水等介质看到的物体的变形效果,这是通过屏幕空间UV偏移来实现的,折射背景像素; 接受全RGB输入。 这种技术是一种简单近似的光现象,这种光现象通常发生在波从一个具有给定折射率的介质传播到另一个具有斜角的介质时。
1. Opacity(不透明):不透明度输入需要一个渲染类型设置为Transparent的着色器,负责设置整个表面的透明度,使用范围从0到1,从完全透明到完全不透明; 接受全RGB输入。
1. Opacity Mask(不透明遮罩):不透明度遮罩需要一个渲染类型设置为Transparent或Mask混合模式的着色器,其工作原理类似于不透明度,它的值介于0和1之间,从完全透明到完全不透明,但不考虑中间的值, 在特定区域形成完全可见或完全不可见的表面。 它是定义复杂实体表面的材料的完美解决方案,如铁丝网或链条,因为不透明的部分仍然遵循光照计算; 接受灰度级输入。
1. Local Vertex Offset(相对顶点输出):局部顶点偏移输入可用于通过顶点操作改变曲面的形状,其中XYZ坐标定义每个顶点将如何从其相对位置偏移。
1. Local Vertex Position(绝对顶点输出):局部顶点位置的工作原理类似于局部顶点偏移输入,然而,不是从其相对位置偏移每个顶点,而是在绝对世界空间方向偏移顶点。
1. Local Vertex Normal:局部顶点法线允许调整任何曲面偏移的法线方向,因为网格法线不是实时计算的。这个过程通常被称为正常重建。
1. Tessellation(曲面细分):曲面细分输入允许细分网格的三角形,在运行时将它们分割成更小的三角形,以增加任何给定网格的表面细节。
1. Debug(调试):Debug输入生成一个预览着色器,它忽略所有其他的活动输入,只绘制插入到它的输入端口的东西,而不考虑光照。 请注意,不是所有节点或特定的组合都可以在调试模式下预览。
Amplify Shader Editor 手册翻译(Manual) - 图19 Blend Mode(混合模式)
1. Blend Mode(混合模式):所选模式自动调整可用参数; Opaque(不透明),Masked(掩码),Transparent(透明),Translucent(半透明),Alpha预乘或自定义。
1. Render Type(渲染模式):Render Type标签将着色器分类为几个预定义的组; opaque shader(不透明着色器)或alpha test shader(Alpha测试着色器)等。 可用的标签:Opaque(不透明),Transparent(透明),Transparent Cutout(透明裁剪),Background(背景),Overlay(覆盖),Tree Opaque(树的不透明),Tree Transparent Cutout(树的透明切割),Tree Billboard(树广告牌),Grass(草)和Grass Billboard(草广告牌)。
1. Render Queue(渲染队列):几何渲染队列优化了对象的绘制顺序以获得最佳性能。 渲染队列根据距离对对象进行排序,从最远的开始渲染,以最近的结束。 可用选项:背景,几何,Alpha测试,透明和叠加。 每个后续队列都在前一个队列之后呈现,从而创建分层系统。
1. Mask Clip Value(遮罩裁剪值):与不透明度alpha比较的默认值。 0完全不透明,1完全屏蔽; 默认为0。 常用于透明切割材料。
1. Refraction Layer(折射层):当指定的grabpass被这个值偏移时,创建了一个有效地用于折射效果的分层系统。
1. Alpha To Coverage(通道映射):打开内部MSAA功能,使用不透明对象图层混合alpha对象;仅在MSAA打开时可用于正向渲染。
1. Blend RGB and Blend Alpha(混合RGB和混合Alpha):当图形被渲染时,在所有着色器执行完毕和所有纹理被应用之后,像素被写入屏幕。 由Blend命令控制它们是如何与已经存在的内容相混合的。 ASE目前提供自定义,Alpha Blend(Alpha Blend),Premultiplied(预乘),Additive(加法),Soft Additive(软加法),Multiplicative(乘法)和2x Multiplicative(2x 乘法)模式。
1. Blend Factors(SrcFactor & DstFactor)(混合因子(SrcFactor & DstFactor)):下面所有的属性对混合命令中的SrcFactor和DstFactor都有效。Source指的是计算出的颜色,Destination指的是屏幕上已经显示的颜色。如果BlendOp使用逻辑操作,则忽略混合因子。
1. One The value of one - 使用这个来让源色或目标色都充分显示出来
1. Zero:The value zero - 使用此方法可以删除源值或目标值。
1. SrcColor:这个阶段的值乘以源颜色值。
1. SrcAlpha:这个阶段的值乘以源的alpha值。
1. DstColor:这个阶段的值乘以帧缓冲源颜色值。
1. DstAlpha:这个阶段的值乘以帧缓冲源的alpha值。
1. OneMinusSrcColor:这个阶段的值乘以(1 -源颜色)。
1. OneMinusSrcAlpha:这个阶段的值乘以(1 -源alpha)。OneMinusDstColor:这个阶段的值乘以(1 -目标颜色)。
1. OneMinusDstAlpha:这个阶段的值乘以(1 -目标alpha)。
2. Blend Op RGB & Blend Op Alpha:Add,Sub, Rev Sub, Min和Max
8. ColorMask(颜色掩码):设置颜色通道写入掩码,将它们全部关闭,使其不可见
Amplify Shader Editor 手册翻译(Manual) - 图20 Stencil Buffer(模板缓冲)
模板缓冲区可以作为每个像素掩码的通用用途,用于保存或丢弃像素。通常是每像素8位整数。该值可以被写入、递增或递减。后续的绘制调用可以对该值进行测试,以决定在运行像素着色器之前是否应该丢弃像素。当Cull模式被设置为OFF时,这个菜单会显示一组额外的比较选项,用于将缓冲区与前脸和后脸分开使用。
1. Reference:要比较的值(如果Comp不是always)和/或要写入缓冲区的值(如果Pass、Fail或ZFail被设置为replace)。 0 - 255整数。
1. Read Mask:一个8位的掩码作为0-255的整数,在比较引用值和缓冲区的内容(referenceValue和readMask)比较函数(stencilBufferValue和readMask)时使用。默认值:255。
1. Write Mask:作为0-255整数的8位掩码,在写入缓冲区时使用。 默认值:255。
1. Comparison(front and back):用来比较参考值和缓冲区的当前内容的函数。 默认值:永远。
1. Pass(front and back):如果模板测试(和深度测试)通过,该如何处理缓冲区的内容。默认值:保留:
1. Fail(front and back):如果模板测试失败,该如何处理缓冲区的内容。 默认值:保留。
1. ZFail(front and back):如果模板测试通过,但深度测试失败,该如何处理缓冲区的内容。 默认值:保留。
Amplify Shader Editor 手册翻译(Manual) - 图21 Tessellation(曲面细分)
1. Phong:修改细分面的位置,使结果表面遵循网格法线一点; 默认设置为OFF。
1. Strength(强度):影响强度0 - 1。
2. Type(类型):定义所使用的技术;基于距离的,固定的,边缘长度和边缘长度的剔除。
2. Tess:曲面细分的因子;1-32。
2. Min(最小值):最小曲面细分距离。
2. Max(最大值):最大曲面细分距离。
2. Edge Length(边界长度):在开始曲面细分之前,边的最大长度。
2. Max Disp:在多边形贴片仍然被曲面细分的截锥体边界之外的最大位移。
Amplify Shader Editor 手册翻译(Manual) - 图22 Outline(轮廓描边)
使用反向扩展技术创建一个可定制的轮廓效果
1. Mode(模式):顶点模式使扩展偏移一个值,而顶点比例增加一个百分比。
1. Color(颜色):让你定义轮廓的颜色。
1. Width(宽度):要被偏移或缩放的值。
Amplify Shader Editor 手册翻译(Manual) - 图23 Billboard(广告牌)
1. Type(类型):一个圆柱形广告牌将只在Y轴上旋转,而一个球形广告牌将朝着摄像机旋转,而不管它的旋转。
1. Ignore Rotation(忽略旋转):设置此选项将忽略广告牌的变换旋转。
Amplify Shader Editor 手册翻译(Manual) - 图24 Depth(深度)
1. ZWrite Mode(ZWrite 模式):控制是否将来自该对象的像素写入深度缓冲区(默认为On)。 如果你画的是实心物体,让它开着。 如果你正在绘制半透明效果,切换到ZWrite Off。 欲了解更多细节,请阅读下面。
1. ZTest Mode(ZTest 模式):如何进行深度测试。 默认为LEqual(从现有对象的距离绘制对象; 把物体藏在它们后面)。 ASE提供了ZTest Less, Greater, Equal, GEqual, Equal, NotEqual和Always。
1. Offset(偏移量):允许您使用两个参数指定深度偏移。 因素和单位。因子根据多边形的X或Y缩放最大Z斜率,单位缩放最小可解析深度缓冲值。 这允许你强迫一个多边形绘制在另一个多边形的顶部,尽管它们实际上处于相同的位置。 例如,偏移0,-1会使多边形更靠近相机,忽略多边形的斜率,当看到一个擦边角度时,偏移-1,-1会使多边形更靠近相机。
1. Factor(因子):根据多边形的X或Y缩放最大的Z斜率。
1. Units(单位):单位缩放最小可分辨深度缓冲值。
Amplify Shader Editor 手册翻译(Manual) - 图25 Rendering Options(渲染选项)
在这里,可以激活或禁用某些着色器功能,默认情况下,大多数将是ON,以模拟Unity的标准着色器。
Amplify Shader Editor 手册翻译(Manual) - 图26 Rendering Platforms(渲染平台)
定义支持哪些平台; 默认设置为“所有”。
Amplify Shader Editor 手册翻译(Manual) - 图27 Additional Includes(额外的引入)
允许在cg包含文件的着色器中定义相对路径。 如果文件丢失或路径不正确,它将无法编译着色器。”.. /” 可以用来查看文件夹。
Amplify Shader Editor 手册翻译(Manual) - 图28 Additional Pragmas(额外的语法)
允许添加单独的pragma指令来控制着色器的编译和渲染。
Amplify Shader Editor 手册翻译(Manual) - 图29 Custom SubShader Tags(自定义 Subshader 标签)
允许为自定义着色器渲染控件添加自定义子着色器标签。
Amplify Shader Editor 手册翻译(Manual) - 图30 Material Properties(材质属性)
设置为Property的变量将在本节中列出,您可以通过拖动它们来调整它们的位置。

6.1 引用自定义属性(Referencing Custom Properties)

某些着色器选项,如Cull模式或模板,也可以由着色器属性、int和float来配置,而不是由它们的默认值来配置。
Amplify Shader Editor 手册翻译(Manual) - 图31
这些将有一个可点击的点出现在下拉框的侧面,你可以使用它作为一个切换,以激活新的属性选择模式,通过Shader选项的列表选择你自己的属性。

7. 着色器函数(Shader Functions)

Amplify Shader Editor 手册翻译(Manual) - 图32
Shader Functions,简称SF,是允许你构建可重用功能的单个节点网络。非常灵活且很容易设置,他们会直接接收您的着色器,处理信息的输入值,并会输出(或进一步修改,或直接使用)。SF资源不会绑定到任何着色器,您可以在整个项目中多次使用它们,在同一个着色器或者在其他着色器函数中,你甚至可以与其他用户共享它们。从简单的图形到复杂的图形,着色器函数是通过将复杂的网络打包成单个节点来减少画布混乱的好方法,也是消除不必要的重复任务的好方法。
你愿意与ASE社区分享你的创作吗? Contribute here!

7.1 产品特性(Features)

  • 适用于所有ASE节点。
  • 可配置的输入/输出节点。
  • 在着色器和SF之间复制粘贴节点。
  • 支持所有的变量类型,包括材质属性。
  • 可重用和独特的资产,不会绑定到任何着色器或项目。
  • 无缝编辑器工作流,拖拽到任何打开的着色器或从节点列表并添加他们。

    7.2 比较(Comparison)

    Amplify Shader Editor 手册翻译(Manual) - 图33
    以上各节点网络均产生相同的燃烧效应。原始版本(The original)不使用着色器功能。Version 1使用SF, SF包含用于生成燃烧效果的原始节点网络,它接收1个纹理对象节点用于燃烧遮罩,1个纹理对象节点用于火焰纹理和1个纹理坐标节点。Version 2比之前的例子更简单,燃烧效果生成和纹理节点都包含在SF中,唯一的例外是纹理坐标节点,它允许用户调整其行为。请记住,SF不需要接收任何输入,如有必要,可以在其图形中完全生成输出数据。

    7.2.1 Version 1 着色器函数示例(Version 1 Shader Function Example)

    Amplify Shader Editor 手册翻译(Manual) - 图34

    7.3 创建和使用(Creation and Usage)

    Amplify Shader Editor 手册翻译(Manual) - 图35
    在 Assets > Create > Shaders > Amplify Shader Function 下创建一个新的着色器函数。
    Amplify Shader Editor 手册翻译(Manual) - 图36
    您新创建的着色器功能将被重新命名后自动在ASE编辑器中打开。
  1. 在这里添加着色器功能说明。您还可以通过将功能输入/输出和材质属性拖动到所需位置来重新排序。在你的SF中设置的The order与你的材质检视标签中使用方法相同。
  2. 创建两个或更多的输入节点。默认情况下,始终有1个Output节点,但您可以根据需要添加任意数量的输出节点。你也可以在你激活的SF中使用其他SF节点,但是,为了避免Shader函数循环,你不能在自己的画布上添加一个函数。
  3. 选择输入节点以设置所使用的类型,或者切换Auto Cast选项以在左侧选项卡中直接自动化该过程,就像处理其他任何节点属性一样。
  4. 将结果输出(s)直接连接到output节点(s)。
  5. 保存您的更改,并单击,返回到之前打开的Shader或Material(如果有的话)。

Amplify Shader Editor 手册翻译(Manual) - 图37

  1. 添加被创建的着色器功能到您的着色器中,直接从节点列表中选择它。SF节点可以像任何其他ASE节点一样使用,它们可以被复制、复制或删除。
  2. 或者,你可以拖放Shader Functions直接到你的编辑器画布。
  3. 双击一个 SF 节点打开它。

    8. 快捷键(Hotkeys)

    8.1 颜色连线的模式(Colored Line Mode)

    Amplify Shader Editor 手册翻译(Manual) - 图38
    按[W]键进行切换。

    8.2 节点预览(Node Previews)

    Amplify Shader Editor 手册翻译(Manual) - 图39
    按[P]切换节点预览。

    8.3 多行模式(Multi-line Mode)

    Amplify Shader Editor 手册翻译(Manual) - 图40
    按[CTRL + W]激活多行模式。

    8.4 完整的快捷键列表(Full Shortcut List)

    8.4.1 编辑器(Editor)

  • 【双击连线】[Double Click Wire]:创建连线控制点。
  • 【F1】[F1]:打开选定节点Wiki页面。
  • 【C】[C]:创建评论框(组/分组/组节点)。
  • 【F】[F]:聚焦于选择的节点。
  • 【B】[B]:新的主要节点。
  • 【Space】[Space]:打开节点面板。
  • 【W】[W]:切换彩色连线模式
  • 【Control + W】[Control + W]:切换多行模式。
  • 【P】[P]:局部预览。
  • 【Delete】[Delete]:删除选择的节点。
  • 【Backspace】[Backspace]:删除选择的节点。

    8.4.2 节点(Nodes)

  • 使用按键+鼠标左键

  • [Alpha5]:颜色类型
  • [Alpha0]:整数类型
  • [Alpha1]:浮点类型
  • [Alpha2]:二维向量
  • [Alpha3]:三维向量
  • [Alpha4]:四维向量
  • [L]:Lerp(光滑)
  • [N]:Normalize(归一化)
  • [O]:One Minus
  • [E]:Power
  • [A]:Add(加法)
  • [D]:Divide(分离)
  • [M]:Multiply(乘法)
  • [S]:Subtract(减法)
  • [R]:World Reflection(世界反射)
  • [T]:Texture Sample(纹理采样)
  • [U]:Texture Coordinates(纹理坐标)

    9. 半透明(Translucency)

    半透明输入提供了一种表示光散射的快速方法。这不是最现实的方法,但它是一个灵活和快速执行,效果近似于现实的方法。在我们的(AmplifyShaderEditor \ Examples\Official\Translucency)官方例子中我们使用一个简单的红色深度纹理代表皮肤下的散射效应,但你不一定需要使用相同的设置,你可以很好地填补完整RGB纹理,半透明输入是为了得到一些颜色变化或程式化的结果。
    Amplify Shader Editor 手册翻译(Manual) - 图41
    当你将你的值插入半透明输入端口时,下面的材质属性会自动添加到你的着色器中。
Amplify Shader Editor 手册翻译(Manual) - 图42
- Strength: 半透明效果的强度,你可以把它想成一个乘数滑块。
- Normal Distortion: 定义半透明效果上的法线矢量。
- Scattering Falloff: 半透明效应的散射衰减量。
- Direct: 直射光对半透明效果的影响。
- Ambient:GI/环境光对半透明效果的影响。
- Shadow:自阴影对半透明效果的影响,降低阴影区域的半透明效果。

10. 你的第一个着色器(Your First Shader)

Amplify Shader Editor 手册翻译(Manual) - 图43

  1. 打开编辑器,在Project Explorer选项卡中创建一个新的材质和一个新的着色器。 在新创建的材质中,选择你新建的着色器,然后点击 “Open in Shader Editor” 按钮来同时打开,打开着色器和材质原理相同。

Amplify Shader Editor 手册翻译(Manual) - 图44

  1. 例如,选择输出节点并将其光照模型更改为高光。

Amplify Shader Editor 手册翻译(Manual) - 图45

  1. 右击画布以打开可搜索节点列表,输入“Lerp”。 单击Lerp,将节点的输出端口连接到反射率输入端口。

Amplify Shader Editor 手册翻译(Manual) - 图46

  1. 按住5快捷键并单击画布创建一个新的Color节点。 或者,您可以使用前面的搜索列表,或者从右侧的节点面板中拖放节点; Constants > Color[5].

Amplify Shader Editor 手册翻译(Manual) - 图47

  1. 选择新的颜色节点,按“CTRL/CMD+D”复制它。 连接两个节点到Lerp输入端口。 将第一个节点设置为灰色,将第二个节点设置为更生动的颜色。

Amplify Shader Editor 手册翻译(Manual) - 图48

  1. 通过从节点面板中拖放它来创建一个Float节点,将它连接到Lerp节点的Alpha端口。 在新创建的浮点数的节点属性中,将其最小值设置为0,最大值设置为1。 注意,Float现在可以由Slider控制。不要忘记将它的参数类型设置为Property,这样你就可以直接在材质中更改它。 您还可以通过调整Index值来命名节点并更改其在材料检查器中的位置。例如,我们将其命名为Color Mix。

Amplify Shader Editor 手册翻译(Manual) - 图49

  1. 创建一个新的浮点数,并将其连接到输出节点的平滑输入端口,设置其最小值为0,最大值为1,就像你之前做的那样。将其类型设置为Property,并命名为 Smoothness Value。创建另一个浮点数连接到高光输入端口,设置其最小值为0,最大值为1。 将其类型设置为Property,并命名为Specular Value。

Amplify Shader Editor 手册翻译(Manual) - 图50

  1. 最后,将法线贴图纹理从项目资源管理器中直接拖放到画布中。 作为一个例子,我们使用了Brushed Metal Texture。 将它直接连接到输出节点的输入端口,就完成了。 你刚刚建立了你的第一个着色器,不要忘记定期通过点击位于左上角的更新按钮来保存你的工作。 或者,你也可以在LIVE模式下编辑着色器,任何更改都会立即保存和更新。根据着色器的复杂性,LIVE模式可能需要一秒钟左右的时间来更新。 与默认着色器值相反,任何对材质属性的更改都是立即可见的。

Amplify Shader Editor 手册翻译(Manual) - 图51

11. 第三方兼容性(3rd-Party Compatibility)

11.1 Aura2(此为Unity Assets 的一个资产,不作翻译)

使用Aura 2和ASE非常简单,只需要添加必要的节点。
Amplify Shader Editor 手册翻译(Manual) - 图52
请务必检查官方Aura 2手册的更新信息。

11.2 Substance Support(此为Adobe 软件,Adobe Substance 3D,不作翻译)

支持Unity 2018及以上的Substances已添加到ASE。
Amplify Shader Editor 手册翻译(Manual) - 图53
最初的Substance例子必须被打包到Unity包中。在Unity 2018中 .sbsar文件现在会出现导入错误,因为原生Substance支持已经被删除。
如果你正在使用Unity之前的2018版本,而原生Substance支持还没有被弃用,你可以找到下面的Substance示例:

  • 进入AmplifyShaderEditor\Examples\Official\Substance文件夹
  • 提取LegacySubstanceExample.unitypackage

如果你使用的是Unity 2018,你需要确保你安装了Allegorithmic Substance插件,然后再解压合适的ASE包:

  • 下载,导入和设置 Substance in Unity
  • 进入AmplifyShaderEditor\Examples\Official\Substance2018文件夹
  • 提取 Substance2018.unitypackage

ASE允许您直接或间接地从编辑器中使用Substance。使用Substance最基本的方法是在编辑器中拖放Substance Asset。一个新的Substance Sample节点将创建与它内部可以在任何地方使用的纹理。
它可以设置Substance生成所有纹理,并将它们作为常规纹理独立地拖放。即使你重新生成纹理,这些也将保持他们相应的参考和更新。
也可以创建一个通用的着色器,直接在着色器中使用。唯一需要注意的是,在Substance资产中需要额外的配置来连接每个纹理样本到一个被生成的纹理。如果需要一个更自动化的过程,纹理样本节点可以设置为使用一个属性名称匹配Unity的默认名称(例如: _MainTex用于反射率,_SpecClossMap用于高光贴图,_MetallicGlossMap用于金属贴图,_Glossiness用于平滑贴图,_BumpMap用于法线贴图,_OcclusionMap用于遮罩贴图,_EmissionMap用于自发光贴图, 这样,Substance资产将检测属性,并自动分配正确的纹理,而无需额外干预。

11.3 MegaSplat(此为Unity Assets 的一个资产,不作翻译)

MegaSplat中包含了对ASE的本地支持。

11.4 Curved World Shaders(此为Unity Assets 的一个资产,不作翻译)

本指南将向你展示如何整合Curved WorldAmplify Shader Editor
你可以下载一个简单的例子在这里
Amplify Shader Editor 手册翻译(Manual) - 图54

  1. 第一步,我们将引入 curvedworld.cginc文件。在上面的图片中,注意我们是如何用字符串“../cginc/CurvedWorld_Base.cginc” 添加引入的,这是因为我们的shader文件是在旁边的cginc文件夹的文件,所以 “.. /“ 向上进入一个文件夹,”/cginc/“ 部分在cginc文件夹中查找,最后一部分是文件本身。 你可以简单地使用“CurverdWorld_Base.cginc”( 如果你的shader文件在这个文件旁边) 。
    1. 注意:你必须小心这个引入,因为Unity不允许你通过名称自动检测文件的位置,你必须指定文件路径。 如果你碰巧移动文件到一个不同的文件夹,你必须修复文件路径,重新编译着色器,否则它将引入文件失败。 (或者你也可以使用一个基于项目的绝对路径:“Assets/VacuumShaders/Curved World/Shaders/cginc/CurvedWorld_Base.cginc”。 在这种情况下,你只需要修复路径即可,以防你移动Curved World Shader 文件夹。)

Amplify Shader Editor 手册翻译(Manual) - 图55

  1. 其次,为了用你的着色器将Curved World效果应用到对象上,你需要调用它自己的函数,就是我们在第一步中引入的文件。为了实现这一点,您必须创建一个自定义表达式节点并将其连接到“local vertex offset”输出,并让它调用您想在代码框中调用的函数,在本例中是“V_CW_TransformPointAndNormal(v.vertex,v.normal v.tangent);”。
    1. 注意:如果你需要做一些顶点变换,你仍然可以将它连接到函数节点的输入。
  2. 就是这样! 现在你可以像在一个正常的ASE着色器中一样使用其他所有东西,它应该在Curved World中工作!

    11.5 VertExmotion(此为Unity Assets 的一个资产,不作翻译)

    The VertExmotion 包含ASE的内置节点。确保着色器名称以“VertExmotion/”开头,后面跟着你的着色器名称,否则它将无法被识别为兼容。

  3. 解压文件’VertExmotion/Addon/VertExmotion_AmplifyShaderEditorNodes.unitypackage’。

  4. 添加VertExmotion节点并将其连接到本地顶点偏移量输入端口。

Amplify Shader Editor 手册翻译(Manual) - 图56

  1. 在输出节点参数中将顶点输出设置为“Relative”。

Amplify Shader Editor 手册翻译(Manual) - 图57

  1. 在附加指令下添加VertExmotion cginc文件(Assets/VertExmotion/Shaders/VertExmotion.cginc)。

Amplify Shader Editor 手册翻译(Manual) - 图58

  1. 如果你正在使用曲面细分,请确保添加VertExmotion (Advanced NC)节点; 将顶点偏移和法线插入到输出节点输入。 (可选)

Amplify Shader Editor 手册翻译(Manual) - 图59

  1. 包括HD SRP变体。(可选)

Amplify Shader Editor 手册翻译(Manual) - 图60

12. 通用提示(General Tips)

12.1 移动端着色器(Mobile Shaders)

当为移动设备创建着色器时,需要有一些特殊的考虑。通常情况下,这些考虑与着色器的性能有关,但有时,艺术或设计选择会导致需要对着色器级别进行修改。
这些只是最常见的方法,你可能会发现对移动端着色器的创建有些帮助:

12.1.1 渲染选项(Rendering Options)

经常被忽视的是,渲染选项让你关闭 unity 光照系统的一些关键功能。 例如,你可能会发现关闭Unity GI系统,也仍然会保持他们的PBR工作流,这样足以达到你的目的。
Amplify Shader Editor 手册翻译(Manual) - 图61
这个图像的极端例子是,每个特殊的照明功能都被关闭,甚至阴影也被关闭。 这可能不是我们所需要的,但却是一个很好的起点。

12.1.2 自定义光照模型(Custom Lighting Model)

Attention 自定义照明仅适用于通用和内置渲染器。 通用自定义照明有特定的要求,利用“SRP Additional Light”节点,请检查这个流和示例文件的额外细节:Dev Stream #4 - Outline Toon Shading in LW/URP
ASE允许为内置渲染器创建自定义照明模型着色器。这些仍然是Unity的表面着色器,允许更换Unity的照明功能。在ASE中,这意味着你可以设置你的着色器光照模型为自定义照明。这样做将把主输出节点转换为只有自发光和不透明端口的节点。有了这个,就可以使用现有的节点和一些额外的光照节点来创建一个有优化和量身定制的特殊目的的着色器。
下面的图片展示了如何创建一个简单的封装Lambertian着色器,它应该可以运行在非常低性能的机器上。
Amplify Shader Editor 手册翻译(Manual) - 图62
使用的节点:Texture Sample, World Normal, World Space Light Dir, Dot, Multiply Float, Add
将这个与之前的渲染选项结合起来,可以节省额外的开销,并且注意到在一般选项中有一些是被关闭或关闭的,以获得更好的性能(例如:Shader Model, Precision, Cast Shadows)

作为一个学习步骤,检查ASE包提供的Toon Ramp示例可能是一个好主意,它使用自定义照明以更复杂的方式创建一个支持边缘光和阴影的Toon Ramp效果。

12.1.3 友好的移动端模板(Mobile Friendly Templates)

有时候我们需要一个特定的Vertex/Frag着色器来完成非常简单的工作,例如,粒子(particles),精灵(sprites),UI等。对于这些情况和其他情况,ASE允许将着色器代码注入到我们称为“模板”的已有着色器中。这些是常规的Vertex/Frag着色器,通过添加一些标签,编辑器可以读取,以知道在哪里注入新代码,哪些代码已经存在于模板中。
有一整页专门介绍这些模板如何工作以及如何构建自己的模板就是这里
它们对移动着色器很重要的原因是,这些模板可以非常简单,几乎不需要任何代码。 如果是为了节省性能,则可以使用通用的无光照模板作为构建的基础,因为这些模板在编辑器中是可编辑的,可以通过构建更复杂的图树或编辑原始模板来添加额外的功能。唯一的警告是用户必须有一点着色知识来编辑或创建原始模板着色器。幸运的是ASE已经提供了一些模板,任何用户都可以选择和使用任何其他着色器。
Amplify Shader Editor 手册翻译(Manual) - 图63
使用的节点:Template Parameter, Texture Sample, Grayscale, Float, Lerp
该功能仍在开发中,将来会提供更多的模板,以便在它们可用时实现更复杂或特定的效果。

12.2 安卓(Android)

当在ASE中使用Texture Sampler节点并且目标平台是Android时,它会忽略Scale Parameter,这是一个预期的行为,因为Unity不支持DXT5nm格式的平台缩放法线贴图,这是Unity压缩法线贴图的格式。
虽然这可以通过直接改变内置的shader文件来修复,这是一个麻烦的操作和维护,一个更简单的解决方案将是Unity在编辑器本身做完全相同的计算。
下面的图片和shader文件执行这个计算,同时通过检查Unity设置自己的定义符号,确保shader在Android环境之外仍然可以工作。 如果你需要在几个着色器中使用该逻辑,我们建议你创建一个着色器函数
Amplify Shader Editor 手册翻译(Manual) - 图64


Amplify Shader Editor 原文档:http://wiki.amplify.pt/index.php?title=Unity_Products:Amplify_Shader_Editor/Manual
Amplify Shader Editor 翻译文档参考:https://blog.csdn.net/DebuggerPrisonBreak/article/details/85863719