陈巧倩

Unity-shader-ase

· 218 words · 2 minutes to read
Categories: Unity
Tags: BuildIn Render Pipeline

Amplify Shader Editor是行业领先开放且紧密集成的解决方案,它提供了一个Unity开发者易于上手的开发环境,可以与Unity编辑器和着色器使用无缝融合。通过这款工具,开发者能轻松实现AAA级质量的作品,并能灵活地应用在任何Unity项目开发之中,进而大大缩短了制作团队在美术效果上的迭代时间。

Amplify Shader Editor(ASE) 🔗

安装 🔗

Unity资源商店中搜索Amplify Shader Editor进行安装。 导入后展开Amplify Shader Editor目录结构:

编辑器界面简介 🔗

打开Amplify Shader Editor编辑器界面 🔗

依次点击Window → Amplify Shader Editor → Open Canvas打开编辑器画布(Canvas)界面;或者可以双击Amplify Shader Editor(下文简称ASE)材质或着色器自动打开画布界面。

创建Amplify表面着色器(Surface Shader) 🔗

在项目(Project)界面选中资源文件夹的情况下,依次点击 Assets → Create → Shader → Amplify Surface Shader创建;或者依次点击右键 → Create → Shader → Amplify Surface Shader进行创建。

画布UI交互 🔗

1.节点属性界面 ​ 主属性(Main Properties)

  • 着色器类型(Shader Type):此区域显示所使用的当前着色器类型。
  • 着色器名称(Shader Name):可编辑文本框,定义着色器的名称和路径。使用正斜杠“/”定义其类别和名称,例如UserSamples / EnvironmentGradient。请注意,此框中显示的名称与文件名不同,必须单独设置。
  • 光照模型(Light Model):定义表面如何反射光,通常称为所使用的着色器类型。 ASE目前提供标准(金属 Standard(Metallic))、标准镜面(Standard Specular)、Lambert和Blinn Phong。
  • 着色器模型(Shader Model):当编写表面着色器或常规着色器程序时,HLSL源可以编译成不同的“着色器模型”。更高的着色器编译目标允许使用更多的现代GPU功能,但可能使得着色器不能在较旧的GPU或平台上工作。
  • 精度(Precision):定义内部计算的精度,使用较低类型提供了额外的性能提升以换取一些精度。默认设置为Float。
  • 剔除模式(Cull Mode):Front – 剔除前向几何体,Back – 剔除后向几何体,关闭 - 禁用剔除(双面材料)。默认情况下设置为Back。
  • 渲染路径(Render Path):允许您定义着色器支持哪种模式(提前Forward / 延时Deferred)。默认设置为全部。
  • 投射阴影(Cast Shadows):定义使用着色器的对象是否投射阴影。
  • 接收阴影(Receive Shadows):定义使用着色器的对象是否接收阴影,这包括自阴影(只有使用正向渲染)。
  • 队列索引(Queue Index):渲染队列偏移值,接受正(较晚)和负(较早)整数。
  • 自定义编辑器(Custom Editor):自定义检查器允许您自定义ASE材料检查器。 ​ 混合模式(Blend Mode)
  • 混合模式(Blend Mode):所选模式自动调整可用参数;不透明(Opaque),遮罩(Masked),透明(Transparent),Alpha预乘(Alpha Transparent)或自定义(Custom)。
  • 渲染类型(Render Type):该标记将着色器分为几个预定义组。可用标签:不透明(Opaque),透明(Transparent),透明抠出(Transparent Cutout),背景(Background),覆盖(Overlay),不透明树(Tree Opaque),透明树剪出(Tree Transparent Cutout),布告板树(Tree Billboard),草和布告板草皮(Grass and Grass Billboard)。
  • 渲染队列(Render Queue):为了获得最佳性能,通过几何体渲染队列排布,从而优化对象的绘制顺序。所有其他渲染队列按距离对对象进行排序,从最远的那些开始渲染,并以最接近的结束。可用选项有背景、几何、Alpha测试、透明和覆盖。
  • 掩码片段值(Mask Clip Value):要与不透明度alpha比较的默认值。 0完全不透明,1完全掩蔽。默认设置为0,常用于透明抠出(Transparent Cutout)材质。
  • 混合RGB和混合Alpha(Blend RGB and Blend Alpha):当渲染图形时,在所有着色器执行并且所有纹理都应用后,像素被写入屏幕。它们如何与已经存在的内容组合由Blend命令控制。 ASE目前提供定制、Alpha混合(Alpha Blend)、预乘(Premultiplied)、加法(Additive)、软加法(Soft Additive)、乘法(Multiplicative)和2x乘法(2x Multiplicative)模式。
  • 混合因子(Blend Factor)(SrcFactor & DstFactor):以下所有属性都适用于混合命令中的SrcFactor&DstFactor。源指的是计算的颜色,目标是已经在屏幕上的颜色。如果BlendOp使用逻辑运算,则忽略混合因子。
  • 混合操作RGB和混合操作Alpha(Blend Op RGB & Blend Op Alpha):添加(Add)、子(Sub)、修改子(Rev Sub)、最小(Min)和最大(Max)。
  • 颜色蒙版(Color Mask):设置颜色通道写入蒙版,将其全部关闭使其不可见。 ​ 模版缓冲(Stencil Buffer) 模板缓冲器可以用作每像素掩模的通用目的,用于保存或丢弃像素。它通常是每个像素8位整数。该值可以写入、递增或递减。 后续绘制调用可以根据该值进行测试,以决定是否应该在运行像素着色器之前丢弃该像素。
  • 参考(Reference):要比较的值和/或要写入缓冲区的值(如果Pass,Fail或ZFail设置为替换)。范围是0-255整数。
  • 读取掩码(Read Mask):作为0-255整数的8位掩码,用于将参考值与缓冲区(referenceValue&readMask),比较方法comparisonFunction(stencilBufferValue&readMask)的内容进行比较。默认值是255。
  • 写掩码(Write Mask):8位掩码,作为0-255整数,写入缓冲区时使用。默认值是255。
  • 比较(Comparison):用于将参考值与缓冲区的当前内容进行比较的函数。默认值是always。
  • 通过(Pass):如果模板测试(和深度测试)通过,对缓冲区的内容做什么。默认值是keep。
  • 失败(Fail):如果模板测试失败,对缓冲区的内容做什么。默认值是keep。
  • ZFail(ZFail):如果模板测试通过,则缓冲区的内容如何处理,但深度测试失败。默认值是keep。 ​ 曲面细分(Tessellation)
  • 冯氏曲面细分(Phong):修改细分面的位置,使得生成的面稍微跟随网格法线,默认设置为OFF。
  • 类型(Type):定义所使用的技术,基于距离、固定、边长和边长Cull。
  • 曲面细分因子(Tess):范围是1-32。
  • 最小值(Min):最小细分距离。
  • 最大值(Max):最大细分距离。 ​ 深度(Depth)
  • ZWrite模式(ZWrite Mode):控制来自此对象的像素是否写入深度缓冲区(默认为开)。如果你画的是实体对象,请保持此状态。如果您绘制半透明效果,请切换到ZWrite Off。
  • ZTest模式(ZTest Mode):如何进行深度测试。默认值为LEqual(将对象从现有对象或远距离绘制为现有对象;隐藏其后面的对象)。 ASE提供ZTest 小于(Less)、大于(Greater)、小于等于(LEqual)、大于等于(GEqual)、等于(Equal)、不等于(NotEqual)和通常(Always)。
  • 偏移(Offset):允许您使用两个参数指定深度偏移 — 因子和单位。因子相对于多边形的X或Y缩放最大Z斜率,单位缩放最小可分辨深度缓冲区值。这允许您强制一个多边形绘制在另一个顶部,虽然它们实际上在相同的位置。例如,偏移(0,-1)拉动多边形更接近相机忽略多边形的斜率,而偏移(-1,-1)将拉近多边形,看看掠角。
  • 因子(Factor):相对于多边形的X或Y,缩放最大Z斜率。
  • 单位(Units):单位缩放最小可分辨深度缓冲区值。 ​ 渲染平台(Rendering Platforms) ​ 定义支持哪些平台, 默认设置为全部。 可用属性(Available Properties) ​ 设置为属性(Property)的变量将在此部分中列出,您可以通过拖动它们来调整它们的位置。 2.保存按钮:手动保存/更新着色器数据。修改着色器名称只有在点击这个按钮之后才会正式生效。 3.自动切换按钮:切换自动保存/更新着色器数据。 4.文本编辑按钮:将着色器文件在文本编辑器中打开。 5.选择回归按钮:屏幕视角回归到选择的节点。 6.主节点回归按钮:屏幕视角回归到主节点。 7.清除按钮:删除已经断开连接的节点。 8.节点选项板界面

