当前位置:网站首页>Amplify Shader Editor手册 Unity ASE(中文版)

Amplify Shader Editor手册 Unity ASE(中文版)

2022-08-09 09:03:00 清木Moyu

安装(Installation)

1. 打开AmplifyshaderEditor###.unitypackage

2. Unity加载后将显示“导入包”窗口,选择All,点击Import

3.现在应该在你的Unity项目中安装Amplify Shader编辑器,它应该有以下目录结构:

YourProject\Assets\AmplifyshaderEditor\

YourProject\Assets\AmplifyshaderEditor\Plugins\

YourProject\Assets\AmplifyshaderEditor\Resources\

YourProject\Assets\AmplifyshaderEditor\Samples\

YourProject\Assets\AmplifyshaderEditor\Templates\

YourProject\Assets\AmplifyshaderEditor\Textures\

编辑器(The Editor)

打开Amplify Shader Editor画布,停靠它,在一个单独的窗口中使用它,甚至在另一个监视器中使用它。双击ASE材质或着色器时,编辑器将自动打开。

ASE着色器可以直接创建在项目标签或通过菜单下的Assets > Create > Shader > Amplify Surface Shader.

  1.  双击ASE着色器在ASE画布中打开它。或者,你也可以通过点击open in shader Editor按钮,在它的inspector选项卡中直接打开着色器。
  2. 在节点属性标签中直接命名你的着色器,你可以使用斜杠(/)分隔符添加你自己的类别。请记住,着色器文件名是唯一的,必须在Project Explorer选项卡中手动设置。你可以为文件和实际的着色器使用不同的名字。
  3. 该区域显示当前的着色器,单击它将在Project Explorer选项卡中找到并选择着色器。注意绿色的轮廓,它是一个视觉辅助工具,让你知道目前只有着色器是开放的。 

  1. 双击使用ASE着色器的材质来打开ASE画布中的着色器和材质。或者,你也可以直接在材质检查器选项卡中打开它,方法是点击open in Shader Editor按钮。
  2. 通过打开材质,活动着色器和材质都显示在下面的画布区域。与着色器一样,单击它将在Project Explorer选项卡中找到并选择材质。注意蓝色的轮廓,它是一个视觉辅助,让你知道着色器和材质都是打开的。

Canvas UI Interaction

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

2. 极简主义的保存/更新/清除/编辑按钮。不可用或禁用时为灰色,最新时为绿色,过时时为黄色。

  •  按钮1:手动着色器更新(保存和更新)
  •  按钮2:切换实时着色器更新(自动保存和更新)
  •   按钮3:删除断开的节点
  •  按钮4:在文本编辑器中打开着色器

3. 着色器类别和名称。

4. 画布视图调整。

按钮1:选择并聚焦于输出节点

按钮2:聚焦于选中的节点,如果没有选中任何节点,则聚焦于整个节点集合。自动缩放也可以通过双击按钮或双击“F”键来实现

5. Node Palette选项卡是一个可搜索的节点列表,您可以在其中直接选择并将节点拖出画布区域。通过单击选项卡左上角的减号按钮,可以最小化Node Palette选项卡。

6. 右键单击画布上的任何地方,以弹出可搜索的节点列表,单击节点名创建它。

7. 按住快捷键并单击画布上的任意位置以创建新节点。快捷键显示在[]内部,位于面板选项卡上它们各自的节点名前面。例如:Key ' 1 '表示浮点数,Key ' 5 '表示颜色节点。   

