mirror of
https://github.com/FriendshipIsEpic/FiE-Game.git
synced 2024-11-29 08:37:58 +01:00
39 lines
1 KiB
HLSL
39 lines
1 KiB
HLSL
#include "ColorGrading.cginc"
|
|
|
|
// Grain
|
|
half2 _Grain_Params1; // x: lum_contrib, y: intensity
|
|
half4 _Grain_Params2; // x: xscale, h: yscale, z: xoffset, w: yoffset
|
|
sampler2D _GrainTex;
|
|
|
|
// Dithering
|
|
sampler2D _DitheringTex;
|
|
float4 _DitheringCoords;
|
|
|
|
float3 UberSecondPass(half3 color, float2 uv)
|
|
{
|
|
// Grain
|
|
#if GRAIN
|
|
{
|
|
float3 grain = tex2D(_GrainTex, uv * _Grain_Params2.xy + _Grain_Params2.zw).rgb;
|
|
|
|
// Noisiness response curve based on scene luminance
|
|
float lum = 1.0 - sqrt(AcesLuminance(color));
|
|
lum = lerp(1.0, lum, _Grain_Params1.x);
|
|
|
|
color += color * grain * _Grain_Params1.y * lum;
|
|
}
|
|
#endif
|
|
|
|
// Blue noise dithering
|
|
#if DITHERING
|
|
{
|
|
// Symmetric triangular distribution on [-1,1] with maximal density at 0
|
|
float noise = tex2D(_DitheringTex, uv * _DitheringCoords.xy + _DitheringCoords.zw).a * 2.0 - 1.0;
|
|
noise = sign(noise) * (1.0 - sqrt(1.0 - abs(noise))) / 255.0;
|
|
|
|
color += noise;
|
|
}
|
|
#endif
|
|
|
|
return color;
|
|
}
|