Update NSMBU to V5, add No HUD Pack, additions to BotW's Fog pack

Thanks to Seb from the Discord for this new No HUD pack!
This commit is contained in:
Crementif 2021-02-18 19:01:01 +01:00
parent 558a8fee48
commit 5cd77cf68b
No known key found for this signature in database
GPG Key ID: 453870E0401C94C0
24 changed files with 4239 additions and 540 deletions

View File

@ -1,43 +0,0 @@
[Definition]
titleIds = 0005000010101D00,0005000010101E00,000500001014B700,000500001014B800,0005000010101C00,0005000010142300,0005000010142400,0005000010142200
name = Resolution
path = "New Super Mario Bros. U/Enhancements/Fancy FX" #and luigi
description = Pretty blur, de-band sky, re-align cinematic etc, maintained on Nvidia.
version = 4
[Preset]
name = 2560x1440 (Native x2)
$internalRes = 1.0
$dither = 0.1
$scaleShader = 1.0
$scaleBlur = 0.5
[Preset]
name = 1920x1080 (HD)
$internalRes = 1
$dither = 0.15
$scaleShader = 1.0
$scaleBlur = 0.25
[Preset]
name = 3840x2160 (4k - Native x3)
$internalRes = 1
$dither = 0.2
$scaleShader = 1.0
$scaleBlur = 1.0
[TextureRedefine]
width = 1280
height = 720
formats = 0x001
overwriteFormat = 0x005
[TextureRedefine]
width = 1280
height = 720
formats = 0x01a
overwriteFormat = 0x01f

View File

@ -1,107 +0,0 @@
#version 420
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
// shader 03285368cf940e37 //box bg
//float dither = $dither ;
//float scaleShader = $scaleShader;
float scaleBlur = ($scaleBlur); //0.25 4k
int sampleScale = 2;
//float lightBloom = 0.95;
layout(binding = 0) uniform sampler2D textureUnitPS0;// Tex0 addr 0xf4240800 res 1280x720x1 dim 1 tm: 4 format 001a 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 passParameterSem3;
layout(location = 0) out vec4 passPixelColor0;
uniform vec2 uf_fragCoordScale;
// FabriceNeyret2 CC, single shader gaussian by intermediate MIPmap level. www.shadertoy.com/view/ltScRG
const int samples = 8 * sampleScale, //8 or 4 balances xy position
LOD = 2, // gaussian done on MIPmap at scale LOD
sLOD = 1 << LOD; // tile size = 2^LOD
const float sigma = float(samples) * .25;
float gaussian(vec2 i) {
return exp(-.5* dot(i /= sigma, i)) / (6.28 * sigma*sigma);
}
vec4 blur(sampler2D sp, vec2 U, vec2 scale) {
vec4 O = vec4(0.0);
int s = samples / sLOD;
for (int i = 0; i < s*s; i++) {
vec2 d = vec2(i%s, i / s)*float(sLOD) - float(samples) / 2.;
O += gaussian(d) * textureLod(sp, U + scale * d, float(LOD));
}
//O / O.a;
return vec4(O.x, O.y, O.z, 0.0)*17; //16 exact, 17 ~ a touch more haze to compensate res increase
}
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){return mix(0.0, a*b, (a != 0.0) && (b != 0.0));}
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
vec4 R3f = vec4(0.0);
vec4 R123f = 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 = passParameterSem3;
vec2 coord = passParameterSem3.xy*textureSize(textureUnitPS0, 0); //
vec2 ps = vec2(1.0) / textureSize(textureUnitPS0, 0);
vec2 uv = coord * ps;
R1f.xyz = blur(textureUnitPS0, R0f.xy, ps*scaleBlur).xyz;
R2f.xyz = R1f.xyz;
R3f.xyz = R1f.xyz;
R0f.xyz = R1f.xyz;
/*
R1f.xyz = (texture(textureUnitPS0, R0f.xy).xyz);
R2f.xyz = (texture(textureUnitPS0, R0f.zy).xyz);
R3f.xyz = (texture(textureUnitPS0, R0f.xw).xyz);
R0f.xyz = (texture(textureUnitPS0, R0f.zw).xyz);
*/
// 0
PV0f.x = R1f.z + R2f.z;
PV0f.x /= 2.0;
PV0f.z = R1f.y + R2f.y;
PV0f.z /= 2.0;
PV0f.w = R1f.x + R2f.x;
PV0f.w /= 2.0;
// 1
R123f.x = (R3f.y * 0.5 + PV0f.z);
PV1f.x = R123f.x;
R123f.y = (R3f.x * 0.5 + PV0f.w);
PV1f.y = R123f.y;
R123f.w = (R3f.z * 0.5 + PV0f.x);
PV1f.w = R123f.w;
// 2
backupReg0f = R0f.x;
backupReg1f = R0f.y;
backupReg2f = R0f.z;
R0f.x = (backupReg0f * 0.5 + PV1f.y)/2.0;
R0f.y = (backupReg1f * 0.5 + PV1f.x)/2.0;
R0f.z = (backupReg2f * 0.5 + PV1f.w)/2.0;
// export
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
}

View File

@ -1,251 +0,0 @@
[Definition]
titleIds = 0005000010101D00,0005000010101E00,000500001014B700,000500001014B800,0005000010101C00,0005000010142300,0005000010142400,0005000010142200
name = Resolution
path = "New Super Mario Bros. U/Graphics/Resolution" #and luigi
description = Changes the resolution of the game. Made by getdls.
version = 4
//compatible resolutions
[Preset]
name = 1280x720 (Default)
$width = 1280
$height = 720
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1
$dither = 0.01
$scaleShader = 1.0
$scaleBlur = 0.05
[Preset]
name = 640x360
$width = 640
$height = 360
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1
$dither = 0.01
$scaleShader = 0.5
$scaleBlur = 0.0
// Quality
[Preset]
name = 1920x1080 (HD)
$width = 1920
$height = 1080
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1
$dither = 0.15
$scaleShader = 1.0
$scaleBlur = 0.25
[Preset]
name = 1600x900
$width = 1600
$height = 900
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1
$dither = 0.1
$scaleShader = 1.0
$scaleBlur = 0.25
[Preset]
name = 2560x1440 (Native x2)
$width = 2560
$height = 1440
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1.5
$dither = 0.1
$scaleShader = 1.0
$scaleBlur = 0.5
[Preset]
name = 3200x1800
$width = 3200
$height = 1800
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1
$dither = 0.2
$scaleShader = 1.0
$scaleBlur = 0.75
[Preset]
name = 3840x2160 (4k - Native x3)
$width = 3840
$height = 2160
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1
$dither = 0.2
$scaleShader = 1.0
$scaleBlur = 1.0
[Preset]
name = 5120x2880
$width = 5120
$height = 2880
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1
$dither = 0.25
$scaleShader = 1.0
$scaleBlur = 1.0
// Enthusiast
[Preset]
name = 7680x4320
$width = 7680
$height = 4320
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1
$dither = 0.25
$scaleShader = 1.0
$scaleBlur = 1.0
[Preset]
name = 10240x5760
$width = 10240
$height = 5760
$gameWidth = 1280
$gameHeight = 720
$internalRes = 1
$dither = 0.25
$scaleShader = 1.0
$scaleBlur = 1.0
#[TextureRedefine] # Tile map, dont scale
#width = 2048
#height = 512
[TextureRedefine]
width = 1280
height = 720
#formats = 0x80e,0x01a,0x001
tileModesExcluded = 0x001
overwriteWidth = ($width/$gameWidth) * 1280
overwriteHeight = ($height/$gameHeight) * 720
[TextureRedefine] #map shadows
width = 1024
height = 1024
formats = 0x005
overwriteWidth = ($height/$gameHeight) * 1024
overwriteHeight = ($height/$gameHeight) * 1024
[TextureRedefine] #Pad
width = 864
height = 480
#formats = 0x01a
overwriteWidth = ($width/$gameWidth) * 864
overwriteHeight = ($height/$gameHeight) * 480
[TextureRedefine] #Pad
width = 854
height = 480
#formats = 0x01a
overwriteWidth = ($width/$gameWidth) * 854
overwriteHeight = ($height/$gameHeight) * 480
[TextureRedefine] #Horizon blur
width = 640
height = 368
#formats = 0x01a
overwriteWidth = ($width/$gameWidth) * 640
overwriteHeight = ($height/$gameHeight) * 368
[TextureRedefine] #Horizon blur
width = 640
height = 360
#formats = 0x01a
tileModesExcluded = 0x001
overwriteWidth = ($width/$gameWidth) * 640
overwriteHeight = ($height/$gameHeight) * 360
[TextureRedefine]
width = 512
height = 256
formats = 0x01a
overwriteWidth = ($width/$gameWidth) * 512
overwriteHeight = ($height/$gameHeight) * 256
[TextureRedefine]
width = 256
height = 128
formats = 0x01a
overwriteWidth = ($width/$gameWidth) * 256
overwriteHeight = ($height/$gameHeight) * 128
[TextureRedefine]
width = 320
height = 180
#formatsExcluded =
overwriteWidth = ($width/$gameWidth) * 320
overwriteHeight = ($height/$gameHeight) * 180
[TextureRedefine]
width = 320
height = 180
#formatsExcluded =
overwriteWidth = ($width/$gameWidth) * 320
overwriteHeight = ($height/$gameHeight) * 180
[TextureRedefine]
width = 160
height = 208
#formats = 0x80e,0x01a
overwriteWidth = ($width/$gameWidth) * 160
overwriteHeight = ($height/$gameHeight) * 208
[TextureRedefine] #portraits
width = 160
height = 196
#formats = 0x80e,0x01a
formatsExcluded = 0x033
overwriteWidth = ($width/$gameWidth) * 160
overwriteHeight = ($height/$gameHeight) * 196
[TextureRedefine]
width = 160
height = 90
#formatsExcluded =
overwriteWidth = ($width/$gameWidth) * 160
overwriteHeight = ($height/$gameHeight) * 90
[TextureRedefine]
width = 128
height = 64
formats = 0x01a
overwriteWidth = ($width/$gameWidth) * 128
overwriteHeight = ($height/$gameHeight) * 64
[TextureRedefine]
width = 64
height = 32
formats = 0x01a
overwriteWidth = ($width/$gameWidth) * 64
overwriteHeight = ($height/$gameHeight) * 32
[TextureRedefine]
width = 32
height = 16
formats = 0x01a
overwriteWidth = ($width/$gameWidth) * 32
overwriteHeight = ($height/$gameHeight) * 16
## Gradient don't scale
#width = 48
#height = 48
#[TextureRedefine]
#width = 1
#height = 1
#formatsExcluded =
#overwriteWidth = ($width/$gameWidth) * 1
#overwriteHeight = ($height/$gameHeight) * 1

View File

@ -1,25 +0,0 @@
[NSMBU+LUv0]
moduleMatches = 0x1049CED8, 0x777D7B44
#remove check for mii data
0x024D7394 = b .+0xE8
[NSMBUv64USv80EU]
moduleMatches = 0x6CAEA914, 0xFA29C89F
#remove check for mii data
0x024D71C4 = b .+0xE8
[NSMBUv0USv0EU]
moduleMatches = 0xA7A5ECF1, 0xC7B938AD
#remove check for mii data
0x024BDE70 = b .+0xE8
[NSLUv0EU]
moduleMatches = 0xA3705C0B
#remove check for mii data
0x024D7158 = b .+0xE8
#Note for future versions take the crash log and get the module checksum from the user. Subtract 0x7c from the link register in the crash log to be the address we patch.

View File