数据从左到右流动——输入端口>处理数据>输出端口。只分析直接或间接连接到输出节点的节点,并用于生成最终的着色器指令。如果一个节点包含未连接的输入端口,ASE将在处理阶段使用内部数据。可以通过Node属性选项卡编辑内部数据值。

  • Nodes 可以通过鼠标左键单击节点或鼠标左键拖动选中的框来选择节点。通过按住Shift键并单击它,可以从选择中添加或删除节点。按下CTRL/CMD+A键选择所有选项。通过鼠标左键单击节点画布上的空白区域取消所有选择。通过按住鼠标左键并拖动选定的节点来移动它们。
  • Wires 通过按住“Alt”键并单击节点端口或拖动到空白画布空间的连接并单击左键,删除连线。连接到所选节点的连接被高亮显示,以表示从最左边节点到最右边节点的数据流。
  • Connections 通过左键点击并拖动连线(从输出端口到输入端口或从空输入端口到输出端口)创建连接。在已经连接的输入端口上按住鼠标左键,可以将连接端从它移开,并将其锁定到鼠标指针上,这样您就可以将它拖到另一个端口上。将导线拖到空画布空间上,上下文菜单将自动出现,如果选择了节点类型,则使用第一个有效端口进行连接。
  • Ports 输出端口可以连接到多个输入端口,但输入端口接受单个输入。连线自动吸附到鼠标光标附近的端口。为了更容易使用,活动端口区域是相当宽容的,您甚至可以直接将连接放到端口名称上。
  • View 鼠标右键或鼠标中键拖动可平移视图。当框选择或从可见工作区区域移动选定节点时,画布将自动滚动。你可以通过鼠标滚轮放大/缩小。缩放的大小是根据画布上的节点位置动态确定的。
  • Tabs 当将ASE窗口宽度降低到750px以下时,节点属性和节点面板窗口都会自动最小化。您总是可以通过单击矩形按钮来最大化它们。

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

你可以使用ASE在两种模式之一,着色器或材质,取决于你是否从材质或材质资源加载着色器文件。画布边框作为活动模式的视觉指示器,一个绿色的轮廓显示为着色模式,一个蓝色的轮廓显示为材质模式。

在着色器中设置的值通常称为默认值。对任何给定着色器的默认值所做的任何更改都会自动影响使用它的所有材质。当同时编辑材质和着色器时,要密切注意哪些值正在被修改。

与着色器中的默认值不同,材质值可以是唯一的。材质值只在材质模式下显示(打开材质和材质)。只有表示变量(颜色、浮点数、Int、向量、矩阵)的节点具有参数类型下拉菜单,并且可以设置为属性。在选择属性或统一参数类型时,默认值总是被复制到材质值。每一种材质都可以调整,以创造无限数量的变化,同时仍然使用相同的着色器。你可以把材质当成你的着色器的实例,每个实例都是唯一的,但是使用相同的默认值创建。

您可以复制和粘贴属性值之间的材质使用相同的ASE着色器。打开在着色器编辑器按钮提供了一个快速的方式来打开材质和着色器中使用的Amplify着色器编辑器。

着色器也可以通过他们的检查器标签直接打开,通过点击打开在着色器编辑器按钮。或者,单击文本编辑器中的Open以在当前的代码编辑器中打开它。

输出节点(Output Node)

Portions of this section have been acquired directly from the Unity Shader Reference documentation.

本节的部分内容是直接从Unity Shader参考文档中获得的。

Learn more: Unity Shader Reference

General

  • Shader Name: 可编辑文本框,定义着色器的名称和路径。使用正斜杠“/”定义其类别和名称;例如UserSamples / EnvironmentGradient。注意,在这个框中显示的名称与文件名不同,它们必须单独设置。
  • Shader Type: 这个区域显示当前使用的着色器类型。这些包括您当前项目中的模板。ASE提供了后期处理效果,粒子,精灵,UI和一个未点亮的着色器的预设。默认设置为表面着色器。
  • Light Model: 定义表面如何反射光线,通常称为使用的着色器类型。ASE目前提供标准(金属),标准镜面,Lambert, Blinn Phong和定制照明,允许创建一个独特的基于节点的照明模型。
  • Shader Model: 在编写表面着色器或常规着色器程序时,HLSL源代码可以编译成不同的“着色器模型”。更高的着色器编译目标允许使用更现代的GPU功能,但可能使着色器不能在旧的GPU或平台上工作。
  • Precision: 定义内部计算的最大精度,使用较低的类型可以提供额外的性能提升,以换取一定的精度;在默认情况下设置为Float——该值将为放置在画布中的所有现有属性设置上限。
  • Cull Mode: 正面-剔除正面几何体,背面-剔除背面几何体,关闭-关闭剔除(双面材质);默认设置为剔除背面。
  • Render Path: 允许你定义哪个模式(正向/延迟)是由着色器支持的;默认设置为All。
  • Cast Shadows: 定义着色器是否生成阴影通道以能够投射阴影;仍然可以在材质渲染器组件中基于每个对象关闭。
  • Receive Shadows: 定义使用着色器的对象是否接收阴影;这包括自阴影(只有正向渲染);仍然可以在材质渲染器组件中基于每个对象关闭。
  • Queue Index: 呈现队列偏移值,接受正(稍后)和负(稍后)整数。
  • Vertex Output: 默认为相对,可以设置为绝对;输入的局部顶点偏移量输入将自动更改为局部顶点位置。
  • LOD: 默认情况下,允许的LOD级别是无限的,也就是说,用户硬件支持的所有着色器都可以使用。但是,在某些情况下,您可能想要删除着色器细节,即使硬件可以支持它们。
  • Fallback: 从项目中可用的着色器中设置一个回退着色器,当某个传递丢失或不受主着色器支持时将使用该回退着色器。
  • Custom Editor: 自定义检查器允许您使用自定义材料检查器,默认情况下使用ASE自定义材料检查器。

