diff --git a/Source/WindWakerHD/1f83c0d47b1c4c34_0000000000000000_vs.txt b/Source/WindWakerHD/1f83c0d47b1c4c34_0000000000000000_vs.txt index 33658933..5c043896 100644 --- a/Source/WindWakerHD/1f83c0d47b1c4c34_0000000000000000_vs.txt +++ b/Source/WindWakerHD/1f83c0d47b1c4c34_0000000000000000_vs.txt @@ -1,9 +1,12 @@ #version 420 #extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable #extension GL_ARB_shading_language_packing : enable -// shader 1f83c0d47b1c4c34 // half res blur. Horizon, detail shadows, bloom base +// shader 1f83c0d47b1c4c34 //box downscale + +const float resXScale = (intBitsToFloat($height)/intBitsToFloat($gameHeight)); +const float resYScale = (intBitsToFloat($width)/intBitsToFloat($gameWidth)); -const float resScale = ($height/$gameHeight)*$internalRes; uniform ivec4 uf_remappedVS[1]; uniform vec2 uf_windowSpaceToClipSpaceTransform; layout(location = 0) in uvec4 attrDataSem0; @@ -22,7 +25,7 @@ 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; } +float mul_nonIEEE(float a, float b){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));} void main() { vec4 R0f = vec4(0.0); @@ -58,14 +61,14 @@ R1f.y = backupReg1f; R1f.y *= 2.0; R1f.z = intBitsToFloat(0xbf800000); R1f.w = 1.0; -PS0f = R2f.x + -(intBitsToFloat(uf_remappedVS[0].x)/resScale); +PS0f = R2f.x + -(intBitsToFloat(uf_remappedVS[0].x)/resYScale); //vert // 1 backupReg0f = R2f.y; backupReg1f = R2f.x; -PV1f.x = R2f.y + -(intBitsToFloat(uf_remappedVS[0].y) / resScale); -R2f.y = backupReg0f + intBitsToFloat(uf_remappedVS[0].y) / resScale; +PV1f.x = R2f.y + -(intBitsToFloat(uf_remappedVS[0].y)/resXScale); //horiz +R2f.y = backupReg0f + intBitsToFloat(uf_remappedVS[0].y)/resXScale; //horiz R2f.z = PS0f; -R2f.x = backupReg1f + intBitsToFloat(uf_remappedVS[0].x) / resScale; +R2f.x = backupReg1f + intBitsToFloat(uf_remappedVS[0].x)/resYScale; //vert PS1f = R2f.x; // 2 R2f.w = PV1f.x; @@ -75,3 +78,4 @@ gl_Position = vec4(R1f.x, R1f.y, R1f.z, R1f.w); passParameterSem3 = vec4(R2f.x, R2f.y, R2f.z, R2f.w); // 0 } + diff --git a/Source/WindWakerHD/4c426260188ace42_0000000000000000_vs.txt b/Source/WindWakerHD/4c426260188ace42_0000000000000000_vs.txt index 8d47dd6c..cf4e1e1d 100644 --- a/Source/WindWakerHD/4c426260188ace42_0000000000000000_vs.txt +++ b/Source/WindWakerHD/4c426260188ace42_0000000000000000_vs.txt @@ -1,10 +1,10 @@ #version 420 #extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable #extension GL_ARB_shading_language_packing : enable // shader 4c426260188ace42 -// shadows pyramid blend 2nd downscale - -const float resScale = ($height/$gameHeight)*$internalRes; +//3step vertical shadow n AO blur +const float resXScale = (intBitsToFloat($height)/intBitsToFloat($gameHeight)); uniform ivec4 uf_remappedVS[5]; uniform vec2 uf_windowSpaceToClipSpaceTransform; layout(location = 0) in uvec4 attrDataSem0; @@ -22,7 +22,7 @@ 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; } +float mul_nonIEEE(float a, float b){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));} void main() { vec4 R0f = vec4(0.0); @@ -54,7 +54,7 @@ R126f.z = (0.0 > R1f.x)?1.0:0.0; R126f.z /= 2.0; R127f.w = 1.0; PV0f.w = R127f.w; -R126f.x = intBitsToFloat(uf_remappedVS[0].w) * intBitsToFloat(0x3fae8a72)/ resScale; +R126f.x = intBitsToFloat(uf_remappedVS[0].w) * intBitsToFloat(0x3fae8a72)/resXScale; //vert PS0f = R126f.x; // 1 R0f.x = dot(vec4(R1f.x,R1f.y,R1f.z,PV0f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w))); diff --git a/Source/WindWakerHD/4ffa96d07cd53c34_0000000000000000_vs.txt b/Source/WindWakerHD/4ffa96d07cd53c34_0000000000000000_vs.txt new file mode 100644 index 00000000..51331c4e --- /dev/null +++ b/Source/WindWakerHD/4ffa96d07cd53c34_0000000000000000_vs.txt @@ -0,0 +1,90 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_packing : enable +// shader 4ffa96d07cd53c34 + +const float resXScale = (intBitsToFloat($height)/intBitsToFloat($gameHeight)); +const float resYScale = (intBitsToFloat($width)/intBitsToFloat($gameWidth)); + + +//box low res (bloom?) +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; +layout(location = 1) out vec4 passParameterSem1; +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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));} +void main() +{ +vec4 R0f = vec4(0.0); +vec4 R1f = vec4(0.0); +vec4 R2f = vec4(0.0); +vec4 R127f = 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; +R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID)); +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 = R1f.x; +backupReg1f = R1f.y; +R1f.x = backupReg0f; +R1f.x *= 2.0; +R1f.y = backupReg1f; +R1f.y *= 2.0; +R1f.z = 0.0; +R1f.w = 1.0; +R127f.x = R2f.y + intBitsToFloat(uf_remappedVS[0].w)/resYScale; //vert +PS0f = R127f.x; +// 1 +backupReg0f = R2f.x; +backupReg1f = R2f.y; +backupReg0f = R2f.x; +R2f.x = backupReg0f + intBitsToFloat(uf_remappedVS[0].z)/resXScale;//hz right +R2f.y = PS0f; +PV1f.z = backupReg1f + -(intBitsToFloat(uf_remappedVS[0].w)/resYScale); ///vert +R0f.x = backupReg0f + -(intBitsToFloat(uf_remappedVS[0].z)/resXScale); //hz left +PS1f = R0f.x; +// 2 +R0f.y = R127f.x; +R0f.z = PV1f.z; +R2f.w = PV1f.z; +// export +gl_Position = vec4(R1f.x, R1f.y, R1f.z, R1f.w); +// export +passParameterSem0 = vec4(R2f.x, R2f.y, R2f.x, R2f.w); +// export +passParameterSem1 = vec4(R0f.x, R0f.y, R0f.x, R0f.z); +// 0 +} diff --git a/Source/WindWakerHD/842a19b509f8b91a_0000000000000000_vs.txt b/Source/WindWakerHD/842a19b509f8b91a_0000000000000000_vs.txt index 870b001e..1908422d 100644 --- a/Source/WindWakerHD/842a19b509f8b91a_0000000000000000_vs.txt +++ b/Source/WindWakerHD/842a19b509f8b91a_0000000000000000_vs.txt @@ -1,8 +1,9 @@ #version 420 #extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable #extension GL_ARB_shading_language_packing : enable -// shader 842a19b509f8b91a //vert scale bloom -const float resScale = ($height/$gameHeight)*$internalRes; +// shader 842a19b509f8b91a //vertical pass stars +const float resYcale = (intBitsToFloat($height)/intBitsToFloat($gameHeight))); uniform ivec4 uf_remappedVS[1]; uniform vec2 uf_windowSpaceToClipSpaceTransform; layout(location = 0) in uvec4 attrDataSem0; @@ -23,7 +24,7 @@ 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; } +float mul_nonIEEE(float a, float b){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));} void main() { vec4 R0f = vec4(0.0); @@ -62,10 +63,10 @@ R1f.y = backupReg1f; R1f.y *= 2.0; R1f.z = 0.0; R1f.w = 1.0; -PS0f = intBitsToFloat(uf_remappedVS[0].y) * intBitsToFloat(0x3fb13a93)/ resScale; +PS0f = intBitsToFloat(uf_remappedVS[0].y) * intBitsToFloat(0x3fb13a93)/resYScale; // center // 1 -PV1f.x = intBitsToFloat(uf_remappedVS[0].y) * intBitsToFloat(0x404ec4f0) / resScale; -R127f.y = intBitsToFloat(uf_remappedVS[0].y) * intBitsToFloat(0x40a275f7); +PV1f.x = intBitsToFloat(uf_remappedVS[0].y) * intBitsToFloat(0x404ec4f0)/resYScale; //wide +R127f.y = intBitsToFloat(uf_remappedVS[0].y) * intBitsToFloat(0x40a275f7)/resYScale; //Low res pass, not first R2f.z = R2f.y + PS0f; PV1f.z = R2f.z; R2f.w = R2f.y; diff --git a/Source/WindWakerHD/8d68a0e3561ff525_0000000000000000_vs.txt b/Source/WindWakerHD/8d68a0e3561ff525_0000000000000000_vs.txt index 73506383..fb32841c 100644 --- a/Source/WindWakerHD/8d68a0e3561ff525_0000000000000000_vs.txt +++ b/Source/WindWakerHD/8d68a0e3561ff525_0000000000000000_vs.txt @@ -1,8 +1,17 @@ #version 420 #extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable #extension GL_ARB_shading_language_packing : enable -// shader 8d68a0e3561ff525 //scale bloom to res -const float resScale = ($height/$gameHeight)*$internalRes; +#version 420 +// shader 842a19b509f8b91a //vertical pass stars +const float resXcale = (intBitsToFloat($width)/intBitsToFloat($gameWidth))); +uniform ivec4 uf_remappedVS[1]; +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_packing : enable +// shader 8d68a0e3561ff525 //horizontal pass stars +const float resXScale = 3.0; + uniform ivec4 uf_remappedVS[1]; uniform vec2 uf_windowSpaceToClipSpaceTransform; layout(location = 0) in uvec4 attrDataSem0; @@ -23,7 +32,7 @@ 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; } +float mul_nonIEEE(float a, float b){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));} void main() { vec4 R0f = vec4(0.0); @@ -62,11 +71,11 @@ R1f.y = backupReg1f; R1f.y *= 2.0; R1f.z = 0.0; R1f.w = 1.0; -R127f.y = intBitsToFloat(uf_remappedVS[0].x) * intBitsToFloat(0x3fb13a93) / resScale; +R127f.y = intBitsToFloat(uf_remappedVS[0].x) * intBitsToFloat(0x3fb13a93)/resXScale;//center pass PS0f = R127f.y; // 1 -PV1f.x = intBitsToFloat(uf_remappedVS[0].x) * intBitsToFloat(0x404ec4f0) / resScale; -R126f.y = intBitsToFloat(uf_remappedVS[0].x) * intBitsToFloat(0x40a275f7); +PV1f.x = intBitsToFloat(uf_remappedVS[0].x) * intBitsToFloat(0x404ec4f0)/resXScale; //wide pass +R126f.y = intBitsToFloat(uf_remappedVS[0].x) * intBitsToFloat(0x40a275f7) /resXScale; //nothing on first pass R3f.z = R2f.x + PS0f; R3f.w = R2f.x; R3f.x = R2f.y; @@ -96,3 +105,98 @@ passParameterSem2 = vec4(R2f.x, R2f.y, R2f.z, R2f.w); passParameterSem0 = vec4(R3f.x, R3f.y, R3f.z, R3f.w); // 0 } + +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; +layout(location = 1) out vec4 passParameterSem1; +layout(location = 2) out vec4 passParameterSem2; +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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));} +void main() +{ +vec4 R0f = vec4(0.0); +vec4 R1f = vec4(0.0); +vec4 R2f = vec4(0.0); +vec4 R3f = vec4(0.0); +vec4 R4f = vec4(0.0); +vec4 R127f = 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; +R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID)); +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 = R1f.x; +backupReg1f = R1f.y; +R1f.x = backupReg0f; +R1f.x *= 2.0; +R1f.y = backupReg1f; +R1f.y *= 2.0; +R1f.z = 0.0; +R1f.w = 1.0; +PS0f = intBitsToFloat(uf_remappedVS[0].y) * intBitsToFloat(0x3fb13a93)/resYScale; // center +// 1 +PV1f.x = intBitsToFloat(uf_remappedVS[0].y) * intBitsToFloat(0x404ec4f0)/resYScale; //wide +R127f.y = intBitsToFloat(uf_remappedVS[0].y) * intBitsToFloat(0x40a275f7)/resYScale; //Low res pass, not first +R2f.z = R2f.y + PS0f; +PV1f.z = R2f.z; +R2f.w = R2f.y; +PV1f.w = R2f.w; +R0f.y = R2f.y + -(PS0f); +PS1f = R0f.y; +// 2 +R0f.x = R2f.x; +R3f.y = R2f.y + -(PV1f.x); +R0f.z = PV1f.z; +R0f.w = PV1f.w; +R2f.z = R2f.y + PV1f.x; +PS0f = R2f.z; +// 3 +R3f.x = R2f.x; +R4f.y = R2f.y + -(R127f.y); +R3f.z = PS0f; +R3f.w = R2f.y; +R2f.z = R2f.y + R127f.y; +PS1f = R2f.z; +// 4 +R4f.xzw = vec3(R2f.x,PS1f,R2f.y); +// export +gl_Position = vec4(R1f.x, R1f.y, R1f.z, R1f.w); +// export +passParameterSem0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w); +// export +passParameterSem1 = vec4(R3f.x, R3f.y, R3f.z, R3f.w); +// export +passParameterSem2 = vec4(R4f.x, R4f.y, R4f.z, R4f.w); +// 0 +} diff --git a/Source/WindWakerHD/d9c81460d6984bb2_0000000000000000_vs.txt b/Source/WindWakerHD/d9c81460d6984bb2_0000000000000000_vs.txt index 10954a04..19f6b7e7 100644 --- a/Source/WindWakerHD/d9c81460d6984bb2_0000000000000000_vs.txt +++ b/Source/WindWakerHD/d9c81460d6984bb2_0000000000000000_vs.txt @@ -1,9 +1,10 @@ #version 420 #extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable #extension GL_ARB_shading_language_packing : enable // shader d9c81460d6984bb2 -//blur shadows step 1 -const float resScale = ($height/$gameHeight)*$internalRes; +//3step shadow n AO blur horiz +const float resYScale = (intBitsToFloat($width)/intBitsToFloat($gameWidth)); uniform ivec4 uf_remappedVS[5]; uniform vec2 uf_windowSpaceToClipSpaceTransform; layout(location = 0) in uvec4 attrDataSem0; @@ -21,7 +22,7 @@ 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; } +float mul_nonIEEE(float a, float b){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));} void main() { vec4 R0f = vec4(0.0); @@ -53,7 +54,7 @@ R127f.z = (0.0 > R1f.x)?1.0:0.0; R127f.z /= 2.0; R127f.w = 1.0; PV0f.w = R127f.w; -R126f.x = intBitsToFloat(uf_remappedVS[0].z) * intBitsToFloat(0x3fae8a72)/ resScale;// fix all... +R126f.x = intBitsToFloat(uf_remappedVS[0].z) * intBitsToFloat(0x3fae8a72)/resYScale; //horizontal PS0f = R126f.x; // 1 R0f.x = dot(vec4(R1f.x,R1f.y,R1f.z,PV0f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w))); diff --git a/Source/WindWakerHD/rules.txt b/Source/WindWakerHD/rules.txt index 086003eb..f650d5ca 100644 --- a/Source/WindWakerHD/rules.txt +++ b/Source/WindWakerHD/rules.txt @@ -5,263 +5,307 @@ path = "The Legend of Zelda: The Wind Waker HD/Graphics/Resolution" description = Changes the resolution of the game. version = 3 + [Preset] -name = 1920x1080 (Default) +name = 1920x1080 (HD Default) $width = 1920 $height = 1080 -$gameWidth = 1920 -$gameHeight = 1080 - -// Performance +$gameWidth= 1920 +$gameHeight= 1080 +$internalRes = 1 +$dither = 0.5 +$scaleShader = 1.0 [Preset] -name = 640x360 -$width = 640 -$height = 360 -$gameWidth = 1920 -$gameHeight = 1080 - -[Preset] -name = 854x480 -$width = 854 -$height = 480 -$gameWidth = 1920 -$gameHeight = 1080 - -[Preset] -name = 960x540 -$width = 960 -$height = 540 -$gameWidth = 1920 -$gameHeight = 1080 - -[Preset] -name = 1280x720 -$width = 1280 -$height = 720 -$gameWidth = 1920 -$gameHeight = 1080 - -// Quality +name = 1920x1080 (HD) x2 sub scaling +$width = 1920 +$height = 1080 +$gameWidth= 1920 +$gameHeight= 1080 +$internalRes = 2 +$dither = 0.65 +$scaleShader = 1.0 [Preset] name = 1600x900 $width = 1600 $height = 900 -$gameWidth = 1920 -$gameHeight = 1080 +$gameWidth= 1920 +$gameHeight= 1080 +$internalRes = 1 +$dither = 0.65 +$scaleShader = 1.0 + +[Preset] +name = 1600x900 x2 sub scaling +$width = 1600 +$height = 900 +$gameWidth= 1920 +$gameHeight= 1080 +$internalRes = 2 +$dither = 0.66 +$scaleShader = 0.75 [Preset] name = 2560x1440 $width = 2560 $height = 1440 -$gameWidth = 1920 -$gameHeight = 1080 +$gameWidth= 1920 +$gameHeight= 1080 +$internalRes = 1 +$dither = 0.66 +$scaleShader = 0.75 [Preset] -name = 2732x1536 -$width = 2732 -$height = 1536 -$gameWidth = 1920 -$gameHeight = 1080 +name = 2560x1440 x2 sub scaling +$width = 2560 +$height = 1440 +$gameWidth= 1920 +$gameHeight= 1080 +$internalRes = 2 +$dither = 0.75 +$scaleShader = 0.75 [Preset] name = 3200x1800 $width = 3200 $height = 1800 -$gameWidth = 1920 -$gameHeight = 1080 +$gameWidth= 1920 +$gameHeight= 1080 +$internalRes = 1 +$dither = 0.75 +$scaleShader = 0.75 [Preset] -name = 3840x2160 +name = 3200x1800 x2 sub scaling +$width = 3200 +$height = 1800 +$gameWidth= 1920 +$gameHeight= 1080 +$internalRes = 2 +$dither = 0.75 +$scaleShader = 0.5 + +[Preset] +name = 3840x2160 (4k - Native x2) $width = 3840 $height = 2160 -$gameWidth = 1920 -$gameHeight = 1080 +$gameWidth= 1920 +$gameHeight= 1080 +$internalRes = 1 +$dither = 0.76 +$scaleShader = 0.51 + +[Preset] +name = 3840x2160 (4k - Native x2) x2 sub scaling +$width = 3840 +$height = 2160 +$gameWidth= 1920 +$gameHeight= 1080 +$internalRes = 2 +$dither = 0.745 +$scaleShader = 0.51 [Preset] name = 5120x2880 $width = 5120 $height = 2880 -$gameWidth = 1920 -$gameHeight = 1080 +$gameWidth= 1920 +$gameHeight= 1080 +$internalRes = 1 +$dither = 0.95 +$scaleShader = 0.5 + +[Preset] +name = 5120x2880 x2 sub scaling +$width = 5120 +$height = 2880 +$gameWidth= 1920 +$gameHeight= 1080 +$internalRes = 2 +$dither = 0.95 +$scaleShader = 0.35 // Enthusiast [Preset] -name = 7680x4320 +name = 7680x4320 (8k - Native x3) $width = 7680 $height = 4320 -$gameWidth = 1920 -$gameHeight = 1080 +$gameWidth= 1920 +$gameHeight= 1080 +$internalRes = 1 +$dither = 1.5 +$scaleShader = 1.0 [Preset] name = 10240x5760 $width = 10240 $height = 5760 -$gameWidth = 1920 -$gameHeight = 1080 +$gameWidth= 1920 +$gameHeight= 1080 +$internalRes = 1 +$dither = 1.5 +$scaleShader = 1.0 [TextureRedefine] width = 1920 height = 1088 -#formats = 0x80e,0x019,0x001 +#formats = 0x80e,0x019,0x001 overwriteWidth = ($width/$gameWidth) * 1920 -overwriteHeight = ($height/$gameHeight) * 1088 +overwriteHeight = ($height/$gameHeight) * 1088 [TextureRedefine] width = 1920 height = 1080 #formatsExcluded = 0x41A overwriteWidth = ($width/$gameWidth) * 1920 -overwriteHeight = ($height/$gameHeight) * 1080 - - +overwriteHeight = ($height/$gameHeight) * 1080 [TextureRedefine] #Shadows width = 1024 height = 1024 -formats = 0x005 #,0x034,0x431,0x034 -overwriteWidth = ($height/$gameHeight) * 1024 -overwriteHeight = ($height/$gameHeight) * 1024 +formats = 0x005 #,0x034,0x431,0x034 +overwriteWidth = ($height/$gameHeight) * (1024*$internalRes) +overwriteHeight = ($height/$gameHeight) * (1024*$internalRes) [TextureRedefine] #Shadows width = 1024 height = 544 -#formats = 0x005,0x80e,0x019,0x001 #,0x034,0x431,0x034 -overwriteWidth = ($width/$gameWidth) * 1024 -overwriteHeight = ($height/$gameHeight) * 544 - - +#formats = 0x005,0x80e,0x019,0x001 #,0x034,0x431,0x034 +overwriteWidth = ($width/$gameWidth) * (1024*$internalRes) +overwriteHeight = ($height/$gameHeight) * (544*$internalRes) [TextureRedefine] width = 960 height = 540 -#formats = 0x816,0x806,0x019,0x01a -overwriteWidth = ($width/$gameWidth) * 960 -overwriteHeight = ($height/$gameHeight) * 540 - +#formats = 0x816,0x806,0x019,0x01a +overwriteWidth = ($width/$gameWidth) * (960*$internalRes) +overwriteHeight = ($height/$gameHeight) * (540*$internalRes) [TextureRedefine] width = 960 height = 544 -#formats = 0x816,0x806,0x019,0x01a -overwriteWidth = ($width/$gameWidth) * 960 -overwriteHeight = ($height/$gameHeight) * 544 +#formats = 0x816,0x806,0x019,0x01a +overwriteWidth = ($width/$gameWidth) * (960*$internalRes) +overwriteHeight = ($height/$gameHeight) * (544*$internalRes) [TextureRedefine] width = 864 height = 480 #formats = overwriteWidth = ($width/$gameWidth) * 864 -overwriteHeight = ($height/$gameHeight) * 480 - +overwriteHeight = ($height/$gameHeight) * 480 [TextureRedefine] width = 854 height = 480 #formats = overwriteWidth = ($width/$gameWidth) * 854 -overwriteHeight = ($height/$gameHeight) * 480 - - +overwriteHeight = ($height/$gameHeight) * 480 [TextureRedefine] width = 512 height = 512 formats = 0x806,0x019,0x01a -overwriteWidth = ($height/$gameHeight) * 512 -overwriteHeight = ($height/$gameHeight) * 512 +overwriteWidth = ($height/$gameHeight) * (512*$internalRes) +overwriteHeight = ($height/$gameHeight) * (512*$internalRes) [TextureRedefine] width = 480 height = 272 -#formats = 0x816 -overwriteWidth = ($width/$gameWidth) * 480 -overwriteHeight = ($height/$gameHeight) * 272 +#formats = 0x816 +overwriteWidth = ($width/$gameWidth) * (480*$internalRes) +overwriteHeight = ($height/$gameHeight) * (272*$internalRes) [TextureRedefine] width = 480 height = 270 -#formats = 0x816 -overwriteWidth = ($width/$gameWidth) * 480 -overwriteHeight = ($height/$gameHeight) * 270 +#formats = 0x816 +overwriteWidth = ($width/$gameWidth) * (480*$internalRes) +overwriteHeight = ($height/$gameHeight) * (270*$internalRes) #[TextureRedefine] #width = 360 #height = 346 ##formats = -#overwriteWidth = ($width/$gameWidth) * 360 -#overwriteHeight = ($height/$gameHeight) * 346 +#overwriteWidth = ($width/$gameWidth) * (360*$internalRes) +#overwriteHeight = ($height/$gameHeight) * (346*$internalRes) [TextureRedefine] width = 256 height = 144 -#formats = 0x816 +#formats = 0x816 #formatsExcluded = 0x01a -overwriteWidth = ($width/$gameWidth) * 256 -overwriteHeight = ($height/$gameHeight) * 144 +overwriteWidth = ($width/$gameWidth) * (256*$internalRes) +overwriteHeight = ($height/$gameHeight) * (144*$internalRes) [TextureRedefine] width = 256 height = 256 -formats = 0x816 -overwriteWidth = ($width/$gameWidth) * 256 -overwriteHeight = ($height/$gameHeight) * 256 +formats = 0x816 +overwriteWidth = ($width/$gameWidth) * (256*$internalRes) +overwriteHeight = ($height/$gameHeight) * (256*$internalRes) [TextureRedefine] width = 256 height = 144 -#formats = 0x816 -overwriteWidth = ($width/$gameWidth) * 256 -overwriteHeight = ($height/$gameHeight) * 144 - +#formats = 0x816 +overwriteWidth = ($width/$gameWidth) * (256*$internalRes) +overwriteHeight = ($height/$gameHeight) * (144*$internalRes) [TextureRedefine] width = 240 height = 135 -#formats = 0x816 -overwriteWidth = ($width/$gameWidth) * 240 -overwriteHeight = ($height/$gameHeight) * 135 +#formats = 0x816 +overwriteWidth = ($width/$gameWidth) * (240*$internalRes) +overwriteHeight = ($height/$gameHeight) * (135*$internalRes) [TextureRedefine] width = 128 height = 128 -formats = 0x816 -overwriteWidth = ($width/$gameWidth) * 128 -overwriteHeight = ($height/$gameHeight) * 128 +formats = 0x816 +overwriteWidth = ($width/$gameWidth) * (128*$internalRes) +overwriteHeight = ($height/$gameHeight) * (128*$internalRes) [TextureRedefine] width = 128 height = 80 -#formats = 0x816 -overwriteWidth = ($width/$gameWidth) * 128 -overwriteHeight = ($height/$gameHeight) * 80 +#formats = 0x816 +overwriteWidth = ($width/$gameWidth) * (128*$internalRes) +overwriteHeight = ($height/$gameHeight) * (80*$internalRes) [TextureRedefine] width = 120 height = 67 #formats = -overwriteWidth = ($width/$gameWidth) * 120 -overwriteHeight = ($height/$gameHeight) * 67 +overwriteWidth = ($width/$gameWidth) * (120*$internalRes) +overwriteHeight = ($height/$gameHeight) * (67*$internalRes) [TextureRedefine] width = 64 height = 64 -formats = 0x816 -overwriteWidth = ($height/$gameHeight) * 64 -overwriteHeight = ($height/$gameHeight) * 64 +formats = 0x816 +overwriteWidth = ($height/$gameHeight) * (64*$internalRes) +overwriteHeight = ($height/$gameHeight) * (64*$internalRes) [TextureRedefine] width = 64 height = 48 #formats = -overwriteWidth = ($width/$gameWidth) * 64 -overwriteHeight = ($height/$gameHeight) * 48 +overwriteWidth = ($width/$gameWidth) * (64*$internalRes) +overwriteHeight = ($height/$gameHeight) * (48*$internalRes) [TextureRedefine] width = 60 height = 33 #formats = -overwriteWidth = ($width/$gameWidth) * 60 -overwriteHeight = ($height/$gameHeight) * 33 \ No newline at end of file +overwriteWidth = ($width/$gameWidth) * (60*$internalRes) +overwriteHeight = ($height/$gameHeight) * (33*$internalRes) + +#[TextureRedefine] +#width = 4 +#height = 4 +##formats = +#overwriteWidth = ($width/$gameWidth) * (4*$internalRes) +#overwriteHeight = ($height/$gameHeight) * (4*$internalRes) \ No newline at end of file