@ -0,0 +1,705 @@
#version 430
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
// shader 2e2543216c04766d
// Used for: Fog Around Water
float fogOpacity = float($waterFogOpacity);
float fogRed = float($waterFogOpacity);
float fogGreen = float($waterFogOpacity);
float fogBlue = float($waterFogOpacity);
// start of shader inputs/outputs, predetermined by Cemu. Do not touch
#ifdef VULKAN
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
#else
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
#endif
#ifdef VULKAN
layout(set = 1, binding = 9) uniform ufBlock
{
uniform ivec4 uf_remappedPS[14];
uniform vec4 uf_fragCoordScale;
};
#else
uniform ivec4 uf_remappedPS[14];
uniform vec2 uf_fragCoordScale;
#endif
TEXTURE_LAYOUT(1, 1, 0) uniform sampler2D textureUnitPS1;
TEXTURE_LAYOUT(2, 1, 1) uniform sampler2D textureUnitPS2;
TEXTURE_LAYOUT(4, 1, 2) uniform sampler2D textureUnitPS4;
TEXTURE_LAYOUT(6, 1, 3) uniform sampler2D textureUnitPS6;
TEXTURE_LAYOUT(7, 1, 4) uniform sampler2D textureUnitPS7;
TEXTURE_LAYOUT(8, 1, 5) uniform samplerCubeArray textureUnitPS8;
TEXTURE_LAYOUT(10, 1, 6) uniform sampler2DArray textureUnitPS10;
TEXTURE_LAYOUT(11, 1, 7) uniform sampler2D textureUnitPS11;
TEXTURE_LAYOUT(13, 1, 8) uniform sampler2D textureUnitPS13;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem4;
layout(location = 2) in vec4 passParameterSem6;
layout(location = 0) out vec4 passPixelColor0;
// end of shader inputs/outputs
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, vec2(0.0001) + intBitsToFloat(R0i.xy)).xyzw);
R5i.xyzw = floatBitsToInt(textureGather(textureUnitPS7, vec2(0.0001) + intBitsToFloat(R0i.xy)).xyzw);
R7i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R2i.zw)).xyzw);
// 0
R126i.x = floatBitsToInt((intBitsToFloat(R6i.x) * 2.0 + -(1.0)));
R127i.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;
R126i.z = floatBitsToInt(-(intBitsToFloat(R3i.w)) + intBitsToFloat(R4i.x));
PS0i = R126i.z;
// 1
R2i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(PV0i.w))));
PV1i.x = R2i.x;
R2i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), -(intBitsToFloat(PV0i.w))));
PV1i.y = R2i.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.x = floatBitsToInt(-(intBitsToFloat(R3i.w)) + intBitsToFloat(R4i.y));
PS1i = R125i.x;
// 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;
R2i.z = floatBitsToInt(1.0 / intBitsToFloat(PV1i.w));
PS0i = R2i.z;
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R126i.x),intBitsToFloat(R127i.y),intBitsToFloat(R127i.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.x = floatBitsToInt(sqrt(intBitsToFloat(PV0i.x)));
PS1i = R127i.x;
// 4
R124i.x = floatBitsToInt(intBitsToFloat(R2i.x) + -(intBitsToFloat(uf_remappedPS[3].x)));
R126i.y = floatBitsToInt(intBitsToFloat(R2i.y) + -(intBitsToFloat(uf_remappedPS[3].y)));
R125i.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
R10i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.x), intBitsToFloat(PS0i)));
R10i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS0i)));
R11i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS0i)));
R127i.w = R2i.z;
R127i.w = floatBitsToInt(intBitsToFloat(R127i.w) * 2.0);
PS1i = floatBitsToInt(1.0 / intBitsToFloat(R127i.x));
// 6
R11i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(PS1i)));
PV0i.x = R11i.x;
R11i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(PS1i)));
PV0i.y = R11i.y;
R12i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(PS1i)));
PV0i.z = R12i.z;
R126i.w = floatBitsToInt(-(intBitsToFloat(R3i.w)) + intBitsToFloat(R4i.z));
R127i.y = floatBitsToInt(-(intBitsToFloat(R3i.w)) + intBitsToFloat(R4i.w));
PS0i = R127i.y;
// 7
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R10i.x),intBitsToFloat(R10i.y),intBitsToFloat(R11i.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;
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), intBitsToFloat(R127i.w)));
PS1i = R125i.y;
// 8
backupReg0i = R126i.z;
backupReg0i = R126i.z;
backupReg1i = R125i.x;
backupReg1i = R125i.x;
R127i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.x)),intBitsToFloat(R10i.x)) + intBitsToFloat(R11i.x)));
R124i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.x)),intBitsToFloat(R10i.y)) + intBitsToFloat(R11i.y)));
R126i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.x)),intBitsToFloat(R11i.z)) + intBitsToFloat(R12i.z)));
R127i.w = floatBitsToInt(max(intBitsToFloat(backupReg0i), -(intBitsToFloat(backupReg0i))));
R125i.x = floatBitsToInt(max(intBitsToFloat(backupReg1i), -(intBitsToFloat(backupReg1i))));
PS0i = R125i.x;
// 9
backupReg0i = R126i.w;
backupReg0i = R126i.w;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R124i.x),intBitsToFloat(R126i.y),intBitsToFloat(R125i.z),-0.0),vec4(intBitsToFloat(R124i.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;
R126i.w = floatBitsToInt(max(intBitsToFloat(backupReg0i), -(intBitsToFloat(backupReg0i))));
PS1i = R126i.w;
// 10
backupReg0i = R127i.y;
backupReg0i = R127i.y;
backupReg1i = R125i.w;
backupReg1i = R125i.w;
R126i.x = floatBitsToInt(fract(intBitsToFloat(R1i.y)));
R127i.y = floatBitsToInt(max(intBitsToFloat(backupReg0i), -(intBitsToFloat(backupReg0i))));
R127i.z = floatBitsToInt(fract(intBitsToFloat(R1i.x)));
R125i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg1i)),intBitsToFloat(backupReg1i)) + intBitsToFloat(PV1i.x)));
R8i.w = 0x40400000;
PS0i = R8i.w;
// 11
backupReg0i = R126i.y;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.x),intBitsToFloat(R124i.y),intBitsToFloat(R126i.z),-0.0),vec4(intBitsToFloat(R124i.x),intBitsToFloat(backupReg0i),intBitsToFloat(R125i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R126i.y = tempi.x;
R3i.z = floatBitsToInt(roundEven(1.0));
PS1i = R3i.z;
// 12
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;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.x)) + -(intBitsToFloat(R125i.w))));
PS0i = R122i.x;
// 13
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R5i.y));
PV1i.y = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R5i.w));
PV1i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R5i.x));
PV1i.w = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R5i.z));
PS1i = floatBitsToInt(sqrt(intBitsToFloat(PS0i)));
// 14
R124i.x = floatBitsToInt(-(intBitsToFloat(R126i.y)) + intBitsToFloat(PS1i));
PV0i.x = R124i.x;
PV0i.y = floatBitsToInt(max(intBitsToFloat(PV1i.x), -(intBitsToFloat(PV1i.x))));
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(max(intBitsToFloat(PV1i.y), -(intBitsToFloat(PV1i.y))));
PS0i = floatBitsToInt(intBitsToFloat(PS0i) * 4.0);
// 15
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.y),intBitsToFloat(R125i.x)) + intBitsToFloat(PV0i.y)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.y),intBitsToFloat(R127i.y)) + intBitsToFloat(PS0i)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.y),intBitsToFloat(R127i.w)) + intBitsToFloat(PV0i.z)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.y),intBitsToFloat(R126i.w)) + intBitsToFloat(PV0i.w)));
PV1i.w = R123i.w;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(PV0i.x)) + intBitsToFloat(R2i.x)));
PS1i = R122i.x;
// 16
PV0i.x = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + intBitsToFloat(PV1i.y));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),intBitsToFloat(R124i.x)) + intBitsToFloat(R124i.z)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.y),intBitsToFloat(R124i.x)) + intBitsToFloat(R2i.y)));
PV0i.z = R123i.z;
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.z) + -(intBitsToFloat(PV1i.w)));
R2i.x = floatBitsToInt(-(intBitsToFloat(uf_remappedPS[3].x)) + intBitsToFloat(PS1i));
PS0i = R2i.x;
// 17
R124i.x = floatBitsToInt(intBitsToFloat(PV0i.x) + -(intBitsToFloat(PV0i.w)));
R2i.y = floatBitsToInt(-(intBitsToFloat(uf_remappedPS[3].y)) + intBitsToFloat(PV0i.z));
PV1i.y = R2i.y;
R5i.z = floatBitsToInt(-(intBitsToFloat(uf_remappedPS[3].z)) + intBitsToFloat(PV0i.y));
PV1i.z = R5i.z;
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(PV0i.w));
R9i.w = floatBitsToInt((-(intBitsToFloat(R6i.w)) * intBitsToFloat(0x40400000) + intBitsToFloat(0x40400000)));
PS1i = R9i.w;
// 18
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R2i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),-0.0),vec4(intBitsToFloat(R2i.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(intBitsToFloat(PV1i.w) + intBitsToFloat(R127i.z));
PS0i = clampFI32(PS0i);
// 19
R5i.x = uf_remappedPS[4].y;
PV1i.y = floatBitsToInt(intBitsToFloat(R124i.x) + intBitsToFloat(R126i.x));
PV1i.y = clampFI32(PV1i.y);
R10i.z = uf_remappedPS[5].y;
R3i.w = floatBitsToInt(-(intBitsToFloat(R127i.z)) + intBitsToFloat(PS0i));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
R5i.w = floatBitsToInt(tempResultf);
PS1i = R5i.w;
// 20
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R10i.x),intBitsToFloat(R10i.y),intBitsToFloat(R11i.z),-0.0),vec4(intBitsToFloat(uf_remappedPS[6].x),intBitsToFloat(uf_remappedPS[6].y),intBitsToFloat(uf_remappedPS[6].z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R4i.w = floatBitsToInt(-(intBitsToFloat(R126i.x)) + intBitsToFloat(PV1i.y));
PS0i = R4i.w;
// 21
R4i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R10i.x),intBitsToFloat(R10i.y),intBitsToFloat(R11i.z),-0.0),vec4(intBitsToFloat(uf_remappedPS[7].x),intBitsToFloat(uf_remappedPS[7].y),intBitsToFloat(uf_remappedPS[7].z),0.0)));
PV1i.x = R4i.x;
PV1i.y = R4i.x;
PV1i.z = R4i.x;
PV1i.w = R4i.x;
R4i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)));
PS1i = R4i.z;
// 0
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R10i.x),intBitsToFloat(R10i.y),intBitsToFloat(R11i.z),-0.0),vec4(intBitsToFloat(uf_remappedPS[8].x),intBitsToFloat(uf_remappedPS[8].y),intBitsToFloat(uf_remappedPS[8].z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R4i.y = tempi.x;
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R5i.w)));
PS0i = R126i.x;
// 1
R3i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.z),intBitsToFloat(R3i.w)) + intBitsToFloat(R0i.x)));
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R5i.w)));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.z), intBitsToFloat(R5i.w)));
R3i.w = uf_remappedPS[9].y;
PS1i = floatBitsToInt(intBitsToFloat(R2i.z) * intBitsToFloat(0x41c80000));
PS1i = clampFI32(PS1i);
// 2
R0i.x = floatBitsToInt(intBitsToFloat(R11i.x) + intBitsToFloat(uf_remappedPS[10].x));
R3i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.w),intBitsToFloat(R4i.w)) + intBitsToFloat(R0i.y)));
R0i.z = floatBitsToInt(intBitsToFloat(R11i.y) + intBitsToFloat(uf_remappedPS[10].y));
R0i.w = floatBitsToInt((intBitsToFloat(PS1i) * 0.5 + 0.5));
R1i.z = floatBitsToInt(intBitsToFloat(R12i.z) + intBitsToFloat(uf_remappedPS[10].z));
PS0i = R1i.z;
// 3
redcCUBE(vec4(intBitsToFloat(R4i.z),intBitsToFloat(R4i.z),intBitsToFloat(R4i.x),intBitsToFloat(R4i.y)),vec4(intBitsToFloat(R4i.y),intBitsToFloat(R4i.x),intBitsToFloat(R4i.z),intBitsToFloat(R4i.z)),cubeMapSTM,cubeMapFaceId);
R125i.x = floatBitsToInt(cubeMapSTM.x);
R125i.y = floatBitsToInt(cubeMapSTM.y);
R125i.z = floatBitsToInt(cubeMapSTM.z);
R125i.w = cubeMapFaceId;
PV1i.x = R125i.x;
PV1i.y = R125i.y;
PV1i.z = R125i.z;
PV1i.w = R125i.w;
R127i.w = floatBitsToInt(-(intBitsToFloat(R6i.w)) + 1.0);
PS1i = R127i.w;
// 4
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(R124i.y),intBitsToFloat(R127i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R124i.x = floatBitsToInt(1.0 / abs(intBitsToFloat(PV1i.z)));
PS0i = R124i.x;
// 5
R4i.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(R124i.y),intBitsToFloat(R127i.z),0.0)));
PV1i.x = R4i.x;
PV1i.y = R4i.x;
PV1i.z = R4i.x;
PV1i.w = R4i.x;
R4i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)));
PS1i = R4i.z;
// 6
tempi.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(R124i.y),intBitsToFloat(R127i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R4i.y = tempi.x;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.x),intBitsToFloat(R124i.x)) + 1.5));
PS0i = R122i.x;
// 7
backupReg0i = R125i.w;
R125i.x = floatBitsToInt((intBitsToFloat(R127i.w) * 0.5 + 0.5));
R8i.y = PS0i;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.y),intBitsToFloat(R124i.x)) + 1.5));
PV1i.z = R123i.z;
R125i.w = floatBitsToInt(intBitsToFloat(R7i.w) * intBitsToFloat(0x437f0000));
R8i.z = backupReg0i;
PS1i = R8i.z;
// 8
redcCUBE(vec4(intBitsToFloat(R4i.z),intBitsToFloat(R4i.z),intBitsToFloat(R4i.x),intBitsToFloat(R4i.y)),vec4(intBitsToFloat(R4i.y),intBitsToFloat(R4i.x),intBitsToFloat(R4i.z),intBitsToFloat(R4i.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;
R8i.x = PV1i.z;
PS0i = R8i.x;
// 9
R6i.x = floatBitsToInt((intBitsToFloat(R7i.x) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R6i.x = clampFI32(R6i.x);
R6i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.x), intBitsToFloat(R125i.x)));
R6i.y = floatBitsToInt(intBitsToFloat(R6i.y) / 2.0);
R9i.z = PV0i.w;
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.w)),intBitsToFloat(R127i.w)) + intBitsToFloat(R127i.w)));
PV1i.w = R123i.w;
PS1i = floatBitsToInt(1.0 / abs(intBitsToFloat(PV0i.z)));
// 10
R7i.x = floatBitsToInt((intBitsToFloat(R7i.y) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R7i.x = clampFI32(R7i.x);
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.x),intBitsToFloat(PS1i)) + 1.5));
PV0i.y = R123i.y;
PV0i.z = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(0x3c23d70a));
PV0i.z = clampFI32(PV0i.z);
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.y),intBitsToFloat(PS1i)) + 1.5));
PV0i.w = R123i.w;
R6i.z = floatBitsToInt((intBitsToFloat(R7i.z) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R6i.z = clampFI32(R6i.z);
PS0i = R6i.z;
// 11
R9i.x = PV0i.w;
R9i.y = PV0i.y;
R7i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(PV0i.z)));
R7i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.w), intBitsToFloat(R11i.z)));
R7i.y = int(intBitsToFloat(R125i.w));
PS1i = R7i.y;
R2i.xzw = floatBitsToInt(texture(textureUnitPS11, intBitsToFloat(R3i.xy)).xzw);
R8i.xyz = floatBitsToInt(textureLod(textureUnitPS8, vec4(redcCUBEReverse(intBitsToFloat(R8i.xy),R8i.z),cubeMapArrayIndex8),intBitsToFloat(R8i.w)).xyz);
R9i.xyz = floatBitsToInt(textureLod(textureUnitPS8, vec4(redcCUBEReverse(intBitsToFloat(R9i.xy),R9i.z),cubeMapArrayIndex8),intBitsToFloat(R9i.w)).xyz);
R4i.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
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R10i.z),intBitsToFloat(R7i.w),-0.0),vec4(intBitsToFloat(R10i.x),intBitsToFloat(R10i.y),1.0,0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R127i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[10].x)), intBitsToFloat(uf_remappedPS[11].w)));
PS0i = R127i.x;
// 1
R126i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[10].y)), intBitsToFloat(uf_remappedPS[11].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(R2i.x), intBitsToFloat(R2i.w)));
PV1i.z = R125i.z;
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[11].w), intBitsToFloat(uf_remappedPS[11].w)));
R125i.x = R7i.y & int(1);
PS1i = R125i.x;
// 2
R124i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.x),-(intBitsToFloat(PV1i.y))) + intBitsToFloat(R10i.x)));
PV0i.x = R124i.x;
R124i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),-(intBitsToFloat(PV1i.y))) + intBitsToFloat(R10i.y)));
PV0i.y = R124i.y;
R124i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.w),-(intBitsToFloat(PV1i.y))) + intBitsToFloat(R11i.z)));
PV0i.z = R124i.z;
R124i.w = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[10].z)), intBitsToFloat(uf_remappedPS[11].w)));
R10i.x = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(0x3f4ccccd));
R10i.x = clampFI32(R10i.x);
PS0i = R10i.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.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[12].x), intBitsToFloat(R125i.z)));
PS1i = R126i.y;
// 4
backupReg0i = R0i.x;
backupReg0i = R0i.x;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(R0i.z),intBitsToFloat(R1i.z),-0.0),vec4(intBitsToFloat(backupReg0i),intBitsToFloat(R0i.z),intBitsToFloat(R1i.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);
// 5
backupReg0i = R124i.z;
R5i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.x), intBitsToFloat(PS0i)));
PV1i.x = R5i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.y), intBitsToFloat(PS0i)));
PV1i.y = R127i.y;
R124i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS0i)));
PV1i.z = R124i.z;
R127i.w = floatBitsToInt(intBitsToFloat(R125i.z) + 0.25);
R127i.w = clampFI32(R127i.w);
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
R125i.z = floatBitsToInt(tempResultf);
PS1i = R125i.z;
// 6
backupReg0i = R0i.x;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R11i.x),intBitsToFloat(R11i.y),intBitsToFloat(R12i.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(backupReg0i), intBitsToFloat(PS1i)));
// 7
backupReg0i = R0i.z;
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(R125i.z)));
R124i.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(backupReg0i), intBitsToFloat(R125i.z)));
R0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.w), intBitsToFloat(R125i.w)));
PS1i = R0i.x;
// 8
R124i.x = floatBitsToInt(min(intBitsToFloat(PV1i.z), 1.0));
PV0i.x = R124i.x;
R125i.y = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV1i.w)), intBitsToFloat(uf_remappedPS[11].w)));
PV0i.y = R125i.y;
R125i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV1i.x)), intBitsToFloat(uf_remappedPS[11].w)));
PV0i.z = R125i.z;
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(R2i.z)));
R127i.z = floatBitsToInt(float(R125i.x));
PS0i = R127i.z;
// 9
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.x),intBitsToFloat(R126i.x),intBitsToFloat(R124i.w),-0.0),vec4(intBitsToFloat(R124i.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;
R125i.w = tempi.x;
R125i.x = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + 1.0);
PS1i = R125i.x;
// 10
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R124i.y),intBitsToFloat(R125i.y),intBitsToFloat(R125i.z),-0.0),vec4(intBitsToFloat(R5i.x),intBitsToFloat(R127i.y),intBitsToFloat(R124i.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)));
R125i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R124i.x)),intBitsToFloat(R125i.x)) + intBitsToFloat(R125i.x)));
PV1i.y = R125i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.w), intBitsToFloat(R124i.z)));
R124i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R125i.w)),intBitsToFloat(PS0i)) + intBitsToFloat(PS0i)));
PV1i.w = R124i.w;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.x),-(intBitsToFloat(R6i.y))) + intBitsToFloat(R124i.x)));
PS1i = R122i.x;
// 12
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.x),intBitsToFloat(R127i.y)) + intBitsToFloat(PV1i.z)));
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(R125i.w)),intBitsToFloat(PV1i.w)) + intBitsToFloat(PV1i.w)));
PV0i.z = R123i.z;
R125i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.z),intBitsToFloat(PV1i.x)) + -(intBitsToFloat(PV1i.x))));
PV0i.w = R125i.w;
PS0i = floatBitsToInt(intBitsToFloat(R6i.y) + intBitsToFloat(PS1i));
// 13
backupReg0i = R125i.y;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(R5i.x)) + intBitsToFloat(PV0i.x)));
R123i.x = clampFI32(R123i.x);
PV1i.x = R123i.x;
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.w), intBitsToFloat(PV0i.z)));
PV1i.y = R125i.y;
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.w) + 1.0);
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV0i.y)));
R124i.z = floatBitsToInt(1.0 / intBitsToFloat(PS0i));
PS1i = R124i.z;
// 14
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),-(intBitsToFloat(R6i.y))) + intBitsToFloat(PV1i.x)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.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(R10i.x)));
PV0i.w = R124i.w;
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PV1i.x)));
PS0i = R125i.z;
// 15
backupReg0i = R124i.z;
PV1i.x = floatBitsToInt(intBitsToFloat(R6i.y) + intBitsToFloat(PV0i.x));
R126i.y = floatBitsToInt(intBitsToFloat(R125i.y) + intBitsToFloat(PV0i.z));
R124i.z = floatBitsToInt((-(intBitsToFloat(PV0i.w)) * intBitsToFloat(0x3ca3d70a) + intBitsToFloat(0x3ca3d70a)));
R125i.w = floatBitsToInt(0.25 * intBitsToFloat(backupReg0i));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PV0i.y));
// 16
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),-(intBitsToFloat(R125i.y))) + intBitsToFloat(R127i.w)));
PV0i.x = R127i.x;
R125i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.y),-(intBitsToFloat(R124i.w))) + intBitsToFloat(R8i.y)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.x),-(intBitsToFloat(R124i.w))) + intBitsToFloat(R8i.x)));
PV0i.z = R123i.z;
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.z), intBitsToFloat(PS1i)));
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.x));
// 17
backupReg0i = R126i.y;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.z),-(intBitsToFloat(R124i.w))) + intBitsToFloat(R8i.z)));
PV1i.x = R123i.x;
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R125i.w)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS0i), intBitsToFloat(PV0i.w)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), intBitsToFloat(R0i.x)));
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[13].x),intBitsToFloat(PV0i.x)) + intBitsToFloat(PV0i.z)));
PS1i = R122i.x;
// 18
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.z)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[13].z),intBitsToFloat(R127i.x)) + intBitsToFloat(PV1i.x)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[13].y),intBitsToFloat(R127i.x)) + intBitsToFloat(R125i.y)));
PV0i.z = R123i.z;
PV0i.w = floatBitsToInt(intBitsToFloat(R124i.w) + intBitsToFloat(R124i.z));
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS1i), intBitsToFloat(R6i.x)));
PS0i = R125i.y;
// 19
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R9i.y),intBitsToFloat(PV0i.w)) + intBitsToFloat(R4i.y)));
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R9i.x),intBitsToFloat(PV0i.w)) + intBitsToFloat(R4i.x)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R7i.x)));
R124i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R9i.z),intBitsToFloat(PV0i.w)) + intBitsToFloat(R4i.z)));
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(R6i.z)));
PS1i = R125i.w;
// 20
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[13].x), intBitsToFloat(R126i.y)));
R4i.y = floatBitsToInt((intBitsToFloat(R125i.y) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[13].z), intBitsToFloat(R126i.y)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[13].y), intBitsToFloat(R126i.y)));
R8i.y = floatBitsToInt((intBitsToFloat(PV1i.z) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PS0i = R8i.y;
// 21
R4i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R126i.x)) + intBitsToFloat(R124i.w)));
R9i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.w),intBitsToFloat(R126i.x)) + intBitsToFloat(R127i.x)));
R4i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R126i.x)) + intBitsToFloat(R127i.y)));
R3i.w = floatBitsToInt((intBitsToFloat(R125i.w) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
R6i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(R126i.w)));
PS1i = R6i.w;
// 22
PV0i.y = floatBitsToInt(intBitsToFloat(R4i.x) + intBitsToFloat(R3i.w));
PV0i.z = floatBitsToInt(intBitsToFloat(R9i.y) + intBitsToFloat(R8i.y));
PV0i.w = floatBitsToInt(intBitsToFloat(R4i.z) + intBitsToFloat(R4i.y));
// 23
R6i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.z),intBitsToFloat(PV0i.w)) + intBitsToFloat(R3i.x)));
R6i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.z),intBitsToFloat(PV0i.z)) + intBitsToFloat(R3i.y)));
R6i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.z),intBitsToFloat(PV0i.y)) + intBitsToFloat(R3i.z)));
// export
#if ($enableWaterFogColor == 0)
passPixelColor0 = vec4(intBitsToFloat(R6i.x), intBitsToFloat(R6i.y), intBitsToFloat(R6i.z), intBitsToFloat(R6i.w) * fogOpacity);
#else
passPixelColor0 = vec4(fogRed, fogGreen, fogBlue, intBitsToFloat(R6i.w)*fogOpacity);
#endif
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,995 @@
#version 430
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
// shader fb2e18ae56397ca7
// Used for: Fog around trees, bushes and vines
float fogOpacity = float($greeneryFogOpacity);
float fogBrightness = float($greeneryFogBrightness);
float fogRed = float($greeneryFogOpacity);
float fogGreen = float($greeneryFogOpacity);
float fogBlue = float($greeneryFogOpacity);
// start of shader inputs/outputs, predetermined by Cemu. Do not touch
#ifdef VULKAN
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
#else
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
#endif
#ifdef VULKAN
layout(set = 1, binding = 12) uniform ufBlock
{
uniform ivec4 uf_remappedPS[33];
uniform vec4 uf_fragCoordScale;
};
#else
uniform ivec4 uf_remappedPS[33];
uniform vec2 uf_fragCoordScale;
#endif
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
TEXTURE_LAYOUT(2, 1, 1) uniform sampler2D textureUnitPS2;
TEXTURE_LAYOUT(3, 1, 2) uniform sampler2D textureUnitPS3;
TEXTURE_LAYOUT(4, 1, 3) uniform sampler2D textureUnitPS4;
TEXTURE_LAYOUT(5, 1, 4) uniform sampler2D textureUnitPS5;
TEXTURE_LAYOUT(6, 1, 5) uniform sampler2D textureUnitPS6;
TEXTURE_LAYOUT(7, 1, 6) uniform samplerCubeArray textureUnitPS7;
TEXTURE_LAYOUT(11, 1, 7) uniform sampler2D textureUnitPS11;
TEXTURE_LAYOUT(12, 1, 8) uniform sampler2D textureUnitPS12;
TEXTURE_LAYOUT(14, 1, 9) uniform sampler2D textureUnitPS14;
TEXTURE_LAYOUT(15, 1, 10) uniform sampler2D textureUnitPS15;
TEXTURE_LAYOUT(16, 1, 11) uniform sampler2D textureUnitPS16;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem2;
layout(location = 2) in vec4 passParameterSem6;
layout(location = 0) out vec4 passPixelColor0;
layout(location = 1) out vec4 passPixelColor1;
layout(location = 2) out vec4 passPixelColor2;
layout(location = 3) out vec4 passPixelColor3;
layout(location = 4) out vec4 passPixelColor4;
// end of shader inputs/outputs
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 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 R25i = ivec4(0);
ivec4 R26i = 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 cubeMapArrayIndex7 = 0.0;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem2);
R2i = floatBitsToInt(passParameterSem6);
R3i.w = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R0i.xy)).x);
R11i.xyzw = floatBitsToInt(texture(textureUnitPS3, intBitsToFloat(R2i.zw)).xyzw);
R10i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R2i.zw)).xyzw);
R2i.xy = floatBitsToInt(texture(textureUnitPS14, intBitsToFloat(R0i.xy)).xw);
R8i.xy = floatBitsToInt(texture(textureUnitPS15, intBitsToFloat(R0i.xy)).xy);
R23i.xyz = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R2i.zw)).xyz);
// 0
R127i.x = floatBitsToInt((intBitsToFloat(R11i.x) * 2.0 + -(1.0)));
R127i.y = floatBitsToInt((intBitsToFloat(R11i.y) * 2.0 + -(1.0)));
R127i.z = floatBitsToInt((intBitsToFloat(R11i.z) * 2.0 + -(1.0)));
R7i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.w),intBitsToFloat(uf_remappedPS[0].x)) + intBitsToFloat(uf_remappedPS[1].x)));
PV0i.w = R7i.w;
R14i.w = 0x40400000;
PS0i = R14i.w;
// 1
R0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(PV0i.w))));
PV1i.x = R0i.x;
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), -(intBitsToFloat(PV0i.w))));
R126i.z = floatBitsToInt(-(intBitsToFloat(PV0i.w)));
PV1i.z = R126i.z;
R6i.w = 0x3f800000;
R2i.z = 0;
PS1i = R2i.z;
// 2
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(uf_remappedPS[2].x)));
R3i.y = floatBitsToInt((-(intBitsToFloat(R11i.w)) * 0.5 + 1.0));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(uf_remappedPS[3].x)));
R15i.w = floatBitsToInt(-(intBitsToFloat(PV1i.z)) * intBitsToFloat(0x3ba3d70a));
R16i.y = 0;
PS0i = R16i.y;
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.x),intBitsToFloat(R127i.y),intBitsToFloat(R127i.z),-0.0),vec4(intBitsToFloat(R127i.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;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.y),intBitsToFloat(uf_remappedPS[3].y)) + intBitsToFloat(PV0i.z)));
PS1i = R122i.x;
// 4
R125i.x = floatBitsToInt(intBitsToFloat(R11i.w) * intBitsToFloat(0x437f0000));
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.x), intBitsToFloat(uf_remappedPS[4].x)));
R0i.z = floatBitsToInt((intBitsToFloat(R7i.w) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(0xc0600000)));
R0i.z = clampFI32(R0i.z);
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R7i.w)),intBitsToFloat(uf_remappedPS[3].z)) + intBitsToFloat(PS1i)));
PV0i.w = R123i.w;
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 5
R5i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS0i)));
PV1i.x = R5i.x;
R6i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS0i)));
PV1i.y = R6i.y;
R7i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS0i)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.y),intBitsToFloat(uf_remappedPS[2].y)) + intBitsToFloat(R126i.x)));
PV1i.w = R123i.w;
R13i.z = floatBitsToInt(intBitsToFloat(uf_remappedPS[3].w) + intBitsToFloat(PV0i.w));
PS1i = R13i.z;
// 6
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.y),intBitsToFloat(uf_remappedPS[4].y)) + intBitsToFloat(R126i.y)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R7i.w)),intBitsToFloat(uf_remappedPS[2].z)) + intBitsToFloat(PV1i.w)));
PV0i.y = R123i.y;
R8i.z = PS1i;
R0i.w = PV1i.x;
R0i.w = floatBitsToInt(intBitsToFloat(R0i.w) * 2.0);
R3i.x = PV1i.y;
R3i.x = floatBitsToInt(intBitsToFloat(R3i.x) * 2.0);
PS0i = R3i.x;
// 7
R6i.x = floatBitsToInt(intBitsToFloat(uf_remappedPS[2].w) + intBitsToFloat(PV0i.y));
PV1i.x = R6i.x;
R0i.y = R7i.z;
R0i.y = floatBitsToInt(intBitsToFloat(R0i.y) * 2.0);
R125i.z = floatBitsToInt(intBitsToFloat(R10i.w) * intBitsToFloat(0x437f0000));
R127i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R7i.w)),intBitsToFloat(uf_remappedPS[4].z)) + intBitsToFloat(PV0i.x)));
R17i.w = floatBitsToInt(intBitsToFloat(R3i.y) * intBitsToFloat(0x40400000));
PS1i = R17i.w;
// 8
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R6i.y),intBitsToFloat(R7i.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;
R127i.y = tempi.x;
R12i.x = floatBitsToInt(intBitsToFloat(PV1i.x) * intBitsToFloat(0x3a83126f));
PS0i = R12i.x;
// 9
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R6i.y),intBitsToFloat(R7i.z),-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;
R124i.y = floatBitsToInt(intBitsToFloat(PV0i.x) + 1.0);
PS1i = R124i.y;
// 10
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.w),intBitsToFloat(uf_remappedPS[7].x)) + -(intBitsToFloat(uf_remappedPS[7].y))));
R123i.x = clampFI32(R123i.x);
PV0i.x = R123i.x;
R126i.y = floatBitsToInt((-(intBitsToFloat(R127i.y)) * 0.5 + 0.5));
R9i.z = floatBitsToInt(intBitsToFloat(uf_remappedPS[4].w) + intBitsToFloat(R127i.w));
R124i.w = floatBitsToInt(-(intBitsToFloat(PV1i.x)));
R127i.z = int(intBitsToFloat(R125i.x));
PS0i = R127i.z;
// 11
R124i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R6i.y),intBitsToFloat(R7i.z),-0.0),vec4(intBitsToFloat(uf_remappedPS[8].x),intBitsToFloat(uf_remappedPS[8].y),intBitsToFloat(uf_remappedPS[8].z),0.0)));
PV1i.x = R124i.x;
PV1i.y = R124i.x;
PV1i.z = R124i.x;
PV1i.w = R124i.x;
R3i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + 1.0);
PS1i = R3i.z;
// 12
R13i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.x),intBitsToFloat(uf_remappedPS[9].z)) + -(intBitsToFloat(uf_remappedPS[9].x))));
R13i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R9i.z),intBitsToFloat(uf_remappedPS[9].z)) + -(intBitsToFloat(uf_remappedPS[9].y))));
R12i.z = floatBitsToInt(intBitsToFloat(R9i.z) * intBitsToFloat(0x3a83126f));
PV0i.w = floatBitsToInt(intBitsToFloat(R126i.y) + intBitsToFloat(0x40200000));
tempResultf = max(0.0, intBitsToFloat(PS1i));
tempResultf = log2(tempResultf);
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
R4i.y = floatBitsToInt(tempResultf);
PS0i = R4i.y;
// 13
backupReg0i = R124i.x;
backupReg0i = R124i.x;
backupReg1i = R124i.y;
backupReg2i = R124i.w;
redcCUBE(vec4(intBitsToFloat(R124i.w),intBitsToFloat(R124i.w),intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i)),vec4(intBitsToFloat(R124i.y),intBitsToFloat(backupReg0i),intBitsToFloat(R124i.w),intBitsToFloat(backupReg2i)),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;
R16i.x = floatBitsToInt(intBitsToFloat(PV0i.w) * intBitsToFloat(0x3daaaaab));
PS1i = R16i.x;
// 14
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[10].y), intBitsToFloat(R4i.y)));
R126i.y = floatBitsToInt(-(intBitsToFloat(uf_remappedPS[10].w)) + 1.0);
R14i.z = PV1i.w;
PV0i.w = R127i.z & int(1);
PS0i = floatBitsToInt(1.0 / abs(intBitsToFloat(PV1i.z)));
// 15
backupReg0i = R124i.x;
R124i.x = ((PV0i.w == 0)?(0):(0x3f800000));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.y),intBitsToFloat(PS0i)) + 1.5));
PV1i.y = R123i.y;
R127i.z = floatBitsToInt(-(intBitsToFloat(R8i.z)) + intBitsToFloat(uf_remappedPS[9].w));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(PS0i)) + 1.5));
PV1i.w = R123i.w;
PS1i = floatBitsToInt(exp2(intBitsToFloat(PV0i.x)));
// 16
R14i.x = PV1i.y;
R14i.y = PV1i.w;
R124i.z = floatBitsToInt((intBitsToFloat(R127i.y) * 2.0 + -(1.0)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.y),intBitsToFloat(PS1i)) + intBitsToFloat(uf_remappedPS[10].w))/2.0);
PV0i.w = R123i.w;
R4i.x = uf_remappedPS[11].y;
PS0i = R4i.x;
// 17
backupReg0i = R0i.x;
backupReg0i = R0i.x;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(R125i.y),intBitsToFloat(R126i.z),-0.0),vec4(intBitsToFloat(backupReg0i),intBitsToFloat(R125i.y),intBitsToFloat(R126i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R18i.y = floatBitsToInt(intBitsToFloat(PV0i.w) + 0.5);
PS1i = R18i.y;
// 18
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R124i.x)),intBitsToFloat(R124i.z)) + intBitsToFloat(R127i.z)));
PV0i.x = R123i.x;
R5i.y = uf_remappedPS[12].y;
R5i.z = uf_remappedPS[13].y;
R3i.w = floatBitsToInt(min(intBitsToFloat(R2i.x), intBitsToFloat(R2i.y)));
PV0i.w = R3i.w;
PS0i = floatBitsToInt(sqrt(intBitsToFloat(PV1i.x)));
// 19
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.w),intBitsToFloat(uf_remappedPS[14].x)) + -(intBitsToFloat(uf_remappedPS[14].y))));
R123i.x = clampFI32(R123i.x);
PV1i.x = R123i.x;
R19i.y = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(0x3fa66666));
R4i.z = floatBitsToInt(intBitsToFloat(R2i.y) + -(intBitsToFloat(PV0i.w)));
R5i.w = 0;
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PS0i));
// 20
backupReg0i = R0i.x;
R0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS1i)));
R2i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(PS1i)));
R6i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.z), intBitsToFloat(PS1i)));
R2i.w = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + 1.0);
R9i.y = int(intBitsToFloat(R125i.z));
PS0i = R9i.y;
// 0
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[15].x), intBitsToFloat(uf_remappedPS[16].w)));
PV0i.x = R127i.x;
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[15].y), intBitsToFloat(uf_remappedPS[16].w)));
PV0i.y = R124i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R2i.y)),intBitsToFloat(R2i.y)) + 1.0));
PV0i.z = R123i.z;
R125i.w = floatBitsToInt(intBitsToFloat(R0i.x) + intBitsToFloat(uf_remappedPS[15].x));
R126i.y = floatBitsToInt(intBitsToFloat(R2i.y) + intBitsToFloat(uf_remappedPS[15].y));
PS0i = R126i.y;
// 1
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.y)),intBitsToFloat(PV0i.y)) + 1.0));
PV1i.x = R123i.x;
R125i.y = PV0i.x;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[15].z), intBitsToFloat(uf_remappedPS[16].w)));
PV1i.z = R127i.z;
R4i.w = floatBitsToInt(intBitsToFloat(R6i.z) + intBitsToFloat(uf_remappedPS[15].z));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.z));
R127i.y = floatBitsToInt(tempResultf);
PS1i = R127i.y;
// 2
backupReg0i = R0i.z;
R126i.x = 0;
PV0i.y = PV1i.z;
R0i.z = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(uf_remappedPS[17].y));
R124i.w = R9i.y & 0x00000002;
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 3
backupReg0i = R0i.x;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(R6i.z),intBitsToFloat(R6i.z),-0.0),vec4(intBitsToFloat(R125i.y),intBitsToFloat(PV0i.y),intBitsToFloat(R2i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
PS1i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS0i), intBitsToFloat(R127i.y)));
// 4
backupReg0i = R0i.x;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R6i.y),intBitsToFloat(R7i.z),-0.0),vec4(intBitsToFloat(backupReg0i),intBitsToFloat(R2i.y),intBitsToFloat(R6i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R127i.w = tempi.x;
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS1i), intBitsToFloat(PV1i.x)));
PS0i = R126i.w;
// 5
backupReg0i = R0i.x;
backupReg1i = R0i.w;
backupReg0i = R0i.x;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(R2i.y),intBitsToFloat(R6i.z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R124i.y),intBitsToFloat(R127i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R2i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(backupReg1i)) + intBitsToFloat(backupReg0i)));
PS1i = R2i.x;
// 6
backupReg0i = R124i.w;
PV0i.x = floatBitsToInt(max(-(intBitsToFloat(R127i.w)), 0.0));
R12i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.w)),intBitsToFloat(R3i.x)) + intBitsToFloat(R2i.y)));
R2i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.w)),intBitsToFloat(R0i.y)) + intBitsToFloat(R6i.z)));
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.x) + -(intBitsToFloat(R126i.w)));
R124i.w = floatBitsToInt(float(backupReg0i));
R124i.w = floatBitsToInt(intBitsToFloat(R124i.w) / 2.0);
PS0i = R124i.w;
// 7
PV1i.x = R9i.y & 0x000000fc;
R20i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.z),intBitsToFloat(PS0i)) + intBitsToFloat(R3i.w)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.w),intBitsToFloat(R3i.z)) + intBitsToFloat(R126i.w)));
PV1i.z = R123i.z;
R3i.w = floatBitsToInt(min(intBitsToFloat(PV0i.x), 1.0));
tempResultf = max(0.0, intBitsToFloat(R2i.w));
tempResultf = log2(tempResultf);
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
R126i.z = floatBitsToInt(tempResultf);
PS1i = R126i.z;
// 8
PV0i.x = floatBitsToInt(max(-(intBitsToFloat(PV1i.z)), intBitsToFloat(0xbf7d70a4)));
PV0i.x = floatBitsToInt(intBitsToFloat(PV0i.x) / 2.0);
R21i.y = R1i.x;
R21i.y = floatBitsToInt(intBitsToFloat(R21i.y) / 2.0);
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[10].x), intBitsToFloat(R4i.y)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.y),intBitsToFloat(R3i.y)) + intBitsToFloat(0x3c23d70a)));
R123i.w = clampFI32(R123i.w);
PV0i.w = R123i.w;
PS0i = floatBitsToInt(float(PV1i.x));
// 9
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[18].x), intBitsToFloat(R126i.z)));
R7i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(PV0i.w)));
R126i.z = floatBitsToInt(intBitsToFloat(PV0i.x) + 0.5);
PV1i.z = R126i.z;
R126i.w = floatBitsToInt(-(intBitsToFloat(R3i.w)) + 1.0);
R7i.x = floatBitsToInt(intBitsToFloat(PS0i) * intBitsToFloat(0x3b820821));
PS1i = R7i.x;
// 10
R125i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.w),intBitsToFloat(uf_remappedPS[19].x)) + intBitsToFloat(uf_remappedPS[20].w)));
R125i.x = clampFI32(R125i.x);
PV0i.y = floatBitsToInt(-(intBitsToFloat(PV1i.z)) + 1.0);
R123i.z = floatBitsToInt((intBitsToFloat(PV1i.z) * intBitsToFloat(0xbc996e30) + intBitsToFloat(0x3d981626)));
PV0i.z = R123i.z;
PV0i.w = floatBitsToInt(intBitsToFloat(R1i.w) + intBitsToFloat(0xbe99999a));
R127i.w = floatBitsToInt(exp2(intBitsToFloat(R125i.z)));
PS0i = R127i.w;
// 11
R3i.x = R11i.w;
R3i.x = floatBitsToInt(intBitsToFloat(R3i.x) / 2.0);
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),intBitsToFloat(PV0i.z)) + intBitsToFloat(0xbe593484)));
PV1i.y = R123i.y;
R15i.z = floatBitsToInt((intBitsToFloat(R7i.w) * intBitsToFloat(0x3c23d70a) + -(0.5)));
R15i.z = clampFI32(R15i.z);
R8i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * intBitsToFloat(0x40200001));
R8i.w = clampFI32(R8i.w);
PS1i = floatBitsToInt(sqrt(intBitsToFloat(PV0i.y)));
// 12
PV0i.x = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x3f22f983));
R22i.y = floatBitsToInt((intBitsToFloat(0xbf59999a) * intBitsToFloat(R8i.y) + 1.0));
R3i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R3i.w)),intBitsToFloat(R126i.w)) + intBitsToFloat(R126i.w)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),intBitsToFloat(PV1i.y)) + intBitsToFloat(0x3fc90da4)));
PV0i.w = R123i.w;
R2i.w = floatBitsToInt(exp2(intBitsToFloat(R124i.x)));
PS0i = R2i.w;
// 13
R18i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),-(intBitsToFloat(PV0i.w))) + 1.0));
R4i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[10].z),-(intBitsToFloat(R127i.w))) + intBitsToFloat(uf_remappedPS[10].z)));
R4i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.y), intBitsToFloat(uf_remappedPS[21].w)));
R0i.w = floatBitsToInt(intBitsToFloat(uf_remappedPS[21].z) + -(1.0));
tempResultf = max(0.0, intBitsToFloat(R125i.x));
tempResultf = log2(tempResultf);
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
R3i.y = floatBitsToInt(tempResultf);
PS1i = R3i.y;
// 14
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R125i.w),intBitsToFloat(R126i.y),intBitsToFloat(R4i.w),-0.0),vec4(intBitsToFloat(R125i.w),intBitsToFloat(R126i.y),intBitsToFloat(R4i.w),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R0i.y = floatBitsToInt(intBitsToFloat(uf_remappedPS[21].x) + -(1.0));
PS0i = R0i.y;
// 15
backupReg0i = R0i.x;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R5i.y),intBitsToFloat(R5i.z),-0.0),vec4(intBitsToFloat(backupReg0i),intBitsToFloat(R2i.y),intBitsToFloat(R6i.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.x));
PS1i = floatBitsToInt(tempResultf);
// 16
R0i.x = floatBitsToInt(intBitsToFloat(uf_remappedPS[21].y) + -(1.0));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.w), intBitsToFloat(PS1i)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.w), intBitsToFloat(PS1i)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PS1i)));
tempResultf = max(0.0, intBitsToFloat(PV1i.x));
tempResultf = log2(tempResultf);
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS0i = floatBitsToInt(tempResultf);
// 17
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(uf_remappedPS[16].w)));
PV1i.x = R125i.x;
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(uf_remappedPS[16].w)));
PV1i.y = R126i.y;
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(uf_remappedPS[16].w)));
PV1i.z = R126i.z;
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[18].z), intBitsToFloat(PS0i)));
R4i.w = floatBitsToInt(intBitsToFloat(R124i.w) * intBitsToFloat(0x3e19999a));
PS1i = R4i.w;
// 18
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R127i.x)),-(intBitsToFloat(R124i.y)),-(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;
R6i.z = tempi.x;
R5i.z = floatBitsToInt(exp2(intBitsToFloat(PV1i.w)));
PS0i = R5i.z;
// 19
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R6i.y),intBitsToFloat(R7i.z),intBitsToFloat(R7i.z)),vec4(-(intBitsToFloat(R125i.x)),-(intBitsToFloat(R126i.y)),-(intBitsToFloat(R126i.z)),-(intBitsToFloat(R5i.w)))));
tempi.x = clampFI32(tempi.x);
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R5i.w = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + 1.0);
PS1i = R5i.w;
// 20
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R6i.y),intBitsToFloat(R7i.z),intBitsToFloat(R7i.z)),vec4(-(intBitsToFloat(R127i.x)),-(intBitsToFloat(R124i.y)),-(intBitsToFloat(R127i.z)),-(intBitsToFloat(R126i.x)))));
tempi.x = clampFI32(tempi.x);
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R9i.w = tempi.x;
R6i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(PV1i.x)));
PS0i = R6i.y;
// 0
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R6i.x),intBitsToFloat(R8i.z),intBitsToFloat(R9i.z),intBitsToFloat(R6i.w)),vec4(intBitsToFloat(uf_remappedPS[22].x),intBitsToFloat(uf_remappedPS[22].y),intBitsToFloat(uf_remappedPS[22].z),intBitsToFloat(uf_remappedPS[22].w))));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.y),intBitsToFloat(R6i.y)) + -(intBitsToFloat(R6i.y))));
PS0i = R127i.x;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R6i.x),intBitsToFloat(R8i.z),intBitsToFloat(R9i.z),intBitsToFloat(R6i.w)),vec4(intBitsToFloat(uf_remappedPS[23].x),intBitsToFloat(uf_remappedPS[23].y),intBitsToFloat(uf_remappedPS[23].z),intBitsToFloat(uf_remappedPS[23].w))));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.z = floatBitsToInt(1.0 / intBitsToFloat(PV0i.x));
PS1i = R127i.z;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R6i.x),intBitsToFloat(R8i.z),intBitsToFloat(R9i.z),intBitsToFloat(R6i.w)),vec4(intBitsToFloat(uf_remappedPS[24].x),intBitsToFloat(uf_remappedPS[24].y),intBitsToFloat(uf_remappedPS[24].z),intBitsToFloat(uf_remappedPS[24].w))));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R15i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(PS1i)));
PS0i = R15i.x;
// 3
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[18].w)),intBitsToFloat(R5i.z)) + 1.0));
PV1i.x = R123i.x;
R15i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R127i.z)));
R127i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.z)),intBitsToFloat(R5i.w)) + intBitsToFloat(R5i.w)));
PV1i.z = R127i.z;
PV1i.w = floatBitsToInt(intBitsToFloat(R127i.x) + 1.0);
R124i.y = floatBitsToInt((-(intBitsToFloat(R7i.x)) * intBitsToFloat(0x3d23d70a) + intBitsToFloat(0x3d23d70a)));
PS1i = R124i.y;
// 4
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R3i.w)),intBitsToFloat(R3i.z)) + intBitsToFloat(R3i.z)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.z)),intBitsToFloat(PV1i.z)) + intBitsToFloat(PV1i.z)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R2i.w)),intBitsToFloat(PV1i.x)) + intBitsToFloat(PV1i.x)));
PV0i.z = R123i.z;
R124i.w = floatBitsToInt((-(intBitsToFloat(R3i.x)) * intBitsToFloat(0x40400000) + 4.0));
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(PV1i.w)) + intBitsToFloat(PV1i.w)));
PS0i = R126i.z;
// 5
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PV0i.y)));
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(PV0i.x)));
R127i.z = floatBitsToInt(intBitsToFloat(R8i.w) * intBitsToFloat(0x3dcccccd));
R125i.w = floatBitsToInt((intBitsToFloat(R7i.w) * intBitsToFloat(0x3ba3d70a) + intBitsToFloat(0xbfe66666)));
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(uf_remappedPS[25].w)));
PS1i = R127i.x;
// 6
backupReg0i = R0i.x;
backupReg1i = R3i.y;
backupReg2i = R124i.w;
R0i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.w),intBitsToFloat(R4i.z)) + 1.0));
R3i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(R4i.z)) + 1.0));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[19].y), intBitsToFloat(backupReg1i)));
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.y), intBitsToFloat(R22i.y)));
PS0i = floatBitsToInt(1.0 / intBitsToFloat(backupReg2i));
// 7
backupReg0i = R126i.y;
backupReg1i = R4i.z;
R124i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.x),intBitsToFloat(R7i.x)) + intBitsToFloat(R124i.y)));
PV1i.x = R124i.x;
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS0i)));
R4i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.y),intBitsToFloat(backupReg1i)) + 1.0));
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.z)),intBitsToFloat(R125i.w)) + intBitsToFloat(R125i.w)));
R123i.w = clampFI32(R123i.w);
PV1i.w = R123i.w;
R125i.x = floatBitsToInt(exp2(intBitsToFloat(PV0i.z)));
PS1i = R125i.x;
// 8
R3i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(R22i.y)));
PV0i.x = R3i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),-(intBitsToFloat(R126i.x))) + intBitsToFloat(PV1i.x)));
PV0i.y = R123i.y;
PV0i.z = floatBitsToInt(-(intBitsToFloat(R124i.w)) + 1.0);
R125i.w = floatBitsToInt((intBitsToFloat(R8i.w) * intBitsToFloat(0x3dcccccd) + intBitsToFloat(PV1i.w)));
PS0i = floatBitsToInt(1.0 / intBitsToFloat(R126i.z));
// 9
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.y), intBitsToFloat(PS0i)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.x), intBitsToFloat(uf_remappedPS[26].w)));
R3i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(PV0i.z)) + intBitsToFloat(PV0i.z)));
R0i.w = floatBitsToInt(intBitsToFloat(R126i.x) + intBitsToFloat(PV0i.y));
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.x),-(intBitsToFloat(R126i.y))) + intBitsToFloat(R124i.x)));
PS1i = R122i.x;
// 10
backupReg0i = R8i.y;
backupReg1i = R8i.x;
R8i.x = floatBitsToInt(intBitsToFloat(R126i.y) + intBitsToFloat(PS1i));
R8i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV1i.y)));
PV0i.z = backupReg1i;
PV0i.z = clampFI32(PV0i.z);
PV0i.w = floatBitsToInt(-(intBitsToFloat(R125i.w)) + 1.0);
R8i.w = floatBitsToInt(intBitsToFloat(PV1i.x) * 0.25);
PS0i = R8i.w;
// 11
backupReg0i = R10i.x;
backupReg1i = R10i.z;
backupReg2i = R9i.y;
R10i.x = floatBitsToInt((intBitsToFloat(backupReg0i) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R10i.x = clampFI32(R10i.x);
R9i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.w),intBitsToFloat(PV0i.z)) + intBitsToFloat(R125i.w)));
R10i.z = floatBitsToInt((intBitsToFloat(backupReg1i) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R10i.z = clampFI32(R10i.z);
R10i.w = floatBitsToInt((intBitsToFloat(R10i.y) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R10i.w = clampFI32(R10i.w);
PS1i = backupReg2i & int(1);
// 12
PV0i.x = floatBitsToInt(intBitsToFloat(R11i.z) * intBitsToFloat(0x3eaaaaab));
R10i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.w),-(intBitsToFloat(R3i.x))) + intBitsToFloat(R124i.w)));
R26i.w = 0x3f800000;
R6i.z = floatBitsToInt(float(PS1i));
PS0i = R6i.z;
// 13
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R11i.x),intBitsToFloat(R11i.y),intBitsToFloat(PV0i.x),-0.0),vec4(intBitsToFloat(0x3eaaaaab),intBitsToFloat(0x3eaaaaab),1.0,0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R11i.w = tempi.x;
R25i.y = 0;
PS1i = R25i.y;
// 14
R5i.w = 0x3f800000;
R24i.w = 0x3f800000;
PS0i = R24i.w;
// 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(R2i.x),intBitsToFloat(R12i.y),intBitsToFloat(R2i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
// 1
R126i.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[8].x),intBitsToFloat(uf_remappedPS[8].y),intBitsToFloat(uf_remappedPS[8].z),-0.0),vec4(intBitsToFloat(R2i.x),intBitsToFloat(R12i.y),intBitsToFloat(R2i.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[5].x),intBitsToFloat(uf_remappedPS[5].y),intBitsToFloat(uf_remappedPS[5].z),-0.0),vec4(intBitsToFloat(R2i.x),intBitsToFloat(R12i.y),intBitsToFloat(R2i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R126i.y = tempi.x;
// 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;
PS1i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[16].w), intBitsToFloat(uf_remappedPS[16].w)));
// 4
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS1i), intBitsToFloat(PS1i)));
R17i.z = PV1i.w;
PS0i = floatBitsToInt(1.0 / abs(intBitsToFloat(PV1i.z)));
// 5
R2i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R8i.w)));
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;
// 6
R17i.x = PV1i.w;
R17i.y = PV1i.z;
R2i.z = floatBitsToInt(textureLod(textureUnitPS12, intBitsToFloat(R13i.xy),0.0).x);
R14i.xyz = floatBitsToInt(textureLod(textureUnitPS7, vec4(redcCUBEReverse(intBitsToFloat(R14i.xy),R14i.z),cubeMapArrayIndex7),intBitsToFloat(R14i.w)).xyz);
R15i.y = floatBitsToInt(textureLod(textureUnitPS5, intBitsToFloat(R15i.xy),intBitsToFloat(R15i.w)).x);
R12i.x = floatBitsToInt(textureLod(textureUnitPS0, intBitsToFloat(R12i.xz),0.0).x);
R16i.xyz = floatBitsToInt(texture(textureUnitPS16, intBitsToFloat(R16i.xy)).xyz);
R17i.xyz = floatBitsToInt(textureLod(textureUnitPS7, vec4(redcCUBEReverse(intBitsToFloat(R17i.xy),R17i.z),cubeMapArrayIndex7),intBitsToFloat(R17i.w)).xyz);
R18i.xyz = floatBitsToInt(texture(textureUnitPS11, intBitsToFloat(R18i.xy)).xyz);
// export
passPixelColor4 = vec4(intBitsToFloat(R11i.w), intBitsToFloat(R11i.w), intBitsToFloat(R11i.w), intBitsToFloat(R11i.w));
// 0
PV0i.x = floatBitsToInt(min(intBitsToFloat(R14i.y), intBitsToFloat(R14i.z)));
PV0i.y = floatBitsToInt(intBitsToFloat(R15i.y) + intBitsToFloat(uf_remappedPS[27].z));
PV0i.y = clampFI32(PV0i.y);
PV0i.z = floatBitsToInt(max(intBitsToFloat(R14i.y), intBitsToFloat(R14i.z)));
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(uf_remappedPS[9].w)),intBitsToFloat(R2i.z)) + intBitsToFloat(R19i.y)));
PV0i.w = R123i.w;
R122i.x = floatBitsToInt((intBitsToFloat(R12i.x) * 2.0 + -(1.0)));
PS0i = R122i.x;
// 1
R126i.x = floatBitsToInt(min(intBitsToFloat(R14i.x), intBitsToFloat(PV0i.x)));
R127i.y = floatBitsToInt(max(intBitsToFloat(R14i.x), intBitsToFloat(PV0i.z)));
PV1i.y = R127i.y;
R126i.z = floatBitsToInt(intBitsToFloat(PV0i.w) * 0.25);
R126i.z = clampFI32(R126i.z);
PV1i.z = R126i.z;
R126i.w = floatBitsToInt((intBitsToFloat(PS0i) * intBitsToFloat(0x41c80000) + intBitsToFloat(R13i.z)));
R25i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(R20i.y)));
PS1i = R25i.x;
// 2
PV0i.x = floatBitsToInt(-(intBitsToFloat(PV1i.z)) + 1.0);
R124i.y = floatBitsToInt(intBitsToFloat(R14i.x) + -(intBitsToFloat(PV1i.y)));
R127i.z = floatBitsToInt(intBitsToFloat(R14i.y) + -(intBitsToFloat(PV1i.y)));
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.y) + intBitsToFloat(0x2edbe6ff));
R124i.x = floatBitsToInt(intBitsToFloat(R14i.z) + -(intBitsToFloat(PV1i.y)));
PS0i = R124i.x;
// 3
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.w), intBitsToFloat(R25i.x)));
PV1i.x = R125i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R126i.z)),intBitsToFloat(PV0i.x)) + intBitsToFloat(PV0i.x)));
PV1i.y = R123i.y;
R14i.z = floatBitsToInt(-(intBitsToFloat(R126i.w)) + intBitsToFloat(uf_remappedPS[28].x));
R11i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R17i.x), intBitsToFloat(R8i.x)));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PV0i.w));
// 4
backupReg0i = R126i.z;
PV0i.x = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + 1.0);
R14i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(R0i.w)));
R126i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R126i.x)),intBitsToFloat(PS1i)) + 1.0));
PV0i.z = R126i.z;
R126i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.y)));
PV0i.w = R126i.w;
R0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R17i.y), intBitsToFloat(R8i.x)));
PS0i = R0i.w;
// 5
backupReg0i = R17i.z;
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.w)) + 1.0);
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R4i.w)) + intBitsToFloat(R125i.x)));
R17i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R8i.x)));
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.z) + intBitsToFloat(0x2edbe6ff));
R4i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R18i.x), intBitsToFloat(R9i.y)));
PS1i = R4i.w;
// 6
backupReg0i = R18i.z;
R18i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R18i.y), intBitsToFloat(R9i.y)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),intBitsToFloat(R0i.z)) + intBitsToFloat(R126i.w)));
R123i.y = clampFI32(R123i.y);
PV0i.y = R123i.y;
R18i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R9i.y)));
R125i.x = floatBitsToInt(1.0 / intBitsToFloat(PV1i.w));
PS0i = R125i.x;
// 7
R123i.x = floatBitsToInt((intBitsToFloat(PV0i.y) * intBitsToFloat(0xbdcccccd) + intBitsToFloat(0x3dcccccd)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((intBitsToFloat(PV0i.y) * 0.5 + 0.5));
PV1i.y = R123i.y;
R126i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(R21i.y)) + intBitsToFloat(R21i.y)));
R25i.w = PV0i.y;
PS1i = R25i.w;
// 8
PV0i.z = floatBitsToInt(intBitsToFloat(R126i.z) + intBitsToFloat(PV1i.x));
PV0i.z = clampFI32(PV0i.z);
PV0i.w = floatBitsToInt(intBitsToFloat(R9i.w) + intBitsToFloat(PV1i.y));
PV0i.w = clampFI32(PV0i.w);
// 9
R0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PV0i.w)));
tempResultf = max(0.0, intBitsToFloat(PV0i.z));
tempResultf = log2(tempResultf);
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1i = floatBitsToInt(tempResultf);
// 10
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), intBitsToFloat(PS1i)));
// 11
PS1i = floatBitsToInt(exp2(intBitsToFloat(PV0i.x)));
// 12
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(PS1i)));
// 13
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(R125i.x)));
// 14
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(PV1i.z)) + intBitsToFloat(R127i.y)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.y),intBitsToFloat(PV1i.z)) + intBitsToFloat(R127i.y)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.x),intBitsToFloat(PV1i.z)) + intBitsToFloat(R127i.y)));
PV0i.w = R123i.w;
// 15
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(PV0i.z)));
PV1i.x = R124i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(PV0i.w)));
PV1i.y = R127i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(PV0i.y)));
PV1i.z = R127i.z;
// 16
PV0i.x = floatBitsToInt(intBitsToFloat(R16i.y) + -(intBitsToFloat(PV1i.z)));
PV0i.z = floatBitsToInt(intBitsToFloat(R16i.z) + -(intBitsToFloat(PV1i.y)));
PV0i.w = floatBitsToInt(intBitsToFloat(R16i.x) + -(intBitsToFloat(PV1i.x)));
// 17
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R15i.z)) + intBitsToFloat(R127i.y)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.w),intBitsToFloat(R15i.z)) + intBitsToFloat(R124i.x)));
PV1i.y = R123i.y;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R15i.z)) + intBitsToFloat(R127i.z)));
PV1i.w = R123i.w;
// 18
R26i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(R4i.z)));
R26i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R3i.y)));
R26i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(R0i.x)));
// 0
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R14i.z),intBitsToFloat(uf_remappedPS[29].x)) + intBitsToFloat(uf_remappedPS[30].w)));
R123i.z = clampFI32(R123i.z);
PV0i.z = R123i.z;
// 1
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(uf_remappedPS[31].w)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[32].y),intBitsToFloat(R0i.z)) + intBitsToFloat(R26i.y)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[32].x),intBitsToFloat(R0i.z)) + intBitsToFloat(R26i.x)));
PV1i.z = R123i.z;
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[32].x), intBitsToFloat(R14i.y)));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[32].y), intBitsToFloat(R14i.y)));
PS1i = R127i.z;
// 2
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[32].z),intBitsToFloat(R0i.z)) + intBitsToFloat(R26i.z)));
PV0i.x = R123i.x;
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(R22i.y)));
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R7i.x)),intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.y)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R7i.x)),intBitsToFloat(PV1i.z)) + intBitsToFloat(PV1i.z)));
PV0i.w = R123i.w;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[32].z), intBitsToFloat(R14i.y)));
PS0i = R127i.y;
// 3
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R10i.x)));
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R7i.x)),intBitsToFloat(PV0i.x)) + intBitsToFloat(PV0i.x)));
PV1i.y = R123i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(R3i.z)));
R125i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.y)),intBitsToFloat(R3i.z)) + intBitsToFloat(R3i.z)));
PV1i.w = R125i.w;
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R10i.w)));
PS1i = R125i.x;
// 4
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[31].x), intBitsToFloat(PV1i.z)));
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.y), intBitsToFloat(PV1i.w)));
PV0i.y = R124i.y;
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[31].y), intBitsToFloat(PV1i.z)));
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(R10i.z)));
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[31].z), intBitsToFloat(PV1i.z)));
PS0i = R126i.y;
// 5
backupReg0i = R127i.y;
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R2i.x)) + intBitsToFloat(R0i.w)));
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.w),intBitsToFloat(R2i.x)) + intBitsToFloat(R11i.w)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[26].x),intBitsToFloat(PV0i.y)) + intBitsToFloat(PV0i.x)));
PV1i.z = R123i.z;
R126i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(R2i.x)) + intBitsToFloat(R17i.z)));
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[26].y),intBitsToFloat(PV0i.y)) + intBitsToFloat(PV0i.z)));
PS1i = R126i.x;
// 6
R123i.x = floatBitsToInt((intBitsToFloat(R124i.w) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((intBitsToFloat(R125i.x) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((intBitsToFloat(R124i.x) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[26].z),intBitsToFloat(R124i.y)) + intBitsToFloat(R126i.y)));
PV0i.w = R123i.w;
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.w),intBitsToFloat(R10i.y)) + intBitsToFloat(PV1i.z)));
PS0i = R127i.z;
// 7
backupReg0i = R127i.x;
backupReg1i = R126i.w;
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R18i.x),intBitsToFloat(R10i.y)) + intBitsToFloat(R126i.x)));
PV1i.y = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(PV0i.y));
PV1i.z = floatBitsToInt(intBitsToFloat(R127i.y) + intBitsToFloat(PV0i.z));
R126i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R18i.z),intBitsToFloat(R10i.y)) + intBitsToFloat(PV0i.w)));
PS1i = floatBitsToInt(intBitsToFloat(backupReg1i) + intBitsToFloat(PV0i.x));
// 8
R5i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R23i.x),intBitsToFloat(R6i.z)) + intBitsToFloat(PV1i.z)));
R5i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R23i.y),intBitsToFloat(R6i.z)) + intBitsToFloat(PV1i.y)));
R5i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R23i.z),intBitsToFloat(R6i.z)) + intBitsToFloat(PS1i)));
R24i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[25].x),intBitsToFloat(R3i.x)) + intBitsToFloat(R127i.z)));
PS0i = R24i.x;
// 9
R24i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[25].y),intBitsToFloat(R3i.x)) + intBitsToFloat(R127i.x)));
R24i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[25].z),intBitsToFloat(R3i.x)) + intBitsToFloat(R126i.w)));
R25i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R8i.y)),intBitsToFloat(R125i.w)) + intBitsToFloat(R125i.w)));
PS1i = R25i.z;
// 10
R3i.xyz = ivec3(R5i.x,R5i.y,R5i.z);
R3i.w = R5i.w;
// 11
R1i.xyz = ivec3(R24i.x,R24i.y,R24i.z);
R1i.w = R24i.w;
// 12
R0i.xyz = ivec3(R25i.x,R25i.y,R25i.z);
R0i.w = R25i.w;
// 13
R2i.xyz = ivec3(R26i.x,R26i.y,R26i.z);
R2i.w = R26i.w;
// export
passPixelColor0 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z) * fogBrightness, intBitsToFloat(R0i.w));
#if ($enableGreeneryFogColor == 0)
passPixelColor1 = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w)*fogOpacity);
#else
passPixelColor1 = vec4(fogRed, fogGreen, fogBlue, intBitsToFloat(R1i.w)*fogOpacity);
#endif
passPixelColor2 = vec4(intBitsToFloat(R2i.x), intBitsToFloat(R2i.y), intBitsToFloat(R2i.z), intBitsToFloat(R2i.w));
passPixelColor3 = vec4(intBitsToFloat(R3i.x), intBitsToFloat(R3i.y), intBitsToFloat(R3i.z), intBitsToFloat(R3i.w));
}