Standard Shader Inputs  标准着色器的输入

  • Albedo: 反射率参数控制着色器表面的基本颜色,接受颜色值或纹理贴图。
  • Normal: 法线贴图是一种特殊的纹理,允许添加表面细节,例如从高多边形网格、凹凸、凹槽和划痕传输的阴影信息。你可以在这里连接法线贴图或自定义法线向量。
  • Emission: 自发光控制从表面发出的光的颜色和强度,而不管照明条件如何;接受完整的RGB值。
  • Metallic ( Metallic workflow only ): 在金属工作流程中,通过金属级和光顺级对表面反射率和光响应进行修正;两个灰度级输入。您可以使用范围从0到1的值,影响整个表面,甚至连接一个纹理,它将控制金属值,同时为表面的不同区域提供不同的值;0为介质(非金属),1为全金属。
  • Specular ( Specular workflow only ): 在高光模式下工作时,高光参数中的RGB颜色控制着高光反射率的强度和色彩。
  • Smoothness ( Both workflows ): 平滑的概念既适用于镜面工作流程,也适用于金属工作流程,两者的工作方式非常相似;灰度。值1处的完全光滑的表面提供了清晰的反射,而值0处的粗糙表面创建了没有清晰反射的漫反射颜色;它也被称为“粗糙度”在一些引擎。
  • Ambient Occlusion: 遮挡输入接受遮挡纹理贴图,或自定义值,用于提供关于模型的哪些区域应该显示高或低间接照明的信息,这些信息来自环境照明和反射。遮挡映射是灰度图像,其中白色表示应该接受完全间接照明,而黑色表示没有间接照明。
  • Transmission: 透射是一种高度优化的光散射近似方法。换句话说,它定义了当从背后照射时,有多少光穿过一个表面,这对于少许细节的资源,如树叶、布料,甚至蜡制品,是理想的;接受完整的RGB输入。
  • Translucency: 半透明输入允许您通过控制光法向角衰减偏移,以简单和优化的方式近似SSS(次表面散射)效应。它通常用于皮肤效果,但足够灵活的其他用途;接受完整的RGB输入。
  • Refraction ( Transparent Render Type ): 折射输入需要一个着色器,其渲染类型设置为透明,用于模拟通过玻璃或水等介质看到的物体的变形效果,该效果是通过屏幕空间的UV偏移来实现的,可以折射背景像素;接受完整的RGB输入。这种技术是对光现象的简单近似,当波从具有给定折射率的介质以斜角传播到具有另一个介质时,通常会发生这种现象。
  • Opacity ( Transparent Render Type ): 不透明度输入需要一个着色器,其渲染类型设置为透明,负责设置整个表面的透明度,使用0到1之间的值范围,从完全透明到完全不透明;接受完整的RGB输入。
  • Opacity Mask ( Transparent Render Type ): 不透明面具需要材质的渲染类型设置为透明或戴面具的混合模式,和工作类似于不透明,它接受一个值在0和1之间,从完整的透明完全不透明,但没有考虑到中间值,导致完全可见或完全不可见的表面在特定领域。对于定义复杂实体表面的材料,如钢丝网或链环,它是完美的解决方案,因为不透明的部分仍然会尊重光线;接受灰度级输入。
  • Local Vertex Offset ( Relative Vertex Output ): 局部顶点偏移输入可用于通过顶点操作改变曲面的形状,其中XYZ坐标将定义每个顶点从其相对位置偏移的方式。
  • Local Vertex Position ( Absolute Vertex Output ): 局部顶点位置的工作原理与局部顶点偏移输入类似,但是,它不是从相对位置偏移每个顶点,而是从绝对世界空间方向偏移顶点。
  • Local Vertex Normal: 局部顶点法线允许调整任何偏移表面的法线方向,因为网格法线不是实时计算的。这个过程通常被称为正常重建。
  • Tessellation: 曲面细分输入允许细分网格的三角形,在运行时将它们分割成更小的三角形,以增加任何给定网格的表面细节。
  • Debug: 调试输入生成一个预览着色器,它忽略所有其他活动输入,只绘制插入到输入端口的内容,而不考虑光照。请注意,并非所有节点或特定组合都可以在调试模式下预览。

