Unity 之 ShaderGraph Input节点解析汇总

Posted 陈言必行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 之 ShaderGraph Input节点解析汇总相关的知识,希望对你有一定的参考价值。

若你的工程还没有进行基础配置,请查看我的博文Unity 之 ShaderGraph入门使用详解,按照步骤操作完成配置即可,还能顺便学习一下基础操作流程哦~

一,Input Basic 基础输入节点

1.1 Vector 1, 2, 3, 4

首先看我们经常在项目中使用的Vector 节点:

其实和在其他位置使用的概念一样,就是四个维度的向量。

向量概念:在线性代数中向量指具有大小和方向的量

向量维度

  • 一维向量:用来控制 长度,距离 等(一条直线)
  • 二维向量:用来控制 UV空间 等(平面直角坐标系)
  • 三维向量:用来控制 位置,旋转,缩放 等(空间直角坐标系)
  • 四维向量:用来控制 颜色,四元数 等 (矩阵XYZW)

由上图我们可以看到不同维度的向量有不同个数的输入,但是他们输出都只有一个。每一个多维向量可以理解为由多个一维向量组成。

1.2 Boolean


布尔节点:定义一个布尔值的一维节点,和其他节点组合使用,通过是否勾选 ✅ 来控制是否使用或者其他逻辑。

在代码中回转换为0或1的常量。

1.3 Color


颜色节点:定义一个指定颜色的思维变量,点击颜色区域会弹出颜色编辑面板,分为Default和HDP两种模式。

1.4 Constant


常量节点:定义一个一维常量的数字常数,选项值为:

选项释义
PI圆周率PI = 3.1415926
TAU2倍圆周率TAU = 6.28318530
PHI黄金分割率PHI = 1.618034
E自然底数E = 2.718282
SQRT22的平方根SQRT2 =1.414214

1.5 Integer


整数节点:定义一个一维常量的整数,可随意输入。

1.6 Time


时间节点:定义对各种时间参数的访问。
输入说明:

  • Time(1) :时间值
  • Sine Time(1) :时间正弦值
  • Cosine Time(1) :时间余弦值
  • Delta Time(1) :当前帧时间
  • Smooth Time(1) :平滑后的当前帧时间

1.7 Slider


滑块节点:定义一个一维变量,可自己制定滑动范围。


二,Input Geometry 几何输入节点

2.1 UV


UV节点:定义了图片上每个点与模型上的位置信息,以决定表面纹理贴图的位置。实际使用:采样贴图,UV动画,UV遮罩等等。

2.2 Position


位置节点:提供了一个接口,来访问模型顶点信息,可以通过Space的选项获取对应的坐标空间。

  • 模型空间(Object):以模型自身为基准的坐标空间
  • 世界空间(World):以整个场景为中心的坐标空间
  • 视角空间(View):以像机视角为基准的坐标空间
  • 切线空间(Tangent):由顶点所构成的屏幕UV坐标以及表面的法线所构成

2.3 Normal, Tangent, Bitangent Vector


法线向量是一个从 -1 到 1 之间的三维向量。模型空间和世界空间下的法线有更多的颜色是因为他们储存了整个空间下的法线信息,而切线空间只储存表面相关的法线信息。

最常见的应用就是法线贴图,能够兼顾效率的同时,让低模保持足够丰富的细节。

2.4 Screen Position


屏幕位置节点:定义对网格顶点的屏幕位置访问。
四种模式:

  • 默认(Default):返回默认屏幕坐标
  • 原始(Raw):返回没有除以W分量的屏幕坐标,适用于各种屏幕空间计算
  • 居中(Center):返回以 (0,0) 为屏幕中心的屏幕空间 (在Default基础上进行偏移计算)
  • 重复(Tiled):返回重复的以 (0,0) 为屏幕中心的屏幕空间 (在Default基础上进行偏移重复计算)

2.5 View Direction


视图方向节点:返回模型中的顶点位置到摄像机的观察方向。四种模式和2.4(Screen Position 节点)解释一致。常用于计算高光,物体观察方向:使用相机的坐标向量 - 物体的坐标向量 = 物体的观察方向

2.6 Vertex Color