View File

@ -8,6 +8,26 @@ version = 6
[Default]
$setting:int = 0
$enableGroundFogColor:int = 1
$groundFogRed = 1.0
$groundFogGreen = 1.0
$groundFogBlue = 1.0
$groundFogOpacity = 1.0
$groundFogBrightness = 1.0
$enableWaterFogColor:int = 1
$waterFogRed = 1.0
$waterFogGreen = 1.0
$waterFogBlue = 1.0
$waterFogOpacity = 1.0
$enableGreeneryFogColor:int = 1
$greeneryFogRed = 1.0
$greeneryFogGreen = 1.0
$greeneryFogBlue = 1.0
$greeneryFogOpacity = 1.0
$greeneryFogBrightness = 1.0
$enableDistanceFogColor:int = 1
$distanceFogRed = 1.0
$distanceFogGreen = 1.0
@ -35,84 +55,528 @@ $ganonAuraOpacity = 1.0
# Setting Selector
[Preset]
name = Distance Fog
name = Ground Fog
category = Fog Settings
default = 1
$setting:int = 0
[Preset]
name = Mist Clouds
name = Water Fog
category = Fog Settings
$setting:int = 1
[Preset]
name = Hyrule Castle Fog/Aura
name = Greenery Fog (e.g. trees, bushes and vines)
category = Fog Settings
default = 1
$setting:int = 2
[Preset]
name = Distance Fog
category = Fog Settings
$setting:int = 3
[Preset]
name = Mist Clouds
category = Fog Settings
$setting:int = 4
[Preset]
name = Hyrule Castle Fog/Aura
category = Fog Settings
$setting:int = 5
# Ground Fog
[Preset]
name = 100% Opacity (Default)
category = Ground Fog Visibility
condition = $setting == 0
default = 1
$groundFogOpacity = 1.0
[Preset]
name = 80% Opacity
category = Ground Fog Visibility
condition = $setting == 0
$groundFogOpacity = 0.8
[Preset]
name = 60% Opacity
category = Ground Fog Visibility
condition = $setting == 0
$groundFogOpacity = 0.6
[Preset]
name = 50% Opacity
category = Ground Fog Visibility
condition = $setting == 0
$groundFogOpacity = 0.5
[Preset]
name = 40% Opacity
category = Ground Fog Visibility
condition = $setting == 0
$groundFogOpacity = 0.4
[Preset]
name = 20% Opacity
category = Ground Fog Visibility
condition = $setting == 0
$groundFogOpacity = 0.2
[Preset]
name = 10% Opacity
category = Ground Fog Visibility
condition = $setting == 0
$groundFogOpacity = 0.1
[Preset]
name = 0% Opacity
category = Ground Fog Visibility
condition = $setting == 0
$groundFogOpacity = 0.0
[Preset]
name = 0.5x Brightness
category = Ground Fog Brightness
condition = $setting == 0
$groundFogBrightness = 0.5
[Preset]
name = 0.75x Brightness
category = Ground Fog Brightness
condition = $setting == 0
$groundFogBrightness = 0.75
[Preset]
name = 1x Brightness (Default)
category = Ground Fog Brightness
default = 1
condition = $setting == 0
$groundFogBrightness = 1.0
[Preset]
name = 1.5x Brightness
category = Ground Fog Brightness
condition = $setting == 0
$groundFogBrightness = 1.5
[Preset]
name = 2x Brightness
category = Ground Fog Brightness
condition = $setting == 0
$groundFogBrightness = 2.0
[Preset]
name = 3x Brightness
category = Ground Fog Brightness
condition = $setting == 0
$groundFogBrightness = 3.0
[Preset]
name = 4x Brightness
category = Ground Fog Brightness
condition = $setting == 0
$groundFogBrightness = 4.0
[Preset]
name = Normal (Default)
category = Ground Fog Color
condition = $setting == 0
default = 1
$enableGroundFogColor:int = 0
[Preset]
name = Black Fog
category = Ground Fog Color
condition = $setting == 0
$groundFogRed = 1.0
$groundFogGreen = 1.0
$groundFogBlue = 1.0
[Preset]
name = Gray Fog
category = Ground Fog Color
condition = $setting == 0
$groundFogRed = 0.75
$groundFogGreen = 0.75
$groundFogBlue = 0.75
[Preset]
name = Navy Fog
category = Ground Fog Color
condition = $setting == 0
$groundFogRed = 0.0
$groundFogGreen = 0.0
$groundFogBlue = 0.5
[Preset]
name = Blue Fog
category = Ground Fog Color
condition = $setting == 0
$groundFogRed = 0.0
$groundFogGreen = 0.0
$groundFogBlue = 1.0
[Preset]
name = Cyan Fog
category = Ground Fog Color
condition = $setting == 0
$groundFogRed = 0.0
$groundFogGreen = 0.5
$groundFogBlue = 0.5
[Preset]
name = Green Fog
category = Ground Fog Color
condition = $setting == 0
$groundFogRed = 0.0
$groundFogGreen = 1.0
$groundFogBlue = 0.0
[Preset]
name = Red Fog
category = Ground Fog Color
condition = $setting == 0
$groundFogRed = 1.0
$groundFogGreen = 0.0
$groundFogBlue = 0.0
# Water Fog
[Preset]
name = 100% Opacity (Default)
category = Water Fog Visibility
condition = $setting == 1
default = 1
$waterFogOpacity = 1.0
[Preset]
name = 80% Opacity
category = Water Fog Visibility
condition = $setting == 1
$waterFogOpacity = 0.8
[Preset]
name = 60% Opacity
category = Water Fog Visibility
condition = $setting == 1
$waterFogOpacity = 0.6
[Preset]
name = 50% Opacity
category = Water Fog Visibility
condition = $setting == 1
$waterFogOpacity = 0.5
[Preset]
name = 40% Opacity
category = Water Fog Visibility
condition = $setting == 1
$waterFogOpacity = 0.4
[Preset]
name = 20% Opacity
category = Water Fog Visibility
condition = $setting == 1
$waterFogOpacity = 0.2
[Preset]
name = 10% Opacity
category = Water Fog Visibility
condition = $setting == 1
$waterFogOpacity = 0.1
[Preset]
name = 0% Opacity
category = Water Fog Visibility
condition = $setting == 1
$waterFogOpacity = 0.0
[Preset]
name = Normal (Default)
category = Water Fog Color
condition = $setting == 1
default = 1
$enableWaterFogColor:int = 0
[Preset]
name = Black Fog
category = Water Fog Color
condition = $setting == 1
$waterFogRed = 1.0
$waterFogGreen = 1.0
$waterFogBlue = 1.0
[Preset]
name = Gray Fog
category = Water Fog Color
condition = $setting == 1
$waterFogRed = 0.75
$waterFogGreen = 0.75
$waterFogBlue = 0.75
[Preset]
name = Navy Fog
category = Water Fog Color
condition = $setting == 1
$waterFogRed = 0.0
$waterFogGreen = 0.0
$waterFogBlue = 0.5
[Preset]
name = Blue Fog
category = Water Fog Color
condition = $setting == 1
$waterFogRed = 0.0
$waterFogGreen = 0.0
$waterFogBlue = 1.0
[Preset]
name = Cyan Fog
category = Water Fog Color
condition = $setting == 1
$waterFogRed = 0.0
$waterFogGreen = 0.5
$waterFogBlue = 0.5
[Preset]
name = Green Fog
category = Water Fog Color
condition = $setting == 1
$waterFogRed = 0.0
$waterFogGreen = 1.0
$waterFogBlue = 0.0
[Preset]
name = Red Fog
category = Water Fog Color
condition = $setting == 1
$waterFogRed = 1.0
$waterFogGreen = 0.0
$waterFogBlue = 0.0
# Greenery Fog
[Preset]
name = 100% Opacity (Default)
category = Greenery Fog Visibility
condition = $setting == 2
default = 1
$greeneryFogOpacity = 1.0
[Preset]
name = 80% Opacity
category = Greenery Fog Visibility
condition = $setting == 2
$greeneryFogOpacity = 0.8
[Preset]
name = 60% Opacity
category = Greenery Fog Visibility
condition = $setting == 2
$greeneryFogOpacity = 0.6
[Preset]
name = 50% Opacity
category = Greenery Fog Visibility
condition = $setting == 2
$greeneryFogOpacity = 0.5
[Preset]
name = 40% Opacity
category = Greenery Fog Visibility
condition = $setting == 2
$greeneryFogOpacity = 0.4
[Preset]
name = 20% Opacity
category = Greenery Fog Visibility
condition = $setting == 2
$greeneryFogOpacity = 0.2
[Preset]
name = 10% Opacity
category = Greenery Fog Visibility
condition = $setting == 2
$greeneryFogOpacity = 0.1
[Preset]
name = 0% Opacity
category = Greenery Fog Visibility
condition = $setting == 2
$greeneryFogOpacity = 0.0
[Preset]
name = 0.5x Brightness
category = Greenery Fog Brightness
condition = $setting == 2
$greeneryFogBrightness = 0.5
[Preset]
name = 0.75x Brightness
category = Greenery Fog Brightness
condition = $setting == 2
$greeneryFogBrightness = 0.75
[Preset]
name = 1x Brightness (Default)
category = Greenery Fog Brightness
default = 1
condition = $setting == 2
$greeneryFogBrightness = 1.0
[Preset]
name = 1.5x Brightness
category = Greenery Fog Brightness
condition = $setting == 2
$greeneryFogBrightness = 1.5
[Preset]
name = 2x Brightness
category = Greenery Fog Brightness
condition = $setting == 2
$greeneryFogBrightness = 2.0
[Preset]
name = 3x Brightness
category = Greenery Fog Brightness
condition = $setting == 2
$greeneryFogBrightness = 3.0
[Preset]
name = 4x Brightness
category = Greenery Fog Brightness
condition = $setting == 2
$greeneryFogBrightness = 4.0
[Preset]
name = Normal (Default)
category = Greenery Fog Color
condition = $setting == 2
default = 1
$enableGreeneryFogColor:int = 0
[Preset]
name = Black Fog
category = Greenery Fog Color
condition = $setting == 2
$greeneryFogRed = 1.0
$greeneryFogGreen = 1.0
$greeneryFogBlue = 1.0
[Preset]
name = Gray Fog
category = Greenery Fog Color
condition = $setting == 2
$greeneryFogRed = 0.75
$greeneryFogGreen = 0.75
$greeneryFogBlue = 0.75
[Preset]
name = Navy Fog
category = Greenery Fog Color
condition = $setting == 2
$greeneryFogRed = 0.0
$greeneryFogGreen = 0.0
$greeneryFogBlue = 0.5
[Preset]
name = Blue Fog
category = Greenery Fog Color
condition = $setting == 2
$greeneryFogRed = 0.0
$greeneryFogGreen = 0.0
$greeneryFogBlue = 1.0
[Preset]
name = Cyan Fog
category = Greenery Fog Color
condition = $setting == 2
$greeneryFogRed = 0.0
$greeneryFogGreen = 0.5
$greeneryFogBlue = 0.5
[Preset]
name = Green Fog
category = Greenery Fog Color
condition = $setting == 2
$greeneryFogRed = 0.0
$greeneryFogGreen = 1.0
$greeneryFogBlue = 0.0
[Preset]
name = Red Fog
category = Greenery Fog Color
condition = $setting == 2
$greeneryFogRed = 1.0
$greeneryFogGreen = 0.0
$greeneryFogBlue = 0.0
# Distance Fog
[Preset]
name = 100% Opacity (Default)
category = Distance Fog Visibility
condition = $setting == 0
condition = $setting == 3
default = 1
$distanceFogOpacity = 1.0
[Preset]
name = 80% Opacity
category = Distance Fog Visibility
condition = $setting == 0
condition = $setting == 3
$distanceFogOpacity = 0.8
[Preset]
name = 60% Opacity
category = Distance Fog Visibility
condition = $setting == 0
condition = $setting == 3
$distanceFogOpacity = 0.6
[Preset]
name = 50% Opacity
category = Distance Fog Visibility
condition = $setting == 0
condition = $setting == 3
$distanceFogOpacity = 0.5
[Preset]
name = 40% Opacity
category = Distance Fog Visibility
condition = $setting == 0
condition = $setting == 3
$distanceFogOpacity = 0.4
[Preset]
name = 20% Opacity
category = Distance Fog Visibility
condition = $setting == 0
condition = $setting == 3
$distanceFogOpacity = 0.2
[Preset]
name = 10% Opacity
category = Distance Fog Visibility
condition = $setting == 0
condition = $setting == 3
$distanceFogOpacity = 0.1
[Preset]
name = 0% Opacity
category = Distance Fog Visibility
condition = $setting == 0
condition = $setting == 3
$distanceFogOpacity = 0.0
[Preset]
name = Normal (Default)
category = Distance Fog Color
condition = $setting == 0
condition = $setting == 3
default = 1
$enableDistanceFogColor:int = 0
[Preset]
name = Black Fog
category = Distance Fog Color
condition = $setting == 0
condition = $setting == 3
$distanceFogRed = 1.0
$distanceFogGreen = 1.0
$distanceFogBlue = 1.0
@ -120,7 +584,7 @@ $distanceFogBlue = 1.0
[Preset]
name = Gray Fog
category = Distance Fog Color
condition = $setting == 0
condition = $setting == 3
$distanceFogRed = 0.75
$distanceFogGreen = 0.75
$distanceFogBlue = 0.75
@ -128,7 +592,7 @@ $distanceFogBlue = 0.75
[Preset]
name = Navy Fog
category = Distance Fog Color
condition = $setting == 0
condition = $setting == 3
$distanceFogRed = 0.0
$distanceFogGreen = 0.0
$distanceFogBlue = 0.5
@ -136,7 +600,7 @@ $distanceFogBlue = 0.5
[Preset]
name = Blue Fog
category = Distance Fog Color
condition = $setting == 0
condition = $setting == 3
$distanceFogRed = 0.0
$distanceFogGreen = 0.0
$distanceFogBlue = 1.0
@ -144,7 +608,7 @@ $distanceFogBlue = 1.0
[Preset]
name = Cyan Fog
category = Distance Fog Color
condition = $setting == 0
condition = $setting == 3
$distanceFogRed = 0.0
$distanceFogGreen = 0.5
$distanceFogBlue = 0.5
@ -152,7 +616,7 @@ $distanceFogBlue = 0.5
[Preset]
name = Green Fog
category = Distance Fog Color
condition = $setting == 0
condition = $setting == 3
$distanceFogRed = 0.0
$distanceFogGreen = 1.0
$distanceFogBlue = 0.0
@ -160,7 +624,7 @@ $distanceFogBlue = 0.0
[Preset]
name = Red Fog
category = Distance Fog Color
condition = $setting == 0
condition = $setting == 3
$distanceFogRed = 1.0
$distanceFogGreen = 0.0
$distanceFogBlue = 0.0
@ -170,63 +634,63 @@ $distanceFogBlue = 0.0
[Preset]
name = 100% Opacity (Default)
category = Fog Clouds Visibility
condition = $setting == 1
condition = $setting == 4
default = 1
$fogCloudsOpacity = 1.0
[Preset]
name = 80% Opacity
category = Fog Clouds Visibility
condition = $setting == 1
condition = $setting == 4
$fogCloudsOpacity = 0.8
[Preset]
name = 60% Opacity
category = Fog Clouds Visibility
condition = $setting == 1
condition = $setting == 4
$fogCloudsOpacity = 0.6
[Preset]
name = 50% Opacity
category = Fog Clouds Visibility
condition = $setting == 1
condition = $setting == 4
$fogCloudsOpacity = 0.5
[Preset]
name = 40% Opacity
category = Fog Clouds Visibility
condition = $setting == 1
condition = $setting == 4
$fogCloudsOpacity = 0.4
[Preset]
name = 20% Opacity
category = Fog Clouds Visibility
condition = $setting == 1
condition = $setting == 4
$fogCloudsOpacity = 0.2
[Preset]
name = 10% Opacity
category = Fog Clouds Visibility
condition = $setting == 1
condition = $setting == 4
$fogCloudsOpacity = 0.1
[Preset]
name = 0% Opacity
category = Fog Clouds Visibility
condition = $setting == 1
condition = $setting == 4
$fogCloudsOpacity = 0.0
[Preset]
name = Normal (Default)
category = Fog Clouds Color
condition = $setting == 1
condition = $setting == 4
default = 1
$enableFogCloudsColor:int = 0
[Preset]
name = Black Fog
category = Fog Clouds Color
condition = $setting == 1
condition = $setting == 4
$fogCloudsRed = 1.0
$fogCloudsGreen = 1.0
$fogCloudsBlue = 1.0
@ -234,7 +698,7 @@ $fogCloudsBlue = 1.0
[Preset]
name = Gray Fog
category = Fog Clouds Color
condition = $setting == 1
condition = $setting == 4
$fogCloudsRed = 0.75
$fogCloudsGreen = 0.75
$fogCloudsBlue = 0.75
@ -242,7 +706,7 @@ $fogCloudsBlue = 0.75
[Preset]
name = Navy Fog
category = Fog Clouds Color
condition = $setting == 1
condition = $setting == 4
$fogCloudsRed = 0.0
$fogCloudsGreen = 0.0
$fogCloudsBlue = 0.5
@ -250,7 +714,7 @@ $fogCloudsBlue = 0.5
[Preset]
name = Blue Fog
category = Fog Clouds Color
condition = $setting == 1
condition = $setting == 4
$fogCloudsRed = 0.0
$fogCloudsGreen = 0.0
$fogCloudsBlue = 1.0
@ -258,7 +722,7 @@ $fogCloudsBlue = 1.0
[Preset]
name = Cyan Fog
category = Fog Clouds Color
condition = $setting == 1
condition = $setting == 4
$fogCloudsRed = 0.0
$fogCloudsGreen = 0.5
$fogCloudsBlue = 0.5
@ -266,7 +730,7 @@ $fogCloudsBlue = 0.5
[Preset]
name = Green Fog
category = Fog Clouds Color
condition = $setting == 1
condition = $setting == 4
$fogCloudsRed = 0.0
$fogCloudsGreen = 1.0
$fogCloudsBlue = 0.0
@ -274,7 +738,7 @@ $fogCloudsBlue = 0.0
[Preset]
name = Red Fog
category = Fog Clouds Color
condition = $setting == 1
condition = $setting == 4
$fogCloudsRed = 1.0
$fogCloudsGreen = 0.0
$fogCloudsBlue = 0.0
@ -284,63 +748,63 @@ $fogCloudsBlue = 0.0
[Preset]
name = 100% Opacity (Default)
category = Castle Fog Visibility
condition = $setting == 2
condition = $setting == 5
default = 1
$castleFogOpacity = 1.0
[Preset]
name = 80% Opacity
category = Castle Fog Visibility
condition = $setting == 2
condition = $setting == 5
$castleFogOpacity = 0.8
[Preset]
name = 60% Opacity
category = Castle Fog Visibility
condition = $setting == 2
condition = $setting == 5
$castleFogOpacity = 0.6
[Preset]
name = 50% Opacity
category = Castle Fog Visibility
condition = $setting == 2
condition = $setting == 5
$castleFogOpacity = 0.5
[Preset]
name = 40% Opacity
category = Castle Fog Visibility
condition = $setting == 2
condition = $setting == 5
$castleFogOpacity = 0.4
[Preset]
name = 20% Opacity
category = Castle Fog Visibility
condition = $setting == 2
condition = $setting == 5
$castleFogOpacity = 0.2
[Preset]
name = 10% Opacity
category = Castle Fog Visibility
condition = $setting == 2
condition = $setting == 5
$castleFogOpacity = 0.1
[Preset]
name = 0% Opacity
category = Castle Fog Visibility
condition = $setting == 2
condition = $setting == 5
$castleFogOpacity = 0.0
[Preset]
name = Normal (Default)
category = Castle Fog Color
condition = $setting == 2
condition = $setting == 5
default = 1
$enableCastleFogColor:int = 0
[Preset]
name = Black Fog
category = Castle Fog Color
condition = $setting == 2
condition = $setting == 5
$castleFogRed = 1.0
$castleFogGreen = 1.0
$castleFogBlue = 1.0
@ -348,7 +812,7 @@ $castleFogBlue = 1.0
[Preset]
name = Gray Fog
category = Castle Fog Color
condition = $setting == 2
condition = $setting == 5
$castleFogRed = 0.75
$castleFogGreen = 0.75
$castleFogBlue = 0.75
@ -356,7 +820,7 @@ $castleFogBlue = 0.75
[Preset]
name = Navy Fog
category = Castle Fog Color
condition = $setting == 2
condition = $setting == 5
$castleFogRed = 0.0
$castleFogGreen = 0.0
$castleFogBlue = 0.5
@ -364,7 +828,7 @@ $castleFogBlue = 0.5
[Preset]
name = Blue Fog
category = Castle Fog Color
condition = $setting == 2
condition = $setting == 5
$castleFogRed = 0.0
$castleFogGreen = 0.0
$castleFogBlue = 1.0
@ -372,7 +836,7 @@ $castleFogBlue = 1.0
[Preset]
name = Cyan Fog
category = Castle Fog Color
condition = $setting == 2
condition = $setting == 5
$castleFogRed = 0.0
$castleFogGreen = 0.5
$castleFogBlue = 0.5
@ -380,7 +844,7 @@ $castleFogBlue = 0.5
[Preset]
name = Green Fog
category = Castle Fog Color
condition = $setting == 2
condition = $setting == 5
$castleFogRed = 0.0
$castleFogGreen = 1.0
$castleFogBlue = 0.0
@ -388,7 +852,7 @@ $castleFogBlue = 0.0
[Preset]
name = Red Fog
category = Castle Fog Color
condition = $setting == 2
condition = $setting == 5
$castleFogRed = 1.0
$castleFogGreen = 0.0
$castleFogBlue = 0.0
@ -399,81 +863,81 @@ $castleFogBlue = 0.0
[Preset]
name = 300% Opacity
category = Ganon's Aura Visibility
condition = $setting == 2
condition = $setting == 6
$ganonAuraOpacity = 2.0
[Preset]
name = 200% Opacity
category = Ganon's Aura Visibility
condition = $setting == 2
condition = $setting == 6
$ganonAuraOpacity = 2.0
[Preset]
name = 150% Opacity
category = Ganon's Aura Visibility
condition = $setting == 2
condition = $setting == 6
$ganonAuraOpacity = 1.5
[Preset]
name = 100% Opacity (Default)
category = Ganon's Aura Visibility
condition = $setting == 2
condition = $setting == 6
default = 1
$ganonAuraOpacity = 1.0
[Preset]
name = 80% Opacity
category = Ganon's Aura Visibility
condition = $setting == 2
condition = $setting == 6
$ganonAuraOpacity = 0.8
[Preset]
name = 60% Opacity
category = Ganon's Aura Visibility
condition = $setting == 2
condition = $setting == 6
$ganonAuraOpacity = 0.6
[Preset]
name = 50% Opacity
category = Ganon's Aura Visibility
condition = $setting == 2
condition = $setting == 6
$ganonAuraOpacity = 0.5
[Preset]
name = 40% Opacity
category = Ganon's Aura Visibility
condition = $setting == 2
condition = $setting == 6
$ganonAuraOpacity = 0.4
[Preset]
name = 20% Opacity
category = Ganon's Aura Visibility
condition = $setting == 2
condition = $setting == 6
$ganonAuraOpacity = 0.2
[Preset]
name = 10% Opacity
category = Ganon's Aura Visibility
condition = $setting == 2
condition = $setting == 6
$ganonAuraOpacity = 0.2
[Preset]
name = 0% Opacity
category = Ganon's Aura Visibility
condition = $setting == 2
condition = $setting == 6
$ganonAuraOpacity = 0.0
[Preset]
name = Normal (Default)
category = Ganon's Aura Color
condition = $setting == 2
condition = $setting == 6
default = 1
$enableGanonAuraColor:int = 0
[Preset]
name = Black Aura
category = Ganon's Aura Color
condition = $setting == 2
condition = $setting == 6
$ganonAuraRed = 1.0
$ganonAuraGreen = 1.0
$ganonAuraBlue = 1.0
@ -481,7 +945,7 @@ $ganonAuraBlue = 1.0
[Preset]
name = Navy Aura
category = Ganon's Aura Color
condition = $setting == 2
condition = $setting == 6
$ganonAuraRed = 0.0
$ganonAuraGreen = 0.0
$ganonAuraBlue = 0.5
@ -489,7 +953,7 @@ $ganonAuraBlue = 0.5
[Preset]
name = Blue Aura
category = Ganon's Aura Color
condition = $setting == 2
condition = $setting == 6
$ganonAuraRed = 0.0
$ganonAuraGreen = 0.0
$ganonAuraBlue = 1.0
@ -497,7 +961,7 @@ $ganonAuraBlue = 1.0
[Preset]
name = Cyan Aura
category = Ganon's Aura Color
condition = $setting == 2
condition = $setting == 6
$ganonAuraRed = 0.0
$ganonAuraGreen = 0.5
$ganonAuraBlue = 0.5
@ -505,7 +969,7 @@ $ganonAuraBlue = 0.5
[Preset]
name = Green Aura
category = Ganon's Aura Color
condition = $setting == 2
condition = $setting == 6
$ganonAuraRed = 0.0
$ganonAuraGreen = 1.0
$ganonAuraBlue = 0.0
@ -513,7 +977,7 @@ $ganonAuraBlue = 0.0
[Preset]
name = Red Aura
category = Ganon's Aura Color
condition = $setting == 2
condition = $setting == 6
$ganonAuraRed = 1.0
$ganonAuraGreen = 0.0
$ganonAuraBlue = 0.0