Blend Mode  混合模式

  • Blend Mode: 所选模式自动调整可用参数;不透明,蒙面,透明,半透明,Alpha预乘或自定义。
  • Render Type: RenderType标签将着色器分类为几个预定义的组;不透明材质,或alpha测试着色器等可用标签:不透明,透明,透明的裁剪,背景,覆盖,树不透明,树透明的裁剪,树广告牌,草和草广告牌。
  • Render Queue: 几何渲染队列优化对象的绘制顺序,以获得最佳性能。呈现队列根据距离对对象进行排序,从最远的对象开始呈现,以最近的对象结束。可用选项:背景,几何,Alpha测试,透明和覆盖。每个后续队列都是在前一个队列创建分层系统之后呈现的。
  • Mask Clip Value: 将默认值与不透明度alpha值进行比较。0完全不透明,1完全掩蔽;默认设置为0。通常用于透明的切断材料。
  • Refraction Layer: 当指定的grabpass被这个值偏移时,有效地创建了一个用于折射效果的分层系统。
  • Alpha To Coverage: 打开内部MSAA功能,使用不透明对象层混合alpha对象;只有在打开MSAA的情况下才能进行正向渲染。
  • Blend RGB and Blend Alpha: 当图形被渲染时,在所有的着色器被执行和所有的纹理被应用之后,像素被写到屏幕上。如何将它们与已经存在的内容组合在一起是由Blend命令控制的。ASE目前提供了自定义、混合、预乘、加法、软加法、乘法和2x乘法模式。
  • Blend Factors (SrcFactor & DstFactor): 以下所有属性对于Blend命令中的SrcFactor和DstFactor都是有效的。源是指计算出的颜色,目的是指屏幕上已经出现的颜色。如果BlendOp使用逻辑操作,则忽略混合因子。
    • 1的值1 -使用这个来让源色或目标色都充分显示出来。
    • 0:值0——使用它删除源值或目标值。
    • SrcColor:这个阶段的值乘以源颜色值。
    • SrcAlpha:这个阶段的值乘以源alpha值。
    • DstColor:这个阶段的值乘以帧缓冲源的颜色值。
    • DstAlpha:这个阶段的值乘以帧缓冲源alpha值。
    • OneMinusSrcColor:这个阶段的值乘以(1 -源颜色)。
    • OneMinusSrcAlpha:这个阶段的值乘以(1 -源alpha)。
    • OneMinusDstColor:这个阶段的值乘以(1 -目标颜色)。
    • OneMinusDstAlpha:这个阶段的值乘以(1 - destination alpha)。
  • 混合Op RGB和混合Op Alpha:添加、替换、Rev替换、最小和最大
  • 颜色掩码:设置颜色通道写入掩码,将它们全部关闭,使其不可见。

Stencil Buffer  模板缓冲区

模板缓冲区可以作为每个像素掩码的通用用途,用于保存或丢弃像素。通常是每像素8位整数。该值可以被写入、递增或递减。后续的绘制调用可以对该值进行测试,以决定在运行像素着色器之前是否应该丢弃像素。当Cull模式被设置为OFF时,这个菜单会显示一组额外的比较选项,用于将缓冲区与前脸和后脸分开使用。

  • Reference:要比较的值(如果Comp不是总是)和/或要写入缓冲区的值(如果Pass、Fail或ZFail被设置为replace)。0 - 255整数。
  • Read Mask:一个8位的掩码作为0-255的整数,在比较引用值和缓冲区的内容(referenceValue和readMask)比较函数(stencilBufferValue和readMask)时使用。默认值:255。
  • Write Mask:一个8位掩码,0-255整数,在写入缓冲区时使用。默认值:255。
  • Comparison (front and back):用来比较参考值与缓冲区当前内容的函数。默认值:永远。
  • Pass (front and back):如果模板测试(和深度测试)通过,如何处理缓冲区的内容。默认值:。
  • Fail (front and back):如果模板测试失败,如何处理缓冲区的内容。默认值:。
  • ZFail(front and back):如果模板测试通过,深度测试失败,如何处理缓冲区的内容。默认值:。

