unity探索者之Shader Graph所有节点详解-Artistic篇
Artistic(艺术效果)
1、Adjustments(图像调节)
1) Chennel Mixer(通道混合器)
顾名思义,这个节点就是用于混合颜色的通道,在于控制不同颜色通道的贡献度。节点中有三个按钮,切换RGB按钮并拖动下方滑块可用来调整各通道的贡献值,对于上图,切换到R,然后将R的贡献值调到2,于是整体色调明显偏红。上方的按钮决定了你打算设置哪个通道的贡献值,一旦选择,则意味着无论拖动下方哪个滑块,都只会修改R的贡献。
2) Contrast(对比度)
修改输入颜色的对比度,根据填入的对比度大小调整输入颜色的对比度,对比度值为1则不变;对比度值为0则图片无色;对比度为-1,则颜色变为原色的补色。
3) Hue(色调偏移)
根据输入的偏移量偏移输入的色调,偏移量的单位可以用参数范围设置。Range为Degrees,则偏移在-180到180之间,Range为Normalized,则偏移在-0.5到0.5之间。
4) Invert Colors(颜色反转)
Out = abs(InvertColors - In);(InvertColors 就是选中的通道所组合的颜色)
从公式上就能看出来,其实就是输出输入的颜色在选中的通道中的补色,如果RGB3个通道全部选中,那么输出的颜色就恰好是输入的颜色的补色。
5) Replace Color(颜色替换)
颜色替换是一个很实用的功能,可以将选定的颜色替换成目标颜色,Range决定替换的范围,这个范围指From到In,Fuzziness是边缘的模糊性值,可以让替换变的更平滑。(不知道是不是有bug,某些情况下,如果Range为0,也并不会将From替换成To,比如上图中的左侧示例图,使用该图的情况下,Range如果设置为0,则无效果)。
6) Saturation(饱和度)
这个没什么好说的,就是调整颜色的饱和度。
7) White Balance(白平衡)
可以分别调整输入的温度(Temperature)和色调(Tint)。温度具有将值移向黄色或蓝色的效果,色调具有向粉红色或绿色转变的效果。
2、Blend(混合)
1) Blend(混合)
将输入的Blend混合到Base上,混合程度由Opacity决定,Mode是混合的方式,嗯…很多种,大家自己试试吧…
模式名 | 对应算法或代码 |
---|---|
Burn | Out = lerp(Base, 1.0 - (1.0 - Blend)/Base, Opacity) |
Darken | Out = lerp(Base, min(Blend, Base), Opacity) |
Difference | Out = lerp(Base, abs(Blend - Base), Opacity) |
Dodge | Out = lerp(Base, Base / (1.0 - Blend), Opacity) |
Divide | Out = lerp(Base, Base / (Blend + 0.000000000001), Opacity) |
Exclusion | Out = lerp(Base, Blend + Base - (2.0 * Blend * Base), Opacity) |
HardLight |
float4 result1 = 1.0 - 2.0 * (1.0 - Base) * (1.0 - Blend); float4 result2 = 2.0 * Base * Blend; float4 zeroOrOne = step(Blend, 0.5); Out = result2 * zeroOrOne + (1 - zeroOrOne) * result1; Out = lerp(Base, Out, Opacity);
|
HardMix | Out = lerp(Base, step(1 - Base, Blend), Opacity) |
Lighten | Out = lerp(Base, max(Blend, Base), Opacity) |
LinearBurn | Out = lerp(Base, Base + Blend - 1.0, Opacity) |
LinearDodge | Out = lerp(Base, Base + Blend, Opacity) |
LinearLight |
Out = Blend < 0.5 ? max(Base + (2 * Blend) - 1, 0) : min(Base + 2 * (Blend - 0.5), 1); Out = lerp(Base, Out, Opacity);
|
LinearLightAddSub | Out = lerp(Base, Blend + 2.0 * Base - 1.0, Opacity) |
Multiply | Out = lerp(Base, Base * Blend, Opacity) |
Negation | Out = lerp(Base, 1.0 - abs(1.0 - Blend - Base), Opacity); |
Overlay |
float4 result1 = 1.0 - 2.0 * (1.0 - Base) * (1.0 - Blend); float4 result2 = 2.0 * Base * Blend; float4 zeroOrOne = step(Base, 0.5); Out = result2 * zeroOrOne + (1 - zeroOrOne) * result1; Out = lerp(Base, Out, Opacity);
|
PinLight |
float4 check = step (0.5, Blend); float4 result1 = check * max(2.0 * (Base - 0.5), Blend); Out = result1 + (1.0 - check) * min(2.0 * Base, Blend); Out = lerp(Base, Out, Opacity);
|
Screen | Out = lerp(Base, 1.0 - (1.0 - Blend) * (1.0 - Base), Opacity); |
SoftLight |
float4 result1 = 2.0 * Base * Blend + Base * Base * (1.0 - 2.0 * Blend); float4 result2 = sqrt(Base) * (2.0 * Blend - 1.0) + 2.0 * Base * (1.0 - Blend); float4 zeroOrOne = step(0.5, Blend); Out = result2 * zeroOrOne + (1 - zeroOrOne) * result1; Out = lerp(Base, Out, Opacity);
|
Subtract | Out = lerp(Base, Base - Blend, Opacity); |
VividLight |
float4 result1 = 1.0 - (1.0 - Blend) / (2.0 * Base); float4 result2 = Blend / (2.0 * (1.0 - Base)); float4 zeroOrOne = step(0.5, Base); Out = result2 * zeroOrOne + (1 - zeroOrOne) * result1; Out = lerp(Base, Out, Opacity);
|
Overwrite | Out = lerp(Base, Blend, Opacity); |
3、Filter(过滤)
1) Dither(抖动)
通常作为Alpha Clip Threshold的输入,用来做一些淡入淡出效果。
4、Mask(遮罩)
1) Channel Mask(通道遮罩)
可以屏蔽输入的颜色中的某一个或多个通道。
2) Color Mask(颜色遮罩)
和Channel Mask类似,不过这个节点基于输入的颜色来控制,并且可以通过调整Range来修改Mask的范围,Fuzziness是模糊性,和Replace Color中的Fuzziness一样。
5、Normal(法线)
1) Normal Blend(混合法线)
将两张法线贴图合并成一张,两种模式可选。
2) Normal From Height(根据高度图生成法线)
通过黑白图来生成法线贴图。
3) Normal From Texture(根据纹理生成法线)
Offset调整法线偏移量,可以理解为调整凹凸的坡长,Strength决定法线强度,可以理解为调整凹凸的坡高。
4) Normal Reconstruct Z(重建法线的Z通道)
根据输入的X和Y值为生成的法线贴图导出新的Z值。
5) Normal Strength(法线强度)
调整法线的强度,可以理解为调整凹凸的坡高。
6) Normal Unpack(解压法线)
从输入的纹理中获取法线贴图,好像没什么作用,实际上修改Sample Texture 2D的Type为Normal就好了。
6、Utility(实用工具)
1) Colorspace Conversion(转换色彩空间)
修改图片的色彩空间,包含RGB、Linear、HSV三种,在涉及颜色修改重建的效果中比较实用。