View File

@ -1,35 +1,24 @@
#version 420
#version 430
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
// shader 03285368cf940e37
// Used for: Scaling Box Blur Background
const float blurQuality = float($blurQuality);
const int sampleScale = 2;
// start of shader inputs/outputs, predetermined by Cemu. Do not touch
#ifdef VULKAN
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
#define SET_POSITION(_v) gl_Position = _v; gl_Position.z = (gl_Position.z + gl_Position.w) / 2.0
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
#define gl_VertexID gl_VertexIndex
#define gl_InstanceID gl_InstanceIndex
#else
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
#define SET_POSITION(_v) gl_Position = _v
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
#endif
// This shader was automatically converted to be cross-compatible with Vulkan and OpenGL.
// shader 03285368cf940e37 //box bg
//float dither = $dither ;
//float scaleShader = $scaleShader;
float scaleBlur = $scaleBlur; //0.25 4k
const int sampleScale = 2;
//float lightBloom = 0.95;
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
layout(location = 0) in vec4 passParameterSem3;
layout(location = 0) out vec4 passPixelColor0;
#ifdef VULKAN
layout(set = 1, binding = 1) uniform ufBlock
{
@ -39,6 +28,7 @@ uniform vec4 uf_fragCoordScale;
uniform vec2 uf_fragCoordScale;
#endif
// FabriceNeyret2 CC, single shader gaussian by intermediate MIPmap level. www.shadertoy.com/view/ltScRG
const int samples = 8 * sampleScale, //8 or 4 balances xy position
LOD = 2, // gaussian done on MIPmap at scale LOD
@ -58,10 +48,14 @@ vec4 blur(sampler2D sp, vec2 U, vec2 scale) {
O += gaussian(d) * textureLod(sp, U + scale * d, float(LOD));
}
//O / O.a;
return vec4(O.x, O.y, O.z, 0.0)*18; //16 exact, 17 ~ a touch more haze to compensate res increase
return vec4(O.x, O.y, O.z, 0.0)*17; //16 exact, 17 ~ a touch more haze to compensate res increase
}
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
layout(location = 0) in vec4 passParameterSem3;
layout(location = 0) out vec4 passPixelColor0;
// end of shader inputs/outputs
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
@ -70,7 +64,7 @@ else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){return mix(0.0, a*b, (a != 0.0) && (b != 0.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);
@ -90,21 +84,28 @@ vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = passParameterSem3;
vec2 coord = passParameterSem3.xy*textureSize(textureUnitPS0, 0); //
vec2 ps = vec2(1.0) / textureSize(textureUnitPS0, 0);
vec2 uv = coord * ps;
if (blurQuality != 0.0) {
vec2 coord = passParameterSem3.xy*textureSize(textureUnitPS0, 0);
vec2 ps = vec2(1.0) / textureSize(textureUnitPS0, 0);
vec2 uv = coord * ps;
R1f.xyz = blur(textureUnitPS0, R0f.xy, ps*blurQuality).xyz;
R2f.xyz = R1f.xyz;
R3f.xyz = R1f.xyz;
R0f.xyz = R1f.xyz;
}
else {
R1f.xyz = (texture(textureUnitPS0, R0f.xy).xyz);
R2f.xyz = (texture(textureUnitPS0, R0f.zy).xyz);
R3f.xyz = (texture(textureUnitPS0, R0f.xw).xyz);
R0f.xyz = (texture(textureUnitPS0, R0f.zw).xyz);
}
R1f.xyz = blur(textureUnitPS0, R0f.xy, ps*scaleBlur).xyz;
R2f.xyz = R1f.xyz;
R3f.xyz = R1f.xyz;
R0f.xyz = R1f.xyz;
/*
R1f.xyz = (texture(textureUnitPS0, R0f.xy).xyz);
R2f.xyz = (texture(textureUnitPS0, R0f.zy).xyz);
R3f.xyz = (texture(textureUnitPS0, R0f.xw).xyz);
R0f.xyz = (texture(textureUnitPS0, R0f.zw).xyz);
*/
//R1f.xyz = (texture(textureUnitPS0, R0f.xy).xyz);
//R2f.xyz = (texture(textureUnitPS0, R0f.zy).xyz);
//R3f.xyz = (texture(textureUnitPS0, R0f.xw).xyz);
//R0f.xyz = (texture(textureUnitPS0, R0f.zw).xyz);
// 0
PV0f.x = R1f.z + R2f.z;
PV0f.x /= 2.0;

View File

@ -19,7 +19,7 @@
// This shader was automatically converted to be cross-compatible with Vulkan and OpenGL.
// shader 50e29e8929cea348
// Used for: Scaling Anti-Aliasing solution of game
// Used for: Scaling Anti-Aliasing
#ifdef VULKAN

View File

@ -19,10 +19,10 @@
// This shader was automatically converted to be cross-compatible with Vulkan and OpenGL.
// shader 70b82af4d17024d2
//AA fix
// Used for: Scaling Anti-Aliasing
float resScale = float($width)/float($gameWidth);
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{

View File

@ -19,7 +19,9 @@
// This shader was automatically converted to be cross-compatible with Vulkan and OpenGL.
// shader 8d638f35cebd14dc
//banding fix
// Used for: Banding Fix
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;

View File

@ -19,10 +19,10 @@
// This shader was automatically converted to be cross-compatible with Vulkan and OpenGL.
// shader ec4a85d51e778437
//box blur fix
// Used for: Scaling Box Blur
float resScale = float($width)/float($gameWidth);
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{

View File

@ -0,0 +1,320 @@
[Definition]
titleIds = 0005000010101D00,0005000010101E00,000500001014B700,000500001014B800,0005000010101C00,0005000010142300,0005000010142400,0005000010142200
name = TV Resolution, Gamepad Resolution, Shadow Quality and Blur Quality
path = "New Super Mario Bros. U/Graphics"
description = Changes the TV/Gamepad resolution of the game. You can also adjust the quality of the shadows and blur.||Made by getdls.
version = 6
[Default]
$width = 1280
$height = 720
$padWidth = 854
$padHeight = 480
$gameWidth = 1280
$gameHeight = 720
$gamePadWidth = 854
$gamePadHeight = 480
$shadowRes = 1
$blurQuality = 0.0
# TV Resolution
[Preset]
category = TV Resolution
name = 1280x720 (Default)
[Preset]
category = TV Resolution
name = 640x360
$width = 640
$height = 360
[Preset]
category = TV Resolution
name = 960x540
$width = 960
$height = 540
[Preset]
category = TV Resolution
name = 1600x900
$width = 1600
$height = 900
[Preset]
category = TV Resolution
name = 1920x1080
$width = 1920
$height = 1080
[Preset]
category = TV Resolution
name = 2560x1440
$width = 2560
$height = 1440
[Preset]
category = TV Resolution
name = 3200x1800
$width = 3200
$height = 1800
[Preset]
category = TV Resolution
name = 3840x2160
$width = 3840
$height = 2160
[Preset]
category = TV Resolution
name = 5120x2880
$width = 5120
$height = 2880
[Preset]
category = TV Resolution
name = 7680x4320
$width = 7680
$height = 4320
# Gamepad Resolution
[Preset]
name = 854x480 (Default)
category = Gamepad Resolution
[Preset]
category = Gamepad Resolution
name = 640x360
$padWidth = 640
$padHeight = 360
[Preset]
category = Gamepad Resolution
name = 960x540
$padWidth = 960
$padHeight = 540
[Preset]
category = Gamepad Resolution
name = 1600x900
$padWidth = 1600
$padHeight = 900
[Preset]
category = Gamepad Resolution
name = 1920x1080
$padWidth = 1920
$padHeight = 1080
[Preset]
category = Gamepad Resolution
name = 2560x1440
$padWidth = 2560
$padHeight = 1440
[Preset]
category = Gamepad Resolution
name = 3200x1800
$padWidth = 3200
$padHeight = 1800
[Preset]
category = Gamepad Resolution
name = 3840x2160
$padWidth = 3840
$padHeight = 2160
[Preset]
category = Gamepad Resolution
name = 5120x2880
$padWidth = 5120
$padHeight = 2880
[Preset]
category = Gamepad Resolution
name = 7680x4320
$padWidth = 7680
$padHeight = 4320
# Shadow Quality
[Preset]
category = Shadow Quality
name = Low (50%)
$shadowRes = 0.5
[Preset]
category = Shadow Quality
name = Medium (100%, Default)
default = 1
[Preset]
category = Shadow Quality
name = High (200%)
$shadowRes = 2
[Preset]
category = Shadow Quality
name = Ultra (300%)
$shadowRes = 3
[Preset]
category = Shadow Quality
name = Extreme (400%, Unstable)
$shadowRes = 4
# Blur Quality
[Preset]
category = Blur Quality
name = Medium (Default)
[Preset]
category = Blur Quality
name = High
$blurQuality = 0.25
[Preset]
category = Blur Quality
name = Ultra
$blurQuality = 0.50
[Preset]
category = Blur Quality
name = Extreme
$blurQuality = 1.0
# Use more accurate texture formats for less banding
[TextureRedefine]
width = 1280
height = 720
formats = 0x001
overwriteFormat = 0x005
[TextureRedefine]
width = 1280
height = 720
formats = 0x01a
overwriteFormat = 0x01f
# Texture Redefines
[TextureRedefine] # TV
width = 1280
height = 720
#formats = 0x80e,0x01a,0x001
tileModesExcluded = 0x1
overwriteWidth = ($width/$gameWidth) * 1280
overwriteHeight = ($height/$gameHeight) * 720
[TextureRedefine] # Shadows on level selection
width = 1024
height = 1024
formats = 0x005
overwriteWidth = $shadowRes * 1024
overwriteHeight = $shadowRes * 1024
[TextureRedefine] # Gamepad
width = 864
height = 480
#formats = 0x01a
overwriteWidth = ($padWidth/$gamePadWidth) * 864
overwriteHeight = ($padHeight/$gamePadHeight) * 480
[TextureRedefine] # Gamepad
width = 854
height = 480
#formats = 0x01a
overwriteWidth = ($padWidth/$gamePadWidth) * 854
overwriteHeight = ($padHeight/$gamePadHeight) * 480
[TextureRedefine] # Horizon blur
width = 640
height = 368
#formats = 0x01a
overwriteWidth = ($width/$gameWidth) * 640
overwriteHeight = ($height/$gameHeight) * 368
[TextureRedefine] # Horizon blur
width = 640
height = 360
#formats = 0x01a
tileModesExcluded = 0x1
overwriteWidth = ($width/$gameWidth) * 640
overwriteHeight = ($height/$gameHeight) * 360
[TextureRedefine]
width = 512
height = 256
formats = 0x01a
overwriteWidth = ($width/$gameWidth) * 512
overwriteHeight = ($height/$gameHeight) * 256
[TextureRedefine]
width = 256
height = 128
formats = 0x01a
overwriteWidth = ($width/$gameWidth) * 256
overwriteHeight = ($height/$gameHeight) * 128
[TextureRedefine]
width = 320
height = 180
overwriteWidth = ($width/$gameWidth) * 320
overwriteHeight = ($height/$gameHeight) * 180
[TextureRedefine]
width = 320
height = 180
overwriteWidth = ($width/$gameWidth) * 320
overwriteHeight = ($height/$gameHeight) * 180
[TextureRedefine]
width = 160
height = 208
#formats = 0x80e,0x01a
overwriteWidth = ($width/$gameWidth) * 160
overwriteHeight = ($height/$gameHeight) * 208
[TextureRedefine] # Portraits
width = 160
height = 196
#formats = 0x80e,0x01a
formatsExcluded = 0x033
overwriteWidth = ($width/$gameWidth) * 160
overwriteHeight = ($height/$gameHeight) * 196
[TextureRedefine]
width = 160
height = 90
overwriteWidth = ($width/$gameWidth) * 160
overwriteHeight = ($height/$gameHeight) * 90
[TextureRedefine]
width = 128
height = 64
formats = 0x01a
overwriteWidth = ($width/$gameWidth) * 128
overwriteHeight = ($height/$gameHeight) * 64
[TextureRedefine]
width = 64
height = 32
formats = 0x01a
overwriteWidth = ($width/$gameWidth) * 64
overwriteHeight = ($height/$gameHeight) * 32
[TextureRedefine]
width = 32
height = 16
formats = 0x01a
overwriteWidth = ($width/$gameWidth) * 32
overwriteHeight = ($height/$gameHeight) * 16

View File

@ -0,0 +1,114 @@
#version 430
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
// shader 0f817a18292d8ca5
// start of shader inputs/outputs, predetermined by Cemu. Do not touch
#ifdef VULKAN
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
#else
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
#endif
#ifdef VULKAN
layout(set = 1, binding = 1) uniform ufBlock
{
uniform ivec4 uf_remappedPS[4];
uniform vec4 uf_fragCoordScale;
};
#else
uniform ivec4 uf_remappedPS[4];
uniform vec2 uf_fragCoordScale;
#endif
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2DArray textureUnitPS0;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 0) out vec4 passPixelColor0;
// end of shader inputs/outputs
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 = ((0.5 > 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,66 @@
#version 430
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
// shader 2802e519ac163806
// start of shader inputs/outputs, predetermined by Cemu. Do not touch
#ifdef VULKAN
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
#else
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
#endif
#ifdef VULKAN
layout(set = 1, binding = 1) uniform ufBlock
{
uniform ivec4 uf_remappedPS[2];
uniform float uf_alphaTestRef;
uniform vec4 uf_fragCoordScale;
};
#else
uniform ivec4 uf_remappedPS[2];
uniform float uf_alphaTestRef;
uniform vec2 uf_fragCoordScale;
#endif
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 0) out vec4 passPixelColor0;
// end of shader inputs/outputs
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,64 @@
#version 430
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
// shader 2802e519ac163806
// start of shader inputs/outputs, predetermined by Cemu. Do not touch
#ifdef VULKAN
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
#else
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
#endif
#ifdef VULKAN
layout(set = 1, binding = 1) uniform ufBlock
{
uniform ivec4 uf_remappedPS[2];
uniform vec4 uf_fragCoordScale;
};
#else
uniform ivec4 uf_remappedPS[2];
uniform vec2 uf_fragCoordScale;
#endif
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 0) out vec4 passPixelColor0;
// end of shader inputs/outputs
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,105 @@
#version 430
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
// shader 9bc55a95dad10ffa
// start of shader inputs/outputs, predetermined by Cemu. Do not touch
#ifdef VULKAN
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
#else
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
#endif
#ifdef VULKAN
layout(set = 1, binding = 1) uniform ufBlock
{
uniform ivec4 uf_remappedPS[4];
uniform vec4 uf_fragCoordScale;
};
#else
uniform ivec4 uf_remappedPS[4];
uniform vec2 uf_fragCoordScale;
#endif
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2DArray textureUnitPS0;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 0) out vec4 passPixelColor0;
// end of shader inputs/outputs
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 = ((0.5 > 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,103 @@
#version 430
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
// shader d9f064ae204238df
// start of shader inputs/outputs, predetermined by Cemu. Do not touch
#ifdef VULKAN
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
#else
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
#endif
#ifdef VULKAN
layout(set = 1, binding = 1) uniform ufBlock
{
uniform ivec4 uf_remappedPS[4];
uniform vec4 uf_fragCoordScale;
};
#else
uniform ivec4 uf_remappedPS[4];
uniform vec2 uf_fragCoordScale;
#endif
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2DArray textureUnitPS0;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 0) out vec4 passPixelColor0;
// end of shader inputs/outputs
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,79 @@
#version 430
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
// shader fcd26205b94e11ca
// start of shader inputs/outputs, predetermined by Cemu. Do not touch
#ifdef VULKAN
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
#else
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
#endif
#ifdef VULKAN
layout(set = 1, binding = 1) uniform ufBlock
{
uniform ivec4 uf_remappedPS[2];
uniform float uf_alphaTestRef;
uniform vec4 uf_fragCoordScale;
};
#else
uniform ivec4 uf_remappedPS[2];
uniform float uf_alphaTestRef;
uniform vec2 uf_fragCoordScale;
#endif
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 0) out vec4 passPixelColor0;
// end of shader inputs/outputs
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);
}