Tessellation  曲面细分

  • Phong:修改细分曲面的位置,使得到的曲面稍微符合网格法线;默认设置为OFF。
    • Strength: Effect strength 0-1.
    • 强度:作用强度0-1。
  • Type:定义所使用的技术;基于距离的,固定的,边缘长度和边缘长度的选择。
  • Tess:曲面细分的因子;1-32.
  • Min: 最小曲面细分距离。
  • Max: 最大曲面细分距离。
  • Edge Length:在开始曲面细分之前,边缘的最大长度。
  • Max Disp:在多边形贴片仍然被曲面细分的截锥体边界之外的最大位移。

Outline  轮廓创建一个可定制的轮廓效果使用反向扩展边缘技术

  • Mode:顶点模式偏移边缘一个值,而顶点比例增加一个百分比。
  • Color:让你定义轮廓的颜色。
  • Width:要偏移或按比例缩放的值。

Billboard  广告牌

  • Type:圆柱形广告牌只会在Y轴上旋转,而球形广告牌则会朝着相机方向旋转,不管它是旋转的。
  • Ignore Rotation:设置这个将忽略公告牌变换旋转。

Depth  深度

  • ZWrite Mode:控制是否将该对象的像素写入深度缓冲区(默认为On)。如果你在画实体,就把这个打开。如果您正在绘制半透明效果,请切换到ZWrite Off。
  • ZTest Mode:如何进行深度测试。默认是LEqual(从现有对象中或从距离中绘制对象;把物体藏在它们后面)。ASE提供ZTest更少,更大,LEqual, GEqual, Equal, NotEqual和Always。
  • Offset:允许您使用两个参数指定深度偏移量。因素和单位。因子根据多边形的X或Y缩放最大Z斜率,单位缩放最小可解析深度缓冲值。这允许你强迫一个多边形画在另一个的上面,尽管他们实际上在相同的位置。例如偏移量0,-1将多边形拉得更靠近摄像机,忽略多边形的斜率,而偏移量-1,-1将把多边形拉得更近,当观察掠角时。
    • Factor:缩放多边形相对于X或Y的最大Z斜率。
    • Units:单位缩放最小可解析深度缓冲值。

Rendering Options  渲染选项

这里可以激活或禁用某些着色器功能,在默认情况下,他们中的大多数将模拟Unity的标准着色器。

Rendering Platforms  渲染平台

定义支持哪些平台;默认设置为All。

Additional Includes  额外的包括

允许从cg包含文件的着色器定义一个相对路径。如果文件丢失或路径不正确,它将无法编译着色器。“. ./"可以用来下拉一个文件夹。

Additional Pragmas  额外的语法

允许添加单独的pragma指令来控制着色器的编译和渲染。

Custom SubShader Tags  定制SubShader标记

允许为自定义着色器呈现控件添加自定义子着色器标记。

Material Properties  材质属性

设置为属性的变量将在本节中列出,您可以通过拖动它们来调整它们的位置。

Referencing Custom Properties  引用自定义属性

某些着色器选项,如Cull模式或模板,也可以由着色器属性、int和float来配置,而不是由它们通常的预定义值来配置。

在下拉框的旁边会有一个可点击的点,你可以用它作为一个切换来激活新的属性选择模式,通过着色器选项的列表来选择你自己的属性。

Shader Functions  着色器函数

着色器函数,简称SF,是允许您构建可重用函数的单个节点网络。很容易设置和非常灵活,他们工作通过接收输入值直接从您的着色器,处理信息,并输出回进一步修改或直接使用。SF资源不绑定到任何着色器,您可以在整个项目中多次使用它们,在同一个着色器中,在其他着色器函数中,甚至与其他用户共享它们。从简单的图形到复杂的图形,着色器函数是通过将复杂的网络打包成单个节点来减少画布混乱的好方法,也是消除不必要的重复任务的好方法。

