mirror of
https://github.com/cemu-project/cemu_graphic_packs.git
synced 2024-12-24 00:41:51 +01:00
2e61bcc79c
Because currently upscaling BoTW breaks AA I'm merging AA removal and contrastry (can be turned on in shader f14bb57cd5c9cb77) with quality and enthusiast packs
84 lines
3.0 KiB
Plaintext
84 lines
3.0 KiB
Plaintext
#version 420 //Credit to bestminr for vibrance logic
|
|
#extension GL_ARB_texture_gather : enable
|
|
|
|
const bool Use_Contrasty = false; //'true' or 'false' to turn Contrasty on or off
|
|
|
|
|
|
/*Gamma, exposure, vibrance and crushContrast can be modified */
|
|
const float gamma = 0.8; // 1.0 is neutral Botw is already colour graded at this stage
|
|
const float exposure = 1.17; // 1.0 is neutral
|
|
const float vibrance = 0.7; // 0.0 is neutral
|
|
const float crushContrast = 0.004; // 0.0 is neutral. Use small increments, loss of shadow detail
|
|
|
|
//Uncomment below and in body to scale 16-235 not recommended */
|
|
/*
|
|
const float floor = 16.0 / 255;
|
|
const float scale = 255.0/(235.0-16.0);
|
|
*/
|
|
|
|
|
|
// shader f14bb57cd5c9cb77
|
|
uniform ivec4 uf_remappedPS[4];
|
|
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf4713800 res 1280x720x1 dim 1 tm: 4 format 0019 compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 1
|
|
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x387f8000 res 1280x720x1 dim 1 tm: 4 format 0001 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
|
|
layout(location = 0) in vec4 passParameterSem2;
|
|
layout(location = 0) out vec4 passPixelColor0;
|
|
uniform vec2 uf_fragCoordScale;
|
|
|
|
int clampFI32(int v)
|
|
{
|
|
if( v == 0x7FFFFFFF )
|
|
return floatBitsToInt(1.0);
|
|
else if( v == 0xFFFFFFFF )
|
|
return floatBitsToInt(0.0);
|
|
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
|
|
}
|
|
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
|
|
void main()
|
|
{
|
|
vec4 R0f = vec4(0.0);
|
|
vec4 R1f = vec4(0.0);
|
|
vec4 R2f = vec4(0.0);
|
|
vec4 R3f = vec4(0.0);
|
|
vec4 R123f = vec4(0.0);
|
|
vec4 R126f = vec4(0.0);
|
|
vec4 R127f = vec4(0.0);
|
|
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
|
|
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
|
|
float PS0f = 0.0, PS1f = 0.0;
|
|
vec4 tempf = vec4(0.0);
|
|
float tempResultf;
|
|
int tempResulti;
|
|
ivec4 ARi = ivec4(0);
|
|
bool predResult = true;
|
|
bool activeMaskStack[2];
|
|
bool activeMaskStackC[3];
|
|
activeMaskStack[0] = false;
|
|
activeMaskStackC[0] = false;
|
|
activeMaskStackC[1] = false;
|
|
activeMaskStack[0] = true;
|
|
activeMaskStackC[0] = true;
|
|
activeMaskStackC[1] = true;
|
|
vec3 cubeMapSTM;
|
|
int cubeMapFaceId;
|
|
R0f = passParameterSem2;
|
|
R2f.xyzw = (texture(textureUnitPS0, R0f.xy).xyzw);
|
|
vec3 fColour = (R2f.xyz);
|
|
fColour = max(vec3(0.0), fColour - vec3(crushContrast));
|
|
fColour = clamp(exposure * fColour, 0.0, 1.0);
|
|
fColour = pow(fColour, vec3(1.0 / gamma));
|
|
float luminance = fColour.r*0.299 + fColour.g*0.587 + fColour.b*0.114;
|
|
float mn = min(min(fColour.r, fColour.g), fColour.b);
|
|
float mx = max(max(fColour.r, fColour.g), fColour.b);
|
|
float sat = (1.0-(mx - mn)) * (1.0-mx) * luminance * 5.0;
|
|
vec3 lightness = vec3((mn + mx)/2.0);
|
|
// vibrance
|
|
fColour = mix(fColour, mix(fColour, lightness, -vibrance), sat);
|
|
|
|
//vec3 fColour = (fColour.xyz - floor) * scale; // Not recommended 0-255->16-235..
|
|
|
|
// export
|
|
R2f.xyz = (Use_Contrasty?fColour:R2f.xyz);
|
|
passPixelColor0 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
|
|
}
|