View File

@ -0,0 +1,77 @@
#version 430
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
// shader fcd26205b94e11ca
// start of shader inputs/outputs, predetermined by Cemu. Do not touch
#ifdef VULKAN
#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation)
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw)
#else
#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location)
#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140)
#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation)
#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw)
#endif
#ifdef VULKAN
layout(set = 1, binding = 1) uniform ufBlock
{
uniform ivec4 uf_remappedPS[2];
uniform vec4 uf_fragCoordScale;
};
#else
uniform ivec4 uf_remappedPS[2];
uniform vec2 uf_fragCoordScale;
#endif
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 0) out vec4 passPixelColor0;
// end of shader inputs/outputs
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);
}

View File

@ -0,0 +1,6 @@
[Definition]
titleIds = 0005000010101D00,0005000010101E00,000500001014B700,000500001014B800,0005000010101C00,0005000010142300,0005000010142400,0005000010142200
name = Remove HUD
path = "New Super Mario Bros. U/Mods/Remove HUD (breaks menus)"
description = Removes the in-game HUD.|Breaks menus so should only be used for screenshots/videos.||Made by Seb.
version = 6

View File

@ -0,0 +1,22 @@
[NSMBU+LU_CrashFix_V0]
moduleMatches = 0x1049CED8, 0x777D7B44
; remove check for mii data
0x024D7394 = b .+0xE8
[NSMBU_CrashFix_V64USV80EU]
moduleMatches = 0x6CAEA914, 0xFA29C89F
0x024D71C4 = b .+0xE8
[NSMBU_CrashFix_V0USV0EU]
moduleMatches = 0xA7A5ECF1, 0xC7B938AD
0x024BDE70 = b .+0xE8
[NSLU_CrashFix_V0EU]
moduleMatches = 0xA3705C0B
0x024D7158 = b .+0xE8
; Note: for future versions take the crash log and get the module checksum from the user. Subtract 0x7c from the link register in the crash log to be the address we patch.

View File

@ -1,6 +1,6 @@
[Definition]
titleIds = 0005000010101D00,0005000010101E00,000500001014B700,000500001014B800,0005000010101C00,0005000010142300,0005000010142400,0005000010142200
name = Crash Fix
path = "New Super Mario Bros. U/Workarounds/Crash Fix" #and luigi
description = Allows NSMBU and NSLU to be played without the required system files. Made by Xalphenos.
version = 4
name = Title Screen Crash Fix
path = "New Super Mario Bros. U/Workarounds/Title Screen Crash Fix" #and luigi
description = Allows NSMBU and NSLU to be played without the required system files.|Only tested to work on the latest update of the game.||Made by Xalphenos.
version = 6