Features  特性

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

Comparison  比较

上述节点网络都产生相同的燃烧效应。原始版本不使用着色函数。版本1使用一个包含用于生成燃烧效果的原始节点网络的SF,它接收1个纹理对象节点用于燃烧掩码,1个纹理对象节点用于燃烧纹理,1个纹理坐标节点。版本2比上一个例子简单,烧伤效果生成和纹理节点都包含在SF中,唯一的例外是纹理坐标节点,允许用户调整其行为。请记住,SF不需要接收任何输入,如果需要,可以在其图形中完全生成输出数据。

Version 1 Shader Function Example

Creation and Usage  创建和使用

创建一个新的着色器函数资源,在菜单项 Assets > Create > Shaders > Amplify Shader Function.

您新创建的着色器函数将在被重命名后自动在ASE编辑器中打开。

1. 在这里添加着色器函数描述。您还可以通过将功能输入/输出和材料属性拖动到所需位置来重新排序。在你的SF中设置的订单将在你的材质检视标签中使用相同。

2. 创建两个或更多的输入节点。默认情况下,总是有一个输出节点,但是您可以添加任意多的输出节点。您还可以在活动的SF中使用其他SF节点,但是,为了避免Shader函数循环,您不能将函数添加到它自己的画布中。

3.选择一个输入节点来设置所使用的类型,或者像使用其他节点属性一样,在左侧选项卡中切换Auto Cast选项来直接自动化过程。

4. 将结果输出直接连接到输出节点。

5. 保存您的更改,并单击Return返回以前打开的着色器或材质(如果有的话)。

1. 通过直接从节点列表中选择创建的着色器函数添加到着色器。SF节点可以像任何其他ASE节点一样使用,它们可以被重复、复制或删除。

2. 或者,你可以直接拖拽着色器函数到你的编辑器画布。

3.双击一个SF节点以打开它。

Colored Line Mode  颜色的线模式

按[W]切换。

Node Previews  节点预览

按[P]切换节点预览

Multi-line Mode  多行模式

按[CTRL + W]激活多行模式。

Full Shortcut List  全部快捷键列表

Editor  编辑器

  • [Double Click Wire]: 创建连线控制点。
  • [F1]: 打开选定节点Wiki页面
  • [C]: 创建评论
  • [F]: 定位选中节点
  • [B]:  新主节点
  • [Space]: 打开节点调色板
  • [W]: 切换颜色的线模式
  • [Control + W]: 切换多行模式
  • [P]: 全屏预览
  • [Delete]: 删除选中的节点
  • [Backspace]: 删除选中的节点

