From 6191ba122377e800c76622fbfcac4872848c82b1 Mon Sep 17 00:00:00 2001
From: getdls <cztemplatetest@gmail.com>
Date: Tue, 13 Mar 2018 23:42:29 +0100
Subject: [PATCH] [XCX] Adjustable brightness new default, bloom alignment

Slight lift to shadows + gamma balancing loss of contrast. Works better
for hardcoded night scenes, NLA attack, opening
Bloom alignment merge pass, mostly for 4k+
---
 .../3cf2d31fbf321520_0000000000000000_vs.txt  | 60 +++++++++++++++++++
 .../3cc7e98f78c258b4_00000000000003ca_ps.txt  | 12 ++--
 .../d936195db0dd8e7d_0000000000001e52_ps.txt  | 12 ++--
 3 files changed, 72 insertions(+), 12 deletions(-)
 create mode 100644 Source/XenobladeX/3cf2d31fbf321520_0000000000000000_vs.txt

diff --git a/Source/XenobladeX/3cf2d31fbf321520_0000000000000000_vs.txt b/Source/XenobladeX/3cf2d31fbf321520_0000000000000000_vs.txt
new file mode 100644
index 00000000..57b14549
--- /dev/null
+++ b/Source/XenobladeX/3cf2d31fbf321520_0000000000000000_vs.txt
@@ -0,0 +1,60 @@
+#version 420
+#extension GL_ARB_texture_gather : enable
+#extension GL_ARB_separate_shader_objects : enable
+#extension GL_ARB_shading_language_packing : enable
+// shader 3cf2d31fbf321520
+//bloom align last merge
+uniform ivec4 uf_remappedVS[1];
+uniform vec2 uf_windowSpaceToClipSpaceTransform;
+layout(location = 0) in uvec4 attrDataSem0;
+layout(location = 1) in uvec4 attrDataSem1;
+out gl_PerVertex
+{
+	vec4 gl_Position;
+	float gl_PointSize;
+};
+layout(location = 0) out vec4 passParameterSem0;
+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 R1f = vec4(0.0);
+vec4 R2f = vec4(0.0);
+uvec4 attrDecoder;
+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;
+vec3 cubeMapSTM;
+int cubeMapFaceId;
+attrDecoder.xyz = attrDataSem0.xyz;
+attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
+attrDecoder.w = 0;
+R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
+attrDecoder.xy = attrDataSem1.xy;
+attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
+attrDecoder.z = 0;
+attrDecoder.w = 0;
+R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
+// 0
+backupReg0f = R2f.x;
+backupReg1f = R2f.y;
+R2f.x = (mul_nonIEEE(backupReg0f,intBitsToFloat(uf_remappedVS[0].x)) + (intBitsToFloat(uf_remappedVS[0].z)*1.3));
+R2f.y = (mul_nonIEEE(backupReg1f,intBitsToFloat(uf_remappedVS[0].y)) + (intBitsToFloat(uf_remappedVS[0].w)*1.3));
+// export
+gl_Position = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
+// export
+passParameterSem0 = vec4(R2f.x, R2f.y, R2f.z, R2f.z);
+// 0
+}
diff --git a/Workaround/XenobladeX_AdjustableBrightness/3cc7e98f78c258b4_00000000000003ca_ps.txt b/Workaround/XenobladeX_AdjustableBrightness/3cc7e98f78c258b4_00000000000003ca_ps.txt
index 48214d7a..915f76bd 100644
--- a/Workaround/XenobladeX_AdjustableBrightness/3cc7e98f78c258b4_00000000000003ca_ps.txt
+++ b/Workaround/XenobladeX_AdjustableBrightness/3cc7e98f78c258b4_00000000000003ca_ps.txt
@@ -5,11 +5,11 @@
 // changes here in turn "breaks" bloom as they over or under expose depending on day/night 
 
 //old contrasty, or just copy paste clarity
-const float gamma = 0.95; // 1.0 is neutral  
+const float gamma = 0.92; // 1.0 is neutral  
 const float exposure = 0.52; // 1.0 is neutral, first lessen to avoid truncation prob around .25 for radeon. 
