mirror of
https://github.com/cemu-project/cemu_graphic_packs.git
synced 2024-11-30 05:14:14 +01:00
[BotW] contrasty remove reshade tonemap
Turns out it's not tonemap Credit SkalFate on discord ACES now with a simple exposure that can be tweaked, default 0.6 to match original curve according the author
This commit is contained in:
parent
ed3ef4b909
commit
26f9bcfaaa
@ -11,14 +11,8 @@ const float bloomFactor = 0.7; // 1.0 is neutral
|
|||||||
// -1: disable, clamp bright detail but keep [0,1] intact, however clamping could lead to desaturation as well
|
// -1: disable, clamp bright detail but keep [0,1] intact, however clamping could lead to desaturation as well
|
||||||
// 0: (Wii U) BotW original
|
// 0: (Wii U) BotW original
|
||||||
// 1: ACES Filmic
|
// 1: ACES Filmic
|
||||||
// 2: Reshade/Sweetfx Tonemap, also allow color adjusting during tone mapping
|
//--------------------"ACES Filmic" Parameters-----------------//
|
||||||
//-----------------"Reshade Tonemap" Parameters---------------//
|
const float Exposure = 0.6; // [0.0, 1.0+] Adjust exposure
|
||||||
const float Gamma = 1.0; // [ 0.0, 2.0] 1.000 is neutral
|
|
||||||
const float Exposure = 0.0; // [-1.0, 1.0] Adjust exposure
|
|
||||||
const float Saturation = 0.0; // [-1.0, 1.0] Adjust saturation
|
|
||||||
const float Bleach = 0.0; // [ 0.0, 1.0] Brightens the shadows and fades the colors
|
|
||||||
const float Detint = 0.0; // [ 0.0, 1.0+] How much of the color tint to remove
|
|
||||||
const vec3 tintColor = vec3(0.0, 0.0, 0.0); // [ 0.0, 1.0+] Which color tint to remove
|
|
||||||
//---------------------------------------------------------------//
|
//---------------------------------------------------------------//
|
||||||
|
|
||||||
#define post_process 2
|
#define post_process 2
|
||||||
@ -26,7 +20,7 @@ const vec3 tintColor = vec3(0.0, 0.0, 0.0); // [ 0.0, 1.0+] Which color tint to
|
|||||||
// 0: (Wii U) BotW original, only vibrance
|
// 0: (Wii U) BotW original, only vibrance
|
||||||
// 1: Reshade Vibrance
|
// 1: Reshade Vibrance
|
||||||
// 2: Contrasty
|
// 2: Contrasty
|
||||||
// 3: experiment, convert rgb to hsv then adjust s
|
// 3: Experimental, convert rgb to hsv then adjust saturation directly
|
||||||
//----------------"BotW original" vibrance adjust-------------//
|
//----------------"BotW original" vibrance adjust-------------//
|
||||||
const float satFactor = 0.29; // 0.18 is neutral. Experimental, adjust native saturation
|
const float satFactor = 0.29; // 0.18 is neutral. Experimental, adjust native saturation
|
||||||
//---------------------------------------------------------------//
|
//---------------------------------------------------------------//
|
||||||
@ -41,7 +35,7 @@ const float vibrance = 0.45; // 0.0 is neutral
|
|||||||
const float crushContrast = 0.004; // 0.0 is neutral. Use small increments, loss of shadow detail
|
const float crushContrast = 0.004; // 0.0 is neutral. Use small increments, loss of shadow detail
|
||||||
//---------------------------------------------------------------//
|
//---------------------------------------------------------------//
|
||||||
//------------------------"hsv experiment"---------------------//
|
//------------------------"hsv experiment"---------------------//
|
||||||
const float satScale = 1.5;
|
const float satScale = 1.5; // 1.0 is neutral
|
||||||
//---------------------------------------------------------------//
|
//---------------------------------------------------------------//
|
||||||
|
|
||||||
/*==========================================================================*/
|
/*==========================================================================*/
|
||||||
@ -72,34 +66,10 @@ vec3 BotWToneMap(vec3 color) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
vec3 ACESFilm(vec3 color) {
|
vec3 ACESFilm(vec3 color) {
|
||||||
color *= 0.6;
|
color *= Exposure;
|
||||||
return (color*(2.51*color+0.03))/(color*(2.43*color+0.59)+0.14);
|
return (color*(2.51*color+0.03))/(color*(2.43*color+0.59)+0.14);
|
||||||
}
|
}
|
||||||
|
|
||||||
vec3 ReshadeTM(vec3 color) {
|
|
||||||
color = clamp(color - Detint * tintColor,0.0,1.0); // Detint, removed 2.55
|
|
||||||
color *= pow(2.0f, Exposure); // Exposure
|
|
||||||
color = pow(color, vec3(1.0/Gamma)); // Reciprocal Gamma, like contrasty, more intuitive, not exactly midtone anyway
|
|
||||||
|
|
||||||
float lum = getL709(color);
|
|
||||||
|
|
||||||
float L = clamp(10.0 * (lum - 0.45),0.0,1.0);
|
|
||||||
vec3 A2 = Bleach * color;
|
|
||||||
|
|
||||||
vec3 result1 = 2.0 * color * lum;
|
|
||||||
vec3 result2 = 1.0 - 2.0 * (1.0 - lum) * (1.0 - color);
|
|
||||||
|
|
||||||
vec3 newColor = mix(result1, result2, L);
|
|
||||||
vec3 mixRGB = A2 * newColor;
|
|
||||||
color += ((1.0 - A2) * mixRGB);
|
|
||||||
|
|
||||||
vec3 middlegray = vec3(dot(color, vec3(1.0 / 3.0)));
|
|
||||||
vec3 diffcolor = color - middlegray;
|
|
||||||
color = (color + diffcolor * Saturation) / (1.0 + (diffcolor * Saturation)); // Saturation
|
|
||||||
|
|
||||||
return color;
|
|
||||||
}
|
|
||||||
|
|
||||||
vec3 BotWVibrance(vec3 color) {
|
vec3 BotWVibrance(vec3 color) {
|
||||||
float avg = (color.r + color.g + color.b)/3.0;
|
float avg = (color.r + color.g + color.b)/3.0;
|
||||||
float maxc = max(color.r, max(color.g,color.b));
|
float maxc = max(color.r, max(color.g,color.b));
|
||||||
@ -172,8 +142,6 @@ color = clamp(color,0.0,1.0);
|
|||||||
color = BotWToneMap(color);
|
color = BotWToneMap(color);
|
||||||
#elif (tone_mapping == 1)
|
#elif (tone_mapping == 1)
|
||||||
color = ACESFilm(color);
|
color = ACESFilm(color);
|
||||||
#elif (tone_mapping == 2)
|
|
||||||
color = ReshadeTM(color);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (post_process == 0)
|
#if (post_process == 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user