【游戏技术群】959392658  【游戏出海群】12067810
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

首页   >   博客   >   小城

ShaderGraph - Artistic 节点简介

个人分类: ShaderGraph | 2018-11-30 14:06
标签:Shader

1. Artistic

一.Adjustment

(1) . Channel Mixer

 

控制每个输入通道的数量In对每个输出通道的大小值

(2) . Contrast

 

控制输入值的百分比1为100%,0为0%;

float midpoint = pow(0.5, 2.2);

Out =  (In - midpoint) * Contrast + midpoint;

 

(3) . Hue

 

通过输入偏移抵消输入In的色调。可以使用参数Range设置偏移的单位。度数偏差在-180到180之间。在Radians中,它是-Pi到Pi。

Degrees

float4 K = float4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);

float4 P = lerp(float4(In.bg, K.wz), float4(In.gb, K.xy), step(In.b, In.g));

float4 Q = lerp(float4(P.xyw, In.r), float4(In.r, P.yzx), step(P.x, In.r));

float D = Q.x - min(Q.w, Q.y);

float E = 1e-10;

float3 hsv = float3(abs(Q.z + (Q.w - Q.y)/(6.0 * D + E)), D / (Q.x + E), Q.x);

 

float hue = hsv.x + Offset / 360;

hsv.x = (hue < 0)

        ? hue + 1

        : (hue > 1)

            ? hue - 1

            : hue;

 

float4 K2 = float4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);

float3 P2 = abs(frac(hsv.xxx + K2.xyz) * 6.0 - K2.www);

Out = hsv.z * lerp(K2.xxx, saturate(P2 - K2.xxx), hsv.y);

Radians

float4 K = float4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);

float4 P = lerp(float4(In.bg, K.wz), float4(In.gb, K.xy), step(In.b, In.g));

float4 Q = lerp(float4(P.xyw, In.r), float4(In.r, P.yzx), step(P.x, In.r));

float D = Q.x - min(Q.w, Q.y);

float E = 1e-10;

float3 hsv = float3(abs(Q.z + (Q.w - Q.y)/(6.0 * D + E)), D / (Q.x + E), Q.x);

 

float hue = hsv.x + Offset;

hsv.x = (hue < 0)

        ? hue + 1

        : (hue > 1)

            ? hue - 1

            : hue;

 

// HSV to RGB

float4 K2 = float4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);

float3 P2 = abs(frac(hsv.xxx + K2.xyz) * 6.0 - K2.www);

Out = hsv.z * lerp(K2.xxx, saturate(P2 - K2.xxx), hsv.y);

(4) . Invert Colors

 

反转一个值如:如0 - 10.1 - 0.90.5 - 0.5

如果小于0或者大于2:都等于1

如果超过11.1 = (1.1-1) , 1.2 = (1.2-1)

(5) . Replace Color

 

替换图片中的颜色 form为想要换的颜色,to为替换的颜色,range为换的百分比,Fuzziness为是否虚化周围效果

float Distance = distance(From, In);

Out = lerp(To, In, saturate((Distance - Range) / max(Fuzziness, 1e-5f)));

(6) . Saturation

 

通过输入饱和度调整输入In的饱和度。

(7) . WhiteBalance

 

通过输入温度和色调分别调节输入In的温度和色调。

二.Blend

 

使用参数Mode定义的混合模式将输入Blend的值混合到输入Base。

Opacity为混入的百分比

三.Filter

Dither

 

抖动是用于随机化量化误差的有意噪声形式。它用于防止图像中的色带等大尺寸图案。

float2 uv = ScreenPosition.xy * _ScreenParams.xy;

float DITHER_THRESHOLDS[16] =

{

    1.0 / 17.0,  9.0 / 17.0,  3.0 / 17.0, 11.0 / 17.0,

    13.0 / 17.0,  5.0 / 17.0, 15.0 / 17.0,  7.0 / 17.0,

    4.0 / 17.0, 12.0 / 17.0,  2.0 / 17.0, 10.0 / 17.0,

    16.0 / 17.0,  8.0 / 17.0, 14.0 / 17.0,  6.0 / 17.0

};

uint index = (uint(uv.x) % 4) * 4 + uint(uv.y) % 4;

Out = In - DITHER_THRESHOLDS[index];

 

四.Mask

(1) . Channel Mask

 

Channels中选择的通道上屏蔽输入In的值。

(2) . Color Mask

 

根据输入中的值创建蒙版等于输入蒙版颜色。

float Distance = distance(MaskColor, In);

Out = saturate(1 - (Distance - Range) / max(Fuzziness, 1e-5));

五.Normal

(1) . Normal Blend

 

将输入A和B定义的两个法线贴图混合在一起

(2) . Normal Create

 

 

根据输入纹理定义的高度图创建法线贴图

(3) . Normal Strength

 

调整输入In定义的法线贴图的强度,输入强度。

(4) . Normal Unpack

 

输入In定义的法线贴图。

六.Utility

Colorspace Conversion

 

返回将输入In的值从一个颜色空间空间转换为另一个颜色空间的结果。

 @橙子

0 0

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册帐号
返回顶部