ShadeGraph教程之节点详解3:Input Nodes

本文首发于洪流学堂微信公众号。
洪流学堂,学Unity快人几步

洪流学堂公众号回复节点,获取ShaderGraph节点详解PDF文件(带目录)。

注意
节点中很多输入为In(1)的其实是动态长度的Vector,可以接收Vector1~Vector4的值哦

Input Nodes 输入节点

ShadeGraph教程之节点详解3:Input Nodes_第1张图片

Basic 基础

ShadeGraph教程之节点详解3:Input Nodes_第2张图片

这些基础的Input常量大多数可以通过在节点上右键菜单Convert to property直接转化为Shader的输入参数。

Boolean

创建一个布尔值常量。

ShadeGraph教程之节点详解3:Input Nodes_第3张图片

Color

创建一个颜色常量,可选正常颜色或HDR颜色。

ShadeGraph教程之节点详解3:Input Nodes_第4张图片
image.png

Constant

创建一个无理数常量,可选的有PI(圆周率π)、TAU(2π)、PHI(黄金分割1.618)、E(常数e,2.718)、SQRT2(根号2,2^0.5)

ShadeGraph教程之节点详解3:Input Nodes_第5张图片

PI

float Out = 3.1415926;

TAU

float Out = 6.28318530;

PHI

float Out = 1.618034;

E

float Out = 2.718282;

SQRT2

float Out = 1.414214;

Integer

创建一个整数常量,类型是Vector 1。通过右键菜单可以转换为一个Integer模式的Vector1属性。

ShadeGraph教程之节点详解3:Input Nodes_第6张图片

Slider

创建一个使用滑条作为输入的Vector1常量。通过右键菜单可以转换为一个Slider模式的Vector1属性。

ShadeGraph教程之节点详解3:Input Nodes_第7张图片

Time

可以获取Unity中的时间值。

  • Time 即代码中的Time.time
  • Sine Time sin(Time.time)
  • Cosine Time cos(Time.time)
  • Delta Time Time.deltaTime
  • Smooth Delta Time.smoothDeltaTime
ShadeGraph教程之节点详解3:Input Nodes_第8张图片

Vector1/2/3/4

Vector1/2/3/4的值,如果输入没有连,可以作为常量使用。输入的每一个维度都需要单独连接。

ShadeGraph教程之节点详解3:Input Nodes_第9张图片

Geometry 几何

ShadeGraph教程之节点详解3:Input Nodes_第10张图片

Bitangent Vector

获取mesh的双切线向量。可选的空间有Object, View, World, Tangent。

ShadeGraph教程之节点详解3:Input Nodes_第11张图片

Bitangent Vector数学定义可以参阅:http://mathworld.wolfram.com/BitangentVector.html

ShadeGraph教程之节点详解3:Input Nodes_第12张图片

Normal Vector

获取mesh的法线向量。可选的空间有Object, View, World, Tangent。

ShadeGraph教程之节点详解3:Input Nodes_第13张图片

Position

获取mesh的顶点或片段的位置。可选的空间有Object, View, World, Tangent。

ShadeGraph教程之节点详解3:Input Nodes_第14张图片

Screen Position

获取mesh的顶点或片段在屏幕空间的位置。

Default

返回屏幕坐标。这个模式屏幕坐标除了clip space position W。

Raw
返回屏幕坐标。这个模式屏幕坐标没除clip space position W。对于投影很有用。

Center
添加了偏移,让float2(0,0)在屏幕的中心。

Tiled
添加了偏移,让float2(0,0)在屏幕的中心并且使用frac进行tiled。

ShadeGraph教程之节点详解3:Input Nodes_第15张图片
image.png

Tangent Vector

获取mesh的顶点或片段的切线向量。可选的空间有Object, View, World, Tangent。

ShadeGraph教程之节点详解3:Input Nodes_第16张图片

UV

获取mesh的顶点或片段的UV。可选的空间有UV0, UV1, UV2, UV3。