Nodes  节点

  • [Alpha5]: Color
  • [Alpha0]: Int
  • [Alpha1]: Float
  • [Alpha2]: Vector2
  • [Alpha3]: Vector3
  • [Alpha4]: Vector4
  • [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

Translucency  半透明

半透明输入提供了一种表示光散射的快速方法。这不是最现实的方法,但它是一个灵活和快速执行的近似。在我们的例子中(AmplifyShaderEditor \ \ \半透明)官方例子我们使用一个简单的红色着色深度纹理代表皮肤地下散射效应但你不一定需要使用相同的设置,你可以很好地填补完整RGB纹理半透明输入为了得到一些颜色变化或程式化的结果。
当你将你的值插入半透明输入端口时,下面的材质属性会自动添加到你的着色器中。

  • Strength: 半透明效果强度,你可以认为它是一个乘数滑块。
  • Normal Distortion: 定义半透明效果上的正常失真量。
  • Scattering Falloff: 散射衰减量为半透明效果。
  • Direct: 直接光照对半透明效果的影响。
  • Ambient: GI/环境光对半透明效果的影响。
  • Shadow: 自阴影对半透明效果的影响,降低了阴影区域的半透明效果。

Your First shader  你的第一个着色器

1. 打开编辑器,在Project Explorer选项卡中创建一个新的材质和一个新的着色器。在新创建的材质中,选择你的新材质,点击Open In shader Editor按钮来打开着色器和材质。

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

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

4. 按住5快捷键并单击画布创建一个新的Color节点。或者,您可以使用早期使用的可搜索列表,或者从右侧的节点调色板拖放节点;常数>颜色[5]。

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

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

7. 创建一个新的浮动,并将其连接到输出节点的平滑输入端口,将其最小值设置为0,最大值设置为1,就像您之前所做的那样。将其类型设置为属性,并将其命名为平滑度值。创建另一个浮动并将其连接到镜面输入端口,将其最小值设置为0,最大值设置为1。将其类型设置为属性并将其命名为高光值。

8. 最后,将一个普通的地图纹理从Project Explorer中直接拖放到画布中。例如,我们使用了拉丝金属纹理。将它连接到输出节点的正常输入端口,就完成了。你刚刚建立了你的第一个着色器,不要忘记通过点击左上角的更新按钮来定期保存你的工作。或者,你可以在启用实时模式的情况下编辑着色器,任何更改都会立即保存和更新。根据着色器的复杂性,实时模式可能需要一秒钟左右的时间来更新。与默认着色器值相反,对材质属性所做的任何更改都是立即可见的。

3rd-Party Compatibility  第三方的兼容性

Substance Support

原来的物质例子必须被打包成一个Unity包,因为。sbsar文件现在导致一个导入错误在Unity 2018,因为原生实例化支持已经被删除。

如果你使用的是2018年版的pre-Unity,在这个版本中,原生实例化的支持还没有被弃用,你可以找到下面的物质例子:

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

如果你使用Unity 2018,你需要确保在提取合适的ASE包之前安装了mic Substance插件:

  • 在Unity商店中下载、导入和设置实例化
  • 进入AmplifyShaderEditor\example\Official\Substance2018文件夹
  • 提取Substance2018.unitypackage

ASE允许您直接或间接地从编辑器中使用实例化。使用实体最基本的方法是在编辑器中真正地拖放实体资源。一个新的实例化样本节点将创建它的各种纹理可以在任何地方使用。

可以设置实体来生成所有纹理,并将它们作为常规纹理分别拖放。即使你重新生成纹理,它们也会保持它们的引用并相应地更新。

也可以创建一个直接在着色器中使用的通用着色器。唯一需要注意的是,实体资源中需要额外的配置来将每个纹理样本链接到生成的纹理。如果需要更多的自动过程纹理样本节点可以设置为使用一个统一的默认名称匹配的属性名(即:_MainTex反射率,_SpecGlossMap镜面光泽度贴图,_MetallicGlossMap对金属光泽贴图,_Glossiness光泽贴图,_BumpMap法线贴图,_OcclusionMap遮挡贴图,_EmissionMap自发光贴图,等等)这样的实例化资源将自动检测属性和分配正确的纹理没有额外的干预。

MegaSplat

Native support for ASE is included in MegaSplat

Curved World Shaders

本指南将向你展示如何与Amplify Shader编辑器集成Curved World Shaders

您可以在这里下载一个简单的示例。

1. 我们将包括曲线世界。cginc文件。在上面的图像中,注意我们是如何用字符串“../cginc/CurvedWorld_Base”添加include的。这是因为我们的着色器文件在文件所在的cginc文件夹旁边的一个文件夹中,所以…/"字符串的一部分进入一个文件夹,"/cginc/"部分进入cginc文件夹,最后一部分是文件本身。您可以简单地使用“CurvedWorld_Base”。如果你的着色器文件在这个文件的旁边。

注意:您必须小心这个包含,因为Unity不允许您根据名称自动检测文件的位置,您必须指定文件路径。如果您碰巧将文件移动到另一个文件夹,您必须修复文件路径并重新编译着色器,否则它将无法包含该文件。

2. 其次,为了在你的着色器中应用曲面世界效果,你需要调用它自己的函数,它在我们在第一步中包含的文件中。要实现这一点,您必须创建一个自定义表达式节点并将其连接到“局部顶点偏移量”输出,并让它调用您想要在代码框中调用的函数,在本例中是“V_CW_TransformPointAndNormal(v)”。顶点,v.normal v.tangent);”。请注意parameters面板中的“Call Mode”复选框,需要打开它才能使此步骤正常工作,没有任何问题。

注意:如果需要进行一些顶点变换,仍然可以将其连接到函数节点的输入端。

就是这样!现在你可以像在普通的ASE着色器中一样使用其他任何东西,它应该在弯曲的世界中工作!

VertExmotion

The VertExmotion package includes built-in nodes for ASE.