顶点色节点:从模型中获取顶点信息分为RGBA四个,使用场景:顶点色遮罩:适用于一些对遮罩需求较多的效果,相对贴图Mask会更加节省性能。


三,Input Gradient 渐变输入节点

3.1 Gradient


渐变色节点:定义输入渐变颜色。自定义编辑器分为:Blend 混合模式 和 Field 整数模式。

3.2 Sample Gradient


采样渐变色节点:通过输入渐变色节点和时间节点,我们可以得到一个随时间变化的动态颜色。时间节点的0-1代表着渐变色节点的从左到右的颜色取值。


四,Input Lighting 灯光输入节点

4.1 Ambient


环境节点:提供对场景环境颜色值的访问。通用渲染管线(URP)支持,高清渲染管线(HDRP)不支持此节点。
输出参数:

  • 颜色/天空: 返回颜色(纯色)或者是天空(渐变)的颜色值
  • 赤道: 返回赤道(渐变)颜色值
  • 地面: 返回地面(渐变)的颜色值

4.2 Reflection Probe


反射探针节点:提供对距离对象最近的反射探针检测器的访问。通用渲染管线(URP)支持,高清渲染管线(HDRP)不支持此节点。

输入参数:

  • 视图目录: 返回网格的视图方向
  • 法线: 返回网格的法向量
  • 细节层次: 抽样的详细程度

输出:颜色值


五,Input Matrix 矩阵输入节点

5.1 Matrix 2x2,3x3,4x4

矩阵节点:定义一个2x2,3x3,4x4 的矩阵。通常用来计算平移,旋转,缩放。

5.2 Transformation Matrix


变换矩阵节点:定义了常用的4x4矩阵值:

  • 模型,代码: float4x4 _TransformationMatrix_Out = UNITY_MATRIX_M;
  • 逆模型,代码: float4x4 _TransformationMatrix_Out = UNITY_MATRIX_I_M;
  • 视图,代码: float4x4 _TransformationMatrix_Out = UNITY_MATRIX_V;
  • 逆视图,代码: float4x4 _TransformationMatrix_Out = UNITY_MATRIX_I_V;
  • 投影,代码: float4x4 _TransformationMatrix_Out = UNITY_MATRIX_P;
  • 逆投影,代码: float4x4 _TransformationMatrix_Out = UNITY_MATRIX_I_P;
  • 视图投影,代码: float4x4 _TransformationMatrix_Out = UNITY_MATRIX_VP;
  • 逆视图投影,代码: float4x4 _TransformationMatrix_Out = UNITY_MATRIX_I_VP;

六,Input PBR 节点

PBR:Physically Based Rendering一种新的渲染方式,在PBR流程下,游戏中场景将更加符合自然,对于光照的计算也更符合现实。将在以后离线渲染和实时渲染中占据主流,单一材质能模拟出更多现实中的特性

6.1 Dielectric Specular


电介质镜面反射节点:返回基于物理材质的电镜面反正F0值。
下拉参数(常用材质):普通(Coommon),生锈金属(Rusted Metal),水(Water),冰(Ice),玻璃(Glass),自定义(Custom)

6.2 Metal Reflectance


金属反射节点:返回基于物理材料的金属反射率值。
下拉参数分别为:铁、银、铝、金、铜、铬、镍、钛、钴、平台选择要输出的材料值。


七,Input Scene 场景输入节点

7.1 Scene


场景节点:提供对屏幕的宽度和高度访问。通用渲染管线(URP)支持,高清渲染管线(HDRP)不支持此节点。

7.2 Scene Color, Depth


场景颜色节点(Scene Color): 使用输入UV提供对当前Camera颜色缓冲区的访问,该输入应为标准化屏幕坐标。

场景深度节点(Scene Depth): 使用输入UV提供对当前Camera深度缓冲区的访问,该输入应为标准化屏幕坐标。
深度采样模式:

  • 线性01(Linera 01): 0-1之间的线性深度值
  • 原始(Raw): 原始深度值
  • 眼睛(Eye): 深度转换为眼空间单位

7.3 Camera


相机节点:提供对当前渲染的相机各种参数访问,这由Camera的 GameObject的值组成,包括:位置,方向,正交(是正交返回1,否则返回0),近/远平面,Z轴缓冲区标志(使用反向Z缓冲返回-1,否则返回1),宽/高度(正交模式下才有)。