ShadeGraph教程之节点详解3:Input Nodes_第17张图片

Vertex Color

获取mesh的顶点或片段的顶点颜色。

ShadeGraph教程之节点详解3:Input Nodes_第18张图片

View Direction

获取mesh的顶点或片段的视角方向向量。从顶点或片段到相机的方向。可选的空间有Object, View, World, Tangent。

ShadeGraph教程之节点详解3:Input Nodes_第19张图片

Gradient

Unity2018.2更新

ShadeGraph教程之节点详解3:Input Nodes_第20张图片

Gradient

可以设置渐变色的一个节点

ShadeGraph教程之节点详解3:Input Nodes_第21张图片

Sample Gradient

经过采样后输出一个Color颜色。

ShadeGraph教程之节点详解3:Input Nodes_第22张图片
Sample Gradient节点与Time节点结合

Matrix 矩阵

ShadeGraph教程之节点详解3:Input Nodes_第23张图片

Matrix 2x2/3x3/4x4

不同维度的矩阵矩阵。

ShadeGraph教程之节点详解3:Input Nodes_第24张图片

Transformation Matrix

变换矩阵。变换类型可以在下拉菜单中选择。

ShadeGraph教程之节点详解3:Input Nodes_第25张图片

Shader Code

ModelView

float4x4 Out = UNITY_MATRIX_MV;

View

float4x4 Out = UNITY_MATRIX_V;

Projection

float4x4 Out = UNITY_MATRIX_P;

ViewProjection

float4x4 Out = UNITY_MATRIX_VP;

TransposeModelView

float4x4 Out = UNITY_MATRIX_T_MV;

InverseTransposeModelView

float4x4 Out = UNITY_MATRIX_IT_MV;

ObjectToWorld

float4x4 Out = UNITY_MATRIX_M;

WorldToObject

float4x4 Out = UNITY_MATRIX_I_M;

PBR

ShadeGraph教程之节点详解3:Input Nodes_第26张图片

Dielectric Specular

返回一个基于物理材质的高光系数。可以通过Material下拉框选择材质的类型。

  • Common 是介于0.024 到 0.048 的sRGB值。可以用于塑料和面料。
  • Custom 可以用于自定义。IOR代表材质的折射率。
ShadeGraph教程之节点详解3:Input Nodes_第27张图片

Shader Function

Common

float3 Out = lerp(0.034, 0.048, _Node_Range);

RustedMetal

float3 Out = float3(0.030, 0.030, 0.030);

Water

float3 Out = float3(0.020, 0.020, 0.020);

Ice

float3 Out = float3(0.018, 0.018, 0.018);

Glass

float3 Out = float3(0.040, 0.040, 0.040);

Custom

float3 Out = pow(_Node_IOR - 1, 2) / pow(_Node_IOR + 1, 2);

Metal Reflectance

金属反射率。

如果PBR主节点使用Specular Workflow,这个输出应该连到PBR节点的Specular。如果PBR主节点使用Metallic Workflow,这个输出应该连到PBR节点的Albedo。

ShadeGraph教程之节点详解3:Input Nodes_第28张图片

Shader Function

Iron

float3 Out = float3(0.560, 0.570, 0.580);

Silver

float3 Out = float3(0.972, 0.960, 0.915);

Aluminium

float3 Out = float3(0.913, 0.921, 0.925);

Gold

float3 Out = float3(1.000, 0.766, 0.336);

Copper

float3 Out = float3(0.955, 0.637, 0.538);

Chromium

float3 Out = float3(0.550, 0.556, 0.554);

Nickel

float3 Out = float3(0.660, 0.609, 0.526);

Titanium

float3 Out = float3(0.542, 0.497, 0.449);

Cobalt

float3 Out = float3(0.662, 0.655, 0.634);

Platinum

float3 Out = float3(0.672, 0.637, 0.585);

Scene 场景

ShadeGraph教程之节点详解3:Input Nodes_第29张图片

Ambient 环境

