unity探索者之Shader Graph所有节点详解-Input篇
Input(输入)
1、Basic(基本)
1) Boolean(布尔)
通过开关输出一个bool值。
2) Color(颜色)
输出一个自定义颜色。
3) Constant(常量)
输出一个常量,包含PI(π = 3.1415926),TAU(π * 2),PHI(黄金比例 = 1.618034),E(自然常数e = 2.718282),SQRT2(根号2 = 1.414214)。
4) Integer(整型)
输出一个整数。
5) Slider(滑块)
可自定义最大值最小值的滑块节点。
6) Time(时间)
输出时间的相关值,包括Time(当前时间),sin(Time)(当前时间的正弦值),cos(Time)(当前时间的余弦值),Delta Time(当前帧时长),Smooth Delta(平滑的帧时长,类似于FixedDeltatime)。
7) Vector1-Vector4(一维向量-四维向量)
Vector1等同于float。
2、Geometry(几何)
1) Bitangent Vector(顶点切线向量)
提供对网格顶点或片段的双切线向量的访问,具体取决于节点所属图形部分的有效着色器阶段。输出值的坐标空间包含Object(对象)、View(视图)、World(世界)、Tangent(切线)四种。
2) Normal Vector(法向量)
提供对网格顶点或片段的法向量的访问,输出值的坐标空间包含Object(对象)、View(视图)、World(世界)、Tangent(切线)四种。
3) Position(位置)
提供对网格顶点或片段的位置的访问,输出值的坐标空间包含Object(对象)、View(视图)、World(世界)、Tangent(切线)、Absolute World(绝对世界)五种。(注:高清渲染管线使用相对摄影机作为其默认世界空间,通用渲染管线使用绝对世界作为其默认世界空间)
4) Screen Position(屏幕位置)
提供对网格顶点或片段屏幕位置的访问,包含四种计算模式:
模式 | 对应代码 |
---|---|
Default | Out = float4(IN.ScreenPosition.xy / IN.ScreenPosition.w, 0, 0); |
Raw | Out = IN.ScreenPosition; |
Center | Out = float4(IN.ScreenPosition.xy / IN.ScreenPosition.w * 2 - 1, 0, 0); |
Tiled | float x = (IN.ScreenPosition.x / IN.ScreenPosition.w * 2 - 1) * _ScreenParams.x / _ScreenParams.y; Out = frac(float4(x, IN.ScreenPosition.y / IN.ScreenPosition.w * 2 - 1, 0, 0)); |
5) Tangent Vector(切向量)
提供对网格顶点或片段的切向量的访问,输出值的坐标空间包含Object(对象)、View(视图)、World(世界)、Tangent(切线)四种。
6) UV(UV)
提供对网格顶点或片段的UV坐标的访问,包含UV0、UV1、UV2、UV3四个UV通道。
7) Vertex Color(顶点颜色)
提供对顶点颜色的访问。
8) View Direction(视图方向)
提供对网格顶点或片段的视图方向的访问,也就是从顶点或片段到摄影机的方向向量。输出值的坐标空间包含Object(对象)、View(视图)、World(世界)、Tangent(切线)四种。
3、Gradient(梯度)
1) Gradient(梯度)、Sample Gradient(梯度采样)
根据自定义梯度返回指定颜色的工具,Gradient和Sample Gradient配合一起使用,可以用来实现根据某些条件(比如时间)变色的效果。
4、Matrix(矩阵)
1) Matrix 2x2、Matrix 3x3、Matrix 4x4
三种自定义矩阵。
2) Transformation Matrix(变换矩阵)
为着色器中的公共变换矩阵定义以下8种4x4矩阵。
Model:模型
Inverse Model:逆模型
View:视图
Inverse View:逆模型
Projection:投影
Inverse Projection:逆投影
View Projection:视图投影
Inverse View Projection:逆视图投影
5、PBR(基于物理的渲染)
1) Dielectric Specular(电介质镜面)
返回预设好的基于物理的材质,一共6种模式:
Material | 返回值 |
---|---|
Common | float _DielectricSpecular_Range = 0.5; float _DielectricSpecular_Out = lerp(0.034, 0.048, _DielectricSpecular_Range); |
RustedMetal | float _DielectricSpecular_Out = 0.030; |
Water | float _DielectricSpecular_Out = 0.020; |
Ice | float _DielectricSpecular_Out = 0.018; |
Glass | float _DielectricSpecular_Out = 0.040; |
Custom | float _DielectricSpecular_IOR = 1; float _DielectricSpecular_Out = pow(_Node_IOR - 1, 2) / pow(_DielectricSpecular_IOR + 1, 2); |
2) Metal Reflectance(金属反射率)
返回一些预设好的金属反射率。
Iron:铁
Silver:银
Aluminium:铝
Gold:金
Copper:铜
Chromium:铬
Nickel:镍
Titanium:钛
Cobalt:钴
Platinum:铂
如果使用PBR Master作为主节点,那么这个节点的输出应该是PBR的Specular端口(需要将Workflow修改为Specular)。
6、Scene(场景)
1) Ambient(环境色)
提供对场景环境光颜色值的访问。如果Environment Lighting–Source设置为Gradient/Sky时,返回Sky Color。如果Environment Lighting–Source设置为Color时,返回Ambient Color。无论当前环境光源是什么,Equator和Ground端口始终返回Equator Color和Ground Color。
2) Camera(摄像机)
用于访问当前摄像机的各种属性。
Position:摄像机的对象在世界空间中的位置
Direction:摄影机的正向方向
Orthographic:摄影机是否是正交的
Near Plane:相机的近平面距离
Far Plane:相机的远平面距离
Z Buffer Sign:使用反向Z缓冲区时返回-1,否则返回1
Width:正交时的摄影机宽度
Height:正交时的摄影机高度
3) Fog(雾)
访问场景中的雾参数,返回指定位置的雾的颜色和密度。
4) Object(对象)
返回当前渲染对象的位置和大小
5) Reflection Probe(反射探头)!!!
按照官方的说法是可以实现模糊效果,并且只支持通用渲染管线,不过没有搞清楚具体怎么用,这里留个记录,后续搞懂了就补上。
生成的代码:Out = SHADERGRAPH_REFLECTION_PROBE(ViewDir, Normal, LOD)
。
6) Scene Color(场景颜色)
根据输入的UV访问当前摄像机的颜色缓冲区。
7) Scene Depth(场景深度)
根据输入的UV访问当前摄像机的深度缓冲区
8) Screen(屏幕)
用来访问当前屏幕的宽度和高度值。
7、Texture(纹理)
1) Cubemap Asset(立方体资源)、Sample Cubemap(立方体采样)
对立方体贴图采样并返回对应色值。
Cube(立方资源),由Cubemap Asset输出,必须是Texture Shape为Cube的图片
ViewDir(视图方向)
Normal(法线输入)
Sampler(采样器),自定义采样器状态
LOD(细节级别),用来实现模糊效果
2) Texture 2D Asset(2D纹理资源)、Sample Texture 2D(2D纹理采样)
这绝对是用的最多的节点之一,可与Texture 2D Asset配合使用,用来输出2D纹理的采样结果。
UV:修改采样的UV
Sampler:自定义采样器
Type:Default(默认),Normal(法线)
Space:Tangent(切线空间),Object(对象空间)
3) Sample Texture 2D Array(2D纹理采样数组)
功能等同于Sample Texture 2D,只不过输入的值是2D纹理数组。
Index:当前输出的纹理在Array中的索引
4) Sample Texture 2D LOD(2D纹理采样LOD)
与Sample Texture 2D相比,此节点多了一个LOD设置,用来实现模糊效果。
5) Texture 3D Asset(3D纹理资源)、Sample Texture 3D(3D纹理采样)
和Sample Texture 2D大体相同,只不过需要使用3D纹理资源。
6) Sampler State(采样状态)
用于自定义采样器的状态,前几个节点中的Sampler输入来源就是此节点。
Filter:Linear(线性)、Point(点)、Trilinear(三线性)
Wrap:Repeat(平铺)、Clamp(拉伸)、Mirror(镜像)、Mirror Once(一次镜像)
7) Texel Size(纹理大小)
用来输出纹理资源的宽度和高度。