【unity】ShaderGraph学习笔记
创建ShaderGraph
创建URP的shaderGraph文件
在Project面板里Create→ShaderGraph→URP→这里主要有几个选项
Lit Shader Graph:有光照三维着色器
Unlit Shader Graph:无光照三维着色器
Sprite Custom Lit Shader Graph:自定义光照图片着色器
Sprite Unlit Shader Graph:无光照图片着色器
Sprite Lit Shader Graph:光照图片着色器
Decal Shader Graph:贴花着色器
界面说明
选择LitShaderGraph,命名为Shader Graph Learn,弹出面板
Vetex-顶点着色器
-
Position:模型顶点坐标
-
Normal:模型顶点法线向量
-
Tangent:模型顶点切线向量
FragMent-片元着色器
-
Base Color:基础颜色,纹理贴图在该片元上投影的像素颜色
-
Normal(Tangent Space):切线空间下,法线贴图这片元上投影的像素值
-
Metallic:金属度
-
Smoothness:光滑度
-
Emissions:自发光
-
Ambient Occlusion:环境光遮蔽
-
Coat Mask:清漆遮罩
-
Coat Smoothness:清漆光滑度
-
Alpha:透明通道
-
Alpha Clip Threshold:透明裁剪阈值
Shader Graph Learn输入面板
为shader添加变量参数
-
Category:分类
-
Float:浮点变量
-
Vector2:二维向量
-
Vector3: 三维向量
-
Vector4:四维向量
-
Color:颜色
-
Boolean:布尔
-
Gradilent:渐变颜色
-
Texture2D:2D贴图
-
Texture3D:3D贴图
-
Cubemap:Cubemap贴图
-
Virtual Texture:虚拟贴图
-
Matrix2:2阶矩阵
-
Matrix3:3阶矩阵
-
Matrix4:4阶矩阵
-
Sampler State:
-
KeyWord
Graph Inspector-着色器属性面板
Graph settings
- Precision:着色器精度
- Single:完整精度
- Half:一半精度(性能会提高)
- Material:选择着色器模式(和创建的时候一样)
- Allow Material override:允许覆盖着色器
- Workflow Mode:工作流模式
- Metallic:金属
- Specular:高光
- Surface Type:表面类型
- Transparent:透明
- Opaque:不透明
- Render Face:渲染面
- Front:正面渲染
- Back:背面渲染
- Both:双面渲染
- Depth Write:是否写入深度
- Depth Test:深度测试
- Never:不测试一直显示
- Less:小于当前深度的显示
- Equal:等于当前深度的显示
- L Equal:小于等于
- Greater:大于
- Not Equal:不等于
- G Equal:大于等于
- Always:始终显示
- Alpha Clipping: 透明通道裁剪
- Cast Shadows:产生阴影
- Receive Shadows:接受阴影
- Fragment Normal Space:片元法线空间
- Tangent:切线空间
- Object:模型空间
- World:世界空间
- Clear Cost :清漆效果
- Custom Editor GUI:自制编辑GUI
Node Settings
选择添加变量参数面板里的参数可以在这里进行设置
- Name 参数名称
- Reference 脚本修改参数名称
- Default 默认值
- Mode 模式
- precosion 精度
- Exposed 是否在面板里显示(打勾会在材质面板里显示)
功能工具
子图(subgraph)
subgraph可以保存通用的蓝图,并可以在其他的shaderGraph调用。
选中需要保存的蓝图,右击鼠标选择Convert To→Sub-gragh,弹出文件保存栏,命名保存。
使用的时候,在新的ShaderGraph直接拖入subgraph桥接就可以使用。单独点开subgraph也可以打开面板。
注释
框选注释(GroupSelection)
选中需要注释的蓝图,右击选择GroupSelection
说明注释(Sticky)
右击空白取余,选择Create Sticky Note
pbr材质
ShaderGraph节点
输入节点
Float 标量
Vector2 二维向量 (用于UV…)
Vector3 三维向量 (用于位置,缩放,坐标,旋转等)
Vector4 四维向量 (用于颜色,四元数等)
Matrix 2x2 二维矩阵
Matrix 3x3 三维矩阵
Matrix 4x4 齐次矩阵
Transformation Matrix 变换矩阵(矩阵预设)
类型 | 说明 |
---|---|
Model | UNITY_MATRIX_M(模型矩阵) |
InverseModel | UNITY_MATRIX_I_M (模型逆矩阵) |
View | UNITY_MATRIX_V(视口矩阵) |
InverseView | UNITY_MATRIX_I_V(视口逆矩阵) |
Projection | UNITY_MATRIX_P(屏幕矩阵) |
InverseProjection | UNITY_MATRIX_I_P(屏幕逆矩阵) |
ViewProjection | UNITY_MATRIX_VP(视口屏幕矩阵) |
InverseViewProjection | UNITY_MATRIX_I_VP(视口屏幕逆矩阵) |
Constant 常数节点
选项 | 说明 |
---|---|
PI | 圆周率=3.14159265258979 |
TAU | 2倍圆周率=6.28318530 |
PHI | 黄金分割点=1.618034 |
E | 自然常数=2.718282 |
SQRT2 | 2的平方根=1.414214 |
Time节点
基础数据输入类节点,用来提供随时间变化的动态值,主要实现动态效果
Time: 时间值 float Time_Time=_Time.y
(随时间增大的浮点值)
Sine Time:时间正弦值float Time_SineTime=_SinTime.w
(正弦时间,随时间在(-1,1)之间变化)
Cosine Time: 时间余弦值 float Time_CosineTime=_CosTime.w
(余弦时间)
Delta Time :当前帧时间 float Time_DeltaTime=Unity_DeltaTime.x
(从前一帧到后一帧的时间)
Smooth Delta:平滑后的当前帧时间float Time_SmoothDelta=unity_DeltaTime.z
Preview 预览
创建预览节点可以显示shader效果
Position模型点位置
Basic 基础
- Boolean 布尔值
- Color 颜色
- Integer 整数
- Slider 滑块
Geometry 几何
- Bitangent Vector 副切线向量
- Normal Vector 顶点法线向量
- Tangent Vector 切线向量
- Screen Position 屏幕上的顶点位置
- Vertex Color 顶点颜色
- UV mesh中获取的UV
- View Direction 视口方向
Gradient 渐变
- Gradient 渐变贴图
- Sample Gradient 与渐变向量 变化程度可控
Texture 图片
- Sample Cubemap 立方体贴图采样
- Sample Reflected Cubemap
- Sample Texture 2D 2D贴图采样
- Sample Texture 2D Array 等同于Sample Texture 2D,区别在于可输入一个index
- Sample Texture 2D LOD
- Sample Texture 3D 3D贴图采样
- Sample Virtual Texture
- Cubemap – 立方贴图 用Sample Cubemap采样
- Texture 2D – 2D贴图 用普通采样器采样
- Texture 2D Array – 贴图数据组 用对应的采样器采样(可用于取某一组数据中的一个)
- Texture 3D – 3D贴图 用3D采样器采样
- Sampler State – 帮助设置采样器(线性过滤模式、拓展模式)
- Texel Size – 分辨率
- Sampler State 采样状态,连接Sample Texture节点的sampler输入,可设置filter(linear,point,trilinear)wrap(repeat,clamp,mirror,mirror once)
Light 灯光
- Ambient – 环境光
- Baked GI – 烘焙的全局光照
- Reflection Probe – 反射探针
- Dielectric Specular – 预先定义的材质(生锈金属、水、冰、玻璃)
- Metal Reflectance – 预先定义的金属度系数(PBR上设置为Metallic)
Scene 场景
-
Camera – 相机的 位置、方向、透视视图、深度、宽度、高度、近面,远面
节点 说明 Position 位置 Direction 方向 Orthographic 透视视图 Near Plane 视锥近面 Far plane 视锥远面 Z Buffer Sign 深度图 Width 宽度 High 高度 -
Fog – 雾
-
Object – 对象本身(世界空间下的位置和缩放)
-
Scene Color – 编辑器中设置的值
-
Scene Depth – 编辑器中设置的值
-
Screen – 屏幕宽高
Artistic(美术)
Adjustment调整
- Channel Mixer 混合颜色通道
- Contrast 设置对比度
- Hue 设置色调 range需要选normalized
- Invert Colors 反转颜色
- Replace Color 设置两个颜色通道互换,可调参数
- Saturation 设置饱和度
- White Balance 白平衡(调冷暖色调)
-
Blend 混合两张图片,可调参数和混合模式
Filter 过滤器
- Dither 添加抖动效果
Mask 遮罩
-
Channel Mask 可设置RGBA四个通道的遮罩,选中后只显示被选中的通道
-
Color Mask 通过Color Tint 屏蔽选中的颜色,可设置Range和fuzziness(模糊度,用来颜色过渡)
Normal 法线
-
Normal Blend 混合法线贴图
-
Normal From Height 通过灰度图生成法线贴图
-
Normal From Texture通过其他贴图生成法线贴图
-
Normal Reconstruct Z 通过x,y值重构有问题的法线值
-
Normal Strength 修改法线强度
-
Normal Unpack 特殊原因下法线贴图不能把type设置为normal会使用
Utility 实用功能
- Colorspace Conversion 颜色空间转换,用来把颜色分开,一般配合split使用
Channel (通道)
- Combine 把数个通道合并在一起
- Flip 剔除选择的颜色通道显示,翻转颜色
- Split 把输入分成数个独立通道输出
- Swizzle 改变颜色通道输出,例如把绿色通道变成透明通道
Math(数学)
Basic 基础
-
Multiply:乘法
-
Divide:除
-
Add:加
-
Subtract:减
-
Power:平方
-
Square Root:开平方
-
Posterize :取余
Advanced
-
Absolute :绝对值
-
Exponential :指数
-
Log:对数
-
Negate :对输入取反向,例如1变-1,0变1
-
Normalize :单位向量
-
Length: 向量的模长
-
Reciprocal 倒数,类似除法
-
Reciprocal Square Root 倒数平方根
Derivative 导数
- DDX 对x求导,一般输入position节点
- DDXY 对xy求导
- DDY 对y求导
Interpolation 插值
- Inverse Lerp 逆线性插值
- Lerp 插值
- Smoothstep 类似step节点,但有两个edge输入
Matrix 矩阵
- Matrix Construction 构造矩阵
- Matrix Determinant 行列式计算
- Matrix Split 矩阵分离
- Matrix Transpose 转置矩阵
Range 范围
- Clamp 把输入值截取在一个区间(min<=x<=max)
- Fraction 输出小数部分
- Maximum 输出多个数中的最大值
- Minimum 输出多个数中的最小值
- One Minus 取相反数
- Random Range 生成一个在最大值、最小值之间的随机浮点数
- Remap 将输入等比例的从in区间映射到out区间
- Saturate 将输入截取到0-1之间
- Round 取整
- Ceiling 向上取整
- Floor 向下取整
- Round 四舍五入
- Sign 输入大于0输出1,输入小于0输出-1
- Step 设定边界值,输入的值大于等于边界值,返回1,否则返回0
Trigonometry 三角函数
- Trigonometry 三角函数
- Arccosine 反正弦
- Arcsine 反余弦
- Arctangent 反正切
- Cosine 余弦
- Degrees To Radians 角度转化为弧度
- Hyperbolic Cosine 双曲函数
- Hyperbolic Sine
- Hyperbolic Tangent
- Radians To Degrees 弧度转化为角度
- Sine 正弦
- Tangent 正切
Vector 向量
-
Cross Product 叉积
-
Distance 向量距离
-
Dot Product 点积
-
Fresnel Effect 菲涅尔效果
-
Projection 获得向量A在向量B上的投影
-
Reflection 通过入射光线获得反射向量
-
Rejection
-
Rotate About Axis 绕设定的轴旋转
-
Sphere Mask 以半径为范围的球形遮罩
-
Transform 物体、观察、切线、世界坐标等的空间转换
Wave 波
-
Noise Sine Wave 正弦波
-
Sawtooth Wave 锯齿波
-
Square Wave 方形波
-
Triangle Wave 三角形波,先从0缓慢上升到1,然后立即下降到0(直角三角形)
Procedural(预制程序的节点)
Noise 噪声
-
Gradient Noise
-
Gradient Noise
-
Voronoi
Shapes 形状
- Ellipse 圆
- Polygon 多边形
- Rectangle 四边形
- Rounded Polygon 圆角多边形
- Rounded Rectangle 圆角四边形
- Checkerboard 棋盘图案
Utility 功能节点
-
All 输入值所有分量都不为零,则返回true
-
Any 输入值任一分量不为零,则返回true
-
And 输入A和B都为true,则返回true。(与节点)
-
Nand 输入A和B都为true,则返回false。(非与节点)
-
Or 输入A或B有一个为true,则返回true。(或节点)
-
Not 返回输入的相反值。即输入为true,输出false;输入为false,输出为true。(非节点)
-
Branch 输入值为True时,输出等于输入True的内容;输入值为False时,输出等于输入
False
的内容;(分支节点) -
Comparison 比较两个节点
内容 说明 Equal 等于 Not Equal 不等于 Less 小于 Less Or Equal 小于等于 Greater 大于 Greater Or Equal 大于等于 -
Is Infinite 若输入值为无限值,则返回true
-
Is NaN 如果输入的不是数字,则返回 true。 (NaN:Not a Number)
-
Is Front Face 是合法数字或者是正面的,则返回true。
UV
-
Flipbook 用于帧动画,out连接 sample Texture 2D 的inUV
-
Polar Coordinates 极坐标,像是可以把图片映射到球面
-
Radial Shear 类似于变形的鱼眼扭曲
-
Rotate 旋转贴图
-
Spherize 球形扭曲
-
Tiling And Offset 缩放平移设置
-
Triplanar
-
Twirl 旋涡扭曲效果
-
Parallax Mapping
-
Parallax Occlusion Mapping
uv遮罩