常用类型和函数 🔗

数据类型 🔗

运算符 🔗

运算函数 🔗

Abs:绝对值运算 One Minus:把所有的数值用1减,常用来取反。 Power幂:次方运算 Lerp:线性插值,以Alpha数值为标准,输出A和B之间的线性插值,Alpha是1时输出B,0时输出A,0.5时AB各一半。 Clamp:约束,min和max数值可以自定义,截取输入值,并将其约束到min和max两个数值中间,如果输入值小于0,则输出0,如果输入值大于1,则输出1. Remap:重映射,将值从一个范围重映射到另一个范围。例如sin函数在-1~1之间变化,我们可以通过重映射将-1~1变化为0~1,这样就不会有负值情况了。 Step:阶梯函数,(非黑即白,常用于硬溶解)如果A≤B,则输出1,如果A>B,则输出0。 SmoothStep:平滑阶梯函数,如果输入值在啊min和max之间,则输出0和1之间的平滑Hermite插值。

UV 🔗

Texture Coordinates:UV坐标。 Rotator:UV旋转,该节点将会把输入的UV或者2维量围绕你定义的Anchor点进行旋转,需要输入Time动态时间,不然会固定住,不会自动旋转。

坐标与朝向 🔗

时间 🔗

其他 🔗

结论 🔗

搬砖愉快!