7.4 Fog


雾节点:提供场景对雾参数的访问。通用渲染管线(URP)支持,高清渲染管线(HDRP)不支持此节点。
输出参数:颜色:返回雾色,密度:顶点或片段剪辑空间深度处的雾密度

7.5 Object


对象节点:提供对当前渲染Object 的各种参数的访问。通用渲染管线(URP)支持,高清渲染管线(HDRP)不支持此节点。
输出参数:位置:世界空间中的物体位置,缩放:世界空间中的对象比例。


八,Input Texture 贴图输入节点

8.1 Texel Size


纹素大小节点:返回纹理2D输入的纹素大小的宽度和高度。

纹素是计算机图形纹理空间中的基本单元。如同像素是又像素排列组成,纹理是由纹素排列组成。通常一个像素内会包含很多个纹素。

8.2 Sample Texture 2D


对Texture 2D 进行采样并返回Vector 4 颜色值以供在着色器中使用。

类型(Type)可以设置为:Default默认 和 Normal法线。
空间(Space)可以设置为:Tangent切线空间 和 Object自身空间。

8.3 Sample Texture 2D Array/LOD


纹理数列(Sample Texture 2D Array):对Texture 2D Array 进行采样并返回Vector 4颜色值以在着色器中使用。
PS:现在Edito中只能使用代码创建,并且分多平台打包时需要对每个平台烘焙一个数列,并用代码将其和指定平台连系起来。

LOD节点:对Texture 2D 进行采样并返回Vector 4颜色值以供在着色器中使用,和Array不同的是LOD节点可获取被采样贴图的MinMap层级。

8.4 Texture 2D Asset,Texture 2D Array Asset


纹理2D资源(Texture 2D Asset):定义着色器中使用的常量Texture 2D资源。

纹理2D阵列资源(Texture 2D Array Asset):定义着色器中使用的常量一组Texture 2D资源。

8.5 Sampler State


采样器状态节点定义采样纹理的采样器状态。通常与采样节点(Sample Texture 2D Node)结合使用.

Filter 定义采样过滤模式:

  • 线性 (Linear): 使用此模式贴图会比较平滑
  • 点 (Point): 使用此模式的贴图在近距离会变成块状,很适合像素风格的游戏。
  • 三线性 (Trilinear): 会在各级节点之间做混合,使得采样结果比Linear更加平滑

Wrap 定义采样的排列模式:

  • 夹紧(Clamp):显示贴图
  • 重复(Repeat):重复贴图铺满
  • 镜像(Mirror):镜像贴图铺满
  • 镜像一次(MirrorOnce):在X,Y方向上各镜像一次

8.6 Cubemap Asset, Sample Cubemap


立方体贴图资源(Cubemap Asset):定义在着色器中使用的常量立方体贴图资源。要对Cubemap Asset 进行采样,它应该与Sample Cubemap Node结合使用。

采样立方体贴图(Sample Cubemap):对立方体贴图进行采样并返回一个Vector 4颜色值以供在着色器中使用。需要View Direction和Normal输入来采样Cubemap。

8.7 Texture 3D Asset, Sample Texture 3D


3D纹理资源(Texture 3D Asset): 定义在着色器中使用的常量纹理 3D 资源。
采样3D纹理资源(Sample Texture 3D):对纹理 3D 进行采样并返回一个Vector 4颜色值以在着色器中使用。


Input下的节点可算是整理完成了,若文中有哪个节点翻译不准确的还请在评论区指出。都看到这里了,还不三连一下再走~

以上是关于Unity 之 ShaderGraph Input节点解析汇总的主要内容,如果未能解决你的问题,请参考以下文章

Unity 之 ShaderGraph 实现全息效果入门级教程

Unity 之 ShaderGraph 实现火焰效果入门级教程

Unity 之 ShaderGraph 实现旋涡(传送门)效果入门级教程

Unity 之 ShaderGraph 实现小旗随风飘扬效果入门级教程

Unity 之 ShaderGraph 实现超级炫酷的溶解效果入门级教程

Unity 之 ShaderGraph Channel节点解析汇总