获取场景的环境光设置。

  • 如果场景环境光设置为Gradient,Color/Sky, Equator , Ground 对应 Sky Color, Equator Color 和 Ground Color
  • 如果环境光设置为Color,Color/Sky返回Ambient Color,其他两个返回0。
ShadeGraph教程之节点详解3:Input Nodes_第30张图片

Camera 相机

获取当前相机的参数。参数和Camera类似。

其中Z Buffer Sign:-1表示反转Z Buffer,否则是1

ShadeGraph教程之节点详解3:Input Nodes_第31张图片

Fog 雾

获取场景的Fog设置。

Light Probe 光照探头

获取物体位置的光照探头参数。需要传入法线数据进行探头采样。

ShadeGraph教程之节点详解3:Input Nodes_第32张图片

Object

获取物体的位置和缩放。

ShadeGraph教程之节点详解3:Input Nodes_第33张图片

Reflection Probe 反射探头

访问物体对应的反射探头。需要 Normal和 View Direction两个输入参数进行采样。LOD参数可以设置LOD的级别。

ShadeGraph教程之节点详解3:Input Nodes_第34张图片

Screen 屏幕

获取屏幕的宽高,单位是像素。

Texture

Unity2018.2有更新内容

ShadeGraph教程之节点详解3:Input Nodes_第35张图片

Cubemap Asset

定义一个cubemap常量。需要在后面连接Sample Cubemap节点。

ShadeGraph教程之节点详解3:Input Nodes_第36张图片

Sample Cubemap

如上图所示,根据输入参数View Direction和Normal进行cubemap采样。可以设置LOD作为LOD采样级别。

Sample Texture 2D

2D贴图采样。通过这个节点获取贴图中的RGBA数据。

ShadeGraph教程之节点详解3:Input Nodes_第37张图片

Sample Texture 2D Array

ShadeGraph教程之节点详解3:Input Nodes_第38张图片

对2D贴图数组进行采样。

注意:目前没有方法导入或可视化创建
Texture 2D Array类型的资产。必须在运行时或者通过Editor脚本进行创建。可以参考:https://docs.unity3d.com/ScriptReference/Texture2DArray.html

Sample Texture 2D LOD

为Texture 2D Sample添加了LOD功能。Sample Texture 2D LOD使用与Sample Texture 2D相同的输入和输出栏,但包括通过Vector1输入参数调整细节级别的输入。

ShadeGraph教程之节点详解3:Input Nodes_第39张图片

Sample Texture 3D

ShadeGraph教程之节点详解3:Input Nodes_第40张图片

注意:目前没有方法导入或可视化创建
Texture 3D类型的资产。必须在运行时或者通过Editor脚本进行创建。可以参考:
https://docs.unity3d.com/Manual/class-Texture3D.html

Sampler State

用于Sample Texture 2D节点中的输入结点Sampler(SS)。

ShadeGraph教程之节点详解3:Input Nodes_第41张图片

Texture 2D Array Asset

2D贴图数组常量。可以一次输入多次采样。

Texture 2D Asset

2D贴图常量。可以一次输入多次采样。

ShadeGraph教程之节点详解3:Input Nodes_第42张图片

Texture 3D Asset

3D贴图常量。可以一次输入多次采样。

小结

本文讲解了ShaderGraph众多Node中的Input Nodes。你可以收藏本文作为一个工具库。
其他Node的详解,关注洪流学堂公众号第一时间获取。

洪流学堂公众号回复节点,获取ShaderGraph节点详解PDF文件(带目录)。

你有没有饱受shader折磨的同学?你可以把今天的内容分享给他,或许你能帮到他。


ShadeGraph教程之节点详解3:Input Nodes_第43张图片

《郑洪智的Unity2018课》,倾尽我8年的开发经验,结合最新的Unity2018,带你从入门到精通。

ShadeGraph教程之节点详解3:Input Nodes_第44张图片

你可能感兴趣的:(ShadeGraph教程之节点详解3:Input Nodes)