-const float vibrance = 0.3175;  // 0.0 is neutral  
-const float crushContrast = 0.000; // 0.0 is neutral. loss of shadow detail 
-const float postExposure = 1.06; // 1.0 is neutral, then slightly raise exposure back up. 
+const float vibrance = 0.318;  // 0.0 is neutral  
+const float lift = 0.001; // 0.0 is neutral. loss of shadow detail 
+const float postExposure = 1.05; // 1.0 is neutral, then slightly raise exposure back up. 
 
 vec3 contrasty(vec3 colour){
 	vec3 fColour = (colour.xyz);
@@ -23,7 +23,7 @@ vec3 contrasty(vec3 colour){
 	vec3 lightness = vec3((mn + mx) / 2.0);
 // vibrance
 	fColour = mix(fColour, mix(fColour, lightness, -vibrance), sat);
-	fColour = max(vec3(0.0), fColour - vec3(crushContrast));
+	fColour = max(vec3(0.0), fColour + vec3(lift));
 	return fColour;
 }
 
@@ -71,7 +71,7 @@ vec3 cubeMapSTM;
 int cubeMapFaceId;
 R0f = passParameterSem0;
 
-R0f.xyz = (texture(textureUnitPS0, R0f.xy).xyz) * (0.975 -(lineRand(gl_FragCoord.xy)*0.02));
+R0f.xyz = (texture(textureUnitPS0, R0f.xy).xyz) * (0.985 -(lineRand(gl_FragCoord.xy)*0.015));
 //R0f.xyz = R0f.xyz - (lineRand(gl_FragCoord.xy)*0.1);
 // 0
 R0f.xyz = contrasty(R0f.xyz);
diff --git a/Workaround/XenobladeX_AdjustableBrightness/d936195db0dd8e7d_0000000000001e52_ps.txt b/Workaround/XenobladeX_AdjustableBrightness/d936195db0dd8e7d_0000000000001e52_ps.txt
index c9b3370a..ea8554ec 100644
--- a/Workaround/XenobladeX_AdjustableBrightness/d936195db0dd8e7d_0000000000001e52_ps.txt
+++ b/Workaround/XenobladeX_AdjustableBrightness/d936195db0dd8e7d_0000000000001e52_ps.txt
@@ -6,11 +6,11 @@
 // changes here in turn "breaks" bloom as they over or under expose depending on day/night 
 
 //old contrasty, or just copy paste clarity
-const float gamma = 0.95; // 1.0 is neutral  
+const float gamma = 0.92; // 1.0 is neutral  
 const float exposure = 0.52; // 1.0 is neutral, first lessen to avoid truncation prob around .25 for radeon. 
-const float vibrance = 0.3175;  // 0.0 is neutral  
-const float crushContrast = 0.000; // 0.0 is neutral. loss of shadow detail 
-const float postExposure = 1.06; // 1.0 is neutral, then slightly raise exposure back up. 
+const float vibrance = 0.318;  // 0.0 is neutral  
+const float lift = 0.001; // 0.0 is neutral. loss of shadow detail 
+const float postExposure = 1.05; // 1.0 is neutral, then slightly raise exposure back up. 
 
 vec3 contrasty(vec3 colour){
 	vec3 fColour = (colour.xyz);
@@ -24,7 +24,7 @@ vec3 contrasty(vec3 colour){
 	vec3 lightness = vec3((mn + mx) / 2.0);
 // vibrance
 	fColour = mix(fColour, mix(fColour, lightness, -vibrance), sat);
-	fColour = max(vec3(0.0), fColour - vec3(crushContrast));
+	fColour = max(vec3(0.0), fColour + vec3(lift));
 	return fColour;
 }
 
@@ -72,7 +72,7 @@ bool predResult = true;
 vec3 cubeMapSTM;
 int cubeMapFaceId;
 R0f = passParameterSem0;
-R0f.xyz = (texture(textureUnitPS0, R0f.xy).xyz) * (0.975  -(lineRand(gl_FragCoord.yx)*0.02));
+R0f.xyz = (texture(textureUnitPS0, R0f.xy).xyz) * (0.985  -(lineRand(gl_FragCoord.yx)*0.015));
 //R0f.xyz = (texture(textureUnitPS0, R0f.xy).xyz) *preExposure;
 // 0
 R0f.xyz = contrasty(R0f.xyz);