From ccadb951b8fc8dbc09692e545b1afb2791332e95 Mon Sep 17 00:00:00 2001 From: getdls Date: Wed, 31 Oct 2018 18:51:13 +0100 Subject: [PATCH] Hyrule warriors 1.4.x Soruce + Contrasty --- .../572a6cfa3943923d_0000000000001e49_ps.txt | 253 +++++++++++++ .../6ea8b1aa69c0b6f7_0000000001e49249_ps.txt | 343 ++++++++++++++++++ .../HyruleWarriors_Contrasty/rules.txt | 94 +++++ .../492839ddc5f8f43e_0000000000000000_vs.txt | 269 ++++++++++++++ .../945d9672d0114248_0000000000000000_vs.txt | 293 +++++++++++++++ .../b3609db7d1363f6a_0000000000000000_vs.txt | 324 +++++++++++++++++ .../bbf87e1769bdcea3_0000000000000079_ps.txt | 101 ++++++ .../bfccd6ff47ca5ce8_000000000001fe49_ps.txt | 325 +++++++++++++++++ .../f9feadb214b483b7_0000000000000000_vs.txt | 320 ++++++++++++++++ Source/HyruleWarriors/rules.txt | 272 ++++++++++++++ 10 files changed, 2594 insertions(+) create mode 100644 Enhancements/HyruleWarriors_Contrasty/572a6cfa3943923d_0000000000001e49_ps.txt create mode 100644 Enhancements/HyruleWarriors_Contrasty/6ea8b1aa69c0b6f7_0000000001e49249_ps.txt create mode 100644 Enhancements/HyruleWarriors_Contrasty/rules.txt create mode 100644 Source/HyruleWarriors/492839ddc5f8f43e_0000000000000000_vs.txt create mode 100644 Source/HyruleWarriors/945d9672d0114248_0000000000000000_vs.txt create mode 100644 Source/HyruleWarriors/b3609db7d1363f6a_0000000000000000_vs.txt create mode 100644 Source/HyruleWarriors/bbf87e1769bdcea3_0000000000000079_ps.txt create mode 100644 Source/HyruleWarriors/bfccd6ff47ca5ce8_000000000001fe49_ps.txt create mode 100644 Source/HyruleWarriors/f9feadb214b483b7_0000000000000000_vs.txt create mode 100644 Source/HyruleWarriors/rules.txt diff --git a/Enhancements/HyruleWarriors_Contrasty/572a6cfa3943923d_0000000000001e49_ps.txt b/Enhancements/HyruleWarriors_Contrasty/572a6cfa3943923d_0000000000001e49_ps.txt new file mode 100644 index 00000000..e631ac88 --- /dev/null +++ b/Enhancements/HyruleWarriors_Contrasty/572a6cfa3943923d_0000000000001e49_ps.txt @@ -0,0 +1,253 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +// shader 572a6cfa3943923d +//ingame contrasty + +uniform vec2 uf_fragCoordScale; + +const float hazeFactor = 0.1; + +const float gamma = $gamma; // 1.0 is neutral Botw is already colour graded at this stage +const float exposure = $exposure; // 1.0 is neutral +const float vibrance = $vibrance; // 0.0 is neutral +const float crushContrast = $crushContrast; // 0.0 is neutral. Use small increments, loss of shadow detail +const float contrastCurve = $contrastCurve; + + +vec3 RGB_Lift = vec3($redShadows, $greenShadows , $blueSadows); // [0.000 to 2.000] Adjust shadows for Red, Green and Blue. +vec3 RGB_Gamma = vec3($redMid ,$greenMid, $blueMid); // [0.000 to 2.000] Adjust midtones for Red, Green and Blue +vec3 RGB_Gain = vec3($redHilight, $greenHilight, $blueHilight); // [0.000 to 2.000] Adjust highlights for Red, Green and Blue +//lumasharpen +const float sharp_mix = $sharp_mix; +const float sharp_strength = 2.0; +const float sharp_clamp = 0.75; +const float offset_bias = 1.0; +float Sigmoid (float x) { + + return 1.0 / (1.0 + (exp(-(x - 0.5) * 5.5))); +} + + +#define px (1.0/1920.0*uf_fragCoordScale.x) +#define py (1.0/1080.0*uf_fragCoordScale.y) +#define CoefLuma vec3(0.2126, 0.7152, 0.0722) + +float lumasharping(sampler2D tex, vec2 pos) { + vec4 colorInput = texture(tex, pos); + + vec3 ori = colorInput.rgb; + + // -- Combining the strength and luma multipliers -- + vec3 sharp_strength_luma = (CoefLuma * sharp_strength); + + // -- Gaussian filter -- + // [ .25, .50, .25] [ 1 , 2 , 1 ] + // [ .50, 1, .50] = [ 2 , 4 , 2 ] + // [ .25, .50, .25] [ 1 , 2 , 1 ] + + vec3 blur_ori = texture(tex, pos + vec2(px, -py) * 0.5 * offset_bias).rgb; // South East + blur_ori += texture(tex, pos + vec2(-px, -py) * 0.5 * offset_bias).rgb; // South West + blur_ori += texture(tex, pos + vec2(px, py) * 0.5 * offset_bias).rgb; // North East + blur_ori += texture(tex, pos + vec2(-px, py) * 0.5 * offset_bias).rgb; // North West + + blur_ori *= 0.25; // ( /= 4) Divide by the number of texture fetches + + // -- Calculate the sharpening -- + vec3 sharp = ori - blur_ori; //Subtracting the blurred image from the original image + + // -- Adjust strength of the sharpening and clamp it-- + vec4 sharp_strength_luma_clamp = vec4(sharp_strength_luma * (0.5 / sharp_clamp), 0.5); //Roll part of the clamp into the dot + + float sharp_luma = clamp((dot(vec4(sharp, 1.0), sharp_strength_luma_clamp)), 0.0, 1.0); //Calculate the luma, adjust the strength, scale up and clamp + sharp_luma = (sharp_clamp * 2.0) * sharp_luma - sharp_clamp; //scale down + + return sharp_luma; +} + +vec3 LiftGammaGainPass(vec3 colorInput) +{ //reshade BSD https://reshade.me , Alexkiri port + vec3 color = colorInput; + color = color * (1.5 - 0.5 * RGB_Lift) + 0.5 * RGB_Lift - 0.5; + color = clamp(color, 0.0, 1.0); + color *= RGB_Gain; + color = pow(color, 1.0 / RGB_Gamma); + return clamp(color, 0.0, 1.0); +} + +vec3 contrasty(vec3 colour){ + vec3 fColour = (colour.xyz); +//fColour = LiftGammaGainPass(fColour); + + 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); + fColour = LiftGammaGainPass(fColour); +// vibrance + fColour = mix(fColour, mix(fColour, lightness, -vibrance), sat); + fColour = max(vec3(0.0), fColour - vec3(crushContrast)); + return fColour; +} + + +uniform ivec4 uf_remappedPS[5]; +layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf4e13800 res 1280x720x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 0 +layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x1abf4800 res 1x1x1 dim 1 tm: 2 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 0 +layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x1abdd800 res 160x90x1 dim 1 tm: 4 format 041a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 2 2 border: 0 +layout(location = 0) in vec4 passParameterSem128; +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){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 R123f = vec4(0.0); +vec4 R125f = 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; +vec3 cubeMapSTM; +int cubeMapFaceId; +R0f = passParameterSem128; +R1f.xyzw = (texture(textureUnitPS0, R0f.xy).xyzw); +R2f.xyz = (texture(textureUnitPS2, R0f.xy).xyz); +// 0 +R0f.y = intBitsToFloat(0x3f000000); +R0f.x = (texture(textureUnitPS1, R0f.yy).x); +// 0 +R127f.x = mul_nonIEEE(R1f.x, R0f.x); +PV0f.x = R127f.x; +PV0f.y = mul_nonIEEE(R1f.w, R0f.x); +R126f.z = mul_nonIEEE(R1f.z, R0f.x); +PV0f.z = R126f.z; +R127f.w = mul_nonIEEE(R1f.y, R0f.x); +PV0f.w = R127f.w; +// 1 +PV1f.x = PV0f.x * intBitsToFloat(0x3e6147ae); +R127f.z = PV0f.z * intBitsToFloat(0x3e6147ae); +PV1f.z = R127f.z; +PV1f.w = PV0f.w * intBitsToFloat(0x3e6147ae); +R0f.w = mul_nonIEEE(PV0f.y, intBitsToFloat(uf_remappedPS[0].x)); +PS1f = R0f.w; +// 2 +PV0f.x = PV1f.w + intBitsToFloat(0x3e99999a); +PV0f.y = PV1f.x + intBitsToFloat(0x3e99999a); +PV0f.z = PV1f.x + intBitsToFloat(0x3cf5c28f); +PV0f.w = PV1f.z + intBitsToFloat(0x3e99999a); +R125f.z = PV1f.w + intBitsToFloat(0x3cf5c28f); +PS0f = R125f.z; +// 3 +backupReg0f = R127f.x; +R126f.x = (mul_nonIEEE(R126f.z,PV0f.w) + intBitsToFloat(0x3d75c28f)); +PV1f.y = R127f.z + intBitsToFloat(0x3cf5c28f); +R123f.z = (mul_nonIEEE(R127f.x,PV0f.y) + intBitsToFloat(0x3d75c28f)); +PV1f.z = R123f.z; +R126f.w = (mul_nonIEEE(R127f.w,PV0f.x) + intBitsToFloat(0x3d75c28f)); +R127f.x = (mul_nonIEEE(backupReg0f,PV0f.z) + intBitsToFloat(0x3b03126f)); +PS1f = R127f.x; +// 4 +backupReg0f = R126f.z; +backupReg1f = R127f.w; +R126f.z = (mul_nonIEEE(backupReg0f,PV1f.y) + intBitsToFloat(0x3b03126f)); +R127f.w = (mul_nonIEEE(backupReg1f,R125f.z) + intBitsToFloat(0x3b03126f)); +PS0f = 1.0 / PV1f.z; +// 5 +PV1f.z = R127f.x * PS0f; +PS1f = 1.0 / R126f.w; +// 6 +PV0f.y = R127f.w * PS1f; +PV0f.w = PV1f.z + -(intBitsToFloat(0x3d086595)); +PS0f = 1.0 / R126f.x; +// 7 +PV1f.x = R126f.z * PS0f; +PV1f.y = mul_nonIEEE(PV0f.w, intBitsToFloat(uf_remappedPS[0].x)); +PV1f.z = PV0f.y + -(intBitsToFloat(0x3d086595)); +// 8 +R126f.x = (mul_nonIEEE(R2f.x,intBitsToFloat(uf_remappedPS[1].x)) + PV1f.y); +PV0f.y = PV1f.x + -(intBitsToFloat(0x3d086595)); +PV0f.w = mul_nonIEEE(PV1f.z, intBitsToFloat(uf_remappedPS[0].x)); +// 9 +R123f.x = (mul_nonIEEE(R2f.y,intBitsToFloat(uf_remappedPS[1].x)) + PV0f.w); +PV1f.x = R123f.x; +PV1f.z = mul_nonIEEE(PV0f.y, intBitsToFloat(uf_remappedPS[0].x)); +// 10 +backupReg0f = R126f.x; +R126f.x = mul_nonIEEE(backupReg0f, intBitsToFloat(uf_remappedPS[2].x)); +R127f.y = mul_nonIEEE(PV1f.x, intBitsToFloat(uf_remappedPS[2].y)); +R123f.w = (mul_nonIEEE(R2f.z,intBitsToFloat(uf_remappedPS[1].x)) + PV1f.z); +PV0f.w = R123f.w; +// 11 +R126f.z = mul_nonIEEE(PV0f.w, intBitsToFloat(uf_remappedPS[2].z)); +PV1f.z = R126f.z; +// 12 +tempf.x = dot(vec4(R126f.x,R127f.y,PV1f.z,-0.0),vec4(intBitsToFloat(0x3e990abb),intBitsToFloat(0x3f162c13),intBitsToFloat(0x3dea747e),0.0)); +PV0f.x = tempf.x; +PV0f.y = tempf.x; +PV0f.z = tempf.x; +PV0f.w = tempf.x; +R125f.z = tempf.x; +// 13 +PV1f.x = R127f.y + -(PV0f.x); +PV1f.y = R126f.x + -(PV0f.x); +PV1f.w = R126f.z + -(PV0f.x); +// 14 +R126f.x = (mul_nonIEEE(PV1f.w,intBitsToFloat(uf_remappedPS[3].z)) + R125f.z); +R127f.y = (mul_nonIEEE(PV1f.x,intBitsToFloat(uf_remappedPS[3].y)) + R125f.z); +R123f.z = (mul_nonIEEE(PV1f.y,intBitsToFloat(uf_remappedPS[3].x)) + R125f.z); +PV0f.z = R123f.z; +// 15 +tempResultf = log2(PV0f.z); +if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; +PS1f = tempResultf; +// 16 +R125f.z = mul_nonIEEE(PS1f, intBitsToFloat(uf_remappedPS[4].x)); +tempResultf = log2(R127f.y); +if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; +PS0f = tempResultf; +// 17 +R127f.w = mul_nonIEEE(PS0f, intBitsToFloat(uf_remappedPS[4].x)); +tempResultf = log2(R126f.x); +if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; +PS1f = tempResultf; +// 18 +R126f.x = mul_nonIEEE(PS1f, intBitsToFloat(uf_remappedPS[4].x)); +PS0f = exp2(R125f.z); +// 19 +R0f.x = PS0f; +PS1f = exp2(R127f.w); +// 20 +R0f.y = PS1f; +PS0f = exp2(R126f.x); +// 21 +R0f.z = PS0f; +// export + +R0f.xyz = contrasty(R0f.xyz); +R0f.xyz = mix(R0f.xyz, smoothstep(0.0, 1.0, R0f.xyz), contrastCurve); +float smask = lumasharping(textureUnitPS0, passParameterSem128.xy); +vec3 temp3 = R0f.xyz; +R0f.xyz = mix(R0f.xyz, (temp3.xyz += (smask)), sharp_mix); + +passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w); +} diff --git a/Enhancements/HyruleWarriors_Contrasty/6ea8b1aa69c0b6f7_0000000001e49249_ps.txt b/Enhancements/HyruleWarriors_Contrasty/6ea8b1aa69c0b6f7_0000000001e49249_ps.txt new file mode 100644 index 00000000..fa6dcb40 --- /dev/null +++ b/Enhancements/HyruleWarriors_Contrasty/6ea8b1aa69c0b6f7_0000000001e49249_ps.txt @@ -0,0 +1,343 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +// shader 6ea8b1aa69c0b6f7 +//cutscene contrasty + +uniform vec2 uf_fragCoordScale; + +const float hazeFactor = 0.1; + +const float gamma = $gamma; // 1.0 is neutral Botw is already colour graded at this stage +const float exposure = $exposure; // 1.0 is neutral +const float vibrance = $vibrance; // 0.0 is neutral +const float crushContrast = $crushContrast; // 0.0 is neutral. Use small increments, loss of shadow detail +const float contrastCurve = $contrastCurve; + + +vec3 RGB_Lift = vec3($redShadows, $greenShadows , $blueSadows); // [0.000 to 2.000] Adjust shadows for Red, Green and Blue. +vec3 RGB_Gamma = vec3($redMid ,$greenMid, $blueMid); // [0.000 to 2.000] Adjust midtones for Red, Green and Blue +vec3 RGB_Gain = vec3($redHilight, $greenHilight, $blueHilight); // [0.000 to 2.000] Adjust highlights for Red, Green and Blue +//lumasharpen +const float sharp_mix = $sharp_mix; +const float sharp_strength = 2.0; +const float sharp_clamp = 0.75; +const float offset_bias = 1.0; +float Sigmoid (float x) { + + return 1.0 / (1.0 + (exp(-(x - 0.5) * 5.5))); +} + + +#define px (1.0/1920.0*uf_fragCoordScale.x) +#define py (1.0/1080.0*uf_fragCoordScale.y) +#define CoefLuma vec3(0.2126, 0.7152, 0.0722) + +float lumasharping(sampler2D tex, vec2 pos) { + vec4 colorInput = texture(tex, pos); + + vec3 ori = colorInput.rgb; + + // -- Combining the strength and luma multipliers -- + vec3 sharp_strength_luma = (CoefLuma * sharp_strength); + + // -- Gaussian filter -- + // [ .25, .50, .25] [ 1 , 2 , 1 ] + // [ .50, 1, .50] = [ 2 , 4 , 2 ] + // [ .25, .50, .25] [ 1 , 2 , 1 ] + + vec3 blur_ori = texture(tex, pos + vec2(px, -py) * 0.5 * offset_bias).rgb; // South East + blur_ori += texture(tex, pos + vec2(-px, -py) * 0.5 * offset_bias).rgb; // South West + blur_ori += texture(tex, pos + vec2(px, py) * 0.5 * offset_bias).rgb; // North East + blur_ori += texture(tex, pos + vec2(-px, py) * 0.5 * offset_bias).rgb; // North West + + blur_ori *= 0.25; // ( /= 4) Divide by the number of texture fetches + + // -- Calculate the sharpening -- + vec3 sharp = ori - blur_ori; //Subtracting the blurred image from the original image + + // -- Adjust strength of the sharpening and clamp it-- + vec4 sharp_strength_luma_clamp = vec4(sharp_strength_luma * (0.5 / sharp_clamp), 0.5); //Roll part of the clamp into the dot + + float sharp_luma = clamp((dot(vec4(sharp, 1.0), sharp_strength_luma_clamp)), 0.0, 1.0); //Calculate the luma, adjust the strength, scale up and clamp + sharp_luma = (sharp_clamp * 2.0) * sharp_luma - sharp_clamp; //scale down + + return sharp_luma; +} + +vec3 LiftGammaGainPass(vec3 colorInput) +{ //reshade BSD https://reshade.me , Alexkiri port + vec3 color = colorInput; + color = color * (1.5 - 0.5 * RGB_Lift) + 0.5 * RGB_Lift - 0.5; + color = clamp(color, 0.0, 1.0); + color *= RGB_Gain; + color = pow(color, 1.0 / RGB_Gamma); + return clamp(color, 0.0, 1.0); +} + +vec3 contrasty(vec3 colour){ + vec3 fColour = (colour.xyz); + //fColour = LiftGammaGainPass(fColour); + + 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); + fColour = LiftGammaGainPass(fColour); + // vibrance + fColour = mix(fColour, mix(fColour, lightness, -vibrance), sat); + fColour = max(vec3(0.0), fColour - vec3(crushContrast)); + return fColour; +} + + +uniform ivec4 uf_remappedPS[5]; +layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf4e13800 res 1280x720x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 0 +layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x1b163800 res 512x1x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 2 2 border: 0 +layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0x10ea5000 res 1280x720x1 dim 1 tm: 4 format 0011 compSel: 0 0 0 0 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 2 2 2 border: 0 +layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0x1aff9000 res 320x180x1 dim 1 tm: 4 format 0820 compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 2 border: 0 +layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0x1b072000 res 320x180x1 dim 1 tm: 4 format 0820 compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 2 2 2 border: 0 +layout(binding = 6) uniform sampler2D textureUnitPS6;// Tex6 addr 0x1b17b000 res 1x1x1 dim 1 tm: 2 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 2 2 2 border: 0 +layout(binding = 7) uniform sampler2D textureUnitPS7;// Tex7 addr 0x1abdd800 res 160x90x1 dim 1 tm: 4 format 041a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler7 ClampX/Y/Z: 2 2 2 border: 0 +layout(location = 0) in vec4 passParameterSem128; +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){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));} +void main() +{ +ivec4 R0i = ivec4(0); +ivec4 R1i = ivec4(0); +ivec4 R2i = ivec4(0); +ivec4 R3i = ivec4(0); +ivec4 R4i = ivec4(0); +ivec4 R5i = ivec4(0); +ivec4 R122i = ivec4(0); +ivec4 R123i = ivec4(0); +ivec4 R125i = ivec4(0); +ivec4 R126i = ivec4(0); +ivec4 R127i = ivec4(0); +int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i; +ivec4 PV0i = ivec4(0), PV1i = ivec4(0); +int PS0i = 0, PS1i = 0; +ivec4 tempi = ivec4(0); +float tempResultf; +int tempResulti; +ivec4 ARi = ivec4(0); +bool predResult = true; +vec3 cubeMapSTM; +int cubeMapFaceId; +R0i = floatBitsToInt(passParameterSem128); +R1i.x = floatBitsToInt(texture(textureUnitPS3, intBitsToFloat(R0i.xy)).x); +R4i.xyzw = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R0i.xy)).xyzw); +R3i.xyzw = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R0i.xy)).xyzw); +R2i.xyzw = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.xy)).xyzw); +R5i.xyz = floatBitsToInt(texture(textureUnitPS7, intBitsToFloat(R0i.xy)).xyz); +// 0 +R0i.x = 0x3f000000; +R1i.y = 0x3f000000; +R0i.w = floatBitsToInt(intBitsToFloat(R4i.w) + -(0.5)); +R1i.x = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R1i.xy)).w); +R0i.x = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R0i.xx)).x); +// 0 +PV0i.x = floatBitsToInt(intBitsToFloat(R1i.x) + -(0.5)); +R127i.y = ((0.5 > intBitsToFloat(R1i.x))?int(0xFFFFFFFF):int(0x0)); +PV0i.y = R127i.y; +PV0i.z = floatBitsToInt(max(intBitsToFloat(R0i.w), -(intBitsToFloat(R0i.w)))); +PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) * 2.0); +// 1 +R123i.x = ((PV0i.y == 0)?(R2i.x):(R3i.x)); +PV1i.x = R123i.x; +PV1i.y = floatBitsToInt(-(intBitsToFloat(PV0i.z)) + 1.0); +PV1i.y = clampFI32(PV1i.y); +R123i.z = ((PV0i.y == 0)?(R2i.y):(R3i.y)); +PV1i.z = R123i.z; +PV1i.w = floatBitsToInt(max(intBitsToFloat(PV0i.x), -(intBitsToFloat(PV0i.x)))); +PV1i.w = floatBitsToInt(intBitsToFloat(PV1i.w) * 2.0); +R122i.x = ((PV0i.y == 0)?(R2i.z):(R3i.z)); +PS1i = R122i.x; +// 2 +PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.y) + intBitsToFloat(0x3727c5ac)); +R126i.y = floatBitsToInt(-(intBitsToFloat(R3i.y)) + intBitsToFloat(PV1i.z)); +PV0i.z = floatBitsToInt(-(intBitsToFloat(PV1i.w)) + 1.0); +PV0i.z = clampFI32(PV0i.z); +R127i.w = floatBitsToInt(-(intBitsToFloat(R3i.x)) + intBitsToFloat(PV1i.x)); +R125i.y = floatBitsToInt(-(intBitsToFloat(R3i.z)) + intBitsToFloat(PS1i)); +PS0i = R125i.y; +// 3 +R123i.x = ((R127i.y == 0)?(R2i.w):(R3i.w)); +PV1i.x = R123i.x; +PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.z) + intBitsToFloat(0x3727c5ac)); +PS1i = floatBitsToInt(1.0 / intBitsToFloat(PV0i.x)); +// 4 +R127i.x = floatBitsToInt(-(intBitsToFloat(R3i.w)) + intBitsToFloat(PV1i.x)); +PV0i.z = floatBitsToInt(intBitsToFloat(PS1i) + -(1.0)); +PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.y)); +// 5 +PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.z) + 4.0); +PV1i.w = floatBitsToInt(intBitsToFloat(PS0i) + -(1.0)); +// 6 +PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.y) + -(4.0)); +PV0i.z = floatBitsToInt(intBitsToFloat(PV1i.w) + 4.0); +// 7 +PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.z) + -(4.0)); +R126i.w = floatBitsToInt(intBitsToFloat(PV0i.x) * 0.25); +R126i.w = clampFI32(R126i.w); +// 8 +PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.y) * 0.25); +PV0i.x = clampFI32(PV0i.x); +// 9 +backupReg0i = R127i.x; +backupReg1i = R126i.y; +backupReg2i = R127i.w; +R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(PV0i.x)) + intBitsToFloat(R3i.w))); +PV1i.x = R127i.x; +R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.y),intBitsToFloat(PV0i.x)) + intBitsToFloat(R3i.z))); +PV1i.y = R126i.y; +R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg1i),intBitsToFloat(PV0i.x)) + intBitsToFloat(R3i.y))); +PV1i.z = R127i.z; +R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg2i),intBitsToFloat(PV0i.x)) + intBitsToFloat(R3i.x))); +PV1i.w = R127i.w; +// 10 +PV0i.x = floatBitsToInt(intBitsToFloat(R4i.z) + -(intBitsToFloat(PV1i.y))); +PV0i.y = floatBitsToInt(intBitsToFloat(R4i.y) + -(intBitsToFloat(PV1i.z))); +PV0i.z = floatBitsToInt(intBitsToFloat(R4i.x) + -(intBitsToFloat(PV1i.w))); +PV0i.w = floatBitsToInt(intBitsToFloat(R4i.w) + -(intBitsToFloat(PV1i.x))); +// 11 +R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.w),intBitsToFloat(R126i.w)) + intBitsToFloat(R127i.x))); +PV1i.x = R123i.x; +R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(R126i.w)) + intBitsToFloat(R127i.z))); +PV1i.y = R123i.y; +R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R126i.w)) + intBitsToFloat(R127i.w))); +PV1i.z = R123i.z; +R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R126i.w)) + intBitsToFloat(R126i.y))); +PV1i.w = R123i.w; +// 12 +R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(R0i.x))); +PV0i.x = R127i.x; +PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(R0i.x))); +R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R0i.x))); +PV0i.z = R126i.z; +R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(R0i.x))); +PV0i.w = R127i.w; +// 13 +PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.x) * intBitsToFloat(0x3e6147ae)); +R127i.z = floatBitsToInt(intBitsToFloat(PV0i.z) * intBitsToFloat(0x3e6147ae)); +PV1i.z = R127i.z; +PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * intBitsToFloat(0x3e6147ae)); +R0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(uf_remappedPS[0].x))); +PS1i = R0i.w; +// 14 +PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(0x3e99999a)); +PV0i.y = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(0x3e99999a)); +PV0i.z = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(0x3cf5c28f)); +PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(0x3e99999a)); +R125i.z = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(0x3cf5c28f)); +PS0i = R125i.z; +// 15 +backupReg0i = R127i.x; +R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),intBitsToFloat(PV0i.w)) + intBitsToFloat(0x3d75c28f))); +PV1i.y = floatBitsToInt(intBitsToFloat(R127i.z) + intBitsToFloat(0x3cf5c28f)); +R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(PV0i.y)) + intBitsToFloat(0x3d75c28f))); +PV1i.z = R123i.z; +R126i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),intBitsToFloat(PV0i.x)) + intBitsToFloat(0x3d75c28f))); +R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(PV0i.z)) + intBitsToFloat(0x3b03126f))); +PS1i = R127i.x; +// 16 +backupReg0i = R126i.z; +backupReg1i = R127i.w; +R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(PV1i.y)) + intBitsToFloat(0x3b03126f))); +R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg1i),intBitsToFloat(R125i.z)) + intBitsToFloat(0x3b03126f))); +PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.z)); +// 17 +PV1i.z = floatBitsToInt(intBitsToFloat(R127i.x) * intBitsToFloat(PS0i)); +PS1i = floatBitsToInt(1.0 / intBitsToFloat(R126i.w)); +// 18 +PV0i.y = floatBitsToInt(intBitsToFloat(R127i.w) * intBitsToFloat(PS1i)); +PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.z) + -(intBitsToFloat(0x3d086595))); +PS0i = floatBitsToInt(1.0 / intBitsToFloat(R126i.x)); +// 19 +PV1i.x = floatBitsToInt(intBitsToFloat(R126i.z) * intBitsToFloat(PS0i)); +PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(uf_remappedPS[0].x))); +PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.y) + -(intBitsToFloat(0x3d086595))); +// 20 +R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.x),intBitsToFloat(uf_remappedPS[1].x)) + intBitsToFloat(PV1i.y))); +PV0i.y = floatBitsToInt(intBitsToFloat(PV1i.x) + -(intBitsToFloat(0x3d086595))); +PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(uf_remappedPS[0].x))); +// 21 +R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(uf_remappedPS[1].x)) + intBitsToFloat(PV0i.w))); +PV1i.x = R123i.x; +PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(uf_remappedPS[0].x))); +// 22 +backupReg0i = R126i.x; +R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(uf_remappedPS[2].x))); +R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(uf_remappedPS[2].y))); +R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.z),intBitsToFloat(uf_remappedPS[1].x)) + intBitsToFloat(PV1i.z))); +PV0i.w = R123i.w; +// 23 +R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(uf_remappedPS[2].z))); +PV1i.z = R126i.z; +// 24 +tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R126i.x),intBitsToFloat(R126i.y),intBitsToFloat(PV1i.z),-0.0),vec4(intBitsToFloat(0x3e990abb),intBitsToFloat(0x3f162c13),intBitsToFloat(0x3dea747e),0.0))); +PV0i.x = tempi.x; +PV0i.y = tempi.x; +PV0i.z = tempi.x; +PV0i.w = tempi.x; +R125i.z = tempi.x; +// 25 +PV1i.x = floatBitsToInt(intBitsToFloat(R126i.y) + -(intBitsToFloat(PV0i.x))); +PV1i.y = floatBitsToInt(intBitsToFloat(R126i.x) + -(intBitsToFloat(PV0i.x))); +PV1i.w = floatBitsToInt(intBitsToFloat(R126i.z) + -(intBitsToFloat(PV0i.x))); +// 26 +R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.w),intBitsToFloat(uf_remappedPS[3].z)) + intBitsToFloat(R125i.z))); +R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),intBitsToFloat(uf_remappedPS[3].y)) + intBitsToFloat(R125i.z))); +R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(uf_remappedPS[3].x)) + intBitsToFloat(R125i.z))); +PV0i.z = R123i.z; +// 27 +tempResultf = log2(intBitsToFloat(PV0i.z)); +if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; +PS1i = floatBitsToInt(tempResultf); +// 28 +R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS1i), intBitsToFloat(uf_remappedPS[4].x))); +tempResultf = log2(intBitsToFloat(R126i.y)); +if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; +PS0i = floatBitsToInt(tempResultf); +// 29 +R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS0i), intBitsToFloat(uf_remappedPS[4].x))); +tempResultf = log2(intBitsToFloat(R126i.x)); +if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; +PS1i = floatBitsToInt(tempResultf); +// 30 +R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS1i), intBitsToFloat(uf_remappedPS[4].x))); +PS0i = floatBitsToInt(exp2(intBitsToFloat(R125i.z))); +// 31 +R0i.x = PS0i; +PS1i = floatBitsToInt(exp2(intBitsToFloat(R127i.w))); +// 32 +R0i.y = PS1i; +R4i.w = floatBitsToInt(exp2(intBitsToFloat(R126i.x))); +PS0i = R4i.w; +// 33 +R0i.z = R4i.w; + + +// export +passPixelColor0 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), intBitsToFloat(R0i.w)); + +passPixelColor0.xyz = contrasty(passPixelColor0.xyz); +passPixelColor0.xyz = mix(passPixelColor0.xyz, smoothstep(0.0, 1.0, passPixelColor0.xyz), contrastCurve); +float smask = lumasharping(textureUnitPS0, passParameterSem128.xy); +vec3 temp3 = passPixelColor0.xyz; +passPixelColor0.xyz = mix(passPixelColor0.xyz, (temp3.xyz += (smask)), sharp_mix); + +} diff --git a/Enhancements/HyruleWarriors_Contrasty/rules.txt b/Enhancements/HyruleWarriors_Contrasty/rules.txt new file mode 100644 index 00000000..ad66e84c --- /dev/null +++ b/Enhancements/HyruleWarriors_Contrasty/rules.txt @@ -0,0 +1,94 @@ +[Definition] +titleIds = 000500001017D800,000500001017D900,000500001017CD00 +name = Contrasty +path = "Hyrule warriors/Graphics/Contrasty " +description = Colour and contrast. +version = 3 + +[Preset] +name = default +$redShadows = 1.0 +$greenShadows = 1.0 +$blueSadows = 1.0 +$redMid = 1.0 +$greenMid = 1.0 +$blueMid = 1.0 +$redHilight = 1.0 +$greenHilight =1.0 +$blueHilight = 1.0 + +$contrastCurve = 0.0 +$hazeFactor = 1.0 +$bloom = 1.0 +$gamma = 1.0 +$exposure = 1.0 +$vibrance = 0.0 +$crushContrast = 0.0 +$bleach = 1.0 +$sharp_mix = 0.0 + +[Preset] +name = High Contrasty +$redShadows = 1.02 +$greenShadows = 1.01 +$blueSadows = 1.01 +$redMid = 0.98 +$greenMid = 0.98 +$blueMid = 0.96 +$redHilight = 1.02 +$greenHilight = 1.01 +$blueHilight = 1.0 + +$contrastCurve = 0.45 +$hazeFactor = 0.25 +$bloom = 0.85 +$gamma = 1.0 +$exposure = 1.5 +$vibrance = 0.35 +$crushContrast = 0.00 +$bleach = 0.85 +$sharp_mix = 0.35 + +[Preset] +name = Colourfull +$redShadows = 0.999 +$greenShadows = 0.99 +$blueSadows = 0.99 +$redMid = 1.0 +$greenMid = 0.99 +$blueMid = 0.99 +$redHilight = 0.99 +$greenHilight =0.99 +$blueHilight = 0.99 + +$contrastCurve = 0.1 +$hazeFactor = 1.0 +$bloom = 0.85 +$gamma = 1.05 +$exposure = 1.1 +$vibrance = 0.5 +$crushContrast = 0.00 +$bleach = 0.85 +$sharp_mix = 0.3 + +[Preset] +name = Neutral Contrasty +$redShadows = 1.01 +$greenShadows = 1.01 +$blueSadows = 1.01 +$redMid = 1.0 +$greenMid = 1.0 +$blueMid = 1.0 +$redHilight = 0.99 +$greenHilight =0.99 +$blueHilight = 0.99 + +$contrastCurve = 0.25 +$hazeFactor = 1.0 +$bloom = 0.85 +$gamma = 1.075 +$exposure = 1.25 +$vibrance = 0.15 +$crushContrast = 0.00 +$bleach = 0.85 +$sharp_mix = 0.25 \ No newline at end of file diff --git a/Source/HyruleWarriors/492839ddc5f8f43e_0000000000000000_vs.txt b/Source/HyruleWarriors/492839ddc5f8f43e_0000000000000000_vs.txt new file mode 100644 index 00000000..8a8ea35c --- /dev/null +++ b/Source/HyruleWarriors/492839ddc5f8f43e_0000000000000000_vs.txt @@ -0,0 +1,269 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_packing : enable +// shader 492839ddc5f8f43e //3rd level dof +const float resScale = ($height/$gameHeight)*$internalRes; +uniform ivec4 uf_uniformRegisterVS[256]; +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 passParameterSem128; +layout(location = 1) out vec4 passParameterSem129; +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() +{ +ivec4 Ri[128]; +Ri[0] = ivec4(0); +Ri[1] = ivec4(0); +Ri[2] = ivec4(0); +Ri[3] = ivec4(0); +Ri[4] = ivec4(0); +Ri[5] = ivec4(0); +Ri[6] = ivec4(0); +Ri[7] = ivec4(0); +Ri[8] = ivec4(0); +Ri[9] = ivec4(0); +Ri[10] = ivec4(0); +Ri[11] = ivec4(0); +Ri[12] = ivec4(0); +Ri[13] = ivec4(0); +Ri[14] = ivec4(0); +Ri[15] = ivec4(0); +Ri[16] = ivec4(0); +Ri[17] = ivec4(0); +Ri[18] = ivec4(0); +Ri[19] = ivec4(0); +Ri[20] = ivec4(0); +Ri[21] = ivec4(0); +Ri[22] = ivec4(0); +Ri[23] = ivec4(0); +Ri[24] = ivec4(0); +Ri[25] = ivec4(0); +Ri[26] = ivec4(0); +Ri[27] = ivec4(0); +Ri[28] = ivec4(0); +Ri[29] = ivec4(0); +Ri[30] = ivec4(0); +Ri[31] = ivec4(0); +Ri[32] = ivec4(0); +Ri[33] = ivec4(0); +Ri[34] = ivec4(0); +Ri[35] = ivec4(0); +Ri[36] = ivec4(0); +Ri[37] = ivec4(0); +Ri[38] = ivec4(0); +Ri[39] = ivec4(0); +Ri[40] = ivec4(0); +Ri[41] = ivec4(0); +Ri[42] = ivec4(0); +Ri[43] = ivec4(0); +Ri[44] = ivec4(0); +Ri[45] = ivec4(0); +Ri[46] = ivec4(0); +Ri[47] = ivec4(0); +Ri[48] = ivec4(0); +Ri[49] = ivec4(0); +Ri[50] = ivec4(0); +Ri[51] = ivec4(0); +Ri[52] = ivec4(0); +Ri[53] = ivec4(0); +Ri[54] = ivec4(0); +Ri[55] = ivec4(0); +Ri[56] = ivec4(0); +Ri[57] = ivec4(0); +Ri[58] = ivec4(0); +Ri[59] = ivec4(0); +Ri[60] = ivec4(0); +Ri[61] = ivec4(0); +Ri[62] = ivec4(0); +Ri[63] = ivec4(0); +Ri[64] = ivec4(0); +Ri[65] = ivec4(0); +Ri[66] = ivec4(0); +Ri[67] = ivec4(0); +Ri[68] = ivec4(0); +Ri[69] = ivec4(0); +Ri[70] = ivec4(0); +Ri[71] = ivec4(0); +Ri[72] = ivec4(0); +Ri[73] = ivec4(0); +Ri[74] = ivec4(0); +Ri[75] = ivec4(0); +Ri[76] = ivec4(0); +Ri[77] = ivec4(0); +Ri[78] = ivec4(0); +Ri[79] = ivec4(0); +Ri[80] = ivec4(0); +Ri[81] = ivec4(0); +Ri[82] = ivec4(0); +Ri[83] = ivec4(0); +Ri[84] = ivec4(0); +Ri[85] = ivec4(0); +Ri[86] = ivec4(0); +Ri[87] = ivec4(0); +Ri[88] = ivec4(0); +Ri[89] = ivec4(0); +Ri[90] = ivec4(0); +Ri[91] = ivec4(0); +Ri[92] = ivec4(0); +Ri[93] = ivec4(0); +Ri[94] = ivec4(0); +Ri[95] = ivec4(0); +Ri[96] = ivec4(0); +Ri[97] = ivec4(0); +Ri[98] = ivec4(0); +Ri[99] = ivec4(0); +Ri[100] = ivec4(0); +Ri[101] = ivec4(0); +Ri[102] = ivec4(0); +Ri[103] = ivec4(0); +Ri[104] = ivec4(0); +Ri[105] = ivec4(0); +Ri[106] = ivec4(0); +Ri[107] = ivec4(0); +Ri[108] = ivec4(0); +Ri[109] = ivec4(0); +Ri[110] = ivec4(0); +Ri[111] = ivec4(0); +Ri[112] = ivec4(0); +Ri[113] = ivec4(0); +Ri[114] = ivec4(0); +Ri[115] = ivec4(0); +Ri[116] = ivec4(0); +Ri[117] = ivec4(0); +Ri[118] = ivec4(0); +Ri[119] = ivec4(0); +Ri[120] = ivec4(0); +Ri[121] = ivec4(0); +Ri[122] = ivec4(0); +Ri[123] = ivec4(0); +Ri[124] = ivec4(0); +Ri[125] = ivec4(0); +Ri[126] = ivec4(0); +Ri[127] = ivec4(0); +uvec4 attrDecoder; +int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i; +ivec4 PV0i = ivec4(0), PV1i = ivec4(0); +int PS0i = 0, PS1i = 0; +ivec4 tempi = ivec4(0); +float tempResultf; +int tempResulti; +ivec4 ARi = ivec4(0); +bool predResult = true; +bool activeMaskStack[1]; +bool activeMaskStackC[2]; +activeMaskStackC[0] = false; +activeMaskStack[0] = true; +activeMaskStackC[0] = true; +activeMaskStackC[1] = true; +vec3 cubeMapSTM; +int cubeMapFaceId; +Ri[0] = ivec4(gl_VertexID, 0, 0, gl_InstanceID); +attrDecoder = attrDataSem0; +attrDecoder = (attrDecoder>>24)|((attrDecoder>>8)&0xFF00)|((attrDecoder<<8)&0xFF0000)|((attrDecoder<<24)); +Ri[1] = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), int(attrDecoder.w)); +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; +Ri[2] = ivec4(int(attrDecoder.x), int(attrDecoder.y), floatBitsToInt(0.0), floatBitsToInt(1.0)); +if( activeMaskStackC[1] == true ) { +// 0 +Ri[3].y = 0; +PV0i.z = floatBitsToInt(intBitsToFloat(Ri[1].y) + intBitsToFloat(uf_uniformRegisterVS[0].y)); +PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) * 2.0); +PV0i.w = floatBitsToInt(intBitsToFloat(Ri[1].x) + intBitsToFloat(uf_uniformRegisterVS[0].x)); +PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * 2.0); +// 1 +PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.z) + -(1.0)); +Ri[1].x = floatBitsToInt(intBitsToFloat(PV0i.w) + -(1.0)); +PS1i = Ri[1].x; +// 2 +Ri[1].y = floatBitsToInt(intBitsToFloat(PV1i.x) * -(1.0)); +// 3 +Ri[8].xyz = ivec3(Ri[1].x,Ri[1].y,Ri[1].z); +Ri[8].w = Ri[1].w; +} +while( activeMaskStackC[1] == true ) +{ +if( activeMaskStackC[1] == true ) { +// 0 +Ri[0].z = (0x00000002 > Ri[3].y)?int(0xFFFFFFFF):int(0x0); +// 1 +predResult = (Ri[0].z != 0); +if( predResult == false ) break; +} +if( activeMaskStackC[1] == true ) { +// 0 +backupReg0i = Ri[3].y; +backupReg0i = Ri[3].y; +Ri[1].x = Ri[3].y + 0x00000003; +Ri[3].y = backupReg0i + int(1); +Ri[127].z = floatBitsToInt(float(backupReg0i)); +PS0i = Ri[127].z; +// 1 +tempResultf = intBitsToFloat(PS0i); +tempResultf = floor(tempResultf); +tempResultf = clamp(tempResultf, -256.0, 255.0); +ARi.x = int(tempResultf); +PV1i.x = floatBitsToInt(tempResultf); +// 2 +PV0i.x = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].y)/resScale); +PV0i.y = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].x)/resScale); +PV0i.z = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].w)/resScale); +PV0i.w = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].z)/resScale); +// 3 +PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(uf_uniformRegisterVS[1].y))); +PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(uf_uniformRegisterVS[1].x))); +PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(uf_uniformRegisterVS[1].x))); +PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(uf_uniformRegisterVS[1].y))); +// 4 +Ri[0].xyz = floatBitsToInt(vec3(intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.w),intBitsToFloat(PV1i.z)) + vec3(intBitsToFloat(uf_uniformRegisterVS[1].z)/resScale,intBitsToFloat(uf_uniformRegisterVS[1].w)/resScale,intBitsToFloat(uf_uniformRegisterVS[1].z)/resScale)); +Ri[0].w = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(uf_uniformRegisterVS[1].w)/resScale); +// 5 +tempResulti = Ri[1].x; +tempResulti = clamp(tempResulti, -256, 255); +ARi.x = tempResulti; +PV1i.x = tempResulti; +// 6 +Ri[6+ARi.x].x = Ri[0].x; +Ri[6+ARi.x].y = Ri[0].y; +Ri[6+ARi.x].z = Ri[0].z; +Ri[6+ARi.x].w = Ri[0].w; +} +} +if( activeMaskStackC[1] == true ) { +// 0 +Ri[0].xyz = ivec3(Ri[8].x,Ri[8].y,Ri[8].z); +Ri[0].w = Ri[8].w; +// 1 +Ri[1].xyz = ivec3(Ri[9].x,Ri[9].y,Ri[9].z); +Ri[1].w = Ri[9].w; +// 2 +Ri[2].xyz = ivec3(Ri[10].x,Ri[10].y,Ri[10].z); +Ri[2].w = Ri[10].w; +} +// export +gl_Position = vec4(intBitsToFloat(Ri[0].x), intBitsToFloat(Ri[0].y), intBitsToFloat(Ri[0].z), intBitsToFloat(Ri[0].w)); +// export +passParameterSem128 = vec4(intBitsToFloat(Ri[1].x), intBitsToFloat(Ri[1].y), intBitsToFloat(Ri[1].z), intBitsToFloat(Ri[1].w)); +// export +passParameterSem129 = vec4(intBitsToFloat(Ri[2].x), intBitsToFloat(Ri[2].y), intBitsToFloat(Ri[2].z), intBitsToFloat(Ri[2].w)); +if( activeMaskStackC[1] == true ) { +// 0 +} +} diff --git a/Source/HyruleWarriors/945d9672d0114248_0000000000000000_vs.txt b/Source/HyruleWarriors/945d9672d0114248_0000000000000000_vs.txt new file mode 100644 index 00000000..5195f65a --- /dev/null +++ b/Source/HyruleWarriors/945d9672d0114248_0000000000000000_vs.txt @@ -0,0 +1,293 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_packing : enable +// shader 945d9672d0114248 +const float resScale = ($height/$gameHeight); +uniform ivec4 uf_uniformRegisterVS[256]; +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 = 1) out vec4 passParameterSem129; +layout(location = 2) out vec4 passParameterSem130; +layout(location = 3) out vec4 passParameterSem131; +layout(location = 0) out vec4 passParameterSem128; +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() +{ +ivec4 Ri[128]; +Ri[0] = ivec4(0); +Ri[1] = ivec4(0); +Ri[2] = ivec4(0); +Ri[3] = ivec4(0); +Ri[4] = ivec4(0); +Ri[5] = ivec4(0); +Ri[6] = ivec4(0); +Ri[7] = ivec4(0); +Ri[8] = ivec4(0); +Ri[9] = ivec4(0); +Ri[10] = ivec4(0); +Ri[11] = ivec4(0); +Ri[12] = ivec4(0); +Ri[13] = ivec4(0); +Ri[14] = ivec4(0); +Ri[15] = ivec4(0); +Ri[16] = ivec4(0); +Ri[17] = ivec4(0); +Ri[18] = ivec4(0); +Ri[19] = ivec4(0); +Ri[20] = ivec4(0); +Ri[21] = ivec4(0); +Ri[22] = ivec4(0); +Ri[23] = ivec4(0); +Ri[24] = ivec4(0); +Ri[25] = ivec4(0); +Ri[26] = ivec4(0); +Ri[27] = ivec4(0); +Ri[28] = ivec4(0); +Ri[29] = ivec4(0); +Ri[30] = ivec4(0); +Ri[31] = ivec4(0); +Ri[32] = ivec4(0); +Ri[33] = ivec4(0); +Ri[34] = ivec4(0); +Ri[35] = ivec4(0); +Ri[36] = ivec4(0); +Ri[37] = ivec4(0); +Ri[38] = ivec4(0); +Ri[39] = ivec4(0); +Ri[40] = ivec4(0); +Ri[41] = ivec4(0); +Ri[42] = ivec4(0); +Ri[43] = ivec4(0); +Ri[44] = ivec4(0); +Ri[45] = ivec4(0); +Ri[46] = ivec4(0); +Ri[47] = ivec4(0); +Ri[48] = ivec4(0); +Ri[49] = ivec4(0); +Ri[50] = ivec4(0); +Ri[51] = ivec4(0); +Ri[52] = ivec4(0); +Ri[53] = ivec4(0); +Ri[54] = ivec4(0); +Ri[55] = ivec4(0); +Ri[56] = ivec4(0); +Ri[57] = ivec4(0); +Ri[58] = ivec4(0); +Ri[59] = ivec4(0); +Ri[60] = ivec4(0); +Ri[61] = ivec4(0); +Ri[62] = ivec4(0); +Ri[63] = ivec4(0); +Ri[64] = ivec4(0); +Ri[65] = ivec4(0); +Ri[66] = ivec4(0); +Ri[67] = ivec4(0); +Ri[68] = ivec4(0); +Ri[69] = ivec4(0); +Ri[70] = ivec4(0); +Ri[71] = ivec4(0); +Ri[72] = ivec4(0); +Ri[73] = ivec4(0); +Ri[74] = ivec4(0); +Ri[75] = ivec4(0); +Ri[76] = ivec4(0); +Ri[77] = ivec4(0); +Ri[78] = ivec4(0); +Ri[79] = ivec4(0); +Ri[80] = ivec4(0); +Ri[81] = ivec4(0); +Ri[82] = ivec4(0); +Ri[83] = ivec4(0); +Ri[84] = ivec4(0); +Ri[85] = ivec4(0); +Ri[86] = ivec4(0); +Ri[87] = ivec4(0); +Ri[88] = ivec4(0); +Ri[89] = ivec4(0); +Ri[90] = ivec4(0); +Ri[91] = ivec4(0); +Ri[92] = ivec4(0); +Ri[93] = ivec4(0); +Ri[94] = ivec4(0); +Ri[95] = ivec4(0); +Ri[96] = ivec4(0); +Ri[97] = ivec4(0); +Ri[98] = ivec4(0); +Ri[99] = ivec4(0); +Ri[100] = ivec4(0); +Ri[101] = ivec4(0); +Ri[102] = ivec4(0); +Ri[103] = ivec4(0); +Ri[104] = ivec4(0); +Ri[105] = ivec4(0); +Ri[106] = ivec4(0); +Ri[107] = ivec4(0); +Ri[108] = ivec4(0); +Ri[109] = ivec4(0); +Ri[110] = ivec4(0); +Ri[111] = ivec4(0); +Ri[112] = ivec4(0); +Ri[113] = ivec4(0); +Ri[114] = ivec4(0); +Ri[115] = ivec4(0); +Ri[116] = ivec4(0); +Ri[117] = ivec4(0); +Ri[118] = ivec4(0); +Ri[119] = ivec4(0); +Ri[120] = ivec4(0); +Ri[121] = ivec4(0); +Ri[122] = ivec4(0); +Ri[123] = ivec4(0); +Ri[124] = ivec4(0); +Ri[125] = ivec4(0); +Ri[126] = ivec4(0); +Ri[127] = ivec4(0); +uvec4 attrDecoder; +int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i; +ivec4 PV0i = ivec4(0), PV1i = ivec4(0); +int PS0i = 0, PS1i = 0; +ivec4 tempi = ivec4(0); +float tempResultf; +int tempResulti; +ivec4 ARi = ivec4(0); +bool predResult = true; +bool activeMaskStack[1]; +bool activeMaskStackC[2]; +activeMaskStackC[0] = false; +activeMaskStack[0] = true; +activeMaskStackC[0] = true; +activeMaskStackC[1] = true; +vec3 cubeMapSTM; +int cubeMapFaceId; +Ri[0] = ivec4(gl_VertexID, 0, 0, gl_InstanceID); +attrDecoder = attrDataSem0; +attrDecoder = (attrDecoder>>24)|((attrDecoder>>8)&0xFF00)|((attrDecoder<<8)&0xFF0000)|((attrDecoder<<24)); +Ri[1] = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), int(attrDecoder.w)); +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; +Ri[2] = ivec4(int(attrDecoder.x), int(attrDecoder.y), floatBitsToInt(0.0), floatBitsToInt(1.0)); +if( activeMaskStackC[1] == true ) { +// 0 +Ri[3].y = 0; +PV0i.z = floatBitsToInt(intBitsToFloat(Ri[1].y) + intBitsToFloat(uf_uniformRegisterVS[0].y)/resScale); +PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) * 2.0); +PV0i.w = floatBitsToInt(intBitsToFloat(Ri[1].x) + intBitsToFloat(uf_uniformRegisterVS[0].x)/resScale); +PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * 2.0); +// 1 +PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.z) + -(1.0)); +Ri[1].x = floatBitsToInt(intBitsToFloat(PV0i.w) + -(1.0)); +PS1i = Ri[1].x; +// 2 +Ri[1].y = floatBitsToInt(intBitsToFloat(PV1i.x) * -(1.0)); +// 3 +Ri[10].xyz = ivec3(Ri[1].x,Ri[1].y,Ri[1].z); +Ri[10].w = Ri[1].w; +} +while( activeMaskStackC[1] == true ) +{ +if( activeMaskStackC[1] == true ) { +// 0 +Ri[0].z = (0x00000003 > Ri[3].y)?int(0xFFFFFFFF):int(0x0); +// 1 +predResult = (Ri[0].z != 0); +if( predResult == false ) break; +} +if( activeMaskStackC[1] == true ) { +// 0 +backupReg0i = Ri[3].y; +backupReg0i = Ri[3].y; +Ri[1].x = Ri[3].y + 0x00000005; +Ri[3].y = backupReg0i + int(1); +Ri[127].z = floatBitsToInt(float(backupReg0i)); +PS0i = Ri[127].z; +// 1 +tempResultf = intBitsToFloat(PS0i); +tempResultf = floor(tempResultf); +tempResultf = clamp(tempResultf, -256.0, 255.0); +ARi.x = int(tempResultf); +PV1i.x = floatBitsToInt(tempResultf); +// 2 +PV0i.x = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].y)/resScale); +PV0i.y = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].x)/resScale); +PV0i.z = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].w)/resScale); +PV0i.w = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].z)/resScale); +// 3 +PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(uf_uniformRegisterVS[1].y))); +PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(uf_uniformRegisterVS[1].x))); +PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(uf_uniformRegisterVS[1].x))); +PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(uf_uniformRegisterVS[1].y))); +// 4 +Ri[0].xyz = floatBitsToInt(vec3(intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.w),intBitsToFloat(PV1i.z)) + vec3(intBitsToFloat(uf_uniformRegisterVS[1].z)/resScale,intBitsToFloat(uf_uniformRegisterVS[1].w)/resScale,intBitsToFloat(uf_uniformRegisterVS[1].z)/resScale)); +Ri[0].w = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(uf_uniformRegisterVS[1].w)/resScale); +// 5 +tempResulti = Ri[1].x; +tempResulti = clamp(tempResulti, -256, 255); +ARi.x = tempResulti; +PV1i.x = tempResulti; +// 6 +Ri[7+ARi.x].x = Ri[0].x; +Ri[7+ARi.x].y = Ri[0].y; +Ri[7+ARi.x].z = Ri[0].z; +Ri[7+ARi.x].w = Ri[0].w; +} +} +if( activeMaskStackC[1] == true ) { +// 0 +PV0i.x = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[5].y)); +PV0i.y = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[5].x)); +// 1 +PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(uf_uniformRegisterVS[1].y))); +PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(uf_uniformRegisterVS[1].x))); +// 2 +Ri[4].x = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(uf_uniformRegisterVS[1].z)); +Ri[4].y = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(uf_uniformRegisterVS[1].w)); +// 3 +Ri[11].x = Ri[4].x; +Ri[11].y = Ri[4].y; +// 4 +Ri[2].xyz = ivec3(Ri[10].x,Ri[10].y,Ri[10].z); +Ri[2].w = Ri[10].w; +// 5 +Ri[0].xyz = ivec3(Ri[12].x,Ri[12].y,Ri[12].z); +Ri[0].w = Ri[12].w; +// 6 +Ri[7].xyz = ivec3(Ri[0].x,Ri[0].y,Ri[0].z); +Ri[7].w = Ri[0].w; +// 7 +Ri[1].xyz = ivec3(Ri[13].x,Ri[13].y,Ri[13].z); +Ri[1].w = Ri[13].w; +// 8 +Ri[3].xyz = ivec3(Ri[14].x,Ri[14].y,Ri[14].z); +Ri[3].w = Ri[14].w; +} +// export +gl_Position = vec4(intBitsToFloat(Ri[2].x), intBitsToFloat(Ri[2].y), intBitsToFloat(Ri[2].z), intBitsToFloat(Ri[2].w)); +// export +passParameterSem129 = vec4(intBitsToFloat(Ri[0].x), intBitsToFloat(Ri[0].y), intBitsToFloat(Ri[0].z), intBitsToFloat(Ri[0].w)); +// export +passParameterSem130 = vec4(intBitsToFloat(Ri[1].x), intBitsToFloat(Ri[1].y), intBitsToFloat(Ri[1].z), intBitsToFloat(Ri[1].w)); +// export +passParameterSem131 = vec4(intBitsToFloat(Ri[3].x), intBitsToFloat(Ri[3].y), intBitsToFloat(Ri[3].z), intBitsToFloat(Ri[3].w)); +// export +passParameterSem128 = vec4(intBitsToFloat(Ri[4].x), intBitsToFloat(Ri[4].y), intBitsToFloat(Ri[4].z), intBitsToFloat(Ri[4].z)); +if( activeMaskStackC[1] == true ) { +// 0 +} +} diff --git a/Source/HyruleWarriors/b3609db7d1363f6a_0000000000000000_vs.txt b/Source/HyruleWarriors/b3609db7d1363f6a_0000000000000000_vs.txt new file mode 100644 index 00000000..bb45889e --- /dev/null +++ b/Source/HyruleWarriors/b3609db7d1363f6a_0000000000000000_vs.txt @@ -0,0 +1,324 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_packing : enable +// shader b3609db7d1363f6a +//cutscene dof +const float resScale = ($height/$gameHeight)*$internalRes; +uniform ivec4 uf_uniformRegisterVS[256]; +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 passParameterSem128; +layout(location = 1) out vec4 passParameterSem129; +layout(location = 2) out vec4 passParameterSem130; +layout(location = 3) out vec4 passParameterSem131; +layout(location = 4) out vec4 passParameterSem132; +layout(location = 5) out vec4 passParameterSem133; +layout(location = 6) out vec4 passParameterSem134; +layout(location = 7) out vec4 passParameterSem135; +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() +{ +ivec4 Ri[128]; +Ri[0] = ivec4(0); +Ri[1] = ivec4(0); +Ri[2] = ivec4(0); +Ri[3] = ivec4(0); +Ri[4] = ivec4(0); +Ri[5] = ivec4(0); +Ri[6] = ivec4(0); +Ri[7] = ivec4(0); +Ri[8] = ivec4(0); +Ri[9] = ivec4(0); +Ri[10] = ivec4(0); +Ri[11] = ivec4(0); +Ri[12] = ivec4(0); +Ri[13] = ivec4(0); +Ri[14] = ivec4(0); +Ri[15] = ivec4(0); +Ri[16] = ivec4(0); +Ri[17] = ivec4(0); +Ri[18] = ivec4(0); +Ri[19] = ivec4(0); +Ri[20] = ivec4(0); +Ri[21] = ivec4(0); +Ri[22] = ivec4(0); +Ri[23] = ivec4(0); +Ri[24] = ivec4(0); +Ri[25] = ivec4(0); +Ri[26] = ivec4(0); +Ri[27] = ivec4(0); +Ri[28] = ivec4(0); +Ri[29] = ivec4(0); +Ri[30] = ivec4(0); +Ri[31] = ivec4(0); +Ri[32] = ivec4(0); +Ri[33] = ivec4(0); +Ri[34] = ivec4(0); +Ri[35] = ivec4(0); +Ri[36] = ivec4(0); +Ri[37] = ivec4(0); +Ri[38] = ivec4(0); +Ri[39] = ivec4(0); +Ri[40] = ivec4(0); +Ri[41] = ivec4(0); +Ri[42] = ivec4(0); +Ri[43] = ivec4(0); +Ri[44] = ivec4(0); +Ri[45] = ivec4(0); +Ri[46] = ivec4(0); +Ri[47] = ivec4(0); +Ri[48] = ivec4(0); +Ri[49] = ivec4(0); +Ri[50] = ivec4(0); +Ri[51] = ivec4(0); +Ri[52] = ivec4(0); +Ri[53] = ivec4(0); +Ri[54] = ivec4(0); +Ri[55] = ivec4(0); +Ri[56] = ivec4(0); +Ri[57] = ivec4(0); +Ri[58] = ivec4(0); +Ri[59] = ivec4(0); +Ri[60] = ivec4(0); +Ri[61] = ivec4(0); +Ri[62] = ivec4(0); +Ri[63] = ivec4(0); +Ri[64] = ivec4(0); +Ri[65] = ivec4(0); +Ri[66] = ivec4(0); +Ri[67] = ivec4(0); +Ri[68] = ivec4(0); +Ri[69] = ivec4(0); +Ri[70] = ivec4(0); +Ri[71] = ivec4(0); +Ri[72] = ivec4(0); +Ri[73] = ivec4(0); +Ri[74] = ivec4(0); +Ri[75] = ivec4(0); +Ri[76] = ivec4(0); +Ri[77] = ivec4(0); +Ri[78] = ivec4(0); +Ri[79] = ivec4(0); +Ri[80] = ivec4(0); +Ri[81] = ivec4(0); +Ri[82] = ivec4(0); +Ri[83] = ivec4(0); +Ri[84] = ivec4(0); +Ri[85] = ivec4(0); +Ri[86] = ivec4(0); +Ri[87] = ivec4(0); +Ri[88] = ivec4(0); +Ri[89] = ivec4(0); +Ri[90] = ivec4(0); +Ri[91] = ivec4(0); +Ri[92] = ivec4(0); +Ri[93] = ivec4(0); +Ri[94] = ivec4(0); +Ri[95] = ivec4(0); +Ri[96] = ivec4(0); +Ri[97] = ivec4(0); +Ri[98] = ivec4(0); +Ri[99] = ivec4(0); +Ri[100] = ivec4(0); +Ri[101] = ivec4(0); +Ri[102] = ivec4(0); +Ri[103] = ivec4(0); +Ri[104] = ivec4(0); +Ri[105] = ivec4(0); +Ri[106] = ivec4(0); +Ri[107] = ivec4(0); +Ri[108] = ivec4(0); +Ri[109] = ivec4(0); +Ri[110] = ivec4(0); +Ri[111] = ivec4(0); +Ri[112] = ivec4(0); +Ri[113] = ivec4(0); +Ri[114] = ivec4(0); +Ri[115] = ivec4(0); +Ri[116] = ivec4(0); +Ri[117] = ivec4(0); +Ri[118] = ivec4(0); +Ri[119] = ivec4(0); +Ri[120] = ivec4(0); +Ri[121] = ivec4(0); +Ri[122] = ivec4(0); +Ri[123] = ivec4(0); +Ri[124] = ivec4(0); +Ri[125] = ivec4(0); +Ri[126] = ivec4(0); +Ri[127] = ivec4(0); +uvec4 attrDecoder; +int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i; +ivec4 PV0i = ivec4(0), PV1i = ivec4(0); +int PS0i = 0, PS1i = 0; +ivec4 tempi = ivec4(0); +float tempResultf; +int tempResulti; +ivec4 ARi = ivec4(0); +bool predResult = true; +bool activeMaskStack[1]; +bool activeMaskStackC[2]; +activeMaskStackC[0] = false; +activeMaskStack[0] = true; +activeMaskStackC[0] = true; +activeMaskStackC[1] = true; +vec3 cubeMapSTM; +int cubeMapFaceId; +Ri[0] = ivec4(gl_VertexID, 0, 0, gl_InstanceID); +attrDecoder = attrDataSem0; +attrDecoder = (attrDecoder>>24)|((attrDecoder>>8)&0xFF00)|((attrDecoder<<8)&0xFF0000)|((attrDecoder<<24)); +Ri[1] = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), int(attrDecoder.w)); +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; +Ri[2] = ivec4(int(attrDecoder.x), int(attrDecoder.y), floatBitsToInt(0.0), floatBitsToInt(1.0)); +if( activeMaskStackC[1] == true ) { +// 0 +Ri[3].y = 0; +PV0i.z = floatBitsToInt(intBitsToFloat(Ri[1].y) + intBitsToFloat(uf_uniformRegisterVS[0].y)/resScale); +PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) * 2.0); +PV0i.w = floatBitsToInt(intBitsToFloat(Ri[1].x) + intBitsToFloat(uf_uniformRegisterVS[0].x)/resScale); +PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * 2.0); +// 1 +PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.z) + -(1.0)); +Ri[1].x = floatBitsToInt(intBitsToFloat(PV0i.w) + -(1.0)); +PS1i = Ri[1].x; +// 2 +Ri[1].y = floatBitsToInt(intBitsToFloat(PV1i.x) * -(1.0)); +// 3 +Ri[20].xyz = ivec3(Ri[1].x,Ri[1].y,Ri[1].z); +Ri[20].w = Ri[1].w; +} +while( activeMaskStackC[1] == true ) +{ +if( activeMaskStackC[1] == true ) { +// 0 +Ri[0].z = (0x00000008 > Ri[3].y)?int(0xFFFFFFFF):int(0x0); +// 1 +predResult = (Ri[0].z != 0); +if( predResult == false ) break; +} +if( activeMaskStackC[1] == true ) { +// 0 +backupReg0i = Ri[3].y; +backupReg0i = Ri[3].y; +Ri[1].x = Ri[3].y + 0x00000009; +Ri[3].y = backupReg0i + int(1); +Ri[127].z = floatBitsToInt(float(backupReg0i)); +PS0i = Ri[127].z; +// 1 +tempResultf = intBitsToFloat(PS0i); +tempResultf = floor(tempResultf); +tempResultf = clamp(tempResultf, -256.0, 255.0); +ARi.x = int(tempResultf); +PV1i.x = floatBitsToInt(tempResultf); +// 2 +PV0i.x = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].y)/resScale); +PV0i.y = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].x)/resScale); +PV0i.z = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].w)/resScale); +PV0i.w = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].z)/resScale); +// 3 +PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(uf_uniformRegisterVS[1].y))); +PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(uf_uniformRegisterVS[1].x))); +PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(uf_uniformRegisterVS[1].x))); +PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(uf_uniformRegisterVS[1].y))); +// 4 +Ri[0].xyz = floatBitsToInt(vec3(intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.w),intBitsToFloat(PV1i.z)) + vec3(intBitsToFloat(uf_uniformRegisterVS[1].z)/resScale,intBitsToFloat(uf_uniformRegisterVS[1].w)/resScale,intBitsToFloat(uf_uniformRegisterVS[1].z)/resScale)); +Ri[0].w = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(uf_uniformRegisterVS[1].w)/resScale); +// 5 +tempResulti = Ri[1].x; +tempResulti = clamp(tempResulti, -256, 255); +ARi.x = tempResulti; +PV1i.x = tempResulti; +// 6 +Ri[12+ARi.x].x = Ri[0].x; +Ri[12+ARi.x].y = Ri[0].y; +Ri[12+ARi.x].z = Ri[0].z; +Ri[12+ARi.x].w = Ri[0].w; +} +} +if( activeMaskStackC[1] == true ) { +// 0 +Ri[0].xyz = ivec3(Ri[20].x,Ri[20].y,Ri[20].z); +Ri[0].w = Ri[20].w; +// 1 +Ri[1].xyz = ivec3(Ri[21].x,Ri[21].y,Ri[21].z); +Ri[1].w = Ri[21].w; +// 2 +Ri[12].xyz = ivec3(Ri[1].x,Ri[1].y,Ri[1].z); +Ri[12].w = Ri[1].w; +// 3 +Ri[2].xyz = ivec3(Ri[22].x,Ri[22].y,Ri[22].z); +Ri[2].w = Ri[22].w; +// 4 +Ri[13].xyz = ivec3(Ri[2].x,Ri[2].y,Ri[2].z); +Ri[13].w = Ri[2].w; +// 5 +Ri[3].xyz = ivec3(Ri[23].x,Ri[23].y,Ri[23].z); +Ri[3].w = Ri[23].w; +// 6 +Ri[14].xyz = ivec3(Ri[3].x,Ri[3].y,Ri[3].z); +Ri[14].w = Ri[3].w; +// 7 +Ri[4].xyz = ivec3(Ri[24].x,Ri[24].y,Ri[24].z); +Ri[4].w = Ri[24].w; +// 8 +Ri[15].xyz = ivec3(Ri[4].x,Ri[4].y,Ri[4].z); +Ri[15].w = Ri[4].w; +// 9 +Ri[5].xyz = ivec3(Ri[25].x,Ri[25].y,Ri[25].z); +Ri[5].w = Ri[25].w; +// 10 +Ri[16].xyz = ivec3(Ri[5].x,Ri[5].y,Ri[5].z); +Ri[16].w = Ri[5].w; +// 11 +Ri[6].xyz = ivec3(Ri[26].x,Ri[26].y,Ri[26].z); +Ri[6].w = Ri[26].w; +// 12 +Ri[17].xyz = ivec3(Ri[6].x,Ri[6].y,Ri[6].z); +Ri[17].w = Ri[6].w; +// 13 +Ri[7].xyz = ivec3(Ri[27].x,Ri[27].y,Ri[27].z); +Ri[7].w = Ri[27].w; +// 14 +Ri[8].xyz = ivec3(Ri[28].x,Ri[28].y,Ri[28].z); +Ri[8].w = Ri[28].w; +} +// export +gl_Position = vec4(intBitsToFloat(Ri[0].x), intBitsToFloat(Ri[0].y), intBitsToFloat(Ri[0].z), intBitsToFloat(Ri[0].w)); +// export +passParameterSem128 = vec4(intBitsToFloat(Ri[1].x), intBitsToFloat(Ri[1].y), intBitsToFloat(Ri[1].z), intBitsToFloat(Ri[1].w)); +// export +passParameterSem129 = vec4(intBitsToFloat(Ri[2].x), intBitsToFloat(Ri[2].y), intBitsToFloat(Ri[2].z), intBitsToFloat(Ri[2].w)); +// export +passParameterSem130 = vec4(intBitsToFloat(Ri[3].x), intBitsToFloat(Ri[3].y), intBitsToFloat(Ri[3].z), intBitsToFloat(Ri[3].w)); +// export +passParameterSem131 = vec4(intBitsToFloat(Ri[4].x), intBitsToFloat(Ri[4].y), intBitsToFloat(Ri[4].z), intBitsToFloat(Ri[4].w)); +// export +passParameterSem132 = vec4(intBitsToFloat(Ri[5].x), intBitsToFloat(Ri[5].y), intBitsToFloat(Ri[5].z), intBitsToFloat(Ri[5].w)); +// export +passParameterSem133 = vec4(intBitsToFloat(Ri[6].x), intBitsToFloat(Ri[6].y), intBitsToFloat(Ri[6].z), intBitsToFloat(Ri[6].w)); +// export +passParameterSem134 = vec4(intBitsToFloat(Ri[7].x), intBitsToFloat(Ri[7].y), intBitsToFloat(Ri[7].z), intBitsToFloat(Ri[7].w)); +// export +passParameterSem135 = vec4(intBitsToFloat(Ri[8].x), intBitsToFloat(Ri[8].y), intBitsToFloat(Ri[8].z), intBitsToFloat(Ri[8].w)); +if( activeMaskStackC[1] == true ) { +// 0 +} +} diff --git a/Source/HyruleWarriors/bbf87e1769bdcea3_0000000000000079_ps.txt b/Source/HyruleWarriors/bbf87e1769bdcea3_0000000000000079_ps.txt new file mode 100644 index 00000000..91165c84 --- /dev/null +++ b/Source/HyruleWarriors/bbf87e1769bdcea3_0000000000000079_ps.txt @@ -0,0 +1,101 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +// shader bbf87e1769bdcea3 //foreground blur? + +const float dither = $dither ; +const float scaleShader = $scaleShader; +const float scaleBlur = ($scaleBlur*$internalRes); + +const int sampleScale = 2; +const float lightBloom = 0.95; + +uniform ivec4 uf_remappedPS[1]; +layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x1aa0b000 res 320x180x1 dim 1 tm: 4 format 0820 compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 0 +layout(location = 0) in vec4 passParameterSem128; +layout(location = 0) out vec4 passPixelColor0; +uniform vec2 uf_fragCoordScale; + +// FabriceNeyret2 CC, single shader gaussian by intermediate MIPmap level. www.shadertoy.com/view/ltScRG +const int samples = 8 * sampleScale, //8 or 4 balances xy position +LOD = 2, // gaussian done on MIPmap at scale LOD +sLOD = 1 << LOD; // tile size = 2^LOD +const float sigma = float(samples) * .25; + +float gaussian(vec2 i) { + return exp(-.5* dot(i /= sigma, i)) / (6.28 * sigma*sigma); +} + +vec4 blur(sampler2D sp, vec2 U, vec2 scale) { + vec4 O = vec4(0); + int s = samples / sLOD; + + for (int i = 0; i < s*s; i++) { + vec2 d = vec2(i%s, i / s)*float(sLOD) - float(samples) / 2.; + O += gaussian(d) * textureLod(sp, U + scale * d, float(LOD)); + } + + return O / O.a; +} + + +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); +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 = passParameterSem128; + +vec2 coord = passParameterSem128.xy*textureSize(textureUnitPS0, 0); // +vec2 ps = vec2(1.0) / textureSize(textureUnitPS0, 0); +vec2 uv = coord * ps; + +R0f.xyz = blur(textureUnitPS0, R0f.xy, ps*scaleBlur).xyz; //1.0 4k //.66 2k //0.075 1k //.51 4kx2 + +//R0f.xyzw = (texture(textureUnitPS0, R0f.xy).xyzw); +// 0 +PV0f.x = R0f.z * intBitsToFloat(0x3dea747e); +PV0f.w = intBitsToFloat(uf_remappedPS[0].x); +PV0f.w = clamp(PV0f.w, 0.0, 1.0); +// 1 +backupReg0f = R0f.x; +backupReg1f = R0f.y; +tempf.x = dot(vec4(backupReg0f,backupReg1f,PV0f.x,-0.0),vec4(intBitsToFloat(0x3e990abb),intBitsToFloat(0x3f162c13),1.0,0.0)); +PV1f.x = tempf.x; +PV1f.y = tempf.x; +PV1f.z = tempf.x; +PV1f.w = tempf.x; +PS1f = -(PV0f.w) + intBitsToFloat(0x3f800054); +// 2 +PV0f.z = PV1f.x + -(intBitsToFloat(uf_remappedPS[0].x)); +PS0f = 1.0 / PS1f; +// 3 +PV1f.w = PV0f.z * PS0f; +PV1f.w = clamp(PV1f.w, 0.0, 1.0); +// 4 +backupReg0f = R0f.x; +backupReg1f = R0f.y; +backupReg2f = R0f.z; +R0f.x = mul_nonIEEE(backupReg0f, PV1f.w); +R0f.y = mul_nonIEEE(backupReg1f, PV1f.w); +R0f.z = mul_nonIEEE(backupReg2f, PV1f.w); +// export +passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w); +} diff --git a/Source/HyruleWarriors/bfccd6ff47ca5ce8_000000000001fe49_ps.txt b/Source/HyruleWarriors/bfccd6ff47ca5ce8_000000000001fe49_ps.txt new file mode 100644 index 00000000..a619a3bb --- /dev/null +++ b/Source/HyruleWarriors/bfccd6ff47ca5ce8_000000000001fe49_ps.txt @@ -0,0 +1,325 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +// shader bfccd6ff47ca5ce8 +//DOF base + +const float dither = $dither ; +const float scaleShader = $scaleShader; +const float scaleBlur = $scaleBlur; + +const int sampleScale = 2; +const float lightBloom = 0.95; +highp float lineRand(vec2 co) +{ + highp float a = 12.9898; + highp float b = 78.233; + highp float c = 43758.5453; + highp float dt = dot(co.xy, vec2(a, b)); + highp float sn = mod(dt, 3.14); + return fract(sin(sn) * c); +} + + +layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf4e13800 res 1280x720x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 0 +layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf5198000 res 1024x2048x1 dim 1 tm: 4 format 0005 compSel: 0 0 0 0 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 0 +layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x10ea5000 res 1280x720x1 dim 1 tm: 4 format 0011 compSel: 0 0 0 0 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 2 2 border: 0 +layout(location = 0) in vec4 passParameterSem128; +layout(location = 1) in vec4 passParameterSem129; +layout(location = 0) out vec4 passPixelColor0; +layout(location = 1) out vec4 passPixelColor1; +uniform vec2 uf_fragCoordScale; + +// FabriceNeyret2 CC, single shader gaussian by intermediate MIPmap level. www.shadertoy.com/view/ltScRG +const int samples = 8 * sampleScale, //8 or 4 balances xy position +LOD = 2, // gaussian done on MIPmap at scale LOD +sLOD = 1 << LOD; // tile size = 2^LOD +const float sigma = float(samples) * .25; + +float gaussian(vec2 i) { + return exp(-.5* dot(i /= sigma, i)) / (6.28 * sigma*sigma); +} + +vec4 blur(sampler2D sp, vec2 U, vec2 scale) { + vec4 O = vec4(0); + int s = samples / sLOD; + + for (int i = 0; i < s*s; i++) { + vec2 d = vec2(i%s, i / s)*float(sLOD) - float(samples) / 2.; + O += gaussian(d) * textureLod(sp, U + scale * d, float(LOD)); + } + + return O / O.a; +} + + +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() +{ +ivec4 R0i = ivec4(0); +ivec4 R1i = ivec4(0); +ivec4 R2i = ivec4(0); +ivec4 R3i = ivec4(0); +ivec4 R4i = ivec4(0); +ivec4 R5i = ivec4(0); +ivec4 R6i = ivec4(0); +ivec4 R7i = ivec4(0); +ivec4 R8i = ivec4(0); +ivec4 R122i = ivec4(0); +ivec4 R123i = ivec4(0); +ivec4 R124i = ivec4(0); +ivec4 R125i = ivec4(0); +ivec4 R126i = ivec4(0); +ivec4 R127i = ivec4(0); +int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i; +ivec4 PV0i = ivec4(0), PV1i = ivec4(0); +int PS0i = 0, PS1i = 0; +ivec4 tempi = ivec4(0); +float tempResultf; +int tempResulti; +ivec4 ARi = ivec4(0); +bool predResult = true; +vec3 cubeMapSTM; +int cubeMapFaceId; +R0i = floatBitsToInt(passParameterSem128); +R1i = floatBitsToInt(passParameterSem129); + + +vec2 coord = passParameterSem128.xy*textureSize(textureUnitPS0, 0); // +vec2 ps = vec2(1.0) / textureSize(textureUnitPS0, 0); +vec2 uv = coord * ps; + +R5i.xyz = floatBitsToInt(blur(textureUnitPS0, passParameterSem128.xy, ps*scaleBlur)).xyz; //1.0 4k //.66 2k //0.075 1k //.51 4kx2 +//R5i.xyz = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R0i.xy)).xyz); +R2i.x = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R0i.xy)).x); +R6i.xyz = R5i.xyz; +R0i.x = R2i.x; +R7i.xyz = R6i.xyz; +R3i.x = R0i.x; +R8i.xyz = R7i.xyz; +R1i.x = R3i.x; + +/* +R6i.xyz = floatBitsToInt(blur(textureUnitPS0, passParameterSem128.zw, ps*scaleBlur)).xyz; +R6i.xyz = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R0i.zw)).xyz); +R0i.x = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R0i.zw)).x); +R7i.xyz = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R1i.xy)).xyz); +R3i.x = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R1i.xy)).x); +R8i.xyz = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R1i.zw)).xyz); +R1i.x = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R1i.zw)).x); +*/ +// 0 +R4i.x = 0x3727c5ac; +R2i.y = 0x3f000000; +R0i.z = 0x3f000000; +R1i.w = 0x3727c5ac; +R3i.y = 0x3f000000; +PS0i = R3i.y; +// 1 +R1i.y = 0x3f000000; +R2i.x = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R2i.xy)).w); +R0i.x = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R0i.xz)).w); +R3i.x = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R3i.xy)).w); +R1i.x = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R1i.xy)).w); +// 0 +R127i.x = R0i.x; +PV0i.x = R127i.x; +PV0i.y = floatBitsToInt(intBitsToFloat(R2i.x) + -(0.5)); +PV0i.z = floatBitsToInt(intBitsToFloat(R0i.x) + -(0.5)); +R126i.w = R2i.x; +PV0i.w = R126i.w; +R124i.w = R3i.x; +PS0i = R124i.w; +// 1 +PV1i.x = floatBitsToInt(max(intBitsToFloat(PV0i.z), -(intBitsToFloat(PV0i.z)))); +PV1i.x = floatBitsToInt(intBitsToFloat(PV1i.x) * 2.0); +R126i.y = ((0.5 > intBitsToFloat(PV0i.w))?int(0xFFFFFFFF):int(0x0)); +PV1i.z = floatBitsToInt(max(intBitsToFloat(PV0i.y), -(intBitsToFloat(PV0i.y)))); +PV1i.z = floatBitsToInt(intBitsToFloat(PV1i.z) * 2.0); +R127i.w = ((0.5 > intBitsToFloat(PV0i.x))?int(0xFFFFFFFF):int(0x0)); +R124i.x = R1i.x; +PS1i = R124i.x; +// 2 +PV0i.x = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + 1.0); +PV0i.x = clampFI32(PV0i.x); +PV0i.y = floatBitsToInt(-(intBitsToFloat(PV1i.z)) + 1.0); +PV0i.y = clampFI32(PV0i.y); +PV0i.z = floatBitsToInt(intBitsToFloat(R1i.x) + -(0.5)); +PV0i.w = floatBitsToInt(intBitsToFloat(R3i.x) + -(0.5)); +// 3 +PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.y) + intBitsToFloat(0x3727c5ac)); +R127i.y = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(0x3727c5ac)); +PV1i.z = floatBitsToInt(max(intBitsToFloat(PV0i.w), -(intBitsToFloat(PV0i.w)))); +PV1i.z = floatBitsToInt(intBitsToFloat(PV1i.z) * 2.0); +PV1i.w = floatBitsToInt(max(intBitsToFloat(PV0i.z), -(intBitsToFloat(PV0i.z)))); +PV1i.w = floatBitsToInt(intBitsToFloat(PV1i.w) * 2.0); +// 4 +PV0i.x = floatBitsToInt(-(intBitsToFloat(PV1i.w)) + 1.0); +PV0i.x = clampFI32(PV0i.x); +PV0i.y = floatBitsToInt(-(intBitsToFloat(PV1i.z)) + 1.0); +PV0i.y = clampFI32(PV0i.y); +PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.x)); +// 5 +backupReg0i = R127i.y; +PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.y) + intBitsToFloat(0x3727c5ac)); +R127i.y = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(0x3727c5ac)); +PV1i.z = floatBitsToInt(intBitsToFloat(PS0i) + -(1.0)); +PS1i = floatBitsToInt(1.0 / intBitsToFloat(backupReg0i)); +// 6 +PV0i.y = floatBitsToInt(intBitsToFloat(PV1i.z) + 1.0); +PV0i.z = floatBitsToInt(intBitsToFloat(PS1i) + -(1.0)); +PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.x)); +// 7 +PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.y) + -(intBitsToFloat(0x3f7dff82))); +PV1i.x = clampFI32(PV1i.x); +PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.z) + 1.0); +PV1i.z = floatBitsToInt(intBitsToFloat(PS0i) + -(1.0)); +PS1i = floatBitsToInt(1.0 / intBitsToFloat(R127i.y)); +// 8 +backupReg0i = R126i.y; +backupReg0i = R126i.y; +PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.y) + -(intBitsToFloat(0x3f7dff82))); +PV0i.x = clampFI32(PV0i.x); +R126i.y = ((backupReg0i == 0)?(R1i.w):(PV1i.x)); +PV0i.y = R126i.y; +R127i.z = floatBitsToInt(intBitsToFloat(PV1i.z) + 1.0); +R125i.w = ((backupReg0i == 0)?(PV1i.x):(R1i.w)); +R126i.z = floatBitsToInt(intBitsToFloat(PS1i) + -(1.0)); +PS0i = R126i.z; +// 9 +R126i.x = ((R127i.w == 0)?(PV0i.x):(R4i.x)); +R127i.y = ((R127i.w == 0)?(R4i.x):(PV0i.x)); +PV1i.y = R127i.y; +R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(PV0i.y)) + 0.0)); +PV1i.z = R123i.z; +R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.x),intBitsToFloat(PV0i.y)) + 0.0)); +PV1i.w = R123i.w; +R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.z),intBitsToFloat(PV0i.y)) + 0.0)); +PS1i = R122i.x; +// 10 +backupReg0i = R126i.y; +R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.w),intBitsToFloat(R126i.y)) + 0.0)); +PV0i.x = R123i.x; +R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.z),intBitsToFloat(PV1i.y)) + intBitsToFloat(PS1i))); +R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.z))); +R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.x),intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.w))); +PS0i = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(PV1i.y)); +// 11 +R125i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(R127i.y)) + intBitsToFloat(PV0i.x))); +R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.x),intBitsToFloat(R125i.w)) + 0.0)); +PV1i.y = R123i.y; +R124i.z = floatBitsToInt(intBitsToFloat(PS0i) + 0.0); +R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(R125i.w)) + 0.0)); +PV1i.w = R123i.w; +R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.z),intBitsToFloat(R125i.w)) + 0.0)); +PS1i = R122i.x; +// 12 +backupReg0i = R6i.z; +backupReg1i = R125i.w; +R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.w),intBitsToFloat(R125i.w)) + 0.0)); +PV0i.x = R123i.x; +R125i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.x),intBitsToFloat(R126i.x)) + intBitsToFloat(PV1i.y))); +R6i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(R126i.x)) + intBitsToFloat(PS1i))); +R125i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R126i.x)) + intBitsToFloat(PV1i.w))); +PS0i = floatBitsToInt(intBitsToFloat(backupReg1i) + intBitsToFloat(R126i.x)); +// 13 +backupReg0i = R127i.x; +backupReg1i = R126i.z; +R127i.x = floatBitsToInt(intBitsToFloat(R127i.z) + -(intBitsToFloat(0x3f7dff82))); +R127i.x = clampFI32(R127i.x); +R124i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(R126i.x)) + intBitsToFloat(PV0i.x))); +R126i.z = floatBitsToInt(intBitsToFloat(PS0i) + 0.0); +PV1i.w = floatBitsToInt(intBitsToFloat(backupReg1i) + 1.0); +R126i.w = 0x3727c5ac; +PS1i = R126i.w; +// 14 +PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.w) + -(intBitsToFloat(0x3f7dff82))); +PV0i.x = clampFI32(PV0i.x); +PV0i.y = ((0.5 > intBitsToFloat(R124i.w))?int(0xFFFFFFFF):int(0x0)); +PV0i.z = 0x3727c5ac; +PV0i.w = ((0.5 > intBitsToFloat(R124i.x))?int(0xFFFFFFFF):int(0x0)); +// 15 +backupReg0i = R126i.w; +R123i.x = ((PV0i.y == 0)?(R126i.w):(R127i.x)); +PV1i.x = R123i.x; +R127i.y = ((PV0i.w == 0)?(PV0i.z):(PV0i.x)); +PV1i.y = R127i.y; +R127i.z = ((PV0i.w == 0)?(PV0i.x):(PV0i.z)); +R126i.w = ((PV0i.y == 0)?(R127i.x):(backupReg0i)); +// 16 +R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.w),intBitsToFloat(PV1i.x)) + intBitsToFloat(R125i.x))); +PV0i.x = R123i.x; +R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.z),intBitsToFloat(PV1i.x)) + intBitsToFloat(R126i.y))); +PV0i.y = R123i.y; +R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.y),intBitsToFloat(PV1i.x)) + intBitsToFloat(R125i.z))); +PV0i.z = R123i.z; +R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.x),intBitsToFloat(PV1i.x)) + intBitsToFloat(R127i.w))); +PV0i.w = R123i.w; +PS0i = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(PV1i.y)); +// 17 +backupReg0i = R127i.y; +backupReg0i = R127i.y; +backupReg0i = R127i.y; +R125i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.z),intBitsToFloat(R127i.y)) + intBitsToFloat(PV0i.y))); +R127i.y = floatBitsToInt(intBitsToFloat(R124i.z) + intBitsToFloat(PS0i)); +R124i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.y),intBitsToFloat(backupReg0i)) + intBitsToFloat(PV0i.z))); +R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.x),intBitsToFloat(backupReg0i)) + intBitsToFloat(PV0i.w))); +R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.x),intBitsToFloat(backupReg0i)) + intBitsToFloat(PV0i.x))); +PS1i = R127i.x; +// 18 +R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.z),intBitsToFloat(R126i.w)) + intBitsToFloat(R6i.z))); +PV0i.x = R123i.x; +R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.y),intBitsToFloat(R126i.w)) + intBitsToFloat(R125i.w))); +PV0i.y = R123i.y; +R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.x),intBitsToFloat(R126i.w)) + intBitsToFloat(R125i.y))); +PV0i.z = R123i.z; +R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.w),intBitsToFloat(R126i.w)) + intBitsToFloat(R124i.y))); +PS0i = R122i.x; +// 19 +backupReg0i = R127i.z; +backupReg1i = R124i.x; +backupReg0i = R127i.z; +backupReg2i = R126i.w; +backupReg0i = R127i.z; +R124i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.z),intBitsToFloat(R127i.z)) + intBitsToFloat(PV0i.x))); +R125i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.y),intBitsToFloat(R127i.z)) + intBitsToFloat(PV0i.y))); +R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.x),intBitsToFloat(backupReg0i)) + intBitsToFloat(PV0i.z))); +R126i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg1i),intBitsToFloat(backupReg0i)) + intBitsToFloat(PS0i))); +PS1i = floatBitsToInt(intBitsToFloat(backupReg2i) + intBitsToFloat(backupReg0i)); +// 20 +PV0i.z = floatBitsToInt(intBitsToFloat(R126i.z) + intBitsToFloat(PS1i)); +PS0i = floatBitsToInt(1.0 / intBitsToFloat(R127i.y)); +// 21 +R6i.x = floatBitsToInt(intBitsToFloat(R127i.w) * intBitsToFloat(PS0i)); +R6i.y = floatBitsToInt(intBitsToFloat(R124i.z) * intBitsToFloat(PS0i)); +R6i.z = floatBitsToInt(intBitsToFloat(R125i.x) * intBitsToFloat(PS0i)); +PV1i.w = floatBitsToInt(intBitsToFloat(R127i.x) * intBitsToFloat(PS0i)); +PS1i = floatBitsToInt(1.0 / intBitsToFloat(PV0i.z)); +// 22 +R8i.x = floatBitsToInt(intBitsToFloat(R127i.z) * intBitsToFloat(PS1i)); +R8i.y = floatBitsToInt(intBitsToFloat(R125i.y) * intBitsToFloat(PS1i)); +R8i.z = floatBitsToInt(intBitsToFloat(R124i.x) * intBitsToFloat(PS1i)); +PV0i.w = floatBitsToInt(intBitsToFloat(R126i.w) * intBitsToFloat(PS1i)); +R6i.w = floatBitsToInt(min(intBitsToFloat(PV1i.w), 0.5)); +PS0i = R6i.w; +// 23 +R8i.w = floatBitsToInt(max(intBitsToFloat(PV0i.w), 0.5)); +PV1i.w = R8i.w; +// 24 +R1i.xyz = ivec3(R8i.x,R8i.y,R8i.z); +R1i.w = PV1i.w; +// 25 +R0i.xyz = ivec3(R6i.x,R6i.y,R6i.z); +R0i.w = R6i.w; +// export +passPixelColor0 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), intBitsToFloat(R0i.w)); +passPixelColor1 = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w)); +} diff --git a/Source/HyruleWarriors/f9feadb214b483b7_0000000000000000_vs.txt b/Source/HyruleWarriors/f9feadb214b483b7_0000000000000000_vs.txt new file mode 100644 index 00000000..97141c7f --- /dev/null +++ b/Source/HyruleWarriors/f9feadb214b483b7_0000000000000000_vs.txt @@ -0,0 +1,320 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_packing : enable +// shader f9feadb214b483b7 +const float resScale = ($height/$gameHeight)*$internalRes; +uniform ivec4 uf_uniformRegisterVS[256]; +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 = 1) out vec4 passParameterSem129; +layout(location = 2) out vec4 passParameterSem130; +layout(location = 3) out vec4 passParameterSem131; +layout(location = 4) out vec4 passParameterSem132; +layout(location = 5) out vec4 passParameterSem133; +layout(location = 6) out vec4 passParameterSem134; +layout(location = 0) out vec4 passParameterSem128; +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() +{ +ivec4 Ri[128]; +Ri[0] = ivec4(0); +Ri[1] = ivec4(0); +Ri[2] = ivec4(0); +Ri[3] = ivec4(0); +Ri[4] = ivec4(0); +Ri[5] = ivec4(0); +Ri[6] = ivec4(0); +Ri[7] = ivec4(0); +Ri[8] = ivec4(0); +Ri[9] = ivec4(0); +Ri[10] = ivec4(0); +Ri[11] = ivec4(0); +Ri[12] = ivec4(0); +Ri[13] = ivec4(0); +Ri[14] = ivec4(0); +Ri[15] = ivec4(0); +Ri[16] = ivec4(0); +Ri[17] = ivec4(0); +Ri[18] = ivec4(0); +Ri[19] = ivec4(0); +Ri[20] = ivec4(0); +Ri[21] = ivec4(0); +Ri[22] = ivec4(0); +Ri[23] = ivec4(0); +Ri[24] = ivec4(0); +Ri[25] = ivec4(0); +Ri[26] = ivec4(0); +Ri[27] = ivec4(0); +Ri[28] = ivec4(0); +Ri[29] = ivec4(0); +Ri[30] = ivec4(0); +Ri[31] = ivec4(0); +Ri[32] = ivec4(0); +Ri[33] = ivec4(0); +Ri[34] = ivec4(0); +Ri[35] = ivec4(0); +Ri[36] = ivec4(0); +Ri[37] = ivec4(0); +Ri[38] = ivec4(0); +Ri[39] = ivec4(0); +Ri[40] = ivec4(0); +Ri[41] = ivec4(0); +Ri[42] = ivec4(0); +Ri[43] = ivec4(0); +Ri[44] = ivec4(0); +Ri[45] = ivec4(0); +Ri[46] = ivec4(0); +Ri[47] = ivec4(0); +Ri[48] = ivec4(0); +Ri[49] = ivec4(0); +Ri[50] = ivec4(0); +Ri[51] = ivec4(0); +Ri[52] = ivec4(0); +Ri[53] = ivec4(0); +Ri[54] = ivec4(0); +Ri[55] = ivec4(0); +Ri[56] = ivec4(0); +Ri[57] = ivec4(0); +Ri[58] = ivec4(0); +Ri[59] = ivec4(0); +Ri[60] = ivec4(0); +Ri[61] = ivec4(0); +Ri[62] = ivec4(0); +Ri[63] = ivec4(0); +Ri[64] = ivec4(0); +Ri[65] = ivec4(0); +Ri[66] = ivec4(0); +Ri[67] = ivec4(0); +Ri[68] = ivec4(0); +Ri[69] = ivec4(0); +Ri[70] = ivec4(0); +Ri[71] = ivec4(0); +Ri[72] = ivec4(0); +Ri[73] = ivec4(0); +Ri[74] = ivec4(0); +Ri[75] = ivec4(0); +Ri[76] = ivec4(0); +Ri[77] = ivec4(0); +Ri[78] = ivec4(0); +Ri[79] = ivec4(0); +Ri[80] = ivec4(0); +Ri[81] = ivec4(0); +Ri[82] = ivec4(0); +Ri[83] = ivec4(0); +Ri[84] = ivec4(0); +Ri[85] = ivec4(0); +Ri[86] = ivec4(0); +Ri[87] = ivec4(0); +Ri[88] = ivec4(0); +Ri[89] = ivec4(0); +Ri[90] = ivec4(0); +Ri[91] = ivec4(0); +Ri[92] = ivec4(0); +Ri[93] = ivec4(0); +Ri[94] = ivec4(0); +Ri[95] = ivec4(0); +Ri[96] = ivec4(0); +Ri[97] = ivec4(0); +Ri[98] = ivec4(0); +Ri[99] = ivec4(0); +Ri[100] = ivec4(0); +Ri[101] = ivec4(0); +Ri[102] = ivec4(0); +Ri[103] = ivec4(0); +Ri[104] = ivec4(0); +Ri[105] = ivec4(0); +Ri[106] = ivec4(0); +Ri[107] = ivec4(0); +Ri[108] = ivec4(0); +Ri[109] = ivec4(0); +Ri[110] = ivec4(0); +Ri[111] = ivec4(0); +Ri[112] = ivec4(0); +Ri[113] = ivec4(0); +Ri[114] = ivec4(0); +Ri[115] = ivec4(0); +Ri[116] = ivec4(0); +Ri[117] = ivec4(0); +Ri[118] = ivec4(0); +Ri[119] = ivec4(0); +Ri[120] = ivec4(0); +Ri[121] = ivec4(0); +Ri[122] = ivec4(0); +Ri[123] = ivec4(0); +Ri[124] = ivec4(0); +Ri[125] = ivec4(0); +Ri[126] = ivec4(0); +Ri[127] = ivec4(0); +uvec4 attrDecoder; +int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i; +ivec4 PV0i = ivec4(0), PV1i = ivec4(0); +int PS0i = 0, PS1i = 0; +ivec4 tempi = ivec4(0); +float tempResultf; +int tempResulti; +ivec4 ARi = ivec4(0); +bool predResult = true; +bool activeMaskStack[1]; +bool activeMaskStackC[2]; +activeMaskStackC[0] = false; +activeMaskStack[0] = true; +activeMaskStackC[0] = true; +activeMaskStackC[1] = true; +vec3 cubeMapSTM; +int cubeMapFaceId; +Ri[0] = ivec4(gl_VertexID, 0, 0, gl_InstanceID); +attrDecoder = attrDataSem0; +attrDecoder = (attrDecoder>>24)|((attrDecoder>>8)&0xFF00)|((attrDecoder<<8)&0xFF0000)|((attrDecoder<<24)); +Ri[1] = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), int(attrDecoder.w)); +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; +Ri[2] = ivec4(int(attrDecoder.x), int(attrDecoder.y), floatBitsToInt(0.0), floatBitsToInt(1.0)); +if( activeMaskStackC[1] == true ) { +// 0 +Ri[3].y = 0; +PV0i.z = floatBitsToInt(intBitsToFloat(Ri[1].y) + intBitsToFloat(uf_uniformRegisterVS[0].y)/resScale); +PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) * 2.0); +PV0i.w = floatBitsToInt(intBitsToFloat(Ri[1].x) + intBitsToFloat(uf_uniformRegisterVS[0].x)/resScale); +PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * 2.0); +// 1 +PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.z) + -(1.0)); +Ri[1].x = floatBitsToInt(intBitsToFloat(PV0i.w) + -(1.0)); +PS1i = Ri[1].x; +// 2 +Ri[1].y = floatBitsToInt(intBitsToFloat(PV1i.x) * -(1.0)); +// 3 +Ri[16].xyz = ivec3(Ri[1].x,Ri[1].y,Ri[1].z); +Ri[16].w = Ri[1].w; +} +while( activeMaskStackC[1] == true ) +{ +if( activeMaskStackC[1] == true ) { +// 0 +Ri[0].z = (0x00000006 > Ri[3].y)?int(0xFFFFFFFF):int(0x0); +// 1 +predResult = (Ri[0].z != 0); +if( predResult == false ) break; +} +if( activeMaskStackC[1] == true ) { +// 0 +backupReg0i = Ri[3].y; +backupReg0i = Ri[3].y; +Ri[1].x = Ri[3].y + 0x00000008; +Ri[3].y = backupReg0i + int(1); +Ri[127].z = floatBitsToInt(float(backupReg0i)); +PS0i = Ri[127].z; +// 1 +tempResultf = intBitsToFloat(PS0i); +tempResultf = floor(tempResultf); +tempResultf = clamp(tempResultf, -256.0, 255.0); +ARi.x = int(tempResultf); +PV1i.x = floatBitsToInt(tempResultf); +// 2 +PV0i.x = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].y)/resScale); +PV0i.y = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].x)/resScale); +PV0i.z = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].w)/resScale); +PV0i.w = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[ARi.x+2].z)/resScale); +// 3 +PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(uf_uniformRegisterVS[1].y))); +PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(uf_uniformRegisterVS[1].x))); +PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(uf_uniformRegisterVS[1].x))); +PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(uf_uniformRegisterVS[1].y))); +// 4 +Ri[0].xyz = floatBitsToInt(vec3(intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.w),intBitsToFloat(PV1i.z)) + vec3(intBitsToFloat(uf_uniformRegisterVS[1].z)/resScale,intBitsToFloat(uf_uniformRegisterVS[1].w)/resScale,intBitsToFloat(uf_uniformRegisterVS[1].z)/resScale)); +Ri[0].w = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(uf_uniformRegisterVS[1].w)/resScale); +// 5 +tempResulti = Ri[1].x; +tempResulti = clamp(tempResulti, -256, 255); +ARi.x = tempResulti; +PV1i.x = tempResulti; +// 6 +Ri[10+ARi.x].x = Ri[0].x; +Ri[10+ARi.x].y = Ri[0].y; +Ri[10+ARi.x].z = Ri[0].z; +Ri[10+ARi.x].w = Ri[0].w; +} +} +if( activeMaskStackC[1] == true ) { +// 0 +PV0i.x = floatBitsToInt(intBitsToFloat(Ri[2].y) + intBitsToFloat(uf_uniformRegisterVS[8].y)); +PV0i.y = floatBitsToInt(intBitsToFloat(Ri[2].x) + intBitsToFloat(uf_uniformRegisterVS[8].x)); +// 1 +PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(uf_uniformRegisterVS[1].y))); +PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(uf_uniformRegisterVS[1].x))); +// 2 +Ri[7].x = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(uf_uniformRegisterVS[1].z)); +Ri[7].y = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(uf_uniformRegisterVS[1].w)); +// 3 +Ri[17].x = Ri[7].x; +Ri[17].y = Ri[7].y; +// 4 +Ri[2].xyz = ivec3(Ri[16].x,Ri[16].y,Ri[16].z); +Ri[2].w = Ri[16].w; +// 5 +Ri[0].xyz = ivec3(Ri[18].x,Ri[18].y,Ri[18].z); +Ri[0].w = Ri[18].w; +// 6 +Ri[10].xyz = ivec3(Ri[0].x,Ri[0].y,Ri[0].z); +Ri[10].w = Ri[0].w; +// 7 +Ri[1].xyz = ivec3(Ri[19].x,Ri[19].y,Ri[19].z); +Ri[1].w = Ri[19].w; +// 8 +Ri[11].xyz = ivec3(Ri[1].x,Ri[1].y,Ri[1].z); +Ri[11].w = Ri[1].w; +// 9 +Ri[3].xyz = ivec3(Ri[20].x,Ri[20].y,Ri[20].z); +Ri[3].w = Ri[20].w; +// 10 +Ri[12].xyz = ivec3(Ri[3].x,Ri[3].y,Ri[3].z); +Ri[12].w = Ri[3].w; +// 11 +Ri[4].xyz = ivec3(Ri[21].x,Ri[21].y,Ri[21].z); +Ri[4].w = Ri[21].w; +// 12 +Ri[13].xyz = ivec3(Ri[4].x,Ri[4].y,Ri[4].z); +Ri[13].w = Ri[4].w; +// 13 +Ri[5].xyz = ivec3(Ri[22].x,Ri[22].y,Ri[22].z); +Ri[5].w = Ri[22].w; +// 14 +Ri[6].xyz = ivec3(Ri[23].x,Ri[23].y,Ri[23].z); +Ri[6].w = Ri[23].w; +} +// export +gl_Position = vec4(intBitsToFloat(Ri[2].x), intBitsToFloat(Ri[2].y), intBitsToFloat(Ri[2].z), intBitsToFloat(Ri[2].w)); +// export +passParameterSem129 = vec4(intBitsToFloat(Ri[0].x), intBitsToFloat(Ri[0].y), intBitsToFloat(Ri[0].z), intBitsToFloat(Ri[0].w)); +// export +passParameterSem130 = vec4(intBitsToFloat(Ri[1].x), intBitsToFloat(Ri[1].y), intBitsToFloat(Ri[1].z), intBitsToFloat(Ri[1].w)); +// export +passParameterSem131 = vec4(intBitsToFloat(Ri[3].x), intBitsToFloat(Ri[3].y), intBitsToFloat(Ri[3].z), intBitsToFloat(Ri[3].w)); +// export +passParameterSem132 = vec4(intBitsToFloat(Ri[4].x), intBitsToFloat(Ri[4].y), intBitsToFloat(Ri[4].z), intBitsToFloat(Ri[4].w)); +// export +passParameterSem133 = vec4(intBitsToFloat(Ri[5].x), intBitsToFloat(Ri[5].y), intBitsToFloat(Ri[5].z), intBitsToFloat(Ri[5].w)); +// export +passParameterSem134 = vec4(intBitsToFloat(Ri[6].x), intBitsToFloat(Ri[6].y), intBitsToFloat(Ri[6].z), intBitsToFloat(Ri[6].w)); +// export +passParameterSem128 = vec4(intBitsToFloat(Ri[7].x), intBitsToFloat(Ri[7].y), intBitsToFloat(Ri[7].z), intBitsToFloat(Ri[7].z)); +if( activeMaskStackC[1] == true ) { +// 0 +} +} diff --git a/Source/HyruleWarriors/rules.txt b/Source/HyruleWarriors/rules.txt new file mode 100644 index 00000000..5c7b8dfc --- /dev/null +++ b/Source/HyruleWarriors/rules.txt @@ -0,0 +1,272 @@ +[Definition] +titleIds = 000500001017D800,000500001017D900,000500001017CD00 +name = Resolution +path = "Hyrule warriors/Graphics/Resolution" +description = Changes the resolution of the game. +version = 3 +vsyncFrequency = 30 + +[Preset] +name = 1280x720 (Default) +$width = 1280 +$height = 720 +$gameWidth = 1280 +$gameHeight = 720 +$internalRes = 1 +$dither = 0.01 +$scaleShader = 1.0 +$scaleBlur = 0.05 + +[Preset] +name = 640x360 +$width = 640 +$height = 360 +$gameWidth = 1280 +$gameHeight = 720 +$internalRes = 1 +$dither = 0.01 +$scaleShader = 1.0 +$scaleBlur = 0.05 + +// Quality + +[Preset] +name = 1920x1080 (HD) +$width = 1920 +$height = 1080 +$gameWidth = 1280 +$gameHeight = 720 +$internalRes = 1 +$dither = 0.15 +$scaleShader = 1.0 +$scaleBlur = 0.5 + +[Preset] +name = 1600x900 +$width = 1600 +$height = 900 +$gameWidth = 1280 +$gameHeight = 720 +$internalRes = 1 +$dither = 0.1 +$scaleShader = 1.0 +$scaleBlur = 0.5 + +[Preset] +name = 2560x1440 (Native x2) +$width = 2560 +$height = 1440 +$gameWidth = 1280 +$gameHeight = 720 +$internalRes = 1.5 +$dither = 0.1 +$scaleShader = 1.0 +$scaleBlur = 0.75 + +[Preset] +name = 3200x1800 +$width = 3200 +$height = 1800 +$gameWidth = 1280 +$gameHeight = 720 +$internalRes = 1 +$dither = 0.2 +$scaleShader = 1.0 +$scaleBlur = 1.0 + +[Preset] +name = 3840x2160 (4k - Native x3) +$width = 3840 +$height = 2160 +$gameWidth = 1280 +$gameHeight = 720 +$internalRes = 1 +$dither = 0.2 +$scaleShader = 1.0 +$scaleBlur = 1.0 + +[Preset] +name = 5120x2880 +$width = 5120 +$height = 2880 +$gameWidth = 1280 +$gameHeight = 720 +$internalRes = 1 +$dither = 0.25 +$scaleShader = 1.0 +$scaleBlur = 1.0 +// Enthusiast + +[Preset] +name = 7680x4320 +$width = 7680 +$height = 4320 +$gameWidth = 1280 +$gameHeight = 720 +$internalRes = 1 +$dither = 0.25 +$scaleShader = 1.0 +$scaleBlur = 1.0 + +[Preset] +name = 10240x5760 +$width = 10240 +$height = 5760 +$gameWidth = 1280 +$gameHeight = 720 +$internalRes = 1 +$dither = 0.25 +$scaleShader = 1.0 +$scaleBlur = 1.0 + + +[TextureRedefine] +width = 1280 +height = 720 +#formats = 0x816,0x810,0x433,0x431,0x41a,0x011,0x008,0x001,0x01a +formatsExcluded = 0x431,0x433 +tileModesExcluded = 0x001 +overwriteWidth = ($width/$gameWidth) * 1280 +overwriteHeight = ($height/$gameHeight) * 720 + +[TextureRedefine] +width = 1024 +height = 2048 +#formats = 0x005 +overwriteWidth = ($width/$gameWidth) * 1024 +overwriteHeight = ($height/$gameHeight) * 2048 + +[TextureRedefine] +width = 1024 +height = 1023 +#formats = +overwriteWidth = ($width/$gameWidth) * 1024 +overwriteHeight = ($height/$gameHeight) * 1023 + +[TextureRedefine] +width = 1022 +height = 2046 +#formats = +overwriteWidth = ($width/$gameWidth) * 1022 +overwriteHeight = ($height/$gameHeight) * 2046 + +#[TextureRedefine] +#width = 1022 +#height = 1022 +#formatsExcluded = +#overwriteWidth = ($width/$gameWidth) * 1022 +#overwriteHeight = ($height/$gameHeight) * 1022 + +[TextureRedefine] +width = 864 +height = 480 +#formats = +overwriteWidth = ($width/$gameWidth) * 864 +overwriteHeight = ($height/$gameHeight) * 480 + +[TextureRedefine] +width = 640 +height = 360 +#formats = 0x816,0x80e,0x035,0x033,0x007 +tileModesExcluded = 0x001 +overwriteWidth = ($width/$gameWidth) * (640*$internalRes) +overwriteHeight = ($height/$gameHeight) * (360*$internalRes) + +[TextureRedefine] +width = 512 +height = 512 +formats = 0x005 +#formatsExcluded = 0x433,0x431,0x035,0x033,0x031,0x005 +overwriteWidth = ($width/$gameWidth) * 512 +overwriteHeight = ($height/$gameHeight) * 512 + +[TextureRedefine] +width = 352 +height = 192 +#formats = 0x820 +overwriteWidth = ($width/$gameWidth) * (352*$internalRes) +overwriteHeight = ($height/$gameHeight) * (192*$internalRes) + +[TextureRedefine] +width = 322 +height = 182 +#formats = 0x820 +overwriteWidth = ($width/$gameWidth) * (322*$internalRes) +overwriteHeight = ($height/$gameHeight) * (182*$internalRes) + +[TextureRedefine] +width = 320 +height = 192 +#formats = 0x820,0x816,0x035,0x01a +overwriteWidth = ($width/$gameWidth) * (320*$internalRes) +overwriteHeight = ($height/$gameHeight) * (192*$internalRes) + +[TextureRedefine] +width = 320 +height = 180 +#formats = 0x820,0x816,0x035,0x01a +overwriteWidth = ($width/$gameWidth) * (320*$internalRes) +overwriteHeight = ($height/$gameHeight) * (180*$internalRes) + +#[TextureRedefine] +#width = 224 +#height = 224 +#formatsExcluded = +#overwriteWidth = ($width/$gameWidth) * (224*$internalRes) +#overwriteHeight = ($height/$gameHeight) * (224*$internalRes) + +[TextureRedefine] +width = 192 +height = 96 +#formats = 0x820 +overwriteWidth = ($width/$gameWidth) * (192*$internalRes) +overwriteHeight = ($height/$gameHeight) * (96*$internalRes) + +[TextureRedefine] +width = 162 +height = 92 +#formats = 0x820 +overwriteWidth = ($width/$gameWidth) * (162*$internalRes) +overwriteHeight = ($height/$gameHeight) * (92*$internalRes) + +[TextureRedefine] +width = 160 +height = 180 +#formats = +overwriteWidth = ($width/$gameWidth) * (160*$internalRes) +overwriteHeight = ($height/$gameHeight) * (180*$internalRes) + +[TextureRedefine] +width = 160 +height = 90 +#formats = 0x816,0x41a +overwriteWidth = ($width/$gameWidth) * (160*$internalRes) +overwriteHeight = ($height/$gameHeight) * (90*$internalRes) + +#[TextureRedefine] +#width = 64 +#height = 64 +#formatsExcluded = 0x01a,0x820,0x816,0x433,0x035,0x034,0x033,0x032,0x031 +#overwriteWidth = ($width/$gameWidth) * (64*$internalRes) +#overwriteHeight = ($height/$gameHeight) * (64*$internalRes) + +#[TextureRedefine] +#width = 16 +#height = 16 +#formatsExcluded = 0x01a,0x034,0x41a,0x033,0x031,0x01a +#overwriteWidth = ($width/$gameWidth) * (16*$internalRes) +#overwriteHeight = ($height/$gameHeight) * (16*$internalRes) + +#[TextureRedefine] +#width = 4 +#height = 4 +#formatsExcluded = 0x81e,0x80e +#overwriteWidth = ($width/$gameWidth) * (4*$internalRes) +#overwriteHeight = ($height/$gameHeight) * (4*$internalRes) + +#[TextureRedefine] +#width = 1 +#height = 1 +#formatsExcluded = 0x81e,0x80e,0x008,0x01a +#overwriteWidth = ($width/$gameWidth) * 1 +#overwriteHeight = ($height/$gameHeight) * 1