1.Unpack the file 'VertExmotion/Addon/VertExmotion_AmplifyShaderEditorNodes.unitypackage'.

2. Add the VertExmotion node and connect it to the Local Vertex Offset Input port.

3. Set the Vertex Output to 'Relative' in the Output Node parameters.

4. Add the VertExmotion cginc file (Assets/VertExmotion/Shaders/VertExmotion.cginc) under Additional Directives, Includes.

5. If you're using tessellation, be sure to add the VertExmotion (Advanced NC) node; plug both the Vertex Offset and Normal to the Output Node inputs. (Optional)

6. HD SRP variant included. (Optional)

General Tips  一般建议

Mobile Shaders  移动平台着色器

在为移动设备创建着色器时,需要考虑一些特殊的因素。通常这些考虑是与着色器的性能联系在一起的,但有时有艺术或设计的选择,导致需要在着色器级别的修改。

这些只是最常见的方法,你可能会发现有用的创建着色移动:

Rendering Options  渲染选项

经常被忽略的是,渲染选项可以让你关闭unity照明系统的一些关键功能。例如,您可能会发现,对于您的目的来说,关闭Unity GI系统已经足够了,但是仍然需要维护它们的PBR工作流。

这是一个极端的例子,每个特殊的照明功能都被关闭,甚至阴影也被关闭。这可能不是我们需要的,但这是一个很好的起点。

Custom Lighting Model  自定义光照模型

ASE允许创建定制的照明模型着色器。这些仍然是统一的表面着色器,允许替换统一照明功能。在ASE中,这意味着你可以将你的着色器灯光模型设置为自定义光照。这样做将把主输出节点转换为只有自发光和不透明度端口的节点。有了这个,就有可能使用现有的节点和一些额外的光照节点来创建一个优化和适合特定用途的着色器。

下面的图片展示了如何创建一个简单的封装Lambertian着色器,这应该是非常性能的低端机器。

Nodes used: Texture SampleWorld NormalWorld Space Light DirDotMultiply FloatAdd

将这个与之前的渲染选项结合起来,可以节省额外的开销,请注意在常规选项中,为了获得更好的性能,其中一些选项是关闭或关闭的(例如:着色器模型、精度、投影阴影)

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

Mobile Friendly Templates  移动友好模板

有时需要的是一个特定的顶点/片段着色器,它做一个非常简单的工作,例如,粒子,精灵,UI等。对于这些情况和其他ASE允许注入着色器代码到预先存在的着色器,我们称之为“模板”。这些是常规的顶点/片段着色器,通过添加一些标签,编辑器可以读取这些标签,从而知道在哪里注入新代码,以及模板中已经存在哪些代码。

有一整个页面专门介绍这些模板如何工作,以及如何在这里构建自己的模板。

它们对移动着色器很重要的原因是这些模板非常简单,几乎不需要任何代码。如果这样做是为了节省性能,那么一般的未点亮模板可以作为构建的基础,因为这些模板在编辑器中是可编辑的,可以通过构造更复杂的图形树或编辑原始模板来添加额外的功能。唯一的警告是,用户必须有一点着色知识来编辑或创建原始模板着色器。幸运的是,ASE已经提供了一些模板,任何用户都可以选择和使用作为任何其他着色器。

Nodes used: Template ParameterTexture SampleGrayscaleFloatLerp

该特性仍在开发中,将来将提供更多的模板,以便在可用时实现更复杂或特定的效果。

Android

在ASE中使用纹理采样器节点,目标平台为Android时,忽略尺度参数,这是一种有意的行为,因为Unity对于不支持DXT5nm格式的平台不缩放法线贴图,而DXT5nm格式是Unity压缩法线贴图的格式。

虽然这可以通过直接更改内置的着色器文件来修复,但是这样做和维护起来很麻烦,一个更简单的解决方案是使用Unity在编辑器本身上所做的完全相同的计算。

下面的图像和着色器文件执行了这个计算,同时通过检查Unity设置自己的define符号,确保着色器仍然可以在Android环境之外工作。如果需要在多个着色器中使用该逻辑,我们建议您使用该逻辑创建一个着色器函数。
Normal Scale in Android

 

原网站

版权声明
本文为[清木Moyu]所创,转载请带上原文链接,感谢
https://blog.csdn.net/sun124608666/article/details/126204469