This commit is contained in:
getdls 2017-11-12 19:10:36 +01:00
commit 4d6cdbec21
63 changed files with 17623 additions and 714 deletions

View File

@ -0,0 +1 @@
{\rtf1}

View File

@ -0,0 +1,44 @@
#version 420
#extension GL_ARB_texture_gather : enable
float fogFactor = 0.2;
// shader 38d70ed9280bb3bc
uniform ivec4 uf_remappedPS[1];
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf46ac800 res 320x180x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x5) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 1
layout(location = 0) in vec4 passParameterSem0;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
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 = passParameterSem0;
R0f.xyz = (texture(textureUnitPS0, R0f.xy).xyz);
// 0
backupReg0f = R0f.x;
backupReg1f = R0f.y;
backupReg2f = R0f.z;
R0f.x = mul_nonIEEE(backupReg0f, intBitsToFloat(uf_remappedPS[0].x) * fogFactor);
R0f.y = mul_nonIEEE(backupReg1f, intBitsToFloat(uf_remappedPS[0].y) * fogFactor);
R0f.z = mul_nonIEEE(backupReg2f, intBitsToFloat(uf_remappedPS[0].z) * fogFactor);
R0f.w = 0.0;
// export
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
}

View File

@ -0,0 +1,340 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader bd8bba59e2149449
// Possible problems
// Being below 1.3.0 will give you double-vision with recent graphic packs. Update to 1.3.0 or above.
// If you're experiencing any issues (due to having the previous Clarity shaders installed), please remove and redownload all of the BotW packs.
// Credit to NAVras for merging to a better shader.
// Credit to getdls for adding exposure & Original Contrasty.
// Clarity GFX
// Credit to Jamie for main coding.
// Credit to Kiri coding & Reshade logic.
// Credit to Serfrost for preset values.
// Original shader dumped using cemu 1.10.0f, BotW 1.3.1
// Changelog v0.0 -- Special Very Special Edition.
//##########################################################
//Control Pannel
float bloomFactor = 0.4; //Default is 1.0 Affacts Games bloom
float exposure = 2.0; // Exposure setting
float brt = 0.0; //Default is 0.0 Now much brightness to add to the RGB color.
float con = 0.75; // [0.0 ~ 1.5] [0.5 Default] Contrast Adjustment - or + values work
float sat = 0.50; // [0.1 ~ 1.5] [0.0 Default] Color Saturation Adjustment. - or + values work
float defog = 0.0; // [0.0 ~ 1.0] [0.0 Default] How much of the far distance fog to "remove."
//Lift Gamma Gain
#define RGB_Lift vec3(1.0, 1.0, 1.0) //[0.000 to 2.000] Adjust shadows for Red, Green and Blue.
#define RGB_Gamma vec3(0.60, 0.60, 0.60) //[0.000 to 2.000] Adjust midtones for Red, Green and Blue
#define RGB_Gain vec3(1.0, 1.0, 1.0) //[0.000 to 2.000] Adjust highlights for Red, Green and Blue
//Note that a value of 1.0 is a neutral setting that leave the color unchanged.
//Luma Values
float AvgLumR = 0.0; // [0.0 ~ 1.5] [0.0 Default] Use very small increments, as it changes RGB values.
float AvgLumG = -0.003; // [0.0 ~ 1.5] [0.0 Default] Use very small increments, as it changes RGB values.
float AvgLumB = 0.0; // [0.0 ~ 1.5] [0.0 Default] Use very small increments, as it changes RGB values.
//LumaShapening
#define sharp_strength 0.25 //[0.10 to 3.00] Strength of the sharpening Default is 0.65
#define sharp_clamp 0.085 //[0.000 to 1.000] Limits maximum amount of sharpening a pixel recieves - Default is 0.035
//Advanced sharpening settings
#define offset_bias 1.0 //[0.0 to 6.0] Offset bias adjusts the radius of the sampling pattern.
//Fake High Dynamic Range.
#define HDRPower 1.20 // 0.0 to 8.0 "Raising this seems to make the effect stronger and also darker , Default 1.30."
#define radius1 0.793 // 0.0 to 8.0 "Default 0.793 , will affect FX."
#define radius2 0.87 // 0.0 to 8.0 "Default 0.87 , will affect FX."
//-----------------------------------------------------------
//End of adjustable values
//###########################################################
//Do not edit under this line.
const vec3 FogColor = vec3(0.0, 0.0, 0.0); //defog Color";
uniform ivec4 uf_remappedPS[1];
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf46ac800 res 320x180x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x5) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf5c7b800 res 1280x720x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
layout(location = 0) in vec4 passParameterSem0;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
//-----------------------------------------------------------
// Based on CeeJay.dk's original GLSL/HLSL.
//-----------------------------------------------------------
vec3 ContrastSaturationBrightness( vec3 color, float brt, float sat, float con) {
//Luminace Coefficients for brightness of image
vec3 LuminaceCoeff = vec3(0.2125,0.7154,0.0721);
//Brigntess calculations
vec3 AvgLumin = vec3(AvgLumR, AvgLumG, AvgLumB);
vec3 brtColor = color * brt;
float intensityf = dot(brtColor, LuminaceCoeff);
vec3 intensity = vec3(intensityf, intensityf, intensityf);
//Saturation calculation
vec3 satColor = mix(intensity, brtColor, sat);
//Contrast calculations
vec3 conColor = mix(AvgLumin, satColor, con);
return color;
}
//Clarity Tone Map
vec3 claritytonemap(vec3 color) {
color = max(vec3(0.), color - vec3(0.004));
color = (color * (6.2 * color + .5)) / (color * (6.2 * color + 1.7) + 0.06);
float luma = dot(color, vec3(0.2126, 0.7152, 0.0722));
float toneMappedLuma = luma / (1. + luma);
color *= toneMappedLuma / luma;
color *= exposure/(1. + color / exposure);
return color;
}
//Lift Gamma Gain
vec3 LiftGammaGainPass( vec3 colorInput )
{
// -- Get input --
vec3 color = colorInput;
// -- Lift --
color = color * (1.5-0.5 * RGB_Lift) + 0.5 * RGB_Lift - 0.5;
color = clamp(color, 0.0, 1.0); //isn't strictly necessary, but doesn't cost performance.
// -- Gain --
color *= RGB_Gain;
// -- Gamma --
color = pow(color, 1.0 / RGB_Gamma); //Gamma
// -- Return output --
return clamp(color, 0.0, 1.0);
}
//LumaShapening
#define px (1.0/1280.0*uf_fragCoordScale.x)
#define py (1.0/720.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 ]
//float px = 1.0/tex_size[0];
//float py = 1.0/tex_size[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
// -- Combining the values to get the final sharpened pixel --
//colorInput.rgb = colorInput.rgb + sharp_luma; // Add the sharpening to the input color.
return sharp_luma;
}
//Fake High Dynamic Range.
vec3 HDRPass(sampler2D tex, vec2 pos){
vec3 color = texture(tex, pos).rgb;
vec3 bloom_sum1 = texture(tex, pos + vec2(1.5, -1.5) * radius1 * vec2(px,py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(-1.5, -1.5) * radius1 * vec2(px,py)).rgb;
bloom_sum1 += texture(tex, pos + vec2( 1.5, 1.5) * radius1 * vec2(px,py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(-1.5, 1.5) * radius1 * vec2(px,py)).rgb;
bloom_sum1 += texture(tex, pos + vec2( 0.0, -2.5) * radius1 * vec2(px,py)).rgb;
bloom_sum1 += texture(tex, pos + vec2( 0.0, 2.5) * radius1 * vec2(px,py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(-2.5, 0.0) * radius1 * vec2(px,py)).rgb;
bloom_sum1 += texture(tex, pos + vec2( 2.5, 0.0) * radius1 * vec2(px,py)).rgb;
bloom_sum1 *= 0.005;
vec3 bloom_sum2 = texture(tex, pos + vec2(1.5, -1.5) * radius2 * vec2(px,py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(-1.5, -1.5) * radius2 * vec2(px,py)).rgb;
bloom_sum2 += texture(tex, pos + vec2( 1.5, 1.5) * radius2 * vec2(px,py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(-1.5, 1.5) * radius2 * vec2(px,py)).rgb;
bloom_sum2 += texture(tex, pos + vec2( 0.0, -2.5) * radius2 * vec2(px,py)).rgb;
bloom_sum2 += texture(tex, pos + vec2( 0.0, 2.5) * radius2 * vec2(px,py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(-2.5, 0.0) * radius2 * vec2(px,py)).rgb;
bloom_sum2 += texture(tex, pos + vec2( 2.5, 0.0) * radius2 * vec2(px,py)).rgb;
bloom_sum2 *= 0.010;
float dist = radius2 - radius1;
vec3 HDR = (color + (bloom_sum2 - bloom_sum1)) * dist;
vec3 blend = HDR + color;
color = pow(abs(blend), vec3(abs(HDRPower))) + HDR;
return color;
}
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = 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 = passParameterSem0;
R1f.xyz = (texture(textureUnitPS0, R0f.xy).xyz);
R1f.xyz *= bloomFactor;
R0f.xyz = HDRPass(textureUnitPS1, passParameterSem0.xy);
float smask = lumasharping(textureUnitPS1, passParameterSem0.xy);
R0f.xyz += vec3(smask);
// 0
R126f.x = R1f.x + R0f.x;
PV0f.x = R126f.x;
R127f.y = R1f.y + R0f.y;
PV0f.y = R127f.y;
R126f.z = R1f.z + R0f.z;
PV0f.z = R126f.z;
R125f.w = 1.0;
// 1
tempf.x = dot(vec4(PV0f.x,PV0f.y,PV0f.z,-0.0),vec4(intBitsToFloat(0x3e99096c),intBitsToFloat(0x3f162b6b),intBitsToFloat(0x3dea4a8c),0.0));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
// 2
R127f.x = -(R127f.y) * intBitsToFloat(0x3fb8aa3b);
PV0f.y = -(PV1f.x) * intBitsToFloat(0x3fb8aa3b);
R127f.z = -(R126f.x) * intBitsToFloat(0x3fb8aa3b);
R127f.w = -(R126f.z) * intBitsToFloat(0x3fb8aa3b);
R126f.w = 1.0 / PV1f.x;
PS0f = R126f.w;
// 3
PS1f = exp2(PV0f.y);
// 4
PV0f.x = -(PS1f) + 1.0;
PS0f = exp2(R127f.x);
// 5
R127f.x = -(PS0f) + 1.0;
R126f.y = mul_nonIEEE(PV0f.x, PV0f.x);
PV1f.z = PV0f.x * R126f.w;
PS1f = exp2(R127f.w);
// 6
backupReg0f = R126f.x;
backupReg1f = R127f.z;
R126f.x = mul_nonIEEE(backupReg0f, PV1f.z);
PV0f.y = -(PS1f) + 1.0;
R127f.z = mul_nonIEEE(R126f.z, PV1f.z);
PV0f.z = R127f.z;
R127f.w = mul_nonIEEE(R127f.y, PV1f.z);
PV0f.w = R127f.w;
PS0f = exp2(backupReg1f);
// 7
PV1f.x = R127f.x + -(PV0f.w);
PV1f.y = PV0f.y + -(PV0f.z);
PV1f.w = -(PS0f) + 1.0;
// 8
backupReg0f = R127f.z;
R127f.x = (mul_nonIEEE(PV1f.x,R126f.y) + R127f.w);
R127f.x = clamp(R127f.x, 0.0, 1.0);
PV0f.x = R127f.x;
PV0f.y = PV1f.w + -(R126f.x);
R127f.z = (mul_nonIEEE(PV1f.y,R126f.y) + backupReg0f);
R127f.z = clamp(R127f.z, 0.0, 1.0);
PV0f.z = R127f.z;
// 9
backupReg0f = R126f.x;
R126f.x = (mul_nonIEEE(PV0f.y,R126f.y) + backupReg0f);
R126f.x = clamp(R126f.x, 0.0, 1.0);
PV1f.x = R126f.x;
R126f.y = max(PV0f.x, PV0f.z);
PV1f.w = min(PV0f.x, PV0f.z);
// 10
tempf.x = dot(vec4(PV1f.x,R127f.x,R127f.z,R125f.w),vec4(intBitsToFloat(0x3f2aaaab),intBitsToFloat(0x3f2aaaab),intBitsToFloat(0x3f2aaaab),-(1.0)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R126f.z = min(PV1f.x, PV1f.w);
PS0f = R126f.z;
// 11
backupReg0f = R127f.x;
backupReg1f = R127f.z;
R127f.x = max(R126f.x, R126f.y);
PV1f.x = R127f.x;
R123f.y = (mul_nonIEEE(-(PV0f.x),PV0f.x) + 1.0);
PV1f.y = R123f.y;
R127f.z = backupReg0f + -(PS0f);
R125f.w = R126f.x + -(PS0f);
R126f.y = backupReg1f + -(PS0f);
PS1f = R126f.y;
// 12
R126f.x = (mul_nonIEEE(PV1f.y,intBitsToFloat(uf_remappedPS[0].y)) + intBitsToFloat(uf_remappedPS[0].x));
PV0f.x = R126f.x;
PV0f.y = -(R126f.z) + PV1f.x;
// 13
R123f.w = (mul_nonIEEE(-(PV0f.x),PV0f.y) + R127f.x);
PV1f.w = R123f.w;
// 14
R0f.x = (mul_nonIEEE(R126f.x,R125f.w) + PV1f.w);
R0f.y = (mul_nonIEEE(R126f.x,R127f.z) + PV1f.w);
R0f.z = (mul_nonIEEE(R126f.x,R126f.y) + PV1f.w);
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
vec3 color = (passPixelColor0.xyz);
color = claritytonemap(color);
color = ContrastSaturationBrightness(color, brt, sat, con);
color = LiftGammaGainPass(color);
passPixelColor0 = vec4(color, R0f.w);
}

View File

@ -0,0 +1,402 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader bd8bba59e2149449
// Possible problems
// Being below 1.3.0 will give you double-vision with recent graphic packs. Update to 1.3.0 or above.
// If you're experiencing any issues (due to having the previous Clarity shaders installed), please remove and redownload all of the BotW packs.
// Credit to NAVras for merging to a better shader.
//(Thank you NAVras for debugging and answering silly questions.)
// Couldn't have got this far without you.
// Credit to getdls for adding exposure & Original Contrasty.
// Clarity GFX
// Credit to Jamie for main coding.
// Credit to Kiri coding & Reshade logic.
// Credit to Serfrost for preset values.
// Original shader dumped using cemu 1.10.0f, BotW 1.3.1
//v0.9b
//##########################################################
//ToneMapping
float bloomFactor = 0.15; //Default is 1.0
float Bleach = 0.2; //Default is 0.0
float exposure = 1.25; //Default is 1.0
float defog = 0.004; //Default is 0.0
//Lift Gamma Gain
#define RGB_Lift vec3(1.00, 1.00, 1.00) //[0.000 to 2.000] Adjust shadows for Red, Green and Blue.
#define RGB_Gamma vec3(0.67, 0.67, 0.67) //[0.000 to 2.000] Adjust midtones for Red, Green and Blue
#define RGB_Gain vec3(1.00, 0.95, 1.00) //[0.000 to 2.000] Adjust highlights for Red, Green and Blue
//Note that a value of 1.0 is a neutral setting that leave the color unchanged.
//Curves
float Contrast = 0.15; //[-1.0, 1.0] The amount of contrast you want
//Levels Control
const int BlackPoint = 0; //[0, 255] The black point is the new black - literally. Everything darker than this will become completely black
const int WhitePoint = 255; //[0, 255] The new white point. Everything brighter than this becomes completely white
//LumaShapening
#define sharp_strength 0.35 //[0.10 to 3.00] Strength of the sharpening Default is 0.65
#define sharp_clamp 0.015 //[0.000 to 1.000] Limits maximum amount of sharpening a pixel recieves - Default is 0.035
//Advanced sharpening settings
#define offset_bias 0.5 //[0.0 to 6.0] Offset bias adjusts the radius of the sampling pattern.
//Technicolor2
#define Technicolor2_Red_Strength 0.12 //Default is 0.0
#define Technicolor2_Green_Strength 0.20 //Default is 0.0
#define Technicolor2_Blue_Strength 0.12 //Default is 0.0
#define Technicolor2_Brightness 0.45 //Default is 1.0
#define Technicolor2_Strength 1.0 //Default is 1.0
#define Technicolor2_Saturation 0.70 //Default is 1.0
//Fake High Dynamic Range.
#define HDRPower 1.0 // 0.0 to 8.0 "Raising this seems to make the effect stronger and also darker , Default 1.15"
#define radius1 0.00 // 0.0 to 8.0 "Default 0.793 , will affect FX."
#define radius2 0.00 // 0.0 to 8.0 "Default 0.87 , will affect FX."
//###########################################################
//Do not edit under this line.
float sat = 0.0;
const vec3 FogColor = vec3(1.0, 1.5, 1.0); //defog Color";
uniform ivec4 uf_remappedPS[1];
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf46ac800 res 320x180x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x5) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf5c7b800 res 1280x720x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
layout(location = 0) in vec4 passParameterSem0;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if (v == 0x7FFFFFFF)
return floatBitsToInt(1.0);
else if (v == 0xFFFFFFFF)
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b) { if (a == 0.0 || b == 0.0) return 0.0; return a*b; }
//ToneMapping
vec3 TonemapPass(vec3 inputColor) {
vec3 color = inputColor;
color = clamp(color - defog * FogColor * 2.55, 0.0, 1.0); // defog
color *= exposure / (1.0 + color / exposure);
const vec3 coefLuma = vec3(0.2126, 0.7152, 0.0722);
float lum = dot(coefLuma, color);
float L = clamp(10.0 * (lum - 0.45), 0.0, 1.0);
vec3 A2 = Bleach * color;
vec3 result1 = 2.0f * color * lum;
vec3 result2 = 1.0f - 2.0f * (1.0f - lum) * (1.0f - color);
vec3 newColor = mix(result1, result2, L);
vec3 mixRGB = A2 * newColor;
color += ((1.0f - A2) * mixRGB);
vec3 middlegray = vec3(dot(color, vec3(1.0 / 3.0)));
vec3 diffcolor = color - middlegray;
color = (color + diffcolor * sat) / (1 + (diffcolor * sat)); // saturation
return color;
}
// Levels
vec3 LevelsPass(vec3 inputColor) {
float black_point_float = BlackPoint / 255.0;
float white_point_float = WhitePoint == BlackPoint ? (255.0 / 0.00025) : (255.0 / (WhitePoint - BlackPoint)); // Avoid division by zero if the white and black point are the same
vec3 color = inputColor;
color = color * white_point_float - (black_point_float * white_point_float);
return color;
}
//Curves
vec3 CurvesPass(vec3 inputColor) {
vec3 colorInput = inputColor;
float Contrast_blend = Contrast * 2.0; //I multiply by two to give it a strength closer to the other curves.
vec3 x = colorInput.rgb; //if the curve should be applied to both Luma and Chroma
x = x * (x * (1.5 - x) + 0.5); //horner form - fastest version
vec3 color = x; //if the curve should be applied to both Luma and Chroma
colorInput.rgb = mix(colorInput.rgb, color, Contrast_blend); //Blend by Contrast
return colorInput;
}
//TECHNICOLOR2
vec3 Technicolor2(vec3 inputColor) {
vec3 color = inputColor;
vec3 Color_Strength = vec3(Technicolor2_Red_Strength, Technicolor2_Green_Strength, Technicolor2_Blue_Strength);
vec3 source = color;
vec3 temp = 1.0 - source;
vec3 target = temp.grg;
vec3 target2 = temp.bbr;
vec3 temp2 = source * target;
temp2 *= target2;
temp = temp2 * Color_Strength;
temp2 *= Technicolor2_Brightness;
target = temp.grg;
target2 = temp.bbr;
temp = source - target;
temp += temp2;
temp2 = temp - target2;
color = mix(source, temp2, Technicolor2_Strength);
color = mix(vec3(dot(color, vec3(0.333))), color, Technicolor2_Saturation);
return color;
}
//Lift Gamma Gain
vec3 LiftGammaGainPass(vec3 colorInput)
{
// -- Get input --
vec3 color = colorInput;
// -- Lift --
color = color * (1.5 - 0.5 * RGB_Lift) + 0.5 * RGB_Lift - 0.5;
color = clamp(color, 0.0, 1.0); //isn't strictly necessary, but doesn't cost performance.
// -- Gain --
color *= RGB_Gain;
// -- Gamma --
color = pow(color, 1.0 / RGB_Gamma); //Gamma
// -- Return output --
return clamp(color, 0.0, 1.0);
}
//LumaShapening
#define px (1.0/1280.0*uf_fragCoordScale.x)
#define py (1.0/720.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 ]
//float px = 1.0/tex_size[0];
//float py = 1.0/tex_size[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
// -- Combining the values to get the final sharpened pixel --
//colorInput.rgb = colorInput.rgb + sharp_luma; // Add the sharpening to the input color.
return sharp_luma;
}
//Fake High Dynamic Range.
vec3 HDRPass(sampler2D tex, vec2 pos) {
vec3 color = texture(tex, pos).rgb;
vec3 bloom_sum1 = texture(tex, pos + vec2(1.5, -1.5) * radius1 * vec2(px, py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(-1.5, -1.5) * radius1 * vec2(px, py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(1.5, 1.5) * radius1 * vec2(px, py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(-1.5, 1.5) * radius1 * vec2(px, py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(0.0, -2.5) * radius1 * vec2(px, py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(0.0, 2.5) * radius1 * vec2(px, py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(-2.5, 0.0) * radius1 * vec2(px, py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(2.5, 0.0) * radius1 * vec2(px, py)).rgb;
bloom_sum1 *= 0.005;
vec3 bloom_sum2 = texture(tex, pos + vec2(1.5, -1.5) * radius2 * vec2(px, py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(-1.5, -1.5) * radius2 * vec2(px, py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(1.5, 1.5) * radius2 * vec2(px, py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(-1.5, 1.5) * radius2 * vec2(px, py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(0.0, -2.5) * radius2 * vec2(px, py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(0.0, 2.5) * radius2 * vec2(px, py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(-2.5, 0.0) * radius2 * vec2(px, py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(2.5, 0.0) * radius2 * vec2(px, py)).rgb;
bloom_sum2 *= 0.010;
float dist = radius2 - radius1;
vec3 HDR = (color + (bloom_sum2 - bloom_sum1)) * dist;
vec3 blend = HDR + color;
color = pow(abs(blend), vec3(abs(HDRPower))) + HDR;
return color;
}
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = 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 = passParameterSem0;
R1f.xyz = (texture(textureUnitPS0, R0f.xy).xyz);
vec3 bloom = texture(textureUnitPS0, passParameterSem0.xy).xyz;
bloom *= bloomFactor;
R0f.xyz = HDRPass(textureUnitPS1, passParameterSem0.xy);
float smask = lumasharping(textureUnitPS1, passParameterSem0.xy);
R0f.xyz += vec3(smask);
// 0
R126f.x = R1f.x + R0f.x;
PV0f.x = R126f.x;
R127f.y = R1f.y + R0f.y;
PV0f.y = R127f.y;
R126f.z = R1f.z + R0f.z;
PV0f.z = R126f.z;
R125f.w = 1.0;
// 1
tempf.x = dot(vec4(PV0f.x, PV0f.y, PV0f.z, -0.0), vec4(intBitsToFloat(0x3e99096c), intBitsToFloat(0x3f162b6b), intBitsToFloat(0x3dea4a8c), 0.0));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
// 2
R127f.x = -(R127f.y) * intBitsToFloat(0x3fb8aa3b);
PV0f.y = -(PV1f.x) * intBitsToFloat(0x3fb8aa3b);
R127f.z = -(R126f.x) * intBitsToFloat(0x3fb8aa3b);
R127f.w = -(R126f.z) * intBitsToFloat(0x3fb8aa3b);
R126f.w = 1.0 / PV1f.x;
PS0f = R126f.w;
// 3
PS1f = exp2(PV0f.y);
// 4
PV0f.x = -(PS1f)+1.0;
PS0f = exp2(R127f.x);
// 5
R127f.x = -(PS0f)+1.0;
R126f.y = mul_nonIEEE(PV0f.x, PV0f.x);
PV1f.z = PV0f.x * R126f.w;
PS1f = exp2(R127f.w);
// 6
backupReg0f = R126f.x;
backupReg1f = R127f.z;
R126f.x = mul_nonIEEE(backupReg0f, PV1f.z);
PV0f.y = -(PS1f)+1.0;
R127f.z = mul_nonIEEE(R126f.z, PV1f.z);
PV0f.z = R127f.z;
R127f.w = mul_nonIEEE(R127f.y, PV1f.z);
PV0f.w = R127f.w;
PS0f = exp2(backupReg1f);
// 7
PV1f.x = R127f.x + -(PV0f.w);
PV1f.y = PV0f.y + -(PV0f.z);
PV1f.w = -(PS0f)+1.0;
// 8
backupReg0f = R127f.z;
R127f.x = (mul_nonIEEE(PV1f.x, R126f.y) + R127f.w);
R127f.x = clamp(R127f.x, 0.0, 1.0);
PV0f.x = R127f.x;
PV0f.y = PV1f.w + -(R126f.x);
R127f.z = (mul_nonIEEE(PV1f.y, R126f.y) + backupReg0f);
R127f.z = clamp(R127f.z, 0.0, 1.0);
PV0f.z = R127f.z;
// 9
backupReg0f = R126f.x;
R126f.x = (mul_nonIEEE(PV0f.y, R126f.y) + backupReg0f);
R126f.x = clamp(R126f.x, 0.0, 1.0);
PV1f.x = R126f.x;
R126f.y = max(PV0f.x, PV0f.z);
PV1f.w = min(PV0f.x, PV0f.z);
// 10
tempf.x = dot(vec4(PV1f.x, R127f.x, R127f.z, R125f.w), vec4(intBitsToFloat(0x3f2aaaab), intBitsToFloat(0x3f2aaaab), intBitsToFloat(0x3f2aaaab), -(1.0)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R126f.z = min(PV1f.x, PV1f.w);
PS0f = R126f.z;
// 11
backupReg0f = R127f.x;
backupReg1f = R127f.z;
R127f.x = max(R126f.x, R126f.y);
PV1f.x = R127f.x;
R123f.y = (mul_nonIEEE(-(PV0f.x), PV0f.x) + 1.0);
PV1f.y = R123f.y;
R127f.z = backupReg0f + -(PS0f);
R125f.w = R126f.x + -(PS0f);
R126f.y = backupReg1f + -(PS0f);
PS1f = R126f.y;
// 12
R126f.x = (mul_nonIEEE(PV1f.y, intBitsToFloat(uf_remappedPS[0].y)) + intBitsToFloat(uf_remappedPS[0].x));
PV0f.x = R126f.x;
PV0f.y = -(R126f.z) + PV1f.x;
// 13
R123f.w = (mul_nonIEEE(-(PV0f.x), PV0f.y) + R127f.x);
PV1f.w = R123f.w;
// 14
R0f.x = (mul_nonIEEE(R126f.x, R125f.w) + PV1f.w);
R0f.y = (mul_nonIEEE(R126f.x, R127f.z) + PV1f.w);
R0f.z = (mul_nonIEEE(R126f.x, R126f.y) + PV1f.w);
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
vec3 color = (passPixelColor0.xyz);
color += bloom;
color = TonemapPass(color);
color = Technicolor2(color);
color = LevelsPass(color);
color = CurvesPass(color);
color = LiftGammaGainPass(color);
passPixelColor0 = vec4(color, R0f.w);
}

View File

@ -0,0 +1,402 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader bd8bba59e2149449
// Possible problems
// Being below 1.3.0 will give you double-vision with recent graphic packs. Update to 1.3.0 or above.
// If you're experiencing any issues (due to having the previous Clarity shaders installed), please remove and redownload all of the BotW packs.
// Credit to NAVras for merging to a better shader.
//(Thank you NAVras for debugging and answering silly questions.)
// Couldn't have got this far without you.
// Credit to getdls for adding exposure & Original Contrasty.
// Clarity GFX
// Credit to Jamie for main coding.
// Credit to Kiri coding & Reshade logic.
// Credit to Serfrost for preset values.
// Original shader dumped using cemu 1.10.0f, BotW 1.3.1
//v0.9b
//##########################################################
//ToneMapping
float bloomFactor = 0.15; //Default is 1.0
float Bleach = 0.3; //Default is 0.0
float exposure = 1.10; //Default is 1.0
float defog = 0.001; //Default is 0.0
//Lift Gamma Gain
#define RGB_Lift vec3(1.00, 1.00, 1.00) //[0.000 to 2.000] Adjust shadows for Red, Green and Blue.
#define RGB_Gamma vec3(0.70, 0.70, 0.70) //[0.000 to 2.000] Adjust midtones for Red, Green and Blue
#define RGB_Gain vec3(1.00, 1.00, 1.00) //[0.000 to 2.000] Adjust highlights for Red, Green and Blue
//Note that a value of 1.0 is a neutral setting that leave the color unchanged.
//Curves
float Contrast = 0.30; //[-1.0, 1.0] The amount of contrast you want
//Levels Control
const int BlackPoint = 0; //[0, 255] The black point is the new black - literally. Everything darker than this will become completely black
const int WhitePoint = 255; //[0, 255] The new white point. Everything brighter than this becomes completely white
//LumaShapening
#define sharp_strength 0.65 //[0.10 to 3.00] Strength of the sharpening Default is 0.65
#define sharp_clamp 0.035 //[0.000 to 1.000] Limits maximum amount of sharpening a pixel recieves - Default is 0.035
//Advanced sharpening settings
#define offset_bias 1.0 //[0.0 to 6.0] Offset bias adjusts the radius of the sampling pattern.
//Technicolor2
#define Technicolor2_Red_Strength -0.40 //Default is 0.0
#define Technicolor2_Green_Strength -0.40 //Default is 0.0
#define Technicolor2_Blue_Strength -0.40 //Default is 0.0
#define Technicolor2_Brightness 0.10 //Default is 1.0
#define Technicolor2_Strength 1.0 //Default is 1.0
#define Technicolor2_Saturation 0.80 //Default is 1.0
//Fake High Dynamic Range.
#define HDRPower 1.05 // 0.0 to 8.0 "Raising this seems to make the effect stronger and also darker , Default 1.30."
#define radius1 0.793 // 0.0 to 8.0 "Default 0.793 , will affect FX."
#define radius2 0.87 // 0.0 to 8.0 "Default 0.87 , will affect FX."
//###########################################################
//Do not edit under this line.
float sat = 0.0;
const vec3 FogColor = vec3(1.0, 1.5, 1.0); //defog Color";
uniform ivec4 uf_remappedPS[1];
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf46ac800 res 320x180x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x5) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf5c7b800 res 1280x720x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
layout(location = 0) in vec4 passParameterSem0;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if (v == 0x7FFFFFFF)
return floatBitsToInt(1.0);
else if (v == 0xFFFFFFFF)
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b) { if (a == 0.0 || b == 0.0) return 0.0; return a*b; }
//ToneMapping
vec3 TonemapPass(vec3 inputColor) {
vec3 color = inputColor;
color = clamp(color - defog * FogColor * 2.55, 0.0, 1.0); // defog
color *= exposure / (1.0 + color / exposure);
const vec3 coefLuma = vec3(0.2126, 0.7152, 0.0722);
float lum = dot(coefLuma, color);
float L = clamp(10.0 * (lum - 0.45), 0.0, 1.0);
vec3 A2 = Bleach * color;
vec3 result1 = 2.0f * color * lum;
vec3 result2 = 1.0f - 2.0f * (1.0f - lum) * (1.0f - color);
vec3 newColor = mix(result1, result2, L);
vec3 mixRGB = A2 * newColor;
color += ((1.0f - A2) * mixRGB);
vec3 middlegray = vec3(dot(color, vec3(1.0 / 3.0)));
vec3 diffcolor = color - middlegray;
color = (color + diffcolor * sat) / (1 + (diffcolor * sat)); // saturation
return color;
}
// Levels
vec3 LevelsPass(vec3 inputColor) {
float black_point_float = BlackPoint / 255.0;
float white_point_float = WhitePoint == BlackPoint ? (255.0 / 0.00025) : (255.0 / (WhitePoint - BlackPoint)); // Avoid division by zero if the white and black point are the same
vec3 color = inputColor;
color = color * white_point_float - (black_point_float * white_point_float);
return color;
}
//Curves
vec3 CurvesPass(vec3 inputColor) {
vec3 colorInput = inputColor;
float Contrast_blend = Contrast * 2.0; //I multiply by two to give it a strength closer to the other curves.
vec3 x = colorInput.rgb; //if the curve should be applied to both Luma and Chroma
x = x * (x * (1.5 - x) + 0.5); //horner form - fastest version
vec3 color = x; //if the curve should be applied to both Luma and Chroma
colorInput.rgb = mix(colorInput.rgb, color, Contrast_blend); //Blend by Contrast
return colorInput;
}
//TECHNICOLOR2
vec3 Technicolor2(vec3 inputColor) {
vec3 color = inputColor;
vec3 Color_Strength = vec3(Technicolor2_Red_Strength, Technicolor2_Green_Strength, Technicolor2_Blue_Strength);
vec3 source = color;
vec3 temp = 1.0 - source;
vec3 target = temp.grg;
vec3 target2 = temp.bbr;
vec3 temp2 = source * target;
temp2 *= target2;
temp = temp2 * Color_Strength;
temp2 *= Technicolor2_Brightness;
target = temp.grg;
target2 = temp.bbr;
temp = source - target;
temp += temp2;
temp2 = temp - target2;
color = mix(source, temp2, Technicolor2_Strength);
color = mix(vec3(dot(color, vec3(0.333))), color, Technicolor2_Saturation);
return color;
}
//Lift Gamma Gain
vec3 LiftGammaGainPass(vec3 colorInput)
{
// -- Get input --
vec3 color = colorInput;
// -- Lift --
color = color * (1.5 - 0.5 * RGB_Lift) + 0.5 * RGB_Lift - 0.5;
color = clamp(color, 0.0, 1.0); //isn't strictly necessary, but doesn't cost performance.
// -- Gain --
color *= RGB_Gain;
// -- Gamma --
color = pow(color, 1.0 / RGB_Gamma); //Gamma
// -- Return output --
return clamp(color, 0.0, 1.0);
}
//LumaShapening
#define px (1.0/1280.0*uf_fragCoordScale.x)
#define py (1.0/720.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 ]
//float px = 1.0/tex_size[0];
//float py = 1.0/tex_size[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
// -- Combining the values to get the final sharpened pixel --
//colorInput.rgb = colorInput.rgb + sharp_luma; // Add the sharpening to the input color.
return sharp_luma;
}
//Fake High Dynamic Range.
vec3 HDRPass(sampler2D tex, vec2 pos) {
vec3 color = texture(tex, pos).rgb;
vec3 bloom_sum1 = texture(tex, pos + vec2(1.5, -1.5) * radius1 * vec2(px, py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(-1.5, -1.5) * radius1 * vec2(px, py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(1.5, 1.5) * radius1 * vec2(px, py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(-1.5, 1.5) * radius1 * vec2(px, py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(0.0, -2.5) * radius1 * vec2(px, py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(0.0, 2.5) * radius1 * vec2(px, py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(-2.5, 0.0) * radius1 * vec2(px, py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(2.5, 0.0) * radius1 * vec2(px, py)).rgb;
bloom_sum1 *= 0.005;
vec3 bloom_sum2 = texture(tex, pos + vec2(1.5, -1.5) * radius2 * vec2(px, py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(-1.5, -1.5) * radius2 * vec2(px, py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(1.5, 1.5) * radius2 * vec2(px, py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(-1.5, 1.5) * radius2 * vec2(px, py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(0.0, -2.5) * radius2 * vec2(px, py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(0.0, 2.5) * radius2 * vec2(px, py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(-2.5, 0.0) * radius2 * vec2(px, py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(2.5, 0.0) * radius2 * vec2(px, py)).rgb;
bloom_sum2 *= 0.010;
float dist = radius2 - radius1;
vec3 HDR = (color + (bloom_sum2 - bloom_sum1)) * dist;
vec3 blend = HDR + color;
color = pow(abs(blend), vec3(abs(HDRPower))) + HDR;
return color;
}
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = 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 = passParameterSem0;
R1f.xyz = (texture(textureUnitPS0, R0f.xy).xyz);
vec3 bloom = texture(textureUnitPS0, passParameterSem0.xy).xyz;
bloom *= bloomFactor;
R0f.xyz = HDRPass(textureUnitPS1, passParameterSem0.xy);
float smask = lumasharping(textureUnitPS1, passParameterSem0.xy);
R0f.xyz += vec3(smask);
// 0
R126f.x = R1f.x + R0f.x;
PV0f.x = R126f.x;
R127f.y = R1f.y + R0f.y;
PV0f.y = R127f.y;
R126f.z = R1f.z + R0f.z;
PV0f.z = R126f.z;
R125f.w = 1.0;
// 1
tempf.x = dot(vec4(PV0f.x, PV0f.y, PV0f.z, -0.0), vec4(intBitsToFloat(0x3e99096c), intBitsToFloat(0x3f162b6b), intBitsToFloat(0x3dea4a8c), 0.0));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
// 2
R127f.x = -(R127f.y) * intBitsToFloat(0x3fb8aa3b);
PV0f.y = -(PV1f.x) * intBitsToFloat(0x3fb8aa3b);
R127f.z = -(R126f.x) * intBitsToFloat(0x3fb8aa3b);
R127f.w = -(R126f.z) * intBitsToFloat(0x3fb8aa3b);
R126f.w = 1.0 / PV1f.x;
PS0f = R126f.w;
// 3
PS1f = exp2(PV0f.y);
// 4
PV0f.x = -(PS1f)+1.0;
PS0f = exp2(R127f.x);
// 5
R127f.x = -(PS0f)+1.0;
R126f.y = mul_nonIEEE(PV0f.x, PV0f.x);
PV1f.z = PV0f.x * R126f.w;
PS1f = exp2(R127f.w);
// 6
backupReg0f = R126f.x;
backupReg1f = R127f.z;
R126f.x = mul_nonIEEE(backupReg0f, PV1f.z);
PV0f.y = -(PS1f)+1.0;
R127f.z = mul_nonIEEE(R126f.z, PV1f.z);
PV0f.z = R127f.z;
R127f.w = mul_nonIEEE(R127f.y, PV1f.z);
PV0f.w = R127f.w;
PS0f = exp2(backupReg1f);
// 7
PV1f.x = R127f.x + -(PV0f.w);
PV1f.y = PV0f.y + -(PV0f.z);
PV1f.w = -(PS0f)+1.0;
// 8
backupReg0f = R127f.z;
R127f.x = (mul_nonIEEE(PV1f.x, R126f.y) + R127f.w);
R127f.x = clamp(R127f.x, 0.0, 1.0);
PV0f.x = R127f.x;
PV0f.y = PV1f.w + -(R126f.x);
R127f.z = (mul_nonIEEE(PV1f.y, R126f.y) + backupReg0f);
R127f.z = clamp(R127f.z, 0.0, 1.0);
PV0f.z = R127f.z;
// 9
backupReg0f = R126f.x;
R126f.x = (mul_nonIEEE(PV0f.y, R126f.y) + backupReg0f);
R126f.x = clamp(R126f.x, 0.0, 1.0);
PV1f.x = R126f.x;
R126f.y = max(PV0f.x, PV0f.z);
PV1f.w = min(PV0f.x, PV0f.z);
// 10
tempf.x = dot(vec4(PV1f.x, R127f.x, R127f.z, R125f.w), vec4(intBitsToFloat(0x3f2aaaab), intBitsToFloat(0x3f2aaaab), intBitsToFloat(0x3f2aaaab), -(1.0)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R126f.z = min(PV1f.x, PV1f.w);
PS0f = R126f.z;
// 11
backupReg0f = R127f.x;
backupReg1f = R127f.z;
R127f.x = max(R126f.x, R126f.y);
PV1f.x = R127f.x;
R123f.y = (mul_nonIEEE(-(PV0f.x), PV0f.x) + 1.0);
PV1f.y = R123f.y;
R127f.z = backupReg0f + -(PS0f);
R125f.w = R126f.x + -(PS0f);
R126f.y = backupReg1f + -(PS0f);
PS1f = R126f.y;
// 12
R126f.x = (mul_nonIEEE(PV1f.y, intBitsToFloat(uf_remappedPS[0].y)) + intBitsToFloat(uf_remappedPS[0].x));
PV0f.x = R126f.x;
PV0f.y = -(R126f.z) + PV1f.x;
// 13
R123f.w = (mul_nonIEEE(-(PV0f.x), PV0f.y) + R127f.x);
PV1f.w = R123f.w;
// 14
R0f.x = (mul_nonIEEE(R126f.x, R125f.w) + PV1f.w);
R0f.y = (mul_nonIEEE(R126f.x, R127f.z) + PV1f.w);
R0f.z = (mul_nonIEEE(R126f.x, R126f.y) + PV1f.w);
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
vec3 color = (passPixelColor0.xyz);
color += bloom;
color = TonemapPass(color);
color = Technicolor2(color);
color = LevelsPass(color);
color = CurvesPass(color);
color = LiftGammaGainPass(color);
passPixelColor0 = vec4(color, R0f.w);
}

View File

@ -0,0 +1,368 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader bd8bba59e2149449
// Possible problems
// Being below 1.3.0 will give you double-vision with recent graphic packs. Update to 1.3.0 or above.
// If you're experiencing any issues (due to having the previous Clarity shaders installed), please remove and redownload all of the BotW packs.
// Changelog V0.1
// Changed from shader f14bb_ps.txt to bd8bb_ps.txt
// Credit to NAVras for merging to a better shader.(specal Note Thank you NAVras, For Helping Debug and answering silly questions.)
// Could not have got this far without you.
// Credit to getdls for adding exposure & Original Contrasty.
// Clarity GFX
// Credit to Jamie for main coding.
// Credit to Kiri coding & Reshade logic.
// Credit to Serfrost for preset values.
// Original shader dumped using cemu 1.10.0f, BotW 1.3.1
// Changelog v0.7
//##########################################################
///ToneMapping
float bloomFactor = 0.33; //Default is 1.0
float Bleach = 0.0002; //Default is 0.0
float exposure = 1.25; //Default is 1.0
float defog = 0.003; //Default is 0.0
//LumaShapening
#define sharp_strength 0.25 //[0.10 to 3.00] Strength of the sharpening Default is 0.65
#define sharp_clamp 0.085 //[0.000 to 1.000] Limits maximum amount of sharpening a pixel recieves - Default is 0.035
//Advanced sharpening settings
#define offset_bias 1.0 //[0.0 to 6.0] Offset bias adjusts the radius of the sampling pattern.
//Technicolor2
#define Technicolor2_Red_Strength 0.0 //Default is 0.0
#define Technicolor2_Green_Strength 0.0 //Default is 0.0
#define Technicolor2_Blue_Strength 0.0 //Default is 0.0
#define Technicolor2_Brightness 1.00 //Default is 1.0
#define Technicolor2_Strength 0.40 //Default is 1.0
#define Technicolor2_Saturation 0.51 //Default is 1.0
//Lift Gamma Gain
#define RGB_Lift vec3(1.0, 1.0, 1.0) //[0.000 to 2.000] Adjust shadows for Red, Green and Blue.
#define RGB_Gamma vec3(0.60, 0.60, 0.60) //[0.000 to 2.000] Adjust midtones for Red, Green and Blue
#define RGB_Gain vec3(1.0, 1.0, 1.0) //[0.000 to 2.000] Adjust highlights for Red, Green and Blue
//Note that a value of 1.0 is a neutral setting that leave the color unchanged.
//Fake High Dynamic Range.
#define HDRPower 1.20 // 0.0 to 8.0 "Raising this seems to make the effect stronger and also darker , Default 1.30."
#define radius1 0.793 // 0.0 to 8.0 "Default 0.793 , will affect FX."
#define radius2 0.87 // 0.0 to 8.0 "Default 0.87 , will affect FX."
//-----------------------------------------------------------
//End of adjustable values
//###########################################################
//Do not edit under this line.
float sat = 0.0;
const vec3 FogColor = vec3(0.0, 1.03, 0.0); //defog Color";
uniform ivec4 uf_remappedPS[1];
layout(binding = 0) uniform sampler2D textureUnitPS0;// Bloom
layout(binding = 1) uniform sampler2D textureUnitPS1;// LumaShapening, HDR
layout(location = 0) in vec4 passParameterSem0;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
//ToneMapping
vec3 TonemapPass(vec3 inputColor) {
vec3 color = inputColor;
color = clamp(color - defog * FogColor * 2.55, 0.0, 1.0); // defog
color *= exposure/(1.0+ color / exposure);
const vec3 coefLuma = vec3(0.2126, 0.7152, 0.0722);
float lum = dot(coefLuma, color);
float L = clamp(10.0 * (lum - 0.45), 0.0, 1.0);
vec3 A2 = Bleach * color;
vec3 result1 = 2.0f * color * lum;
vec3 result2 = 1.0f - 2.0f * (1.0f - lum) * (1.0f - color);
vec3 newColor = mix(result1, result2, L);
vec3 mixRGB = A2 * newColor;
color += ((1.0f - A2) * mixRGB);
vec3 middlegray = vec3(dot(color, vec3(1.0 / 3.0)));
vec3 diffcolor = color - middlegray;
color = (color + diffcolor * sat) / (1 + (diffcolor * sat)); // saturation
return color;
}
//TECHNICOLOR2
vec3 Technicolor2(vec3 inputColor) {
vec3 color = inputColor;
vec3 Color_Strength = vec3(Technicolor2_Red_Strength, Technicolor2_Green_Strength, Technicolor2_Blue_Strength);
vec3 source = color;
vec3 temp = 1.0 - source;
vec3 target = temp.grg;
vec3 target2 = temp.bbr;
vec3 temp2 = source * target;
temp2 *= target2;
temp = temp2 * Color_Strength;
temp2 *= Technicolor2_Brightness;
target = temp.grg;
target2 = temp.bbr;
temp = source - target;
temp += temp2;
temp2 = temp - target2;
color = mix(source, temp2, Technicolor2_Strength);
color = mix(vec3(dot(color, vec3(0.333))), color, Technicolor2_Saturation);
return color;
}
//Lift Gamma Gain
vec3 LiftGammaGainPass( vec3 colorInput )
{
// -- Get input --
vec3 color = colorInput;
// -- Lift --
color = color * (1.5-0.5 * RGB_Lift) + 0.5 * RGB_Lift - 0.5;
color = clamp(color, 0.0, 1.0); //isn't strictly necessary, but doesn't cost performance.
// -- Gain --
color *= RGB_Gain;
// -- Gamma --
color = pow(color, 1.0 / RGB_Gamma); //Gamma
// -- Return output --
return clamp(color, 0.0, 1.0);
}
//LumaShapening
#define px (1.0/1280.0*uf_fragCoordScale.x)
#define py (1.0/720.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 ]
//float px = 1.0/tex_size[0];
//float py = 1.0/tex_size[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
// -- Combining the values to get the final sharpened pixel --
//colorInput.rgb = colorInput.rgb + sharp_luma; // Add the sharpening to the input color.
return sharp_luma;
}
//Fake High Dynamic Range.
vec3 HDRPass(sampler2D tex, vec2 pos){
vec3 color = texture(tex, pos).rgb;
vec3 bloom_sum1 = texture(tex, pos + vec2(1.5, -1.5) * radius1 * vec2(px,py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(-1.5, -1.5) * radius1 * vec2(px,py)).rgb;
bloom_sum1 += texture(tex, pos + vec2( 1.5, 1.5) * radius1 * vec2(px,py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(-1.5, 1.5) * radius1 * vec2(px,py)).rgb;
bloom_sum1 += texture(tex, pos + vec2( 0.0, -2.5) * radius1 * vec2(px,py)).rgb;
bloom_sum1 += texture(tex, pos + vec2( 0.0, 2.5) * radius1 * vec2(px,py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(-2.5, 0.0) * radius1 * vec2(px,py)).rgb;
bloom_sum1 += texture(tex, pos + vec2( 2.5, 0.0) * radius1 * vec2(px,py)).rgb;
bloom_sum1 *= 0.005;
vec3 bloom_sum2 = texture(tex, pos + vec2(1.5, -1.5) * radius2 * vec2(px,py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(-1.5, -1.5) * radius2 * vec2(px,py)).rgb;
bloom_sum2 += texture(tex, pos + vec2( 1.5, 1.5) * radius2 * vec2(px,py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(-1.5, 1.5) * radius2 * vec2(px,py)).rgb;
bloom_sum2 += texture(tex, pos + vec2( 0.0, -2.5) * radius2 * vec2(px,py)).rgb;
bloom_sum2 += texture(tex, pos + vec2( 0.0, 2.5) * radius2 * vec2(px,py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(-2.5, 0.0) * radius2 * vec2(px,py)).rgb;
bloom_sum2 += texture(tex, pos + vec2( 2.5, 0.0) * radius2 * vec2(px,py)).rgb;
bloom_sum2 *= 0.010;
float dist = radius2 - radius1;
vec3 HDR = (color + (bloom_sum2 - bloom_sum1)) * dist;
vec3 blend = HDR + color;
color = pow(abs(blend), vec3(abs(HDRPower))) + HDR;
return color;
}
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = 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 = passParameterSem0;
R1f.xyz = (texture(textureUnitPS0, R0f.xy).xyz);
vec3 bloom = texture(textureUnitPS0, passParameterSem0.xy).xyz;
bloom *= bloomFactor;
R0f.xyz = HDRPass(textureUnitPS1, passParameterSem0.xy);
float smask = lumasharping(textureUnitPS1, passParameterSem0.xy);
R0f.xyz += vec3(smask);
// 0
R126f.x = R1f.x + R0f.x;
PV0f.x = R126f.x;
R127f.y = R1f.y + R0f.y;
PV0f.y = R127f.y;
R126f.z = R1f.z + R0f.z;
PV0f.z = R126f.z;
R125f.w = 1.0;
// 1
tempf.x = dot(vec4(PV0f.x,PV0f.y,PV0f.z,-0.0),vec4(intBitsToFloat(0x3e99096c),intBitsToFloat(0x3f162b6b),intBitsToFloat(0x3dea4a8c),0.0));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
// 2
R127f.x = -(R127f.y) * intBitsToFloat(0x3fb8aa3b);
PV0f.y = -(PV1f.x) * intBitsToFloat(0x3fb8aa3b);
R127f.z = -(R126f.x) * intBitsToFloat(0x3fb8aa3b);
R127f.w = -(R126f.z) * intBitsToFloat(0x3fb8aa3b);
R126f.w = 1.0 / PV1f.x;
PS0f = R126f.w;
// 3
PS1f = exp2(PV0f.y);
// 4
PV0f.x = -(PS1f) + 1.0;
PS0f = exp2(R127f.x);
// 5
R127f.x = -(PS0f) + 1.0;
R126f.y = mul_nonIEEE(PV0f.x, PV0f.x);
PV1f.z = PV0f.x * R126f.w;
PS1f = exp2(R127f.w);
// 6
backupReg0f = R126f.x;
backupReg1f = R127f.z;
R126f.x = mul_nonIEEE(backupReg0f, PV1f.z);
PV0f.y = -(PS1f) + 1.0;
R127f.z = mul_nonIEEE(R126f.z, PV1f.z);
PV0f.z = R127f.z;
R127f.w = mul_nonIEEE(R127f.y, PV1f.z);
PV0f.w = R127f.w;
PS0f = exp2(backupReg1f);
// 7
PV1f.x = R127f.x + -(PV0f.w);
PV1f.y = PV0f.y + -(PV0f.z);
PV1f.w = -(PS0f) + 1.0;
// 8
backupReg0f = R127f.z;
R127f.x = (mul_nonIEEE(PV1f.x,R126f.y) + R127f.w);
R127f.x = clamp(R127f.x, 0.0, 1.0);
PV0f.x = R127f.x;
PV0f.y = PV1f.w + -(R126f.x);
R127f.z = (mul_nonIEEE(PV1f.y,R126f.y) + backupReg0f);
R127f.z = clamp(R127f.z, 0.0, 1.0);
PV0f.z = R127f.z;
// 9
backupReg0f = R126f.x;
R126f.x = (mul_nonIEEE(PV0f.y,R126f.y) + backupReg0f);
R126f.x = clamp(R126f.x, 0.0, 1.0);
PV1f.x = R126f.x;
R126f.y = max(PV0f.x, PV0f.z);
PV1f.w = min(PV0f.x, PV0f.z);
// 10
tempf.x = dot(vec4(PV1f.x,R127f.x,R127f.z,R125f.w),vec4(intBitsToFloat(0x3f2aaaab),intBitsToFloat(0x3f2aaaab),intBitsToFloat(0x3f2aaaab),-(1.0)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R126f.z = min(PV1f.x, PV1f.w);
PS0f = R126f.z;
// 11
backupReg0f = R127f.x;
backupReg1f = R127f.z;
R127f.x = max(R126f.x, R126f.y);
PV1f.x = R127f.x;
R123f.y = (mul_nonIEEE(-(PV0f.x),PV0f.x) + 1.0);
PV1f.y = R123f.y;
R127f.z = backupReg0f + -(PS0f);
R125f.w = R126f.x + -(PS0f);
R126f.y = backupReg1f + -(PS0f);
PS1f = R126f.y;
// 12
R126f.x = (mul_nonIEEE(PV1f.y,intBitsToFloat(uf_remappedPS[0].y)) + intBitsToFloat(uf_remappedPS[0].x));
PV0f.x = R126f.x;
PV0f.y = -(R126f.z) + PV1f.x;
// 13
R123f.w = (mul_nonIEEE(-(PV0f.x),PV0f.y) + R127f.x);
PV1f.w = R123f.w;
// 14
R0f.x = (mul_nonIEEE(R126f.x,R125f.w) + PV1f.w);
R0f.y = (mul_nonIEEE(R126f.x,R127f.z) + PV1f.w);
R0f.z = (mul_nonIEEE(R126f.x,R126f.y) + PV1f.w);
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
vec3 color = (passPixelColor0.xyz);
color += bloom;
color = TonemapPass(color);
color = Technicolor2(color);
color = LiftGammaGainPass(color);
passPixelColor0 = vec4(color, R0f.w);
}

View File

@ -1,10 +0,0 @@
There is currently 3 releases of Clarity in this pack,
The default is with No lumasharpening or HDR.
The second titled.lumasharpening is the same file as above but with lumashapening.
The third FakeHDR is the same but with Faked HDR
You cannot Enable all 3 packs at once , so you need to rename the file by removing the ending extention .lumasharpening or FakeHDR .
The Origional File I would back upto its name.txt.origional case you want to revert for any reason.
Please Note sword effect's are slightly off in Faked HDR .. Looking for a solution.
lumasharpening and FakeHDR were Brought over from SweetFX, Reshade to be used as a 1- pass shader .. They cannot be enabled or used at the same time..

View File

@ -7,10 +7,10 @@
// Being below 1.3.0 will give you double-vision with recent graphic packs. Update to 1.3.0 or above.
// If you're experiencing any issues (due to having the previous Clarity shaders installed), please remove and redownload all of the BotW packs.
// Changelog V0.1
// Changed from shader f14bb_ps.txt to bd8bb_ps.txt
// Credit to NAVras for merging to a better shader.
//(Thank you NAVras for debugging and answering silly questions.)
// Couldn't have got this far without you.
// Credit to getdls for adding exposure & Original Contrasty.
// Clarity GFX
@ -19,33 +19,56 @@
// Credit to Serfrost for preset values.
// Original shader dumped using cemu 1.10.0f, BotW 1.3.1
// Changelog v0.5
//v0.9b
//##########################################################
// Contrast, saturation, Gamma , Vibrance , Defog.
//ToneMapping
float bloomFactor = 0.2; //Default is 1.0
float Bleach = 0.3; //Default is 0.0
float exposure = 1.13; //Default is 1.0
float defog = 0.004; //Default is 0.0
//Adjustable Values:
const float con = 0.80; // [0.0 ~ 1.5] [0.5 Default] Contrast Adjustment - or + values work
const float sat = 0.00; // [0.1 ~ 1.5] [0.0 Default] Color Saturation Adjustment. - or + values work
const float gamma = 1.43; // [0.0 ~ 2.5] [1.0 Default] Gamma Adjustment - or + values work
//Luma Values for changing color. Machinima tool mostly.
const float AvgLumR = 0.0; // [0.0 ~ 1.5] [0.0 Default] Use very small increments, as it changes RGB values.
const float AvgLumG = -0.003; // [0.0 ~ 1.5] [0.0 Default] Use very small increments, as it changes RGB values.
const float AvgLumB = 0.0; // [0.0 ~ 1.5] [0.0 Default] Use very small increments, as it changes RGB values.
//-----------------------------------------------------------
//Lift Gamma Gain
#define RGB_Lift vec3(1.05, 1.05, 1.05) //[0.000 to 2.000] Adjust shadows for Red, Green and Blue.
#define RGB_Gamma vec3(0.70, 0.70, 0.70) //[0.000 to 2.000] Adjust midtones for Red, Green and Blue
#define RGB_Gain vec3(1.05, 1.00, 1.05) //[0.000 to 2.000] Adjust highlights for Red, Green and Blue
//Note that a value of 1.0 is a neutral setting that leave the color unchanged.
//End of adjustable values
//Curves
float Contrast = 0.50; //[-1.0, 1.0] The amount of contrast you want
//Levels Control
const int BlackPoint = 0; //[0, 255] The black point is the new black - literally. Everything darker than this will become completely black
const int WhitePoint = 255; //[0, 255] The new white point. Everything brighter than this becomes completely white
//LumaShapening
#define sharp_strength 0.65 //[0.10 to 3.00] Strength of the sharpening Default is 0.65
#define sharp_clamp 0.035 //[0.000 to 1.000] Limits maximum amount of sharpening a pixel recieves - Default is 0.035
//Advanced sharpening settings
#define offset_bias 1.0 //[0.0 to 6.0] Offset bias adjusts the radius of the sampling pattern.
//Technicolor2
#define Technicolor2_Red_Strength 0.0 //Default is 0.0
#define Technicolor2_Green_Strength 0.0 //Default is 0.0
#define Technicolor2_Blue_Strength 0.0 //Default is 0.0
#define Technicolor2_Brightness 0.50 //Default is 1.0
#define Technicolor2_Strength 1.0 //Default is 1.0
#define Technicolor2_Saturation 0.70 //Default is 1.0
//Fake High Dynamic Range.
#define HDRPower 1.15 // 0.0 to 8.0 "Raising this seems to make the effect stronger and also darker , Default 1.30."
#define radius1 0.793 // 0.0 to 8.0 "Default 0.793 , will affect FX."
#define radius2 0.87 // 0.0 to 8.0 "Default 0.87 , will affect FX."
//###########################################################
//Do not edit under this line.
const float exposure = 0.00;
const float Bleach = 0.0;
const float brt = 0.0;
const vec3 FogColor = vec3(0.0, 0.0, 0.0); //defog Color";
float sat = 0.0;
const vec3 FogColor = vec3(1.0, 1.5, 1.0); //defog Color";
uniform ivec4 uf_remappedPS[1];
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf46ac800 res 320x180x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x5) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 1
@ -55,170 +78,325 @@ 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));
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; }
float mul_nonIEEE(float a, float b) { if (a == 0.0 || b == 0.0) return 0.0; return a*b; }
//-----------------------------------------------------------
// Based on CeeJay.dk's original GLSL/HLSL.
//-----------------------------------------------------------
//ToneMapping
vec3 TonemapPass(vec3 inputColor) {
vec3 color = inputColor;
//color = clamp(color - defog * FogColor * 2.55, 0.0, 1.0); // defog
color *= pow(2.0f, exposure); // exposure
color = pow(color, vec3(gamma)); // Gamma
color = clamp(color - defog * FogColor * 2.55, 0.0, 1.0); // defog
color *= exposure / (1.0 + color / exposure);
const vec3 coefLuma = vec3(0.2126, 0.7152, 0.0722);
float lum = dot(coefLuma, color);
float L = clamp(10.0 * (lum - 0.45), 0.0, 1.0);
vec3 A2 = Bleach * color;
vec3 result1 = 2.0f * color * lum;
vec3 result2 = 1.0f - 2.0f * (1.0f - lum) * (1.0f - color);
vec3 newColor = mix(result1, result2, L);
vec3 mixRGB = A2 * newColor;
color += ((1.0f - A2) * mixRGB);
vec3 middlegray = vec3(dot(color, vec3(1.0 / 3.0)));
vec3 diffcolor = color - middlegray;
color = (color + diffcolor * sat) / (1 + (diffcolor * sat)); // saturation
return color;
}
vec3 brightnessContrast(vec3 color, float brt, float con){
return (color - 0.5) * con + 0.5 + brt;
// Levels
vec3 LevelsPass(vec3 inputColor) {
float black_point_float = BlackPoint / 255.0;
float white_point_float = WhitePoint == BlackPoint ? (255.0 / 0.00025) : (255.0 / (WhitePoint - BlackPoint)); // Avoid division by zero if the white and black point are the same
vec3 color = inputColor;
color = color * white_point_float - (black_point_float * white_point_float);
return color;
}
//Curves
vec3 CurvesPass(vec3 inputColor) {
vec3 colorInput = inputColor;
float Contrast_blend = Contrast * 2.0; //I multiply by two to give it a strength closer to the other curves.
vec3 x = colorInput.rgb; //if the curve should be applied to both Luma and Chroma
x = x * (x * (1.5 - x) + 0.5); //horner form - fastest version
vec3 color = x; //if the curve should be applied to both Luma and Chroma
colorInput.rgb = mix(colorInput.rgb, color, Contrast_blend); //Blend by Contrast
return colorInput;
}
//TECHNICOLOR2
vec3 Technicolor2(vec3 inputColor) {
vec3 color = inputColor;
vec3 Color_Strength = vec3(Technicolor2_Red_Strength, Technicolor2_Green_Strength, Technicolor2_Blue_Strength);
vec3 source = color;
vec3 temp = 1.0 - source;
vec3 target = temp.grg;
vec3 target2 = temp.bbr;
vec3 temp2 = source * target;
temp2 *= target2;
temp = temp2 * Color_Strength;
temp2 *= Technicolor2_Brightness;
target = temp.grg;
target2 = temp.bbr;
temp = source - target;
temp += temp2;
temp2 = temp - target2;
color = mix(source, temp2, Technicolor2_Strength);
color = mix(vec3(dot(color, vec3(0.333))), color, Technicolor2_Saturation);
return color;
}
//Lift Gamma Gain
vec3 LiftGammaGainPass(vec3 colorInput)
{
// -- Get input --
vec3 color = colorInput;
// -- Lift --
color = color * (1.5 - 0.5 * RGB_Lift) + 0.5 * RGB_Lift - 0.5;
color = clamp(color, 0.0, 1.0); //isn't strictly necessary, but doesn't cost performance.
// -- Gain --
color *= RGB_Gain;
// -- Gamma --
color = pow(color, 1.0 / RGB_Gamma); //Gamma
// -- Return output --
return clamp(color, 0.0, 1.0);
}
//LumaShapening
#define px (1.0/1280.0*uf_fragCoordScale.x)
#define py (1.0/720.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 ]
//float px = 1.0/tex_size[0];
//float py = 1.0/tex_size[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
// -- Combining the values to get the final sharpened pixel --
//colorInput.rgb = colorInput.rgb + sharp_luma; // Add the sharpening to the input color.
return sharp_luma;
}
//Fake High Dynamic Range.
vec3 HDRPass(sampler2D tex, vec2 pos) {
vec3 color = texture(tex, pos).rgb;
vec3 bloom_sum1 = texture(tex, pos + vec2(1.5, -1.5) * radius1 * vec2(px, py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(-1.5, -1.5) * radius1 * vec2(px, py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(1.5, 1.5) * radius1 * vec2(px, py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(-1.5, 1.5) * radius1 * vec2(px, py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(0.0, -2.5) * radius1 * vec2(px, py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(0.0, 2.5) * radius1 * vec2(px, py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(-2.5, 0.0) * radius1 * vec2(px, py)).rgb;
bloom_sum1 += texture(tex, pos + vec2(2.5, 0.0) * radius1 * vec2(px, py)).rgb;
bloom_sum1 *= 0.005;
vec3 bloom_sum2 = texture(tex, pos + vec2(1.5, -1.5) * radius2 * vec2(px, py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(-1.5, -1.5) * radius2 * vec2(px, py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(1.5, 1.5) * radius2 * vec2(px, py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(-1.5, 1.5) * radius2 * vec2(px, py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(0.0, -2.5) * radius2 * vec2(px, py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(0.0, 2.5) * radius2 * vec2(px, py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(-2.5, 0.0) * radius2 * vec2(px, py)).rgb;
bloom_sum2 += texture(tex, pos + vec2(2.5, 0.0) * radius2 * vec2(px, py)).rgb;
bloom_sum2 *= 0.010;
float dist = radius2 - radius1;
vec3 HDR = (color + (bloom_sum2 - bloom_sum1)) * dist;
vec3 blend = HDR + color;
color = pow(abs(blend), vec3(abs(HDRPower))) + HDR;
return color;
}
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = 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 = passParameterSem0;
R1f.xyz = (texture(textureUnitPS0, R0f.xy).xyz);
R0f.xyz = (texture(textureUnitPS1, R0f.xy).xyz);
// 0
R126f.x = R1f.x + R0f.x;
PV0f.x = R126f.x;
R127f.y = R1f.y + R0f.y;
PV0f.y = R127f.y;
R126f.z = R1f.z + R0f.z;
PV0f.z = R126f.z;
R125f.w = 1.0;
// 1
tempf.x = dot(vec4(PV0f.x,PV0f.y,PV0f.z,-0.0),vec4(intBitsToFloat(0x3e99096c),intBitsToFloat(0x3f162b6b),intBitsToFloat(0x3dea4a8c),0.0));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
// 2
R127f.x = -(R127f.y) * intBitsToFloat(0x3fb8aa3b);
PV0f.y = -(PV1f.x) * intBitsToFloat(0x3fb8aa3b);
R127f.z = -(R126f.x) * intBitsToFloat(0x3fb8aa3b);
R127f.w = -(R126f.z) * intBitsToFloat(0x3fb8aa3b);
R126f.w = 1.0 / PV1f.x;
PS0f = R126f.w;
// 3
PS1f = exp2(PV0f.y);
// 4
PV0f.x = -(PS1f) + 1.0;
PS0f = exp2(R127f.x);
// 5
R127f.x = -(PS0f) + 1.0;
R126f.y = mul_nonIEEE(PV0f.x, PV0f.x);
PV1f.z = PV0f.x * R126f.w;
PS1f = exp2(R127f.w);
// 6
backupReg0f = R126f.x;
backupReg1f = R127f.z;
R126f.x = mul_nonIEEE(backupReg0f, PV1f.z);
PV0f.y = -(PS1f) + 1.0;
R127f.z = mul_nonIEEE(R126f.z, PV1f.z);
PV0f.z = R127f.z;
R127f.w = mul_nonIEEE(R127f.y, PV1f.z);
PV0f.w = R127f.w;
PS0f = exp2(backupReg1f);
// 7
PV1f.x = R127f.x + -(PV0f.w);
PV1f.y = PV0f.y + -(PV0f.z);
PV1f.w = -(PS0f) + 1.0;
// 8
backupReg0f = R127f.z;
R127f.x = (mul_nonIEEE(PV1f.x,R126f.y) + R127f.w);
R127f.x = clamp(R127f.x, 0.0, 1.0);
PV0f.x = R127f.x;
PV0f.y = PV1f.w + -(R126f.x);
R127f.z = (mul_nonIEEE(PV1f.y,R126f.y) + backupReg0f);
R127f.z = clamp(R127f.z, 0.0, 1.0);
PV0f.z = R127f.z;
// 9
backupReg0f = R126f.x;
R126f.x = (mul_nonIEEE(PV0f.y,R126f.y) + backupReg0f);
R126f.x = clamp(R126f.x, 0.0, 1.0);
PV1f.x = R126f.x;
R126f.y = max(PV0f.x, PV0f.z);
PV1f.w = min(PV0f.x, PV0f.z);
// 10
tempf.x = dot(vec4(PV1f.x,R127f.x,R127f.z,R125f.w),vec4(intBitsToFloat(0x3f2aaaab),intBitsToFloat(0x3f2aaaab),intBitsToFloat(0x3f2aaaab),-(1.0)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R126f.z = min(PV1f.x, PV1f.w);
PS0f = R126f.z;
// 11
backupReg0f = R127f.x;
backupReg1f = R127f.z;
R127f.x = max(R126f.x, R126f.y);
PV1f.x = R127f.x;
R123f.y = (mul_nonIEEE(-(PV0f.x),PV0f.x) + 1.0);
PV1f.y = R123f.y;
R127f.z = backupReg0f + -(PS0f);
R125f.w = R126f.x + -(PS0f);
R126f.y = backupReg1f + -(PS0f);
PS1f = R126f.y;
// 12
R126f.x = (mul_nonIEEE(PV1f.y,intBitsToFloat(uf_remappedPS[0].y)) + intBitsToFloat(uf_remappedPS[0].x));
PV0f.x = R126f.x;
PV0f.y = -(R126f.z) + PV1f.x;
// 13
R123f.w = (mul_nonIEEE(-(PV0f.x),PV0f.y) + R127f.x);
PV1f.w = R123f.w;
// 14
R0f.x = (mul_nonIEEE(R126f.x,R125f.w) + PV1f.w);
R0f.y = (mul_nonIEEE(R126f.x,R127f.z) + PV1f.w);
R0f.z = (mul_nonIEEE(R126f.x,R126f.y) + PV1f.w);
vec4 R0f = vec4(0.0);
vec4 R1f = 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 = passParameterSem0;
R1f.xyz = (texture(textureUnitPS0, R0f.xy).xyz);
vec3 bloom = texture(textureUnitPS0, passParameterSem0.xy).xyz;
bloom *= bloomFactor;
R0f.xyz = HDRPass(textureUnitPS1, passParameterSem0.xy);
float smask = lumasharping(textureUnitPS1, passParameterSem0.xy);
R0f.xyz += vec3(smask);
// 0
R126f.x = R1f.x + R0f.x;
PV0f.x = R126f.x;
R127f.y = R1f.y + R0f.y;
PV0f.y = R127f.y;
R126f.z = R1f.z + R0f.z;
PV0f.z = R126f.z;
R125f.w = 1.0;
// 1
tempf.x = dot(vec4(PV0f.x, PV0f.y, PV0f.z, -0.0), vec4(intBitsToFloat(0x3e99096c), intBitsToFloat(0x3f162b6b), intBitsToFloat(0x3dea4a8c), 0.0));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
// 2
R127f.x = -(R127f.y) * intBitsToFloat(0x3fb8aa3b);
PV0f.y = -(PV1f.x) * intBitsToFloat(0x3fb8aa3b);
R127f.z = -(R126f.x) * intBitsToFloat(0x3fb8aa3b);
R127f.w = -(R126f.z) * intBitsToFloat(0x3fb8aa3b);
R126f.w = 1.0 / PV1f.x;
PS0f = R126f.w;
// 3
PS1f = exp2(PV0f.y);
// 4
PV0f.x = -(PS1f)+1.0;
PS0f = exp2(R127f.x);
// 5
R127f.x = -(PS0f)+1.0;
R126f.y = mul_nonIEEE(PV0f.x, PV0f.x);
PV1f.z = PV0f.x * R126f.w;
PS1f = exp2(R127f.w);
// 6
backupReg0f = R126f.x;
backupReg1f = R127f.z;
R126f.x = mul_nonIEEE(backupReg0f, PV1f.z);
PV0f.y = -(PS1f)+1.0;
R127f.z = mul_nonIEEE(R126f.z, PV1f.z);
PV0f.z = R127f.z;
R127f.w = mul_nonIEEE(R127f.y, PV1f.z);
PV0f.w = R127f.w;
PS0f = exp2(backupReg1f);
// 7
PV1f.x = R127f.x + -(PV0f.w);
PV1f.y = PV0f.y + -(PV0f.z);
PV1f.w = -(PS0f)+1.0;
// 8
backupReg0f = R127f.z;
R127f.x = (mul_nonIEEE(PV1f.x, R126f.y) + R127f.w);
R127f.x = clamp(R127f.x, 0.0, 1.0);
PV0f.x = R127f.x;
PV0f.y = PV1f.w + -(R126f.x);
R127f.z = (mul_nonIEEE(PV1f.y, R126f.y) + backupReg0f);
R127f.z = clamp(R127f.z, 0.0, 1.0);
PV0f.z = R127f.z;
// 9
backupReg0f = R126f.x;
R126f.x = (mul_nonIEEE(PV0f.y, R126f.y) + backupReg0f);
R126f.x = clamp(R126f.x, 0.0, 1.0);
PV1f.x = R126f.x;
R126f.y = max(PV0f.x, PV0f.z);
PV1f.w = min(PV0f.x, PV0f.z);
// 10
tempf.x = dot(vec4(PV1f.x, R127f.x, R127f.z, R125f.w), vec4(intBitsToFloat(0x3f2aaaab), intBitsToFloat(0x3f2aaaab), intBitsToFloat(0x3f2aaaab), -(1.0)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R126f.z = min(PV1f.x, PV1f.w);
PS0f = R126f.z;
// 11
backupReg0f = R127f.x;
backupReg1f = R127f.z;
R127f.x = max(R126f.x, R126f.y);
PV1f.x = R127f.x;
R123f.y = (mul_nonIEEE(-(PV0f.x), PV0f.x) + 1.0);
PV1f.y = R123f.y;
R127f.z = backupReg0f + -(PS0f);
R125f.w = R126f.x + -(PS0f);
R126f.y = backupReg1f + -(PS0f);
PS1f = R126f.y;
// 12
R126f.x = (mul_nonIEEE(PV1f.y, intBitsToFloat(uf_remappedPS[0].y)) + intBitsToFloat(uf_remappedPS[0].x));
PV0f.x = R126f.x;
PV0f.y = -(R126f.z) + PV1f.x;
// 13
R123f.w = (mul_nonIEEE(-(PV0f.x), PV0f.y) + R127f.x);
PV1f.w = R123f.w;
// 14
R0f.x = (mul_nonIEEE(R126f.x, R125f.w) + PV1f.w);
R0f.y = (mul_nonIEEE(R126f.x, R127f.z) + PV1f.w);
R0f.z = (mul_nonIEEE(R126f.x, R126f.y) + PV1f.w);
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
vec3 color = (passPixelColor0.xyz);
color = TonemapPass(color);
const vec3 LumCoeff = vec3(0.2125, 0.7154, 0.0721);
vec3 AvgLumin = vec3(AvgLumR, AvgLumG, AvgLumB);
vec3 brtColor = color * brt;
vec3 intensity = vec3(dot(color, LumCoeff));
vec3 satColor = mix(intensity, color, 1.);
vec3 conColor = mix(AvgLumin, satColor, con);
passPixelColor0 = vec4(conColor, R0f.w);
vec3 color = (passPixelColor0.xyz);
color += bloom;
color = TonemapPass(color);
color = Technicolor2(color);
color = LevelsPass(color);
color = CurvesPass(color);
color = LiftGammaGainPass(color);
passPixelColor0 = vec4(color, R0f.w);
}

View File

@ -1,265 +0,0 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader bd8bba59e2149449
// Possible problems
// Being below 1.3.0 will give you double-vision with recent graphic packs. Update to 1.3.0 or above.
// If you're experiencing any issues (due to having the previous Clarity shaders installed), please remove and redownload all of the BotW packs.
// Changelog V0.1
// Changed from shader f14bb_ps.txt to bd8bb_ps.txt
// Credit to NAVras for merging to a better shader.
// Credit to getdls for adding exposure & Original Contrasty.
// Clarity GFX
// Credit to Jamie for main coding.
// Credit to Kiri coding & Reshade logic.
// Credit to Serfrost for preset values.
// Original shader dumped using cemu 1.10.0f, BotW 1.3.1
// Changelog v0.5
//##########################################################
// Contrast, saturation, Gamma.
//Adjustable Values:
const float gamma = 1.00; // [0.0 ~ 2.5] [1.0 Default] Gamma Adjustment - or + values work
const float bloomFactor = 0.7; // 1.0 is neutral
const float brt = 1.0;
const float con = 0.75;
const float sat = 0.0;
//Luma Values for changing color. Machinima tool mostly.
const float AvgLumR = 0.0; // [0.0 ~ 1.5] [0.0 Default] Use very small increments, as it changes RGB values.
const float AvgLumG = -0.003; // [0.0 ~ 1.5] [0.0 Default] Use very small increments, as it changes RGB values.
const float AvgLumB = 0.0; // [0.0 ~ 1.5] [0.0 Default] Use very small increments, as it changes RGB values.
//-----------------------------------------------------------
//End of adjustable values
//###########################################################
//Do not edit under this line.
const float exposure = 0.00;
const float Bleach = 0.0;
const vec3 FogColor = vec3(0.0, 0.0, 0.0); //defog Color";
uniform ivec4 uf_remappedPS[1];
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf46ac800 res 320x180x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x5) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf5c7b800 res 1280x720x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
layout(location = 0) in vec4 passParameterSem0;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
//-----------------------------------------------------------
// Based on CeeJay.dk's original GLSL/HLSL.
//-----------------------------------------------------------
vec3 TonemapPass(vec3 inputColor) {
vec3 color = inputColor;
color *= pow(2.0f, exposure); // exposure
color = pow(color, vec3(gamma)); // Gamma
const vec3 coefLuma = vec3(0.2126, 0.7152, 0.0722);
float lum = dot(coefLuma, color);
float L = clamp(10.0 * (lum - 0.45), 0.0, 1.0);
vec3 A2 = Bleach * color;
vec3 result1 = 2.0f * color * lum;
vec3 result2 = 1.0f - 2.0f * (1.0f - lum) * (1.0f - color);
vec3 newColor = mix(result1, result2, L);
vec3 mixRGB = A2 * newColor;
color += ((1.0f - A2) * mixRGB);
vec3 middlegray = vec3(dot(color, vec3(1.0 / 3.0)));
vec3 diffcolor = color - middlegray;
color = (color + diffcolor * sat) / (1 + (diffcolor * sat)); // saturation
return color;
}
vec3 brightnessContrast(vec3 color, float brt, float con){
return (color - 0.5) * con + 0.5 + brt;
}
//Fake High Dynamic Range.
#define HDRPower 1.30 // 0.0 to 8.0 "Raising this seems to make the effect stronger and also brighter."
#define radius1 0.793 // 0.0 to 8.0 "Raising this seems to make the effect stronger and also brighter."
#define radius2 0.87 // 0.0 to 8.0 "Raising this seems to make the effect stronger and also brighter."
vec3 HDRPass(sampler2D tex, vec2 pos){
vec4 colorInput = texture(tex, pos);
vec3 color = colorInput.rgb;
vec3 bloom_sum1 = texture(tex, pos + vec2(1.5, -1.5) * radius1).rgb;
bloom_sum1 += texture(tex, pos + vec2(-1.5, -1.5) * radius1).rgb;
bloom_sum1 += texture(tex, pos + vec2( 1.5, 1.5) * radius1).rgb;
bloom_sum1 += texture(tex, pos + vec2(-1.5, 1.5) * radius1).rgb;
bloom_sum1 += texture(tex, pos + vec2( 0.0, -2.5) * radius1).rgb;
bloom_sum1 += texture(tex, pos + vec2( 0.0, 2.5) * radius1).rgb;
bloom_sum1 += texture(tex, pos + vec2(-2.5, 0.0) * radius1).rgb;
bloom_sum1 += texture(tex, pos + vec2( 2.5, 0.0) * radius1).rgb;
bloom_sum1 *= 0.005;
vec3 bloom_sum2 = texture(tex, pos + vec2(1.5, -1.5) * radius2).rgb;
bloom_sum2 += texture(tex, pos + vec2(-1.5, -1.5) * radius2).rgb;
bloom_sum2 += texture(tex, pos + vec2( 1.5, 1.5) * radius2).rgb;
bloom_sum2 += texture(tex, pos + vec2(-1.5, 1.5) * radius2).rgb;
bloom_sum2 += texture(tex, pos + vec2( 0.0, -2.5) * radius2).rgb;
bloom_sum2 += texture(tex, pos + vec2( 0.0, 2.5) * radius2).rgb;
bloom_sum2 += texture(tex, pos + vec2(-2.5, 0.0) * radius2).rgb;
bloom_sum2 += texture(tex, pos + vec2( 2.5, 0.0) * radius2).rgb;
bloom_sum2 *= 0.010;
float dist = radius1 - radius2;
vec3 HDR = (colorInput.rgb + (bloom_sum2 - bloom_sum1)) * dist;
vec3 blend = HDR + colorInput.rgb;
colorInput.rgb = pow(abs(blend), vec3(abs(HDRPower)) + HDR);
return clamp(colorInput.rgb, 0.0,1.0);
}
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = 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 = passParameterSem0;
R1f.xyz = (texture(textureUnitPS0, R0f.xy).xyz);
R1f.xyz *= bloomFactor;
R0f.xyz = HDRPass(textureUnitPS1, R0f.xy);
// 0
R126f.x = R1f.x + R0f.x;
PV0f.x = R126f.x;
R127f.y = R1f.y + R0f.y;
PV0f.y = R127f.y;
R126f.z = R1f.z + R0f.z;
PV0f.z = R126f.z;
R125f.w = 1.0;
// 1
tempf.x = dot(vec4(PV0f.x,PV0f.y,PV0f.z,-0.0),vec4(intBitsToFloat(0x3e99096c),intBitsToFloat(0x3f162b6b),intBitsToFloat(0x3dea4a8c),0.0));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
// 2
R127f.x = -(R127f.y) * intBitsToFloat(0x3fb8aa3b);
PV0f.y = -(PV1f.x) * intBitsToFloat(0x3fb8aa3b);
R127f.z = -(R126f.x) * intBitsToFloat(0x3fb8aa3b);
R127f.w = -(R126f.z) * intBitsToFloat(0x3fb8aa3b);
R126f.w = 1.0 / PV1f.x;
PS0f = R126f.w;
// 3
PS1f = exp2(PV0f.y);
// 4
PV0f.x = -(PS1f) + 1.0;
PS0f = exp2(R127f.x);
// 5
R127f.x = -(PS0f) + 1.0;
R126f.y = mul_nonIEEE(PV0f.x, PV0f.x);
PV1f.z = PV0f.x * R126f.w;
PS1f = exp2(R127f.w);
// 6
backupReg0f = R126f.x;
backupReg1f = R127f.z;
R126f.x = mul_nonIEEE(backupReg0f, PV1f.z);
PV0f.y = -(PS1f) + 1.0;
R127f.z = mul_nonIEEE(R126f.z, PV1f.z);
PV0f.z = R127f.z;
R127f.w = mul_nonIEEE(R127f.y, PV1f.z);
PV0f.w = R127f.w;
PS0f = exp2(backupReg1f);
// 7
PV1f.x = R127f.x + -(PV0f.w);
PV1f.y = PV0f.y + -(PV0f.z);
PV1f.w = -(PS0f) + 1.0;
// 8
backupReg0f = R127f.z;
R127f.x = (mul_nonIEEE(PV1f.x,R126f.y) + R127f.w);
R127f.x = clamp(R127f.x, 0.0, 1.0);
PV0f.x = R127f.x;
PV0f.y = PV1f.w + -(R126f.x);
R127f.z = (mul_nonIEEE(PV1f.y,R126f.y) + backupReg0f);
R127f.z = clamp(R127f.z, 0.0, 1.0);
PV0f.z = R127f.z;
// 9
backupReg0f = R126f.x;
R126f.x = (mul_nonIEEE(PV0f.y,R126f.y) + backupReg0f);
R126f.x = clamp(R126f.x, 0.0, 1.0);
PV1f.x = R126f.x;
R126f.y = max(PV0f.x, PV0f.z);
PV1f.w = min(PV0f.x, PV0f.z);
// 10
tempf.x = dot(vec4(PV1f.x,R127f.x,R127f.z,R125f.w),vec4(intBitsToFloat(0x3f2aaaab),intBitsToFloat(0x3f2aaaab),intBitsToFloat(0x3f2aaaab),-(1.0)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R126f.z = min(PV1f.x, PV1f.w);
PS0f = R126f.z;
// 11
backupReg0f = R127f.x;
backupReg1f = R127f.z;
R127f.x = max(R126f.x, R126f.y);
PV1f.x = R127f.x;
R123f.y = (mul_nonIEEE(-(PV0f.x),PV0f.x) + 1.0);
PV1f.y = R123f.y;
R127f.z = backupReg0f + -(PS0f);
R125f.w = R126f.x + -(PS0f);
R126f.y = backupReg1f + -(PS0f);
PS1f = R126f.y;
// 12
R126f.x = (mul_nonIEEE(PV1f.y,intBitsToFloat(uf_remappedPS[0].y)) + intBitsToFloat(uf_remappedPS[0].x));
PV0f.x = R126f.x;
PV0f.y = -(R126f.z) + PV1f.x;
// 13
R123f.w = (mul_nonIEEE(-(PV0f.x),PV0f.y) + R127f.x);
PV1f.w = R123f.w;
// 14
R0f.x = (mul_nonIEEE(R126f.x,R125f.w) + PV1f.w);
R0f.y = (mul_nonIEEE(R126f.x,R127f.z) + PV1f.w);
R0f.z = (mul_nonIEEE(R126f.x,R126f.y) + PV1f.w);
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
vec3 color = (passPixelColor0.xyz);
color = TonemapPass(color);
const vec3 LumCoeff = vec3(0.2125, 0.7154, 0.0721);
vec3 AvgLumin = vec3(AvgLumR, AvgLumG, AvgLumB);
vec3 brtColor = color * brt;
vec3 intensity = vec3(dot(color, LumCoeff));
vec3 satColor = mix(intensity, color, 1.);
vec3 conColor = mix(AvgLumin, satColor, con);
passPixelColor0 = vec4(conColor, R0f.w);
}

View File

@ -1,4 +1,4 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = "The Legend of Zelda: Breath of the Wild - Clarity GFX"
name = "The Legend of Zelda: Breath of the Wild - Clarity GFX UHD"
version = 2

View File

@ -0,0 +1,102 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader 156a8a37bc669fec
// Used for: Black transparent tint edge
uniform ivec4 uf_remappedPS[5];
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x22456000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 0 0 1 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 2 border: 0
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x22572000 res 256x256x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 1 1 2 border: 0
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x23c69000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 5 5 5 0 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 2 2 border: 0
layout(location = 0) in vec4 passParameterSem1;
layout(location = 1) in vec4 passParameterSem0;
layout(location = 2) in vec4 passParameterSem2;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R3i = ivec4(0);
ivec4 R4i = ivec4(0);
ivec4 R123i = 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(passParameterSem1);
R1i = floatBitsToInt(passParameterSem0);
R2i = floatBitsToInt(passParameterSem2);
R0i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R0i.xy)).xyzw);
R4i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R2i.xy)).xyzw);
// 0
R3i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.x), intBitsToFloat(R4i.w)));
R3i.y = floatBitsToInt(-(intBitsToFloat(R4i.w)) + 1.0);
R3i.z = uf_remappedPS[0].x & 0x00008000;
R127i.w = 0x3f800000;
PV0i.w = R127i.w;
R1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.y), intBitsToFloat(R4i.w)));
PS0i = R1i.w;
// 1
backupReg0i = R0i.x;
backupReg1i = R0i.y;
backupReg2i = R0i.z;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i),intBitsToFloat(backupReg2i),intBitsToFloat(PV0i.w)),vec4(intBitsToFloat(uf_remappedPS[1].x),intBitsToFloat(uf_remappedPS[1].y),intBitsToFloat(uf_remappedPS[1].z),intBitsToFloat(uf_remappedPS[1].w))));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.z), intBitsToFloat(R4i.w)));
PS1i = R1i.z;
// 2
backupReg0i = R0i.x;
backupReg1i = R0i.y;
backupReg2i = R0i.z;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i),intBitsToFloat(backupReg2i),intBitsToFloat(R127i.w)),vec4(intBitsToFloat(uf_remappedPS[2].x),intBitsToFloat(uf_remappedPS[2].y),intBitsToFloat(uf_remappedPS[2].z),intBitsToFloat(uf_remappedPS[2].w))));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R2i.x = floatBitsToInt(intBitsToFloat(R1i.x) + intBitsToFloat(PV1i.x));
PS0i = R2i.x;
// 3
R2i.y = floatBitsToInt(intBitsToFloat(R1i.y) + intBitsToFloat(PV0i.x));
R2i.xyzw = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R2i.xy)).xyzw);
// 0
backupReg0i = R0i.w;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.y),intBitsToFloat(R3i.y)) + intBitsToFloat(R1i.w)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.x),intBitsToFloat(R3i.y)) + intBitsToFloat(R3i.x)));
PV0i.y = R123i.y;
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.z),intBitsToFloat(R3i.y)) + intBitsToFloat(R1i.z)));
PV0i.w = floatBitsToInt(min(intBitsToFloat(backupReg0i), intBitsToFloat(R2i.w)));
// 1
R4i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(uf_remappedPS[3].x)) + intBitsToFloat(uf_remappedPS[4].x)));
PV1i.y = floatBitsToInt(min(intBitsToFloat(PV0i.w), intBitsToFloat(R4i.w)));
PV1i.z = floatBitsToInt(max(intBitsToFloat(PV0i.w), intBitsToFloat(R4i.w)));
R4i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(uf_remappedPS[3].y)) + intBitsToFloat(uf_remappedPS[4].y)));
PS1i = R4i.y;
// 2
R123i.x = ((R3i.z == 0)?(PV1i.z):(PV1i.y));
PV0i.x = R123i.x;
R4i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(uf_remappedPS[3].z)) + intBitsToFloat(uf_remappedPS[4].z)));
// 3
R4i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(uf_remappedPS[3].w)) + intBitsToFloat(uf_remappedPS[4].w)));
// export
passPixelColor0 = vec4(intBitsToFloat(R4i.x), intBitsToFloat(R4i.y), intBitsToFloat(R4i.z), 0.0);
}

View File

@ -0,0 +1,102 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader 156a8a37bc669fec
// Used for: Black transparent tint edge
uniform ivec4 uf_remappedPS[5];
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x22456000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 0 0 1 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 2 border: 0
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x22572000 res 256x256x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 1 1 2 border: 0
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x23c69000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 5 5 5 0 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 2 2 border: 0
layout(location = 0) in vec4 passParameterSem1;
layout(location = 1) in vec4 passParameterSem0;
layout(location = 2) in vec4 passParameterSem2;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R3i = ivec4(0);
ivec4 R4i = ivec4(0);
ivec4 R123i = 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(passParameterSem1);
R1i = floatBitsToInt(passParameterSem0);
R2i = floatBitsToInt(passParameterSem2);
R0i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R0i.xy)).xyzw);
R4i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R2i.xy)).xyzw);
// 0
R3i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.x), intBitsToFloat(R4i.w)));
R3i.y = floatBitsToInt(-(intBitsToFloat(R4i.w)) + 1.0);
R3i.z = uf_remappedPS[0].x & 0x00008000;
R127i.w = 0x3f800000;
PV0i.w = R127i.w;
R1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.y), intBitsToFloat(R4i.w)));
PS0i = R1i.w;
// 1
backupReg0i = R0i.x;
backupReg1i = R0i.y;
backupReg2i = R0i.z;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i),intBitsToFloat(backupReg2i),intBitsToFloat(PV0i.w)),vec4(intBitsToFloat(uf_remappedPS[1].x),intBitsToFloat(uf_remappedPS[1].y),intBitsToFloat(uf_remappedPS[1].z),intBitsToFloat(uf_remappedPS[1].w))));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.z), intBitsToFloat(R4i.w)));
PS1i = R1i.z;
// 2
backupReg0i = R0i.x;
backupReg1i = R0i.y;
backupReg2i = R0i.z;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i),intBitsToFloat(backupReg2i),intBitsToFloat(R127i.w)),vec4(intBitsToFloat(uf_remappedPS[2].x),intBitsToFloat(uf_remappedPS[2].y),intBitsToFloat(uf_remappedPS[2].z),intBitsToFloat(uf_remappedPS[2].w))));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R2i.x = floatBitsToInt(intBitsToFloat(R1i.x) + intBitsToFloat(PV1i.x));
PS0i = R2i.x;
// 3
R2i.y = floatBitsToInt(intBitsToFloat(R1i.y) + intBitsToFloat(PV0i.x));
R2i.xyzw = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R2i.xy)).xyzw);
// 0
backupReg0i = R0i.w;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.y),intBitsToFloat(R3i.y)) + intBitsToFloat(R1i.w)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.x),intBitsToFloat(R3i.y)) + intBitsToFloat(R3i.x)));
PV0i.y = R123i.y;
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.z),intBitsToFloat(R3i.y)) + intBitsToFloat(R1i.z)));
PV0i.w = floatBitsToInt(min(intBitsToFloat(backupReg0i), intBitsToFloat(R2i.w)));
// 1
R4i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(uf_remappedPS[3].x)) + intBitsToFloat(uf_remappedPS[4].x)));
PV1i.y = floatBitsToInt(min(intBitsToFloat(PV0i.w), intBitsToFloat(R4i.w)));
PV1i.z = floatBitsToInt(max(intBitsToFloat(PV0i.w), intBitsToFloat(R4i.w)));
R4i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(uf_remappedPS[3].y)) + intBitsToFloat(uf_remappedPS[4].y)));
PS1i = R4i.y;
// 2
R123i.x = ((R3i.z == 0)?(PV1i.z):(PV1i.y));
PV0i.x = R123i.x;
R4i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(uf_remappedPS[3].z)) + intBitsToFloat(uf_remappedPS[4].z)));
// 3
R4i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(uf_remappedPS[3].w)) + intBitsToFloat(uf_remappedPS[4].w)));
// export
passPixelColor0 = vec4(intBitsToFloat(R4i.x), intBitsToFloat(R4i.y), intBitsToFloat(R4i.z), 0.0);
}

View File

@ -0,0 +1,93 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader cb83a22cf0961e1a
// Used for: Zoom Text
uniform ivec4 uf_remappedPS[4];
layout(binding = 0) uniform sampler2DArray textureUnitPS0;// Tex0 addr 0x20340000 res 1024x1024x1 dim 5 tm: 4 format 0001 compSel: 5 5 5 0 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R123i = 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(passParameterSem0);
R1i = floatBitsToInt(passParameterSem1);
// 0
backupReg0i = R1i.z;
R2i.x = ((intBitsToFloat(R0i.w) > 0.0)?int(0xFFFFFFFF):int(0x0));
R1i.z = floatBitsToInt(roundEven(intBitsToFloat(backupReg0i)));
R1i.w = floatBitsToInt(texture(textureUnitPS0, vec3(intBitsToFloat(R1i.x),intBitsToFloat(R1i.y),intBitsToFloat(R1i.z))).w);
// 0
PV0i.x = R1i.w;
PV0i.x = floatBitsToInt(intBitsToFloat(PV0i.x) * 2.0);
PV0i.y = ((intBitsToFloat(0x3f0a3d71) > intBitsToFloat(R1i.w))?int(0xFFFFFFFF):int(0x0));
PV0i.w = floatBitsToInt(intBitsToFloat(R1i.w) + -(0.5));
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * 2.0);
// 1
R127i.y = ((PV0i.y == 0)?(0x3f800000):(PV0i.x));
R127i.z = ((PV0i.y == 0)?(PV0i.w):(0));
PV1i.z = R127i.z;
// 2
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(uf_remappedPS[0].y)) + intBitsToFloat(uf_remappedPS[1].y)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(uf_remappedPS[0].x)) + intBitsToFloat(uf_remappedPS[1].x)));
PV0i.w = R123i.w;
// 3
backupReg0i = R0i.x;
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(uf_remappedPS[0].w)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(uf_remappedPS[0].z)) + intBitsToFloat(uf_remappedPS[1].z)));
PV1i.y = R123i.y;
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV0i.w)));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.y), intBitsToFloat(PV0i.z)));
// 4
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), intBitsToFloat(PV1i.y)));
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), intBitsToFloat(PV1i.x)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(uf_remappedPS[2].y)) + intBitsToFloat(uf_remappedPS[3].y)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(uf_remappedPS[3].x)));
PV0i.w = R123i.w;
// 5
backupReg0i = R0i.x;
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(uf_remappedPS[2].w)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(uf_remappedPS[2].z)) + intBitsToFloat(uf_remappedPS[3].z)));
PV1i.y = R123i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV0i.w)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.y), intBitsToFloat(PV0i.z)));
// 6
backupReg0i = R0i.z;
PV0i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R0i.w)), intBitsToFloat(PV1i.x)));
R0i.y = ((R2i.x == 0)?(PV1i.w):(R127i.w));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV1i.y)));
R0i.x = ((R2i.x == 0)?(PV1i.z):(R126i.z));
PS0i = R0i.x;
// 7
R0i.z = ((R2i.x == 0)?(PV0i.z):(R127i.x));
R0i.w = ((R2i.x == 0)?(PV0i.x):(R126i.y));
// export
passPixelColor0 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), 0.0);
}

View File

@ -0,0 +1,43 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader 569ebe93f1ae5799
// Used for: Vintage, Remove buttons, Edge Textures, Edge Background, Middle GUI
uniform ivec4 uf_remappedPS[2];
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x22b12000 res 854x480x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 0
layout(location = 0) in vec4 passParameterSem0;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
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 = passParameterSem0;
R0f.xyzw = (texture(textureUnitPS0, R0f.xy).xyzw);
// 0
R1f.x = (mul_nonIEEE(R0f.x,intBitsToFloat(uf_remappedPS[0].x)) + intBitsToFloat(uf_remappedPS[1].x));
R1f.y = (mul_nonIEEE(R0f.y,intBitsToFloat(uf_remappedPS[0].y)) + intBitsToFloat(uf_remappedPS[1].y));
// 1
R1f.z = (mul_nonIEEE(R0f.z,intBitsToFloat(uf_remappedPS[0].z)) + intBitsToFloat(uf_remappedPS[1].z));
R1f.w = (mul_nonIEEE(R0f.w,intBitsToFloat(uf_remappedPS[0].w)) + intBitsToFloat(uf_remappedPS[1].w));
// export
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, 0.0);
}

View File

@ -0,0 +1,102 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader 156a8a37bc669fec
// Used for: Black transparent tint edge
uniform ivec4 uf_remappedPS[5];
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x22456000 res 128x128x1 dim 1 tm: 4 format 0035 compSel: 0 0 0 1 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 2 border: 0
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0x22572000 res 256x256x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 1 1 2 border: 0
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0x23c69000 res 128x128x1 dim 1 tm: 4 format 0034 compSel: 5 5 5 0 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 2 2 border: 0
layout(location = 0) in vec4 passParameterSem1;
layout(location = 1) in vec4 passParameterSem0;
layout(location = 2) in vec4 passParameterSem2;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R3i = ivec4(0);
ivec4 R4i = ivec4(0);
ivec4 R123i = 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(passParameterSem1);
R1i = floatBitsToInt(passParameterSem0);
R2i = floatBitsToInt(passParameterSem2);
R0i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R0i.xy)).xyzw);
R4i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R2i.xy)).xyzw);
// 0
R3i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.x), intBitsToFloat(R4i.w)));
R3i.y = floatBitsToInt(-(intBitsToFloat(R4i.w)) + 1.0);
R3i.z = uf_remappedPS[0].x & 0x00008000;
R127i.w = 0x3f800000;
PV0i.w = R127i.w;
R1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.y), intBitsToFloat(R4i.w)));
PS0i = R1i.w;
// 1
backupReg0i = R0i.x;
backupReg1i = R0i.y;
backupReg2i = R0i.z;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i),intBitsToFloat(backupReg2i),intBitsToFloat(PV0i.w)),vec4(intBitsToFloat(uf_remappedPS[1].x),intBitsToFloat(uf_remappedPS[1].y),intBitsToFloat(uf_remappedPS[1].z),intBitsToFloat(uf_remappedPS[1].w))));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.z), intBitsToFloat(R4i.w)));
PS1i = R1i.z;
// 2
backupReg0i = R0i.x;
backupReg1i = R0i.y;
backupReg2i = R0i.z;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i),intBitsToFloat(backupReg2i),intBitsToFloat(R127i.w)),vec4(intBitsToFloat(uf_remappedPS[2].x),intBitsToFloat(uf_remappedPS[2].y),intBitsToFloat(uf_remappedPS[2].z),intBitsToFloat(uf_remappedPS[2].w))));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R2i.x = floatBitsToInt(intBitsToFloat(R1i.x) + intBitsToFloat(PV1i.x));
PS0i = R2i.x;
// 3
R2i.y = floatBitsToInt(intBitsToFloat(R1i.y) + intBitsToFloat(PV0i.x));
R2i.xyzw = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R2i.xy)).xyzw);
// 0
backupReg0i = R0i.w;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.y),intBitsToFloat(R3i.y)) + intBitsToFloat(R1i.w)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.x),intBitsToFloat(R3i.y)) + intBitsToFloat(R3i.x)));
PV0i.y = R123i.y;
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.z),intBitsToFloat(R3i.y)) + intBitsToFloat(R1i.z)));
PV0i.w = floatBitsToInt(min(intBitsToFloat(backupReg0i), intBitsToFloat(R2i.w)));
// 1
R4i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(uf_remappedPS[3].x)) + intBitsToFloat(uf_remappedPS[4].x)));
PV1i.y = floatBitsToInt(min(intBitsToFloat(PV0i.w), intBitsToFloat(R4i.w)));
PV1i.z = floatBitsToInt(max(intBitsToFloat(PV0i.w), intBitsToFloat(R4i.w)));
R4i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(uf_remappedPS[3].y)) + intBitsToFloat(uf_remappedPS[4].y)));
PS1i = R4i.y;
// 2
R123i.x = ((R3i.z == 0)?(PV1i.z):(PV1i.y));
PV0i.x = R123i.x;
R4i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(uf_remappedPS[3].z)) + intBitsToFloat(uf_remappedPS[4].z)));
// 3
R4i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(uf_remappedPS[3].w)) + intBitsToFloat(uf_remappedPS[4].w)));
// export
passPixelColor0 = vec4(intBitsToFloat(R4i.x), intBitsToFloat(R4i.y), intBitsToFloat(R4i.z), 0.0);
}

View File

@ -0,0 +1,43 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader 569ebe93f1ae5799
// Used for: Vintage, Remove buttons, Edge Textures, Edge Background, Middle GUI
uniform ivec4 uf_remappedPS[2];
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x22b12000 res 854x480x1 dim 1 tm: 4 format 0034 compSel: 0 0 0 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 0
layout(location = 0) in vec4 passParameterSem0;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
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 = passParameterSem0;
R0f.xyzw = (texture(textureUnitPS0, R0f.xy).xyzw);
// 0
R1f.x = (mul_nonIEEE(R0f.x,intBitsToFloat(uf_remappedPS[0].x)) + intBitsToFloat(uf_remappedPS[1].x));
R1f.y = (mul_nonIEEE(R0f.y,intBitsToFloat(uf_remappedPS[0].y)) + intBitsToFloat(uf_remappedPS[1].y));
// 1
R1f.z = (mul_nonIEEE(R0f.z,intBitsToFloat(uf_remappedPS[0].z)) + intBitsToFloat(uf_remappedPS[1].z));
R1f.w = (mul_nonIEEE(R0f.w,intBitsToFloat(uf_remappedPS[0].w)) + intBitsToFloat(uf_remappedPS[1].w));
// export
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, 0.0);
}

View File

@ -0,0 +1,82 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader 7751959c9083eebb
// Used for: Font Edge
uniform ivec4 uf_remappedPS[4];
layout(binding = 0) uniform sampler2DArray textureUnitPS0;// Tex0 addr 0x201f6000 res 512x1024x1 dim 5 tm: 4 format 0034 compSel: 5 5 5 0 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R123i = 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(passParameterSem0);
R1i = floatBitsToInt(passParameterSem1);
// 0
backupReg0i = R1i.z;
R2i.x = ((intBitsToFloat(R0i.w) > 0.0)?int(0xFFFFFFFF):int(0x0));
R1i.z = floatBitsToInt(roundEven(intBitsToFloat(backupReg0i)));
R1i.xyzw = floatBitsToInt(texture(textureUnitPS0, vec3(intBitsToFloat(R1i.x),intBitsToFloat(R1i.y),intBitsToFloat(R1i.z))).xyzw);
// 0
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(uf_remappedPS[0].y)) + intBitsToFloat(uf_remappedPS[1].y)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(uf_remappedPS[0].x)) + intBitsToFloat(uf_remappedPS[1].x)));
PV0i.w = R123i.w;
// 1
backupReg0i = R0i.x;
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), intBitsToFloat(uf_remappedPS[0].w)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.z),intBitsToFloat(uf_remappedPS[0].z)) + intBitsToFloat(uf_remappedPS[1].z)));
PV1i.y = R123i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV0i.w)));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.y), intBitsToFloat(PV0i.z)));
// 2
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), intBitsToFloat(PV1i.y)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), intBitsToFloat(PV1i.x)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(uf_remappedPS[2].y)) + intBitsToFloat(uf_remappedPS[3].y)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(uf_remappedPS[3].x)));
PV0i.w = R123i.w;
// 3
backupReg0i = R0i.x;
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), intBitsToFloat(uf_remappedPS[2].w)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.z),intBitsToFloat(uf_remappedPS[2].z)) + intBitsToFloat(uf_remappedPS[3].z)));
PV1i.y = R123i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV0i.w)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.y), intBitsToFloat(PV0i.z)));
// 4
backupReg0i = R0i.z;
PV0i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R0i.w)), intBitsToFloat(PV1i.x)));
R0i.y = ((R2i.x == 0)?(PV1i.w):(R127i.w));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV1i.y)));
R0i.x = ((R2i.x == 0)?(PV1i.z):(R127i.z));
PS0i = R0i.x;
// 5
R0i.z = ((R2i.x == 0)?(PV0i.z):(R127i.x));
R0i.w = ((R2i.x == 0)?(PV0i.x):(R127i.y));
// export
passPixelColor0 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), 0.0);
}

View File

@ -0,0 +1,84 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader a15e2a77cef4c5e3
// Used for: Text Edge
uniform ivec4 uf_remappedPS[4];
layout(binding = 0) uniform sampler2DArray textureUnitPS0;// Tex0 addr 0x20340000 res 1024x1024x1 dim 5 tm: 4 format 0001 compSel: 5 5 5 0 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R123i = 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(passParameterSem0);
R1i = floatBitsToInt(passParameterSem1);
// 0
backupReg0i = R1i.z;
R2i.x = floatBitsToInt(intBitsToFloat(uf_remappedPS[0].y) + intBitsToFloat(uf_remappedPS[1].y));
R2i.y = ((intBitsToFloat(R0i.w) > 0.0)?int(0xFFFFFFFF):int(0x0));
R1i.z = floatBitsToInt(roundEven(intBitsToFloat(backupReg0i)));
R2i.w = floatBitsToInt(intBitsToFloat(uf_remappedPS[0].x) + intBitsToFloat(uf_remappedPS[1].x));
R1i.w = floatBitsToInt(texture(textureUnitPS0, vec3(intBitsToFloat(R1i.x),intBitsToFloat(R1i.y),intBitsToFloat(R1i.z))).w);
// 0
backupReg0i = R0i.y;
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.x), intBitsToFloat(R2i.w)));
PV0i.y = floatBitsToInt(intBitsToFloat(uf_remappedPS[0].z) + intBitsToFloat(uf_remappedPS[1].z));
PV0i.z = floatBitsToInt(intBitsToFloat(R1i.w) + -(0.5));
PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) * 2.0);
PV0i.w = ((intBitsToFloat(0x3f0a3d71) > intBitsToFloat(R1i.w))?int(0xFFFFFFFF):int(0x0));
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R2i.x)));
PS0i = R126i.w;
// 1
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), intBitsToFloat(PV0i.y)));
R123i.y = ((PV0i.w == 0)?(PV0i.z):(0));
PV1i.y = R123i.y;
PV1i.z = floatBitsToInt(intBitsToFloat(uf_remappedPS[2].y) + intBitsToFloat(uf_remappedPS[3].y));
PV1i.w = floatBitsToInt(intBitsToFloat(uf_remappedPS[2].x) + intBitsToFloat(uf_remappedPS[3].x));
// 2
backupReg0i = R0i.x;
backupReg1i = R0i.y;
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(uf_remappedPS[3].w)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(uf_remappedPS[1].w)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV1i.w)));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg1i), intBitsToFloat(PV1i.z)));
// 3
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), intBitsToFloat(PV0i.y)));
PV1i.y = floatBitsToInt(intBitsToFloat(uf_remappedPS[2].z) + intBitsToFloat(uf_remappedPS[3].z));
PV1i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R0i.w)), intBitsToFloat(PV0i.x)));
R1i.x = ((R2i.y == 0)?(PV0i.z):(R127i.x));
PS1i = R1i.x;
// 4
backupReg0i = R0i.z;
R1i.y = ((R2i.y == 0)?(R127i.w):(R126i.w));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV1i.y)));
R1i.w = ((R2i.y == 0)?(PV1i.z):(PV1i.x));
// 5
R1i.z = ((R2i.y == 0)?(PV0i.z):(R126i.x));
// export
passPixelColor0 = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), 0.0);
}

View File

@ -0,0 +1,93 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader cb83a22cf0961e1a
// Used for: Zoom Text
uniform ivec4 uf_remappedPS[4];
layout(binding = 0) uniform sampler2DArray textureUnitPS0;// Tex0 addr 0x20340000 res 1024x1024x1 dim 5 tm: 4 format 0001 compSel: 5 5 5 0 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R123i = 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(passParameterSem0);
R1i = floatBitsToInt(passParameterSem1);
// 0
backupReg0i = R1i.z;
R2i.x = ((intBitsToFloat(R0i.w) > 0.0)?int(0xFFFFFFFF):int(0x0));
R1i.z = floatBitsToInt(roundEven(intBitsToFloat(backupReg0i)));
R1i.w = floatBitsToInt(texture(textureUnitPS0, vec3(intBitsToFloat(R1i.x),intBitsToFloat(R1i.y),intBitsToFloat(R1i.z))).w);
// 0
PV0i.x = R1i.w;
PV0i.x = floatBitsToInt(intBitsToFloat(PV0i.x) * 2.0);
PV0i.y = ((intBitsToFloat(0x3f0a3d71) > intBitsToFloat(R1i.w))?int(0xFFFFFFFF):int(0x0));
PV0i.w = floatBitsToInt(intBitsToFloat(R1i.w) + -(0.5));
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * 2.0);
// 1
R127i.y = ((PV0i.y == 0)?(0x3f800000):(PV0i.x));
R127i.z = ((PV0i.y == 0)?(PV0i.w):(0));
PV1i.z = R127i.z;
// 2
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(uf_remappedPS[0].y)) + intBitsToFloat(uf_remappedPS[1].y)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(uf_remappedPS[0].x)) + intBitsToFloat(uf_remappedPS[1].x)));
PV0i.w = R123i.w;
// 3
backupReg0i = R0i.x;
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(uf_remappedPS[0].w)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(uf_remappedPS[0].z)) + intBitsToFloat(uf_remappedPS[1].z)));
PV1i.y = R123i.y;
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV0i.w)));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.y), intBitsToFloat(PV0i.z)));
// 4
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), intBitsToFloat(PV1i.y)));
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), intBitsToFloat(PV1i.x)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(uf_remappedPS[2].y)) + intBitsToFloat(uf_remappedPS[3].y)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(uf_remappedPS[3].x)));
PV0i.w = R123i.w;
// 5
backupReg0i = R0i.x;
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(uf_remappedPS[2].w)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(uf_remappedPS[2].z)) + intBitsToFloat(uf_remappedPS[3].z)));
PV1i.y = R123i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV0i.w)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.y), intBitsToFloat(PV0i.z)));
// 6
backupReg0i = R0i.z;
PV0i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R0i.w)), intBitsToFloat(PV1i.x)));
R0i.y = ((R2i.x == 0)?(PV1i.w):(R127i.w));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV1i.y)));
R0i.x = ((R2i.x == 0)?(PV1i.z):(R126i.z));
PS0i = R0i.x;
// 7
R0i.z = ((R2i.x == 0)?(PV0i.z):(R127i.x));
R0i.w = ((R2i.x == 0)?(PV0i.x):(R126i.y));
// export
passPixelColor0 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), 0.0);
}

View File

@ -0,0 +1,56 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader ededcf8bdc3384ef
// Used for: Glow, Frame
uniform ivec4 uf_remappedPS[2];
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x240ff800 res 1280x720x1 dim 1 tm: 4 format 0008 compSel: 2 1 0 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 0
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R123f = 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 = passParameterSem0;
R1f = passParameterSem1;
R1f.xyzw = (texture(textureUnitPS0, R1f.xy).xyzw);
// 0
R127f.z = (mul_nonIEEE(R1f.y,intBitsToFloat(uf_remappedPS[0].y)) + intBitsToFloat(uf_remappedPS[1].y));
R123f.w = (mul_nonIEEE(R1f.x,intBitsToFloat(uf_remappedPS[0].x)) + intBitsToFloat(uf_remappedPS[1].x));
PV0f.w = R123f.w;
// 1
R123f.x = (mul_nonIEEE(R1f.w,intBitsToFloat(uf_remappedPS[0].w)) + intBitsToFloat(uf_remappedPS[1].w));
PV1f.x = R123f.x;
R123f.y = (mul_nonIEEE(R1f.z,intBitsToFloat(uf_remappedPS[0].z)) + intBitsToFloat(uf_remappedPS[1].z));
PV1f.y = R123f.y;
R1f.x = mul_nonIEEE(R0f.x, PV0f.w);
PS1f = R1f.x;
// 2
R1f.y = mul_nonIEEE(R0f.y, R127f.z);
R1f.z = mul_nonIEEE(R0f.z, PV1f.y);
R1f.w = mul_nonIEEE(R0f.w, PV1f.x);
// export
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, 0.0);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 568 KiB

View File

@ -0,0 +1,93 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader cb83a22cf0961e1a
// Used for: Zoom Text
uniform ivec4 uf_remappedPS[4];
layout(binding = 0) uniform sampler2DArray textureUnitPS0;// Tex0 addr 0x20340000 res 1024x1024x1 dim 5 tm: 4 format 0001 compSel: 5 5 5 0 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 0 0 0 border: 0
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R123i = 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(passParameterSem0);
R1i = floatBitsToInt(passParameterSem1);
// 0
backupReg0i = R1i.z;
R2i.x = ((intBitsToFloat(R0i.w) > 0.0)?int(0xFFFFFFFF):int(0x0));
R1i.z = floatBitsToInt(roundEven(intBitsToFloat(backupReg0i)));
R1i.w = floatBitsToInt(texture(textureUnitPS0, vec3(intBitsToFloat(R1i.x),intBitsToFloat(R1i.y),intBitsToFloat(R1i.z))).w);
// 0
PV0i.x = R1i.w;
PV0i.x = floatBitsToInt(intBitsToFloat(PV0i.x) * 2.0);
PV0i.y = ((intBitsToFloat(0x3f0a3d71) > intBitsToFloat(R1i.w))?int(0xFFFFFFFF):int(0x0));
PV0i.w = floatBitsToInt(intBitsToFloat(R1i.w) + -(0.5));
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * 2.0);
// 1
R127i.y = ((PV0i.y == 0)?(0x3f800000):(PV0i.x));
R127i.z = ((PV0i.y == 0)?(PV0i.w):(0));
PV1i.z = R127i.z;
// 2
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(uf_remappedPS[0].y)) + intBitsToFloat(uf_remappedPS[1].y)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(uf_remappedPS[0].x)) + intBitsToFloat(uf_remappedPS[1].x)));
PV0i.w = R123i.w;
// 3
backupReg0i = R0i.x;
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(uf_remappedPS[0].w)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(uf_remappedPS[0].z)) + intBitsToFloat(uf_remappedPS[1].z)));
PV1i.y = R123i.y;
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV0i.w)));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.y), intBitsToFloat(PV0i.z)));
// 4
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), intBitsToFloat(PV1i.y)));
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), intBitsToFloat(PV1i.x)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(uf_remappedPS[2].y)) + intBitsToFloat(uf_remappedPS[3].y)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(uf_remappedPS[3].x)));
PV0i.w = R123i.w;
// 5
backupReg0i = R0i.x;
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(uf_remappedPS[2].w)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(uf_remappedPS[2].z)) + intBitsToFloat(uf_remappedPS[3].z)));
PV1i.y = R123i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV0i.w)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.y), intBitsToFloat(PV0i.z)));
// 6
backupReg0i = R0i.z;
PV0i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R0i.w)), intBitsToFloat(PV1i.x)));
R0i.y = ((R2i.x == 0)?(PV1i.w):(R127i.w));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV1i.y)));
R0i.x = ((R2i.x == 0)?(PV1i.z):(R126i.z));
PS0i = R0i.x;
// 7
R0i.z = ((R2i.x == 0)?(PV0i.z):(R127i.x));
R0i.w = ((R2i.x == 0)?(PV0i.x):(R126i.y));
// export
passPixelColor0 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), 0.0);
}

View File

@ -0,0 +1,42 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500 # ALZP01
name = "The Legend of Zelda: Breath of the Wild - Clean Camera Rune (configurable)"
version = 2
# This pack is configurable, which could make the pack more playable with some compromises.
# You can disable shaders if you want to to remove graphical bugs that this will bring. Everything shader has a comment with the results of my limited research.
# Here's a list with all the different parts, which you can disable (just rename the extension to .bak).
# Installing/changing preset's should be as easy as just moving the files next towards the rules.txt file.
# The default presets (that are used when you've downloaded this) is Minimal mode, which doesn't have any drawback.
# Photo mode however is much more obtrusive and has a significant impact on the menu's. You'll need to browse the menu's blindly.
# As always, I don't discourage changing some of these out by yourself as it's all limited testing.
# Included are screenshots of both of these presets to help you decide.
# Tested:
# 5431383136d7b11b_0000000000000000_vs.txt // Main Lines // No drawbacks
# cb83a22cf0961e1a_000000000000007d_ps.txt // "Zoom" Text // No drawbacks
# 156a8a37bc669fec_0000000000001e49_ps.txt // Black tint edge // No drawbacks
# 2d0ed5b8778b1709_0000000000000000_vs.txt // Edge Bloom 1 // No drawbacks
# 7751959c9083eebb_000000000000007d_ps.txt // Sheikah letters left&right, menu button prompts // Removes most text from menu
# a15e2a77cef4c5e3_000000000000007d_ps.txt // Text Frame // Removes text from menu
# ededcf8bdc3384ef_0000000000000079_ps.txt // Glow, Frame GUI // Clear UI, Removes fade on main menu, removes inventory icons, removes hearts
# Don't use this!
# 569ebe93f1ae5799_0000000000000079_ps.txt // Vintage, Remove buttons, Edge Textures, Edge Background // MASSIVE ACNE OR BLACK SCREEN
# =================================
# Presets:
# - Minimal
# 5431383136d7b11b_0000000000000000_vs.txt
# cb83a22cf0961e1a_000000000000007d_ps.txt
# 156a8a37bc669fec_0000000000001e49_ps.txt
# - Photo
# 569ebe93f1ae5799_0000000000000079_ps.txt
# 7751959c9083eebb_000000000000007d_ps.txt
# ededcf8bdc3384ef_0000000000000079_ps.txt
# 2d0ed5b8778b1709_0000000000000000_vs.txt
# a15e2a77cef4c5e3_000000000000007d_ps.txt
# There's improvements to be made so give some feedback if you find anything. You can create a new issue on the github repository and it'll be looked at.

View File

@ -1,181 +1,135 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader bd8bba59e2149449
// Contrasty + Adjustable Bloom + Adjust Saturation
// original shader dumped using cemu 1.10.0f, BotW 1.3.1
// Adjustable Bloom + Tone Mapping + Adjustable Vibrance(Contrasty)
//----------------------------settings-------------------------------------
/*=============================Settings=====================================*/
#define adjust_bloom 1
#define adjust_saturation 1
#define contrasty 1
// 0: disable, 1: enable.
#define adjust_bloom 1 // 0: disable, 1: enable.
const float bloomFactor = 0.7; // 1.0 is neutral [0,1+]
const float bloomFactor = 0.7; // 1.0 is neutral
#define tone_mapping 1
// -1: disable, loss of bright detail/color but keep [0,1] intact
// 0: (Wii U) BotW original
// 1: ACES Filmic
//---------------"ACES Filmic","disable" Parameters-------------//
const float Exposure = 0.6; // [0.0, 1.0+] Adjust exposure
//---------------------------------------------------------------//
const float satFactor = 1.3; // 1.0 is neutral. Experimental, adjust native saturation
#define post_process 0
// -1: disable
// 0: (Wii U) BotW original, only vibrance
// 1: Contrasty
//----------------"BotW original" vibrance adjust-------------//
const float satFactor = 0.25; // 0.18 is neutral. Experimental, adjust native saturation
//---------------------------------------------------------------//
//---------------------"Contrasty" Parameters-----------------//
const float gamma = 0.81; // 1.0 is neutral. Botw is already colour graded at this stage
const float exposure = 1.17; // 1.0 is neutral
const float vibrance = 0.40; // >0: saturate <0: desaturate
const vec3 vibrance_RGB_balance = vec3(1.0,1.0,1.0); // A per channel multiplier to the Vibrance strength so you can give more boost to certain colors over others.
const float crushContrast = 0.000; // 0.0 is neutral. Use small increments, loss of shadow detail
//---------------------------------------------------------------//
const float gamma = 0.81; // 1.0 is neutral. Botw is already colour graded at this stage
const float exposure = 1.17; // 1.0 is neutral
const float vibrance = 0.008; // 0.0 is neutral
const float crushContrast = 0.004; // 0.0 is neutral. Use small increments, loss of shadow detail
/*==========================================================================*/
//--------------------------------------------------------------------------
// shader bd8bba59e2149449 // bloom(add), tonemap, saturate
uniform ivec4 uf_remappedPS[1];
layout(binding = 0) uniform sampler2D textureUnitPS0;
layout(binding = 1) uniform sampler2D textureUnitPS1;
layout(binding = 0) uniform sampler2D textureUnitPS0; //bloom
layout(binding = 1) uniform sampler2D textureUnitPS1; //texture, hdr
layout(location = 0) in vec4 passParameterSem0;
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 getL601(vec3 rgb) {
return dot(rgb,vec3(0.2989,0.5866,0.1145));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
float getL709(vec3 rgb) {
return dot(rgb,vec3(0.2126,0.7152,0.0722));
}
vec3 BotWToneMap(vec3 color) {
float Lumn = getL601(color);
vec4 exptm = 1.0 - exp(-vec4(color,Lumn));
vec3 cpre = exptm.w / Lumn * color;
vec3 colorldr = mix(cpre,exptm.rgb,vec3(pow(exptm.w,2.0)));//refine
return colorldr;
}
vec3 ACESFilm(vec3 color) {
color *= Exposure;
float Lumn = getL709(color);
vec4 tm = vec4(color,Lumn);
tm = (tm*(2.51*tm+0.03))/(tm*(2.43*tm+0.59)+0.14); // tonemap
vec3 cpre = tm.w / Lumn * color;
vec3 colorldr = mix(cpre,tm.rgb,vec3(pow(tm.w,2.0)));//refine
return colorldr;
}
vec3 BotWVibrance(vec3 color) {
float avg = (color.r + color.g + color.b)/3.0;
float maxc = max(color.r, max(color.g,color.b));
float w = 1.0 - pow(1.0 - 2.0 * avg, 2.0);
float weight = 1.0 + w * satFactor;
vec3 satcolor = mix(vec3(maxc), color, weight);
return satcolor;
}
vec3 ReshadeVibrance(vec3 color) {
float max_color = max(color.r, max(color.g, color.b)); // Find the strongest color
float min_color = min(color.r, min(color.g, color.b)); // Find the weakest color
float luma = getL709(color);
float color_saturation = max_color - min_color; // The difference between the two is the saturation
vec3 coeffVibrance = vibrance_RGB_balance * vibrance;
color = mix(vec3(luma), color, 1.0 + (coeffVibrance * (1.0 - (sign(coeffVibrance) * color_saturation))));
return color;
}
vec3 Contrasty(vec3 fColour) {
fColour = max(vec3(0.0), fColour - vec3(crushContrast));
fColour = clamp(exposure * fColour, 0.0, 1.0);
fColour = pow(fColour, vec3(1.0 / gamma));
fColour = ReshadeVibrance(fColour); // reshade's identical, only a little stronger when at same setting
return fColour;
}
// bad curve, see reshade curves.fx
//vec3 Contrasty2(vec3 color) {
// color = clamp(color,0.0,1.0);
// vec3 dark = pow(color,vec3(1.0/dark_thr));
// vec3 bright = pow(color,vec3(1.0/bright_thr));
// float lumn = getL709(color);
// color = mix(dark,bright,lumn);
// color = ReshadeVibrance(color);
// return color;
//}
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = 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 = passParameterSem0;
R1f.xyz = (texture(textureUnitPS0, R0f.xy).xyz);
vec3 bloom = texture(textureUnitPS0, passParameterSem0.xy).xyz;
vec3 color = texture(textureUnitPS1, passParameterSem0.xy).xyz;
#if (adjust_bloom == 1)
R1f.xyz *= bloomFactor;
bloom *= bloomFactor;
#endif
R0f.xyz = (texture(textureUnitPS1, R0f.xy).xyz);
// 0
R126f.x = R1f.x + R0f.x;
R127f.y = R1f.y + R0f.y;
R126f.z = R1f.z + R0f.z;
PV0f.xyz = vec3(R126f.x,R127f.y,R126f.z);
R125f.w = 1.0;
color += bloom;
// 1
tempf.x = dot(vec4(PV0f.x,PV0f.y,PV0f.z,-0.0),vec4(intBitsToFloat(0x3e99096c),intBitsToFloat(0x3f162b6b),intBitsToFloat(0x3dea4a8c),0.0));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
// 2
R127f.x = -(R127f.y) * intBitsToFloat(0x3fb8aa3b);
PV0f.y = -(PV1f.x) * intBitsToFloat(0x3fb8aa3b);
R127f.z = -(R126f.x) * intBitsToFloat(0x3fb8aa3b);
R127f.w = -(R126f.z) * intBitsToFloat(0x3fb8aa3b);
R126f.w = 1.0 / PV1f.x;
PS0f = R126f.w;
// 3
PS1f = exp2(PV0f.y);
// 4
PV0f.x = -(PS1f) + 1.0;
PS0f = exp2(R127f.x);
// 5
R127f.x = -(PS0f) + 1.0;
R126f.y = mul_nonIEEE(PV0f.x, PV0f.x);
PV1f.z = PV0f.x * R126f.w;
PS1f = exp2(R127f.w);
// 6
backupReg0f = R126f.x;
backupReg1f = R127f.z;
R126f.x = mul_nonIEEE(backupReg0f, PV1f.z);
PV0f.y = -(PS1f) + 1.0;
R127f.z = mul_nonIEEE(R126f.z, PV1f.z);
PV0f.z = R127f.z;
R127f.w = mul_nonIEEE(R127f.y, PV1f.z);
PV0f.w = R127f.w;
PS0f = exp2(backupReg1f);
// 7
PV1f.x = R127f.x + -(PV0f.w);
PV1f.y = PV0f.y + -(PV0f.z);
PV1f.w = -(PS0f) + 1.0;
// 8
backupReg0f = R127f.z;
R127f.x = (mul_nonIEEE(PV1f.x,R126f.y) + R127f.w);
R127f.x = clamp(R127f.x, 0.0, 1.0);
PV0f.x = R127f.x;
PV0f.y = PV1f.w + -(R126f.x);
R127f.z = (mul_nonIEEE(PV1f.y,R126f.y) + backupReg0f);
R127f.z = clamp(R127f.z, 0.0, 1.0);
PV0f.z = R127f.z;
// 9
backupReg0f = R126f.x;
R126f.x = (mul_nonIEEE(PV0f.y,R126f.y) + backupReg0f);
R126f.x = clamp(R126f.x, 0.0, 1.0);
PV1f.x = R126f.x;
R126f.y = max(PV0f.x, PV0f.z);
PV1f.w = min(PV0f.x, PV0f.z);
// 10
tempf.x = dot(vec4(PV1f.x,R127f.x,R127f.z,R125f.w),vec4(intBitsToFloat(0x3f2aaaab),intBitsToFloat(0x3f2aaaab),intBitsToFloat(0x3f2aaaab),-(1.0)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R126f.z = min(PV1f.x, PV1f.w);
PS0f = R126f.z;
// 11
backupReg0f = R127f.x;
backupReg1f = R127f.z;
R127f.x = max(R126f.x, R126f.y);
PV1f.x = R127f.x;
R123f.y = (mul_nonIEEE(-(PV0f.x),PV0f.x) + 1.0);
PV1f.y = R123f.y;
R127f.z = backupReg0f + -(PS0f);
R125f.w = R126f.x + -(PS0f);
R126f.y = backupReg1f + -(PS0f);
PS1f = R126f.y;
// 12
#if (adjust_saturation == 1)
R126f.x = satFactor * (mul_nonIEEE(PV1f.y,intBitsToFloat(uf_remappedPS[0].y)) + intBitsToFloat(uf_remappedPS[0].x));
#else
R126f.x = (mul_nonIEEE(PV1f.y,intBitsToFloat(uf_remappedPS[0].y)) + intBitsToFloat(uf_remappedPS[0].x));
#if (tone_mapping == -1)
color = clamp(color*Exposure,0.0,1.0);
#elif (tone_mapping == 0)
color = BotWToneMap(color);
#elif (tone_mapping == 1)
color = ACESFilm(color);
#endif
PV0f.x = R126f.x;
PV0f.y = -(R126f.z) + PV1f.x;
// 13
R123f.w = (mul_nonIEEE(-(PV0f.x),PV0f.y) + R127f.x);
PV1f.w = R123f.w;
// 14
R0f.x = (mul_nonIEEE(R126f.x,R125f.w) + PV1f.w);
R0f.y = (mul_nonIEEE(R126f.x,R127f.z) + PV1f.w);
R0f.z = (mul_nonIEEE(R126f.x,R126f.y) + PV1f.w);
#if (contrasty == 1)
vec3 fColour = R0f.xyz;
fColour = max(vec3(0.0), fColour - vec3(crushContrast));
fColour = clamp(exposure * fColour, 0.0, 1.0);
fColour = pow(fColour, vec3(1.0 / gamma));
float luminance = fColour.r*intBitsToFloat(0x3e99096c) + fColour.g*intBitsToFloat(0x3f162b6b) + fColour.b*intBitsToFloat(0x3dea4a8c);
float mn = min(min(fColour.r, fColour.g), fColour.b);
float mx = max(max(fColour.r, fColour.g), fColour.b);
float sat = (1.0-(mx - mn)) * (1.0-mx) * luminance * 5.0;
vec3 lightness = vec3((mn + mx)/2.0);
// vibrance
fColour = mix(fColour, mix(fColour, lightness, -vibrance), sat);
R0f.xyz = fColour;
#if (post_process == 0)
color = BotWVibrance(color);
#elif (post_process == 1)
color = Contrasty(color);
#endif
// export
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
passPixelColor0 = vec4(color, passParameterSem0.w);
}

View File

@ -6,7 +6,7 @@ version = 2
# Credit:
# getdls for contrasty
# lihe@bestminr.com for vibrance logic
# kiri, navras for tone mapping
# kiri hsv saturation
# navras seperate contrasty from AARemoval
# approximate ACES Filmic ~ https://knarkowicz.wordpress.com/2016/01/06/aces-filmic-tone-mapping-curve/

View File

@ -0,0 +1,818 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader 10a2a18d2a9a02d8
// Monochromia
// Link's face
// original shader dumped using cemu 1.11.c, BotW 1.3.1
uniform ivec4 uf_remappedPS[9];
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf45c6000 res 1280x720x1 dim 1 tm: 4 format 041a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0xf494a800 res 1280x720x1 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: 1
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 6) uniform sampler2D textureUnitPS6;// Tex6 addr 0xf5054000 res 640x360x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 8) uniform sampler2DArray textureUnitPS8;// Tex8 addr 0xf5593000 res 640x360x2 dim 5 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x2) Sampler8 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 9) uniform sampler2D textureUnitPS9;// Tex9 addr 0xf575f800 res 640x360x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler9 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 11) uniform sampler2D textureUnitPS11;// Tex11 addr 0xf5977800 res 640x360x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler11 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 12) uniform sampler2D textureUnitPS12;// Tex12 addr 0xf4240800 res 1280x720x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler12 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 13) uniform sampler2D textureUnitPS13;// Tex13 addr 0xf528a800 res 640x360x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler13 ClampX/Y/Z: 2 2 2 border: 1
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 2) in vec4 passParameterSem2;
layout(location = 3) in vec4 passParameterSem4;
layout(location = 4) in vec4 passParameterSem6;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
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 R9i = ivec4(0);
ivec4 R10i = ivec4(0);
ivec4 R11i = ivec4(0);
ivec4 R12i = ivec4(0);
ivec4 R13i = ivec4(0);
ivec4 R14i = ivec4(0);
ivec4 R15i = ivec4(0);
ivec4 R16i = ivec4(0);
ivec4 R17i = ivec4(0);
ivec4 R18i = 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(passParameterSem0);
R1i = floatBitsToInt(passParameterSem1);
R2i = floatBitsToInt(passParameterSem2);
R3i = floatBitsToInt(passParameterSem4);
R4i = floatBitsToInt(passParameterSem6);
R15i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R4i.zw)).xyzw);
R7i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R4i.zw)).xyzw);
R4i.w = floatBitsToInt(texture(textureUnitPS12, intBitsToFloat(R0i.xy)).x);
R5i.xyzw = floatBitsToInt(textureGather(textureUnitPS6, intBitsToFloat(R0i.xy)).xyzw);
// 0
backupReg0i = R4i.w;
PV0i.x = floatBitsToInt(intBitsToFloat(R15i.w) * intBitsToFloat(0x437f0000));
R126i.y = floatBitsToInt((intBitsToFloat(R7i.x) * 2.0 + -(1.0)));
PV0i.y = R126i.y;
R127i.z = floatBitsToInt((intBitsToFloat(R7i.y) * 2.0 + -(1.0)));
PV0i.z = R127i.z;
R4i.w = floatBitsToInt((intBitsToFloat(R7i.z) * 2.0 + -(1.0)));
PV0i.w = R4i.w;
R127i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(uf_remappedPS[0].w)) + 1.0));
PS0i = R127i.y;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),intBitsToFloat(PV0i.w),-0.0),vec4(intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),intBitsToFloat(PV0i.w),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R16i.w = int(intBitsToFloat(PV0i.x));
PS1i = R16i.w;
// 2
R127i.x = 0x358637bd;
R6i.y = 0;
PV0i.z = PS1i >> 0x00000005;
PV0i.w = floatBitsToInt(floor(intBitsToFloat(R3i.x)));
R6i.x = floatBitsToInt(sqrt(intBitsToFloat(PV1i.x)));
PS0i = R6i.x;
// 3
backupReg0i = R127i.y;
PV1i.x = floatBitsToInt(floor(intBitsToFloat(R3i.y)));
R127i.y = PV0i.z & 0x00000007;
R125i.z = floatBitsToInt(intBitsToFloat(PV0i.w) + -(0.5));
R124i.w = floatBitsToInt(intBitsToFloat(R3i.x) + -(intBitsToFloat(PV0i.w)));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(backupReg0i));
// 4
R124i.x = floatBitsToInt(intBitsToFloat(PV1i.x) + -(0.5));
R124i.y = floatBitsToInt(intBitsToFloat(R3i.y) + -(intBitsToFloat(PV1i.x)));
R9i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[0].x)), intBitsToFloat(PS1i)));
PV0i.z = R9i.z;
R11i.w = floatBitsToInt(roundEven(0.0));
R6i.w = floatBitsToInt(1.0 / intBitsToFloat(R6i.x));
PS0i = R6i.w;
// 5
R4i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PS0i)));
R8i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS0i)));
R127i.z = floatBitsToInt(intBitsToFloat(uf_remappedPS[0].x) + intBitsToFloat(PV0i.z));
PV1i.z = R127i.z;
PV1i.w = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.z)), intBitsToFloat(uf_remappedPS[1].y)));
PS1i = floatBitsToInt(float(R127i.y));
// 6
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R5i.y)));
PV0i.y = floatBitsToInt(intBitsToFloat(PS1i) + intBitsToFloat(0xc0000000));
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R5i.w)));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R5i.x)));
R4i.y = floatBitsToInt(1.0 / intBitsToFloat(PV1i.w));
PS0i = R4i.y;
// 7
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R8i.y),intBitsToFloat(R127i.x),-0.0),vec4(intBitsToFloat(R4i.x),intBitsToFloat(R8i.y),intBitsToFloat(R127i.x),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
PS1i = floatBitsToInt(exp2(intBitsToFloat(PV0i.y)));
// 8
backupReg0i = R127i.z;
R5i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.y), intBitsToFloat(PS1i)));
PV0i.x = R5i.x;
R127i.y = floatBitsToInt(max(intBitsToFloat(R126i.x), -(intBitsToFloat(R126i.x))));
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R5i.z)));
R126i.w = floatBitsToInt(max(intBitsToFloat(R126i.z), -(intBitsToFloat(R126i.z))));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 9
backupReg0i = R127i.w;
backupReg0i = R127i.w;
PV1i.x = floatBitsToInt(min(intBitsToFloat(PV0i.x), 2.0));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.y), intBitsToFloat(PS0i)));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.x), intBitsToFloat(PS0i)));
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.y), intBitsToFloat(uf_remappedPS[3].x)));
PV1i.w = R125i.w;
R127i.w = floatBitsToInt(max(intBitsToFloat(backupReg0i), -(intBitsToFloat(backupReg0i))));
PS1i = R127i.w;
// 10
backupReg0i = R127i.y;
R126i.x = floatBitsToInt(intBitsToFloat(PV1i.x) * intBitsToFloat(0x40c00000));
PV0i.x = R126i.x;
R127i.y = floatBitsToInt(max(intBitsToFloat(R127i.z), -(intBitsToFloat(R127i.z))));
R127i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[4].w)), intBitsToFloat(PV1i.y)));
PV0i.z = R127i.z;
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV1i.w)));
PS0i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(PV1i.w)));
// 11
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z), intBitsToFloat(R126i.z)));
PV1i.x = R127i.x;
R125i.y = R5i.x;
R125i.y = clampFI32(R125i.y);
PV1i.y = R125i.y;
R126i.z = floatBitsToInt(-(intBitsToFloat(PV0i.w)) + intBitsToFloat(PS0i));
PV1i.z = R126i.z;
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(PV0i.x)));
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(R125i.w)));
PS1i = R126i.y;
// 12
backupReg0i = R126i.x;
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(R125i.w)));
PV0i.x = R126i.x;
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(backupReg0i)));
PV0i.z = floatBitsToInt(intBitsToFloat(PV1i.w) * intBitsToFloat(0x3e4ccccd));
PV0i.w = PV1i.y;
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * 2.0);
R125i.x = floatBitsToInt(-(intBitsToFloat(PS1i)) + intBitsToFloat(PV1i.z));
PS0i = R125i.x;
// 13
R9i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(PV0i.w)) + intBitsToFloat(R0i.x)));
R9i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(PV0i.w)) + intBitsToFloat(R0i.y)));
PV1i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R126i.z));
R10i.w = floatBitsToInt(intBitsToFloat(R0i.x) + intBitsToFloat(PV0i.y));
R10i.y = floatBitsToInt(intBitsToFloat(R0i.y) + intBitsToFloat(PV0i.z));
PS1i = R10i.y;
// 14
backupReg0i = R0i.w;
R8i.x = floatBitsToInt(intBitsToFloat(R125i.y) * intBitsToFloat(0x40400000));
PV0i.y = floatBitsToInt(intBitsToFloat(R126i.x) + intBitsToFloat(R125i.x));
R8i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), intBitsToFloat(R9i.z)));
PV0i.w = floatBitsToInt(intBitsToFloat(R126i.y) + intBitsToFloat(PV1i.z));
R13i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R9i.z)));
PS0i = R13i.y;
// 15
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.y) + intBitsToFloat(R124i.y));
PV1i.x = clampFI32(PV1i.x);
R5i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.w), intBitsToFloat(R6i.w)));
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.w) + intBitsToFloat(R124i.w));
PV1i.z = clampFI32(PV1i.z);
R6i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R9i.x)) + intBitsToFloat(R1i.z)));
R4i.w = 0;
PS1i = R4i.w;
// 16
PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(R124i.x));
R12i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R9i.y)) + intBitsToFloat(R1i.w)));
R4i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R10i.w)) + intBitsToFloat(R1i.z)));
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(R125i.z));
R6i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R10i.y)) + intBitsToFloat(R1i.w)));
PS0i = R6i.z;
// 17
R11i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(PV0i.w)));
R11i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.w), intBitsToFloat(PV0i.x)));
R13i.z = floatBitsToInt(intBitsToFloat(0x3df5c28f) * intBitsToFloat(uf_remappedPS[1].z));
PV1i.w = R16i.w >> int(1);
R3i.z = floatBitsToInt(intBitsToFloat(R5i.x) * intBitsToFloat(0x40c00000));
PS1i = R3i.z;
// 18
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R8i.z),intBitsToFloat(R13i.y),intBitsToFloat(R9i.z),-0.0),vec4(intBitsToFloat(R8i.z),intBitsToFloat(R13i.y),intBitsToFloat(R9i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R125i.z = PV1i.w & 0x0000000f;
PS0i = R125i.z;
// 19
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.w), intBitsToFloat(R7i.w)));
R7i.y = floatBitsToInt(max(intBitsToFloat(R15i.y), intBitsToFloat(R15i.z)));
R5i.z = floatBitsToInt((intBitsToFloat(R4i.y) * intBitsToFloat(0x3dcccccd) + 1.0));
R124i.w = floatBitsToInt(intBitsToFloat(R3i.z) * intBitsToFloat(0x3e4ccccd));
R124i.w = clampFI32(R124i.w);
PS1i = floatBitsToInt(sqrt(intBitsToFloat(PV0i.x)));
// 20
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R8i.y),intBitsToFloat(R5i.y),-0.0),vec4(intBitsToFloat(uf_remappedPS[5].x),intBitsToFloat(uf_remappedPS[5].y),intBitsToFloat(uf_remappedPS[5].z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R7i.z = tempi.x;
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PS1i));
// 21
R10i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.z), intBitsToFloat(PS0i)));
R3i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R13i.y), intBitsToFloat(PS0i)));
R10i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.z), intBitsToFloat(PS0i)));
R8i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.w), intBitsToFloat(R124i.x)));
R4i.y = floatBitsToInt(float(R125i.z));
PS1i = R4i.y;
// 0
backupReg0i = R4i.y;
backupReg1i = R7i.z;
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].x), intBitsToFloat(uf_remappedPS[6].w)));
PV0i.x = R127i.x;
R4i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].y), intBitsToFloat(uf_remappedPS[6].w)));
PV0i.y = R4i.y;
R7i.z = floatBitsToInt(intBitsToFloat(backupReg0i) * intBitsToFloat(0x3d888889));
R127i.w = floatBitsToInt(max(-(intBitsToFloat(backupReg1i)), 0.0));
R13i.x = floatBitsToInt(max(intBitsToFloat(R15i.x), intBitsToFloat(R7i.y)));
PS0i = R13i.x;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(R6i.y),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(R6i.y),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R124i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].z), intBitsToFloat(uf_remappedPS[6].w)));
PS1i = R124i.z;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R8i.y),intBitsToFloat(R5i.y),-0.0),vec4(intBitsToFloat(R10i.x),intBitsToFloat(R3i.y),intBitsToFloat(R10i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 3
R7i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS0i)));
R6i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.y), intBitsToFloat(PS0i)));
R125i.z = floatBitsToInt((intBitsToFloat(R10i.x) * intBitsToFloat(0xbe99999a) + -(intBitsToFloat(R127i.x))));
R3i.w = floatBitsToInt(intBitsToFloat(PV0i.x) + 1.0);
R3i.w = clampFI32(R3i.w);
PV1i.w = R3i.w;
R124i.y = floatBitsToInt((intBitsToFloat(R3i.y) * intBitsToFloat(0xbe99999a) + -(intBitsToFloat(R4i.y))));
PS1i = R124i.y;
// 4
R124i.x = floatBitsToInt((intBitsToFloat(R10i.z) * intBitsToFloat(0xbe99999a) + -(intBitsToFloat(R124i.z))));
PV0i.x = R124i.x;
R125i.y = floatBitsToInt(intBitsToFloat(R10i.x) + intBitsToFloat(R127i.x));
PV0i.z = floatBitsToInt(-(intBitsToFloat(PV1i.w)) + 1.0);
R125i.w = floatBitsToInt(intBitsToFloat(R3i.y) + intBitsToFloat(R4i.y));
R127i.z = floatBitsToInt(intBitsToFloat(R10i.z) + intBitsToFloat(R124i.z));
PS0i = R127i.z;
// 5
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R125i.z),intBitsToFloat(R124i.y),intBitsToFloat(PV0i.x),-0.0),vec4(intBitsToFloat(R125i.z),intBitsToFloat(R124i.y),intBitsToFloat(PV0i.x),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
tempResultf = log2(intBitsToFloat(PV0i.z));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
R126i.y = floatBitsToInt(tempResultf);
PS1i = R126i.y;
// 6
R125i.x = floatBitsToInt((intBitsToFloat(R127i.x) * intBitsToFloat(0xbf4ccccd) + intBitsToFloat(R10i.x)));
R127i.y = floatBitsToInt((intBitsToFloat(R4i.y) * intBitsToFloat(0xbf4ccccd) + intBitsToFloat(R3i.y)));
R126i.z = floatBitsToInt((intBitsToFloat(R124i.z) * intBitsToFloat(0xbf4ccccd) + intBitsToFloat(R10i.z)));
PV0i.w = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x3e4ccccd));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
R124i.w = floatBitsToInt(tempResultf);
PS0i = R124i.w;
// 7
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R125i.y),intBitsToFloat(R125i.w),intBitsToFloat(R127i.z),-0.0),vec4(intBitsToFloat(R125i.y),intBitsToFloat(R125i.w),intBitsToFloat(R127i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R3i.x = floatBitsToInt(exp2(intBitsToFloat(PV0i.w)));
PS1i = R3i.x;
// 8
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), intBitsToFloat(R124i.w)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.y), intBitsToFloat(R124i.w)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.x), intBitsToFloat(R124i.w)));
R126i.w = floatBitsToInt(intBitsToFloat(R126i.y) * intBitsToFloat(0x41000000));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
R124i.w = floatBitsToInt(tempResultf);
PS0i = R124i.w;
// 9
R126i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R8i.y),intBitsToFloat(R5i.y),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
R126i.x = clampFI32(R126i.x);
PV1i.x = R126i.x;
PV1i.y = R126i.x;
PV1i.z = R126i.x;
PV1i.w = R126i.x;
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(PS0i)));
PS1i = R124i.x;
// 10
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R125i.x),intBitsToFloat(R127i.y),intBitsToFloat(R126i.z),-0.0),vec4(intBitsToFloat(R125i.x),intBitsToFloat(R127i.y),intBitsToFloat(R126i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.w), intBitsToFloat(R124i.w)));
PS0i = R125i.y;
// 11
R12i.x = R5i.x;
R12i.x = floatBitsToInt(intBitsToFloat(R12i.x) * 4.0);
R12i.x = clampFI32(R12i.x);
R7i.y = R3i.z;
R7i.y = clampFI32(R7i.y);
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(R124i.w)));
R5i.w = floatBitsToInt(min(intBitsToFloat(R127i.w), 1.0));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
R127i.w = floatBitsToInt(tempResultf);
PS1i = R127i.w;
// 12
backupReg0i = R126i.x;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R8i.y),intBitsToFloat(R5i.y),-0.0),vec4(intBitsToFloat(R124i.x),intBitsToFloat(R125i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R124i.w = tempi.x;
tempResultf = log2(intBitsToFloat(backupReg0i));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
R126i.x = floatBitsToInt(tempResultf);
PS0i = R126i.x;
// 13
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R8i.y),intBitsToFloat(R5i.y),intBitsToFloat(R5i.y)),vec4(-(intBitsToFloat(R127i.x)),-(intBitsToFloat(R4i.y)),-(intBitsToFloat(R124i.z)),-(intBitsToFloat(R4i.w)))));
tempi.x = clampFI32(tempi.x);
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R11i.z = tempi.x;
R3i.z = floatBitsToInt(exp2(intBitsToFloat(R126i.w)));
PS1i = R3i.z;
// 14
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.x), intBitsToFloat(R127i.w)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(R127i.w)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.z), intBitsToFloat(R127i.w)));
PV0i.w = floatBitsToInt(max(-(intBitsToFloat(R124i.w)), 0.0));
R127i.w = floatBitsToInt(intBitsToFloat(R126i.x) * intBitsToFloat(0x41a00000));
PS0i = R127i.w;
// 15
R126i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R8i.y),intBitsToFloat(R5i.y),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = R126i.x;
PV1i.y = R126i.x;
PV1i.z = R126i.x;
PV1i.w = R126i.x;
R127i.y = floatBitsToInt(min(intBitsToFloat(PV0i.w), 1.0));
PS1i = R127i.y;
// 16
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R10i.x),intBitsToFloat(R3i.y),intBitsToFloat(R10i.z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R4i.y),intBitsToFloat(R124i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R12i.z = floatBitsToInt(exp2(intBitsToFloat(R127i.w)));
PS0i = R12i.z;
// 17
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.z),intBitsToFloat(R127i.y)) + -(0.5)));
PV1i.x = R123i.x;
R4i.y = floatBitsToInt((-(intBitsToFloat(PV0i.x)) * intBitsToFloat(0x40a00000) + intBitsToFloat(0x40a00000)));
R4i.y = clampFI32(R4i.y);
PV1i.z = floatBitsToInt(max(-(intBitsToFloat(PV0i.x)), 0.0));
R7i.w = floatBitsToInt(intBitsToFloat(R126i.x) + 1.0);
R7i.w = clampFI32(R7i.w);
R8i.y = floatBitsToInt(intBitsToFloat(R5i.z) * intBitsToFloat(0x42960000));
PS1i = R8i.y;
// 18
PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.x) * intBitsToFloat(0x42200000));
PV0i.x = clampFI32(PV0i.x);
PV0i.y = floatBitsToInt(min(intBitsToFloat(R15i.y), intBitsToFloat(R15i.z)));
PV0i.z = floatBitsToInt(intBitsToFloat(R13i.x) + intBitsToFloat(0x2edbe6ff));
R14i.w = floatBitsToInt(min(intBitsToFloat(PV1i.z), 1.0));
PV0i.w = R14i.w;
R4i.x = floatBitsToInt(intBitsToFloat(R2i.x) * intBitsToFloat(0x3f4ccccd));
PS0i = R4i.x;
// 19
backupReg0i = R6i.x;
R6i.x = floatBitsToInt((intBitsToFloat(backupReg0i) * 4.0 + intBitsToFloat(0xc0400000)));
R6i.x = clampFI32(R6i.x);
R14i.y = floatBitsToInt(min(intBitsToFloat(R15i.x), intBitsToFloat(PV0i.y)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(PV0i.x)));
R12i.w = floatBitsToInt(intBitsToFloat(R2i.y) * intBitsToFloat(0x3f4ccccd));
PV1i.w = R12i.w;
R14i.z = floatBitsToInt(1.0 / intBitsToFloat(PV0i.z));
PS1i = R14i.z;
// 20
backupReg0i = R5i.x;
R5i.x = floatBitsToInt(intBitsToFloat(uf_remappedPS[7].x) + -(intBitsToFloat(R4i.x)));
R5i.y = floatBitsToInt(intBitsToFloat(PV1i.z) * intBitsToFloat(0x3e19999a));
R5i.z = backupReg0i;
R5i.z = floatBitsToInt(intBitsToFloat(R5i.z) * 2.0);
R5i.z = clampFI32(R5i.z);
R9i.w = floatBitsToInt(intBitsToFloat(uf_remappedPS[7].y) + -(intBitsToFloat(PV1i.w)));
R7i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.w), intBitsToFloat(R14i.w)));
PS0i = R7i.z;
// 0
backupReg0i = R6i.x;
backupReg1i = R6i.y;
R6i.x = floatBitsToInt(intBitsToFloat(backupReg0i) + -(0.5));
R6i.x = floatBitsToInt(intBitsToFloat(R6i.x) * 4.0);
R6i.x = clampFI32(R6i.x);
R6i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R14i.y)),intBitsToFloat(R14i.z)) + 1.0));
PV0i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[4].w)), intBitsToFloat(backupReg1i)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z), intBitsToFloat(R7i.x)));
tempResultf = log2(intBitsToFloat(R13i.x));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS0i = floatBitsToInt(tempResultf);
// 1
backupReg0i = R0i.x;
backupReg1i = R0i.y;
R0i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.w),intBitsToFloat(R8i.x)) + intBitsToFloat(backupReg0i)));
R0i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R8i.x)) + intBitsToFloat(backupReg1i)));
R0i.z = floatBitsToInt(intBitsToFloat(PS0i) * intBitsToFloat(0x3f19999a));
R13i.w = floatBitsToInt(intBitsToFloat(R5i.z) * 0.25);
R5i.z = floatBitsToInt(intBitsToFloat(R2i.z) * intBitsToFloat(0x3f4ccccd));
PS1i = R5i.z;
R0i.w = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R9i.xy)).x);
R9i.x = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R10i.wy)).x);
R10i.w = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R0i.xy)).x);
R4i.w = floatBitsToInt(texture(textureUnitPS13, intBitsToFloat(R11i.xy)).w);
R17i.xyz = floatBitsToInt(texture(textureUnitPS9, intBitsToFloat(R11i.xy)).xyz);
R16i.xyz = floatBitsToInt(texture(textureUnitPS8, vec3(intBitsToFloat(R11i.x),intBitsToFloat(R11i.y),intBitsToFloat(R11i.w))).xyz);
R18i.xyz = floatBitsToInt(texture(textureUnitPS11, intBitsToFloat(R11i.xy)).xyz);
// 0
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R0i.x)) + intBitsToFloat(R1i.z)));
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),intBitsToFloat(R9i.x)) + intBitsToFloat(uf_remappedPS[0].x)));
PV0i.y = R127i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),intBitsToFloat(R0i.w)) + intBitsToFloat(uf_remappedPS[0].x)));
PV0i.z = R123i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R0i.y)) + intBitsToFloat(R1i.w)));
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),intBitsToFloat(R10i.w)) + intBitsToFloat(uf_remappedPS[0].x)));
PS0i = R126i.y;
// 1
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.z)));
R125i.y = floatBitsToInt(-(intBitsToFloat(PV0i.y)));
PV1i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.z)), intBitsToFloat(R6i.w)));
PV1i.w = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.z)), intBitsToFloat(R12i.y)));
PS1i = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.y)), intBitsToFloat(R4i.z)));
// 2
PV0i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R127i.y)), intBitsToFloat(R6i.z)));
R127i.y = floatBitsToInt(-(intBitsToFloat(R8i.z)) + intBitsToFloat(PV1i.z));
R126i.z = floatBitsToInt(-(intBitsToFloat(R13i.y)) + intBitsToFloat(PV1i.w));
R124i.w = floatBitsToInt(-(intBitsToFloat(R9i.z)) + intBitsToFloat(PV1i.x));
R125i.x = floatBitsToInt(-(intBitsToFloat(R8i.z)) + intBitsToFloat(PS1i));
PS0i = R125i.x;
// 3
backupReg0i = R126i.y;
backupReg0i = R126i.y;
backupReg1i = R127i.w;
R127i.x = floatBitsToInt(-(intBitsToFloat(R126i.y)));
R126i.y = floatBitsToInt(-(intBitsToFloat(R13i.y)) + intBitsToFloat(PV0i.x));
R124i.z = floatBitsToInt(-(intBitsToFloat(R9i.z)) + intBitsToFloat(R125i.y));
R127i.w = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(backupReg0i)), intBitsToFloat(R126i.x)));
R126i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(backupReg0i)), intBitsToFloat(backupReg1i)));
PS1i = R126i.x;
// 4
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R10i.x),intBitsToFloat(R3i.y),intBitsToFloat(R10i.z),-0.0),vec4(intBitsToFloat(R127i.y),intBitsToFloat(R126i.z),intBitsToFloat(R124i.w),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R125i.y = tempi.x;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.w), intBitsToFloat(R3i.x)));
PS0i = R127i.z;
// 5
backupReg0i = R127i.w;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R10i.x),intBitsToFloat(R3i.y),intBitsToFloat(R10i.z),-0.0),vec4(intBitsToFloat(R125i.x),intBitsToFloat(R126i.y),intBitsToFloat(R124i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.w = tempi.x;
R124i.x = floatBitsToInt(-(intBitsToFloat(R8i.z)) + intBitsToFloat(backupReg0i));
PS1i = R124i.x;
// 6
backupReg0i = R127i.x;
backupReg1i = R124i.w;
backupReg2i = R124i.z;
R127i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R10i.x)),intBitsToFloat(R125i.y)) + intBitsToFloat(R127i.y)));
R127i.y = floatBitsToInt(-(intBitsToFloat(R13i.y)) + intBitsToFloat(R126i.x));
R125i.z = floatBitsToInt(-(intBitsToFloat(R9i.z)) + intBitsToFloat(backupReg0i));
R124i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R10i.z)),intBitsToFloat(R125i.y)) + intBitsToFloat(backupReg1i)));
R124i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R10i.z)),intBitsToFloat(PV1i.x)) + intBitsToFloat(backupReg2i)));
PS0i = R124i.z;
// 7
backupReg0i = R125i.x;
backupReg1i = R127i.z;
backupReg1i = R127i.z;
R125i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R10i.x)),intBitsToFloat(R127i.w)) + intBitsToFloat(backupReg0i)));
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R3i.y)),intBitsToFloat(R125i.y)) + intBitsToFloat(R126i.z)));
PV1i.y = R123i.y;
R127i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R3i.y)),intBitsToFloat(R127i.w)) + intBitsToFloat(R126i.y)));
PV1i.w = floatBitsToInt(intBitsToFloat(backupReg1i) + intBitsToFloat(0xbf400000));
R126i.y = floatBitsToInt((intBitsToFloat(backupReg1i) * intBitsToFloat(0x3e99999a) + intBitsToFloat(0xbecccccd)));
PS1i = R126i.y;
// 8
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.x),intBitsToFloat(PV1i.y),intBitsToFloat(R124i.w),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(PV1i.y),intBitsToFloat(R124i.w),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R4i.w = floatBitsToInt(intBitsToFloat(PV1i.w) * intBitsToFloat(0x41800000));
R4i.w = clampFI32(R4i.w);
PS0i = R4i.w;
// 9
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R125i.x),intBitsToFloat(R127i.z),intBitsToFloat(R124i.z),-0.0),vec4(intBitsToFloat(R125i.x),intBitsToFloat(R127i.z),intBitsToFloat(R124i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
R127i.z = floatBitsToInt(tempResultf);
PS1i = R127i.z;
// 10
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R10i.x),intBitsToFloat(R3i.y),intBitsToFloat(R10i.z),-0.0),vec4(intBitsToFloat(R124i.x),intBitsToFloat(R127i.y),intBitsToFloat(R125i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R124i.w = tempi.x;
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 11
backupReg0i = R127i.w;
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R10i.x)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R124i.x)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R3i.y)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.y)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R10i.z)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R125i.z)));
PV1i.z = R123i.z;
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(R127i.z)));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS0i)));
PS1i = R127i.z;
// 12
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.w), intBitsToFloat(R3i.z)));
R126i.w = clampFI32(R126i.w);
PS0i = R126i.w;
// 13
PV1i.x = floatBitsToInt(intBitsToFloat(R17i.x) + intBitsToFloat(0xbecccccd));
PV1i.y = floatBitsToInt(intBitsToFloat(R127i.z) * intBitsToFloat(0x3c23d70a));
PV1i.y = clampFI32(PV1i.y);
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R13i.z), intBitsToFloat(R127i.w)));
R127i.z = clampFI32(R127i.z);
PV1i.w = floatBitsToInt(intBitsToFloat(R126i.y) + intBitsToFloat(R11i.z));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
PS1i = floatBitsToInt(tempResultf);
// 14
PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.w) * intBitsToFloat(0x42960000));
PV0i.x = clampFI32(PV0i.x);
PV0i.y = floatBitsToInt(intBitsToFloat(R126i.w) + intBitsToFloat(R12i.z));
PV0i.y = clampFI32(PV0i.y);
PV0i.z = floatBitsToInt(intBitsToFloat(PV1i.x) * intBitsToFloat(0x41200000));
PV0i.z = clampFI32(PV0i.z);
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.w), intBitsToFloat(PS1i)));
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(R7i.w)));
PS0i = R125i.z;
// 15
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.w), intBitsToFloat(R127i.z)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R17i.y), intBitsToFloat(PV0i.z)));
PV1i.y = R127i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.y), intBitsToFloat(PV0i.x)));
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.w), intBitsToFloat(PV0i.y)));
PS1i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R13i.z), intBitsToFloat(PV0i.w)));
PS1i = clampFI32(PS1i);
// 16
PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.y) + -(1.0));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.z)) + intBitsToFloat(0xbecccccd)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.z),intBitsToFloat(R14i.w)) + intBitsToFloat(0xbecccccd)));
PV0i.z = R123i.z;
PV0i.w = floatBitsToInt(intBitsToFloat(R2i.w) + -(intBitsToFloat(R4i.w)));
PV0i.w = clampFI32(PV0i.w);
R124i.x = floatBitsToInt(intBitsToFloat(PS1i) + -(0.5));
PS0i = R124i.x;
// 17
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.w),intBitsToFloat(R8i.w)) + intBitsToFloat(0xbd4ccccd)));
PV1i.x = R123i.x;
R4i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.w)) + 1.0));
PV1i.z = floatBitsToInt(intBitsToFloat(R126i.y) + intBitsToFloat(R5i.w));
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x42960000));
PV1i.w = clampFI32(PV1i.w);
PS1i = floatBitsToInt(intBitsToFloat(PV0i.z) * intBitsToFloat(0x42960000));
PS1i = clampFI32(PS1i);
// 18
backupReg0i = R12i.x;
R12i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(PS1i)) + intBitsToFloat(R5i.y)));
R12i.x = clampFI32(R12i.x);
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(R8i.y)));
R126i.y = clampFI32(R126i.y);
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.w),intBitsToFloat(R8i.w)) + intBitsToFloat(0xbc23d70a)));
PV0i.z = R123i.z;
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.x) * intBitsToFloat(0x41a00000));
PV0i.w = clampFI32(PV0i.w);
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.y), intBitsToFloat(PV1i.w)));
R124i.w = floatBitsToInt(intBitsToFloat(R124i.w) * 2.0);
PS0i = R124i.w;
// 19
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.w) * intBitsToFloat(0x3df5c28f));
PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.z) * intBitsToFloat(0x42480000));
PV1i.y = clampFI32(PV1i.y);
PV1i.z = floatBitsToInt(intBitsToFloat(R4i.y) + intBitsToFloat(0x3da3d70a));
PV1i.w = floatBitsToInt(intBitsToFloat(R124i.x) * intBitsToFloat(0x42200000));
PV1i.w = clampFI32(PV1i.w);
R8i.y = floatBitsToInt(intBitsToFloat(R2i.w) + intBitsToFloat(R127i.y));
R8i.y = clampFI32(R8i.y);
PS1i = R8i.y;
// 20
R10i.x = floatBitsToInt(intBitsToFloat(PV1i.w) * intBitsToFloat(0x41000000));
R5i.y = floatBitsToInt(intBitsToFloat(R126i.w) + intBitsToFloat(PV1i.z));
R5i.y = clampFI32(R5i.y);
R13i.z = floatBitsToInt(intBitsToFloat(R124i.w) * intBitsToFloat(0x3e4ccccd));
R8i.w = floatBitsToInt((intBitsToFloat(PV1i.y) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(PV1i.x)));
R8i.w = clampFI32(R8i.w);
R7i.y = floatBitsToInt(intBitsToFloat(R4i.w) + intBitsToFloat(R126i.y));
R7i.y = clampFI32(R7i.y);
PS0i = R7i.y;
// 0
PV0i.x = floatBitsToInt(-(intBitsToFloat(R12i.x)) + intBitsToFloat(R4i.y));
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(R8i.w)) + intBitsToFloat(R13i.z)));
R126i.y = clampFI32(R126i.y);
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.x),intBitsToFloat(R8i.y)) + intBitsToFloat(R4i.x)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R9i.w),intBitsToFloat(R8i.y)) + intBitsToFloat(R12i.w)));
PV0i.w = R123i.w;
R127i.y = floatBitsToInt(exp2(intBitsToFloat(R0i.z)));
PS0i = R127i.y;
// 1
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.z), intBitsToFloat(R10i.x)));
PV1i.x = clampFI32(PV1i.x);
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(uf_remappedPS[8].y)));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(uf_remappedPS[8].x)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R7i.y)) + intBitsToFloat(R12i.x)));
PV1i.w = R123i.w;
R122i.x = floatBitsToInt((-(intBitsToFloat(R6i.y)) * intBitsToFloat(0x40400000) + intBitsToFloat(0x40400000)));
PS1i = R122i.x;
// 2
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.x), intBitsToFloat(PV1i.w)));
PV0i.x = R127i.x;
PV0i.y = floatBitsToInt(intBitsToFloat(R6i.y) + intBitsToFloat(0x2edbe6ff));
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),intBitsToFloat(R13i.w)) + intBitsToFloat(R126i.y)));
R127i.z = clampFI32(R127i.z);
PV0i.z = R127i.z;
R126i.w = floatBitsToInt(intBitsToFloat(R6i.x) + intBitsToFloat(0x3f4ccccd));
R126i.w = clampFI32(R126i.w);
R125i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PS1i),intBitsToFloat(R127i.y)) + intBitsToFloat(R127i.y)));
PS0i = R125i.x;
// 3
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.y)),intBitsToFloat(PV0i.z)) + intBitsToFloat(R6i.y)));
R123i.x = clampFI32(R123i.x);
PV1i.x = R123i.x;
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.w),-(intBitsToFloat(PV0i.x))) + intBitsToFloat(R2i.w)));
PV1i.z = floatBitsToInt(intBitsToFloat(uf_remappedPS[7].z) + -(intBitsToFloat(R5i.z)));
R124i.w = floatBitsToInt(intBitsToFloat(R126i.z) * intBitsToFloat(0x3da3d70a));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PV0i.y));
// 4
R124i.x = floatBitsToInt(intBitsToFloat(R124i.y) * intBitsToFloat(0x3d23d70a));
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(R8i.y)) + intBitsToFloat(R5i.z)));
R125i.z = floatBitsToInt(intBitsToFloat(R126i.w) + -(1.0));
R126i.w = floatBitsToInt(intBitsToFloat(R14i.w) * intBitsToFloat(0x40a00000));
R126i.w = clampFI32(R126i.w);
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(PS1i)));
PS0i = R126i.x;
// 5
backupReg0i = R124i.w;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R16i.x),intBitsToFloat(R16i.y),intBitsToFloat(R16i.z),-0.0),vec4(intBitsToFloat(0x3e99096c),intBitsToFloat(0x3f162b6b),intBitsToFloat(0x3dea4a8c),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R124i.z = tempi.x;
R124i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(backupReg0i)) + intBitsToFloat(R2i.x)));
PS1i = R124i.w;
// 6
backupReg0i = R127i.z;
PV0i.x = floatBitsToInt(-(intBitsToFloat(R14i.y)) + intBitsToFloat(R13i.x));
R125i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.z),intBitsToFloat(R126i.w)) + 1.0));
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(R124i.x)) + intBitsToFloat(R2i.y)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(R125i.x)) + intBitsToFloat(R13i.x)));
R123i.w = clampFI32(R123i.w);
PV0i.w = R123i.w;
R127i.y = ((intBitsToFloat(PV1i.x) > 0.0)?int(0xFFFFFFFF):int(0x0));
PS0i = R127i.y;
// 7
backupReg0i = R126i.y;
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R14i.z), intBitsToFloat(PV0i.w)));
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(uf_remappedPS[8].z)));
PV1i.z = floatBitsToInt(intBitsToFloat(R15i.x) + -(intBitsToFloat(R14i.y)));
R126i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R126i.x)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R13i.x)));
PV1i.w = R126i.w;
PS1i = floatBitsToInt(1.0 / intBitsToFloat(R124i.z));
// 8
backupReg0i = R127i.x;
backupReg1i = R127i.y;
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[6].w), intBitsToFloat(backupReg0i)));
R127i.y = floatBitsToInt(intBitsToFloat(R15i.z) + -(intBitsToFloat(R14i.y)));
PV0i.z = floatBitsToInt(intBitsToFloat(R15i.y) + -(intBitsToFloat(R14i.y)));
R123i.w = ((backupReg1i == 0)?(0):(PS1i));
PV0i.w = R123i.w;
R124i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.x),intBitsToFloat(PV1i.z)) + intBitsToFloat(PV1i.w)));
PS0i = R124i.z;
// 9
backupReg0i = R125i.y;
backupReg0i = R125i.y;
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.w), intBitsToFloat(R125i.y)));
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.w), intBitsToFloat(PV0i.w)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(backupReg0i)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(backupReg0i)));
R2i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.x),intBitsToFloat(PV0i.z)) + intBitsToFloat(R126i.w)));
PS1i = R2i.y;
// 10
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.y),intBitsToFloat(R127i.x)) + intBitsToFloat(PV1i.w)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),intBitsToFloat(R127i.x)) + intBitsToFloat(PV1i.x)));
PV0i.y = R123i.y;
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.x),intBitsToFloat(R127i.y)) + intBitsToFloat(R126i.w)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.y),intBitsToFloat(R127i.x)) + intBitsToFloat(PV1i.z)));
PV0i.w = R123i.w;
R126i.z = floatBitsToInt(intBitsToFloat(0x3f895ef0) * intBitsToFloat(R125i.x));
PS0i = R126i.z;
// 11
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R16i.y),intBitsToFloat(R125i.y)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R16i.x),intBitsToFloat(R125i.y)) + intBitsToFloat(PV0i.y)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PS0i),intBitsToFloat(R124i.z)) + intBitsToFloat(0xba0a8ec8)));
R123i.z = clampFI32(R123i.z);
PV1i.z = R123i.z;
R126i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R16i.z),intBitsToFloat(R125i.y)) + intBitsToFloat(PV0i.w)));
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PS0i),intBitsToFloat(R2i.y)) + intBitsToFloat(0xba0a8ec8)));
R122i.x = clampFI32(R122i.x);
PS1i = R122i.x;
// 12
PV0i.x = R16i.w & int(1);
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(PS1i)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(PV1i.z)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),intBitsToFloat(R127i.z)) + intBitsToFloat(0xba0a8ec8)));
R123i.w = clampFI32(R123i.w);
PV0i.w = R123i.w;
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R17i.z), intBitsToFloat(R17i.z)));
PS0i = R127i.x;
// 13
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(PV0i.w)));
R123i.z = floatBitsToInt((intBitsToFloat(PV0i.y) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((intBitsToFloat(PV0i.z) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.w = R123i.w;
PS1i = floatBitsToInt(float(PV0i.x));
// 14
R16i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R17i.z),intBitsToFloat(PV1i.w)) + intBitsToFloat(R18i.x)));
R123i.y = floatBitsToInt((intBitsToFloat(PV1i.x) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV0i.y = R123i.y;
R16i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS1i), intBitsToFloat(R127i.x)));
R16i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R17i.z),intBitsToFloat(PV1i.z)) + intBitsToFloat(R18i.y)));
PS0i = R16i.y;
// 15
R16i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R17i.z),intBitsToFloat(PV0i.y)) + intBitsToFloat(R18i.z)));
// export
passPixelColor0 = vec4(intBitsToFloat(R16i.x), intBitsToFloat(R16i.y), intBitsToFloat(R16i.z), intBitsToFloat(R16i.w));
float luma = dot(passPixelColor0.rgb, vec3(0.2126, 0.7152, 0.0722));
passPixelColor0.rgb = vec3(luma);
}

View File

@ -0,0 +1,789 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader 1cf7d93fabd9e8e3
// Monochromia
// Link's hair
// original shader dumped using cemu 1.11.c, BotW 1.3.1
uniform ivec4 uf_remappedPS[9];
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf45c6000 res 1280x720x1 dim 1 tm: 4 format 041a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0xf494a800 res 1280x720x1 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: 1
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 6) uniform sampler2D textureUnitPS6;// Tex6 addr 0xf5054000 res 640x360x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 8) uniform sampler2DArray textureUnitPS8;// Tex8 addr 0xf5593000 res 640x360x2 dim 5 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x2) Sampler8 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 9) uniform sampler2D textureUnitPS9;// Tex9 addr 0xf575f800 res 640x360x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler9 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 11) uniform sampler2D textureUnitPS11;// Tex11 addr 0xf5977800 res 640x360x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler11 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 12) uniform sampler2D textureUnitPS12;// Tex12 addr 0xf4240800 res 1280x720x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler12 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 13) uniform sampler2D textureUnitPS13;// Tex13 addr 0xf528a800 res 640x360x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler13 ClampX/Y/Z: 2 2 2 border: 1
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 2) in vec4 passParameterSem2;
layout(location = 3) in vec4 passParameterSem4;
layout(location = 4) in vec4 passParameterSem6;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
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 R9i = ivec4(0);
ivec4 R10i = ivec4(0);
ivec4 R11i = ivec4(0);
ivec4 R12i = ivec4(0);
ivec4 R13i = ivec4(0);
ivec4 R14i = ivec4(0);
ivec4 R15i = ivec4(0);
ivec4 R16i = ivec4(0);
ivec4 R17i = ivec4(0);
ivec4 R18i = ivec4(0);
ivec4 R19i = ivec4(0);
ivec4 R20i = ivec4(0);
ivec4 R21i = ivec4(0);
ivec4 R22i = 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(passParameterSem0);
R1i = floatBitsToInt(passParameterSem1);
R2i = floatBitsToInt(passParameterSem2);
R3i = floatBitsToInt(passParameterSem4);
R4i = floatBitsToInt(passParameterSem6);
R8i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R4i.zw)).xyzw);
R6i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R4i.zw)).xyzw);
R4i.w = floatBitsToInt(texture(textureUnitPS12, intBitsToFloat(R0i.xy)).x);
R5i.xyzw = floatBitsToInt(textureGather(textureUnitPS6, intBitsToFloat(R0i.xy)).xyzw);
// 0
R126i.x = floatBitsToInt((intBitsToFloat(R6i.x) * 2.0 + -(1.0)));
PV0i.x = R126i.x;
R126i.y = floatBitsToInt((intBitsToFloat(R6i.y) * 2.0 + -(1.0)));
PV0i.y = R126i.y;
PV0i.z = floatBitsToInt(intBitsToFloat(R8i.w) * intBitsToFloat(0x437f0000));
R125i.w = floatBitsToInt((intBitsToFloat(R6i.z) * 2.0 + -(1.0)));
PV0i.w = R125i.w;
R127i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R4i.w)),intBitsToFloat(uf_remappedPS[0].w)) + 1.0));
PS0i = R127i.y;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.w),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.w),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R9i.w = int(intBitsToFloat(PV0i.z));
PS1i = R9i.w;
// 2
R4i.x = 0;
PV0i.y = PS1i >> 0x00000005;
R127i.z = 0x358637bd;
PV0i.w = floatBitsToInt(floor(intBitsToFloat(R3i.x)));
R4i.w = floatBitsToInt(sqrt(intBitsToFloat(PV1i.x)));
PS0i = R4i.w;
// 3
R127i.x = PV0i.y & 0x00000007;
R125i.y = floatBitsToInt(intBitsToFloat(PV0i.w) + -(0.5));
R125i.z = floatBitsToInt(intBitsToFloat(R3i.x) + -(intBitsToFloat(PV0i.w)));
PV1i.w = floatBitsToInt(floor(intBitsToFloat(R3i.y)));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(R127i.y));
// 4
R125i.x = floatBitsToInt(intBitsToFloat(PV1i.w) + -(0.5));
R127i.y = floatBitsToInt(intBitsToFloat(R3i.y) + -(intBitsToFloat(PV1i.w)));
R7i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[0].x)), intBitsToFloat(PS1i)));
PV0i.z = R7i.z;
R11i.w = floatBitsToInt(roundEven(0.0));
R124i.z = floatBitsToInt(1.0 / intBitsToFloat(R4i.w));
PS0i = R124i.z;
// 5
R7i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.x), intBitsToFloat(PS0i)));
R7i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PS0i)));
PV1i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.z)), intBitsToFloat(uf_remappedPS[1].y)));
R127i.w = floatBitsToInt(intBitsToFloat(uf_remappedPS[0].x) + intBitsToFloat(PV0i.z));
PV1i.w = R127i.w;
PS1i = floatBitsToInt(float(R127i.x));
// 6
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.w),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R5i.w)));
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.w),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R5i.y)));
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.w),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R5i.x)));
PV0i.w = floatBitsToInt(intBitsToFloat(PS1i) + intBitsToFloat(0xc0000000));
R4i.y = floatBitsToInt(1.0 / intBitsToFloat(PV1i.z));
PS0i = R4i.y;
// 7
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.x),intBitsToFloat(R7i.y),intBitsToFloat(R127i.z),-0.0),vec4(intBitsToFloat(R7i.x),intBitsToFloat(R7i.y),intBitsToFloat(R127i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
PS1i = floatBitsToInt(exp2(intBitsToFloat(PV0i.w)));
// 8
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R5i.z)));
PV0i.x = R123i.x;
R5i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.y), intBitsToFloat(PS1i)));
PV0i.y = R5i.y;
R127i.z = floatBitsToInt(max(intBitsToFloat(R126i.y), -(intBitsToFloat(R126i.y))));
R127i.w = floatBitsToInt(max(intBitsToFloat(R127i.x), -(intBitsToFloat(R127i.x))));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
R126i.w = floatBitsToInt(tempResultf);
PS0i = R126i.w;
// 9
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.y), intBitsToFloat(PS0i)));
R126i.y = floatBitsToInt(max(intBitsToFloat(R126i.z), -(intBitsToFloat(R126i.z))));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.y), intBitsToFloat(uf_remappedPS[3].x)));
PV1i.z = R126i.z;
PV1i.w = floatBitsToInt(min(intBitsToFloat(PV0i.y), 2.0));
R127i.x = floatBitsToInt(max(intBitsToFloat(PV0i.x), -(intBitsToFloat(PV0i.x))));
PS1i = R127i.x;
// 10
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PV1i.z)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.x), intBitsToFloat(R126i.w)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PV1i.z)));
R126i.w = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[4].w)), intBitsToFloat(PV1i.x)));
PV0i.w = R126i.w;
R127i.z = floatBitsToInt(intBitsToFloat(PV1i.w) * intBitsToFloat(0x40c00000));
PS0i = R127i.z;
// 11
backupReg0i = R127i.x;
backupReg1i = R126i.z;
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(R126i.z)));
PV1i.x = R127i.x;
PV1i.y = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(PV0i.z));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z), intBitsToFloat(PV0i.y)));
PV1i.z = R126i.z;
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(backupReg1i)));
PV1i.w = R127i.w;
PS1i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(PS0i)));
// 12
PV0i.x = floatBitsToInt(-(intBitsToFloat(PV1i.w)) + intBitsToFloat(PV1i.y));
R126i.y = R5i.y;
R126i.y = clampFI32(R126i.y);
PV0i.y = R126i.y;
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(R127i.z)));
PV0i.w = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + intBitsToFloat(PV1i.y));
PS0i = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x3e4ccccd));
// 13
backupReg0i = R0i.x;
backupReg1i = R0i.y;
PV1i.x = PV0i.y;
PV1i.x = floatBitsToInt(intBitsToFloat(PV1i.x) * 2.0);
PV1i.y = floatBitsToInt(intBitsToFloat(R127i.w) + intBitsToFloat(PV0i.w));
PV1i.z = floatBitsToInt(intBitsToFloat(R127i.x) + intBitsToFloat(PV0i.x));
R10i.w = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(PV0i.z));
R10i.y = floatBitsToInt(intBitsToFloat(backupReg1i) + intBitsToFloat(PS0i));
PS1i = R10i.y;
// 14
backupReg0i = R0i.x;
PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(R125i.z));
PV0i.x = clampFI32(PV0i.x);
R9i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.w),intBitsToFloat(PV1i.x)) + intBitsToFloat(R0i.y)));
R9i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),intBitsToFloat(PV1i.x)) + intBitsToFloat(backupReg0i)));
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.y) + intBitsToFloat(R127i.y));
PV0i.w = clampFI32(PV0i.w);
R7i.w = floatBitsToInt(intBitsToFloat(R126i.y) * intBitsToFloat(0x40400000));
PS0i = R7i.w;
// 15
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.w) + intBitsToFloat(R125i.x));
R13i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), intBitsToFloat(R7i.z)));
R10i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), intBitsToFloat(R7i.z)));
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(R125i.y));
R5i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.w), intBitsToFloat(R124i.z)));
PS1i = R5i.z;
// 16
R11i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(PV1i.w)));
R11i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.w), intBitsToFloat(PV1i.x)));
R4i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R10i.w)) + intBitsToFloat(R1i.z)));
R12i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R10i.y)) + intBitsToFloat(R1i.w)));
R12i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R9i.z)) + intBitsToFloat(R1i.z)));
PS0i = R12i.y;
// 17
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R13i.y),intBitsToFloat(R10i.z),intBitsToFloat(R7i.z),-0.0),vec4(intBitsToFloat(R13i.y),intBitsToFloat(R10i.z),intBitsToFloat(R7i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R5i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R9i.y)) + intBitsToFloat(R1i.w)));
PS1i = R5i.x;
// 18
R125i.x = R9i.w & 0x0000001c;
R3i.y = 0;
R3i.z = R9i.w & 0x00000002;
PV0i.w = floatBitsToInt(max(intBitsToFloat(R8i.y), intBitsToFloat(R8i.z)));
PS0i = floatBitsToInt(sqrt(intBitsToFloat(PV1i.x)));
// 19
backupReg0i = R6i.w;
backupReg0i = R6i.w;
R3i.x = floatBitsToInt(min(intBitsToFloat(R8i.y), intBitsToFloat(R8i.z)));
R18i.y = floatBitsToInt(max(intBitsToFloat(R8i.x), intBitsToFloat(PV0i.w)));
PV1i.y = R18i.y;
R12i.z = floatBitsToInt(intBitsToFloat(R5i.y) * intBitsToFloat(0x40c00000));
R12i.z = clampFI32(R12i.z);
R6i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(backupReg0i)));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PS0i));
// 20
R9i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R13i.y), intBitsToFloat(PS1i)));
PV0i.x = R9i.x;
R14i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R10i.z), intBitsToFloat(PS1i)));
PV0i.y = R14i.y;
R6i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.z), intBitsToFloat(PS1i)));
PV0i.z = R6i.z;
R3i.w = floatBitsToInt(intBitsToFloat(PV1i.y) + intBitsToFloat(0x2edbe6ff));
PS0i = floatBitsToInt(float(R125i.x));
// 21
R6i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.x),intBitsToFloat(R7i.y),intBitsToFloat(R5i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = R6i.x;
PV1i.y = R6i.x;
PV1i.z = R6i.x;
PV1i.w = R6i.x;
R13i.x = floatBitsToInt(intBitsToFloat(PS0i) * intBitsToFloat(0x3d124925));
PS1i = R13i.x;
// 0
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].x), intBitsToFloat(uf_remappedPS[6].w)));
PV0i.x = R127i.x;
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].y), intBitsToFloat(uf_remappedPS[6].w)));
PV0i.y = R126i.y;
R11i.z = floatBitsToInt(intBitsToFloat(R6i.x) + 1.0);
R11i.z = clampFI32(R11i.z);
R127i.w = floatBitsToInt(min(intBitsToFloat(R8i.x), intBitsToFloat(R3i.x)));
R20i.w = floatBitsToInt(float(R3i.z));
R20i.w = floatBitsToInt(intBitsToFloat(R20i.w) / 2.0);
PS0i = R20i.w;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(R4i.x),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(R4i.x),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R3i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].z), intBitsToFloat(uf_remappedPS[6].w)));
PS1i = R3i.z;
// 2
PV0i.x = floatBitsToInt(-(intBitsToFloat(R11i.z)) + 1.0);
R125i.y = floatBitsToInt((intBitsToFloat(R9i.x) * intBitsToFloat(0xbe99999a) + -(intBitsToFloat(R127i.x))));
R126i.z = floatBitsToInt((intBitsToFloat(R14i.y) * intBitsToFloat(0xbe99999a) + -(intBitsToFloat(R126i.y))));
R126i.w = floatBitsToInt((intBitsToFloat(R6i.z) * intBitsToFloat(0xbe99999a) + -(intBitsToFloat(PS1i))));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 3
R125i.x = floatBitsToInt((intBitsToFloat(R127i.x) * intBitsToFloat(0xbf4ccccd) + intBitsToFloat(R9i.x)));
R6i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PS0i)));
R125i.z = floatBitsToInt((intBitsToFloat(R126i.y) * intBitsToFloat(0xbf4ccccd) + intBitsToFloat(R14i.y)));
R5i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS0i)));
tempResultf = log2(intBitsToFloat(PV0i.x));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
R125i.w = floatBitsToInt(tempResultf);
PS1i = R125i.w;
// 4
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R125i.y),intBitsToFloat(R126i.z),intBitsToFloat(R126i.w),-0.0),vec4(intBitsToFloat(R125i.y),intBitsToFloat(R126i.z),intBitsToFloat(R126i.w),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R124i.z = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x3e4ccccd));
PS0i = R124i.z;
// 5
R6i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R13i.x),-(intBitsToFloat(R20i.w))) + intBitsToFloat(R13i.x)));
R127i.y = floatBitsToInt(intBitsToFloat(R125i.w) * intBitsToFloat(0x41000000));
R127i.z = floatBitsToInt((intBitsToFloat(R3i.z) * intBitsToFloat(0xbf4ccccd) + intBitsToFloat(R6i.z)));
R125i.w = floatBitsToInt((intBitsToFloat(R4i.y) * intBitsToFloat(0x3dcccccd) + 1.0));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
PS1i = floatBitsToInt(tempResultf);
// 6
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(PS1i)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.z), intBitsToFloat(PS1i)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(PS1i)));
R13i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R12i.z), intBitsToFloat(R6i.w)));
R4i.y = floatBitsToInt(exp2(intBitsToFloat(R124i.z)));
PS0i = R4i.y;
// 7
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.x),intBitsToFloat(R7i.y),intBitsToFloat(R5i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
tempi.x = clampFI32(tempi.x);
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R3i.x = floatBitsToInt(exp2(intBitsToFloat(R127i.y)));
PS1i = R3i.x;
// 8
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R125i.x),intBitsToFloat(R125i.z),intBitsToFloat(R127i.z),-0.0),vec4(intBitsToFloat(R125i.x),intBitsToFloat(R125i.z),intBitsToFloat(R127i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
tempResultf = log2(intBitsToFloat(PV1i.x));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS0i = floatBitsToInt(tempResultf);
// 9
R126i.x = floatBitsToInt((intBitsToFloat(0x3ff33333) * intBitsToFloat(R18i.y) + intBitsToFloat(0x3dcccccd)));
R16i.y = floatBitsToInt(intBitsToFloat(R125i.w) * intBitsToFloat(0x42960000));
PV1i.z = floatBitsToInt(intBitsToFloat(PS0i) * intBitsToFloat(0x40c00000));
R15i.w = R5i.y;
R15i.w = floatBitsToInt(intBitsToFloat(R15i.w) * 4.0);
R15i.w = clampFI32(R15i.w);
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
PS1i = floatBitsToInt(tempResultf);
// 10
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.x), intBitsToFloat(PS1i)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), intBitsToFloat(PS1i)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS1i)));
R126i.w = floatBitsToInt((intBitsToFloat(R4i.w) * 4.0 + intBitsToFloat(0xc0400000)));
R126i.w = clampFI32(R126i.w);
R15i.y = floatBitsToInt(exp2(intBitsToFloat(PV1i.z)));
PS0i = R15i.y;
// 11
R125i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.x),intBitsToFloat(R7i.y),intBitsToFloat(R5i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = R125i.x;
PV1i.y = R125i.x;
PV1i.z = R125i.x;
PV1i.w = R125i.x;
R16i.z = floatBitsToInt(1.0 / intBitsToFloat(R3i.w));
PS1i = R16i.z;
// 12
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.x),intBitsToFloat(R14i.y),intBitsToFloat(R6i.z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R126i.y),intBitsToFloat(R3i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R125i.w = tempi.x;
R21i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.w)),intBitsToFloat(PS1i)) + 1.0));
PS0i = R21i.w;
// 13
R4i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.x),intBitsToFloat(R7i.y),intBitsToFloat(R5i.z),intBitsToFloat(R5i.z)),vec4(-(intBitsToFloat(R127i.x)),-(intBitsToFloat(R126i.y)),-(intBitsToFloat(R3i.z)),-(intBitsToFloat(R3i.y)))));
R4i.x = clampFI32(R4i.x);
PV1i.x = R4i.x;
PV1i.y = R4i.x;
PV1i.z = R4i.x;
PV1i.w = R4i.x;
R6i.w = floatBitsToInt(intBitsToFloat(R125i.x) + 1.0);
R6i.w = clampFI32(R6i.w);
PS1i = R6i.w;
// 14
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.x),intBitsToFloat(R7i.y),intBitsToFloat(R5i.z),-0.0),vec4(intBitsToFloat(uf_remappedPS[5].x),intBitsToFloat(uf_remappedPS[5].y),intBitsToFloat(uf_remappedPS[5].z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
PS0i = floatBitsToInt(max(-(intBitsToFloat(R125i.w)), 0.0));
// 15
PV1i.x = floatBitsToInt(max(-(intBitsToFloat(PV0i.x)), 0.0));
R7i.y = floatBitsToInt((-(intBitsToFloat(R125i.w)) * intBitsToFloat(0x40a00000) + intBitsToFloat(0x40a00000)));
R7i.y = clampFI32(R7i.y);
PV1i.z = floatBitsToInt(-(intBitsToFloat(R21i.w)) + 1.0);
PV1i.z = clampFI32(PV1i.z);
R14i.w = floatBitsToInt(min(intBitsToFloat(PS0i), 1.0));
R17i.w = floatBitsToInt(intBitsToFloat(R21i.w) + intBitsToFloat(R126i.x));
R17i.w = clampFI32(R17i.w);
PS1i = R17i.w;
// 16
R7i.x = floatBitsToInt(min(intBitsToFloat(PV1i.x), 1.0));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R18i.y), intBitsToFloat(PV1i.z)));
R5i.z = floatBitsToInt(intBitsToFloat(R2i.x) * intBitsToFloat(0x3f4ccccd));
PV0i.z = R5i.z;
R19i.w = floatBitsToInt(intBitsToFloat(R2i.y) * intBitsToFloat(0x3f4ccccd));
PV0i.w = R19i.w;
R13i.z = floatBitsToInt(intBitsToFloat(R2i.z) * intBitsToFloat(0x3f4ccccd));
PS0i = R13i.z;
// 17
R10i.x = floatBitsToInt(intBitsToFloat(uf_remappedPS[7].x) + -(intBitsToFloat(PV0i.z)));
R17i.y = floatBitsToInt(intBitsToFloat(R126i.w) + -(0.5));
R17i.y = floatBitsToInt(intBitsToFloat(R17i.y) * 4.0);
R17i.y = clampFI32(R17i.y);
PV1i.z = R5i.y;
PV1i.z = floatBitsToInt(intBitsToFloat(PV1i.z) * 2.0);
PV1i.z = clampFI32(PV1i.z);
R16i.w = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x40400000));
R16i.w = clampFI32(R16i.w);
R18i.w = floatBitsToInt(intBitsToFloat(uf_remappedPS[7].y) + -(intBitsToFloat(PV0i.w)));
PS1i = R18i.w;
// 18
R12i.x = floatBitsToInt(intBitsToFloat(PV1i.z) * 0.25);
R3i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R11i.z), intBitsToFloat(R14i.w)));
R3i.z = floatBitsToInt(intBitsToFloat(uf_remappedPS[7].z) + -(intBitsToFloat(R13i.z)));
R3i.w = floatBitsToInt((-(intBitsToFloat(R21i.w)) * intBitsToFloat(0x40400000) + intBitsToFloat(0x40400000)));
tempResultf = log2(intBitsToFloat(R18i.y));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS0i = floatBitsToInt(tempResultf);
// 19
PV1i.x = floatBitsToInt(intBitsToFloat(PS0i) * intBitsToFloat(0x3f19999a));
R5i.y = floatBitsToInt(intBitsToFloat(R21i.w) + intBitsToFloat(0x2edbe6ff));
PV1i.z = floatBitsToInt(intBitsToFloat(R17i.y) + intBitsToFloat(0x3f4ccccd));
PV1i.z = clampFI32(PV1i.z);
R4i.w = floatBitsToInt(intBitsToFloat(R14i.w) * intBitsToFloat(0x40a00000));
R4i.w = clampFI32(R4i.w);
R15i.z = floatBitsToInt(-(intBitsToFloat(R127i.w)) + intBitsToFloat(R18i.y));
PS1i = R15i.z;
// 20
backupReg0i = R8i.x;
backupReg1i = R8i.z;
R8i.xyz = floatBitsToInt(vec3(intBitsToFloat(R8i.y),intBitsToFloat(backupReg0i),intBitsToFloat(PV1i.z)) + vec3(-(intBitsToFloat(R127i.w)),-(intBitsToFloat(R127i.w)),-(1.0)));
R22i.w = floatBitsToInt(intBitsToFloat(backupReg1i) + -(intBitsToFloat(R127i.w)));
R8i.w = floatBitsToInt(exp2(intBitsToFloat(PV1i.x)));
PS0i = R8i.w;
// 0
backupReg0i = R3i.w;
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z), intBitsToFloat(R5i.w)));
PV0i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[4].w)), intBitsToFloat(R6i.y)));
R3i.w = floatBitsToInt(intBitsToFloat(0x3df5c28f) * intBitsToFloat(uf_remappedPS[1].z));
R14i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(R8i.w)) + intBitsToFloat(R8i.w)));
PS0i = R14i.z;
// 1
backupReg0i = R0i.x;
backupReg1i = R0i.y;
backupReg2i = R9i.w;
R0i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R7i.w)) + intBitsToFloat(backupReg0i)));
R0i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R7i.w)) + intBitsToFloat(backupReg1i)));
R0i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.z),intBitsToFloat(R4i.w)) + 1.0));
R9i.w = backupReg2i & int(1);
R7i.w = floatBitsToInt(1.0 / intBitsToFloat(R5i.y));
PS1i = R7i.w;
R10i.w = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R10i.wy)).x);
R0i.w = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R9i.zy)).x);
R9i.z = floatBitsToInt(texture(textureUnitPS13, intBitsToFloat(R11i.xy)).w);
R4i.w = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R0i.xy)).x);
R20i.xyz = floatBitsToInt(texture(textureUnitPS9, intBitsToFloat(R11i.xy)).xyz);
R19i.xyz = floatBitsToInt(texture(textureUnitPS8, vec3(intBitsToFloat(R11i.x),intBitsToFloat(R11i.y),intBitsToFloat(R11i.w))).xyz);
R21i.xyz = floatBitsToInt(texture(textureUnitPS11, intBitsToFloat(R11i.xy)).xyz);
// 0
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.z), intBitsToFloat(R4i.y)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),intBitsToFloat(R10i.w)) + intBitsToFloat(uf_remappedPS[0].x)));
PV0i.y = R123i.y;
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),intBitsToFloat(R0i.w)) + intBitsToFloat(uf_remappedPS[0].x)));
PV0i.z = R127i.z;
R126i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R0i.x)) + intBitsToFloat(R1i.z)));
R125i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R0i.y)) + intBitsToFloat(R1i.w)));
PS0i = R125i.w;
// 1
PV1i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.y)), intBitsToFloat(R12i.w)));
PV1i.y = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.y)), intBitsToFloat(R4i.z)));
R125i.z = floatBitsToInt(-(intBitsToFloat(PV0i.z)));
PV1i.w = floatBitsToInt(-(intBitsToFloat(PV0i.y)));
PS1i = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.z)), intBitsToFloat(R12i.y)));
// 2
R127i.x = floatBitsToInt(-(intBitsToFloat(R13i.y)) + intBitsToFloat(PV1i.y));
PV0i.y = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R127i.z)), intBitsToFloat(R5i.x)));
R127i.z = floatBitsToInt(-(intBitsToFloat(R10i.z)) + intBitsToFloat(PV1i.x));
R127i.w = floatBitsToInt(-(intBitsToFloat(R7i.z)) + intBitsToFloat(PV1i.w));
R125i.x = floatBitsToInt(-(intBitsToFloat(R13i.y)) + intBitsToFloat(PS1i));
PS0i = R125i.x;
// 3
backupReg0i = R126i.x;
backupReg0i = R126i.x;
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),intBitsToFloat(R4i.w)) + intBitsToFloat(uf_remappedPS[0].x)));
PV1i.x = R126i.x;
R127i.y = floatBitsToInt(-(intBitsToFloat(R10i.z)) + intBitsToFloat(PV0i.y));
R126i.z = floatBitsToInt(-(intBitsToFloat(R7i.z)) + intBitsToFloat(R125i.z));
R124i.w = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(0xbf400000));
R124i.y = floatBitsToInt((intBitsToFloat(backupReg0i) * intBitsToFloat(0x3e99999a) + intBitsToFloat(0xbecccccd)));
PS1i = R124i.y;
// 4
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.x),intBitsToFloat(R14i.y),intBitsToFloat(R6i.z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R127i.z),intBitsToFloat(R127i.w),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R4i.w = tempi.x;
R125i.z = floatBitsToInt(-(intBitsToFloat(PV1i.x)));
PS0i = R125i.z;
// 5
backupReg0i = R127i.x;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.x),intBitsToFloat(R14i.y),intBitsToFloat(R6i.z),-0.0),vec4(intBitsToFloat(R125i.x),intBitsToFloat(R127i.y),intBitsToFloat(R126i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R12i.w = tempi.x;
R127i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R9i.x)),intBitsToFloat(PV0i.x)) + intBitsToFloat(backupReg0i)));
PS1i = R127i.x;
// 6
PV0i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R126i.x)), intBitsToFloat(R126i.w)));
R126i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R14i.y)),intBitsToFloat(R4i.w)) + intBitsToFloat(R127i.z)));
R127i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.z)),intBitsToFloat(R4i.w)) + intBitsToFloat(R127i.w)));
R127i.w = floatBitsToInt(intBitsToFloat(R124i.y) + intBitsToFloat(R4i.x));
R126i.w = floatBitsToInt(intBitsToFloat(R20i.x) + intBitsToFloat(0xbecccccd));
PS0i = R126i.w;
// 7
backupReg0i = R125i.z;
PV1i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R126i.x)), intBitsToFloat(R125i.w)));
R125i.y = floatBitsToInt(-(intBitsToFloat(R13i.y)) + intBitsToFloat(PV0i.x));
R125i.z = floatBitsToInt(-(intBitsToFloat(R7i.z)) + intBitsToFloat(backupReg0i));
R1i.w = floatBitsToInt(intBitsToFloat(R124i.w) * intBitsToFloat(0x41800000));
R1i.w = clampFI32(R1i.w);
R126i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R9i.x)),intBitsToFloat(R12i.w)) + intBitsToFloat(R125i.x)));
PS1i = R126i.x;
// 8
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.x),intBitsToFloat(R126i.y),intBitsToFloat(R127i.z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R126i.y),intBitsToFloat(R127i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R126i.y = floatBitsToInt(-(intBitsToFloat(R10i.z)) + intBitsToFloat(PV1i.x));
PS0i = R126i.y;
// 9
R127i.x = floatBitsToInt(intBitsToFloat(R127i.w) * intBitsToFloat(0x42960000));
R127i.x = clampFI32(R127i.x);
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R14i.y)),intBitsToFloat(R12i.w)) + intBitsToFloat(R127i.y)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.z)),intBitsToFloat(R12i.w)) + intBitsToFloat(R126i.z)));
PV1i.z = R123i.z;
R0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), intBitsToFloat(R3i.x)));
R0i.w = clampFI32(R0i.w);
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
PS1i = floatBitsToInt(tempResultf);
// 10
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R126i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.w), intBitsToFloat(PS1i)));
PS0i = R126i.z;
// 11
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.x),intBitsToFloat(R14i.y),intBitsToFloat(R6i.z),-0.0),vec4(intBitsToFloat(R125i.y),intBitsToFloat(R126i.y),intBitsToFloat(R125i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.w = tempi.x;
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
PS1i = floatBitsToInt(tempResultf);
// 12
backupReg0i = R126i.y;
backupReg1i = R126i.z;
R126i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R9i.x)),intBitsToFloat(PV1i.x)) + intBitsToFloat(R125i.y)));
R126i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R14i.y)),intBitsToFloat(PV1i.x)) + intBitsToFloat(backupReg0i)));
R126i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.z)),intBitsToFloat(PV1i.x)) + intBitsToFloat(R125i.z)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R12i.w), intBitsToFloat(PS1i)));
PS0i = floatBitsToInt(intBitsToFloat(backupReg1i) * intBitsToFloat(0x3c23d70a));
PS0i = clampFI32(PS0i);
// 13
backupReg0i = R124i.y;
PV1i.x = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(R15i.y));
PV1i.x = clampFI32(PV1i.x);
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.w), intBitsToFloat(PV0i.w)));
R124i.y = clampFI32(R124i.y);
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS0i), intBitsToFloat(R6i.w)));
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.y), intBitsToFloat(R127i.x)));
R6i.w = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(R7i.x));
PS1i = R6i.w;
// 14
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R126i.x),intBitsToFloat(R126i.y),intBitsToFloat(R126i.z),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(R126i.y),intBitsToFloat(R126i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R13i.w), intBitsToFloat(PV1i.x)));
PS0i = R125i.w;
// 15
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.z),intBitsToFloat(R14i.w)) + intBitsToFloat(0xbecccccd)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R11i.z), intBitsToFloat(R124i.y)));
PV1i.z = floatBitsToInt(intBitsToFloat(R126i.w) * intBitsToFloat(0x41200000));
PV1i.z = clampFI32(PV1i.z);
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.x), intBitsToFloat(PS0i)));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
PS1i = floatBitsToInt(tempResultf);
// 16
R6i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R20i.y), intBitsToFloat(PV1i.z)));
PV0i.x = R6i.x;
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PS1i)));
PV0i.z = floatBitsToInt(intBitsToFloat(R125i.w) + intBitsToFloat(0xbe0f5c29));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(PV1i.w)) + intBitsToFloat(0xbe0f5c29)));
R124i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(R124i.w)) + intBitsToFloat(0xbecccccd)));
PS0i = R124i.y;
// 17
PV1i.x = floatBitsToInt(intBitsToFloat(R126i.x) * intBitsToFloat(0x42960000));
PV1i.x = clampFI32(PV1i.x);
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.w), intBitsToFloat(PV0i.y)));
R125i.y = clampFI32(R125i.y);
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.x) + -(1.0));
PV1i.w = floatBitsToInt(intBitsToFloat(R2i.w) + -(intBitsToFloat(R1i.w)));
PV1i.w = clampFI32(PV1i.w);
R126i.y = floatBitsToInt(intBitsToFloat(PV0i.z) * intBitsToFloat(0x428c0000));
R126i.y = clampFI32(R126i.y);
PS1i = R126i.y;
// 18
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.w), intBitsToFloat(R16i.y)));
R126i.x = clampFI32(R126i.x);
PV0i.y = floatBitsToInt(intBitsToFloat(R127i.w) * intBitsToFloat(0x428c0000));
PV0i.y = clampFI32(PV0i.y);
R11i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R15i.w), intBitsToFloat(PV1i.x)));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(PV1i.w)) + 1.0));
PV0i.w = R127i.w;
PS0i = floatBitsToInt(intBitsToFloat(R124i.y) * intBitsToFloat(0x42960000));
PS0i = clampFI32(PS0i);
// 19
PV1i.x = floatBitsToInt(intBitsToFloat(R126i.y) * intBitsToFloat(0x3f333333));
PV1i.x = clampFI32(PV1i.x);
R7i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R12i.z), intBitsToFloat(PS0i)));
R7i.y = floatBitsToInt(intBitsToFloat(R7i.y) * 2.0);
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),-(intBitsToFloat(R16i.w))) + intBitsToFloat(PV0i.y)));
PV1i.z = R123i.z;
PV1i.w = floatBitsToInt(intBitsToFloat(R125i.y) + -(0.5));
R6i.w = floatBitsToInt(intBitsToFloat(PV0i.w) + 0.5);
PS1i = R6i.w;
// 20
R7i.x = floatBitsToInt(intBitsToFloat(PV1i.w) * intBitsToFloat(0x42200000));
R7i.x = clampFI32(R7i.x);
R16i.y = floatBitsToInt(intBitsToFloat(PV1i.z) * intBitsToFloat(0x3e19999a));
R12i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(R17i.w)));
R16i.w = floatBitsToInt(intBitsToFloat(R1i.w) + intBitsToFloat(R126i.x));
R16i.w = clampFI32(R16i.w);
R17i.w = floatBitsToInt(-(intBitsToFloat(R11i.z)) + intBitsToFloat(R127i.w));
PS0i = R17i.w;
// 0
R126i.x = floatBitsToInt((intBitsToFloat(R12i.z) * intBitsToFloat(0x3dcccccd) + intBitsToFloat(R16i.y)));
R126i.y = floatBitsToInt(intBitsToFloat(R2i.w) + intBitsToFloat(R6i.x));
R126i.y = clampFI32(R126i.y);
PV0i.y = R126i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R17i.w),intBitsToFloat(R16i.w)) + intBitsToFloat(R11i.z)));
PV0i.z = R123i.z;
R127i.w = floatBitsToInt(intBitsToFloat(R7i.y) * intBitsToFloat(0x3e4ccccd));
PS0i = floatBitsToInt(intBitsToFloat(R7i.x) * intBitsToFloat(0x41000000));
// 1
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.y), intBitsToFloat(PS0i)));
R127i.x = clampFI32(R127i.x);
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.x),intBitsToFloat(PV0i.y)) + intBitsToFloat(R5i.z)));
PV1i.y = R123i.y;
PV1i.z = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(R6i.w));
PV1i.z = clampFI32(PV1i.z);
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.z),intBitsToFloat(PV0i.y)) + intBitsToFloat(R13i.z)));
PV1i.w = R123i.w;
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R17i.y), intBitsToFloat(PV0i.z)));
PS1i = R125i.y;
// 2
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.x),intBitsToFloat(PV1i.z)) + intBitsToFloat(R127i.w)));
R123i.x = clampFI32(R123i.x);
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R18i.w),intBitsToFloat(R126i.y)) + intBitsToFloat(R19i.w)));
PV0i.y = R123i.y;
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(uf_remappedPS[8].x)));
PV0i.z = R126i.z;
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(uf_remappedPS[8].z)));
PV0i.w = R125i.w;
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R20i.z), intBitsToFloat(R20i.z)));
PS0i = R125i.x;
// 3
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R13i.x),intBitsToFloat(R20i.w)) + intBitsToFloat(R125i.y)));
R123i.x = clampFI32(R123i.x);
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(R12i.x)) + intBitsToFloat(PV0i.x)));
R123i.y = clampFI32(R123i.y);
PV1i.y = R123i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(uf_remappedPS[8].y)));
PV1i.z = R127i.z;
R127i.w = floatBitsToInt(intBitsToFloat(PV0i.z) * intBitsToFloat(0x3da3d70a));
R125i.y = floatBitsToInt(intBitsToFloat(PV0i.w) * intBitsToFloat(0x3da3d70a));
PS1i = R125i.y;
// 4
R127i.x = floatBitsToInt(intBitsToFloat(PV1i.z) * intBitsToFloat(0x3da3d70a));
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(R14i.z)) + intBitsToFloat(R18i.y)));
R126i.y = clampFI32(R126i.y);
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R21i.w)),intBitsToFloat(PV1i.y)) + intBitsToFloat(R21i.w)));
R123i.z = clampFI32(R123i.z);
PV0i.z = R123i.z;
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[6].w), intBitsToFloat(PV1i.x)));
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.w),-(intBitsToFloat(PV1i.x))) + intBitsToFloat(R2i.w)));
PS0i = R126i.x;
// 5
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R19i.x),intBitsToFloat(R19i.y),intBitsToFloat(R19i.z),-0.0),vec4(intBitsToFloat(0x3e99096c),intBitsToFloat(0x3f162b6b),intBitsToFloat(0x3dea4a8c),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R124i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R7i.w)));
PS1i = R124i.z;
// 6
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.x),intBitsToFloat(R127i.w)) + intBitsToFloat(R2i.x)));
PV0i.y = ((intBitsToFloat(PV1i.x) > 0.0)?int(0xFFFFFFFF):int(0x0));
R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.x),intBitsToFloat(R125i.y)) + intBitsToFloat(R2i.z)));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.x),intBitsToFloat(backupReg0i)) + intBitsToFloat(R2i.y)));
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.x));
// 7
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.z), intBitsToFloat(R126i.y)));
R126i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R124i.z)),intBitsToFloat(R15i.z)) + intBitsToFloat(R18i.y)));
PV1i.y = R126i.y;
R123i.w = ((PV0i.y == 0)?(0):(PS0i));
PV1i.w = R123i.w;
R126i.w = floatBitsToInt(float(R9i.w));
PS1i = R126i.w;
// 8
backupReg0i = R0i.z;
backupReg0i = R0i.z;
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(R0i.z)));
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), intBitsToFloat(PV1i.w)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), intBitsToFloat(backupReg0i)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(backupReg0i)));
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.z),intBitsToFloat(R8i.y)) + intBitsToFloat(PV1i.y)));
PS0i = R127i.x;
// 9
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R124i.w)) + intBitsToFloat(PV0i.w)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),intBitsToFloat(R124i.w)) + intBitsToFloat(PV0i.x)));
PV1i.y = R123i.y;
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.z),intBitsToFloat(R8i.x)) + intBitsToFloat(R126i.y)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.w),intBitsToFloat(R124i.w)) + intBitsToFloat(PV0i.z)));
PV1i.w = R123i.w;
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.z),intBitsToFloat(R22i.w)) + intBitsToFloat(R126i.y)));
PS1i = R126i.z;
// 10
backupReg0i = R125i.y;
backupReg1i = R126i.x;
backupReg0i = R125i.y;
backupReg2i = R126i.w;
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R19i.y),intBitsToFloat(R125i.y)) + intBitsToFloat(PV1i.x)));
R125i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R19i.x),intBitsToFloat(backupReg0i)) + intBitsToFloat(PV1i.y)));
PV0i.z = floatBitsToInt(intBitsToFloat(0x3f895ef0) * intBitsToFloat(backupReg1i));
R126i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R19i.z),intBitsToFloat(backupReg0i)) + intBitsToFloat(PV1i.w)));
R19i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg2i), intBitsToFloat(R125i.x)));
PS0i = R19i.w;
// 11
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R127i.z)) + intBitsToFloat(0xba0a8ec8)));
R123i.x = clampFI32(R123i.x);
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R127i.x)) + intBitsToFloat(0xba0a8ec8)));
R123i.y = clampFI32(R123i.y);
PV1i.y = R123i.y;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R126i.z)) + intBitsToFloat(0xba0a8ec8)));
R123i.w = clampFI32(R123i.w);
PV1i.w = R123i.w;
// 12
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(PV1i.w)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.x), intBitsToFloat(PV1i.x)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(PV1i.y)));
// 13
R123i.y = floatBitsToInt((intBitsToFloat(PV0i.x) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((intBitsToFloat(PV0i.y) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((intBitsToFloat(PV0i.z) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.w = R123i.w;
// 14
R19i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R20i.z),intBitsToFloat(PV1i.w)) + intBitsToFloat(R21i.x)));
R19i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R20i.z),intBitsToFloat(PV1i.z)) + intBitsToFloat(R21i.y)));
R19i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R20i.z),intBitsToFloat(PV1i.y)) + intBitsToFloat(R21i.z)));
// export
passPixelColor0 = vec4(intBitsToFloat(R19i.x), intBitsToFloat(R19i.y), intBitsToFloat(R19i.z), intBitsToFloat(R19i.w));
float luma = dot(passPixelColor0.rgb, vec3(0.2126, 0.7152, 0.0722));
passPixelColor0.rgb = vec3(luma);
}

View File

@ -0,0 +1,626 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader 3c49f88069390494
// Monochromia
// Plants - rainy weather
// original shader dumped using cemu 1.11.c, BotW 1.3.1
#define ENABLE_COLOR_FADE 0 // set this to 1 to enable, 0 to disable the effect
uniform ivec4 uf_remappedPS[10];
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf45c6000 res 1280x720x1 dim 1 tm: 4 format 041a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0xf494a800 res 1280x720x1 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: 1
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 6) uniform sampler2D textureUnitPS6;// Tex6 addr 0xf5054000 res 640x360x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 7) uniform sampler2D textureUnitPS7;// Tex7 addr 0xf5846000 res 640x360x1 dim 1 tm: 4 format 0001 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler7 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 8) uniform samplerCubeArray textureUnitPS8;// Tex8 addr 0x3db66800 res 64x64x1 dim 3 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x4) sliceView: 0x0 (num 0x6) Sampler8 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 10) uniform sampler2DArray textureUnitPS10;// Tex10 addr 0xf5593000 res 640x360x2 dim 5 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x2) Sampler10 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 11) uniform sampler2D textureUnitPS11;// Tex11 addr 0xf575f800 res 640x360x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler11 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 13) uniform sampler2D textureUnitPS13;// Tex13 addr 0xf5977800 res 640x360x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler13 ClampX/Y/Z: 2 2 2 border: 1
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem4;
layout(location = 2) in vec4 passParameterSem6;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
void redcCUBE(vec4 src0, vec4 src1, out vec3 stm, out int faceId)
{
// stm -> x .. s, y .. t, z .. MajorAxis*2.0
vec3 inputCoord = normalize(vec3(src1.y, src1.x, src0.x));
float rx = inputCoord.x;
float ry = inputCoord.y;
float rz = inputCoord.z;
if( abs(rx) > abs(ry) && abs(rx) > abs(rz) )
{
stm.z = rx*2.0;
stm.xy = vec2(ry,rz);
if( rx >= 0.0 )
{
faceId = 0;
}
else
{
faceId = 1;
}
}
else if( abs(ry) > abs(rx) && abs(ry) > abs(rz) )
{
stm.z = ry*2.0;
stm.xy = vec2(rx,rz);
if( ry >= 0.0 )
{
faceId = 2;
}
else
{
faceId = 3;
}
}
else //if( abs(rz) > abs(ry) && abs(rz) > abs(rx) )
{
stm.z = rz*2.0;
stm.xy = vec2(rx,ry);
if( rz >= 0.0 )
{
faceId = 4;
}
else
{
faceId = 5;
}
}
}
vec3 redcCUBEReverse(vec2 st, int faceId)
{
st.yx = st.xy;
vec3 v;
float majorAxis = 1.0;
if( faceId == 0 )
{
v.yz = (st-vec2(1.5))*(majorAxis*2.0);
v.x = 1.0;
}
else if( faceId == 1 )
{
v.yz = (st-vec2(1.5))*(majorAxis*2.0);
v.x = -1.0;
}
else if( faceId == 2 )
{
v.xz = (st-vec2(1.5))*(majorAxis*2.0);
v.y = 1.0;
}
else if( faceId == 3 )
{
v.xz = (st-vec2(1.5))*(majorAxis*2.0);
v.y = -1.0;
}
else if( faceId == 4 )
{
v.xy = (st-vec2(1.5))*(majorAxis*2.0);
v.z = 1.0;
}
else
{
v.xy = (st-vec2(1.5))*(majorAxis*2.0);
v.z = -1.0;
}
return v;
}
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 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 R9i = ivec4(0);
ivec4 R10i = ivec4(0);
ivec4 R11i = ivec4(0);
ivec4 R12i = 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;
float cubeMapArrayIndex8 = 0.0;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem4);
R2i = floatBitsToInt(passParameterSem6);
R3i.w = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R0i.xy)).x);
R6i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R2i.zw)).xyzw);
R4i.xyzw = floatBitsToInt(textureGather(textureUnitPS6, intBitsToFloat(R0i.xy)).xyzw);
R5i.xyzw = floatBitsToInt(textureGather(textureUnitPS7, intBitsToFloat(R0i.xy)).xyzw);
R10i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R2i.zw)).xyzw);
// 0
R124i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.w),intBitsToFloat(uf_remappedPS[0].x)) + intBitsToFloat(uf_remappedPS[1].x)));
PV0i.x = R124i.x;
PV0i.y = floatBitsToInt(-(intBitsToFloat(R3i.w)) + intBitsToFloat(R4i.y));
PV0i.z = floatBitsToInt(-(intBitsToFloat(R3i.w)) + intBitsToFloat(R4i.x));
PV0i.w = floatBitsToInt(-(intBitsToFloat(R3i.w)) + intBitsToFloat(R4i.w));
PS0i = floatBitsToInt(-(intBitsToFloat(R3i.w)) + intBitsToFloat(R4i.z));
// 1
R127i.x = floatBitsToInt(max(intBitsToFloat(PV0i.y), -(intBitsToFloat(PV0i.y))));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(uf_remappedPS[2].y)));
R127i.z = floatBitsToInt(max(intBitsToFloat(PV0i.z), -(intBitsToFloat(PV0i.z))));
R127i.w = floatBitsToInt(max(intBitsToFloat(PV0i.w), -(intBitsToFloat(PV0i.w))));
R126i.x = floatBitsToInt(max(intBitsToFloat(PS0i), -(intBitsToFloat(PS0i))));
PS1i = R126i.x;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R6i.x),intBitsToFloat(R6i.y),intBitsToFloat(R6i.z),-0.0),vec4(intBitsToFloat(0x3eaaaaab),intBitsToFloat(0x3eaaaaab),intBitsToFloat(0x3eaaaaab),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.y));
// 3
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R5i.y));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), intBitsToFloat(PS0i)));
PV1i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R5i.w));
PV1i.w = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R5i.x));
PS1i = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R5i.z));
// 4
PV0i.x = floatBitsToInt(max(intBitsToFloat(PV1i.x), -(intBitsToFloat(PV1i.x))));
PV0i.x = floatBitsToInt(intBitsToFloat(PV0i.x) * 4.0);
PV0i.y = floatBitsToInt(max(intBitsToFloat(PV1i.w), -(intBitsToFloat(PV1i.w))));
PV0i.y = floatBitsToInt(intBitsToFloat(PV0i.y) * 4.0);
PV0i.z = floatBitsToInt(max(intBitsToFloat(PV1i.z), -(intBitsToFloat(PV1i.z))));
PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) * 4.0);
PV0i.w = floatBitsToInt(max(intBitsToFloat(PS1i), -(intBitsToFloat(PS1i))));
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * 4.0);
R125i.x = floatBitsToInt(floor(intBitsToFloat(R1i.x)));
PS0i = R125i.x;
// 5
backupReg0i = R127i.y;
backupReg0i = R127i.y;
backupReg0i = R127i.y;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(R127i.y)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(backupReg0i)) + intBitsToFloat(PV0i.y)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),intBitsToFloat(backupReg0i)) + intBitsToFloat(PV0i.z)));
PV1i.z = R123i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.x),intBitsToFloat(backupReg0i)) + intBitsToFloat(PV0i.w)));
PS1i = floatBitsToInt(floor(intBitsToFloat(R1i.y)));
// 6
backupReg0i = R125i.x;
backupReg0i = R125i.x;
R125i.x = floatBitsToInt(intBitsToFloat(R1i.y) + -(intBitsToFloat(PS1i)));
PV0i.y = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + intBitsToFloat(PV1i.z));
R127i.z = floatBitsToInt(intBitsToFloat(R1i.x) + -(intBitsToFloat(backupReg0i)));
R126i.w = floatBitsToInt(intBitsToFloat(backupReg0i) + -(0.5));
R126i.y = floatBitsToInt(intBitsToFloat(PS1i) + -(0.5));
PS0i = R126i.y;
// 7
PV1i.x = floatBitsToInt(-(intBitsToFloat(R127i.w)) + intBitsToFloat(PV0i.y));
PV1i.y = floatBitsToInt(intBitsToFloat(R6i.w) * intBitsToFloat(0x437f0000));
R4i.z = floatBitsToInt(-(intBitsToFloat(R124i.x)));
PV1i.w = floatBitsToInt(-(intBitsToFloat(R127i.y)) + intBitsToFloat(PV0i.y));
R5i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(R124i.x))));
PS1i = R5i.x;
// 8
R4i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), -(intBitsToFloat(R124i.x))));
PV0i.y = floatBitsToInt(intBitsToFloat(R127i.w) + intBitsToFloat(PV1i.w));
PV0i.z = floatBitsToInt(intBitsToFloat(R127i.y) + intBitsToFloat(PV1i.x));
R0i.w = floatBitsToInt((intBitsToFloat(R6i.x) * 2.0 + -(1.0)));
PS0i = int(intBitsToFloat(PV1i.y));
// 9
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.z) + intBitsToFloat(R127i.z));
PV1i.x = clampFI32(PV1i.x);
R5i.y = floatBitsToInt((intBitsToFloat(R6i.y) * 2.0 + -(1.0)));
R5i.z = floatBitsToInt((intBitsToFloat(R6i.z) * 2.0 + -(1.0)));
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.y) + intBitsToFloat(R125i.x));
PV1i.w = clampFI32(PV1i.w);
PS1i = PS0i & int(1);
// 10
PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(R126i.w));
R123i.y = ((PS1i == 0)?(0):(0x3f800000));
PV0i.y = R123i.y;
R2i.z = floatBitsToInt(-(intBitsToFloat(R6i.w)) + intBitsToFloat(0x3f400000));
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(R126i.y));
R0i.z = floatBitsToInt(roundEven(0.0));
PS0i = R0i.z;
// 11
R0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(PV0i.x)));
R0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), intBitsToFloat(PV0i.w)));
R1i.z = floatBitsToInt((intBitsToFloat(0x3ecccccd) * intBitsToFloat(PV0i.y) + intBitsToFloat(0x3dcccccd)));
R1i.w = floatBitsToInt(intBitsToFloat(R10i.w) * intBitsToFloat(0x437f0000));
R5i.w = 0;
PS1i = R5i.w;
R11i.xyzw = floatBitsToInt(texture(textureUnitPS11, intBitsToFloat(R0i.xy)).xyzw);
R9i.xyz = floatBitsToInt(texture(textureUnitPS10, vec3(intBitsToFloat(R0i.x),intBitsToFloat(R0i.y),intBitsToFloat(R0i.z))).xyz);
R12i.xyz = floatBitsToInt(texture(textureUnitPS13, intBitsToFloat(R0i.xy)).xyz);
// 0
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R4i.x),intBitsToFloat(R4i.z),-0.0),vec4(intBitsToFloat(R5i.x),intBitsToFloat(R4i.x),intBitsToFloat(R4i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R127i.z = floatBitsToInt((intBitsToFloat(R11i.w) * 2.0 + -(1.0)));
R127i.z = clampFI32(R127i.z);
PS0i = R127i.z;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R0i.w),intBitsToFloat(R5i.y),intBitsToFloat(R5i.z),-0.0),vec4(intBitsToFloat(R0i.w),intBitsToFloat(R5i.y),intBitsToFloat(R5i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R126i.z = floatBitsToInt(sqrt(intBitsToFloat(PV0i.x)));
PS1i = R126i.z;
// 2
R125i.x = R11i.w;
R125i.x = floatBitsToInt(intBitsToFloat(R125i.x) * 2.0);
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x), intBitsToFloat(R127i.z)));
R0i.z = floatBitsToInt((intBitsToFloat(R11i.y) * 0.5 + 0.5));
R3i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R11i.x), intBitsToFloat(uf_remappedPS[4].x)));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 3
R0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), intBitsToFloat(PS0i)));
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.y), intBitsToFloat(PS0i)));
R124i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.z), intBitsToFloat(PS0i)));
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(R1i.z)));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(R126i.z));
// 4
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.x), intBitsToFloat(PS1i)));
PV0i.x = R124i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.x), intBitsToFloat(PS1i)));
PV0i.y = R127i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.z), intBitsToFloat(PS1i)));
PV0i.z = R127i.z;
PV0i.w = R125i.x;
PV0i.w = clampFI32(PV0i.w);
R4i.w = int(intBitsToFloat(R1i.w));
PS0i = R4i.w;
// 5
R125i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R126i.w)) + intBitsToFloat(R0i.x)));
PV1i.x = R125i.x;
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(R126i.w)) + intBitsToFloat(R124i.y)));
PV1i.y = R126i.y;
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R126i.w)) + intBitsToFloat(R124i.z)));
PV1i.z = R126i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.z),intBitsToFloat(PV0i.w)) + intBitsToFloat(R6i.w)));
PV1i.w = R127i.w;
R127i.x = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(uf_remappedPS[5].x));
PS1i = R127i.x;
// 6
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R7i.w = floatBitsToInt((-(intBitsToFloat(PV1i.w)) * intBitsToFloat(0x40400000) + intBitsToFloat(0x40400000)));
PS0i = R7i.w;
// 7
R126i.x = floatBitsToInt(-(intBitsToFloat(R127i.w)) + 1.0);
R125i.y = floatBitsToInt(intBitsToFloat(R127i.y) + intBitsToFloat(uf_remappedPS[5].y));
R125i.z = floatBitsToInt(intBitsToFloat(R127i.z) + intBitsToFloat(uf_remappedPS[5].z));
R126i.w = R4i.w & 0x000000fc;
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
PS1i = floatBitsToInt(tempResultf);
// 8
backupReg0i = R125i.x;
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS1i)));
PV0i.x = R125i.x;
R5i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PS1i)));
PV0i.y = R5i.y;
R2i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.z), intBitsToFloat(PS1i)));
PV0i.z = R2i.z;
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].x), intBitsToFloat(uf_remappedPS[3].w)));
R6i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].y), intBitsToFloat(uf_remappedPS[3].w)));
PS0i = R6i.y;
// 9
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R124i.x),intBitsToFloat(R127i.y),intBitsToFloat(R127i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R126i.y = tempi.x;
PS1i = PV0i.x;
PS1i = floatBitsToInt(intBitsToFloat(PS1i) * 2.0);
// 10
R6i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.x)),intBitsToFloat(PS1i)) + intBitsToFloat(R124i.x)));
PV0i.y = R5i.y;
PV0i.y = floatBitsToInt(intBitsToFloat(PV0i.y) * 2.0);
PV0i.z = floatBitsToInt(max(-(intBitsToFloat(PV1i.x)), 0.0));
PV0i.w = R2i.z;
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * 2.0);
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].z), intBitsToFloat(uf_remappedPS[3].w)));
PS0i = R126i.z;
// 11
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.w)),intBitsToFloat(R126i.x)) + intBitsToFloat(R126i.x)));
PV1i.x = R123i.x;
R0i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R126i.y)),intBitsToFloat(PV0i.y)) + intBitsToFloat(R127i.y)));
R6i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R126i.y)),intBitsToFloat(PV0i.w)) + intBitsToFloat(R127i.z)));
R124i.w = floatBitsToInt(min(intBitsToFloat(PV0i.z), 1.0));
R127i.y = floatBitsToInt(float(R126i.w));
PS1i = R127i.y;
// 12
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.x),intBitsToFloat(R125i.y),intBitsToFloat(R125i.z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R125i.y),intBitsToFloat(R125i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
PS0i = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(0x3c23d70a));
PS0i = clampFI32(PS0i);
// 13
R1i.x = floatBitsToInt(intBitsToFloat(R127i.y) * intBitsToFloat(0x3b820821));
PV1i.y = floatBitsToInt(-(intBitsToFloat(R124i.w)) + 1.0);
R8i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS0i), intBitsToFloat(PS0i)));
R126i.w = R4i.w & 0x00000002;
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
PS1i = floatBitsToInt(tempResultf);
// 14
backupReg0i = R125i.y;
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), intBitsToFloat(PS1i)));
R125i.y = floatBitsToInt((intBitsToFloat(R126i.x) * 0.5 + 0.5));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS1i)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS1i)));
R126i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R124i.w)),intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.y)));
PS0i = R126i.x;
// 15
R127i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.w)), intBitsToFloat(uf_remappedPS[3].w)));
PV1i.x = R127i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.z)), intBitsToFloat(uf_remappedPS[3].w)));
PV1i.y = R127i.y;
R125i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.x)), intBitsToFloat(uf_remappedPS[3].w)));
PV1i.z = R125i.z;
R1i.w = floatBitsToInt((intBitsToFloat(R1i.x) * 0.25 + 0.25));
R3i.z = floatBitsToInt(float(R126i.w));
R3i.z = floatBitsToInt(intBitsToFloat(R3i.z) / 2.0);
PS1i = R3i.z;
// 16
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R125i.w)),-(intBitsToFloat(R6i.y)),-(intBitsToFloat(R126i.z)),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
tempi.x = clampFI32(tempi.x);
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R6i.w = tempi.x;
R5i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(R125i.y)));
R5i.x = floatBitsToInt(intBitsToFloat(R5i.x) / 2.0);
PS0i = R5i.x;
// 17
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.x),intBitsToFloat(R127i.y),intBitsToFloat(R125i.z),-0.0),vec4(intBitsToFloat(R125i.x),intBitsToFloat(R5i.y),intBitsToFloat(R2i.z),0.0)));
tempi.x = clampFI32(tempi.x);
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.y = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + 1.0);
PS1i = R127i.y;
// 18
backupReg0i = R0i.x;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(R124i.y),intBitsToFloat(R124i.z),intBitsToFloat(R124i.z)),vec4(-(intBitsToFloat(R125i.w)),-(intBitsToFloat(R6i.y)),-(intBitsToFloat(R126i.z)),-(intBitsToFloat(R5i.w)))));
tempi.x = clampFI32(tempi.x);
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R5i.z = tempi.x;
PS0i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(PV1i.x)));
// 19
R4i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.w)),intBitsToFloat(R127i.y)) + intBitsToFloat(R127i.y)));
R2i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R11i.x), intBitsToFloat(PV0i.x)));
PV1i.y = R2i.y;
R4i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.z),intBitsToFloat(PS0i)) + -(intBitsToFloat(PS0i))));
PV1i.z = R4i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R124i.w)),intBitsToFloat(R126i.x)) + intBitsToFloat(R126i.x)));
PV1i.w = R123i.w;
R1i.y = floatBitsToInt((-(intBitsToFloat(R127i.w)) * intBitsToFloat(0x40400000) + 4.0));
PS1i = R1i.y;
// 20
R0i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R11i.y),-(intBitsToFloat(R1i.w))) + intBitsToFloat(R11i.y)));
R4i.y = floatBitsToInt(intBitsToFloat(R3i.z) * intBitsToFloat(0x3e19999a));
R1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.x), intBitsToFloat(PV1i.w)));
R5i.w = floatBitsToInt(-(intBitsToFloat(PV1i.y)) + 1.0);
R3i.y = floatBitsToInt(intBitsToFloat(PV1i.z) + 1.0);
PS0i = R3i.y;
// 21
backupReg0i = R2i.z;
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R125i.w)),-(intBitsToFloat(R6i.y)),-(intBitsToFloat(R126i.z)),-0.0),vec4(intBitsToFloat(R125i.x),intBitsToFloat(R5i.y),intBitsToFloat(backupReg0i),0.0)));
tempi.x = clampFI32(tempi.x);
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R2i.z = tempi.x;
R0i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.w),-(intBitsToFloat(R5i.x))) + intBitsToFloat(R124i.w)));
PS1i = R0i.w;
// 0
backupReg0i = R0i.y;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[6].x),intBitsToFloat(uf_remappedPS[6].y),intBitsToFloat(uf_remappedPS[6].z),-0.0),vec4(intBitsToFloat(R6i.x),intBitsToFloat(backupReg0i),intBitsToFloat(R6i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R124i.w = floatBitsToInt((-(intBitsToFloat(R1i.x)) * intBitsToFloat(0x3d23d70a) + intBitsToFloat(0x3d23d70a)));
PS0i = R124i.w;
// 1
backupReg0i = R0i.y;
R126i.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[7].x),intBitsToFloat(uf_remappedPS[7].y),intBitsToFloat(uf_remappedPS[7].z),-0.0),vec4(intBitsToFloat(R6i.x),intBitsToFloat(backupReg0i),intBitsToFloat(R6i.z),0.0)));
PV1i.x = R126i.x;
PV1i.y = R126i.x;
PV1i.z = R126i.x;
PV1i.w = R126i.x;
R126i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)));
PS1i = R126i.z;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[8].x),intBitsToFloat(uf_remappedPS[8].y),intBitsToFloat(uf_remappedPS[8].z),-0.0),vec4(intBitsToFloat(R6i.x),intBitsToFloat(R0i.y),intBitsToFloat(R6i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R126i.y = tempi.x;
R125i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.w)),intBitsToFloat(R4i.x)) + intBitsToFloat(R4i.x)));
PS0i = R125i.w;
// 3
backupReg0i = R126i.x;
backupReg0i = R126i.x;
backupReg1i = R126i.z;
backupReg1i = R126i.z;
redcCUBE(vec4(intBitsToFloat(R126i.z),intBitsToFloat(R126i.z),intBitsToFloat(backupReg0i),intBitsToFloat(PV0i.x)),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i),intBitsToFloat(backupReg1i)),cubeMapSTM,cubeMapFaceId);
R126i.x = floatBitsToInt(cubeMapSTM.x);
R126i.y = floatBitsToInt(cubeMapSTM.y);
R126i.z = floatBitsToInt(cubeMapSTM.z);
R126i.w = cubeMapFaceId;
PV1i.x = R126i.x;
PV1i.y = R126i.y;
PV1i.z = R126i.z;
PV1i.w = R126i.w;
R125i.x = floatBitsToInt(1.0 / intBitsToFloat(R1i.y));
PS1i = R125i.x;
// 4
backupReg0i = R0i.x;
R0i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.w),intBitsToFloat(R4i.y)) + intBitsToFloat(R2i.y)));
R2i.y = floatBitsToInt(intBitsToFloat(R1i.w) + intBitsToFloat(backupReg0i));
R7i.z = PV1i.w;
R1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.x), intBitsToFloat(R125i.w)));
PS0i = floatBitsToInt(1.0 / abs(intBitsToFloat(PV1i.z)));
// 5
R6i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.z),intBitsToFloat(R3i.y)) + intBitsToFloat(R3i.y)));
R3i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(R125i.x)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.x),intBitsToFloat(PS0i)) + 1.5));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.y),intBitsToFloat(PS0i)) + 1.5));
PV1i.w = R123i.w;
R1i.z = floatBitsToInt(intBitsToFloat(R5i.x) + intBitsToFloat(R0i.w));
PS1i = R1i.z;
// 6
backupReg0i = R0i.z;
R7i.x = PV1i.w;
R7i.y = PV1i.z;
R0i.z = floatBitsToInt(intBitsToFloat(R5i.z) + intBitsToFloat(backupReg0i));
R0i.z = clampFI32(R0i.z);
R0i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.x),intBitsToFloat(R1i.x)) + intBitsToFloat(R124i.w)));
R4i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.z),-(intBitsToFloat(R5i.x))) + intBitsToFloat(R2i.z)));
PS0i = R4i.x;
R7i.xyz = floatBitsToInt(textureLod(textureUnitPS8, vec4(redcCUBEReverse(intBitsToFloat(R7i.xy),R7i.z),cubeMapArrayIndex8),intBitsToFloat(R7i.w)).xyz);
// 0
R125i.x = floatBitsToInt(intBitsToFloat(R5i.x) + intBitsToFloat(R4i.x));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.w),-(intBitsToFloat(R3i.z))) + intBitsToFloat(R3i.w)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.y),-(intBitsToFloat(R3i.z))) + intBitsToFloat(R2i.y)));
PV0i.z = R123i.z;
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.x), intBitsToFloat(R0i.z)));
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w), intBitsToFloat(uf_remappedPS[3].w)));
PS0i = R126i.x;
// 1
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.w),-(intBitsToFloat(R3i.y))) + intBitsToFloat(R0i.w)));
PV1i.x = R123i.x;
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(R2i.z)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.w),-(intBitsToFloat(R1i.w))) + intBitsToFloat(R0i.w)));
PV1i.z = R123i.z;
R126i.w = floatBitsToInt(intBitsToFloat(PV0i.z) * intBitsToFloat(0x3f400000));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(R6i.x));
// 2
backupReg0i = R126i.x;
backupReg0i = R126i.x;
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(backupReg0i)));
R127i.y = floatBitsToInt(intBitsToFloat(R1i.w) + intBitsToFloat(PV1i.z));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.z), intBitsToFloat(PS1i)));
R125i.w = floatBitsToInt(intBitsToFloat(R3i.y) + intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(1.0 / intBitsToFloat(R1i.z));
// 3
backupReg0i = R124i.w;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].x),intBitsToFloat(R124i.w)) + intBitsToFloat(R9i.x)));
PV1i.x = R123i.x;
R124i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].y),intBitsToFloat(R124i.w)) + intBitsToFloat(R9i.y)));
PV1i.z = floatBitsToInt(0.25 * intBitsToFloat(PS0i));
R124i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].z),intBitsToFloat(backupReg0i)) + intBitsToFloat(R9i.z)));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(R125i.x));
// 4
backupReg0i = R126i.x;
backupReg1i = R125i.w;
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PV1i.z)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS1i), intBitsToFloat(R126i.z)));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(backupReg0i)));
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(backupReg1i)));
R126i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R1i.x)),intBitsToFloat(PV1i.x)) + intBitsToFloat(PV1i.x)));
PS0i = R126i.w;
// 5
R123i.x = floatBitsToInt((intBitsToFloat(R10i.x) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R123i.x = clampFI32(R123i.x);
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R1i.x)),intBitsToFloat(R124i.w)) + intBitsToFloat(R124i.w)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R1i.x)),intBitsToFloat(R124i.y)) + intBitsToFloat(R124i.y)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((intBitsToFloat(R10i.y) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R123i.w = clampFI32(R123i.w);
PV1i.w = R123i.w;
R122i.x = floatBitsToInt((intBitsToFloat(R10i.z) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R122i.x = clampFI32(R122i.x);
PS1i = R122i.x;
// 6
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.z), intBitsToFloat(R127i.y)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(PV1i.x)));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(PV1i.w)));
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(PS1i)));
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].x), intBitsToFloat(R126i.x)));
PS0i = R125i.x;
// 7
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.x), intBitsToFloat(R125i.w)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.y), intBitsToFloat(R125i.w)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].z), intBitsToFloat(R126i.x)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].y), intBitsToFloat(R126i.x)));
PS1i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.z), intBitsToFloat(R125i.w)));
// 8
backupReg0i = R127i.x;
backupReg0i = R127i.x;
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.w),intBitsToFloat(backupReg0i)) + intBitsToFloat(PV1i.y)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.x),intBitsToFloat(backupReg0i)) + intBitsToFloat(PV1i.x)));
PV0i.y = R123i.y;
PV0i.z = R4i.w & int(1);
R125i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(backupReg0i)) + intBitsToFloat(PS1i)));
R122i.x = floatBitsToInt((intBitsToFloat(R127i.y) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PS0i = R122i.x;
// 9
R123i.x = floatBitsToInt((intBitsToFloat(R126i.w) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((intBitsToFloat(R126i.z) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.y = R123i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R11i.z), intBitsToFloat(R11i.z)));
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.y) + intBitsToFloat(PS0i));
PS1i = floatBitsToInt(float(PV0i.z));
// 10
R4i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R11i.z),intBitsToFloat(PV1i.w)) + intBitsToFloat(R12i.x)));
PV0i.y = floatBitsToInt(intBitsToFloat(R125i.w) + intBitsToFloat(PV1i.x));
PV0i.z = floatBitsToInt(intBitsToFloat(R127i.x) + intBitsToFloat(PV1i.y));
R4i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS1i), intBitsToFloat(PV1i.z)));
// 11
R4i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R11i.z),intBitsToFloat(PV0i.z)) + intBitsToFloat(R12i.y)));
R4i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R11i.z),intBitsToFloat(PV0i.y)) + intBitsToFloat(R12i.z)));
// export
passPixelColor0 = vec4(intBitsToFloat(R4i.x), intBitsToFloat(R4i.y), intBitsToFloat(R4i.z), intBitsToFloat(R4i.w));
float luma = dot(passPixelColor0.rgb, vec3(0.2126, 0.7152, 0.0722));
#if (ENABLE_COLOR_FADE == 1)
float depth = texture(textureUnitPS4, passParameterSem0.xy).x;
float factor = smoothstep(0.0005, 0.00075, depth);
passPixelColor0.rgb = mix(passPixelColor0.rgb, vec3(luma), factor);
#else
passPixelColor0.rgb = vec3(luma);
#endif
}

View File

@ -0,0 +1,668 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader 49ce4bf04a654e80
// Monochromia
// Shrine interiors
// original shader dumped using cemu 1.11.c, BotW 1.3.1
#define ENABLE_COLOR_FADE 0 // set this to 1 to enable, 0 to disable the effect
uniform ivec4 uf_remappedPS[10];
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf45c6000 res 1280x720x1 dim 1 tm: 4 format 041a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0xf513a800 res 320x180x1 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: 1
layout(binding = 3) uniform sampler2D textureUnitPS3;// Tex3 addr 0xf494a800 res 1280x720x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler3 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 5) uniform sampler2D textureUnitPS5;// Tex5 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler5 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 7) uniform sampler2D textureUnitPS7;// Tex7 addr 0xf5054000 res 640x360x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler7 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 8) uniform sampler2D textureUnitPS8;// Tex8 addr 0xf5846000 res 640x360x1 dim 1 tm: 4 format 0001 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler8 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 9) uniform samplerCubeArray textureUnitPS9;// Tex9 addr 0x3db66800 res 64x64x1 dim 3 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x4) sliceView: 0x0 (num 0x6) Sampler9 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 11) uniform sampler2DArray textureUnitPS11;// Tex11 addr 0xf5593000 res 640x360x2 dim 5 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x2) Sampler11 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 12) uniform sampler2D textureUnitPS12;// Tex12 addr 0xf575f800 res 640x360x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler12 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 14) uniform sampler2D textureUnitPS14;// Tex14 addr 0xf5977800 res 640x360x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler14 ClampX/Y/Z: 2 2 2 border: 1
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 2) in vec4 passParameterSem3;
layout(location = 3) in vec4 passParameterSem4;
layout(location = 4) in vec4 passParameterSem6;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
void redcCUBE(vec4 src0, vec4 src1, out vec3 stm, out int faceId)
{
// stm -> x .. s, y .. t, z .. MajorAxis*2.0
vec3 inputCoord = normalize(vec3(src1.y, src1.x, src0.x));
float rx = inputCoord.x;
float ry = inputCoord.y;
float rz = inputCoord.z;
if( abs(rx) > abs(ry) && abs(rx) > abs(rz) )
{
stm.z = rx*2.0;
stm.xy = vec2(ry,rz);
if( rx >= 0.0 )
{
faceId = 0;
}
else
{
faceId = 1;
}
}
else if( abs(ry) > abs(rx) && abs(ry) > abs(rz) )
{
stm.z = ry*2.0;
stm.xy = vec2(rx,rz);
if( ry >= 0.0 )
{
faceId = 2;
}
else
{
faceId = 3;
}
}
else //if( abs(rz) > abs(ry) && abs(rz) > abs(rx) )
{
stm.z = rz*2.0;
stm.xy = vec2(rx,ry);
if( rz >= 0.0 )
{
faceId = 4;
}
else
{
faceId = 5;
}
}
}
vec3 redcCUBEReverse(vec2 st, int faceId)
{
st.yx = st.xy;
vec3 v;
float majorAxis = 1.0;
if( faceId == 0 )
{
v.yz = (st-vec2(1.5))*(majorAxis*2.0);
v.x = 1.0;
}
else if( faceId == 1 )
{
v.yz = (st-vec2(1.5))*(majorAxis*2.0);
v.x = -1.0;
}
else if( faceId == 2 )
{
v.xz = (st-vec2(1.5))*(majorAxis*2.0);
v.y = 1.0;
}
else if( faceId == 3 )
{
v.xz = (st-vec2(1.5))*(majorAxis*2.0);
v.y = -1.0;
}
else if( faceId == 4 )
{
v.xy = (st-vec2(1.5))*(majorAxis*2.0);
v.z = 1.0;
}
else
{
v.xy = (st-vec2(1.5))*(majorAxis*2.0);
v.z = -1.0;
}
return v;
}
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 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 R9i = ivec4(0);
ivec4 R10i = ivec4(0);
ivec4 R11i = ivec4(0);
ivec4 R12i = ivec4(0);
ivec4 R13i = 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;
float cubeMapArrayIndex9 = 0.0;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem1);
R2i = floatBitsToInt(passParameterSem3);
R3i = floatBitsToInt(passParameterSem4);
R4i = floatBitsToInt(passParameterSem6);
R7i.xyzw = floatBitsToInt(texture(textureUnitPS3, intBitsToFloat(R4i.zw)).xyzw);
R2i.w = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.xy)).x);
R5i.xyzw = floatBitsToInt(textureGather(textureUnitPS7, intBitsToFloat(R0i.xy)).xyzw);
R6i.xyzw = floatBitsToInt(textureGather(textureUnitPS8, intBitsToFloat(R0i.xy)).xyzw);
R4i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R4i.zw)).xyzw);
// 0
R127i.x = floatBitsToInt((intBitsToFloat(R7i.x) * 2.0 + -(1.0)));
PV0i.x = R127i.x;
R127i.y = floatBitsToInt((intBitsToFloat(R7i.y) * 2.0 + -(1.0)));
PV0i.y = R127i.y;
R124i.z = floatBitsToInt((intBitsToFloat(R7i.z) * 2.0 + -(1.0)));
PV0i.z = R124i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.w),intBitsToFloat(uf_remappedPS[0].x)) + intBitsToFloat(uf_remappedPS[1].x)));
PV0i.w = R127i.w;
R126i.w = floatBitsToInt(-(intBitsToFloat(R2i.w)) + intBitsToFloat(R5i.y));
PS0i = R126i.w;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R8i.z = floatBitsToInt(-(intBitsToFloat(PV0i.w)));
PS1i = R8i.z;
// 2
R10i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(R127i.w))));
R9i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), -(intBitsToFloat(R127i.w))));
R125i.z = floatBitsToInt(-(intBitsToFloat(R2i.w)) + intBitsToFloat(R5i.x));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(uf_remappedPS[2].y)));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
R125i.x = floatBitsToInt(tempResultf);
PS0i = R125i.x;
// 3
R5i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS0i)));
PV1i.x = R5i.x;
R5i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS0i)));
R127i.z = floatBitsToInt(-(intBitsToFloat(R2i.w)) + intBitsToFloat(R5i.w));
R127i.w = floatBitsToInt(-(intBitsToFloat(R2i.w)) + intBitsToFloat(R5i.z));
R126i.z = floatBitsToInt(1.0 / intBitsToFloat(PV0i.w));
PS1i = R126i.z;
// 4
backupReg0i = R0i.x;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R10i.x),intBitsToFloat(R9i.y),intBitsToFloat(R8i.z),-0.0),vec4(intBitsToFloat(R10i.x),intBitsToFloat(R9i.y),intBitsToFloat(R8i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R8i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.x),intBitsToFloat(PV1i.x)) + intBitsToFloat(backupReg0i)));
PS0i = R8i.x;
// 5
backupReg0i = R126i.w;
backupReg0i = R126i.w;
R127i.x = floatBitsToInt(max(intBitsToFloat(R127i.z), -(intBitsToFloat(R127i.z))));
R8i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.y),intBitsToFloat(R5i.y)) + intBitsToFloat(R0i.y)));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), intBitsToFloat(R126i.z)));
R126i.w = floatBitsToInt(max(intBitsToFloat(backupReg0i), -(intBitsToFloat(backupReg0i))));
PS1i = floatBitsToInt(sqrt(intBitsToFloat(PV0i.x)));
// 6
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.x),intBitsToFloat(R7i.y),intBitsToFloat(R7i.z),-0.0),vec4(intBitsToFloat(0x3eaaaaab),intBitsToFloat(0x3eaaaaab),intBitsToFloat(0x3eaaaaab),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R127i.y = tempi.x;
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PS1i));
// 7
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R6i.w));
R10i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R10i.x), intBitsToFloat(PS0i)));
PV1i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R6i.y));
R2i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.y), intBitsToFloat(PS0i)));
R9i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.z), intBitsToFloat(PS0i)));
PS1i = R9i.z;
// 8
PV0i.x = floatBitsToInt(max(intBitsToFloat(PV1i.x), -(intBitsToFloat(PV1i.x))));
PV0i.x = floatBitsToInt(intBitsToFloat(PV0i.x) * 4.0);
PV0i.y = floatBitsToInt(-(intBitsToFloat(R127i.y)) + intBitsToFloat(R6i.z));
PV0i.z = floatBitsToInt(max(intBitsToFloat(PV1i.z), -(intBitsToFloat(PV1i.z))));
PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) * 4.0);
PV0i.w = floatBitsToInt(-(intBitsToFloat(R127i.y)) + intBitsToFloat(R6i.x));
R126i.x = floatBitsToInt(max(intBitsToFloat(R125i.z), -(intBitsToFloat(R125i.z))));
PS0i = R126i.x;
// 9
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(R127i.z)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
PV1i.y = floatBitsToInt(max(intBitsToFloat(R127i.w), -(intBitsToFloat(R127i.w))));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.w),intBitsToFloat(R127i.z)) + intBitsToFloat(PV0i.z)));
PV1i.z = R123i.z;
PV1i.w = floatBitsToInt(max(intBitsToFloat(PV0i.w), -(intBitsToFloat(PV0i.w))));
PV1i.w = floatBitsToInt(intBitsToFloat(PV1i.w) * 4.0);
PS1i = floatBitsToInt(max(intBitsToFloat(PV0i.y), -(intBitsToFloat(PV0i.y))));
PS1i = floatBitsToInt(intBitsToFloat(PS1i) * 4.0);
// 10
backupReg0i = R126i.x;
R126i.x = floatBitsToInt(-(intBitsToFloat(PV1i.z)) + intBitsToFloat(PV1i.x));
PV0i.x = R126i.x;
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(R127i.z)) + intBitsToFloat(PS1i)));
PV0i.y = R127i.y;
R6i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(R125i.x)));
PV0i.z = R6i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(R127i.z)) + intBitsToFloat(PV1i.w)));
R127i.z = floatBitsToInt(floor(intBitsToFloat(R3i.x)));
PS0i = R127i.z;
// 11
R125i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R5i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(R10i.y),intBitsToFloat(R2i.w),intBitsToFloat(R9i.z),0.0)));
PV1i.x = R125i.x;
PV1i.y = R125i.x;
PV1i.z = R125i.x;
PV1i.w = R125i.x;
PS1i = floatBitsToInt(-(intBitsToFloat(PV0i.y)) + intBitsToFloat(PV0i.x));
// 12
PV0i.x = floatBitsToInt(floor(intBitsToFloat(R3i.y)));
PV0i.y = floatBitsToInt(-(intBitsToFloat(R127i.w)) + intBitsToFloat(R126i.x));
PV0i.z = floatBitsToInt(intBitsToFloat(R127i.w) + intBitsToFloat(PS1i));
PV0i.w = floatBitsToInt(intBitsToFloat(R3i.x) + -(intBitsToFloat(R127i.z)));
R126i.x = floatBitsToInt(intBitsToFloat(R127i.z) + -(0.5));
PS0i = R126i.x;
// 13
backupReg0i = R127i.y;
PV1i.x = floatBitsToInt(intBitsToFloat(R3i.y) + -(intBitsToFloat(PV0i.x)));
R127i.y = floatBitsToInt(intBitsToFloat(PV0i.x) + -(0.5));
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.z) + intBitsToFloat(PV0i.w));
PV1i.z = clampFI32(PV1i.z);
PV1i.w = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(PV0i.y));
PS1i = R5i.x;
PS1i = floatBitsToInt(intBitsToFloat(PS1i) * 2.0);
// 14
PV0i.x = R5i.y;
PV0i.x = floatBitsToInt(intBitsToFloat(PV0i.x) * 2.0);
PV0i.y = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(PV1i.x));
PV0i.y = clampFI32(PV0i.y);
PV0i.z = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(R126i.x));
PV0i.w = R6i.z;
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * 2.0);
R126i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R125i.x)),intBitsToFloat(PS1i)) + intBitsToFloat(R10i.y)));
PS0i = R126i.x;
// 15
backupReg0i = R127i.y;
R2i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(PV0i.z)));
R127i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R125i.x)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R2i.w)));
R127i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R125i.x)),intBitsToFloat(PV0i.w)) + intBitsToFloat(R9i.z)));
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.y) + intBitsToFloat(backupReg0i));
R2i.z = floatBitsToInt(roundEven(0.0));
PS1i = R2i.z;
// 16
R9i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R8i.x)) + intBitsToFloat(R1i.z)));
R2i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.w), intBitsToFloat(PV1i.w)));
R5i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R8i.y)) + intBitsToFloat(R1i.w)));
R0i.w = floatBitsToInt((-(intBitsToFloat(R7i.w)) * intBitsToFloat(0x40400000) + intBitsToFloat(0x40400000)));
R1i.x = floatBitsToInt(intBitsToFloat(R10i.y) + intBitsToFloat(uf_remappedPS[3].x));
PS0i = R1i.x;
// 17
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[4].x),intBitsToFloat(uf_remappedPS[4].y),intBitsToFloat(uf_remappedPS[4].z),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(R127i.y),intBitsToFloat(R127i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.w = floatBitsToInt(intBitsToFloat(R4i.w) * intBitsToFloat(0x437f0000));
PS1i = R127i.w;
// 18
R124i.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[5].x),intBitsToFloat(uf_remappedPS[5].y),intBitsToFloat(uf_remappedPS[5].z),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(R127i.y),intBitsToFloat(R127i.z),0.0)));
PV0i.x = R124i.x;
PV0i.y = R124i.x;
PV0i.z = R124i.x;
PV0i.w = R124i.x;
R124i.z = floatBitsToInt(-(intBitsToFloat(PV1i.x)));
PS0i = R124i.z;
// 19
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[6].x),intBitsToFloat(uf_remappedPS[6].y),intBitsToFloat(uf_remappedPS[6].z),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(R127i.y),intBitsToFloat(R127i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R124i.y = tempi.x;
R127i.z = floatBitsToInt(max(-(intBitsToFloat(R125i.x)), 0.0));
PS1i = R127i.z;
// 20
backupReg0i = R124i.x;
backupReg0i = R124i.x;
backupReg1i = R124i.z;
backupReg1i = R124i.z;
redcCUBE(vec4(intBitsToFloat(R124i.z),intBitsToFloat(R124i.z),intBitsToFloat(backupReg0i),intBitsToFloat(PV1i.x)),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i),intBitsToFloat(backupReg1i)),cubeMapSTM,cubeMapFaceId);
R124i.x = floatBitsToInt(cubeMapSTM.x);
R124i.y = floatBitsToInt(cubeMapSTM.y);
R124i.z = floatBitsToInt(cubeMapSTM.z);
R124i.w = cubeMapFaceId;
PV0i.x = R124i.x;
PV0i.y = R124i.y;
PV0i.z = R124i.z;
PV0i.w = R124i.w;
R3i.y = floatBitsToInt(intBitsToFloat(R2i.w) + intBitsToFloat(uf_remappedPS[3].y));
PS0i = R3i.y;
// 21
R3i.x = floatBitsToInt(intBitsToFloat(R9i.z) + intBitsToFloat(uf_remappedPS[3].z));
R6i.y = floatBitsToInt(-(intBitsToFloat(R7i.w)) + 1.0);
PV1i.y = R6i.y;
R0i.z = PV0i.w;
R3i.w = 0;
PS1i = floatBitsToInt(1.0 / abs(intBitsToFloat(PV0i.z)));
// 22
R6i.x = floatBitsToInt(min(intBitsToFloat(R127i.z), 1.0));
R1i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.y),intBitsToFloat(PS1i)) + 1.5));
R1i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R7i.w)),intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.y)));
R1i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.x),intBitsToFloat(PS1i)) + 1.5));
R3i.z = int(intBitsToFloat(R127i.w));
PS0i = R3i.z;
// 0
R0i.x = R1i.y;
R0i.y = R1i.w;
R127i.z = floatBitsToInt(intBitsToFloat(R7i.w) * intBitsToFloat(0x437f0000));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x), intBitsToFloat(uf_remappedPS[7].w)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y), intBitsToFloat(uf_remappedPS[7].w)));
PS0i = R127i.y;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R1i.x),intBitsToFloat(R3i.y),intBitsToFloat(R3i.x),-0.0),vec4(intBitsToFloat(R1i.x),intBitsToFloat(R3i.y),intBitsToFloat(R3i.x),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z), intBitsToFloat(uf_remappedPS[7].w)));
PS1i = R125i.z;
// 2
PV0i.x = floatBitsToInt(intBitsToFloat(R1i.z) + intBitsToFloat(0x3c23d70a));
PV0i.x = clampFI32(PV0i.x);
R124i.y = R3i.z & 0x000000fc;
R124i.z = floatBitsToInt(-(intBitsToFloat(R6i.x)) + 1.0);
R124i.w = 0;
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 3
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.y), intBitsToFloat(PS0i)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(PS0i)));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.x), intBitsToFloat(PS0i)));
R126i.y = int(intBitsToFloat(R127i.z));
PS1i = R126i.y;
// 4
backupReg0i = R124i.y;
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(uf_remappedPS[7].w)));
PV0i.x = R124i.x;
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(uf_remappedPS[7].w)));
PV0i.y = R124i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(uf_remappedPS[7].w)));
PV0i.z = R127i.z;
R126i.w = floatBitsToInt((intBitsToFloat(R6i.y) * 0.5 + 0.5));
R126i.x = floatBitsToInt(float(backupReg0i));
PS0i = R126i.x;
// 5
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R127i.w)),-(intBitsToFloat(R127i.y)),-(intBitsToFloat(R125i.z)),-0.0),vec4(-(intBitsToFloat(PV0i.x)),-(intBitsToFloat(PV0i.y)),-(intBitsToFloat(PV0i.z)),0.0)));
tempi.x = clampFI32(tempi.x);
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R125i.w = tempi.x;
R125i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.x)),intBitsToFloat(R124i.z)) + intBitsToFloat(R124i.z)));
PS1i = R125i.y;
// 6
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R5i.y),intBitsToFloat(R6i.z),intBitsToFloat(R6i.z)),vec4(-(intBitsToFloat(R124i.x)),-(intBitsToFloat(R124i.y)),-(intBitsToFloat(R127i.z)),-(intBitsToFloat(R3i.w)))));
tempi.x = clampFI32(tempi.x);
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R127i.z = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + 1.0);
PS0i = R127i.z;
// 7
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R5i.y),intBitsToFloat(R6i.z),intBitsToFloat(R6i.z)),vec4(-(intBitsToFloat(R127i.w)),-(intBitsToFloat(R127i.y)),-(intBitsToFloat(R125i.z)),-(intBitsToFloat(R124i.w)))));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.w = tempi.x;
PS1i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
// 8
PV0i.x = R126i.y & int(1);
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),intBitsToFloat(PS1i)) + -(intBitsToFloat(PS1i))));
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(R126i.w)));
R125i.z = floatBitsToInt(intBitsToFloat(R125i.z) / 2.0);
R6i.w = floatBitsToInt(intBitsToFloat(R126i.x) * intBitsToFloat(0x3b820821));
PV0i.w = R6i.w;
R124i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R125i.w)),intBitsToFloat(R127i.z)) + intBitsToFloat(R127i.z)));
PS0i = R124i.y;
// 9
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.x)),intBitsToFloat(R125i.y)) + intBitsToFloat(R125i.y)));
PV1i.x = R123i.x;
R126i.y = R127i.w;
R126i.y = floatBitsToInt(intBitsToFloat(R126i.y) * 2.0);
R127i.z = floatBitsToInt((-(intBitsToFloat(R7i.w)) * intBitsToFloat(0x40400000) + 4.0));
R7i.w = floatBitsToInt((intBitsToFloat(PV0i.w) * 0.25 + 0.25));
R7i.y = ((PV0i.x == 0)?(0):(0x3f800000));
PS1i = R7i.y;
// 10
backupReg0i = R6i.x;
backupReg0i = R6i.x;
backupReg1i = R125i.y;
R6i.x = R127i.w;
R6i.x = clampFI32(R6i.x);
PV0i.x = R6i.x;
R125i.y = floatBitsToInt(intBitsToFloat(R127i.y) + 1.0);
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),-(intBitsToFloat(R125i.z))) + intBitsToFloat(backupReg0i)));
PV0i.z = R123i.z;
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg1i), intBitsToFloat(PV1i.x)));
R124i.z = floatBitsToInt((-(intBitsToFloat(R6i.w)) * intBitsToFloat(0x3d23d70a) + intBitsToFloat(0x3d23d70a)));
PS0i = R124i.z;
// 11
backupReg0i = R127i.w;
backupReg1i = R126i.y;
R126i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R125i.w)),intBitsToFloat(R124i.y)) + intBitsToFloat(R124i.y)));
R126i.y = floatBitsToInt(intBitsToFloat(R125i.z) + intBitsToFloat(PV0i.z));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),-(intBitsToFloat(R125i.z))) + intBitsToFloat(PV0i.x)));
PV1i.z = R123i.z;
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(backupReg1i)));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(R127i.z));
// 12
backupReg0i = R127i.y;
backupReg1i = R125i.z;
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(PS1i)));
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.x),intBitsToFloat(R6i.w)) + intBitsToFloat(R124i.z)));
R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.z),intBitsToFloat(R6i.w)) + intBitsToFloat(R124i.z)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(R125i.y)) + intBitsToFloat(R125i.y)));
PV0i.w = R123i.w;
R127i.z = floatBitsToInt(intBitsToFloat(backupReg1i) + intBitsToFloat(PV1i.z));
PS0i = R127i.z;
// 13
backupReg0i = R124i.y;
backupReg1i = R126i.x;
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.y),intBitsToFloat(R6i.w)) + intBitsToFloat(R124i.z)));
PV1i.x = R126i.x;
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[7].w), intBitsToFloat(uf_remappedPS[7].w)));
R10i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.y), intBitsToFloat(R127i.w)));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(backupReg1i)));
PV1i.w = R127i.w;
R124i.z = floatBitsToInt(1.0 / intBitsToFloat(PV0i.w));
PS1i = R124i.z;
// 14
backupReg0i = R127i.y;
backupReg0i = R127i.y;
R124i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),-(intBitsToFloat(R125i.x))) + intBitsToFloat(R127i.y)));
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.z),-(intBitsToFloat(PV1i.w))) + intBitsToFloat(R125i.z)));
R7i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),-(intBitsToFloat(PV1i.w))) + intBitsToFloat(PV1i.x)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),-(intBitsToFloat(PV1i.w))) + intBitsToFloat(backupReg0i)));
PV0i.w = R123i.w;
R127i.x = floatBitsToInt(1.0 / intBitsToFloat(R126i.y));
PS0i = R127i.x;
// 15
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.x),-(intBitsToFloat(R125i.x))) + intBitsToFloat(R126i.x)));
PV1i.x = R123i.x;
R126i.y = floatBitsToInt(intBitsToFloat(R127i.w) + intBitsToFloat(PV0i.w));
R6i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.y), intBitsToFloat(R124i.y)));
R126i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.z),-(intBitsToFloat(R125i.x))) + intBitsToFloat(R125i.z)));
R124i.y = floatBitsToInt(1.0 / intBitsToFloat(R127i.z));
PS1i = R124i.y;
// 16
backupReg0i = R127i.w;
R7i.x = floatBitsToInt(intBitsToFloat(R125i.x) + intBitsToFloat(R124i.x));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.z), intBitsToFloat(R124i.z)));
R126i.z = floatBitsToInt(intBitsToFloat(R127i.w) + intBitsToFloat(R127i.y));
R127i.w = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(R7i.z));
R7i.y = floatBitsToInt(intBitsToFloat(R125i.x) + intBitsToFloat(PV1i.x));
PS0i = R7i.y;
// 17
R5i.x = floatBitsToInt(intBitsToFloat(R125i.x) + intBitsToFloat(R126i.w));
R5i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.y), intBitsToFloat(PV0i.y)));
R12i.z = floatBitsToInt((intBitsToFloat(R4i.x) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R12i.z = clampFI32(R12i.z);
PV1i.w = floatBitsToInt(0.25 * intBitsToFloat(R127i.x));
R5i.w = floatBitsToInt((intBitsToFloat(R4i.y) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R5i.w = clampFI32(R5i.w);
PS1i = R5i.w;
// 18
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.z), intBitsToFloat(PV1i.w)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PV1i.w)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PV1i.w)));
R8i.w = floatBitsToInt((intBitsToFloat(R4i.z) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R8i.w = clampFI32(R8i.w);
PS0i = R3i.z & int(1);
// 19
R4i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].z), intBitsToFloat(PV0i.x)));
R7i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].y), intBitsToFloat(PV0i.y)));
R3i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].x), intBitsToFloat(PV0i.z)));
R4i.z = floatBitsToInt(float(PS0i));
PS1i = R4i.z;
// 20
R3i.x = R2i.x;
R3i.y = R2i.y;
R3i.z = floatBitsToInt(roundEven(1.0));
R4i.w = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R8i.xy)).x);
R13i.xyz = floatBitsToInt(texture(textureUnitPS12, intBitsToFloat(R2i.xy)).xyz);
R11i.xyz = floatBitsToInt(texture(textureUnitPS11, vec3(intBitsToFloat(R2i.x),intBitsToFloat(R2i.y),intBitsToFloat(R2i.z))).xyz);
R1i.xyzw = floatBitsToInt(textureLod(textureUnitPS2, intBitsToFloat(R2i.xy),0.0).xyzw);
R3i.xyz = floatBitsToInt(texture(textureUnitPS11, vec3(intBitsToFloat(R3i.x),intBitsToFloat(R3i.y),intBitsToFloat(R3i.z))).xyz);
R0i.xyz = floatBitsToInt(textureLod(textureUnitPS9, vec4(redcCUBEReverse(intBitsToFloat(R0i.xy),R0i.z),cubeMapArrayIndex9),intBitsToFloat(R0i.w)).xyz);
R2i.xyz = floatBitsToInt(texture(textureUnitPS14, intBitsToFloat(R2i.xy)).xyz);
// 0
R123i.x = floatBitsToInt((intBitsToFloat(R13i.y) * 0.5 + 0.5));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R13i.y),-(intBitsToFloat(R7i.w))) + intBitsToFloat(R13i.y)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x),intBitsToFloat(R4i.w)) + intBitsToFloat(uf_remappedPS[1].x)));
PV0i.z = R123i.z;
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R13i.x), intBitsToFloat(R6i.x)));
R126i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.z),intBitsToFloat(R5i.x)) + intBitsToFloat(R3i.z)));
PS0i = R126i.w;
// 1
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.z)));
PV1i.y = floatBitsToInt(intBitsToFloat(R6i.x) + intBitsToFloat(PV0i.x));
PV1i.y = clampFI32(PV1i.y);
PV1i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.z)), intBitsToFloat(R5i.z)));
PV1i.w = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.z)), intBitsToFloat(R9i.x)));
PS1i = floatBitsToInt(intBitsToFloat(R7i.w) + intBitsToFloat(PV0i.y));
// 2
R127i.x = floatBitsToInt(-(intBitsToFloat(R10i.x)) + intBitsToFloat(PV1i.w));
PV0i.x = R127i.x;
R126i.y = floatBitsToInt(-(intBitsToFloat(R9i.y)) + intBitsToFloat(PV1i.z));
PV0i.y = R126i.y;
PV0i.z = floatBitsToInt(-(intBitsToFloat(R8i.z)) + intBitsToFloat(PV1i.x));
R7i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PV1i.y)));
R124i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PS1i),-(intBitsToFloat(R1i.w))) + intBitsToFloat(PS1i)));
PS0i = R124i.y;
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R10i.y),intBitsToFloat(R2i.w),intBitsToFloat(R9i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R125i.y = tempi.x;
PS1i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].x), intBitsToFloat(R127i.w)));
// 4
backupReg0i = R126i.y;
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R10i.y)),intBitsToFloat(PV1i.x)) + intBitsToFloat(R127i.x)));
PV0i.x = R123i.x;
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS1i), intBitsToFloat(R6i.z)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R13i.z), intBitsToFloat(R13i.z)));
R127i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R2i.w)),intBitsToFloat(PV1i.x)) + intBitsToFloat(backupReg0i)));
// 5
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R7i.y)) + intBitsToFloat(R3i.y)));
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R7i.x)) + intBitsToFloat(R3i.x)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
R1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.z), intBitsToFloat(PV0i.z)));
// 6
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.y), intBitsToFloat(R7i.x)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),intBitsToFloat(R127i.w)) + intBitsToFloat(PV1i.z)));
PV0i.y = R123i.y;
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.y), intBitsToFloat(R5i.x)));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.y), intBitsToFloat(R7i.y)));
// 7
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.z),intBitsToFloat(PV0i.z)) + intBitsToFloat(R126i.w)));
PV1i.x = R123i.x;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.x),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.y)));
PV1i.z = R123i.z;
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(R5i.y)));
PV1i.w = R126i.w;
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.y));
PS1i = floatBitsToInt(tempResultf);
// 8
R5i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.w),intBitsToFloat(PV1i.w)) + intBitsToFloat(PV1i.z)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.y),intBitsToFloat(R127i.w)) + intBitsToFloat(R127i.x)));
PV0i.y = R123i.y;
R0i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.y),intBitsToFloat(PV1i.w)) + intBitsToFloat(PV1i.x)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(PS1i)));
// 9
R7i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.z),intBitsToFloat(R126i.w)) + intBitsToFloat(PV0i.y)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z), intBitsToFloat(PV0i.w)));
// 10
PV0i.y = floatBitsToInt(intBitsToFloat(PV1i.z) * intBitsToFloat(0x3ced9168));
PV0i.y = clampFI32(PV0i.y);
// 11
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(R10i.z)) + 1.0));
PV1i.y = R123i.y;
// 12
R0i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.w)),intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.y)));
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].x),intBitsToFloat(R7i.w)) + intBitsToFloat(R11i.x)));
PV0i.x = R123i.x;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].z),intBitsToFloat(R7i.w)) + intBitsToFloat(R11i.z)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].y),intBitsToFloat(R7i.w)) + intBitsToFloat(R11i.y)));
PV0i.w = R123i.w;
// 1
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R0i.x)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R0i.x)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R0i.x)));
// 2
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(R5i.w)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R12i.z)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(R8i.w)));
// 3
R123i.x = floatBitsToInt((intBitsToFloat(PV0i.w) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((intBitsToFloat(PV0i.x) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((intBitsToFloat(PV0i.y) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.z = R123i.z;
// 4
PV0i.y = floatBitsToInt(intBitsToFloat(R0i.z) + intBitsToFloat(PV1i.x));
PV0i.z = floatBitsToInt(intBitsToFloat(R7i.x) + intBitsToFloat(PV1i.y));
PV0i.w = floatBitsToInt(intBitsToFloat(R5i.x) + intBitsToFloat(PV1i.z));
// 5
R1i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R13i.z),intBitsToFloat(PV0i.w)) + intBitsToFloat(R2i.x)));
R1i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R13i.z),intBitsToFloat(PV0i.z)) + intBitsToFloat(R2i.y)));
R1i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R13i.z),intBitsToFloat(PV0i.y)) + intBitsToFloat(R2i.z)));
// export
passPixelColor0 = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w));
float luma = dot(passPixelColor0.rgb, vec3(0.2126, 0.7152, 0.0722));
#if (ENABLE_COLOR_FADE == 1)
float depth = texture(textureUnitPS5, passParameterSem0.xy).x;
float factor = smoothstep(0.0005, 0.00075, depth);
passPixelColor0.rgb = mix(passPixelColor0.rgb, vec3(luma), factor);
#else
passPixelColor0.rgb = vec3(luma);
#endif
}

View File

@ -0,0 +1,505 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader 4c324d20f5b6de3b
// Monochromia
// Link's and other human character's eyes
// original shader dumped using cemu 1.11.c, BotW 1.3.1
uniform ivec4 uf_remappedPS[9];
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf45c6000 res 1280x720x1 dim 1 tm: 4 format 041a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0xf494a800 res 1280x720x1 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: 1
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 6) uniform sampler2D textureUnitPS6;// Tex6 addr 0xf5054000 res 640x360x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 8) uniform sampler2DArray textureUnitPS8;// Tex8 addr 0xf5593000 res 640x360x2 dim 5 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x2) Sampler8 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 9) uniform sampler2D textureUnitPS9;// Tex9 addr 0xf575f800 res 640x360x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler9 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 11) uniform sampler2D textureUnitPS11;// Tex11 addr 0xf5977800 res 640x360x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler11 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 12) uniform sampler2D textureUnitPS12;// Tex12 addr 0xf4240800 res 1280x720x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler12 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 13) uniform sampler2D textureUnitPS13;// Tex13 addr 0xf528a800 res 640x360x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler13 ClampX/Y/Z: 2 2 2 border: 1
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 2) in vec4 passParameterSem2;
layout(location = 3) in vec4 passParameterSem4;
layout(location = 4) in vec4 passParameterSem6;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
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 R9i = ivec4(0);
ivec4 R10i = ivec4(0);
ivec4 R11i = ivec4(0);
ivec4 R12i = ivec4(0);
ivec4 R13i = 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(passParameterSem0);
R1i = floatBitsToInt(passParameterSem1);
R2i = floatBitsToInt(passParameterSem2);
R3i = floatBitsToInt(passParameterSem4);
R4i = floatBitsToInt(passParameterSem6);
R5i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R4i.zw)).xyzw);
R6i.w = floatBitsToInt(texture(textureUnitPS12, intBitsToFloat(R0i.xy)).x);
R7i.xyzw = floatBitsToInt(textureGather(textureUnitPS6, intBitsToFloat(R0i.xy)).xyzw);
R8i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R4i.zw)).xyzw);
// 0
R127i.x = floatBitsToInt((intBitsToFloat(R5i.x) * 2.0 + -(1.0)));
PV0i.x = R127i.x;
R127i.y = floatBitsToInt((intBitsToFloat(R5i.y) * 2.0 + -(1.0)));
PV0i.y = R127i.y;
R124i.z = floatBitsToInt((intBitsToFloat(R5i.z) * 2.0 + -(1.0)));
PV0i.z = R124i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.w)),intBitsToFloat(uf_remappedPS[0].w)) + 1.0));
PV0i.w = R123i.w;
R127i.z = 0x358637bd;
PS0i = R127i.z;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PV0i.w));
// 2
R124i.x = floatBitsToInt(floor(intBitsToFloat(R3i.y)));
PV0i.x = R124i.x;
R5i.y = floatBitsToInt(intBitsToFloat(R2i.x) * intBitsToFloat(0x3f4ccccd));
R5i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[0].x)), intBitsToFloat(PS1i)));
PV0i.z = R5i.z;
R125i.w = floatBitsToInt(floor(intBitsToFloat(R3i.x)));
PV0i.w = R125i.w;
R5i.w = floatBitsToInt(sqrt(intBitsToFloat(PV1i.x)));
PS0i = R5i.w;
// 3
PV1i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.z)), intBitsToFloat(uf_remappedPS[1].y)));
R125i.y = floatBitsToInt(intBitsToFloat(R3i.x) + -(intBitsToFloat(PV0i.w)));
R126i.z = floatBitsToInt(intBitsToFloat(uf_remappedPS[0].x) + intBitsToFloat(PV0i.z));
PV1i.z = R126i.z;
R124i.w = floatBitsToInt(intBitsToFloat(R3i.y) + -(intBitsToFloat(PV0i.x)));
R124i.y = floatBitsToInt(1.0 / intBitsToFloat(PS0i));
PS1i = R124i.y;
// 4
R9i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS1i)));
PV0i.x = R9i.x;
R6i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS1i)));
PV0i.y = R6i.y;
R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R7i.y)));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R7i.w)));
R126i.y = floatBitsToInt(1.0 / intBitsToFloat(PV1i.x));
PS0i = R126i.y;
// 5
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(R127i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(R127i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R5i.x = floatBitsToInt(intBitsToFloat(PS0i) * 0.25);
PS1i = R5i.x;
// 6
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R7i.x)));
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R7i.z)));
R126i.z = floatBitsToInt(max(intBitsToFloat(R125i.z), -(intBitsToFloat(R125i.z))));
PV0i.w = floatBitsToInt(min(intBitsToFloat(PS1i), 2.0));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 7
backupReg0i = R127i.w;
backupReg0i = R127i.w;
R126i.x = floatBitsToInt(intBitsToFloat(PV0i.w) * intBitsToFloat(0x40c00000));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.y), intBitsToFloat(PS0i)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.x), intBitsToFloat(PS0i)));
R127i.w = floatBitsToInt(max(intBitsToFloat(backupReg0i), -(intBitsToFloat(backupReg0i))));
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(uf_remappedPS[3].x)));
PS1i = R125i.x;
// 8
PV0i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[4].w)), intBitsToFloat(PV1i.y)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z), intBitsToFloat(PV1i.z)));
PV0i.z = floatBitsToInt(max(intBitsToFloat(R127i.x), -(intBitsToFloat(R127i.x))));
PV0i.w = floatBitsToInt(max(intBitsToFloat(R127i.y), -(intBitsToFloat(R127i.y))));
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.z), intBitsToFloat(PS1i)));
PS0i = R126i.w;
// 9
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(R125i.x)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(R126i.x)));
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R125i.x)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R126i.x)));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R125i.x)));
PS1i = R126i.z;
// 10
R7i.x = floatBitsToInt(intBitsToFloat(R0i.x) + intBitsToFloat(PV1i.y));
PV0i.y = floatBitsToInt(-(intBitsToFloat(R126i.w)) + intBitsToFloat(PV1i.x));
PV0i.z = floatBitsToInt(intBitsToFloat(PV1i.w) * intBitsToFloat(0x3e4ccccd));
R126i.w = floatBitsToInt(intBitsToFloat(R125i.w) + -(0.5));
R127i.y = floatBitsToInt(intBitsToFloat(R124i.x) + -(0.5));
PS0i = R127i.y;
// 11
R6i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), intBitsToFloat(R5i.z)));
R7i.y = floatBitsToInt(intBitsToFloat(R0i.y) + intBitsToFloat(PV0i.z));
PV1i.y = R7i.y;
PV1i.z = floatBitsToInt(-(intBitsToFloat(R125i.z)) + intBitsToFloat(PV0i.y));
PV1i.w = floatBitsToInt(-(intBitsToFloat(R126i.z)) + intBitsToFloat(PV0i.y));
R4i.z = floatBitsToInt(roundEven(0.0));
PS1i = R4i.z;
// 12
backupReg0i = R1i.z;
PV0i.x = floatBitsToInt(intBitsToFloat(R125i.z) + intBitsToFloat(PV1i.w));
PV0i.y = floatBitsToInt(intBitsToFloat(R126i.z) + intBitsToFloat(PV1i.z));
R1i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(PV1i.y)) + intBitsToFloat(R1i.w)));
R1i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R7i.x)) + intBitsToFloat(backupReg0i)));
R126i.z = floatBitsToInt((intBitsToFloat(R126i.y) * intBitsToFloat(0x3dcccccd) + 1.0));
PS0i = R126i.z;
// 13
R0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), intBitsToFloat(R5i.z)));
R9i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(R124i.y)));
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.y) + intBitsToFloat(R124i.w));
PV1i.z = clampFI32(PV1i.z);
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(R125i.y));
PV1i.w = clampFI32(PV1i.w);
R124i.w = floatBitsToInt((intBitsToFloat(R5i.w) * 4.0 + intBitsToFloat(0xc0400000)));
R124i.w = clampFI32(R124i.w);
PS1i = R124i.w;
// 14
PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(R127i.y));
R0i.y = floatBitsToInt(intBitsToFloat(R5i.x) * intBitsToFloat(0x40c00000));
R0i.z = R5i.x;
R0i.z = floatBitsToInt(intBitsToFloat(R0i.z) * 4.0);
R0i.z = clampFI32(R0i.z);
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(R126i.w));
R1i.y = floatBitsToInt(intBitsToFloat(R126i.z) * intBitsToFloat(0x42960000));
PS0i = R1i.y;
// 15
R4i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(PV0i.w)));
R4i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.w), intBitsToFloat(PV0i.x)));
R3i.z = floatBitsToInt(intBitsToFloat(R2i.y) * intBitsToFloat(0x3f4ccccd));
R0i.w = floatBitsToInt(intBitsToFloat(R124i.w) + -(0.5));
R0i.w = floatBitsToInt(intBitsToFloat(R0i.w) * 4.0);
R0i.w = clampFI32(R0i.w);
R3i.x = floatBitsToInt(intBitsToFloat(R2i.z) * intBitsToFloat(0x3f4ccccd));
PS1i = R3i.x;
R7i.y = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R7i.xy)).x);
R11i.xyz = floatBitsToInt(texture(textureUnitPS9, intBitsToFloat(R4i.xy)).xyz);
R3i.w = floatBitsToInt(texture(textureUnitPS13, intBitsToFloat(R4i.xy)).w);
R10i.xyz = floatBitsToInt(texture(textureUnitPS8, vec3(intBitsToFloat(R4i.x),intBitsToFloat(R4i.y),intBitsToFloat(R4i.z))).xyz);
R12i.xyz = floatBitsToInt(texture(textureUnitPS11, intBitsToFloat(R4i.xy)).xyz);
// 0
backupReg0i = R0i.x;
backupReg0i = R0i.x;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(R6i.x),intBitsToFloat(R5i.z),-0.0),vec4(intBitsToFloat(backupReg0i),intBitsToFloat(R6i.x),intBitsToFloat(R5i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),intBitsToFloat(R7i.y)) + intBitsToFloat(uf_remappedPS[0].x)));
PS0i = R122i.x;
// 1
PV1i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PS0i)), intBitsToFloat(R1i.w)));
PV1i.y = floatBitsToInt(-(intBitsToFloat(PS0i)));
PV1i.z = floatBitsToInt(intBitsToFloat(R11i.x) + intBitsToFloat(0xbecccccd));
PV1i.w = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PS0i)), intBitsToFloat(R1i.z)));
PS1i = floatBitsToInt(sqrt(intBitsToFloat(PV0i.x)));
// 2
R124i.x = floatBitsToInt(-(intBitsToFloat(R0i.x)) + intBitsToFloat(PV1i.x));
R127i.y = floatBitsToInt(-(intBitsToFloat(R6i.x)) + intBitsToFloat(PV1i.w));
R126i.z = floatBitsToInt(-(intBitsToFloat(R5i.z)) + intBitsToFloat(PV1i.y));
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.z) * intBitsToFloat(0x41200000));
PV0i.w = clampFI32(PV0i.w);
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PS1i));
// 3
backupReg0i = R6i.x;
backupReg1i = R5i.z;
R6i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.x), intBitsToFloat(PS0i)));
PV1i.x = R6i.x;
R7i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS0i)));
PV1i.y = R7i.y;
R5i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg1i), intBitsToFloat(PS0i)));
PV1i.z = R5i.z;
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R11i.y), intBitsToFloat(PV0i.w)));
PV1i.w = R124i.w;
R124i.z = floatBitsToInt(intBitsToFloat(R0i.y) * intBitsToFloat(0x3dcccccd));
R124i.z = clampFI32(R124i.z);
PS1i = R124i.z;
// 4
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.x),intBitsToFloat(R6i.y),intBitsToFloat(R9i.y),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R125i.x = floatBitsToInt(intBitsToFloat(PV1i.w) + -(1.0));
PS0i = R125i.x;
// 5
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.x) + 1.0);
PV1i.x = clampFI32(PV1i.x);
R125i.y = floatBitsToInt(intBitsToFloat(uf_remappedPS[5].y) + -(intBitsToFloat(R3i.z)));
R125i.z = floatBitsToInt(intBitsToFloat(uf_remappedPS[5].x) + -(intBitsToFloat(R5i.y)));
R126i.w = floatBitsToInt(intBitsToFloat(R2i.w) + intBitsToFloat(R124i.w));
R126i.w = clampFI32(R126i.w);
R126i.x = floatBitsToInt(intBitsToFloat(uf_remappedPS[5].z) + -(intBitsToFloat(R3i.x)));
PS1i = R126i.x;
// 6
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R6i.x),intBitsToFloat(R7i.y),intBitsToFloat(R5i.z),-0.0),vec4(intBitsToFloat(R124i.x),intBitsToFloat(R127i.y),intBitsToFloat(R126i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R124i.w = tempi.x;
PS0i = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + 1.0);
// 7
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.x)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R124i.x)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R7i.y)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.y)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R5i.z)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R126i.z)));
PV1i.z = R123i.z;
R1i.w = floatBitsToInt((intBitsToFloat(0x3f19999a) * intBitsToFloat(R124i.z) + intBitsToFloat(0x3ecccccd)));
tempResultf = log2(intBitsToFloat(PS0i));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1i = floatBitsToInt(tempResultf);
// 8
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R127i.y = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x3e4ccccd));
PS0i = R127i.y;
// 9
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.x),intBitsToFloat(R6i.y),intBitsToFloat(R9i.y),-0.0),vec4(intBitsToFloat(uf_remappedPS[6].x),intBitsToFloat(uf_remappedPS[6].y),intBitsToFloat(uf_remappedPS[6].z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
PS1i = floatBitsToInt(tempResultf);
// 10
backupReg0i = R127i.y;
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.w), intBitsToFloat(PS1i)));
R127i.y = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(0x3f4ccccd));
R127i.y = clampFI32(R127i.y);
PV0i.z = floatBitsToInt(max(-(intBitsToFloat(PV1i.x)), 0.0));
R124i.w = floatBitsToInt(intBitsToFloat(R0i.y) * intBitsToFloat(0x3d4ccccd));
R124i.w = clampFI32(R124i.w);
PS0i = floatBitsToInt(exp2(intBitsToFloat(backupReg0i)));
// 11
backupReg0i = R3i.z;
R0i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.z),intBitsToFloat(R126i.w)) + intBitsToFloat(R5i.y)));
PV1i.y = floatBitsToInt(min(intBitsToFloat(PV0i.z), 1.0));
R1i.z = floatBitsToInt(intBitsToFloat(PV0i.x) * intBitsToFloat(0x3c23d70a));
R1i.z = clampFI32(R1i.z);
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.w), intBitsToFloat(PS0i)));
R3i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.y),intBitsToFloat(R126i.w)) + intBitsToFloat(backupReg0i)));
PS1i = R3i.z;
// 12
R123i.x = floatBitsToInt((intBitsToFloat(PV1i.w) * intBitsToFloat(0x3e99999a) + intBitsToFloat(PV1i.y)));
PV0i.x = R123i.x;
R5i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.x),intBitsToFloat(R126i.w)) + intBitsToFloat(R3i.x)));
PV0i.z = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(0xbf400000));
R126i.w = floatBitsToInt(intBitsToFloat(R1i.w) * intBitsToFloat(0x3fe66666));
PV0i.w = R126i.w;
R3i.x = floatBitsToInt(intBitsToFloat(R127i.y) + -(1.0));
PS0i = R3i.x;
// 13
PV1i.x = floatBitsToInt(intBitsToFloat(R8i.w) * intBitsToFloat(0x437f0000));
R127i.y = floatBitsToInt(intBitsToFloat(PV0i.z) * intBitsToFloat(0x41800000));
R127i.y = clampFI32(R127i.y);
PV1i.y = R127i.y;
R4i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(PV0i.w)));
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(0xbecccccd));
R4i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(PV0i.w)));
PS1i = R4i.x;
// 14
backupReg0i = R2i.z;
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R1i.y)));
PV0i.x = clampFI32(PV0i.x);
PV0i.y = floatBitsToInt(intBitsToFloat(R2i.w) + -(intBitsToFloat(PV1i.y)));
PV0i.y = clampFI32(PV0i.y);
R2i.z = floatBitsToInt((intBitsToFloat(R8i.x) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R2i.z = clampFI32(R2i.z);
R2i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R126i.w)));
R126i.x = int(intBitsToFloat(PV1i.x));
PS0i = R126i.x;
// 15
backupReg0i = R8i.y;
backupReg1i = R8i.z;
PV1i.x = PS0i & 0x000000fc;
R8i.y = floatBitsToInt((intBitsToFloat(backupReg0i) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R8i.y = clampFI32(R8i.y);
R8i.z = floatBitsToInt(intBitsToFloat(R127i.y) + intBitsToFloat(PV0i.x));
R8i.z = clampFI32(R8i.z);
R8i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.x),intBitsToFloat(PV0i.y)) + 1.0));
R7i.z = floatBitsToInt((intBitsToFloat(backupReg1i) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R7i.z = clampFI32(R7i.z);
PS1i = R7i.z;
// 16
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R10i.x),intBitsToFloat(R10i.y),intBitsToFloat(R10i.z),-0.0),vec4(intBitsToFloat(0x3e99096c),intBitsToFloat(0x3f162b6b),intBitsToFloat(0x3dea4a8c),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
PS0i = floatBitsToInt(float(PV1i.x));
// 17
R123i.x = floatBitsToInt((intBitsToFloat(0x3f19999a) * intBitsToFloat(R124i.w) + intBitsToFloat(0x3ecccccd)));
PV1i.x = R123i.x;
PV1i.y = R126i.x & int(1);
PV1i.z = floatBitsToInt(intBitsToFloat(PS0i) * intBitsToFloat(0x3b820821));
PV1i.w = ((intBitsToFloat(PV0i.x) > 0.0)?int(0xFFFFFFFF):int(0x0));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PV0i.x));
// 18
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R11i.z), intBitsToFloat(R11i.z)));
R123i.y = ((PV1i.w == 0)?(0):(PS1i));
PV0i.y = R123i.y;
R6i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(PV1i.x)));
PS0i = floatBitsToInt(float(PV1i.y));
// 19
R8i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PV0i.y)));
R13i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS0i), intBitsToFloat(PV0i.x)));
// 0
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[6].x), intBitsToFloat(uf_remappedPS[7].w)));
PV0i.x = R126i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[6].y), intBitsToFloat(uf_remappedPS[7].w)));
PV0i.y = R127i.y;
// 1
R125i.x = floatBitsToInt((intBitsToFloat(PV0i.x) * intBitsToFloat(0xbf4ccccd) + intBitsToFloat(R6i.x)));
R125i.y = floatBitsToInt((intBitsToFloat(PV0i.y) * intBitsToFloat(0xbf4ccccd) + intBitsToFloat(R7i.y)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[6].z), intBitsToFloat(uf_remappedPS[7].w)));
// 2
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.x), intBitsToFloat(uf_remappedPS[8].x)));
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.y), intBitsToFloat(uf_remappedPS[8].z)));
R125i.z = floatBitsToInt((intBitsToFloat(PV1i.z) * intBitsToFloat(0xbf4ccccd) + intBitsToFloat(R5i.z)));
PV0i.z = R125i.z;
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(uf_remappedPS[8].y)));
PS0i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.z), intBitsToFloat(PV1i.z)));
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R125i.x),intBitsToFloat(R125i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(R125i.x),intBitsToFloat(R125i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.y),intBitsToFloat(R127i.y)) + intBitsToFloat(PS0i)));
PS1i = R122i.x;
// 4
backupReg0i = R126i.x;
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[7].w), intBitsToFloat(R124i.w)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[7].w), intBitsToFloat(R124i.x)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.x),intBitsToFloat(backupReg0i)) + intBitsToFloat(PS1i)));
PV0i.z = R123i.z;
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[7].w), intBitsToFloat(R124i.y)));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 5
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.x), intBitsToFloat(PS0i)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(PS0i)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), intBitsToFloat(PS0i)));
PV1i.w = floatBitsToInt(max(-(intBitsToFloat(PV0i.z)), 0.0));
R126i.y = floatBitsToInt((intBitsToFloat(R124i.x) * intBitsToFloat(0x3f4ccccd) + intBitsToFloat(0x3e4ccccd)));
PS1i = R126i.y;
// 6
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.x),intBitsToFloat(R6i.y),intBitsToFloat(R9i.y),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R125i.y = floatBitsToInt(min(intBitsToFloat(PV1i.w), 1.0));
PS0i = R125i.y;
// 7
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.x) + 1.0);
PV1i.x = clampFI32(PV1i.x);
PV1i.y = floatBitsToInt(intBitsToFloat(PS0i) * intBitsToFloat(0x40a00000));
PV1i.y = clampFI32(PV1i.y);
R124i.z = floatBitsToInt((intBitsToFloat(R124i.w) * intBitsToFloat(0x3f4ccccd) + intBitsToFloat(0x3e4ccccd)));
R125i.w = floatBitsToInt((intBitsToFloat(R124i.y) * intBitsToFloat(0x3f4ccccd) + intBitsToFloat(0x3e4ccccd)));
// 8
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.x),intBitsToFloat(PV1i.y)) + 1.0));
PV0i.x = R123i.x;
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(PV1i.x)));
// 9
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.w),intBitsToFloat(R125i.y)) + intBitsToFloat(0xbecccccd)));
PV1i.x = R123i.x;
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.x), intBitsToFloat(PV0i.x)));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.z), intBitsToFloat(PV0i.x)));
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.w), intBitsToFloat(PV0i.x)));
// 10
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.x) * intBitsToFloat(0x42960000));
PV0i.w = clampFI32(PV0i.w);
// 11
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), intBitsToFloat(PV0i.w)));
PV1i.z = R125i.z;
// 12
PV0i.y = floatBitsToInt(-(intBitsToFloat(PV1i.z)) + intBitsToFloat(R8i.w));
// 13
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(R8i.z)) + intBitsToFloat(R125i.z)));
PV1i.x = R123i.x;
// 14
backupReg0i = R0i.w;
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV1i.x)));
// 15
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R1i.w)));
// 16
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.w),intBitsToFloat(PV1i.z)) + intBitsToFloat(R124i.w)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.x),intBitsToFloat(PV1i.z)) + intBitsToFloat(R125i.y)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(PV1i.z)) + intBitsToFloat(R126i.z)));
PV0i.w = R123i.w;
// 17
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R8i.x)) + intBitsToFloat(PV0i.y)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.y),intBitsToFloat(R8i.x)) + intBitsToFloat(PV0i.z)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.x),intBitsToFloat(R8i.x)) + intBitsToFloat(PV0i.w)));
PV1i.w = R123i.w;
// 18
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(R8i.y)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R2i.z)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(R7i.z)));
// 19
R123i.x = floatBitsToInt((intBitsToFloat(PV0i.w) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((intBitsToFloat(PV0i.x) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((intBitsToFloat(PV0i.y) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.z = R123i.z;
// 20
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.z),intBitsToFloat(R125i.w)) + intBitsToFloat(PV1i.x)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.z),intBitsToFloat(R124i.z)) + intBitsToFloat(PV1i.y)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.z),intBitsToFloat(R126i.y)) + intBitsToFloat(PV1i.z)));
PV0i.w = R123i.w;
// 21
R13i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R11i.z),intBitsToFloat(PV0i.w)) + intBitsToFloat(R12i.x)));
R13i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R11i.z),intBitsToFloat(PV0i.z)) + intBitsToFloat(R12i.y)));
R13i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R11i.z),intBitsToFloat(PV0i.y)) + intBitsToFloat(R12i.z)));
// export
passPixelColor0 = vec4(intBitsToFloat(R13i.x), intBitsToFloat(R13i.y), intBitsToFloat(R13i.z), intBitsToFloat(R13i.w));
float luma = dot(passPixelColor0.rgb, vec3(0.2126, 0.7152, 0.0722));
passPixelColor0.rgb = vec3(luma);
}

View File

@ -0,0 +1,128 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader 53422d4f43914447
// Monochromia
// Sky
// original shader dumped using cemu 1.11.c, BotW 1.3.1
uniform ivec4 uf_remappedPS[5];
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0x3da26000 res 256x256x1 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: 1
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem6;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
vec4 R123f = vec4(0.0);
vec4 R126f = vec4(0.0);
vec4 R127f = vec4(0.0);
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = passParameterSem0;
R1f = passParameterSem6;
// 0
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,-0.0),vec4(R1f.x,R1f.y,R1f.z,0.0));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R126f.x = intBitsToFloat(uf_remappedPS[0].z) + -(intBitsToFloat(uf_remappedPS[0].w));
PS0f = R126f.x;
// 1
R2f.w = 1.0;
tempResultf = 1.0 / sqrt(PV0f.x);
PS1f = tempResultf;
// 2
PV0f.x = mul_nonIEEE(R1f.x, PS1f);
R127f.y = mul_nonIEEE(R1f.y, PS1f);
PV0f.y = R127f.y;
PV0f.z = mul_nonIEEE(R1f.z, PS1f);
// 3
tempf.x = dot(vec4(intBitsToFloat(uf_remappedPS[1].x),intBitsToFloat(uf_remappedPS[1].y),intBitsToFloat(uf_remappedPS[1].z),-0.0),vec4(PV0f.x,PV0f.y,PV0f.z,0.0));
tempf.x /= 2.0;
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
PS1f = PV0f.y;
PS1f /= 2.0;
// 4
R127f.x = PV1f.x + 0.5;
PV0f.x = R127f.x;
PV0f.y = R127f.y;
PV0f.y = clamp(PV0f.y, 0.0, 1.0);
R1f.z = PS1f + 0.5;
// 5
R123f.x = (PV0f.x * intBitsToFloat(0xbc996e30) + intBitsToFloat(0x3d981626));
PV1f.x = R123f.x;
PV1f.w = -(PV0f.x) + 1.0;
tempResultf = log2(PV0f.y);
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1f = tempResultf;
// 6
PV0f.x = mul_nonIEEE(PS1f, intBitsToFloat(uf_remappedPS[0].y));
R123f.z = (mul_nonIEEE(R127f.x,PV1f.x) + intBitsToFloat(0xbe593484));
PV0f.z = R123f.z;
PS0f = sqrt(PV1f.w);
// 7
PV1f.x = PS0f * intBitsToFloat(0x3f22f983);
R123f.y = (mul_nonIEEE(R127f.x,PV0f.z) + intBitsToFloat(0x3fc90da4));
PV1f.y = R123f.y;
PS1f = exp2(PV0f.x);
// 8
R1f.x = (mul_nonIEEE(PV1f.x,-(PV1f.y)) + 1.0);
R0f.w = (mul_nonIEEE(R126f.x,PS1f) + intBitsToFloat(uf_remappedPS[0].w));
R1f.xyzw = (texture(textureUnitPS0, R1f.xz).xyzw);
// 0
R126f.x = R1f.w + intBitsToFloat(uf_remappedPS[2].w);
R126f.x = clamp(R126f.x, 0.0, 1.0);
R127f.y = (mul_nonIEEE(R1f.z,intBitsToFloat(uf_remappedPS[3].x)) + -(intBitsToFloat(uf_remappedPS[2].z)));
R126f.z = mul_nonIEEE(R0f.x, R0f.w);
// 1
R123f.z = (mul_nonIEEE(R1f.y,intBitsToFloat(uf_remappedPS[3].x)) + -(intBitsToFloat(uf_remappedPS[2].y)));
PV1f.z = R123f.z;
R123f.w = (mul_nonIEEE(R1f.x,intBitsToFloat(uf_remappedPS[3].x)) + -(intBitsToFloat(uf_remappedPS[2].x)));
PV1f.w = R123f.w;
// 2
backupReg0f = R126f.x;
backupReg1f = R127f.y;
backupReg0f = R126f.x;
backupReg0f = R126f.x;
R126f.x = (mul_nonIEEE(PV1f.w,backupReg0f) + intBitsToFloat(uf_remappedPS[2].x));
PV0f.x = R126f.x;
R127f.y = (mul_nonIEEE(backupReg1f,backupReg0f) + intBitsToFloat(uf_remappedPS[2].z));
PV0f.y = R127f.y;
R127f.z = (mul_nonIEEE(PV1f.z,backupReg0f) + intBitsToFloat(uf_remappedPS[2].y));
PV0f.z = R127f.z;
// 3
PV1f.x = -(PV0f.z) + intBitsToFloat(uf_remappedPS[4].y);
PV1f.y = -(PV0f.x) + intBitsToFloat(uf_remappedPS[4].x);
PV1f.w = -(PV0f.y) + intBitsToFloat(uf_remappedPS[4].z);
// 4
R2f.x = (mul_nonIEEE(PV1f.y,R126f.z) + R126f.x);
R2f.y = (mul_nonIEEE(PV1f.x,R126f.z) + R127f.z);
R2f.z = (mul_nonIEEE(PV1f.w,R126f.z) + R127f.y);
// export
passPixelColor0 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
float luma = dot(passPixelColor0.rgb, vec3(0.2126, 0.7152, 0.0722));
passPixelColor0.rgb = vec3(luma);
}

View File

@ -0,0 +1,592 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader 81bbc347eb4b6dbc
// Monochromia
// Plants - normal weather
// original shader dumped using cemu 1.11.c, BotW 1.3.1
#define ENABLE_COLOR_FADE 0 // set this to 1 to enable, 0 to disable the effect
uniform ivec4 uf_remappedPS[10];
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf45c6000 res 1280x720x1 dim 1 tm: 4 format 041a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0xf494a800 res 1280x720x1 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: 1
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 6) uniform sampler2D textureUnitPS6;// Tex6 addr 0xf5054000 res 640x360x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 7) uniform sampler2D textureUnitPS7;// Tex7 addr 0xf5846000 res 640x360x1 dim 1 tm: 4 format 0001 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler7 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 8) uniform samplerCubeArray textureUnitPS8;// Tex8 addr 0x3db66800 res 64x64x1 dim 3 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x4) sliceView: 0x0 (num 0x6) Sampler8 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 10) uniform sampler2DArray textureUnitPS10;// Tex10 addr 0xf5593000 res 640x360x2 dim 5 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x2) Sampler10 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 11) uniform sampler2D textureUnitPS11;// Tex11 addr 0xf575f800 res 640x360x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler11 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 13) uniform sampler2D textureUnitPS13;// Tex13 addr 0xf5977800 res 640x360x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler13 ClampX/Y/Z: 2 2 2 border: 1
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem4;
layout(location = 2) in vec4 passParameterSem6;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
void redcCUBE(vec4 src0, vec4 src1, out vec3 stm, out int faceId)
{
// stm -> x .. s, y .. t, z .. MajorAxis*2.0
vec3 inputCoord = normalize(vec3(src1.y, src1.x, src0.x));
float rx = inputCoord.x;
float ry = inputCoord.y;
float rz = inputCoord.z;
if( abs(rx) > abs(ry) && abs(rx) > abs(rz) )
{
stm.z = rx*2.0;
stm.xy = vec2(ry,rz);
if( rx >= 0.0 )
{
faceId = 0;
}
else
{
faceId = 1;
}
}
else if( abs(ry) > abs(rx) && abs(ry) > abs(rz) )
{
stm.z = ry*2.0;
stm.xy = vec2(rx,rz);
if( ry >= 0.0 )
{
faceId = 2;
}
else
{
faceId = 3;
}
}
else //if( abs(rz) > abs(ry) && abs(rz) > abs(rx) )
{
stm.z = rz*2.0;
stm.xy = vec2(rx,ry);
if( rz >= 0.0 )
{
faceId = 4;
}
else
{
faceId = 5;
}
}
}
vec3 redcCUBEReverse(vec2 st, int faceId)
{
st.yx = st.xy;
vec3 v;
float majorAxis = 1.0;
if( faceId == 0 )
{
v.yz = (st-vec2(1.5))*(majorAxis*2.0);
v.x = 1.0;
}
else if( faceId == 1 )
{
v.yz = (st-vec2(1.5))*(majorAxis*2.0);
v.x = -1.0;
}
else if( faceId == 2 )
{
v.xz = (st-vec2(1.5))*(majorAxis*2.0);
v.y = 1.0;
}
else if( faceId == 3 )
{
v.xz = (st-vec2(1.5))*(majorAxis*2.0);
v.y = -1.0;
}
else if( faceId == 4 )
{
v.xy = (st-vec2(1.5))*(majorAxis*2.0);
v.z = 1.0;
}
else
{
v.xy = (st-vec2(1.5))*(majorAxis*2.0);
v.z = -1.0;
}
return v;
}
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 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 R9i = ivec4(0);
ivec4 R10i = 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;
float cubeMapArrayIndex8 = 0.0;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem4);
R2i = floatBitsToInt(passParameterSem6);
R3i.w = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R0i.xy)).x);
R7i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R2i.zw)).xyzw);
R4i.xyzw = floatBitsToInt(textureGather(textureUnitPS6, intBitsToFloat(R0i.xy)).xyzw);
R5i.xyzw = floatBitsToInt(textureGather(textureUnitPS7, intBitsToFloat(R0i.xy)).xyzw);
R9i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R2i.zw)).xyzw);
// 0
R127i.x = floatBitsToInt(-(intBitsToFloat(R3i.w)) + intBitsToFloat(R4i.y));
R127i.y = floatBitsToInt(-(intBitsToFloat(R3i.w)) + intBitsToFloat(R4i.w));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.w),intBitsToFloat(uf_remappedPS[0].x)) + intBitsToFloat(uf_remappedPS[1].x)));
PV0i.z = R123i.z;
R124i.w = floatBitsToInt((intBitsToFloat(R7i.x) * 2.0 + -(1.0)));
R2i.y = floatBitsToInt((intBitsToFloat(R7i.y) * 2.0 + -(1.0)));
PS0i = R2i.y;
// 1
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(PV0i.z))));
PV1i.x = R125i.x;
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), -(intBitsToFloat(PV0i.z))));
PV1i.y = R124i.y;
R127i.z = floatBitsToInt(-(intBitsToFloat(PV0i.z)));
PV1i.z = R127i.z;
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(uf_remappedPS[2].y)));
R124i.z = floatBitsToInt((intBitsToFloat(R7i.z) * 2.0 + -(1.0)));
PS1i = R124i.z;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R126i.y = floatBitsToInt(1.0 / intBitsToFloat(PV1i.w));
PS0i = R126i.y;
// 3
R126i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.x),intBitsToFloat(R7i.y),intBitsToFloat(R7i.z),-0.0),vec4(intBitsToFloat(0x3eaaaaab),intBitsToFloat(0x3eaaaaab),intBitsToFloat(0x3eaaaaab),0.0)));
PV1i.x = R126i.x;
PV1i.y = R126i.x;
PV1i.z = R126i.x;
PV1i.w = R126i.x;
PS1i = floatBitsToInt(sqrt(intBitsToFloat(PV0i.x)));
// 4
R124i.x = floatBitsToInt(-(intBitsToFloat(R3i.w)) + intBitsToFloat(R4i.x));
R125i.y = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + intBitsToFloat(R5i.y));
R125i.z = floatBitsToInt(-(intBitsToFloat(R3i.w)) + intBitsToFloat(R4i.z));
R127i.w = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + intBitsToFloat(R5i.w));
R126i.w = floatBitsToInt(1.0 / intBitsToFloat(PS1i));
PS0i = R126i.w;
// 5
backupReg0i = R127i.x;
backupReg0i = R127i.x;
backupReg1i = R126i.x;
R127i.x = floatBitsToInt(max(intBitsToFloat(R127i.y), -(intBitsToFloat(R127i.y))));
R127i.y = floatBitsToInt(-(intBitsToFloat(R126i.x)) + intBitsToFloat(R5i.x));
R126i.z = floatBitsToInt(max(intBitsToFloat(backupReg0i), -(intBitsToFloat(backupReg0i))));
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), intBitsToFloat(R126i.y)));
R126i.x = floatBitsToInt(-(intBitsToFloat(backupReg1i)) + intBitsToFloat(R5i.z));
PS1i = R126i.x;
// 6
backupReg0i = R125i.x;
backupReg1i = R127i.z;
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R126i.w)));
PV0i.y = floatBitsToInt(max(intBitsToFloat(R125i.y), -(intBitsToFloat(R125i.y))));
PV0i.y = floatBitsToInt(intBitsToFloat(PV0i.y) * 4.0);
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.y), intBitsToFloat(R126i.w)));
PV0i.w = floatBitsToInt(max(intBitsToFloat(R127i.w), -(intBitsToFloat(R127i.w))));
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * 4.0);
R5i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg1i), intBitsToFloat(R126i.w)));
PS0i = R5i.z;
// 7
backupReg0i = R125i.z;
backupReg0i = R125i.z;
backupReg1i = R127i.x;
backupReg2i = R127i.y;
backupReg2i = R127i.y;
R127i.x = floatBitsToInt(max(intBitsToFloat(R124i.x), -(intBitsToFloat(R124i.x))));
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),intBitsToFloat(R125i.w)) + intBitsToFloat(PV0i.y)));
R125i.z = floatBitsToInt(max(intBitsToFloat(backupReg0i), -(intBitsToFloat(backupReg0i))));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg1i),intBitsToFloat(R125i.w)) + intBitsToFloat(PV0i.w)));
R126i.z = floatBitsToInt(max(intBitsToFloat(backupReg2i), -(intBitsToFloat(backupReg2i))));
R126i.z = floatBitsToInt(intBitsToFloat(R126i.z) * 4.0);
PS1i = R126i.z;
// 8
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R124i.w),intBitsToFloat(R2i.y),intBitsToFloat(R124i.z),-0.0),vec4(intBitsToFloat(R124i.w),intBitsToFloat(R2i.y),intBitsToFloat(R124i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
PS0i = floatBitsToInt(max(intBitsToFloat(R126i.x), -(intBitsToFloat(R126i.x))));
PS0i = floatBitsToInt(intBitsToFloat(PS0i) * 4.0);
// 9
backupReg0i = R127i.x;
backupReg1i = R126i.z;
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.z),intBitsToFloat(R125i.w)) + intBitsToFloat(PS0i)));
PV1i.x = R127i.x;
PV1i.y = floatBitsToInt(-(intBitsToFloat(R127i.y)) + intBitsToFloat(R127i.w));
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(R125i.w)) + intBitsToFloat(backupReg1i)));
PV1i.z = R126i.z;
R127i.w = floatBitsToInt(floor(intBitsToFloat(R1i.x)));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
PS1i = floatBitsToInt(tempResultf);
// 10
R6i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.w), intBitsToFloat(PS1i)));
R4i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(PS1i)));
R4i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(PS1i)));
PV0i.w = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + intBitsToFloat(PV1i.y));
PS0i = floatBitsToInt(-(intBitsToFloat(PV1i.z)) + intBitsToFloat(PV1i.y));
// 11
backupReg0i = R127i.x;
backupReg1i = R126i.z;
backupReg2i = R127i.w;
R127i.x = floatBitsToInt(floor(intBitsToFloat(R1i.y)));
PV1i.x = R127i.x;
R127i.y = floatBitsToInt(intBitsToFloat(R1i.x) + -(intBitsToFloat(R127i.w)));
R126i.z = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(PS0i));
R127i.w = floatBitsToInt(intBitsToFloat(backupReg1i) + intBitsToFloat(PV0i.w));
R124i.w = floatBitsToInt(intBitsToFloat(backupReg2i) + -(0.5));
PS1i = R124i.w;
// 12
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R6i.x),intBitsToFloat(R4i.y),intBitsToFloat(R4i.z),-0.0),vec4(intBitsToFloat(R125i.x),intBitsToFloat(R127i.z),intBitsToFloat(R5i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R125i.w = tempi.x;
PS0i = floatBitsToInt(intBitsToFloat(R1i.y) + -(intBitsToFloat(PV1i.x)));
// 13
PV1i.x = floatBitsToInt(intBitsToFloat(R126i.z) + intBitsToFloat(PS0i));
PV1i.x = clampFI32(PV1i.x);
PV1i.y = floatBitsToInt(intBitsToFloat(R127i.w) + intBitsToFloat(R127i.y));
PV1i.y = clampFI32(PV1i.y);
PV1i.z = floatBitsToInt(intBitsToFloat(R127i.x) + -(0.5));
PV1i.w = R6i.x;
PV1i.w = floatBitsToInt(intBitsToFloat(PV1i.w) * 2.0);
PS1i = R4i.y;
PS1i = floatBitsToInt(intBitsToFloat(PS1i) * 2.0);
// 14
PV0i.x = R4i.z;
PV0i.x = floatBitsToInt(intBitsToFloat(PV0i.x) * 2.0);
PV0i.y = floatBitsToInt(intBitsToFloat(PV1i.y) + intBitsToFloat(R124i.w));
R126i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R125i.w)),intBitsToFloat(PV1i.w)) + intBitsToFloat(R125i.x)));
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(PV1i.z));
R127i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R125i.w)),intBitsToFloat(PS1i)) + intBitsToFloat(R127i.z)));
PS0i = R127i.y;
// 15
R3i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(PV0i.y)));
R3i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), intBitsToFloat(PV0i.w)));
R124i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R125i.w)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R5i.z)));
PV1i.z = R124i.z;
R3i.w = floatBitsToInt(roundEven(0.0));
R2i.w = floatBitsToInt((-(intBitsToFloat(R7i.w)) * intBitsToFloat(0x40400000) + intBitsToFloat(0x40400000)));
PS1i = R2i.w;
// 16
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[3].x),intBitsToFloat(uf_remappedPS[3].y),intBitsToFloat(uf_remappedPS[3].z),-0.0),vec4(intBitsToFloat(R126i.z),intBitsToFloat(R127i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R125i.z = floatBitsToInt(intBitsToFloat(R9i.w) * intBitsToFloat(0x437f0000));
PS0i = R125i.z;
// 17
R1i.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[4].x),intBitsToFloat(uf_remappedPS[4].y),intBitsToFloat(uf_remappedPS[4].z),-0.0),vec4(intBitsToFloat(R126i.z),intBitsToFloat(R127i.y),intBitsToFloat(R124i.z),0.0)));
PV1i.x = R1i.x;
PV1i.y = R1i.x;
PV1i.z = R1i.x;
PV1i.w = R1i.x;
R1i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)));
PS1i = R1i.z;
// 18
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[5].x),intBitsToFloat(uf_remappedPS[5].y),intBitsToFloat(uf_remappedPS[5].z),-0.0),vec4(intBitsToFloat(R126i.z),intBitsToFloat(R127i.y),intBitsToFloat(R124i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R1i.y = tempi.x;
R6i.y = int(intBitsToFloat(R125i.z));
PS0i = R6i.y;
// 19
redcCUBE(vec4(intBitsToFloat(R1i.z),intBitsToFloat(R1i.z),intBitsToFloat(R1i.x),intBitsToFloat(PV0i.x)),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(R1i.x),intBitsToFloat(R1i.z),intBitsToFloat(R1i.z)),cubeMapSTM,cubeMapFaceId);
R126i.x = floatBitsToInt(cubeMapSTM.x);
R126i.y = floatBitsToInt(cubeMapSTM.y);
R126i.z = floatBitsToInt(cubeMapSTM.z);
R126i.w = cubeMapFaceId;
PV1i.x = R126i.x;
PV1i.y = R126i.y;
PV1i.z = R126i.z;
PV1i.w = R126i.w;
R1i.x = floatBitsToInt(intBitsToFloat(R125i.x) + intBitsToFloat(uf_remappedPS[6].x));
PS1i = R1i.x;
// 20
R5i.x = floatBitsToInt(intBitsToFloat(R5i.z) + intBitsToFloat(uf_remappedPS[6].z));
R1i.y = floatBitsToInt(intBitsToFloat(R127i.z) + intBitsToFloat(uf_remappedPS[6].y));
R2i.z = PV1i.w;
R5i.w = floatBitsToInt(max(-(intBitsToFloat(R125i.w)), 0.0));
PS0i = floatBitsToInt(1.0 / abs(intBitsToFloat(PV1i.z)));
// 21
R0i.x = floatBitsToInt(-(intBitsToFloat(R7i.w)) + 1.0);
R5i.y = 0;
R5i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.x),intBitsToFloat(PS0i)) + 1.5));
R1i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.y),intBitsToFloat(PS0i)) + 1.5));
R4i.x = R6i.y & 0x000000fc;
PS1i = R4i.x;
// 0
R2i.x = R1i.w;
R2i.y = R5i.z;
R5i.z = floatBitsToInt(min(intBitsToFloat(R5i.w), 1.0));
R1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[6].x), intBitsToFloat(uf_remappedPS[7].w)));
R0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[6].y), intBitsToFloat(uf_remappedPS[7].w)));
PS0i = R0i.y;
R10i.xyz = floatBitsToInt(texture(textureUnitPS11, intBitsToFloat(R3i.xy)).xyz);
R8i.xyz = floatBitsToInt(texture(textureUnitPS10, vec3(intBitsToFloat(R3i.x),intBitsToFloat(R3i.y),intBitsToFloat(R3i.w))).xyz);
R2i.xyz = floatBitsToInt(textureLod(textureUnitPS8, vec4(redcCUBEReverse(intBitsToFloat(R2i.xy),R2i.z),cubeMapArrayIndex8),intBitsToFloat(R2i.w)).xyz);
R3i.xyz = floatBitsToInt(texture(textureUnitPS13, intBitsToFloat(R3i.xy)).xyz);
// 0
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R1i.x),intBitsToFloat(R1i.y),intBitsToFloat(R5i.x),-0.0),vec4(intBitsToFloat(R1i.x),intBitsToFloat(R1i.y),intBitsToFloat(R5i.x),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[6].z), intBitsToFloat(uf_remappedPS[7].w)));
PS0i = R127i.z;
// 1
R125i.x = floatBitsToInt(-(intBitsToFloat(R5i.z)) + 1.0);
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R7i.w)),intBitsToFloat(R0i.x)) + intBitsToFloat(R0i.x)));
PV1i.y = R123i.y;
R125i.z = R6i.y & 0x00000002;
R126i.w = 0;
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
PS1i = floatBitsToInt(tempResultf);
// 2
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(PS1i)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.x), intBitsToFloat(PS1i)));
PV0i.z = floatBitsToInt(intBitsToFloat(PV1i.y) + intBitsToFloat(0x3c23d70a));
PV0i.z = clampFI32(PV0i.z);
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), intBitsToFloat(PS1i)));
PS0i = floatBitsToInt(float(R4i.x));
// 3
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(uf_remappedPS[7].w)));
PV1i.x = R126i.x;
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(uf_remappedPS[7].w)));
PV1i.y = R126i.y;
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(uf_remappedPS[7].w)));
PV1i.z = R126i.z;
R127i.w = floatBitsToInt(intBitsToFloat(PS0i) * intBitsToFloat(0x3b820821));
R1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(PV0i.z)));
PS1i = R1i.x;
// 4
backupReg0i = R0i.y;
backupReg1i = R0i.x;
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R1i.w)),-(intBitsToFloat(backupReg0i)),-(intBitsToFloat(R127i.z)),-0.0),vec4(-(intBitsToFloat(PV1i.x)),-(intBitsToFloat(PV1i.y)),-(intBitsToFloat(PV1i.z)),0.0)));
tempi.x = clampFI32(tempi.x);
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R124i.z = tempi.x;
R127i.y = floatBitsToInt((intBitsToFloat(backupReg1i) * 0.5 + 0.5));
PS0i = R127i.y;
// 5
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R6i.x),intBitsToFloat(R4i.y),intBitsToFloat(R4i.z),intBitsToFloat(R4i.z)),vec4(-(intBitsToFloat(R126i.x)),-(intBitsToFloat(R126i.y)),-(intBitsToFloat(R126i.z)),-(intBitsToFloat(R5i.y)))));
tempi.x = clampFI32(tempi.x);
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R126i.y = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + 1.0);
PS1i = R126i.y;
// 6
backupReg0i = R0i.y;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R6i.x),intBitsToFloat(R4i.y),intBitsToFloat(R4i.z),intBitsToFloat(R4i.z)),vec4(-(intBitsToFloat(R1i.w)),-(intBitsToFloat(backupReg0i)),-(intBitsToFloat(R127i.z)),-(intBitsToFloat(R126i.w)))));
tempi.x = clampFI32(tempi.x);
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R124i.w = tempi.x;
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(PV1i.x)));
PS0i = R126i.w;
// 7
backupReg0i = R125i.x;
backupReg0i = R125i.x;
backupReg1i = R127i.y;
backupReg1i = R127i.y;
R125i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R5i.z)),intBitsToFloat(backupReg0i)) + intBitsToFloat(backupReg0i)));
PV1i.x = R125i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R10i.x), intBitsToFloat(PV0i.x)));
R4i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg1i), intBitsToFloat(backupReg1i)));
R4i.z = floatBitsToInt(intBitsToFloat(R4i.z) / 2.0);
R125i.w = floatBitsToInt((intBitsToFloat(R127i.w) * 0.25 + 0.25));
PV1i.w = R125i.w;
R127i.x = floatBitsToInt(float(R125i.z));
R127i.x = floatBitsToInt(intBitsToFloat(R127i.x) / 2.0);
PS1i = R127i.x;
// 8
R126i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R124i.z)),intBitsToFloat(R126i.y)) + intBitsToFloat(R126i.y)));
R126i.y = floatBitsToInt((-(intBitsToFloat(R7i.w)) * intBitsToFloat(0x40400000) + 4.0));
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R126i.w)) + -(intBitsToFloat(R126i.w))));
PV0i.z = R127i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R5i.z)),intBitsToFloat(PV1i.x)) + intBitsToFloat(PV1i.x)));
PV0i.w = R123i.w;
R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.y),-(intBitsToFloat(PV1i.w))) + intBitsToFloat(R10i.y)));
PS0i = R125i.z;
// 9
PV1i.x = floatBitsToInt(intBitsToFloat(R127i.x) * intBitsToFloat(0x3e19999a));
R124i.y = floatBitsToInt((intBitsToFloat(R10i.y) * 0.5 + 0.5));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.x), intBitsToFloat(PV0i.w)));
PV1i.w = floatBitsToInt(-(intBitsToFloat(R127i.y)) + 1.0);
R125i.y = floatBitsToInt(intBitsToFloat(PV0i.z) + 1.0);
PS1i = R125i.y;
// 10
backupReg0i = R127i.y;
backupReg1i = R5i.z;
backupReg1i = R5i.z;
R123i.x = floatBitsToInt((-(intBitsToFloat(R127i.w)) * intBitsToFloat(0x3d23d70a) + intBitsToFloat(0x3d23d70a)));
PV0i.x = R123i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R10i.x), intBitsToFloat(uf_remappedPS[8].x)));
R5i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.w),intBitsToFloat(PV1i.x)) + intBitsToFloat(backupReg0i)));
R126i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg1i),-(intBitsToFloat(R4i.z))) + intBitsToFloat(backupReg1i)));
R125i.x = floatBitsToInt(1.0 / intBitsToFloat(R126i.y));
PS0i = R125i.x;
// 11
backupReg0i = R125i.y;
backupReg0i = R125i.y;
R124i.x = floatBitsToInt(intBitsToFloat(R125i.w) + intBitsToFloat(R125i.z));
R125i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(backupReg0i)) + intBitsToFloat(backupReg0i)));
R127i.z = floatBitsToInt(intBitsToFloat(R124i.w) + intBitsToFloat(R124i.y));
R127i.z = clampFI32(R127i.z);
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R124i.z)),intBitsToFloat(R126i.x)) + intBitsToFloat(R126i.x)));
PV1i.w = R123i.w;
R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R9i.x),intBitsToFloat(R127i.w)) + intBitsToFloat(PV0i.x)));
PS1i = R125i.z;
// 12
backupReg0i = R126i.x;
backupReg1i = R126i.z;
R126i.x = floatBitsToInt(intBitsToFloat(R4i.z) + intBitsToFloat(R126i.w));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.w),-(intBitsToFloat(R4i.z))) + intBitsToFloat(R124i.w)));
PV0i.y = R123i.y;
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV1i.w)));
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg1i), intBitsToFloat(R125i.x)));
R125i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),-(intBitsToFloat(R127i.x))) + intBitsToFloat(R127i.y)));
PS0i = R125i.x;
// 13
backupReg0i = R127i.x;
backupReg1i = R127i.z;
backupReg2i = R125i.y;
R127i.x = floatBitsToInt(intBitsToFloat(R4i.z) + intBitsToFloat(PV0i.y));
R125i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.x),-(intBitsToFloat(backupReg0i))) + intBitsToFloat(R124i.x)));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[7].w), intBitsToFloat(uf_remappedPS[7].w)));
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.z), intBitsToFloat(backupReg1i)));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(backupReg2i));
// 14
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.z),-(intBitsToFloat(R126i.w))) + intBitsToFloat(R125i.z)));
PV0i.x = R123i.x;
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.w), intBitsToFloat(R125i.x)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.z),-(intBitsToFloat(R126i.z))) + intBitsToFloat(R125i.z)));
PV0i.z = R123i.z;
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(PS1i)));
R127i.y = floatBitsToInt(1.0 / intBitsToFloat(R126i.x));
PS0i = R127i.y;
// 15
backupReg0i = R125i.y;
backupReg1i = R126i.w;
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(R127i.z)));
R125i.y = floatBitsToInt(intBitsToFloat(R126i.z) + intBitsToFloat(PV0i.z));
R126i.z = floatBitsToInt(intBitsToFloat(backupReg0i) * intBitsToFloat(0x3f400000));
R126i.w = floatBitsToInt(intBitsToFloat(backupReg1i) + intBitsToFloat(PV0i.x));
R127i.z = floatBitsToInt(1.0 / intBitsToFloat(R127i.x));
PS1i = R127i.z;
// 16
backupReg0i = R125i.w;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].x),intBitsToFloat(R125i.w)) + intBitsToFloat(R8i.x)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].y),intBitsToFloat(R125i.w)) + intBitsToFloat(R8i.y)));
PV0i.y = R123i.y;
PV0i.z = floatBitsToInt(0.25 * intBitsToFloat(R127i.y));
R125i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].z),intBitsToFloat(backupReg0i)) + intBitsToFloat(R8i.z)));
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.y), intBitsToFloat(PV1i.x)));
PS0i = R125i.z;
// 17
backupReg0i = R126i.z;
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(PV0i.z)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(R124i.w)));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R126i.w)));
R126i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.w)),intBitsToFloat(PV0i.x)) + intBitsToFloat(PV0i.x)));
R127i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.w)),intBitsToFloat(PV0i.y)) + intBitsToFloat(PV0i.y)));
PS1i = R127i.z;
// 18
R123i.x = floatBitsToInt((intBitsToFloat(R9i.x) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R123i.x = clampFI32(R123i.x);
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.w)),intBitsToFloat(R125i.w)) + intBitsToFloat(R125i.w)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((intBitsToFloat(R9i.z) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R123i.z = clampFI32(R123i.z);
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((intBitsToFloat(R9i.y) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R123i.w = clampFI32(R123i.w);
PV0i.w = R123i.w;
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), intBitsToFloat(PV1i.y)));
PS0i = R126i.x;
// 19
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PV0i.w)));
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(PV0i.x)));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].x), intBitsToFloat(R127i.x)));
R9i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(PV0i.z)));
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].y), intBitsToFloat(R127i.x)));
PS1i = R126i.w;
// 20
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R126i.z)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(R126i.z)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].z), intBitsToFloat(R127i.x)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R126i.z)));
R9i.x = R6i.y & int(1);
PS0i = R9i.x;
// 21
R2i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.w),intBitsToFloat(R126i.x)) + intBitsToFloat(PV0i.w)));
R2i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R126i.x)) + intBitsToFloat(PV0i.x)));
R2i.z = floatBitsToInt((intBitsToFloat(R125i.y) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
R7i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R126i.x)) + intBitsToFloat(PV0i.y)));
R6i.y = floatBitsToInt((intBitsToFloat(R125i.x) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PS1i = R6i.y;
// 0
R123i.x = floatBitsToInt((intBitsToFloat(R9i.w) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV0i.x = R123i.x;
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R10i.z), intBitsToFloat(R10i.z)));
PV0i.z = floatBitsToInt(intBitsToFloat(R2i.x) + intBitsToFloat(R6i.y));
PV0i.w = floatBitsToInt(intBitsToFloat(R2i.y) + intBitsToFloat(R2i.z));
PS0i = floatBitsToInt(float(R9i.x));
// 1
R7i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(PV0i.w)) + intBitsToFloat(R3i.x)));
PV1i.y = floatBitsToInt(intBitsToFloat(R7i.w) + intBitsToFloat(PV0i.x));
R7i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS0i), intBitsToFloat(PV0i.y)));
R7i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(PV0i.z)) + intBitsToFloat(R3i.y)));
PS1i = R7i.y;
// 2
R7i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(PV1i.y)) + intBitsToFloat(R3i.z)));
// export
passPixelColor0 = vec4(intBitsToFloat(R7i.x), intBitsToFloat(R7i.y), intBitsToFloat(R7i.z), intBitsToFloat(R7i.w));
float luma = dot(passPixelColor0.rgb, vec3(0.2126, 0.7152, 0.0722));
#if (ENABLE_COLOR_FADE == 1)
float depth = texture(textureUnitPS4, passParameterSem0.xy).x;
float factor = smoothstep(0.0005, 0.00075, depth);
passPixelColor0.rgb = mix(passPixelColor0.rgb, vec3(luma), factor);
#else
passPixelColor0.rgb = vec3(luma);
#endif
}

View File

@ -0,0 +1,778 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader 8daf3642d5942233
// Monochromia
// Link's equipment
// original shader dumped using cemu 1.11.c, BotW 1.3.1
uniform ivec4 uf_remappedPS[9];
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf45c6000 res 1280x720x1 dim 1 tm: 4 format 041a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0xf494a800 res 1280x720x1 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: 1
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 6) uniform sampler2D textureUnitPS6;// Tex6 addr 0xf5054000 res 640x360x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 8) uniform sampler2DArray textureUnitPS8;// Tex8 addr 0xf5593000 res 640x360x2 dim 5 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x2) Sampler8 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 9) uniform sampler2D textureUnitPS9;// Tex9 addr 0xf575f800 res 640x360x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler9 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 11) uniform sampler2D textureUnitPS11;// Tex11 addr 0xf5977800 res 640x360x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler11 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 12) uniform sampler2D textureUnitPS12;// Tex12 addr 0xf4240800 res 1280x720x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler12 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 13) uniform sampler2D textureUnitPS13;// Tex13 addr 0xf528a800 res 640x360x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler13 ClampX/Y/Z: 2 2 2 border: 1
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 2) in vec4 passParameterSem2;
layout(location = 3) in vec4 passParameterSem4;
layout(location = 4) in vec4 passParameterSem6;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
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 R9i = ivec4(0);
ivec4 R10i = ivec4(0);
ivec4 R11i = ivec4(0);
ivec4 R12i = ivec4(0);
ivec4 R13i = ivec4(0);
ivec4 R14i = ivec4(0);
ivec4 R15i = ivec4(0);
ivec4 R16i = ivec4(0);
ivec4 R17i = ivec4(0);
ivec4 R18i = ivec4(0);
ivec4 R19i = ivec4(0);
ivec4 R20i = ivec4(0);
ivec4 R21i = ivec4(0);
ivec4 R22i = ivec4(0);
ivec4 R23i = ivec4(0);
ivec4 R24i = 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(passParameterSem0);
R1i = floatBitsToInt(passParameterSem1);
R2i = floatBitsToInt(passParameterSem2);
R3i = floatBitsToInt(passParameterSem4);
R4i = floatBitsToInt(passParameterSem6);
R8i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R4i.zw)).xyzw);
R7i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R4i.zw)).xyzw);
R4i.w = floatBitsToInt(texture(textureUnitPS12, intBitsToFloat(R0i.xy)).x);
R5i.xyzw = floatBitsToInt(textureGather(textureUnitPS6, intBitsToFloat(R0i.xy)).xyzw);
// 0
backupReg0i = R4i.w;
PV0i.x = floatBitsToInt(intBitsToFloat(R8i.w) * intBitsToFloat(0x437f0000));
R126i.y = floatBitsToInt((intBitsToFloat(R7i.x) * 2.0 + -(1.0)));
PV0i.y = R126i.y;
R127i.z = floatBitsToInt((intBitsToFloat(R7i.y) * 2.0 + -(1.0)));
PV0i.z = R127i.z;
R4i.w = floatBitsToInt((intBitsToFloat(R7i.z) * 2.0 + -(1.0)));
PV0i.w = R4i.w;
R127i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(uf_remappedPS[0].w)) + 1.0));
PS0i = R127i.y;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),intBitsToFloat(PV0i.w),-0.0),vec4(intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),intBitsToFloat(PV0i.w),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R10i.w = int(intBitsToFloat(PV0i.x));
PS1i = R10i.w;
// 2
R127i.x = 0x358637bd;
R4i.y = 0;
PV0i.z = PS1i >> 0x00000005;
PV0i.w = floatBitsToInt(floor(intBitsToFloat(R3i.x)));
R4i.x = floatBitsToInt(sqrt(intBitsToFloat(PV1i.x)));
PS0i = R4i.x;
// 3
backupReg0i = R127i.y;
PV1i.x = floatBitsToInt(floor(intBitsToFloat(R3i.y)));
R127i.y = PV0i.z & 0x00000007;
R125i.z = floatBitsToInt(intBitsToFloat(PV0i.w) + -(0.5));
R124i.w = floatBitsToInt(intBitsToFloat(R3i.x) + -(intBitsToFloat(PV0i.w)));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(backupReg0i));
// 4
R125i.x = floatBitsToInt(intBitsToFloat(PV1i.x) + -(0.5));
R125i.y = floatBitsToInt(intBitsToFloat(R3i.y) + -(intBitsToFloat(PV1i.x)));
R14i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[0].x)), intBitsToFloat(PS1i)));
PV0i.z = R14i.z;
R9i.w = floatBitsToInt(roundEven(0.0));
R6i.w = floatBitsToInt(1.0 / intBitsToFloat(R4i.x));
PS0i = R6i.w;
// 5
R6i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PS0i)));
R6i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS0i)));
R127i.z = floatBitsToInt(intBitsToFloat(uf_remappedPS[0].x) + intBitsToFloat(PV0i.z));
PV1i.z = R127i.z;
PV1i.w = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.z)), intBitsToFloat(uf_remappedPS[1].y)));
PS1i = floatBitsToInt(float(R127i.y));
// 6
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R5i.w)));
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R5i.y)));
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R5i.x)));
PV0i.w = floatBitsToInt(intBitsToFloat(PS1i) + intBitsToFloat(0xc0000000));
R124i.y = floatBitsToInt(1.0 / intBitsToFloat(PV1i.w));
PS0i = R124i.y;
// 7
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R6i.x),intBitsToFloat(R6i.y),intBitsToFloat(R127i.x),-0.0),vec4(intBitsToFloat(R6i.x),intBitsToFloat(R6i.y),intBitsToFloat(R127i.x),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
PS1i = floatBitsToInt(exp2(intBitsToFloat(PV0i.w)));
// 8
backupReg0i = R127i.y;
backupReg0i = R127i.y;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R5i.z)));
PV0i.x = R123i.x;
R127i.y = floatBitsToInt(max(intBitsToFloat(backupReg0i), -(intBitsToFloat(backupReg0i))));
R6i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.y), intBitsToFloat(PS1i)));
PV0i.z = R6i.z;
R127i.w = floatBitsToInt(max(intBitsToFloat(R126i.x), -(intBitsToFloat(R126i.x))));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
R126i.w = floatBitsToInt(tempResultf);
PS0i = R126i.w;
// 9
R126i.x = floatBitsToInt(max(intBitsToFloat(R126i.z), -(intBitsToFloat(R126i.z))));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.y), intBitsToFloat(PS0i)));
R126i.z = floatBitsToInt(min(intBitsToFloat(PV0i.z), 2.0));
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.y), intBitsToFloat(uf_remappedPS[3].x)));
PV1i.w = R125i.w;
R127i.z = floatBitsToInt(max(intBitsToFloat(PV0i.x), -(intBitsToFloat(PV0i.x))));
PS1i = R127i.z;
// 10
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.x), intBitsToFloat(R126i.w)));
R126i.y = R6i.z;
R126i.y = clampFI32(R126i.y);
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PV1i.w)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PV1i.w)));
R127i.y = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[4].w)), intBitsToFloat(PV1i.y)));
PS0i = R127i.y;
// 11
backupReg0i = R125i.w;
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.z)) + intBitsToFloat(PV0i.w));
PV1i.y = floatBitsToInt(intBitsToFloat(R126i.z) * intBitsToFloat(0x40c00000));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.x), intBitsToFloat(R125i.w)));
PV1i.z = R126i.z;
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(backupReg0i)));
PV1i.w = R125i.w;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z), intBitsToFloat(PV0i.x)));
PS1i = R127i.z;
// 12
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PV1i.y)));
PV0i.y = floatBitsToInt(-(intBitsToFloat(PV1i.z)) + intBitsToFloat(PV1i.x));
PV0i.z = floatBitsToInt(-(intBitsToFloat(PV1i.w)) + intBitsToFloat(PV1i.x));
PV0i.w = R126i.y;
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * 2.0);
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS1i), intBitsToFloat(PV1i.y)));
PS0i = R127i.w;
// 13
backupReg0i = R0i.y;
R10i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(PV0i.w)) + intBitsToFloat(R0i.x)));
PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.x) * intBitsToFloat(0x3e4ccccd));
R10i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(PV0i.w)) + intBitsToFloat(backupReg0i)));
PV1i.w = floatBitsToInt(intBitsToFloat(R125i.w) + intBitsToFloat(PV0i.y));
PS1i = floatBitsToInt(intBitsToFloat(R126i.z) + intBitsToFloat(PV0i.z));
// 14
R5i.x = floatBitsToInt(intBitsToFloat(R0i.x) + intBitsToFloat(R127i.w));
R5i.y = floatBitsToInt(intBitsToFloat(R0i.y) + intBitsToFloat(PV1i.y));
R9i.z = floatBitsToInt(intBitsToFloat(R126i.y) * intBitsToFloat(0x40400000));
PV0i.w = floatBitsToInt(intBitsToFloat(PS1i) + intBitsToFloat(R124i.w));
PV0i.w = clampFI32(PV0i.w);
PS0i = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(R125i.y));
PS0i = clampFI32(PS0i);
// 15
PV1i.x = floatBitsToInt(intBitsToFloat(PS0i) + intBitsToFloat(R125i.x));
R10i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), intBitsToFloat(R14i.z)));
R13i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), intBitsToFloat(R14i.z)));
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.w) + intBitsToFloat(R125i.z));
R4i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.w), intBitsToFloat(R6i.w)));
PS1i = R4i.z;
// 16
R9i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(PV1i.w)));
R9i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.w), intBitsToFloat(PV1i.x)));
R11i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R10i.z)) + intBitsToFloat(R1i.w)));
R4i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R10i.x)) + intBitsToFloat(R1i.z)));
R12i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R5i.x)) + intBitsToFloat(R1i.z)));
PS0i = R12i.z;
// 17
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R10i.y),intBitsToFloat(R13i.z),intBitsToFloat(R14i.z),-0.0),vec4(intBitsToFloat(R10i.y),intBitsToFloat(R13i.z),intBitsToFloat(R14i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R6i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R5i.y)) + intBitsToFloat(R1i.w)));
PS1i = R6i.w;
// 18
R11i.x = floatBitsToInt(intBitsToFloat(0x3df5c28f) * intBitsToFloat(uf_remappedPS[1].z));
PV0i.y = floatBitsToInt(intBitsToFloat(R6i.z) * intBitsToFloat(0x40c00000));
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.w), intBitsToFloat(R7i.w)));
R7i.w = 0;
PS0i = floatBitsToInt(sqrt(intBitsToFloat(PV1i.x)));
// 19
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x3e4ccccd));
PV1i.x = clampFI32(PV1i.x);
PV1i.y = floatBitsToInt(max(intBitsToFloat(R8i.y), intBitsToFloat(R8i.z)));
R3i.z = floatBitsToInt((intBitsToFloat(R124i.y) * intBitsToFloat(0x3dcccccd) + 1.0));
R11i.w = PV0i.y;
R11i.w = clampFI32(R11i.w);
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PS0i));
// 20
R3i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R10i.y), intBitsToFloat(PS1i)));
PV0i.x = R3i.x;
R11i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R13i.z), intBitsToFloat(PS1i)));
PV0i.y = R11i.y;
R15i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R14i.z), intBitsToFloat(PS1i)));
PV0i.z = R15i.z;
R5i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(R125i.z)));
R18i.w = floatBitsToInt(max(intBitsToFloat(R8i.x), intBitsToFloat(PV1i.y)));
PS0i = R18i.w;
// 21
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R6i.x),intBitsToFloat(R6i.y),intBitsToFloat(R4i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R7i.z = tempi.x;
R5i.z = floatBitsToInt(min(intBitsToFloat(R8i.y), intBitsToFloat(R8i.z)));
PS1i = R5i.z;
// 0
backupReg0i = R7i.z;
R7i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].x), intBitsToFloat(uf_remappedPS[6].w)));
PV0i.x = R7i.x;
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].y), intBitsToFloat(uf_remappedPS[6].w)));
PV0i.y = R124i.y;
R7i.z = floatBitsToInt(intBitsToFloat(backupReg0i) + 1.0);
R7i.z = clampFI32(R7i.z);
R125i.w = floatBitsToInt(intBitsToFloat(R18i.w) + intBitsToFloat(0x2edbe6ff));
R18i.z = R6i.z;
R18i.z = floatBitsToInt(intBitsToFloat(R18i.z) * 4.0);
R18i.z = clampFI32(R18i.z);
PS0i = R18i.z;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(R4i.y),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(R4i.y),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R124i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].z), intBitsToFloat(uf_remappedPS[6].w)));
PS1i = R124i.z;
// 2
R126i.x = floatBitsToInt((intBitsToFloat(R3i.x) * intBitsToFloat(0xbe99999a) + -(intBitsToFloat(R7i.x))));
PV0i.y = floatBitsToInt(-(intBitsToFloat(R7i.z)) + 1.0);
R125i.z = floatBitsToInt((intBitsToFloat(R11i.y) * intBitsToFloat(0xbe99999a) + -(intBitsToFloat(R124i.y))));
R124i.w = floatBitsToInt((intBitsToFloat(R15i.z) * intBitsToFloat(0xbe99999a) + -(intBitsToFloat(PS1i))));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 3
R124i.x = floatBitsToInt((intBitsToFloat(R7i.x) * intBitsToFloat(0xbf4ccccd) + intBitsToFloat(R3i.x)));
R4i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.x), intBitsToFloat(PS0i)));
R127i.z = floatBitsToInt((intBitsToFloat(R124i.y) * intBitsToFloat(0xbf4ccccd) + intBitsToFloat(R11i.y)));
R3i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.y), intBitsToFloat(PS0i)));
tempResultf = log2(intBitsToFloat(PV0i.y));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
R127i.w = floatBitsToInt(tempResultf);
PS1i = R127i.w;
// 4
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R126i.x),intBitsToFloat(R125i.z),intBitsToFloat(R124i.w),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(R125i.z),intBitsToFloat(R124i.w),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R125i.x = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x3e4ccccd));
PS0i = R125i.x;
// 5
R127i.x = floatBitsToInt(intBitsToFloat(R127i.w) * intBitsToFloat(0x41000000));
R125i.y = R10i.w & 0x0000001c;
R126i.z = floatBitsToInt((intBitsToFloat(R124i.z) * intBitsToFloat(0xbf4ccccd) + intBitsToFloat(R15i.z)));
R12i.w = floatBitsToInt(intBitsToFloat(R3i.z) * intBitsToFloat(0x42960000));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
PS1i = floatBitsToInt(tempResultf);
// 6
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.x), intBitsToFloat(PS1i)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), intBitsToFloat(PS1i)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.w), intBitsToFloat(PS1i)));
R127i.w = floatBitsToInt((intBitsToFloat(R4i.x) * 4.0 + intBitsToFloat(0xc0400000)));
R127i.w = clampFI32(R127i.w);
R3i.z = floatBitsToInt(exp2(intBitsToFloat(R125i.x)));
PS0i = R3i.z;
// 7
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R6i.x),intBitsToFloat(R6i.y),intBitsToFloat(R4i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
tempi.x = clampFI32(tempi.x);
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R3i.y = floatBitsToInt(exp2(intBitsToFloat(R127i.x)));
PS1i = R3i.y;
// 8
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R124i.x),intBitsToFloat(R127i.z),intBitsToFloat(R126i.z),-0.0),vec4(intBitsToFloat(R124i.x),intBitsToFloat(R127i.z),intBitsToFloat(R126i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
tempResultf = log2(intBitsToFloat(PV1i.x));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
R124i.w = floatBitsToInt(tempResultf);
PS0i = R124i.w;
// 9
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R6i.x),intBitsToFloat(R6i.y),intBitsToFloat(R4i.z),intBitsToFloat(R4i.z)),vec4(-(intBitsToFloat(R7i.x)),-(intBitsToFloat(R124i.y)),-(intBitsToFloat(R124i.z)),-(intBitsToFloat(R7i.w)))));
tempi.x = clampFI32(tempi.x);
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R12i.y = tempi.x;
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
PS1i = floatBitsToInt(tempResultf);
// 10
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.x), intBitsToFloat(PS1i)));
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS1i)));
PV0i.z = floatBitsToInt(intBitsToFloat(R124i.w) * intBitsToFloat(0x41400000));
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.z), intBitsToFloat(PS1i)));
tempResultf = log2(intBitsToFloat(R7i.z));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
R124i.x = floatBitsToInt(tempResultf);
PS0i = R124i.x;
// 11
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R11i.y),intBitsToFloat(R15i.z),-0.0),vec4(intBitsToFloat(R7i.x),intBitsToFloat(R124i.y),intBitsToFloat(R124i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R13i.y = floatBitsToInt(exp2(intBitsToFloat(PV0i.z)));
PS1i = R13i.y;
// 12
backupReg0i = R124i.x;
R124i.x = floatBitsToInt(max(-(intBitsToFloat(PV1i.x)), 0.0));
R7i.y = floatBitsToInt(min(intBitsToFloat(R8i.x), intBitsToFloat(R5i.z)));
R5i.z = floatBitsToInt((-(intBitsToFloat(PV1i.x)) * intBitsToFloat(0x40a00000) + intBitsToFloat(0x40a00000)));
R5i.z = clampFI32(R5i.z);
PV0i.w = floatBitsToInt(intBitsToFloat(backupReg0i) * intBitsToFloat(0x3ecccccd));
R16i.y = floatBitsToInt(1.0 / intBitsToFloat(R125i.w));
PS0i = R16i.y;
// 13
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R6i.x),intBitsToFloat(R6i.y),intBitsToFloat(R4i.z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R126i.y),intBitsToFloat(R124i.w),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R16i.z = floatBitsToInt(exp2(intBitsToFloat(PV0i.w)));
PS1i = R16i.z;
// 14
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R6i.x),intBitsToFloat(R6i.y),intBitsToFloat(R4i.z),-0.0),vec4(intBitsToFloat(uf_remappedPS[5].x),intBitsToFloat(uf_remappedPS[5].y),intBitsToFloat(uf_remappedPS[5].z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R4i.z = floatBitsToInt(intBitsToFloat(PV1i.x) + 1.0);
R4i.z = clampFI32(R4i.z);
PS0i = R4i.z;
// 15
R7i.x = floatBitsToInt(intBitsToFloat(R127i.w) + -(0.5));
R7i.x = floatBitsToInt(intBitsToFloat(R7i.x) * 4.0);
R7i.x = clampFI32(R7i.x);
PV1i.y = R6i.z;
PV1i.y = floatBitsToInt(intBitsToFloat(PV1i.y) * 2.0);
PV1i.y = clampFI32(PV1i.y);
R17i.z = floatBitsToInt(min(intBitsToFloat(R124i.x), 1.0));
PV1i.z = R17i.z;
PV1i.w = floatBitsToInt(max(-(intBitsToFloat(PV0i.x)), 0.0));
tempResultf = log2(intBitsToFloat(R18i.w));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1i = floatBitsToInt(tempResultf);
// 16
R6i.x = floatBitsToInt(min(intBitsToFloat(PV1i.w), 1.0));
R6i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R7i.y)),intBitsToFloat(R16i.y)) + 1.0));
R19i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.z), intBitsToFloat(PV1i.z)));
R13i.w = floatBitsToInt(intBitsToFloat(PV1i.y) * 0.25);
R126i.y = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x3f19999a));
PS0i = R126i.y;
// 17
R124i.x = R10i.w & 0x00000002;
R15i.y = floatBitsToInt(intBitsToFloat(R2i.z) * intBitsToFloat(0x3f4ccccd));
R21i.z = floatBitsToInt(intBitsToFloat(R2i.y) * intBitsToFloat(0x3f4ccccd));
R14i.w = floatBitsToInt(intBitsToFloat(R2i.x) * intBitsToFloat(0x3f4ccccd));
PS1i = floatBitsToInt(float(R125i.y));
// 18
backupReg0i = R126i.y;
R123i.x = floatBitsToInt((-(intBitsToFloat(R6i.y)) * intBitsToFloat(0x40400000) + intBitsToFloat(0x40400000)));
PV0i.x = R123i.x;
R126i.y = floatBitsToInt(intBitsToFloat(R6i.y) + intBitsToFloat(0x2edbe6ff));
R124i.z = floatBitsToInt(intBitsToFloat(R7i.x) + intBitsToFloat(0x3f4ccccd));
R124i.z = clampFI32(R124i.z);
R15i.w = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x3d124925));
PS0i = floatBitsToInt(exp2(intBitsToFloat(backupReg0i)));
// 19
R4i.x = floatBitsToInt(intBitsToFloat(uf_remappedPS[7].x) + -(intBitsToFloat(R14i.w)));
R14i.y = floatBitsToInt(intBitsToFloat(uf_remappedPS[7].z) + -(intBitsToFloat(R15i.y)));
R20i.z = floatBitsToInt(intBitsToFloat(uf_remappedPS[7].y) + -(intBitsToFloat(R21i.z)));
R17i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(PS0i)) + intBitsToFloat(PS0i)));
R16i.w = floatBitsToInt(float(R124i.x));
R16i.w = floatBitsToInt(intBitsToFloat(R16i.w) / 2.0);
PS1i = R16i.w;
// 20
R13i.x = floatBitsToInt(-(intBitsToFloat(R7i.y)) + intBitsToFloat(R18i.w));
R17i.y = floatBitsToInt(intBitsToFloat(R8i.x) + -(intBitsToFloat(R7i.y)));
R6i.z = floatBitsToInt(intBitsToFloat(R124i.z) + -(1.0));
R7i.w = floatBitsToInt(intBitsToFloat(R17i.z) * intBitsToFloat(0x40a00000));
R7i.w = clampFI32(R7i.w);
R12i.x = floatBitsToInt(1.0 / intBitsToFloat(R126i.y));
PS0i = R12i.x;
// 0
PV0i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[4].w)), intBitsToFloat(R3i.w)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.z),intBitsToFloat(R7i.w)) + 1.0));
PV0i.y = R123i.y;
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z), intBitsToFloat(R4i.y)));
R19i.w = floatBitsToInt(intBitsToFloat(R8i.y) + -(intBitsToFloat(R7i.y)));
R8i.x = floatBitsToInt(intBitsToFloat(R8i.z) + -(intBitsToFloat(R7i.y)));
PS0i = R8i.x;
// 1
backupReg0i = R0i.x;
backupReg1i = R0i.y;
R0i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R9i.z)) + intBitsToFloat(backupReg0i)));
R0i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R9i.z)) + intBitsToFloat(backupReg1i)));
R0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(PV0i.y)));
R8i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(PV0i.y)));
R9i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(PV0i.y)));
PS1i = R9i.z;
R0i.w = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R10i.xz)).x);
R5i.x = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R5i.xy)).x);
R3i.w = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R0i.xy)).x);
R7i.w = floatBitsToInt(texture(textureUnitPS13, intBitsToFloat(R9i.xy)).w);
R23i.xyz = floatBitsToInt(texture(textureUnitPS9, intBitsToFloat(R9i.xy)).xyz);
R22i.xyz = floatBitsToInt(texture(textureUnitPS8, vec3(intBitsToFloat(R9i.x),intBitsToFloat(R9i.y),intBitsToFloat(R9i.w))).xyz);
R24i.xyz = floatBitsToInt(texture(textureUnitPS11, intBitsToFloat(R9i.xy)).xyz);
// 0
R124i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),intBitsToFloat(R5i.x)) + intBitsToFloat(uf_remappedPS[0].x)));
PV0i.x = R124i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),intBitsToFloat(R0i.w)) + intBitsToFloat(uf_remappedPS[0].x)));
PV0i.y = R123i.y;
R124i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R0i.y)) + intBitsToFloat(R1i.w)));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R0i.x)) + intBitsToFloat(R1i.z)));
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),intBitsToFloat(R3i.w)) + intBitsToFloat(uf_remappedPS[0].x)));
PS0i = R126i.x;
// 1
R127i.x = floatBitsToInt(-(intBitsToFloat(PV0i.x)));
PV1i.y = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.y)), intBitsToFloat(R4i.w)));
PV1i.z = floatBitsToInt(-(intBitsToFloat(PV0i.y)));
PV1i.w = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.y)), intBitsToFloat(R11i.z)));
PS1i = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.x)), intBitsToFloat(R12i.z)));
// 2
backupReg0i = R124i.x;
R124i.x = floatBitsToInt(-(intBitsToFloat(R10i.y)) + intBitsToFloat(PV1i.y));
PV0i.x = R124i.x;
R126i.y = floatBitsToInt(-(intBitsToFloat(R13i.z)) + intBitsToFloat(PV1i.w));
PV0i.y = R126i.y;
R127i.z = floatBitsToInt(-(intBitsToFloat(R14i.z)) + intBitsToFloat(PV1i.z));
PV0i.z = R127i.z;
PV0i.w = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(backupReg0i)), intBitsToFloat(R6i.w)));
R125i.x = floatBitsToInt(-(intBitsToFloat(R10i.y)) + intBitsToFloat(PS1i));
PS0i = R125i.x;
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R11i.y),intBitsToFloat(R15i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R124i.w = tempi.x;
R124i.y = floatBitsToInt(-(intBitsToFloat(R13i.z)) + intBitsToFloat(PV0i.w));
PS1i = R124i.y;
// 4
backupReg0i = R124i.z;
PV0i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R126i.x)), intBitsToFloat(R127i.w)));
PV0i.y = floatBitsToInt(-(intBitsToFloat(R126i.x)));
R124i.z = floatBitsToInt(-(intBitsToFloat(R14i.z)) + intBitsToFloat(R127i.x));
PV0i.w = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R126i.x)), intBitsToFloat(backupReg0i)));
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.w), intBitsToFloat(R3i.z)));
PS0i = R125i.y;
// 5
backupReg0i = R124i.x;
backupReg1i = R126i.y;
R124i.x = floatBitsToInt(-(intBitsToFloat(R10i.y)) + intBitsToFloat(PV0i.x));
R127i.y = floatBitsToInt(-(intBitsToFloat(R13i.z)) + intBitsToFloat(PV0i.w));
R126i.z = floatBitsToInt(-(intBitsToFloat(R14i.z)) + intBitsToFloat(PV0i.y));
R127i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R3i.x)),intBitsToFloat(R124i.w)) + intBitsToFloat(backupReg0i)));
R126i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R11i.y)),intBitsToFloat(R124i.w)) + intBitsToFloat(backupReg1i)));
PS1i = R126i.y;
// 6
backupReg0i = R127i.z;
backupReg1i = R125i.y;
R127i.x = floatBitsToInt((intBitsToFloat(R125i.y) * intBitsToFloat(0x3e99999a) + intBitsToFloat(0xbecccccd)));
R125i.y = floatBitsToInt(intBitsToFloat(R23i.x) + intBitsToFloat(0xbecccccd));
R127i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R15i.z)),intBitsToFloat(R124i.w)) + intBitsToFloat(backupReg0i)));
PV0i.w = floatBitsToInt(intBitsToFloat(backupReg1i) + intBitsToFloat(0xbf400000));
R14i.z = R10i.w & int(1);
PS0i = R14i.z;
// 7
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R11i.y),intBitsToFloat(R15i.z),-0.0),vec4(intBitsToFloat(R125i.x),intBitsToFloat(R124i.y),intBitsToFloat(R124i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R125i.z = tempi.x;
R0i.x = floatBitsToInt(intBitsToFloat(PV0i.w) * intBitsToFloat(0x41800000));
R0i.x = clampFI32(R0i.x);
PS1i = R0i.x;
// 8
backupReg0i = R127i.z;
backupReg0i = R127i.z;
backupReg1i = R125i.x;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.w),intBitsToFloat(R126i.y),intBitsToFloat(backupReg0i),-0.0),vec4(intBitsToFloat(R127i.w),intBitsToFloat(R126i.y),intBitsToFloat(backupReg0i),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R127i.z = tempi.x;
R125i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R3i.x)),intBitsToFloat(PV1i.x)) + intBitsToFloat(backupReg1i)));
PS0i = R125i.x;
// 9
backupReg0i = R124i.y;
backupReg1i = R124i.z;
R126i.x = floatBitsToInt(intBitsToFloat(R2i.w) + -(intBitsToFloat(R0i.x)));
R126i.x = clampFI32(R126i.x);
R124i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R11i.y)),intBitsToFloat(R125i.z)) + intBitsToFloat(backupReg0i)));
R124i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R15i.z)),intBitsToFloat(R125i.z)) + intBitsToFloat(backupReg1i)));
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.x), intBitsToFloat(R3i.y)));
R125i.w = clampFI32(R125i.w);
R13i.z = floatBitsToInt(intBitsToFloat(R127i.x) + intBitsToFloat(R6i.x));
PS1i = R13i.z;
// 10
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R11i.y),intBitsToFloat(R15i.z),-0.0),vec4(intBitsToFloat(R124i.x),intBitsToFloat(R127i.y),intBitsToFloat(R126i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R127i.w = tempi.x;
tempResultf = 1.0 / sqrt(intBitsToFloat(R127i.z));
R126i.y = floatBitsToInt(tempResultf);
PS0i = R126i.y;
// 11
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R125i.x),intBitsToFloat(R124i.y),intBitsToFloat(R124i.z),-0.0),vec4(intBitsToFloat(R125i.x),intBitsToFloat(R124i.y),intBitsToFloat(R124i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R125i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R3i.x)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R124i.x)));
PS1i = R125i.x;
// 12
backupReg0i = R124i.w;
R1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R23i.z), intBitsToFloat(R23i.z)));
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R11i.y)),intBitsToFloat(R127i.w)) + intBitsToFloat(R127i.y)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R15i.z)),intBitsToFloat(R127i.w)) + intBitsToFloat(R126i.z)));
PV0i.z = R123i.z;
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R126i.y)));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
R127i.y = floatBitsToInt(tempResultf);
PS0i = R127i.y;
// 13
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R125i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(R125i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
PS1i = floatBitsToInt(intBitsToFloat(R127i.x) + intBitsToFloat(R12i.y));
// 14
backupReg0i = R125i.z;
PV0i.x = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x42960000));
PV0i.x = clampFI32(PV0i.x);
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R11i.x), intBitsToFloat(R124i.w)));
PV0i.y = clampFI32(PV0i.y);
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R127i.y)));
PV0i.w = floatBitsToInt(intBitsToFloat(R125i.y) * intBitsToFloat(0x41200000));
PV0i.w = clampFI32(PV0i.w);
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 15
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PS0i)));
PV1i.y = floatBitsToInt(intBitsToFloat(R125i.w) + intBitsToFloat(R13i.y));
PV1i.y = clampFI32(PV1i.y);
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.z), intBitsToFloat(PV0i.y)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.z), intBitsToFloat(PV0i.x)));
R6i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R23i.y), intBitsToFloat(PV0i.w)));
PS1i = R6i.x;
// 16
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.z), intBitsToFloat(PV1i.y)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R11i.x), intBitsToFloat(PV1i.x)));
R127i.y = clampFI32(R127i.y);
PV0i.z = floatBitsToInt(intBitsToFloat(R125i.z) * intBitsToFloat(0x3c23d70a));
PV0i.z = clampFI32(PV0i.z);
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(PV1i.w)) + intBitsToFloat(0xbecccccd)));
PV0i.w = R123i.w;
PS0i = floatBitsToInt(intBitsToFloat(PS1i) + -(1.0));
// 17
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R5i.w)) + intBitsToFloat(0xbd4ccccd)));
PV1i.x = R123i.x;
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R4i.z)));
R4i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PS0i),intBitsToFloat(R126i.x)) + 1.0));
PV1i.z = R4i.z;
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * intBitsToFloat(0x42960000));
PV1i.w = clampFI32(PV1i.w);
R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R5i.w)) + intBitsToFloat(0xbc23d70a)));
PS1i = R125i.z;
// 18
PV0i.x = floatBitsToInt(intBitsToFloat(R127i.y) + -(0.5));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(R17i.z)) + intBitsToFloat(0xbecccccd)));
PV0i.y = R123i.y;
R124i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R11i.w), intBitsToFloat(PV1i.w)));
R124i.z = floatBitsToInt(intBitsToFloat(R124i.z) * 2.0);
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.x) * intBitsToFloat(0x41a00000));
PV0i.w = clampFI32(PV0i.w);
R126i.z = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(0x3da3d70a));
PS0i = R126i.z;
// 19
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x42960000));
PV1i.x = clampFI32(PV1i.x);
PV1i.y = floatBitsToInt(intBitsToFloat(R125i.z) * intBitsToFloat(0x42480000));
PV1i.y = clampFI32(PV1i.y);
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.w) * intBitsToFloat(0x3df5c28f));
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.x) * intBitsToFloat(0x42200000));
PV1i.w = clampFI32(PV1i.w);
R3i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R13i.z), intBitsToFloat(R12i.w)));
R3i.x = clampFI32(R3i.x);
PS1i = R3i.x;
// 20
backupReg0i = R18i.z;
R11i.x = floatBitsToInt((intBitsToFloat(PV1i.y) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(PV1i.z)));
R11i.x = clampFI32(R11i.x);
R13i.y = floatBitsToInt(intBitsToFloat(R125i.w) + intBitsToFloat(R126i.z));
R13i.y = clampFI32(R13i.y);
R18i.z = floatBitsToInt(intBitsToFloat(R124i.z) * intBitsToFloat(0x3e4ccccd));
R12i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV1i.x)));
R12i.y = floatBitsToInt(intBitsToFloat(PV1i.w) * intBitsToFloat(0x41000000));
PS0i = R12i.y;
// 0
backupReg0i = R0i.x;
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R19i.z), intBitsToFloat(R12i.y)));
PV0i.x = clampFI32(PV0i.x);
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R13i.y),intBitsToFloat(R11i.x)) + intBitsToFloat(R18i.z)));
R123i.y = clampFI32(R123i.y);
PV0i.y = R123i.y;
PV0i.z = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(R3i.x));
PV0i.z = clampFI32(PV0i.z);
PV0i.w = floatBitsToInt(-(intBitsToFloat(R12i.w)) + intBitsToFloat(R4i.z));
PS0i = floatBitsToInt(intBitsToFloat(R22i.y) * intBitsToFloat(0x3f162b6b));
// 1
R126i.x = floatBitsToInt(intBitsToFloat(R2i.w) + intBitsToFloat(R6i.x));
R126i.x = clampFI32(R126i.x);
PV1i.x = R126i.x;
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R13i.w)) + intBitsToFloat(PV0i.y)));
R126i.z = clampFI32(R126i.z);
PV1i.z = R126i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.w),intBitsToFloat(PV0i.z)) + intBitsToFloat(R12i.w)));
PV1i.w = R123i.w;
R122i.x = floatBitsToInt((intBitsToFloat(R22i.z) * intBitsToFloat(0x3dea4a8c) + intBitsToFloat(PS0i)));
PS1i = R122i.x;
// 2
R123i.x = floatBitsToInt((intBitsToFloat(R22i.x) * intBitsToFloat(0x3e99096c) + intBitsToFloat(PS1i)));
PV0i.x = R123i.x;
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.x),intBitsToFloat(PV1i.x)) + intBitsToFloat(R14i.w)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.x), intBitsToFloat(PV1i.w)));
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.y)),intBitsToFloat(PV1i.z)) + intBitsToFloat(R6i.y)));
R123i.w = clampFI32(R123i.w);
PV0i.w = R123i.w;
R125i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R20i.z),intBitsToFloat(PV1i.x)) + intBitsToFloat(R21i.z)));
PS0i = R125i.w;
// 3
PV1i.x = ((intBitsToFloat(PV0i.x) > 0.0)?int(0xFFFFFFFF):int(0x0));
R125i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R15i.w),intBitsToFloat(R16i.w)) + intBitsToFloat(PV0i.z)));
R125i.y = clampFI32(R125i.y);
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R14i.y),intBitsToFloat(R126i.x)) + intBitsToFloat(R15i.y)));
PV1i.z = R123i.z;
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R12i.x)));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PV0i.x));
// 4
backupReg0i = R127i.y;
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.w), intBitsToFloat(uf_remappedPS[8].y)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(uf_remappedPS[8].x)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),intBitsToFloat(R17i.w)) + intBitsToFloat(R18i.w)));
R123i.z = clampFI32(R123i.z);
PV0i.z = R123i.z;
R123i.w = ((PV1i.x == 0)?(0):(PS1i));
PV0i.w = R123i.w;
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(uf_remappedPS[8].z)));
PS0i = R125i.w;
// 5
R127i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.w)),intBitsToFloat(R13i.x)) + intBitsToFloat(R18i.w)));
PV1i.x = R127i.x;
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[6].w), intBitsToFloat(R125i.y)));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.y), intBitsToFloat(PV0i.z)));
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.x), intBitsToFloat(PV0i.w)));
R125i.x = floatBitsToInt(float(R14i.z));
PS1i = R125i.x;
// 6
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.x),intBitsToFloat(PV1i.y)) + intBitsToFloat(R8i.w)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(PV1i.y)) + intBitsToFloat(R0i.z)));
PV0i.y = R123i.y;
R124i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),intBitsToFloat(R17i.y)) + intBitsToFloat(PV1i.x)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.w),intBitsToFloat(PV1i.y)) + intBitsToFloat(R9i.z)));
PV0i.w = R123i.w;
R125i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),intBitsToFloat(R8i.x)) + intBitsToFloat(PV1i.x)));
PS0i = R125i.w;
// 7
backupReg0i = R124i.w;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),intBitsToFloat(R19i.w)) + intBitsToFloat(R127i.x)));
PV1i.x = R123i.x;
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R22i.x),intBitsToFloat(R124i.w)) + intBitsToFloat(PV0i.y)));
PV1i.z = floatBitsToInt(intBitsToFloat(0x3f895ef0) * intBitsToFloat(R126i.z));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R22i.y),intBitsToFloat(R124i.w)) + intBitsToFloat(PV0i.x)));
R124i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R22i.z),intBitsToFloat(backupReg0i)) + intBitsToFloat(PV0i.w)));
PS1i = R124i.w;
// 8
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(PV1i.x)) + intBitsToFloat(0xba0a8ec8)));
R123i.x = clampFI32(R123i.x);
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(R124i.z)) + intBitsToFloat(0xba0a8ec8)));
R123i.y = clampFI32(R123i.y);
PV0i.y = R123i.y;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(R125i.w)) + intBitsToFloat(0xba0a8ec8)));
R123i.w = clampFI32(R123i.w);
PV0i.w = R123i.w;
R1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.x), intBitsToFloat(R1i.x)));
PS0i = R1i.w;
// 9
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.w), intBitsToFloat(PV0i.w)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PV0i.x)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PV0i.y)));
// 10
R123i.y = floatBitsToInt((intBitsToFloat(PV1i.x) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((intBitsToFloat(PV1i.y) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((intBitsToFloat(PV1i.z) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV0i.w = R123i.w;
// 11
R1i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R23i.z),intBitsToFloat(PV0i.w)) + intBitsToFloat(R24i.x)));
R1i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R23i.z),intBitsToFloat(PV0i.z)) + intBitsToFloat(R24i.y)));
R1i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R23i.z),intBitsToFloat(PV0i.y)) + intBitsToFloat(R24i.z)));
// export
passPixelColor0 = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w));
float luma = dot(passPixelColor0.rgb, vec3(0.2126, 0.7152, 0.0722));
passPixelColor0.rgb = vec3(luma);
}

View File

@ -0,0 +1,649 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader a2986482c342660f
// Monochromia
// Link's Sheikah Slate
// original shader dumped using cemu 1.11.c, BotW 1.3.1
uniform ivec4 uf_remappedPS[9];
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf45c6000 res 1280x720x1 dim 1 tm: 4 format 041a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0xf494a800 res 1280x720x1 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: 1
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 6) uniform sampler2D textureUnitPS6;// Tex6 addr 0xf5054000 res 640x360x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 8) uniform sampler2DArray textureUnitPS8;// Tex8 addr 0xf5593000 res 640x360x2 dim 5 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x2) Sampler8 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 9) uniform sampler2D textureUnitPS9;// Tex9 addr 0xf575f800 res 640x360x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler9 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 11) uniform sampler2D textureUnitPS11;// Tex11 addr 0xf5977800 res 640x360x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler11 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 12) uniform sampler2D textureUnitPS12;// Tex12 addr 0xf4240800 res 1280x720x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler12 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 13) uniform sampler2D textureUnitPS13;// Tex13 addr 0xf528a800 res 640x360x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler13 ClampX/Y/Z: 2 2 2 border: 1
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 2) in vec4 passParameterSem2;
layout(location = 3) in vec4 passParameterSem4;
layout(location = 4) in vec4 passParameterSem6;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
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 R9i = ivec4(0);
ivec4 R10i = ivec4(0);
ivec4 R11i = ivec4(0);
ivec4 R12i = ivec4(0);
ivec4 R13i = ivec4(0);
ivec4 R14i = ivec4(0);
ivec4 R15i = ivec4(0);
ivec4 R16i = ivec4(0);
ivec4 R17i = ivec4(0);
ivec4 R18i = ivec4(0);
ivec4 R19i = ivec4(0);
ivec4 R20i = ivec4(0);
ivec4 R21i = 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(passParameterSem0);
R1i = floatBitsToInt(passParameterSem1);
R2i = floatBitsToInt(passParameterSem2);
R3i = floatBitsToInt(passParameterSem4);
R4i = floatBitsToInt(passParameterSem6);
R8i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R4i.zw)).xyzw);
R6i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R4i.zw)).xyzw);
R4i.w = floatBitsToInt(texture(textureUnitPS12, intBitsToFloat(R0i.xy)).x);
R5i.xyzw = floatBitsToInt(textureGather(textureUnitPS6, intBitsToFloat(R0i.xy)).xyzw);
// 0
R127i.x = floatBitsToInt((intBitsToFloat(R6i.x) * 2.0 + -(1.0)));
PV0i.x = R127i.x;
R127i.y = floatBitsToInt((intBitsToFloat(R6i.y) * 2.0 + -(1.0)));
PV0i.y = R127i.y;
PV0i.z = floatBitsToInt(intBitsToFloat(R8i.w) * intBitsToFloat(0x437f0000));
R124i.w = floatBitsToInt((intBitsToFloat(R6i.z) * 2.0 + -(1.0)));
PV0i.w = R124i.w;
R127i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R4i.w)),intBitsToFloat(uf_remappedPS[0].w)) + 1.0));
PS0i = R127i.z;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.w),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.w),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R9i.y = int(intBitsToFloat(PV0i.z));
PS1i = R9i.y;
// 2
PV0i.x = PS1i >> 0x00000005;
R4i.y = 0;
R126i.z = 0x358637bd;
PV0i.w = floatBitsToInt(floor(intBitsToFloat(R3i.x)));
R7i.x = floatBitsToInt(sqrt(intBitsToFloat(PV1i.x)));
PS0i = R7i.x;
// 3
R126i.x = floatBitsToInt(intBitsToFloat(R3i.x) + -(intBitsToFloat(PV0i.w)));
PV1i.y = floatBitsToInt(floor(intBitsToFloat(R3i.y)));
R125i.z = floatBitsToInt(intBitsToFloat(PV0i.w) + -(0.5));
R127i.w = PV0i.x & 0x00000007;
PS1i = floatBitsToInt(1.0 / intBitsToFloat(R127i.z));
// 4
R125i.x = floatBitsToInt(intBitsToFloat(R3i.y) + -(intBitsToFloat(PV1i.y)));
R126i.y = floatBitsToInt(intBitsToFloat(PV1i.y) + -(0.5));
R4i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[0].x)), intBitsToFloat(PS1i)));
PV0i.z = R4i.z;
R11i.w = floatBitsToInt(roundEven(0.0));
R4i.w = floatBitsToInt(1.0 / intBitsToFloat(R7i.x));
PS0i = R4i.w;
// 5
R4i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS0i)));
R7i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS0i)));
R127i.z = floatBitsToInt(intBitsToFloat(uf_remappedPS[0].x) + intBitsToFloat(PV0i.z));
PV1i.z = R127i.z;
PV1i.w = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.z)), intBitsToFloat(uf_remappedPS[1].y)));
PS1i = floatBitsToInt(float(R127i.w));
// 6
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R5i.y)));
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R5i.w)));
PV0i.z = floatBitsToInt(intBitsToFloat(PS1i) + intBitsToFloat(0xc0000000));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R5i.x)));
R124i.x = floatBitsToInt(1.0 / intBitsToFloat(PV1i.w));
PS0i = R124i.x;
// 7
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R7i.y),intBitsToFloat(R126i.z),-0.0),vec4(intBitsToFloat(R4i.x),intBitsToFloat(R7i.y),intBitsToFloat(R126i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
PS1i = floatBitsToInt(exp2(intBitsToFloat(PV0i.z)));
// 8
backupReg0i = R127i.z;
backupReg1i = R127i.y;
backupReg1i = R127i.y;
R5i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.x), intBitsToFloat(PS1i)));
PV0i.x = R5i.x;
R127i.y = floatBitsToInt(max(intBitsToFloat(R127i.x), -(intBitsToFloat(R127i.x))));
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R5i.z)));
R126i.w = floatBitsToInt(max(intBitsToFloat(backupReg1i), -(intBitsToFloat(backupReg1i))));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 9
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.x), intBitsToFloat(PS0i)));
PV1i.y = floatBitsToInt(min(intBitsToFloat(PV0i.x), 2.0));
PV1i.z = PV0i.x;
PV1i.z = clampFI32(PV1i.z);
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.y), intBitsToFloat(PS0i)));
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.x), intBitsToFloat(uf_remappedPS[3].x)));
PS1i = R125i.w;
// 10
backupReg0i = R127i.w;
backupReg0i = R127i.w;
PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.y) * intBitsToFloat(0x40c00000));
R5i.y = floatBitsToInt(intBitsToFloat(PV1i.z) * intBitsToFloat(0x40400000));
PV0i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[4].w)), intBitsToFloat(PV1i.w)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z), intBitsToFloat(PV1i.x)));
R127i.w = floatBitsToInt(max(intBitsToFloat(backupReg0i), -(intBitsToFloat(backupReg0i))));
PS0i = R127i.w;
// 11
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(R125i.w)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(PV0i.x)));
PV1i.z = floatBitsToInt(max(intBitsToFloat(R127i.z), -(intBitsToFloat(R127i.z))));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(PV0i.x)));
PS1i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(R125i.w)));
// 12
backupReg0i = R0i.x;
backupReg1i = R127i.w;
PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.y) * intBitsToFloat(0x3e4ccccd));
PV0i.y = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + intBitsToFloat(PS1i));
R10i.z = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(PV1i.w));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg1i), intBitsToFloat(R125i.w)));
PV0i.w = R127i.w;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(R125i.w)));
PS0i = R127i.y;
// 13
backupReg0i = R0i.z;
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.w)) + intBitsToFloat(PV0i.y));
R10i.y = floatBitsToInt(intBitsToFloat(R0i.y) + intBitsToFloat(PV0i.x));
PV1i.z = floatBitsToInt(-(intBitsToFloat(PS0i)) + intBitsToFloat(PV0i.y));
R5i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R4i.z)));
R13i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), intBitsToFloat(R4i.z)));
PS1i = R13i.y;
// 14
PV0i.x = floatBitsToInt(intBitsToFloat(R127i.y) + intBitsToFloat(PV1i.x));
R12i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R10i.z)) + intBitsToFloat(R1i.z)));
R5i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.w), intBitsToFloat(R4i.w)));
PV0i.w = floatBitsToInt(intBitsToFloat(R127i.w) + intBitsToFloat(PV1i.z));
PS0i = R9i.y & 0x0000001c;
// 15
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.w), intBitsToFloat(R6i.w)));
PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(R125i.x));
PV1i.y = clampFI32(PV1i.y);
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.w) + intBitsToFloat(R126i.x));
PV1i.z = clampFI32(PV1i.z);
R4i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R10i.y)) + intBitsToFloat(R1i.w)));
R126i.x = floatBitsToInt(float(PS0i));
PS1i = R126i.x;
// 16
PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.y) + intBitsToFloat(R126i.y));
R6i.y = floatBitsToInt((intBitsToFloat(PV1i.x) * 1.5 + 1.0));
PV0i.z = R9i.y & 0x00000002;
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(R125i.z));
R125i.z = floatBitsToInt(intBitsToFloat(R6i.w) * intBitsToFloat(0x437f0000));
PS0i = R125i.z;
// 17
R11i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(PV0i.w)));
R11i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.w), intBitsToFloat(PV0i.x)));
R127i.z = floatBitsToInt(max(intBitsToFloat(R8i.y), intBitsToFloat(R8i.z)));
R16i.w = floatBitsToInt(intBitsToFloat(R126i.x) * intBitsToFloat(0x3d124925));
R16i.y = floatBitsToInt(float(PV0i.z));
R16i.y = floatBitsToInt(intBitsToFloat(R16i.y) / 2.0);
PS1i = R16i.y;
// 18
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.w),intBitsToFloat(R13i.y),intBitsToFloat(R4i.z),-0.0),vec4(intBitsToFloat(R5i.w),intBitsToFloat(R13i.y),intBitsToFloat(R4i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R3i.y = int(intBitsToFloat(R125i.z));
PS0i = R3i.y;
// 19
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R7i.y),intBitsToFloat(R5i.z),-0.0),vec4(intBitsToFloat(uf_remappedPS[5].x),intBitsToFloat(uf_remappedPS[5].y),intBitsToFloat(uf_remappedPS[5].z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
PS1i = floatBitsToInt(sqrt(intBitsToFloat(PV0i.x)));
// 20
R3i.x = floatBitsToInt(max(-(intBitsToFloat(PV1i.x)), 0.0));
R17i.y = floatBitsToInt(max(intBitsToFloat(R8i.x), intBitsToFloat(R127i.z)));
R3i.z = floatBitsToInt((intBitsToFloat(R124i.x) * intBitsToFloat(0x3dcccccd) + 1.0));
R6i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R16i.w),-(intBitsToFloat(R16i.y))) + intBitsToFloat(R16i.w)));
R3i.w = floatBitsToInt(1.0 / intBitsToFloat(PS1i));
PS0i = R3i.w;
// 0
backupReg0i = R3i.w;
backupReg0i = R3i.w;
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].x), intBitsToFloat(uf_remappedPS[6].w)));
PV0i.x = R124i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].y), intBitsToFloat(uf_remappedPS[6].w)));
PV0i.y = R127i.y;
R7i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.w), intBitsToFloat(R3i.w)));
R3i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R13i.y), intBitsToFloat(backupReg0i)));
R9i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.z), intBitsToFloat(backupReg0i)));
PS0i = R9i.z;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(R4i.y),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(R4i.y),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].z), intBitsToFloat(uf_remappedPS[6].w)));
PS1i = R125i.z;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R7i.y),intBitsToFloat(R5i.z),-0.0),vec4(intBitsToFloat(R7i.z),intBitsToFloat(R3i.w),intBitsToFloat(R9i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 3
R6i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS0i)));
R4i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.x), intBitsToFloat(PS0i)));
R124i.z = floatBitsToInt(intBitsToFloat(PV0i.x) + 1.0);
R124i.z = clampFI32(R124i.z);
PV1i.z = R124i.z;
R127i.w = floatBitsToInt((intBitsToFloat(R124i.x) * intBitsToFloat(0xbf4ccccd) + intBitsToFloat(R7i.z)));
R126i.y = floatBitsToInt((intBitsToFloat(R127i.y) * intBitsToFloat(0xbf4ccccd) + intBitsToFloat(R3i.w)));
PS1i = R126i.y;
// 4
backupReg0i = R6i.w;
R126i.x = R3i.y & int(1);
PV0i.y = floatBitsToInt(-(intBitsToFloat(PV1i.z)) + 1.0);
R127i.z = floatBitsToInt((intBitsToFloat(R125i.z) * intBitsToFloat(0xbf4ccccd) + intBitsToFloat(R9i.z)));
PV0i.z = R127i.z;
R6i.w = floatBitsToInt(min(intBitsToFloat(R3i.x), 1.0));
R126i.z = floatBitsToInt(intBitsToFloat(backupReg0i) * 0.25);
PS0i = R126i.z;
// 5
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.w),intBitsToFloat(R126i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(R127i.w),intBitsToFloat(R126i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
tempResultf = log2(intBitsToFloat(PV0i.y));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1i = floatBitsToInt(tempResultf);
// 6
R125i.x = floatBitsToInt(min(intBitsToFloat(R8i.y), intBitsToFloat(R8i.z)));
R125i.y = floatBitsToInt(intBitsToFloat(R17i.y) + intBitsToFloat(0x2edbe6ff));
R11i.z = R5i.x;
R11i.z = floatBitsToInt(intBitsToFloat(R11i.z) * 4.0);
R11i.z = clampFI32(R11i.z);
PV0i.w = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x3e4ccccd));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 7
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PS0i)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PS0i)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS0i)));
R127i.w = R5i.x;
R127i.w = floatBitsToInt(intBitsToFloat(R127i.w) * 2.0);
R127i.w = clampFI32(R127i.w);
R6i.z = floatBitsToInt(exp2(intBitsToFloat(PV0i.w)));
PS1i = R6i.z;
// 8
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R7i.y),intBitsToFloat(R5i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R9i.w = floatBitsToInt(intBitsToFloat(R3i.z) * intBitsToFloat(0x42960000));
PS0i = R9i.w;
// 9
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.z),intBitsToFloat(R3i.w),intBitsToFloat(R9i.z),-0.0),vec4(intBitsToFloat(R124i.x),intBitsToFloat(R127i.y),intBitsToFloat(R125i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R7i.w = floatBitsToInt(intBitsToFloat(PV0i.x) + 1.0);
R7i.w = clampFI32(R7i.w);
PS1i = R7i.w;
// 10
PV0i.x = floatBitsToInt(-(intBitsToFloat(R126i.z)) + intBitsToFloat(0x3f4ccccd));
PV0i.y = floatBitsToInt(max(-(intBitsToFloat(PV1i.x)), 0.0));
R125i.z = floatBitsToInt((intBitsToFloat(R7i.x) * 4.0 + intBitsToFloat(0xc0400000)));
R125i.z = clampFI32(R125i.z);
R123i.w = ((R126i.x == 0)?(0):(0x3f800000));
PV0i.w = R123i.w;
R17i.w = floatBitsToInt(1.0 / intBitsToFloat(R125i.y));
PS0i = R17i.w;
// 11
R7i.x = floatBitsToInt(min(intBitsToFloat(PV0i.y), 1.0));
PV1i.x = R7i.x;
R14i.y = floatBitsToInt(intBitsToFloat(R127i.w) * 0.25);
R5i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.w)) + intBitsToFloat(R126i.z)));
R127i.w = floatBitsToInt(min(intBitsToFloat(R8i.x), intBitsToFloat(R125i.x)));
PV1i.w = R127i.w;
tempResultf = log2(intBitsToFloat(R17i.y));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1i = floatBitsToInt(tempResultf);
// 12
PV0i.x = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x3f19999a));
R15i.y = floatBitsToInt(intBitsToFloat(R125i.z) + -(0.5));
R15i.y = floatBitsToInt(intBitsToFloat(R15i.y) * 4.0);
R15i.y = clampFI32(R15i.y);
R12i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.w)),intBitsToFloat(R17i.w)) + 1.0));
PV0i.z = R12i.z;
R14i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(PV1i.x)));
R3i.y = floatBitsToInt(intBitsToFloat(R2i.x) * intBitsToFloat(0x3f4ccccd));
PS0i = R3i.y;
// 13
R4i.x = floatBitsToInt(intBitsToFloat(R2i.y) * intBitsToFloat(0x3f4ccccd));
PV1i.x = R4i.x;
R123i.y = floatBitsToInt((-(intBitsToFloat(PV0i.z)) * intBitsToFloat(0x40400000) + intBitsToFloat(0x40400000)));
PV1i.y = R123i.y;
R125i.z = floatBitsToInt(intBitsToFloat(PV0i.z) + intBitsToFloat(0x2edbe6ff));
R13i.w = floatBitsToInt(intBitsToFloat(R2i.z) * intBitsToFloat(0x3f4ccccd));
PV1i.w = R13i.w;
PS1i = floatBitsToInt(exp2(intBitsToFloat(PV0i.x)));
// 14
PV0i.x = floatBitsToInt(intBitsToFloat(R15i.y) + intBitsToFloat(0x3f4ccccd));
PV0i.x = clampFI32(PV0i.x);
R7i.y = floatBitsToInt(intBitsToFloat(uf_remappedPS[7].x) + -(intBitsToFloat(R3i.y)));
R3i.z = floatBitsToInt(intBitsToFloat(uf_remappedPS[7].y) + -(intBitsToFloat(PV1i.x)));
R15i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(PS1i)) + intBitsToFloat(PS1i)));
R12i.w = floatBitsToInt(intBitsToFloat(uf_remappedPS[7].z) + -(intBitsToFloat(PV1i.w)));
PS0i = R12i.w;
// 15
R3i.x = floatBitsToInt(-(intBitsToFloat(R127i.w)) + intBitsToFloat(R17i.y));
R18i.y = floatBitsToInt(intBitsToFloat(R8i.x) + -(intBitsToFloat(R127i.w)));
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.x) + -(1.0));
PV1i.w = floatBitsToInt(intBitsToFloat(R7i.x) * intBitsToFloat(0x40a00000));
PV1i.w = clampFI32(PV1i.w);
R5i.x = floatBitsToInt(1.0 / intBitsToFloat(R125i.z));
PS1i = R5i.x;
// 16
R9i.x = floatBitsToInt(intBitsToFloat(R8i.y) + -(intBitsToFloat(R127i.w)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(PV1i.w)) + 1.0));
PV0i.y = R123i.y;
R14i.z = floatBitsToInt(intBitsToFloat(R8i.z) + -(intBitsToFloat(R127i.w)));
PV0i.w = R9i.y & int(1);
// 17
R8i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(PV0i.y)));
R13i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(PV0i.y)));
R8i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(PV0i.y)));
R8i.z = floatBitsToInt(float(PV0i.w));
PS1i = R8i.z;
// 0
PV0i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[4].w)), intBitsToFloat(R6i.x)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z), intBitsToFloat(R4i.y)));
// 1
backupReg0i = R0i.x;
backupReg1i = R0i.y;
R0i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.w),intBitsToFloat(R5i.y)) + intBitsToFloat(backupReg0i)));
R0i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R5i.y)) + intBitsToFloat(backupReg1i)));
R0i.z = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R0i.xy)).x);
R0i.w = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R10i.zy)).x);
R10i.yw = floatBitsToInt(texture(textureUnitPS13, intBitsToFloat(R11i.xy)).yw);
R20i.xyz = floatBitsToInt(texture(textureUnitPS9, intBitsToFloat(R11i.xy)).xyz);
R19i.xyz = floatBitsToInt(texture(textureUnitPS8, vec3(intBitsToFloat(R11i.x),intBitsToFloat(R11i.y),intBitsToFloat(R11i.w))).xyz);
R21i.xyz = floatBitsToInt(texture(textureUnitPS11, intBitsToFloat(R11i.xy)).xyz);
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R0i.x)) + intBitsToFloat(R1i.z)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),intBitsToFloat(R0i.z)) + intBitsToFloat(uf_remappedPS[0].x)));
PV0i.y = R123i.y;
R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),intBitsToFloat(R0i.w)) + intBitsToFloat(uf_remappedPS[0].x)));
PV0i.z = R125i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R0i.y)) + intBitsToFloat(R1i.w)));
PV0i.w = R123i.w;
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R10i.w), intBitsToFloat(R6i.z)));
PS0i = R126i.y;
// 1
PV1i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.y)), intBitsToFloat(PV0i.w)));
PV1i.y = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.y)), intBitsToFloat(PV0i.x)));
PV1i.z = floatBitsToInt(-(intBitsToFloat(PV0i.y)));
R127i.w = floatBitsToInt(-(intBitsToFloat(PV0i.z)));
PS1i = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.z)), intBitsToFloat(R12i.y)));
// 2
backupReg0i = R125i.z;
R125i.xyz = floatBitsToInt(vec3(-(intBitsToFloat(R5i.w)),-(intBitsToFloat(R13i.y)),-(intBitsToFloat(R4i.z))) + vec3(intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.z)));
PV0i.w = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(backupReg0i)), intBitsToFloat(R4i.w)));
R126i.x = floatBitsToInt(-(intBitsToFloat(R5i.w)) + intBitsToFloat(PS1i));
PS0i = R126i.x;
// 3
PV1i.x = floatBitsToInt(intBitsToFloat(R20i.x) + intBitsToFloat(0xbecccccd));
R127i.y = floatBitsToInt(-(intBitsToFloat(R13i.y)) + intBitsToFloat(PV0i.w));
R124i.z = floatBitsToInt(-(intBitsToFloat(R4i.z)) + intBitsToFloat(R127i.w));
R125i.w = floatBitsToInt(intBitsToFloat(R126i.y) + intBitsToFloat(0xbf400000));
tempResultf = log2(intBitsToFloat(R10i.y));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
R124i.x = floatBitsToInt(tempResultf);
PS1i = R124i.x;
// 4
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.z),intBitsToFloat(R3i.w),intBitsToFloat(R9i.z),-0.0),vec4(intBitsToFloat(R125i.x),intBitsToFloat(R125i.y),intBitsToFloat(R125i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R124i.w = tempi.x;
R127i.w = floatBitsToInt(intBitsToFloat(PV1i.x) * intBitsToFloat(0x41200000));
R127i.w = clampFI32(R127i.w);
PS0i = R127i.w;
// 5
backupReg0i = R125i.x;
R127i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.z),intBitsToFloat(R3i.w),intBitsToFloat(R9i.z),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(R127i.y),intBitsToFloat(R124i.z),0.0)));
PV1i.x = R127i.x;
PV1i.y = R127i.x;
PV1i.z = R127i.x;
PV1i.w = R127i.x;
R125i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R7i.z)),intBitsToFloat(PV0i.x)) + intBitsToFloat(backupReg0i)));
PS1i = R125i.x;
// 6
backupReg0i = R126i.x;
backupReg1i = R127i.w;
R126i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R7i.z)),intBitsToFloat(PV1i.x)) + intBitsToFloat(backupReg0i)));
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R3i.w)),intBitsToFloat(R124i.w)) + intBitsToFloat(R125i.y)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R9i.z)),intBitsToFloat(R124i.w)) + intBitsToFloat(R125i.z)));
PV0i.z = R123i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R3i.w)),intBitsToFloat(PV1i.x)) + intBitsToFloat(R127i.y)));
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R20i.y), intBitsToFloat(backupReg1i)));
PS0i = R125i.z;
// 7
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R125i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(R125i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R122i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R9i.z)),intBitsToFloat(R127i.x)) + intBitsToFloat(R124i.z)));
PS1i = R122i.x;
// 8
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R126i.x),intBitsToFloat(R127i.w),intBitsToFloat(PS1i),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(R127i.w),intBitsToFloat(PS1i),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 9
backupReg0i = R124i.x;
R124i.x = floatBitsToInt(intBitsToFloat(R125i.w) * intBitsToFloat(0x41800000));
R124i.x = clampFI32(R124i.x);
PV1i.x = R124i.x;
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.w), intBitsToFloat(PS0i)));
R124i.z = floatBitsToInt(intBitsToFloat(R125i.z) + -(1.0));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.y), intBitsToFloat(backupReg0i)));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
PS1i = floatBitsToInt(tempResultf);
// 10
R123i.x = floatBitsToInt((intBitsToFloat(R126i.y) * intBitsToFloat(0x3e99999a) + intBitsToFloat(R6i.w)));
PV0i.x = R123i.x;
PV0i.y = floatBitsToInt(intBitsToFloat(R2i.w) + -(intBitsToFloat(PV1i.x)));
PV0i.y = clampFI32(PV0i.y);
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z), intBitsToFloat(PV1i.y)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS1i)));
PS0i = floatBitsToInt(exp2(intBitsToFloat(PV1i.w)));
// 11
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(0xbecccccd));
PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.z) * intBitsToFloat(0x3df5c28f));
PV1i.y = clampFI32(PV1i.y);
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.z),intBitsToFloat(PV0i.y)) + 1.0));
PV1i.z = R123i.z;
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * intBitsToFloat(0x3c23d70a));
PV1i.w = clampFI32(PV1i.w);
PS1i = floatBitsToInt(intBitsToFloat(PS0i) + intBitsToFloat(0xbecccccd));
// 12
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(R9i.w)));
PV0i.x = clampFI32(PV0i.x);
PV0i.y = floatBitsToInt(intBitsToFloat(PV1i.y) + -(0.5));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R7i.w)));
PV0i.w = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x42960000));
PV0i.w = clampFI32(PV0i.w);
R125i.w = floatBitsToInt((0.5 * intBitsToFloat(PV1i.z) + 0.5));
PS0i = R125i.w;
// 13
backupReg0i = R125i.z;
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x42200000));
PV1i.x = clampFI32(PV1i.x);
R126i.y = floatBitsToInt(intBitsToFloat(R124i.x) + intBitsToFloat(PV0i.x));
R126i.y = clampFI32(R126i.y);
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(PS0i)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R7i.x)) + intBitsToFloat(0xbecccccd)));
PV1i.w = R123i.w;
PS1i = floatBitsToInt(intBitsToFloat(R2i.w) + intBitsToFloat(backupReg0i));
PS1i = clampFI32(PS1i);
// 14
PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.x) * intBitsToFloat(0x41000000));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.y),intBitsToFloat(PS1i)) + intBitsToFloat(R3i.y)));
PV0i.y = R123i.y;
PV0i.z = floatBitsToInt(intBitsToFloat(PV1i.w) * intBitsToFloat(0x42960000));
PV0i.z = clampFI32(PV0i.z);
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.z),intBitsToFloat(PS1i)) + intBitsToFloat(R4i.x)));
PV0i.w = R123i.w;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.w),intBitsToFloat(PS1i)) + intBitsToFloat(R13i.w)));
PS0i = R122i.x;
// 15
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R14i.w), intBitsToFloat(PV0i.x)));
PV1i.x = clampFI32(PV1i.x);
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R11i.z), intBitsToFloat(PV0i.z)));
PV1i.y = R127i.y;
R124i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(uf_remappedPS[8].y)));
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(uf_remappedPS[8].x)));
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS0i), intBitsToFloat(uf_remappedPS[8].z)));
PS1i = R125i.y;
// 16
PV0i.x = floatBitsToInt(-(intBitsToFloat(PV1i.y)) + intBitsToFloat(R125i.w));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R20i.z), intBitsToFloat(R20i.z)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(R14i.y)));
PS0i = floatBitsToInt(intBitsToFloat(R19i.z) * intBitsToFloat(0x3dea4a8c));
// 17
R123i.x = floatBitsToInt((intBitsToFloat(R19i.y) * intBitsToFloat(0x3f162b6b) + intBitsToFloat(PS0i)));
PV1i.x = R123i.x;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.z),intBitsToFloat(R125i.z)) + intBitsToFloat(PV0i.w)));
R123i.z = clampFI32(R123i.z);
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R126i.y)) + intBitsToFloat(R127i.y)));
PV1i.w = R123i.w;
R11i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.z), intBitsToFloat(PV0i.y)));
PS1i = R11i.w;
// 18
R123i.x = floatBitsToInt((intBitsToFloat(R19i.x) * intBitsToFloat(0x3e99096c) + intBitsToFloat(PV1i.x)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(R15i.w)) + intBitsToFloat(R17i.y)));
R123i.y = clampFI32(R123i.y);
PV0i.y = R123i.y;
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R15i.y), intBitsToFloat(PV1i.w)));
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R12i.z)),intBitsToFloat(PV1i.z)) + intBitsToFloat(R12i.z)));
R123i.w = clampFI32(R123i.w);
PV0i.w = R123i.w;
// 19
PV1i.x = ((intBitsToFloat(PV0i.x) > 0.0)?int(0xFFFFFFFF):int(0x0));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R16i.w),intBitsToFloat(R16i.y)) + intBitsToFloat(PV0i.z)));
R123i.y = clampFI32(R123i.y);
PV1i.y = R123i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R17i.w), intBitsToFloat(PV0i.y)));
R16i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R5i.x)));
PV1i.w = R16i.w;
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PV0i.x));
// 20
backupReg0i = R3i.x;
R3i.x = floatBitsToInt(intBitsToFloat(0x3f895ef0) * intBitsToFloat(PV1i.z));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[6].w), intBitsToFloat(PV1i.y)));
R12i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.w)),intBitsToFloat(backupReg0i)) + intBitsToFloat(R17i.y)));
PV0i.z = R12i.z;
R123i.w = ((PV1i.x == 0)?(0):(PS1i));
PV0i.w = R123i.w;
// 21
backupReg0i = R8i.x;
backupReg1i = R13i.z;
backupReg2i = R18i.y;
R8i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.z),intBitsToFloat(PV0i.y)) + intBitsToFloat(R8i.w)));
R18i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.w),intBitsToFloat(PV0i.y)) + intBitsToFloat(backupReg0i)));
R13i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.x), intBitsToFloat(PV0i.w)));
R8i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.y),intBitsToFloat(PV0i.y)) + intBitsToFloat(backupReg1i)));
R17i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R16i.w),intBitsToFloat(backupReg2i)) + intBitsToFloat(PV0i.z)));
PS1i = R17i.y;
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R16i.w),intBitsToFloat(R9i.x)) + intBitsToFloat(R12i.z)));
PV0i.x = R123i.x;
R125i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R19i.x),intBitsToFloat(R13i.z)) + intBitsToFloat(R18i.y)));
R124i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R19i.y),intBitsToFloat(R13i.z)) + intBitsToFloat(R8i.x)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R16i.w),intBitsToFloat(R14i.z)) + intBitsToFloat(R12i.z)));
PV0i.w = R123i.w;
// 1
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.x),intBitsToFloat(PV0i.x)) + intBitsToFloat(0xba0a8ec8)));
R123i.x = clampFI32(R123i.x);
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.x),intBitsToFloat(R17i.y)) + intBitsToFloat(0xba0a8ec8)));
R123i.y = clampFI32(R123i.y);
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.x),intBitsToFloat(PV0i.w)) + intBitsToFloat(0xba0a8ec8)));
R123i.z = clampFI32(R123i.z);
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R19i.z),intBitsToFloat(R13i.z)) + intBitsToFloat(R8i.w)));
PV1i.w = R123i.w;
// 2
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.z)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(PV1i.x)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(PV1i.y)));
// 3
R123i.y = floatBitsToInt((intBitsToFloat(PV0i.x) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((intBitsToFloat(PV0i.y) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((intBitsToFloat(PV0i.z) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.w = R123i.w;
// 4
R11i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R20i.z),intBitsToFloat(PV1i.w)) + intBitsToFloat(R21i.x)));
R11i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R20i.z),intBitsToFloat(PV1i.z)) + intBitsToFloat(R21i.y)));
R11i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R20i.z),intBitsToFloat(PV1i.y)) + intBitsToFloat(R21i.z)));
// export
passPixelColor0 = vec4(intBitsToFloat(R11i.x), intBitsToFloat(R11i.y), intBitsToFloat(R11i.z), intBitsToFloat(R11i.w));
float luma = dot(passPixelColor0.rgb, vec3(0.2126, 0.7152, 0.0722));
passPixelColor0.rgb = vec3(luma);
}

View File

@ -0,0 +1,102 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader a5b3a5e5ab2938bc
// Monochromia + AARestore v2
// Clouds and other effects
// original shader dumped using cemu 1.11.c, BotW 1.3.1
uniform ivec4 uf_remappedPS[3];
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf46ad000 res 640x360x1 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: 1
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0xf5054000 res 640x360x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler2 ClampX/Y/Z: 2 2 2 border: 1
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
vec4 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 = passParameterSem0;
R1f = passParameterSem1;
R2f.w = (texture(textureUnitPS1, R0f.xy).x);
R0f.xyzw = (textureGather(textureUnitPS2, R0f.xy).xyzw);
// 0
backupReg0f = R0f.y;
backupReg1f = R0f.x;
PV0f.x = -(R2f.w) + R0f.w;
PV0f.y = -(R2f.w) + R0f.z;
PV0f.z = -(R2f.w) + backupReg0f;
PV0f.w = -(R2f.w) + backupReg1f;
PS0f = R2f.w + intBitsToFloat(uf_remappedPS[0].x);
// 1
R127f.x = max(PV0f.w, -(PV0f.w));
PV1f.y = max(PV0f.z, -(PV0f.z));
R127f.z = max(PV0f.y, -(PV0f.y));
R127f.w = max(PV0f.x, -(PV0f.x));
PS1f = 1.0 / PS0f;
// 2
R126f.x = intBitsToFloat(uf_remappedPS[1].w) * PS1f;
R127f.y = PV1f.y * -(1.0);
R126f.z = floor(R1f.y);
R125f.w = floor(R1f.x);
PV0f.w = R125f.w;
PS0f = PV1f.y * -(1.0);
// 3
tempf.x = dot(vec4(R127f.w,R127f.z,R127f.x,PS0f),vec4(1.0,-(1.0),1.0,1.0));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
R126f.w = tempf.x;
R126f.y = R1f.x + -(PV0f.w);
PS1f = R126f.y;
// 4
tempf.x = dot(vec4(R127f.w,R127f.x,R127f.z,R127f.y),vec4(1.0,-(1.0),1.0,1.0));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
PS0f = R1f.y + -(R126f.z);
// 5
R123f.x = (mul_nonIEEE(R126f.x,PV0f.x) + PS0f);
R123f.x = clamp(R123f.x, 0.0, 1.0);
PV1f.x = R123f.x;
R123f.y = (mul_nonIEEE(R126f.x,R126f.w) + R126f.y);
R123f.y = clamp(R123f.y, 0.0, 1.0);
PV1f.y = R123f.y;
// 6
PV0f.z = R126f.z + PV1f.x;
PV0f.w = R125f.w + PV1f.y;
// 7
R1f.x = (mul_nonIEEE(PV0f.w,intBitsToFloat(uf_remappedPS[2].z)*uf_fragCoordScale.x) + R1f.z);
R1f.y = (mul_nonIEEE(PV0f.z,intBitsToFloat(uf_remappedPS[2].w)*uf_fragCoordScale.y) + R1f.w);
R1f.xyzw = (texture(textureUnitPS0, R1f.xy).xyzw);
// export
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
float luma = dot(passPixelColor0.rgb, vec3(0.2126, 0.7152, 0.0722));
passPixelColor0.rgb = vec3(luma);
}

View File

@ -1,51 +1,26 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader bd8bba59e2149449
// Monochromia
// Simple Levels + Curves + LumaSharpening
// Credits to Jamie, NAVras for LumaSharpening; CeeJay.dk for Levels, Curves
// original shader dumped using cemu 1.11.c, BotW 1.3.1
// Possible problems
// Being below 1.3.0 will give you double-vision with recent graphic packs. Update to 1.3.0 or above.
// If you're experiencing any issues (due to having the previous Clarity shaders installed), please remove and redownload all of the BotW packs.
// Levels controls
const int BlackPoint = 3; //[0, 255] The black point is the new black - literally. Everything darker than this will become completely black
const int WhitePoint = 252; //[0, 255] The new white point. Everything brighter than this becomes completely white
// Changelog V0.1
// Changed from shader f14bb_ps.txt to bd8bb_ps.txt
// Curves controls
const float Contrast = 0.25; //[-1.0, 1.0] The amount of contrast you want
// Credit to NAVras for merging to a better shader.
// Credit to getdls for adding exposure & Original Contrasty.
//LumaShapening
#define sharp_strength 2.5 //[0.10 to 3.00] Default 0.65 , Strength of the sharpening.
#define sharp_clamp 0.085 //[0.000 to 1.000] Default 0.035 , Limits maximum amount of sharpening a pixel recieves.
//Advanced sharpening settings
#define offset_bias 1.0 //[0.0 to 6.0] Offset bias adjusts the radius of the sampling pattern.
// Clarity GFX
// Credit to Jamie for main coding.
// Credit to Kiri coding & Reshade logic.
// Credit to Serfrost for preset values.
// Original shader dumped using cemu 1.10.0f, BotW 1.3.1
// Changelog v0.5
//##########################################################
// Contrast, saturation, Gamma.
//Adjustable Values:
const float con = 0.80; // [0.0 ~ 1.5] [0.5 Default] Contrast Adjustment - or + values work
const float sat = 0.00; // [0.1 ~ 1.5] [0.0 Default] Color Saturation Adjustment. - or + values work
const float gamma = 1.43; // [0.0 ~ 2.5] [1.0 Default] Gamma Adjustment - or + values work
//Luma Values for changing color. Machinima tool mostly.
const float AvgLumR = 0.0; // [0.0 ~ 1.5] [0.0 Default] Use very small increments, as it changes RGB values.
const float AvgLumG = -0.003; // [0.0 ~ 1.5] [0.0 Default] Use very small increments, as it changes RGB values.
const float AvgLumB = 0.0; // [0.0 ~ 1.5] [0.0 Default] Use very small increments, as it changes RGB values.
//-----------------------------------------------------------
//End of adjustable values
//###########################################################
//Do not edit under this line.
const float exposure = 0.00;
const float Bleach = 0.0;
uniform float brt;
const vec3 FogColor = vec3(0.0, 0.0, 0.0); //defog Color";
//Others
const float bloomFactor = 0.9; //Default is 1.0
uniform ivec4 uf_remappedPS[1];
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf46ac800 res 320x180x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x5) sliceView: 0x0 (num 0x1) Sampler0 ClampX/Y/Z: 2 2 2 border: 1
@ -63,50 +38,58 @@ 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; }
//-----------------------------------------------------------
// Based on CeeJay.dk's original GLSL/HLSL.
//-----------------------------------------------------------
/**
* Levels version 1.2
* by Christian Cann Schuldt Jensen ~ CeeJay.dk
*
* Allows you to set a new black and a white level.
* This increases contrast, but clips any colors outside the new range to either black or white
* and so some details in the shadows or highlights can be lost.
*
* The shader is very useful for expanding the 16-235 TV range to 0-255 PC range.
* You might need it if you're playing a game meant to display on a TV with an emulator that does not do this.
* But it's also a quick and easy way to uniformly increase the contrast of an image.
*
* -- Version 1.0 --
* First release
* -- Version 1.1 --
* Optimized to only use 1 instruction (down from 2 - a 100% performance increase :) )
* -- Version 1.2 --
* Added the ability to highlight clipping regions of the image with #define HighlightClipping 1
*/
vec3 LevelsPass(vec3 inputColor) {
float black_point_float = BlackPoint / 255.0;
float white_point_float = WhitePoint == BlackPoint ? (255.0 / 0.00025) : (255.0 / (WhitePoint - BlackPoint)); // Avoid division by zero if the white and black point are the same
vec3 TonemapPass(vec3 inputColor) {
vec3 color = inputColor;
color *= pow(2.0f, exposure); // exposure
color = pow(color, vec3(gamma)); // Gamma
color = color * white_point_float - (black_point_float * white_point_float);
const vec3 coefLuma = vec3(0.2126, 0.7152, 0.0722);
float lum = dot(coefLuma, color);
float L = clamp(10.0 * (lum - 0.45), 0.0, 1.0);
vec3 A2 = Bleach * color;
vec3 result1 = 2.0f * color * lum;
vec3 result2 = 1.0f - 2.0f * (1.0f - lum) * (1.0f - color);
vec3 newColor = mix(result1, result2, L);
vec3 mixRGB = A2 * newColor;
color += ((1.0f - A2) * mixRGB);
vec3 middlegray = vec3(dot(color, vec3(1.0 / 3.0)));
vec3 diffcolor = color - middlegray;
color = (color + diffcolor * sat) / (1 + (diffcolor * sat)); // saturation
return color;
}
vec3 brightnessContrast(vec3 color, float brt, float con){
return (color - 0.5) * con + 0.5 + brt;
/**
* Curves
* by Christian Cann Schuldt Jensen ~ CeeJay.dk
*
* Curves, uses S-curves to increase contrast, without clipping highlights and shadows.
*/
vec3 CurvesPass(vec3 inputColor) {
vec3 colorInput = inputColor;
float Contrast_blend = Contrast * 2.0; //I multiply by two to give it a strength closer to the other curves.
vec3 x = colorInput.rgb; //if the curve should be applied to both Luma and Chroma
x = x * (x * (1.5 - x) + 0.5); //horner form - fastest version
vec3 color = x; //if the curve should be applied to both Luma and Chroma
colorInput.rgb = mix(colorInput.rgb, color, Contrast_blend); //Blend by Contrast
return colorInput;
}
// -- Sharpening --
//LumaSharpening
#define px (1.0/1280.0*uf_fragCoordScale.x)
#define py (1.0/720.0*uf_fragCoordScale.y)
#define sharp_strength 0.65 //[0.10 to 3.00] Strength of the sharpening
#define sharp_clamp 0.035 //[0.000 to 1.000] Limits maximum amount of sharpening a pixel recieves - Default is 0.035
// -- Advanced sharpening settings --
#define offset_bias 1.0 //[0.0 to 6.0] Offset bias adjusts the radius of the sampling pattern.
#define CoefLuma vec3(0.2126, 0.7152, 0.0722)
vec3 lumasharping(sampler2D tex, vec2 pos){
float lumaSharpening(sampler2D tex, vec2 pos){
vec4 colorInput = texture(tex, pos);
vec3 ori = colorInput.rgb;
@ -142,8 +125,8 @@ vec3 lumasharping(sampler2D tex, vec2 pos){
// -- Combining the values to get the final sharpened pixel --
colorInput.rgb = colorInput.rgb + sharp_luma; // Add the sharpening to the input color.
return clamp(colorInput.rgb, 0.0,1.0);
//colorInput.rgb = colorInput.rgb + sharp_luma; // Add the sharpening to the input color.
return sharp_luma;
}
void main()
@ -166,7 +149,10 @@ vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = passParameterSem0;
R1f.xyz = (texture(textureUnitPS0, R0f.xy).xyz);
R0f.xyz = lumasharping(textureUnitPS1, R0f.xy);
R1f.xyz *= bloomFactor;
R0f.xyz = texture(textureUnitPS1, passParameterSem0.xy).xyz;
float smask = lumaSharpening(textureUnitPS1, passParameterSem0.xy);
R0f.xyz += vec3(smask);
// 0
R126f.x = R1f.x + R0f.x;
PV0f.x = R126f.x;
@ -258,16 +244,10 @@ PV1f.w = R123f.w;
R0f.x = (mul_nonIEEE(R126f.x,R125f.w) + PV1f.w);
R0f.y = (mul_nonIEEE(R126f.x,R127f.z) + PV1f.w);
R0f.z = (mul_nonIEEE(R126f.x,R126f.y) + PV1f.w);
// export
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
vec3 color = (passPixelColor0.xyz);
color = TonemapPass(color);
const vec3 LumCoeff = vec3(0.2125, 0.7154, 0.0721);
vec3 AvgLumin = vec3(AvgLumR, AvgLumG, AvgLumB);
vec3 brtColor = color * brt;
vec3 intensity = vec3(dot(color, LumCoeff));
vec3 satColor = mix(intensity, color, 1.);
vec3 conColor = mix(AvgLumin, satColor, con);
passPixelColor0 = vec4(conColor, R0f.w);
}
color = LevelsPass(color);
color = CurvesPass(color);
passPixelColor0 = vec4(color, R0f.w);
}

View File

@ -0,0 +1,692 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader bdc96b6928e88c78
// Monochromia
// Terrain - rainy weather
// original shader dumped using cemu 1.11.c, BotW 1.3.1
#define ENABLE_COLOR_FADE 0 // set this to 1 to enable, 0 to disable the effect
uniform ivec4 uf_remappedPS[10];
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf45c6000 res 1280x720x1 dim 1 tm: 4 format 041a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0xf494a800 res 1280x720x1 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: 1
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 6) uniform sampler2D textureUnitPS6;// Tex6 addr 0xf5054000 res 640x360x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 7) uniform sampler2D textureUnitPS7;// Tex7 addr 0xf5846000 res 640x360x1 dim 1 tm: 4 format 0001 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler7 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 8) uniform samplerCubeArray textureUnitPS8;// Tex8 addr 0x3db66800 res 64x64x1 dim 3 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x4) sliceView: 0x0 (num 0x6) Sampler8 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 10) uniform sampler2DArray textureUnitPS10;// Tex10 addr 0xf5593000 res 640x360x2 dim 5 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x2) Sampler10 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 11) uniform sampler2D textureUnitPS11;// Tex11 addr 0xf575f800 res 640x360x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler11 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 13) uniform sampler2D textureUnitPS13;// Tex13 addr 0xf5977800 res 640x360x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler13 ClampX/Y/Z: 2 2 2 border: 1
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 2) in vec4 passParameterSem3;
layout(location = 3) in vec4 passParameterSem4;
layout(location = 4) in vec4 passParameterSem6;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
void redcCUBE(vec4 src0, vec4 src1, out vec3 stm, out int faceId)
{
// stm -> x .. s, y .. t, z .. MajorAxis*2.0
vec3 inputCoord = normalize(vec3(src1.y, src1.x, src0.x));
float rx = inputCoord.x;
float ry = inputCoord.y;
float rz = inputCoord.z;
if( abs(rx) > abs(ry) && abs(rx) > abs(rz) )
{
stm.z = rx*2.0;
stm.xy = vec2(ry,rz);
if( rx >= 0.0 )
{
faceId = 0;
}
else
{
faceId = 1;
}
}
else if( abs(ry) > abs(rx) && abs(ry) > abs(rz) )
{
stm.z = ry*2.0;
stm.xy = vec2(rx,rz);
if( ry >= 0.0 )
{
faceId = 2;
}
else
{
faceId = 3;
}
}
else //if( abs(rz) > abs(ry) && abs(rz) > abs(rx) )
{
stm.z = rz*2.0;
stm.xy = vec2(rx,ry);
if( rz >= 0.0 )
{
faceId = 4;
}
else
{
faceId = 5;
}
}
}
vec3 redcCUBEReverse(vec2 st, int faceId)
{
st.yx = st.xy;
vec3 v;
float majorAxis = 1.0;
if( faceId == 0 )
{
v.yz = (st-vec2(1.5))*(majorAxis*2.0);
v.x = 1.0;
}
else if( faceId == 1 )
{
v.yz = (st-vec2(1.5))*(majorAxis*2.0);
v.x = -1.0;
}
else if( faceId == 2 )
{
v.xz = (st-vec2(1.5))*(majorAxis*2.0);
v.y = 1.0;
}
else if( faceId == 3 )
{
v.xz = (st-vec2(1.5))*(majorAxis*2.0);
v.y = -1.0;
}
else if( faceId == 4 )
{
v.xy = (st-vec2(1.5))*(majorAxis*2.0);
v.z = 1.0;
}
else
{
v.xy = (st-vec2(1.5))*(majorAxis*2.0);
v.z = -1.0;
}
return v;
}
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 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 R9i = ivec4(0);
ivec4 R10i = ivec4(0);
ivec4 R11i = ivec4(0);
ivec4 R12i = ivec4(0);
ivec4 R13i = ivec4(0);
ivec4 R14i = ivec4(0);
ivec4 R15i = ivec4(0);
ivec4 R16i = ivec4(0);
ivec4 R17i = 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;
float cubeMapArrayIndex8 = 0.0;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem1);
R2i = floatBitsToInt(passParameterSem3);
R3i = floatBitsToInt(passParameterSem4);
R4i = floatBitsToInt(passParameterSem6);
R2i.w = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R0i.xy)).x);
R7i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R4i.zw)).xyzw);
R5i.xyzw = floatBitsToInt(textureGather(textureUnitPS6, intBitsToFloat(R0i.xy)).xyzw);
R6i.xyzw = floatBitsToInt(textureGather(textureUnitPS7, intBitsToFloat(R0i.xy)).xyzw);
R15i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R4i.zw)).xyzw);
// 0
PV0i.x = floatBitsToInt(-(intBitsToFloat(R2i.w)) + intBitsToFloat(R5i.x));
PV0i.y = floatBitsToInt(-(intBitsToFloat(R2i.w)) + intBitsToFloat(R5i.w));
R124i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.w),intBitsToFloat(uf_remappedPS[0].x)) + intBitsToFloat(uf_remappedPS[1].x)));
PV0i.z = R124i.z;
PV0i.w = floatBitsToInt(-(intBitsToFloat(R2i.w)) + intBitsToFloat(R5i.y));
PS0i = floatBitsToInt(-(intBitsToFloat(R2i.w)) + intBitsToFloat(R5i.z));
// 1
R127i.x = floatBitsToInt(max(intBitsToFloat(PV0i.w), -(intBitsToFloat(PV0i.w))));
R127i.y = floatBitsToInt(max(intBitsToFloat(PV0i.y), -(intBitsToFloat(PV0i.y))));
R127i.z = floatBitsToInt(max(intBitsToFloat(PV0i.x), -(intBitsToFloat(PV0i.x))));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(uf_remappedPS[2].y)));
R126i.z = floatBitsToInt(max(intBitsToFloat(PS0i), -(intBitsToFloat(PS0i))));
PS1i = R126i.z;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.x),intBitsToFloat(R7i.y),intBitsToFloat(R7i.z),-0.0),vec4(intBitsToFloat(0x3eaaaaab),intBitsToFloat(0x3eaaaaab),intBitsToFloat(0x3eaaaaab),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.w));
// 3
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R6i.w));
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), intBitsToFloat(PS0i)));
PV1i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R6i.y));
PV1i.w = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R6i.x));
PS1i = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R6i.z));
// 4
PV0i.x = floatBitsToInt(max(intBitsToFloat(PV1i.x), -(intBitsToFloat(PV1i.x))));
PV0i.x = floatBitsToInt(intBitsToFloat(PV0i.x) * 4.0);
PV0i.y = floatBitsToInt(max(intBitsToFloat(PS1i), -(intBitsToFloat(PS1i))));
PV0i.y = floatBitsToInt(intBitsToFloat(PV0i.y) * 4.0);
PV0i.z = floatBitsToInt(max(intBitsToFloat(PV1i.z), -(intBitsToFloat(PV1i.z))));
PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) * 4.0);
PV0i.w = floatBitsToInt(max(intBitsToFloat(PV1i.w), -(intBitsToFloat(PV1i.w))));
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * 4.0);
R125i.z = floatBitsToInt(floor(intBitsToFloat(R3i.x)));
PS0i = R125i.z;
// 5
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(R126i.y)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),intBitsToFloat(R126i.y)) + intBitsToFloat(PV0i.y)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(R126i.y)) + intBitsToFloat(PV0i.z)));
PV1i.z = R123i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R126i.y)) + intBitsToFloat(PV0i.w)));
PS1i = floatBitsToInt(floor(intBitsToFloat(R3i.y)));
// 6
backupReg0i = R125i.z;
R127i.x = floatBitsToInt(intBitsToFloat(R3i.x) + -(intBitsToFloat(R125i.z)));
R126i.y = floatBitsToInt(intBitsToFloat(R3i.y) + -(intBitsToFloat(PS1i)));
R125i.z = floatBitsToInt(intBitsToFloat(backupReg0i) + -(0.5));
PV0i.w = floatBitsToInt(-(intBitsToFloat(PV1i.z)) + intBitsToFloat(PV1i.x));
R126i.w = floatBitsToInt(intBitsToFloat(PS1i) + -(0.5));
PS0i = R126i.w;
// 7
R126i.x = floatBitsToInt(intBitsToFloat(R7i.w) * intBitsToFloat(0x437f0000));
PV1i.y = floatBitsToInt(-(intBitsToFloat(R127i.w)) + intBitsToFloat(PV0i.w));
PV1i.z = floatBitsToInt(-(intBitsToFloat(R127i.y)) + intBitsToFloat(PV0i.w));
R6i.w = floatBitsToInt((intBitsToFloat(R7i.x) * 2.0 + -(1.0)));
R6i.y = floatBitsToInt((intBitsToFloat(R7i.y) * 2.0 + -(1.0)));
PS1i = R6i.y;
// 8
PV0i.x = floatBitsToInt(intBitsToFloat(R127i.w) + intBitsToFloat(PV1i.z));
R8i.y = floatBitsToInt(-(intBitsToFloat(R124i.z)));
R6i.z = floatBitsToInt((intBitsToFloat(R7i.z) * 2.0 + -(1.0)));
PV0i.w = floatBitsToInt(intBitsToFloat(R127i.y) + intBitsToFloat(PV1i.y));
R6i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(R124i.z))));
PS0i = R6i.x;
// 9
R8i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), -(intBitsToFloat(R124i.z))));
PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.w) + intBitsToFloat(R126i.y));
PV1i.y = clampFI32(PV1i.y);
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(R127i.x));
PV1i.z = clampFI32(PV1i.z);
R2i.w = floatBitsToInt(-(intBitsToFloat(R7i.w)) + intBitsToFloat(0x3f400000));
PS1i = int(intBitsToFloat(R126i.x));
// 10
PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.y) + intBitsToFloat(R126i.w));
PV0i.y = floatBitsToInt(intBitsToFloat(R15i.w) * intBitsToFloat(0x437f0000));
PV0i.z = PS1i & int(1);
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(R125i.z));
R4i.z = floatBitsToInt(roundEven(0.0));
PS0i = R4i.z;
// 11
R4i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(PV0i.w)));
R4i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.w), intBitsToFloat(PV0i.x)));
R3i.z = ((PV0i.z == 0)?(0):(0x3f800000));
R3i.w = 0;
R11i.y = int(intBitsToFloat(PV0i.y));
PS1i = R11i.y;
R16i.xyzw = floatBitsToInt(texture(textureUnitPS11, intBitsToFloat(R4i.xy)).xyzw);
R14i.xyz = floatBitsToInt(texture(textureUnitPS10, vec3(intBitsToFloat(R4i.x),intBitsToFloat(R4i.y),intBitsToFloat(R4i.z))).xyz);
R17i.xyz = floatBitsToInt(texture(textureUnitPS13, intBitsToFloat(R4i.xy)).xyz);
// 0
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R6i.w),intBitsToFloat(R6i.y),intBitsToFloat(R6i.z),-0.0),vec4(intBitsToFloat(R6i.w),intBitsToFloat(R6i.y),intBitsToFloat(R6i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R125i.z = floatBitsToInt((intBitsToFloat(R16i.w) * 2.0 + -(1.0)));
R125i.z = clampFI32(R125i.z);
PS0i = R125i.z;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R6i.x),intBitsToFloat(R8i.x),intBitsToFloat(R8i.y),-0.0),vec4(intBitsToFloat(R6i.x),intBitsToFloat(R8i.x),intBitsToFloat(R8i.y),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
R126i.w = floatBitsToInt(tempResultf);
PS1i = R126i.w;
// 2
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.w), intBitsToFloat(PS1i)));
PV0i.x = R126i.x;
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.y), intBitsToFloat(PS1i)));
PV0i.y = R125i.y;
R123i.z = floatBitsToInt((intBitsToFloat(0x3ecccccd) * intBitsToFloat(R3i.z) + intBitsToFloat(0x3dcccccd)));
PV0i.z = R123i.z;
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x), intBitsToFloat(R125i.z)));
PS0i = floatBitsToInt(sqrt(intBitsToFloat(PV1i.x)));
// 3
backupReg0i = R6i.z;
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(PV0i.z)));
R6i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.y),intBitsToFloat(PV0i.y)) + intBitsToFloat(R0i.y)));
R6i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.x),intBitsToFloat(PV0i.x)) + intBitsToFloat(R0i.x)));
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R126i.w)));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PS0i));
// 4
R3i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.x), intBitsToFloat(PS1i)));
PV0i.x = R3i.x;
R9i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.x), intBitsToFloat(PS1i)));
PV0i.y = R9i.y;
R2i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.y), intBitsToFloat(PS1i)));
PV0i.z = R2i.z;
PV0i.w = R16i.w;
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * 2.0);
R4i.z = floatBitsToInt(roundEven(1.0));
PS0i = R4i.z;
// 5
backupReg0i = R127i.x;
backupReg0i = R127i.x;
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(backupReg0i)) + intBitsToFloat(R126i.x)));
PV1i.x = R127i.x;
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(backupReg0i)) + intBitsToFloat(R125i.y)));
PV1i.y = R126i.y;
R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(backupReg0i)) + intBitsToFloat(R125i.w)));
PV1i.z = R125i.z;
PV1i.w = PV0i.w;
PV1i.w = clampFI32(PV1i.w);
R3i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R6i.z)) + intBitsToFloat(R1i.z)));
PS1i = R3i.y;
// 6
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R125i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.w),intBitsToFloat(PV1i.w)) + intBitsToFloat(R7i.w)));
PS0i = R125i.x;
// 7
R0i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R6i.y)) + intBitsToFloat(R1i.w)));
R127i.y = floatBitsToInt(intBitsToFloat(R3i.x) + intBitsToFloat(uf_remappedPS[4].x));
R124i.z = floatBitsToInt(intBitsToFloat(R9i.y) + intBitsToFloat(uf_remappedPS[4].y));
R5i.w = floatBitsToInt((-(intBitsToFloat(PS0i)) * intBitsToFloat(0x40400000) + intBitsToFloat(0x40400000)));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
PS1i = floatBitsToInt(tempResultf);
// 8
R10i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS1i)));
PV0i.x = R10i.x;
R10i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PS1i)));
PV0i.y = R10i.y;
R10i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), intBitsToFloat(PS1i)));
PV0i.z = R10i.z;
R127i.w = floatBitsToInt(intBitsToFloat(R2i.z) + intBitsToFloat(uf_remappedPS[4].z));
R126i.y = floatBitsToInt(-(intBitsToFloat(R125i.x)) + 1.0);
PS0i = R126i.y;
// 9
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R9i.y),intBitsToFloat(R2i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R126i.w = tempi.x;
PS1i = PV0i.x;
PS1i = floatBitsToInt(intBitsToFloat(PS1i) * 2.0);
// 10
PV0i.x = R10i.z;
PV0i.x = floatBitsToInt(intBitsToFloat(PV0i.x) * 2.0);
R1i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.x)),intBitsToFloat(PS1i)) + intBitsToFloat(R3i.x)));
PV0i.z = floatBitsToInt(max(-(intBitsToFloat(PV1i.x)), 0.0));
PV0i.w = R10i.y;
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * 2.0);
R9i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].x), intBitsToFloat(uf_remappedPS[3].w)));
PS0i = R9i.x;
// 11
R11i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y), intBitsToFloat(uf_remappedPS[3].w)));
R7i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R126i.w)),intBitsToFloat(PV0i.w)) + intBitsToFloat(R9i.y)));
R1i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R126i.w)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R2i.z)));
R124i.w = floatBitsToInt(min(intBitsToFloat(PV0i.z), 1.0));
R127i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R125i.x)),intBitsToFloat(R126i.y)) + intBitsToFloat(R126i.y)));
PS1i = R127i.x;
// 12
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.y),intBitsToFloat(R124i.z),intBitsToFloat(R127i.w),-0.0),vec4(intBitsToFloat(R127i.y),intBitsToFloat(R124i.z),intBitsToFloat(R127i.w),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R9i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z), intBitsToFloat(uf_remappedPS[3].w)));
PS0i = R9i.z;
// 13
PV1i.x = R11i.y & 0x000000fc;
PV1i.y = floatBitsToInt(intBitsToFloat(R127i.x) + intBitsToFloat(0x3c23d70a));
PV1i.y = clampFI32(PV1i.y);
R125i.z = floatBitsToInt((intBitsToFloat(R126i.y) * 0.5 + 0.5));
R126i.w = floatBitsToInt(-(intBitsToFloat(R124i.w)) + 1.0);
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
PS1i = floatBitsToInt(tempResultf);
// 14
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(PS1i)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS1i)));
R8i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(PV1i.y)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PS1i)));
PS0i = floatBitsToInt(float(PV1i.x));
// 15
R127i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.y)), intBitsToFloat(uf_remappedPS[3].w)));
PV1i.x = R127i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.x)), intBitsToFloat(uf_remappedPS[3].w)));
PV1i.y = R127i.y;
R124i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.w)), intBitsToFloat(uf_remappedPS[3].w)));
PV1i.z = R124i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R124i.w)),intBitsToFloat(R126i.w)) + intBitsToFloat(R126i.w)));
R6i.w = floatBitsToInt(intBitsToFloat(PS0i) * intBitsToFloat(0x3b820821));
PS1i = R6i.w;
// 16
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R9i.x)),-(intBitsToFloat(R11i.x)),-(intBitsToFloat(R9i.z)),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
tempi.x = clampFI32(tempi.x);
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R1i.w = tempi.x;
R13i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), intBitsToFloat(R125i.z)));
R13i.x = floatBitsToInt(intBitsToFloat(R13i.x) / 2.0);
PS0i = R13i.x;
// 17
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.x),intBitsToFloat(R127i.y),intBitsToFloat(R124i.z),-0.0),vec4(intBitsToFloat(R10i.x),intBitsToFloat(R10i.y),intBitsToFloat(R10i.z),0.0)));
tempi.x = clampFI32(tempi.x);
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R126i.w = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + 1.0);
PS1i = R126i.w;
// 18
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R126i.x),intBitsToFloat(R125i.y),intBitsToFloat(R125i.w),intBitsToFloat(R125i.w)),vec4(-(intBitsToFloat(R9i.x)),-(intBitsToFloat(R11i.x)),-(intBitsToFloat(R9i.z)),-(intBitsToFloat(R3i.w)))));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R2i.w = tempi.x;
PS0i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(PV1i.x)));
// 19
R7i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R1i.w)),intBitsToFloat(R126i.w)) + intBitsToFloat(R126i.w)));
R2i.y = floatBitsToInt((intBitsToFloat(R16i.y) * 0.5 + 0.5));
R124i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.z),intBitsToFloat(PS0i)) + -(intBitsToFloat(PS0i))));
PV1i.z = R124i.z;
R3i.w = floatBitsToInt((-(intBitsToFloat(R125i.x)) * intBitsToFloat(0x40400000) + 4.0));
R12i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.x), intBitsToFloat(uf_remappedPS[5].x)));
PS1i = R12i.x;
// 20
PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.z) + 1.0);
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R124i.w)),intBitsToFloat(R127i.w)) + intBitsToFloat(R127i.w)));
PV0i.y = R123i.y;
R0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].w), intBitsToFloat(uf_remappedPS[3].w)));
R4i.w = floatBitsToInt((intBitsToFloat(R15i.x) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R4i.w = clampFI32(R4i.w);
R7i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.w),-(intBitsToFloat(R13i.x))) + intBitsToFloat(R124i.w)));
PS0i = R7i.w;
// 21
R1i.x = R2i.w;
R1i.x = floatBitsToInt(intBitsToFloat(R1i.x) * 2.0);
R0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PV0i.y)));
R7i.z = R2i.w;
R7i.z = clampFI32(R7i.z);
R0i.w = floatBitsToInt((-(intBitsToFloat(R6i.w)) * intBitsToFloat(0x3d23d70a) + intBitsToFloat(0x3d23d70a)));
R2i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.z),intBitsToFloat(PV0i.x)) + intBitsToFloat(PV0i.x)));
PS1i = R2i.x;
// 0
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[6].x),intBitsToFloat(uf_remappedPS[6].y),intBitsToFloat(uf_remappedPS[6].z),-0.0),vec4(intBitsToFloat(R1i.y),intBitsToFloat(R7i.y),intBitsToFloat(R1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R125i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R1i.w)),intBitsToFloat(R7i.x)) + intBitsToFloat(R7i.x)));
PS0i = R125i.y;
// 1
R124i.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[7].x),intBitsToFloat(uf_remappedPS[7].y),intBitsToFloat(uf_remappedPS[7].z),-0.0),vec4(intBitsToFloat(R1i.y),intBitsToFloat(R7i.y),intBitsToFloat(R1i.z),0.0)));
PV1i.x = R124i.x;
PV1i.y = R124i.x;
PV1i.z = R124i.x;
PV1i.w = R124i.x;
R124i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)));
PS1i = R124i.z;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[8].x),intBitsToFloat(uf_remappedPS[8].y),intBitsToFloat(uf_remappedPS[8].z),-0.0),vec4(intBitsToFloat(R1i.y),intBitsToFloat(R7i.y),intBitsToFloat(R1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R124i.y = tempi.x;
R125i.z = floatBitsToInt(1.0 / intBitsToFloat(R3i.w));
PS0i = R125i.z;
// 3
backupReg0i = R124i.x;
backupReg0i = R124i.x;
backupReg1i = R124i.z;
backupReg1i = R124i.z;
redcCUBE(vec4(intBitsToFloat(R124i.z),intBitsToFloat(R124i.z),intBitsToFloat(backupReg0i),intBitsToFloat(PV0i.x)),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i),intBitsToFloat(backupReg1i)),cubeMapSTM,cubeMapFaceId);
R124i.x = floatBitsToInt(cubeMapSTM.x);
R124i.y = floatBitsToInt(cubeMapSTM.y);
R124i.z = floatBitsToInt(cubeMapSTM.z);
R124i.w = cubeMapFaceId;
PV1i.x = R124i.x;
PV1i.y = R124i.y;
PV1i.z = R124i.z;
PV1i.w = R124i.w;
PS1i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.w), intBitsToFloat(R1i.x)));
// 4
R1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.x), intBitsToFloat(R125i.y)));
R7i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.y), intBitsToFloat(R125i.z)));
R5i.z = PV1i.w;
R3i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(PS1i)));
PS0i = floatBitsToInt(1.0 / abs(intBitsToFloat(PV1i.z)));
// 5
backupReg0i = R2i.y;
R7i.x = floatBitsToInt((intBitsToFloat(R6i.w) * 0.25 + 0.25));
R2i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.x), intBitsToFloat(R7i.z)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.x),intBitsToFloat(PS0i)) + 1.5));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.y),intBitsToFloat(PS0i)) + 1.5));
PV1i.w = R123i.w;
R0i.y = floatBitsToInt(intBitsToFloat(R7i.z) + intBitsToFloat(backupReg0i));
R0i.y = clampFI32(R0i.y);
PS1i = R0i.y;
// 6
R5i.x = PV1i.w;
R5i.y = PV1i.z;
R7i.z = floatBitsToInt(intBitsToFloat(R13i.x) + intBitsToFloat(R7i.w));
R2i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R15i.x),intBitsToFloat(R6i.w)) + intBitsToFloat(R0i.w)));
R1i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R15i.y),intBitsToFloat(R6i.w)) + intBitsToFloat(R0i.w)));
PS0i = R1i.y;
R7i.w = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R6i.zy)).x);
R5i.xyz = floatBitsToInt(textureLod(textureUnitPS8, vec4(redcCUBEReverse(intBitsToFloat(R5i.xy),R5i.z),cubeMapArrayIndex8),intBitsToFloat(R5i.w)).xyz);
R4i.xyz = floatBitsToInt(texture(textureUnitPS10, vec3(intBitsToFloat(R4i.x),intBitsToFloat(R4i.y),intBitsToFloat(R4i.z))).xyz);
// 0
backupReg0i = R0i.y;
R125i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R15i.z),intBitsToFloat(R6i.w)) + intBitsToFloat(R0i.w)));
R0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(backupReg0i)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x),intBitsToFloat(R7i.w)) + intBitsToFloat(uf_remappedPS[1].x)));
PV0i.z = R123i.z;
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), intBitsToFloat(R0i.z)));
R124i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R16i.y),-(intBitsToFloat(R7i.x))) + intBitsToFloat(R16i.y)));
PS0i = R124i.z;
// 1
backupReg0i = R0i.x;
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.z)));
R125i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.w),-(intBitsToFloat(R1i.x))) + intBitsToFloat(R2i.w)));
PV1i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.z)), intBitsToFloat(backupReg0i)));
PV1i.w = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.z)), intBitsToFloat(R3i.y)));
R124i.w = floatBitsToInt(1.0 / intBitsToFloat(R2i.x));
PS1i = R124i.w;
// 2
R124i.x = floatBitsToInt(-(intBitsToFloat(R6i.x)) + intBitsToFloat(PV1i.w));
PV0i.x = R124i.x;
R124i.y = floatBitsToInt(-(intBitsToFloat(R8i.x)) + intBitsToFloat(PV1i.z));
PV0i.y = R124i.y;
PV0i.z = floatBitsToInt(-(intBitsToFloat(R8i.y)) + intBitsToFloat(PV1i.x));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),-(intBitsToFloat(R1i.x))) + intBitsToFloat(R1i.y)));
R126i.y = floatBitsToInt(1.0 / intBitsToFloat(R7i.z));
PS0i = R126i.y;
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R9i.y),intBitsToFloat(R2i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.y = tempi.x;
R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.x),-(intBitsToFloat(R1i.x))) + intBitsToFloat(R125i.x)));
PS1i = R125i.z;
// 4
backupReg0i = R124i.y;
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R3i.x)),intBitsToFloat(PV1i.x)) + intBitsToFloat(R124i.x)));
PV0i.x = R123i.x;
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.z), intBitsToFloat(R124i.w)));
R127i.z = floatBitsToInt(intBitsToFloat(R7i.x) + intBitsToFloat(R124i.z));
R124i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R9i.y)),intBitsToFloat(PV1i.x)) + intBitsToFloat(backupReg0i)));
R8i.z = floatBitsToInt((intBitsToFloat(R15i.z) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R8i.z = clampFI32(R8i.z);
PS0i = R8i.z;
// 5
backupReg0i = R127i.w;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.w),-(intBitsToFloat(R7i.y))) + intBitsToFloat(R2i.w)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),-(intBitsToFloat(R7i.y))) + intBitsToFloat(R1i.y)));
PV1i.y = R123i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.x),-(intBitsToFloat(R7i.y))) + intBitsToFloat(R125i.x)));
R124i.x = floatBitsToInt(intBitsToFloat(R1i.x) + intBitsToFloat(backupReg0i));
PS1i = R124i.x;
// 6
backupReg0i = R125i.z;
R125i.x = floatBitsToInt(intBitsToFloat(R1i.x) + intBitsToFloat(R125i.y));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.w),intBitsToFloat(R124i.w)) + intBitsToFloat(PV1i.z)));
PV0i.y = R123i.y;
R125i.z = floatBitsToInt(intBitsToFloat(R7i.y) + intBitsToFloat(PV1i.x));
R124i.w = floatBitsToInt(intBitsToFloat(R1i.x) + intBitsToFloat(backupReg0i));
R124i.z = floatBitsToInt(intBitsToFloat(R7i.y) + intBitsToFloat(PV1i.y));
PS0i = R124i.z;
// 7
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R9i.x)),-(intBitsToFloat(R11i.x)),-(intBitsToFloat(R9i.z)),-0.0),vec4(intBitsToFloat(R10i.x),intBitsToFloat(R10i.y),intBitsToFloat(R10i.z),0.0)));
tempi.x = clampFI32(tempi.x);
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.y));
PS1i = floatBitsToInt(tempResultf);
// 8
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),-(intBitsToFloat(R13i.x))) + intBitsToFloat(PV1i.x)));
PV0i.x = R123i.x;
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R12i.x), intBitsToFloat(PV1i.x)));
R126i.z = floatBitsToInt(intBitsToFloat(R7i.y) + intBitsToFloat(R127i.w));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS1i)));
R126i.x = floatBitsToInt(0.25 * intBitsToFloat(R126i.y));
PS0i = R126i.x;
// 9
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].x),intBitsToFloat(R0i.y)) + intBitsToFloat(R14i.x)));
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].y),intBitsToFloat(R0i.y)) + intBitsToFloat(R14i.y)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z), intBitsToFloat(PV0i.w)));
PV1i.w = floatBitsToInt(intBitsToFloat(R13i.x) + intBitsToFloat(PV0i.x));
R9i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(R126i.w)));
PS1i = R9i.z;
// 10
backupReg0i = R0i.y;
backupReg1i = R14i.z;
backupReg2i = R125i.x;
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.x), intBitsToFloat(R126i.x)));
PV0i.y = floatBitsToInt(intBitsToFloat(PV1i.z) * intBitsToFloat(0x3ced9168));
PV0i.y = clampFI32(PV0i.y);
R14i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].z),intBitsToFloat(backupReg0i)) + intBitsToFloat(backupReg1i)));
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg2i), intBitsToFloat(R126i.x)));
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.w));
// 11
backupReg0i = R126i.x;
backupReg1i = R125i.z;
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS0i), intBitsToFloat(R124i.y)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(R3i.w)) + 1.0));
PV1i.y = R123i.y;
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.w), intBitsToFloat(backupReg0i)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(backupReg1i)));
PS1i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(R124i.z)));
// 12
backupReg0i = R127i.z;
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.w)),intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.y)));
PV0i.x = R123i.x;
R124i.y = floatBitsToInt((intBitsToFloat(R15i.y) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R124i.y = clampFI32(R124i.y);
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.x),intBitsToFloat(PV1i.w)) + intBitsToFloat(R4i.x)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R126i.z)));
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(PS1i)) + intBitsToFloat(R4i.y)));
PS0i = R126i.y;
// 13
R124i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.z),intBitsToFloat(PV0i.w)) + intBitsToFloat(R4i.z)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R14i.z), intBitsToFloat(PV0i.x)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PV0i.x)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PV0i.x)));
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].x), intBitsToFloat(R126i.w)));
PS1i = R127i.x;
// 14
backupReg0i = R126i.x;
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.z), intBitsToFloat(backupReg0i)));
PV0i.x = R126i.x;
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R4i.w)));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(R124i.y)));
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(R8i.z)));
PS0i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].y), intBitsToFloat(R125i.x)));
// 15
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PS0i),intBitsToFloat(PV0i.x)) + intBitsToFloat(R126i.y)));
PV1i.y = R11i.y & int(1);
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].z), intBitsToFloat(R125i.z)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.z)));
PV1i.w = R123i.w;
R122i.x = floatBitsToInt((intBitsToFloat(PV0i.y) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PS1i = R122i.x;
// 16
R123i.x = floatBitsToInt((intBitsToFloat(R126i.z) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(R126i.x)) + intBitsToFloat(R124i.x)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((intBitsToFloat(R126i.w) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV0i.z = R123i.z;
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(PS1i));
R126i.y = floatBitsToInt(float(PV1i.y));
PS0i = R126i.y;
// 17
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.z), intBitsToFloat(R16i.z)));
PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.y) + intBitsToFloat(PV0i.z));
PV1i.z = floatBitsToInt(intBitsToFloat(R127i.x) + intBitsToFloat(PV0i.x));
R11i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R16i.z),intBitsToFloat(PV0i.w)) + intBitsToFloat(R17i.x)));
PS1i = R11i.x;
// 18
R11i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R16i.z),intBitsToFloat(PV1i.z)) + intBitsToFloat(R17i.y)));
R11i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R16i.z),intBitsToFloat(PV1i.y)) + intBitsToFloat(R17i.z)));
R11i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PV1i.x)));
// export
passPixelColor0 = vec4(intBitsToFloat(R11i.x), intBitsToFloat(R11i.y), intBitsToFloat(R11i.z), intBitsToFloat(R11i.w));
float luma = dot(passPixelColor0.rgb, vec3(0.2126, 0.7152, 0.0722));
#if (ENABLE_COLOR_FADE == 1)
float depth = texture(textureUnitPS4, passParameterSem0.xy).x;
float factor = smoothstep(0.0005, 0.00075, depth);
passPixelColor0.rgb = mix(passPixelColor0.rgb, vec3(luma), factor);
#else
passPixelColor0.rgb = vec3(luma);
#endif
}

View File

@ -0,0 +1,722 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader bff17056bfac28dd
// Monochromia
// Water - rainy weather
// original shader dumped using cemu 1.11.c, BotW 1.3.1
#define ENABLE_COLOR_FADE 0 // set this to 1 to enable, 0 to disable the effect
uniform ivec4 uf_remappedPS[14];
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf45c6000 res 1280x720x1 dim 1 tm: 4 format 041a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0xf494a800 res 1280x720x1 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: 1
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 6) uniform sampler2D textureUnitPS6;// Tex6 addr 0xf5054000 res 640x360x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 7) uniform sampler2D textureUnitPS7;// Tex7 addr 0xf5846000 res 640x360x1 dim 1 tm: 4 format 0001 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler7 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 8) uniform samplerCubeArray textureUnitPS8;// Tex8 addr 0x3db66800 res 64x64x1 dim 3 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x4) sliceView: 0x0 (num 0x6) Sampler8 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 10) uniform sampler2DArray textureUnitPS10;// Tex10 addr 0xf5593000 res 640x360x2 dim 5 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x2) Sampler10 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 11) uniform sampler2D textureUnitPS11;// Tex11 addr 0xf575f800 res 640x360x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler11 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 13) uniform sampler2D textureUnitPS13;// Tex13 addr 0xf5977800 res 640x360x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler13 ClampX/Y/Z: 2 2 2 border: 1
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem4;
layout(location = 2) in vec4 passParameterSem6;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
void redcCUBE(vec4 src0, vec4 src1, out vec3 stm, out int faceId)
{
// stm -> x .. s, y .. t, z .. MajorAxis*2.0
vec3 inputCoord = normalize(vec3(src1.y, src1.x, src0.x));
float rx = inputCoord.x;
float ry = inputCoord.y;
float rz = inputCoord.z;
if( abs(rx) > abs(ry) && abs(rx) > abs(rz) )
{
stm.z = rx*2.0;
stm.xy = vec2(ry,rz);
if( rx >= 0.0 )
{
faceId = 0;
}
else
{
faceId = 1;
}
}
else if( abs(ry) > abs(rx) && abs(ry) > abs(rz) )
{
stm.z = ry*2.0;
stm.xy = vec2(rx,rz);
if( ry >= 0.0 )
{
faceId = 2;
}
else
{
faceId = 3;
}
}
else //if( abs(rz) > abs(ry) && abs(rz) > abs(rx) )
{
stm.z = rz*2.0;
stm.xy = vec2(rx,ry);
if( rz >= 0.0 )
{
faceId = 4;
}
else
{
faceId = 5;
}
}
}
vec3 redcCUBEReverse(vec2 st, int faceId)
{
st.yx = st.xy;
vec3 v;
float majorAxis = 1.0;
if( faceId == 0 )
{
v.yz = (st-vec2(1.5))*(majorAxis*2.0);
v.x = 1.0;
}
else if( faceId == 1 )
{
v.yz = (st-vec2(1.5))*(majorAxis*2.0);
v.x = -1.0;
}
else if( faceId == 2 )
{
v.xz = (st-vec2(1.5))*(majorAxis*2.0);
v.y = 1.0;
}
else if( faceId == 3 )
{
v.xz = (st-vec2(1.5))*(majorAxis*2.0);
v.y = -1.0;
}
else if( faceId == 4 )
{
v.xy = (st-vec2(1.5))*(majorAxis*2.0);
v.z = 1.0;
}
else
{
v.xy = (st-vec2(1.5))*(majorAxis*2.0);
v.z = -1.0;
}
return v;
}
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 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 R9i = ivec4(0);
ivec4 R10i = ivec4(0);
ivec4 R11i = ivec4(0);
ivec4 R12i = ivec4(0);
ivec4 R13i = ivec4(0);
ivec4 R14i = ivec4(0);
ivec4 R15i = ivec4(0);
ivec4 R16i = ivec4(0);
ivec4 R17i = 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;
float cubeMapArrayIndex8 = 0.0;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem4);
R2i = floatBitsToInt(passParameterSem6);
R3i.w = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R0i.xy)).x);
R6i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R2i.zw)).xyzw);
R4i.xyzw = floatBitsToInt(textureGather(textureUnitPS6, intBitsToFloat(R0i.xy)).xyzw);
R5i.xyzw = floatBitsToInt(textureGather(textureUnitPS7, intBitsToFloat(R0i.xy)).xyzw);
R7i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R2i.zw)).xyzw);
// 0
PV0i.x = floatBitsToInt(-(intBitsToFloat(R3i.w)) + intBitsToFloat(R4i.w));
R124i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.w),intBitsToFloat(uf_remappedPS[0].x)) + intBitsToFloat(uf_remappedPS[1].x)));
PV0i.y = R124i.y;
PV0i.z = floatBitsToInt(-(intBitsToFloat(R3i.w)) + intBitsToFloat(R4i.y));
PV0i.w = floatBitsToInt(-(intBitsToFloat(R3i.w)) + intBitsToFloat(R4i.x));
PS0i = floatBitsToInt(-(intBitsToFloat(R3i.w)) + intBitsToFloat(R4i.z));
// 1
R127i.x = floatBitsToInt(max(intBitsToFloat(PV0i.z), -(intBitsToFloat(PV0i.z))));
R127i.y = floatBitsToInt(max(intBitsToFloat(PV0i.x), -(intBitsToFloat(PV0i.x))));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(uf_remappedPS[2].y)));
R127i.w = floatBitsToInt(max(intBitsToFloat(PV0i.w), -(intBitsToFloat(PV0i.w))));
R126i.y = floatBitsToInt(max(intBitsToFloat(PS0i), -(intBitsToFloat(PS0i))));
PS1i = R126i.y;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R6i.x),intBitsToFloat(R6i.y),intBitsToFloat(R6i.z),-0.0),vec4(intBitsToFloat(0x3eaaaaab),intBitsToFloat(0x3eaaaaab),intBitsToFloat(0x3eaaaaab),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R4i.y = floatBitsToInt(1.0 / intBitsToFloat(PV1i.z));
PS0i = R4i.y;
// 3
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), intBitsToFloat(PS0i)));
PV1i.y = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R5i.y));
PV1i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R5i.x));
PV1i.w = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R5i.w));
PS1i = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R5i.z));
// 4
PV0i.x = floatBitsToInt(max(intBitsToFloat(PS1i), -(intBitsToFloat(PS1i))));
PV0i.x = floatBitsToInt(intBitsToFloat(PV0i.x) * 4.0);
PV0i.y = floatBitsToInt(max(intBitsToFloat(PV1i.y), -(intBitsToFloat(PV1i.y))));
PV0i.y = floatBitsToInt(intBitsToFloat(PV0i.y) * 4.0);
PV0i.z = floatBitsToInt(max(intBitsToFloat(PV1i.z), -(intBitsToFloat(PV1i.z))));
PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) * 4.0);
PV0i.w = floatBitsToInt(max(intBitsToFloat(PV1i.w), -(intBitsToFloat(PV1i.w))));
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * 4.0);
R125i.y = floatBitsToInt(floor(intBitsToFloat(R1i.x)));
PS0i = R125i.y;
// 5
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.y),intBitsToFloat(R126i.x)) + intBitsToFloat(PV0i.x)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(R126i.x)) + intBitsToFloat(PV0i.y)));
PV1i.y = R123i.y;
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),intBitsToFloat(R126i.x)) + intBitsToFloat(PV0i.z)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(R126i.x)) + intBitsToFloat(PV0i.w)));
PV1i.w = R123i.w;
PS1i = floatBitsToInt(floor(intBitsToFloat(R1i.y)));
// 6
backupReg0i = R125i.y;
backupReg0i = R125i.y;
R126i.x = floatBitsToInt(intBitsToFloat(R1i.y) + -(intBitsToFloat(PS1i)));
R125i.y = floatBitsToInt(intBitsToFloat(backupReg0i) + -(0.5));
PV0i.z = floatBitsToInt(-(intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.w));
R127i.w = floatBitsToInt(intBitsToFloat(R1i.x) + -(intBitsToFloat(backupReg0i)));
R126i.z = floatBitsToInt(intBitsToFloat(PS1i) + -(0.5));
PS0i = R126i.z;
// 7
PV1i.x = floatBitsToInt(-(intBitsToFloat(R127i.z)) + intBitsToFloat(PV0i.z));
PV1i.y = floatBitsToInt(-(intBitsToFloat(R127i.x)) + intBitsToFloat(PV0i.z));
R5i.z = floatBitsToInt((intBitsToFloat(R6i.x) * 2.0 + -(1.0)));
R5i.w = floatBitsToInt((intBitsToFloat(R6i.y) * 2.0 + -(1.0)));
R4i.z = floatBitsToInt((intBitsToFloat(R6i.z) * 2.0 + -(1.0)));
PS1i = R4i.z;
// 8
R5i.x = uf_remappedPS[3].y;
R2i.y = uf_remappedPS[4].y;
PV0i.z = floatBitsToInt(intBitsToFloat(R127i.x) + intBitsToFloat(PV1i.x));
PV0i.w = floatBitsToInt(intBitsToFloat(R127i.z) + intBitsToFloat(PV1i.y));
R3i.z = floatBitsToInt(-(intBitsToFloat(R124i.y)));
PS0i = R3i.z;
// 9
backupReg0i = R0i.w;
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.z) + intBitsToFloat(R126i.x));
PV1i.x = clampFI32(PV1i.x);
PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.w) + intBitsToFloat(R127i.w));
PV1i.y = clampFI32(PV1i.y);
R8i.z = uf_remappedPS[5].y;
R0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(R124i.y))));
PV1i.w = R0i.w;
R5i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), -(intBitsToFloat(R124i.y))));
PS1i = R5i.y;
// 10
PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(R126i.z));
R0i.y = floatBitsToInt(intBitsToFloat(PV1i.w) + -(intBitsToFloat(uf_remappedPS[6].x)));
R0i.z = floatBitsToInt(intBitsToFloat(PS1i) + -(intBitsToFloat(uf_remappedPS[6].y)));
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.y) + intBitsToFloat(R125i.y));
R2i.z = floatBitsToInt(intBitsToFloat(R3i.z) + -(intBitsToFloat(uf_remappedPS[6].z)));
PS0i = R2i.z;
// 11
R1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(PV0i.w)));
R1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), intBitsToFloat(PV0i.x)));
R1i.z = floatBitsToInt(roundEven(1.0));
R9i.w = 0x40400000;
R10i.w = floatBitsToInt((-(intBitsToFloat(R6i.w)) * intBitsToFloat(0x40400000) + intBitsToFloat(0x40400000)));
PS1i = R10i.w;
R16i.xyzw = floatBitsToInt(texture(textureUnitPS11, intBitsToFloat(R1i.xy)).xyzw);
R14i.xyz = floatBitsToInt(texture(textureUnitPS10, vec3(intBitsToFloat(R1i.x),intBitsToFloat(R1i.y),intBitsToFloat(R1i.z))).xyz);
R17i.xyz = floatBitsToInt(texture(textureUnitPS13, intBitsToFloat(R1i.xy)).xyz);
// 0
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.z),intBitsToFloat(R5i.w),intBitsToFloat(R4i.z),-0.0),vec4(intBitsToFloat(R5i.z),intBitsToFloat(R5i.w),intBitsToFloat(R4i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R122i.x = floatBitsToInt((intBitsToFloat(R16i.w) * 2.0 + -(1.0)));
R122i.x = clampFI32(R122i.x);
PS0i = R122i.x;
// 1
PV1i.x = floatBitsToInt(intBitsToFloat(R4i.y) * intBitsToFloat(0x41c80000));
PV1i.x = clampFI32(PV1i.x);
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[7].x), intBitsToFloat(PS0i)));
PV1i.y = floatBitsToInt(intBitsToFloat(PV1i.y) * 2.0);
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.x), intBitsToFloat(R16i.y)));
R126i.w = floatBitsToInt(-(intBitsToFloat(R6i.w)) + 1.0);
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
PS1i = floatBitsToInt(tempResultf);
// 2
backupReg0i = R4i.z;
R1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.z), intBitsToFloat(PS1i)));
PV0i.x = R1i.x;
R4i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.w), intBitsToFloat(PS1i)));
PV0i.y = R4i.y;
R4i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS1i)));
PV0i.z = R4i.z;
R127i.w = floatBitsToInt(intBitsToFloat(PV1i.y) * intBitsToFloat(0x3f4ccccd));
R125i.w = floatBitsToInt((intBitsToFloat(PV1i.x) * 0.5 + 0.5));
PS0i = R125i.w;
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R2i.y),intBitsToFloat(R8i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R3i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[8].x)), intBitsToFloat(uf_remappedPS[7].w)));
PS1i = R3i.x;
// 4
R127i.x = floatBitsToInt((intBitsToFloat(R126i.w) * 0.5 + 0.5));
R3i.y = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[8].y)), intBitsToFloat(uf_remappedPS[7].w)));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(R127i.w)));
PV0i.z = R126i.z;
R5i.w = floatBitsToInt(intBitsToFloat(R127i.z) + intBitsToFloat(0x3f4ccccd));
R5i.w = clampFI32(R5i.w);
R127i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.w)),intBitsToFloat(R126i.w)) + intBitsToFloat(R126i.w)));
PS0i = R127i.w;
// 5
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R0i.w),intBitsToFloat(R5i.y),intBitsToFloat(R3i.z),-0.0),vec4(intBitsToFloat(R0i.w),intBitsToFloat(R5i.y),intBitsToFloat(R3i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R126i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R5i.x)),intBitsToFloat(PV0i.z)) + intBitsToFloat(R1i.x)));
PS1i = R126i.x;
// 6
backupReg0i = R126i.z;
R4i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[8].z)), intBitsToFloat(uf_remappedPS[7].w)));
R125i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R2i.y)),intBitsToFloat(R126i.z)) + intBitsToFloat(R4i.y)));
PV0i.y = R125i.y;
R126i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R8i.z)),intBitsToFloat(backupReg0i)) + intBitsToFloat(R4i.z)));
PV0i.z = R126i.z;
R126i.w = floatBitsToInt(intBitsToFloat(R127i.w) + intBitsToFloat(0x3c23d70a));
R126i.w = clampFI32(R126i.w);
R127i.w = floatBitsToInt(sqrt(intBitsToFloat(PV1i.x)));
PS0i = R127i.w;
// 7
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R126i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PS0i));
// 8
backupReg0i = R127i.w;
R0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), intBitsToFloat(PS1i)));
PV0i.x = R0i.x;
R1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.y), intBitsToFloat(PS1i)));
PV0i.y = R1i.y;
R5i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(PS1i)));
R127i.w = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(0x43480000));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 9
backupReg0i = R126i.x;
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS0i)));
PV1i.x = R126i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(PS0i)));
PV1i.y = R127i.y;
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.z), intBitsToFloat(PS0i)));
PV1i.z = R125i.z;
R6i.w = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(uf_remappedPS[8].x));
R6i.y = floatBitsToInt(intBitsToFloat(PV0i.y) + intBitsToFloat(uf_remappedPS[8].y));
PS1i = R6i.y;
// 10
backupReg0i = R0i.x;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(R1i.y),intBitsToFloat(R5i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
tempi.x = floatBitsToInt(intBitsToFloat(tempi.x) * 2.0);
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R6i.z = floatBitsToInt(intBitsToFloat(R5i.z) + intBitsToFloat(uf_remappedPS[8].z));
PS0i = R6i.z;
// 11
backupReg0i = R127i.x;
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R126i.x)) + intBitsToFloat(R0i.x)));
R124i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R127i.y)) + intBitsToFloat(R1i.y)));
R126i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R125i.z)) + intBitsToFloat(R5i.z)));
R1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(R126i.w)));
R8i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(backupReg0i)));
R8i.y = floatBitsToInt(intBitsToFloat(R8i.y) / 2.0);
PS1i = R8i.y;
// 12
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R0i.y),intBitsToFloat(R0i.z),intBitsToFloat(R2i.z),-0.0),vec4(intBitsToFloat(R0i.y),intBitsToFloat(R0i.z),intBitsToFloat(R2i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R8i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].x), intBitsToFloat(R127i.z)));
PS0i = R8i.x;
// 13
backupReg0i = R127i.w;
backupReg0i = R127i.w;
R11i.x = floatBitsToInt(intBitsToFloat(R127i.z) + 0.25);
R11i.x = clampFI32(R11i.x);
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[7].w), intBitsToFloat(uf_remappedPS[7].w)));
R127i.z = floatBitsToInt(intBitsToFloat(R7i.w) * intBitsToFloat(0x437f0000));
R127i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(backupReg0i)) + intBitsToFloat(PV0i.x)));
R13i.x = floatBitsToInt((intBitsToFloat(R7i.x) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R13i.x = clampFI32(R13i.x);
PS1i = R13i.x;
// 14
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.x),intBitsToFloat(R124i.y),intBitsToFloat(R126i.z),-0.0),vec4(intBitsToFloat(R0i.y),intBitsToFloat(R0i.z),intBitsToFloat(R2i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R125i.y = tempi.x;
R12i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(PV1i.y)));
PS0i = R12i.x;
// 15
backupReg0i = R7i.y;
R15i.x = floatBitsToInt((intBitsToFloat(R7i.z) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R15i.x = clampFI32(R15i.x);
R7i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.z), intBitsToFloat(R16i.z)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.x)) + -(intBitsToFloat(R127i.w))));
PV1i.z = R123i.z;
R7i.w = floatBitsToInt((intBitsToFloat(backupReg0i) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R7i.w = clampFI32(R7i.w);
R127i.w = int(intBitsToFloat(R127i.z));
PS1i = R127i.w;
// 16
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R2i.y),intBitsToFloat(R8i.z),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(R127i.y),intBitsToFloat(R125i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
PS0i = floatBitsToInt(sqrt(intBitsToFloat(PV1i.z)));
// 17
PV1i.x = floatBitsToInt(-(intBitsToFloat(R125i.y)) + intBitsToFloat(PS0i));
R125i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R125i.w)),intBitsToFloat(PV0i.x)) + intBitsToFloat(PV0i.x)));
PV1i.y = R125i.y;
R0i.z = R127i.w & int(1);
PS1i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.z), intBitsToFloat(R6i.z)));
// 18
R6i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.x),-(intBitsToFloat(PV1i.y))) + intBitsToFloat(R126i.x)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),intBitsToFloat(PV1i.x)) + intBitsToFloat(R3i.z)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.y),intBitsToFloat(PV1i.x)) + intBitsToFloat(R5i.y)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(PV1i.x)) + intBitsToFloat(R0i.w)));
PV0i.w = R123i.w;
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R6i.y)) + intBitsToFloat(PS1i)));
PS0i = R127i.x;
// 19
backupReg0i = R2i.y;
backupReg1i = R8i.z;
R7i.x = floatBitsToInt(-(intBitsToFloat(uf_remappedPS[6].x)) + intBitsToFloat(PV0i.w));
PV1i.x = R7i.x;
R2i.y = floatBitsToInt(-(intBitsToFloat(uf_remappedPS[6].y)) + intBitsToFloat(PV0i.z));
PV1i.y = R2i.y;
R8i.z = floatBitsToInt(-(intBitsToFloat(uf_remappedPS[6].z)) + intBitsToFloat(PV0i.y));
PV1i.z = R8i.z;
R0i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),-(intBitsToFloat(R125i.y))) + intBitsToFloat(R127i.y)));
R7i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg1i),-(intBitsToFloat(R125i.y))) + intBitsToFloat(R125i.z)));
PS1i = R7i.z;
// 20
R5i.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = R5i.x;
PV0i.y = R5i.x;
PV0i.z = R5i.x;
PV0i.w = R5i.x;
R3i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.w),intBitsToFloat(R6i.w)) + intBitsToFloat(R127i.x)));
PS0i = R3i.z;
// 0
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R1i.x),intBitsToFloat(R4i.y),intBitsToFloat(R4i.z),-0.0),vec4(intBitsToFloat(uf_remappedPS[10].x),intBitsToFloat(uf_remappedPS[10].y),intBitsToFloat(uf_remappedPS[10].z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
tempResultf = 1.0 / sqrt(intBitsToFloat(R5i.x));
R127i.w = floatBitsToInt(tempResultf);
PS0i = R127i.w;
// 1
R127i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R1i.x),intBitsToFloat(R4i.y),intBitsToFloat(R4i.z),-0.0),vec4(intBitsToFloat(uf_remappedPS[11].x),intBitsToFloat(uf_remappedPS[11].y),intBitsToFloat(uf_remappedPS[11].z),0.0)));
PV1i.x = R127i.x;
PV1i.y = R127i.x;
PV1i.z = R127i.x;
PV1i.w = R127i.x;
R127i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)));
PS1i = R127i.z;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R1i.x),intBitsToFloat(R4i.y),intBitsToFloat(R4i.z),-0.0),vec4(intBitsToFloat(uf_remappedPS[12].x),intBitsToFloat(uf_remappedPS[12].y),intBitsToFloat(uf_remappedPS[12].z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R127i.y = tempi.x;
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.x), intBitsToFloat(R127i.w)));
PS0i = R126i.x;
// 3
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.z), intBitsToFloat(R7i.z)));
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R127i.w)));
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.z), intBitsToFloat(R127i.w)));
tempResultf = 1.0 / sqrt(intBitsToFloat(R3i.z));
R126i.y = floatBitsToInt(tempResultf);
PS1i = R126i.y;
// 4
redcCUBE(vec4(intBitsToFloat(R127i.z),intBitsToFloat(R127i.z),intBitsToFloat(R127i.x),intBitsToFloat(R127i.y)),vec4(intBitsToFloat(R127i.y),intBitsToFloat(R127i.x),intBitsToFloat(R127i.z),intBitsToFloat(R127i.z)),cubeMapSTM,cubeMapFaceId);
R124i.x = floatBitsToInt(cubeMapSTM.x);
R124i.y = floatBitsToInt(cubeMapSTM.y);
R124i.z = floatBitsToInt(cubeMapSTM.z);
R124i.w = cubeMapFaceId;
PV0i.x = R124i.x;
PV0i.y = R124i.y;
PV0i.z = R124i.z;
PV0i.w = R124i.w;
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.w),intBitsToFloat(R0i.w)) + intBitsToFloat(PV1i.x)));
PS0i = R127i.x;
// 5
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[10].x),intBitsToFloat(uf_remappedPS[10].y),intBitsToFloat(uf_remappedPS[10].z),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(R125i.y),intBitsToFloat(R125i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.z = floatBitsToInt(1.0 / abs(intBitsToFloat(PV0i.z)));
PS1i = R127i.z;
// 6
R2i.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[11].x),intBitsToFloat(uf_remappedPS[11].y),intBitsToFloat(uf_remappedPS[11].z),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(R125i.y),intBitsToFloat(R125i.z),0.0)));
PV0i.x = R2i.x;
PV0i.y = R2i.x;
PV0i.z = R2i.x;
PV0i.w = R2i.x;
R2i.z = floatBitsToInt(-(intBitsToFloat(PV1i.x)));
PS0i = R2i.z;
// 7
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[12].x),intBitsToFloat(uf_remappedPS[12].y),intBitsToFloat(uf_remappedPS[12].z),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(R125i.y),intBitsToFloat(R125i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R2i.y = tempi.x;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.x),intBitsToFloat(R127i.z)) + 1.5));
PS1i = R122i.x;
// 8
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.x),intBitsToFloat(R6i.x)) + intBitsToFloat(R127i.x)));
R9i.y = PS1i;
R9i.z = R124i.w;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.y),intBitsToFloat(R127i.z)) + 1.5));
PV0i.w = R123i.w;
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.w), intBitsToFloat(R126i.y)));
PS0i = R127i.x;
// 9
redcCUBE(vec4(intBitsToFloat(R2i.z),intBitsToFloat(R2i.z),intBitsToFloat(R2i.x),intBitsToFloat(R2i.y)),vec4(intBitsToFloat(R2i.y),intBitsToFloat(R2i.x),intBitsToFloat(R2i.z),intBitsToFloat(R2i.z)),cubeMapSTM,cubeMapFaceId);
R124i.x = floatBitsToInt(cubeMapSTM.x);
R124i.y = floatBitsToInt(cubeMapSTM.y);
R124i.z = floatBitsToInt(cubeMapSTM.z);
R124i.w = cubeMapFaceId;
PV1i.x = R124i.x;
PV1i.y = R124i.y;
PV1i.z = R124i.z;
PV1i.w = R124i.w;
R9i.x = PV0i.w;
PS1i = R9i.x;
// 10
backupReg0i = R6i.y;
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.z), intBitsToFloat(R126i.y)));
R6i.y = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R127i.x)), intBitsToFloat(uf_remappedPS[7].w)));
R10i.z = PV1i.w;
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R126i.y)));
PS0i = floatBitsToInt(1.0 / abs(intBitsToFloat(PV1i.z)));
// 11
R2i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.w)), intBitsToFloat(uf_remappedPS[7].w)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.x),intBitsToFloat(PS0i)) + 1.5));
PV1i.y = R123i.y;
R6i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.x)), intBitsToFloat(uf_remappedPS[7].w)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.y),intBitsToFloat(PS0i)) + 1.5));
PV1i.w = R123i.w;
tempResultf = 1.0 / sqrt(intBitsToFloat(R126i.x));
PS1i = floatBitsToInt(tempResultf);
// 12
backupReg0i = R0i.w;
backupReg1i = R7i.z;
R10i.x = PV1i.w;
R10i.y = PV1i.y;
R2i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.x), intBitsToFloat(PS1i)));
R0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS1i)));
R7i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg1i), intBitsToFloat(PS1i)));
PS0i = R7i.z;
R9i.xyz = floatBitsToInt(textureLod(textureUnitPS8, vec4(redcCUBEReverse(intBitsToFloat(R9i.xy),R9i.z),cubeMapArrayIndex8),intBitsToFloat(R9i.w)).xyz);
R10i.xyz = floatBitsToInt(textureLod(textureUnitPS8, vec4(redcCUBEReverse(intBitsToFloat(R10i.xy),R10i.z),cubeMapArrayIndex8),intBitsToFloat(R10i.w)).xyz);
// 0
backupReg0i = R0i.x;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(R1i.y),intBitsToFloat(R5i.z),-0.0),vec4(intBitsToFloat(R2i.z),intBitsToFloat(R0i.w),intBitsToFloat(R7i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
PS0i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.y), intBitsToFloat(R2i.x)));
// 1
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.x),intBitsToFloat(R6i.z)) + intBitsToFloat(PS0i)));
PV1i.x = R123i.x;
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.z), intBitsToFloat(R7i.z)));
R124i.z = floatBitsToInt(max(-(intBitsToFloat(PV0i.x)), 0.0));
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.x), intBitsToFloat(R7i.z)));
R124i.y = floatBitsToInt(float(R0i.z));
PS1i = R124i.y;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R6i.y),intBitsToFloat(R2i.x),intBitsToFloat(PV1i.y),-0.0),vec4(intBitsToFloat(R2i.z),intBitsToFloat(R0i.w),1.0,0.0)));
tempi.x = clampFI32(tempi.x);
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.x),intBitsToFloat(R6i.y)) + intBitsToFloat(PV1i.x)));
R126i.x = clampFI32(R126i.x);
PS0i = R126i.x;
// 3
backupReg0i = R124i.y;
backupReg1i = R0i.w;
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
R124i.y = floatBitsToInt(min(intBitsToFloat(R124i.z), 1.0));
PV1i.y = R124i.y;
PV1i.z = floatBitsToInt(-(intBitsToFloat(PS0i)) + 1.0);
R0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R7i.y)));
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.y),intBitsToFloat(backupReg1i)) + intBitsToFloat(R124i.w)));
PS1i = R122i.x;
// 4
PV0i.x = floatBitsToInt(-(intBitsToFloat(PV1i.y)) + 1.0);
R126i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R126i.x)),intBitsToFloat(PV1i.z)) + intBitsToFloat(PV1i.z)));
PV0i.y = R126i.y;
R124i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.x),intBitsToFloat(R2i.z)) + intBitsToFloat(PS1i)));
R124i.z = clampFI32(R124i.z);
PV0i.z = R124i.z;
R124i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.w),intBitsToFloat(PV1i.x)) + -(intBitsToFloat(PV1i.x))));
PV0i.w = R124i.w;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),-(intBitsToFloat(R8i.y))) + intBitsToFloat(PV1i.y)));
PS0i = R122i.x;
// 5
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R126i.x)),intBitsToFloat(PV0i.y)) + intBitsToFloat(PV0i.y)));
PV1i.x = R123i.x;
PV1i.y = floatBitsToInt(intBitsToFloat(R8i.y) + intBitsToFloat(PS0i));
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.w) + 1.0);
R127i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R124i.y)),intBitsToFloat(PV0i.x)) + intBitsToFloat(PV0i.x)));
PV1i.w = R127i.w;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),-(intBitsToFloat(R8i.y))) + intBitsToFloat(PV0i.z)));
PS1i = R122i.x;
// 6
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PV1i.x)));
PV0i.x = R126i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.w),intBitsToFloat(PV1i.z)) + intBitsToFloat(PV1i.z)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R124i.y)),intBitsToFloat(PV1i.w)) + intBitsToFloat(PV1i.w)));
PV0i.z = R123i.z;
R124i.w = floatBitsToInt(intBitsToFloat(R8i.y) + intBitsToFloat(PS1i));
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.y));
// 7
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.x), intBitsToFloat(R124i.z)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PV0i.z)));
R123i.z = floatBitsToInt((-(intBitsToFloat(PV0i.x)) * intBitsToFloat(0x3ca3d70a) + intBitsToFloat(0x3ca3d70a)));
PV1i.z = R123i.z;
R127i.w = floatBitsToInt(0.25 * intBitsToFloat(PS0i));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PV0i.y));
// 8
backupReg0i = R124i.w;
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), intBitsToFloat(PS1i)));
R126i.y = floatBitsToInt(intBitsToFloat(R126i.x) + intBitsToFloat(PV1i.z));
R124i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R11i.x),-(intBitsToFloat(R126i.x))) + intBitsToFloat(R11i.x)));
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(R5i.w)));
PV0i.w = R124i.w;
PS0i = floatBitsToInt(1.0 / intBitsToFloat(backupReg0i));
// 9
R123i.x = floatBitsToInt((-(intBitsToFloat(PV0i.w)) * intBitsToFloat(0x3ca3d70a) + intBitsToFloat(0x3ca3d70a)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R9i.y),-(intBitsToFloat(PV0i.w))) + intBitsToFloat(R9i.y)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R9i.x),-(intBitsToFloat(PV0i.w))) + intBitsToFloat(R9i.x)));
PV1i.z = R123i.z;
R125i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R9i.z),-(intBitsToFloat(PV0i.w))) + intBitsToFloat(R9i.z)));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS0i), intBitsToFloat(PV0i.x)));
PS1i = R127i.z;
// 10
backupReg0i = R126i.y;
backupReg1i = R124i.x;
R124i.x = floatBitsToInt(intBitsToFloat(R124i.w) + intBitsToFloat(PV1i.x));
PV0i.x = R124i.x;
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R127i.w)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[13].x),intBitsToFloat(R124i.z)) + intBitsToFloat(PV1i.z)));
PV0i.z = R123i.z;
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg1i), intBitsToFloat(R12i.x)));
R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[13].y),intBitsToFloat(R124i.z)) + intBitsToFloat(PV1i.y)));
PS0i = R125i.z;
// 11
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R127i.z)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[13].z),intBitsToFloat(R124i.z)) + intBitsToFloat(R125i.w)));
PV1i.y = R123i.y;
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.x),intBitsToFloat(PV0i.x)) + intBitsToFloat(R14i.x)));
R125i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.y),intBitsToFloat(PV0i.x)) + intBitsToFloat(R14i.y)));
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R13i.x)));
PS1i = R124i.y;
// 12
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), intBitsToFloat(R7i.w)));
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(R15i.x)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[13].x), intBitsToFloat(R126i.y)));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R124i.x)) + intBitsToFloat(R14i.z)));
PS0i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[13].y), intBitsToFloat(R126i.y)));
// 13
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R126i.x)) + intBitsToFloat(R127i.z)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PS0i),intBitsToFloat(R126i.x)) + intBitsToFloat(R125i.w)));
PV1i.y = R123i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[13].z), intBitsToFloat(R126i.y)));
R123i.w = floatBitsToInt((intBitsToFloat(R124i.y) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.w = R123i.w;
R122i.x = floatBitsToInt((intBitsToFloat(PV0i.x) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PS1i = R122i.x;
// 14
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(R126i.x)) + intBitsToFloat(R127i.w)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((intBitsToFloat(R125i.y) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV0i.y = R123i.y;
PV0i.z = floatBitsToInt(intBitsToFloat(PV1i.y) + intBitsToFloat(PS1i));
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(PV1i.w));
// 15
R0i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R16i.z),intBitsToFloat(PV0i.w)) + intBitsToFloat(R17i.x)));
PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(PV0i.y));
R0i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R16i.z),intBitsToFloat(PV0i.z)) + intBitsToFloat(R17i.y)));
PS1i = R0i.y;
// 16
R0i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R16i.z),intBitsToFloat(PV1i.y)) + intBitsToFloat(R17i.z)));
// export
passPixelColor0 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), intBitsToFloat(R0i.w));
float luma = dot(passPixelColor0.rgb, vec3(0.2126, 0.7152, 0.0722));
#if (ENABLE_COLOR_FADE == 1)
float depth = texture(textureUnitPS4, passParameterSem0.xy).x;
float factor = smoothstep(0.0005, 0.00075, depth);
passPixelColor0.rgb = mix(passPixelColor0.rgb, vec3(luma), factor);
#else
passPixelColor0.rgb = vec3(luma);
#endif
}

View File

@ -0,0 +1,686 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader de2bafbeb363afb3
// Monochromia
// Water - normal weather
// original shader dumped using cemu 1.11.c, BotW 1.3.1
#define ENABLE_COLOR_FADE 0 // set this to 1 to enable, 0 to disable the effect
uniform ivec4 uf_remappedPS[14];
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf45c6000 res 1280x720x1 dim 1 tm: 4 format 041a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0xf494a800 res 1280x720x1 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: 1
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 6) uniform sampler2D textureUnitPS6;// Tex6 addr 0xf5054000 res 640x360x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 7) uniform sampler2D textureUnitPS7;// Tex7 addr 0xf5846000 res 640x360x1 dim 1 tm: 4 format 0001 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler7 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 8) uniform samplerCubeArray textureUnitPS8;// Tex8 addr 0x3db66800 res 64x64x1 dim 3 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x4) sliceView: 0x0 (num 0x6) Sampler8 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 10) uniform sampler2DArray textureUnitPS10;// Tex10 addr 0xf5593000 res 640x360x2 dim 5 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x2) Sampler10 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 11) uniform sampler2D textureUnitPS11;// Tex11 addr 0xf575f800 res 640x360x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler11 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 13) uniform sampler2D textureUnitPS13;// Tex13 addr 0xf5977800 res 640x360x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler13 ClampX/Y/Z: 2 2 2 border: 1
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem4;
layout(location = 2) in vec4 passParameterSem6;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
void redcCUBE(vec4 src0, vec4 src1, out vec3 stm, out int faceId)
{
// stm -> x .. s, y .. t, z .. MajorAxis*2.0
vec3 inputCoord = normalize(vec3(src1.y, src1.x, src0.x));
float rx = inputCoord.x;
float ry = inputCoord.y;
float rz = inputCoord.z;
if( abs(rx) > abs(ry) && abs(rx) > abs(rz) )
{
stm.z = rx*2.0;
stm.xy = vec2(ry,rz);
if( rx >= 0.0 )
{
faceId = 0;
}
else
{
faceId = 1;
}
}
else if( abs(ry) > abs(rx) && abs(ry) > abs(rz) )
{
stm.z = ry*2.0;
stm.xy = vec2(rx,rz);
if( ry >= 0.0 )
{
faceId = 2;
}
else
{
faceId = 3;
}
}
else //if( abs(rz) > abs(ry) && abs(rz) > abs(rx) )
{
stm.z = rz*2.0;
stm.xy = vec2(rx,ry);
if( rz >= 0.0 )
{
faceId = 4;
}
else
{
faceId = 5;
}
}
}
vec3 redcCUBEReverse(vec2 st, int faceId)
{
st.yx = st.xy;
vec3 v;
float majorAxis = 1.0;
if( faceId == 0 )
{
v.yz = (st-vec2(1.5))*(majorAxis*2.0);
v.x = 1.0;
}
else if( faceId == 1 )
{
v.yz = (st-vec2(1.5))*(majorAxis*2.0);
v.x = -1.0;
}
else if( faceId == 2 )
{
v.xz = (st-vec2(1.5))*(majorAxis*2.0);
v.y = 1.0;
}
else if( faceId == 3 )
{
v.xz = (st-vec2(1.5))*(majorAxis*2.0);
v.y = -1.0;
}
else if( faceId == 4 )
{
v.xy = (st-vec2(1.5))*(majorAxis*2.0);
v.z = 1.0;
}
else
{
v.xy = (st-vec2(1.5))*(majorAxis*2.0);
v.z = -1.0;
}
return v;
}
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 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 R9i = ivec4(0);
ivec4 R10i = ivec4(0);
ivec4 R11i = ivec4(0);
ivec4 R12i = ivec4(0);
ivec4 R13i = 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;
float cubeMapArrayIndex8 = 0.0;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem4);
R2i = floatBitsToInt(passParameterSem6);
R3i.w = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R0i.xy)).x);
R6i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R2i.zw)).xyzw);
R4i.xyzw = floatBitsToInt(textureGather(textureUnitPS6, intBitsToFloat(R0i.xy)).xyzw);
R5i.xyzw = floatBitsToInt(textureGather(textureUnitPS7, intBitsToFloat(R0i.xy)).xyzw);
R2i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R2i.zw)).xyzw);
// 0
R127i.x = floatBitsToInt((intBitsToFloat(R6i.x) * 2.0 + -(1.0)));
R126i.y = floatBitsToInt((intBitsToFloat(R6i.y) * 2.0 + -(1.0)));
R127i.z = floatBitsToInt((intBitsToFloat(R6i.z) * 2.0 + -(1.0)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.w),intBitsToFloat(uf_remappedPS[0].x)) + intBitsToFloat(uf_remappedPS[1].x)));
PV0i.w = R123i.w;
R127i.w = floatBitsToInt(-(intBitsToFloat(R3i.w)) + intBitsToFloat(R4i.y));
PS0i = R127i.w;
// 1
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(PV0i.w))));
PV1i.x = R124i.x;
R0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), -(intBitsToFloat(PV0i.w))));
PV1i.y = R0i.y;
R124i.z = floatBitsToInt(-(intBitsToFloat(PV0i.w)));
PV1i.z = R124i.z;
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(uf_remappedPS[2].y)));
R125i.y = floatBitsToInt(-(intBitsToFloat(R3i.w)) + intBitsToFloat(R4i.w));
PS1i = R125i.y;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R0i.z = floatBitsToInt(1.0 / intBitsToFloat(PV1i.w));
PS0i = R0i.z;
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.x),intBitsToFloat(R126i.y),intBitsToFloat(R127i.z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R126i.y),intBitsToFloat(R127i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.y = floatBitsToInt(sqrt(intBitsToFloat(PV0i.x)));
PS1i = R127i.y;
// 4
R126i.x = floatBitsToInt(intBitsToFloat(R124i.x) + -(intBitsToFloat(uf_remappedPS[3].x)));
R124i.y = floatBitsToInt(intBitsToFloat(R0i.y) + -(intBitsToFloat(uf_remappedPS[3].y)));
R126i.z = floatBitsToInt(intBitsToFloat(R124i.z) + -(intBitsToFloat(uf_remappedPS[3].z)));
R125i.w = floatBitsToInt(intBitsToFloat(PS1i) + intBitsToFloat(0x43480000));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 5
R9i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS0i)));
R9i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PS0i)));
R10i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS0i)));
R126i.w = floatBitsToInt(-(intBitsToFloat(R3i.w)) + intBitsToFloat(R4i.x));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(R127i.y));
// 6
backupReg0i = R127i.w;
backupReg0i = R127i.w;
R10i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.x), intBitsToFloat(PS1i)));
PV0i.x = R10i.x;
R10i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.y), intBitsToFloat(PS1i)));
PV0i.y = R10i.y;
R11i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(PS1i)));
PV0i.z = R11i.z;
R127i.w = floatBitsToInt(-(intBitsToFloat(R3i.w)) + intBitsToFloat(R4i.z));
R124i.w = floatBitsToInt(max(intBitsToFloat(backupReg0i), -(intBitsToFloat(backupReg0i))));
PS0i = R124i.w;
// 7
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.x),intBitsToFloat(R9i.y),intBitsToFloat(R10i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
tempi.x = floatBitsToInt(intBitsToFloat(tempi.x) * 2.0);
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.y = floatBitsToInt(max(intBitsToFloat(R125i.y), -(intBitsToFloat(R125i.y))));
PS1i = R127i.y;
// 8
backupReg0i = R126i.w;
backupReg0i = R126i.w;
R125i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.x)),intBitsToFloat(R9i.x)) + intBitsToFloat(R10i.x)));
R126i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.x)),intBitsToFloat(R9i.y)) + intBitsToFloat(R10i.y)));
R125i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.x)),intBitsToFloat(R10i.z)) + intBitsToFloat(R11i.z)));
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), intBitsToFloat(R0i.z)));
R127i.x = floatBitsToInt(max(intBitsToFloat(backupReg0i), -(intBitsToFloat(backupReg0i))));
PS0i = R127i.x;
// 9
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R126i.x),intBitsToFloat(R124i.y),intBitsToFloat(R126i.z),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(R124i.y),intBitsToFloat(R126i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.z = floatBitsToInt(max(intBitsToFloat(R127i.w), -(intBitsToFloat(R127i.w))));
PS1i = R127i.z;
// 10
backupReg0i = R125i.w;
backupReg0i = R125i.w;
R0i.x = uf_remappedPS[4].y;
R4i.y = floatBitsToInt(floor(intBitsToFloat(R1i.y)));
R4i.z = floatBitsToInt(floor(intBitsToFloat(R1i.x)));
PV0i.z = R4i.z;
R125i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(backupReg0i)) + intBitsToFloat(PV1i.x)));
R7i.w = 0x40400000;
PS0i = R7i.w;
// 11
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R6i.x),intBitsToFloat(R6i.y),intBitsToFloat(R6i.z),-0.0),vec4(intBitsToFloat(0x3eaaaaab),intBitsToFloat(0x3eaaaaab),intBitsToFloat(0x3eaaaaab),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R125i.y = tempi.x;
R4i.x = floatBitsToInt(intBitsToFloat(R1i.x) + -(intBitsToFloat(PV0i.z)));
PS1i = R4i.x;
// 12
backupReg0i = R124i.y;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R125i.x),intBitsToFloat(R126i.y),intBitsToFloat(R125i.z),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(backupReg0i),intBitsToFloat(R126i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R124i.y = tempi.x;
PS0i = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + intBitsToFloat(R5i.w));
// 13
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.x)) + -(intBitsToFloat(R125i.w))));
PV1i.x = R123i.x;
PV1i.y = floatBitsToInt(-(intBitsToFloat(R125i.y)) + intBitsToFloat(R5i.z));
PV1i.z = floatBitsToInt(-(intBitsToFloat(R125i.y)) + intBitsToFloat(R5i.y));
PV1i.w = floatBitsToInt(-(intBitsToFloat(R125i.y)) + intBitsToFloat(R5i.x));
PS1i = floatBitsToInt(max(intBitsToFloat(PS0i), -(intBitsToFloat(PS0i))));
PS1i = floatBitsToInt(intBitsToFloat(PS1i) * 4.0);
// 14
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(R126i.w)) + intBitsToFloat(PS1i)));
PV0i.y = floatBitsToInt(max(intBitsToFloat(PV1i.y), -(intBitsToFloat(PV1i.y))));
PV0i.y = floatBitsToInt(intBitsToFloat(PV0i.y) * 4.0);
PV0i.z = floatBitsToInt(max(intBitsToFloat(PV1i.z), -(intBitsToFloat(PV1i.z))));
PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) * 4.0);
PV0i.w = floatBitsToInt(max(intBitsToFloat(PV1i.w), -(intBitsToFloat(PV1i.w))));
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * 4.0);
PS0i = floatBitsToInt(sqrt(intBitsToFloat(PV1i.x)));
// 15
backupReg0i = R126i.w;
PV1i.x = floatBitsToInt(-(intBitsToFloat(R124i.y)) + intBitsToFloat(PS0i));
R124i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R126i.w)) + intBitsToFloat(PV0i.y)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.w),intBitsToFloat(R126i.w)) + intBitsToFloat(PV0i.z)));
PV1i.z = R123i.z;
R126i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(backupReg0i)) + intBitsToFloat(PV0i.w)));
R124i.w = floatBitsToInt(intBitsToFloat(R1i.y) + -(intBitsToFloat(R4i.y)));
PS1i = R124i.w;
// 16
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.x),intBitsToFloat(PV1i.x)) + intBitsToFloat(R124i.x)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.z),intBitsToFloat(PV1i.x)) + intBitsToFloat(R124i.z)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.y),intBitsToFloat(PV1i.x)) + intBitsToFloat(R0i.y)));
PV0i.z = R123i.z;
PV0i.w = floatBitsToInt(-(intBitsToFloat(PV1i.z)) + intBitsToFloat(R126i.x));
R126i.x = floatBitsToInt(intBitsToFloat(R4i.z) + -(0.5));
PS0i = R126i.x;
// 17
R5i.x = floatBitsToInt(-(intBitsToFloat(uf_remappedPS[3].x)) + intBitsToFloat(PV0i.x));
PV1i.y = floatBitsToInt(-(intBitsToFloat(R126i.w)) + intBitsToFloat(PV0i.w));
PV1i.z = floatBitsToInt(-(intBitsToFloat(R124i.y)) + intBitsToFloat(PV0i.w));
R5i.w = floatBitsToInt(-(intBitsToFloat(uf_remappedPS[3].y)) + intBitsToFloat(PV0i.z));
R5i.z = floatBitsToInt(-(intBitsToFloat(uf_remappedPS[3].z)) + intBitsToFloat(PV0i.y));
PS1i = R5i.z;
// 18
backupReg0i = R124i.y;
PV0i.x = floatBitsToInt(intBitsToFloat(R126i.w) + intBitsToFloat(PV1i.z));
R124i.y = floatBitsToInt(intBitsToFloat(R4i.y) + -(0.5));
R3i.z = floatBitsToInt(roundEven(1.0));
R126i.w = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(PV1i.y));
R8i.w = floatBitsToInt((-(intBitsToFloat(R6i.w)) * intBitsToFloat(0x40400000) + intBitsToFloat(0x40400000)));
PS0i = R8i.w;
// 19
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R5i.w),intBitsToFloat(R5i.z),-0.0),vec4(intBitsToFloat(R5i.x),intBitsToFloat(R5i.w),intBitsToFloat(R5i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
PS1i = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(R4i.x));
PS1i = clampFI32(PS1i);
// 20
R4i.x = uf_remappedPS[5].y;
PV0i.y = floatBitsToInt(intBitsToFloat(R126i.w) + intBitsToFloat(R124i.w));
PV0i.y = clampFI32(PV0i.y);
R9i.z = uf_remappedPS[6].y;
R4i.w = floatBitsToInt(intBitsToFloat(PS1i) + intBitsToFloat(R126i.x));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
R3i.w = floatBitsToInt(tempResultf);
PS0i = R3i.w;
// 21
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.x),intBitsToFloat(R9i.y),intBitsToFloat(R10i.z),-0.0),vec4(intBitsToFloat(uf_remappedPS[7].x),intBitsToFloat(uf_remappedPS[7].y),intBitsToFloat(uf_remappedPS[7].z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R4i.z = tempi.x;
R0i.w = floatBitsToInt(intBitsToFloat(PV0i.y) + intBitsToFloat(R124i.y));
PS1i = R0i.w;
// 0
R124i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.x),intBitsToFloat(R9i.y),intBitsToFloat(R10i.z),-0.0),vec4(intBitsToFloat(uf_remappedPS[8].x),intBitsToFloat(uf_remappedPS[8].y),intBitsToFloat(uf_remappedPS[8].z),0.0)));
PV0i.x = R124i.x;
PV0i.y = R124i.x;
PV0i.z = R124i.x;
PV0i.w = R124i.x;
R124i.z = floatBitsToInt(-(intBitsToFloat(R4i.z)));
PS0i = R124i.z;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.x),intBitsToFloat(R9i.y),intBitsToFloat(R10i.z),-0.0),vec4(intBitsToFloat(uf_remappedPS[9].x),intBitsToFloat(uf_remappedPS[9].y),intBitsToFloat(uf_remappedPS[9].z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R124i.y = tempi.x;
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.x), intBitsToFloat(R3i.w)));
PS1i = R126i.x;
// 2
R3i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(R4i.w)));
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.w), intBitsToFloat(R3i.w)));
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.z), intBitsToFloat(R3i.w)));
PV0i.w = floatBitsToInt(intBitsToFloat(R0i.z) * intBitsToFloat(0x41c80000));
PV0i.w = clampFI32(PV0i.w);
R5i.x = floatBitsToInt(intBitsToFloat(R10i.x) + intBitsToFloat(uf_remappedPS[10].x));
PS0i = R5i.x;
// 3
R1i.x = floatBitsToInt(intBitsToFloat(R10i.y) + intBitsToFloat(uf_remappedPS[10].y));
R3i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), intBitsToFloat(R0i.w)));
R1i.z = floatBitsToInt(intBitsToFloat(R11i.z) + intBitsToFloat(uf_remappedPS[10].z));
R0i.w = floatBitsToInt((intBitsToFloat(PV0i.w) * 0.5 + 0.5));
R124i.w = floatBitsToInt(-(intBitsToFloat(R6i.w)) + 1.0);
PS1i = R124i.w;
// 4
redcCUBE(vec4(intBitsToFloat(R124i.z),intBitsToFloat(R124i.z),intBitsToFloat(R124i.x),intBitsToFloat(R124i.y)),vec4(intBitsToFloat(R124i.y),intBitsToFloat(R124i.x),intBitsToFloat(R124i.z),intBitsToFloat(R124i.z)),cubeMapSTM,cubeMapFaceId);
R127i.x = floatBitsToInt(cubeMapSTM.x);
R127i.y = floatBitsToInt(cubeMapSTM.y);
R127i.z = floatBitsToInt(cubeMapSTM.z);
R127i.w = cubeMapFaceId;
PV0i.x = R127i.x;
PV0i.y = R127i.y;
PV0i.z = R127i.z;
PV0i.w = R127i.w;
R126i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.w)),intBitsToFloat(PS1i)) + intBitsToFloat(PS1i)));
PS0i = R126i.w;
// 5
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[7].x),intBitsToFloat(uf_remappedPS[7].y),intBitsToFloat(uf_remappedPS[7].z),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(R126i.y),intBitsToFloat(R125i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R124i.x = floatBitsToInt(1.0 / abs(intBitsToFloat(PV0i.z)));
PS1i = R124i.x;
// 6
R6i.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[8].x),intBitsToFloat(uf_remappedPS[8].y),intBitsToFloat(uf_remappedPS[8].z),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(R126i.y),intBitsToFloat(R125i.z),0.0)));
PV0i.x = R6i.x;
PV0i.y = R6i.x;
PV0i.z = R6i.x;
PV0i.w = R6i.x;
R6i.z = floatBitsToInt(-(intBitsToFloat(PV1i.x)));
PS0i = R6i.z;
// 7
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[9].x),intBitsToFloat(uf_remappedPS[9].y),intBitsToFloat(uf_remappedPS[9].z),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(R126i.y),intBitsToFloat(R125i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R6i.y = tempi.x;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(R124i.x)) + 1.5));
PS1i = R122i.x;
// 8
backupReg0i = R127i.w;
R127i.x = floatBitsToInt(intBitsToFloat(R126i.w) + intBitsToFloat(0x3c23d70a));
R127i.x = clampFI32(R127i.x);
R7i.y = PS1i;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(R124i.x)) + 1.5));
PV0i.z = R123i.z;
R127i.w = floatBitsToInt((intBitsToFloat(R124i.w) * 0.5 + 0.5));
R7i.z = backupReg0i;
PS0i = R7i.z;
// 9
redcCUBE(vec4(intBitsToFloat(R6i.z),intBitsToFloat(R6i.z),intBitsToFloat(R6i.x),intBitsToFloat(R6i.y)),vec4(intBitsToFloat(R6i.y),intBitsToFloat(R6i.x),intBitsToFloat(R6i.z),intBitsToFloat(R6i.z)),cubeMapSTM,cubeMapFaceId);
R126i.x = floatBitsToInt(cubeMapSTM.x);
R126i.y = floatBitsToInt(cubeMapSTM.y);
R126i.z = floatBitsToInt(cubeMapSTM.z);
R126i.w = cubeMapFaceId;
PV1i.x = R126i.x;
PV1i.y = R126i.y;
PV1i.z = R126i.z;
PV1i.w = R126i.w;
R7i.x = PV0i.z;
PS1i = R7i.x;
// 10
R6i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(R127i.w)));
R6i.x = floatBitsToInt(intBitsToFloat(R6i.x) / 2.0);
R6i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(R127i.x)));
R8i.z = PV1i.w;
R127i.w = floatBitsToInt(intBitsToFloat(R2i.w) * intBitsToFloat(0x437f0000));
PS0i = floatBitsToInt(1.0 / abs(intBitsToFloat(PV1i.z)));
// 11
backupReg0i = R2i.x;
R2i.x = floatBitsToInt((intBitsToFloat(backupReg0i) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R2i.x = clampFI32(R2i.x);
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.x),intBitsToFloat(PS0i)) + 1.5));
PV1i.y = R123i.y;
R6i.z = floatBitsToInt((intBitsToFloat(R2i.y) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R6i.z = clampFI32(R6i.z);
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.y),intBitsToFloat(PS0i)) + 1.5));
PV1i.w = R123i.w;
R0i.z = floatBitsToInt((intBitsToFloat(R2i.z) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R0i.z = clampFI32(R0i.z);
PS1i = R0i.z;
// 12
R8i.x = PV1i.w;
R8i.y = PV1i.y;
R2i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.z), intBitsToFloat(R10i.z)));
R2i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(R1i.z)));
R2i.y = int(intBitsToFloat(R127i.w));
PS0i = R2i.y;
R13i.xyz = floatBitsToInt(texture(textureUnitPS11, intBitsToFloat(R3i.xy)).xyz);
R7i.xyz = floatBitsToInt(textureLod(textureUnitPS8, vec4(redcCUBEReverse(intBitsToFloat(R7i.xy),R7i.z),cubeMapArrayIndex8),intBitsToFloat(R7i.w)).xyz);
R8i.xyz = floatBitsToInt(textureLod(textureUnitPS8, vec4(redcCUBEReverse(intBitsToFloat(R8i.xy),R8i.z),cubeMapArrayIndex8),intBitsToFloat(R8i.w)).xyz);
R12i.xyz = floatBitsToInt(texture(textureUnitPS10, vec3(intBitsToFloat(R3i.x),intBitsToFloat(R3i.y),intBitsToFloat(R3i.z))).xyz);
R3i.xyz = floatBitsToInt(texture(textureUnitPS13, intBitsToFloat(R3i.xy)).xyz);
// 0
backupReg0i = R0i.x;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(R4i.x),intBitsToFloat(R2i.z),-0.0),vec4(intBitsToFloat(R9i.x),intBitsToFloat(R9i.y),1.0,0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R125i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[10].x)), intBitsToFloat(uf_remappedPS[11].w)));
PS0i = R125i.x;
// 1
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R1i.x)) + intBitsToFloat(R2i.w)));
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R0i.w)),intBitsToFloat(PV0i.x)) + intBitsToFloat(PV0i.x)));
PV1i.y = R123i.y;
R125i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[10].y)), intBitsToFloat(uf_remappedPS[11].w)));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R13i.x), intBitsToFloat(R13i.y)));
PV1i.w = R127i.w;
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[11].w), intBitsToFloat(uf_remappedPS[11].w)));
PS1i = R126i.y;
// 2
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.x),-(intBitsToFloat(PV1i.y))) + intBitsToFloat(R9i.x)));
PV0i.x = R127i.x;
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.x),-(intBitsToFloat(PV1i.y))) + intBitsToFloat(R9i.y)));
PV0i.y = R127i.y;
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R9i.z),-(intBitsToFloat(PV1i.y))) + intBitsToFloat(R10i.z)));
PV0i.z = R126i.z;
R124i.w = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[10].z)), intBitsToFloat(uf_remappedPS[11].w)));
R4i.x = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(0x3f4ccccd));
R4i.x = clampFI32(R4i.x);
PS0i = R4i.x;
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R126i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.x),intBitsToFloat(R5i.x)) + intBitsToFloat(R126i.x)));
PS1i = R126i.w;
// 4
R9i.x = floatBitsToInt(intBitsToFloat(R127i.w) + 0.25);
R9i.x = clampFI32(R9i.x);
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[12].x), intBitsToFloat(R127i.w)));
R124i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(R126i.y)));
R127i.w = R2i.y & int(1);
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 5
backupReg0i = R126i.w;
R0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS0i)));
PV1i.x = R0i.x;
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS0i)));
PV1i.y = R124i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.z), intBitsToFloat(PS0i)));
PV1i.z = R127i.z;
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R13i.z), intBitsToFloat(R13i.z)));
tempResultf = 1.0 / sqrt(intBitsToFloat(backupReg0i));
R126i.z = floatBitsToInt(tempResultf);
PS1i = R126i.z;
// 6
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R10i.x),intBitsToFloat(R10i.y),intBitsToFloat(R11i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
PS0i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.x), intBitsToFloat(PS1i)));
// 7
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(R126i.z)));
R127i.y = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PS0i)), intBitsToFloat(uf_remappedPS[11].w)));
PV1i.z = floatBitsToInt(max(-(intBitsToFloat(PV0i.x)), 0.0));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(R126i.z)));
PS1i = floatBitsToInt(float(R127i.w));
// 8
R124i.x = floatBitsToInt(min(intBitsToFloat(PV1i.z), 1.0));
PV0i.x = R124i.x;
R126i.y = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV1i.x)), intBitsToFloat(uf_remappedPS[11].w)));
PV0i.y = R126i.y;
R126i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV1i.w)), intBitsToFloat(uf_remappedPS[11].w)));
PV0i.z = R126i.z;
R1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS1i), intBitsToFloat(R126i.w)));
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.w), intBitsToFloat(R127i.z)));
PS0i = R126i.x;
// 9
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R125i.x),intBitsToFloat(R125i.z),intBitsToFloat(R124i.w),-0.0),vec4(intBitsToFloat(R127i.y),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
tempi.x = clampFI32(tempi.x);
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R124i.w = tempi.x;
R127i.x = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + 1.0);
PS1i = R127i.x;
// 10
backupReg0i = R0i.x;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.y),intBitsToFloat(R126i.y),intBitsToFloat(R126i.z),-0.0),vec4(intBitsToFloat(backupReg0i),intBitsToFloat(R124i.y),intBitsToFloat(R127i.z),0.0)));
tempi.x = clampFI32(tempi.x);
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
PS0i = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + 1.0);
// 11
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
R127i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R124i.x)),intBitsToFloat(R127i.x)) + intBitsToFloat(R127i.x)));
PV1i.y = R127i.y;
R126i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R124i.w)),intBitsToFloat(PS0i)) + intBitsToFloat(PS0i)));
PV1i.w = R126i.w;
// 12
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.z),intBitsToFloat(R124i.y)) + intBitsToFloat(R126i.x)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R124i.x)),intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.y)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R124i.w)),intBitsToFloat(PV1i.w)) + intBitsToFloat(PV1i.w)));
PV0i.z = R123i.z;
R124i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(PV1i.x)) + -(intBitsToFloat(PV1i.x))));
PV0i.w = R124i.w;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.x),-(intBitsToFloat(R6i.x))) + intBitsToFloat(R124i.x)));
PS0i = R122i.x;
// 13
backupReg0i = R125i.x;
backupReg1i = R127i.y;
R125i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(R0i.x)) + intBitsToFloat(PV0i.x)));
R125i.x = clampFI32(R125i.x);
PV1i.x = R125i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(PV0i.z)));
PV1i.y = R127i.y;
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.w) + 1.0);
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg1i), intBitsToFloat(PV0i.y)));
PS1i = floatBitsToInt(intBitsToFloat(R6i.x) + intBitsToFloat(PS0i));
// 14
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),-(intBitsToFloat(R6i.x))) + intBitsToFloat(PV1i.x)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.w),intBitsToFloat(PV1i.z)) + intBitsToFloat(PV1i.z)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((-(intBitsToFloat(PV1i.y)) * intBitsToFloat(0x3ca3d70a) + intBitsToFloat(0x3ca3d70a)));
PV0i.z = R123i.z;
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R4i.x)));
PV0i.w = R124i.w;
R125i.z = floatBitsToInt(1.0 / intBitsToFloat(PS1i));
PS0i = R125i.z;
// 15
backupReg0i = R125i.y;
PV1i.x = floatBitsToInt(intBitsToFloat(R6i.x) + intBitsToFloat(PV0i.x));
R125i.y = floatBitsToInt(intBitsToFloat(R127i.y) + intBitsToFloat(PV0i.z));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R125i.x)));
R126i.w = floatBitsToInt((-(intBitsToFloat(PV0i.w)) * intBitsToFloat(0x3ca3d70a) + intBitsToFloat(0x3ca3d70a)));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PV0i.y));
// 16
R125i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R9i.x),-(intBitsToFloat(R127i.y))) + intBitsToFloat(R9i.x)));
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.z),-(intBitsToFloat(R124i.w))) + intBitsToFloat(R7i.z)));
PV0i.z = floatBitsToInt(0.25 * intBitsToFloat(R125i.z));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.y), intBitsToFloat(PS1i)));
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.x));
// 17
backupReg0i = R125i.y;
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS0i), intBitsToFloat(PV0i.w)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.y),-(intBitsToFloat(R124i.w))) + intBitsToFloat(R7i.y)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.x),-(intBitsToFloat(R124i.w))) + intBitsToFloat(R7i.x)));
PV1i.z = R123i.z;
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(R124i.z)));
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV0i.z)));
PS1i = R125i.y;
// 18
backupReg0i = R127i.y;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[13].x),intBitsToFloat(R125i.x)) + intBitsToFloat(PV1i.z)));
PV0i.x = R123i.x;
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[13].z),intBitsToFloat(R125i.x)) + intBitsToFloat(backupReg0i)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[13].y),intBitsToFloat(R125i.x)) + intBitsToFloat(PV1i.y)));
PV0i.z = R123i.z;
PV0i.w = floatBitsToInt(intBitsToFloat(R124i.w) + intBitsToFloat(R126i.w));
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.x)));
PS0i = R126i.y;
// 19
R125i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.y),intBitsToFloat(PV0i.w)) + intBitsToFloat(R12i.y)));
R124i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.x),intBitsToFloat(PV0i.w)) + intBitsToFloat(R12i.x)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R2i.x)));
R126i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.z),intBitsToFloat(PV0i.w)) + intBitsToFloat(R12i.z)));
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R6i.z)));
PS1i = R126i.x;
// 20
backupReg0i = R0i.z;
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[13].x), intBitsToFloat(R125i.y)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[13].y), intBitsToFloat(R125i.y)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[13].z), intBitsToFloat(R125i.y)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(backupReg0i)));
R127i.z = floatBitsToInt((intBitsToFloat(PV1i.z) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PS0i = R127i.z;
// 21
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R126i.y)) + intBitsToFloat(R126i.w)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(R126i.y)) + intBitsToFloat(R125i.x)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R126i.y)) + intBitsToFloat(R124i.y)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((intBitsToFloat(R126i.x) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.w = R123i.w;
R122i.x = floatBitsToInt((intBitsToFloat(PV0i.w) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PS1i = R122i.x;
// 22
R8i.y = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(PS1i));
R0i.z = floatBitsToInt(intBitsToFloat(PV1i.y) + intBitsToFloat(PV1i.w));
R0i.w = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(R127i.z));
// 23
R1i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R13i.z),intBitsToFloat(R0i.w)) + intBitsToFloat(R3i.x)));
R1i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R13i.z),intBitsToFloat(R0i.z)) + intBitsToFloat(R3i.y)));
R1i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R13i.z),intBitsToFloat(R8i.y)) + intBitsToFloat(R3i.z)));
// export
passPixelColor0 = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w));
float luma = dot(passPixelColor0.rgb, vec3(0.2126, 0.7152, 0.0722));
#if (ENABLE_COLOR_FADE == 1)
float depth = texture(textureUnitPS4, passParameterSem0.xy).x;
float factor = smoothstep(0.0005, 0.00075, depth);
passPixelColor0.rgb = mix(passPixelColor0.rgb, vec3(luma), factor);
#else
passPixelColor0.rgb = vec3(luma);
#endif
}

View File

@ -0,0 +1,534 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader dee484f174698fba
// Monochromia
// Link and other characters
// original shader dumped using cemu 1.11.c, BotW 1.3.1
uniform ivec4 uf_remappedPS[9];
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf45c6000 res 1280x720x1 dim 1 tm: 4 format 041a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0xf494a800 res 1280x720x1 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: 1
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 6) uniform sampler2D textureUnitPS6;// Tex6 addr 0xf5054000 res 640x360x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 8) uniform sampler2DArray textureUnitPS8;// Tex8 addr 0xf5593000 res 640x360x2 dim 5 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x2) Sampler8 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 9) uniform sampler2D textureUnitPS9;// Tex9 addr 0xf575f800 res 640x360x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler9 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 11) uniform sampler2D textureUnitPS11;// Tex11 addr 0xf5977800 res 640x360x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler11 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 12) uniform sampler2D textureUnitPS12;// Tex12 addr 0xf4240800 res 1280x720x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler12 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 13) uniform sampler2D textureUnitPS13;// Tex13 addr 0xf528a800 res 640x360x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler13 ClampX/Y/Z: 2 2 2 border: 1
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 2) in vec4 passParameterSem2;
layout(location = 3) in vec4 passParameterSem4;
layout(location = 4) in vec4 passParameterSem6;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
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 R9i = ivec4(0);
ivec4 R10i = ivec4(0);
ivec4 R11i = ivec4(0);
ivec4 R12i = ivec4(0);
ivec4 R13i = ivec4(0);
ivec4 R14i = ivec4(0);
ivec4 R15i = ivec4(0);
ivec4 R16i = ivec4(0);
ivec4 R17i = 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(passParameterSem0);
R1i = floatBitsToInt(passParameterSem1);
R2i = floatBitsToInt(passParameterSem2);
R3i = floatBitsToInt(passParameterSem4);
R4i = floatBitsToInt(passParameterSem6);
R7i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R4i.zw)).xyzw);
R5i.w = floatBitsToInt(texture(textureUnitPS12, intBitsToFloat(R0i.xy)).x);
R6i.xyzw = floatBitsToInt(textureGather(textureUnitPS6, intBitsToFloat(R0i.xy)).xyzw);
R4i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R4i.zw)).xyzw);
// 0
R127i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R5i.w)),intBitsToFloat(uf_remappedPS[0].w)) + 1.0));
PV0i.y = floatBitsToInt(floor(intBitsToFloat(R3i.x)));
R8i.z = 0;
PV0i.w = floatBitsToInt(intBitsToFloat(R7i.w) * intBitsToFloat(0x437f0000));
PS0i = floatBitsToInt(floor(intBitsToFloat(R3i.y)));
// 1
R126i.x = floatBitsToInt(intBitsToFloat(R3i.y) + -(intBitsToFloat(PS0i)));
R125i.y = floatBitsToInt(intBitsToFloat(R3i.x) + -(intBitsToFloat(PV0i.y)));
R126i.z = floatBitsToInt(intBitsToFloat(PV0i.y) + -(0.5));
R127i.w = floatBitsToInt(intBitsToFloat(PS0i) + -(0.5));
R5i.z = int(intBitsToFloat(PV0i.w));
PS1i = R5i.z;
// 2
R125i.x = floatBitsToInt((intBitsToFloat(R4i.x) * 2.0 + -(1.0)));
PV0i.y = PS1i >> 0x00000005;
R10i.z = floatBitsToInt(roundEven(0.0));
R126i.w = floatBitsToInt((intBitsToFloat(R4i.y) * 2.0 + -(1.0)));
PS0i = floatBitsToInt(1.0 / intBitsToFloat(R127i.x));
// 3
PV1i.x = PV0i.y & 0x00000007;
R124i.y = floatBitsToInt((intBitsToFloat(R4i.z) * 2.0 + -(1.0)));
R11i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[0].x)), intBitsToFloat(PS0i)));
PV1i.z = R11i.z;
R5i.w = 0x3f19999a;
R9i.z = floatBitsToInt(1.0);
PS1i = R9i.z;
// 4
R5i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), intBitsToFloat(PV1i.z)));
PV0i.y = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV1i.z)), intBitsToFloat(uf_remappedPS[1].y)));
R127i.z = floatBitsToInt(intBitsToFloat(uf_remappedPS[0].x) + intBitsToFloat(PV1i.z));
PV0i.z = R127i.z;
R8i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), intBitsToFloat(PV1i.z)));
PS0i = floatBitsToInt(float(PV1i.x));
// 5
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R6i.y)));
PV1i.x = R123i.x;
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R6i.x)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R6i.w)));
PV1i.z = R123i.z;
PV1i.w = floatBitsToInt(intBitsToFloat(PS0i) + intBitsToFloat(0xc0000000));
R127i.x = floatBitsToInt(1.0 / intBitsToFloat(PV0i.y));
PS1i = R127i.x;
// 6
PV0i.x = floatBitsToInt(max(intBitsToFloat(PV1i.x), -(intBitsToFloat(PV1i.x))));
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS1i), intBitsToFloat(uf_remappedPS[3].x)));
PV0i.y = R126i.y;
PV0i.z = floatBitsToInt(max(intBitsToFloat(PV1i.z), -(intBitsToFloat(PV1i.z))));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(uf_remappedPS[2].x)) + intBitsToFloat(R6i.z)));
PV0i.w = R123i.w;
PS0i = floatBitsToInt(exp2(intBitsToFloat(PV1i.w)));
// 7
PV1i.x = floatBitsToInt(max(intBitsToFloat(R127i.y), -(intBitsToFloat(R127i.y))));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS0i)));
PV1i.y = R127i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.y)));
PV1i.w = floatBitsToInt(max(intBitsToFloat(PV0i.w), -(intBitsToFloat(PV0i.w))));
PS1i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(PV0i.y)));
// 8
backupReg0i = R126i.y;
backupReg0i = R126i.y;
PV0i.x = floatBitsToInt(-(intBitsToFloat(PV1i.z)) + intBitsToFloat(PS1i));
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(backupReg0i)));
PV0i.y = R126i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(backupReg0i)));
PV0i.z = R127i.z;
PV0i.w = PV1i.y;
PV0i.w = clampFI32(PV0i.w);
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.w), intBitsToFloat(R4i.w)));
PS0i = R125i.z;
// 9
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.z)) + intBitsToFloat(PV0i.x));
PV1i.y = floatBitsToInt(intBitsToFloat(PS0i) + intBitsToFloat(0x40400000));
PV1i.z = floatBitsToInt(-(intBitsToFloat(PV0i.y)) + intBitsToFloat(PV0i.x));
R6i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * intBitsToFloat(0x40400000));
R122i.x = floatBitsToInt((intBitsToFloat(R127i.x) * intBitsToFloat(0x3dcccccd) + 1.0));
PS1i = R122i.x;
// 10
PV0i.x = floatBitsToInt(intBitsToFloat(R127i.z) + intBitsToFloat(PV1i.z));
PV0i.y = floatBitsToInt(intBitsToFloat(R126i.y) + intBitsToFloat(PV1i.x));
PV0i.z = floatBitsToInt(intBitsToFloat(PV1i.y) * intBitsToFloat(0x3fb8aa3b));
R9i.w = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x42960000));
R4i.w = 0;
PS0i = R4i.w;
// 11
backupReg0i = R127i.y;
PV1i.x = R5i.z & 0x0000001c;
R127i.y = backupReg0i;
R127i.y = floatBitsToInt(intBitsToFloat(R127i.y) * 2.0);
R127i.y = clampFI32(R127i.y);
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(R126i.x));
PV1i.z = clampFI32(PV1i.z);
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.y) + intBitsToFloat(R125i.y));
PV1i.w = clampFI32(PV1i.w);
R4i.x = floatBitsToInt(exp2(intBitsToFloat(PV0i.z)));
PS1i = R4i.x;
// 12
PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(R127i.w));
PV0i.y = R5i.z & 0x00000002;
R4i.z = floatBitsToInt(intBitsToFloat(R125i.z) * intBitsToFloat(0x41000000));
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(R126i.z));
PS0i = floatBitsToInt(float(PV1i.x));
// 13
R10i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(PV0i.w)));
R10i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.w), intBitsToFloat(PV0i.x)));
R16i.z = floatBitsToInt(intBitsToFloat(R127i.y) * 0.25);
R10i.w = floatBitsToInt(intBitsToFloat(PS0i) * intBitsToFloat(0x3d124925));
R14i.z = floatBitsToInt(float(PV0i.y));
R14i.z = floatBitsToInt(intBitsToFloat(R14i.z) / 2.0);
PS1i = R14i.z;
// 14
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R125i.x),intBitsToFloat(R126i.w),intBitsToFloat(R124i.y),-0.0),vec4(intBitsToFloat(R125i.x),intBitsToFloat(R126i.w),intBitsToFloat(R124i.y),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R13i.z = floatBitsToInt(intBitsToFloat(R2i.x) * intBitsToFloat(0x3f4ccccd));
PS0i = R13i.z;
// 15
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R8i.w),intBitsToFloat(R11i.z),-0.0),vec4(intBitsToFloat(R5i.x),intBitsToFloat(R8i.w),intBitsToFloat(R11i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.y = floatBitsToInt(sqrt(intBitsToFloat(PV0i.x)));
PS1i = R127i.y;
// 16
R9i.x = floatBitsToInt(intBitsToFloat(R2i.z) * intBitsToFloat(0x3f4ccccd));
PV0i.x = R9i.x;
R8i.y = floatBitsToInt(intBitsToFloat(R2i.y) * intBitsToFloat(0x3f4ccccd));
PV0i.y = R8i.y;
R12i.z = floatBitsToInt(intBitsToFloat(uf_remappedPS[4].x) + -(intBitsToFloat(R13i.z)));
R123i.w = floatBitsToInt((intBitsToFloat(PS1i) * 4.0 + intBitsToFloat(0xc0400000)));
R123i.w = clampFI32(R123i.w);
PV0i.w = R123i.w;
R126i.x = floatBitsToInt(sqrt(intBitsToFloat(PV1i.x)));
PS0i = R126i.x;
// 17
R8i.x = floatBitsToInt(intBitsToFloat(uf_remappedPS[4].y) + -(intBitsToFloat(PV0i.y)));
R5i.y = floatBitsToInt(intBitsToFloat(PV0i.w) + -(0.5));
R5i.y = floatBitsToInt(intBitsToFloat(R5i.y) * 4.0);
R5i.y = clampFI32(R5i.y);
PV1i.y = R5i.y;
R15i.z = floatBitsToInt(intBitsToFloat(uf_remappedPS[4].z) + -(intBitsToFloat(PV0i.x)));
R11i.w = floatBitsToInt((intBitsToFloat(R7i.x) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R11i.w = clampFI32(R11i.w);
PS1i = floatBitsToInt(1.0 / intBitsToFloat(R127i.y));
// 18
R3i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.x), intBitsToFloat(PS1i)));
R3i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(PS1i)));
R3i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.y), intBitsToFloat(PS1i)));
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.y) + intBitsToFloat(0x3f4ccccd));
PV0i.w = clampFI32(PV0i.w);
PS0i = floatBitsToInt(1.0 / intBitsToFloat(R126i.x));
// 19
R6i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.x), intBitsToFloat(PS0i)));
PV1i.x = R6i.x;
R6i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.w), intBitsToFloat(PS0i)));
PV1i.y = R6i.y;
R6i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R11i.z), intBitsToFloat(PS0i)));
PV1i.z = R6i.z;
R3i.w = floatBitsToInt(intBitsToFloat(PV0i.w) + -(1.0));
R11i.x = floatBitsToInt((intBitsToFloat(R7i.y) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R11i.x = clampFI32(R11i.x);
PS1i = R11i.x;
// 20
backupReg0i = R7i.z;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R3i.y),intBitsToFloat(R3i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R7i.z = tempi.x;
R12i.w = floatBitsToInt((intBitsToFloat(backupReg0i) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R12i.w = clampFI32(R12i.w);
PS0i = R12i.w;
// 0
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].x), intBitsToFloat(uf_remappedPS[6].w)));
PV0i.x = R127i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].y), intBitsToFloat(uf_remappedPS[6].w)));
PV0i.y = R127i.y;
R127i.z = floatBitsToInt(intBitsToFloat(R7i.z) + 1.0);
R127i.z = clampFI32(R127i.z);
R126i.w = R5i.z & int(1);
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.y), intBitsToFloat(uf_remappedPS[5].y)));
PS0i = R126i.x;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(R8i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(R8i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R125i.x = floatBitsToInt(-(intBitsToFloat(PV0i.x)) * 1.5);
PS1i = R125i.x;
// 2
PV0i.x = floatBitsToInt(-(intBitsToFloat(R127i.z)) + 1.0);
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.z),intBitsToFloat(uf_remappedPS[5].z)) + intBitsToFloat(R126i.x)));
PV0i.y = R123i.y;
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[5].z), intBitsToFloat(uf_remappedPS[6].w)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.z), intBitsToFloat(R9i.z)));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 3
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.w),intBitsToFloat(R5i.w)) + intBitsToFloat(PV0i.w)));
PV1i.x = R123i.x;
R7i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS0i)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.x),intBitsToFloat(uf_remappedPS[5].x)) + intBitsToFloat(PV0i.y)));
PV1i.z = R123i.z;
R7i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS0i)));
tempResultf = log2(intBitsToFloat(PV0i.x));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1i = floatBitsToInt(tempResultf);
// 4
PV0i.x = floatBitsToInt(max(-(intBitsToFloat(PV1i.z)), 0.0));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.x),intBitsToFloat(R125i.x)) + intBitsToFloat(PV1i.x)));
PV0i.y = R123i.y;
R126i.z = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x3e4ccccd));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.z), intBitsToFloat(R125i.z)));
R9i.z = floatBitsToInt(float(R126i.w));
PS0i = R9i.z;
// 5
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R127i.y)) + intBitsToFloat(PV0i.w)));
PV1i.x = R123i.x;
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), -(intBitsToFloat(R4i.w))));
R4i.w = floatBitsToInt(min(intBitsToFloat(PV0i.x), 1.0));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.y));
PS1i = floatBitsToInt(tempResultf);
// 6
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.x), intBitsToFloat(PS1i)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.w), intBitsToFloat(PS1i)));
PV0i.z = PS1i;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.x),intBitsToFloat(R127i.x)) + intBitsToFloat(PV1i.x)));
PV0i.w = R123i.w;
R4i.y = floatBitsToInt(exp2(intBitsToFloat(R126i.z)));
PS0i = R4i.y;
// 7
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R3i.y),intBitsToFloat(R3i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
tempi.x = clampFI32(tempi.x);
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
PS1i = floatBitsToInt(max(-(intBitsToFloat(PV0i.w)), 0.0));
// 8
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.z),-(intBitsToFloat(R125i.z))) + intBitsToFloat(R124i.y)));
PV0i.x = R123i.x;
PV0i.z = floatBitsToInt(min(intBitsToFloat(PS1i), 1.0));
tempResultf = log2(intBitsToFloat(PV1i.x));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS0i = floatBitsToInt(tempResultf);
// 9
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.y),-(intBitsToFloat(R127i.y))) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.z) * intBitsToFloat(0x40a00000));
PV1i.y = clampFI32(PV1i.y);
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.x), intBitsToFloat(PS0i)));
R5i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PV0i.z)));
// 10
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.w),intBitsToFloat(PV1i.y)) + 1.0));
PV0i.x = R127i.x;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.x),-(intBitsToFloat(backupReg0i))) + intBitsToFloat(PV1i.x)));
PV0i.w = R123i.w;
PS0i = floatBitsToInt(exp2(intBitsToFloat(PV1i.z)));
// 11
PV1i.x = floatBitsToInt(intBitsToFloat(PS0i) + intBitsToFloat(0xbe0f5c29));
R3i.y = floatBitsToInt(intBitsToFloat(PV0i.w) + intBitsToFloat(0x3f666666));
R3i.y = clampFI32(R3i.y);
PV1i.z = floatBitsToInt(intBitsToFloat(PS0i) + intBitsToFloat(0xbba3d70a));
R3i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(PV0i.x)));
R3i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(PV0i.x)));
PS1i = R3i.z;
// 12
R3i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(R127i.x)));
R127i.y = floatBitsToInt(intBitsToFloat(PV1i.z) * intBitsToFloat(0x42c80000));
R127i.y = clampFI32(R127i.y);
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.x) * intBitsToFloat(0x428c0000));
PV0i.w = clampFI32(PV0i.w);
// 13
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.w) * intBitsToFloat(0x3e99999a));
// 14
R123i.w = floatBitsToInt((intBitsToFloat(R127i.y) * intBitsToFloat(0x3e4ccccd) + intBitsToFloat(PV1i.x)));
R123i.w = clampFI32(R123i.w);
PV0i.w = R123i.w;
// 15
R9i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R4i.z)));
// 0
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[7].z), intBitsToFloat(R7i.w)));
PV0i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[7].w)), intBitsToFloat(R7i.y)));
// 1
backupReg0i = R0i.x;
backupReg1i = R0i.y;
R0i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R6i.w)) + intBitsToFloat(backupReg0i)));
R0i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R6i.w)) + intBitsToFloat(backupReg1i)));
R0i.w = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R0i.xy)).x);
R6i.w = floatBitsToInt(texture(textureUnitPS13, intBitsToFloat(R10i.xy)).w);
R17i.xyz = floatBitsToInt(texture(textureUnitPS9, intBitsToFloat(R10i.xy)).xyz);
R7i.xyz = floatBitsToInt(texture(textureUnitPS8, vec3(intBitsToFloat(R10i.x),intBitsToFloat(R10i.y),intBitsToFloat(R10i.z))).xyz);
R10i.xyz = floatBitsToInt(texture(textureUnitPS11, intBitsToFloat(R10i.xy)).xyz);
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R0i.y)) + intBitsToFloat(R1i.w)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R0i.x)) + intBitsToFloat(R1i.z)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x),intBitsToFloat(R0i.w)) + intBitsToFloat(uf_remappedPS[0].x)));
PV0i.z = R123i.z;
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.w), intBitsToFloat(R4i.y)));
PV0i.w = R126i.w;
PS0i = floatBitsToInt(intBitsToFloat(R17i.x) + intBitsToFloat(0xbecccccd));
// 1
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.w) + intBitsToFloat(0xbf400000));
PV1i.y = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.z)), intBitsToFloat(PV0i.x)));
PV1i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.z)), intBitsToFloat(PV0i.y)));
PV1i.w = floatBitsToInt(-(intBitsToFloat(PV0i.z)));
PS1i = floatBitsToInt(intBitsToFloat(PS0i) * intBitsToFloat(0x41200000));
PS1i = clampFI32(PS1i);
// 2
R127i.xyz = floatBitsToInt(vec3(-(intBitsToFloat(R5i.x)),-(intBitsToFloat(R8i.w)),-(intBitsToFloat(R11i.z))) + vec3(intBitsToFloat(PV1i.z),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.w)));
PV0i.x = R127i.x;
PV0i.y = R127i.y;
PV0i.z = R127i.z;
R124i.w = floatBitsToInt(intBitsToFloat(PV1i.x) * intBitsToFloat(0x41800000));
R124i.w = clampFI32(R124i.w);
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R17i.y), intBitsToFloat(PS1i)));
PS0i = R125i.w;
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R6i.x),intBitsToFloat(R6i.y),intBitsToFloat(R6i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.w = tempi.x;
R122i.x = floatBitsToInt((intBitsToFloat(R126i.w) * intBitsToFloat(0x3e99999a) + intBitsToFloat(R4i.w)));
PS1i = R122i.x;
// 4
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.x)),intBitsToFloat(PV1i.x)) + intBitsToFloat(R127i.x)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.y)),intBitsToFloat(PV1i.x)) + intBitsToFloat(R127i.y)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.z)),intBitsToFloat(PV1i.x)) + intBitsToFloat(R127i.z)));
PV0i.z = R123i.z;
R126i.w = floatBitsToInt(intBitsToFloat(PS1i) + intBitsToFloat(0xbecccccd));
R127i.y = floatBitsToInt(intBitsToFloat(R2i.w) + -(intBitsToFloat(R124i.w)));
R127i.y = clampFI32(R127i.y);
PS0i = R127i.y;
// 5
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
PS1i = floatBitsToInt(intBitsToFloat(R125i.w) + -(1.0));
// 6
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R17i.z), intBitsToFloat(R17i.z)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(R9i.w)));
PV0i.y = clampFI32(PV0i.y);
PV0i.z = floatBitsToInt(intBitsToFloat(R7i.z) * intBitsToFloat(0x3dea4a8c));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PS1i),intBitsToFloat(R127i.y)) + 1.0));
PV0i.w = R123i.w;
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 7
R123i.x = floatBitsToInt((intBitsToFloat(R7i.y) * intBitsToFloat(0x3f162b6b) + intBitsToFloat(PV0i.z)));
PV1i.x = R123i.x;
PV1i.y = floatBitsToInt(intBitsToFloat(R124i.w) + intBitsToFloat(PV0i.y));
PV1i.y = clampFI32(PV1i.y);
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PS0i)));
R123i.w = floatBitsToInt((0.5 * intBitsToFloat(PV0i.w) + 0.5));
PV1i.w = R123i.w;
R6i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.z), intBitsToFloat(PV0i.x)));
PS1i = R6i.w;
// 8
backupReg0i = R125i.w;
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.y)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].z), intBitsToFloat(PV1i.z)));
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R3i.y)));
R123i.w = floatBitsToInt((intBitsToFloat(R7i.x) * intBitsToFloat(0x3e99096c) + intBitsToFloat(PV1i.x)));
PV0i.w = R123i.w;
R125i.w = floatBitsToInt(intBitsToFloat(R2i.w) + intBitsToFloat(backupReg0i));
R125i.w = clampFI32(R125i.w);
PS0i = R125i.w;
// 9
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x3df5c28f));
PV1i.x = clampFI32(PV1i.x);
PV1i.y = ((intBitsToFloat(PV0i.w) > 0.0)?int(0xFFFFFFFF):int(0x0));
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(PS0i)) + intBitsToFloat(R13i.z)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.y), intBitsToFloat(PV0i.x)));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PV0i.w));
// 10
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.x),intBitsToFloat(R125i.w)) + intBitsToFloat(R8i.y)));
PV0i.x = R123i.x;
PV0i.y = floatBitsToInt(intBitsToFloat(PV1i.x) + -(0.5));
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.w),intBitsToFloat(R14i.z)) + intBitsToFloat(PV1i.w)));
R126i.z = clampFI32(R126i.z);
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R15i.z),intBitsToFloat(R125i.w)) + intBitsToFloat(R9i.x)));
PV0i.w = R123i.w;
R122i.x = ((PV1i.y == 0)?(0):(PS1i));
PS0i = R122i.x;
// 11
backupReg0i = R124i.w;
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x42200000));
PV1i.x = clampFI32(PV1i.x);
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(uf_remappedPS[8].x)));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(uf_remappedPS[8].z)));
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(uf_remappedPS[8].y)));
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS0i)));
PS1i = R124i.y;
// 12
PV0i.z = floatBitsToInt(intBitsToFloat(PV1i.x) * intBitsToFloat(0x41000000));
// 13
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.w), intBitsToFloat(PV0i.z)));
PV1i.y = clampFI32(PV1i.y);
// 14
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(R16i.z)));
// 15
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.z),intBitsToFloat(R9i.y)) + intBitsToFloat(PV0i.w)));
R123i.z = clampFI32(R123i.z);
PV1i.z = R123i.z;
// 16
R123i.y = floatBitsToInt((intBitsToFloat(PV1i.z) * intBitsToFloat(0x40400000) + intBitsToFloat(R126i.z)));
PV0i.y = R123i.y;
// 17
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[6].w), intBitsToFloat(PV0i.y)));
// 18
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(PV1i.x)) + intBitsToFloat(R3i.w)));
PV0i.x = R123i.x;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(PV1i.x)) + intBitsToFloat(R3i.x)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.w),intBitsToFloat(PV1i.x)) + intBitsToFloat(R3i.z)));
PV0i.w = R123i.w;
// 19
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.x),intBitsToFloat(R124i.y)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.z),intBitsToFloat(R124i.y)) + intBitsToFloat(PV0i.z)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.y),intBitsToFloat(R124i.y)) + intBitsToFloat(PV0i.w)));
PV1i.w = R123i.w;
// 20
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(R12i.w)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R11i.x)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(R11i.w)));
// 21
R123i.y = floatBitsToInt((intBitsToFloat(PV0i.x) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((intBitsToFloat(PV0i.y) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((intBitsToFloat(PV0i.z) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.w = R123i.w;
// 22
R6i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R17i.z),intBitsToFloat(PV1i.w)) + intBitsToFloat(R10i.x)));
R6i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R17i.z),intBitsToFloat(PV1i.z)) + intBitsToFloat(R10i.y)));
R6i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R17i.z),intBitsToFloat(PV1i.y)) + intBitsToFloat(R10i.z)));
// export
passPixelColor0 = vec4(intBitsToFloat(R6i.x), intBitsToFloat(R6i.y), intBitsToFloat(R6i.z), intBitsToFloat(R6i.w));
float luma = dot(passPixelColor0.rgb, vec3(0.2126, 0.7152, 0.0722));
passPixelColor0.rgb = vec3(luma);
}

View File

@ -0,0 +1,664 @@
#version 420
#extension GL_ARB_texture_gather : enable
// shader eabf1e8268c0acf2
// Monochromia
// Terrain - normal weather
// original shader dumped using cemu 1.11.c, BotW 1.3.1
#define ENABLE_COLOR_FADE 0 // set this to 1 to enable, 0 to disable the effect
uniform ivec4 uf_remappedPS[10];
layout(binding = 1) uniform sampler2D textureUnitPS1;// Tex1 addr 0xf45c6000 res 1280x720x1 dim 1 tm: 4 format 041a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler1 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 2) uniform sampler2D textureUnitPS2;// Tex2 addr 0xf494a800 res 1280x720x1 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: 1
layout(binding = 4) uniform sampler2D textureUnitPS4;// Tex4 addr 0xf4e91800 res 1280x720x1 dim 1 tm: 4 format 0806 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler4 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 6) uniform sampler2D textureUnitPS6;// Tex6 addr 0xf5054000 res 640x360x1 dim 1 tm: 4 format 080e compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler6 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 7) uniform sampler2D textureUnitPS7;// Tex7 addr 0xf5846000 res 640x360x1 dim 1 tm: 4 format 0001 compSel: 0 4 4 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler7 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 8) uniform samplerCubeArray textureUnitPS8;// Tex8 addr 0x3db66800 res 64x64x1 dim 3 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x4) sliceView: 0x0 (num 0x6) Sampler8 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 10) uniform sampler2DArray textureUnitPS10;// Tex10 addr 0xf5593000 res 640x360x2 dim 5 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x2) Sampler10 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 11) uniform sampler2D textureUnitPS11;// Tex11 addr 0xf575f800 res 640x360x1 dim 1 tm: 4 format 001a compSel: 0 1 2 3 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler11 ClampX/Y/Z: 2 2 2 border: 1
layout(binding = 13) uniform sampler2D textureUnitPS13;// Tex13 addr 0xf5977800 res 640x360x1 dim 1 tm: 4 format 0816 compSel: 0 1 2 5 mipView: 0x0 (num 0x1) sliceView: 0x0 (num 0x1) Sampler13 ClampX/Y/Z: 2 2 2 border: 1
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 2) in vec4 passParameterSem3;
layout(location = 3) in vec4 passParameterSem4;
layout(location = 4) in vec4 passParameterSem6;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
void redcCUBE(vec4 src0, vec4 src1, out vec3 stm, out int faceId)
{
// stm -> x .. s, y .. t, z .. MajorAxis*2.0
vec3 inputCoord = normalize(vec3(src1.y, src1.x, src0.x));
float rx = inputCoord.x;
float ry = inputCoord.y;
float rz = inputCoord.z;
if( abs(rx) > abs(ry) && abs(rx) > abs(rz) )
{
stm.z = rx*2.0;
stm.xy = vec2(ry,rz);
if( rx >= 0.0 )
{
faceId = 0;
}
else
{
faceId = 1;
}
}
else if( abs(ry) > abs(rx) && abs(ry) > abs(rz) )
{
stm.z = ry*2.0;
stm.xy = vec2(rx,rz);
if( ry >= 0.0 )
{
faceId = 2;
}
else
{
faceId = 3;
}
}
else //if( abs(rz) > abs(ry) && abs(rz) > abs(rx) )
{
stm.z = rz*2.0;
stm.xy = vec2(rx,ry);
if( rz >= 0.0 )
{
faceId = 4;
}
else
{
faceId = 5;
}
}
}
vec3 redcCUBEReverse(vec2 st, int faceId)
{
st.yx = st.xy;
vec3 v;
float majorAxis = 1.0;
if( faceId == 0 )
{
v.yz = (st-vec2(1.5))*(majorAxis*2.0);
v.x = 1.0;
}
else if( faceId == 1 )
{
v.yz = (st-vec2(1.5))*(majorAxis*2.0);
v.x = -1.0;
}
else if( faceId == 2 )
{
v.xz = (st-vec2(1.5))*(majorAxis*2.0);
v.y = 1.0;
}
else if( faceId == 3 )
{
v.xz = (st-vec2(1.5))*(majorAxis*2.0);
v.y = -1.0;
}
else if( faceId == 4 )
{
v.xy = (st-vec2(1.5))*(majorAxis*2.0);
v.z = 1.0;
}
else
{
v.xy = (st-vec2(1.5))*(majorAxis*2.0);
v.z = -1.0;
}
return v;
}
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 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 R9i = ivec4(0);
ivec4 R10i = ivec4(0);
ivec4 R11i = ivec4(0);
ivec4 R12i = ivec4(0);
ivec4 R13i = 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;
float cubeMapArrayIndex8 = 0.0;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem1);
R2i = floatBitsToInt(passParameterSem3);
R3i = floatBitsToInt(passParameterSem4);
R4i = floatBitsToInt(passParameterSem6);
R7i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R4i.zw)).xyzw);
R2i.w = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R0i.xy)).x);
R5i.xyzw = floatBitsToInt(textureGather(textureUnitPS6, intBitsToFloat(R0i.xy)).xyzw);
R6i.xyzw = floatBitsToInt(textureGather(textureUnitPS7, intBitsToFloat(R0i.xy)).xyzw);
R4i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R4i.zw)).xyzw);
// 0
R127i.x = floatBitsToInt((intBitsToFloat(R7i.x) * 2.0 + -(1.0)));
PV0i.x = R127i.x;
R127i.y = floatBitsToInt((intBitsToFloat(R7i.y) * 2.0 + -(1.0)));
PV0i.y = R127i.y;
R124i.z = floatBitsToInt((intBitsToFloat(R7i.z) * 2.0 + -(1.0)));
PV0i.z = R124i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.w),intBitsToFloat(uf_remappedPS[0].x)) + intBitsToFloat(uf_remappedPS[1].x)));
PV0i.w = R127i.w;
R126i.w = floatBitsToInt(-(intBitsToFloat(R2i.w)) + intBitsToFloat(R5i.y));
PS0i = R126i.w;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R8i.z = floatBitsToInt(-(intBitsToFloat(PV0i.w)));
PS1i = R8i.z;
// 2
R10i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(R127i.w))));
R9i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), -(intBitsToFloat(R127i.w))));
R125i.z = floatBitsToInt(-(intBitsToFloat(R2i.w)) + intBitsToFloat(R5i.x));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(uf_remappedPS[2].y)));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
R125i.x = floatBitsToInt(tempResultf);
PS0i = R125i.x;
// 3
R5i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS0i)));
PV1i.x = R5i.x;
R5i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS0i)));
R127i.z = floatBitsToInt(-(intBitsToFloat(R2i.w)) + intBitsToFloat(R5i.w));
R127i.w = floatBitsToInt(-(intBitsToFloat(R2i.w)) + intBitsToFloat(R5i.z));
R126i.z = floatBitsToInt(1.0 / intBitsToFloat(PV0i.w));
PS1i = R126i.z;
// 4
backupReg0i = R0i.x;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R10i.x),intBitsToFloat(R9i.y),intBitsToFloat(R8i.z),-0.0),vec4(intBitsToFloat(R10i.x),intBitsToFloat(R9i.y),intBitsToFloat(R8i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R8i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.x),intBitsToFloat(PV1i.x)) + intBitsToFloat(backupReg0i)));
PS0i = R8i.x;
// 5
backupReg0i = R126i.w;
backupReg0i = R126i.w;
R127i.x = floatBitsToInt(max(intBitsToFloat(R127i.z), -(intBitsToFloat(R127i.z))));
R8i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.y),intBitsToFloat(R5i.y)) + intBitsToFloat(R0i.y)));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), intBitsToFloat(R126i.z)));
R126i.w = floatBitsToInt(max(intBitsToFloat(backupReg0i), -(intBitsToFloat(backupReg0i))));
PS1i = floatBitsToInt(sqrt(intBitsToFloat(PV0i.x)));
// 6
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.x),intBitsToFloat(R7i.y),intBitsToFloat(R7i.z),-0.0),vec4(intBitsToFloat(0x3eaaaaab),intBitsToFloat(0x3eaaaaab),intBitsToFloat(0x3eaaaaab),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R127i.y = tempi.x;
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PS1i));
// 7
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R6i.w));
R10i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R10i.x), intBitsToFloat(PS0i)));
PV1i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R6i.y));
R2i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.y), intBitsToFloat(PS0i)));
R9i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.z), intBitsToFloat(PS0i)));
PS1i = R9i.z;
// 8
PV0i.x = floatBitsToInt(max(intBitsToFloat(PV1i.x), -(intBitsToFloat(PV1i.x))));
PV0i.x = floatBitsToInt(intBitsToFloat(PV0i.x) * 4.0);
PV0i.y = floatBitsToInt(-(intBitsToFloat(R127i.y)) + intBitsToFloat(R6i.z));
PV0i.z = floatBitsToInt(max(intBitsToFloat(PV1i.z), -(intBitsToFloat(PV1i.z))));
PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) * 4.0);
PV0i.w = floatBitsToInt(-(intBitsToFloat(R127i.y)) + intBitsToFloat(R6i.x));
R126i.x = floatBitsToInt(max(intBitsToFloat(R125i.z), -(intBitsToFloat(R125i.z))));
PS0i = R126i.x;
// 9
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(R127i.z)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
PV1i.y = floatBitsToInt(max(intBitsToFloat(R127i.w), -(intBitsToFloat(R127i.w))));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.w),intBitsToFloat(R127i.z)) + intBitsToFloat(PV0i.z)));
PV1i.z = R123i.z;
PV1i.w = floatBitsToInt(max(intBitsToFloat(PV0i.w), -(intBitsToFloat(PV0i.w))));
PV1i.w = floatBitsToInt(intBitsToFloat(PV1i.w) * 4.0);
PS1i = floatBitsToInt(max(intBitsToFloat(PV0i.y), -(intBitsToFloat(PV0i.y))));
PS1i = floatBitsToInt(intBitsToFloat(PS1i) * 4.0);
// 10
backupReg0i = R126i.x;
R126i.x = floatBitsToInt(-(intBitsToFloat(PV1i.z)) + intBitsToFloat(PV1i.x));
PV0i.x = R126i.x;
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(R127i.z)) + intBitsToFloat(PS1i)));
PV0i.y = R127i.y;
R6i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(R125i.x)));
PV0i.z = R6i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(R127i.z)) + intBitsToFloat(PV1i.w)));
R127i.z = floatBitsToInt(floor(intBitsToFloat(R3i.x)));
PS0i = R127i.z;
// 11
R125i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R5i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(R10i.y),intBitsToFloat(R2i.w),intBitsToFloat(R9i.z),0.0)));
PV1i.x = R125i.x;
PV1i.y = R125i.x;
PV1i.z = R125i.x;
PV1i.w = R125i.x;
PS1i = floatBitsToInt(-(intBitsToFloat(PV0i.y)) + intBitsToFloat(PV0i.x));
// 12
PV0i.x = floatBitsToInt(floor(intBitsToFloat(R3i.y)));
PV0i.y = floatBitsToInt(-(intBitsToFloat(R127i.w)) + intBitsToFloat(R126i.x));
PV0i.z = floatBitsToInt(intBitsToFloat(R127i.w) + intBitsToFloat(PS1i));
PV0i.w = floatBitsToInt(intBitsToFloat(R3i.x) + -(intBitsToFloat(R127i.z)));
R126i.x = floatBitsToInt(intBitsToFloat(R127i.z) + -(0.5));
PS0i = R126i.x;
// 13
backupReg0i = R127i.y;
PV1i.x = floatBitsToInt(intBitsToFloat(R3i.y) + -(intBitsToFloat(PV0i.x)));
R127i.y = floatBitsToInt(intBitsToFloat(PV0i.x) + -(0.5));
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.z) + intBitsToFloat(PV0i.w));
PV1i.z = clampFI32(PV1i.z);
PV1i.w = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(PV0i.y));
PS1i = R5i.x;
PS1i = floatBitsToInt(intBitsToFloat(PS1i) * 2.0);
// 14
PV0i.x = R5i.y;
PV0i.x = floatBitsToInt(intBitsToFloat(PV0i.x) * 2.0);
PV0i.y = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(PV1i.x));
PV0i.y = clampFI32(PV0i.y);
PV0i.z = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(R126i.x));
PV0i.w = R6i.z;
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * 2.0);
R126i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R125i.x)),intBitsToFloat(PS1i)) + intBitsToFloat(R10i.y)));
PS0i = R126i.x;
// 15
backupReg0i = R127i.y;
R2i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(PV0i.z)));
R127i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R125i.x)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R2i.w)));
R127i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R125i.x)),intBitsToFloat(PV0i.w)) + intBitsToFloat(R9i.z)));
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.y) + intBitsToFloat(backupReg0i));
R2i.z = floatBitsToInt(roundEven(0.0));
PS1i = R2i.z;
// 16
R9i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R8i.x)) + intBitsToFloat(R1i.z)));
R2i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.w), intBitsToFloat(PV1i.w)));
R5i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R8i.y)) + intBitsToFloat(R1i.w)));
R0i.w = floatBitsToInt((-(intBitsToFloat(R7i.w)) * intBitsToFloat(0x40400000) + intBitsToFloat(0x40400000)));
R3i.x = floatBitsToInt(intBitsToFloat(R10i.y) + intBitsToFloat(uf_remappedPS[3].x));
PS0i = R3i.x;
// 17
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[4].x),intBitsToFloat(uf_remappedPS[4].y),intBitsToFloat(uf_remappedPS[4].z),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(R127i.y),intBitsToFloat(R127i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.w = floatBitsToInt(intBitsToFloat(R4i.w) * intBitsToFloat(0x437f0000));
PS1i = R127i.w;
// 18
R124i.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[5].x),intBitsToFloat(uf_remappedPS[5].y),intBitsToFloat(uf_remappedPS[5].z),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(R127i.y),intBitsToFloat(R127i.z),0.0)));
PV0i.x = R124i.x;
PV0i.y = R124i.x;
PV0i.z = R124i.x;
PV0i.w = R124i.x;
R124i.z = floatBitsToInt(-(intBitsToFloat(PV1i.x)));
PS0i = R124i.z;
// 19
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[6].x),intBitsToFloat(uf_remappedPS[6].y),intBitsToFloat(uf_remappedPS[6].z),-0.0),vec4(intBitsToFloat(R126i.x),intBitsToFloat(R127i.y),intBitsToFloat(R127i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R124i.y = tempi.x;
R127i.z = floatBitsToInt(max(-(intBitsToFloat(R125i.x)), 0.0));
PS1i = R127i.z;
// 20
backupReg0i = R124i.x;
backupReg0i = R124i.x;
backupReg1i = R124i.z;
backupReg1i = R124i.z;
redcCUBE(vec4(intBitsToFloat(R124i.z),intBitsToFloat(R124i.z),intBitsToFloat(backupReg0i),intBitsToFloat(PV1i.x)),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i),intBitsToFloat(backupReg1i)),cubeMapSTM,cubeMapFaceId);
R124i.x = floatBitsToInt(cubeMapSTM.x);
R124i.y = floatBitsToInt(cubeMapSTM.y);
R124i.z = floatBitsToInt(cubeMapSTM.z);
R124i.w = cubeMapFaceId;
PV0i.x = R124i.x;
PV0i.y = R124i.y;
PV0i.z = R124i.z;
PV0i.w = R124i.w;
R1i.y = floatBitsToInt(intBitsToFloat(R2i.w) + intBitsToFloat(uf_remappedPS[3].y));
PS0i = R1i.y;
// 21
R6i.x = floatBitsToInt(intBitsToFloat(R9i.z) + intBitsToFloat(uf_remappedPS[3].z));
R3i.y = floatBitsToInt(-(intBitsToFloat(R7i.w)) + 1.0);
PV1i.y = R3i.y;
R0i.z = PV0i.w;
R3i.w = 0;
PS1i = floatBitsToInt(1.0 / abs(intBitsToFloat(PV0i.z)));
// 22
R1i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R7i.w)),intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.y)));
R6i.y = floatBitsToInt(min(intBitsToFloat(R127i.z), 1.0));
R1i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.x),intBitsToFloat(PS1i)) + 1.5));
R1i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.y),intBitsToFloat(PS1i)) + 1.5));
R3i.z = int(intBitsToFloat(R127i.w));
PS0i = R3i.z;
// 0
R0i.x = R1i.w;
R0i.y = R1i.z;
R127i.z = floatBitsToInt(intBitsToFloat(R7i.w) * intBitsToFloat(0x437f0000));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x), intBitsToFloat(uf_remappedPS[7].w)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y), intBitsToFloat(uf_remappedPS[7].w)));
PS0i = R127i.y;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R1i.y),intBitsToFloat(R6i.x),-0.0),vec4(intBitsToFloat(R3i.x),intBitsToFloat(R1i.y),intBitsToFloat(R6i.x),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z), intBitsToFloat(uf_remappedPS[7].w)));
PS1i = R125i.z;
// 2
PV0i.x = floatBitsToInt(intBitsToFloat(R1i.x) + intBitsToFloat(0x3c23d70a));
PV0i.x = clampFI32(PV0i.x);
R124i.y = R3i.z & 0x000000fc;
R124i.z = floatBitsToInt(-(intBitsToFloat(R6i.y)) + 1.0);
R124i.w = 0;
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 3
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), intBitsToFloat(PS0i)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.x), intBitsToFloat(PS0i)));
R1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.x), intBitsToFloat(PS0i)));
R126i.y = int(intBitsToFloat(R127i.z));
PS1i = R126i.y;
// 4
backupReg0i = R124i.y;
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(uf_remappedPS[7].w)));
PV0i.x = R124i.x;
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(uf_remappedPS[7].w)));
PV0i.y = R124i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(uf_remappedPS[7].w)));
PV0i.z = R127i.z;
R126i.w = floatBitsToInt((intBitsToFloat(R3i.y) * 0.5 + 0.5));
R126i.x = floatBitsToInt(float(backupReg0i));
PS0i = R126i.x;
// 5
backupReg0i = R124i.z;
backupReg0i = R124i.z;
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R127i.w)),-(intBitsToFloat(R127i.y)),-(intBitsToFloat(R125i.z)),-0.0),vec4(-(intBitsToFloat(PV0i.x)),-(intBitsToFloat(PV0i.y)),-(intBitsToFloat(PV0i.z)),0.0)));
tempi.x = clampFI32(tempi.x);
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R1i.w = tempi.x;
R124i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.y)),intBitsToFloat(backupReg0i)) + intBitsToFloat(backupReg0i)));
PS1i = R124i.z;
// 6
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R5i.y),intBitsToFloat(R6i.z),intBitsToFloat(R6i.z)),vec4(-(intBitsToFloat(R124i.x)),-(intBitsToFloat(R124i.y)),-(intBitsToFloat(R127i.z)),-(intBitsToFloat(R3i.w)))));
tempi.x = clampFI32(tempi.x);
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R125i.w = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + 1.0);
PS0i = R125i.w;
// 7
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R5i.y),intBitsToFloat(R6i.z),intBitsToFloat(R6i.z)),vec4(-(intBitsToFloat(R127i.w)),-(intBitsToFloat(R127i.y)),-(intBitsToFloat(R125i.z)),-(intBitsToFloat(R124i.w)))));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.w = tempi.x;
PS1i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
// 8
PV0i.x = R126i.y & int(1);
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(R126i.w)));
R126i.y = floatBitsToInt(intBitsToFloat(R126i.y) / 2.0);
R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.z),intBitsToFloat(PS1i)) + -(intBitsToFloat(PS1i))));
R6i.w = floatBitsToInt(intBitsToFloat(R126i.x) * intBitsToFloat(0x3b820821));
R127i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R1i.w)),intBitsToFloat(R125i.w)) + intBitsToFloat(R125i.w)));
PS0i = R127i.z;
// 9
R126i.x = R127i.w;
R126i.x = floatBitsToInt(intBitsToFloat(R126i.x) * 2.0);
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.y)),intBitsToFloat(R124i.z)) + intBitsToFloat(R124i.z)));
PV1i.y = R123i.y;
R126i.z = ((PV0i.x == 0)?(0):(0x3f800000));
R126i.w = floatBitsToInt((-(intBitsToFloat(R7i.w)) * intBitsToFloat(0x40400000) + 4.0));
R7i.x = R127i.w;
R7i.x = clampFI32(R7i.x);
PS1i = R7i.x;
// 10
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(PV1i.y)));
PV0i.y = floatBitsToInt(intBitsToFloat(R125i.z) + 1.0);
R124i.z = floatBitsToInt((-(intBitsToFloat(R6i.w)) * intBitsToFloat(0x3d23d70a) + intBitsToFloat(0x3d23d70a)));
R125i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),-(intBitsToFloat(R126i.y))) + intBitsToFloat(R6i.y)));
R122i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R1i.w)),intBitsToFloat(R127i.z)) + intBitsToFloat(R127i.z)));
PS0i = R122i.x;
// 11
backupReg0i = R126i.x;
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.z),intBitsToFloat(PV0i.y)) + intBitsToFloat(PV0i.y)));
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS0i)));
R7i.z = floatBitsToInt((intBitsToFloat(R6i.w) * 0.25 + 0.25));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(backupReg0i)));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(R126i.w));
// 12
backupReg0i = R124i.x;
R124i.x = floatBitsToInt(intBitsToFloat(R126i.y) + intBitsToFloat(R125i.w));
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS1i)));
R10i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.z), intBitsToFloat(PV1i.w)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.x),-(intBitsToFloat(R126i.y))) + intBitsToFloat(R7i.x)));
PV0i.w = R123i.w;
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.y),intBitsToFloat(R6i.w)) + intBitsToFloat(R124i.z)));
PS0i = R127i.y;
// 13
backupReg0i = R124i.z;
backupReg1i = R126i.y;
backupReg2i = R126i.x;
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.z),intBitsToFloat(R6i.w)) + intBitsToFloat(R124i.z)));
PV1i.x = R126i.x;
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[7].w), intBitsToFloat(uf_remappedPS[7].w)));
R124i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.x),intBitsToFloat(R6i.w)) + intBitsToFloat(backupReg0i)));
PV1i.z = R124i.z;
R125i.w = floatBitsToInt(intBitsToFloat(backupReg1i) + intBitsToFloat(PV0i.w));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(backupReg2i));
// 14
backupReg0i = R124i.x;
R124i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),-(intBitsToFloat(R124i.y))) + intBitsToFloat(PV1i.z)));
R6i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(PS1i)));
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),-(intBitsToFloat(R124i.y))) + intBitsToFloat(PV1i.x)));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),-(intBitsToFloat(R124i.y))) + intBitsToFloat(R127i.y)));
PS0i = floatBitsToInt(1.0 / intBitsToFloat(backupReg0i));
// 15
backupReg0i = R126i.x;
backupReg0i = R126i.x;
backupReg1i = R127i.y;
backupReg1i = R127i.y;
backupReg2i = R125i.w;
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),-(intBitsToFloat(R125i.y))) + intBitsToFloat(backupReg0i)));
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg1i),-(intBitsToFloat(R125i.y))) + intBitsToFloat(backupReg1i)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.z),-(intBitsToFloat(R125i.y))) + intBitsToFloat(R124i.z)));
PV1i.z = R123i.z;
R125i.w = floatBitsToInt(0.25 * intBitsToFloat(PS0i));
R124i.z = floatBitsToInt(1.0 / intBitsToFloat(backupReg2i));
PS1i = R124i.z;
// 16
backupReg0i = R126i.z;
PV0i.x = floatBitsToInt(intBitsToFloat(R124i.y) + intBitsToFloat(R127i.w));
PV0i.y = floatBitsToInt(intBitsToFloat(R124i.y) + intBitsToFloat(R124i.x));
R126i.z = floatBitsToInt(intBitsToFloat(R124i.y) + intBitsToFloat(backupReg0i));
R7i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(R126i.y)));
R1i.w = floatBitsToInt(intBitsToFloat(R125i.y) + intBitsToFloat(PV1i.z));
PS0i = R1i.w;
// 17
R5i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(R6i.y)));
R6i.y = floatBitsToInt(intBitsToFloat(R125i.y) + intBitsToFloat(R126i.x));
R1i.z = floatBitsToInt(intBitsToFloat(R125i.y) + intBitsToFloat(R127i.y));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(R125i.w)));
R124i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R125i.w)));
PS1i = R124i.z;
// 18
R6i.x = floatBitsToInt((intBitsToFloat(R4i.x) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R6i.x = clampFI32(R6i.x);
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.z), intBitsToFloat(R125i.w)));
R12i.z = floatBitsToInt((intBitsToFloat(R4i.z) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R12i.z = clampFI32(R12i.z);
R5i.w = floatBitsToInt((intBitsToFloat(R4i.y) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R5i.w = clampFI32(R5i.w);
R4i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].x), intBitsToFloat(PV1i.w)));
PS0i = R4i.x;
// 19
PV1i.x = R3i.z & int(1);
R3i.y = R2i.y;
R6i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].z), intBitsToFloat(PV0i.y)));
R3i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].y), intBitsToFloat(R124i.z)));
R3i.z = floatBitsToInt(roundEven(1.0));
PS1i = R3i.z;
// 20
R3i.x = R2i.x;
R4i.z = floatBitsToInt(float(PV1i.x));
PS0i = R4i.z;
R4i.w = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R8i.xy)).x);
R13i.xyz = floatBitsToInt(texture(textureUnitPS11, intBitsToFloat(R2i.xy)).xyz);
R11i.xyz = floatBitsToInt(texture(textureUnitPS10, vec3(intBitsToFloat(R2i.x),intBitsToFloat(R2i.y),intBitsToFloat(R2i.z))).xyz);
R3i.xyz = floatBitsToInt(texture(textureUnitPS10, vec3(intBitsToFloat(R3i.x),intBitsToFloat(R3i.y),intBitsToFloat(R3i.z))).xyz);
R0i.xyz = floatBitsToInt(textureLod(textureUnitPS8, vec4(redcCUBEReverse(intBitsToFloat(R0i.xy),R0i.z),cubeMapArrayIndex8),intBitsToFloat(R0i.w)).xyz);
R2i.xyz = floatBitsToInt(texture(textureUnitPS13, intBitsToFloat(R2i.xy)).xyz);
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R13i.y),-(intBitsToFloat(R7i.z))) + intBitsToFloat(R13i.y)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((intBitsToFloat(R13i.y) * 0.5 + 0.5));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x),intBitsToFloat(R4i.w)) + intBitsToFloat(uf_remappedPS[1].x)));
PV0i.z = R123i.z;
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R13i.x), intBitsToFloat(R7i.x)));
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R13i.z), intBitsToFloat(R13i.z)));
PS0i = R124i.x;
// 1
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.z)));
PV1i.y = floatBitsToInt(intBitsToFloat(R7i.x) + intBitsToFloat(PV0i.y));
PV1i.y = clampFI32(PV1i.y);
PV1i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.z)), intBitsToFloat(R5i.z)));
PV1i.w = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.z)), intBitsToFloat(R9i.x)));
R125i.x = floatBitsToInt(intBitsToFloat(R7i.z) + intBitsToFloat(PV0i.x));
PS1i = R125i.x;
// 2
R126i.x = floatBitsToInt(-(intBitsToFloat(R10i.x)) + intBitsToFloat(PV1i.w));
PV0i.x = R126i.x;
R127i.y = floatBitsToInt(-(intBitsToFloat(R9i.y)) + intBitsToFloat(PV1i.z));
PV0i.y = R127i.y;
PV0i.z = floatBitsToInt(-(intBitsToFloat(R8i.z)) + intBitsToFloat(PV1i.x));
R4i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.w), intBitsToFloat(PV1i.y)));
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].x), intBitsToFloat(R125i.w)));
PS0i = R125i.y;
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R10i.y),intBitsToFloat(R2i.w),intBitsToFloat(R9i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R124i.y = tempi.x;
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.x), intBitsToFloat(R1i.w)));
PS1i = R126i.y;
// 4
backupReg0i = R127i.y;
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R10i.y)),intBitsToFloat(PV1i.x)) + intBitsToFloat(R126i.x)));
PV0i.x = R123i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.x), intBitsToFloat(R1i.z)));
R125i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R2i.w)),intBitsToFloat(PV1i.x)) + intBitsToFloat(backupReg0i)));
R1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.z), intBitsToFloat(R124i.x)));
PS0i = R1i.w;
// 5
backupReg0i = R0i.x;
backupReg1i = R126i.y;
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(R7i.w)));
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i)) + intBitsToFloat(R3i.x)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.x), intBitsToFloat(R6i.y)));
// 6
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(R5i.x)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.w),intBitsToFloat(R125i.w)) + intBitsToFloat(PV1i.z)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.y),intBitsToFloat(R127i.y)) + intBitsToFloat(R3i.y)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.z),intBitsToFloat(PV1i.w)) + intBitsToFloat(R3i.z)));
PV0i.w = R123i.w;
// 7
R0i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.z),intBitsToFloat(PV0i.x)) + intBitsToFloat(PV0i.w)));
R6i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.w),intBitsToFloat(PV0i.x)) + intBitsToFloat(PV0i.z)));
R3i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.x),intBitsToFloat(PV0i.x)) + intBitsToFloat(R126i.y)));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.y));
PS1i = floatBitsToInt(tempResultf);
// 8
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.y), intBitsToFloat(PS1i)));
// 9
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z), intBitsToFloat(PV0i.w)));
// 10
PV0i.y = floatBitsToInt(intBitsToFloat(PV1i.z) * intBitsToFloat(0x3ced9168));
PV0i.y = clampFI32(PV0i.y);
// 11
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(R10i.z)) + 1.0));
PV1i.y = R123i.y;
// 12
R4i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.w)),intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.y)));
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].x),intBitsToFloat(R4i.w)) + intBitsToFloat(R11i.x)));
PV0i.x = R123i.x;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].z),intBitsToFloat(R4i.w)) + intBitsToFloat(R11i.z)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].y),intBitsToFloat(R4i.w)) + intBitsToFloat(R11i.y)));
PV0i.w = R123i.w;
// 1
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R4i.x)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R4i.x)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R4i.x)));
// 2
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(R5i.w)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R6i.x)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(R12i.z)));
// 3
R123i.x = floatBitsToInt((intBitsToFloat(PV0i.w) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((intBitsToFloat(PV0i.x) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((intBitsToFloat(PV0i.y) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.z = R123i.z;
// 4
backupReg0i = R0i.y;
PV0i.y = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(PV1i.x));
PV0i.z = floatBitsToInt(intBitsToFloat(R6i.z) + intBitsToFloat(PV1i.y));
PV0i.w = floatBitsToInt(intBitsToFloat(R3i.w) + intBitsToFloat(PV1i.z));
// 5
R1i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R13i.z),intBitsToFloat(PV0i.w)) + intBitsToFloat(R2i.x)));
R1i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R13i.z),intBitsToFloat(PV0i.z)) + intBitsToFloat(R2i.y)));
R1i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R13i.z),intBitsToFloat(PV0i.y)) + intBitsToFloat(R2i.z)));
// export
passPixelColor0 = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w));
float luma = dot(passPixelColor0.rgb, vec3(0.2126, 0.7152, 0.0722));
#if (ENABLE_COLOR_FADE == 1)
float depth = texture(textureUnitPS4, passParameterSem0.xy).x;
float factor = smoothstep(0.0005, 0.00075, depth);
passPixelColor0.rgb = mix(passPixelColor0.rgb, vec3(luma), factor);
#else
passPixelColor0.rgb = vec3(luma);
#endif
}

View File

@ -0,0 +1,48 @@
Monochromia - Sin City inspired Mod
This mod makes almost everything in the game black and white. Only the bright lights and other special effects remain with full color.
!!! Important !!!
Delete/rename the a5b3a5e5ab2938bc file from your resolution pack, otherwise it gets overriden and the clouds will appear coloured.
The AA fix is implemented in this pack as well. Remember to restore the file in your resolution pack when not using this mod.
This mod is not compatible with Clarity/Contrasty, as this mod uses custom postprocessing. Delete bd8bba59e2149449 from this pack if you wish to use those.
The full color can be restored on certain elements as well, such as characters or trees/plants.
You can do that by renaming/deleting the corresponding shader files (effectively disabling the overide) listed below.
Some shaders also have a color fade effect implemented. This effect keeps full color nearby, and fades to black and white with distance.
This can be enabled by setting ENABLE_COLOR_FADE to 1. Only the first 7 shaders in the list have this flag.
Listed below are the customizable elements, with the corresponding shader files below:
Shrine interiors
49ce4bf04a654e80
Terrain and buildings
eabf1e8268c0acf2, bdc96b6928e88c78
Trees and plants
81bbc347eb4b6dbc, 3c49f88069390494
Water
bff17056bfac28dd, de2bafbeb363afb3
Link and other characters
dee484f174698fba
Link
1cf7d93fabd9e8e3, a2986482c342660f, 10a2a18d2a9a02d8, 8daf3642d5942233
Link's and other human character's eyes
4c324d20f5b6de3b
Clouds and other effects
a5b3a5e5ab2938bc
Simple Levels + Curves + LumaSharpening
bd8bba59e2149449
This is a postprocessing shader, a preset I created that is tuned for black/white. You can adjust the some values, or you can replace it entirely with the one from Clarity
Shaders dumped from Cemu 1.11.0b and BotW 1.3.1
Pack made by Kiri
Have fun with it

View File

@ -0,0 +1,9 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = "The Legend of Zelda: Breath of the Wild - Monochromia - Sin City inspired Mod"
version = 2
# Shaders dumped from Cemu 1.11.0b and BotW 1.3.1
# Pack made by Kiri
# Check the readMe file for info on how to customize
# Have fun with it

View File

@ -1,17 +0,0 @@
[Turbo64]
moduleMatches = 0xD09700CE
0x10180618 = .string "Invalid ,Gu_Menu ,Test ,Reserved01 ,Reserved02 ,Reserved03 ,Reserved04 ,Reserved05 ,Reserved06 ,Reserved07 ,Reserved08 ,Reserved09 ,Reserved10 ,Reserved11 ,Reserved12 ,Reserved13 ,Reserved14 ,Gu_MarioCircuit ,Gu_DossunIseki ,Gu_City ,Gu_Cake ,Gu_HorrorHouse ,Gu_Expert ,Gu_Desert ,Gu_Cloud ,Gu_SnowMountain ,Gu_Techno ,Gu_Airport ,Gu_Menu ,Gu_WaterPark ,Gu_Ocean ,Gu_BowserCastle ,Gu_RainbowRoad ,G3ds_DKJungle ,Gwii_MooMooMeadows ,G64_PeachCircuit ,G64_KinopioHighway ,Gds_PukupukuBeach ,Ggc_SherbetLand ,Gagb_MarioCircuit ,G3ds_MusicPark ,Gwii_GrumbleVolcano ,Gsfc_DonutsPlain3 ,Ggc_DryDryDesert ,G3ds_PackunSlider ,Gds_TickTockClock ,G64_YoshiValley ,Gds_WarioStadium ,G64_RainbowRoad ,Du_Metro ,Du_MuteCity ,Du_DragonRoad ,Du_Hyrule ,Du_Animal_Summer ,Du_ExciteBike ,Du_Woods ,Du_IcePark ,Dgc_YoshiCircuit ,Dwii_WariosMine ,Dsfc_RainbowRoad ,Dagb_RibbonRoad ,D3ds_NeoBowserCity ,Dgc_BabyPark ,Dagb_CheeseLand ,Du_BigBlue ,Du_Animal_Spring ,Du_Animal_Autumn ,Du_Animal_Winter ,UnderConstruction20 ,UnderConstruction21 ,UnderConstruction22 ,UnderConstruction23 ,UnderConstruction24 ,UnderConstruction25 ,UnderConstruction26 ,UnderConstruction27 ,UnderConstruction28 ,UnderConstruction29 ,UnderConstruction30 ,UnderConstruction31 ,UnderConstruction32"
0x10180F38 = .string "Invalid ,Gu_Menu ,Test ,Reserved01 ,Reserved02 ,Reserved03 ,Reserved04 ,Reserved05 ,Reserved06 ,Reserved07 ,Reserved08 ,Reserved09 ,Reserved10 ,Reserved11 ,Reserved12 ,Reserved13 ,Reserved14 ,Gu_MarioCircuit ,Gu_DossunIseki ,Gu_City ,Gu_Cake ,Gu_HorrorHouse ,Gu_Expert ,Gu_Desert ,Gu_Cloud ,Gu_SnowMountain ,Gu_Techno ,Gu_Airport ,Gu_Menu ,Gu_WaterPark ,Gu_Ocean ,Gu_BowserCastle ,Gu_RainbowRoad ,G3ds_DKJungle ,Gwii_MooMooMeadows ,G64_PeachCircuit ,G64_KinopioHighway ,Gds_PukupukuBeach ,Ggc_SherbetLand ,Gagb_MarioCircuit ,G3ds_MusicPark ,Gwii_GrumbleVolcano ,Gsfc_DonutsPlain3 ,Ggc_DryDryDesert ,G3ds_PackunSlider ,Gds_TickTockClock ,G64_YoshiValley ,Gds_WarioStadium ,G64_RainbowRoad ,Du_Metro ,Du_MuteCity ,Du_DragonRoad ,Du_Hyrule ,Du_Animal_Summer ,Du_ExciteBike ,Du_Woods ,Du_IcePark ,Dgc_YoshiCircuit ,Dwii_WariosMine ,Dsfc_RainbowRoad ,Dagb_RibbonRoad ,D3ds_NeoBowserCity ,Dgc_BabyPark ,Dagb_CheeseLand ,Du_BigBlue ,Du_Animal_Spring ,Du_Animal_Autumn ,Du_Animal_Winter ,UnderConstruction20 ,UnderConstruction21 ,UnderConstruction22 ,UnderConstruction23 ,UnderConstruction24 ,UnderConstruction25 ,UnderConstruction26 ,UnderConstruction27 ,UnderConstruction28 ,UnderConstruction29 ,UnderConstruction30 ,UnderConstruction31 ,UnderConstruction32"
0x101814F8 = .string "Invalid ,Gu_Menu ,Test ,Reserved01 ,Reserved02 ,Reserved03 ,Reserved04 ,Reserved05 ,Reserved06 ,Reserved07 ,Reserved08 ,Reserved09 ,Reserved10 ,Reserved11 ,Reserved12 ,Reserved13 ,Reserved14 ,Gu_MarioCircuit ,Gu_DossunIseki ,Gu_City ,Gu_Cake ,Gu_HorrorHouse ,Gu_Expert ,Gu_Desert ,Gu_Cloud ,Gu_SnowMountain ,Gu_Techno ,Gu_Airport ,Gu_Menu ,Gu_WaterPark ,Gu_Ocean ,Gu_BowserCastle ,Gu_RainbowRoad ,G3ds_DKJungle ,Gwii_MooMooMeadows ,G64_PeachCircuit ,G64_KinopioHighway ,Gds_PukupukuBeach ,Ggc_SherbetLand ,Gagb_MarioCircuit ,G3ds_MusicPark ,Gwii_GrumbleVolcano ,Gsfc_DonutsPlain3 ,Ggc_DryDryDesert ,G3ds_PackunSlider ,Gds_TickTockClock ,G64_YoshiValley ,Gds_WarioStadium ,G64_RainbowRoad ,Du_Metro ,Du_MuteCity ,Du_DragonRoad ,Du_Hyrule ,Du_Animal_Summer ,Du_ExciteBike ,Du_Woods ,Du_IcePark ,Dgc_YoshiCircuit ,Dwii_WariosMine ,Dsfc_RainbowRoad ,Dagb_RibbonRoad ,D3ds_NeoBowserCity ,Dgc_BabyPark ,Dagb_CheeseLand ,Du_BigBlue ,Du_Animal_Spring ,Du_Animal_Autumn ,Du_Animal_Winter ,UnderConstruction20 ,UnderConstruction21 ,UnderConstruction22 ,UnderConstruction23 ,UnderConstruction24 ,UnderConstruction25 ,UnderConstruction26 ,UnderConstruction27 ,UnderConstruction28 ,UnderConstruction29 ,UnderConstruction30 ,UnderConstruction31 ,UnderConstruction32"
0x10183EF0 = .string "Invalid ,Gu_Menu ,Test ,Reserved01 ,Reserved02 ,Reserved03 ,Reserved04 ,Reserved05 ,Reserved06 ,Reserved07 ,Reserved08 ,Reserved09 ,Reserved10 ,Reserved11 ,Reserved12 ,Reserved13 ,Reserved14 ,Gu_MarioCircuit ,Gu_DossunIseki ,Gu_City ,Gu_Cake ,Gu_HorrorHouse ,Gu_Expert ,Gu_Desert ,Gu_Cloud ,Gu_SnowMountain ,Gu_Techno ,Gu_Airport ,Gu_Menu ,Gu_WaterPark ,Gu_Ocean ,Gu_BowserCastle ,Gu_RainbowRoad ,G3ds_DKJungle ,Gwii_MooMooMeadows ,G64_PeachCircuit ,G64_KinopioHighway ,Gds_PukupukuBeach ,Ggc_SherbetLand ,Gagb_MarioCircuit ,G3ds_MusicPark ,Gwii_GrumbleVolcano ,Gsfc_DonutsPlain3 ,Ggc_DryDryDesert ,G3ds_PackunSlider ,Gds_TickTockClock ,G64_YoshiValley ,Gds_WarioStadium ,G64_RainbowRoad ,Du_Metro ,Du_MuteCity ,Du_DragonRoad ,Du_Hyrule ,Du_Animal_Summer ,Du_ExciteBike ,Du_Woods ,Du_IcePark ,Dgc_YoshiCircuit ,Dwii_WariosMine ,Dsfc_RainbowRoad ,Dagb_RibbonRoad ,D3ds_NeoBowserCity ,Dgc_BabyPark ,Dagb_CheeseLand ,Du_BigBlue ,Du_Animal_Spring ,Du_Animal_Autumn ,Du_Animal_Winter ,UnderConstruction20 ,UnderConstruction21 ,UnderConstruction22 ,UnderConstruction23 ,UnderConstruction24 ,UnderConstruction25 ,UnderConstruction26 ,UnderConstruction27 ,UnderConstruction28 ,UnderConstruction29 ,UnderConstruction30 ,UnderConstruction31 ,UnderConstruction32"
0x10184410 = .string "Invalid ,Gu_Menu ,Test ,Reserved01 ,Reserved02 ,Reserved03 ,Reserved04 ,Reserved05 ,Reserved06 ,Reserved07 ,Reserved08 ,Reserved09 ,Reserved10 ,Reserved11 ,Reserved12 ,Reserved13 ,Reserved14 ,Gu_MarioCircuit ,Gu_DossunIseki ,Gu_City ,Gu_Cake ,Gu_HorrorHouse ,Gu_Expert ,Gu_Desert ,Gu_Cloud ,Gu_SnowMountain ,Gu_Techno ,Gu_Airport ,Gu_Menu ,Gu_WaterPark ,Gu_Ocean ,Gu_BowserCastle ,Gu_RainbowRoad ,G3ds_DKJungle ,Gwii_MooMooMeadows ,G64_PeachCircuit ,G64_KinopioHighway ,Gds_PukupukuBeach ,Ggc_SherbetLand ,Gagb_MarioCircuit ,G3ds_MusicPark ,Gwii_GrumbleVolcano ,Gsfc_DonutsPlain3 ,Ggc_DryDryDesert ,G3ds_PackunSlider ,Gds_TickTockClock ,G64_YoshiValley ,Gds_WarioStadium ,G64_RainbowRoad ,Du_Metro ,Du_MuteCity ,Du_DragonRoad ,Du_Hyrule ,Du_Animal_Summer ,Du_ExciteBike ,Du_Woods ,Du_IcePark ,Dgc_YoshiCircuit ,Dwii_WariosMine ,Dsfc_RainbowRoad ,Dagb_RibbonRoad ,D3ds_NeoBowserCity ,Dgc_BabyPark ,Dagb_CheeseLand ,Du_BigBlue ,Du_Animal_Spring ,Du_Animal_Autumn ,Du_Animal_Winter ,UnderConstruction20 ,UnderConstruction21 ,UnderConstruction22 ,UnderConstruction23 ,UnderConstruction24 ,UnderConstruction25 ,UnderConstruction26 ,UnderConstruction27 ,UnderConstruction28 ,UnderConstruction29 ,UnderConstruction30 ,UnderConstruction31 ,UnderConstruction32"
0x10184904 = .string "Invalid ,Gu_Menu ,Test ,Reserved01 ,Reserved02 ,Reserved03 ,Reserved04 ,Reserved05 ,Reserved06 ,Reserved07 ,Reserved08 ,Reserved09 ,Reserved10 ,Reserved11 ,Reserved12 ,Reserved13 ,Reserved14 ,Gu_MarioCircuit ,Gu_DossunIseki ,Gu_City ,Gu_Cake ,Gu_HorrorHouse ,Gu_Expert ,Gu_Desert ,Gu_Cloud ,Gu_SnowMountain ,Gu_Techno ,Gu_Airport ,Gu_Menu ,Gu_WaterPark ,Gu_Ocean ,Gu_BowserCastle ,Gu_RainbowRoad ,G3ds_DKJungle ,Gwii_MooMooMeadows ,G64_PeachCircuit ,G64_KinopioHighway ,Gds_PukupukuBeach ,Ggc_SherbetLand ,Gagb_MarioCircuit ,G3ds_MusicPark ,Gwii_GrumbleVolcano ,Gsfc_DonutsPlain3 ,Ggc_DryDryDesert ,G3ds_PackunSlider ,Gds_TickTockClock ,G64_YoshiValley ,Gds_WarioStadium ,G64_RainbowRoad ,Du_Metro ,Du_MuteCity ,Du_DragonRoad ,Du_Hyrule ,Du_Animal_Summer ,Du_ExciteBike ,Du_Woods ,Du_IcePark ,Dgc_YoshiCircuit ,Dwii_WariosMine ,Dsfc_RainbowRoad ,Dagb_RibbonRoad ,D3ds_NeoBowserCity ,Dgc_BabyPark ,Dagb_CheeseLand ,Du_BigBlue ,Du_Animal_Spring ,Du_Animal_Autumn ,Du_Animal_Winter ,UnderConstruction20 ,UnderConstruction21 ,UnderConstruction22 ,UnderConstruction23 ,UnderConstruction24 ,UnderConstruction25 ,UnderConstruction26 ,UnderConstruction27 ,UnderConstruction28 ,UnderConstruction29 ,UnderConstruction30 ,UnderConstruction31 ,UnderConstruction32"
0x10187ECC = .string "Invalid ,Gu_Menu ,Test ,Reserved01 ,Reserved02 ,Reserved03 ,Reserved04 ,Reserved05 ,Reserved06 ,Reserved07 ,Reserved08 ,Reserved09 ,Reserved10 ,Reserved11 ,Reserved12 ,Reserved13 ,Reserved14 ,Gu_MarioCircuit ,Gu_DossunIseki ,Gu_City ,Gu_Cake ,Gu_HorrorHouse ,Gu_Expert ,Gu_Desert ,Gu_Cloud ,Gu_SnowMountain ,Gu_Techno ,Gu_Airport ,Gu_Menu ,Gu_WaterPark ,Gu_Ocean ,Gu_BowserCastle ,Gu_RainbowRoad ,G3ds_DKJungle ,Gwii_MooMooMeadows ,G64_PeachCircuit ,G64_KinopioHighway ,Gds_PukupukuBeach ,Ggc_SherbetLand ,Gagb_MarioCircuit ,G3ds_MusicPark ,Gwii_GrumbleVolcano ,Gsfc_DonutsPlain3 ,Ggc_DryDryDesert ,G3ds_PackunSlider ,Gds_TickTockClock ,G64_YoshiValley ,Gds_WarioStadium ,G64_RainbowRoad ,Du_Metro ,Du_MuteCity ,Du_DragonRoad ,Du_Hyrule ,Du_Animal_Summer ,Du_ExciteBike ,Du_Woods ,Du_IcePark ,Dgc_YoshiCircuit ,Dwii_WariosMine ,Dsfc_RainbowRoad ,Dagb_RibbonRoad ,D3ds_NeoBowserCity ,Dgc_BabyPark ,Dagb_CheeseLand ,Du_BigBlue ,Du_Animal_Spring ,Du_Animal_Autumn ,Du_Animal_Winter ,UnderConstruction20 ,UnderConstruction21 ,UnderConstruction22 ,UnderConstruction23 ,UnderConstruction24 ,UnderConstruction25 ,UnderConstruction26 ,UnderConstruction27 ,UnderConstruction28 ,UnderConstruction29 ,UnderConstruction30 ,UnderConstruction31 ,UnderConstruction32"
0x10188960 = .string "Invalid ,Gu_Menu ,Test ,Reserved01 ,Reserved02 ,Reserved03 ,Reserved04 ,Reserved05 ,Reserved06 ,Reserved07 ,Reserved08 ,Reserved09 ,Reserved10 ,Reserved11 ,Reserved12 ,Reserved13 ,Reserved14 ,Gu_MarioCircuit ,Gu_DossunIseki ,Gu_City ,Gu_Cake ,Gu_HorrorHouse ,Gu_Expert ,Gu_Desert ,Gu_Cloud ,Gu_SnowMountain ,Gu_Techno ,Gu_Airport ,Gu_Menu ,Gu_WaterPark ,Gu_Ocean ,Gu_BowserCastle ,Gu_RainbowRoad ,G3ds_DKJungle ,Gwii_MooMooMeadows ,G64_PeachCircuit ,G64_KinopioHighway ,Gds_PukupukuBeach ,Ggc_SherbetLand ,Gagb_MarioCircuit ,G3ds_MusicPark ,Gwii_GrumbleVolcano ,Gsfc_DonutsPlain3 ,Ggc_DryDryDesert ,G3ds_PackunSlider ,Gds_TickTockClock ,G64_YoshiValley ,Gds_WarioStadium ,G64_RainbowRoad ,Du_Metro ,Du_MuteCity ,Du_DragonRoad ,Du_Hyrule ,Du_Animal_Summer ,Du_ExciteBike ,Du_Woods ,Du_IcePark ,Dgc_YoshiCircuit ,Dwii_WariosMine ,Dsfc_RainbowRoad ,Dagb_RibbonRoad ,D3ds_NeoBowserCity ,Dgc_BabyPark ,Dagb_CheeseLand ,Du_BigBlue ,Du_Animal_Spring ,Du_Animal_Autumn ,Du_Animal_Winter ,UnderConstruction20 ,UnderConstruction21 ,UnderConstruction22 ,UnderConstruction23 ,UnderConstruction24 ,UnderConstruction25 ,UnderConstruction26 ,UnderConstruction27 ,UnderConstruction28 ,UnderConstruction29 ,UnderConstruction30 ,UnderConstruction31 ,UnderConstruction32"
0x1018921C = .string "Invalid ,Gu_Menu ,Test ,Reserved01 ,Reserved02 ,Reserved03 ,Reserved04 ,Reserved05 ,Reserved06 ,Reserved07 ,Reserved08 ,Reserved09 ,Reserved10 ,Reserved11 ,Reserved12 ,Reserved13 ,Reserved14 ,Gu_MarioCircuit ,Gu_DossunIseki ,Gu_City ,Gu_Cake ,Gu_HorrorHouse ,Gu_Expert ,Gu_Desert ,Gu_Cloud ,Gu_SnowMountain ,Gu_Techno ,Gu_Airport ,Gu_Menu ,Gu_WaterPark ,Gu_Ocean ,Gu_BowserCastle ,Gu_RainbowRoad ,G3ds_DKJungle ,Gwii_MooMooMeadows ,G64_PeachCircuit ,G64_KinopioHighway ,Gds_PukupukuBeach ,Ggc_SherbetLand ,Gagb_MarioCircuit ,G3ds_MusicPark ,Gwii_GrumbleVolcano ,Gsfc_DonutsPlain3 ,Ggc_DryDryDesert ,G3ds_PackunSlider ,Gds_TickTockClock ,G64_YoshiValley ,Gds_WarioStadium ,G64_RainbowRoad ,Du_Metro ,Du_MuteCity ,Du_DragonRoad ,Du_Hyrule ,Du_Animal_Summer ,Du_ExciteBike ,Du_Woods ,Du_IcePark ,Dgc_YoshiCircuit ,Dwii_WariosMine ,Dsfc_RainbowRoad ,Dagb_RibbonRoad ,D3ds_NeoBowserCity ,Dgc_BabyPark ,Dagb_CheeseLand ,Du_BigBlue ,Du_Animal_Spring ,Du_Animal_Autumn ,Du_Animal_Winter ,UnderConstruction20 ,UnderConstruction21 ,UnderConstruction22 ,UnderConstruction23 ,UnderConstruction24 ,UnderConstruction25 ,UnderConstruction26 ,UnderConstruction27 ,UnderConstruction28 ,UnderConstruction29 ,UnderConstruction30 ,UnderConstruction31 ,UnderConstruction32"
0x1018AA9C = .string "Invalid ,Gu_Menu ,Test ,Reserved01 ,Reserved02 ,Reserved03 ,Reserved04 ,Reserved05 ,Reserved06 ,Reserved07 ,Reserved08 ,Reserved09 ,Reserved10 ,Reserved11 ,Reserved12 ,Reserved13 ,Reserved14 ,Gu_MarioCircuit ,Gu_DossunIseki ,Gu_City ,Gu_Cake ,Gu_HorrorHouse ,Gu_Expert ,Gu_Desert ,Gu_Cloud ,Gu_SnowMountain ,Gu_Techno ,Gu_Airport ,Gu_Menu ,Gu_WaterPark ,Gu_Ocean ,Gu_BowserCastle ,Gu_RainbowRoad ,G3ds_DKJungle ,Gwii_MooMooMeadows ,G64_PeachCircuit ,G64_KinopioHighway ,Gds_PukupukuBeach ,Ggc_SherbetLand ,Gagb_MarioCircuit ,G3ds_MusicPark ,Gwii_GrumbleVolcano ,Gsfc_DonutsPlain3 ,Ggc_DryDryDesert ,G3ds_PackunSlider ,Gds_TickTockClock ,G64_YoshiValley ,Gds_WarioStadium ,G64_RainbowRoad ,Du_Metro ,Du_MuteCity ,Du_DragonRoad ,Du_Hyrule ,Du_Animal_Summer ,Du_ExciteBike ,Du_Woods ,Du_IcePark ,Dgc_YoshiCircuit ,Dwii_WariosMine ,Dsfc_RainbowRoad ,Dagb_RibbonRoad ,D3ds_NeoBowserCity ,Dgc_BabyPark ,Dagb_CheeseLand ,Du_BigBlue ,Du_Animal_Spring ,Du_Animal_Autumn ,Du_Animal_Winter ,UnderConstruction20 ,UnderConstruction21 ,UnderConstruction22 ,UnderConstruction23 ,UnderConstruction24 ,UnderConstruction25 ,UnderConstruction26 ,UnderConstruction27 ,UnderConstruction28 ,UnderConstruction29 ,UnderConstruction30 ,UnderConstruction31 ,UnderConstruction32"
0x1018BB64 = .string "Invalid ,Gu_Menu ,Test ,Reserved01 ,Reserved02 ,Reserved03 ,Reserved04 ,Reserved05 ,Reserved06 ,Reserved07 ,Reserved08 ,Reserved09 ,Reserved10 ,Reserved11 ,Reserved12 ,Reserved13 ,Reserved14 ,Gu_MarioCircuit ,Gu_DossunIseki ,Gu_City ,Gu_Cake ,Gu_HorrorHouse ,Gu_Expert ,Gu_Desert ,Gu_Cloud ,Gu_SnowMountain ,Gu_Techno ,Gu_Airport ,Gu_Menu ,Gu_WaterPark ,Gu_Ocean ,Gu_BowserCastle ,Gu_RainbowRoad ,G3ds_DKJungle ,Gwii_MooMooMeadows ,G64_PeachCircuit ,G64_KinopioHighway ,Gds_PukupukuBeach ,Ggc_SherbetLand ,Gagb_MarioCircuit ,G3ds_MusicPark ,Gwii_GrumbleVolcano ,Gsfc_DonutsPlain3 ,Ggc_DryDryDesert ,G3ds_PackunSlider ,Gds_TickTockClock ,G64_YoshiValley ,Gds_WarioStadium ,G64_RainbowRoad ,Du_Metro ,Du_MuteCity ,Du_DragonRoad ,Du_Hyrule ,Du_Animal_Summer ,Du_ExciteBike ,Du_Woods ,Du_IcePark ,Dgc_YoshiCircuit ,Dwii_WariosMine ,Dsfc_RainbowRoad ,Dagb_RibbonRoad ,D3ds_NeoBowserCity ,Dgc_BabyPark ,Dagb_CheeseLand ,Du_BigBlue ,Du_Animal_Spring ,Du_Animal_Autumn ,Du_Animal_Winter ,UnderConstruction20 ,UnderConstruction21 ,UnderConstruction22 ,UnderConstruction23 ,UnderConstruction24 ,UnderConstruction25 ,UnderConstruction26 ,UnderConstruction27 ,UnderConstruction28 ,UnderConstruction29 ,UnderConstruction30 ,UnderConstruction31 ,UnderConstruction32"
#Original:
#.string "Invalid ,Gu_Menu ,Test ,Reserved01 ,Reserved02 ,Reserved03 ,Reserved04 ,Reserved05 ,Reserved06 ,Reserved07 ,Reserved08 ,Reserved09 ,Reserved10 ,Reserved11 ,Reserved12 ,Reserved13 ,Reserved14 ,Gu_MarioCircuit ,Gu_DossunIseki ,Gu_City ,Gu_Cake ,Gu_HorrorHouse ,Gu_Expert ,Gu_Desert ,Gu_Cloud ,Gu_SnowMountain ,Gu_Techno ,Gu_Airport ,Gu_FirstCircuit ,Gu_WaterPark ,Gu_Ocean ,Gu_BowserCastle ,Gu_RainbowRoad ,G3ds_DKJungle ,Gwii_MooMooMeadows ,G64_PeachCircuit ,G64_KinopioHighway ,Gds_PukupukuBeach ,Ggc_SherbetLand ,Gagb_MarioCircuit ,G3ds_MusicPark ,Gwii_GrumbleVolcano ,Gsfc_DonutsPlain3 ,Ggc_DryDryDesert ,G3ds_PackunSlider ,Gds_TickTockClock ,G64_YoshiValley ,Gds_WarioStadium ,G64_RainbowRoad ,Du_Metro ,Du_MuteCity ,Du_DragonRoad ,Du_Hyrule ,Du_Animal_Summer ,Du_ExciteBike ,Du_Woods ,Du_IcePark ,Dgc_YoshiCircuit ,Dwii_WariosMine ,Dsfc_RainbowRoad ,Dagb_RibbonRoad ,D3ds_NeoBowserCity ,Dgc_BabyPark ,Dagb_CheeseLand ,Du_BigBlue ,Du_Animal_Spring ,Du_Animal_Autumn ,Du_Animal_Winter ,UnderConstruction20 ,UnderConstruction21 ,UnderConstruction22 ,UnderConstruction23 ,UnderConstruction24 ,UnderConstruction25 ,UnderConstruction26 ,UnderConstruction27 ,UnderConstruction28 ,UnderConstruction29 ,UnderConstruction30 ,UnderConstruction31 ,UnderConstruction32"

View File

@ -1,4 +0,0 @@
[Definition]
titleIds = 000500001010ec00,000500001010ed00,000500001010eb00
name = "Mario Kart 8 - The Void"
version = 2

View File

@ -0,0 +1,105 @@
<?php
include 'Source/functions.php';
$fullWidth = $argv[1];
$fullHeight = $argv[2];
$scaleFactorX = always_decimal_format($fullWidth / 1280.0);
$scaleFactorY = always_decimal_format($fullHeight / 720.0);
?>
#version 420
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_shading_language_packing : enable
// shader 01bef64ec0cccd53 // cloud vs
const float resXScale = <?=$scaleFactorX?>;
const float resYScale = <?=$scaleFactorY?>;
uniform ivec4 uf_remappedVS[1];
uniform vec2 uf_windowSpaceToClipSpaceTransform;
layout(binding = 32) uniform sampler2D textureUnitVS0;
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 passParameterSem1;
layout(location = 0) out vec4 passParameterSem0;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R3i = ivec4(0);
ivec4 R127i = 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;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = ivec4(gl_VertexID, 0, 0, gl_InstanceID);
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), floatBitsToInt(1.0));
attrDecoder.xy = attrDataSem1.xy;
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
attrDecoder.z = 0;
attrDecoder.w = 0;
R2i = ivec4(int(attrDecoder.x), int(attrDecoder.y), floatBitsToInt(0.0), floatBitsToInt(1.0));
// 0
backupReg0i = R1i.x;
backupReg1i = R1i.y;
R1i.x = backupReg0i;
R1i.x = floatBitsToInt(intBitsToFloat(R1i.x) * 2.0);
R1i.y = backupReg1i;
R1i.y = floatBitsToInt(intBitsToFloat(R1i.y) * 2.0);
R1i.z = 0x3f800000;
R0i.w = 0;
R0i.y = floatBitsToInt(-(intBitsToFloat(uf_remappedVS[0].z)/resXScale));
R0i.y = floatBitsToInt(intBitsToFloat(R0i.y) / 2.0);
PS0i = R0i.y;
R3i.xy = ivec4(textureSize(textureUnitVS0, 0),1,1).xy;
// export
gl_Position = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.z));
// 0
PV0i.x = floatBitsToInt(-(intBitsToFloat(uf_remappedVS[0].w)/resYScale));
PV0i.x = floatBitsToInt(intBitsToFloat(PV0i.x) / 2.0);
R0i.z = R0i.y;
R127i.w = floatBitsToInt(float(R3i.x));
PS0i = R127i.w;
// 1
R0i.w = PV0i.x;
R127i.z = floatBitsToInt(float(R3i.y));
PS1i = R127i.z;
// 2
PS0i = floatBitsToInt(1.0 / intBitsToFloat(R127i.w));
// 3
R3i.x = floatBitsToInt((-(intBitsToFloat(PS0i)) * intBitsToFloat(0x3c23d70a) + intBitsToFloat(R2i.x)));
PV1i.x = R3i.x;
PS1i = floatBitsToInt(1.0 / intBitsToFloat(R127i.z));
// 4
R0i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),intBitsToFloat(uf_remappedVS[0].x)*resXScale) + 0.5));
R3i.y = floatBitsToInt((-(intBitsToFloat(PS1i)) * intBitsToFloat(0x3c23d70a) + intBitsToFloat(R2i.y)));
PV0i.y = R3i.y;
// 5
R0i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(uf_remappedVS[0].y)*resYScale) + 0.5));
// export
passParameterSem1 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), intBitsToFloat(R0i.w));
// export
passParameterSem0 = vec4(intBitsToFloat(R3i.x), intBitsToFloat(R3i.y), intBitsToFloat(R3i.z), intBitsToFloat(R3i.z));
}

View File

@ -10,7 +10,7 @@ $scaleFactorY = always_decimal_format($fullHeight / 720.0);
#extension GL_ARB_shading_language_packing : enable
// shader 0b9b8f5dfa16ad58
// Fixed radius blur
// main menu v
// main menu h
const float resXScale = <?=$scaleFactorX?>;
const float resYScale = <?=$scaleFactorY?>;

View File

@ -129,7 +129,7 @@ PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) / 2.0);
R125i.z = floatBitsToInt(intBitsToFloat(R1i.w) + -(0.5));
PS0i = R125i.z;
// 1
R123i.x = floatBitsToInt((intBitsToFloat(uf_remappedVS[3].w) * 2.0 / resXScale + intBitsToFloat(PV0i.y)));
R123i.x = floatBitsToInt((intBitsToFloat(uf_remappedVS[3].w) * 2.0 / resYScale + intBitsToFloat(PV0i.y)));
PV1i.x = R123i.x;
R126i.y = floatBitsToInt(-(intBitsToFloat(uf_remappedVS[4].x)));
R126i.y = floatBitsToInt(intBitsToFloat(R126i.y) * 2.0);

View File

@ -73,7 +73,7 @@ PS0f = R2f.x + -(intBitsToFloat(uf_remappedVS[0].x)/resXScale);
backupReg0f = R2f.y;
backupReg1f = R2f.x;
PV1f.x = R2f.y + -(intBitsToFloat(uf_remappedVS[0].y)/resYScale);
R2f.y = backupReg0f + intBitsToFloat(uf_remappedVS[0].y)/resXScale;
R2f.y = backupReg0f + intBitsToFloat(uf_remappedVS[0].y)/resYScale;
R2f.z = PS0f;
R2f.x = backupReg1f + intBitsToFloat(uf_remappedVS[0].x)/resXScale;
PS1f = R2f.x;

View File

@ -10,7 +10,7 @@ $scaleFactorY = always_decimal_format($fullHeight / 720.0);
#extension GL_ARB_shading_language_packing : enable
// shader 81eb264a750163d9
// Fixed radius blur
// volumetric light blur h
// volumetric light blur v
const float resXScale = <?=$scaleFactorX?>;
const float resYScale = <?=$scaleFactorY?>;

View File

@ -73,9 +73,9 @@ PV0f.w = R0f.w;
R0f.y = R2f.y;
PS0f = R0f.y;
// 1
PV1f.x = -(intBitsToFloat(uf_remappedVS[0].w)/resXScale);
PV1f.x = -(intBitsToFloat(uf_remappedVS[0].w)/resYScale);
PV1f.x /= 2.0;
PV1f.y = -(intBitsToFloat(uf_remappedVS[0].z)/resYScale);
PV1f.y = -(intBitsToFloat(uf_remappedVS[0].z)/resXScale);
PV1f.y /= 2.0;
R2f.x = (mul_nonIEEE(PV0f.w,intBitsToFloat(uf_remappedVS[0].x)*resXScale) + 0.5);
PS1f = R2f.x;

View File

@ -85,9 +85,9 @@ PV0f.w = R127f.w;
R127f.x = PV1f.x * 1.0;
PS0f = R127f.x;
// 3
R126f.x = (intBitsToFloat(uf_remappedVS[0].y) * 2.0 / resXScale + PV0f.w);
R126f.x = (intBitsToFloat(uf_remappedVS[0].y) * 2.0 / resYScale + PV0f.w);
R0f.y = PV0f.z + 0.5;
R123f.z = (intBitsToFloat(uf_remappedVS[0].x) * 2.0 / resYScale + PV0f.y);
R123f.z = (intBitsToFloat(uf_remappedVS[0].x) * 2.0 / resXScale + PV0f.y);
PV1f.z = R123f.z;
PV1f.w = PV0f.w;
R0f.x = PV0f.x + 0.5;

View File

@ -10,7 +10,7 @@ $scaleFactorY = always_decimal_format($fullHeight / 720.0);
#extension GL_ARB_shading_language_packing : enable
// shader f69e84515ae56e70
// Fixed radius blur
// bloom blur h
// bloom blur v
const float resXScale = <?=$scaleFactorX?>;
const float resYScale = <?=$scaleFactorY?>;

View File

@ -10,7 +10,7 @@ $scaleFactorY = always_decimal_format($fullHeight / 720.0);
#extension GL_ARB_shading_language_packing : enable
// shader fc3e63a2007625f8
// Fixed radius blur
// main menu h
// main menu v
const float resXScale = <?=$scaleFactorX?>;
const float resYScale = <?=$scaleFactorY?>;
@ -63,7 +63,7 @@ R126f.z = (0.0 > R1f.x)?1.0:0.0;
R126f.z /= 2.0;
R127f.w = 1.0;
PV0f.w = R127f.w;
R126f.x = intBitsToFloat(uf_remappedVS[0].w) / resXScale * intBitsToFloat(0x3fae8a72);
R126f.x = intBitsToFloat(uf_remappedVS[0].w) / resYScale * intBitsToFloat(0x3fae8a72);
PS0f = R126f.x;
// 1
R0f.x = dot(vec4(R1f.x,R1f.y,R1f.z,PV0f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));

View File

@ -19,8 +19,21 @@ formatsExcluded = 0x41A # exclude the intro background texture
overwriteWidth = <?=round($scaleFactorX*1920)?>
overwriteHeight = <?=round($scaleFactorY*1080)?>
[TextureRedefine] # game half res upscaling
width = 960
height = 540
overwriteWidth = <?=round($scaleFactorX*960)?>
overwriteHeight = <?=round($scaleFactorY*540)?>
[TextureRedefine] # game quarter res upscaling
width = 480
height = 270
overwriteWidth = <?=round($scaleFactorX*480)?>
overwriteHeight = <?=round($scaleFactorX*270)?>
[TextureRedefine] # gamepad rendering resolution
width = 854
height = 480
overwriteWidth = <?=round($scaleFactorX*1920)?>
overwriteHeight = <?=round($scaleFactorY*1080)?>
overwriteWidth = <?=round($scaleFactorX*854)?>
overwriteHeight = <?=round($scaleFactorY*480)?>

View File

@ -4,7 +4,6 @@ skip_tags: true
environment:
# It's prefered to have the GithubAuthToken (encrypted) set in the UI. Follow this guide for the instructions https://www.appveyor.com/docs/deployment/github/#provider-settings.
CommitTimestamp: 0
CommitDescription: 'No description was added to this commit.'
CYG_MIRROR: http://cygwin.mirror.constant.com
CYG_PACKAGES: bash,php,dos2unix
matrix:
@ -35,7 +34,7 @@ init:
# Install needed build dependencies
install:
- if defined appveyor_repo_commit_message_extended (set CommitDescription=%appveyor_repo_commit_message_extended%) # If there's is a description set it to that, otherwise leave it.
- if defined appveyor_repo_commit_message_extended (echo "Found commit description!") else (set appveyor_repo_commit_message_extended='No description was added to this commit.') # If there's is a description set it to that, otherwise leave it.
- ps: $env:CommitTimestamp=[System.DateTime]::UtcNow # Readable timestamp
- ps: if (Test-Path Env:\CYG_ROOT) { Start-FileDownload "http://cygwin.com/$env:CYG_SETUP" -FileName "cygsetup.exe" -Timeout 30000 }
- ps: if ((Get-Content "cygsetup.exe") -eq $Null) { Copy-Item "$env:CYG_SETUP" -Destination "cygsetup.exe" -Force } else { Copy-Item "cygsetup.exe" -Destination "$env:CYG_SETUP" -Force }
@ -62,7 +61,7 @@ deploy:
tag: "appveyor$(appveyor_build_version)"
# Tag needs to be the same otherwise it won't overwrite.
release: "Graphic Packs: version 2-$(appveyor_build_version)"
description: "Updated to **v2-$(appveyor_build_version)** at $(CommitTimestamp) (UTC)\n\n### Changelog:\n**$(appveyor_repo_commit_message)** - Commit $(appveyor_repo_commit) by $(appveyor_repo_commit_author):\n```\n$(CommitDescription)\n```\n#### [Installation instructions](https://$(appveyor_account_name).github.io/$(appveyor_project_name)/) - [Previous versions](https://ci.appveyor.com/project/$(appveyor_account_name)/cemu-graphic-packs/history)"
description: "Updated to **v2-$(appveyor_build_version)** at $(CommitTimestamp) (UTC)\n\n### Changelog:\n**$(appveyor_repo_commit_message)** - Commit $(appveyor_repo_commit) by $(appveyor_repo_commit_author):\n```\n$(appveyor_repo_commit_message_extended)\n```\n#### [Installation instructions](https://$(appveyor_account_name).github.io/$(appveyor_project_name)/) - [Previous versions](https://ci.appveyor.com/project/$(appveyor_account_name)/cemu-graphic-packs/history)"
provider: GitHub
# Auth token is generated by using https://www.appveyor.com/docs/deployment/github/#provider-settings
auth_token: $(GithubAuthToken)