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 - 1,0.1 - 0.9,0.5 - 0.5;
如果小于0或者大于2:都等于1;
如果超过1:1.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的值从一个颜色空间空间转换为另一个颜色空间的结果。
@橙子