[BotW] Major improvements and update all packs to V6

This includes the new Breath of the Wild graphic packs. Noteworthy changes (that'll hopefully break nothing!) are:

General Changes:
* Improving the menu navigation using features from the V5 graphic pack features! Big thanks to @MrPigglet for doing the work here!
* All graphic packs have had their descriptions, names and folder structure improved.
* Updating all packs to use native Cemu patches! Should just mean better compatibility in the future.

Graphic Pack Improvements:
* Merged related settings together into PC-game-like Graphics and Enhancements graphic packs menus.
* Added Draw Distance pack( which also includes the old LOD Bias setting)! This includes a NPC/Enemy draw distance pack and an object one which is stuff like bushes, general model details and other stuff. However, the object part is still experimental and messes with some other level of detail.
* Changed the vague Pro Hud option into the "Remove HUD elements" pack, which now also supports removing the camera HUD for screenshots (also experimental™) and other options. These will no longer corrupt any textures either!
* Fixed the weather pack, which now also allows you to individually change the weather types. Say bye to rain (specifically)!
* Added some cool timelapse options to the Day Length graphic pack. Just wanted to mention that here since it's pretty cool!
* Added a Camera Sensitivity pack, made by FakeMichau and theboy181.
* Cel Shading pack is refactored and should be less confusing to enable.
* Glowing Guardian Colors pack was much improved, making stylizing some of those guardian colors really cool!

Major FPS++ Improvements:
* Fixed shield surfing, thanks to @Xalphenos!
* Fixed flurry rushes not connecting sometimes at higher FPS!
* Fixed Thunderblight Ganon flying off in the distance while fighting him!
* Added a preview of a menu navigation speed made by @Exzap which makes the game far more playable at anything above 60FPS which has to be manually enabled in the Advanced Settings for now. The reason why it's disabled is because it's buggy at (sub) 30FPS in the menus and it disables fast scrolling (speed up when you hold a direction for a longer time). The full version of this fix will be enabled by default and won't be a special setting.

Is this FPS++ 2.0?!

* Added two different modes which hides some of the complexity. Simple will give most of the settings normal users should care about!
* Also added an option to temporarily lock to 30FPS. It is in practice just setting your FPS limit to 30FPS, but I hoped to make users aware of when to temporarily switch to 30FPS to prevent some of the small remaining issues (like some cutscenes crashing at more then 60FPS).
* Made FPS++ able to be changed while running the game.
* Added a static FPS mode (and removed the separate static FPS graphic pack since it was no longer up-to-date) under the advanced settings.

Random Improvements:
* Fixed fog graphic pack, which now does Ganon's castle smoke again.
* Added more resolutions and aspect ratios! Other packs also have much more options added!
* Reshade Compatibility pack is now better titled, since users that weren't using Reshade were enabling it regardless which broke their graphics.
* Refactored folder structure to the new model.
* Many other changes that I forgot!

Based on https://github.com/MrPigglet/gfx_pack
Co-authored-by: MrPigglet <14359517+MrPigglet@users.noreply.github.com>
This commit is contained in:
Crementif 2021-01-12 01:09:30 +01:00
parent a4a82c32db
commit ca22977ef0
No known key found for this signature in database
GPG Key ID: 453870E0401C94C0
166 changed files with 64778 additions and 0 deletions

View File

@ -0,0 +1,581 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 cbbcf83b05c6d921
UNIFORM_BUFFER_LAYOUT(33, 1, 7) uniform uniformBlockPS1
{
vec4 uf_blockPS1[1024];
};
UNIFORM_BUFFER_LAYOUT(38, 1, 8) uniform uniformBlockPS6
{
vec4 uf_blockPS6[1024];
};
UNIFORM_BUFFER_LAYOUT(42, 1, 9) uniform uniformBlockPS10
{
vec4 uf_blockPS10[1024];
};
TEXTURE_LAYOUT(1, 1, 0) uniform sampler2D textureUnitPS1;
TEXTURE_LAYOUT(2, 1, 1) uniform sampler2D textureUnitPS2;
TEXTURE_LAYOUT(3, 1, 2) uniform sampler2D textureUnitPS3;
TEXTURE_LAYOUT(6, 1, 3) uniform sampler2D textureUnitPS6;
TEXTURE_LAYOUT(7, 1, 4) uniform sampler2DArray textureUnitPS7;
TEXTURE_LAYOUT(14, 1, 5) uniform sampler2D textureUnitPS14;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem5;
layout(location = 2) in vec4 passParameterSem6;
layout(location = 5) out vec4 passPixelColor5;
#ifdef VULKAN
layout(set = 1, binding = 6) uniform ufBlock
{
uniform vec4 uf_fragCoordScale;
};
#else
uniform vec2 uf_fragCoordScale;
#endif
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; }
float textureShadow_1(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_2(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_3(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_4(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
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 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;
bool activeMaskStack[2];
bool activeMaskStackC[3];
activeMaskStack[0] = false;
activeMaskStackC[0] = false;
activeMaskStackC[1] = false;
activeMaskStack[0] = true;
activeMaskStackC[0] = true;
activeMaskStackC[1] = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem5);
R2i = floatBitsToInt(passParameterSem6);
if( activeMaskStackC[1] == true ) {
R3i.w = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R0i.xy)).x);
R6i.x = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R0i.xy)).x);
R6i.z = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R0i.zw)).x);
R6i.w = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R0i.xy)).x);
R4i.xyzw = floatBitsToInt(texture(textureUnitPS3, intBitsToFloat(R2i.zw)).xyzw);
R2i.z = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R2i.zw)).w);
}
if( activeMaskStackC[1] == true ) {
// 0
backupReg0i = R4i.z;
R123i.x = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R5i.w)) + uf_blockPS1[14].x));
PV0i.x = R123i.x;
R124i.y = floatBitsToInt((intBitsToFloat(R4i.x) * 2.0 + -(1.0)));
R4i.z = floatBitsToInt((intBitsToFloat(R4i.y) * 2.0 + -(1.0)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.w),uf_blockPS1[16].x) + uf_blockPS1[14].x));
PV0i.w = R123i.w;
R3i.z = floatBitsToInt((intBitsToFloat(backupReg0i) * 2.0 + -(1.0)));
PS0i = R3i.z;
// 1
R6i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(PV0i.w))));
R7i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), -(intBitsToFloat(PV0i.w))));
R127i.z = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R5i.z)) + uf_blockPS1[14].x));
PV1i.z = R127i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R5i.x)) + uf_blockPS1[14].x));
R9i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)));
PS1i = R9i.z;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R124i.y),intBitsToFloat(R4i.z),intBitsToFloat(R3i.z),-0.0),vec4(intBitsToFloat(R124i.y),intBitsToFloat(R4i.z),intBitsToFloat(R3i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R126i.z = tempi.x;
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), -(intBitsToFloat(PV1i.z))));
PS0i = R126i.w;
// 3
backupReg0i = R127i.z;
backupReg1i = R127i.w;
backupReg1i = R127i.w;
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), -(intBitsToFloat(R127i.w))));
R127i.y = floatBitsToInt(-(intBitsToFloat(R127i.z)));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), -(intBitsToFloat(backupReg0i))));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), -(intBitsToFloat(backupReg1i))));
R125i.z = floatBitsToInt(-(intBitsToFloat(backupReg1i)));
PS1i = R125i.z;
// 4
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R6i.x),intBitsToFloat(R7i.y),intBitsToFloat(R9i.z),-0.0),vec4(intBitsToFloat(R6i.x),intBitsToFloat(R7i.y),intBitsToFloat(R9i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R124i.z = tempi.x;
R126i.y = floatBitsToInt(intBitsToFloat(R2i.z) * intBitsToFloat(0x437f0000));
PS0i = R126i.y;
// 5
R126i.x = floatBitsToInt(-(intBitsToFloat(R7i.y)) + intBitsToFloat(R127i.z));
R125i.y = floatBitsToInt(-(intBitsToFloat(R6i.x)) + intBitsToFloat(R126i.w));
R127i.z = floatBitsToInt(-(intBitsToFloat(R6i.x)) + intBitsToFloat(R127i.x));
PV1i.z = R127i.z;
R126i.w = floatBitsToInt(-(intBitsToFloat(R9i.z)) + intBitsToFloat(R127i.y));
PV1i.w = R126i.w;
R125i.x = floatBitsToInt(sqrt(intBitsToFloat(R126i.z)));
PS1i = R125i.x;
// 6
R127i.x = floatBitsToInt(-(intBitsToFloat(R9i.z)) + intBitsToFloat(R125i.z));
PV0i.x = R127i.x;
R127i.y = floatBitsToInt(-(intBitsToFloat(R7i.y)) + intBitsToFloat(R127i.w));
PV0i.y = R127i.y;
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.z)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.x), uf_blockPS6[43].x));
R125i.w = floatBitsToInt(sqrt(intBitsToFloat(R124i.z)));
PS0i = R125i.w;
// 7
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(PV0i.y)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.x), uf_blockPS6[45].x));
R124i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.y),uf_blockPS6[43].y) + intBitsToFloat(PV0i.w)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.x), intBitsToFloat(PV0i.x)));
R127i.w = int(intBitsToFloat(R126i.y));
PS1i = R127i.w;
// 8
backupReg0i = R126i.x;
R126i.x = PS1i & 0x0000001c;
R0i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.x)),intBitsToFloat(R125i.y)) + intBitsToFloat(R125i.z)));
R0i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.z)),intBitsToFloat(backupReg0i)) + intBitsToFloat(PV1i.x)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.y),uf_blockPS6[45].y) + intBitsToFloat(PV1i.y)));
PV0i.w = R123i.w;
R0i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.y)),intBitsToFloat(R126i.w)) + intBitsToFloat(PV1i.w)));
PS0i = R0i.x;
// 9
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R9i.z),uf_blockPS6[43].z) + intBitsToFloat(R124i.z)));
R127i.y = floatBitsToInt(-(intBitsToFloat(R9i.z)) * intBitsToFloat(0x3d4ccccd));
PV1i.y = R127i.y;
R127i.z = R127i.w & 0x00000002;
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R9i.z),uf_blockPS6[45].z) + intBitsToFloat(PV0i.w)));
R2i.w = 0x3f800000;
PS1i = R2i.w;
// 10
backupReg0i = R0i.y;
backupReg0i = R0i.y;
backupReg1i = R0i.z;
backupReg1i = R0i.z;
R124i.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R0i.x)),-(intBitsToFloat(backupReg0i)),-(intBitsToFloat(backupReg1i)),-0.0),vec4(-(intBitsToFloat(R0i.x)),-(intBitsToFloat(backupReg0i)),-(intBitsToFloat(backupReg1i)),0.0)));
PV0i.x = R124i.x;
PV0i.y = R124i.x;
PV0i.z = R124i.x;
PV0i.w = R124i.x;
R1i.x = floatBitsToInt((-(uf_blockPS6[53].w) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(PV1i.y)));
R1i.x = clampFI32(R1i.x);
PS0i = R1i.x;
// 11
R9i.x = floatBitsToInt(uf_blockPS6[43].w + intBitsToFloat(R127i.x));
R10i.z = floatBitsToInt(uf_blockPS6[45].w + intBitsToFloat(R127i.w));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(R125i.x));
// 12
R2i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.y), intBitsToFloat(PS1i)));
PV0i.x = R2i.x;
R1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.z), intBitsToFloat(PS1i)));
PV0i.y = R1i.y;
R1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(PS1i)));
R11i.w = floatBitsToInt((-(uf_blockPS6[53].z) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(R127i.y)));
R11i.w = clampFI32(R11i.w);
PS0i = floatBitsToInt(1.0 / intBitsToFloat(R125i.w));
// 13
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.x), intBitsToFloat(PS0i)));
PV1i.x = R127i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.y), intBitsToFloat(PS0i)));
PV1i.y = R127i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.z), intBitsToFloat(PS0i)));
R125i.w = PV0i.x;
R125i.w = floatBitsToInt(intBitsToFloat(R125i.w) * 2.0);
R124i.z = PV0i.y;
R124i.z = floatBitsToInt(intBitsToFloat(R124i.z) * 2.0);
PS1i = R124i.z;
// 14
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R2i.x),intBitsToFloat(R1i.y),intBitsToFloat(R1i.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(float(R126i.x));
// 15
backupReg0i = R127i.y;
R10i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R125i.w)) + intBitsToFloat(R127i.x)));
R127i.y = floatBitsToInt(intBitsToFloat(PS0i) * intBitsToFloat(0x3d124925));
R10i.w = floatBitsToInt(intBitsToFloat(PV0i.x) + 1.0);
R10i.w = clampFI32(R10i.w);
R9i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R124i.z)) + intBitsToFloat(backupReg0i)));
PS1i = R9i.y;
// 16
PS0i = floatBitsToInt(float(R127i.z));
PS0i = floatBitsToInt(intBitsToFloat(PS0i) / 2.0);
// 17
R0i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),-(intBitsToFloat(PS0i))) + intBitsToFloat(R127i.y)));
tempResultf = 1.0 / sqrt(intBitsToFloat(R124i.x));
R2i.z = floatBitsToInt(tempResultf);
PS1i = R2i.z;
}
if( activeMaskStackC[1] == true ) {
activeMaskStack[1] = activeMaskStack[0];
activeMaskStackC[2] = activeMaskStackC[1];
// 0
R7i.x = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].x, uf_blockPS10[2].w));
R6i.y = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].y, uf_blockPS10[2].w));
PV0i.z = floatBitsToInt(uf_blockPS10[2].z + 1.0);
// 1
R8i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].z, uf_blockPS10[2].w));
PV1i.z = R8i.z;
R1i.w = 0;
PV1i.w = R1i.w;
R9i.w = floatBitsToInt(-(intBitsToFloat(R1i.x)) + intBitsToFloat(PV0i.z));
R9i.w = clampFI32(R9i.w);
PS1i = R9i.w;
// 2
R1i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R2i.x),intBitsToFloat(R1i.y),intBitsToFloat(R1i.z),intBitsToFloat(R1i.z)),vec4(-(intBitsToFloat(R7i.x)),-(intBitsToFloat(R6i.y)),-(intBitsToFloat(PV1i.z)),-(intBitsToFloat(PV1i.w)))));
PV0i.x = R1i.x;
PV0i.y = R1i.x;
PV0i.z = R1i.x;
PV0i.w = R1i.x;
// 3
predResult = (1.0 > intBitsToFloat(R11i.w));
activeMaskStack[1] = predResult;
activeMaskStackC[2] = predResult == true && activeMaskStackC[1] == true;
}
else {
activeMaskStack[1] = false;
activeMaskStackC[2] = false;
}
if( activeMaskStackC[2] == true ) {
// 0
PV0i.x = ((-(intBitsToFloat(R9i.z)) > uf_blockPS1[58].x)?int(0xFFFFFFFF):int(0x0));
R127i.y = ((-(intBitsToFloat(R9i.z)) > uf_blockPS1[58].y)?int(0xFFFFFFFF):int(0x0));
PV0i.z = floatBitsToInt(intBitsToFloat(R2i.x) * 1.5);
PV0i.w = floatBitsToInt(intBitsToFloat(R1i.y) * 1.5);
PS0i = floatBitsToInt(intBitsToFloat(R1i.z) * 1.5);
// 1
backupReg0i = R2i.z;
backupReg1i = R1i.x;
R1i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R0i.x)),intBitsToFloat(R2i.z)) + intBitsToFloat(PV0i.z)));
R1i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R0i.y)),intBitsToFloat(R2i.z)) + intBitsToFloat(PV0i.w)));
R2i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R0i.z)),intBitsToFloat(backupReg0i)) + intBitsToFloat(PS0i)));
PV1i.w = PV0i.x & int(1);
PS1i = ((intBitsToFloat(0x3eb33333) > intBitsToFloat(backupReg1i))?int(0xFFFFFFFF):int(0x0));
// 2
R2i.x = floatBitsToInt((intBitsToFloat(R0i.w) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(0x3ac49ba6)));
R2i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R9i.z)),uf_blockPS1[17].y) + 1.0));
PV0i.z = PV1i.w - R127i.y;
R1i.w = ((PS1i == 0)?(0x3f800000):(0));
R2i.w = 0x3f000000;
PS0i = R2i.w;
// 3
PV1i.x = PV0i.z << 0x00000002;
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(R2i.z)));
R127i.w = floatBitsToInt(float(PV0i.z));
PS1i = R127i.w;
// 4
R0i.x = PV1i.x + 0x0000002d;
R0i.y = PV1i.x + 0x0000002c;
R0i.z = PV1i.x + 0x0000002b;
R0i.w = PV1i.x + 0x0000002a;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R1i.y)) + intBitsToFloat(PV1i.y)));
PS0i = R122i.x;
// 5
R1i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R1i.x)) + intBitsToFloat(PS0i)));
R6i.z = floatBitsToInt(roundEven(intBitsToFloat(R127i.w)));
PS1i = R6i.z;
}
if( activeMaskStackC[2] == true ) {
R3i.xyzw = floatBitsToInt(uf_blockPS1[R0i.x].xyzw);
R4i.xyzw = floatBitsToInt(uf_blockPS1[R0i.y].xyzw);
R5i.xyzw = floatBitsToInt(uf_blockPS1[R0i.w].xyzw);
R0i.xyzw = floatBitsToInt(uf_blockPS1[R0i.z].xyzw);
}
if( activeMaskStackC[2] == true ) {
// 0
R126i.y = floatBitsToInt(uf_blockPS6[53].y);
R126i.y = floatBitsToInt(intBitsToFloat(R126i.y) / 2.0);
PV0i.y = R126i.y;
R126i.z = floatBitsToInt(uf_blockPS6[53].x);
R126i.z = floatBitsToInt(intBitsToFloat(R126i.z) / 2.0);
tempResultf = 1.0 / sqrt(intBitsToFloat(R1i.z));
PS0i = floatBitsToInt(tempResultf);
// 1
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(PS0i)));
PV1i.x = R127i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), intBitsToFloat(PS0i)));
PV1i.y = R127i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(PS0i)));
PV1i.z = R127i.z;
R126i.w = floatBitsToInt(-(intBitsToFloat(PV0i.y)));
R7i.z = R6i.z;
PS1i = R7i.z;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.x),intBitsToFloat(R6i.y),intBitsToFloat(R8i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R125i.y = floatBitsToInt(-(intBitsToFloat(R126i.z)));
PS0i = R125i.y;
// 3
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(PV0i.x)) + 1.0));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R8i.z)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.z)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.y)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.y)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R7i.x)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.x)));
PV1i.w = R123i.w;
R8i.z = R6i.z;
PS1i = R8i.z;
// 4
backupReg0i = R126i.y;
R127i.x = floatBitsToInt(intBitsToFloat(PV1i.z) * intBitsToFloat(0x3b449ba7));
R126i.y = floatBitsToInt(intBitsToFloat(PV1i.y) * intBitsToFloat(0x3b449ba7));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(R1i.w)));
R127i.w = floatBitsToInt(intBitsToFloat(PV1i.w) * intBitsToFloat(0x3b449ba7));
R126i.x = backupReg0i;
PS0i = R126i.x;
// 5
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R2i.y)));
R1i.z = R6i.z;
// 6
backupReg0i = R127i.w;
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.y),intBitsToFloat(PV1i.x)) + intBitsToFloat(R9i.z)));
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(PV1i.x)) + intBitsToFloat(R7i.y)));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(PV1i.x)) + intBitsToFloat(R6i.x)));
PV0i.w = R127i.w;
// 7
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R4i.x)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R5i.x)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R3i.x)));
// 8
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R4i.y)) + intBitsToFloat(PV1i.x)));
PV0i.x = R123i.x;
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R5i.y)) + intBitsToFloat(PV1i.y)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R3i.y)) + intBitsToFloat(PV1i.w)));
PV0i.z = R123i.z;
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(R0i.x)));
// 9
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(R4i.z)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(R3i.z)) + intBitsToFloat(PV0i.z)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R0i.y)) + intBitsToFloat(PV0i.w)));
PV1i.z = R123i.z;
// 10
PV0i.x = floatBitsToInt(intBitsToFloat(R3i.w) + intBitsToFloat(PV1i.y));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(R5i.z)) + intBitsToFloat(R126i.y)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(R0i.z)) + intBitsToFloat(PV1i.z)));
PV0i.z = R123i.z;
R127i.w = floatBitsToInt(intBitsToFloat(R4i.w) + intBitsToFloat(PV1i.x));
// 11
PV1i.x = floatBitsToInt(intBitsToFloat(R5i.w) + intBitsToFloat(PV0i.y));
PV1i.y = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(PV0i.z));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PV0i.x));
// 12
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PS1i)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(PS1i)));
PV0i.y = R127i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(PS1i)));
PV0i.z = R127i.z;
// 13
R127i.x = floatBitsToInt(-(intBitsToFloat(R2i.x)) + intBitsToFloat(PV0i.x));
R127i.x = clampFI32(R127i.x);
PV1i.x = R127i.x;
R6i.y = floatBitsToInt((uf_blockPS6[53].y * 0.5 + intBitsToFloat(PV0i.y)));
R6i.x = floatBitsToInt((uf_blockPS6[53].x * 0.5 + intBitsToFloat(PV0i.z)));
PS1i = R6i.x;
// 14
R7i.x = floatBitsToInt(intBitsToFloat(R127i.z) + intBitsToFloat(R126i.z));
R7i.y = floatBitsToInt(intBitsToFloat(R127i.y) + intBitsToFloat(R126i.w));
R6i.w = PV1i.x;
R7i.w = PV1i.x;
PS0i = R7i.w;
// 15
R8i.x = floatBitsToInt(intBitsToFloat(R127i.z) + intBitsToFloat(R125i.y));
R8i.y = floatBitsToInt(intBitsToFloat(R127i.y) + intBitsToFloat(R126i.x));
R8i.w = R127i.x;
R1i.x = floatBitsToInt((-(uf_blockPS6[53].x) * 0.5 + intBitsToFloat(R127i.z)));
PS1i = R1i.x;
// 16
R1i.y = floatBitsToInt((-(uf_blockPS6[53].y) * 0.5 + intBitsToFloat(R127i.y)));
R1i.w = R127i.x;
}
if( activeMaskStackC[2] == true ) {
R6i.y = floatBitsToInt(textureShadow_1(textureUnitPS7, vec4(intBitsToFloat(R6i.x),intBitsToFloat(R6i.y),intBitsToFloat(R6i.z),intBitsToFloat(R6i.w))));
R7i.x = floatBitsToInt(textureShadow_2(textureUnitPS7, vec4(intBitsToFloat(R7i.x),intBitsToFloat(R7i.y),intBitsToFloat(R7i.z),intBitsToFloat(R7i.w))));
R8i.w = floatBitsToInt(textureShadow_3(textureUnitPS7, vec4(intBitsToFloat(R8i.x),intBitsToFloat(R8i.y),intBitsToFloat(R8i.z),intBitsToFloat(R8i.w))));
R1i.z = floatBitsToInt(textureShadow_4(textureUnitPS7, vec4(intBitsToFloat(R1i.x),intBitsToFloat(R1i.y),intBitsToFloat(R1i.z),intBitsToFloat(R1i.w))));
}
if( activeMaskStackC[2] == true ) {
// 0
PV0i.z = floatBitsToInt(intBitsToFloat(R6i.y) + intBitsToFloat(R7i.x));
PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) / 2.0);
// 1
R123i.z = floatBitsToInt((intBitsToFloat(R8i.w) * 0.5 + intBitsToFloat(PV0i.z)));
PV1i.z = R123i.z;
// 2
R127i.y = floatBitsToInt((intBitsToFloat(R1i.z) * 0.5 + intBitsToFloat(PV1i.z))/2.0);
PV0i.y = R127i.y;
// 3
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.y)) + 1.0);
// 4
R0i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),intBitsToFloat(R11i.w)) + intBitsToFloat(R127i.y)));
}
activeMaskStack[1] = activeMaskStack[1] == false;
activeMaskStackC[2] = activeMaskStack[1] == true && activeMaskStackC[1] == true;
if( activeMaskStackC[2] == true ) {
// 0
R0i.w = R2i.w;
}
activeMaskStackC[1] = activeMaskStack[0] == true && activeMaskStackC[0] == true;
if( activeMaskStackC[1] == true ) {
// 0
R0i.x = floatBitsToInt((intBitsToFloat(R9i.x) * intBitsToFloat(0x38d1b717) + 0.5));
R0i.y = floatBitsToInt((intBitsToFloat(R10i.z) * intBitsToFloat(0x3903126f) + 0.5));
PV0i.z = floatBitsToInt(-(intBitsToFloat(R9i.y)));
PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) / 2.0);
PV0i.w = R10i.x;
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) / 2.0);
R2i.z = R2i.w;
PS0i = R2i.z;
// 1
R1i.x = floatBitsToInt(intBitsToFloat(PV0i.w) + 0.5);
R1i.y = floatBitsToInt(intBitsToFloat(PV0i.z) + 0.5);
R2i.w = 0x3f800000;
}
if( activeMaskStackC[1] == true ) {
R0i.xyz = floatBitsToInt(textureLod(textureUnitPS14, intBitsToFloat(R0i.xy),0.0).xyz);
R1i.y = floatBitsToInt(textureLod(textureUnitPS1, intBitsToFloat(R1i.xy),0.0).x);
}
if( activeMaskStackC[1] == true ) {
// 0
backupReg0i = R0i.x;
backupReg1i = R0i.y;
backupReg2i = R0i.z;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i),intBitsToFloat(backupReg2i),-0.0),vec4(uf_blockPS6[42].x,uf_blockPS6[42].y,uf_blockPS6[42].z,0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R2i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),-(intBitsToFloat(R10i.w))) + intBitsToFloat(R1i.y)));
PS0i = R2i.y;
// 1
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
// 2
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.w)));
PV0i.z = R127i.z;
// 3
PV1i.y = floatBitsToInt(intBitsToFloat(R0i.w) + -(intBitsToFloat(PV0i.z)));
// 4
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(R9i.w)) + intBitsToFloat(R127i.z)));
PV0i.x = R123i.x;
// 5
R2i.x = floatBitsToInt(intBitsToFloat(PV0i.x) + uf_blockPS10[1].y);
R2i.x = clampFI32(R2i.x);
}
// export
passPixelColor5 = vec4(intBitsToFloat(R2i.x), intBitsToFloat(R2i.y), intBitsToFloat(R2i.z), intBitsToFloat(R2i.w));
}

View File

@ -0,0 +1,848 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 9c98a67271f8cc75
UNIFORM_BUFFER_LAYOUT(33, 1, 10) uniform uniformBlockPS1
{
vec4 uf_blockPS1[1024];
};
UNIFORM_BUFFER_LAYOUT(38, 1, 11) uniform uniformBlockPS6
{
vec4 uf_blockPS6[1024];
};
UNIFORM_BUFFER_LAYOUT(42, 1, 12) uniform uniformBlockPS10
{
vec4 uf_blockPS10[1024];
};
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
TEXTURE_LAYOUT(2, 1, 1) uniform sampler2D textureUnitPS2;
TEXTURE_LAYOUT(4, 1, 2) uniform sampler2D textureUnitPS4;
TEXTURE_LAYOUT(5, 1, 3) uniform sampler2D textureUnitPS5;
TEXTURE_LAYOUT(7, 1, 4) uniform sampler2DArray textureUnitPS7;
TEXTURE_LAYOUT(10, 1, 5) uniform sampler2D textureUnitPS10;
TEXTURE_LAYOUT(11, 1, 6) uniform sampler2D textureUnitPS11;
TEXTURE_LAYOUT(14, 1, 7) uniform sampler2D textureUnitPS14;
TEXTURE_LAYOUT(15, 1, 8) uniform sampler2D textureUnitPS15;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem2;
layout(location = 2) in vec4 passParameterSem5;
layout(location = 3) in vec4 passParameterSem6;
layout(location = 0) out vec4 passPixelColor0;
layout(location = 1) out vec4 passPixelColor1;
#ifdef VULKAN
layout(set = 1, binding = 9) uniform ufBlock
{
uniform vec4 uf_fragCoordScale;
};
#else
uniform vec2 uf_fragCoordScale;
#endif
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; }
float textureShadow_1(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_2(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R3i = ivec4(0);
ivec4 R4i = ivec4(0);
ivec4 R5i = ivec4(0);
ivec4 R6i = ivec4(0);
ivec4 R7i = ivec4(0);
ivec4 R8i = ivec4(0);
ivec4 R9i = ivec4(0);
ivec4 R10i = ivec4(0);
ivec4 R11i = ivec4(0);
ivec4 R12i = ivec4(0);
ivec4 R13i = ivec4(0);
ivec4 R14i = ivec4(0);
ivec4 R15i = ivec4(0);
ivec4 R16i = ivec4(0);
ivec4 R17i = ivec4(0);
ivec4 R18i = ivec4(0);
ivec4 R122i = ivec4(0);
ivec4 R123i = ivec4(0);
ivec4 R124i = ivec4(0);
ivec4 R125i = ivec4(0);
ivec4 R126i = ivec4(0);
ivec4 R127i = ivec4(0);
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
int PS0i = 0, PS1i = 0;
ivec4 tempi = ivec4(0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
bool activeMaskStack[3];
bool activeMaskStackC[4];
activeMaskStack[0] = false;
activeMaskStack[1] = false;
activeMaskStackC[0] = false;
activeMaskStackC[1] = false;
activeMaskStackC[2] = false;
activeMaskStack[0] = true;
activeMaskStackC[0] = true;
activeMaskStackC[1] = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem2);
R2i = floatBitsToInt(passParameterSem5);
R3i = floatBitsToInt(passParameterSem6);
if( activeMaskStackC[1] == true ) {
R4i.w = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.xy)).x);
R5i.x = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.xy)).x);
R5i.z = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.zw)).x);
R5i.w = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.xy)).x);
R3i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R3i.zw)).xyzw);
R13i.xy = floatBitsToInt(texture(textureUnitPS14, intBitsToFloat(R0i.xy)).xy);
}
if( activeMaskStackC[1] == true ) {
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R5i.w)) + uf_blockPS1[14].x));
PV0i.x = R123i.x;
R127i.y = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R5i.z)) + uf_blockPS1[14].x));
PV0i.y = R127i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.w),uf_blockPS1[16].x) + uf_blockPS1[14].x));
PV0i.z = R123i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R5i.x)) + uf_blockPS1[14].x));
R5i.x = floatBitsToInt((intBitsToFloat(R3i.x) * 2.0 + -(1.0)));
PS0i = R5i.x;
// 1
R1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(PV0i.z))));
PV1i.x = R1i.x;
R1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), -(intBitsToFloat(PV0i.z))));
R1i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)));
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), -(intBitsToFloat(PV0i.y))));
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), -(intBitsToFloat(PV0i.y))));
PS1i = R125i.w;
// 2
R127i.x = floatBitsToInt(-(intBitsToFloat(R127i.y)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), uf_blockPS6[43].x));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), uf_blockPS6[45].x));
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), -(intBitsToFloat(R127i.w))));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.w), -(intBitsToFloat(R127i.w))));
PS0i = R127i.y;
// 3
backupReg0i = R127i.w;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),uf_blockPS6[45].y) + intBitsToFloat(PV0i.z)));
PV1i.x = R123i.x;
R126i.y = floatBitsToInt(-(intBitsToFloat(R1i.x)) + intBitsToFloat(R126i.w));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),uf_blockPS6[43].y) + intBitsToFloat(PV0i.y)));
PV1i.z = R123i.z;
R127i.w = floatBitsToInt(-(intBitsToFloat(backupReg0i)));
R126i.x = floatBitsToInt(-(intBitsToFloat(R1i.y)) + intBitsToFloat(R125i.w));
PS1i = R126i.x;
// 4
backupReg0i = R127i.x;
R127i.x = floatBitsToInt(-(intBitsToFloat(R1i.z)) + intBitsToFloat(backupReg0i));
R125i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.z),uf_blockPS6[45].z) + intBitsToFloat(PV1i.x)));
R125i.z = floatBitsToInt(-(intBitsToFloat(R1i.x)) + intBitsToFloat(R124i.w));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.z),uf_blockPS6[43].z) + intBitsToFloat(PV1i.z)));
PV0i.w = R123i.w;
R127i.z = floatBitsToInt(-(intBitsToFloat(R1i.y)) + intBitsToFloat(R127i.y));
PS0i = R127i.z;
// 5
R9i.x = floatBitsToInt(uf_blockPS6[43].w + intBitsToFloat(PV0i.w));
PV1i.x = R9i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), uf_blockPS6[44].x));
R126i.z = floatBitsToInt(-(intBitsToFloat(R1i.z)) + intBitsToFloat(R127i.w));
PV1i.z = R126i.z;
R4i.w = floatBitsToInt((intBitsToFloat(R3i.y) * 2.0 + -(1.0)));
R5i.z = floatBitsToInt((intBitsToFloat(R3i.z) * 2.0 + -(1.0)));
PS1i = R5i.z;
// 6
R3i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),uf_blockPS6[39].z) + -(uf_blockPS6[39].x)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.x), intBitsToFloat(PV1i.z)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(R127i.z)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(R125i.z)));
R2i.y = floatBitsToInt(intBitsToFloat(R3i.w) * intBitsToFloat(0x437f0000));
PS0i = R2i.y;
// 7
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),uf_blockPS6[44].y) + intBitsToFloat(R127i.y)));
PV1i.x = R123i.x;
R0i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R126i.z)),intBitsToFloat(R126i.y)) + intBitsToFloat(PV0i.w)));
R4i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R125i.z)),intBitsToFloat(R126i.x)) + intBitsToFloat(PV0i.z)));
R5i.w = 0x3f800000;
R4i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.z)),intBitsToFloat(R127i.x)) + intBitsToFloat(PV0i.y)));
PS1i = R4i.x;
// 8
R2i.x = floatBitsToInt((-(intBitsToFloat(R1i.z)) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(0xc0600000)));
R2i.x = clampFI32(R2i.x);
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(R1i.z)));
R0i.z = floatBitsToInt(-(intBitsToFloat(R1i.z)) * intBitsToFloat(0x3d4ccccd));
PV0i.z = R0i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.z),uf_blockPS6[44].z) + intBitsToFloat(PV1i.x)));
PV0i.w = R123i.w;
R10i.x = floatBitsToInt(uf_blockPS1[0].y);
PS0i = R10i.x;
// 9
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R1i.y)) + intBitsToFloat(PV0i.y)));
PV1i.x = R123i.x;
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.z), intBitsToFloat(R5i.z)));
R15i.z = floatBitsToInt(uf_blockPS6[44].w + intBitsToFloat(PV0i.w));
PV1i.z = R15i.z;
R0i.w = floatBitsToInt((-(uf_blockPS6[53].w) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(PV0i.z)));
R0i.w = clampFI32(R0i.w);
R9i.w = R13i.x;
R9i.w = clampFI32(R9i.w);
PS1i = R9i.w;
// 10
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R1i.x)) + intBitsToFloat(PV1i.x)));
PV0i.x = R123i.x;
R12i.y = PV1i.z;
PV0i.y = R12i.y;
R9i.z = floatBitsToInt(uf_blockPS6[45].w + intBitsToFloat(R125i.y));
PV0i.z = R9i.z;
R6i.w = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R1i.z)), uf_blockPS1[17].y));
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.w),intBitsToFloat(R4i.w)) + intBitsToFloat(PV1i.y)));
PS0i = R122i.x;
// 11
R0i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.x),intBitsToFloat(R5i.x)) + intBitsToFloat(PS0i)));
R3i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),uf_blockPS6[39].z) + -(uf_blockPS6[39].y)));
R2i.z = floatBitsToInt(-(intBitsToFloat(PV0i.y)) + uf_blockPS6[39].w);
R3i.w = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R4i.z)), -(intBitsToFloat(R4i.z))));
R2i.w = floatBitsToInt(sqrt(intBitsToFloat(PV0i.x)));
PS1i = R2i.w;
}
if( activeMaskStackC[1] == true ) {
R3i.z = floatBitsToInt(textureLod(textureUnitPS11, intBitsToFloat(R3i.xy),0.0).x);
}
if( activeMaskStackC[1] == true ) {
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R0i.y)),-(intBitsToFloat(R0i.y))) + intBitsToFloat(R3i.w)));
PV0i.x = R123i.x;
R125i.y = floatBitsToInt(uf_blockPS10[2].z + 1.0);
R123i.w = floatBitsToInt((mul_nonIEEE(-(uf_blockPS6[39].w),intBitsToFloat(R3i.z)) + intBitsToFloat(R2i.z)));
PV0i.w = R123i.w;
PS0i = floatBitsToInt(1.0 / intBitsToFloat(R2i.w));
// 1
R11i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(PS0i)));
R11i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), intBitsToFloat(PS0i)));
PV1i.y = R11i.y;
R127i.z = floatBitsToInt(intBitsToFloat(PV0i.w) * 0.25);
R127i.z = clampFI32(R127i.z);
PV1i.z = R127i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R4i.x)),-(intBitsToFloat(R4i.x))) + intBitsToFloat(PV0i.x)));
R10i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(PS0i)));
PS1i = R10i.z;
// 2
PV0i.x = floatBitsToInt(-(intBitsToFloat(PV1i.z)) + 1.0);
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.y)),intBitsToFloat(PV1i.y)) + 1.0));
PV0i.y = R123i.y;
R16i.z = floatBitsToInt(-(intBitsToFloat(R0i.w)) + intBitsToFloat(R125i.y));
R16i.z = clampFI32(R16i.z);
R11i.z = floatBitsToInt((-(uf_blockPS6[53].z) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(R0i.z)));
R11i.z = clampFI32(R11i.z);
PS0i = R11i.z;
// 3
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.z)),intBitsToFloat(PV0i.x)) + intBitsToFloat(PV0i.x)));
PV1i.y = R123i.y;
R17i.z = floatBitsToInt(intBitsToFloat(R2i.x) + uf_blockPS10[3].y);
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.y));
R0i.z = floatBitsToInt(tempResultf);
PS1i = R0i.z;
// 4
R10i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.z)),intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.y)));
PV0i.w = R10i.w;
PS0i = int(intBitsToFloat(R2i.y));
// 5
PV1i.w = PS0i & int(1);
R11i.w = floatBitsToInt(-(intBitsToFloat(PV0i.w)) + 1.0);
PS1i = R11i.w;
// 6
R12i.z = ((PV1i.w == 0)?(0):(0x3f800000));
tempResultf = 1.0 / sqrt(intBitsToFloat(R0i.x));
PS0i = floatBitsToInt(tempResultf);
// 7
R3i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.x), intBitsToFloat(PS0i)));
R4i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.w), intBitsToFloat(PS0i)));
R13i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.z), intBitsToFloat(PS0i)));
R4i.w = floatBitsToInt(uf_blockPS10[2].w);
tempResultf = 1.0 / sqrt(intBitsToFloat(R127i.w));
R2i.w = floatBitsToInt(tempResultf);
PS1i = R2i.w;
}
if( activeMaskStackC[1] == true ) {
activeMaskStack[1] = activeMaskStack[0];
activeMaskStackC[2] = activeMaskStackC[1];
// 0
R5i.x = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].x, intBitsToFloat(R4i.w)));
PV0i.x = R5i.x;
R5i.y = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].y, intBitsToFloat(R4i.w)));
PV0i.y = R5i.y;
R14i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].z, intBitsToFloat(R4i.w)));
PV0i.z = R14i.z;
R0i.w = 0;
// 1
R127i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.y)),intBitsToFloat(PV0i.y)) + 1.0));
R2i.y = PV0i.z;
PV1i.y = R2i.y;
R2i.z = 0;
PV1i.z = R2i.z;
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R10i.z), intBitsToFloat(PV0i.z)));
R0i.x = PV0i.x;
PS1i = R0i.x;
// 2
R126i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R11i.x),intBitsToFloat(R10i.z),intBitsToFloat(R10i.z),-0.0),vec4(intBitsToFloat(PS1i),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = R126i.x;
PV0i.y = R126i.x;
PV0i.z = R126i.x;
PV0i.w = R126i.x;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R11i.y),intBitsToFloat(R5i.y)) + intBitsToFloat(PV1i.w)));
PS0i = R122i.x;
// 3
R10i.y = floatBitsToInt(uf_blockPS1[1].y);
R18i.z = floatBitsToInt(uf_blockPS1[2].y);
R12i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R11i.x),intBitsToFloat(R5i.x)) + intBitsToFloat(PS0i)));
tempResultf = 1.0 / sqrt(intBitsToFloat(R127i.x));
PS1i = floatBitsToInt(tempResultf);
// 4
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS1i), intBitsToFloat(R0i.z)));
// 5
R9i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R126i.x)));
// 6
predResult = (1.0 > intBitsToFloat(R11i.z));
activeMaskStack[1] = predResult;
activeMaskStackC[2] = predResult == true && activeMaskStackC[1] == true;
}
else {
activeMaskStack[1] = false;
activeMaskStackC[2] = false;
}
if( activeMaskStackC[2] == true ) {
// 0
PV0i.x = floatBitsToInt(intBitsToFloat(R3i.x) * 1.5);
R127i.y = ((-(intBitsToFloat(R1i.z)) > uf_blockPS1[58].y)?int(0xFFFFFFFF):int(0x0));
PV0i.z = ((-(intBitsToFloat(R1i.z)) > uf_blockPS1[58].x)?int(0xFFFFFFFF):int(0x0));
PV0i.w = floatBitsToInt(intBitsToFloat(R4i.y) * 1.5);
PS0i = floatBitsToInt(intBitsToFloat(R13i.z) * 1.5);
// 1
backupReg0i = R2i.w;
PV1i.x = PV0i.z & int(1);
R2i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R4i.x)),intBitsToFloat(R2i.w)) + intBitsToFloat(PV0i.x)));
R2i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R0i.y)),intBitsToFloat(R2i.w)) + intBitsToFloat(PV0i.w)));
R2i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R4i.z)),intBitsToFloat(backupReg0i)) + intBitsToFloat(PS0i)));
PV1i.w = R2i.w;
R122i.x = floatBitsToInt((intBitsToFloat(R6i.w) * 0.25 + 1.0));
PS1i = R122i.x;
// 2
R2i.x = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i));
R3i.y = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i));
R5i.z = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i));
R4i.w = PV1i.x - R127i.y;
PV0i.w = R4i.w;
PS0i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.w)));
// 3
PV1i.x = PV0i.w << 0x00000002;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R18i.z), intBitsToFloat(R13i.z)));
R4i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R13i.z), -(intBitsToFloat(R0i.w))));
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.z),intBitsToFloat(R2i.z)) + intBitsToFloat(PS0i)));
PS1i = R122i.x;
// 4
R0i.x = PV1i.x + 0x0000002d;
R0i.y = PV1i.x + 0x0000002b;
R0i.z = PV1i.x + 0x0000002c;
R0i.w = PV1i.x + 0x0000002a;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.y),intBitsToFloat(R2i.y)) + intBitsToFloat(PS1i)));
PS0i = R122i.x;
// 5
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R10i.x),intBitsToFloat(R10i.y),intBitsToFloat(R127i.y),-0.0),vec4(intBitsToFloat(R3i.x),intBitsToFloat(R4i.y),1.0,0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R3i.z = tempi.x;
tempResultf = 1.0 / sqrt(intBitsToFloat(PS0i));
R3i.w = floatBitsToInt(tempResultf);
PS1i = R3i.w;
}
if( activeMaskStackC[2] == true ) {
R6i.xyzw = floatBitsToInt(uf_blockPS1[R0i.x].xyzw);
R7i.xyzw = floatBitsToInt(uf_blockPS1[R0i.z].xyzw);
R8i.xyzw = floatBitsToInt(uf_blockPS1[R0i.w].xyzw);
R0i.xyzw = floatBitsToInt(uf_blockPS1[R0i.y].xyzw);
}
if( activeMaskStackC[2] == true ) {
// 0
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R3i.w)));
PV0i.x = R127i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(R3i.w)));
PV0i.y = R127i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.w), intBitsToFloat(R3i.w)));
PV0i.z = R127i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R10i.x)),intBitsToFloat(R3i.z)) + intBitsToFloat(R3i.x)));
PV0i.w = R123i.w;
R126i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R10i.y)),intBitsToFloat(R3i.z)) + intBitsToFloat(R4i.y)));
PS0i = R126i.w;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R5i.y),intBitsToFloat(R14i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R126i.y = tempi.x;
R126i.z = floatBitsToInt((intBitsToFloat(PV0i.w) * intBitsToFloat(0x3f19999a) + intBitsToFloat(R1i.x)));
PS1i = R126i.z;
// 2
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R5i.y)),intBitsToFloat(PV1i.x)) + intBitsToFloat(R127i.y)));
R125i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R18i.z)),intBitsToFloat(R3i.z)) + intBitsToFloat(R13i.z)));
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R5i.x)),intBitsToFloat(PV1i.x)) + intBitsToFloat(backupReg0i)));
PV0i.z = R123i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.x)),intBitsToFloat(PV1i.x)) + 1.0));
R127i.y = floatBitsToInt(float(R4i.w));
PS0i = R127i.y;
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R4i.y),intBitsToFloat(R13i.z),intBitsToFloat(R4i.z)),vec4(-(intBitsToFloat(R5i.x)),-(intBitsToFloat(R5i.y)),-(intBitsToFloat(R14i.z)),1.0)));
tempi.x = clampFI32(tempi.x);
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R2i.x)));
PS1i = R124i.y;
// 4
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((intBitsToFloat(R126i.w) * intBitsToFloat(0x3f19999a) + intBitsToFloat(R1i.y)));
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R14i.z)),intBitsToFloat(R126i.y)) + intBitsToFloat(R127i.z)));
PV0i.y = R123i.y;
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PV1i.x)));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R5i.z)));
R5i.z = floatBitsToInt(roundEven(intBitsToFloat(R127i.y)));
PS0i = R5i.z;
// 5
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R12i.z), intBitsToFloat(PV0i.z)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(R3i.y)));
R123i.w = floatBitsToInt((intBitsToFloat(R125i.y) * intBitsToFloat(0x3f19999a) + intBitsToFloat(R1i.z)));
PV1i.w = R123i.w;
// 6
R1i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.y),intBitsToFloat(PV1i.y)) + intBitsToFloat(R126i.z)));
PV0i.x = R1i.x;
R1i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),intBitsToFloat(PV1i.y)) + intBitsToFloat(R127i.x)));
R12i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.w)));
// 7
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R7i.x)));
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R8i.x)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R6i.x)));
// 8
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R7i.y)) + intBitsToFloat(PV1i.x)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R6i.y)) + intBitsToFloat(PV1i.w)));
PV0i.y = R123i.y;
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(R0i.x)));
// 9
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R7i.z)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R8i.y)) + intBitsToFloat(R124i.y)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R6i.z)) + intBitsToFloat(PV0i.y)));
PV1i.z = R123i.z;
// 10
PV0i.x = floatBitsToInt(intBitsToFloat(R6i.w) + intBitsToFloat(PV1i.z));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R0i.y)) + intBitsToFloat(R127i.w)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R8i.z)) + intBitsToFloat(PV1i.y)));
PV0i.z = R123i.z;
R127i.w = floatBitsToInt(intBitsToFloat(R7i.w) + intBitsToFloat(PV1i.x));
// 11
PV1i.x = floatBitsToInt(intBitsToFloat(R8i.w) + intBitsToFloat(PV0i.z));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R0i.z)) + intBitsToFloat(PV0i.y)));
PV1i.z = R123i.z;
R126i.w = floatBitsToInt(1.0 / intBitsToFloat(PV0i.x));
PS1i = R126i.w;
// 12
PV0i.x = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(PV1i.z));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PS1i)));
R5i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(PS1i)));
PS0i = R5i.x;
// 13
R5i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R126i.w)));
R5i.w = floatBitsToInt(intBitsToFloat(PV0i.z) + intBitsToFloat(0xbb03126f));
R5i.w = clampFI32(R5i.w);
}
if( activeMaskStackC[2] == true ) {
R6i.y = floatBitsToInt(textureShadow_1(textureUnitPS7, vec4(intBitsToFloat(R5i.x),intBitsToFloat(R5i.y),intBitsToFloat(R5i.z),intBitsToFloat(R5i.w))));
}
if( activeMaskStackC[2] == true ) {
activeMaskStack[2] = activeMaskStack[1];
activeMaskStackC[3] = activeMaskStackC[2];
// 0
PV0i.x = ((1.0 > intBitsToFloat(R6i.y))?int(0xFFFFFFFF):int(0x0));
// 1
R0i.w = ((R4i.w > 0)?(PV0i.x):(0));
// 2
predResult = (R0i.w != 0);
activeMaskStack[2] = predResult;
activeMaskStackC[3] = predResult == true && activeMaskStackC[2] == true;
}
else {
activeMaskStack[2] = false;
activeMaskStackC[3] = false;
}
if( activeMaskStackC[3] == true ) {
// 0
PV0i.z = int(-1) + R4i.w;
// 1
PV1i.y = PV0i.z << 0x00000002;
PS1i = floatBitsToInt(float(PV0i.z));
// 2
R0i.x = PV1i.y + 0x0000002a;
R0i.y = PV1i.y + 0x0000002d;
R0i.z = PV1i.y + 0x0000002c;
R0i.w = PV1i.y + 0x0000002b;
R5i.z = floatBitsToInt(roundEven(intBitsToFloat(PS1i)));
PS0i = R5i.z;
}
if( activeMaskStackC[3] == true ) {
R2i.xyzw = floatBitsToInt(uf_blockPS1[R0i.y].xyzw);
R3i.xyzw = floatBitsToInt(uf_blockPS1[R0i.z].xyzw);
R4i.xyzw = floatBitsToInt(uf_blockPS1[R0i.x].xyzw);
R0i.xyzw = floatBitsToInt(uf_blockPS1[R0i.w].xyzw);
}
if( activeMaskStackC[3] == true ) {
// 0
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(R2i.x)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(R3i.x)));
// 1
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R3i.y)) + intBitsToFloat(PV0i.y)));
PV1i.x = R123i.x;
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(R4i.x)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(R0i.x)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R2i.y)) + intBitsToFloat(PV0i.x)));
PV1i.w = R123i.w;
// 2
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R0i.y)) + intBitsToFloat(PV1i.z)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R3i.z)) + intBitsToFloat(PV1i.x)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R2i.z)) + intBitsToFloat(PV1i.w)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R4i.y)) + intBitsToFloat(PV1i.y)));
PV0i.w = R123i.w;
// 3
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R0i.z)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
R127i.y = floatBitsToInt(intBitsToFloat(R3i.w) + intBitsToFloat(PV0i.y));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R4i.z)) + intBitsToFloat(PV0i.w)));
PV1i.z = R123i.z;
PV1i.w = floatBitsToInt(intBitsToFloat(R2i.w) + intBitsToFloat(PV0i.z));
// 4
PV0i.x = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(PV1i.x));
PV0i.y = floatBitsToInt(intBitsToFloat(R4i.w) + intBitsToFloat(PV1i.z));
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.w));
// 5
R5i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(PS0i)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS0i)));
R5i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PS0i)));
PS1i = R5i.y;
// 6
R5i.w = floatBitsToInt(intBitsToFloat(PV1i.y) + intBitsToFloat(0xbb03126f));
R5i.w = clampFI32(R5i.w);
}
if( activeMaskStackC[3] == true ) {
R5i.x = floatBitsToInt(textureShadow_2(textureUnitPS7, vec4(intBitsToFloat(R5i.x),intBitsToFloat(R5i.y),intBitsToFloat(R5i.z),intBitsToFloat(R5i.w))));
}
if( activeMaskStackC[3] == true ) {
// 0
backupReg0i = R6i.y;
R6i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R5i.x)));
}
activeMaskStackC[2] = activeMaskStack[1] == true && activeMaskStackC[1] == true;
if( activeMaskStackC[2] == true ) {
// 0
PV0i.x = floatBitsToInt(-(intBitsToFloat(R6i.y)) + 1.0);
// 1
R5i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R11i.z)) + intBitsToFloat(R6i.y)));
}
activeMaskStackC[1] = activeMaskStack[0] == true && activeMaskStackC[0] == true;
if( activeMaskStackC[1] == true ) {
// 0
R0i.x = floatBitsToInt(intBitsToFloat(R9i.x) * intBitsToFloat(0x3a83126f));
R0i.y = floatBitsToInt(intBitsToFloat(R9i.z) * intBitsToFloat(0x3a83126f));
R127i.z = floatBitsToInt(intBitsToFloat(R12i.w) + -(intBitsToFloat(R9i.y)));
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R1i.z)),uf_blockPS6[26].x) + -(uf_blockPS6[26].y)));
R123i.w = clampFI32(R123i.w);
PV0i.w = R123i.w;
R1i.x = floatBitsToInt((intBitsToFloat(R9i.x) * intBitsToFloat(0x38d1b717) + 0.5));
PS0i = R1i.x;
// 1
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.w)) + 1.0);
R1i.y = floatBitsToInt((intBitsToFloat(R9i.z) * intBitsToFloat(0x3903126f) + 0.5));
R126i.z = floatBitsToInt(-(uf_blockPS6[27].w) + 1.0);
R2i.w = 0x3f800000;
R3i.w = floatBitsToInt(-(intBitsToFloat(R1i.z)) * intBitsToFloat(0x3ba3d70a));
PS1i = R3i.w;
// 2
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(PV1i.x)) + intBitsToFloat(R9i.y)));
PV0i.x = R123i.x;
PV0i.y = floatBitsToInt(intBitsToFloat(R1i.w) + intBitsToFloat(0xbe99999a));
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R1i.z)),uf_blockPS6[28].x) + -(uf_blockPS6[28].y)));
R123i.z = clampFI32(R123i.z);
PV0i.z = R123i.z;
R0i.w = floatBitsToInt((intBitsToFloat(0xbf59999a) * intBitsToFloat(R13i.y) + 1.0));
tempResultf = log2(intBitsToFloat(PV1i.x));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS0i = floatBitsToInt(tempResultf);
// 3
R127i.x = floatBitsToInt(-(intBitsToFloat(PV0i.z)) + 1.0);
PV1i.y = floatBitsToInt(mul_nonIEEE(uf_blockPS6[27].y, intBitsToFloat(PS0i)));
PV1i.z = floatBitsToInt(max(-(intBitsToFloat(PV0i.x)), intBitsToFloat(0xbf7d70a4)));
PV1i.z = floatBitsToInt(intBitsToFloat(PV1i.z) / 2.0);
R126i.w = floatBitsToInt(mul_nonIEEE(uf_blockPS6[27].x, intBitsToFloat(PS0i)));
R127i.y = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x40200001));
R127i.y = clampFI32(R127i.y);
PS1i = R127i.y;
// 4
PV0i.x = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x3dcccccd));
R123i.y = floatBitsToInt((-(intBitsToFloat(R1i.z)) * intBitsToFloat(0x3ba3d70a) + intBitsToFloat(0xbfe66666)));
PV0i.y = R123i.y;
R0i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R1i.z)),uf_blockPS6[18].x) + uf_blockPS6[17].w));
R0i.z = clampFI32(R0i.z);
R127i.w = floatBitsToInt(intBitsToFloat(PV1i.z) + 0.5);
PV0i.w = R127i.w;
PS0i = floatBitsToInt(exp2(intBitsToFloat(PV1i.y)));
// 5
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.w)) + 1.0);
R123i.y = floatBitsToInt((intBitsToFloat(PV0i.w) * intBitsToFloat(0xbc996e30) + intBitsToFloat(0x3d981626)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),intBitsToFloat(PS0i)) + uf_blockPS6[27].w)/2.0);
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(PV0i.y)) + intBitsToFloat(PV0i.y)));
R123i.w = clampFI32(R123i.w);
PV1i.w = R123i.w;
tempResultf = log2(intBitsToFloat(R127i.x));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1i = floatBitsToInt(tempResultf);
// 6
R127i.x = floatBitsToInt((intBitsToFloat(R127i.y) * intBitsToFloat(0x3dcccccd) + intBitsToFloat(PV1i.w)));
PV0i.x = R127i.x;
R2i.y = floatBitsToInt(intBitsToFloat(PV1i.z) + 0.5);
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),intBitsToFloat(PV1i.y)) + intBitsToFloat(0xbe593484)));
PV0i.z = R123i.z;
R125i.w = floatBitsToInt(mul_nonIEEE(uf_blockPS6[29].x, intBitsToFloat(PS1i)));
PS0i = floatBitsToInt(sqrt(intBitsToFloat(PV1i.x)));
// 7
PV1i.x = floatBitsToInt(intBitsToFloat(PS0i) * intBitsToFloat(0x3f22f983));
R127i.y = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + 1.0);
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R18i.z), intBitsToFloat(R10i.z)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),intBitsToFloat(PV0i.z)) + intBitsToFloat(0x3fc90da4)));
PV1i.w = R123i.w;
R125i.z = floatBitsToInt(exp2(intBitsToFloat(R126i.w)));
PS1i = R125i.z;
// 8
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.x),intBitsToFloat(R12i.y),intBitsToFloat(R9i.z),intBitsToFloat(R2i.w)),vec4(uf_blockPS1[37].x,uf_blockPS1[37].y,uf_blockPS1[37].z,uf_blockPS1[37].w)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R2i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),-(intBitsToFloat(PV1i.w))) + 1.0));
PS0i = R2i.x;
// 9
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.x),intBitsToFloat(R12i.y),intBitsToFloat(R9i.z),intBitsToFloat(R2i.w)),vec4(uf_blockPS1[35].x,uf_blockPS1[35].y,uf_blockPS1[35].z,uf_blockPS1[35].w)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R126i.z = floatBitsToInt(1.0 / intBitsToFloat(PV0i.x));
PS1i = R126i.z;
// 10
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.x),intBitsToFloat(R12i.y),intBitsToFloat(R9i.z),intBitsToFloat(R2i.w)),vec4(uf_blockPS1[36].x,uf_blockPS1[36].y,uf_blockPS1[36].z,uf_blockPS1[36].w)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R3i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(PS1i)));
PS0i = R3i.x;
// 11
R4i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.y),intBitsToFloat(R11i.y)) + intBitsToFloat(R127i.z)));
R3i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R126i.z)));
R1i.z = floatBitsToInt((mul_nonIEEE(uf_blockPS6[27].z,-(intBitsToFloat(R125i.z))) + uf_blockPS6[27].z));
R1i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(R9i.w)) + intBitsToFloat(R127i.x)));
R3i.z = floatBitsToInt(exp2(intBitsToFloat(R125i.w)));
PS1i = R3i.z;
}
if( activeMaskStackC[1] == true ) {
R0i.x = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R0i.xy)).x);
R5i.xyz = floatBitsToInt(textureLod(textureUnitPS15, intBitsToFloat(R1i.xy),0.0).xyz);
R2i.xyz = floatBitsToInt(texture(textureUnitPS10, intBitsToFloat(R2i.xy)).xyz);
R3i.w = floatBitsToInt(textureLod(textureUnitPS4, intBitsToFloat(R3i.xy),intBitsToFloat(R3i.w)).x);
}
if( activeMaskStackC[1] == true ) {
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.x),intBitsToFloat(R11i.x)) + intBitsToFloat(R4i.x)));
R123i.x = clampFI32(R123i.x);
PV0i.x = R123i.x;
R3i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R1i.w)));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(R0i.w)));
PV0i.z = R126i.z;
R2i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(R1i.w)));
tempResultf = log2(intBitsToFloat(R0i.z));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS0i = floatBitsToInt(tempResultf);
// 1
backupReg0i = R0i.x;
PV1i.x = floatBitsToInt(mul_nonIEEE(uf_blockPS6[18].y, intBitsToFloat(PS0i)));
R127i.y = floatBitsToInt(-(intBitsToFloat(PV0i.z)) + 1.0);
R0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R1i.w)));
R123i.w = floatBitsToInt((intBitsToFloat(backupReg0i) * 2.0 + -(1.0)));
PV1i.w = R123i.w;
tempResultf = log2(intBitsToFloat(PV0i.x));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1i = floatBitsToInt(tempResultf);
// 2
R127i.x = floatBitsToInt(intBitsToFloat(R3i.w) + uf_blockPS10[1].z);
R127i.x = clampFI32(R127i.x);
R6i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R11i.w),intBitsToFloat(R17i.z)) + intBitsToFloat(R10i.w)));
R6i.y = clampFI32(R6i.y);
R2i.z = floatBitsToInt((intBitsToFloat(PV1i.w) * intBitsToFloat(0x41c80000) + intBitsToFloat(R15i.z)));
PV0i.w = floatBitsToInt(mul_nonIEEE(uf_blockPS6[29].z, intBitsToFloat(PS1i)));
R125i.w = floatBitsToInt(exp2(intBitsToFloat(PV1i.x)));
PS0i = R125i.w;
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R5i.y),intBitsToFloat(R5i.z),-0.0),vec4(uf_blockPS6[42].x,uf_blockPS6[42].y,uf_blockPS6[42].z,0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
PS1i = floatBitsToInt(exp2(intBitsToFloat(PV0i.w)));
// 4
R123i.y = floatBitsToInt((mul_nonIEEE(-(uf_blockPS6[29].w),intBitsToFloat(PS1i)) + 1.0));
PV0i.y = R123i.y;
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.w), uf_blockPS6[16].w));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(PV1i.x)));
R6i.w = 0;
PS0i = R6i.w;
// 5
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R3i.z)),intBitsToFloat(PV0i.y)) + intBitsToFloat(PV0i.y)));
PV1i.x = R123i.x;
R5i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R13i.y), intBitsToFloat(PV0i.z)));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(PV0i.w)));
PV1i.z = R127i.z;
R4i.w = 0x3f800000;
// 6
PV0i.x = floatBitsToInt(intBitsToFloat(R5i.w) + -(intBitsToFloat(PV1i.z)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), uf_blockPS6[30].w));
// 7
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R16i.z)) + intBitsToFloat(R127i.z)));
PV1i.y = R123i.y;
R1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R0i.w)));
PV1i.w = R1i.w;
// 8
R123i.x = floatBitsToInt((mul_nonIEEE(uf_blockPS10[3].z,intBitsToFloat(PV1i.y)) + uf_blockPS10[1].y));
R123i.x = clampFI32(R123i.x);
PV0i.x = R123i.x;
R2i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),-(intBitsToFloat(PV1i.w))) + intBitsToFloat(R126i.z)));
R3i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.w)),intBitsToFloat(R127i.y)) + intBitsToFloat(R127i.y)));
// 9
R6i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PV0i.x)));
}
if( activeMaskStackC[1] == true ) {
// 0
PV0i.y = floatBitsToInt(-(intBitsToFloat(R2i.z)) + uf_blockPS6[52].x);
// 1
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),uf_blockPS6[15].x) + uf_blockPS6[14].w));
R123i.x = clampFI32(R123i.x);
PV1i.x = R123i.x;
// 2
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), uf_blockPS6[13].w));
// 3
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R0i.w)));
// 4
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(R3i.w)));
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.y)),intBitsToFloat(R3i.w)) + intBitsToFloat(R3i.w)));
PV0i.z = R123i.z;
// 5
PV1i.x = floatBitsToInt(mul_nonIEEE(uf_blockPS6[13].z, intBitsToFloat(PV0i.x)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.y), intBitsToFloat(PV0i.z)));
PV1i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS6[13].y, intBitsToFloat(PV0i.x)));
PV1i.w = floatBitsToInt(mul_nonIEEE(uf_blockPS6[13].x, intBitsToFloat(PV0i.x)));
R6i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R5i.y)),intBitsToFloat(PV0i.z)) + intBitsToFloat(PV0i.z)));
PS1i = R6i.z;
// 6
R123i.x = floatBitsToInt((mul_nonIEEE(uf_blockPS6[16].x,intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.w)));
PV0i.x = R123i.x;
R123i.z = floatBitsToInt((mul_nonIEEE(uf_blockPS6[16].z,intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.x)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(uf_blockPS6[16].y,intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.z)));
PV0i.w = R123i.w;
// 7
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.z),intBitsToFloat(R2i.y)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.w),intBitsToFloat(R2i.y)) + intBitsToFloat(PV0i.z)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.y),intBitsToFloat(R2i.y)) + intBitsToFloat(PV0i.w)));
PV1i.w = R123i.w;
// 8
R4i.x = floatBitsToInt((mul_nonIEEE(uf_blockPS6[30].x,intBitsToFloat(R1i.w)) + intBitsToFloat(PV1i.x)));
PV0i.x = R4i.x;
R4i.y = floatBitsToInt((mul_nonIEEE(uf_blockPS6[30].y,intBitsToFloat(R1i.w)) + intBitsToFloat(PV1i.w)));
PV0i.y = R4i.y;
R4i.z = floatBitsToInt((mul_nonIEEE(uf_blockPS6[30].z,intBitsToFloat(R1i.w)) + intBitsToFloat(PV1i.z)));
PV0i.z = R4i.z;
// 9
R1i.xyz = ivec3(PV0i.x,PV0i.y,PV0i.z);
R1i.w = R4i.w;
// 10
R0i.xyz = ivec3(R6i.x,R6i.y,R6i.z);
R0i.w = R6i.w;
}
// export
passPixelColor0 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), intBitsToFloat(R0i.w));
passPixelColor1 = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w));
}

View File

@ -0,0 +1,723 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 a73d770e3204e2e6
UNIFORM_BUFFER_LAYOUT(33, 1, 10) uniform uniformBlockPS1
{
vec4 uf_blockPS1[1024];
};
UNIFORM_BUFFER_LAYOUT(38, 1, 11) uniform uniformBlockPS6
{
vec4 uf_blockPS6[1024];
};
UNIFORM_BUFFER_LAYOUT(42, 1, 12) uniform uniformBlockPS10
{
vec4 uf_blockPS10[1024];
};
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
TEXTURE_LAYOUT(1, 1, 1) uniform sampler2D textureUnitPS1;
TEXTURE_LAYOUT(2, 1, 2) uniform sampler2D textureUnitPS2;
TEXTURE_LAYOUT(4, 1, 3) uniform sampler2D textureUnitPS4;
TEXTURE_LAYOUT(5, 1, 4) uniform sampler2D textureUnitPS5;
TEXTURE_LAYOUT(6, 1, 5) uniform sampler2DArray textureUnitPS6;
TEXTURE_LAYOUT(9, 1, 6) uniform sampler2D textureUnitPS9;
TEXTURE_LAYOUT(12, 1, 7) uniform sampler2D textureUnitPS12;
TEXTURE_LAYOUT(13, 1, 8) uniform sampler2D textureUnitPS13;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem2;
layout(location = 2) in vec4 passParameterSem5;
layout(location = 3) in vec4 passParameterSem6;
layout(location = 0) out vec4 passPixelColor0;
layout(location = 1) out vec4 passPixelColor1;
layout(location = 2) out vec4 passPixelColor2;
#ifdef VULKAN
layout(set = 1, binding = 9) uniform ufBlock
{
uniform vec4 uf_fragCoordScale;
};
#else
uniform vec2 uf_fragCoordScale;
#endif
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; }
float textureShadow_1(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
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;
bool activeMaskStack[2];
bool activeMaskStackC[3];
activeMaskStack[0] = false;
activeMaskStackC[0] = false;
activeMaskStackC[1] = false;
activeMaskStack[0] = true;
activeMaskStackC[0] = true;
activeMaskStackC[1] = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem2);
R2i = floatBitsToInt(passParameterSem5);
R3i = floatBitsToInt(passParameterSem6);
if( activeMaskStackC[1] == true ) {
R4i.w = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.xy)).x);
R5i.x = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.xy)).x);
R5i.z = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.zw)).x);
R5i.w = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.xy)).x);
R6i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R3i.zw)).xyzw);
R3i.z = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R3i.zw)).w);
R7i.xy = floatBitsToInt(texture(textureUnitPS12, intBitsToFloat(R0i.xy)).xy);
}
if( activeMaskStackC[1] == true ) {
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R5i.w)) + uf_blockPS1[14].x));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.w),uf_blockPS1[16].x) + uf_blockPS1[14].x));
PV0i.y = R123i.y;
R127i.z = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R5i.x)) + uf_blockPS1[14].x));
R127i.w = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R5i.z)) + uf_blockPS1[14].x));
R5i.x = floatBitsToInt((intBitsToFloat(R6i.x) * 2.0 + -(1.0)));
PS0i = R5i.x;
// 1
R1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(PV0i.y))));
PV1i.x = R1i.x;
R1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), -(intBitsToFloat(PV0i.y))));
PV1i.y = R1i.y;
R8i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)));
PV1i.z = R8i.z;
R124i.w = floatBitsToInt((intBitsToFloat(R6i.y) * 2.0 + -(1.0)));
R124i.z = floatBitsToInt((intBitsToFloat(R6i.z) * 2.0 + -(1.0)));
PS1i = R124i.z;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), -(intBitsToFloat(R127i.w))));
PS0i = R127i.y;
// 3
R127i.x = floatBitsToInt(-(intBitsToFloat(R127i.w)));
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.w), -(intBitsToFloat(R127i.z))));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), -(intBitsToFloat(R127i.z))));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), -(intBitsToFloat(R127i.w))));
PS1i = floatBitsToInt(sqrt(intBitsToFloat(PV0i.x)));
// 4
backupReg0i = R127i.z;
R125i.x = floatBitsToInt(intBitsToFloat(R3i.z) * intBitsToFloat(0x437f0000));
R125i.y = floatBitsToInt(-(intBitsToFloat(R1i.x)) + intBitsToFloat(R127i.y));
R127i.z = floatBitsToInt(-(intBitsToFloat(R1i.y)) + intBitsToFloat(PV1i.w));
R127i.w = floatBitsToInt(-(intBitsToFloat(backupReg0i)));
R126i.w = floatBitsToInt(1.0 / intBitsToFloat(PS1i));
PS0i = R126i.w;
// 5
R124i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R124i.w),intBitsToFloat(R124i.z),-0.0),vec4(intBitsToFloat(R5i.x),intBitsToFloat(R124i.w),intBitsToFloat(R124i.z),0.0)));
PV1i.x = R124i.x;
PV1i.y = R124i.x;
PV1i.z = R124i.x;
PV1i.w = R124i.x;
R127i.y = floatBitsToInt(-(intBitsToFloat(R8i.z)) + intBitsToFloat(R127i.x));
PS1i = R127i.y;
// 6
backupReg0i = R126i.z;
R127i.x = floatBitsToInt(-(intBitsToFloat(R1i.y)) + intBitsToFloat(R126i.y));
PV0i.x = R127i.x;
R8i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), intBitsToFloat(R126i.w)));
PV0i.y = R8i.y;
R126i.z = floatBitsToInt(-(intBitsToFloat(R8i.z)) + intBitsToFloat(R127i.w));
PV0i.z = R126i.z;
R125i.w = floatBitsToInt(-(intBitsToFloat(R1i.x)) + intBitsToFloat(backupReg0i));
PV0i.w = R125i.w;
R8i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(R126i.w)));
PS0i = R8i.x;
// 7
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PV0i.z)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), uf_blockPS6[44].x));
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(PV0i.x)));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PV0i.w)));
R2i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.y)),intBitsToFloat(PV0i.y)) + 1.0));
PS1i = R2i.w;
// 8
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),uf_blockPS6[44].y) + intBitsToFloat(PV1i.y)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), uf_blockPS6[43].x));
R9i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.z), intBitsToFloat(R126i.w)));
R126i.w = floatBitsToInt(-(intBitsToFloat(R8i.z)) * intBitsToFloat(0x3d4ccccd));
R0i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(R127i.y)) + intBitsToFloat(PV1i.x)));
PS0i = R0i.x;
// 9
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),uf_blockPS6[43].y) + intBitsToFloat(PV0i.y)));
R0i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R126i.z)),intBitsToFloat(R125i.y)) + intBitsToFloat(R127i.w)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), uf_blockPS6[45].x));
R5i.w = 0x3f800000;
R0i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R125i.w)),intBitsToFloat(R127i.z)) + intBitsToFloat(R125i.z)));
PS1i = R0i.z;
// 10
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),uf_blockPS6[45].y) + intBitsToFloat(PV1i.z)));
PV0i.y = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PS1i)), -(intBitsToFloat(PS1i))));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.z),uf_blockPS6[44].z) + intBitsToFloat(backupReg0i)));
R9i.x = 0;
PS0i = R9i.x;
// 11
backupReg0i = R0i.x;
backupReg0i = R0i.x;
backupReg1i = R0i.y;
backupReg1i = R0i.y;
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(backupReg0i)),-(intBitsToFloat(backupReg1i)),intBitsToFloat(PV0i.y),-0.0),vec4(-(intBitsToFloat(backupReg0i)),-(intBitsToFloat(backupReg1i)),1.0,0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R0i.w = tempi.x;
R125i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.z),uf_blockPS6[43].z) + intBitsToFloat(R126i.x)));
PS1i = R125i.w;
// 12
R125i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.z),uf_blockPS6[45].z) + intBitsToFloat(R127i.x)));
R10i.z = floatBitsToInt(uf_blockPS6[44].w + intBitsToFloat(R127i.w));
R9i.w = R7i.x;
R9i.w = clampFI32(R9i.w);
PS0i = int(intBitsToFloat(R125i.x));
// 13
backupReg0i = R126i.w;
R10i.x = floatBitsToInt(uf_blockPS1[0].y);
R2i.y = floatBitsToInt((-(uf_blockPS6[53].w) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(R126i.w)));
R2i.y = clampFI32(R2i.y);
R127i.z = PS0i & 0x0000001c;
R126i.w = PS0i & 0x00000002;
R7i.w = floatBitsToInt((-(uf_blockPS6[53].z) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(backupReg0i)));
R7i.w = clampFI32(R7i.w);
PS1i = R7i.w;
// 14
R9i.y = floatBitsToInt(uf_blockPS1[1].y);
R11i.z = floatBitsToInt(uf_blockPS1[2].y);
PS0i = floatBitsToInt(sqrt(intBitsToFloat(R124i.x)));
// 15
R11i.x = floatBitsToInt(uf_blockPS6[43].w + intBitsToFloat(R125i.w));
R10i.y = R10i.z;
R12i.z = floatBitsToInt(uf_blockPS6[45].w + intBitsToFloat(R125i.y));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PS0i));
// 16
R2i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.x), intBitsToFloat(PS1i)));
R3i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.w), intBitsToFloat(PS1i)));
R2i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(PS1i)));
tempResultf = 1.0 / sqrt(intBitsToFloat(R2i.w));
R3i.z = floatBitsToInt(tempResultf);
PS0i = R3i.z;
// 17
PS1i = floatBitsToInt(float(R127i.z));
// 18
PV0i.x = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x3d124925));
PS0i = floatBitsToInt(float(R126i.w));
PS0i = floatBitsToInt(intBitsToFloat(PS0i) / 2.0);
// 19
R5i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),-(intBitsToFloat(PS0i))) + intBitsToFloat(PV0i.x)));
tempResultf = 1.0 / sqrt(intBitsToFloat(R0i.w));
R4i.z = floatBitsToInt(tempResultf);
PS1i = R4i.z;
}
if( activeMaskStackC[1] == true ) {
activeMaskStack[1] = activeMaskStack[0];
activeMaskStackC[2] = activeMaskStackC[1];
// 0
R12i.x = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].x, uf_blockPS10[2].w));
PV0i.x = R12i.x;
R11i.y = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].y, uf_blockPS10[2].w));
PV0i.y = R11i.y;
R127i.z = floatBitsToInt(uf_blockPS10[2].z + 1.0);
// 1
R124i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.y)),intBitsToFloat(PV0i.y)) + 1.0));
R1i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].z, uf_blockPS10[2].w));
PV1i.z = R1i.z;
R0i.w = 0;
PV1i.w = R0i.w;
R3i.x = PV0i.x;
PS1i = R3i.x;
// 2
backupReg0i = R2i.y;
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.z), intBitsToFloat(PV1i.z)));
R2i.y = PV1i.z;
PV0i.y = R2i.y;
R6i.z = 0;
PV0i.z = R6i.z;
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), -(intBitsToFloat(PV1i.w))));
R7i.z = floatBitsToInt(-(intBitsToFloat(backupReg0i)) + intBitsToFloat(R127i.z));
R7i.z = clampFI32(R7i.z);
PS0i = R7i.z;
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R8i.x),intBitsToFloat(R9i.z),intBitsToFloat(R9i.z),-0.0),vec4(intBitsToFloat(R3i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R124i.w = tempi.x;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.y),intBitsToFloat(R11i.y)) + intBitsToFloat(PV0i.x)));
PS1i = R122i.x;
// 4
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R2i.x),intBitsToFloat(R3i.y),intBitsToFloat(R2i.z),intBitsToFloat(R126i.w)),vec4(-(intBitsToFloat(R12i.x)),-(intBitsToFloat(R11i.y)),-(intBitsToFloat(R1i.z)),1.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R0i.w = tempi.x;
R8i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.x),intBitsToFloat(R12i.x)) + intBitsToFloat(PS1i)));
PS0i = R8i.w;
// 5
tempResultf = 1.0 / sqrt(intBitsToFloat(R124i.x));
PS1i = floatBitsToInt(tempResultf);
// 6
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS1i), intBitsToFloat(R3i.z)));
// 7
R7i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R124i.w)));
// 8
predResult = (1.0 > intBitsToFloat(R7i.w));
activeMaskStack[1] = predResult;
activeMaskStackC[2] = predResult == true && activeMaskStackC[1] == true;
}
else {
activeMaskStack[1] = false;
activeMaskStackC[2] = false;
}
if( activeMaskStackC[2] == true ) {
// 0
PV0i.x = ((-(intBitsToFloat(R8i.z)) > uf_blockPS1[58].x)?int(0xFFFFFFFF):int(0x0));
PV0i.y = floatBitsToInt(intBitsToFloat(R2i.x) * 1.5);
R127i.z = ((-(intBitsToFloat(R8i.z)) > uf_blockPS1[58].y)?int(0xFFFFFFFF):int(0x0));
PV0i.w = floatBitsToInt(intBitsToFloat(R3i.y) * 1.5);
PS0i = floatBitsToInt(intBitsToFloat(R2i.z) * 1.5);
// 1
backupReg0i = R0i.w;
R2i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R0i.x)),intBitsToFloat(R4i.z)) + intBitsToFloat(PV0i.y)));
R2i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R0i.y)),intBitsToFloat(R4i.z)) + intBitsToFloat(PV0i.w)));
R2i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R0i.z)),intBitsToFloat(R4i.z)) + intBitsToFloat(PS0i)));
PV1i.z = R2i.z;
PV1i.w = PV0i.x & int(1);
PS1i = ((intBitsToFloat(0x3eb33333) > intBitsToFloat(backupReg0i))?int(0xFFFFFFFF):int(0x0));
// 2
R3i.x = floatBitsToInt((intBitsToFloat(R5i.z) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(0x3ac49ba6)));
R3i.y = PV1i.w - R127i.z;
PV0i.y = R3i.y;
R3i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R8i.z)),uf_blockPS1[17].y) + 1.0));
R3i.w = ((PS1i == 0)?(0x3f800000):(0));
PS0i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(PV1i.z)));
// 3
PV1i.x = PV0i.y << 0x00000002;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.y),intBitsToFloat(R2i.y)) + intBitsToFloat(PS0i)));
PS1i = R122i.x;
// 4
R0i.x = PV1i.x + 0x0000002d;
R0i.y = PV1i.x + 0x0000002b;
R0i.z = PV1i.x + 0x0000002c;
R0i.w = PV1i.x + 0x0000002a;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.x),intBitsToFloat(R2i.x)) + intBitsToFloat(PS1i)));
PS0i = R122i.x;
// 5
tempResultf = 1.0 / sqrt(intBitsToFloat(PS0i));
R2i.w = floatBitsToInt(tempResultf);
PS1i = R2i.w;
}
if( activeMaskStackC[2] == true ) {
R4i.xyzw = floatBitsToInt(uf_blockPS1[R0i.x].xyzw);
R5i.xyzw = floatBitsToInt(uf_blockPS1[R0i.z].xyzw);
R6i.xyzw = floatBitsToInt(uf_blockPS1[R0i.w].xyzw);
R0i.xyzw = floatBitsToInt(uf_blockPS1[R0i.y].xyzw);
}
if( activeMaskStackC[2] == true ) {
// 0
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R2i.w)));
PV0i.x = R127i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R2i.w)));
PV0i.y = R127i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(R2i.w)));
PV0i.z = R127i.z;
PS0i = floatBitsToInt(float(R3i.y));
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R12i.x),intBitsToFloat(R11i.y),intBitsToFloat(R1i.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;
R2i.z = floatBitsToInt(roundEven(intBitsToFloat(PS0i)));
PS1i = R2i.z;
// 2
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.x)),intBitsToFloat(PV1i.x)) + 1.0));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R11i.y)),intBitsToFloat(PV1i.x)) + intBitsToFloat(R127i.y)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R1i.z)),intBitsToFloat(PV1i.x)) + intBitsToFloat(R127i.z)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R12i.x)),intBitsToFloat(PV1i.x)) + intBitsToFloat(R127i.x)));
PV0i.w = R123i.w;
// 3
R127i.x = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x3b449ba7));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R3i.w)));
R127i.z = floatBitsToInt(intBitsToFloat(PV0i.z) * intBitsToFloat(0x3b449ba7));
R127i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * intBitsToFloat(0x3b449ba7));
// 4
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(R3i.z)));
// 5
backupReg0i = R127i.z;
backupReg1i = R127i.w;
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(PV0i.x)) + intBitsToFloat(R1i.y)));
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(PV0i.x)) + intBitsToFloat(R8i.z)));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg1i),intBitsToFloat(PV0i.x)) + intBitsToFloat(R1i.x)));
PV1i.w = R127i.w;
// 6
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R5i.x)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R6i.x)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R4i.x)));
// 7
backupReg0i = R127i.w;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.y),intBitsToFloat(R5i.y)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.y),intBitsToFloat(R4i.y)) + intBitsToFloat(PV0i.w)));
PV1i.y = R123i.y;
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R0i.x)));
// 8
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R5i.z)) + intBitsToFloat(PV1i.x)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.y),intBitsToFloat(R6i.y)) + intBitsToFloat(R127i.y)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R4i.z)) + intBitsToFloat(PV1i.y)));
PV0i.z = R123i.z;
// 9
PV1i.x = floatBitsToInt(intBitsToFloat(R4i.w) + intBitsToFloat(PV0i.z));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.y),intBitsToFloat(R0i.y)) + intBitsToFloat(R127i.w)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R6i.z)) + intBitsToFloat(PV0i.y)));
PV1i.z = R123i.z;
R127i.w = floatBitsToInt(intBitsToFloat(R5i.w) + intBitsToFloat(PV0i.x));
// 10
PV0i.x = floatBitsToInt(intBitsToFloat(R6i.w) + intBitsToFloat(PV1i.z));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R0i.z)) + intBitsToFloat(PV1i.y)));
PV0i.z = R123i.z;
R126i.w = floatBitsToInt(1.0 / intBitsToFloat(PV1i.x));
PS0i = R126i.w;
// 11
PV1i.x = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(PV0i.z));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PS0i)));
R2i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PS0i)));
PS1i = R2i.x;
// 12
R2i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(R126i.w)));
R2i.w = floatBitsToInt(-(intBitsToFloat(R3i.x)) + intBitsToFloat(PV1i.z));
R2i.w = clampFI32(R2i.w);
}
if( activeMaskStackC[2] == true ) {
R2i.y = floatBitsToInt(textureShadow_1(textureUnitPS6, vec4(intBitsToFloat(R2i.x),intBitsToFloat(R2i.y),intBitsToFloat(R2i.z),intBitsToFloat(R2i.w))));
}
if( activeMaskStackC[2] == true ) {
// 0
PV0i.x = floatBitsToInt(-(intBitsToFloat(R2i.y)) + 1.0);
// 1
R5i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R7i.w)) + intBitsToFloat(R2i.y)));
}
activeMaskStackC[1] = activeMaskStack[0] == true && activeMaskStackC[0] == true;
if( activeMaskStackC[1] == true ) {
// 0
R0i.x = floatBitsToInt(intBitsToFloat(R11i.x) * intBitsToFloat(0x3a83126f));
R0i.y = floatBitsToInt(intBitsToFloat(R12i.z) * intBitsToFloat(0x3a83126f));
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R8i.z)),uf_blockPS6[26].x) + -(uf_blockPS6[26].y)));
R123i.z = clampFI32(R123i.z);
PV0i.z = R123i.z;
R127i.w = floatBitsToInt(intBitsToFloat(R8i.w) + -(intBitsToFloat(R7i.x)));
R1i.x = floatBitsToInt((intBitsToFloat(R11i.x) * intBitsToFloat(0x38d1b717) + 0.5));
PS0i = R1i.x;
// 1
R127i.x = floatBitsToInt(-(uf_blockPS6[27].w) + 1.0);
PV1i.y = floatBitsToInt(-(intBitsToFloat(PV0i.z)) + 1.0);
R1i.z = floatBitsToInt((intBitsToFloat(R12i.z) * intBitsToFloat(0x3903126f) + 0.5));
R0i.w = 0x3f800000;
R3i.w = floatBitsToInt(-(intBitsToFloat(R8i.z)) * intBitsToFloat(0x3ba3d70a));
PS1i = R3i.w;
// 2
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R8i.z)),uf_blockPS6[28].x) + -(uf_blockPS6[28].y)));
R123i.x = clampFI32(R123i.x);
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),intBitsToFloat(PV1i.y)) + intBitsToFloat(R7i.x)));
PV0i.y = R123i.y;
PV0i.z = floatBitsToInt(intBitsToFloat(R1i.w) + intBitsToFloat(0xbe99999a));
R4i.w = floatBitsToInt((intBitsToFloat(0xbf59999a) * intBitsToFloat(R7i.y) + 1.0));
tempResultf = log2(intBitsToFloat(PV1i.y));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS0i = floatBitsToInt(tempResultf);
// 3
PV1i.x = floatBitsToInt(max(-(intBitsToFloat(PV0i.y)), intBitsToFloat(0xbf7d70a4)));
PV1i.x = floatBitsToInt(intBitsToFloat(PV1i.x) / 2.0);
R127i.y = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + 1.0);
R126i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS6[27].x, intBitsToFloat(PS0i)));
PV1i.w = floatBitsToInt(mul_nonIEEE(uf_blockPS6[27].y, intBitsToFloat(PS0i)));
R127i.w = floatBitsToInt(intBitsToFloat(PV0i.z) * intBitsToFloat(0x40200001));
R127i.w = clampFI32(R127i.w);
PS1i = R127i.w;
// 4
R5i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R8i.z)),uf_blockPS6[18].x) + uf_blockPS6[17].w));
R5i.x = clampFI32(R5i.x);
PV0i.y = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x3dcccccd));
R127i.z = floatBitsToInt(intBitsToFloat(PV1i.x) + 0.5);
PV0i.z = R127i.z;
R123i.w = floatBitsToInt((-(intBitsToFloat(R8i.z)) * intBitsToFloat(0x3ba3d70a) + intBitsToFloat(0xbfe66666)));
PV0i.w = R123i.w;
PS0i = floatBitsToInt(exp2(intBitsToFloat(PV1i.w)));
// 5
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.z)) + 1.0);
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.y)),intBitsToFloat(PV0i.w)) + intBitsToFloat(PV0i.w)));
R123i.y = clampFI32(R123i.y);
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((intBitsToFloat(PV0i.z) * intBitsToFloat(0xbc996e30) + intBitsToFloat(0x3d981626)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(PS0i)) + uf_blockPS6[27].w)/2.0);
PV1i.w = R123i.w;
tempResultf = log2(intBitsToFloat(R127i.y));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1i = floatBitsToInt(tempResultf);
// 6
R127i.x = floatBitsToInt(mul_nonIEEE(uf_blockPS6[29].x, intBitsToFloat(PS1i)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(PV1i.z)) + intBitsToFloat(0xbe593484)));
PV0i.y = R123i.y;
R2i.z = floatBitsToInt(intBitsToFloat(PV1i.w) + 0.5);
R2i.w = floatBitsToInt((intBitsToFloat(R127i.w) * intBitsToFloat(0x3dcccccd) + intBitsToFloat(PV1i.y)));
PV0i.w = R2i.w;
PS0i = floatBitsToInt(sqrt(intBitsToFloat(PV1i.x)));
// 7
PV1i.x = floatBitsToInt(intBitsToFloat(PS0i) * intBitsToFloat(0x3f22f983));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.y), intBitsToFloat(R8i.y)));
R0i.z = floatBitsToInt(-(intBitsToFloat(PV0i.w)) + 1.0);
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(PV0i.y)) + intBitsToFloat(0x3fc90da4)));
PV1i.w = R123i.w;
R126i.x = floatBitsToInt(exp2(intBitsToFloat(R126i.z)));
PS1i = R126i.x;
// 8
backupReg0i = R0i.w;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R11i.x),intBitsToFloat(R10i.y),intBitsToFloat(R12i.z),intBitsToFloat(backupReg0i)),vec4(uf_blockPS1[37].x,uf_blockPS1[37].y,uf_blockPS1[37].z,uf_blockPS1[37].w)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R2i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),-(intBitsToFloat(PV1i.w))) + 1.0));
PS0i = R2i.x;
// 9
backupReg0i = R0i.w;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R11i.x),intBitsToFloat(R10i.y),intBitsToFloat(R12i.z),intBitsToFloat(backupReg0i)),vec4(uf_blockPS1[35].x,uf_blockPS1[35].y,uf_blockPS1[35].z,uf_blockPS1[35].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;
// 10
backupReg0i = R0i.w;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R11i.x),intBitsToFloat(R10i.y),intBitsToFloat(R12i.z),intBitsToFloat(backupReg0i)),vec4(uf_blockPS1[36].x,uf_blockPS1[36].y,uf_blockPS1[36].z,uf_blockPS1[36].w)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R3i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(PS1i)));
PS0i = R3i.x;
// 11
R4i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R11i.z),intBitsToFloat(R9i.z)) + intBitsToFloat(R127i.y)));
R3i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R127i.z)));
R0i.w = floatBitsToInt((mul_nonIEEE(uf_blockPS6[27].z,-(intBitsToFloat(R126i.x))) + uf_blockPS6[27].z));
R6i.x = floatBitsToInt(exp2(intBitsToFloat(R127i.x)));
PS1i = R6i.x;
}
if( activeMaskStackC[1] == true ) {
R1i.w = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R0i.xy)).x);
R1i.xyz = floatBitsToInt(textureLod(textureUnitPS13, intBitsToFloat(R1i.xz),0.0).xyz);
R2i.xyz = floatBitsToInt(texture(textureUnitPS9, intBitsToFloat(R2i.xz)).xyz);
R3i.x = floatBitsToInt(textureLod(textureUnitPS4, intBitsToFloat(R3i.xy),intBitsToFloat(R3i.w)).x);
}
// export
passPixelColor2 = vec4(intBitsToFloat(R9i.x), intBitsToFloat(R9i.x), intBitsToFloat(R9i.x), intBitsToFloat(R9i.x));
if( activeMaskStackC[1] == true ) {
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.x),intBitsToFloat(R8i.x)) + intBitsToFloat(R4i.x)));
R123i.x = clampFI32(R123i.x);
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((intBitsToFloat(R1i.w) * 2.0 + -(1.0)));
PV0i.y = R123i.y;
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), intBitsToFloat(R4i.w)));
PV0i.z = R126i.z;
R8i.w = 0;
R7i.w = 0x3f800000;
PS0i = R7i.w;
// 1
backupReg0i = R3i.x;
R3i.x = floatBitsToInt((intBitsToFloat(PV0i.y) * intBitsToFloat(0x41c80000) + intBitsToFloat(R10i.z)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.z),intBitsToFloat(R9i.w)) + intBitsToFloat(R2i.w)));
PV1i.y = R123i.y;
R127i.z = floatBitsToInt(-(intBitsToFloat(PV0i.z)) + 1.0);
R127i.w = floatBitsToInt(intBitsToFloat(backupReg0i) + uf_blockPS10[1].z);
R127i.w = clampFI32(R127i.w);
tempResultf = log2(intBitsToFloat(PV0i.x));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1i = floatBitsToInt(tempResultf);
// 2
backupReg0i = R2i.x;
backupReg1i = R2i.y;
backupReg2i = R2i.z;
R2i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV1i.y)));
R2i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg1i), intBitsToFloat(PV1i.y)));
R2i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg2i), intBitsToFloat(PV1i.y)));
PV0i.w = floatBitsToInt(mul_nonIEEE(uf_blockPS6[29].z, intBitsToFloat(PS1i)));
tempResultf = log2(intBitsToFloat(R5i.x));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS0i = floatBitsToInt(tempResultf);
// 3
R8i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), uf_blockPS10[3].z));
PV1i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS6[18].y, intBitsToFloat(PS0i)));
PS1i = floatBitsToInt(exp2(intBitsToFloat(PV0i.w)));
// 4
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), uf_blockPS6[42].z));
R123i.w = floatBitsToInt((mul_nonIEEE(-(uf_blockPS6[29].w),intBitsToFloat(PS1i)) + 1.0));
PV0i.w = R123i.w;
PS0i = floatBitsToInt(exp2(intBitsToFloat(PV1i.z)));
// 5
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),uf_blockPS6[42].y) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS0i), uf_blockPS6[16].w));
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.x)),intBitsToFloat(PV0i.w)) + intBitsToFloat(PV0i.w)));
PV1i.z = R123i.z;
// 6
backupReg0i = R1i.x;
R1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.y), intBitsToFloat(PV1i.y)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), uf_blockPS6[30].w));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),uf_blockPS6[42].x) + intBitsToFloat(PV1i.x)));
PV0i.w = R123i.w;
// 7
R3i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(R4i.w)));
PV1i.y = R3i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(PV0i.w)));
// 8
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(PV1i.z)));
PV0i.x = R127i.x;
R1i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.y)),intBitsToFloat(R127i.z)) + intBitsToFloat(R127i.z)));
R2i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),-(intBitsToFloat(PV1i.y))) + intBitsToFloat(R126i.z)));
PS0i = R2i.w;
// 9
PV1i.y = floatBitsToInt(intBitsToFloat(R5i.w) + -(intBitsToFloat(PV0i.x)));
// 10
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(R7i.z)) + intBitsToFloat(R127i.x)));
PV0i.z = R123i.z;
// 11
R8i.x = floatBitsToInt(intBitsToFloat(PV0i.z) + uf_blockPS10[1].y);
R8i.x = clampFI32(R8i.x);
}
if( activeMaskStackC[1] == true ) {
// 0
PV0i.w = floatBitsToInt(-(intBitsToFloat(R3i.x)) + uf_blockPS6[52].x);
// 1
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.w),uf_blockPS6[15].x) + uf_blockPS6[14].w));
R123i.z = clampFI32(R123i.z);
PV1i.z = R123i.z;
// 2
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), uf_blockPS6[13].w));
// 3
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(R4i.w)));
// 4
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.w)),intBitsToFloat(R1i.y)) + intBitsToFloat(R1i.y)));
PV0i.x = R123i.x;
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R1i.y)));
// 5
PV1i.x = floatBitsToInt(mul_nonIEEE(uf_blockPS6[13].y, intBitsToFloat(PV0i.z)));
PV1i.y = floatBitsToInt(mul_nonIEEE(uf_blockPS6[13].x, intBitsToFloat(PV0i.z)));
PV1i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS6[13].z, intBitsToFloat(PV0i.z)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(PV0i.x)));
R8i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R1i.x)),intBitsToFloat(PV0i.x)) + intBitsToFloat(PV0i.x)));
PS1i = R8i.z;
// 6
R123i.x = floatBitsToInt((mul_nonIEEE(uf_blockPS6[16].z,intBitsToFloat(PV1i.w)) + intBitsToFloat(PV1i.z)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(uf_blockPS6[16].y,intBitsToFloat(PV1i.w)) + intBitsToFloat(PV1i.x)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(uf_blockPS6[16].x,intBitsToFloat(PV1i.w)) + intBitsToFloat(PV1i.y)));
PV0i.z = R123i.z;
// 7
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.z),intBitsToFloat(R2i.w)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.y),intBitsToFloat(R2i.w)) + intBitsToFloat(PV0i.y)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.x),intBitsToFloat(R2i.w)) + intBitsToFloat(PV0i.z)));
PV1i.z = R123i.z;
// 8
R7i.x = floatBitsToInt((mul_nonIEEE(uf_blockPS6[30].x,intBitsToFloat(R3i.y)) + intBitsToFloat(PV1i.z)));
PV0i.x = R7i.x;
R7i.y = floatBitsToInt((mul_nonIEEE(uf_blockPS6[30].y,intBitsToFloat(R3i.y)) + intBitsToFloat(PV1i.y)));
PV0i.y = R7i.y;
R7i.z = floatBitsToInt((mul_nonIEEE(uf_blockPS6[30].z,intBitsToFloat(R3i.y)) + intBitsToFloat(PV1i.x)));
PV0i.z = R7i.z;
// 9
R1i.xyz = ivec3(PV0i.x,PV0i.y,PV0i.z);
R1i.w = R7i.w;
// 10
R0i.xyz = ivec3(R8i.x,R8i.y,R8i.z);
R0i.w = R8i.w;
}
// export
passPixelColor0 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), intBitsToFloat(R0i.w));
passPixelColor1 = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w));
}

View File

@ -0,0 +1,797 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 ffe0e8c84f6e8da9
UNIFORM_BUFFER_LAYOUT(33, 1, 7) uniform uniformBlockPS1
{
vec4 uf_blockPS1[1024];
};
UNIFORM_BUFFER_LAYOUT(38, 1, 8) uniform uniformBlockPS6
{
vec4 uf_blockPS6[1024];
};
UNIFORM_BUFFER_LAYOUT(42, 1, 9) uniform uniformBlockPS10
{
vec4 uf_blockPS10[1024];
};
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
TEXTURE_LAYOUT(1, 1, 1) uniform sampler2D textureUnitPS1;
TEXTURE_LAYOUT(3, 1, 2) uniform sampler2D textureUnitPS3;
TEXTURE_LAYOUT(6, 1, 3) uniform sampler2D textureUnitPS6;
TEXTURE_LAYOUT(8, 1, 4) uniform sampler2DArray textureUnitPS8;
TEXTURE_LAYOUT(15, 1, 5) uniform sampler2D textureUnitPS15;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem5;
layout(location = 2) in vec4 passParameterSem6;
layout(location = 5) out vec4 passPixelColor5;
#ifdef VULKAN
layout(set = 1, binding = 6) uniform ufBlock
{
uniform vec4 uf_fragCoordScale;
};
#else
uniform vec2 uf_fragCoordScale;
#endif
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; }
float textureShadow_1(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_2(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_3(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_4(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_5(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
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 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;
bool activeMaskStack[3];
bool activeMaskStackC[4];
activeMaskStack[0] = false;
activeMaskStack[1] = false;
activeMaskStackC[0] = false;
activeMaskStackC[1] = false;
activeMaskStackC[2] = false;
activeMaskStack[0] = true;
activeMaskStackC[0] = true;
activeMaskStackC[1] = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem5);
R2i = floatBitsToInt(passParameterSem6);
if( activeMaskStackC[1] == true ) {
R3i.w = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R0i.xy)).x);
R6i.x = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R0i.xy)).x);
R6i.z = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R0i.zw)).x);
R6i.w = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R0i.xy)).x);
R4i.xyzw = floatBitsToInt(texture(textureUnitPS3, intBitsToFloat(R2i.zw)).xyzw);
R2i.xy = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R2i.xy)).xw);
}
if( activeMaskStackC[1] == true ) {
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R6i.w)) + uf_blockPS1[14].x));
PV0i.x = R123i.x;
R127i.y = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R6i.z)) + uf_blockPS1[14].x));
R127i.z = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R6i.x)) + uf_blockPS1[14].x));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.w),uf_blockPS1[16].x) + uf_blockPS1[14].x));
PV0i.w = R123i.w;
R127i.x = floatBitsToInt((intBitsToFloat(R4i.x) * 2.0 + -(1.0)));
PS0i = R127i.x;
// 1
R7i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(PV0i.w))));
R6i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), -(intBitsToFloat(PV0i.w))));
R12i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)));
R127i.w = floatBitsToInt((intBitsToFloat(R4i.y) * 2.0 + -(1.0)));
R125i.z = floatBitsToInt((intBitsToFloat(R4i.z) * 2.0 + -(1.0)));
PS1i = R125i.z;
// 2
PV0i.x = floatBitsToInt(-(intBitsToFloat(R127i.y)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), -(intBitsToFloat(R127i.y))));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), -(intBitsToFloat(R127i.y))));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), -(intBitsToFloat(R127i.z))));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), -(intBitsToFloat(R127i.z))));
PS0i = R126i.z;
// 3
R125i.x = floatBitsToInt(-(intBitsToFloat(R7i.x)) + intBitsToFloat(PV0i.z));
R127i.y = floatBitsToInt(-(intBitsToFloat(R127i.z)));
R124i.z = floatBitsToInt(-(intBitsToFloat(R12i.z)) + intBitsToFloat(PV0i.x));
R125i.w = floatBitsToInt(-(intBitsToFloat(R6i.y)) + intBitsToFloat(PV0i.y));
R126i.y = floatBitsToInt(-(intBitsToFloat(R7i.x)) + intBitsToFloat(PV0i.w));
PS1i = R126i.y;
// 4
backupReg0i = R126i.z;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.x),intBitsToFloat(R6i.y),intBitsToFloat(R12i.z),-0.0),vec4(intBitsToFloat(R7i.x),intBitsToFloat(R6i.y),intBitsToFloat(R12i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R126i.z = tempi.x;
R126i.x = floatBitsToInt(-(intBitsToFloat(R6i.y)) + intBitsToFloat(backupReg0i));
PS0i = R126i.x;
// 5
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.x),intBitsToFloat(R127i.w),intBitsToFloat(R125i.z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R127i.w),intBitsToFloat(R125i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.z = tempi.x;
R126i.w = floatBitsToInt(-(intBitsToFloat(R12i.z)) + intBitsToFloat(R127i.y));
PS1i = R126i.w;
// 6
backupReg0i = R126i.z;
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.x), uf_blockPS6[43].x));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(R126i.y)));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.w), intBitsToFloat(PS1i)));
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.x), intBitsToFloat(R126i.x)));
R125i.y = floatBitsToInt(sqrt(intBitsToFloat(backupReg0i)));
PS0i = R125i.y;
// 7
backupReg0i = R127i.z;
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.x), uf_blockPS6[45].x));
R124i.y = floatBitsToInt(intBitsToFloat(R4i.w) * intBitsToFloat(0x437f0000));
R127i.z = floatBitsToInt((intBitsToFloat(R2i.x) * 2.0 + -(1.0)));
R4i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),uf_blockPS6[43].y) + intBitsToFloat(PV0i.x)));
tempResultf = 1.0 / sqrt(intBitsToFloat(backupReg0i));
PS1i = floatBitsToInt(tempResultf);
// 8
backupReg0i = R125i.z;
R8i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS1i)));
R7i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PS1i)));
R125i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS1[18].y, uf_blockPS1[18].z));
PV0i.z = R125i.z;
R127i.w = floatBitsToInt(-(intBitsToFloat(R12i.z)) * intBitsToFloat(0x3d4ccccd));
R9i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS1i)));
PS0i = R9i.z;
// 9
R1i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R126i.x)),intBitsToFloat(R124i.z)) + intBitsToFloat(R126i.z)));
R1i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R126i.w)),intBitsToFloat(R125i.x)) + intBitsToFloat(R127i.y)));
R126i.z = floatBitsToInt((intBitsToFloat(R2i.y) * 2.0 + -(1.0)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),uf_blockPS6[45].y) + intBitsToFloat(R124i.x)));
PV1i.w = R123i.w;
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R127i.z)));
PS1i = R126i.w;
// 10
backupReg0i = R126i.y;
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),uf_blockPS6[45].z) + intBitsToFloat(PV1i.w)));
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),uf_blockPS6[43].z) + intBitsToFloat(R4i.w)));
R1i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(R125i.w)) + intBitsToFloat(R124i.w)));
PV0i.z = R1i.z;
R125i.w = R8i.x;
R125i.w = floatBitsToInt(intBitsToFloat(R125i.w) * 2.0);
R124i.z = R7i.y;
R124i.z = floatBitsToInt(intBitsToFloat(R124i.z) * 2.0);
PS0i = R124i.z;
// 11
R124i.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R1i.x)),-(intBitsToFloat(R1i.y)),-(intBitsToFloat(PV0i.z)),-0.0),vec4(-(intBitsToFloat(R1i.x)),-(intBitsToFloat(R1i.y)),-(intBitsToFloat(PV0i.z)),0.0)));
PV1i.x = R124i.x;
PV1i.y = R124i.x;
PV1i.z = R124i.x;
PV1i.w = R124i.x;
R2i.x = floatBitsToInt((-(uf_blockPS6[53].w) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(R127i.w)));
R2i.x = clampFI32(R2i.x);
PS1i = R2i.x;
// 12
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), -(intBitsToFloat(R126i.z))));
PV0i.x = R125i.x;
R127i.y = floatBitsToInt(intBitsToFloat(R126i.z) * intBitsToFloat(0xbb6fe5d7));
PV0i.z = floatBitsToInt(intBitsToFloat(R126i.w) * intBitsToFloat(0x3ca30589));
PV0i.w = floatBitsToInt(intBitsToFloat(R126i.z) * intBitsToFloat(0x3ca30589));
R126i.z = floatBitsToInt(intBitsToFloat(R126i.w) * intBitsToFloat(0xbb6fe5d7));
PS0i = R126i.z;
// 13
R10i.x = floatBitsToInt(uf_blockPS6[43].w + intBitsToFloat(R126i.y));
R3i.y = floatBitsToInt((intBitsToFloat(R127i.z) * intBitsToFloat(0x3b02da3b) + intBitsToFloat(PV0i.w)));
R2i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R12i.z)), uf_blockPS1[17].y));
R1i.w = 0x3f800000;
R4i.x = floatBitsToInt((intBitsToFloat(PV0i.x) * intBitsToFloat(0x3b02da3b) + intBitsToFloat(PV0i.z)));
PS1i = R4i.x;
// 14
R3i.x = floatBitsToInt((intBitsToFloat(R125i.x) * intBitsToFloat(0x3d156fb9) + intBitsToFloat(R126i.z)));
R2i.y = floatBitsToInt((intBitsToFloat(R127i.z) * intBitsToFloat(0x3d156fb9) + intBitsToFloat(R127i.y)));
R11i.z = floatBitsToInt(uf_blockPS6[45].w + intBitsToFloat(R126i.x));
R10i.w = floatBitsToInt((-(uf_blockPS6[53].z) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(R127i.w)));
R10i.w = clampFI32(R10i.w);
PS0i = floatBitsToInt(1.0 / intBitsToFloat(R125i.y));
// 15
backupReg0i = R124i.y;
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.x), intBitsToFloat(PS0i)));
PV1i.x = R126i.x;
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.y), intBitsToFloat(PS0i)));
PV1i.y = R124i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R12i.z), intBitsToFloat(PS0i)));
PS1i = int(intBitsToFloat(backupReg0i));
// 16
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R8i.x),intBitsToFloat(R7i.y),intBitsToFloat(R9i.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 = PS1i & int(1);
// 17
R11i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R125i.w)) + intBitsToFloat(R126i.x)));
R10i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R124i.z)) + intBitsToFloat(R124i.y)));
R11i.w = floatBitsToInt(intBitsToFloat(PV0i.x) + 1.0);
R11i.w = clampFI32(R11i.w);
R8i.y = ((PS0i == 0)?(0):(0x3f800000));
PS1i = R8i.y;
// 18
tempResultf = 1.0 / sqrt(intBitsToFloat(R124i.x));
R2i.w = floatBitsToInt(tempResultf);
PS0i = R2i.w;
}
if( activeMaskStackC[1] == true ) {
activeMaskStack[1] = activeMaskStack[0];
activeMaskStackC[2] = activeMaskStackC[1];
// 0
PV0i.x = floatBitsToInt(uf_blockPS10[2].z + 1.0);
R9i.y = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].y, uf_blockPS10[2].w));
R9i.x = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].x, uf_blockPS10[2].w));
PS0i = R9i.x;
// 1
R10i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].z, uf_blockPS10[2].w));
R12i.w = floatBitsToInt(-(intBitsToFloat(R2i.x)) + intBitsToFloat(PV0i.x));
R12i.w = clampFI32(R12i.w);
R7i.w = 0;
PS1i = R7i.w;
// 2
predResult = (1.0 > intBitsToFloat(R10i.w));
activeMaskStack[1] = predResult;
activeMaskStackC[2] = predResult == true && activeMaskStackC[1] == true;
}
else {
activeMaskStack[1] = false;
activeMaskStackC[2] = false;
}
if( activeMaskStackC[2] == true ) {
// 0
R12i.x = floatBitsToInt(intBitsToFloat(R0i.x) + intBitsToFloat(R4i.x));
R12i.y = floatBitsToInt(intBitsToFloat(R0i.y) + intBitsToFloat(R3i.y));
R13i.x = floatBitsToInt(intBitsToFloat(R0i.x) + -(intBitsToFloat(R4i.x)));
PS0i = R13i.x;
// 1
R14i.x = floatBitsToInt(intBitsToFloat(R0i.x) + intBitsToFloat(R3i.x));
R13i.y = floatBitsToInt(intBitsToFloat(R0i.y) + -(intBitsToFloat(R3i.y)));
R14i.y = floatBitsToInt(intBitsToFloat(R0i.y) + intBitsToFloat(R2i.y));
PS1i = R14i.y;
// 2
R15i.x = floatBitsToInt(intBitsToFloat(R0i.x) + -(intBitsToFloat(R3i.x)));
R15i.y = floatBitsToInt(intBitsToFloat(R0i.y) + -(intBitsToFloat(R2i.y)));
}
if( activeMaskStackC[2] == true ) {
// 0
R127i.x = ((-(intBitsToFloat(R12i.z)) > uf_blockPS1[58].y)?int(0xFFFFFFFF):int(0x0));
PV0i.y = floatBitsToInt(intBitsToFloat(R7i.y) * 1.5);
PV0i.z = floatBitsToInt(intBitsToFloat(R8i.x) * 1.5);
PV0i.w = ((-(intBitsToFloat(R12i.z)) > uf_blockPS1[58].x)?int(0xFFFFFFFF):int(0x0));
PS0i = floatBitsToInt(intBitsToFloat(R9i.z) * 1.5);
// 1
backupReg0i = R1i.x;
backupReg1i = R1i.z;
R1i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(R2i.w)) + intBitsToFloat(PV0i.z)));
PV1i.y = PV0i.w & int(1);
R1i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R1i.y)),intBitsToFloat(R2i.w)) + intBitsToFloat(PV0i.y)));
R1i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg1i)),intBitsToFloat(R2i.w)) + intBitsToFloat(PS0i)));
R122i.x = floatBitsToInt((intBitsToFloat(R2i.z) * 0.25 + 1.0));
PS1i = R122i.x;
// 2
R2i.x = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i));
R2i.y = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i));
R2i.z = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i));
R13i.w = PV1i.y - R127i.x;
PV0i.w = R13i.w;
PS0i = floatBitsToInt(uf_blockPS6[53].y * uf_fragCoordScale.y);
PS0i = floatBitsToInt(intBitsToFloat(PS0i) / 2.0);
// 3
R6i.x = floatBitsToInt(uf_blockPS6[53].x * uf_fragCoordScale.x);
R6i.x = floatBitsToInt(intBitsToFloat(R6i.x) / 2.0);
PV1i.y = PV0i.w << 0x00000002;
R6i.z = floatBitsToInt(-(intBitsToFloat(PS0i)));
R2i.w = PS0i;
PS1i = floatBitsToInt(float(PV0i.w));
// 4
R0i.x = PV1i.y + 0x0000002b;
R0i.y = PV1i.y + 0x0000002d;
R0i.z = PV1i.y + 0x0000002a;
R0i.w = PV1i.y + 0x0000002c;
R7i.z = floatBitsToInt(roundEven(intBitsToFloat(PS1i)));
PS0i = R7i.z;
// 5
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R1i.x),intBitsToFloat(R1i.z),intBitsToFloat(R1i.w),-0.0),vec4(intBitsToFloat(R1i.x),intBitsToFloat(R1i.z),intBitsToFloat(R1i.w),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R1i.y = tempi.x;
R8i.z = PS0i;
PS1i = R8i.z;
}
if( activeMaskStackC[2] == true ) {
R3i.xyzw = floatBitsToInt(uf_blockPS1[R0i.y].xyzw);
R4i.xyzw = floatBitsToInt(uf_blockPS1[R0i.w].xyzw);
R5i.xyzw = floatBitsToInt(uf_blockPS1[R0i.z].xyzw);
R0i.xyzw = floatBitsToInt(uf_blockPS1[R0i.x].xyzw);
}
if( activeMaskStackC[2] == true ) {
// 0
R126i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R8i.x),intBitsToFloat(R7i.y),intBitsToFloat(R9i.z),intBitsToFloat(R9i.z)),vec4(-(intBitsToFloat(R9i.x)),-(intBitsToFloat(R9i.y)),-(intBitsToFloat(R10i.z)),-(intBitsToFloat(R7i.w)))));
R126i.x = clampFI32(R126i.x);
PV0i.x = R126i.x;
PV0i.y = R126i.x;
PV0i.z = R126i.x;
PV0i.w = R126i.x;
tempResultf = 1.0 / sqrt(intBitsToFloat(R1i.y));
PS0i = floatBitsToInt(tempResultf);
// 1
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(PS0i)));
PV1i.x = R127i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(PS0i)));
PV1i.y = R127i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), intBitsToFloat(PS0i)));
PV1i.z = R127i.z;
R126i.w = floatBitsToInt(-(intBitsToFloat(R6i.x)));
R1i.z = R7i.z;
PS1i = R1i.z;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.x),intBitsToFloat(R9i.y),intBitsToFloat(R10i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R9i.z = R7i.z;
PS0i = R9i.z;
// 3
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(PV0i.x)) + 1.0));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R9i.x)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.x)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R10i.z)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.z)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R9i.y)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.y)));
PV1i.w = R123i.w;
// 4
backupReg0i = R126i.x;
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R2i.y)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(backupReg0i)));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(R2i.x)));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(R2i.z)));
// 5
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.y), intBitsToFloat(PV0i.y)));
// 6
backupReg0i = R6i.y;
R16i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(PV1i.z)) + intBitsToFloat(R7i.x)));
PV0i.x = R16i.x;
R6i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.x),intBitsToFloat(PV1i.z)) + intBitsToFloat(backupReg0i)));
R10i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),intBitsToFloat(PV1i.z)) + intBitsToFloat(R12i.z)));
// 7
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R4i.x)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R5i.x)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R3i.x)));
// 8
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R3i.y)) + intBitsToFloat(PV1i.z)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R4i.y)) + intBitsToFloat(PV1i.x)));
PV0i.y = R123i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.x), intBitsToFloat(R0i.x)));
// 9
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R5i.y)) + intBitsToFloat(R127i.y)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R4i.z)) + intBitsToFloat(PV0i.y)));
PV1i.y = R123i.y;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R3i.z)) + intBitsToFloat(PV0i.x)));
PV1i.w = R123i.w;
// 10
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R0i.y)) + intBitsToFloat(R127i.z)));
PV0i.x = R123i.x;
PV0i.y = floatBitsToInt(intBitsToFloat(R3i.w) + intBitsToFloat(PV1i.w));
R127i.z = floatBitsToInt(intBitsToFloat(R4i.w) + intBitsToFloat(PV1i.y));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R5i.z)) + intBitsToFloat(PV1i.x)));
PV0i.w = R123i.w;
// 11
PV1i.y = floatBitsToInt(intBitsToFloat(R5i.w) + intBitsToFloat(PV0i.w));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R0i.z)) + intBitsToFloat(PV0i.x)));
PV1i.w = R123i.w;
R126i.z = floatBitsToInt(1.0 / intBitsToFloat(PV0i.y));
PS1i = R126i.z;
// 12
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS1i)));
PV0i.y = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(PV1i.w));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(PS1i)));
PV0i.z = R127i.z;
// 13
R7i.x = floatBitsToInt((uf_blockPS6[53].x * uf_fragCoordScale.x * 0.5 + intBitsToFloat(PV0i.z)));
R127i.y = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(0xbb03126f));
R127i.y = clampFI32(R127i.y);
PV1i.y = R127i.y;
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(R126i.z)));
PV1i.w = R127i.w;
R8i.x = floatBitsToInt(intBitsToFloat(PV0i.z) + intBitsToFloat(R6i.x));
PS1i = R8i.x;
// 14
R1i.x = floatBitsToInt(intBitsToFloat(R127i.z) + intBitsToFloat(R126i.w));
R7i.y = floatBitsToInt((uf_blockPS6[53].y * uf_fragCoordScale.y * 0.5 + intBitsToFloat(PV1i.w)));
R7i.w = PV1i.y;
R8i.y = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(R6i.z));
PS0i = R8i.y;
// 15
R9i.x = floatBitsToInt((-(uf_blockPS6[53].x) * uf_fragCoordScale.x * 0.5 + intBitsToFloat(R127i.z)));
R1i.y = floatBitsToInt(intBitsToFloat(R127i.w) + intBitsToFloat(R2i.w));
R8i.w = R127i.y;
R1i.w = R127i.y;
PS1i = R1i.w;
// 16
R9i.y = floatBitsToInt((-(uf_blockPS6[53].y) * uf_fragCoordScale.y * 0.5 + intBitsToFloat(R127i.w)));
R9i.w = R127i.y;
}
if( activeMaskStackC[2] == true ) {
R7i.z = floatBitsToInt(textureShadow_1(textureUnitPS8, vec4(intBitsToFloat(R7i.x),intBitsToFloat(R7i.y),intBitsToFloat(R7i.z),intBitsToFloat(R7i.w))));
R8i.y = floatBitsToInt(textureShadow_2(textureUnitPS8, vec4(intBitsToFloat(R8i.x),intBitsToFloat(R8i.y),intBitsToFloat(R8i.z),intBitsToFloat(R8i.w))));
R1i.x = floatBitsToInt(textureShadow_3(textureUnitPS8, vec4(intBitsToFloat(R1i.x),intBitsToFloat(R1i.y),intBitsToFloat(R1i.z),intBitsToFloat(R1i.w))));
R9i.w = floatBitsToInt(textureShadow_4(textureUnitPS8, vec4(intBitsToFloat(R9i.x),intBitsToFloat(R9i.y),intBitsToFloat(R9i.z),intBitsToFloat(R9i.w))));
}
if( activeMaskStackC[2] == true ) {
activeMaskStack[2] = activeMaskStack[1];
activeMaskStackC[3] = activeMaskStackC[2];
// 0
PV0i.w = floatBitsToInt(intBitsToFloat(R7i.z) + intBitsToFloat(R8i.y));
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) / 2.0);
// 1
R123i.z = floatBitsToInt((intBitsToFloat(R1i.x) * 0.5 + intBitsToFloat(PV0i.w)));
PV1i.z = R123i.z;
// 2
R5i.w = floatBitsToInt((intBitsToFloat(R9i.w) * 0.5 + intBitsToFloat(PV1i.z))/2.0);
PV0i.w = R5i.w;
// 3
PV1i.x = ((1.0 > intBitsToFloat(PV0i.w))?int(0xFFFFFFFF):int(0x0));
// 4
R0i.y = ((R13i.w > 0)?(PV1i.x):(0));
// 5
predResult = (R0i.y != 0);
activeMaskStack[2] = predResult;
activeMaskStackC[3] = predResult == true && activeMaskStackC[2] == true;
}
else {
activeMaskStack[2] = false;
activeMaskStackC[3] = false;
}
if( activeMaskStackC[3] == true ) {
// 0
PV0i.x = int(-1) + R13i.w;
// 1
PV1i.w = PV0i.x << 0x00000002;
PS1i = floatBitsToInt(float(PV0i.x));
// 2
R0i.x = PV1i.w + 0x0000002c;
R0i.y = PV1i.w + 0x0000002b;
R0i.z = PV1i.w + 0x0000002a;
R0i.w = PV1i.w + 0x0000002d;
R4i.z = floatBitsToInt(roundEven(intBitsToFloat(PS1i)));
PS0i = R4i.z;
}
if( activeMaskStackC[3] == true ) {
R1i.xyzw = floatBitsToInt(uf_blockPS1[R0i.w].xyzw);
R2i.xyzw = floatBitsToInt(uf_blockPS1[R0i.x].xyzw);
R3i.xyzw = floatBitsToInt(uf_blockPS1[R0i.z].xyzw);
R0i.xyzw = floatBitsToInt(uf_blockPS1[R0i.y].xyzw);
}
if( activeMaskStackC[3] == true ) {
// 0
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.x), intBitsToFloat(R2i.x)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.x), intBitsToFloat(R1i.x)));
// 1
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R2i.y)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R1i.y)) + intBitsToFloat(PV0i.z)));
PV1i.y = R123i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.x), intBitsToFloat(R3i.x)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.x), intBitsToFloat(R0i.x)));
// 2
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R1i.z)) + intBitsToFloat(PV1i.y)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R3i.y)) + intBitsToFloat(PV1i.z)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R0i.y)) + intBitsToFloat(PV1i.w)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R2i.z)) + intBitsToFloat(PV1i.x)));
PV0i.w = R123i.w;
// 3
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R3i.z)) + intBitsToFloat(PV0i.y)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R0i.z)) + intBitsToFloat(PV0i.z)));
PV1i.y = R123i.y;
R127i.z = floatBitsToInt(intBitsToFloat(R2i.w) + intBitsToFloat(PV0i.w));
PV1i.w = floatBitsToInt(intBitsToFloat(R1i.w) + intBitsToFloat(PV0i.x));
// 4
PV0i.x = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(PV1i.y));
PV0i.w = floatBitsToInt(intBitsToFloat(R3i.w) + intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.w));
// 5
R4i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(PS0i)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS0i)));
R4i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PS0i)));
PS1i = R4i.y;
// 6
R4i.w = floatBitsToInt(intBitsToFloat(PV1i.y) + intBitsToFloat(0xbb03126f));
R4i.w = clampFI32(R4i.w);
}
if( activeMaskStackC[3] == true ) {
R4i.z = floatBitsToInt(textureShadow_5(textureUnitPS8, vec4(intBitsToFloat(R4i.x),intBitsToFloat(R4i.y),intBitsToFloat(R4i.z),intBitsToFloat(R4i.w))));
}
if( activeMaskStackC[3] == true ) {
// 0
backupReg0i = R5i.w;
R5i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R4i.z)));
}
activeMaskStackC[2] = activeMaskStack[1] == true && activeMaskStackC[1] == true;
if( activeMaskStackC[2] == true ) {
R0i.x = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R14i.xy)).x);
R0i.y = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R15i.xy)).x);
R1i.x = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R12i.xy)).x);
R1i.y = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R13i.xy)).x);
}
if( activeMaskStackC[2] == true ) {
// 0
R127i.x = floatBitsToInt(intBitsToFloat(R6i.w) * intBitsToFloat(0x3f7eb852));
PV0i.x = R127i.x;
PV0i.y = floatBitsToInt(uf_blockPS1[16].x * intBitsToFloat(0x41a00000));
R124i.z = floatBitsToInt(-(intBitsToFloat(R5i.w)) + 1.0);
R127i.w = floatBitsToInt(uf_blockPS1[16].x * intBitsToFloat(0x3f555555));
// 1
backupReg0i = R0i.x;
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.x) + -(intBitsToFloat(R0i.y)));
PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.x) + -(intBitsToFloat(backupReg0i)));
R127i.z = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x3f8ba8d6));
R127i.z = floatBitsToInt(intBitsToFloat(R127i.z) / 2.0);
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x3fbc4580));
PV1i.w = floatBitsToInt(intBitsToFloat(PV1i.w) / 2.0);
R126i.z = floatBitsToInt(-(intBitsToFloat(R1i.x)) + intBitsToFloat(PV0i.x));
PS1i = R126i.z;
// 2
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.w)),intBitsToFloat(PV1i.y)) + 1.0));
R127i.x = clampFI32(R127i.x);
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.w),intBitsToFloat(PV1i.x)) + 0.5));
R127i.y = clampFI32(R127i.y);
PV0i.y = R127i.y;
R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.w),intBitsToFloat(PV1i.y)) + 0.5));
R125i.z = clampFI32(R125i.z);
PV0i.z = R125i.z;
R126i.w = floatBitsToInt(-(intBitsToFloat(R1i.y)) + intBitsToFloat(backupReg0i));
PV0i.w = R126i.w;
R125i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.w)),intBitsToFloat(PV1i.x)) + 1.0));
R125i.w = clampFI32(R125i.w);
PS0i = R125i.w;
// 3
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R126i.z)) + 0.5));
R126i.x = clampFI32(R126i.x);
PV1i.x = R126i.x;
PV1i.y = floatBitsToInt(0.5 + -(intBitsToFloat(PV0i.y)));
PV1i.z = floatBitsToInt(0.5 + -(intBitsToFloat(PV0i.z)));
R124i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(PV0i.w)) + 0.5));
R124i.w = clampFI32(R124i.w);
PV1i.w = R124i.w;
R0i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.w)),intBitsToFloat(R126i.z)) + 1.0));
R0i.w = clampFI32(R0i.w);
PS1i = R0i.w;
// 4
backupReg0i = R127i.w;
PV0i.x = floatBitsToInt(0.5 + -(intBitsToFloat(PV1i.x)));
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(R127i.x)) + 0.5));
PV0i.y = R126i.y;
PV0i.z = floatBitsToInt(0.5 + -(intBitsToFloat(PV1i.w)));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(R125i.w)) + 0.5));
PV0i.w = R127i.w;
R125i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(R126i.w)) + 1.0));
R125i.y = clampFI32(R125i.y);
PS0i = R125i.y;
// 5
PV1i.x = floatBitsToInt(intBitsToFloat(R127i.y) + -(intBitsToFloat(PV0i.y)));
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(PS0i)) + 0.5));
PV1i.y = R127i.y;
PV1i.z = floatBitsToInt(intBitsToFloat(R125i.z) + -(intBitsToFloat(PV0i.w)));
R126i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R0i.w)) + 0.5));
PV1i.w = R126i.w;
R3i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.z),intBitsToFloat(R10i.w)) + intBitsToFloat(R5i.w)));
PS1i = R3i.w;
// 6
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(R127i.x)) + intBitsToFloat(R127i.w)));
PV0i.x = R123i.x;
PV0i.y = floatBitsToInt(intBitsToFloat(R126i.x) + -(intBitsToFloat(PV1i.y)));
PV0i.z = floatBitsToInt(intBitsToFloat(R124i.w) + -(intBitsToFloat(PV1i.w)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),intBitsToFloat(R125i.w)) + intBitsToFloat(R126i.y)));
PV0i.w = R123i.w;
// 7
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.x) * intBitsToFloat(0x3e35e743));
PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.w) * intBitsToFloat(0x3e35e743));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R125i.y)) + intBitsToFloat(R126i.w)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(R0i.w)) + intBitsToFloat(R127i.y)));
PV1i.w = R123i.w;
// 8
R123i.x = floatBitsToInt((intBitsToFloat(PV1i.w) * intBitsToFloat(0x3e825397) + intBitsToFloat(PV1i.x)));
PV0i.x = R123i.x;
R123i.w = floatBitsToInt((intBitsToFloat(PV1i.z) * intBitsToFloat(0x3e825397) + intBitsToFloat(PV1i.y)));
PV0i.w = R123i.w;
// 9
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(PV0i.w));
// 10
PV0i.y = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(0xbedd476b));
// 11
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x40c00000));
PV1i.x = clampFI32(PV1i.x);
// 12
R1i.w = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + 1.0);
}
activeMaskStack[1] = activeMaskStack[1] == false;
activeMaskStackC[2] = activeMaskStack[1] == true && activeMaskStackC[1] == true;
if( activeMaskStackC[2] == true ) {
// 0
R3i.w = R1i.w;
}
activeMaskStackC[1] = activeMaskStack[0] == true && activeMaskStackC[0] == true;
if( activeMaskStackC[1] == true ) {
// 0
R0i.x = floatBitsToInt((intBitsToFloat(R10i.x) * intBitsToFloat(0x38d1b717) + 0.5));
R0i.y = floatBitsToInt((intBitsToFloat(R11i.z) * intBitsToFloat(0x3903126f) + 0.5));
PV0i.z = floatBitsToInt(-(intBitsToFloat(R10i.y)));
PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) / 2.0);
PV0i.w = R11i.x;
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) / 2.0);
R2i.z = R1i.w;
PS0i = R2i.z;
// 1
R1i.x = floatBitsToInt(intBitsToFloat(PV0i.w) + 0.5);
R1i.y = floatBitsToInt(intBitsToFloat(PV0i.z) + 0.5);
R2i.w = 0x3f800000;
}
if( activeMaskStackC[1] == true ) {
R0i.xyz = floatBitsToInt(textureLod(textureUnitPS15, intBitsToFloat(R0i.xy),0.0).xyz);
R1i.y = floatBitsToInt(textureLod(textureUnitPS1, intBitsToFloat(R1i.xy),0.0).x);
}
if( activeMaskStackC[1] == true ) {
// 0
backupReg0i = R0i.x;
backupReg1i = R0i.y;
backupReg2i = R0i.z;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i),intBitsToFloat(backupReg2i),-0.0),vec4(uf_blockPS6[42].x,uf_blockPS6[42].y,uf_blockPS6[42].z,0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R2i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),-(intBitsToFloat(R11i.w))) + intBitsToFloat(R1i.y)));
PS0i = R2i.y;
// 1
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
// 2
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.w)));
PV0i.z = R127i.z;
// 3
PV1i.y = floatBitsToInt(intBitsToFloat(R3i.w) + -(intBitsToFloat(PV0i.z)));
// 4
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(R12i.w)) + intBitsToFloat(R127i.z)));
PV0i.x = R123i.x;
// 5
R2i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),uf_blockPS10[3].z) + uf_blockPS10[1].y));
R2i.x = clampFI32(R2i.x);
}
// export
passPixelColor5 = vec4(intBitsToFloat(R2i.x), intBitsToFloat(R2i.y), intBitsToFloat(R2i.z), intBitsToFloat(R2i.w));
}

View File

@ -0,0 +1,590 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 b8a18eeb20759bfd
UNIFORM_BUFFER_LAYOUT(33, 1, 6) uniform uniformBlockPS1
{
vec4 uf_blockPS1[1024];
};
UNIFORM_BUFFER_LAYOUT(38, 1, 7) uniform uniformBlockPS6
{
vec4 uf_blockPS6[1024];
};
UNIFORM_BUFFER_LAYOUT(42, 1, 8) uniform uniformBlockPS10
{
vec4 uf_blockPS10[1024];
};
TEXTURE_LAYOUT(1, 1, 0) uniform sampler2D textureUnitPS1;
TEXTURE_LAYOUT(2, 1, 1) uniform sampler2D textureUnitPS2;
TEXTURE_LAYOUT(5, 1, 2) uniform sampler2D textureUnitPS5;
TEXTURE_LAYOUT(7, 1, 3) uniform sampler2DArray textureUnitPS7;
TEXTURE_LAYOUT(12, 1, 4) uniform sampler2D textureUnitPS12;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem5;
layout(location = 2) in vec4 passParameterSem6;
layout(location = 5) out vec4 passPixelColor5;
#ifdef VULKAN
layout(set = 1, binding = 5) uniform ufBlock
{
uniform vec4 uf_fragCoordScale;
};
#else
uniform vec2 uf_fragCoordScale;
#endif
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; }
float textureShadow_1(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_2(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_3(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_4(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_5(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
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;
bool activeMaskStack[3];
bool activeMaskStackC[4];
activeMaskStack[0] = false;
activeMaskStack[1] = false;
activeMaskStackC[0] = false;
activeMaskStackC[1] = false;
activeMaskStackC[2] = false;
activeMaskStack[0] = true;
activeMaskStackC[0] = true;
activeMaskStackC[1] = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem5);
R2i = floatBitsToInt(passParameterSem6);
if( activeMaskStackC[1] == true ) {
R3i.w = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.xy)).x);
R4i.x = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.xy)).x);
R4i.z = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.zw)).x);
R4i.w = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.xy)).x);
R5i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R2i.zw)).xyzw);
R2i.z = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R2i.zw)).w);
}
if( activeMaskStackC[1] == true ) {
// 0
R127i.x = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R4i.x)) + uf_blockPS1[14].x));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.w),uf_blockPS1[16].x) + uf_blockPS1[14].x));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R4i.w)) + uf_blockPS1[14].x));
PV0i.z = R123i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R4i.z)) + uf_blockPS1[14].x));
PV0i.w = R127i.w;
R124i.x = floatBitsToInt((intBitsToFloat(R5i.x) * 2.0 + -(1.0)));
PS0i = R124i.x;
// 1
backupReg0i = R1i.x;
backupReg1i = R1i.y;
R1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(PV0i.y))));
PV1i.x = R1i.x;
R1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), -(intBitsToFloat(PV0i.y))));
R0i.z = floatBitsToInt(-(intBitsToFloat(PV0i.z)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), -(intBitsToFloat(PV0i.w))));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg1i), -(intBitsToFloat(PV0i.w))));
PS1i = R127i.z;
// 2
PV0i.x = floatBitsToInt(-(intBitsToFloat(R127i.w)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), -(intBitsToFloat(R127i.x))));
PV0i.z = floatBitsToInt(-(intBitsToFloat(R127i.x)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), -(intBitsToFloat(R127i.x))));
R126i.x = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + intBitsToFloat(PV1i.w));
PS0i = R126i.x;
// 3
R127i.x = floatBitsToInt(-(intBitsToFloat(R1i.y)) + intBitsToFloat(PV0i.w));
PV1i.x = R127i.x;
R126i.y = floatBitsToInt(-(intBitsToFloat(R1i.y)) + intBitsToFloat(R127i.z));
PV1i.y = R126i.y;
R127i.zwy = floatBitsToInt(vec3(-(intBitsToFloat(R1i.x)),-(intBitsToFloat(R0i.z)),-(intBitsToFloat(R0i.z))) + vec3(intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.z)));
PV1i.z = R127i.z;
PV1i.w = R127i.w;
PS1i = R127i.y;
// 4
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.z)));
R125i.y = floatBitsToInt((intBitsToFloat(R5i.y) * 2.0 + -(1.0)));
R125i.z = floatBitsToInt((intBitsToFloat(R5i.z) * 2.0 + -(1.0)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(PS1i)));
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.x), intBitsToFloat(PV1i.x)));
PS0i = R125i.x;
// 5
backupReg0i = R127i.y;
R2i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.x)),intBitsToFloat(R127i.w)) + intBitsToFloat(PV0i.w)));
R127i.y = floatBitsToInt(intBitsToFloat(R5i.w) * intBitsToFloat(0x437f0000));
R126i.z = floatBitsToInt(intBitsToFloat(R2i.z) * intBitsToFloat(0x437f0000));
PV1i.w = floatBitsToInt(uf_blockPS6[53].z * intBitsToFloat(0x3d4ccccd));
R2i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(R126i.x)) + intBitsToFloat(PV0i.x)));
PS1i = R2i.y;
// 6
R12i.x = floatBitsToInt((-(intBitsToFloat(R0i.z)) * intBitsToFloat(0x3d4ccccd) + -(intBitsToFloat(PV1i.w))));
R12i.x = clampFI32(R12i.x);
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), intBitsToFloat(R125i.z)));
R1i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.z)),intBitsToFloat(R126i.y)) + intBitsToFloat(R125i.x)));
R0i.w = 0x3f800000;
R2i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R0i.z)), uf_blockPS1[17].y));
PS0i = R2i.z;
// 7
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R124i.x),intBitsToFloat(R125i.y),intBitsToFloat(PV0i.y),-0.0),vec4(intBitsToFloat(R124i.x),intBitsToFloat(R125i.y),1.0,0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.w = tempi.x;
PS1i = int(intBitsToFloat(R127i.y));
// 8
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R2i.x)),-(intBitsToFloat(R2i.y)),-(intBitsToFloat(R1i.z)),-0.0),vec4(-(intBitsToFloat(R2i.x)),-(intBitsToFloat(R2i.y)),-(intBitsToFloat(R1i.z)),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R127i.y = tempi.x;
PS0i = PS1i & int(1);
// 9
R5i.z = ((PS0i == 0)?(0):(0x3f800000));
PS1i = int(intBitsToFloat(R126i.z));
// 10
R125i.x = PS1i & 0x00000002;
tempResultf = 1.0 / sqrt(intBitsToFloat(R127i.w));
PS0i = floatBitsToInt(tempResultf);
// 11
R9i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.x), intBitsToFloat(PS0i)));
R10i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(PS0i)));
R10i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), intBitsToFloat(PS0i)));
tempResultf = 1.0 / sqrt(intBitsToFloat(R127i.y));
R1i.w = floatBitsToInt(tempResultf);
PS1i = R1i.w;
// 12
R4i.w = floatBitsToInt(float(R125i.x));
R4i.w = floatBitsToInt(intBitsToFloat(R4i.w) / 2.0);
PS0i = R4i.w;
}
if( activeMaskStackC[1] == true ) {
activeMaskStack[1] = activeMaskStack[0];
activeMaskStackC[2] = activeMaskStackC[1];
// 0
R5i.x = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].x, uf_blockPS10[2].w));
R9i.y = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].y, uf_blockPS10[2].w));
// 1
R4i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].z, uf_blockPS10[2].w));
R9i.w = 0;
// 2
predResult = (1.0 > intBitsToFloat(R12i.x));
activeMaskStack[1] = predResult;
activeMaskStackC[2] = predResult == true && activeMaskStackC[1] == true;
}
else {
activeMaskStack[1] = false;
activeMaskStackC[2] = false;
}
if( activeMaskStackC[2] == true ) {
// 0
PV0i.x = floatBitsToInt(intBitsToFloat(R9i.x) * 1.5);
PV0i.y = floatBitsToInt(intBitsToFloat(R10i.y) * 1.5);
R127i.z = ((-(intBitsToFloat(R0i.z)) > uf_blockPS1[58].y)?int(0xFFFFFFFF):int(0x0));
PV0i.w = ((-(intBitsToFloat(R0i.z)) > uf_blockPS1[58].x)?int(0xFFFFFFFF):int(0x0));
PS0i = floatBitsToInt(intBitsToFloat(R10i.z) * 1.5);
// 1
backupReg0i = R2i.x;
backupReg1i = R2i.z;
R2i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(R1i.w)) + intBitsToFloat(PV0i.x)));
PV1i.y = PV0i.w & int(1);
R2i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R2i.y)),intBitsToFloat(R1i.w)) + intBitsToFloat(PV0i.y)));
R2i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R1i.z)),intBitsToFloat(R1i.w)) + intBitsToFloat(PS0i)));
R122i.x = floatBitsToInt((intBitsToFloat(backupReg1i) * 0.25 + 1.0));
PS1i = R122i.x;
// 2
R4i.x = PV1i.y - R127i.z;
PV0i.x = R4i.x;
R5i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R9i.x),intBitsToFloat(R4i.w)) + intBitsToFloat(R1i.x)));
R3i.z = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i));
R3i.w = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i));
R4i.y = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i));
PS0i = R4i.y;
// 3
backupReg0i = R4i.w;
backupReg1i = R0i.z;
R3i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.y),intBitsToFloat(R4i.w)) + intBitsToFloat(R1i.y)));
R3i.y = floatBitsToInt(uf_blockPS6[53].y);
R3i.y = floatBitsToInt(intBitsToFloat(R3i.y) / 2.0);
PV1i.z = PV0i.x << 0x00000002;
R4i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(backupReg0i)) + intBitsToFloat(backupReg1i)));
R127i.y = floatBitsToInt(float(PV0i.x));
PS1i = R127i.y;
// 4
R1i.x = PV1i.z + 0x0000002b;
R1i.y = PV1i.z + 0x0000002a;
R1i.z = PV1i.z + 0x0000002d;
R1i.w = PV1i.z + 0x0000002c;
R5i.w = floatBitsToInt(uf_blockPS6[53].x);
R5i.w = floatBitsToInt(intBitsToFloat(R5i.w) / 2.0);
PS0i = R5i.w;
// 5
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R2i.x),intBitsToFloat(R2i.z),intBitsToFloat(R2i.w),-0.0),vec4(intBitsToFloat(R2i.x),intBitsToFloat(R2i.z),intBitsToFloat(R2i.w),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R2i.y = tempi.x;
R9i.z = floatBitsToInt(roundEven(intBitsToFloat(R127i.y)));
PS1i = R9i.z;
}
if( activeMaskStackC[2] == true ) {
R6i.xyzw = floatBitsToInt(uf_blockPS1[R1i.z].xyzw);
R7i.xyzw = floatBitsToInt(uf_blockPS1[R1i.w].xyzw);
R8i.xyzw = floatBitsToInt(uf_blockPS1[R1i.y].xyzw);
R1i.xyzw = floatBitsToInt(uf_blockPS1[R1i.x].xyzw);
}
if( activeMaskStackC[2] == true ) {
// 0
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.x),intBitsToFloat(R10i.y),intBitsToFloat(R10i.z),intBitsToFloat(R10i.z)),vec4(-(intBitsToFloat(R5i.x)),-(intBitsToFloat(R9i.y)),-(intBitsToFloat(R4i.z)),-(intBitsToFloat(R9i.w)))));
tempi.x = clampFI32(tempi.x);
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R126i.z = tempi.x;
tempResultf = 1.0 / sqrt(intBitsToFloat(R2i.y));
PS0i = floatBitsToInt(tempResultf);
// 1
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(PS0i)));
PV1i.x = R127i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(PS0i)));
PV1i.y = R127i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.w), intBitsToFloat(PS0i)));
PV1i.z = R127i.z;
R127i.w = floatBitsToInt(-(intBitsToFloat(R3i.y)));
R2i.z = R9i.z;
PS1i = R2i.z;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R9i.y),intBitsToFloat(R4i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R125i.y = floatBitsToInt(-(intBitsToFloat(R5i.w)));
PS0i = R125i.y;
// 3
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R4i.z)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.z)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R9i.y)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.y)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(PV0i.x)) + 1.0));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R5i.x)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.x)));
PV1i.w = R123i.w;
R126i.x = R3i.y;
PS1i = R126i.x;
// 4
backupReg0i = R126i.z;
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R3i.z)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(R4i.y)));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(R3i.w)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(backupReg0i)));
R10i.z = R9i.z;
PS0i = R10i.z;
// 5
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.z), intBitsToFloat(PV0i.w)));
R11i.z = R9i.z;
// 6
R5i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(PV1i.x)) + intBitsToFloat(R5i.y)));
PV0i.x = R5i.x;
R5i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),intBitsToFloat(PV1i.x)) + intBitsToFloat(R3i.x)));
R0i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(PV1i.x)) + intBitsToFloat(R4i.w)));
// 7
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R7i.x)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R6i.x)));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R8i.x)));
// 8
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(R6i.y)) + intBitsToFloat(PV1i.y)));
PV0i.x = R123i.x;
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(R7i.y)) + intBitsToFloat(PV1i.x)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.x), intBitsToFloat(R1i.x)));
// 9
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(R8i.y)) + intBitsToFloat(R126i.z)));
PV1i.x = R123i.x;
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(R1i.y)) + intBitsToFloat(PV0i.z)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.z),intBitsToFloat(R6i.z)) + intBitsToFloat(PV0i.x)));
PV1i.w = R123i.w;
// 10
backupReg0i = R0i.z;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.z),intBitsToFloat(R8i.z)) + intBitsToFloat(PV1i.x)));
PV0i.x = R123i.x;
PV0i.z = floatBitsToInt(intBitsToFloat(R6i.w) + intBitsToFloat(PV1i.w));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(R7i.z)) + intBitsToFloat(R127i.y)));
PV0i.w = R123i.w;
// 11
backupReg0i = R0i.z;
PV1i.x = floatBitsToInt(intBitsToFloat(R8i.w) + intBitsToFloat(PV0i.x));
PV1i.z = floatBitsToInt(intBitsToFloat(R7i.w) + intBitsToFloat(PV0i.w));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(R1i.z)) + intBitsToFloat(R126i.y)));
PV1i.w = R123i.w;
R126i.y = floatBitsToInt(1.0 / intBitsToFloat(PV0i.z));
PS1i = R126i.y;
// 12
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(PS1i)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(PS1i)));
PV0i.y = R127i.y;
PV0i.z = floatBitsToInt(intBitsToFloat(R1i.w) + intBitsToFloat(PV1i.w));
// 13
R127i.x = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(0xbb03126f));
R127i.x = clampFI32(R127i.x);
PV1i.x = R127i.x;
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R126i.y)));
PV1i.w = R126i.w;
R9i.x = floatBitsToInt((uf_blockPS6[53].x * 0.5 + intBitsToFloat(PV0i.y)));
PS1i = R9i.x;
// 14
R2i.x = floatBitsToInt(intBitsToFloat(R127i.y) + intBitsToFloat(R5i.w));
R9i.y = floatBitsToInt((uf_blockPS6[53].y * 0.5 + intBitsToFloat(PV1i.w)));
R9i.w = PV1i.x;
R2i.y = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(R127i.w));
PS0i = R2i.y;
// 15
R10i.x = floatBitsToInt(intBitsToFloat(R127i.y) + intBitsToFloat(R125i.y));
R10i.y = floatBitsToInt(intBitsToFloat(R126i.w) + intBitsToFloat(R126i.x));
R2i.w = R127i.x;
R10i.w = R127i.x;
PS1i = R10i.w;
// 16
R11i.x = floatBitsToInt((-(uf_blockPS6[53].x) * 0.5 + intBitsToFloat(R127i.y)));
R11i.y = floatBitsToInt((-(uf_blockPS6[53].y) * 0.5 + intBitsToFloat(R126i.w)));
R11i.w = R127i.x;
}
if( activeMaskStackC[2] == true ) {
R9i.y = floatBitsToInt(textureShadow_1(textureUnitPS7, vec4(intBitsToFloat(R9i.x),intBitsToFloat(R9i.y),intBitsToFloat(R9i.z),intBitsToFloat(R9i.w))));
R2i.x = floatBitsToInt(textureShadow_2(textureUnitPS7, vec4(intBitsToFloat(R2i.x),intBitsToFloat(R2i.y),intBitsToFloat(R2i.z),intBitsToFloat(R2i.w))));
R10i.w = floatBitsToInt(textureShadow_3(textureUnitPS7, vec4(intBitsToFloat(R10i.x),intBitsToFloat(R10i.y),intBitsToFloat(R10i.z),intBitsToFloat(R10i.w))));
R11i.z = floatBitsToInt(textureShadow_4(textureUnitPS7, vec4(intBitsToFloat(R11i.x),intBitsToFloat(R11i.y),intBitsToFloat(R11i.z),intBitsToFloat(R11i.w))));
}
if( activeMaskStackC[2] == true ) {
activeMaskStack[2] = activeMaskStack[1];
activeMaskStackC[3] = activeMaskStackC[2];
// 0
PV0i.z = floatBitsToInt(intBitsToFloat(R9i.y) + intBitsToFloat(R2i.x));
PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) / 2.0);
// 1
R123i.y = floatBitsToInt((intBitsToFloat(R10i.w) * 0.5 + intBitsToFloat(PV0i.z)));
PV1i.y = R123i.y;
// 2
R0i.w = floatBitsToInt((intBitsToFloat(R11i.z) * 0.5 + intBitsToFloat(PV1i.y))/2.0);
PV0i.w = R0i.w;
// 3
PV1i.x = ((1.0 > intBitsToFloat(PV0i.w))?int(0xFFFFFFFF):int(0x0));
// 4
R1i.z = ((R4i.x > 0)?(PV1i.x):(0));
// 5
predResult = (R1i.z != 0);
activeMaskStack[2] = predResult;
activeMaskStackC[3] = predResult == true && activeMaskStackC[2] == true;
}
else {
activeMaskStack[2] = false;
activeMaskStackC[3] = false;
}
if( activeMaskStackC[3] == true ) {
// 0
PV0i.x = int(-1) + R4i.x;
// 1
PV1i.w = PV0i.x << 0x00000002;
PS1i = floatBitsToInt(float(PV0i.x));
// 2
R1i.x = PV1i.w + 0x0000002c;
R1i.y = PV1i.w + 0x0000002a;
R1i.z = PV1i.w + 0x0000002b;
R1i.w = PV1i.w + 0x0000002d;
R5i.z = floatBitsToInt(roundEven(intBitsToFloat(PS1i)));
PS0i = R5i.z;
}
if( activeMaskStackC[3] == true ) {
R2i.xyzw = floatBitsToInt(uf_blockPS1[R1i.w].xyzw);
R3i.xyzw = floatBitsToInt(uf_blockPS1[R1i.x].xyzw);
R4i.xyzw = floatBitsToInt(uf_blockPS1[R1i.y].xyzw);
R1i.xyzw = floatBitsToInt(uf_blockPS1[R1i.z].xyzw);
}
if( activeMaskStackC[3] == true ) {
// 0
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.x), intBitsToFloat(R3i.x)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.x), intBitsToFloat(R2i.x)));
// 1
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(R3i.y)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.x), intBitsToFloat(R4i.x)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(R2i.y)) + intBitsToFloat(PV0i.y)));
PV1i.z = R123i.z;
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.x), intBitsToFloat(R1i.x)));
// 2
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.z),intBitsToFloat(R2i.z)) + intBitsToFloat(PV1i.z)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(R1i.y)) + intBitsToFloat(PV1i.w)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(R4i.y)) + intBitsToFloat(PV1i.y)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.z),intBitsToFloat(R3i.z)) + intBitsToFloat(PV1i.x)));
PV0i.w = R123i.w;
// 3
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.z),intBitsToFloat(R4i.z)) + intBitsToFloat(PV0i.z)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.z),intBitsToFloat(R1i.z)) + intBitsToFloat(PV0i.y)));
PV1i.y = R123i.y;
R127i.z = floatBitsToInt(intBitsToFloat(R3i.w) + intBitsToFloat(PV0i.w));
PV1i.w = floatBitsToInt(intBitsToFloat(R2i.w) + intBitsToFloat(PV0i.x));
// 4
PV0i.x = floatBitsToInt(intBitsToFloat(R1i.w) + intBitsToFloat(PV1i.y));
PV0i.w = floatBitsToInt(intBitsToFloat(R4i.w) + intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.w));
// 5
R5i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(PS0i)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS0i)));
R5i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PS0i)));
PS1i = R5i.y;
// 6
R5i.w = floatBitsToInt(intBitsToFloat(PV1i.y) + intBitsToFloat(0xbb03126f));
R5i.w = clampFI32(R5i.w);
}
if( activeMaskStackC[3] == true ) {
R5i.y = floatBitsToInt(textureShadow_5(textureUnitPS7, vec4(intBitsToFloat(R5i.x),intBitsToFloat(R5i.y),intBitsToFloat(R5i.z),intBitsToFloat(R5i.w))));
}
if( activeMaskStackC[3] == true ) {
// 0
backupReg0i = R0i.w;
R0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R5i.y)));
}
activeMaskStackC[2] = activeMaskStack[1] == true && activeMaskStackC[1] == true;
if( activeMaskStackC[2] == true ) {
// 0
PV0i.x = floatBitsToInt(-(intBitsToFloat(R0i.w)) + 1.0);
// 1
backupReg0i = R0i.w;
R0i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R12i.x)) + intBitsToFloat(backupReg0i)));
}
activeMaskStackC[1] = activeMaskStack[0] == true && activeMaskStackC[0] == true;
if( activeMaskStackC[1] == true ) {
R0i.y = floatBitsToInt(texture(textureUnitPS12, intBitsToFloat(R0i.xy)).y);
}
if( activeMaskStackC[1] == true ) {
// 0
R0i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.w),uf_blockPS10[3].z) + uf_blockPS10[1].y));
R0i.x = clampFI32(R0i.x);
R0i.z = 0x3f800000;
}
// export
passPixelColor5 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), intBitsToFloat(R0i.z));
}

View File

@ -0,0 +1,7 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = Shadows Workaround (for older Cemu versions)
path = "The Legend of Zelda: Breath of the Wild/Workarounds/GPU specific workarounds for OpenGL/AMD and Intel: Shadows (for older Cemu versions)"
description = Only enable this pack IF you have issues.|Reduces the severity of the bugged shadows on Intel and AMD GPUs with some combinations of Cemu versions and some driver versions.||Made by ethrillo and Cypher.
version = 6
rendererFilter = opengl

View File

@ -0,0 +1,581 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 cbbcf83b05c6d921
UNIFORM_BUFFER_LAYOUT(33, 1, 7) uniform uniformBlockPS1
{
vec4 uf_blockPS1[1024];
};
UNIFORM_BUFFER_LAYOUT(38, 1, 8) uniform uniformBlockPS6
{
vec4 uf_blockPS6[1024];
};
UNIFORM_BUFFER_LAYOUT(42, 1, 9) uniform uniformBlockPS10
{
vec4 uf_blockPS10[1024];
};
TEXTURE_LAYOUT(1, 1, 0) uniform sampler2D textureUnitPS1;
TEXTURE_LAYOUT(2, 1, 1) uniform sampler2D textureUnitPS2;
TEXTURE_LAYOUT(3, 1, 2) uniform sampler2D textureUnitPS3;
TEXTURE_LAYOUT(6, 1, 3) uniform sampler2D textureUnitPS6;
TEXTURE_LAYOUT(7, 1, 4) uniform sampler2DArray textureUnitPS7;
TEXTURE_LAYOUT(14, 1, 5) uniform sampler2D textureUnitPS14;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem5;
layout(location = 2) in vec4 passParameterSem6;
layout(location = 5) out vec4 passPixelColor5;
#ifdef VULKAN
layout(set = 1, binding = 6) uniform ufBlock
{
uniform vec4 uf_fragCoordScale;
};
#else
uniform vec2 uf_fragCoordScale;
#endif
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; }
float textureShadow_1(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_2(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_3(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_4(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
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 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;
bool activeMaskStack[2];
bool activeMaskStackC[3];
activeMaskStack[0] = false;
activeMaskStackC[0] = false;
activeMaskStackC[1] = false;
activeMaskStack[0] = true;
activeMaskStackC[0] = true;
activeMaskStackC[1] = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem5);
R2i = floatBitsToInt(passParameterSem6);
if( activeMaskStackC[1] == true ) {
R3i.w = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R0i.xy)).x);
R6i.x = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R0i.xy)).x);
R6i.z = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R0i.zw)).x);
R6i.w = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R0i.xy)).x);
R4i.xyzw = floatBitsToInt(texture(textureUnitPS3, intBitsToFloat(R2i.zw)).xyzw);
R2i.z = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R2i.zw)).w);
}
if( activeMaskStackC[1] == true ) {
// 0
backupReg0i = R4i.z;
R123i.x = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R5i.w)) + uf_blockPS1[14].x));
PV0i.x = R123i.x;
R124i.y = floatBitsToInt((intBitsToFloat(R4i.x) * 2.0 + -(1.0)));
R4i.z = floatBitsToInt((intBitsToFloat(R4i.y) * 2.0 + -(1.0)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.w),uf_blockPS1[16].x) + uf_blockPS1[14].x));
PV0i.w = R123i.w;
R3i.z = floatBitsToInt((intBitsToFloat(backupReg0i) * 2.0 + -(1.0)));
PS0i = R3i.z;
// 1
R6i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(PV0i.w))));
R7i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), -(intBitsToFloat(PV0i.w))));
R127i.z = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R5i.z)) + uf_blockPS1[14].x));
PV1i.z = R127i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R5i.x)) + uf_blockPS1[14].x));
R9i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)));
PS1i = R9i.z;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R124i.y),intBitsToFloat(R4i.z),intBitsToFloat(R3i.z),-0.0),vec4(intBitsToFloat(R124i.y),intBitsToFloat(R4i.z),intBitsToFloat(R3i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R126i.z = tempi.x;
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), -(intBitsToFloat(PV1i.z))));
PS0i = R126i.w;
// 3
backupReg0i = R127i.z;
backupReg1i = R127i.w;
backupReg1i = R127i.w;
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), -(intBitsToFloat(R127i.w))));
R127i.y = floatBitsToInt(-(intBitsToFloat(R127i.z)));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), -(intBitsToFloat(backupReg0i))));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), -(intBitsToFloat(backupReg1i))));
R125i.z = floatBitsToInt(-(intBitsToFloat(backupReg1i)));
PS1i = R125i.z;
// 4
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R6i.x),intBitsToFloat(R7i.y),intBitsToFloat(R9i.z),-0.0),vec4(intBitsToFloat(R6i.x),intBitsToFloat(R7i.y),intBitsToFloat(R9i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R124i.z = tempi.x;
R126i.y = floatBitsToInt(intBitsToFloat(R2i.z) * intBitsToFloat(0x437f0000));
PS0i = R126i.y;
// 5
R126i.x = floatBitsToInt(-(intBitsToFloat(R7i.y)) + intBitsToFloat(R127i.z));
R125i.y = floatBitsToInt(-(intBitsToFloat(R6i.x)) + intBitsToFloat(R126i.w));
R127i.z = floatBitsToInt(-(intBitsToFloat(R6i.x)) + intBitsToFloat(R127i.x));
PV1i.z = R127i.z;
R126i.w = floatBitsToInt(-(intBitsToFloat(R9i.z)) + intBitsToFloat(R127i.y));
PV1i.w = R126i.w;
R125i.x = floatBitsToInt(sqrt(intBitsToFloat(R126i.z)));
PS1i = R125i.x;
// 6
R127i.x = floatBitsToInt(-(intBitsToFloat(R9i.z)) + intBitsToFloat(R125i.z));
PV0i.x = R127i.x;
R127i.y = floatBitsToInt(-(intBitsToFloat(R7i.y)) + intBitsToFloat(R127i.w));
PV0i.y = R127i.y;
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.z)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.x), uf_blockPS6[43].x));
R125i.w = floatBitsToInt(sqrt(intBitsToFloat(R124i.z)));
PS0i = R125i.w;
// 7
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(PV0i.y)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.x), uf_blockPS6[45].x));
R124i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.y),uf_blockPS6[43].y) + intBitsToFloat(PV0i.w)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.x), intBitsToFloat(PV0i.x)));
R127i.w = int(intBitsToFloat(R126i.y));
PS1i = R127i.w;
// 8
backupReg0i = R126i.x;
R126i.x = PS1i & 0x0000001c;
R0i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.x)),intBitsToFloat(R125i.y)) + intBitsToFloat(R125i.z)));
R0i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.z)),intBitsToFloat(backupReg0i)) + intBitsToFloat(PV1i.x)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.y),uf_blockPS6[45].y) + intBitsToFloat(PV1i.y)));
PV0i.w = R123i.w;
R0i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.y)),intBitsToFloat(R126i.w)) + intBitsToFloat(PV1i.w)));
PS0i = R0i.x;
// 9
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R9i.z),uf_blockPS6[43].z) + intBitsToFloat(R124i.z)));
R127i.y = floatBitsToInt(-(intBitsToFloat(R9i.z)) * intBitsToFloat(0x3d4ccccd));
PV1i.y = R127i.y;
R127i.z = R127i.w & 0x00000002;
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R9i.z),uf_blockPS6[45].z) + intBitsToFloat(PV0i.w)));
R2i.w = 0x3f800000;
PS1i = R2i.w;
// 10
backupReg0i = R0i.y;
backupReg0i = R0i.y;
backupReg1i = R0i.z;
backupReg1i = R0i.z;
R124i.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R0i.x)),-(intBitsToFloat(backupReg0i)),-(intBitsToFloat(backupReg1i)),-0.0),vec4(-(intBitsToFloat(R0i.x)),-(intBitsToFloat(backupReg0i)),-(intBitsToFloat(backupReg1i)),0.0)));
PV0i.x = R124i.x;
PV0i.y = R124i.x;
PV0i.z = R124i.x;
PV0i.w = R124i.x;
R1i.x = floatBitsToInt((-(uf_blockPS6[53].w) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(PV1i.y)));
R1i.x = clampFI32(R1i.x);
PS0i = R1i.x;
// 11
R9i.x = floatBitsToInt(uf_blockPS6[43].w + intBitsToFloat(R127i.x));
R10i.z = floatBitsToInt(uf_blockPS6[45].w + intBitsToFloat(R127i.w));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(R125i.x));
// 12
R2i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.y), intBitsToFloat(PS1i)));
PV0i.x = R2i.x;
R1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.z), intBitsToFloat(PS1i)));
PV0i.y = R1i.y;
R1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(PS1i)));
R11i.w = floatBitsToInt((-(uf_blockPS6[53].z) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(R127i.y)));
R11i.w = clampFI32(R11i.w);
PS0i = floatBitsToInt(1.0 / intBitsToFloat(R125i.w));
// 13
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.x), intBitsToFloat(PS0i)));
PV1i.x = R127i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.y), intBitsToFloat(PS0i)));
PV1i.y = R127i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.z), intBitsToFloat(PS0i)));
R125i.w = PV0i.x;
R125i.w = floatBitsToInt(intBitsToFloat(R125i.w) * 2.0);
R124i.z = PV0i.y;
R124i.z = floatBitsToInt(intBitsToFloat(R124i.z) * 2.0);
PS1i = R124i.z;
// 14
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R2i.x),intBitsToFloat(R1i.y),intBitsToFloat(R1i.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(float(R126i.x));
// 15
backupReg0i = R127i.y;
R10i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R125i.w)) + intBitsToFloat(R127i.x)));
R127i.y = floatBitsToInt(intBitsToFloat(PS0i) * intBitsToFloat(0x3d124925));
R10i.w = floatBitsToInt(intBitsToFloat(PV0i.x) + 1.0);
R10i.w = clampFI32(R10i.w);
R9i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R124i.z)) + intBitsToFloat(backupReg0i)));
PS1i = R9i.y;
// 16
PS0i = floatBitsToInt(float(R127i.z));
PS0i = floatBitsToInt(intBitsToFloat(PS0i) / 2.0);
// 17
R0i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),-(intBitsToFloat(PS0i))) + intBitsToFloat(R127i.y)));
tempResultf = 1.0 / sqrt(intBitsToFloat(R124i.x));
R2i.z = floatBitsToInt(tempResultf);
PS1i = R2i.z;
}
if( activeMaskStackC[1] == true ) {
activeMaskStack[1] = activeMaskStack[0];
activeMaskStackC[2] = activeMaskStackC[1];
// 0
R7i.x = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].x, uf_blockPS10[2].w));
R6i.y = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].y, uf_blockPS10[2].w));
PV0i.z = floatBitsToInt(uf_blockPS10[2].z + 1.0);
// 1
R8i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].z, uf_blockPS10[2].w));
PV1i.z = R8i.z;
R1i.w = 0;
PV1i.w = R1i.w;
R9i.w = floatBitsToInt(-(intBitsToFloat(R1i.x)) + intBitsToFloat(PV0i.z));
R9i.w = clampFI32(R9i.w);
PS1i = R9i.w;
// 2
R1i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R2i.x),intBitsToFloat(R1i.y),intBitsToFloat(R1i.z),intBitsToFloat(R1i.z)),vec4(-(intBitsToFloat(R7i.x)),-(intBitsToFloat(R6i.y)),-(intBitsToFloat(PV1i.z)),-(intBitsToFloat(PV1i.w)))));
PV0i.x = R1i.x;
PV0i.y = R1i.x;
PV0i.z = R1i.x;
PV0i.w = R1i.x;
// 3
predResult = (1.0 > intBitsToFloat(R11i.w));
activeMaskStack[1] = predResult;
activeMaskStackC[2] = predResult == true && activeMaskStackC[1] == true;
}
else {
activeMaskStack[1] = false;
activeMaskStackC[2] = false;
}
if( activeMaskStackC[2] == true ) {
// 0
PV0i.x = ((-(intBitsToFloat(R9i.z)) > uf_blockPS1[58].x)?int(0xFFFFFFFF):int(0x0));
R127i.y = ((-(intBitsToFloat(R9i.z)) > uf_blockPS1[58].y)?int(0xFFFFFFFF):int(0x0));
PV0i.z = floatBitsToInt(intBitsToFloat(R2i.x) * 1.5);
PV0i.w = floatBitsToInt(intBitsToFloat(R1i.y) * 1.5);
PS0i = floatBitsToInt(intBitsToFloat(R1i.z) * 1.5);
// 1
backupReg0i = R2i.z;
backupReg1i = R1i.x;
R1i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R0i.x)),intBitsToFloat(R2i.z)) + intBitsToFloat(PV0i.z)));
R1i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R0i.y)),intBitsToFloat(R2i.z)) + intBitsToFloat(PV0i.w)));
R2i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R0i.z)),intBitsToFloat(backupReg0i)) + intBitsToFloat(PS0i)));
PV1i.w = PV0i.x & int(1);
PS1i = ((intBitsToFloat(0x3eb33333) > intBitsToFloat(backupReg1i))?int(0xFFFFFFFF):int(0x0));
// 2
R2i.x = floatBitsToInt((intBitsToFloat(R0i.w) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(0x3ac49ba6)));
R2i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R9i.z)),uf_blockPS1[17].y) + 1.0));
PV0i.z = PV1i.w - R127i.y;
R1i.w = ((PS1i == 0)?(0x3f800000):(0));
R2i.w = 0x3f000000;
PS0i = R2i.w;
// 3
PV1i.x = PV0i.z << 0x00000002;
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(R2i.z)));
R127i.w = floatBitsToInt(float(PV0i.z));
PS1i = R127i.w;
// 4
R0i.x = PV1i.x + 0x0000002d;
R0i.y = PV1i.x + 0x0000002c;
R0i.z = PV1i.x + 0x0000002b;
R0i.w = PV1i.x + 0x0000002a;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R1i.y)) + intBitsToFloat(PV1i.y)));
PS0i = R122i.x;
// 5
R1i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R1i.x)) + intBitsToFloat(PS0i)));
R6i.z = floatBitsToInt(roundEven(intBitsToFloat(R127i.w)));
PS1i = R6i.z;
}
if( activeMaskStackC[2] == true ) {
R3i.xyzw = floatBitsToInt(uf_blockPS1[R0i.x].xyzw);
R4i.xyzw = floatBitsToInt(uf_blockPS1[R0i.y].xyzw);
R5i.xyzw = floatBitsToInt(uf_blockPS1[R0i.w].xyzw);
R0i.xyzw = floatBitsToInt(uf_blockPS1[R0i.z].xyzw);
}
if( activeMaskStackC[2] == true ) {
// 0
R126i.y = floatBitsToInt(uf_blockPS6[53].y);
R126i.y = floatBitsToInt(intBitsToFloat(R126i.y) / 2.0);
PV0i.y = R126i.y;
R126i.z = floatBitsToInt(uf_blockPS6[53].x);
R126i.z = floatBitsToInt(intBitsToFloat(R126i.z) / 2.0);
tempResultf = 1.0 / sqrt(intBitsToFloat(R1i.z));
PS0i = floatBitsToInt(tempResultf);
// 1
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(PS0i)));
PV1i.x = R127i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), intBitsToFloat(PS0i)));
PV1i.y = R127i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(PS0i)));
PV1i.z = R127i.z;
R126i.w = floatBitsToInt(-(intBitsToFloat(PV0i.y)));
R7i.z = R6i.z;
PS1i = R7i.z;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.x),intBitsToFloat(R6i.y),intBitsToFloat(R8i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R125i.y = floatBitsToInt(-(intBitsToFloat(R126i.z)));
PS0i = R125i.y;
// 3
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(PV0i.x)) + 1.0));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R8i.z)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.z)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.y)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.y)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R7i.x)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.x)));
PV1i.w = R123i.w;
R8i.z = R6i.z;
PS1i = R8i.z;
// 4
backupReg0i = R126i.y;
R127i.x = floatBitsToInt(intBitsToFloat(PV1i.z) * intBitsToFloat(0x3b449ba7));
R126i.y = floatBitsToInt(intBitsToFloat(PV1i.y) * intBitsToFloat(0x3b449ba7));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(R1i.w)));
R127i.w = floatBitsToInt(intBitsToFloat(PV1i.w) * intBitsToFloat(0x3b449ba7));
R126i.x = backupReg0i;
PS0i = R126i.x;
// 5
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R2i.y)));
R1i.z = R6i.z;
// 6
backupReg0i = R127i.w;
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.y),intBitsToFloat(PV1i.x)) + intBitsToFloat(R9i.z)));
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(PV1i.x)) + intBitsToFloat(R7i.y)));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(PV1i.x)) + intBitsToFloat(R6i.x)));
PV0i.w = R127i.w;
// 7
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R4i.x)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R5i.x)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R3i.x)));
// 8
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R4i.y)) + intBitsToFloat(PV1i.x)));
PV0i.x = R123i.x;
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R5i.y)) + intBitsToFloat(PV1i.y)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R3i.y)) + intBitsToFloat(PV1i.w)));
PV0i.z = R123i.z;
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(R0i.x)));
// 9
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(R4i.z)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(R3i.z)) + intBitsToFloat(PV0i.z)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R0i.y)) + intBitsToFloat(PV0i.w)));
PV1i.z = R123i.z;
// 10
PV0i.x = floatBitsToInt(intBitsToFloat(R3i.w) + intBitsToFloat(PV1i.y));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(R5i.z)) + intBitsToFloat(R126i.y)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(R0i.z)) + intBitsToFloat(PV1i.z)));
PV0i.z = R123i.z;
R127i.w = floatBitsToInt(intBitsToFloat(R4i.w) + intBitsToFloat(PV1i.x));
// 11
PV1i.x = floatBitsToInt(intBitsToFloat(R5i.w) + intBitsToFloat(PV0i.y));
PV1i.y = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(PV0i.z));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PV0i.x));
// 12
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PS1i)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(PS1i)));
PV0i.y = R127i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(PS1i)));
PV0i.z = R127i.z;
// 13
R127i.x = floatBitsToInt(-(intBitsToFloat(R2i.x)) + intBitsToFloat(PV0i.x));
R127i.x = clampFI32(R127i.x);
PV1i.x = R127i.x;
R6i.y = floatBitsToInt((uf_blockPS6[53].y * 0.5 + intBitsToFloat(PV0i.y)));
R6i.x = floatBitsToInt((uf_blockPS6[53].x * 0.5 + intBitsToFloat(PV0i.z)));
PS1i = R6i.x;
// 14
R7i.x = floatBitsToInt(intBitsToFloat(R127i.z) + intBitsToFloat(R126i.z));
R7i.y = floatBitsToInt(intBitsToFloat(R127i.y) + intBitsToFloat(R126i.w));
R6i.w = PV1i.x;
R7i.w = PV1i.x;
PS0i = R7i.w;
// 15
R8i.x = floatBitsToInt(intBitsToFloat(R127i.z) + intBitsToFloat(R125i.y));
R8i.y = floatBitsToInt(intBitsToFloat(R127i.y) + intBitsToFloat(R126i.x));
R8i.w = R127i.x;
R1i.x = floatBitsToInt((-(uf_blockPS6[53].x) * 0.5 + intBitsToFloat(R127i.z)));
PS1i = R1i.x;
// 16
R1i.y = floatBitsToInt((-(uf_blockPS6[53].y) * 0.5 + intBitsToFloat(R127i.y)));
R1i.w = R127i.x;
}
if( activeMaskStackC[2] == true ) {
R6i.y = floatBitsToInt(textureShadow_1(textureUnitPS7, vec4(intBitsToFloat(R6i.x),intBitsToFloat(R6i.y),intBitsToFloat(R6i.z),intBitsToFloat(R6i.w))));
R7i.x = floatBitsToInt(textureShadow_2(textureUnitPS7, vec4(intBitsToFloat(R7i.x),intBitsToFloat(R7i.y),intBitsToFloat(R7i.z),intBitsToFloat(R7i.w))));
R8i.w = floatBitsToInt(textureShadow_3(textureUnitPS7, vec4(intBitsToFloat(R8i.x),intBitsToFloat(R8i.y),intBitsToFloat(R8i.z),intBitsToFloat(R8i.w))));
R1i.z = floatBitsToInt(textureShadow_4(textureUnitPS7, vec4(intBitsToFloat(R1i.x),intBitsToFloat(R1i.y),intBitsToFloat(R1i.z),intBitsToFloat(R1i.w))));
}
if( activeMaskStackC[2] == true ) {
// 0
PV0i.z = floatBitsToInt(intBitsToFloat(R6i.y) + intBitsToFloat(R7i.x));
PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) / 2.0);
// 1
R123i.z = floatBitsToInt((intBitsToFloat(R8i.w) * 0.5 + intBitsToFloat(PV0i.z)));
PV1i.z = R123i.z;
// 2
R127i.y = floatBitsToInt((intBitsToFloat(R1i.z) * 0.5 + intBitsToFloat(PV1i.z))/2.0);
PV0i.y = R127i.y;
// 3
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.y)) + 1.0);
// 4
R0i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),intBitsToFloat(R11i.w)) + intBitsToFloat(R127i.y)));
}
activeMaskStack[1] = activeMaskStack[1] == false;
activeMaskStackC[2] = activeMaskStack[1] == true && activeMaskStackC[1] == true;
if( activeMaskStackC[2] == true ) {
// 0
R0i.w = R2i.w;
}
activeMaskStackC[1] = activeMaskStack[0] == true && activeMaskStackC[0] == true;
if( activeMaskStackC[1] == true ) {
// 0
R0i.x = floatBitsToInt((intBitsToFloat(R9i.x) * intBitsToFloat(0x38d1b717) + 0.5));
R0i.y = floatBitsToInt((intBitsToFloat(R10i.z) * intBitsToFloat(0x3903126f) + 0.5));
PV0i.z = floatBitsToInt(-(intBitsToFloat(R9i.y)));
PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) / 2.0);
PV0i.w = R10i.x;
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) / 2.0);
R2i.z = R2i.w;
PS0i = R2i.z;
// 1
R1i.x = floatBitsToInt(intBitsToFloat(PV0i.w) + 0.5);
R1i.y = floatBitsToInt(intBitsToFloat(PV0i.z) + 0.5);
R2i.w = 0x3f800000;
}
if( activeMaskStackC[1] == true ) {
R0i.xyz = floatBitsToInt(textureLod(textureUnitPS14, intBitsToFloat(R0i.xy),0.0).xyz);
R1i.y = floatBitsToInt(textureLod(textureUnitPS1, intBitsToFloat(R1i.xy),0.0).x);
}
if( activeMaskStackC[1] == true ) {
// 0
backupReg0i = R0i.x;
backupReg1i = R0i.y;
backupReg2i = R0i.z;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i),intBitsToFloat(backupReg2i),-0.0),vec4(uf_blockPS6[42].x,uf_blockPS6[42].y,uf_blockPS6[42].z,0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R2i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),-(intBitsToFloat(R10i.w))) + intBitsToFloat(R1i.y)));
PS0i = R2i.y;
// 1
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
// 2
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.w)));
PV0i.z = R127i.z;
// 3
PV1i.y = floatBitsToInt(intBitsToFloat(R0i.w) + -(intBitsToFloat(PV0i.z)));
// 4
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(R9i.w)) + intBitsToFloat(R127i.z)));
PV0i.x = R123i.x;
// 5
R2i.x = floatBitsToInt(intBitsToFloat(PV0i.x) + uf_blockPS10[1].y);
R2i.x = clampFI32(R2i.x);
}
// export
passPixelColor5 = vec4(intBitsToFloat(R2i.x), intBitsToFloat(R2i.y), intBitsToFloat(R2i.z), intBitsToFloat(R2i.w));
}

View File

@ -0,0 +1,848 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 9c98a67271f8cc75
UNIFORM_BUFFER_LAYOUT(33, 1, 10) uniform uniformBlockPS1
{
vec4 uf_blockPS1[1024];
};
UNIFORM_BUFFER_LAYOUT(38, 1, 11) uniform uniformBlockPS6
{
vec4 uf_blockPS6[1024];
};
UNIFORM_BUFFER_LAYOUT(42, 1, 12) uniform uniformBlockPS10
{
vec4 uf_blockPS10[1024];
};
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
TEXTURE_LAYOUT(2, 1, 1) uniform sampler2D textureUnitPS2;
TEXTURE_LAYOUT(4, 1, 2) uniform sampler2D textureUnitPS4;
TEXTURE_LAYOUT(5, 1, 3) uniform sampler2D textureUnitPS5;
TEXTURE_LAYOUT(7, 1, 4) uniform sampler2DArray textureUnitPS7;
TEXTURE_LAYOUT(10, 1, 5) uniform sampler2D textureUnitPS10;
TEXTURE_LAYOUT(11, 1, 6) uniform sampler2D textureUnitPS11;
TEXTURE_LAYOUT(14, 1, 7) uniform sampler2D textureUnitPS14;
TEXTURE_LAYOUT(15, 1, 8) uniform sampler2D textureUnitPS15;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem2;
layout(location = 2) in vec4 passParameterSem5;
layout(location = 3) in vec4 passParameterSem6;
layout(location = 0) out vec4 passPixelColor0;
layout(location = 1) out vec4 passPixelColor1;
#ifdef VULKAN
layout(set = 1, binding = 9) uniform ufBlock
{
uniform vec4 uf_fragCoordScale;
};
#else
uniform vec2 uf_fragCoordScale;
#endif
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; }
float textureShadow_1(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_2(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R3i = ivec4(0);
ivec4 R4i = ivec4(0);
ivec4 R5i = ivec4(0);
ivec4 R6i = ivec4(0);
ivec4 R7i = ivec4(0);
ivec4 R8i = ivec4(0);
ivec4 R9i = ivec4(0);
ivec4 R10i = ivec4(0);
ivec4 R11i = ivec4(0);
ivec4 R12i = ivec4(0);
ivec4 R13i = ivec4(0);
ivec4 R14i = ivec4(0);
ivec4 R15i = ivec4(0);
ivec4 R16i = ivec4(0);
ivec4 R17i = ivec4(0);
ivec4 R18i = ivec4(0);
ivec4 R122i = ivec4(0);
ivec4 R123i = ivec4(0);
ivec4 R124i = ivec4(0);
ivec4 R125i = ivec4(0);
ivec4 R126i = ivec4(0);
ivec4 R127i = ivec4(0);
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
int PS0i = 0, PS1i = 0;
ivec4 tempi = ivec4(0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
bool activeMaskStack[3];
bool activeMaskStackC[4];
activeMaskStack[0] = false;
activeMaskStack[1] = false;
activeMaskStackC[0] = false;
activeMaskStackC[1] = false;
activeMaskStackC[2] = false;
activeMaskStack[0] = true;
activeMaskStackC[0] = true;
activeMaskStackC[1] = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem2);
R2i = floatBitsToInt(passParameterSem5);
R3i = floatBitsToInt(passParameterSem6);
if( activeMaskStackC[1] == true ) {
R4i.w = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.xy)).x);
R5i.x = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.xy)).x);
R5i.z = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.zw)).x);
R5i.w = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.xy)).x);
R3i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R3i.zw)).xyzw);
R13i.xy = floatBitsToInt(texture(textureUnitPS14, intBitsToFloat(R0i.xy)).xy);
}
if( activeMaskStackC[1] == true ) {
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R5i.w)) + uf_blockPS1[14].x));
PV0i.x = R123i.x;
R127i.y = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R5i.z)) + uf_blockPS1[14].x));
PV0i.y = R127i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.w),uf_blockPS1[16].x) + uf_blockPS1[14].x));
PV0i.z = R123i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R5i.x)) + uf_blockPS1[14].x));
R5i.x = floatBitsToInt((intBitsToFloat(R3i.x) * 2.0 + -(1.0)));
PS0i = R5i.x;
// 1
R1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(PV0i.z))));
PV1i.x = R1i.x;
R1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), -(intBitsToFloat(PV0i.z))));
R1i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)));
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), -(intBitsToFloat(PV0i.y))));
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), -(intBitsToFloat(PV0i.y))));
PS1i = R125i.w;
// 2
R127i.x = floatBitsToInt(-(intBitsToFloat(R127i.y)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), uf_blockPS6[43].x));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), uf_blockPS6[45].x));
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), -(intBitsToFloat(R127i.w))));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.w), -(intBitsToFloat(R127i.w))));
PS0i = R127i.y;
// 3
backupReg0i = R127i.w;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),uf_blockPS6[45].y) + intBitsToFloat(PV0i.z)));
PV1i.x = R123i.x;
R126i.y = floatBitsToInt(-(intBitsToFloat(R1i.x)) + intBitsToFloat(R126i.w));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),uf_blockPS6[43].y) + intBitsToFloat(PV0i.y)));
PV1i.z = R123i.z;
R127i.w = floatBitsToInt(-(intBitsToFloat(backupReg0i)));
R126i.x = floatBitsToInt(-(intBitsToFloat(R1i.y)) + intBitsToFloat(R125i.w));
PS1i = R126i.x;
// 4
backupReg0i = R127i.x;
R127i.x = floatBitsToInt(-(intBitsToFloat(R1i.z)) + intBitsToFloat(backupReg0i));
R125i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.z),uf_blockPS6[45].z) + intBitsToFloat(PV1i.x)));
R125i.z = floatBitsToInt(-(intBitsToFloat(R1i.x)) + intBitsToFloat(R124i.w));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.z),uf_blockPS6[43].z) + intBitsToFloat(PV1i.z)));
PV0i.w = R123i.w;
R127i.z = floatBitsToInt(-(intBitsToFloat(R1i.y)) + intBitsToFloat(R127i.y));
PS0i = R127i.z;
// 5
R9i.x = floatBitsToInt(uf_blockPS6[43].w + intBitsToFloat(PV0i.w));
PV1i.x = R9i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), uf_blockPS6[44].x));
R126i.z = floatBitsToInt(-(intBitsToFloat(R1i.z)) + intBitsToFloat(R127i.w));
PV1i.z = R126i.z;
R4i.w = floatBitsToInt((intBitsToFloat(R3i.y) * 2.0 + -(1.0)));
R5i.z = floatBitsToInt((intBitsToFloat(R3i.z) * 2.0 + -(1.0)));
PS1i = R5i.z;
// 6
R3i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),uf_blockPS6[39].z) + -(uf_blockPS6[39].x)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.x), intBitsToFloat(PV1i.z)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(R127i.z)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(R125i.z)));
R2i.y = floatBitsToInt(intBitsToFloat(R3i.w) * intBitsToFloat(0x437f0000));
PS0i = R2i.y;
// 7
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),uf_blockPS6[44].y) + intBitsToFloat(R127i.y)));
PV1i.x = R123i.x;
R0i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R126i.z)),intBitsToFloat(R126i.y)) + intBitsToFloat(PV0i.w)));
R4i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R125i.z)),intBitsToFloat(R126i.x)) + intBitsToFloat(PV0i.z)));
R5i.w = 0x3f800000;
R4i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.z)),intBitsToFloat(R127i.x)) + intBitsToFloat(PV0i.y)));
PS1i = R4i.x;
// 8
R2i.x = floatBitsToInt((-(intBitsToFloat(R1i.z)) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(0xc0600000)));
R2i.x = clampFI32(R2i.x);
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(R1i.z)));
R0i.z = floatBitsToInt(-(intBitsToFloat(R1i.z)) * intBitsToFloat(0x3d4ccccd));
PV0i.z = R0i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.z),uf_blockPS6[44].z) + intBitsToFloat(PV1i.x)));
PV0i.w = R123i.w;
R10i.x = floatBitsToInt(uf_blockPS1[0].y);
PS0i = R10i.x;
// 9
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R1i.y)) + intBitsToFloat(PV0i.y)));
PV1i.x = R123i.x;
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.z), intBitsToFloat(R5i.z)));
R15i.z = floatBitsToInt(uf_blockPS6[44].w + intBitsToFloat(PV0i.w));
PV1i.z = R15i.z;
R0i.w = floatBitsToInt((-(uf_blockPS6[53].w) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(PV0i.z)));
R0i.w = clampFI32(R0i.w);
R9i.w = R13i.x;
R9i.w = clampFI32(R9i.w);
PS1i = R9i.w;
// 10
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R1i.x)) + intBitsToFloat(PV1i.x)));
PV0i.x = R123i.x;
R12i.y = PV1i.z;
PV0i.y = R12i.y;
R9i.z = floatBitsToInt(uf_blockPS6[45].w + intBitsToFloat(R125i.y));
PV0i.z = R9i.z;
R6i.w = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R1i.z)), uf_blockPS1[17].y));
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.w),intBitsToFloat(R4i.w)) + intBitsToFloat(PV1i.y)));
PS0i = R122i.x;
// 11
R0i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.x),intBitsToFloat(R5i.x)) + intBitsToFloat(PS0i)));
R3i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),uf_blockPS6[39].z) + -(uf_blockPS6[39].y)));
R2i.z = floatBitsToInt(-(intBitsToFloat(PV0i.y)) + uf_blockPS6[39].w);
R3i.w = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R4i.z)), -(intBitsToFloat(R4i.z))));
R2i.w = floatBitsToInt(sqrt(intBitsToFloat(PV0i.x)));
PS1i = R2i.w;
}
if( activeMaskStackC[1] == true ) {
R3i.z = floatBitsToInt(textureLod(textureUnitPS11, intBitsToFloat(R3i.xy),0.0).x);
}
if( activeMaskStackC[1] == true ) {
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R0i.y)),-(intBitsToFloat(R0i.y))) + intBitsToFloat(R3i.w)));
PV0i.x = R123i.x;
R125i.y = floatBitsToInt(uf_blockPS10[2].z + 1.0);
R123i.w = floatBitsToInt((mul_nonIEEE(-(uf_blockPS6[39].w),intBitsToFloat(R3i.z)) + intBitsToFloat(R2i.z)));
PV0i.w = R123i.w;
PS0i = floatBitsToInt(1.0 / intBitsToFloat(R2i.w));
// 1
R11i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(PS0i)));
R11i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), intBitsToFloat(PS0i)));
PV1i.y = R11i.y;
R127i.z = floatBitsToInt(intBitsToFloat(PV0i.w) * 0.25);
R127i.z = clampFI32(R127i.z);
PV1i.z = R127i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R4i.x)),-(intBitsToFloat(R4i.x))) + intBitsToFloat(PV0i.x)));
R10i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(PS0i)));
PS1i = R10i.z;
// 2
PV0i.x = floatBitsToInt(-(intBitsToFloat(PV1i.z)) + 1.0);
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.y)),intBitsToFloat(PV1i.y)) + 1.0));
PV0i.y = R123i.y;
R16i.z = floatBitsToInt(-(intBitsToFloat(R0i.w)) + intBitsToFloat(R125i.y));
R16i.z = clampFI32(R16i.z);
R11i.z = floatBitsToInt((-(uf_blockPS6[53].z) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(R0i.z)));
R11i.z = clampFI32(R11i.z);
PS0i = R11i.z;
// 3
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.z)),intBitsToFloat(PV0i.x)) + intBitsToFloat(PV0i.x)));
PV1i.y = R123i.y;
R17i.z = floatBitsToInt(intBitsToFloat(R2i.x) + uf_blockPS10[3].y);
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.y));
R0i.z = floatBitsToInt(tempResultf);
PS1i = R0i.z;
// 4
R10i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.z)),intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.y)));
PV0i.w = R10i.w;
PS0i = int(intBitsToFloat(R2i.y));
// 5
PV1i.w = PS0i & int(1);
R11i.w = floatBitsToInt(-(intBitsToFloat(PV0i.w)) + 1.0);
PS1i = R11i.w;
// 6
R12i.z = ((PV1i.w == 0)?(0):(0x3f800000));
tempResultf = 1.0 / sqrt(intBitsToFloat(R0i.x));
PS0i = floatBitsToInt(tempResultf);
// 7
R3i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.x), intBitsToFloat(PS0i)));
R4i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.w), intBitsToFloat(PS0i)));
R13i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.z), intBitsToFloat(PS0i)));
R4i.w = floatBitsToInt(uf_blockPS10[2].w);
tempResultf = 1.0 / sqrt(intBitsToFloat(R127i.w));
R2i.w = floatBitsToInt(tempResultf);
PS1i = R2i.w;
}
if( activeMaskStackC[1] == true ) {
activeMaskStack[1] = activeMaskStack[0];
activeMaskStackC[2] = activeMaskStackC[1];
// 0
R5i.x = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].x, intBitsToFloat(R4i.w)));
PV0i.x = R5i.x;
R5i.y = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].y, intBitsToFloat(R4i.w)));
PV0i.y = R5i.y;
R14i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].z, intBitsToFloat(R4i.w)));
PV0i.z = R14i.z;
R0i.w = 0;
// 1
R127i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.y)),intBitsToFloat(PV0i.y)) + 1.0));
R2i.y = PV0i.z;
PV1i.y = R2i.y;
R2i.z = 0;
PV1i.z = R2i.z;
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R10i.z), intBitsToFloat(PV0i.z)));
R0i.x = PV0i.x;
PS1i = R0i.x;
// 2
R126i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R11i.x),intBitsToFloat(R10i.z),intBitsToFloat(R10i.z),-0.0),vec4(intBitsToFloat(PS1i),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = R126i.x;
PV0i.y = R126i.x;
PV0i.z = R126i.x;
PV0i.w = R126i.x;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R11i.y),intBitsToFloat(R5i.y)) + intBitsToFloat(PV1i.w)));
PS0i = R122i.x;
// 3
R10i.y = floatBitsToInt(uf_blockPS1[1].y);
R18i.z = floatBitsToInt(uf_blockPS1[2].y);
R12i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R11i.x),intBitsToFloat(R5i.x)) + intBitsToFloat(PS0i)));
tempResultf = 1.0 / sqrt(intBitsToFloat(R127i.x));
PS1i = floatBitsToInt(tempResultf);
// 4
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS1i), intBitsToFloat(R0i.z)));
// 5
R9i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R126i.x)));
// 6
predResult = (1.0 > intBitsToFloat(R11i.z));
activeMaskStack[1] = predResult;
activeMaskStackC[2] = predResult == true && activeMaskStackC[1] == true;
}
else {
activeMaskStack[1] = false;
activeMaskStackC[2] = false;
}
if( activeMaskStackC[2] == true ) {
// 0
PV0i.x = floatBitsToInt(intBitsToFloat(R3i.x) * 1.5);
R127i.y = ((-(intBitsToFloat(R1i.z)) > uf_blockPS1[58].y)?int(0xFFFFFFFF):int(0x0));
PV0i.z = ((-(intBitsToFloat(R1i.z)) > uf_blockPS1[58].x)?int(0xFFFFFFFF):int(0x0));
PV0i.w = floatBitsToInt(intBitsToFloat(R4i.y) * 1.5);
PS0i = floatBitsToInt(intBitsToFloat(R13i.z) * 1.5);
// 1
backupReg0i = R2i.w;
PV1i.x = PV0i.z & int(1);
R2i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R4i.x)),intBitsToFloat(R2i.w)) + intBitsToFloat(PV0i.x)));
R2i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R0i.y)),intBitsToFloat(R2i.w)) + intBitsToFloat(PV0i.w)));
R2i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R4i.z)),intBitsToFloat(backupReg0i)) + intBitsToFloat(PS0i)));
PV1i.w = R2i.w;
R122i.x = floatBitsToInt((intBitsToFloat(R6i.w) * 0.25 + 1.0));
PS1i = R122i.x;
// 2
R2i.x = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i));
R3i.y = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i));
R5i.z = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i));
R4i.w = PV1i.x - R127i.y;
PV0i.w = R4i.w;
PS0i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.w)));
// 3
PV1i.x = PV0i.w << 0x00000002;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R18i.z), intBitsToFloat(R13i.z)));
R4i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R13i.z), -(intBitsToFloat(R0i.w))));
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.z),intBitsToFloat(R2i.z)) + intBitsToFloat(PS0i)));
PS1i = R122i.x;
// 4
R0i.x = PV1i.x + 0x0000002d;
R0i.y = PV1i.x + 0x0000002b;
R0i.z = PV1i.x + 0x0000002c;
R0i.w = PV1i.x + 0x0000002a;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.y),intBitsToFloat(R2i.y)) + intBitsToFloat(PS1i)));
PS0i = R122i.x;
// 5
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R10i.x),intBitsToFloat(R10i.y),intBitsToFloat(R127i.y),-0.0),vec4(intBitsToFloat(R3i.x),intBitsToFloat(R4i.y),1.0,0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R3i.z = tempi.x;
tempResultf = 1.0 / sqrt(intBitsToFloat(PS0i));
R3i.w = floatBitsToInt(tempResultf);
PS1i = R3i.w;
}
if( activeMaskStackC[2] == true ) {
R6i.xyzw = floatBitsToInt(uf_blockPS1[R0i.x].xyzw);
R7i.xyzw = floatBitsToInt(uf_blockPS1[R0i.z].xyzw);
R8i.xyzw = floatBitsToInt(uf_blockPS1[R0i.w].xyzw);
R0i.xyzw = floatBitsToInt(uf_blockPS1[R0i.y].xyzw);
}
if( activeMaskStackC[2] == true ) {
// 0
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R3i.w)));
PV0i.x = R127i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(R3i.w)));
PV0i.y = R127i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.w), intBitsToFloat(R3i.w)));
PV0i.z = R127i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R10i.x)),intBitsToFloat(R3i.z)) + intBitsToFloat(R3i.x)));
PV0i.w = R123i.w;
R126i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R10i.y)),intBitsToFloat(R3i.z)) + intBitsToFloat(R4i.y)));
PS0i = R126i.w;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R5i.y),intBitsToFloat(R14i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R126i.y = tempi.x;
R126i.z = floatBitsToInt((intBitsToFloat(PV0i.w) * intBitsToFloat(0x3f19999a) + intBitsToFloat(R1i.x)));
PS1i = R126i.z;
// 2
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R5i.y)),intBitsToFloat(PV1i.x)) + intBitsToFloat(R127i.y)));
R125i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R18i.z)),intBitsToFloat(R3i.z)) + intBitsToFloat(R13i.z)));
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R5i.x)),intBitsToFloat(PV1i.x)) + intBitsToFloat(backupReg0i)));
PV0i.z = R123i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.x)),intBitsToFloat(PV1i.x)) + 1.0));
R127i.y = floatBitsToInt(float(R4i.w));
PS0i = R127i.y;
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R4i.y),intBitsToFloat(R13i.z),intBitsToFloat(R4i.z)),vec4(-(intBitsToFloat(R5i.x)),-(intBitsToFloat(R5i.y)),-(intBitsToFloat(R14i.z)),1.0)));
tempi.x = clampFI32(tempi.x);
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R2i.x)));
PS1i = R124i.y;
// 4
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((intBitsToFloat(R126i.w) * intBitsToFloat(0x3f19999a) + intBitsToFloat(R1i.y)));
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R14i.z)),intBitsToFloat(R126i.y)) + intBitsToFloat(R127i.z)));
PV0i.y = R123i.y;
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PV1i.x)));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R5i.z)));
R5i.z = floatBitsToInt(roundEven(intBitsToFloat(R127i.y)));
PS0i = R5i.z;
// 5
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R12i.z), intBitsToFloat(PV0i.z)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(R3i.y)));
R123i.w = floatBitsToInt((intBitsToFloat(R125i.y) * intBitsToFloat(0x3f19999a) + intBitsToFloat(R1i.z)));
PV1i.w = R123i.w;
// 6
R1i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.y),intBitsToFloat(PV1i.y)) + intBitsToFloat(R126i.z)));
PV0i.x = R1i.x;
R1i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),intBitsToFloat(PV1i.y)) + intBitsToFloat(R127i.x)));
R12i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.w)));
// 7
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R7i.x)));
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R8i.x)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R6i.x)));
// 8
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R7i.y)) + intBitsToFloat(PV1i.x)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R6i.y)) + intBitsToFloat(PV1i.w)));
PV0i.y = R123i.y;
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(R0i.x)));
// 9
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R7i.z)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R8i.y)) + intBitsToFloat(R124i.y)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R6i.z)) + intBitsToFloat(PV0i.y)));
PV1i.z = R123i.z;
// 10
PV0i.x = floatBitsToInt(intBitsToFloat(R6i.w) + intBitsToFloat(PV1i.z));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R0i.y)) + intBitsToFloat(R127i.w)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R8i.z)) + intBitsToFloat(PV1i.y)));
PV0i.z = R123i.z;
R127i.w = floatBitsToInt(intBitsToFloat(R7i.w) + intBitsToFloat(PV1i.x));
// 11
PV1i.x = floatBitsToInt(intBitsToFloat(R8i.w) + intBitsToFloat(PV0i.z));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R0i.z)) + intBitsToFloat(PV0i.y)));
PV1i.z = R123i.z;
R126i.w = floatBitsToInt(1.0 / intBitsToFloat(PV0i.x));
PS1i = R126i.w;
// 12
PV0i.x = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(PV1i.z));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PS1i)));
R5i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(PS1i)));
PS0i = R5i.x;
// 13
R5i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R126i.w)));
R5i.w = floatBitsToInt(intBitsToFloat(PV0i.z) + intBitsToFloat(0xbb03126f));
R5i.w = clampFI32(R5i.w);
}
if( activeMaskStackC[2] == true ) {
R6i.y = floatBitsToInt(textureShadow_1(textureUnitPS7, vec4(intBitsToFloat(R5i.x),intBitsToFloat(R5i.y),intBitsToFloat(R5i.z),intBitsToFloat(R5i.w))));
}
if( activeMaskStackC[2] == true ) {
activeMaskStack[2] = activeMaskStack[1];
activeMaskStackC[3] = activeMaskStackC[2];
// 0
PV0i.x = ((1.0 > intBitsToFloat(R6i.y))?int(0xFFFFFFFF):int(0x0));
// 1
R0i.w = ((R4i.w > 0)?(PV0i.x):(0));
// 2
predResult = (R0i.w != 0);
activeMaskStack[2] = predResult;
activeMaskStackC[3] = predResult == true && activeMaskStackC[2] == true;
}
else {
activeMaskStack[2] = false;
activeMaskStackC[3] = false;
}
if( activeMaskStackC[3] == true ) {
// 0
PV0i.z = int(-1) + R4i.w;
// 1
PV1i.y = PV0i.z << 0x00000002;
PS1i = floatBitsToInt(float(PV0i.z));
// 2
R0i.x = PV1i.y + 0x0000002a;
R0i.y = PV1i.y + 0x0000002d;
R0i.z = PV1i.y + 0x0000002c;
R0i.w = PV1i.y + 0x0000002b;
R5i.z = floatBitsToInt(roundEven(intBitsToFloat(PS1i)));
PS0i = R5i.z;
}
if( activeMaskStackC[3] == true ) {
R2i.xyzw = floatBitsToInt(uf_blockPS1[R0i.y].xyzw);
R3i.xyzw = floatBitsToInt(uf_blockPS1[R0i.z].xyzw);
R4i.xyzw = floatBitsToInt(uf_blockPS1[R0i.x].xyzw);
R0i.xyzw = floatBitsToInt(uf_blockPS1[R0i.w].xyzw);
}
if( activeMaskStackC[3] == true ) {
// 0
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(R2i.x)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(R3i.x)));
// 1
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R3i.y)) + intBitsToFloat(PV0i.y)));
PV1i.x = R123i.x;
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(R4i.x)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(R0i.x)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R2i.y)) + intBitsToFloat(PV0i.x)));
PV1i.w = R123i.w;
// 2
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R0i.y)) + intBitsToFloat(PV1i.z)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R3i.z)) + intBitsToFloat(PV1i.x)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R2i.z)) + intBitsToFloat(PV1i.w)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R4i.y)) + intBitsToFloat(PV1i.y)));
PV0i.w = R123i.w;
// 3
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R0i.z)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
R127i.y = floatBitsToInt(intBitsToFloat(R3i.w) + intBitsToFloat(PV0i.y));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R4i.z)) + intBitsToFloat(PV0i.w)));
PV1i.z = R123i.z;
PV1i.w = floatBitsToInt(intBitsToFloat(R2i.w) + intBitsToFloat(PV0i.z));
// 4
PV0i.x = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(PV1i.x));
PV0i.y = floatBitsToInt(intBitsToFloat(R4i.w) + intBitsToFloat(PV1i.z));
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.w));
// 5
R5i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(PS0i)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS0i)));
R5i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PS0i)));
PS1i = R5i.y;
// 6
R5i.w = floatBitsToInt(intBitsToFloat(PV1i.y) + intBitsToFloat(0xbb03126f));
R5i.w = clampFI32(R5i.w);
}
if( activeMaskStackC[3] == true ) {
R5i.x = floatBitsToInt(textureShadow_2(textureUnitPS7, vec4(intBitsToFloat(R5i.x),intBitsToFloat(R5i.y),intBitsToFloat(R5i.z),intBitsToFloat(R5i.w))));
}
if( activeMaskStackC[3] == true ) {
// 0
backupReg0i = R6i.y;
R6i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R5i.x)));
}
activeMaskStackC[2] = activeMaskStack[1] == true && activeMaskStackC[1] == true;
if( activeMaskStackC[2] == true ) {
// 0
PV0i.x = floatBitsToInt(-(intBitsToFloat(R6i.y)) + 1.0);
// 1
R5i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R11i.z)) + intBitsToFloat(R6i.y)));
}
activeMaskStackC[1] = activeMaskStack[0] == true && activeMaskStackC[0] == true;
if( activeMaskStackC[1] == true ) {
// 0
R0i.x = floatBitsToInt(intBitsToFloat(R9i.x) * intBitsToFloat(0x3a83126f));
R0i.y = floatBitsToInt(intBitsToFloat(R9i.z) * intBitsToFloat(0x3a83126f));
R127i.z = floatBitsToInt(intBitsToFloat(R12i.w) + -(intBitsToFloat(R9i.y)));
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R1i.z)),uf_blockPS6[26].x) + -(uf_blockPS6[26].y)));
R123i.w = clampFI32(R123i.w);
PV0i.w = R123i.w;
R1i.x = floatBitsToInt((intBitsToFloat(R9i.x) * intBitsToFloat(0x38d1b717) + 0.5));
PS0i = R1i.x;
// 1
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.w)) + 1.0);
R1i.y = floatBitsToInt((intBitsToFloat(R9i.z) * intBitsToFloat(0x3903126f) + 0.5));
R126i.z = floatBitsToInt(-(uf_blockPS6[27].w) + 1.0);
R2i.w = 0x3f800000;
R3i.w = floatBitsToInt(-(intBitsToFloat(R1i.z)) * intBitsToFloat(0x3ba3d70a));
PS1i = R3i.w;
// 2
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(PV1i.x)) + intBitsToFloat(R9i.y)));
PV0i.x = R123i.x;
PV0i.y = floatBitsToInt(intBitsToFloat(R1i.w) + intBitsToFloat(0xbe99999a));
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R1i.z)),uf_blockPS6[28].x) + -(uf_blockPS6[28].y)));
R123i.z = clampFI32(R123i.z);
PV0i.z = R123i.z;
R0i.w = floatBitsToInt((intBitsToFloat(0xbf59999a) * intBitsToFloat(R13i.y) + 1.0));
tempResultf = log2(intBitsToFloat(PV1i.x));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS0i = floatBitsToInt(tempResultf);
// 3
R127i.x = floatBitsToInt(-(intBitsToFloat(PV0i.z)) + 1.0);
PV1i.y = floatBitsToInt(mul_nonIEEE(uf_blockPS6[27].y, intBitsToFloat(PS0i)));
PV1i.z = floatBitsToInt(max(-(intBitsToFloat(PV0i.x)), intBitsToFloat(0xbf7d70a4)));
PV1i.z = floatBitsToInt(intBitsToFloat(PV1i.z) / 2.0);
R126i.w = floatBitsToInt(mul_nonIEEE(uf_blockPS6[27].x, intBitsToFloat(PS0i)));
R127i.y = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x40200001));
R127i.y = clampFI32(R127i.y);
PS1i = R127i.y;
// 4
PV0i.x = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x3dcccccd));
R123i.y = floatBitsToInt((-(intBitsToFloat(R1i.z)) * intBitsToFloat(0x3ba3d70a) + intBitsToFloat(0xbfe66666)));
PV0i.y = R123i.y;
R0i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R1i.z)),uf_blockPS6[18].x) + uf_blockPS6[17].w));
R0i.z = clampFI32(R0i.z);
R127i.w = floatBitsToInt(intBitsToFloat(PV1i.z) + 0.5);
PV0i.w = R127i.w;
PS0i = floatBitsToInt(exp2(intBitsToFloat(PV1i.y)));
// 5
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.w)) + 1.0);
R123i.y = floatBitsToInt((intBitsToFloat(PV0i.w) * intBitsToFloat(0xbc996e30) + intBitsToFloat(0x3d981626)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),intBitsToFloat(PS0i)) + uf_blockPS6[27].w)/2.0);
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(PV0i.y)) + intBitsToFloat(PV0i.y)));
R123i.w = clampFI32(R123i.w);
PV1i.w = R123i.w;
tempResultf = log2(intBitsToFloat(R127i.x));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1i = floatBitsToInt(tempResultf);
// 6
R127i.x = floatBitsToInt((intBitsToFloat(R127i.y) * intBitsToFloat(0x3dcccccd) + intBitsToFloat(PV1i.w)));
PV0i.x = R127i.x;
R2i.y = floatBitsToInt(intBitsToFloat(PV1i.z) + 0.5);
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),intBitsToFloat(PV1i.y)) + intBitsToFloat(0xbe593484)));
PV0i.z = R123i.z;
R125i.w = floatBitsToInt(mul_nonIEEE(uf_blockPS6[29].x, intBitsToFloat(PS1i)));
PS0i = floatBitsToInt(sqrt(intBitsToFloat(PV1i.x)));
// 7
PV1i.x = floatBitsToInt(intBitsToFloat(PS0i) * intBitsToFloat(0x3f22f983));
R127i.y = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + 1.0);
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R18i.z), intBitsToFloat(R10i.z)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),intBitsToFloat(PV0i.z)) + intBitsToFloat(0x3fc90da4)));
PV1i.w = R123i.w;
R125i.z = floatBitsToInt(exp2(intBitsToFloat(R126i.w)));
PS1i = R125i.z;
// 8
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.x),intBitsToFloat(R12i.y),intBitsToFloat(R9i.z),intBitsToFloat(R2i.w)),vec4(uf_blockPS1[37].x,uf_blockPS1[37].y,uf_blockPS1[37].z,uf_blockPS1[37].w)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R2i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),-(intBitsToFloat(PV1i.w))) + 1.0));
PS0i = R2i.x;
// 9
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.x),intBitsToFloat(R12i.y),intBitsToFloat(R9i.z),intBitsToFloat(R2i.w)),vec4(uf_blockPS1[35].x,uf_blockPS1[35].y,uf_blockPS1[35].z,uf_blockPS1[35].w)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R126i.z = floatBitsToInt(1.0 / intBitsToFloat(PV0i.x));
PS1i = R126i.z;
// 10
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.x),intBitsToFloat(R12i.y),intBitsToFloat(R9i.z),intBitsToFloat(R2i.w)),vec4(uf_blockPS1[36].x,uf_blockPS1[36].y,uf_blockPS1[36].z,uf_blockPS1[36].w)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R3i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(PS1i)));
PS0i = R3i.x;
// 11
R4i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.y),intBitsToFloat(R11i.y)) + intBitsToFloat(R127i.z)));
R3i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R126i.z)));
R1i.z = floatBitsToInt((mul_nonIEEE(uf_blockPS6[27].z,-(intBitsToFloat(R125i.z))) + uf_blockPS6[27].z));
R1i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(R9i.w)) + intBitsToFloat(R127i.x)));
R3i.z = floatBitsToInt(exp2(intBitsToFloat(R125i.w)));
PS1i = R3i.z;
}
if( activeMaskStackC[1] == true ) {
R0i.x = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R0i.xy)).x);
R5i.xyz = floatBitsToInt(textureLod(textureUnitPS15, intBitsToFloat(R1i.xy),0.0).xyz);
R2i.xyz = floatBitsToInt(texture(textureUnitPS10, intBitsToFloat(R2i.xy)).xyz);
R3i.w = floatBitsToInt(textureLod(textureUnitPS4, intBitsToFloat(R3i.xy),intBitsToFloat(R3i.w)).x);
}
if( activeMaskStackC[1] == true ) {
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.x),intBitsToFloat(R11i.x)) + intBitsToFloat(R4i.x)));
R123i.x = clampFI32(R123i.x);
PV0i.x = R123i.x;
R3i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R1i.w)));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(R0i.w)));
PV0i.z = R126i.z;
R2i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(R1i.w)));
tempResultf = log2(intBitsToFloat(R0i.z));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS0i = floatBitsToInt(tempResultf);
// 1
backupReg0i = R0i.x;
PV1i.x = floatBitsToInt(mul_nonIEEE(uf_blockPS6[18].y, intBitsToFloat(PS0i)));
R127i.y = floatBitsToInt(-(intBitsToFloat(PV0i.z)) + 1.0);
R0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R1i.w)));
R123i.w = floatBitsToInt((intBitsToFloat(backupReg0i) * 2.0 + -(1.0)));
PV1i.w = R123i.w;
tempResultf = log2(intBitsToFloat(PV0i.x));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1i = floatBitsToInt(tempResultf);
// 2
R127i.x = floatBitsToInt(intBitsToFloat(R3i.w) + uf_blockPS10[1].z);
R127i.x = clampFI32(R127i.x);
R6i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R11i.w),intBitsToFloat(R17i.z)) + intBitsToFloat(R10i.w)));
R6i.y = clampFI32(R6i.y);
R2i.z = floatBitsToInt((intBitsToFloat(PV1i.w) * intBitsToFloat(0x41c80000) + intBitsToFloat(R15i.z)));
PV0i.w = floatBitsToInt(mul_nonIEEE(uf_blockPS6[29].z, intBitsToFloat(PS1i)));
R125i.w = floatBitsToInt(exp2(intBitsToFloat(PV1i.x)));
PS0i = R125i.w;
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R5i.y),intBitsToFloat(R5i.z),-0.0),vec4(uf_blockPS6[42].x,uf_blockPS6[42].y,uf_blockPS6[42].z,0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
PS1i = floatBitsToInt(exp2(intBitsToFloat(PV0i.w)));
// 4
R123i.y = floatBitsToInt((mul_nonIEEE(-(uf_blockPS6[29].w),intBitsToFloat(PS1i)) + 1.0));
PV0i.y = R123i.y;
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.w), uf_blockPS6[16].w));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(PV1i.x)));
R6i.w = 0;
PS0i = R6i.w;
// 5
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R3i.z)),intBitsToFloat(PV0i.y)) + intBitsToFloat(PV0i.y)));
PV1i.x = R123i.x;
R5i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R13i.y), intBitsToFloat(PV0i.z)));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(PV0i.w)));
PV1i.z = R127i.z;
R4i.w = 0x3f800000;
// 6
PV0i.x = floatBitsToInt(intBitsToFloat(R5i.w) + -(intBitsToFloat(PV1i.z)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), uf_blockPS6[30].w));
// 7
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R16i.z)) + intBitsToFloat(R127i.z)));
PV1i.y = R123i.y;
R1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R0i.w)));
PV1i.w = R1i.w;
// 8
R123i.x = floatBitsToInt((mul_nonIEEE(uf_blockPS10[3].z,intBitsToFloat(PV1i.y)) + uf_blockPS10[1].y));
R123i.x = clampFI32(R123i.x);
PV0i.x = R123i.x;
R2i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),-(intBitsToFloat(PV1i.w))) + intBitsToFloat(R126i.z)));
R3i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.w)),intBitsToFloat(R127i.y)) + intBitsToFloat(R127i.y)));
// 9
R6i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PV0i.x)));
}
if( activeMaskStackC[1] == true ) {
// 0
PV0i.y = floatBitsToInt(-(intBitsToFloat(R2i.z)) + uf_blockPS6[52].x);
// 1
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),uf_blockPS6[15].x) + uf_blockPS6[14].w));
R123i.x = clampFI32(R123i.x);
PV1i.x = R123i.x;
// 2
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), uf_blockPS6[13].w));
// 3
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R0i.w)));
// 4
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(R3i.w)));
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.y)),intBitsToFloat(R3i.w)) + intBitsToFloat(R3i.w)));
PV0i.z = R123i.z;
// 5
PV1i.x = floatBitsToInt(mul_nonIEEE(uf_blockPS6[13].z, intBitsToFloat(PV0i.x)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.y), intBitsToFloat(PV0i.z)));
PV1i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS6[13].y, intBitsToFloat(PV0i.x)));
PV1i.w = floatBitsToInt(mul_nonIEEE(uf_blockPS6[13].x, intBitsToFloat(PV0i.x)));
R6i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R5i.y)),intBitsToFloat(PV0i.z)) + intBitsToFloat(PV0i.z)));
PS1i = R6i.z;
// 6
R123i.x = floatBitsToInt((mul_nonIEEE(uf_blockPS6[16].x,intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.w)));
PV0i.x = R123i.x;
R123i.z = floatBitsToInt((mul_nonIEEE(uf_blockPS6[16].z,intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.x)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(uf_blockPS6[16].y,intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.z)));
PV0i.w = R123i.w;
// 7
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.z),intBitsToFloat(R2i.y)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.w),intBitsToFloat(R2i.y)) + intBitsToFloat(PV0i.z)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.y),intBitsToFloat(R2i.y)) + intBitsToFloat(PV0i.w)));
PV1i.w = R123i.w;
// 8
R4i.x = floatBitsToInt((mul_nonIEEE(uf_blockPS6[30].x,intBitsToFloat(R1i.w)) + intBitsToFloat(PV1i.x)));
PV0i.x = R4i.x;
R4i.y = floatBitsToInt((mul_nonIEEE(uf_blockPS6[30].y,intBitsToFloat(R1i.w)) + intBitsToFloat(PV1i.w)));
PV0i.y = R4i.y;
R4i.z = floatBitsToInt((mul_nonIEEE(uf_blockPS6[30].z,intBitsToFloat(R1i.w)) + intBitsToFloat(PV1i.z)));
PV0i.z = R4i.z;
// 9
R1i.xyz = ivec3(PV0i.x,PV0i.y,PV0i.z);
R1i.w = R4i.w;
// 10
R0i.xyz = ivec3(R6i.x,R6i.y,R6i.z);
R0i.w = R6i.w;
}
// export
passPixelColor0 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), intBitsToFloat(R0i.w));
passPixelColor1 = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w));
}

View File

@ -0,0 +1,723 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 a73d770e3204e2e6
UNIFORM_BUFFER_LAYOUT(33, 1, 10) uniform uniformBlockPS1
{
vec4 uf_blockPS1[1024];
};
UNIFORM_BUFFER_LAYOUT(38, 1, 11) uniform uniformBlockPS6
{
vec4 uf_blockPS6[1024];
};
UNIFORM_BUFFER_LAYOUT(42, 1, 12) uniform uniformBlockPS10
{
vec4 uf_blockPS10[1024];
};
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
TEXTURE_LAYOUT(1, 1, 1) uniform sampler2D textureUnitPS1;
TEXTURE_LAYOUT(2, 1, 2) uniform sampler2D textureUnitPS2;
TEXTURE_LAYOUT(4, 1, 3) uniform sampler2D textureUnitPS4;
TEXTURE_LAYOUT(5, 1, 4) uniform sampler2D textureUnitPS5;
TEXTURE_LAYOUT(6, 1, 5) uniform sampler2DArray textureUnitPS6;
TEXTURE_LAYOUT(9, 1, 6) uniform sampler2D textureUnitPS9;
TEXTURE_LAYOUT(12, 1, 7) uniform sampler2D textureUnitPS12;
TEXTURE_LAYOUT(13, 1, 8) uniform sampler2D textureUnitPS13;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem2;
layout(location = 2) in vec4 passParameterSem5;
layout(location = 3) in vec4 passParameterSem6;
layout(location = 0) out vec4 passPixelColor0;
layout(location = 1) out vec4 passPixelColor1;
layout(location = 2) out vec4 passPixelColor2;
#ifdef VULKAN
layout(set = 1, binding = 9) uniform ufBlock
{
uniform vec4 uf_fragCoordScale;
};
#else
uniform vec2 uf_fragCoordScale;
#endif
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; }
float textureShadow_1(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
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;
bool activeMaskStack[2];
bool activeMaskStackC[3];
activeMaskStack[0] = false;
activeMaskStackC[0] = false;
activeMaskStackC[1] = false;
activeMaskStack[0] = true;
activeMaskStackC[0] = true;
activeMaskStackC[1] = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem2);
R2i = floatBitsToInt(passParameterSem5);
R3i = floatBitsToInt(passParameterSem6);
if( activeMaskStackC[1] == true ) {
R4i.w = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.xy)).x);
R5i.x = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.xy)).x);
R5i.z = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.zw)).x);
R5i.w = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.xy)).x);
R6i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R3i.zw)).xyzw);
R3i.z = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R3i.zw)).w);
R7i.xy = floatBitsToInt(texture(textureUnitPS12, intBitsToFloat(R0i.xy)).xy);
}
if( activeMaskStackC[1] == true ) {
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R5i.w)) + uf_blockPS1[14].x));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.w),uf_blockPS1[16].x) + uf_blockPS1[14].x));
PV0i.y = R123i.y;
R127i.z = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R5i.x)) + uf_blockPS1[14].x));
R127i.w = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R5i.z)) + uf_blockPS1[14].x));
R5i.x = floatBitsToInt((intBitsToFloat(R6i.x) * 2.0 + -(1.0)));
PS0i = R5i.x;
// 1
R1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(PV0i.y))));
PV1i.x = R1i.x;
R1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), -(intBitsToFloat(PV0i.y))));
PV1i.y = R1i.y;
R8i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)));
PV1i.z = R8i.z;
R124i.w = floatBitsToInt((intBitsToFloat(R6i.y) * 2.0 + -(1.0)));
R124i.z = floatBitsToInt((intBitsToFloat(R6i.z) * 2.0 + -(1.0)));
PS1i = R124i.z;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), -(intBitsToFloat(R127i.w))));
PS0i = R127i.y;
// 3
R127i.x = floatBitsToInt(-(intBitsToFloat(R127i.w)));
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.w), -(intBitsToFloat(R127i.z))));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), -(intBitsToFloat(R127i.z))));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), -(intBitsToFloat(R127i.w))));
PS1i = floatBitsToInt(sqrt(intBitsToFloat(PV0i.x)));
// 4
backupReg0i = R127i.z;
R125i.x = floatBitsToInt(intBitsToFloat(R3i.z) * intBitsToFloat(0x437f0000));
R125i.y = floatBitsToInt(-(intBitsToFloat(R1i.x)) + intBitsToFloat(R127i.y));
R127i.z = floatBitsToInt(-(intBitsToFloat(R1i.y)) + intBitsToFloat(PV1i.w));
R127i.w = floatBitsToInt(-(intBitsToFloat(backupReg0i)));
R126i.w = floatBitsToInt(1.0 / intBitsToFloat(PS1i));
PS0i = R126i.w;
// 5
R124i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R124i.w),intBitsToFloat(R124i.z),-0.0),vec4(intBitsToFloat(R5i.x),intBitsToFloat(R124i.w),intBitsToFloat(R124i.z),0.0)));
PV1i.x = R124i.x;
PV1i.y = R124i.x;
PV1i.z = R124i.x;
PV1i.w = R124i.x;
R127i.y = floatBitsToInt(-(intBitsToFloat(R8i.z)) + intBitsToFloat(R127i.x));
PS1i = R127i.y;
// 6
backupReg0i = R126i.z;
R127i.x = floatBitsToInt(-(intBitsToFloat(R1i.y)) + intBitsToFloat(R126i.y));
PV0i.x = R127i.x;
R8i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), intBitsToFloat(R126i.w)));
PV0i.y = R8i.y;
R126i.z = floatBitsToInt(-(intBitsToFloat(R8i.z)) + intBitsToFloat(R127i.w));
PV0i.z = R126i.z;
R125i.w = floatBitsToInt(-(intBitsToFloat(R1i.x)) + intBitsToFloat(backupReg0i));
PV0i.w = R125i.w;
R8i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(R126i.w)));
PS0i = R8i.x;
// 7
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PV0i.z)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), uf_blockPS6[44].x));
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(PV0i.x)));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PV0i.w)));
R2i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.y)),intBitsToFloat(PV0i.y)) + 1.0));
PS1i = R2i.w;
// 8
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),uf_blockPS6[44].y) + intBitsToFloat(PV1i.y)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), uf_blockPS6[43].x));
R9i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.z), intBitsToFloat(R126i.w)));
R126i.w = floatBitsToInt(-(intBitsToFloat(R8i.z)) * intBitsToFloat(0x3d4ccccd));
R0i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(R127i.y)) + intBitsToFloat(PV1i.x)));
PS0i = R0i.x;
// 9
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),uf_blockPS6[43].y) + intBitsToFloat(PV0i.y)));
R0i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R126i.z)),intBitsToFloat(R125i.y)) + intBitsToFloat(R127i.w)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), uf_blockPS6[45].x));
R5i.w = 0x3f800000;
R0i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R125i.w)),intBitsToFloat(R127i.z)) + intBitsToFloat(R125i.z)));
PS1i = R0i.z;
// 10
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),uf_blockPS6[45].y) + intBitsToFloat(PV1i.z)));
PV0i.y = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PS1i)), -(intBitsToFloat(PS1i))));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.z),uf_blockPS6[44].z) + intBitsToFloat(backupReg0i)));
R9i.x = 0;
PS0i = R9i.x;
// 11
backupReg0i = R0i.x;
backupReg0i = R0i.x;
backupReg1i = R0i.y;
backupReg1i = R0i.y;
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(backupReg0i)),-(intBitsToFloat(backupReg1i)),intBitsToFloat(PV0i.y),-0.0),vec4(-(intBitsToFloat(backupReg0i)),-(intBitsToFloat(backupReg1i)),1.0,0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R0i.w = tempi.x;
R125i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.z),uf_blockPS6[43].z) + intBitsToFloat(R126i.x)));
PS1i = R125i.w;
// 12
R125i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.z),uf_blockPS6[45].z) + intBitsToFloat(R127i.x)));
R10i.z = floatBitsToInt(uf_blockPS6[44].w + intBitsToFloat(R127i.w));
R9i.w = R7i.x;
R9i.w = clampFI32(R9i.w);
PS0i = int(intBitsToFloat(R125i.x));
// 13
backupReg0i = R126i.w;
R10i.x = floatBitsToInt(uf_blockPS1[0].y);
R2i.y = floatBitsToInt((-(uf_blockPS6[53].w) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(R126i.w)));
R2i.y = clampFI32(R2i.y);
R127i.z = PS0i & 0x0000001c;
R126i.w = PS0i & 0x00000002;
R7i.w = floatBitsToInt((-(uf_blockPS6[53].z) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(backupReg0i)));
R7i.w = clampFI32(R7i.w);
PS1i = R7i.w;
// 14
R9i.y = floatBitsToInt(uf_blockPS1[1].y);
R11i.z = floatBitsToInt(uf_blockPS1[2].y);
PS0i = floatBitsToInt(sqrt(intBitsToFloat(R124i.x)));
// 15
R11i.x = floatBitsToInt(uf_blockPS6[43].w + intBitsToFloat(R125i.w));
R10i.y = R10i.z;
R12i.z = floatBitsToInt(uf_blockPS6[45].w + intBitsToFloat(R125i.y));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PS0i));
// 16
R2i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.x), intBitsToFloat(PS1i)));
R3i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.w), intBitsToFloat(PS1i)));
R2i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(PS1i)));
tempResultf = 1.0 / sqrt(intBitsToFloat(R2i.w));
R3i.z = floatBitsToInt(tempResultf);
PS0i = R3i.z;
// 17
PS1i = floatBitsToInt(float(R127i.z));
// 18
PV0i.x = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x3d124925));
PS0i = floatBitsToInt(float(R126i.w));
PS0i = floatBitsToInt(intBitsToFloat(PS0i) / 2.0);
// 19
R5i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),-(intBitsToFloat(PS0i))) + intBitsToFloat(PV0i.x)));
tempResultf = 1.0 / sqrt(intBitsToFloat(R0i.w));
R4i.z = floatBitsToInt(tempResultf);
PS1i = R4i.z;
}
if( activeMaskStackC[1] == true ) {
activeMaskStack[1] = activeMaskStack[0];
activeMaskStackC[2] = activeMaskStackC[1];
// 0
R12i.x = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].x, uf_blockPS10[2].w));
PV0i.x = R12i.x;
R11i.y = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].y, uf_blockPS10[2].w));
PV0i.y = R11i.y;
R127i.z = floatBitsToInt(uf_blockPS10[2].z + 1.0);
// 1
R124i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.y)),intBitsToFloat(PV0i.y)) + 1.0));
R1i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].z, uf_blockPS10[2].w));
PV1i.z = R1i.z;
R0i.w = 0;
PV1i.w = R0i.w;
R3i.x = PV0i.x;
PS1i = R3i.x;
// 2
backupReg0i = R2i.y;
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.z), intBitsToFloat(PV1i.z)));
R2i.y = PV1i.z;
PV0i.y = R2i.y;
R6i.z = 0;
PV0i.z = R6i.z;
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), -(intBitsToFloat(PV1i.w))));
R7i.z = floatBitsToInt(-(intBitsToFloat(backupReg0i)) + intBitsToFloat(R127i.z));
R7i.z = clampFI32(R7i.z);
PS0i = R7i.z;
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R8i.x),intBitsToFloat(R9i.z),intBitsToFloat(R9i.z),-0.0),vec4(intBitsToFloat(R3i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R124i.w = tempi.x;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.y),intBitsToFloat(R11i.y)) + intBitsToFloat(PV0i.x)));
PS1i = R122i.x;
// 4
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R2i.x),intBitsToFloat(R3i.y),intBitsToFloat(R2i.z),intBitsToFloat(R126i.w)),vec4(-(intBitsToFloat(R12i.x)),-(intBitsToFloat(R11i.y)),-(intBitsToFloat(R1i.z)),1.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R0i.w = tempi.x;
R8i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.x),intBitsToFloat(R12i.x)) + intBitsToFloat(PS1i)));
PS0i = R8i.w;
// 5
tempResultf = 1.0 / sqrt(intBitsToFloat(R124i.x));
PS1i = floatBitsToInt(tempResultf);
// 6
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS1i), intBitsToFloat(R3i.z)));
// 7
R7i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R124i.w)));
// 8
predResult = (1.0 > intBitsToFloat(R7i.w));
activeMaskStack[1] = predResult;
activeMaskStackC[2] = predResult == true && activeMaskStackC[1] == true;
}
else {
activeMaskStack[1] = false;
activeMaskStackC[2] = false;
}
if( activeMaskStackC[2] == true ) {
// 0
PV0i.x = ((-(intBitsToFloat(R8i.z)) > uf_blockPS1[58].x)?int(0xFFFFFFFF):int(0x0));
PV0i.y = floatBitsToInt(intBitsToFloat(R2i.x) * 1.5);
R127i.z = ((-(intBitsToFloat(R8i.z)) > uf_blockPS1[58].y)?int(0xFFFFFFFF):int(0x0));
PV0i.w = floatBitsToInt(intBitsToFloat(R3i.y) * 1.5);
PS0i = floatBitsToInt(intBitsToFloat(R2i.z) * 1.5);
// 1
backupReg0i = R0i.w;
R2i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R0i.x)),intBitsToFloat(R4i.z)) + intBitsToFloat(PV0i.y)));
R2i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R0i.y)),intBitsToFloat(R4i.z)) + intBitsToFloat(PV0i.w)));
R2i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R0i.z)),intBitsToFloat(R4i.z)) + intBitsToFloat(PS0i)));
PV1i.z = R2i.z;
PV1i.w = PV0i.x & int(1);
PS1i = ((intBitsToFloat(0x3eb33333) > intBitsToFloat(backupReg0i))?int(0xFFFFFFFF):int(0x0));
// 2
R3i.x = floatBitsToInt((intBitsToFloat(R5i.z) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(0x3ac49ba6)));
R3i.y = PV1i.w - R127i.z;
PV0i.y = R3i.y;
R3i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R8i.z)),uf_blockPS1[17].y) + 1.0));
R3i.w = ((PS1i == 0)?(0x3f800000):(0));
PS0i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(PV1i.z)));
// 3
PV1i.x = PV0i.y << 0x00000002;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.y),intBitsToFloat(R2i.y)) + intBitsToFloat(PS0i)));
PS1i = R122i.x;
// 4
R0i.x = PV1i.x + 0x0000002d;
R0i.y = PV1i.x + 0x0000002b;
R0i.z = PV1i.x + 0x0000002c;
R0i.w = PV1i.x + 0x0000002a;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.x),intBitsToFloat(R2i.x)) + intBitsToFloat(PS1i)));
PS0i = R122i.x;
// 5
tempResultf = 1.0 / sqrt(intBitsToFloat(PS0i));
R2i.w = floatBitsToInt(tempResultf);
PS1i = R2i.w;
}
if( activeMaskStackC[2] == true ) {
R4i.xyzw = floatBitsToInt(uf_blockPS1[R0i.x].xyzw);
R5i.xyzw = floatBitsToInt(uf_blockPS1[R0i.z].xyzw);
R6i.xyzw = floatBitsToInt(uf_blockPS1[R0i.w].xyzw);
R0i.xyzw = floatBitsToInt(uf_blockPS1[R0i.y].xyzw);
}
if( activeMaskStackC[2] == true ) {
// 0
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R2i.w)));
PV0i.x = R127i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R2i.w)));
PV0i.y = R127i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(R2i.w)));
PV0i.z = R127i.z;
PS0i = floatBitsToInt(float(R3i.y));
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R12i.x),intBitsToFloat(R11i.y),intBitsToFloat(R1i.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;
R2i.z = floatBitsToInt(roundEven(intBitsToFloat(PS0i)));
PS1i = R2i.z;
// 2
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.x)),intBitsToFloat(PV1i.x)) + 1.0));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R11i.y)),intBitsToFloat(PV1i.x)) + intBitsToFloat(R127i.y)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R1i.z)),intBitsToFloat(PV1i.x)) + intBitsToFloat(R127i.z)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R12i.x)),intBitsToFloat(PV1i.x)) + intBitsToFloat(R127i.x)));
PV0i.w = R123i.w;
// 3
R127i.x = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x3b449ba7));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R3i.w)));
R127i.z = floatBitsToInt(intBitsToFloat(PV0i.z) * intBitsToFloat(0x3b449ba7));
R127i.w = floatBitsToInt(intBitsToFloat(PV0i.w) * intBitsToFloat(0x3b449ba7));
// 4
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(R3i.z)));
// 5
backupReg0i = R127i.z;
backupReg1i = R127i.w;
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(PV0i.x)) + intBitsToFloat(R1i.y)));
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(PV0i.x)) + intBitsToFloat(R8i.z)));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg1i),intBitsToFloat(PV0i.x)) + intBitsToFloat(R1i.x)));
PV1i.w = R127i.w;
// 6
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R5i.x)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R6i.x)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R4i.x)));
// 7
backupReg0i = R127i.w;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.y),intBitsToFloat(R5i.y)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.y),intBitsToFloat(R4i.y)) + intBitsToFloat(PV0i.w)));
PV1i.y = R123i.y;
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R0i.x)));
// 8
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R5i.z)) + intBitsToFloat(PV1i.x)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.y),intBitsToFloat(R6i.y)) + intBitsToFloat(R127i.y)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R4i.z)) + intBitsToFloat(PV1i.y)));
PV0i.z = R123i.z;
// 9
PV1i.x = floatBitsToInt(intBitsToFloat(R4i.w) + intBitsToFloat(PV0i.z));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.y),intBitsToFloat(R0i.y)) + intBitsToFloat(R127i.w)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R6i.z)) + intBitsToFloat(PV0i.y)));
PV1i.z = R123i.z;
R127i.w = floatBitsToInt(intBitsToFloat(R5i.w) + intBitsToFloat(PV0i.x));
// 10
PV0i.x = floatBitsToInt(intBitsToFloat(R6i.w) + intBitsToFloat(PV1i.z));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R0i.z)) + intBitsToFloat(PV1i.y)));
PV0i.z = R123i.z;
R126i.w = floatBitsToInt(1.0 / intBitsToFloat(PV1i.x));
PS0i = R126i.w;
// 11
PV1i.x = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(PV0i.z));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PS0i)));
R2i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PS0i)));
PS1i = R2i.x;
// 12
R2i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(R126i.w)));
R2i.w = floatBitsToInt(-(intBitsToFloat(R3i.x)) + intBitsToFloat(PV1i.z));
R2i.w = clampFI32(R2i.w);
}
if( activeMaskStackC[2] == true ) {
R2i.y = floatBitsToInt(textureShadow_1(textureUnitPS6, vec4(intBitsToFloat(R2i.x),intBitsToFloat(R2i.y),intBitsToFloat(R2i.z),intBitsToFloat(R2i.w))));
}
if( activeMaskStackC[2] == true ) {
// 0
PV0i.x = floatBitsToInt(-(intBitsToFloat(R2i.y)) + 1.0);
// 1
R5i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R7i.w)) + intBitsToFloat(R2i.y)));
}
activeMaskStackC[1] = activeMaskStack[0] == true && activeMaskStackC[0] == true;
if( activeMaskStackC[1] == true ) {
// 0
R0i.x = floatBitsToInt(intBitsToFloat(R11i.x) * intBitsToFloat(0x3a83126f));
R0i.y = floatBitsToInt(intBitsToFloat(R12i.z) * intBitsToFloat(0x3a83126f));
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R8i.z)),uf_blockPS6[26].x) + -(uf_blockPS6[26].y)));
R123i.z = clampFI32(R123i.z);
PV0i.z = R123i.z;
R127i.w = floatBitsToInt(intBitsToFloat(R8i.w) + -(intBitsToFloat(R7i.x)));
R1i.x = floatBitsToInt((intBitsToFloat(R11i.x) * intBitsToFloat(0x38d1b717) + 0.5));
PS0i = R1i.x;
// 1
R127i.x = floatBitsToInt(-(uf_blockPS6[27].w) + 1.0);
PV1i.y = floatBitsToInt(-(intBitsToFloat(PV0i.z)) + 1.0);
R1i.z = floatBitsToInt((intBitsToFloat(R12i.z) * intBitsToFloat(0x3903126f) + 0.5));
R0i.w = 0x3f800000;
R3i.w = floatBitsToInt(-(intBitsToFloat(R8i.z)) * intBitsToFloat(0x3ba3d70a));
PS1i = R3i.w;
// 2
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R8i.z)),uf_blockPS6[28].x) + -(uf_blockPS6[28].y)));
R123i.x = clampFI32(R123i.x);
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),intBitsToFloat(PV1i.y)) + intBitsToFloat(R7i.x)));
PV0i.y = R123i.y;
PV0i.z = floatBitsToInt(intBitsToFloat(R1i.w) + intBitsToFloat(0xbe99999a));
R4i.w = floatBitsToInt((intBitsToFloat(0xbf59999a) * intBitsToFloat(R7i.y) + 1.0));
tempResultf = log2(intBitsToFloat(PV1i.y));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS0i = floatBitsToInt(tempResultf);
// 3
PV1i.x = floatBitsToInt(max(-(intBitsToFloat(PV0i.y)), intBitsToFloat(0xbf7d70a4)));
PV1i.x = floatBitsToInt(intBitsToFloat(PV1i.x) / 2.0);
R127i.y = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + 1.0);
R126i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS6[27].x, intBitsToFloat(PS0i)));
PV1i.w = floatBitsToInt(mul_nonIEEE(uf_blockPS6[27].y, intBitsToFloat(PS0i)));
R127i.w = floatBitsToInt(intBitsToFloat(PV0i.z) * intBitsToFloat(0x40200001));
R127i.w = clampFI32(R127i.w);
PS1i = R127i.w;
// 4
R5i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R8i.z)),uf_blockPS6[18].x) + uf_blockPS6[17].w));
R5i.x = clampFI32(R5i.x);
PV0i.y = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x3dcccccd));
R127i.z = floatBitsToInt(intBitsToFloat(PV1i.x) + 0.5);
PV0i.z = R127i.z;
R123i.w = floatBitsToInt((-(intBitsToFloat(R8i.z)) * intBitsToFloat(0x3ba3d70a) + intBitsToFloat(0xbfe66666)));
PV0i.w = R123i.w;
PS0i = floatBitsToInt(exp2(intBitsToFloat(PV1i.w)));
// 5
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.z)) + 1.0);
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.y)),intBitsToFloat(PV0i.w)) + intBitsToFloat(PV0i.w)));
R123i.y = clampFI32(R123i.y);
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((intBitsToFloat(PV0i.z) * intBitsToFloat(0xbc996e30) + intBitsToFloat(0x3d981626)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(PS0i)) + uf_blockPS6[27].w)/2.0);
PV1i.w = R123i.w;
tempResultf = log2(intBitsToFloat(R127i.y));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1i = floatBitsToInt(tempResultf);
// 6
R127i.x = floatBitsToInt(mul_nonIEEE(uf_blockPS6[29].x, intBitsToFloat(PS1i)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(PV1i.z)) + intBitsToFloat(0xbe593484)));
PV0i.y = R123i.y;
R2i.z = floatBitsToInt(intBitsToFloat(PV1i.w) + 0.5);
R2i.w = floatBitsToInt((intBitsToFloat(R127i.w) * intBitsToFloat(0x3dcccccd) + intBitsToFloat(PV1i.y)));
PV0i.w = R2i.w;
PS0i = floatBitsToInt(sqrt(intBitsToFloat(PV1i.x)));
// 7
PV1i.x = floatBitsToInt(intBitsToFloat(PS0i) * intBitsToFloat(0x3f22f983));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.y), intBitsToFloat(R8i.y)));
R0i.z = floatBitsToInt(-(intBitsToFloat(PV0i.w)) + 1.0);
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(PV0i.y)) + intBitsToFloat(0x3fc90da4)));
PV1i.w = R123i.w;
R126i.x = floatBitsToInt(exp2(intBitsToFloat(R126i.z)));
PS1i = R126i.x;
// 8
backupReg0i = R0i.w;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R11i.x),intBitsToFloat(R10i.y),intBitsToFloat(R12i.z),intBitsToFloat(backupReg0i)),vec4(uf_blockPS1[37].x,uf_blockPS1[37].y,uf_blockPS1[37].z,uf_blockPS1[37].w)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R2i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),-(intBitsToFloat(PV1i.w))) + 1.0));
PS0i = R2i.x;
// 9
backupReg0i = R0i.w;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R11i.x),intBitsToFloat(R10i.y),intBitsToFloat(R12i.z),intBitsToFloat(backupReg0i)),vec4(uf_blockPS1[35].x,uf_blockPS1[35].y,uf_blockPS1[35].z,uf_blockPS1[35].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;
// 10
backupReg0i = R0i.w;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R11i.x),intBitsToFloat(R10i.y),intBitsToFloat(R12i.z),intBitsToFloat(backupReg0i)),vec4(uf_blockPS1[36].x,uf_blockPS1[36].y,uf_blockPS1[36].z,uf_blockPS1[36].w)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R3i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(PS1i)));
PS0i = R3i.x;
// 11
R4i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R11i.z),intBitsToFloat(R9i.z)) + intBitsToFloat(R127i.y)));
R3i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R127i.z)));
R0i.w = floatBitsToInt((mul_nonIEEE(uf_blockPS6[27].z,-(intBitsToFloat(R126i.x))) + uf_blockPS6[27].z));
R6i.x = floatBitsToInt(exp2(intBitsToFloat(R127i.x)));
PS1i = R6i.x;
}
if( activeMaskStackC[1] == true ) {
R1i.w = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R0i.xy)).x);
R1i.xyz = floatBitsToInt(textureLod(textureUnitPS13, intBitsToFloat(R1i.xz),0.0).xyz);
R2i.xyz = floatBitsToInt(texture(textureUnitPS9, intBitsToFloat(R2i.xz)).xyz);
R3i.x = floatBitsToInt(textureLod(textureUnitPS4, intBitsToFloat(R3i.xy),intBitsToFloat(R3i.w)).x);
}
// export
passPixelColor2 = vec4(intBitsToFloat(R9i.x), intBitsToFloat(R9i.x), intBitsToFloat(R9i.x), intBitsToFloat(R9i.x));
if( activeMaskStackC[1] == true ) {
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.x),intBitsToFloat(R8i.x)) + intBitsToFloat(R4i.x)));
R123i.x = clampFI32(R123i.x);
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((intBitsToFloat(R1i.w) * 2.0 + -(1.0)));
PV0i.y = R123i.y;
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), intBitsToFloat(R4i.w)));
PV0i.z = R126i.z;
R8i.w = 0;
R7i.w = 0x3f800000;
PS0i = R7i.w;
// 1
backupReg0i = R3i.x;
R3i.x = floatBitsToInt((intBitsToFloat(PV0i.y) * intBitsToFloat(0x41c80000) + intBitsToFloat(R10i.z)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.z),intBitsToFloat(R9i.w)) + intBitsToFloat(R2i.w)));
PV1i.y = R123i.y;
R127i.z = floatBitsToInt(-(intBitsToFloat(PV0i.z)) + 1.0);
R127i.w = floatBitsToInt(intBitsToFloat(backupReg0i) + uf_blockPS10[1].z);
R127i.w = clampFI32(R127i.w);
tempResultf = log2(intBitsToFloat(PV0i.x));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS1i = floatBitsToInt(tempResultf);
// 2
backupReg0i = R2i.x;
backupReg1i = R2i.y;
backupReg2i = R2i.z;
R2i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV1i.y)));
R2i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg1i), intBitsToFloat(PV1i.y)));
R2i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg2i), intBitsToFloat(PV1i.y)));
PV0i.w = floatBitsToInt(mul_nonIEEE(uf_blockPS6[29].z, intBitsToFloat(PS1i)));
tempResultf = log2(intBitsToFloat(R5i.x));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS0i = floatBitsToInt(tempResultf);
// 3
R8i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), uf_blockPS10[3].z));
PV1i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS6[18].y, intBitsToFloat(PS0i)));
PS1i = floatBitsToInt(exp2(intBitsToFloat(PV0i.w)));
// 4
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), uf_blockPS6[42].z));
R123i.w = floatBitsToInt((mul_nonIEEE(-(uf_blockPS6[29].w),intBitsToFloat(PS1i)) + 1.0));
PV0i.w = R123i.w;
PS0i = floatBitsToInt(exp2(intBitsToFloat(PV1i.z)));
// 5
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),uf_blockPS6[42].y) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS0i), uf_blockPS6[16].w));
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.x)),intBitsToFloat(PV0i.w)) + intBitsToFloat(PV0i.w)));
PV1i.z = R123i.z;
// 6
backupReg0i = R1i.x;
R1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.y), intBitsToFloat(PV1i.y)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), uf_blockPS6[30].w));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),uf_blockPS6[42].x) + intBitsToFloat(PV1i.x)));
PV0i.w = R123i.w;
// 7
R3i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(R4i.w)));
PV1i.y = R3i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(PV0i.w)));
// 8
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(PV1i.z)));
PV0i.x = R127i.x;
R1i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.y)),intBitsToFloat(R127i.z)) + intBitsToFloat(R127i.z)));
R2i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),-(intBitsToFloat(PV1i.y))) + intBitsToFloat(R126i.z)));
PS0i = R2i.w;
// 9
PV1i.y = floatBitsToInt(intBitsToFloat(R5i.w) + -(intBitsToFloat(PV0i.x)));
// 10
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(R7i.z)) + intBitsToFloat(R127i.x)));
PV0i.z = R123i.z;
// 11
R8i.x = floatBitsToInt(intBitsToFloat(PV0i.z) + uf_blockPS10[1].y);
R8i.x = clampFI32(R8i.x);
}
if( activeMaskStackC[1] == true ) {
// 0
PV0i.w = floatBitsToInt(-(intBitsToFloat(R3i.x)) + uf_blockPS6[52].x);
// 1
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.w),uf_blockPS6[15].x) + uf_blockPS6[14].w));
R123i.z = clampFI32(R123i.z);
PV1i.z = R123i.z;
// 2
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), uf_blockPS6[13].w));
// 3
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(R4i.w)));
// 4
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.w)),intBitsToFloat(R1i.y)) + intBitsToFloat(R1i.y)));
PV0i.x = R123i.x;
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R1i.y)));
// 5
PV1i.x = floatBitsToInt(mul_nonIEEE(uf_blockPS6[13].y, intBitsToFloat(PV0i.z)));
PV1i.y = floatBitsToInt(mul_nonIEEE(uf_blockPS6[13].x, intBitsToFloat(PV0i.z)));
PV1i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS6[13].z, intBitsToFloat(PV0i.z)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(PV0i.x)));
R8i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R1i.x)),intBitsToFloat(PV0i.x)) + intBitsToFloat(PV0i.x)));
PS1i = R8i.z;
// 6
R123i.x = floatBitsToInt((mul_nonIEEE(uf_blockPS6[16].z,intBitsToFloat(PV1i.w)) + intBitsToFloat(PV1i.z)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(uf_blockPS6[16].y,intBitsToFloat(PV1i.w)) + intBitsToFloat(PV1i.x)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(uf_blockPS6[16].x,intBitsToFloat(PV1i.w)) + intBitsToFloat(PV1i.y)));
PV0i.z = R123i.z;
// 7
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.z),intBitsToFloat(R2i.w)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.y),intBitsToFloat(R2i.w)) + intBitsToFloat(PV0i.y)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.x),intBitsToFloat(R2i.w)) + intBitsToFloat(PV0i.z)));
PV1i.z = R123i.z;
// 8
R7i.x = floatBitsToInt((mul_nonIEEE(uf_blockPS6[30].x,intBitsToFloat(R3i.y)) + intBitsToFloat(PV1i.z)));
PV0i.x = R7i.x;
R7i.y = floatBitsToInt((mul_nonIEEE(uf_blockPS6[30].y,intBitsToFloat(R3i.y)) + intBitsToFloat(PV1i.y)));
PV0i.y = R7i.y;
R7i.z = floatBitsToInt((mul_nonIEEE(uf_blockPS6[30].z,intBitsToFloat(R3i.y)) + intBitsToFloat(PV1i.x)));
PV0i.z = R7i.z;
// 9
R1i.xyz = ivec3(PV0i.x,PV0i.y,PV0i.z);
R1i.w = R7i.w;
// 10
R0i.xyz = ivec3(R8i.x,R8i.y,R8i.z);
R0i.w = R8i.w;
}
// export
passPixelColor0 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), intBitsToFloat(R0i.w));
passPixelColor1 = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w));
}

View File

@ -0,0 +1,797 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 ffe0e8c84f6e8da9
UNIFORM_BUFFER_LAYOUT(33, 1, 7) uniform uniformBlockPS1
{
vec4 uf_blockPS1[1024];
};
UNIFORM_BUFFER_LAYOUT(38, 1, 8) uniform uniformBlockPS6
{
vec4 uf_blockPS6[1024];
};
UNIFORM_BUFFER_LAYOUT(42, 1, 9) uniform uniformBlockPS10
{
vec4 uf_blockPS10[1024];
};
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
TEXTURE_LAYOUT(1, 1, 1) uniform sampler2D textureUnitPS1;
TEXTURE_LAYOUT(3, 1, 2) uniform sampler2D textureUnitPS3;
TEXTURE_LAYOUT(6, 1, 3) uniform sampler2D textureUnitPS6;
TEXTURE_LAYOUT(8, 1, 4) uniform sampler2DArray textureUnitPS8;
TEXTURE_LAYOUT(15, 1, 5) uniform sampler2D textureUnitPS15;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem5;
layout(location = 2) in vec4 passParameterSem6;
layout(location = 5) out vec4 passPixelColor5;
#ifdef VULKAN
layout(set = 1, binding = 6) uniform ufBlock
{
uniform vec4 uf_fragCoordScale;
};
#else
uniform vec2 uf_fragCoordScale;
#endif
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; }
float textureShadow_1(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_2(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_3(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_4(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_5(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
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 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;
bool activeMaskStack[3];
bool activeMaskStackC[4];
activeMaskStack[0] = false;
activeMaskStack[1] = false;
activeMaskStackC[0] = false;
activeMaskStackC[1] = false;
activeMaskStackC[2] = false;
activeMaskStack[0] = true;
activeMaskStackC[0] = true;
activeMaskStackC[1] = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem5);
R2i = floatBitsToInt(passParameterSem6);
if( activeMaskStackC[1] == true ) {
R3i.w = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R0i.xy)).x);
R6i.x = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R0i.xy)).x);
R6i.z = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R0i.zw)).x);
R6i.w = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R0i.xy)).x);
R4i.xyzw = floatBitsToInt(texture(textureUnitPS3, intBitsToFloat(R2i.zw)).xyzw);
R2i.xy = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R2i.xy)).xw);
}
if( activeMaskStackC[1] == true ) {
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R6i.w)) + uf_blockPS1[14].x));
PV0i.x = R123i.x;
R127i.y = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R6i.z)) + uf_blockPS1[14].x));
R127i.z = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R6i.x)) + uf_blockPS1[14].x));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.w),uf_blockPS1[16].x) + uf_blockPS1[14].x));
PV0i.w = R123i.w;
R127i.x = floatBitsToInt((intBitsToFloat(R4i.x) * 2.0 + -(1.0)));
PS0i = R127i.x;
// 1
R7i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(PV0i.w))));
R6i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), -(intBitsToFloat(PV0i.w))));
R12i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)));
R127i.w = floatBitsToInt((intBitsToFloat(R4i.y) * 2.0 + -(1.0)));
R125i.z = floatBitsToInt((intBitsToFloat(R4i.z) * 2.0 + -(1.0)));
PS1i = R125i.z;
// 2
PV0i.x = floatBitsToInt(-(intBitsToFloat(R127i.y)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), -(intBitsToFloat(R127i.y))));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), -(intBitsToFloat(R127i.y))));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), -(intBitsToFloat(R127i.z))));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), -(intBitsToFloat(R127i.z))));
PS0i = R126i.z;
// 3
R125i.x = floatBitsToInt(-(intBitsToFloat(R7i.x)) + intBitsToFloat(PV0i.z));
R127i.y = floatBitsToInt(-(intBitsToFloat(R127i.z)));
R124i.z = floatBitsToInt(-(intBitsToFloat(R12i.z)) + intBitsToFloat(PV0i.x));
R125i.w = floatBitsToInt(-(intBitsToFloat(R6i.y)) + intBitsToFloat(PV0i.y));
R126i.y = floatBitsToInt(-(intBitsToFloat(R7i.x)) + intBitsToFloat(PV0i.w));
PS1i = R126i.y;
// 4
backupReg0i = R126i.z;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.x),intBitsToFloat(R6i.y),intBitsToFloat(R12i.z),-0.0),vec4(intBitsToFloat(R7i.x),intBitsToFloat(R6i.y),intBitsToFloat(R12i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R126i.z = tempi.x;
R126i.x = floatBitsToInt(-(intBitsToFloat(R6i.y)) + intBitsToFloat(backupReg0i));
PS0i = R126i.x;
// 5
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.x),intBitsToFloat(R127i.w),intBitsToFloat(R125i.z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R127i.w),intBitsToFloat(R125i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.z = tempi.x;
R126i.w = floatBitsToInt(-(intBitsToFloat(R12i.z)) + intBitsToFloat(R127i.y));
PS1i = R126i.w;
// 6
backupReg0i = R126i.z;
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.x), uf_blockPS6[43].x));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(R126i.y)));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.w), intBitsToFloat(PS1i)));
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.x), intBitsToFloat(R126i.x)));
R125i.y = floatBitsToInt(sqrt(intBitsToFloat(backupReg0i)));
PS0i = R125i.y;
// 7
backupReg0i = R127i.z;
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.x), uf_blockPS6[45].x));
R124i.y = floatBitsToInt(intBitsToFloat(R4i.w) * intBitsToFloat(0x437f0000));
R127i.z = floatBitsToInt((intBitsToFloat(R2i.x) * 2.0 + -(1.0)));
R4i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),uf_blockPS6[43].y) + intBitsToFloat(PV0i.x)));
tempResultf = 1.0 / sqrt(intBitsToFloat(backupReg0i));
PS1i = floatBitsToInt(tempResultf);
// 8
backupReg0i = R125i.z;
R8i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS1i)));
R7i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PS1i)));
R125i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS1[18].y, uf_blockPS1[18].z));
PV0i.z = R125i.z;
R127i.w = floatBitsToInt(-(intBitsToFloat(R12i.z)) * intBitsToFloat(0x3d4ccccd));
R9i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS1i)));
PS0i = R9i.z;
// 9
R1i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R126i.x)),intBitsToFloat(R124i.z)) + intBitsToFloat(R126i.z)));
R1i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R126i.w)),intBitsToFloat(R125i.x)) + intBitsToFloat(R127i.y)));
R126i.z = floatBitsToInt((intBitsToFloat(R2i.y) * 2.0 + -(1.0)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),uf_blockPS6[45].y) + intBitsToFloat(R124i.x)));
PV1i.w = R123i.w;
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R127i.z)));
PS1i = R126i.w;
// 10
backupReg0i = R126i.y;
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),uf_blockPS6[45].z) + intBitsToFloat(PV1i.w)));
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),uf_blockPS6[43].z) + intBitsToFloat(R4i.w)));
R1i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(R125i.w)) + intBitsToFloat(R124i.w)));
PV0i.z = R1i.z;
R125i.w = R8i.x;
R125i.w = floatBitsToInt(intBitsToFloat(R125i.w) * 2.0);
R124i.z = R7i.y;
R124i.z = floatBitsToInt(intBitsToFloat(R124i.z) * 2.0);
PS0i = R124i.z;
// 11
R124i.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R1i.x)),-(intBitsToFloat(R1i.y)),-(intBitsToFloat(PV0i.z)),-0.0),vec4(-(intBitsToFloat(R1i.x)),-(intBitsToFloat(R1i.y)),-(intBitsToFloat(PV0i.z)),0.0)));
PV1i.x = R124i.x;
PV1i.y = R124i.x;
PV1i.z = R124i.x;
PV1i.w = R124i.x;
R2i.x = floatBitsToInt((-(uf_blockPS6[53].w) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(R127i.w)));
R2i.x = clampFI32(R2i.x);
PS1i = R2i.x;
// 12
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), -(intBitsToFloat(R126i.z))));
PV0i.x = R125i.x;
R127i.y = floatBitsToInt(intBitsToFloat(R126i.z) * intBitsToFloat(0xbb6fe5d7));
PV0i.z = floatBitsToInt(intBitsToFloat(R126i.w) * intBitsToFloat(0x3ca30589));
PV0i.w = floatBitsToInt(intBitsToFloat(R126i.z) * intBitsToFloat(0x3ca30589));
R126i.z = floatBitsToInt(intBitsToFloat(R126i.w) * intBitsToFloat(0xbb6fe5d7));
PS0i = R126i.z;
// 13
R10i.x = floatBitsToInt(uf_blockPS6[43].w + intBitsToFloat(R126i.y));
R3i.y = floatBitsToInt((intBitsToFloat(R127i.z) * intBitsToFloat(0x3b02da3b) + intBitsToFloat(PV0i.w)));
R2i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R12i.z)), uf_blockPS1[17].y));
R1i.w = 0x3f800000;
R4i.x = floatBitsToInt((intBitsToFloat(PV0i.x) * intBitsToFloat(0x3b02da3b) + intBitsToFloat(PV0i.z)));
PS1i = R4i.x;
// 14
R3i.x = floatBitsToInt((intBitsToFloat(R125i.x) * intBitsToFloat(0x3d156fb9) + intBitsToFloat(R126i.z)));
R2i.y = floatBitsToInt((intBitsToFloat(R127i.z) * intBitsToFloat(0x3d156fb9) + intBitsToFloat(R127i.y)));
R11i.z = floatBitsToInt(uf_blockPS6[45].w + intBitsToFloat(R126i.x));
R10i.w = floatBitsToInt((-(uf_blockPS6[53].z) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(R127i.w)));
R10i.w = clampFI32(R10i.w);
PS0i = floatBitsToInt(1.0 / intBitsToFloat(R125i.y));
// 15
backupReg0i = R124i.y;
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.x), intBitsToFloat(PS0i)));
PV1i.x = R126i.x;
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.y), intBitsToFloat(PS0i)));
PV1i.y = R124i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R12i.z), intBitsToFloat(PS0i)));
PS1i = int(intBitsToFloat(backupReg0i));
// 16
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R8i.x),intBitsToFloat(R7i.y),intBitsToFloat(R9i.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 = PS1i & int(1);
// 17
R11i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R125i.w)) + intBitsToFloat(R126i.x)));
R10i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R124i.z)) + intBitsToFloat(R124i.y)));
R11i.w = floatBitsToInt(intBitsToFloat(PV0i.x) + 1.0);
R11i.w = clampFI32(R11i.w);
R8i.y = ((PS0i == 0)?(0):(0x3f800000));
PS1i = R8i.y;
// 18
tempResultf = 1.0 / sqrt(intBitsToFloat(R124i.x));
R2i.w = floatBitsToInt(tempResultf);
PS0i = R2i.w;
}
if( activeMaskStackC[1] == true ) {
activeMaskStack[1] = activeMaskStack[0];
activeMaskStackC[2] = activeMaskStackC[1];
// 0
PV0i.x = floatBitsToInt(uf_blockPS10[2].z + 1.0);
R9i.y = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].y, uf_blockPS10[2].w));
R9i.x = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].x, uf_blockPS10[2].w));
PS0i = R9i.x;
// 1
R10i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].z, uf_blockPS10[2].w));
R12i.w = floatBitsToInt(-(intBitsToFloat(R2i.x)) + intBitsToFloat(PV0i.x));
R12i.w = clampFI32(R12i.w);
R7i.w = 0;
PS1i = R7i.w;
// 2
predResult = (1.0 > intBitsToFloat(R10i.w));
activeMaskStack[1] = predResult;
activeMaskStackC[2] = predResult == true && activeMaskStackC[1] == true;
}
else {
activeMaskStack[1] = false;
activeMaskStackC[2] = false;
}
if( activeMaskStackC[2] == true ) {
// 0
R12i.x = floatBitsToInt(intBitsToFloat(R0i.x) + intBitsToFloat(R4i.x));
R12i.y = floatBitsToInt(intBitsToFloat(R0i.y) + intBitsToFloat(R3i.y));
R13i.x = floatBitsToInt(intBitsToFloat(R0i.x) + -(intBitsToFloat(R4i.x)));
PS0i = R13i.x;
// 1
R14i.x = floatBitsToInt(intBitsToFloat(R0i.x) + intBitsToFloat(R3i.x));
R13i.y = floatBitsToInt(intBitsToFloat(R0i.y) + -(intBitsToFloat(R3i.y)));
R14i.y = floatBitsToInt(intBitsToFloat(R0i.y) + intBitsToFloat(R2i.y));
PS1i = R14i.y;
// 2
R15i.x = floatBitsToInt(intBitsToFloat(R0i.x) + -(intBitsToFloat(R3i.x)));
R15i.y = floatBitsToInt(intBitsToFloat(R0i.y) + -(intBitsToFloat(R2i.y)));
}
if( activeMaskStackC[2] == true ) {
// 0
R127i.x = ((-(intBitsToFloat(R12i.z)) > uf_blockPS1[58].y)?int(0xFFFFFFFF):int(0x0));
PV0i.y = floatBitsToInt(intBitsToFloat(R7i.y) * 1.5);
PV0i.z = floatBitsToInt(intBitsToFloat(R8i.x) * 1.5);
PV0i.w = ((-(intBitsToFloat(R12i.z)) > uf_blockPS1[58].x)?int(0xFFFFFFFF):int(0x0));
PS0i = floatBitsToInt(intBitsToFloat(R9i.z) * 1.5);
// 1
backupReg0i = R1i.x;
backupReg1i = R1i.z;
R1i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(R2i.w)) + intBitsToFloat(PV0i.z)));
PV1i.y = PV0i.w & int(1);
R1i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R1i.y)),intBitsToFloat(R2i.w)) + intBitsToFloat(PV0i.y)));
R1i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg1i)),intBitsToFloat(R2i.w)) + intBitsToFloat(PS0i)));
R122i.x = floatBitsToInt((intBitsToFloat(R2i.z) * 0.25 + 1.0));
PS1i = R122i.x;
// 2
R2i.x = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i));
R2i.y = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i));
R2i.z = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i));
R13i.w = PV1i.y - R127i.x;
PV0i.w = R13i.w;
PS0i = floatBitsToInt(uf_blockPS6[53].y * uf_fragCoordScale.y);
PS0i = floatBitsToInt(intBitsToFloat(PS0i) / 2.0);
// 3
R6i.x = floatBitsToInt(uf_blockPS6[53].x * uf_fragCoordScale.x);
R6i.x = floatBitsToInt(intBitsToFloat(R6i.x) / 2.0);
PV1i.y = PV0i.w << 0x00000002;
R6i.z = floatBitsToInt(-(intBitsToFloat(PS0i)));
R2i.w = PS0i;
PS1i = floatBitsToInt(float(PV0i.w));
// 4
R0i.x = PV1i.y + 0x0000002b;
R0i.y = PV1i.y + 0x0000002d;
R0i.z = PV1i.y + 0x0000002a;
R0i.w = PV1i.y + 0x0000002c;
R7i.z = floatBitsToInt(roundEven(intBitsToFloat(PS1i)));
PS0i = R7i.z;
// 5
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R1i.x),intBitsToFloat(R1i.z),intBitsToFloat(R1i.w),-0.0),vec4(intBitsToFloat(R1i.x),intBitsToFloat(R1i.z),intBitsToFloat(R1i.w),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R1i.y = tempi.x;
R8i.z = PS0i;
PS1i = R8i.z;
}
if( activeMaskStackC[2] == true ) {
R3i.xyzw = floatBitsToInt(uf_blockPS1[R0i.y].xyzw);
R4i.xyzw = floatBitsToInt(uf_blockPS1[R0i.w].xyzw);
R5i.xyzw = floatBitsToInt(uf_blockPS1[R0i.z].xyzw);
R0i.xyzw = floatBitsToInt(uf_blockPS1[R0i.x].xyzw);
}
if( activeMaskStackC[2] == true ) {
// 0
R126i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R8i.x),intBitsToFloat(R7i.y),intBitsToFloat(R9i.z),intBitsToFloat(R9i.z)),vec4(-(intBitsToFloat(R9i.x)),-(intBitsToFloat(R9i.y)),-(intBitsToFloat(R10i.z)),-(intBitsToFloat(R7i.w)))));
R126i.x = clampFI32(R126i.x);
PV0i.x = R126i.x;
PV0i.y = R126i.x;
PV0i.z = R126i.x;
PV0i.w = R126i.x;
tempResultf = 1.0 / sqrt(intBitsToFloat(R1i.y));
PS0i = floatBitsToInt(tempResultf);
// 1
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(PS0i)));
PV1i.x = R127i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(PS0i)));
PV1i.y = R127i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), intBitsToFloat(PS0i)));
PV1i.z = R127i.z;
R126i.w = floatBitsToInt(-(intBitsToFloat(R6i.x)));
R1i.z = R7i.z;
PS1i = R1i.z;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.x),intBitsToFloat(R9i.y),intBitsToFloat(R10i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R9i.z = R7i.z;
PS0i = R9i.z;
// 3
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(PV0i.x)) + 1.0));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R9i.x)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.x)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R10i.z)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.z)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R9i.y)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.y)));
PV1i.w = R123i.w;
// 4
backupReg0i = R126i.x;
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R2i.y)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(backupReg0i)));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(R2i.x)));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(R2i.z)));
// 5
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.y), intBitsToFloat(PV0i.y)));
// 6
backupReg0i = R6i.y;
R16i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(PV1i.z)) + intBitsToFloat(R7i.x)));
PV0i.x = R16i.x;
R6i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.x),intBitsToFloat(PV1i.z)) + intBitsToFloat(backupReg0i)));
R10i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),intBitsToFloat(PV1i.z)) + intBitsToFloat(R12i.z)));
// 7
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R4i.x)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R5i.x)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R3i.x)));
// 8
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R3i.y)) + intBitsToFloat(PV1i.z)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R4i.y)) + intBitsToFloat(PV1i.x)));
PV0i.y = R123i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.x), intBitsToFloat(R0i.x)));
// 9
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R5i.y)) + intBitsToFloat(R127i.y)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R4i.z)) + intBitsToFloat(PV0i.y)));
PV1i.y = R123i.y;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R3i.z)) + intBitsToFloat(PV0i.x)));
PV1i.w = R123i.w;
// 10
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R0i.y)) + intBitsToFloat(R127i.z)));
PV0i.x = R123i.x;
PV0i.y = floatBitsToInt(intBitsToFloat(R3i.w) + intBitsToFloat(PV1i.w));
R127i.z = floatBitsToInt(intBitsToFloat(R4i.w) + intBitsToFloat(PV1i.y));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R5i.z)) + intBitsToFloat(PV1i.x)));
PV0i.w = R123i.w;
// 11
PV1i.y = floatBitsToInt(intBitsToFloat(R5i.w) + intBitsToFloat(PV0i.w));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R0i.z)) + intBitsToFloat(PV0i.x)));
PV1i.w = R123i.w;
R126i.z = floatBitsToInt(1.0 / intBitsToFloat(PV0i.y));
PS1i = R126i.z;
// 12
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS1i)));
PV0i.y = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(PV1i.w));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(PS1i)));
PV0i.z = R127i.z;
// 13
R7i.x = floatBitsToInt((uf_blockPS6[53].x * uf_fragCoordScale.x * 0.5 + intBitsToFloat(PV0i.z)));
R127i.y = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(0xbb03126f));
R127i.y = clampFI32(R127i.y);
PV1i.y = R127i.y;
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(R126i.z)));
PV1i.w = R127i.w;
R8i.x = floatBitsToInt(intBitsToFloat(PV0i.z) + intBitsToFloat(R6i.x));
PS1i = R8i.x;
// 14
R1i.x = floatBitsToInt(intBitsToFloat(R127i.z) + intBitsToFloat(R126i.w));
R7i.y = floatBitsToInt((uf_blockPS6[53].y * uf_fragCoordScale.y * 0.5 + intBitsToFloat(PV1i.w)));
R7i.w = PV1i.y;
R8i.y = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(R6i.z));
PS0i = R8i.y;
// 15
R9i.x = floatBitsToInt((-(uf_blockPS6[53].x) * uf_fragCoordScale.x * 0.5 + intBitsToFloat(R127i.z)));
R1i.y = floatBitsToInt(intBitsToFloat(R127i.w) + intBitsToFloat(R2i.w));
R8i.w = R127i.y;
R1i.w = R127i.y;
PS1i = R1i.w;
// 16
R9i.y = floatBitsToInt((-(uf_blockPS6[53].y) * uf_fragCoordScale.y * 0.5 + intBitsToFloat(R127i.w)));
R9i.w = R127i.y;
}
if( activeMaskStackC[2] == true ) {
R7i.z = floatBitsToInt(textureShadow_1(textureUnitPS8, vec4(intBitsToFloat(R7i.x),intBitsToFloat(R7i.y),intBitsToFloat(R7i.z),intBitsToFloat(R7i.w))));
R8i.y = floatBitsToInt(textureShadow_2(textureUnitPS8, vec4(intBitsToFloat(R8i.x),intBitsToFloat(R8i.y),intBitsToFloat(R8i.z),intBitsToFloat(R8i.w))));
R1i.x = floatBitsToInt(textureShadow_3(textureUnitPS8, vec4(intBitsToFloat(R1i.x),intBitsToFloat(R1i.y),intBitsToFloat(R1i.z),intBitsToFloat(R1i.w))));
R9i.w = floatBitsToInt(textureShadow_4(textureUnitPS8, vec4(intBitsToFloat(R9i.x),intBitsToFloat(R9i.y),intBitsToFloat(R9i.z),intBitsToFloat(R9i.w))));
}
if( activeMaskStackC[2] == true ) {
activeMaskStack[2] = activeMaskStack[1];
activeMaskStackC[3] = activeMaskStackC[2];
// 0
PV0i.w = floatBitsToInt(intBitsToFloat(R7i.z) + intBitsToFloat(R8i.y));
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) / 2.0);
// 1
R123i.z = floatBitsToInt((intBitsToFloat(R1i.x) * 0.5 + intBitsToFloat(PV0i.w)));
PV1i.z = R123i.z;
// 2
R5i.w = floatBitsToInt((intBitsToFloat(R9i.w) * 0.5 + intBitsToFloat(PV1i.z))/2.0);
PV0i.w = R5i.w;
// 3
PV1i.x = ((1.0 > intBitsToFloat(PV0i.w))?int(0xFFFFFFFF):int(0x0));
// 4
R0i.y = ((R13i.w > 0)?(PV1i.x):(0));
// 5
predResult = (R0i.y != 0);
activeMaskStack[2] = predResult;
activeMaskStackC[3] = predResult == true && activeMaskStackC[2] == true;
}
else {
activeMaskStack[2] = false;
activeMaskStackC[3] = false;
}
if( activeMaskStackC[3] == true ) {
// 0
PV0i.x = int(-1) + R13i.w;
// 1
PV1i.w = PV0i.x << 0x00000002;
PS1i = floatBitsToInt(float(PV0i.x));
// 2
R0i.x = PV1i.w + 0x0000002c;
R0i.y = PV1i.w + 0x0000002b;
R0i.z = PV1i.w + 0x0000002a;
R0i.w = PV1i.w + 0x0000002d;
R4i.z = floatBitsToInt(roundEven(intBitsToFloat(PS1i)));
PS0i = R4i.z;
}
if( activeMaskStackC[3] == true ) {
R1i.xyzw = floatBitsToInt(uf_blockPS1[R0i.w].xyzw);
R2i.xyzw = floatBitsToInt(uf_blockPS1[R0i.x].xyzw);
R3i.xyzw = floatBitsToInt(uf_blockPS1[R0i.z].xyzw);
R0i.xyzw = floatBitsToInt(uf_blockPS1[R0i.y].xyzw);
}
if( activeMaskStackC[3] == true ) {
// 0
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.x), intBitsToFloat(R2i.x)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.x), intBitsToFloat(R1i.x)));
// 1
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R2i.y)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R1i.y)) + intBitsToFloat(PV0i.z)));
PV1i.y = R123i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.x), intBitsToFloat(R3i.x)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.x), intBitsToFloat(R0i.x)));
// 2
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R1i.z)) + intBitsToFloat(PV1i.y)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R3i.y)) + intBitsToFloat(PV1i.z)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R0i.y)) + intBitsToFloat(PV1i.w)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R2i.z)) + intBitsToFloat(PV1i.x)));
PV0i.w = R123i.w;
// 3
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R3i.z)) + intBitsToFloat(PV0i.y)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R0i.z)) + intBitsToFloat(PV0i.z)));
PV1i.y = R123i.y;
R127i.z = floatBitsToInt(intBitsToFloat(R2i.w) + intBitsToFloat(PV0i.w));
PV1i.w = floatBitsToInt(intBitsToFloat(R1i.w) + intBitsToFloat(PV0i.x));
// 4
PV0i.x = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(PV1i.y));
PV0i.w = floatBitsToInt(intBitsToFloat(R3i.w) + intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.w));
// 5
R4i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(PS0i)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS0i)));
R4i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PS0i)));
PS1i = R4i.y;
// 6
R4i.w = floatBitsToInt(intBitsToFloat(PV1i.y) + intBitsToFloat(0xbb03126f));
R4i.w = clampFI32(R4i.w);
}
if( activeMaskStackC[3] == true ) {
R4i.z = floatBitsToInt(textureShadow_5(textureUnitPS8, vec4(intBitsToFloat(R4i.x),intBitsToFloat(R4i.y),intBitsToFloat(R4i.z),intBitsToFloat(R4i.w))));
}
if( activeMaskStackC[3] == true ) {
// 0
backupReg0i = R5i.w;
R5i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R4i.z)));
}
activeMaskStackC[2] = activeMaskStack[1] == true && activeMaskStackC[1] == true;
if( activeMaskStackC[2] == true ) {
R0i.x = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R14i.xy)).x);
R0i.y = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R15i.xy)).x);
R1i.x = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R12i.xy)).x);
R1i.y = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R13i.xy)).x);
}
if( activeMaskStackC[2] == true ) {
// 0
R127i.x = floatBitsToInt(intBitsToFloat(R6i.w) * intBitsToFloat(0x3f7eb852));
PV0i.x = R127i.x;
PV0i.y = floatBitsToInt(uf_blockPS1[16].x * intBitsToFloat(0x41a00000));
R124i.z = floatBitsToInt(-(intBitsToFloat(R5i.w)) + 1.0);
R127i.w = floatBitsToInt(uf_blockPS1[16].x * intBitsToFloat(0x3f555555));
// 1
backupReg0i = R0i.x;
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.x) + -(intBitsToFloat(R0i.y)));
PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.x) + -(intBitsToFloat(backupReg0i)));
R127i.z = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x3f8ba8d6));
R127i.z = floatBitsToInt(intBitsToFloat(R127i.z) / 2.0);
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x3fbc4580));
PV1i.w = floatBitsToInt(intBitsToFloat(PV1i.w) / 2.0);
R126i.z = floatBitsToInt(-(intBitsToFloat(R1i.x)) + intBitsToFloat(PV0i.x));
PS1i = R126i.z;
// 2
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.w)),intBitsToFloat(PV1i.y)) + 1.0));
R127i.x = clampFI32(R127i.x);
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.w),intBitsToFloat(PV1i.x)) + 0.5));
R127i.y = clampFI32(R127i.y);
PV0i.y = R127i.y;
R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.w),intBitsToFloat(PV1i.y)) + 0.5));
R125i.z = clampFI32(R125i.z);
PV0i.z = R125i.z;
R126i.w = floatBitsToInt(-(intBitsToFloat(R1i.y)) + intBitsToFloat(backupReg0i));
PV0i.w = R126i.w;
R125i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.w)),intBitsToFloat(PV1i.x)) + 1.0));
R125i.w = clampFI32(R125i.w);
PS0i = R125i.w;
// 3
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R126i.z)) + 0.5));
R126i.x = clampFI32(R126i.x);
PV1i.x = R126i.x;
PV1i.y = floatBitsToInt(0.5 + -(intBitsToFloat(PV0i.y)));
PV1i.z = floatBitsToInt(0.5 + -(intBitsToFloat(PV0i.z)));
R124i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(PV0i.w)) + 0.5));
R124i.w = clampFI32(R124i.w);
PV1i.w = R124i.w;
R0i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.w)),intBitsToFloat(R126i.z)) + 1.0));
R0i.w = clampFI32(R0i.w);
PS1i = R0i.w;
// 4
backupReg0i = R127i.w;
PV0i.x = floatBitsToInt(0.5 + -(intBitsToFloat(PV1i.x)));
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(R127i.x)) + 0.5));
PV0i.y = R126i.y;
PV0i.z = floatBitsToInt(0.5 + -(intBitsToFloat(PV1i.w)));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(R125i.w)) + 0.5));
PV0i.w = R127i.w;
R125i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(R126i.w)) + 1.0));
R125i.y = clampFI32(R125i.y);
PS0i = R125i.y;
// 5
PV1i.x = floatBitsToInt(intBitsToFloat(R127i.y) + -(intBitsToFloat(PV0i.y)));
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(PS0i)) + 0.5));
PV1i.y = R127i.y;
PV1i.z = floatBitsToInt(intBitsToFloat(R125i.z) + -(intBitsToFloat(PV0i.w)));
R126i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R0i.w)) + 0.5));
PV1i.w = R126i.w;
R3i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.z),intBitsToFloat(R10i.w)) + intBitsToFloat(R5i.w)));
PS1i = R3i.w;
// 6
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(R127i.x)) + intBitsToFloat(R127i.w)));
PV0i.x = R123i.x;
PV0i.y = floatBitsToInt(intBitsToFloat(R126i.x) + -(intBitsToFloat(PV1i.y)));
PV0i.z = floatBitsToInt(intBitsToFloat(R124i.w) + -(intBitsToFloat(PV1i.w)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),intBitsToFloat(R125i.w)) + intBitsToFloat(R126i.y)));
PV0i.w = R123i.w;
// 7
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.x) * intBitsToFloat(0x3e35e743));
PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.w) * intBitsToFloat(0x3e35e743));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R125i.y)) + intBitsToFloat(R126i.w)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(R0i.w)) + intBitsToFloat(R127i.y)));
PV1i.w = R123i.w;
// 8
R123i.x = floatBitsToInt((intBitsToFloat(PV1i.w) * intBitsToFloat(0x3e825397) + intBitsToFloat(PV1i.x)));
PV0i.x = R123i.x;
R123i.w = floatBitsToInt((intBitsToFloat(PV1i.z) * intBitsToFloat(0x3e825397) + intBitsToFloat(PV1i.y)));
PV0i.w = R123i.w;
// 9
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(PV0i.w));
// 10
PV0i.y = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(0xbedd476b));
// 11
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x40c00000));
PV1i.x = clampFI32(PV1i.x);
// 12
R1i.w = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + 1.0);
}
activeMaskStack[1] = activeMaskStack[1] == false;
activeMaskStackC[2] = activeMaskStack[1] == true && activeMaskStackC[1] == true;
if( activeMaskStackC[2] == true ) {
// 0
R3i.w = R1i.w;
}
activeMaskStackC[1] = activeMaskStack[0] == true && activeMaskStackC[0] == true;
if( activeMaskStackC[1] == true ) {
// 0
R0i.x = floatBitsToInt((intBitsToFloat(R10i.x) * intBitsToFloat(0x38d1b717) + 0.5));
R0i.y = floatBitsToInt((intBitsToFloat(R11i.z) * intBitsToFloat(0x3903126f) + 0.5));
PV0i.z = floatBitsToInt(-(intBitsToFloat(R10i.y)));
PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) / 2.0);
PV0i.w = R11i.x;
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) / 2.0);
R2i.z = R1i.w;
PS0i = R2i.z;
// 1
R1i.x = floatBitsToInt(intBitsToFloat(PV0i.w) + 0.5);
R1i.y = floatBitsToInt(intBitsToFloat(PV0i.z) + 0.5);
R2i.w = 0x3f800000;
}
if( activeMaskStackC[1] == true ) {
R0i.xyz = floatBitsToInt(textureLod(textureUnitPS15, intBitsToFloat(R0i.xy),0.0).xyz);
R1i.y = floatBitsToInt(textureLod(textureUnitPS1, intBitsToFloat(R1i.xy),0.0).x);
}
if( activeMaskStackC[1] == true ) {
// 0
backupReg0i = R0i.x;
backupReg1i = R0i.y;
backupReg2i = R0i.z;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i),intBitsToFloat(backupReg2i),-0.0),vec4(uf_blockPS6[42].x,uf_blockPS6[42].y,uf_blockPS6[42].z,0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R2i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),-(intBitsToFloat(R11i.w))) + intBitsToFloat(R1i.y)));
PS0i = R2i.y;
// 1
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
// 2
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.w)));
PV0i.z = R127i.z;
// 3
PV1i.y = floatBitsToInt(intBitsToFloat(R3i.w) + -(intBitsToFloat(PV0i.z)));
// 4
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(R12i.w)) + intBitsToFloat(R127i.z)));
PV0i.x = R123i.x;
// 5
R2i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),uf_blockPS10[3].z) + uf_blockPS10[1].y));
R2i.x = clampFI32(R2i.x);
}
// export
passPixelColor5 = vec4(intBitsToFloat(R2i.x), intBitsToFloat(R2i.y), intBitsToFloat(R2i.z), intBitsToFloat(R2i.w));
}

View File

@ -0,0 +1,590 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 b8a18eeb20759bfd
UNIFORM_BUFFER_LAYOUT(33, 1, 6) uniform uniformBlockPS1
{
vec4 uf_blockPS1[1024];
};
UNIFORM_BUFFER_LAYOUT(38, 1, 7) uniform uniformBlockPS6
{
vec4 uf_blockPS6[1024];
};
UNIFORM_BUFFER_LAYOUT(42, 1, 8) uniform uniformBlockPS10
{
vec4 uf_blockPS10[1024];
};
TEXTURE_LAYOUT(1, 1, 0) uniform sampler2D textureUnitPS1;
TEXTURE_LAYOUT(2, 1, 1) uniform sampler2D textureUnitPS2;
TEXTURE_LAYOUT(5, 1, 2) uniform sampler2D textureUnitPS5;
TEXTURE_LAYOUT(7, 1, 3) uniform sampler2DArray textureUnitPS7;
TEXTURE_LAYOUT(12, 1, 4) uniform sampler2D textureUnitPS12;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem5;
layout(location = 2) in vec4 passParameterSem6;
layout(location = 5) out vec4 passPixelColor5;
#ifdef VULKAN
layout(set = 1, binding = 5) uniform ufBlock
{
uniform vec4 uf_fragCoordScale;
};
#else
uniform vec2 uf_fragCoordScale;
#endif
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; }
float textureShadow_1(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_2(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_3(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_4(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
float textureShadow_5(sampler2DArray s, vec4 coord) {
vec4 v;
vec2 texSize = vec2(textureSize(s,0).xy);
vec2 texSizeR = vec2(1.0) / texSize;
vec2 texCoordFract = mod(coord.xy,texSizeR);
vec2 texCoordBase = coord.xy - texCoordFract + texSizeR/2.0;
texCoordFract /= texSizeR;
v.x = texture(s, vec3(texCoordBase+vec2(0.0,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.y = texture(s, vec3(texCoordBase+vec2(texSizeR.x,0.0), coord.z)).x >= coord.w?1.0:0.0;
v.z = texture(s, vec3(texCoordBase+vec2(0.0,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
v.w = texture(s, vec3(texCoordBase+vec2(texSizeR.x,texSizeR.y), coord.z)).x >= coord.w?1.0:0.0;
float r = mix(mix(v.x, v.y, texCoordFract.x) , mix(v.z, v.w, texCoordFract.x) , texCoordFract.y);
return r;
}
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;
bool activeMaskStack[3];
bool activeMaskStackC[4];
activeMaskStack[0] = false;
activeMaskStack[1] = false;
activeMaskStackC[0] = false;
activeMaskStackC[1] = false;
activeMaskStackC[2] = false;
activeMaskStack[0] = true;
activeMaskStackC[0] = true;
activeMaskStackC[1] = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem5);
R2i = floatBitsToInt(passParameterSem6);
if( activeMaskStackC[1] == true ) {
R3i.w = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.xy)).x);
R4i.x = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.xy)).x);
R4i.z = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.zw)).x);
R4i.w = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.xy)).x);
R5i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R2i.zw)).xyzw);
R2i.z = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R2i.zw)).w);
}
if( activeMaskStackC[1] == true ) {
// 0
R127i.x = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R4i.x)) + uf_blockPS1[14].x));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.w),uf_blockPS1[16].x) + uf_blockPS1[14].x));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R4i.w)) + uf_blockPS1[14].x));
PV0i.z = R123i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R4i.z)) + uf_blockPS1[14].x));
PV0i.w = R127i.w;
R124i.x = floatBitsToInt((intBitsToFloat(R5i.x) * 2.0 + -(1.0)));
PS0i = R124i.x;
// 1
backupReg0i = R1i.x;
backupReg1i = R1i.y;
R1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(PV0i.y))));
PV1i.x = R1i.x;
R1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), -(intBitsToFloat(PV0i.y))));
R0i.z = floatBitsToInt(-(intBitsToFloat(PV0i.z)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), -(intBitsToFloat(PV0i.w))));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg1i), -(intBitsToFloat(PV0i.w))));
PS1i = R127i.z;
// 2
PV0i.x = floatBitsToInt(-(intBitsToFloat(R127i.w)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), -(intBitsToFloat(R127i.x))));
PV0i.z = floatBitsToInt(-(intBitsToFloat(R127i.x)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), -(intBitsToFloat(R127i.x))));
R126i.x = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + intBitsToFloat(PV1i.w));
PS0i = R126i.x;
// 3
R127i.x = floatBitsToInt(-(intBitsToFloat(R1i.y)) + intBitsToFloat(PV0i.w));
PV1i.x = R127i.x;
R126i.y = floatBitsToInt(-(intBitsToFloat(R1i.y)) + intBitsToFloat(R127i.z));
PV1i.y = R126i.y;
R127i.zwy = floatBitsToInt(vec3(-(intBitsToFloat(R1i.x)),-(intBitsToFloat(R0i.z)),-(intBitsToFloat(R0i.z))) + vec3(intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.z)));
PV1i.z = R127i.z;
PV1i.w = R127i.w;
PS1i = R127i.y;
// 4
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.z)));
R125i.y = floatBitsToInt((intBitsToFloat(R5i.y) * 2.0 + -(1.0)));
R125i.z = floatBitsToInt((intBitsToFloat(R5i.z) * 2.0 + -(1.0)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(PS1i)));
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.x), intBitsToFloat(PV1i.x)));
PS0i = R125i.x;
// 5
backupReg0i = R127i.y;
R2i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.x)),intBitsToFloat(R127i.w)) + intBitsToFloat(PV0i.w)));
R127i.y = floatBitsToInt(intBitsToFloat(R5i.w) * intBitsToFloat(0x437f0000));
R126i.z = floatBitsToInt(intBitsToFloat(R2i.z) * intBitsToFloat(0x437f0000));
PV1i.w = floatBitsToInt(uf_blockPS6[53].z * intBitsToFloat(0x3d4ccccd));
R2i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(R126i.x)) + intBitsToFloat(PV0i.x)));
PS1i = R2i.y;
// 6
R12i.x = floatBitsToInt((-(intBitsToFloat(R0i.z)) * intBitsToFloat(0x3d4ccccd) + -(intBitsToFloat(PV1i.w))));
R12i.x = clampFI32(R12i.x);
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), intBitsToFloat(R125i.z)));
R1i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.z)),intBitsToFloat(R126i.y)) + intBitsToFloat(R125i.x)));
R0i.w = 0x3f800000;
R2i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R0i.z)), uf_blockPS1[17].y));
PS0i = R2i.z;
// 7
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R124i.x),intBitsToFloat(R125i.y),intBitsToFloat(PV0i.y),-0.0),vec4(intBitsToFloat(R124i.x),intBitsToFloat(R125i.y),1.0,0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.w = tempi.x;
PS1i = int(intBitsToFloat(R127i.y));
// 8
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R2i.x)),-(intBitsToFloat(R2i.y)),-(intBitsToFloat(R1i.z)),-0.0),vec4(-(intBitsToFloat(R2i.x)),-(intBitsToFloat(R2i.y)),-(intBitsToFloat(R1i.z)),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R127i.y = tempi.x;
PS0i = PS1i & int(1);
// 9
R5i.z = ((PS0i == 0)?(0):(0x3f800000));
PS1i = int(intBitsToFloat(R126i.z));
// 10
R125i.x = PS1i & 0x00000002;
tempResultf = 1.0 / sqrt(intBitsToFloat(R127i.w));
PS0i = floatBitsToInt(tempResultf);
// 11
R9i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.x), intBitsToFloat(PS0i)));
R10i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(PS0i)));
R10i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), intBitsToFloat(PS0i)));
tempResultf = 1.0 / sqrt(intBitsToFloat(R127i.y));
R1i.w = floatBitsToInt(tempResultf);
PS1i = R1i.w;
// 12
R4i.w = floatBitsToInt(float(R125i.x));
R4i.w = floatBitsToInt(intBitsToFloat(R4i.w) / 2.0);
PS0i = R4i.w;
}
if( activeMaskStackC[1] == true ) {
activeMaskStack[1] = activeMaskStack[0];
activeMaskStackC[2] = activeMaskStackC[1];
// 0
R5i.x = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].x, uf_blockPS10[2].w));
R9i.y = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].y, uf_blockPS10[2].w));
// 1
R4i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].z, uf_blockPS10[2].w));
R9i.w = 0;
// 2
predResult = (1.0 > intBitsToFloat(R12i.x));
activeMaskStack[1] = predResult;
activeMaskStackC[2] = predResult == true && activeMaskStackC[1] == true;
}
else {
activeMaskStack[1] = false;
activeMaskStackC[2] = false;
}
if( activeMaskStackC[2] == true ) {
// 0
PV0i.x = floatBitsToInt(intBitsToFloat(R9i.x) * 1.5);
PV0i.y = floatBitsToInt(intBitsToFloat(R10i.y) * 1.5);
R127i.z = ((-(intBitsToFloat(R0i.z)) > uf_blockPS1[58].y)?int(0xFFFFFFFF):int(0x0));
PV0i.w = ((-(intBitsToFloat(R0i.z)) > uf_blockPS1[58].x)?int(0xFFFFFFFF):int(0x0));
PS0i = floatBitsToInt(intBitsToFloat(R10i.z) * 1.5);
// 1
backupReg0i = R2i.x;
backupReg1i = R2i.z;
R2i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(R1i.w)) + intBitsToFloat(PV0i.x)));
PV1i.y = PV0i.w & int(1);
R2i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R2i.y)),intBitsToFloat(R1i.w)) + intBitsToFloat(PV0i.y)));
R2i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R1i.z)),intBitsToFloat(R1i.w)) + intBitsToFloat(PS0i)));
R122i.x = floatBitsToInt((intBitsToFloat(backupReg1i) * 0.25 + 1.0));
PS1i = R122i.x;
// 2
R4i.x = PV1i.y - R127i.z;
PV0i.x = R4i.x;
R5i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R9i.x),intBitsToFloat(R4i.w)) + intBitsToFloat(R1i.x)));
R3i.z = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i));
R3i.w = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i));
R4i.y = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i));
PS0i = R4i.y;
// 3
backupReg0i = R4i.w;
backupReg1i = R0i.z;
R3i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.y),intBitsToFloat(R4i.w)) + intBitsToFloat(R1i.y)));
R3i.y = floatBitsToInt(uf_blockPS6[53].y);
R3i.y = floatBitsToInt(intBitsToFloat(R3i.y) / 2.0);
PV1i.z = PV0i.x << 0x00000002;
R4i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(backupReg0i)) + intBitsToFloat(backupReg1i)));
R127i.y = floatBitsToInt(float(PV0i.x));
PS1i = R127i.y;
// 4
R1i.x = PV1i.z + 0x0000002b;
R1i.y = PV1i.z + 0x0000002a;
R1i.z = PV1i.z + 0x0000002d;
R1i.w = PV1i.z + 0x0000002c;
R5i.w = floatBitsToInt(uf_blockPS6[53].x);
R5i.w = floatBitsToInt(intBitsToFloat(R5i.w) / 2.0);
PS0i = R5i.w;
// 5
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R2i.x),intBitsToFloat(R2i.z),intBitsToFloat(R2i.w),-0.0),vec4(intBitsToFloat(R2i.x),intBitsToFloat(R2i.z),intBitsToFloat(R2i.w),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R2i.y = tempi.x;
R9i.z = floatBitsToInt(roundEven(intBitsToFloat(R127i.y)));
PS1i = R9i.z;
}
if( activeMaskStackC[2] == true ) {
R6i.xyzw = floatBitsToInt(uf_blockPS1[R1i.z].xyzw);
R7i.xyzw = floatBitsToInt(uf_blockPS1[R1i.w].xyzw);
R8i.xyzw = floatBitsToInt(uf_blockPS1[R1i.y].xyzw);
R1i.xyzw = floatBitsToInt(uf_blockPS1[R1i.x].xyzw);
}
if( activeMaskStackC[2] == true ) {
// 0
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.x),intBitsToFloat(R10i.y),intBitsToFloat(R10i.z),intBitsToFloat(R10i.z)),vec4(-(intBitsToFloat(R5i.x)),-(intBitsToFloat(R9i.y)),-(intBitsToFloat(R4i.z)),-(intBitsToFloat(R9i.w)))));
tempi.x = clampFI32(tempi.x);
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R126i.z = tempi.x;
tempResultf = 1.0 / sqrt(intBitsToFloat(R2i.y));
PS0i = floatBitsToInt(tempResultf);
// 1
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(PS0i)));
PV1i.x = R127i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(PS0i)));
PV1i.y = R127i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.w), intBitsToFloat(PS0i)));
PV1i.z = R127i.z;
R127i.w = floatBitsToInt(-(intBitsToFloat(R3i.y)));
R2i.z = R9i.z;
PS1i = R2i.z;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R9i.y),intBitsToFloat(R4i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R125i.y = floatBitsToInt(-(intBitsToFloat(R5i.w)));
PS0i = R125i.y;
// 3
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R4i.z)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.z)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R9i.y)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.y)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(PV0i.x)) + 1.0));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R5i.x)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.x)));
PV1i.w = R123i.w;
R126i.x = R3i.y;
PS1i = R126i.x;
// 4
backupReg0i = R126i.z;
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R3i.z)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(R4i.y)));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(R3i.w)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(backupReg0i)));
R10i.z = R9i.z;
PS0i = R10i.z;
// 5
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.z), intBitsToFloat(PV0i.w)));
R11i.z = R9i.z;
// 6
R5i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(PV1i.x)) + intBitsToFloat(R5i.y)));
PV0i.x = R5i.x;
R5i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),intBitsToFloat(PV1i.x)) + intBitsToFloat(R3i.x)));
R0i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(PV1i.x)) + intBitsToFloat(R4i.w)));
// 7
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R7i.x)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R6i.x)));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R8i.x)));
// 8
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(R6i.y)) + intBitsToFloat(PV1i.y)));
PV0i.x = R123i.x;
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(R7i.y)) + intBitsToFloat(PV1i.x)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.x), intBitsToFloat(R1i.x)));
// 9
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(R8i.y)) + intBitsToFloat(R126i.z)));
PV1i.x = R123i.x;
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(R1i.y)) + intBitsToFloat(PV0i.z)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.z),intBitsToFloat(R6i.z)) + intBitsToFloat(PV0i.x)));
PV1i.w = R123i.w;
// 10
backupReg0i = R0i.z;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.z),intBitsToFloat(R8i.z)) + intBitsToFloat(PV1i.x)));
PV0i.x = R123i.x;
PV0i.z = floatBitsToInt(intBitsToFloat(R6i.w) + intBitsToFloat(PV1i.w));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(R7i.z)) + intBitsToFloat(R127i.y)));
PV0i.w = R123i.w;
// 11
backupReg0i = R0i.z;
PV1i.x = floatBitsToInt(intBitsToFloat(R8i.w) + intBitsToFloat(PV0i.x));
PV1i.z = floatBitsToInt(intBitsToFloat(R7i.w) + intBitsToFloat(PV0i.w));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(R1i.z)) + intBitsToFloat(R126i.y)));
PV1i.w = R123i.w;
R126i.y = floatBitsToInt(1.0 / intBitsToFloat(PV0i.z));
PS1i = R126i.y;
// 12
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(PS1i)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(PS1i)));
PV0i.y = R127i.y;
PV0i.z = floatBitsToInt(intBitsToFloat(R1i.w) + intBitsToFloat(PV1i.w));
// 13
R127i.x = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(0xbb03126f));
R127i.x = clampFI32(R127i.x);
PV1i.x = R127i.x;
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R126i.y)));
PV1i.w = R126i.w;
R9i.x = floatBitsToInt((uf_blockPS6[53].x * 0.5 + intBitsToFloat(PV0i.y)));
PS1i = R9i.x;
// 14
R2i.x = floatBitsToInt(intBitsToFloat(R127i.y) + intBitsToFloat(R5i.w));
R9i.y = floatBitsToInt((uf_blockPS6[53].y * 0.5 + intBitsToFloat(PV1i.w)));
R9i.w = PV1i.x;
R2i.y = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(R127i.w));
PS0i = R2i.y;
// 15
R10i.x = floatBitsToInt(intBitsToFloat(R127i.y) + intBitsToFloat(R125i.y));
R10i.y = floatBitsToInt(intBitsToFloat(R126i.w) + intBitsToFloat(R126i.x));
R2i.w = R127i.x;
R10i.w = R127i.x;
PS1i = R10i.w;
// 16
R11i.x = floatBitsToInt((-(uf_blockPS6[53].x) * 0.5 + intBitsToFloat(R127i.y)));
R11i.y = floatBitsToInt((-(uf_blockPS6[53].y) * 0.5 + intBitsToFloat(R126i.w)));
R11i.w = R127i.x;
}
if( activeMaskStackC[2] == true ) {
R9i.y = floatBitsToInt(textureShadow_1(textureUnitPS7, vec4(intBitsToFloat(R9i.x),intBitsToFloat(R9i.y),intBitsToFloat(R9i.z),intBitsToFloat(R9i.w))));
R2i.x = floatBitsToInt(textureShadow_2(textureUnitPS7, vec4(intBitsToFloat(R2i.x),intBitsToFloat(R2i.y),intBitsToFloat(R2i.z),intBitsToFloat(R2i.w))));
R10i.w = floatBitsToInt(textureShadow_3(textureUnitPS7, vec4(intBitsToFloat(R10i.x),intBitsToFloat(R10i.y),intBitsToFloat(R10i.z),intBitsToFloat(R10i.w))));
R11i.z = floatBitsToInt(textureShadow_4(textureUnitPS7, vec4(intBitsToFloat(R11i.x),intBitsToFloat(R11i.y),intBitsToFloat(R11i.z),intBitsToFloat(R11i.w))));
}
if( activeMaskStackC[2] == true ) {
activeMaskStack[2] = activeMaskStack[1];
activeMaskStackC[3] = activeMaskStackC[2];
// 0
PV0i.z = floatBitsToInt(intBitsToFloat(R9i.y) + intBitsToFloat(R2i.x));
PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) / 2.0);
// 1
R123i.y = floatBitsToInt((intBitsToFloat(R10i.w) * 0.5 + intBitsToFloat(PV0i.z)));
PV1i.y = R123i.y;
// 2
R0i.w = floatBitsToInt((intBitsToFloat(R11i.z) * 0.5 + intBitsToFloat(PV1i.y))/2.0);
PV0i.w = R0i.w;
// 3
PV1i.x = ((1.0 > intBitsToFloat(PV0i.w))?int(0xFFFFFFFF):int(0x0));
// 4
R1i.z = ((R4i.x > 0)?(PV1i.x):(0));
// 5
predResult = (R1i.z != 0);
activeMaskStack[2] = predResult;
activeMaskStackC[3] = predResult == true && activeMaskStackC[2] == true;
}
else {
activeMaskStack[2] = false;
activeMaskStackC[3] = false;
}
if( activeMaskStackC[3] == true ) {
// 0
PV0i.x = int(-1) + R4i.x;
// 1
PV1i.w = PV0i.x << 0x00000002;
PS1i = floatBitsToInt(float(PV0i.x));
// 2
R1i.x = PV1i.w + 0x0000002c;
R1i.y = PV1i.w + 0x0000002a;
R1i.z = PV1i.w + 0x0000002b;
R1i.w = PV1i.w + 0x0000002d;
R5i.z = floatBitsToInt(roundEven(intBitsToFloat(PS1i)));
PS0i = R5i.z;
}
if( activeMaskStackC[3] == true ) {
R2i.xyzw = floatBitsToInt(uf_blockPS1[R1i.w].xyzw);
R3i.xyzw = floatBitsToInt(uf_blockPS1[R1i.x].xyzw);
R4i.xyzw = floatBitsToInt(uf_blockPS1[R1i.y].xyzw);
R1i.xyzw = floatBitsToInt(uf_blockPS1[R1i.z].xyzw);
}
if( activeMaskStackC[3] == true ) {
// 0
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.x), intBitsToFloat(R3i.x)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.x), intBitsToFloat(R2i.x)));
// 1
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(R3i.y)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.x), intBitsToFloat(R4i.x)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(R2i.y)) + intBitsToFloat(PV0i.y)));
PV1i.z = R123i.z;
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.x), intBitsToFloat(R1i.x)));
// 2
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.z),intBitsToFloat(R2i.z)) + intBitsToFloat(PV1i.z)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(R1i.y)) + intBitsToFloat(PV1i.w)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(R4i.y)) + intBitsToFloat(PV1i.y)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.z),intBitsToFloat(R3i.z)) + intBitsToFloat(PV1i.x)));
PV0i.w = R123i.w;
// 3
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.z),intBitsToFloat(R4i.z)) + intBitsToFloat(PV0i.z)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.z),intBitsToFloat(R1i.z)) + intBitsToFloat(PV0i.y)));
PV1i.y = R123i.y;
R127i.z = floatBitsToInt(intBitsToFloat(R3i.w) + intBitsToFloat(PV0i.w));
PV1i.w = floatBitsToInt(intBitsToFloat(R2i.w) + intBitsToFloat(PV0i.x));
// 4
PV0i.x = floatBitsToInt(intBitsToFloat(R1i.w) + intBitsToFloat(PV1i.y));
PV0i.w = floatBitsToInt(intBitsToFloat(R4i.w) + intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.w));
// 5
R5i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(PS0i)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS0i)));
R5i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PS0i)));
PS1i = R5i.y;
// 6
R5i.w = floatBitsToInt(intBitsToFloat(PV1i.y) + intBitsToFloat(0xbb03126f));
R5i.w = clampFI32(R5i.w);
}
if( activeMaskStackC[3] == true ) {
R5i.y = floatBitsToInt(textureShadow_5(textureUnitPS7, vec4(intBitsToFloat(R5i.x),intBitsToFloat(R5i.y),intBitsToFloat(R5i.z),intBitsToFloat(R5i.w))));
}
if( activeMaskStackC[3] == true ) {
// 0
backupReg0i = R0i.w;
R0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R5i.y)));
}
activeMaskStackC[2] = activeMaskStack[1] == true && activeMaskStackC[1] == true;
if( activeMaskStackC[2] == true ) {
// 0
PV0i.x = floatBitsToInt(-(intBitsToFloat(R0i.w)) + 1.0);
// 1
backupReg0i = R0i.w;
R0i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R12i.x)) + intBitsToFloat(backupReg0i)));
}
activeMaskStackC[1] = activeMaskStack[0] == true && activeMaskStackC[0] == true;
if( activeMaskStackC[1] == true ) {
R0i.y = floatBitsToInt(texture(textureUnitPS12, intBitsToFloat(R0i.xy)).y);
}
if( activeMaskStackC[1] == true ) {
// 0
R0i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.w),uf_blockPS10[3].z) + uf_blockPS10[1].y));
R0i.x = clampFI32(R0i.x);
R0i.z = 0x3f800000;
}
// export
passPixelColor5 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), intBitsToFloat(R0i.z));
}

View File

@ -0,0 +1,8 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = Shadows for Intel GPUs (Vulkan)
path = "The Legend of Zelda: Breath of the Wild/Workarounds/Shadows for Intel GPUs (Vulkan)"
description = Reduces the severity of the bugged shadows on Intel integrated GPUs when using Vulkan.||Made by ethrillo and Cypher.
vendorFilter = intel
rendererFilter = vulkan
version = 6

View File

@ -0,0 +1,17 @@
[BotW_ArrowDrawSpeed_V208]
moduleMatches = 0x6267BFD0
0x100C0150 = drawSpeedValue:
0x100C0150 = .float $multiplier
0x024A0164 = lfs f0, drawSpeedValue@l(r10)
0x024A019C = lfs f0, drawSpeedValue@l(r10)
[BotW_ArrowDrawSpeed_V176V192]
moduleMatches = 0xFD091F9F,0xD472D8A5
0x100c5040 = float3:
0x0249FDC0 = lfs f0, float3@l(r10)
0x0249FDF8 = lfs f0, float3@l(r10)

View File

@ -0,0 +1,59 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = Arrow Draw Speed
path = "The Legend of Zelda: Breath of the Wild/Cheats/Arrow Draw Speed"
description = Changes the speed that arrows are drawn at.||Made by C313571N and Xalphenos.
version = 6
[Default]
$multiplier = 1
[Preset]
category = Draw Speed
name = Disable Bow
$multiplier = 0.0
[Preset]
category = Draw Speed
name = 0.5x
$multiplier = 0.5
[Preset]
category = Draw Speed
name = 0.75x
$multiplier = 0.75
[Preset]
category = Draw Speed
default = 1
name = 1x (Default)
[Preset]
category = Draw Speed
name = 1.5x
$multiplier = 1.5
[Preset]
category = Draw Speed
name = 2x
$multiplier = 2.0
[Preset]
category = Draw Speed
name = 3x
$multiplier = 3.0
[Preset]
category = Draw Speed
name = 10x
$multiplier = 10.0
[Preset]
category = Draw Speed
name = 20x
$multiplier = 20.0
[Preset]
category = Draw Speed
name = 40x
$multiplier = 40.0

View File

@ -0,0 +1,10 @@
[BotW_Durability_V208]
moduleMatches = 0x6267BFD0
.origin = codecave
_modifierValue:
.float $multiplier
0x024ACBF0 = lis r3, _modifierValue@ha
0x024ACBF4 = lfs f31, _modifierValue@l(r3)

View File

@ -0,0 +1,54 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = Durability
path = "The Legend of Zelda: Breath of the Wild/Cheats/Durability"
description = Modifies the weapons, bows and shields durability (except burn damage and throwing weapons).||Made by Nopt.
version = 6
[Default]
$multiplier = 1
[Preset]
category = Durability Modifier
name = One Hit
$multiplier = 1000
[Preset]
category = Durability Modifier
name = x1 (Default)
default = 1
[Preset]
category = Durability Modifier
name = x1.5
$multiplier = 1/1.5
[Preset]
category = Durability Modifier
name = x2
$multiplier = 1/2
[Preset]
category = Durability Modifier
name = x3
$multiplier = 1/3
[Preset]
category = Durability Modifier
name = x4
$multiplier = 1/4
[Preset]
category = Durability Modifier
name = x5
$multiplier = 1/5
[Preset]
category = Durability Modifier
name = x10
$multiplier = 1/10
[Preset]
category = Durability Modifier
name = Unbreakable
$multiplier = 0

View File

@ -0,0 +1,10 @@
[BotW_InfiniteAmiibo_V208]
moduleMatches = 0x6267BFD0
0x029E949C = mr r29, r11
[BotW_InfiniteAmiibo_V176V192]
moduleMatches = 0xFD091F9F,0xD472D8A5
0x029E90F0 = mr r29, r11

View File

@ -0,0 +1,6 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = Infinite Amiibo
path = "The Legend of Zelda: Breath of the Wild/Cheats/Infinite Amiibo"
description = Removes the limit that only allows you to scan each amiibo per day.||Made by C313571N and Xalphenos.
version = 6

View File

@ -0,0 +1,10 @@
[BotW_InfiniteArrows_V208]
moduleMatches = 0x6267BFD0
0x02EB6758 = nop
[BotW_InfiniteArrows_V176V192]
moduleMatches = 0xFD091F9F,0xD472D8A5
0x02EB61BC = nop

View File

@ -0,0 +1,6 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = Infinite Arrows
path = "The Legend of Zelda: Breath of the Wild/Cheats/Infinite Arrows"
description = Gives you infinite amounts of arrows.||Made by C313571N and Xalphenos.
version = 6

View File

@ -0,0 +1,10 @@
[BotW_InfiniteDaruk_V208]
moduleMatches = 0x6267BFD0
0x02D74498 = nop
[BotW_InfiniteDaruk_V176V192]
moduleMatches = 0xFD091F9F,0xD472D8A5
0x02D73EFC = nop

View File

@ -0,0 +1,6 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = Infinite Daruk's Protection
path = "The Legend of Zelda: Breath of the Wild/Cheats/Infinite Daruk's Protection"
description = Lets you use Daruk's protection without a time limit.||Made by C313571N and Xalphenos.
version = 6

View File

@ -0,0 +1,10 @@
[BotW_InfiniteHearts_V208]
moduleMatches = 0x6267BFD0
0x02D452A4 = nop
[BotW_InfiniteHearts_V176V192]
moduleMatches = 0xFD091F9F,0xD472D8A5
0x02D44D44 = nop

View File

@ -0,0 +1,6 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = Infinite Hearts
path = "The Legend of Zelda: Breath of the Wild/Cheats/Infinite Hearts"
description = Prevents you from taking any damage. Doesn't increase the amount of hearts you have so it doesn't affect your save file.||Made by C313571N and Xalphenos.
version = 6

View File

@ -0,0 +1,10 @@
[BotW_InfiniteMipha_V208]
moduleMatches = 0x6267BFD0
0x02D91DBC = fmuls f0, f13, f12
[BotW_InfiniteMipha_V176V192]
moduleMatches = 0xFD091F9F,0xD472D8A5
0x02D91820 = fmuls f0, f13, f12

View File

@ -0,0 +1,6 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = Infinite Mipha's Grace
path = "The Legend of Zelda: Breath of the Wild/Cheats/Infinite Mipha's Grace"
description = Lets you use Mipha's Grace without a time limit.||Made by C313571N and Xalphenos.
version = 6

View File

@ -0,0 +1,10 @@
[BotW_InfiniteMotorcycleEnergy_V208]
moduleMatches = 0x6267BFD0
0x020957DC = fmr f12, f0
[BotW_InfiniteMotorcycleEnergy_V176V192]
moduleMatches = 0xFD091F9F,0xD472D8A5
0x0209583C = fmr f12, f0

View File

@ -0,0 +1,6 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = Infinite Motorcycle Energy
path = "The Legend of Zelda: Breath of the Wild/Cheats/Infinite Motorcycle Energy"
description = Gives you infinite energy for your motorcycle.||Made by C313571N and Xalphenos.
version = 6

View File

@ -0,0 +1,10 @@
[BotW_InfiniteRevali_V208]
moduleMatches = 0x6267BFD0
0x02CE0328 = nop
[BotW_InfiniteRevali_V176V192]
moduleMatches = 0xFD091F9F,0xD472D8A5
0x02CDFE0C = nop

View File

@ -0,0 +1,6 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = Infinite Revali's Gale
path = "The Legend of Zelda: Breath of the Wild/Cheats/Infinite Revali's Gale"
description = Lets you use Revali's Gale without a time limit.||Made by C313571N and Xalphenos.
version = 6

View File

@ -0,0 +1,10 @@
[BotW_InfiniteStamina_V208]
moduleMatches = 0x6267BFD0
0x02D90CC0 = fmr f29, f1
[BotW_InfiniteStamina_V176V192]
moduleMatches = 0xFD091F9F,0xD472D8A5
0x02D90724 = fmr f29, f1

View File

@ -0,0 +1,6 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = Infinite Stamina
path = "The Legend of Zelda: Breath of the Wild/Cheats/Infinite Stamina"
description = Gives you infinite stamina. Doesn't affect your save file.||Made by C313571N and Xalphenos.
version = 6

View File

@ -0,0 +1,10 @@
[BotW_InfiniteUrbosa_V208]
moduleMatches = 0x6267BFD0
0x02D741C8 = nop
[BotW_InfiniteUrbosa_V176V192]
moduleMatches = 0xFD091F9F,0xD472D8A5
0x02D73C2C = nop

View File

@ -0,0 +1,6 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = Infinite Urbosa's Fury
path = "The Legend of Zelda: Breath of the Wild/Cheats/Infinite Urbosa's Fury"
description = Lets you use Urbosa's Fury without a time limit.||Made by C313571N and Xalphenos.
version = 6

View File

@ -0,0 +1,4 @@
[BotW_MotorcycleAllRegions_V208]
moduleMatches = 0x6267BFD0
0x02A32A30 = li r3, 1 ; Spawn motorcycle anywhere, credits to Zeikken (converting to patches) and leoetlino (finding the value).

View File

@ -0,0 +1,6 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = Spawn Motorcycle In All Regions
path = "The Legend of Zelda: Breath of the Wild/Cheats/Spawn Motorcycle In All Regions"
description = Allows you to spawn the motorcycle in all the regions (normally you can't in the Gerudo Desert and Eldin).||Made by Zeikken (porting) and leoetlino (original code).
version = 6

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,692 @@
#version 430
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
// shader 8ff2cf86e789335f
// Used for: Shrine wall reflections - Dumped with Cemu 1.20.1
// 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 = 10) uniform ufBlock
{
uniform ivec4 uf_remappedPS[10];
uniform vec4 uf_fragCoordScale;
};
#else
uniform ivec4 uf_remappedPS[10];
uniform vec2 uf_fragCoordScale;
#endif
#define reflExtra $reflExtra
TEXTURE_LAYOUT(1, 1, 0) uniform sampler2D textureUnitPS1;
TEXTURE_LAYOUT(2, 1, 1) uniform sampler2D textureUnitPS2;
TEXTURE_LAYOUT(3, 1, 2) uniform sampler2D textureUnitPS3;
TEXTURE_LAYOUT(5, 1, 3) uniform sampler2D textureUnitPS5;
TEXTURE_LAYOUT(7, 1, 4) uniform sampler2D textureUnitPS7;
TEXTURE_LAYOUT(8, 1, 5) uniform sampler2D textureUnitPS8;
TEXTURE_LAYOUT(9, 1, 6) uniform samplerCubeArray textureUnitPS9;
TEXTURE_LAYOUT(11, 1, 7) uniform sampler2DArray textureUnitPS11;
TEXTURE_LAYOUT(12, 1, 8) uniform sampler2D textureUnitPS12;
TEXTURE_LAYOUT(14, 1, 9) uniform sampler2D textureUnitPS14;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 2) in vec4 passParameterSem3;
layout(location = 3) in vec4 passParameterSem4;
layout(location = 4) in vec4 passParameterSem6;
layout(location = 0) out vec4 passPixelColor0;
// 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 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 cubeMapArrayIndex9 = 0.0;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem1);
R2i = floatBitsToInt(passParameterSem3);
R3i = floatBitsToInt(passParameterSem4);
R4i = floatBitsToInt(passParameterSem6);
R7i.xyzw = floatBitsToInt(texture(textureUnitPS3, intBitsToFloat(R4i.zw)).xyzw);
R2i.w = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R0i.xy)).x);
R5i.xyzw = floatBitsToInt(textureGather(textureUnitPS7, vec2(0.0001) + intBitsToFloat(R0i.xy)).xyzw);
R6i.xyzw = floatBitsToInt(textureGather(textureUnitPS8, vec2(0.0001) + intBitsToFloat(R0i.xy)).xyzw);
R8i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R4i.zw)).xyzw);
// 0
R127i.x = floatBitsToInt((intBitsToFloat(R7i.x) * 2.0 + -(1.0)));
PV0i.x = R127i.x;
R127i.y = floatBitsToInt((intBitsToFloat(R7i.y) * 2.0 + -(1.0)));
PV0i.y = R127i.y;
R126i.z = floatBitsToInt((intBitsToFloat(R7i.z) * 2.0 + -(1.0)));
PV0i.z = R126i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.w),intBitsToFloat(uf_remappedPS[0].x)) + intBitsToFloat(uf_remappedPS[1].x)));
PV0i.w = R127i.w;
R127i.z = floatBitsToInt(-(intBitsToFloat(R2i.w)) + intBitsToFloat(R5i.x));
PS0i = R127i.z;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R2i.z = floatBitsToInt(-(intBitsToFloat(PV0i.w)));
PS1i = R2i.z;
// 2
R12i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(R127i.w))));
R12i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), -(intBitsToFloat(R127i.w))));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(uf_remappedPS[2].y)));
R125i.w = floatBitsToInt(max(intBitsToFloat(R127i.z), -(intBitsToFloat(R127i.z))));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
R126i.y = floatBitsToInt(tempResultf);
PS0i = R126i.y;
// 3
R4i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS0i)));
PV1i.x = R4i.x;
R4i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS0i)));
R127i.z = floatBitsToInt(-(intBitsToFloat(R2i.w)) + intBitsToFloat(R5i.y));
R126i.w = floatBitsToInt(-(intBitsToFloat(R2i.w)) + intBitsToFloat(R5i.z));
R127i.w = floatBitsToInt(1.0 / intBitsToFloat(PV0i.z));
R127i.w = floatBitsToInt(intBitsToFloat(R127i.w) * 2.0);
PS1i = R127i.w;
// 4
backupReg0i = R0i.x;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R12i.x),intBitsToFloat(R12i.y),intBitsToFloat(R2i.z),-0.0),vec4(intBitsToFloat(R12i.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;
R9i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.x),intBitsToFloat(PV1i.x)) + intBitsToFloat(backupReg0i)));
PS0i = R9i.x;
// 5
backupReg0i = R127i.z;
backupReg0i = R127i.z;
R126i.x = floatBitsToInt(-(intBitsToFloat(R2i.w)) + intBitsToFloat(R5i.w));
R9i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.y),intBitsToFloat(R4i.y)) + intBitsToFloat(R0i.y)));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), intBitsToFloat(R127i.w)));
R127i.w = floatBitsToInt(max(intBitsToFloat(backupReg0i), -(intBitsToFloat(backupReg0i))));
PS1i = floatBitsToInt(sqrt(intBitsToFloat(PV0i.x)));
// 6
R127i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.x),intBitsToFloat(R7i.y),intBitsToFloat(R7i.z),-0.0),vec4(intBitsToFloat(0x3eaaaaab),intBitsToFloat(0x3eaaaaab),intBitsToFloat(0x3eaaaaab),0.0)));
PV0i.x = R127i.x;
PV0i.y = R127i.x;
PV0i.z = R127i.x;
PV0i.w = R127i.x;
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PS1i));
// 7
R2i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R12i.x), intBitsToFloat(PS0i)));
R13i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R12i.y), intBitsToFloat(PS0i)));
R9i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.z), intBitsToFloat(PS0i)));
PV1i.w = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R6i.x));
R125i.x = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R6i.y));
PS1i = R125i.x;
// 8
backupReg0i = R127i.x;
backupReg0i = R127i.x;
R127i.x = floatBitsToInt(max(intBitsToFloat(R126i.w), -(intBitsToFloat(R126i.w))));
PV0i.y = floatBitsToInt(-(intBitsToFloat(backupReg0i)) + intBitsToFloat(R6i.w));
R125i.z = floatBitsToInt(max(intBitsToFloat(R126i.x), -(intBitsToFloat(R126i.x))));
PV0i.w = floatBitsToInt(-(intBitsToFloat(backupReg0i)) + intBitsToFloat(R6i.z));
PS0i = floatBitsToInt(max(intBitsToFloat(PV1i.w), -(intBitsToFloat(PV1i.w))));
PS0i = floatBitsToInt(intBitsToFloat(PS0i) * 4.0);
// 9
backupReg0i = R126i.z;
PV1i.x = floatBitsToInt(max(intBitsToFloat(R125i.x), -(intBitsToFloat(R125i.x))));
PV1i.x = floatBitsToInt(intBitsToFloat(PV1i.x) * 4.0);
PV1i.y = floatBitsToInt(max(intBitsToFloat(PV0i.y), -(intBitsToFloat(PV0i.y))));
PV1i.y = floatBitsToInt(intBitsToFloat(PV1i.y) * 4.0);
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R125i.w)) + intBitsToFloat(PS0i)));
PV1i.w = floatBitsToInt(max(intBitsToFloat(PV0i.w), -(intBitsToFloat(PV0i.w))));
PV1i.w = floatBitsToInt(intBitsToFloat(PV1i.w) * 4.0);
R5i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R126i.y)));
PS1i = R5i.z;
// 10
backupReg0i = R127i.z;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R127i.w)) + intBitsToFloat(PV1i.x)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R125i.z)) + intBitsToFloat(PV1i.y)));
PV0i.y = R123i.y;
R127i.z = floatBitsToInt(fract(intBitsToFloat(R3i.x)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(R127i.x)) + intBitsToFloat(PV1i.w)));
PV0i.w = R123i.w;
R125i.x = floatBitsToInt(fract(intBitsToFloat(R3i.y)));
PS0i = R125i.x;
// 11
R127i.x = floatBitsToInt(intBitsToFloat(R126i.z) + -(intBitsToFloat(PV0i.w)));
PV1i.x = R127i.x;
R126i.y = R4i.x;
R126i.y = floatBitsToInt(intBitsToFloat(R126i.y) * 2.0);
R126i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(PV0i.y));
PV1i.z = R126i.z;
R127i.w = R4i.y;
R127i.w = floatBitsToInt(intBitsToFloat(R127i.w) * 2.0);
R125i.w = R5i.z;
R125i.w = floatBitsToInt(intBitsToFloat(R125i.w) * 2.0);
PS1i = R125i.w;
// 12
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R4i.y),intBitsToFloat(R5i.z),-0.0),vec4(intBitsToFloat(R2i.x),intBitsToFloat(R13i.y),intBitsToFloat(R9i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R127i.y = tempi.x;
PS0i = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(PV1i.x));
// 13
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R126i.y)) + intBitsToFloat(R2i.x)));
PV1i.y = floatBitsToInt(intBitsToFloat(R126i.z) + -(intBitsToFloat(backupReg0i)));
R126i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R127i.w)) + intBitsToFloat(R13i.y)));
PV1i.w = floatBitsToInt(intBitsToFloat(PS0i) + intBitsToFloat(R127i.z));
PV1i.w = clampFI32(PV1i.w);
R125i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R125i.w)) + intBitsToFloat(R9i.z)));
PS1i = R125i.z;
// 14
R6i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R9i.x)) + intBitsToFloat(R1i.z)));
PV0i.y = floatBitsToInt(intBitsToFloat(PV1i.y) + intBitsToFloat(R125i.x));
PV0i.y = clampFI32(PV0i.y);
R11i.z = floatBitsToInt(roundEven(0.0));
PV0i.w = floatBitsToInt(-(intBitsToFloat(R127i.z)) + intBitsToFloat(PV1i.w));
R10i.w = floatBitsToInt((-(intBitsToFloat(R7i.w)) * intBitsToFloat(0x40400000) + intBitsToFloat(0x40400000)));
PS0i = R10i.w;
// 15
R11i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.z),intBitsToFloat(PV0i.w)) + intBitsToFloat(R0i.x)));
R5i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R9i.y)) + intBitsToFloat(R1i.w)));
R1i.z = floatBitsToInt(intBitsToFloat(R2i.x) + intBitsToFloat(uf_remappedPS[3].x));
PV1i.w = floatBitsToInt(-(intBitsToFloat(R125i.x)) + intBitsToFloat(PV0i.y));
R1i.y = floatBitsToInt(intBitsToFloat(R13i.y) + intBitsToFloat(uf_remappedPS[3].y));
PS1i = R1i.y;
// 16
R125i.x = floatBitsToInt(max(-(intBitsToFloat(R127i.y)), 0.0));
R11i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.w),intBitsToFloat(PV1i.w)) + intBitsToFloat(R0i.y)));
R6i.z = floatBitsToInt(intBitsToFloat(R9i.z) + intBitsToFloat(uf_remappedPS[3].z));
R127i.w = floatBitsToInt(intBitsToFloat(R8i.w) * intBitsToFloat(0x437f0000));
R6i.y = floatBitsToInt(-(intBitsToFloat(R7i.w)) + 1.0);
PS0i = R6i.y;
// 17
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[4].x),intBitsToFloat(uf_remappedPS[4].y),intBitsToFloat(uf_remappedPS[4].z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R126i.z),intBitsToFloat(R125i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R1i.w = 0;
PS1i = R1i.w;
// 18
R124i.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[5].x),intBitsToFloat(uf_remappedPS[5].y),intBitsToFloat(uf_remappedPS[5].z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R126i.z),intBitsToFloat(R125i.z),0.0)));
PV0i.x = R124i.x;
PV0i.y = R124i.x;
PV0i.z = R124i.x;
PV0i.w = R124i.x;
R124i.z = floatBitsToInt(-(intBitsToFloat(PV1i.x)));
PS0i = R124i.z;
// 19
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[6].x),intBitsToFloat(uf_remappedPS[6].y),intBitsToFloat(uf_remappedPS[6].z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R126i.z),intBitsToFloat(R125i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R124i.y = tempi.x;
R4i.z = int(intBitsToFloat(R127i.w));
PS1i = R4i.z;
// 20
redcCUBE(vec4(intBitsToFloat(R124i.z),intBitsToFloat(R124i.z),intBitsToFloat(R124i.x),intBitsToFloat(PV1i.x)),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(R124i.x),intBitsToFloat(R124i.z),intBitsToFloat(R124i.z)),cubeMapSTM,cubeMapFaceId);
R0i.x = floatBitsToInt(cubeMapSTM.x);
R0i.y = floatBitsToInt(cubeMapSTM.y);
R0i.z = floatBitsToInt(cubeMapSTM.z);
R0i.w = cubeMapFaceId;
PV0i.x = R0i.x;
PV0i.y = R0i.y;
PV0i.z = R0i.z;
PV0i.w = R0i.w;
R2i.y = floatBitsToInt(min(intBitsToFloat(R125i.x), 1.0));
PS0i = R2i.y;
// 21
R3i.x = 0;
R3i.y = floatBitsToInt(intBitsToFloat(R7i.w) * intBitsToFloat(0x437f0000));
R10i.z = PV0i.w;
R3i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R7i.w)),intBitsToFloat(R6i.y)) + intBitsToFloat(R6i.y)));
R3i.z = floatBitsToInt(1.0 / abs(intBitsToFloat(PV0i.z)));
PS1i = R3i.z;
// 0
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x), intBitsToFloat(uf_remappedPS[7].w)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.y),intBitsToFloat(R3i.z)) + 1.5));
PV0i.y = R123i.y;
R124i.z = R4i.z & 0x000000fc;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.x),intBitsToFloat(R3i.z)) + 1.5));
PV0i.w = R123i.w;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y), intBitsToFloat(uf_remappedPS[7].w)));
PS0i = R127i.y;
// 1
R10i.x = PV0i.y;
R10i.y = PV0i.w;
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z), intBitsToFloat(uf_remappedPS[7].w)));
R127i.w = floatBitsToInt(intBitsToFloat(R3i.w) + intBitsToFloat(0x3c23d70a));
R127i.w = clampFI32(R127i.w);
R126i.z = floatBitsToInt(-(intBitsToFloat(R2i.y)) + 1.0);
PS1i = R126i.z;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R1i.z),intBitsToFloat(R1i.y),intBitsToFloat(R6i.z),-0.0),vec4(intBitsToFloat(R1i.z),intBitsToFloat(R1i.y),intBitsToFloat(R6i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R124i.y = int(intBitsToFloat(R3i.y));
PS0i = R124i.y;
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R4i.y),intBitsToFloat(R5i.z),intBitsToFloat(R5i.z)),vec4(-(intBitsToFloat(R125i.x)),-(intBitsToFloat(R127i.y)),-(intBitsToFloat(R125i.z)),-(intBitsToFloat(R3i.x)))));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R126i.w = tempi.x;
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
PS1i = floatBitsToInt(tempResultf);
// 4
backupReg0i = R124i.z;
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(PS1i)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), intBitsToFloat(PS1i)));
R124i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(R127i.w)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.z), intBitsToFloat(PS1i)));
R127i.x = floatBitsToInt(float(backupReg0i));
PS0i = R127i.x;
// 5
backupReg0i = R126i.z;
backupReg0i = R126i.z;
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(uf_remappedPS[7].w)));
PV1i.x = R124i.x;
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(uf_remappedPS[7].w)));
PV1i.y = R126i.y;
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(uf_remappedPS[7].w)));
PV1i.z = R126i.z;
R127i.w = floatBitsToInt((intBitsToFloat(R6i.y) * 0.5 + 0.5));
R125i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R2i.y)),intBitsToFloat(backupReg0i)) + intBitsToFloat(backupReg0i)));
PS1i = R125i.y;
// 6
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R4i.y),intBitsToFloat(R5i.z),intBitsToFloat(R5i.z)),vec4(-(intBitsToFloat(PV1i.x)),-(intBitsToFloat(PV1i.y)),-(intBitsToFloat(PV1i.z)),-(intBitsToFloat(R1i.w)))));
tempi.x = clampFI32(tempi.x);
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R126i.x = R124i.y & int(1);
PS0i = R126i.x;
// 7
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R125i.x)),-(intBitsToFloat(R127i.y)),-(intBitsToFloat(R125i.z)),-0.0),vec4(-(intBitsToFloat(R124i.x)),-(intBitsToFloat(R126i.y)),-(intBitsToFloat(R126i.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;
PS1i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
// 8
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(R127i.w)));
R125i.x = floatBitsToInt(intBitsToFloat(R125i.x) / 2.0);
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.z),intBitsToFloat(PS1i)) + -(intBitsToFloat(PS1i))));
PV0i.z = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + 1.0);
R3i.w = floatBitsToInt(intBitsToFloat(R127i.x) * intBitsToFloat(0x3b820821));
PV0i.w = R3i.w;
R122i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R2i.y)),intBitsToFloat(R125i.y)) + intBitsToFloat(R125i.y)));
PS0i = R122i.x;
// 9
backupReg0i = R125i.y;
R127i.x = R126i.w;
R127i.x = floatBitsToInt(intBitsToFloat(R127i.x) * 2.0);
R125i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R125i.w)),intBitsToFloat(PV0i.z)) + intBitsToFloat(PV0i.z)));
R126i.z = floatBitsToInt((-(intBitsToFloat(R7i.w)) * intBitsToFloat(0x40400000) + 4.0));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS0i)));
R7i.y = floatBitsToInt((intBitsToFloat(PV0i.w) * 0.25 + 0.25));
PS1i = R7i.y;
// 10
R3i.x = R126i.w;
R3i.x = clampFI32(R3i.x);
R126i.y = ((R126i.x == 0)?(0):(0x3f800000));
PV0i.z = floatBitsToInt(intBitsToFloat(R127i.y) + 1.0);
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.y),-(intBitsToFloat(R125i.x))) + intBitsToFloat(R2i.y)));
PV0i.w = R123i.w;
R125i.z = floatBitsToInt((-(intBitsToFloat(R3i.w)) * intBitsToFloat(0x3d23d70a) + intBitsToFloat(0x3d23d70a)));
PS0i = R125i.z;
// 11
backupReg0i = R127i.y;
backupReg1i = R126i.z;
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R125i.w)),intBitsToFloat(R125i.y)) + intBitsToFloat(R125i.y)));
PV1i.x = R123i.x;
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(PV0i.z)) + intBitsToFloat(PV0i.z)));
R126i.z = floatBitsToInt(intBitsToFloat(R125i.x) + intBitsToFloat(PV0i.w));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(R127i.x)));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(backupReg1i));
// 12
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PS1i)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.x),-(intBitsToFloat(R125i.x))) + intBitsToFloat(R3i.x)));
PV0i.y = R123i.y;
R6i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PV1i.w)));
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(PV1i.x)));
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.y),intBitsToFloat(R3i.w)) + intBitsToFloat(R125i.z)));
PS0i = R127i.x;
// 13
backupReg0i = R125i.x;
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[7].w), intBitsToFloat(uf_remappedPS[7].w)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.x),intBitsToFloat(R3i.w)) + intBitsToFloat(R125i.z)));
PV1i.y = R123i.y;
R127i.z = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(PV0i.y));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.z),intBitsToFloat(R3i.w)) + intBitsToFloat(R125i.z)));
PV1i.w = R127i.w;
R125i.z = floatBitsToInt(1.0 / intBitsToFloat(R127i.y));
PS1i = R125i.z;
// 14
backupReg0i = R126i.z;
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),-(intBitsToFloat(R124i.x))) + intBitsToFloat(PV1i.y)));
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.w),-(intBitsToFloat(R126i.w))) + intBitsToFloat(PV1i.w)));
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),-(intBitsToFloat(R126i.w))) + intBitsToFloat(R127i.x)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),-(intBitsToFloat(R126i.w))) + intBitsToFloat(PV1i.y)));
PV0i.w = R123i.w;
R7i.x = floatBitsToInt(1.0 / intBitsToFloat(backupReg0i));
PS0i = R7i.x;
// 15
backupReg0i = R127i.w;
backupReg0i = R127i.w;
backupReg1i = R127i.z;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),-(intBitsToFloat(R124i.x))) + intBitsToFloat(R127i.x)));
PV1i.x = R123i.x;
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(R125i.z)));
R127i.z = floatBitsToInt(intBitsToFloat(R126i.w) + intBitsToFloat(PV0i.w));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),-(intBitsToFloat(R124i.x))) + intBitsToFloat(backupReg0i)));
R126i.y = floatBitsToInt(1.0 / intBitsToFloat(backupReg1i));
PS1i = R126i.y;
// 16
backupReg0i = R126i.x;
backupReg1i = R126i.w;
R126i.x = floatBitsToInt(intBitsToFloat(R126i.w) + intBitsToFloat(R127i.y));
R2i.y = floatBitsToInt(intBitsToFloat(R124i.x) + intBitsToFloat(backupReg0i));
R7i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.x), intBitsToFloat(R125i.x)));
R126i.w = floatBitsToInt(intBitsToFloat(backupReg1i) + intBitsToFloat(R126i.z));
R6i.y = floatBitsToInt(intBitsToFloat(R124i.x) + intBitsToFloat(PV1i.x));
PS0i = R6i.y;
// 17
backupReg0i = R7i.x;
R7i.x = floatBitsToInt(intBitsToFloat(R124i.x) + intBitsToFloat(R127i.w));
R3i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(R125i.y)));
R3i.z = floatBitsToInt((intBitsToFloat(R8i.x) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R3i.z = clampFI32(R3i.z);
PV1i.w = floatBitsToInt(0.25 * intBitsToFloat(backupReg0i));
R0i.w = floatBitsToInt((intBitsToFloat(R8i.y) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R0i.w = clampFI32(R0i.w);
PS1i = R0i.w;
// 18
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.x), intBitsToFloat(PV1i.w)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(PV1i.w)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PV1i.w)));
R6i.w = floatBitsToInt((intBitsToFloat(R8i.z) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R6i.w = clampFI32(R6i.w);
PS0i = R4i.z & int(1);
// 19
R8i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].z), intBitsToFloat(PV0i.x)));
R5i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].y), intBitsToFloat(PV0i.y)));
R7i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].x), intBitsToFloat(PV0i.z)));
R8i.z = floatBitsToInt(float(PS0i));
PS1i = R8i.z;
// 20
R4i.x = R11i.x;
R4i.y = R11i.y;
R4i.z = floatBitsToInt(roundEven(1.0));
R8i.w = floatBitsToInt(texture(textureUnitPS5, intBitsToFloat(R9i.xy)).x);
R13i.xzw = floatBitsToInt(texture(textureUnitPS12, intBitsToFloat(R11i.xy)).xzw);
R0i.xyz = floatBitsToInt(texture(textureUnitPS11, vec3(intBitsToFloat(R11i.x),intBitsToFloat(R11i.y),intBitsToFloat(R11i.z))).xyz);
R1i.xyzw = floatBitsToInt(textureLod(textureUnitPS2, intBitsToFloat(R11i.xy),0.0).xyzw);
R4i.xyz = floatBitsToInt(texture(textureUnitPS11, vec3(intBitsToFloat(R4i.x),intBitsToFloat(R4i.y),intBitsToFloat(R4i.z))).xyz);
#if (reflExtra == 0) // Normal Reflections
R10i.xyz = floatBitsToInt(textureLod(textureUnitPS9, vec4(redcCUBEReverse(intBitsToFloat(R10i.xy),R10i.z),cubeMapArrayIndex9),intBitsToFloat(R10i.w)).xyz);
#elif (reflExtra == 1) // Enhanced Reflections
R10i.xyz = floatBitsToInt(textureLod(textureUnitPS9, vec4(redcCUBEReverse(intBitsToFloat(R10i.xy),R10i.z),cubeMapArrayIndex9),0.0).xyz);
#endif
R11i.xyz = floatBitsToInt(texture(textureUnitPS14, intBitsToFloat(R11i.xy)).xyz);
// 0
R123i.x = floatBitsToInt((intBitsToFloat(R13i.w) * 0.5 + 0.5));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R13i.w),-(intBitsToFloat(R7i.y))) + intBitsToFloat(R13i.w)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x),intBitsToFloat(R8i.w)) + intBitsToFloat(uf_remappedPS[1].x)));
PV0i.z = R123i.z;
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R13i.x), intBitsToFloat(R3i.x)));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.z),intBitsToFloat(R7i.x)) + intBitsToFloat(R4i.z)));
PS0i = R127i.w;
// 1
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.z)));
PV1i.y = floatBitsToInt(intBitsToFloat(R3i.x) + intBitsToFloat(PV0i.x));
PV1i.y = clampFI32(PV1i.y);
PV1i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.z)), intBitsToFloat(R5i.y)));
PV1i.w = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.z)), intBitsToFloat(R6i.x)));
PS1i = floatBitsToInt(intBitsToFloat(R7i.y) + intBitsToFloat(PV0i.y));
// 2
R126i.x = floatBitsToInt(-(intBitsToFloat(R12i.x)) + intBitsToFloat(PV1i.w));
PV0i.x = R126i.x;
R126i.y = floatBitsToInt(-(intBitsToFloat(R12i.y)) + intBitsToFloat(PV1i.z));
PV0i.y = R126i.y;
PV0i.z = floatBitsToInt(-(intBitsToFloat(R2i.z)) + intBitsToFloat(PV1i.x));
R8i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(PV1i.y)));
R125i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PS1i),-(intBitsToFloat(R1i.w))) + intBitsToFloat(PS1i)));
PS0i = R125i.y;
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R2i.x),intBitsToFloat(R13i.y),intBitsToFloat(R9i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.y = tempi.x;
PS1i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].x), intBitsToFloat(R126i.w)));
// 4
backupReg0i = R126i.y;
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R2i.x)),intBitsToFloat(PV1i.x)) + intBitsToFloat(R126i.x)));
PV0i.x = R123i.x;
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PS1i), intBitsToFloat(R7i.z)));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R13i.z), intBitsToFloat(R13i.z)));
R126i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R13i.y)),intBitsToFloat(PV1i.x)) + intBitsToFloat(backupReg0i)));
// 5
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(R2i.y)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R2i.y)) + intBitsToFloat(R4i.x)));
PV1i.y = R123i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(R6i.y)));
PS1i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.y), intBitsToFloat(R7i.x)));
// 6
backupReg0i = R127i.w;
backupReg1i = R127i.z;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R6i.y)) + intBitsToFloat(R4i.y)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.w),intBitsToFloat(R126i.w)) + intBitsToFloat(PV1i.z)));
PV0i.y = R123i.y;
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.x),intBitsToFloat(PV1i.x)) + intBitsToFloat(PV1i.y)));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(PS1i)) + intBitsToFloat(backupReg0i)));
R4i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.z), intBitsToFloat(backupReg1i)));
PS0i = R4i.w;
// 7
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.y),intBitsToFloat(R125i.w)) + intBitsToFloat(PV0i.x)));
PV1i.y = R123i.y;
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(R3i.y)));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.y));
PS1i = floatBitsToInt(tempResultf);
// 8
backupReg0i = R8i.y;
backupReg1i = R5i.z;
R1i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.w),intBitsToFloat(PV1i.w)) + intBitsToFloat(R127i.z)));
R8i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(PV1i.w)) + intBitsToFloat(R127i.w)));
R5i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg1i),intBitsToFloat(PV1i.w)) + intBitsToFloat(PV1i.y)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS1i)));
// 9
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z), intBitsToFloat(PV0i.w)));
// 10
PV0i.y = floatBitsToInt(intBitsToFloat(PV1i.z) * intBitsToFloat(0x3ced9168));
PV0i.y = clampFI32(PV0i.y);
// 11
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(R6i.z)) + 1.0));
PV1i.y = R123i.y;
// 12
R10i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R3i.w)),intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.y)));
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].x),intBitsToFloat(R8i.w)) + intBitsToFloat(R0i.x)));
PV0i.x = R123i.x;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].z),intBitsToFloat(R8i.w)) + intBitsToFloat(R0i.z)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].y),intBitsToFloat(R8i.w)) + intBitsToFloat(R0i.y)));
PV0i.w = R123i.w;
// 1
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R10i.x)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R10i.x)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R10i.x)));
// 2
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(R0i.w)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R3i.z)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(R6i.w)));
// 3
R123i.x = floatBitsToInt((intBitsToFloat(PV0i.w) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((intBitsToFloat(PV0i.x) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((intBitsToFloat(PV0i.y) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.z = R123i.z;
// 4
PV0i.y = floatBitsToInt(intBitsToFloat(R8i.y) + intBitsToFloat(PV1i.x));
PV0i.z = floatBitsToInt(intBitsToFloat(R5i.z) + intBitsToFloat(PV1i.y));
PV0i.w = floatBitsToInt(intBitsToFloat(R1i.x) + intBitsToFloat(PV1i.z));
// 5
R4i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R13i.z),intBitsToFloat(PV0i.w)) + intBitsToFloat(R11i.x)));
R4i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R13i.z),intBitsToFloat(PV0i.z)) + intBitsToFloat(R11i.y)));
R4i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R13i.z),intBitsToFloat(PV0i.y)) + intBitsToFloat(R11i.z)));
// export
passPixelColor0 = vec4(intBitsToFloat(R4i.x), intBitsToFloat(R4i.y), intBitsToFloat(R4i.z), intBitsToFloat(R4i.w));
}

View File

@ -0,0 +1,65 @@
#version 420
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
#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 cb0e6e8cbec4502a
// Used for: 1 pass Battle, Camera and Scope Depth of Field Blur
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
{
uniform vec4 uf_fragCoordScale;
};
#else
uniform vec2 uf_fragCoordScale;
#endif
#define disableDOF $disableDOF
#if (disableDOF == 0) // Keep DOF Enabled
int radius = int( roundEven(2.0/uf_fragCoordScale.y) );
vec2 resolution = vec2( textureSize(textureUnitPS0,0) );
void main() {
vec2 center = ( passParameterSem3.xy + passParameterSem3.zw ) / 2.0 ;
vec3 result = vec3(0.0);
float count = 0.0;
for ( int x = 1-radius; x <= radius-1; x+=2 ) {
for ( int y = 1-radius; y <= radius-1; y+=2 ) {
if ( length(vec2(x, y)) <= radius ) {
result += texture( textureUnitPS0, center + vec2(x, y)/resolution ).xyz ;
count += 1.0;
}
}
}
passPixelColor0 = vec4( result / count, 0.0 );
}
#elif (disableDOF == 1) // Disable DOF
void main() {
passPixelColor0 = texture(textureUnitPS0, passParameterSem3.xy);
}
#endif

View File

@ -0,0 +1,53 @@
-- How to set up your own Clarity Preset --
===================================================================
Hey, it's Serfrost. I'm writing this out because it's come to our attention that no matter what we really do for presets, it won't really matter in the long run. Every user has a unique monitor / display they use with their PC, yeah? A lot of them are calibrated differently, and they often come with numerous presets that alter colors, brightness, contrast, you name it. Because of this, the presets that look good to me might not look good to you--the presets that look good to Jamie might not look good to you; you get the idea. So I'm writing this hoping you'll take the time to do a few short steps to get you on your way to making the game look the way YOU want it to look on YOUR display!
Jamie has coded this faithfully and diligently, and he's added a lot of different functions that were previously unavailable with these newer updates. We hope you enjoy this and use it to it's fullest potential.
This tutorial has been shortened by Slash in order to make use of the new graphic pack to its full potential.
===================================================================
There are 6 steps total. Please read very carefully and with your full attention. As long as you do that, it's relatively just "point and click" and the rest is changing the numbers on your own and testing them to see what they do.
===================================================================
1) Open up Cemu that's at least version 1.13.0.
2) After Cemu opens itself, load the game and your save file.
3) Open up the graphic pack menu and select Clarity under Breath of the Wild.
4) Open up 37040a485a29d54e_00000000000003c9_ps.txt in the Clarity graphic pack folder.
5) You may now edit all the variables in realtime. To view your changes hit "Reload shaders"
===============\
Note: "Realtime", as in, you can view your changes by using the button. You do not have to stop the game, etc.
Pro Tip: If time changes too fast for you, you can use Cemuhook's custom timer option (Debug > Custom Timer) to slow down time to 0.125x!
MAKE SURE YOU CHECK VARIOUS AREAS IN THE GAME TO MAKE SURE YOUR COLOR / SHADOW BALANCING IS CORRECT.
===============/
6) When you have your variables for your preset where you want them, you don't have to do anything! The file with your preset is already saved.
-- Make backups of files before making changes. Keep track of your work! --
===
MAKE SURE YOU CHECK VARIOUS AREAS IN THE GAME TO MAKE SURE YOUR COLOR / SHADOW BALANCING IS CORRECT.
===

View File

@ -0,0 +1,156 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = Enhancements
path = "The Legend of Zelda: Breath of the Wild/Enhancements"
description = Allows you to change post-processing effects and texture detail to enhance the picture.||Made by Kiri, Jamie, BSoD Gaming, M&&M and Pig.
version = 6
[Default]
$preset:int = 10
$disableClarity:int = 0
$disableDOF:int = 0
$reflExtra:int = 0
$advancedLOD = 0
$lodBias = 0
$anisotropy = 1
# Clarity Preset
[Preset]
name = Disabled (Default)
category = Clarity
default = 1
$disableClarity:int = 1
[Preset]
name = Serfrost's Preset (Recommended)
category = Clarity
$preset:int = 10
[Preset]
name = Serfrost's Preset (Dim Display)
category = Clarity
$preset:int = 9
[Preset]
name = Serfrost's Preset (Bright Display)
category = Clarity
$preset:int = 8
[Preset]
name = Bruz's Preset
category = Clarity
$preset:int = 1
[Preset]
name = CellHunter's Preset
category = Clarity
$preset:int = 7
[Preset]
name = Jamie's Preset
category = Clarity
$preset:int = 3
[Preset]
name = BSoD Gaming's Preset
category = Clarity
$preset:int = 2
[Preset]
name = The Complaining Gamer's Preset
category = Clarity
$preset:int = 5
[Preset]
name = ViskClarity Preset
category = Clarity
$preset:int = 11
[Preset]
name = Contrasty Preset
category = Clarity
$preset:int = 4
[Preset]
name = Filmic Preset
category = Clarity
$preset:int = 6
[Preset]
name = Silentverge's Survival of the Wild Preset (Warmer)
category = Clarity
$preset:int = 12
[Preset]
name = Silentverge's Survival of the Wild Preset (Colder)
category = Clarity
$preset:int = 13
[Preset]
name = Godot's Mexican Preset
category = Clarity
$preset:int = 14
[Preset]
name = User-Defined Preset
category = Clarity
$preset:int = 0
# Depth of Field
[Preset]
name = Enabled
category = Depth Of Field
default = 1
[Preset]
name = Disabled (no performance gain)
category = Depth Of Field
$disableDOF:int = 1
# Enhanced Reflections
[Preset]
name = Normal Reflections
category = Reflections
default = 1
[Preset]
name = Enhanced Reflections
category = Reflections
$reflExtra:int = 1
# Anisotropic Filtering
[Preset]
name = Extreme (16x)
category = Anisotropic Filtering
$anisotropy = 16
[Preset]
name = Ultra (8x, Default)
category = Anisotropic Filtering
default = 1
$anisotropy = 8
[Preset]
name = High (4x)
category = Anisotropic Filtering
$anisotropy = 4
[Preset]
name = Medium (2x)
category = Anisotropic Filtering
$anisotropy = 2
[Preset]
name = Low (1x)
category = Anisotropic Filtering
$anisotropy = 1
[TextureRedefine]
tileModesExcluded = 0x001 # ignore cpu processed textures (ex. videos)
formatsExcluded = 0x001,0x005,0x007,0x019,0x01a,0x01f,0x122,0x41a,0x806,0x80e,0x816,0x820 # ignore viewports, cubemaps, and shadows
overwriteAnisotropy = $anisotropy

View File

@ -0,0 +1,138 @@
#version 420
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
#ifdef VULKAN
#define gl_VertexID gl_VertexIndex
#define gl_InstanceID gl_InstanceIndex
#define SET_POSITION(_v) gl_Position = _v; gl_Position.z = (gl_Position.z + gl_Position.w) / 2.0
#else
#define SET_POSITION(_v) gl_Position = _v
#endif
#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.
const float resScale = $height/720.0;
// Night star (size)
// shader 01ba1a725afa0b96
UNIFORM_BUFFER_LAYOUT(1, 0, 0) uniform uniformBlockVS1
{
vec4 uf_blockVS1[1024];
};
UNIFORM_BUFFER_LAYOUT(2, 0, 1) uniform uniformBlockVS2
{
vec4 uf_blockVS2[1024];
};
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem1;
layout(location = 1) out vec4 passParameterSem2;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ 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);
uvec4 attrDecoder;
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
int PS0i = 0, PS1i = 0;
ivec4 tempi = ivec4(0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = ivec4(gl_VertexID, 0, 0, gl_InstanceID);
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), floatBitsToInt(1.0));
// 0
R1i.x = floatBitsToInt(uf_blockVS2[7].z);
R0i.z = R0i.x << int(1);
PV0i.z = R0i.z;
R0i.w = 0x3f800000;
// 1
R0i.y = PV0i.z + int(1);
R3i.xyzw = floatBitsToInt(uf_blockVS1[R0i.z].xyzw);
R2i.xyzw = floatBitsToInt(uf_blockVS1[R0i.y].xyzw);
// export
gl_PointSize = intBitsToFloat(R1i.x) * resScale;
// 0
backupReg0i = R0i.w;
backupReg1i = R2i.w;
R1i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R3i.y),intBitsToFloat(R3i.z),intBitsToFloat(backupReg0i)),vec4(uf_blockVS2[0].x,uf_blockVS2[0].y,uf_blockVS2[0].z,uf_blockVS2[0].w)));
PV0i.x = R1i.x;
PV0i.y = R1i.x;
PV0i.z = R1i.x;
PV0i.w = R1i.x;
R2i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.w), intBitsToFloat(backupReg1i)));
PS0i = R2i.w;
// 1
backupReg0i = R0i.w;
backupReg1i = R0i.x;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R3i.y),intBitsToFloat(R3i.z),intBitsToFloat(backupReg0i)),vec4(uf_blockVS2[1].x,uf_blockVS2[1].y,uf_blockVS2[1].z,uf_blockVS2[1].w)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R1i.y = tempi.x;
R3i.w = floatBitsToInt(float(backupReg1i));
PS1i = R3i.w;
// 2
backupReg0i = R0i.w;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R3i.y),intBitsToFloat(R3i.z),intBitsToFloat(backupReg0i)),vec4(uf_blockVS2[2].x,uf_blockVS2[2].y,uf_blockVS2[2].z,uf_blockVS2[2].w)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R1i.z = tempi.x;
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R3i.y),intBitsToFloat(R3i.z),intBitsToFloat(R0i.w)),vec4(uf_blockVS2[3].x,uf_blockVS2[3].y,uf_blockVS2[3].z,uf_blockVS2[3].w)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R1i.w = tempi.x;
// export
SET_POSITION(vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w)));
// export
passParameterSem1 = vec4(intBitsToFloat(R2i.x), intBitsToFloat(R2i.y), intBitsToFloat(R2i.z), intBitsToFloat(R2i.w));
// export
passParameterSem2 = vec4(intBitsToFloat(R3i.x), intBitsToFloat(R3i.y), intBitsToFloat(R3i.z), intBitsToFloat(R3i.w));
}

View File

@ -0,0 +1,124 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 01bef64ec0cccd53
// Used for: Fixing clouds in non-updated versions
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 1) uniform ufBlock
{
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
TEXTURE_LAYOUT(32, 0, 0) uniform sampler2D textureUnitVS0;
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 1) out vec4 passParameterSem1;
layout(location = 0) out vec4 passParameterSem0;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R3i = ivec4(0);
ivec4 R127i = ivec4(0);
uvec4 attrDecoder;
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
int PS0i = 0, PS1i = 0;
ivec4 tempi = ivec4(0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = ivec4(gl_VertexID, 0, 0, gl_InstanceID);
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), floatBitsToInt(1.0));
attrDecoder.xy = attrDataSem1.xy;
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
attrDecoder.z = 0;
attrDecoder.w = 0;
R2i = ivec4(int(attrDecoder.x), int(attrDecoder.y), floatBitsToInt(0.0), floatBitsToInt(1.0));
// 0
backupReg0i = R1i.x;
backupReg1i = R1i.y;
R1i.x = backupReg0i;
R1i.x = floatBitsToInt(intBitsToFloat(R1i.x) * 2.0);
R1i.y = backupReg1i;
R1i.y = floatBitsToInt(intBitsToFloat(R1i.y) * 2.0);
R1i.z = 0x3f800000;
R0i.w = 0;
R0i.y = floatBitsToInt(-(intBitsToFloat(uf_remappedVS[0].z)/resXScale));
R0i.y = floatBitsToInt(intBitsToFloat(R0i.y) / 2.0);
PS0i = R0i.y;
R3i.xy = ivec4(textureSize(textureUnitVS0, 0),1,1).xy;
// export
SET_POSITION(vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.z)));
// 0
PV0i.x = floatBitsToInt(-(intBitsToFloat(uf_remappedVS[0].w)/resYScale));
PV0i.x = floatBitsToInt(intBitsToFloat(PV0i.x) / 2.0);
R0i.z = R0i.y;
R127i.w = floatBitsToInt(float(R3i.x));
PS0i = R127i.w;
// 1
R0i.w = PV0i.x;
R127i.z = floatBitsToInt(float(R3i.y));
PS1i = R127i.z;
// 2
PS0i = floatBitsToInt(1.0 / intBitsToFloat(R127i.w));
// 3
R3i.x = floatBitsToInt((-(intBitsToFloat(PS0i)) * intBitsToFloat(0x3c23d70a) + intBitsToFloat(R2i.x)));
PV1i.x = R3i.x;
PS1i = floatBitsToInt(1.0 / intBitsToFloat(R127i.z));
// 4
R0i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),intBitsToFloat(uf_remappedVS[0].x)*resXScale) + 0.5));
R3i.y = floatBitsToInt((-(intBitsToFloat(PS1i)) * intBitsToFloat(0x3c23d70a) + intBitsToFloat(R2i.y)));
PV0i.y = R3i.y;
// 5
R0i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(uf_remappedVS[0].y)*resYScale) + 0.5));
// export
passParameterSem1 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), intBitsToFloat(R0i.w));
// export
passParameterSem0 = vec4(intBitsToFloat(R3i.x), intBitsToFloat(R3i.y), intBitsToFloat(R3i.z), intBitsToFloat(R3i.z));
}

View File

@ -0,0 +1,135 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 0b9b8f5dfa16ad58
// Used For: Horizontal Menu Blur
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{
uniform ivec4 uf_remappedVS[5];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[5];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem0;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R126f = vec4(0.0);
vec4 R127f = vec4(0.0);
uvec4 attrDecoder;
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
R127f.x = (R1f.x > 0.0)?1.0:0.0;
R127f.x /= 2.0;
R127f.y = -(R1f.y);
PV0f.y = R127f.y;
R127f.z = (0.0 > R1f.x)?1.0:0.0;
R127f.z /= 2.0;
R127f.w = 1.0;
PV0f.w = R127f.w;
R126f.x = intBitsToFloat(uf_remappedVS[0].z) * (intBitsToFloat(0x3fae8a72)/resXScale);
PS0f = R126f.x;
// 1
R0f.x = dot(vec4(R1f.x,R1f.y,R1f.z,PV0f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
PV1f.x = R0f.x;
PV1f.y = R0f.x;
PV1f.z = R0f.x;
PV1f.w = R0f.x;
R126f.w = (PV0f.y > 0.0)?1.0:0.0;
R126f.w /= 2.0;
PS1f = R126f.w;
// 2
backupReg0f = R127f.y;
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[2].x),intBitsToFloat(uf_remappedVS[2].y),intBitsToFloat(uf_remappedVS[2].z),intBitsToFloat(uf_remappedVS[2].w)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R0f.y = tempf.x;
R127f.y = (0.0 > backupReg0f)?1.0:0.0;
R127f.y /= 2.0;
PS0f = R127f.y;
// 3
backupReg0f = R127f.x;
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
R0f.z = tempf.x;
R127f.x = backupReg0f + -(R127f.z);
PS1f = R127f.x;
// 4
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[4].x),intBitsToFloat(uf_remappedVS[4].y),intBitsToFloat(uf_remappedVS[4].z),intBitsToFloat(uf_remappedVS[4].w)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R0f.w = tempf.x;
PS0f = R126f.w + -(R127f.y);
// 5
PV1f.y = PS0f + 0.5;
PV1f.z = R127f.x + 0.5;
// 6
R1f.x = PV1f.y;
R1f.y = PV1f.z + -(R126f.x);
R1f.z = PV1f.z + R126f.x;
R1f.w = PV1f.z;
// export
SET_POSITION(vec4(R0f.x, R0f.y, R0f.z, R0f.w));
// export
passParameterSem0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
}

View File

@ -0,0 +1,239 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 0bcd653c18367d59
// Used for: Restoring the native BotW Anti-Aliasing implementation
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 1) uniform ufBlock
{
uniform ivec4 uf_remappedVS[5];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[5];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
TEXTURE_LAYOUT(32, 0, 0) uniform sampler2D textureUnitVS0;
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 3) out vec4 passParameterSem4;
layout(location = 0) out vec4 passParameterSem0;
layout(location = 1) out vec4 passParameterSem1;
layout(location = 2) out vec4 passParameterSem3;
layout(location = 4) out vec4 passParameterSem6;
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 R123i = ivec4(0);
ivec4 R124i = ivec4(0);
ivec4 R125i = ivec4(0);
ivec4 R126i = ivec4(0);
ivec4 R127i = ivec4(0);
uvec4 attrDecoder;
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
int PS0i = 0, PS1i = 0;
ivec4 tempi = ivec4(0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = ivec4(gl_VertexID, 0, 0, gl_InstanceID);
attrDecoder.xyzw = attrDataSem0.xyzw;
attrDecoder = ((attrDecoder>>8)&0xFF)|((attrDecoder<<8)&0xFF00);
attrDecoder.xyzw = floatBitsToInt(vec4(unpackHalf2x16(attrDecoder.x|(attrDecoder.y<<16)),unpackHalf2x16(attrDecoder.z|(attrDecoder.w<<16))));
R1i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), int(attrDecoder.w));
attrDecoder.x = attrDataSem1.x;
attrDecoder.x = (attrDecoder.x>>24)|((attrDecoder.x>>8)&0xFF00)|((attrDecoder.x<<8)&0xFF0000)|((attrDecoder.x<<24));
attrDecoder.y = 0;
attrDecoder.z = 0;
attrDecoder.w = 0;
attrDecoder.xyzw = uvec4((attrDecoder.x>>0)&0x3FF,(attrDecoder.x>>10)&0x3FF,(attrDecoder.x>>20)&0x3FF,(attrDecoder.x>>30)&0x3);
if( (attrDecoder.x&0x200) != 0 ) attrDecoder.x |= 0xFFFFFC00;
if( (attrDecoder.y&0x200) != 0 ) attrDecoder.y |= 0xFFFFFC00;
if( (attrDecoder.z&0x200) != 0 ) attrDecoder.z |= 0xFFFFFC00;
attrDecoder.x = floatBitsToUint(max(float(int(attrDecoder.x))/511.0,-1.0));
attrDecoder.y = floatBitsToUint(max(float(int(attrDecoder.y))/511.0,-1.0));
attrDecoder.z = floatBitsToUint(max(float(int(attrDecoder.z))/511.0,-1.0));
attrDecoder.w = floatBitsToUint(float(attrDecoder.w));
R2i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), int(attrDecoder.w));
// 0
backupReg0i = R0i.x;
PV0i.x = (backupReg0i == int(1))?int(0xFFFFFFFF):int(0x0);
R127i.y = 0x3f800000;
PV0i.z = 0x3f800000;
PV0i.w = 0x40400000;
R127i.z = 0xbf800000;
PS0i = R127i.z;
// 1
R123i.x = ((PV0i.x == 0)?(PV0i.z):(0xc0400000));
PV1i.x = R123i.x;
R123i.y = ((PV0i.x == 0)?(PV0i.w):(0xbf800000));
PV1i.y = R123i.y;
R0i.z = 0;
PV1i.w = floatBitsToInt(intBitsToFloat(uf_remappedVS[0].z) * intBitsToFloat(0x3b808081));
R2i.w = 0x3f800000;
PS1i = R2i.w;
// 2
R2i.x = ((R0i.x == 0)?(R127i.z):(PV1i.y));
PV0i.x = R2i.x;
R2i.y = ((R0i.x == 0)?(R127i.y):(PV1i.x));
PV0i.y = R2i.y;
R2i.z = floatBitsToInt(intBitsToFloat(PV1i.w) + -(0.5));
R2i.z = floatBitsToInt(intBitsToFloat(R2i.z) * 2.0);
R0i.w = 0x3d2aaaab;
R0i.x = 0x3e000000;
PS0i = R0i.x;
// 3
R5i.x = floatBitsToInt((intBitsToFloat(PV0i.x) * 0.5 + 0.5));
PV1i.x = R5i.x;
R0i.y = 0;
PV1i.z = floatBitsToInt(-(intBitsToFloat(PV0i.y)));
R4i.w = uf_remappedVS[1].z;
R4i.w = floatBitsToInt(intBitsToFloat(R4i.w) / 2.0);
R3i.x = floatBitsToInt(-(intBitsToFloat(uf_remappedVS[2].z)));
R3i.x = floatBitsToInt(intBitsToFloat(R3i.x) / 2.0);
PS1i = R3i.x;
// 4
R6i.x = floatBitsToInt(-(intBitsToFloat(uf_remappedVS[3].x)));
R6i.x = floatBitsToInt(intBitsToFloat(R6i.x) * 2.0);
R5i.y = floatBitsToInt((intBitsToFloat(PV1i.z) * 0.5 + 0.5));
R7i.z = PV1i.x;
R3i.w = R2i.x;
R3i.w = floatBitsToInt(intBitsToFloat(R3i.w) / 2.0);
R6i.y = uf_remappedVS[3].y;
R6i.y = floatBitsToInt(intBitsToFloat(R6i.y) * 2.0);
PS0i = R6i.y;
R1i.w = floatBitsToInt(texture(textureUnitVS0, intBitsToFloat(R0i.wz)).x);
R1i.xyz = floatBitsToInt(texture(textureUnitVS0, intBitsToFloat(R0i.xy)).xyz);
// export
SET_POSITION(vec4(intBitsToFloat(R2i.x), intBitsToFloat(R2i.y), intBitsToFloat(R2i.z), intBitsToFloat(R2i.w)));
// export
// skipped export to semanticId 255
// 0
R126i.x = floatBitsToInt(intBitsToFloat(R3i.x) + -(0.5));
R125i.y = floatBitsToInt(intBitsToFloat(R4i.w) + -(0.5));
PV0i.z = floatBitsToInt(-(intBitsToFloat(R2i.y)));
PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) / 2.0);
R7i.w = R5i.y;
PV0i.w = R7i.w;
R127i.y = floatBitsToInt(-(intBitsToFloat(R6i.x)));
R127i.y = floatBitsToInt(intBitsToFloat(R127i.y) / 2.0);
PS0i = R127i.y;
// 1
R127i.x = floatBitsToInt(-(intBitsToFloat(R6i.y)));
R127i.x = floatBitsToInt(intBitsToFloat(R127i.x) / 2.0);
R126i.y = floatBitsToInt(intBitsToFloat(R3i.w) + intBitsToFloat(R4i.w));
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.w) + intBitsToFloat(uf_remappedVS[4].w)/resYScale);
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.z) + intBitsToFloat(R3i.x));
R127i.w = floatBitsToInt(intBitsToFloat(R7i.z) + intBitsToFloat(uf_remappedVS[4].z)/resXScale);
PS1i = R127i.w;
// 2
backupReg0i = R127i.y;
R125i.x = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(R126i.x));
R127i.y = floatBitsToInt(intBitsToFloat(R5i.x) + intBitsToFloat(R125i.y));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.y), intBitsToFloat(PV1i.w)));
R126i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.x),intBitsToFloat(R4i.w)) + intBitsToFloat(backupReg0i)));
R125i.w = floatBitsToInt(intBitsToFloat(uf_remappedVS[4].z)/resXScale);
PS0i = R125i.w;
// 3
backupReg0i = R126i.y;
backupReg1i = R127i.x;
R127i.x = floatBitsToInt(-(intBitsToFloat(uf_remappedVS[4].w)/resYScale));
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.x), intBitsToFloat(backupReg0i)));
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R3i.x)) + intBitsToFloat(backupReg1i)));
R124i.w = floatBitsToInt(intBitsToFloat(uf_remappedVS[4].x)*resXScale);
R124i.w = floatBitsToInt(intBitsToFloat(R124i.w) / 2.0);
R125i.z = floatBitsToInt(intBitsToFloat(uf_remappedVS[4].y)*resYScale);
R125i.z = floatBitsToInt(intBitsToFloat(R125i.z) / 2.0);
PS1i = R125i.z;
// 4
backupReg0i = R126i.x;
backupReg1i = R127i.w;
backupReg2i = R127i.y;
R126i.x = floatBitsToInt(intBitsToFloat(uf_remappedVS[4].w)/resYScale);
R126i.x = floatBitsToInt(intBitsToFloat(R126i.x) * 2.0);
R127i.y = floatBitsToInt(intBitsToFloat(uf_remappedVS[4].z)/resXScale);
R127i.y = floatBitsToInt(intBitsToFloat(R127i.y) * 2.0);
R124i.z = floatBitsToInt(intBitsToFloat(R5i.y) + intBitsToFloat(backupReg0i));
R127i.w = floatBitsToInt(intBitsToFloat(backupReg1i) + intBitsToFloat(R125i.y));
R4i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.x), intBitsToFloat(backupReg2i)));
PS0i = R4i.w;
// 5
backupReg0i = R127i.z;
R2i.x = floatBitsToInt(intBitsToFloat(R125i.w) * 1.5);
R2i.y = floatBitsToInt(intBitsToFloat(R127i.x) * 1.5);
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.y), intBitsToFloat(R125i.x)));
R6i.w = backupReg0i;
R6i.z = R126i.w;
PS1i = R6i.z;
// 6
R3i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.x),intBitsToFloat(R124i.w)) + 0.5));
R3i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(R125i.z)) + 0.5));
R5i.z = R126i.y;
R5i.w = R126i.z;
R3i.z = R127i.y;
PS0i = R3i.z;
// 7
R4i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.x), intBitsToFloat(R127i.w)));
R4i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.y), intBitsToFloat(R124i.z)));
R4i.z = R4i.w;
R3i.w = R126i.x;
R4i.w = R127i.z;
PS1i = R4i.w;
// export
passParameterSem4 = vec4(intBitsToFloat(R3i.x), intBitsToFloat(R3i.y), intBitsToFloat(R3i.z), intBitsToFloat(R3i.w));
// export
// skipped export to semanticId 255
// export
passParameterSem0 = vec4(intBitsToFloat(R5i.x), intBitsToFloat(R5i.y), intBitsToFloat(R5i.z), intBitsToFloat(R5i.w));
// export
passParameterSem1 = vec4(intBitsToFloat(R6i.x), intBitsToFloat(R6i.y), intBitsToFloat(R6i.z), intBitsToFloat(R6i.w));
// export
passParameterSem3 = vec4(intBitsToFloat(R2i.x), intBitsToFloat(R2i.y), intBitsToFloat(R2i.z), intBitsToFloat(R2i.z));
// export
passParameterSem6 = vec4(intBitsToFloat(R7i.x), intBitsToFloat(R7i.x), intBitsToFloat(R7i.z), intBitsToFloat(R7i.w));
}

View File

@ -0,0 +1,203 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 0d6127fbed646d2b
// Used for: Fixing Ambient-Occlusion
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 1) uniform ufBlock
{
uniform ivec4 uf_remappedVS[5];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[5];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
TEXTURE_LAYOUT(32, 0, 0) uniform sampler2D textureUnitVS0;
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem0;
layout(location = 1) out vec4 passParameterSem5;
layout(location = 2) out vec4 passParameterSem6;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R3i = ivec4(0);
ivec4 R4i = ivec4(0);
ivec4 R123i = ivec4(0);
ivec4 R124i = ivec4(0);
ivec4 R125i = ivec4(0);
ivec4 R126i = ivec4(0);
ivec4 R127i = ivec4(0);
uvec4 attrDecoder;
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
int PS0i = 0, PS1i = 0;
ivec4 tempi = ivec4(0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = ivec4(gl_VertexID, 0, 0, gl_InstanceID);
attrDecoder.xyzw = attrDataSem0.xyzw;
attrDecoder = ((attrDecoder>>8)&0xFF)|((attrDecoder<<8)&0xFF00);
attrDecoder.xyzw = floatBitsToInt(vec4(unpackHalf2x16(attrDecoder.x|(attrDecoder.y<<16)),unpackHalf2x16(attrDecoder.z|(attrDecoder.w<<16))));
R1i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), int(attrDecoder.w));
attrDecoder.x = attrDataSem1.x;
attrDecoder.x = (attrDecoder.x>>24)|((attrDecoder.x>>8)&0xFF00)|((attrDecoder.x<<8)&0xFF0000)|((attrDecoder.x<<24));
attrDecoder.y = 0;
attrDecoder.z = 0;
attrDecoder.w = 0;
attrDecoder.xyzw = uvec4((attrDecoder.x>>0)&0x3FF,(attrDecoder.x>>10)&0x3FF,(attrDecoder.x>>20)&0x3FF,(attrDecoder.x>>30)&0x3);
if( (attrDecoder.x&0x200) != 0 ) attrDecoder.x |= 0xFFFFFC00;
if( (attrDecoder.y&0x200) != 0 ) attrDecoder.y |= 0xFFFFFC00;
if( (attrDecoder.z&0x200) != 0 ) attrDecoder.z |= 0xFFFFFC00;
attrDecoder.x = floatBitsToUint(max(float(int(attrDecoder.x))/511.0,-1.0));
attrDecoder.y = floatBitsToUint(max(float(int(attrDecoder.y))/511.0,-1.0));
attrDecoder.z = floatBitsToUint(max(float(int(attrDecoder.z))/511.0,-1.0));
attrDecoder.w = floatBitsToUint(float(attrDecoder.w));
R2i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), int(attrDecoder.w));
// 0
backupReg0i = R0i.x;
PV0i.x = 0x3f800000;
PV0i.y = 0x40400000;
PV0i.z = (backupReg0i == int(1))?int(0xFFFFFFFF):int(0x0);
R127i.w = 0x3f800000;
R127i.x = 0xbf800000;
PS0i = R127i.x;
// 1
R3i.x = uf_remappedVS[0].z;
R3i.x = floatBitsToInt(intBitsToFloat(R3i.x) / 2.0);
PV1i.y = floatBitsToInt(intBitsToFloat(uf_remappedVS[1].z) * intBitsToFloat(0x3b808081));
R123i.z = ((PV0i.z == 0)?(PV0i.x):(0xc0400000));
PV1i.z = R123i.z;
R123i.w = ((PV0i.z == 0)?(PV0i.y):(0xbf800000));
PV1i.w = R123i.w;
R2i.w = 0x3f800000;
PS1i = R2i.w;
// 2
R2i.x = ((R0i.x == 0)?(R127i.x):(PV1i.w));
PV0i.x = R2i.x;
R2i.y = ((R0i.x == 0)?(R127i.w):(PV1i.z));
PV0i.y = R2i.y;
R2i.z = floatBitsToInt(intBitsToFloat(PV1i.y) + -(0.5));
R2i.z = floatBitsToInt(intBitsToFloat(R2i.z) * 2.0);
R0i.w = 0x3d2aaaab;
R0i.y = 0;
PS0i = R0i.y;
// 3
R1i.xyz = ivec3(0x3e000000,0,floatBitsToInt(-(intBitsToFloat(PV0i.y))));
R1i.w = floatBitsToInt(-(intBitsToFloat(uf_remappedVS[2].z)));
R1i.w = floatBitsToInt(intBitsToFloat(R1i.w) / 2.0);
R4i.x = floatBitsToInt((intBitsToFloat(PV0i.x) * 0.5 + 0.5));
PS1i = R4i.x;
R0i.w = floatBitsToInt(texture(textureUnitVS0, intBitsToFloat(R0i.wy)).x);
R0i.xyz = floatBitsToInt(texture(textureUnitVS0, intBitsToFloat(R1i.xy)).xyz);
// export
SET_POSITION(vec4(intBitsToFloat(R2i.x), intBitsToFloat(R2i.y), intBitsToFloat(R2i.z), intBitsToFloat(R2i.w)));
// export
// skipped export to semanticId 255
// 0
R126i.x = floatBitsToInt(intBitsToFloat(R3i.x) + -(0.5));
R4i.y = floatBitsToInt((intBitsToFloat(R1i.z) * 0.5 + 0.5));
PV0i.y = R4i.y;
PV0i.z = floatBitsToInt(-(intBitsToFloat(R2i.y)));
PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) / 2.0);
PV0i.w = R2i.x;
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) / 2.0);
R125i.z = floatBitsToInt(intBitsToFloat(R1i.w) + -(0.5));
PS0i = R125i.z;
// 1
R123i.x = floatBitsToInt((intBitsToFloat(uf_remappedVS[3].w) * 2.0 / resYScale + intBitsToFloat(PV0i.y)));
PV1i.x = R123i.x;
R126i.y = floatBitsToInt(-(intBitsToFloat(uf_remappedVS[4].x)));
R126i.y = floatBitsToInt(intBitsToFloat(R126i.y) * 2.0);
R1i.z = uf_remappedVS[4].y;
R1i.z = floatBitsToInt(intBitsToFloat(R1i.z) * 2.0);
R127i.w = floatBitsToInt(intBitsToFloat(PV0i.w) + intBitsToFloat(R3i.x));
R127i.z = floatBitsToInt(intBitsToFloat(PV0i.z) + intBitsToFloat(R1i.w));
PS1i = R127i.z;
// 2
R127i.x = floatBitsToInt(intBitsToFloat(uf_remappedVS[3].y) * resYScale);
R127i.x = floatBitsToInt(intBitsToFloat(R127i.x) / 2.0);
PV0i.y = floatBitsToInt(intBitsToFloat(uf_remappedVS[3].x) * resXScale);
PV0i.y = floatBitsToInt(intBitsToFloat(PV0i.y) / 2.0);
R126i.z = floatBitsToInt((intBitsToFloat(uf_remappedVS[3].z) * 2.0 / resXScale + intBitsToFloat(R4i.x)));
R126i.w = floatBitsToInt(intBitsToFloat(R4i.x) + intBitsToFloat(R126i.x));
R124i.z = floatBitsToInt(intBitsToFloat(PV1i.x) + intBitsToFloat(R125i.z));
PS0i = R124i.z;
// 3
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(R127i.z)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(R127i.w)));
R127i.z = floatBitsToInt((-(intBitsToFloat(uf_remappedVS[3].w)/resYScale) * intBitsToFloat(0x3c23d70a) + intBitsToFloat(R4i.y)));
R123i.w = floatBitsToInt((-(intBitsToFloat(uf_remappedVS[3].z)/resXScale) * intBitsToFloat(0x3c23d70a) + intBitsToFloat(R4i.x)));
PV1i.w = R123i.w;
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.x), intBitsToFloat(PV0i.y)));
PS1i = R127i.w;
// 4
backupReg0i = R126i.w;
PV0i.x = floatBitsToInt(intBitsToFloat(R4i.y) + intBitsToFloat(R125i.z));
PV0i.y = floatBitsToInt(intBitsToFloat(R126i.z) + intBitsToFloat(R126i.x));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.y), intBitsToFloat(R127i.x)));
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(backupReg0i)));
R3i.z = PV1i.w;
PS0i = R3i.z;
// 5
R1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PV0i.y)));
R1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(PV0i.x)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(R124i.z)));
R3i.w = R127i.z;
R4i.z = R127i.y;
PS1i = R4i.z;
// 6
R3i.x = floatBitsToInt(intBitsToFloat(R127i.w) * 0.25);
R3i.y = floatBitsToInt(intBitsToFloat(R126i.z) * 0.25);
R1i.z = R126i.w;
R4i.w = R125i.x;
R1i.w = PV1i.z;
PS0i = R1i.w;
// export
passParameterSem0 = vec4(intBitsToFloat(R4i.x), intBitsToFloat(R4i.y), intBitsToFloat(R4i.z), intBitsToFloat(R4i.w));
// export
passParameterSem5 = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w));
// export
passParameterSem6 = vec4(intBitsToFloat(R3i.x), intBitsToFloat(R3i.y), intBitsToFloat(R3i.z), intBitsToFloat(R3i.w));
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,102 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 141f484aff9b9f5a
// Used for: Anti-Aliasing Color Mix
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{
uniform ivec4 uf_remappedVS[3];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[3];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem2;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
vec4 R123f = vec4(0.0);
uvec4 attrDecoder;
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
attrDecoder.xy = attrDataSem1.xy;
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
attrDecoder.z = 0;
attrDecoder.w = 0;
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
backupReg0f = R1f.x;
backupReg1f = R1f.y;
R1f.x = backupReg0f;
R1f.x *= 2.0;
R1f.y = backupReg1f;
R1f.y *= 2.0;
R1f.z = intBitsToFloat(uf_remappedVS[0].x);
R1f.w = 1.0;
PS0f = intBitsToFloat(uf_remappedVS[1].x) + 0.5;
// 1
R123f.x = (mul_nonIEEE(-(PS0f),intBitsToFloat(uf_remappedVS[2].y)/resYScale) + R2f.y);
PV1f.x = R123f.x;
R123f.y = (mul_nonIEEE(-(PS0f),intBitsToFloat(uf_remappedVS[2].x)/resXScale) + R2f.x);
PV1f.y = R123f.y;
// 2
R2f.z = PV1f.y;
R2f.w = PV1f.x;
// export
SET_POSITION(vec4(R1f.x, R1f.y, R1f.z, R1f.w));
// export
passParameterSem2 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
}

View File

@ -0,0 +1,103 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 15afdae4307b9a3d
// Used for: Vertical Ambient-Occlusion Blur
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem0;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
uvec4 attrDecoder;
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
attrDecoder.xy = attrDataSem1.xy;
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
attrDecoder.z = 0;
attrDecoder.w = 0;
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
backupReg0f = R1f.x;
backupReg1f = R1f.y;
R1f.x = backupReg0f;
R1f.x *= 2.0;
R1f.y = backupReg1f;
R1f.y *= 2.0;
R1f.z = -(1.0);
R1f.w = 1.0;
R0f.x = R2f.x;
PS0f = R0f.x;
// 1
backupReg0f = R2f.y;
R0f.y = R2f.y;
R2f.z = R2f.y + intBitsToFloat(uf_remappedVS[0].y)/resYScale;
R2f.w = R2f.y;
R2f.y = backupReg0f + -(intBitsToFloat(uf_remappedVS[0].y))/resYScale;
PS1f = R2f.y;
// export
SET_POSITION(vec4(R1f.x, R1f.y, R1f.z, R1f.w));
// export
passParameterSem0 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
// export
// skipped export to semanticId 255
}

View File

@ -0,0 +1,248 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 1a14de8e58d5b30a
// Used for: Restoring the native BotW Anti-Aliasing implementation
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 1) uniform ufBlock
{
uniform ivec4 uf_remappedVS[5];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[5];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
TEXTURE_LAYOUT(32, 0, 0) uniform sampler2D textureUnitVS0;
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 2) out vec4 passParameterSem2;
layout(location = 3) out vec4 passParameterSem4;
layout(location = 0) out vec4 passParameterSem0;
layout(location = 1) out vec4 passParameterSem1;
layout(location = 4) out vec4 passParameterSem6;
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 R123i = ivec4(0);
ivec4 R124i = ivec4(0);
ivec4 R125i = ivec4(0);
ivec4 R126i = ivec4(0);
ivec4 R127i = ivec4(0);
uvec4 attrDecoder;
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
int PS0i = 0, PS1i = 0;
ivec4 tempi = ivec4(0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = ivec4(gl_VertexID, 0, 0, gl_InstanceID);
attrDecoder.xyzw = attrDataSem0.xyzw;
attrDecoder = ((attrDecoder>>8)&0xFF)|((attrDecoder<<8)&0xFF00);
attrDecoder.xyzw = floatBitsToInt(vec4(unpackHalf2x16(attrDecoder.x|(attrDecoder.y<<16)),unpackHalf2x16(attrDecoder.z|(attrDecoder.w<<16))));
R1i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), int(attrDecoder.w));
attrDecoder.x = attrDataSem1.x;
attrDecoder.x = (attrDecoder.x>>24)|((attrDecoder.x>>8)&0xFF00)|((attrDecoder.x<<8)&0xFF0000)|((attrDecoder.x<<24));
attrDecoder.y = 0;
attrDecoder.z = 0;
attrDecoder.w = 0;
attrDecoder.xyzw = uvec4((attrDecoder.x>>0)&0x3FF,(attrDecoder.x>>10)&0x3FF,(attrDecoder.x>>20)&0x3FF,(attrDecoder.x>>30)&0x3);
if( (attrDecoder.x&0x200) != 0 ) attrDecoder.x |= 0xFFFFFC00;
if( (attrDecoder.y&0x200) != 0 ) attrDecoder.y |= 0xFFFFFC00;
if( (attrDecoder.z&0x200) != 0 ) attrDecoder.z |= 0xFFFFFC00;
attrDecoder.x = floatBitsToUint(max(float(int(attrDecoder.x))/511.0,-1.0));
attrDecoder.y = floatBitsToUint(max(float(int(attrDecoder.y))/511.0,-1.0));
attrDecoder.z = floatBitsToUint(max(float(int(attrDecoder.z))/511.0,-1.0));
attrDecoder.w = floatBitsToUint(float(attrDecoder.w));
R2i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), int(attrDecoder.w));
// 0
backupReg0i = R0i.x;
PV0i.x = (backupReg0i == int(1))?int(0xFFFFFFFF):int(0x0);
R127i.y = 0x3f800000;
PV0i.z = 0x3f800000;
PV0i.w = 0x40400000;
R127i.z = 0xbf800000;
PS0i = R127i.z;
// 1
R123i.x = ((PV0i.x == 0)?(PV0i.z):(0xc0400000));
PV1i.x = R123i.x;
R123i.y = ((PV0i.x == 0)?(PV0i.w):(0xbf800000));
PV1i.y = R123i.y;
R0i.z = 0;
PV1i.w = floatBitsToInt(intBitsToFloat(uf_remappedVS[0].z) * intBitsToFloat(0x3b808081));
R2i.w = 0x3f800000;
PS1i = R2i.w;
// 2
R2i.x = ((R0i.x == 0)?(R127i.z):(PV1i.y));
PV0i.x = R2i.x;
R2i.y = ((R0i.x == 0)?(R127i.y):(PV1i.x));
PV0i.y = R2i.y;
R2i.z = floatBitsToInt(intBitsToFloat(PV1i.w) + -(0.5));
R2i.z = floatBitsToInt(intBitsToFloat(R2i.z) * 2.0);
R0i.w = 0x3ec00000;
R0i.x = 0x3eeaaaab;
PS0i = R0i.x;
// 3
R1i.x = 0x3d2aaaab;
R0i.y = 0;
R1i.z = 0;
R1i.w = floatBitsToInt(-(intBitsToFloat(PV0i.y)));
R5i.x = floatBitsToInt((intBitsToFloat(PV0i.x) * 0.5 + 0.5));
PS1i = R5i.x;
R3i.xyz = floatBitsToInt(texture(textureUnitVS0, intBitsToFloat(R0i.wz)).xyz);
R0i.xyz = floatBitsToInt(texture(textureUnitVS0, intBitsToFloat(R0i.xy)).xyz);
R4i.w = floatBitsToInt(texture(textureUnitVS0, intBitsToFloat(R1i.xz)).y);
// export
SET_POSITION(vec4(intBitsToFloat(R2i.x), intBitsToFloat(R2i.y), intBitsToFloat(R2i.z), intBitsToFloat(R2i.w)));
// 0
R127i.x = uf_remappedVS[1].z;
R127i.x = floatBitsToInt(intBitsToFloat(R127i.x) / 2.0);
PV0i.x = R127i.x;
R5i.y = floatBitsToInt((intBitsToFloat(R1i.w) * 0.5 + 0.5));
PV0i.y = R5i.y;
R126i.z = floatBitsToInt(-(intBitsToFloat(uf_remappedVS[2].z)));
R126i.z = floatBitsToInt(intBitsToFloat(R126i.z) / 2.0);
R127i.w = R2i.x;
R127i.w = floatBitsToInt(intBitsToFloat(R127i.w) / 2.0);
R1i.z = R5i.x;
PS0i = R1i.z;
// 1
backupReg0i = R2i.y;
R2i.x = floatBitsToInt(-(intBitsToFloat(uf_remappedVS[3].x)));
R2i.x = floatBitsToInt(intBitsToFloat(R2i.x) * 2.0);
PV1i.x = R2i.x;
R2i.y = uf_remappedVS[3].y;
R2i.y = floatBitsToInt(intBitsToFloat(R2i.y) * 2.0);
PV1i.y = R2i.y;
R127i.z = floatBitsToInt(-(intBitsToFloat(backupReg0i)));
R127i.z = floatBitsToInt(intBitsToFloat(R127i.z) / 2.0);
R1i.w = PV0i.y;
PV1i.w = R1i.w;
R126i.y = floatBitsToInt(intBitsToFloat(PV0i.x) + -(0.5));
PS1i = R126i.y;
// 2
backupReg0i = R127i.w;
R126i.x = floatBitsToInt(intBitsToFloat(R126i.z) + -(0.5));
PV0i.x = R126i.x;
PV0i.y = floatBitsToInt(-(intBitsToFloat(PV1i.x)));
PV0i.y = floatBitsToInt(intBitsToFloat(PV0i.y) / 2.0);
PV0i.z = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(uf_remappedVS[4].w)/resYScale);
R127i.w = floatBitsToInt(-(intBitsToFloat(PV1i.y)));
R127i.w = floatBitsToInt(intBitsToFloat(R127i.w) / 2.0);
R127i.y = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(R127i.x));
PS0i = R127i.y;
// 3
PV1i.x = floatBitsToInt(intBitsToFloat(R127i.z) + intBitsToFloat(R126i.z));
R125i.y = floatBitsToInt(intBitsToFloat(R5i.x) + intBitsToFloat(R126i.y));
R127i.z = floatBitsToInt(intBitsToFloat(PV0i.z) + intBitsToFloat(PV0i.x));
R126i.w = floatBitsToInt(intBitsToFloat(R1i.z) + intBitsToFloat(uf_remappedVS[4].z)/resXScale);
R125i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.x),intBitsToFloat(R127i.x)) + intBitsToFloat(PV0i.y)));
PS1i = R125i.w;
// 4
backupReg0i = R127i.y;
backupReg1i = R126i.z;
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(PV1i.x)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(backupReg0i)));
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.y),intBitsToFloat(backupReg1i)) + intBitsToFloat(R127i.w)));
R127i.w = floatBitsToInt(intBitsToFloat(uf_remappedVS[4].x)*resXScale);
R127i.w = floatBitsToInt(intBitsToFloat(R127i.w) / 2.0);
R125i.z = floatBitsToInt(intBitsToFloat(uf_remappedVS[4].y)*resYScale);
R125i.z = floatBitsToInt(intBitsToFloat(R125i.z) / 2.0);
PS0i = R125i.z;
// 5
backupReg0i = R126i.x;
backupReg1i = R126i.w;
backupReg2i = R126i.y;
R126i.x = floatBitsToInt(intBitsToFloat(uf_remappedVS[4].w)/resYScale);
R126i.x = floatBitsToInt(intBitsToFloat(R126i.x) * 2.0);
R126i.y = floatBitsToInt(intBitsToFloat(uf_remappedVS[4].z)/resXScale);
R126i.y = floatBitsToInt(intBitsToFloat(R126i.y) * 2.0);
R124i.z = floatBitsToInt(intBitsToFloat(R5i.y) + intBitsToFloat(backupReg0i));
R126i.w = floatBitsToInt(intBitsToFloat(backupReg1i) + intBitsToFloat(backupReg2i));
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R125i.y)));
PS1i = R124i.w;
// 6
backupReg0i = R0i.y;
backupReg1i = R0i.x;
backupReg2i = R125i.w;
PV0i.x = floatBitsToInt(-(intBitsToFloat(R3i.z)) + intBitsToFloat(R0i.z));
PV0i.y = floatBitsToInt(-(intBitsToFloat(R3i.y)) + intBitsToFloat(backupReg0i));
PV0i.z = floatBitsToInt(-(intBitsToFloat(R3i.x)) + intBitsToFloat(backupReg1i));
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R127i.z)));
R2i.z = backupReg2i;
PS0i = R2i.z;
// 7
R4i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R5i.y)) + intBitsToFloat(R3i.x)));
R4i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(R5i.y)) + intBitsToFloat(R3i.y)));
R4i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R5i.y)) + intBitsToFloat(R3i.z)));
R2i.w = R126i.z;
R5i.z = R127i.y;
PS1i = R5i.z;
// 8
R3i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.x),intBitsToFloat(R127i.w)) + 0.5));
R3i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(R125i.z)) + 0.5));
R3i.z = R126i.y;
R5i.w = R127i.x;
R3i.w = R126i.x;
PS0i = R3i.w;
// 9
R0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R126i.w)));
R0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R124i.z)));
R0i.z = R124i.w;
R0i.w = R125i.w;
// export
passParameterSem2 = vec4(intBitsToFloat(R4i.x), intBitsToFloat(R4i.y), intBitsToFloat(R4i.z), intBitsToFloat(R4i.w));
// export
passParameterSem4 = vec4(intBitsToFloat(R3i.x), intBitsToFloat(R3i.y), intBitsToFloat(R3i.z), intBitsToFloat(R3i.w));
// export
// skipped export to semanticId 255
// export
passParameterSem0 = vec4(intBitsToFloat(R5i.x), intBitsToFloat(R5i.y), intBitsToFloat(R5i.z), intBitsToFloat(R5i.w));
// export
passParameterSem1 = vec4(intBitsToFloat(R2i.x), intBitsToFloat(R2i.y), intBitsToFloat(R2i.z), intBitsToFloat(R2i.w));
// export
passParameterSem6 = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.x), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w));
}

View File

@ -0,0 +1,103 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 22c410044398c7af
// Fixed radius blur
// shadow pass blur v
const float resScale = $shadowRes;
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem0;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
uvec4 attrDecoder;
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
attrDecoder.xy = attrDataSem1.xy;
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
attrDecoder.z = 0;
attrDecoder.w = 0;
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
backupReg0f = R1f.x;
backupReg1f = R1f.y;
R1f.x = backupReg0f;
R1f.x *= 2.0;
R1f.y = backupReg1f;
R1f.y *= 2.0;
R1f.z = -(1.0);
R1f.w = 1.0;
PS0f = intBitsToFloat(uf_remappedVS[0].y) / resScale * intBitsToFloat(0x3fae8a72);
// 1
backupReg0f = R2f.y;
R0f.x = R2f.x;
R0f.y = R2f.y;
R2f.z = R2f.y + PS0f;
R2f.w = R2f.y;
R2f.y = backupReg0f + -(PS0f);
PS1f = R2f.y;
// export
SET_POSITION(vec4(R1f.x, R1f.y, R1f.z, R1f.w));
// export
passParameterSem0 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
// export
// skipped export to semanticId 255
}

View File

@ -0,0 +1,107 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 2a2f55a2b2d64474
// Fixed radius blur
// shadow pass blur h
const float resScale = $shadowRes;
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem0;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
vec4 R3f = vec4(0.0);
vec4 R127f = vec4(0.0);
uvec4 attrDecoder;
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
attrDecoder.xy = attrDataSem1.xy;
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
attrDecoder.z = 0;
attrDecoder.w = 0;
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
backupReg0f = R1f.x;
backupReg1f = R1f.y;
R1f.x = backupReg0f;
R1f.x *= 2.0;
R1f.y = backupReg1f;
R1f.y *= 2.0;
R1f.z = -(1.0);
R1f.w = 1.0;
R127f.x = intBitsToFloat(uf_remappedVS[0].x) / resScale * intBitsToFloat(0x3fae8a72);
PS0f = R127f.x;
// 1
R3f.x = R2f.x;
R3f.y = R2f.y;
R0f.z = R2f.x + PS0f;
R0f.w = R2f.x;
R0f.x = R2f.y;
PS1f = R0f.x;
// 2
R0f.y = R2f.x + -(R127f.x);
// export
SET_POSITION(vec4(R1f.x, R1f.y, R1f.z, R1f.w));
// export
passParameterSem0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
// export
// skipped export to semanticId 255
}

View File

@ -0,0 +1,132 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 381d034349896360
// Used for: Horizontal Volumetric Light Blur
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{
uniform ivec4 uf_remappedVS[5];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[5];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem0;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R126f = vec4(0.0);
vec4 R127f = vec4(0.0);
uvec4 attrDecoder;
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
R127f.x = -(R1f.y);
PV0f.x = R127f.x;
R127f.y = (R1f.x > 0.0)?1.0:0.0;
R127f.y /= 2.0;
R127f.z = (0.0 > R1f.x)?1.0:0.0;
R127f.z /= 2.0;
R127f.w = 1.0;
PV0f.w = R127f.w;
// 1
R0f.x = dot(vec4(R1f.x,R1f.y,R1f.z,PV0f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
PV1f.x = R0f.x;
PV1f.y = R0f.x;
PV1f.z = R0f.x;
PV1f.w = R0f.x;
R126f.z = (PV0f.x > 0.0)?1.0:0.0;
R126f.z /= 2.0;
PS1f = R126f.z;
// 2
backupReg0f = R127f.x;
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R0f.y = tempf.x;
R127f.x = (0.0 > backupReg0f)?1.0:0.0;
R127f.x /= 2.0;
PS0f = R127f.x;
// 3
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[2].x),intBitsToFloat(uf_remappedVS[2].y),intBitsToFloat(uf_remappedVS[2].z),intBitsToFloat(uf_remappedVS[2].w)));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
R0f.z = tempf.x;
R126f.w = R127f.y + -(R127f.z);
PS1f = R126f.w;
// 4
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R0f.w = tempf.x;
PS0f = R126f.z + -(R127f.x);
// 5
PV1f.x = PS0f + 0.5;
PV1f.y = R126f.w + 0.5;
// 6
R1f.x = PV1f.x;
R1f.y = (-(intBitsToFloat(uf_remappedVS[4].z)) * 0.5 / resXScale + PV1f.y);
R1f.z = (intBitsToFloat(uf_remappedVS[4].z) * 0.5 / resXScale + PV1f.y);
R1f.w = PV1f.y;
// export
SET_POSITION(vec4(R0f.x, R0f.y, R0f.z, R0f.w));
// export
passParameterSem0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
}

View File

@ -0,0 +1,123 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 44b73ce02e05c2e6
// Used for: Vertical Self-Shadowing Mask Fix Blur
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem0;
layout(location = 1) out vec4 passParameterSem1;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
vec4 R3f = vec4(0.0);
vec4 R126f = vec4(0.0);
vec4 R127f = vec4(0.0);
uvec4 attrDecoder;
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
attrDecoder.xy = attrDataSem1.xy;
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
attrDecoder.z = 0;
attrDecoder.w = 0;
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
backupReg0f = R1f.x;
backupReg1f = R1f.y;
R1f.x = backupReg0f;
R1f.x *= 2.0;
R1f.y = backupReg1f;
R1f.y *= 2.0;
R1f.z = intBitsToFloat(0xbf5fdfe0);
R1f.w = 1.0;
R127f.x = intBitsToFloat(uf_remappedVS[0].y) * intBitsToFloat(0x3fb13a93) / resYScale;
PS0f = R127f.x;
// 1
R126f.x = intBitsToFloat(uf_remappedVS[0].y) * intBitsToFloat(0x404ec4f0) / resYScale;
PV1f.x = R126f.x;
R3f.y = R2f.y;
R3f.z = R2f.x;
R2f.w = R2f.y;
PV1f.w = R2f.w;
R2f.z = R2f.y + PS0f;
PS1f = R2f.z;
// 2
R0f.x = R2f.x;
R0f.y = R2f.y + -(R127f.x);
R0f.z = PS1f;
R0f.w = PV1f.w;
R2f.z = R2f.y + PV1f.x;
PS0f = R2f.z;
// 3
backupReg0f = R2f.y;
backupReg0f = R2f.y;
R2f.y = backupReg0f + -(R126f.x);
R2f.w = backupReg0f;
// export
SET_POSITION(vec4(R1f.x, R1f.y, R1f.z, R1f.w));
// export
passParameterSem0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
// export
passParameterSem1 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
// export
// skipped export to semanticId 255
}

View File

@ -0,0 +1,214 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 4721609a424e9a1f
// Used for: Restoring the native BotW Anti-Aliasing implementation
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 1) uniform ufBlock
{
uniform ivec4 uf_remappedVS[5];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[5];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
TEXTURE_LAYOUT(32, 0, 0) uniform sampler2D textureUnitVS0;
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 1) out vec4 passParameterSem4;
layout(location = 0) out vec4 passParameterSem0;
layout(location = 2) out vec4 passParameterSem6;
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 R123i = ivec4(0);
ivec4 R124i = ivec4(0);
ivec4 R125i = ivec4(0);
ivec4 R126i = ivec4(0);
ivec4 R127i = ivec4(0);
uvec4 attrDecoder;
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
int PS0i = 0, PS1i = 0;
ivec4 tempi = ivec4(0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = ivec4(gl_VertexID, 0, 0, gl_InstanceID);
attrDecoder.xyzw = attrDataSem0.xyzw;
attrDecoder = ((attrDecoder>>8)&0xFF)|((attrDecoder<<8)&0xFF00);
attrDecoder.xyzw = floatBitsToInt(vec4(unpackHalf2x16(attrDecoder.x|(attrDecoder.y<<16)),unpackHalf2x16(attrDecoder.z|(attrDecoder.w<<16))));
R1i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), int(attrDecoder.w));
attrDecoder.x = attrDataSem1.x;
attrDecoder.x = (attrDecoder.x>>24)|((attrDecoder.x>>8)&0xFF00)|((attrDecoder.x<<8)&0xFF0000)|((attrDecoder.x<<24));
attrDecoder.y = 0;
attrDecoder.z = 0;
attrDecoder.w = 0;
attrDecoder.xyzw = uvec4((attrDecoder.x>>0)&0x3FF,(attrDecoder.x>>10)&0x3FF,(attrDecoder.x>>20)&0x3FF,(attrDecoder.x>>30)&0x3);
if( (attrDecoder.x&0x200) != 0 ) attrDecoder.x |= 0xFFFFFC00;
if( (attrDecoder.y&0x200) != 0 ) attrDecoder.y |= 0xFFFFFC00;
if( (attrDecoder.z&0x200) != 0 ) attrDecoder.z |= 0xFFFFFC00;
attrDecoder.x = floatBitsToUint(max(float(int(attrDecoder.x))/511.0,-1.0));
attrDecoder.y = floatBitsToUint(max(float(int(attrDecoder.y))/511.0,-1.0));
attrDecoder.z = floatBitsToUint(max(float(int(attrDecoder.z))/511.0,-1.0));
attrDecoder.w = floatBitsToUint(float(attrDecoder.w));
R2i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), int(attrDecoder.w));
// 0
backupReg0i = R0i.x;
PV0i.x = (backupReg0i == int(1))?int(0xFFFFFFFF):int(0x0);
R127i.y = 0x3f800000;
PV0i.z = 0x3f800000;
PV0i.w = 0x40400000;
R127i.z = 0xbf800000;
PS0i = R127i.z;
// 1
PV1i.x = floatBitsToInt(intBitsToFloat(uf_remappedVS[0].z) * intBitsToFloat(0x3b808081));
R123i.y = ((PV0i.x == 0)?(PV0i.w):(0xbf800000));
PV1i.y = R123i.y;
R0i.z = 0;
R123i.w = ((PV0i.x == 0)?(PV0i.z):(0xc0400000));
PV1i.w = R123i.w;
R1i.w = 0x3f800000;
PS1i = R1i.w;
// 2
R1i.x = ((R0i.x == 0)?(R127i.z):(PV1i.y));
PV0i.x = R1i.x;
R1i.y = ((R0i.x == 0)?(R127i.y):(PV1i.w));
PV0i.y = R1i.y;
R1i.z = floatBitsToInt(intBitsToFloat(PV1i.x) + -(0.5));
R1i.z = floatBitsToInt(intBitsToFloat(R1i.z) * 2.0);
R0i.w = 0x3d2aaaab;
R0i.x = 0x3e000000;
PS0i = R0i.x;
// 3
R5i.x = floatBitsToInt((intBitsToFloat(PV0i.x) * 0.5 + 0.5));
PV1i.x = R5i.x;
R0i.y = 0;
PV1i.z = floatBitsToInt(-(intBitsToFloat(PV0i.y)));
R4i.w = uf_remappedVS[1].z;
R4i.w = floatBitsToInt(intBitsToFloat(R4i.w) / 2.0);
PV1i.w = R4i.w;
R4i.x = floatBitsToInt(-(intBitsToFloat(uf_remappedVS[2].z)));
R4i.x = floatBitsToInt(intBitsToFloat(R4i.x) / 2.0);
PS1i = R4i.x;
// 4
R3i.x = floatBitsToInt(-(intBitsToFloat(R1i.y)));
R3i.x = floatBitsToInt(intBitsToFloat(R3i.x) / 2.0);
R5i.y = floatBitsToInt((intBitsToFloat(PV1i.z) * 0.5 + 0.5));
R6i.z = PV1i.x;
R3i.w = R1i.x;
R3i.w = floatBitsToInt(intBitsToFloat(R3i.w) / 2.0);
R3i.y = floatBitsToInt(intBitsToFloat(PV1i.w) + -(0.5));
PS0i = R3i.y;
R2i.w = floatBitsToInt(texture(textureUnitVS0, intBitsToFloat(R0i.wz)).x);
R2i.xyz = floatBitsToInt(texture(textureUnitVS0, intBitsToFloat(R0i.xy)).xyz);
// export
SET_POSITION(vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w)));
// export
// skipped export to semanticId 255
// 0
R127i.x = floatBitsToInt(intBitsToFloat(R4i.x) + -(0.5));
R2i.y = floatBitsToInt(-(intBitsToFloat(uf_remappedVS[3].x)));
R2i.y = floatBitsToInt(intBitsToFloat(R2i.y) * 2.0);
PV0i.y = R2i.y;
R127i.z = uf_remappedVS[3].y;
R127i.z = floatBitsToInt(intBitsToFloat(R127i.z) * 2.0);
R6i.w = R5i.y;
PV0i.w = R6i.w;
PS0i = floatBitsToInt(intBitsToFloat(R3i.w) + intBitsToFloat(R4i.w));
// 1
PV1i.x = floatBitsToInt(intBitsToFloat(R3i.x) + intBitsToFloat(R4i.x));
R126i.y = floatBitsToInt(intBitsToFloat(R5i.x) + intBitsToFloat(R3i.y));
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.w) + intBitsToFloat(uf_remappedVS[4].w)/resYScale);
R127i.w = floatBitsToInt(intBitsToFloat(R6i.z) + intBitsToFloat(uf_remappedVS[4].z)/resXScale);
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(PS0i)));
PS1i = R127i.y;
// 2
PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(R127i.x));
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PV1i.x)));
R126i.z = floatBitsToInt(intBitsToFloat(uf_remappedVS[4].y)*resYScale);
R126i.z = floatBitsToInt(intBitsToFloat(R126i.z) / 2.0);
R126i.w = floatBitsToInt(intBitsToFloat(uf_remappedVS[4].x)*resXScale);
R126i.w = floatBitsToInt(intBitsToFloat(R126i.w) / 2.0);
R124i.y = floatBitsToInt(intBitsToFloat(uf_remappedVS[4].z)/resXScale);
R124i.y = floatBitsToInt(intBitsToFloat(R124i.y) * 2.0);
PS0i = R124i.y;
// 3
backupReg0i = R127i.x;
backupReg1i = R127i.w;
backupReg2i = R127i.y;
R127i.x = floatBitsToInt(intBitsToFloat(uf_remappedVS[4].w)/resYScale);
R127i.x = floatBitsToInt(intBitsToFloat(R127i.x) * 2.0);
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PV0i.x)));
PV1i.z = floatBitsToInt(intBitsToFloat(R5i.y) + intBitsToFloat(backupReg0i));
R127i.w = floatBitsToInt(intBitsToFloat(backupReg1i) + intBitsToFloat(R3i.y));
R5i.z = backupReg2i;
PS1i = R5i.z;
// 4
R3i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.x),intBitsToFloat(R126i.w)) + 0.5));
R4i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PV1i.z)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R126i.y)));
R5i.w = R125i.y;
PS0i = R5i.w;
// 5
R4i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R127i.w)));
R3i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(R126i.z)) + 0.5));
R3i.z = R124i.y;
R3i.w = R127i.x;
R4i.z = PV0i.w;
PS1i = R4i.z;
// 6
R4i.w = R127i.y;
// export
passParameterSem4 = vec4(intBitsToFloat(R3i.x), intBitsToFloat(R3i.y), intBitsToFloat(R3i.z), intBitsToFloat(R3i.w));
// export
// skipped export to semanticId 255
// export
passParameterSem0 = vec4(intBitsToFloat(R5i.x), intBitsToFloat(R5i.y), intBitsToFloat(R5i.z), intBitsToFloat(R5i.w));
// export
passParameterSem6 = vec4(intBitsToFloat(R6i.x), intBitsToFloat(R6i.x), intBitsToFloat(R6i.z), intBitsToFloat(R6i.w));
}

View File

@ -0,0 +1,103 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 5c1761d13feccdff
// Used for: Vertical+Horizontal Fullscreen Blur
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem3;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
uvec4 attrDecoder;
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
attrDecoder.xy = attrDataSem1.xy;
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
attrDecoder.z = 0;
attrDecoder.w = 0;
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
backupReg0f = R1f.x;
backupReg1f = R1f.y;
R1f.x = backupReg0f;
R1f.x *= 2.0;
R1f.y = backupReg1f;
R1f.y *= 2.0;
R1f.z = intBitsToFloat(0xbf800000);
R1f.w = 1.0;
PS0f = R2f.x + -(intBitsToFloat(uf_remappedVS[0].x)/resXScale);
// 1
backupReg0f = R2f.y;
backupReg1f = R2f.x;
PV1f.x = R2f.y + -(intBitsToFloat(uf_remappedVS[0].y)/resYScale);
R2f.y = backupReg0f + intBitsToFloat(uf_remappedVS[0].y)/resYScale;
R2f.z = PS0f;
R2f.x = backupReg1f + intBitsToFloat(uf_remappedVS[0].x)/resXScale;
PS1f = R2f.x;
// 2
R2f.w = PV1f.x;
// export
SET_POSITION(vec4(R1f.x, R1f.y, R1f.z, R1f.w));
// export
passParameterSem3 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
}

View File

@ -0,0 +1,111 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 5c975b0e3dac0562
// Used for: Horizontal Bloom Blur
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 1) out vec4 passParameterSem1;
layout(location = 0) out vec4 passParameterSem0;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
uvec4 attrDecoder;
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
attrDecoder.xy = attrDataSem1.xy;
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
attrDecoder.z = 0;
attrDecoder.w = 0;
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
backupReg0f = R1f.x;
backupReg1f = R1f.y;
R1f.x = backupReg0f;
R1f.x *= 2.0;
R1f.y = backupReg1f;
R1f.y *= 2.0;
R1f.z = 0.0;
R1f.w = 1.0;
PS0f = intBitsToFloat(uf_remappedVS[0].x) / resXScale * intBitsToFloat(0x3fb13a93);
// 1
PV1f.x = intBitsToFloat(uf_remappedVS[0].x) / resXScale * intBitsToFloat(0x404ec4f0);
R0f.y = R2f.x + -(PS0f);
R0f.z = R2f.x + PS0f;
R0f.w = R2f.x;
R0f.x = R2f.y;
PS1f = R0f.x;
// 2
backupReg0f = R2f.x;
backupReg0f = R2f.x;
backupReg0f = R2f.x;
R2f.x = PS1f;
R2f.y = backupReg0f + -(PV1f.x);
R2f.z = backupReg0f + PV1f.x;
R2f.w = backupReg0f;
// export
SET_POSITION(vec4(R1f.x, R1f.y, R1f.z, R1f.w));
// export
passParameterSem1 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
// export
passParameterSem0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
}

View File

@ -0,0 +1,111 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 75a85b0cbcab764b
// Used for: Horizontal Reflection Blur
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 1) out vec4 passParameterSem1;
layout(location = 0) out vec4 passParameterSem0;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
uvec4 attrDecoder;
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
attrDecoder.xy = attrDataSem1.xy;
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
attrDecoder.z = 0;
attrDecoder.w = 0;
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
backupReg0f = R1f.x;
backupReg1f = R1f.y;
R1f.x = backupReg0f;
R1f.x *= 2.0;
R1f.y = backupReg1f;
R1f.y *= 2.0;
R1f.z = 0.0;
R1f.w = 1.0;
PS0f = intBitsToFloat(uf_remappedVS[0].x) / resXScale * intBitsToFloat(0x3fb13a93);
// 1
PV1f.x = intBitsToFloat(uf_remappedVS[0].x) / resXScale * intBitsToFloat(0x404ec4f0);
R0f.y = R2f.x + -(PS0f);
R0f.z = R2f.x + PS0f;
R0f.w = R2f.x;
R0f.x = R2f.y;
PS1f = R0f.x;
// 2
backupReg0f = R2f.x;
backupReg0f = R2f.x;
backupReg0f = R2f.x;
R2f.x = PS1f;
R2f.y = backupReg0f + -(PV1f.x);
R2f.z = backupReg0f + PV1f.x;
R2f.w = backupReg0f;
// export
SET_POSITION(vec4(R1f.x, R1f.y, R1f.z, R1f.w));
// export
passParameterSem1 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
// export
passParameterSem0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
}

View File

@ -0,0 +1,117 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 771e24915acbb074
// Used for: Vertical Reflection Blur
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem0;
layout(location = 1) out vec4 passParameterSem1;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
vec4 R127f = vec4(0.0);
uvec4 attrDecoder;
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
attrDecoder.xy = attrDataSem1.xy;
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
attrDecoder.z = 0;
attrDecoder.w = 0;
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
backupReg0f = R1f.x;
backupReg1f = R1f.y;
R1f.x = backupReg0f;
R1f.x *= 2.0;
R1f.y = backupReg1f;
R1f.y *= 2.0;
R1f.z = 0.0;
R1f.w = 1.0;
PS0f = intBitsToFloat(uf_remappedVS[0].y) / resYScale * intBitsToFloat(0x3fb13a93);
// 1
R127f.x = intBitsToFloat(uf_remappedVS[0].y) / resYScale * intBitsToFloat(0x404ec4f0);
PV1f.x = R127f.x;
R0f.y = R2f.y + -(PS0f);
R2f.z = R2f.y + PS0f;
PV1f.z = R2f.z;
R2f.w = R2f.y;
PV1f.w = R2f.w;
R0f.x = R2f.x;
PS1f = R0f.x;
// 2
R0f.z = PV1f.z;
R0f.w = PV1f.w;
R2f.z = R2f.y + PV1f.x;
PS0f = R2f.z;
// 3
backupReg0f = R2f.y;
backupReg0f = R2f.y;
R2f.y = backupReg0f + -(R127f.x);
R2f.w = backupReg0f;
// export
SET_POSITION(vec4(R1f.x, R1f.y, R1f.z, R1f.w));
// export
passParameterSem0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
// export
passParameterSem1 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
}

View File

@ -0,0 +1,132 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 81eb264a750163d9
// Used for: Vertical Volumetric Light Blur
// volumetric light blur v
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{
uniform ivec4 uf_remappedVS[5];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[5];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem0;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R126f = vec4(0.0);
vec4 R127f = vec4(0.0);
uvec4 attrDecoder;
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
R127f.x = -(R1f.y);
PV0f.x = R127f.x;
R126f.y = (0.0 > R1f.x)?1.0:0.0;
R126f.y /= 2.0;
R127f.z = (R1f.x > 0.0)?1.0:0.0;
R127f.z /= 2.0;
R127f.w = 1.0;
PV0f.w = R127f.w;
// 1
R0f.x = dot(vec4(R1f.x,R1f.y,R1f.z,PV0f.w),vec4(intBitsToFloat(uf_remappedVS[0].x),intBitsToFloat(uf_remappedVS[0].y),intBitsToFloat(uf_remappedVS[0].z),intBitsToFloat(uf_remappedVS[0].w)));
PV1f.x = R0f.x;
PV1f.y = R0f.x;
PV1f.z = R0f.x;
PV1f.w = R0f.x;
R127f.y = (PV0f.x > 0.0)?1.0:0.0;
R127f.y /= 2.0;
PS1f = R127f.y;
// 2
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R0f.y = tempf.x;
PS0f = (0.0 > R127f.x)?1.0:0.0;
PS0f /= 2.0;
// 3
backupReg0f = R127f.y;
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[2].x),intBitsToFloat(uf_remappedVS[2].y),intBitsToFloat(uf_remappedVS[2].z),intBitsToFloat(uf_remappedVS[2].w)));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
R0f.z = tempf.x;
R127f.y = backupReg0f + -(PS0f);
PS1f = R127f.y;
// 4
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R0f.w = tempf.x;
PS0f = R127f.z + -(R126f.y);
// 5
PV1f.x = R127f.y + 0.5;
R1f.x = PS0f + 0.5;
PS1f = R1f.x;
// 6
R1f.y = (-(intBitsToFloat(uf_remappedVS[4].w)) * 0.5 / resYScale + PV1f.x);
R1f.z = (intBitsToFloat(uf_remappedVS[4].w) * 0.5 / resYScale + PV1f.x);
R1f.w = PV1f.x;
// export
SET_POSITION(vec4(R0f.x, R0f.y, R0f.z, R0f.w));
// export
passParameterSem0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
}

View File

@ -0,0 +1,739 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 88133ee405eaae28
// Shadow 2x2 box blur fix
// shader dumped from BotW v1.4.0, using Cemu 1.11.1
const float resScale = $shadowRes;
UNIFORM_BUFFER_LAYOUT(33, 1, 7) uniform uniformBlockPS1
{
vec4 uf_blockPS1[1024];
};
UNIFORM_BUFFER_LAYOUT(38, 1, 8) uniform uniformBlockPS6
{
vec4 uf_blockPS6[1024];
};
UNIFORM_BUFFER_LAYOUT(42, 1, 9) uniform uniformBlockPS10
{
vec4 uf_blockPS10[1024];
};
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
TEXTURE_LAYOUT(1, 1, 1) uniform sampler2D textureUnitPS1;
TEXTURE_LAYOUT(3, 1, 2) uniform sampler2D textureUnitPS3;
TEXTURE_LAYOUT(6, 1, 3) uniform sampler2D textureUnitPS6;
TEXTURE_LAYOUT(8, 1, 4) uniform sampler2DArrayShadow textureUnitPS8;
TEXTURE_LAYOUT(15, 1, 5) uniform sampler2D textureUnitPS15;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem5;
layout(location = 2) in vec4 passParameterSem6;
layout(location = 5) out vec4 passPixelColor5;
#ifdef VULKAN
layout(set = 1, binding = 6) uniform ufBlock
{
uniform vec4 uf_fragCoordScale;
};
#else
uniform vec2 uf_fragCoordScale;
#endif
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R3i = ivec4(0);
ivec4 R4i = ivec4(0);
ivec4 R5i = ivec4(0);
ivec4 R6i = ivec4(0);
ivec4 R7i = ivec4(0);
ivec4 R8i = ivec4(0);
ivec4 R9i = ivec4(0);
ivec4 R10i = ivec4(0);
ivec4 R11i = ivec4(0);
ivec4 R12i = ivec4(0);
ivec4 R13i = ivec4(0);
ivec4 R14i = ivec4(0);
ivec4 R15i = ivec4(0);
ivec4 R16i = ivec4(0);
ivec4 R17i = ivec4(0);
ivec4 R122i = ivec4(0);
ivec4 R123i = ivec4(0);
ivec4 R124i = ivec4(0);
ivec4 R125i = ivec4(0);
ivec4 R126i = ivec4(0);
ivec4 R127i = ivec4(0);
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
int PS0i = 0, PS1i = 0;
ivec4 tempi = ivec4(0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
bool activeMaskStack[3];
bool activeMaskStackC[4];
activeMaskStack[0] = false;
activeMaskStack[1] = false;
activeMaskStackC[0] = false;
activeMaskStackC[1] = false;
activeMaskStackC[2] = false;
activeMaskStack[0] = true;
activeMaskStackC[0] = true;
activeMaskStackC[1] = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem5);
R2i = floatBitsToInt(passParameterSem6);
if( activeMaskStackC[1] == true ) {
R3i.w = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R0i.xy)).x);
R7i.xzw = floatBitsToInt(textureGather(textureUnitPS6, vec2(0.0001) + intBitsToFloat(R0i.xy)).xzw);
R4i.xyzw = floatBitsToInt(texture(textureUnitPS3, intBitsToFloat(R2i.zw)).xyzw);
R2i.xy = floatBitsToInt(textureLod(textureUnitPS0, intBitsToFloat(R2i.xy),0.0).xw);
}
if( activeMaskStackC[1] == true ) {
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R7i.w)) + uf_blockPS1[14].x));
PV0i.x = R123i.x;
R127i.y = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R7i.z)) + uf_blockPS1[14].x));
R127i.z = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R7i.x)) + uf_blockPS1[14].x));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.w),uf_blockPS1[16].x) + uf_blockPS1[14].x));
PV0i.w = R123i.w;
R127i.x = floatBitsToInt((intBitsToFloat(R4i.x) * 2.0 + -(1.0)));
PS0i = R127i.x;
// 1
R3i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(PV0i.w))));
R8i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), -(intBitsToFloat(PV0i.w))));
R12i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)));
R127i.w = floatBitsToInt((intBitsToFloat(R4i.y) * 2.0 + -(1.0)));
R125i.z = floatBitsToInt((intBitsToFloat(R4i.z) * 2.0 + -(1.0)));
PS1i = R125i.z;
// 2
PV0i.x = floatBitsToInt(-(intBitsToFloat(R127i.y)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), -(intBitsToFloat(R127i.y))));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), -(intBitsToFloat(R127i.y))));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), -(intBitsToFloat(R127i.z))));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), -(intBitsToFloat(R127i.z))));
PS0i = R126i.z;
// 3
R125i.x = floatBitsToInt(-(intBitsToFloat(R3i.x)) + intBitsToFloat(PV0i.z));
R127i.y = floatBitsToInt(-(intBitsToFloat(R127i.z)));
R124i.z = floatBitsToInt(-(intBitsToFloat(R12i.z)) + intBitsToFloat(PV0i.x));
R125i.w = floatBitsToInt(-(intBitsToFloat(R8i.y)) + intBitsToFloat(PV0i.y));
R126i.y = floatBitsToInt(-(intBitsToFloat(R3i.x)) + intBitsToFloat(PV0i.w));
PS1i = R126i.y;
// 4
backupReg0i = R126i.z;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R3i.x),intBitsToFloat(R8i.y),intBitsToFloat(R12i.z),-0.0),vec4(intBitsToFloat(R3i.x),intBitsToFloat(R8i.y),intBitsToFloat(R12i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R126i.z = tempi.x;
R126i.x = floatBitsToInt(-(intBitsToFloat(R8i.y)) + intBitsToFloat(backupReg0i));
PS0i = R126i.x;
// 5
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.x),intBitsToFloat(R127i.w),intBitsToFloat(R125i.z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R127i.w),intBitsToFloat(R125i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.z = tempi.x;
R126i.w = floatBitsToInt(-(intBitsToFloat(R12i.z)) + intBitsToFloat(R127i.y));
PS1i = R126i.w;
// 6
backupReg0i = R126i.z;
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.x), uf_blockPS6[43].x));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(R126i.y)));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.w), intBitsToFloat(PS1i)));
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.x), intBitsToFloat(R126i.x)));
R125i.y = floatBitsToInt(sqrt(intBitsToFloat(backupReg0i)));
PS0i = R125i.y;
// 7
backupReg0i = R127i.z;
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.x), uf_blockPS6[45].x));
R124i.y = floatBitsToInt(intBitsToFloat(R4i.w) * intBitsToFloat(0x437f0000));
R127i.z = floatBitsToInt((intBitsToFloat(R2i.x) * 2.0 + -(1.0)));
R4i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.y),uf_blockPS6[43].y) + intBitsToFloat(PV0i.x)));
tempResultf = 1.0 / sqrt(intBitsToFloat(backupReg0i));
PS1i = floatBitsToInt(tempResultf);
// 8
backupReg0i = R125i.z;
R4i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS1i)));
R4i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PS1i)));
R125i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS1[18].y, uf_blockPS1[18].z));
PV0i.z = R125i.z;
R127i.w = floatBitsToInt(-(intBitsToFloat(R12i.z)) * intBitsToFloat(0x3d4ccccd));
R2i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS1i)));
PS0i = R2i.z;
// 9
R1i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R126i.x)),intBitsToFloat(R124i.z)) + intBitsToFloat(R126i.z)));
R3i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R126i.w)),intBitsToFloat(R125i.x)) + intBitsToFloat(R127i.y)));
R126i.z = floatBitsToInt((intBitsToFloat(R2i.y) * 2.0 + -(1.0)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.y),uf_blockPS6[45].y) + intBitsToFloat(R124i.x)));
PV1i.w = R123i.w;
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R127i.z)));
PS1i = R126i.w;
// 10
backupReg0i = R126i.y;
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),uf_blockPS6[45].z) + intBitsToFloat(PV1i.w)));
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),uf_blockPS6[43].z) + intBitsToFloat(R4i.w)));
R1i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(R125i.w)) + intBitsToFloat(R124i.w)));
PV0i.z = R1i.z;
R125i.w = R4i.x;
R125i.w = floatBitsToInt(intBitsToFloat(R125i.w) * 2.0);
R124i.z = R4i.y;
R124i.z = floatBitsToInt(intBitsToFloat(R124i.z) * 2.0);
PS0i = R124i.z;
// 11
R124i.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R1i.x)),-(intBitsToFloat(R3i.y)),-(intBitsToFloat(PV0i.z)),-0.0),vec4(-(intBitsToFloat(R1i.x)),-(intBitsToFloat(R3i.y)),-(intBitsToFloat(PV0i.z)),0.0)));
PV1i.x = R124i.x;
PV1i.y = R124i.x;
PV1i.z = R124i.x;
PV1i.w = R124i.x;
R2i.x = floatBitsToInt((-(uf_blockPS6[53].w) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(R127i.w)));
R2i.x = clampFI32(R2i.x);
PS1i = R2i.x;
// 12
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), -(intBitsToFloat(R126i.z))));
PV0i.x = R125i.x;
R127i.y = floatBitsToInt(intBitsToFloat(R126i.z) * intBitsToFloat(0xbb6fe5d7));
PV0i.z = floatBitsToInt(intBitsToFloat(R126i.w) * intBitsToFloat(0x3ca30589));
PV0i.w = floatBitsToInt(intBitsToFloat(R126i.z) * intBitsToFloat(0x3ca30589));
R126i.z = floatBitsToInt(intBitsToFloat(R126i.w) * intBitsToFloat(0xbb6fe5d7));
PS0i = R126i.z;
// 13
R7i.x = floatBitsToInt(uf_blockPS6[43].w + intBitsToFloat(R126i.y));
R1i.y = floatBitsToInt((intBitsToFloat(R127i.z) * intBitsToFloat(0x3b02da3b) + intBitsToFloat(PV0i.w)));
R3i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R12i.z)), uf_blockPS1[17].y));
R1i.w = 0x3f800000;
R6i.x = floatBitsToInt((intBitsToFloat(PV0i.x) * intBitsToFloat(0x3b02da3b) + intBitsToFloat(PV0i.z)));
PS1i = R6i.x;
// 14
R5i.x = floatBitsToInt((intBitsToFloat(R125i.x) * intBitsToFloat(0x3d156fb9) + intBitsToFloat(R126i.z)));
R5i.y = floatBitsToInt((intBitsToFloat(R127i.z) * intBitsToFloat(0x3d156fb9) + intBitsToFloat(R127i.y)));
R13i.z = floatBitsToInt(uf_blockPS6[45].w + intBitsToFloat(R126i.x));
R12i.w = floatBitsToInt((-(uf_blockPS6[53].z) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(R127i.w)));
R12i.w = clampFI32(R12i.w);
PS0i = floatBitsToInt(1.0 / intBitsToFloat(R125i.y));
// 15
backupReg0i = R124i.y;
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.x), intBitsToFloat(PS0i)));
PV1i.x = R126i.x;
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.y), intBitsToFloat(PS0i)));
PV1i.y = R124i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R12i.z), intBitsToFloat(PS0i)));
PS1i = int(intBitsToFloat(backupReg0i));
// 16
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R4i.y),intBitsToFloat(R2i.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 = PS1i & int(1);
// 17
R12i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R125i.w)) + intBitsToFloat(R126i.x)));
R7i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R124i.z)) + intBitsToFloat(R124i.y)));
R13i.w = floatBitsToInt(intBitsToFloat(PV0i.x) + 1.0);
R13i.w = clampFI32(R13i.w);
R2i.y = ((PS0i == 0)?(0):(0x3f800000));
PS1i = R2i.y;
// 18
tempResultf = 1.0 / sqrt(intBitsToFloat(R124i.x));
R2i.w = floatBitsToInt(tempResultf);
PS0i = R2i.w;
}
if( activeMaskStackC[1] == true ) {
activeMaskStack[1] = activeMaskStack[0];
activeMaskStackC[2] = activeMaskStackC[1];
// 0
PV0i.x = floatBitsToInt(uf_blockPS10[2].z + 1.0);
R9i.y = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].y, uf_blockPS10[2].w));
R8i.x = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].x, uf_blockPS10[2].w));
PS0i = R8i.x;
// 1
R10i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].z, uf_blockPS10[2].w));
R14i.w = floatBitsToInt(-(intBitsToFloat(R2i.x)) + intBitsToFloat(PV0i.x));
R14i.w = clampFI32(R14i.w);
R4i.w = 0;
PS1i = R4i.w;
// 2
predResult = (1.0 > intBitsToFloat(R12i.w));
activeMaskStack[1] = predResult;
activeMaskStackC[2] = predResult == true && activeMaskStackC[1] == true;
}
else {
activeMaskStack[1] = false;
activeMaskStackC[2] = false;
}
if( activeMaskStackC[2] == true ) {
// 0
R13i.x = floatBitsToInt(intBitsToFloat(R0i.x) + intBitsToFloat(R6i.x));
R13i.y = floatBitsToInt(intBitsToFloat(R0i.y) + intBitsToFloat(R1i.y));
R14i.x = floatBitsToInt(intBitsToFloat(R0i.x) + -(intBitsToFloat(R6i.x)));
PS0i = R14i.x;
// 1
R15i.x = floatBitsToInt(intBitsToFloat(R0i.x) + intBitsToFloat(R5i.x));
R14i.y = floatBitsToInt(intBitsToFloat(R0i.y) + -(intBitsToFloat(R1i.y)));
R15i.y = floatBitsToInt(intBitsToFloat(R0i.y) + intBitsToFloat(R5i.y));
PS1i = R15i.y;
// 2
R16i.x = floatBitsToInt(intBitsToFloat(R0i.x) + -(intBitsToFloat(R5i.x)));
R16i.y = floatBitsToInt(intBitsToFloat(R0i.y) + -(intBitsToFloat(R5i.y)));
}
if( activeMaskStackC[2] == true ) {
// 0
PV0i.x = floatBitsToInt(intBitsToFloat(R4i.x) * 1.5);
PV0i.y = floatBitsToInt(intBitsToFloat(R4i.y) * 1.5);
PV0i.z = ((-(intBitsToFloat(R12i.z)) > uf_blockPS1[58].x)?int(0xFFFFFFFF):int(0x0));
R127i.w = ((-(intBitsToFloat(R12i.z)) > uf_blockPS1[58].y)?int(0xFFFFFFFF):int(0x0));
PS0i = floatBitsToInt(intBitsToFloat(R2i.z) * 1.5);
// 1
backupReg0i = R1i.x;
backupReg1i = R1i.z;
R1i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(R2i.w)) + intBitsToFloat(PV0i.x)));
PV1i.y = PV0i.z & int(1);
R1i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R3i.y)),intBitsToFloat(R2i.w)) + intBitsToFloat(PV0i.y)));
R1i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg1i)),intBitsToFloat(R2i.w)) + intBitsToFloat(PS0i)));
PV1i.w = R1i.w;
R122i.x = floatBitsToInt((intBitsToFloat(R3i.z) * 0.25 + 1.0));
PS1i = R122i.x;
// 2
backupReg0i = R2i.y;
R2i.x = floatBitsToInt(uf_blockPS6[53].y/resScale);
R2i.x = floatBitsToInt(intBitsToFloat(R2i.x) / 2.0);
PV0i.x = R2i.x;
R2i.y = floatBitsToInt(uf_blockPS6[53].x/resScale);
R2i.y = floatBitsToInt(intBitsToFloat(R2i.y) / 2.0);
PV0i.y = R2i.y;
R3i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS1i)));
R3i.w = PV1i.y - R127i.w;
PV0i.w = R3i.w;
PS0i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.w)));
// 3
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.z),intBitsToFloat(R1i.z)) + intBitsToFloat(PS0i)));
PV1i.x = R123i.x;
R3i.y = floatBitsToInt(-(intBitsToFloat(PV0i.x)));
R7i.z = floatBitsToInt(-(intBitsToFloat(PV0i.y)));
PV1i.w = PV0i.w << 0x00000002;
R1i.y = floatBitsToInt(float(PV0i.w));
PS1i = R1i.y;
// 4
R0i.x = PV1i.w + 0x0000002c;
R0i.y = PV1i.w + 0x0000002b;
R0i.z = PV1i.w + 0x0000002a;
R0i.w = PV1i.w + 0x0000002d;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R1i.x)) + intBitsToFloat(PV1i.x)));
PS0i = R122i.x;
// 5
backupReg0i = R2i.z;
backupReg0i = R2i.z;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R4i.y),intBitsToFloat(backupReg0i),intBitsToFloat(backupReg0i)),vec4(-(intBitsToFloat(R8i.x)),-(intBitsToFloat(R9i.y)),-(intBitsToFloat(R10i.z)),-(intBitsToFloat(R4i.w)))));
tempi.x = clampFI32(tempi.x);
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R2i.z = tempi.x;
tempResultf = 1.0 / sqrt(intBitsToFloat(PS0i));
R2i.w = floatBitsToInt(tempResultf);
PS1i = R2i.w;
}
if( activeMaskStackC[2] == true ) {
R4i.xyzw = floatBitsToInt(uf_blockPS1[R0i.w].xyzw);
R5i.xyzw = floatBitsToInt(uf_blockPS1[R0i.x].xyzw);
R6i.xyzw = floatBitsToInt(uf_blockPS1[R0i.z].xyzw);
R0i.xyzw = floatBitsToInt(uf_blockPS1[R0i.y].xyzw);
}
if( activeMaskStackC[2] == true ) {
// 0
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(R2i.w)));
PV0i.x = R127i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(R2i.w)));
PV0i.y = R127i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), intBitsToFloat(R2i.w)));
PV0i.z = R127i.z;
R127i.w = R2i.x;
R8i.z = floatBitsToInt(roundEven(intBitsToFloat(R1i.y)));
PS0i = R8i.z;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R8i.x),intBitsToFloat(R9i.y),intBitsToFloat(R10i.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;
R9i.z = PS0i;
PS1i = R9i.z;
// 2
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R10i.z)),intBitsToFloat(PV1i.x)) + intBitsToFloat(R127i.z)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R9i.y)),intBitsToFloat(PV1i.x)) + intBitsToFloat(R127i.y)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV1i.x)),intBitsToFloat(PV1i.x)) + 1.0));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R8i.x)),intBitsToFloat(PV1i.x)) + intBitsToFloat(R127i.x)));
PV0i.w = R123i.w;
R10i.z = R8i.z;
PS0i = R10i.z;
// 3
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(PV0i.w)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(PV0i.y)));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(PV0i.x)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R2i.z)));
R11i.z = R8i.z;
PS1i = R11i.z;
// 4
PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.w) * intBitsToFloat(0x3da1ff2e));
// 5
backupReg0i = R12i.z;
R17i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(PV0i.x)) + intBitsToFloat(R3i.x)));
PV1i.x = R17i.x;
R12i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),intBitsToFloat(PV0i.x)) + intBitsToFloat(R8i.y)));
R12i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(PV0i.x)) + intBitsToFloat(backupReg0i)));
// 6
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(R5i.x)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(R6i.x)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(R4i.x)));
// 7
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.y),intBitsToFloat(R5i.y)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.y),intBitsToFloat(R4i.y)) + intBitsToFloat(PV0i.z)));
PV1i.y = R123i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R17i.x), intBitsToFloat(R0i.x)));
// 8
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R4i.z)) + intBitsToFloat(PV1i.y)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R5i.z)) + intBitsToFloat(PV1i.x)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.y),intBitsToFloat(R6i.y)) + intBitsToFloat(R127i.y)));
PV0i.z = R123i.z;
// 9
R127i.x = floatBitsToInt(intBitsToFloat(R5i.w) + intBitsToFloat(PV0i.y));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.y),intBitsToFloat(R0i.y)) + intBitsToFloat(R127i.z)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R6i.z)) + intBitsToFloat(PV0i.z)));
PV1i.z = R123i.z;
PV1i.w = floatBitsToInt(intBitsToFloat(R4i.w) + intBitsToFloat(PV0i.x));
// 10
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R0i.z)) + intBitsToFloat(PV1i.y)));
PV0i.x = R123i.x;
PV0i.w = floatBitsToInt(intBitsToFloat(R6i.w) + intBitsToFloat(PV1i.z));
R127i.z = floatBitsToInt(1.0 / intBitsToFloat(PV1i.w));
PS0i = R127i.z;
// 11
PV1i.x = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(PV0i.x));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(PS0i)));
PV1i.y = R127i.y;
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS0i)));
// 12
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(R127i.z)));
PV0i.x = R127i.x;
PV0i.z = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(0xbb03126f));
R8i.x = floatBitsToInt((uf_blockPS6[53].x / resScale * 0.5 + intBitsToFloat(PV1i.y)));
PS0i = R8i.x;
// 13
R126i.x = floatBitsToInt((-(intBitsToFloat(R1i.y)) * intBitsToFloat(0x3a03126f) + intBitsToFloat(PV0i.z)));
R126i.x = clampFI32(R126i.x);
PV1i.x = R126i.x;
R8i.y = floatBitsToInt((uf_blockPS6[53].y / resScale * 0.5 + intBitsToFloat(PV0i.x)));
R9i.x = floatBitsToInt(intBitsToFloat(R127i.y) + intBitsToFloat(R2i.y));
PS1i = R9i.x;
// 14
R10i.x = floatBitsToInt(intBitsToFloat(R127i.y) + intBitsToFloat(R7i.z));
R9i.y = floatBitsToInt(intBitsToFloat(R127i.x) + intBitsToFloat(R3i.y));
R8i.w = PV1i.x;
R9i.w = PV1i.x;
PS0i = R9i.w;
// 15
R11i.x = floatBitsToInt((-(uf_blockPS6[53].x) / resScale * 0.5 + intBitsToFloat(R127i.y)));
R10i.y = floatBitsToInt(intBitsToFloat(R127i.x) + intBitsToFloat(R127i.w));
R10i.w = R126i.x;
R11i.y = floatBitsToInt((-(uf_blockPS6[53].y) / resScale * 0.5 + intBitsToFloat(R127i.x)));
PS1i = R11i.y;
// 16
R11i.w = R126i.x;
}
if( activeMaskStackC[2] == true ) {
R8i.z = floatBitsToInt(texture(textureUnitPS8, vec4(intBitsToFloat(R8i.x),intBitsToFloat(R8i.y),intBitsToFloat(R8i.z),intBitsToFloat(R8i.w))));
R9i.y = floatBitsToInt(texture(textureUnitPS8, vec4(intBitsToFloat(R9i.x),intBitsToFloat(R9i.y),intBitsToFloat(R9i.z),intBitsToFloat(R9i.w))));
R10i.x = floatBitsToInt(texture(textureUnitPS8, vec4(intBitsToFloat(R10i.x),intBitsToFloat(R10i.y),intBitsToFloat(R10i.z),intBitsToFloat(R10i.w))));
R11i.w = floatBitsToInt(texture(textureUnitPS8, vec4(intBitsToFloat(R11i.x),intBitsToFloat(R11i.y),intBitsToFloat(R11i.z),intBitsToFloat(R11i.w))));
}
if( activeMaskStackC[2] == true ) {
activeMaskStack[2] = activeMaskStack[1];
activeMaskStackC[3] = activeMaskStackC[2];
// 0
PV0i.w = floatBitsToInt(intBitsToFloat(R8i.z) + intBitsToFloat(R9i.y));
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) / 2.0);
// 1
R123i.y = floatBitsToInt((intBitsToFloat(R10i.x) * 0.5 + intBitsToFloat(PV0i.w)));
PV1i.y = R123i.y;
// 2
R4i.z = floatBitsToInt((intBitsToFloat(R11i.w) * 0.5 + intBitsToFloat(PV1i.y))/2.0);
PV0i.z = R4i.z;
// 3
PV1i.x = ((1.0 > intBitsToFloat(PV0i.z))?int(0xFFFFFFFF):int(0x0));
// 4
R0i.w = ((R3i.w > 0)?(PV1i.x):(0));
// 5
predResult = (R0i.w != 0);
activeMaskStack[2] = predResult;
activeMaskStackC[3] = predResult == true && activeMaskStackC[2] == true;
}
else {
activeMaskStack[2] = false;
activeMaskStackC[3] = false;
}
if( activeMaskStackC[3] == true ) {
// 0
PV0i.z = int(-1) + R3i.w;
// 1
PV1i.y = PV0i.z << 0x00000002;
R4i.x = floatBitsToInt(float(PV0i.z));
PS1i = R4i.x;
// 2
R0i.x = PV1i.y + 0x0000002a;
R0i.y = PV1i.y + 0x0000002d;
R0i.z = PV1i.y + 0x0000002c;
R0i.w = PV1i.y + 0x0000002b;
R5i.z = floatBitsToInt(roundEven(intBitsToFloat(PS1i)));
PS0i = R5i.z;
}
if( activeMaskStackC[3] == true ) {
R1i.xyzw = floatBitsToInt(uf_blockPS1[R0i.y].xyzw);
R2i.xyzw = floatBitsToInt(uf_blockPS1[R0i.z].xyzw);
R3i.xyzw = floatBitsToInt(uf_blockPS1[R0i.x].xyzw);
R0i.xyzw = floatBitsToInt(uf_blockPS1[R0i.w].xyzw);
}
if( activeMaskStackC[3] == true ) {
// 0
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R17i.x), intBitsToFloat(R1i.x)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R17i.x), intBitsToFloat(R2i.x)));
// 1
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.y),intBitsToFloat(R2i.y)) + intBitsToFloat(PV0i.y)));
PV1i.x = R123i.x;
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R17i.x), intBitsToFloat(R3i.x)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R17i.x), intBitsToFloat(R0i.x)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.y),intBitsToFloat(R1i.y)) + intBitsToFloat(PV0i.x)));
PV1i.w = R123i.w;
// 2
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R2i.z)) + intBitsToFloat(PV1i.x)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.y),intBitsToFloat(R0i.y)) + intBitsToFloat(PV1i.z)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R1i.z)) + intBitsToFloat(PV1i.w)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.y),intBitsToFloat(R3i.y)) + intBitsToFloat(PV1i.y)));
PV0i.w = R123i.w;
// 3
R127i.x = floatBitsToInt(intBitsToFloat(R2i.w) + intBitsToFloat(PV0i.x));
PV1i.y = floatBitsToInt(intBitsToFloat(R1i.w) + intBitsToFloat(PV0i.z));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R3i.z)) + intBitsToFloat(PV0i.w)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(R0i.z)) + intBitsToFloat(PV0i.y)));
PV1i.w = R123i.w;
// 4
PV0i.x = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(PV1i.w));
PV0i.y = floatBitsToInt(intBitsToFloat(R3i.w) + intBitsToFloat(PV1i.z));
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.y));
// 5
R5i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(PS0i)));
R5i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PS0i)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS0i)));
// 6
PV0i.y = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(0xbb03126f));
// 7
R5i.w = floatBitsToInt((-(intBitsToFloat(R4i.x)) * intBitsToFloat(0x3a03126f) + intBitsToFloat(PV0i.y)));
R5i.w = clampFI32(R5i.w);
}
if( activeMaskStackC[3] == true ) {
R5i.z = floatBitsToInt(texture(textureUnitPS8, vec4(intBitsToFloat(R5i.x),intBitsToFloat(R5i.y),intBitsToFloat(R5i.z),intBitsToFloat(R5i.w))));
}
if( activeMaskStackC[3] == true ) {
// 0
backupReg0i = R4i.z;
R4i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R5i.z)));
}
activeMaskStackC[2] = activeMaskStack[1] == true && activeMaskStackC[1] == true;
if( activeMaskStackC[2] == true ) {
R0i.x = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R15i.xy)).x);
R0i.y = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R16i.xy)).x);
R1i.x = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R13i.xy)).x);
R1i.y = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R14i.xy)).x);
}
if( activeMaskStackC[2] == true ) {
// 0
R127i.x = floatBitsToInt(intBitsToFloat(R7i.w) * intBitsToFloat(0x3f7eb852));
PV0i.x = R127i.x;
PV0i.y = floatBitsToInt(uf_blockPS1[16].x * intBitsToFloat(0x41a00000));
R124i.z = floatBitsToInt(-(intBitsToFloat(R4i.z)) + 1.0);
R127i.w = floatBitsToInt(uf_blockPS1[16].x * intBitsToFloat(0x3f555555));
// 1
backupReg0i = R0i.x;
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.x) + -(intBitsToFloat(R0i.y)));
PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.x) + -(intBitsToFloat(backupReg0i)));
R127i.z = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x3f8ba8d6));
R127i.z = floatBitsToInt(intBitsToFloat(R127i.z) / 2.0);
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x3fbc4580));
PV1i.w = floatBitsToInt(intBitsToFloat(PV1i.w) / 2.0);
R126i.z = floatBitsToInt(-(intBitsToFloat(R1i.x)) + intBitsToFloat(PV0i.x));
PS1i = R126i.z;
// 2
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.w)),intBitsToFloat(PV1i.y)) + 1.0));
R127i.x = clampFI32(R127i.x);
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.w),intBitsToFloat(PV1i.x)) + 0.5));
R127i.y = clampFI32(R127i.y);
PV0i.y = R127i.y;
R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.w),intBitsToFloat(PV1i.y)) + 0.5));
R125i.z = clampFI32(R125i.z);
PV0i.z = R125i.z;
R126i.w = floatBitsToInt(-(intBitsToFloat(R1i.y)) + intBitsToFloat(backupReg0i));
PV0i.w = R126i.w;
R125i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.w)),intBitsToFloat(PV1i.x)) + 1.0));
R125i.w = clampFI32(R125i.w);
PS0i = R125i.w;
// 3
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R126i.z)) + 0.5));
R126i.x = clampFI32(R126i.x);
PV1i.x = R126i.x;
PV1i.y = floatBitsToInt(0.5 + -(intBitsToFloat(PV0i.y)));
PV1i.z = floatBitsToInt(0.5 + -(intBitsToFloat(PV0i.z)));
R124i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(PV0i.w)) + 0.5));
R124i.w = clampFI32(R124i.w);
PV1i.w = R124i.w;
R0i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.w)),intBitsToFloat(R126i.z)) + 1.0));
R0i.w = clampFI32(R0i.w);
PS1i = R0i.w;
// 4
backupReg0i = R127i.w;
PV0i.x = floatBitsToInt(0.5 + -(intBitsToFloat(PV1i.x)));
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(R127i.x)) + 0.5));
PV0i.y = R126i.y;
PV0i.z = floatBitsToInt(0.5 + -(intBitsToFloat(PV1i.w)));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(R125i.w)) + 0.5));
PV0i.w = R127i.w;
R125i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(R126i.w)) + 1.0));
R125i.y = clampFI32(R125i.y);
PS0i = R125i.y;
// 5
PV1i.x = floatBitsToInt(intBitsToFloat(R127i.y) + -(intBitsToFloat(PV0i.y)));
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(PS0i)) + 0.5));
PV1i.y = R127i.y;
PV1i.z = floatBitsToInt(intBitsToFloat(R125i.z) + -(intBitsToFloat(PV0i.w)));
R126i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R0i.w)) + 0.5));
PV1i.w = R126i.w;
R3i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.z),intBitsToFloat(R12i.w)) + intBitsToFloat(R4i.z)));
PS1i = R3i.w;
// 6
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(R127i.x)) + intBitsToFloat(R127i.w)));
PV0i.x = R123i.x;
PV0i.y = floatBitsToInt(intBitsToFloat(R126i.x) + -(intBitsToFloat(PV1i.y)));
PV0i.z = floatBitsToInt(intBitsToFloat(R124i.w) + -(intBitsToFloat(PV1i.w)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),intBitsToFloat(R125i.w)) + intBitsToFloat(R126i.y)));
PV0i.w = R123i.w;
// 7
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.x) * intBitsToFloat(0x3e35e743));
PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.w) * intBitsToFloat(0x3e35e743));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R125i.y)) + intBitsToFloat(R126i.w)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(R0i.w)) + intBitsToFloat(R127i.y)));
PV1i.w = R123i.w;
// 8
R123i.x = floatBitsToInt((intBitsToFloat(PV1i.w) * intBitsToFloat(0x3e825397) + intBitsToFloat(PV1i.x)));
PV0i.x = R123i.x;
R123i.w = floatBitsToInt((intBitsToFloat(PV1i.z) * intBitsToFloat(0x3e825397) + intBitsToFloat(PV1i.y)));
PV0i.w = R123i.w;
// 9
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(PV0i.w));
// 10
PV0i.y = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(0xbedd476b));
// 11
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x40c00000));
PV1i.x = clampFI32(PV1i.x);
// 12
R1i.w = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + 1.0);
}
activeMaskStack[1] = activeMaskStack[1] == false;
activeMaskStackC[2] = activeMaskStack[1] == true && activeMaskStackC[1] == true;
if( activeMaskStackC[2] == true ) {
// 0
R3i.w = R1i.w;
}
activeMaskStackC[1] = activeMaskStack[0] == true && activeMaskStackC[0] == true;
if( activeMaskStackC[1] == true ) {
// 0
R0i.x = floatBitsToInt((intBitsToFloat(R7i.x) * intBitsToFloat(0x38d1b717) + 0.5));
R0i.y = floatBitsToInt((intBitsToFloat(R13i.z) * intBitsToFloat(0x3903126f) + 0.5));
PV0i.z = floatBitsToInt(-(intBitsToFloat(R7i.y)));
PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) / 2.0);
PV0i.w = R12i.x;
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) / 2.0);
R2i.z = R1i.w;
PS0i = R2i.z;
// 1
R1i.x = floatBitsToInt(intBitsToFloat(PV0i.w) + 0.5);
R1i.y = floatBitsToInt(intBitsToFloat(PV0i.z) + 0.5);
R2i.w = 0x3f800000;
}
if( activeMaskStackC[1] == true ) {
R0i.xyz = floatBitsToInt(textureLod(textureUnitPS15, intBitsToFloat(R0i.xy),0.0).xyz);
R1i.y = floatBitsToInt(textureLod(textureUnitPS1, intBitsToFloat(R1i.xy),0.0).x);
}
if( activeMaskStackC[1] == true ) {
// 0
backupReg0i = R0i.x;
backupReg1i = R0i.y;
backupReg2i = R0i.z;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i),intBitsToFloat(backupReg2i),-0.0),vec4(uf_blockPS6[42].x,uf_blockPS6[42].y,uf_blockPS6[42].z,0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R2i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),-(intBitsToFloat(R13i.w))) + intBitsToFloat(R1i.y)));
PS0i = R2i.y;
// 1
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
// 2
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.w)));
PV0i.z = R127i.z;
// 3
PV1i.y = floatBitsToInt(intBitsToFloat(R3i.w) + -(intBitsToFloat(PV0i.z)));
// 4
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(R14i.w)) + intBitsToFloat(R127i.z)));
PV0i.x = R123i.x;
// 5
R2i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),uf_blockPS10[3].z) + uf_blockPS10[1].y));
R2i.x = clampFI32(R2i.x);
}
// export
passPixelColor5 = vec4(intBitsToFloat(R2i.x), intBitsToFloat(R2i.y), intBitsToFloat(R2i.z), intBitsToFloat(R2i.w));
}

View File

@ -0,0 +1,109 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 8cab2ed476b991ea
// Used for: Restoring the native BotW Anti-Aliasing implementation
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 1) out vec4 passParameterSem1;
layout(location = 0) out vec4 passParameterSem0;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
uvec4 attrDecoder;
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
attrDecoder.xy = attrDataSem1.xy;
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
attrDecoder.z = 0;
attrDecoder.w = 0;
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
backupReg0f = R1f.x;
backupReg1f = R1f.y;
R1f.x = backupReg0f;
R1f.x *= 2.0;
R1f.y = backupReg1f;
R1f.y *= 2.0;
R1f.z = 1.0;
R0f.w = R2f.x;
PV0f.w = R0f.w;
R0f.y = R2f.y;
PS0f = R0f.y;
// 1
PV1f.x = -(intBitsToFloat(uf_remappedVS[0].w)/resYScale);
PV1f.x /= 2.0;
PV1f.y = -(intBitsToFloat(uf_remappedVS[0].z)/resXScale);
PV1f.y /= 2.0;
R2f.x = (mul_nonIEEE(PV0f.w,intBitsToFloat(uf_remappedVS[0].x)*resXScale) + 0.5);
PS1f = R2f.x;
// 2
R2f.y = (mul_nonIEEE(R0f.y,intBitsToFloat(uf_remappedVS[0].y)*resYScale) + 0.5);
R2f.z = PV1f.y;
R2f.w = PV1f.x;
// export
SET_POSITION(vec4(R1f.x, R1f.y, R1f.z, R1f.z));
// export
passParameterSem1 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
// export
passParameterSem0 = vec4(R0f.w, R0f.y, R0f.z, R0f.z);
}

View File

@ -0,0 +1,120 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 93f16bf1d083933b
// Used for: Horizontal Self-Shadowing Mask Fix Blur
// Self shadowing mask fix - h blur
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 1) out vec4 passParameterSem1;
layout(location = 0) out vec4 passParameterSem0;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
vec4 R3f = vec4(0.0);
vec4 R4f = vec4(0.0);
vec4 R127f = vec4(0.0);
uvec4 attrDecoder;
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
attrDecoder.xy = attrDataSem1.xy;
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
attrDecoder.z = 0;
attrDecoder.w = 0;
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
backupReg0f = R1f.x;
backupReg1f = R1f.y;
R1f.x = backupReg0f;
R1f.x *= 2.0;
R1f.y = backupReg1f;
R1f.y *= 2.0;
R1f.z = intBitsToFloat(0xbf5fdfe0);
R1f.w = 1.0;
R127f.y = intBitsToFloat(uf_remappedVS[0].x) * intBitsToFloat(0x3fb13a93) / resXScale;
PS0f = R127f.y;
// 1
R127f.x = intBitsToFloat(uf_remappedVS[0].x) * intBitsToFloat(0x404ec4f0) / resXScale;
PV1f.x = R127f.x;
R4f.y = R2f.y;
R4f.z = R2f.x;
R3f.w = R2f.x;
R3f.x = R2f.y;
PS1f = R3f.x;
// 2
R0f.x = PS1f;
R3f.y = R2f.x + -(R127f.y);
R3f.z = R2f.x + R127f.y;
R0f.w = R2f.x;
R0f.y = R2f.x + -(PV1f.x);
PS0f = R0f.y;
// 3
R0f.z = R2f.x + R127f.x;
// export
SET_POSITION(vec4(R1f.x, R1f.y, R1f.z, R1f.w));
// export
passParameterSem1 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
// export
passParameterSem0 = vec4(R3f.x, R3f.y, R3f.z, R3f.w);
// export
// skipped export to semanticId 255
}

View File

@ -0,0 +1,562 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 a1cb9f79d093badb
// Used for: Restoring the native BotW Anti-Aliasing implementation from water edges
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 1, binding = 8) uniform ufBlock
{
uniform ivec4 uf_remappedPS[20];
uniform vec4 uf_fragCoordScale;
};
#else
uniform ivec4 uf_remappedPS[20];
uniform vec2 uf_fragCoordScale;
#endif
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
TEXTURE_LAYOUT(2, 1, 1) uniform sampler2DArray textureUnitPS2;
TEXTURE_LAYOUT(3, 1, 2) uniform sampler2D textureUnitPS3;
TEXTURE_LAYOUT(7, 1, 3) uniform sampler2DArray textureUnitPS7;
TEXTURE_LAYOUT(8, 1, 4) uniform sampler2DArray textureUnitPS8;
TEXTURE_LAYOUT(9, 1, 5) uniform sampler2DArray textureUnitPS9;
TEXTURE_LAYOUT(10, 1, 6) uniform sampler2DArray textureUnitPS10;
TEXTURE_LAYOUT(11, 1, 7) uniform sampler2DArray textureUnitPS11;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 2) in vec4 passParameterSem2;
layout(location = 3) in vec4 passParameterSem3;
layout(location = 4) in vec4 passParameterSem4;
layout(location = 5) in vec4 passParameterSem5;
layout(location = 6) in vec4 passParameterSem11;
layout(location = 7) in vec4 passParameterSem7;
layout(location = 8) in vec4 passParameterSem8;
layout(location = 9) in vec4 passParameterSem9;
layout(location = 10) in vec4 passParameterSem10;
layout(location = 0) out vec4 passPixelColor0;
layout(location = 1) out vec4 passPixelColor1;
layout(location = 3) out vec4 passPixelColor3;
layout(location = 5) out vec4 passPixelColor5;
// uf_fragCoordScale was moved to the ufBlock
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 R122i = ivec4(0);
ivec4 R123i = ivec4(0);
ivec4 R124i = ivec4(0);
ivec4 R125i = ivec4(0);
ivec4 R126i = ivec4(0);
ivec4 R127i = ivec4(0);
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
int PS0i = 0, PS1i = 0;
ivec4 tempi = ivec4(0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem1);
R2i = floatBitsToInt(passParameterSem2);
R3i = floatBitsToInt(passParameterSem3);
R4i = floatBitsToInt(passParameterSem4);
R5i = floatBitsToInt(passParameterSem5);
R6i = floatBitsToInt(passParameterSem11);
R7i = floatBitsToInt(passParameterSem7);
R8i = floatBitsToInt(passParameterSem8);
R9i = floatBitsToInt(passParameterSem9);
R10i = floatBitsToInt(passParameterSem10);
// 0
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.x), intBitsToFloat(uf_remappedPS[0].x)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.x), intBitsToFloat(uf_remappedPS[1].x)));
R127i.z = R9i.z;
R127i.w = R9i.w;
R126i.z = 0;
PS0i = R126i.z;
// 1
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.y),intBitsToFloat(uf_remappedPS[1].y)) + intBitsToFloat(PV0i.y)));
R127i.y = R9i.y;
R15i.z = floatBitsToInt(roundEven(1.0));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.y),intBitsToFloat(uf_remappedPS[0].y)) + intBitsToFloat(PV0i.x)));
PV1i.w = R123i.w;
R126i.x = floatBitsToInt(1.0 / intBitsToFloat(R6i.w));
PS1i = R126i.x;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.z),intBitsToFloat(R127i.w),intBitsToFloat(R126i.z),-0.0),vec4(intBitsToFloat(R127i.z),intBitsToFloat(R127i.w),intBitsToFloat(R126i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R122i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.z),intBitsToFloat(uf_remappedPS[0].z)) + intBitsToFloat(PV1i.w)));
PS0i = R122i.x;
// 3
R14i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.x), intBitsToFloat(R126i.x)));
PV1i.y = floatBitsToInt(intBitsToFloat(uf_remappedPS[0].w) + intBitsToFloat(PS0i));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.z),intBitsToFloat(uf_remappedPS[1].z)) + intBitsToFloat(R127i.x)));
PV1i.z = R123i.z;
R12i.w = floatBitsToInt(roundEven(intBitsToFloat(R127i.y)));
PV1i.w = R12i.w;
R19i.z = floatBitsToInt(sqrt(intBitsToFloat(PV0i.x)));
PS1i = R19i.z;
// 4
PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.y) * intBitsToFloat(0x3cdd67c9));
PV0i.y = floatBitsToInt(intBitsToFloat(uf_remappedPS[1].w) + intBitsToFloat(PV1i.z));
R11i.z = PV1i.w;
PV0i.w = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x3fb6db6e));
PV0i.w = clampFI32(PV0i.w);
R127i.x = floatBitsToInt(1.0 / intBitsToFloat(PS1i));
PS0i = R127i.x;
// 5
PV1i.x = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R8i.z)), intBitsToFloat(uf_remappedPS[2].y)));
PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.w) * intBitsToFloat(0x3f333333));
R123i.z = floatBitsToInt((intBitsToFloat(PV0i.y) * intBitsToFloat(0x3cbe82fa) + intBitsToFloat(PV0i.x)));
PV1i.z = R123i.z;
R6i.w = R4i.z;
R14i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.y), intBitsToFloat(R126i.x)));
PS1i = R14i.y;
// 6
PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(uf_remappedPS[3].z));
R6i.y = R4i.w;
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(R127i.x)));
PV0i.w = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(uf_remappedPS[3].y));
R12i.z = floatBitsToInt(1.0 / intBitsToFloat(PV1i.x));
PS0i = R12i.z;
// 7
PV1i.x = floatBitsToInt(fract(intBitsToFloat(PV0i.w)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.w), intBitsToFloat(PV0i.z)));
PV1i.z = floatBitsToInt(fract(intBitsToFloat(PV0i.x)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.z), intBitsToFloat(PV0i.z)));
R6i.z = R12i.w;
PS1i = R6i.z;
// 8
R0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.z)));
PV0i.x = R0i.x;
R0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(PV1i.x)));
PV0i.y = R0i.y;
R9i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(PV1i.z)));
PV0i.z = R9i.z;
R9i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.x)));
PV0i.w = R9i.w;
R122i.x = floatBitsToInt((intBitsToFloat(PV1i.x) * 2.0 + -(1.0)));
PS0i = R122i.x;
// 9
R12i.x = floatBitsToInt(intBitsToFloat(R1i.x) + intBitsToFloat(PV0i.w));
R12i.y = floatBitsToInt(intBitsToFloat(R1i.y) + intBitsToFloat(PV0i.y));
R14i.z = floatBitsToInt(max(intBitsToFloat(PS0i), -(intBitsToFloat(PS0i))));
R11i.w = floatBitsToInt(intBitsToFloat(R1i.x) + intBitsToFloat(PV0i.x));
R11i.y = floatBitsToInt(intBitsToFloat(R1i.y) + intBitsToFloat(PV0i.z));
PS1i = R11i.y;
R11i.xy = floatBitsToInt(texture(textureUnitPS8, vec3(intBitsToFloat(R11i.w),intBitsToFloat(R11i.y),intBitsToFloat(R11i.z))).xy);
R9i.xy = floatBitsToInt(texture(textureUnitPS8, vec3(intBitsToFloat(R12i.x),intBitsToFloat(R12i.y),intBitsToFloat(R12i.w))).xy);
R11i.w = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R14i.xy)).x);
R6i.xy = floatBitsToInt(texture(textureUnitPS10, vec3(intBitsToFloat(R6i.w),intBitsToFloat(R6i.y),intBitsToFloat(R6i.z))).xy);
R16i.x = floatBitsToInt(texture(textureUnitPS3, intBitsToFloat(R14i.xy)).y);
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R11i.w),intBitsToFloat(uf_remappedPS[4].x)) + intBitsToFloat(uf_remappedPS[5].x)));
PV0i.x = R123i.x;
PV0i.y = floatBitsToInt(-(intBitsToFloat(R9i.y)) + intBitsToFloat(R11i.y));
R127i.z = floatBitsToInt(intBitsToFloat(R8i.z) + intBitsToFloat(uf_remappedPS[5].x));
PV0i.w = floatBitsToInt(-(intBitsToFloat(R9i.x)) + intBitsToFloat(R11i.x));
R11i.x = floatBitsToInt(intBitsToFloat(R0i.z) + intBitsToFloat(R9i.w));
PS0i = R11i.x;
// 1
backupReg0i = R0i.y;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.w),intBitsToFloat(R14i.z)) + intBitsToFloat(R9i.x)));
PV1i.x = R123i.x;
PV1i.y = floatBitsToInt(-(intBitsToFloat(R8i.z)) + -(intBitsToFloat(PV0i.x)));
PV1i.y = floatBitsToInt(intBitsToFloat(PV1i.y) / 2.0);
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(R14i.z)) + intBitsToFloat(R9i.y)));
PV1i.z = R123i.z;
R11i.w = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(backupReg0i));
R11i.z = R12i.w;
PS1i = R11i.z;
// 2
backupReg0i = R0i.x;
PV0i.x = floatBitsToInt(max(-(intBitsToFloat(PV1i.y)), 0.0));
R16i.y = floatBitsToInt((intBitsToFloat(PV1i.z) * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204)));
PV0i.y = R16i.y;
R13i.z = R12i.w;
R6i.w = floatBitsToInt((intBitsToFloat(PV1i.x) * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204)));
PV0i.w = R6i.w;
R13i.x = floatBitsToInt(intBitsToFloat(R0i.z) + intBitsToFloat(backupReg0i));
PS0i = R13i.x;
// 3
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R12i.z), intBitsToFloat(PV0i.w)));
R127i.y = floatBitsToInt(min(intBitsToFloat(PV0i.x), 1.0));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R12i.z), intBitsToFloat(PV0i.y)));
R13i.w = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(R9i.z));
R11i.y = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R127i.z)), intBitsToFloat(uf_remappedPS[6].x)));
PS1i = R11i.y;
// 4
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[7].y),intBitsToFloat(PV1i.z)) + intBitsToFloat(R14i.y)));
PV0i.x = R123i.x;
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(uf_remappedPS[8].y)) + intBitsToFloat(R1i.w)));
PV0i.y = R126i.y;
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.x),intBitsToFloat(uf_remappedPS[8].x)) + intBitsToFloat(R1i.z)));
PV0i.z = R127i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[7].x),intBitsToFloat(PV1i.x)) + intBitsToFloat(R14i.x)));
PV0i.w = R123i.w;
R4i.z = R12i.w;
PS0i = R4i.z;
// 5
backupReg0i = R0i.y;
PV1i.x = floatBitsToInt(-(intBitsToFloat(R14i.y)) + intBitsToFloat(PV0i.x));
PV1i.y = floatBitsToInt(-(intBitsToFloat(R14i.x)) + intBitsToFloat(PV0i.w));
R0i.z = R12i.w;
R0i.w = floatBitsToInt(intBitsToFloat(R9i.w) + intBitsToFloat(PV0i.z));
R0i.y = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(PV0i.y));
PS1i = R0i.y;
// 6
backupReg0i = R9i.z;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),intBitsToFloat(R127i.y)) + intBitsToFloat(R14i.y)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(R127i.y)) + intBitsToFloat(R14i.x)));
PV0i.y = R123i.y;
R9i.z = R12i.w;
R9i.w = floatBitsToInt(intBitsToFloat(R0i.x) + intBitsToFloat(R127i.z));
R9i.y = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(R126i.y));
PS0i = R9i.y;
// 7
R0i.x = floatBitsToInt(-(intBitsToFloat(R14i.y)) + intBitsToFloat(PV0i.x));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].x)*resXScale, intBitsToFloat(PV0i.y)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].y)*resYScale, intBitsToFloat(PV0i.x)));
R12i.w = floatBitsToInt(-(intBitsToFloat(R14i.x)) + intBitsToFloat(PV0i.y));
R12i.x = uf_remappedPS[10].x;
PS1i = R12i.x;
// 8
PV0i.x = floatBitsToInt(floor(intBitsToFloat(PV1i.y)));
PV0i.y = floatBitsToInt(floor(intBitsToFloat(PV1i.z)));
R1i.z = uf_remappedPS[10].y;
R1i.w = uf_remappedPS[10].z;
R2i.w = 0x3f800000;
PS0i = R2i.w;
// 9
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.y) + 0.5);
R12i.y = 0x3f800000;
R16i.z = R2i.x;
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.x) + 0.5);
R18i.z = R10i.x;
PS1i = R18i.z;
// 10
backupReg0i = R2i.y;
R2i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].z)/resXScale, intBitsToFloat(PV1i.w)));
R2i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].w)/resYScale, intBitsToFloat(PV1i.x)));
R17i.z = R2i.z;
R5i.w = backupReg0i;
R8i.w = R10i.y;
PS0i = R8i.w;
R2i.z = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R2i.xy)).x);
R2i.xy = floatBitsToInt(texture(textureUnitPS7, vec3(intBitsToFloat(R11i.x),intBitsToFloat(R11i.w),intBitsToFloat(R11i.z))).xy);
R13i.xy = floatBitsToInt(texture(textureUnitPS7, vec3(intBitsToFloat(R13i.x),intBitsToFloat(R13i.w),intBitsToFloat(R13i.z))).xy);
R4i.xy = floatBitsToInt(texture(textureUnitPS11, vec3(intBitsToFloat(R4i.x),intBitsToFloat(R4i.y),intBitsToFloat(R4i.z))).xy);
R6i.xyz = floatBitsToInt(texture(textureUnitPS9, vec3(intBitsToFloat(R0i.w),intBitsToFloat(R0i.y),intBitsToFloat(R0i.z))).xyz);
R9i.xyz = floatBitsToInt(texture(textureUnitPS9, vec3(intBitsToFloat(R9i.w),intBitsToFloat(R9i.y),intBitsToFloat(R9i.z))).xyz);
// 0
backupReg0i = R11i.y;
PV0i.x = floatBitsToInt(-(intBitsToFloat(R2i.x)) + intBitsToFloat(R13i.x));
R11i.y = R10i.z;
PV0i.z = floatBitsToInt(-(intBitsToFloat(R2i.y)) + intBitsToFloat(R13i.y));
PV0i.w = ((intBitsToFloat(backupReg0i) > intBitsToFloat(R2i.z))?int(0xFFFFFFFF):int(0x0));
R9i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(uf_remappedPS[11].x)) + intBitsToFloat(uf_remappedPS[12].x)));
R9i.w = clampFI32(R9i.w);
PS0i = R9i.w;
// 1
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R14i.z)) + intBitsToFloat(R2i.x)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R14i.z)) + intBitsToFloat(R2i.y)));
PV1i.y = R123i.y;
R0i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(uf_remappedPS[11].x)) + intBitsToFloat(uf_remappedPS[12].y)));
R0i.z = clampFI32(R0i.z);
R123i.w = ((PV0i.w == 0)?(0x3f800000):(0));
PV1i.w = R123i.w;
R2i.x = floatBitsToInt((intBitsToFloat(R4i.x) * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204)));
PS1i = R2i.x;
// 2
R15i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.w),intBitsToFloat(PV1i.w)) + intBitsToFloat(R14i.x)));
R15i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.x),intBitsToFloat(PV1i.w)) + intBitsToFloat(R14i.y)));
R2i.z = floatBitsToInt((intBitsToFloat(PV1i.x) * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204)));
PV0i.z = R2i.z;
R12i.w = floatBitsToInt((intBitsToFloat(PV1i.y) * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204)));
R4i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(uf_remappedPS[11].x)) + intBitsToFloat(uf_remappedPS[12].z)));
R4i.z = clampFI32(R4i.z);
PS0i = R4i.z;
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R8i.x),intBitsToFloat(R8i.y),intBitsToFloat(R8i.z),-0.0),vec4(intBitsToFloat(R8i.x),intBitsToFloat(R8i.y),intBitsToFloat(R8i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R12i.z = tempi.x;
R2i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(PV0i.z)));
PS1i = R2i.y;
R14i.y = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R15i.xy)).x);
R15i.xyz = floatBitsToInt(texture(textureUnitPS2, vec3(intBitsToFloat(R15i.x),intBitsToFloat(R15i.y),intBitsToFloat(R15i.z))).xyz);
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.w),intBitsToFloat(R12i.w)) + intBitsToFloat(R2i.y)));
R123i.x = clampFI32(R123i.x);
PV0i.x = R123i.x;
R126i.y = floatBitsToInt(intBitsToFloat(R6i.w) + intBitsToFloat(R2i.z));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].x),intBitsToFloat(R14i.y)) + intBitsToFloat(uf_remappedPS[5].x)));
PV0i.z = R123i.z;
R126i.w = floatBitsToInt(intBitsToFloat(R16i.y) + intBitsToFloat(R12i.w));
PS0i = floatBitsToInt(sqrt(intBitsToFloat(R12i.z)));
// 1
R127i.x = floatBitsToInt(-(intBitsToFloat(R8i.z)) + -(intBitsToFloat(PV0i.z)));
R125i.y = floatBitsToInt((intBitsToFloat(R4i.y) * intBitsToFloat(0x40008102) + intBitsToFloat(0xbf810204)));
PV1i.z = floatBitsToInt(-(intBitsToFloat(R6i.x)) + intBitsToFloat(R9i.x));
PV1i.w = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + 1.0);
PS1i = floatBitsToInt(1.0 / intBitsToFloat(PS0i));
// 2
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.x), intBitsToFloat(PS1i)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.y), intBitsToFloat(PS1i)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.z), intBitsToFloat(PS1i)));
R125i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(R14i.z)) + intBitsToFloat(R6i.x)));
R127i.z = floatBitsToInt(sqrt(intBitsToFloat(PV1i.w)));
PS0i = R127i.z;
// 3
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R12i.x),intBitsToFloat(R1i.z),intBitsToFloat(R1i.w),intBitsToFloat(R12i.y)),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),intBitsToFloat(R2i.w))));
tempi.x = clampFI32(tempi.x);
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R126i.x = uf_remappedPS[13].w;
PS1i = R126i.x;
// 4
R125i.x = uf_remappedPS[14].w;
PV0i.y = floatBitsToInt(-(intBitsToFloat(R6i.y)) + intBitsToFloat(R9i.y));
PV0i.z = floatBitsToInt(-(intBitsToFloat(R6i.z)) + intBitsToFloat(R9i.z));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[15].z),-(intBitsToFloat(PV1i.x))) + intBitsToFloat(uf_remappedPS[15].z)));
PV0i.w = R123i.w;
R124i.w = floatBitsToInt(-(intBitsToFloat(R7i.w)) + intBitsToFloat(R10i.w));
PS0i = R124i.w;
// 5
backupReg0i = R127i.x;
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(R14i.z)) + intBitsToFloat(R6i.y)));
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(PV0i.w)) + -(intBitsToFloat(backupReg0i))));
PV1i.y = R123i.y;
R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R14i.z)) + intBitsToFloat(R6i.z)));
PV1i.w = floatBitsToInt(intBitsToFloat(R16i.x) * intBitsToFloat(0x437f0000));
R10i.w = floatBitsToInt(intBitsToFloat(uf_remappedPS[16].z) * intBitsToFloat(0x437f0000));
PS1i = R10i.w;
// 6
backupReg0i = R126i.x;
R126i.x = floatBitsToInt(intBitsToFloat(R5i.w) + intBitsToFloat(PV1i.y));
R127i.y = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(PV1i.y));
PV0i.z = floatBitsToInt(intBitsToFloat(R16i.z) + intBitsToFloat(PV1i.y));
R127i.w = floatBitsToInt(intBitsToFloat(R17i.z) + intBitsToFloat(PV1i.y));
R124i.y = int(uint(intBitsToFloat(PV1i.w)));
PS0i = R124i.y;
// 7
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R126i.y),intBitsToFloat(R126i.w),intBitsToFloat(R127i.z),-0.0),vec4(intBitsToFloat(R126i.y),intBitsToFloat(R126i.w),intBitsToFloat(R127i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R18i.z), intBitsToFloat(PV0i.z)));
R126i.z = clampFI32(R126i.z);
PS1i = R126i.z;
// 8
backupReg0i = R126i.x;
backupReg1i = R11i.y;
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.w), intBitsToFloat(backupReg0i)));
R126i.x = clampFI32(R126i.x);
R11i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.x), intBitsToFloat(R127i.y)));
R11i.y = clampFI32(R11i.y);
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[17].z), intBitsToFloat(PS1i)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg1i), intBitsToFloat(R127i.w)));
PV0i.w = clampFI32(PV0i.w);
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(tempResultf);
// 9
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS0i)));
R123i.y = floatBitsToInt((intBitsToFloat(R19i.z) * intBitsToFloat(0x41200000) + intBitsToFloat(PV0i.z)));
PV1i.y = R123i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(PS0i)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PS0i)));
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.w),-(intBitsToFloat(PV0i.w))) + intBitsToFloat(R3i.w)));
PS1i = R126i.y;
// 10
backupReg0i = R0i.z;
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.x), intBitsToFloat(PV1i.y)));
PV0i.x = clampFI32(PV0i.x);
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.w), intBitsToFloat(PV1i.w)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.z), intBitsToFloat(PV1i.x)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV1i.z)));
PS0i = floatBitsToInt(-(intBitsToFloat(R126i.x)) + 1.0);
// 11
backupReg0i = R126i.y;
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[18].x),intBitsToFloat(R2i.x)) + intBitsToFloat(PV0i.y)));
PV1i.x = R126i.x;
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[18].x),intBitsToFloat(R125i.y)) + intBitsToFloat(PV0i.w)));
PV1i.y = R126i.y;
R127i.z = PV0i.z;
PV1i.z = R127i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R5i.y),intBitsToFloat(PV0i.x)) + intBitsToFloat(backupReg0i)));
R127i.w = clampFI32(R127i.w);
R126i.w = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(PS0i));
PS1i = R126i.w;
// 12
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
tempResultf = log2(intBitsToFloat(R126i.z));
if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F;
PS0i = floatBitsToInt(tempResultf);
// 13
backupReg0i = R125i.z;
backupReg1i = R127i.w;
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[15].w), intBitsToFloat(PS0i)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.w),intBitsToFloat(R126i.w)) + intBitsToFloat(R127i.w)));
R123i.y = clampFI32(R123i.y);
PV1i.y = R123i.y;
R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.x),intBitsToFloat(R126i.w)) + intBitsToFloat(R127i.w)));
R125i.z = clampFI32(R125i.z);
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(R126i.w)) + intBitsToFloat(backupReg1i)));
R127i.w = clampFI32(R127i.w);
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
R126i.z = floatBitsToInt(tempResultf);
PS1i = R126i.z;
// 14
backupReg0i = R126i.x;
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS1i)));
PV0i.x = R126i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.w),intBitsToFloat(PV1i.y)) + intBitsToFloat(R7i.w)));
PV0i.y = R123i.y;
R0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.z), intBitsToFloat(PV1i.y)));
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PS1i)));
R125i.w = floatBitsToInt(exp2(intBitsToFloat(PV1i.x)));
R125i.w = clampFI32(R125i.w);
PS0i = R125i.w;
// 15
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.z), intBitsToFloat(PS0i)));
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.x), intBitsToFloat(PS0i)));
PV1i.y = R126i.y;
R7i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.y), intBitsToFloat(PS0i)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[19].y), intBitsToFloat(PV0i.x)));
R124i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R11i.y), intBitsToFloat(PV0i.y)));
R124i.z = clampFI32(R124i.z);
PS1i = R124i.z;
// 16
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.z), intBitsToFloat(R125i.z)));
R125i.y = floatBitsToInt(intBitsToFloat(R124i.w) + intBitsToFloat(PV1i.w));
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R5i.z), intBitsToFloat(R127i.w)));
R127i.w = floatBitsToInt(intBitsToFloat(R3i.x) + -(intBitsToFloat(PV1i.y)));
PS0i = int(uint(intBitsToFloat(R10i.w)));
// 17
PV1i.x = R124i.y | PS0i;
R124i.y = floatBitsToInt(intBitsToFloat(R3i.z) + -(intBitsToFloat(R125i.x)));
R3i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[19].x), intBitsToFloat(R126i.x)));
R124i.w = floatBitsToInt(intBitsToFloat(R3i.y) + -(intBitsToFloat(R7i.z)));
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[19].z), intBitsToFloat(R126i.x)));
PS1i = R126i.w;
// 18
R126i.x = floatBitsToInt(intBitsToFloat(R124i.z) * intBitsToFloat(0x427f0000));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(R126i.z)));
PV0i.y = R127i.y;
R5i.z = 0x3db0b0b1;
R5i.w = 0x3f800000;
R127i.z = floatBitsToInt(float(uint(PV1i.x)));
PS0i = R127i.z;
// 19
backupReg0i = R126i.y;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.w),intBitsToFloat(R127i.x)) + intBitsToFloat(R7i.z)));
PV1i.x = R123i.x;
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[10].y),intBitsToFloat(PV0i.y)) + intBitsToFloat(R125i.y))/2.0);
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),intBitsToFloat(R0i.z)) + intBitsToFloat(backupReg0i)));
PV1i.z = R123i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.y),intBitsToFloat(R125i.z)) + intBitsToFloat(R125i.x)));
R125i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[10].z),intBitsToFloat(PV0i.y)) + intBitsToFloat(R126i.w))/2.0);
PS1i = R125i.y;
// 20
backupReg0i = R126i.x;
R126i.x = floatBitsToInt(floor(intBitsToFloat(backupReg0i)));
R126i.x = floatBitsToInt(intBitsToFloat(R126i.x) * 4.0);
R0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R11i.y), intBitsToFloat(PV1i.x)));
R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[10].x),intBitsToFloat(R127i.y)) + intBitsToFloat(R3i.z))/2.0);
R3i.w = 0x3f800000;
R0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R11i.y), intBitsToFloat(PV1i.z)));
PS0i = R0i.x;
// 21
R3i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R15i.x),-(intBitsToFloat(R125i.w))) + intBitsToFloat(R15i.x)));
R3i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R15i.y),-(intBitsToFloat(R125i.w))) + intBitsToFloat(R15i.y)));
R0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R11i.y), intBitsToFloat(R127i.w)));
R0i.w = 0x3b808081;
R3i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R15i.z),-(intBitsToFloat(R125i.w))) + intBitsToFloat(R15i.z)));
PS1i = R3i.z;
// 22
R11i.x = floatBitsToInt(intBitsToFloat(R125i.z) + 0.5);
R5i.y = floatBitsToInt(intBitsToFloat(R127i.z) * intBitsToFloat(0x3b808081));
R11i.z = floatBitsToInt(intBitsToFloat(R125i.y) + 0.5);
R11i.w = floatBitsToInt(intBitsToFloat(R126i.x) * intBitsToFloat(0x3b808081));
R11i.y = floatBitsToInt(intBitsToFloat(R126i.y) + 0.5);
PS0i = R11i.y;
// 0
R4i.xyz = ivec3(R3i.x,R3i.y,R3i.z);
R4i.w = R3i.w;
// 1
R3i.xyz = ivec3(R11i.x,R11i.y,R11i.z);
R3i.w = R11i.w;
// 2
R2i.xyz = ivec3(R0i.x,R0i.y,R0i.z);
R2i.w = R0i.w;
// 3
R1i.xyz = ivec3(R5i.z,R5i.y,R5i.z);
R1i.w = R5i.w;
// export
passPixelColor0 = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w));
passPixelColor1 = 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));
passPixelColor5 = vec4(intBitsToFloat(R4i.x), intBitsToFloat(R4i.y), intBitsToFloat(R4i.z), intBitsToFloat(R4i.w));
}

View File

@ -0,0 +1,127 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 a5b3a5e5ab2938bc
// Used for: Restoring the native BotW Anti-Aliasing implementation
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 1, binding = 3) uniform ufBlock
{
uniform ivec4 uf_remappedPS[3];
uniform vec4 uf_fragCoordScale;
};
#else
uniform ivec4 uf_remappedPS[3];
uniform vec2 uf_fragCoordScale;
#endif
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
TEXTURE_LAYOUT(1, 1, 1) uniform sampler2D textureUnitPS1;
TEXTURE_LAYOUT(2, 1, 2) uniform sampler2D textureUnitPS2;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 0) out vec4 passPixelColor0;
// uf_fragCoordScale was moved to the ufBlock
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
vec4 R123f = vec4(0.0);
vec4 R125f = vec4(0.0);
vec4 R126f = vec4(0.0);
vec4 R127f = vec4(0.0);
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = passParameterSem0;
R1f = passParameterSem1;
R2f.w = (texture(textureUnitPS1, R0f.xy).x);
R0f.xyzw = (textureGather(textureUnitPS2, R0f.xy).xyzw);
// 0
backupReg0f = R0f.y;
backupReg1f = R0f.x;
PV0f.x = -(R2f.w) + R0f.w;
PV0f.y = -(R2f.w) + R0f.z;
PV0f.z = -(R2f.w) + backupReg0f;
PV0f.w = -(R2f.w) + backupReg1f;
PS0f = R2f.w + intBitsToFloat(uf_remappedPS[0].x);
// 1
R127f.x = max(PV0f.w, -(PV0f.w));
PV1f.y = max(PV0f.z, -(PV0f.z));
R127f.z = max(PV0f.y, -(PV0f.y));
R127f.w = max(PV0f.x, -(PV0f.x));
PS1f = 1.0 / PS0f;
// 2
R126f.x = intBitsToFloat(uf_remappedPS[1].w) * PS1f;
R127f.y = PV1f.y * -(1.0);
R126f.z = floor(R1f.y);
R125f.w = floor(R1f.x);
PV0f.w = R125f.w;
PS0f = PV1f.y * -(1.0);
// 3
tempf.x = dot(vec4(R127f.w,R127f.z,R127f.x,PS0f),vec4(1.0,-(1.0),1.0,1.0));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
R126f.w = tempf.x;
R126f.y = R1f.x + -(PV0f.w);
PS1f = R126f.y;
// 4
tempf.x = dot(vec4(R127f.w,R127f.x,R127f.z,R127f.y),vec4(1.0,-(1.0),1.0,1.0));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
PS0f = R1f.y + -(R126f.z);
// 5
R123f.x = (mul_nonIEEE(R126f.x,PV0f.x) + PS0f);
R123f.x = clamp(R123f.x, 0.0, 1.0);
PV1f.x = R123f.x;
R123f.y = (mul_nonIEEE(R126f.x,R126f.w) + R126f.y);
R123f.y = clamp(R123f.y, 0.0, 1.0);
PV1f.y = R123f.y;
// 6
PV0f.z = R126f.z + PV1f.x;
PV0f.w = R125f.w + PV1f.y;
// 7
R1f.x = (mul_nonIEEE(PV0f.w,intBitsToFloat(uf_remappedPS[2].z)/resXScale) + R1f.z);
R1f.y = (mul_nonIEEE(PV0f.z,intBitsToFloat(uf_remappedPS[2].w)/resYScale) + R1f.w);
R1f.xyzw = (texture(textureUnitPS0, R1f.xy).xyzw);
// export
passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
}

View File

@ -0,0 +1,110 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 b4a729584b6188ea
// Used for: Restoring the native BotW Anti-Aliasing implementation for distant trees
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 1, binding = 3) uniform ufBlock
{
uniform ivec4 uf_remappedPS[3];
uniform vec4 uf_fragCoordScale;
};
#else
uniform ivec4 uf_remappedPS[3];
uniform vec2 uf_fragCoordScale;
#endif
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
TEXTURE_LAYOUT(1, 1, 1) uniform sampler2D textureUnitPS1;
TEXTURE_LAYOUT(2, 1, 2) uniform sampler2D textureUnitPS2;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 0) out vec4 passPixelColor0;
// uf_fragCoordScale was moved to the ufBlock
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
vec4 R123f = vec4(0.0);
vec4 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;
R2f.w = (texture(textureUnitPS1, R0f.xy).x);
R1f.xyzw = (textureGather(textureUnitPS2, R0f.xy).xyzw);
// 0
PV0f.x = -(R2f.w) + R1f.y;
PV0f.y = -(R2f.w) + R1f.x;
PV0f.z = -(R2f.w) + R1f.w;
PV0f.w = -(R2f.w) + R1f.z;
PS0f = R2f.w + intBitsToFloat(uf_remappedPS[0].x);
// 1
PV1f.x = max(PV0f.x, -(PV0f.x));
PV1f.y = max(PV0f.y, -(PV0f.y));
PV1f.z = max(PV0f.z, -(PV0f.z));
PV1f.w = max(PV0f.w, -(PV0f.w));
PS1f = 1.0 / PS0f;
// 2
PV0f.x = PV1f.y + -(PV1f.w);
PV0f.y = -(PV1f.x) + PV1f.z;
R127f.z = intBitsToFloat(uf_remappedPS[1].w) * PS1f;
R127f.w = fract(R0f.z);
R127f.y = fract(R0f.w);
PS0f = R127f.y;
// 3
PV1f.z = PV0f.y + -(PV0f.x);
PV1f.w = PV0f.y + PV0f.x;
// 4
R123f.x = (mul_nonIEEE(R127f.z,PV1f.z) + R127f.y);
R123f.x = clamp(R123f.x, 0.0, 1.0);
PV0f.x = R123f.x;
R123f.y = (mul_nonIEEE(R127f.z,PV1f.w) + R127f.w);
R123f.y = clamp(R123f.y, 0.0, 1.0);
PV0f.y = R123f.y;
// 5
PV1f.z = -(R127f.y) + PV0f.x;
PV1f.w = -(R127f.w) + PV0f.y;
// 6
backupReg0f = R0f.x;
backupReg1f = R0f.y;
R0f.x = (mul_nonIEEE(PV1f.w,intBitsToFloat(uf_remappedPS[2].z) / resXScale) + backupReg0f);
R0f.y = (mul_nonIEEE(PV1f.z,intBitsToFloat(uf_remappedPS[2].w) / resYScale) + backupReg1f);
R0f.xyzw = (texture(textureUnitPS0, R0f.xy).xyzw);
// export
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
}

View File

@ -0,0 +1,196 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 bb50d2ee4fa87bc2
// Used for: Horizontal+Vertical Combat Targeting Blur
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 1) uniform ufBlock
{
uniform ivec4 uf_remappedVS[5];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[5];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
TEXTURE_LAYOUT(32, 0, 0) uniform sampler2D textureUnitVS0;
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 1) out vec4 passParameterSem2;
layout(location = 0) out vec4 passParameterSem0;
layout(location = 2) out vec4 passParameterSem6;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R3i = ivec4(0);
ivec4 R4i = ivec4(0);
ivec4 R123i = ivec4(0);
ivec4 R125i = ivec4(0);
ivec4 R126i = ivec4(0);
ivec4 R127i = ivec4(0);
uvec4 attrDecoder;
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
int PS0i = 0, PS1i = 0;
ivec4 tempi = ivec4(0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = ivec4(gl_VertexID, 0, 0, gl_InstanceID);
attrDecoder.xyzw = attrDataSem0.xyzw;
attrDecoder = ((attrDecoder>>8)&0xFF)|((attrDecoder<<8)&0xFF00);
attrDecoder.xyzw = floatBitsToInt(vec4(unpackHalf2x16(attrDecoder.x|(attrDecoder.y<<16)),unpackHalf2x16(attrDecoder.z|(attrDecoder.w<<16))));
R1i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), int(attrDecoder.w));
attrDecoder.x = attrDataSem1.x;
attrDecoder.x = (attrDecoder.x>>24)|((attrDecoder.x>>8)&0xFF00)|((attrDecoder.x<<8)&0xFF0000)|((attrDecoder.x<<24));
attrDecoder.y = 0;
attrDecoder.z = 0;
attrDecoder.w = 0;
attrDecoder.xyzw = uvec4((attrDecoder.x>>0)&0x3FF,(attrDecoder.x>>10)&0x3FF,(attrDecoder.x>>20)&0x3FF,(attrDecoder.x>>30)&0x3);
if( (attrDecoder.x&0x200) != 0 ) attrDecoder.x |= 0xFFFFFC00;
if( (attrDecoder.y&0x200) != 0 ) attrDecoder.y |= 0xFFFFFC00;
if( (attrDecoder.z&0x200) != 0 ) attrDecoder.z |= 0xFFFFFC00;
attrDecoder.x = floatBitsToUint(max(float(int(attrDecoder.x))/511.0,-1.0));
attrDecoder.y = floatBitsToUint(max(float(int(attrDecoder.y))/511.0,-1.0));
attrDecoder.z = floatBitsToUint(max(float(int(attrDecoder.z))/511.0,-1.0));
attrDecoder.w = floatBitsToUint(float(attrDecoder.w));
R2i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), int(attrDecoder.w));
// 0
backupReg0i = R0i.x;
PV0i.x = 0x3f800000;
PV0i.y = 0x40400000;
PV0i.z = (backupReg0i == int(1))?int(0xFFFFFFFF):int(0x0);
R127i.w = 0x3f800000;
R127i.x = 0xbf800000;
PS0i = R127i.x;
// 1
PV1i.x = floatBitsToInt(intBitsToFloat(uf_remappedVS[0].z) * intBitsToFloat(0x3b808081));
R0i.y = 0;
R123i.z = ((PV0i.z == 0)?(PV0i.x):(0xc0400000));
PV1i.z = R123i.z;
R123i.w = ((PV0i.z == 0)?(PV0i.y):(0xbf800000));
PV1i.w = R123i.w;
R2i.w = 0x3f800000;
PS1i = R2i.w;
// 2
R2i.x = ((R0i.x == 0)?(R127i.x):(PV1i.w));
PV0i.x = R2i.x;
R2i.y = ((R0i.x == 0)?(R127i.w):(PV1i.z));
PV0i.y = R2i.y;
R2i.z = floatBitsToInt(intBitsToFloat(PV1i.x) + -(0.5));
R2i.z = floatBitsToInt(intBitsToFloat(R2i.z) * 2.0);
R0i.w = 0x3d2aaaab;
R1i.x = 0x3e000000;
PS0i = R1i.x;
// 3
R3i.x = uf_remappedVS[1].z;
R3i.x = floatBitsToInt(intBitsToFloat(R3i.x) / 2.0);
R1i.y = 0;
R1i.z = floatBitsToInt(-(intBitsToFloat(PV0i.y)));
R1i.w = floatBitsToInt(-(intBitsToFloat(uf_remappedVS[2].z)));
R1i.w = floatBitsToInt(intBitsToFloat(R1i.w) / 2.0);
R4i.x = floatBitsToInt((intBitsToFloat(PV0i.x) * 0.5 + 0.5));
PS1i = R4i.x;
R0i.w = floatBitsToInt(texture(textureUnitVS0, intBitsToFloat(R0i.wy)).x);
R0i.xyz = floatBitsToInt(texture(textureUnitVS0, intBitsToFloat(R1i.xy)).xyz);
// export
SET_POSITION(vec4(intBitsToFloat(R2i.x), intBitsToFloat(R2i.y), intBitsToFloat(R2i.z), intBitsToFloat(R2i.w)));
// export
passParameterSem2 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), intBitsToFloat(R0i.w));
// 0
R127i.x = floatBitsToInt(intBitsToFloat(R3i.x) + -(0.5));
R4i.y = floatBitsToInt((intBitsToFloat(R1i.z) * 0.5 + 0.5));
PV0i.y = R4i.y;
PV0i.z = floatBitsToInt(-(intBitsToFloat(R2i.y)));
PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) / 2.0);
PV0i.w = R2i.x;
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) / 2.0);
R126i.x = floatBitsToInt(intBitsToFloat(R1i.w) + -(0.5));
PS0i = R126i.x;
// 1
R125i.x = uf_remappedVS[3].y;
R125i.x = floatBitsToInt(intBitsToFloat(R125i.x) * 2.0);
R126i.y = floatBitsToInt(-(intBitsToFloat(uf_remappedVS[3].x)));
R126i.y = floatBitsToInt(intBitsToFloat(R126i.y) * 2.0);
PV1i.y = R126i.y;
R123i.z = floatBitsToInt((intBitsToFloat(uf_remappedVS[4].w) / resYScale * 2.0 + intBitsToFloat(PV0i.y)));
PV1i.z = R123i.z;
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.w) + intBitsToFloat(R3i.x));
R127i.z = floatBitsToInt(intBitsToFloat(PV0i.z) + intBitsToFloat(R1i.w));
PS1i = R127i.z;
// 2
PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(R126i.x));
PV0i.y = floatBitsToInt(intBitsToFloat(R4i.x) + intBitsToFloat(R127i.x));
R126i.z = floatBitsToInt((-(intBitsToFloat(uf_remappedVS[4].w) / resYScale) * intBitsToFloat(0x3c23d70a) + intBitsToFloat(R4i.y)));
R123i.w = floatBitsToInt((intBitsToFloat(uf_remappedVS[4].z) / resXScale * 2.0 + intBitsToFloat(R4i.x)));
PV0i.w = R123i.w;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(PV1i.w)));
PS0i = R127i.y;
// 3
backupReg0i = R127i.x;
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.x), intBitsToFloat(R127i.z)));
R123i.y = floatBitsToInt((-(intBitsToFloat(uf_remappedVS[4].z) / resXScale) * intBitsToFloat(0x3c23d70a) + intBitsToFloat(R4i.x)));
PV1i.y = R123i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PV0i.y)));
R127i.w = floatBitsToInt(intBitsToFloat(PV0i.w) + intBitsToFloat(backupReg0i));
R125i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.x), intBitsToFloat(PV0i.x)));
PS1i = R125i.z;
// 4
R3i.x = PV1i.y;
PV0i.z = floatBitsToInt(intBitsToFloat(R4i.y) + intBitsToFloat(R126i.x));
R3i.w = R126i.z;
R4i.z = R127i.y;
PS0i = R4i.z;
// 5
R1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(R127i.w)));
R1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.x), intBitsToFloat(PV0i.z)));
R1i.z = R127i.z;
R4i.w = R127i.x;
R1i.w = R125i.z;
PS1i = R1i.w;
// export
passParameterSem0 = vec4(intBitsToFloat(R4i.x), intBitsToFloat(R4i.y), intBitsToFloat(R4i.z), intBitsToFloat(R4i.w));
// export
// skipped export to semanticId 255
// export
passParameterSem6 = vec4(intBitsToFloat(R3i.x), intBitsToFloat(R3i.x), intBitsToFloat(R3i.x), intBitsToFloat(R3i.w));
}

View File

@ -0,0 +1,182 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 c92c1c4c0a2fb839
// Used for: Camera Depth of Field Blur
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 1, binding = 3) uniform ufBlock
{
uniform ivec4 uf_remappedPS[5];
uniform vec4 uf_fragCoordScale;
};
#else
uniform ivec4 uf_remappedPS[5];
uniform vec2 uf_fragCoordScale;
#endif
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
TEXTURE_LAYOUT(1, 1, 1) uniform sampler2D textureUnitPS1;
TEXTURE_LAYOUT(2, 1, 2) uniform sampler2D textureUnitPS2;
layout(location = 0) in vec4 passParameterSem2;
layout(location = 0) out vec4 passPixelColor0;
// uf_fragCoordScale was moved to the ufBlock
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R3i = ivec4(0);
ivec4 R4i = ivec4(0);
ivec4 R123i = ivec4(0);
ivec4 R127i = ivec4(0);
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
int PS0i = 0, PS1i = 0;
ivec4 tempi = ivec4(0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
bool activeMaskStack[2];
bool activeMaskStackC[3];
activeMaskStack[0] = false;
activeMaskStackC[0] = false;
activeMaskStackC[1] = false;
activeMaskStack[0] = true;
activeMaskStackC[0] = true;
activeMaskStackC[1] = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = floatBitsToInt(passParameterSem2);
if( activeMaskStackC[1] == true ) {
R1i.w = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R0i.xy)).x);
R1i.z = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R0i.xy)).x);
}
if( activeMaskStackC[1] == true ) {
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.w),intBitsToFloat(uf_remappedPS[0].x)) + intBitsToFloat(uf_remappedPS[1].x)));
R123i.x = clampFI32(R123i.x);
PV0i.x = R123i.x;
// 1
R0i.z = floatBitsToInt(max(intBitsToFloat(R1i.z), intBitsToFloat(PV0i.x)));
PV1i.z = R0i.z;
// 2
R1i.y = ((intBitsToFloat(PV1i.z) != 0.0)?int(0xFFFFFFFF):int(0x0));
PV0i.y = R1i.y;
// 3
if( (PV0i.y == 0)) discard;
}
if( activeMaskStackC[1] == true ) {
activeMaskStack[1] = activeMaskStack[0];
activeMaskStackC[2] = activeMaskStackC[1];
// 0
predResult = (R1i.y != 0);
activeMaskStack[1] = predResult;
activeMaskStackC[2] = predResult == true && activeMaskStackC[1] == true;
}
else {
activeMaskStack[1] = false;
activeMaskStackC[2] = false;
}
if( activeMaskStackC[2] == true ) {
// 0
PV0i.w = floatBitsToInt(intBitsToFloat(uf_remappedPS[2].y) + -(1.0));
// 1
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.w),intBitsToFloat(R0i.z)) + 1.0));
PV1i.z = R123i.z;
// 2
tempResultf = log2(intBitsToFloat(PV1i.z));
PS0i = floatBitsToInt(tempResultf);
// 3
R127i.x = floatBitsToInt(intBitsToFloat(PS0i) + -(1.0));
PV1i.x = R127i.x;
// 4
R2i.z = PV1i.x;
R1i.w = PV1i.x;
PS0i = floatBitsToInt(exp2(intBitsToFloat(PV1i.x)));
// 5
PV1i.z = floatBitsToInt(intBitsToFloat(PS0i) + intBitsToFloat(uf_remappedPS[3].w));
R3i.w = R127i.x;
R4i.w = R127i.x;
PS1i = R4i.w;
// 6
backupReg0i = R127i.x;
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(uf_remappedPS[4].y)));
PV0i.x = R127i.x;
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(uf_remappedPS[4].x) / resXScale));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(uf_remappedPS[4].w) / resYScale));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(uf_remappedPS[4].z)));
PV0i.w = R127i.w;
R2i.w = floatBitsToInt(intBitsToFloat(backupReg0i) + 1.0);
R2i.w = clampFI32(R2i.w);
PS0i = R2i.w;
// 7
R1i.x = floatBitsToInt(intBitsToFloat(R0i.x) + intBitsToFloat(PV0i.y));
R1i.y = floatBitsToInt(intBitsToFloat(R0i.y) + intBitsToFloat(PV0i.x));
R3i.z = floatBitsToInt(intBitsToFloat(R0i.x) + intBitsToFloat(PV0i.w));
R2i.x = floatBitsToInt(intBitsToFloat(R0i.x) + -(intBitsToFloat(PV0i.y)));
PS1i = R2i.x;
// 8
R3i.x = floatBitsToInt(intBitsToFloat(R0i.y) + intBitsToFloat(R127i.z));
R2i.y = floatBitsToInt(intBitsToFloat(R0i.y) + -(intBitsToFloat(R127i.x)));
R4i.z = floatBitsToInt(intBitsToFloat(R0i.x) + -(intBitsToFloat(R127i.w)));
R4i.y = floatBitsToInt(intBitsToFloat(R0i.y) + -(intBitsToFloat(R127i.z)));
PS0i = R4i.y;
}
if( activeMaskStackC[2] == true ) {
R1i.xyz = floatBitsToInt(textureLod(textureUnitPS1, intBitsToFloat(R1i.xy),intBitsToFloat(R1i.w)).xyz);
R2i.xyz = floatBitsToInt(textureLod(textureUnitPS1, intBitsToFloat(R2i.xy),intBitsToFloat(R2i.z)).xyz);
R3i.xyz = floatBitsToInt(textureLod(textureUnitPS1, intBitsToFloat(R3i.zx),intBitsToFloat(R3i.w)).xyz);
R4i.xyz = floatBitsToInt(textureLod(textureUnitPS1, intBitsToFloat(R4i.zy),intBitsToFloat(R4i.w)).xyz);
}
if( activeMaskStackC[2] == true ) {
// 0
PV0i.y = floatBitsToInt(intBitsToFloat(R1i.z) + intBitsToFloat(R2i.z));
PV0i.y = floatBitsToInt(intBitsToFloat(PV0i.y) / 2.0);
PV0i.z = floatBitsToInt(intBitsToFloat(R1i.y) + intBitsToFloat(R2i.y));
PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) / 2.0);
PV0i.w = floatBitsToInt(intBitsToFloat(R1i.x) + intBitsToFloat(R2i.x));
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) / 2.0);
// 1
R123i.x = floatBitsToInt((intBitsToFloat(R3i.x) * 0.5 + intBitsToFloat(PV0i.w)));
PV1i.x = R123i.x;
R123i.z = floatBitsToInt((intBitsToFloat(R3i.z) * 0.5 + intBitsToFloat(PV0i.y)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((intBitsToFloat(R3i.y) * 0.5 + intBitsToFloat(PV0i.z)));
PV1i.w = R123i.w;
// 2
R2i.x = floatBitsToInt((intBitsToFloat(R4i.x) * 0.5 + intBitsToFloat(PV1i.x))/2.0);
R2i.y = floatBitsToInt((intBitsToFloat(R4i.y) * 0.5 + intBitsToFloat(PV1i.w))/2.0);
R2i.z = floatBitsToInt((intBitsToFloat(R4i.z) * 0.5 + intBitsToFloat(PV1i.z))/2.0);
}
activeMaskStackC[1] = activeMaskStack[0] == true && activeMaskStackC[0] == true;
// export
passPixelColor0 = vec4(intBitsToFloat(R2i.x), intBitsToFloat(R2i.y), intBitsToFloat(R2i.z), intBitsToFloat(R2i.w));
}

View File

@ -0,0 +1,223 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 c9f2fd37115b0ee1
// Used for: Horizontal+Vertical Combat Targeting Blur
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 1) uniform ufBlock
{
uniform ivec4 uf_remappedVS[5];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[5];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
TEXTURE_LAYOUT(32, 0, 0) uniform sampler2D textureUnitVS0;
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem0;
layout(location = 1) out vec4 passParameterSem2;
layout(location = 2) out vec4 passParameterSem6;
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 R123i = ivec4(0);
ivec4 R124i = ivec4(0);
ivec4 R125i = ivec4(0);
ivec4 R126i = ivec4(0);
ivec4 R127i = ivec4(0);
uvec4 attrDecoder;
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
int PS0i = 0, PS1i = 0;
ivec4 tempi = ivec4(0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = ivec4(gl_VertexID, 0, 0, gl_InstanceID);
attrDecoder.xyzw = attrDataSem0.xyzw;
attrDecoder = ((attrDecoder>>8)&0xFF)|((attrDecoder<<8)&0xFF00);
attrDecoder.xyzw = floatBitsToInt(vec4(unpackHalf2x16(attrDecoder.x|(attrDecoder.y<<16)),unpackHalf2x16(attrDecoder.z|(attrDecoder.w<<16))));
R1i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), int(attrDecoder.w));
attrDecoder.x = attrDataSem1.x;
attrDecoder.x = (attrDecoder.x>>24)|((attrDecoder.x>>8)&0xFF00)|((attrDecoder.x<<8)&0xFF0000)|((attrDecoder.x<<24));
attrDecoder.y = 0;
attrDecoder.z = 0;
attrDecoder.w = 0;
attrDecoder.xyzw = uvec4((attrDecoder.x>>0)&0x3FF,(attrDecoder.x>>10)&0x3FF,(attrDecoder.x>>20)&0x3FF,(attrDecoder.x>>30)&0x3);
if( (attrDecoder.x&0x200) != 0 ) attrDecoder.x |= 0xFFFFFC00;
if( (attrDecoder.y&0x200) != 0 ) attrDecoder.y |= 0xFFFFFC00;
if( (attrDecoder.z&0x200) != 0 ) attrDecoder.z |= 0xFFFFFC00;
attrDecoder.x = floatBitsToUint(max(float(int(attrDecoder.x))/511.0,-1.0));
attrDecoder.y = floatBitsToUint(max(float(int(attrDecoder.y))/511.0,-1.0));
attrDecoder.z = floatBitsToUint(max(float(int(attrDecoder.z))/511.0,-1.0));
attrDecoder.w = floatBitsToUint(float(attrDecoder.w));
R2i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), int(attrDecoder.w));
// 0
backupReg0i = R0i.x;
PV0i.x = 0x3f800000;
PV0i.y = 0x40400000;
PV0i.z = (backupReg0i == int(1))?int(0xFFFFFFFF):int(0x0);
R127i.w = 0x3f800000;
R127i.x = 0xbf800000;
PS0i = R127i.x;
// 1
R3i.x = uf_remappedVS[0].z;
R3i.x = floatBitsToInt(intBitsToFloat(R3i.x) / 2.0);
PV1i.y = floatBitsToInt(intBitsToFloat(uf_remappedVS[1].z) * intBitsToFloat(0x3b808081));
R123i.z = ((PV0i.z == 0)?(PV0i.x):(0xc0400000));
PV1i.z = R123i.z;
R123i.w = ((PV0i.z == 0)?(PV0i.y):(0xbf800000));
PV1i.w = R123i.w;
R2i.w = 0x3f800000;
PS1i = R2i.w;
// 2
R2i.x = ((R0i.x == 0)?(R127i.x):(PV1i.w));
R2i.y = ((R0i.x == 0)?(R127i.w):(PV1i.z));
PV0i.y = R2i.y;
R2i.z = floatBitsToInt(intBitsToFloat(PV1i.y) + -(0.5));
R2i.z = floatBitsToInt(intBitsToFloat(R2i.z) * 2.0);
R0i.w = 0x3ec00000;
R0i.y = 0;
PS0i = R0i.y;
// 3
R1i.xyz = ivec3(0x3eeaaaab,0,0x3d2aaaab);
R1i.w = 0;
R0i.x = floatBitsToInt(-(intBitsToFloat(PV0i.y)));
PS1i = R0i.x;
R5i.xyz = floatBitsToInt(texture(textureUnitVS0, intBitsToFloat(R0i.wy)).xyz);
R4i.xyz = floatBitsToInt(texture(textureUnitVS0, intBitsToFloat(R1i.xy)).xyz);
R1i.w = floatBitsToInt(texture(textureUnitVS0, intBitsToFloat(R1i.zw)).y);
// export
SET_POSITION(vec4(intBitsToFloat(R2i.x), intBitsToFloat(R2i.y), intBitsToFloat(R2i.z), intBitsToFloat(R2i.w)));
// 0
R127i.x = floatBitsToInt(-(intBitsToFloat(uf_remappedVS[2].z)));
R127i.x = floatBitsToInt(intBitsToFloat(R127i.x) / 2.0);
PV0i.x = R127i.x;
R0i.y = floatBitsToInt((intBitsToFloat(R0i.x) * 0.5 + 0.5));
PV0i.y = R0i.y;
R127i.z = floatBitsToInt(-(intBitsToFloat(R2i.y)));
R127i.z = floatBitsToInt(intBitsToFloat(R127i.z) / 2.0);
R127i.w = R2i.x;
R127i.w = floatBitsToInt(intBitsToFloat(R127i.w) / 2.0);
R0i.x = floatBitsToInt((intBitsToFloat(R2i.x) * 0.5 + 0.5));
PS0i = R0i.x;
// 1
R2i.x = floatBitsToInt(-(intBitsToFloat(uf_remappedVS[3].x)));
R2i.x = floatBitsToInt(intBitsToFloat(R2i.x) * 2.0);
PV1i.x = R2i.x;
R2i.y = uf_remappedVS[3].y;
R2i.y = floatBitsToInt(intBitsToFloat(R2i.y) * 2.0);
PV1i.y = R2i.y;
R123i.z = floatBitsToInt((intBitsToFloat(uf_remappedVS[4].w) / resYScale * 2.0 + intBitsToFloat(PV0i.y)));
PV1i.z = R123i.z;
R126i.w = floatBitsToInt(intBitsToFloat(R3i.x) + -(0.5));
R125i.x = floatBitsToInt(intBitsToFloat(PV0i.x) + -(0.5));
PS1i = R125i.x;
// 2
backupReg0i = R127i.z;
R126i.x = floatBitsToInt(-(intBitsToFloat(PV1i.y)));
R126i.x = floatBitsToInt(intBitsToFloat(R126i.x) / 2.0);
PV0i.y = floatBitsToInt(-(intBitsToFloat(PV1i.x)));
PV0i.y = floatBitsToInt(intBitsToFloat(PV0i.y) / 2.0);
R127i.z = floatBitsToInt(intBitsToFloat(R127i.w) + intBitsToFloat(R3i.x));
R127i.w = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(R127i.x));
R126i.z = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(PS1i));
PS0i = R126i.z;
// 3
R124i.x = floatBitsToInt(intBitsToFloat(R0i.x) + intBitsToFloat(R126i.w));
R127i.y = floatBitsToInt((-(intBitsToFloat(uf_remappedVS[4].z)/resXScale) * intBitsToFloat(0x3c23d70a) + intBitsToFloat(R0i.x)));
R125i.z = floatBitsToInt((-(intBitsToFloat(uf_remappedVS[4].w)/resYScale) * intBitsToFloat(0x3c23d70a) + intBitsToFloat(R0i.y)));
R123i.w = floatBitsToInt((intBitsToFloat(uf_remappedVS[4].z)/ resXScale * 2.0 + intBitsToFloat(R0i.x)));
PV1i.w = R123i.w;
R125i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.x),intBitsToFloat(R3i.x)) + intBitsToFloat(PV0i.y)));
PS1i = R125i.w;
// 4
backupReg0i = R127i.x;
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R127i.w)));
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R127i.z)));
R127i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.y),intBitsToFloat(backupReg0i)) + intBitsToFloat(R126i.x)));
R127i.w = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(R126i.w));
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R126i.z)));
PS0i = R124i.w;
// 5
backupReg0i = R0i.y;
backupReg1i = R125i.z;
PV1i.x = floatBitsToInt(-(intBitsToFloat(R5i.z)) + intBitsToFloat(R4i.z));
PV1i.y = floatBitsToInt(-(intBitsToFloat(R5i.y)) + intBitsToFloat(R4i.y));
R125i.z = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(R125i.x));
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R124i.x)));
R3i.w = backupReg1i;
PS1i = R3i.w;
// 6
R3i.x = R127i.y;
R1i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(R0i.y)) + intBitsToFloat(R5i.y)));
PV0i.z = floatBitsToInt(-(intBitsToFloat(R5i.x)) + intBitsToFloat(R4i.x));
R2i.w = R127i.z;
R1i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),intBitsToFloat(R0i.y)) + intBitsToFloat(R5i.z)));
PS0i = R1i.z;
// 7
R1i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R0i.y)) + intBitsToFloat(R5i.x)));
R5i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.y), intBitsToFloat(R125i.z)));
R2i.z = R125i.w;
R0i.w = R127i.x;
R0i.z = R126i.y;
PS1i = R0i.z;
// 8
R5i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R2i.x), intBitsToFloat(R127i.w)));
R5i.z = R126i.w;
R5i.w = R124i.w;
// export
passParameterSem0 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), intBitsToFloat(R0i.w));
// export
passParameterSem2 = vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w));
// export
// skipped export to semanticId 255
// export
// skipped export to semanticId 255
// export
passParameterSem6 = vec4(intBitsToFloat(R3i.x), intBitsToFloat(R3i.x), intBitsToFloat(R3i.x), intBitsToFloat(R3i.w));
}

View File

@ -0,0 +1,53 @@
#version 420
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
#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 cb0e6e8cbec4502a
// Used for: 1 pass Battle, Camera and Scope Depth of Field Blur
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
{
uniform vec4 uf_fragCoordScale;
};
#else
uniform vec2 uf_fragCoordScale;
#endif
int radius = int( roundEven(2.0/uf_fragCoordScale.y) );
vec2 resolution = vec2( textureSize(textureUnitPS0,0) );
void main() {
vec2 center = ( passParameterSem3.xy + passParameterSem3.zw ) / 2.0 ;
vec3 result = vec3(0.0);
float count = 0.0;
for ( int x = 1-radius; x <= radius-1; x+=2 ) {
for ( int y = 1-radius; y <= radius-1; y+=2 ) {
if ( length(vec2(x, y)) <= radius ) {
result += texture( textureUnitPS0, center + vec2(x, y)/resolution ).xyz ;
count += 1.0;
}
}
}
passPixelColor0 = vec4( result / count, 0.0 );
}

View File

@ -0,0 +1,98 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 d1cf6920c3d5b194
// Used for: Restoring the native BotW Anti-Aliasing implementation for distant trees
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem0;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
vec4 R122f = vec4(0.0);
vec4 R123f = vec4(0.0);
uvec4 attrDecoder;
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
attrDecoder.xy = attrDataSem1.xy;
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
attrDecoder.z = 0;
attrDecoder.w = 0;
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
backupReg0f = R1f.x;
backupReg1f = R1f.y;
R1f.x = backupReg0f;
R1f.x *= 2.0;
R1f.y = backupReg1f;
R1f.y *= 2.0;
R1f.z = 1.0;
R123f.w = (mul_nonIEEE(R2f.x,intBitsToFloat(uf_remappedVS[0].x) * resXScale) + 0.5);
PV0f.w = R123f.w;
R122f.x = (mul_nonIEEE(R2f.y,intBitsToFloat(uf_remappedVS[0].y) * resYScale) + 0.5);
PS0f = R122f.x;
// 1
R2f.z = PV0f.w;
R2f.w = PS0f;
// export
SET_POSITION(vec4(R1f.x, R1f.y, R1f.z, R1f.z));
// export
passParameterSem0 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
}

View File

@ -0,0 +1,106 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 e06e20b2efe87a84
// Used for: Horizontal Ambient-Occlusion Blur
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem0;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
uvec4 attrDecoder;
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
attrDecoder.xy = attrDataSem1.xy;
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
attrDecoder.z = 0;
attrDecoder.w = 0;
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
backupReg0f = R1f.x;
backupReg1f = R1f.y;
R1f.x = backupReg0f;
R1f.x *= 2.0;
R1f.y = backupReg1f;
R1f.y *= 2.0;
R1f.z = -(1.0);
R1f.w = 1.0;
R0f.x = R2f.x;
PS0f = R0f.x;
// 1
backupReg0f = R2f.x;
backupReg0f = R2f.x;
backupReg0f = R2f.x;
R2f.x = R2f.y;
R0f.y = R2f.y;
R2f.z = backupReg0f + intBitsToFloat(uf_remappedVS[0].x)/resXScale;
R2f.w = backupReg0f;
R2f.y = backupReg0f + -(intBitsToFloat(uf_remappedVS[0].x))/resXScale;
PS1f = R2f.y;
// export
SET_POSITION(vec4(R1f.x, R1f.y, R1f.z, R1f.w));
// export
passParameterSem0 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
// export
// skipped export to semanticId 255
}

View File

@ -0,0 +1,131 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 ea9a49a6185cf1e5
// Used for: Fix Reflection
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{
uniform ivec4 uf_remappedVS[2];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[2];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) noperspective out vec4 passParameterSem0;
layout(location = 1) noperspective out vec4 passParameterSem1;
layout(location = 2) noperspective out vec4 passParameterSem2;
layout(location = 3) noperspective out vec4 passParameterSem3;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
vec4 R3f = vec4(0.0);
vec4 R123f = vec4(0.0);
vec4 R126f = vec4(0.0);
vec4 R127f = vec4(0.0);
uvec4 attrDecoder;
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
PV0f.x = (0.0 > R1f.y)?1.0:0.0;
PV0f.y = (0.0 > R1f.x)?1.0:0.0;
PV0f.z = (R1f.y > 0.0)?1.0:0.0;
PV0f.w = (R1f.x > 0.0)?1.0:0.0;
R1f.z = 0.0;
PS0f = R1f.z;
// 1
R1f.x = PV0f.w + -(PV0f.y);
PV1f.x = R1f.x;
R1f.y = PV0f.z + -(PV0f.x);
PV1f.y = R1f.y;
R1f.w = 1.0;
// 2
PV0f.x = PV1f.x;
PV0f.x /= 2.0;
R127f.y = PV1f.x * 1.0;
PV0f.y = R127f.y;
PV0f.z = -(PV1f.y);
PV0f.z /= 2.0;
R127f.w = PV1f.y * -(1.0);
PV0f.w = R127f.w;
R127f.x = PV1f.x * 1.0;
PS0f = R127f.x;
// 3
R126f.x = (intBitsToFloat(uf_remappedVS[0].y) * 2.0 / resYScale + PV0f.w);
R0f.y = PV0f.z + 0.5;
R123f.z = (intBitsToFloat(uf_remappedVS[0].x) * 2.0 / resXScale + PV0f.y);
PV1f.z = R123f.z;
PV1f.w = PV0f.w;
R0f.x = PV0f.x + 0.5;
PS1f = R0f.x;
// 4
R2f.x = (mul_nonIEEE(R127f.x,-(intBitsToFloat(uf_remappedVS[1].x))) + -(intBitsToFloat(uf_remappedVS[1].z)));
R2f.y = (mul_nonIEEE(R127f.w,-(intBitsToFloat(uf_remappedVS[1].y))) + -(intBitsToFloat(uf_remappedVS[1].w)));
R0f.z = (mul_nonIEEE(-(intBitsToFloat(uf_remappedVS[1].x)),PV1f.z) + -(intBitsToFloat(uf_remappedVS[1].z)));
R0f.w = (mul_nonIEEE(-(intBitsToFloat(uf_remappedVS[1].y)),PV1f.w) + -(intBitsToFloat(uf_remappedVS[1].w)));
R3f.x = (mul_nonIEEE(R127f.y,-(intBitsToFloat(uf_remappedVS[1].x))) + -(intBitsToFloat(uf_remappedVS[1].z)));
PS0f = R3f.x;
// 5
R3f.y = (mul_nonIEEE(R126f.x,-(intBitsToFloat(uf_remappedVS[1].y))) + -(intBitsToFloat(uf_remappedVS[1].w)));
// export
SET_POSITION(vec4(R1f.x, R1f.y, R1f.z, R1f.w));
// export
passParameterSem0 = vec4(R0f.x, R0f.y, R0f.z, R0f.z);
// export
passParameterSem1 = vec4(R2f.x, R2f.y, R2f.z, R2f.z);
// export
passParameterSem2 = vec4(R0f.z, R0f.w, R0f.z, R0f.z);
// export
passParameterSem3 = vec4(R3f.x, R3f.y, R3f.z, R3f.z);
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,118 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 f69e84515ae56e70
// Used for: Vertical Bloom Blur
// bloom blur v
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem0;
layout(location = 1) out vec4 passParameterSem1;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
vec4 R127f = vec4(0.0);
uvec4 attrDecoder;
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
attrDecoder.xy = attrDataSem1.xy;
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
attrDecoder.z = 0;
attrDecoder.w = 0;
R2f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(floatBitsToInt(0.0)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
backupReg0f = R1f.x;
backupReg1f = R1f.y;
R1f.x = backupReg0f;
R1f.x *= 2.0;
R1f.y = backupReg1f;
R1f.y *= 2.0;
R1f.z = 0.0;
R1f.w = 1.0;
PS0f = intBitsToFloat(uf_remappedVS[0].y) / resYScale * intBitsToFloat(0x3fb13a93);
// 1
R127f.x = intBitsToFloat(uf_remappedVS[0].y) / resYScale * intBitsToFloat(0x404ec4f0);
PV1f.x = R127f.x;
R0f.y = R2f.y + -(PS0f);
R2f.z = R2f.y + PS0f;
PV1f.z = R2f.z;
R2f.w = R2f.y;
PV1f.w = R2f.w;
R0f.x = R2f.x;
PS1f = R0f.x;
// 2
R0f.z = PV1f.z;
R0f.w = PV1f.w;
R2f.z = R2f.y + PV1f.x;
PS0f = R2f.z;
// 3
backupReg0f = R2f.y;
backupReg0f = R2f.y;
R2f.y = backupReg0f + -(R127f.x);
R2f.w = backupReg0f;
// export
SET_POSITION(vec4(R1f.x, R1f.y, R1f.z, R1f.w));
// export
passParameterSem0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
// export
passParameterSem1 = vec4(R2f.x, R2f.y, R2f.z, R2f.w);
}

View File

@ -0,0 +1,132 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 fc3e63a2007625f8
// Used For: Vertical Menu Blur
const float resXScale = float($width)/float($gameWidth);
const float resYScale = float($height)/float($gameHeight);
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{
uniform ivec4 uf_remappedVS[5];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[5];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem0;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R126f = vec4(0.0);
vec4 R127f = vec4(0.0);
uvec4 attrDecoder;
float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f;
vec4 PV0f = vec4(0.0), PV1f = vec4(0.0);
float PS0f = 0.0, PS1f = 0.0;
vec4 tempf = vec4(0.0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0f = floatBitsToInt(ivec4(gl_VertexID, 0, 0, gl_InstanceID));
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1f = vec4(intBitsToFloat(int(attrDecoder.x)), intBitsToFloat(int(attrDecoder.y)), intBitsToFloat(int(attrDecoder.z)), intBitsToFloat(floatBitsToInt(1.0)));
// 0
R127f.x = -(R1f.y);
PV0f.x = R127f.x;
R127f.y = (R1f.x > 0.0)?1.0:0.0;
R127f.y /= 2.0;
R126f.z = (0.0 > R1f.x)?1.0:0.0;
R126f.z /= 2.0;
R127f.w = 1.0;
PV0f.w = R127f.w;
R126f.x = intBitsToFloat(uf_remappedVS[0].w) * (intBitsToFloat(0x3fae8a72)/resYScale);
PS0f = R126f.x;
// 1
R0f.x = dot(vec4(R1f.x,R1f.y,R1f.z,PV0f.w),vec4(intBitsToFloat(uf_remappedVS[1].x),intBitsToFloat(uf_remappedVS[1].y),intBitsToFloat(uf_remappedVS[1].z),intBitsToFloat(uf_remappedVS[1].w)));
PV1f.x = R0f.x;
PV1f.y = R0f.x;
PV1f.z = R0f.x;
PV1f.w = R0f.x;
R127f.z = (PV0f.x > 0.0)?1.0:0.0;
R127f.z /= 2.0;
PS1f = R127f.z;
// 2
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[2].x),intBitsToFloat(uf_remappedVS[2].y),intBitsToFloat(uf_remappedVS[2].z),intBitsToFloat(uf_remappedVS[2].w)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R0f.y = tempf.x;
PS0f = (0.0 > R127f.x)?1.0:0.0;
PS0f /= 2.0;
// 3
backupReg0f = R127f.z;
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[3].x),intBitsToFloat(uf_remappedVS[3].y),intBitsToFloat(uf_remappedVS[3].z),intBitsToFloat(uf_remappedVS[3].w)));
PV1f.x = tempf.x;
PV1f.y = tempf.x;
PV1f.z = tempf.x;
PV1f.w = tempf.x;
R0f.z = tempf.x;
R127f.z = backupReg0f + -(PS0f);
PS1f = R127f.z;
// 4
tempf.x = dot(vec4(R1f.x,R1f.y,R1f.z,R127f.w),vec4(intBitsToFloat(uf_remappedVS[4].x),intBitsToFloat(uf_remappedVS[4].y),intBitsToFloat(uf_remappedVS[4].z),intBitsToFloat(uf_remappedVS[4].w)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R0f.w = tempf.x;
PS0f = R127f.y + -(R126f.z);
// 5
R1f.x = PS0f + 0.5;
PV1f.y = R127f.z + 0.5;
// 6
R1f.y = PV1f.y + -(R126f.x);
R1f.z = PV1f.y + R126f.x;
R1f.w = PV1f.y;
// export
SET_POSITION(vec4(R0f.x, R0f.y, R0f.z, R0f.w));
// export
passParameterSem0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w);
}

View File

@ -0,0 +1,729 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 ffe0e8c84f6e8da9
// Shadow 2x2 box blur fix
// shader dumped from BotW v1.3.1, using Cemu 1.10.0
const float resScale = $shadowRes;
UNIFORM_BUFFER_LAYOUT(33, 1, 7) uniform uniformBlockPS1
{
vec4 uf_blockPS1[1024];
};
UNIFORM_BUFFER_LAYOUT(38, 1, 8) uniform uniformBlockPS6
{
vec4 uf_blockPS6[1024];
};
UNIFORM_BUFFER_LAYOUT(42, 1, 9) uniform uniformBlockPS10
{
vec4 uf_blockPS10[1024];
};
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
TEXTURE_LAYOUT(1, 1, 1) uniform sampler2D textureUnitPS1;
TEXTURE_LAYOUT(3, 1, 2) uniform sampler2D textureUnitPS3;
TEXTURE_LAYOUT(6, 1, 3) uniform sampler2D textureUnitPS6;
TEXTURE_LAYOUT(8, 1, 4) uniform sampler2DArrayShadow textureUnitPS8;
TEXTURE_LAYOUT(15, 1, 5) uniform sampler2D textureUnitPS15;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem5;
layout(location = 2) in vec4 passParameterSem6;
layout(location = 5) out vec4 passPixelColor5;
#ifdef VULKAN
layout(set = 1, binding = 6) uniform ufBlock
{
uniform vec4 uf_fragCoordScale;
};
#else
uniform vec2 uf_fragCoordScale;
#endif
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 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;
bool activeMaskStack[3];
bool activeMaskStackC[4];
activeMaskStack[0] = false;
activeMaskStack[1] = false;
activeMaskStackC[0] = false;
activeMaskStackC[1] = false;
activeMaskStackC[2] = false;
activeMaskStack[0] = true;
activeMaskStackC[0] = true;
activeMaskStackC[1] = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem5);
R2i = floatBitsToInt(passParameterSem6);
if( activeMaskStackC[1] == true ) {
R3i.w = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R0i.xy)).x);
R6i.xzw = floatBitsToInt(textureGather(textureUnitPS6, vec2(0.0001) + intBitsToFloat(R0i.xy)).xzw);
R4i.xyzw = floatBitsToInt(texture(textureUnitPS3, intBitsToFloat(R2i.zw)).xyzw);
R2i.xy = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R2i.xy)).xw);
}
if( activeMaskStackC[1] == true ) {
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R6i.w)) + uf_blockPS1[14].x));
PV0i.x = R123i.x;
R127i.y = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R6i.z)) + uf_blockPS1[14].x));
R127i.z = floatBitsToInt((mul_nonIEEE(uf_blockPS1[16].x,intBitsToFloat(R6i.x)) + uf_blockPS1[14].x));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.w),uf_blockPS1[16].x) + uf_blockPS1[14].x));
PV0i.w = R123i.w;
R127i.x = floatBitsToInt((intBitsToFloat(R4i.x) * 2.0 + -(1.0)));
PS0i = R127i.x;
// 1
R7i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(PV0i.w))));
R6i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), -(intBitsToFloat(PV0i.w))));
R12i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)));
R127i.w = floatBitsToInt((intBitsToFloat(R4i.y) * 2.0 + -(1.0)));
R125i.z = floatBitsToInt((intBitsToFloat(R4i.z) * 2.0 + -(1.0)));
PS1i = R125i.z;
// 2
PV0i.x = floatBitsToInt(-(intBitsToFloat(R127i.y)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), -(intBitsToFloat(R127i.y))));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), -(intBitsToFloat(R127i.y))));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), -(intBitsToFloat(R127i.z))));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), -(intBitsToFloat(R127i.z))));
PS0i = R126i.z;
// 3
R125i.x = floatBitsToInt(-(intBitsToFloat(R7i.x)) + intBitsToFloat(PV0i.z));
R127i.y = floatBitsToInt(-(intBitsToFloat(R127i.z)));
R124i.z = floatBitsToInt(-(intBitsToFloat(R12i.z)) + intBitsToFloat(PV0i.x));
R125i.w = floatBitsToInt(-(intBitsToFloat(R6i.y)) + intBitsToFloat(PV0i.y));
R126i.y = floatBitsToInt(-(intBitsToFloat(R7i.x)) + intBitsToFloat(PV0i.w));
PS1i = R126i.y;
// 4
backupReg0i = R126i.z;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.x),intBitsToFloat(R6i.y),intBitsToFloat(R12i.z),-0.0),vec4(intBitsToFloat(R7i.x),intBitsToFloat(R6i.y),intBitsToFloat(R12i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R126i.z = tempi.x;
R126i.x = floatBitsToInt(-(intBitsToFloat(R6i.y)) + intBitsToFloat(backupReg0i));
PS0i = R126i.x;
// 5
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R127i.x),intBitsToFloat(R127i.w),intBitsToFloat(R125i.z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R127i.w),intBitsToFloat(R125i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.z = tempi.x;
R126i.w = floatBitsToInt(-(intBitsToFloat(R12i.z)) + intBitsToFloat(R127i.y));
PS1i = R126i.w;
// 6
backupReg0i = R126i.z;
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.x), uf_blockPS6[43].x));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.z), intBitsToFloat(R126i.y)));
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.w), intBitsToFloat(PS1i)));
R124i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.x), intBitsToFloat(R126i.x)));
R125i.y = floatBitsToInt(sqrt(intBitsToFloat(backupReg0i)));
PS0i = R125i.y;
// 7
backupReg0i = R127i.z;
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.x), uf_blockPS6[45].x));
R124i.y = floatBitsToInt(intBitsToFloat(R4i.w) * intBitsToFloat(0x437f0000));
R127i.z = floatBitsToInt((intBitsToFloat(R2i.x) * 2.0 + -(1.0)));
R4i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),uf_blockPS6[43].y) + intBitsToFloat(PV0i.x)));
tempResultf = 1.0 / sqrt(intBitsToFloat(backupReg0i));
PS1i = floatBitsToInt(tempResultf);
// 8
backupReg0i = R125i.z;
R8i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS1i)));
R7i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(PS1i)));
R125i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS1[18].y, uf_blockPS1[18].z));
PV0i.z = R125i.z;
R127i.w = floatBitsToInt(-(intBitsToFloat(R12i.z)) * intBitsToFloat(0x3d4ccccd));
R9i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PS1i)));
PS0i = R9i.z;
// 9
R1i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R126i.x)),intBitsToFloat(R124i.z)) + intBitsToFloat(R126i.z)));
R1i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R126i.w)),intBitsToFloat(R125i.x)) + intBitsToFloat(R127i.y)));
R126i.z = floatBitsToInt((intBitsToFloat(R2i.y) * 2.0 + -(1.0)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),uf_blockPS6[45].y) + intBitsToFloat(R124i.x)));
PV1i.w = R123i.w;
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R127i.z)));
PS1i = R126i.w;
// 10
backupReg0i = R126i.y;
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),uf_blockPS6[45].z) + intBitsToFloat(PV1i.w)));
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),uf_blockPS6[43].z) + intBitsToFloat(R4i.w)));
R1i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(R125i.w)) + intBitsToFloat(R124i.w)));
PV0i.z = R1i.z;
R125i.w = R8i.x;
R125i.w = floatBitsToInt(intBitsToFloat(R125i.w) * 2.0);
R124i.z = R7i.y;
R124i.z = floatBitsToInt(intBitsToFloat(R124i.z) * 2.0);
PS0i = R124i.z;
// 11
R124i.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R1i.x)),-(intBitsToFloat(R1i.y)),-(intBitsToFloat(PV0i.z)),-0.0),vec4(-(intBitsToFloat(R1i.x)),-(intBitsToFloat(R1i.y)),-(intBitsToFloat(PV0i.z)),0.0)));
PV1i.x = R124i.x;
PV1i.y = R124i.x;
PV1i.z = R124i.x;
PV1i.w = R124i.x;
R2i.x = floatBitsToInt((-(uf_blockPS6[53].w) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(R127i.w)));
R2i.x = clampFI32(R2i.x);
PS1i = R2i.x;
// 12
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), -(intBitsToFloat(R126i.z))));
PV0i.x = R125i.x;
R127i.y = floatBitsToInt(intBitsToFloat(R126i.z) * intBitsToFloat(0xbb6fe5d7));
PV0i.z = floatBitsToInt(intBitsToFloat(R126i.w) * intBitsToFloat(0x3ca30589));
PV0i.w = floatBitsToInt(intBitsToFloat(R126i.z) * intBitsToFloat(0x3ca30589));
R126i.z = floatBitsToInt(intBitsToFloat(R126i.w) * intBitsToFloat(0xbb6fe5d7));
PS0i = R126i.z;
// 13
R10i.x = floatBitsToInt(uf_blockPS6[43].w + intBitsToFloat(R126i.y));
R3i.y = floatBitsToInt((intBitsToFloat(R127i.z) * intBitsToFloat(0x3b02da3b) + intBitsToFloat(PV0i.w)));
R2i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(R12i.z)), uf_blockPS1[17].y));
R1i.w = 0x3f800000;
R4i.x = floatBitsToInt((intBitsToFloat(PV0i.x) * intBitsToFloat(0x3b02da3b) + intBitsToFloat(PV0i.z)));
PS1i = R4i.x;
// 14
R3i.x = floatBitsToInt((intBitsToFloat(R125i.x) * intBitsToFloat(0x3d156fb9) + intBitsToFloat(R126i.z)));
R2i.y = floatBitsToInt((intBitsToFloat(R127i.z) * intBitsToFloat(0x3d156fb9) + intBitsToFloat(R127i.y)));
R11i.z = floatBitsToInt(uf_blockPS6[45].w + intBitsToFloat(R126i.x));
R10i.w = floatBitsToInt((-(uf_blockPS6[53].z) * intBitsToFloat(0x3d4ccccd) + intBitsToFloat(R127i.w)));
R10i.w = clampFI32(R10i.w);
PS0i = floatBitsToInt(1.0 / intBitsToFloat(R125i.y));
// 15
backupReg0i = R124i.y;
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R7i.x), intBitsToFloat(PS0i)));
PV1i.x = R126i.x;
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R6i.y), intBitsToFloat(PS0i)));
PV1i.y = R124i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R12i.z), intBitsToFloat(PS0i)));
PS1i = int(intBitsToFloat(backupReg0i));
// 16
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R8i.x),intBitsToFloat(R7i.y),intBitsToFloat(R9i.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 = PS1i & int(1);
// 17
R11i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R125i.w)) + intBitsToFloat(R126i.x)));
R10i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R124i.z)) + intBitsToFloat(R124i.y)));
R11i.w = floatBitsToInt(intBitsToFloat(PV0i.x) + 1.0);
R11i.w = clampFI32(R11i.w);
R8i.y = ((PS0i == 0)?(0):(0x3f800000));
PS1i = R8i.y;
// 18
tempResultf = 1.0 / sqrt(intBitsToFloat(R124i.x));
R2i.w = floatBitsToInt(tempResultf);
PS0i = R2i.w;
}
if( activeMaskStackC[1] == true ) {
activeMaskStack[1] = activeMaskStack[0];
activeMaskStackC[2] = activeMaskStackC[1];
// 0
PV0i.x = floatBitsToInt(uf_blockPS10[2].z + 1.0);
R9i.y = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].y, uf_blockPS10[2].w));
R9i.x = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].x, uf_blockPS10[2].w));
PS0i = R9i.x;
// 1
R10i.z = floatBitsToInt(mul_nonIEEE(uf_blockPS6[4].z, uf_blockPS10[2].w));
R12i.w = floatBitsToInt(-(intBitsToFloat(R2i.x)) + intBitsToFloat(PV0i.x));
R12i.w = clampFI32(R12i.w);
R7i.w = 0;
PS1i = R7i.w;
// 2
predResult = (1.0 > intBitsToFloat(R10i.w));
activeMaskStack[1] = predResult;
activeMaskStackC[2] = predResult == true && activeMaskStackC[1] == true;
}
else {
activeMaskStack[1] = false;
activeMaskStackC[2] = false;
}
if( activeMaskStackC[2] == true ) {
// 0
R12i.x = floatBitsToInt(intBitsToFloat(R0i.x) + intBitsToFloat(R4i.x));
R12i.y = floatBitsToInt(intBitsToFloat(R0i.y) + intBitsToFloat(R3i.y));
R13i.x = floatBitsToInt(intBitsToFloat(R0i.x) + -(intBitsToFloat(R4i.x)));
PS0i = R13i.x;
// 1
R14i.x = floatBitsToInt(intBitsToFloat(R0i.x) + intBitsToFloat(R3i.x));
R13i.y = floatBitsToInt(intBitsToFloat(R0i.y) + -(intBitsToFloat(R3i.y)));
R14i.y = floatBitsToInt(intBitsToFloat(R0i.y) + intBitsToFloat(R2i.y));
PS1i = R14i.y;
// 2
R15i.x = floatBitsToInt(intBitsToFloat(R0i.x) + -(intBitsToFloat(R3i.x)));
R15i.y = floatBitsToInt(intBitsToFloat(R0i.y) + -(intBitsToFloat(R2i.y)));
}
if( activeMaskStackC[2] == true ) {
// 0
R127i.x = ((-(intBitsToFloat(R12i.z)) > uf_blockPS1[58].y)?int(0xFFFFFFFF):int(0x0));
PV0i.y = floatBitsToInt(intBitsToFloat(R7i.y) * 1.5);
PV0i.z = floatBitsToInt(intBitsToFloat(R8i.x) * 1.5);
PV0i.w = ((-(intBitsToFloat(R12i.z)) > uf_blockPS1[58].x)?int(0xFFFFFFFF):int(0x0));
PS0i = floatBitsToInt(intBitsToFloat(R9i.z) * 1.5);
// 1
backupReg0i = R1i.x;
backupReg1i = R1i.z;
R1i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(R2i.w)) + intBitsToFloat(PV0i.z)));
PV1i.y = PV0i.w & int(1);
R1i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R1i.y)),intBitsToFloat(R2i.w)) + intBitsToFloat(PV0i.y)));
R1i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg1i)),intBitsToFloat(R2i.w)) + intBitsToFloat(PS0i)));
R122i.x = floatBitsToInt((intBitsToFloat(R2i.z) * 0.25 + 1.0));
PS1i = R122i.x;
// 2
R2i.x = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i));
R2i.y = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i));
R2i.z = floatBitsToInt(intBitsToFloat(0x3da22222) * intBitsToFloat(PS1i));
R13i.w = PV1i.y - R127i.x;
PV0i.w = R13i.w;
PS0i = floatBitsToInt(uf_blockPS6[53].y/resScale);
PS0i = floatBitsToInt(intBitsToFloat(PS0i) / 2.0);
// 3
R6i.x = floatBitsToInt(uf_blockPS6[53].x/resScale);
R6i.x = floatBitsToInt(intBitsToFloat(R6i.x) / 2.0);
PV1i.y = PV0i.w << 0x00000002;
R6i.z = floatBitsToInt(-(intBitsToFloat(PS0i)));
R2i.w = PS0i;
PS1i = floatBitsToInt(float(PV0i.w));
// 4
R0i.x = PV1i.y + 0x0000002b;
R0i.y = PV1i.y + 0x0000002d;
R0i.z = PV1i.y + 0x0000002a;
R0i.w = PV1i.y + 0x0000002c;
R7i.z = floatBitsToInt(roundEven(intBitsToFloat(PS1i)));
PS0i = R7i.z;
// 5
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R1i.x),intBitsToFloat(R1i.z),intBitsToFloat(R1i.w),-0.0),vec4(intBitsToFloat(R1i.x),intBitsToFloat(R1i.z),intBitsToFloat(R1i.w),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R1i.y = tempi.x;
R8i.z = PS0i;
PS1i = R8i.z;
}
if( activeMaskStackC[2] == true ) {
R3i.xyzw = floatBitsToInt(uf_blockPS1[R0i.y].xyzw);
R4i.xyzw = floatBitsToInt(uf_blockPS1[R0i.w].xyzw);
R5i.xyzw = floatBitsToInt(uf_blockPS1[R0i.z].xyzw);
R0i.xyzw = floatBitsToInt(uf_blockPS1[R0i.x].xyzw);
}
if( activeMaskStackC[2] == true ) {
// 0
R126i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R8i.x),intBitsToFloat(R7i.y),intBitsToFloat(R9i.z),intBitsToFloat(R9i.z)),vec4(-(intBitsToFloat(R9i.x)),-(intBitsToFloat(R9i.y)),-(intBitsToFloat(R10i.z)),-(intBitsToFloat(R7i.w)))));
R126i.x = clampFI32(R126i.x);
PV0i.x = R126i.x;
PV0i.y = R126i.x;
PV0i.z = R126i.x;
PV0i.w = R126i.x;
tempResultf = 1.0 / sqrt(intBitsToFloat(R1i.y));
PS0i = floatBitsToInt(tempResultf);
// 1
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.x), intBitsToFloat(PS0i)));
PV1i.x = R127i.x;
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(PS0i)));
PV1i.y = R127i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.w), intBitsToFloat(PS0i)));
PV1i.z = R127i.z;
R126i.w = floatBitsToInt(-(intBitsToFloat(R6i.x)));
R1i.z = R7i.z;
PS1i = R1i.z;
// 2
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R9i.x),intBitsToFloat(R9i.y),intBitsToFloat(R10i.z),-0.0),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(PV1i.y),intBitsToFloat(PV1i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R9i.z = R7i.z;
PS0i = R9i.z;
// 3
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(PV0i.x)) + 1.0));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R9i.x)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.x)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R10i.z)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.z)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R9i.y)),intBitsToFloat(PV0i.x)) + intBitsToFloat(R127i.y)));
PV1i.w = R123i.w;
// 4
backupReg0i = R126i.x;
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R2i.y)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(backupReg0i)));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(R2i.x)));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(R2i.z)));
// 5
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R8i.y), intBitsToFloat(PV0i.y)));
// 6
backupReg0i = R6i.y;
R16i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(PV1i.z)) + intBitsToFloat(R7i.x)));
PV0i.x = R16i.x;
R6i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.x),intBitsToFloat(PV1i.z)) + intBitsToFloat(backupReg0i)));
R10i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.w),intBitsToFloat(PV1i.z)) + intBitsToFloat(R12i.z)));
// 7
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R4i.x)));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R5i.x)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R3i.x)));
// 8
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R3i.y)) + intBitsToFloat(PV1i.z)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R4i.y)) + intBitsToFloat(PV1i.x)));
PV0i.y = R123i.y;
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.x), intBitsToFloat(R0i.x)));
// 9
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R5i.y)) + intBitsToFloat(R127i.y)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R4i.z)) + intBitsToFloat(PV0i.y)));
PV1i.y = R123i.y;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R3i.z)) + intBitsToFloat(PV0i.x)));
PV1i.w = R123i.w;
// 10
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R0i.y)) + intBitsToFloat(R127i.z)));
PV0i.x = R123i.x;
PV0i.y = floatBitsToInt(intBitsToFloat(R3i.w) + intBitsToFloat(PV1i.w));
R127i.z = floatBitsToInt(intBitsToFloat(R4i.w) + intBitsToFloat(PV1i.y));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R5i.z)) + intBitsToFloat(PV1i.x)));
PV0i.w = R123i.w;
// 11
PV1i.y = floatBitsToInt(intBitsToFloat(R5i.w) + intBitsToFloat(PV0i.w));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R0i.z)) + intBitsToFloat(PV0i.x)));
PV1i.w = R123i.w;
R126i.z = floatBitsToInt(1.0 / intBitsToFloat(PV0i.y));
PS1i = R126i.z;
// 12
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS1i)));
PV0i.y = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(PV1i.w));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(PS1i)));
PV0i.z = R127i.z;
// 13
R7i.x = floatBitsToInt((uf_blockPS6[53].x / resScale * 0.5 + intBitsToFloat(PV0i.z)));
R127i.y = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(0xbb03126f));
R127i.y = clampFI32(R127i.y);
PV1i.y = R127i.y;
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(R126i.z)));
PV1i.w = R127i.w;
R8i.x = floatBitsToInt(intBitsToFloat(PV0i.z) + intBitsToFloat(R6i.x));
PS1i = R8i.x;
// 14
R1i.x = floatBitsToInt(intBitsToFloat(R127i.z) + intBitsToFloat(R126i.w));
R7i.y = floatBitsToInt((uf_blockPS6[53].y / resScale * 0.5 + intBitsToFloat(PV1i.w)));
R7i.w = PV1i.y;
R8i.y = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(R6i.z));
PS0i = R8i.y;
// 15
R9i.x = floatBitsToInt((-(uf_blockPS6[53].x) / resScale * 0.5 + intBitsToFloat(R127i.z)));
R1i.y = floatBitsToInt(intBitsToFloat(R127i.w) + intBitsToFloat(R2i.w));
R8i.w = R127i.y;
R1i.w = R127i.y;
PS1i = R1i.w;
// 16
R9i.y = floatBitsToInt((-(uf_blockPS6[53].y) / resScale * 0.5 + intBitsToFloat(R127i.w)));
R9i.w = R127i.y;
}
if( activeMaskStackC[2] == true ) {
R7i.z = floatBitsToInt(texture(textureUnitPS8, vec4(intBitsToFloat(R7i.x),intBitsToFloat(R7i.y),intBitsToFloat(R7i.z),intBitsToFloat(R7i.w))));
R8i.y = floatBitsToInt(texture(textureUnitPS8, vec4(intBitsToFloat(R8i.x),intBitsToFloat(R8i.y),intBitsToFloat(R8i.z),intBitsToFloat(R8i.w))));
R1i.x = floatBitsToInt(texture(textureUnitPS8, vec4(intBitsToFloat(R1i.x),intBitsToFloat(R1i.y),intBitsToFloat(R1i.z),intBitsToFloat(R1i.w))));
R9i.w = floatBitsToInt(texture(textureUnitPS8, vec4(intBitsToFloat(R9i.x),intBitsToFloat(R9i.y),intBitsToFloat(R9i.z),intBitsToFloat(R9i.w))));
}
if( activeMaskStackC[2] == true ) {
activeMaskStack[2] = activeMaskStack[1];
activeMaskStackC[3] = activeMaskStackC[2];
// 0
PV0i.w = floatBitsToInt(intBitsToFloat(R7i.z) + intBitsToFloat(R8i.y));
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) / 2.0);
// 1
R123i.z = floatBitsToInt((intBitsToFloat(R1i.x) * 0.5 + intBitsToFloat(PV0i.w)));
PV1i.z = R123i.z;
// 2
R5i.w = floatBitsToInt((intBitsToFloat(R9i.w) * 0.5 + intBitsToFloat(PV1i.z))/2.0);
PV0i.w = R5i.w;
// 3
PV1i.x = ((1.0 > intBitsToFloat(PV0i.w))?int(0xFFFFFFFF):int(0x0));
// 4
R0i.y = ((R13i.w > 0)?(PV1i.x):(0));
// 5
predResult = (R0i.y != 0);
activeMaskStack[2] = predResult;
activeMaskStackC[3] = predResult == true && activeMaskStackC[2] == true;
}
else {
activeMaskStack[2] = false;
activeMaskStackC[3] = false;
}
if( activeMaskStackC[3] == true ) {
// 0
PV0i.x = int(-1) + R13i.w;
// 1
PV1i.w = PV0i.x << 0x00000002;
PS1i = floatBitsToInt(float(PV0i.x));
// 2
R0i.x = PV1i.w + 0x0000002c;
R0i.y = PV1i.w + 0x0000002b;
R0i.z = PV1i.w + 0x0000002a;
R0i.w = PV1i.w + 0x0000002d;
R4i.z = floatBitsToInt(roundEven(intBitsToFloat(PS1i)));
PS0i = R4i.z;
}
if( activeMaskStackC[3] == true ) {
R1i.xyzw = floatBitsToInt(uf_blockPS1[R0i.w].xyzw);
R2i.xyzw = floatBitsToInt(uf_blockPS1[R0i.x].xyzw);
R3i.xyzw = floatBitsToInt(uf_blockPS1[R0i.z].xyzw);
R0i.xyzw = floatBitsToInt(uf_blockPS1[R0i.y].xyzw);
}
if( activeMaskStackC[3] == true ) {
// 0
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.x), intBitsToFloat(R2i.x)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.x), intBitsToFloat(R1i.x)));
// 1
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R2i.y)) + intBitsToFloat(PV0i.x)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R1i.y)) + intBitsToFloat(PV0i.z)));
PV1i.y = R123i.y;
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.x), intBitsToFloat(R3i.x)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R16i.x), intBitsToFloat(R0i.x)));
// 2
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R1i.z)) + intBitsToFloat(PV1i.y)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R3i.y)) + intBitsToFloat(PV1i.z)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),intBitsToFloat(R0i.y)) + intBitsToFloat(PV1i.w)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R2i.z)) + intBitsToFloat(PV1i.x)));
PV0i.w = R123i.w;
// 3
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R3i.z)) + intBitsToFloat(PV0i.y)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R10i.z),intBitsToFloat(R0i.z)) + intBitsToFloat(PV0i.z)));
PV1i.y = R123i.y;
R127i.z = floatBitsToInt(intBitsToFloat(R2i.w) + intBitsToFloat(PV0i.w));
PV1i.w = floatBitsToInt(intBitsToFloat(R1i.w) + intBitsToFloat(PV0i.x));
// 4
PV0i.x = floatBitsToInt(intBitsToFloat(R0i.w) + intBitsToFloat(PV1i.y));
PV0i.w = floatBitsToInt(intBitsToFloat(R3i.w) + intBitsToFloat(PV1i.x));
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PV1i.w));
// 5
R4i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(PS0i)));
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(PS0i)));
R4i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PS0i)));
PS1i = R4i.y;
// 6
R4i.w = floatBitsToInt(intBitsToFloat(PV1i.y) + intBitsToFloat(0xbb03126f));
R4i.w = clampFI32(R4i.w);
}
if( activeMaskStackC[3] == true ) {
R4i.z = floatBitsToInt(texture(textureUnitPS8, vec4(intBitsToFloat(R4i.x),intBitsToFloat(R4i.y),intBitsToFloat(R4i.z),intBitsToFloat(R4i.w))));
}
if( activeMaskStackC[3] == true ) {
// 0
backupReg0i = R5i.w;
R5i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R4i.z)));
}
activeMaskStackC[2] = activeMaskStack[1] == true && activeMaskStackC[1] == true;
if( activeMaskStackC[2] == true ) {
R0i.x = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R14i.xy)).x);
R0i.y = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R15i.xy)).x);
R1i.x = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R12i.xy)).x);
R1i.y = floatBitsToInt(texture(textureUnitPS6, intBitsToFloat(R13i.xy)).x);
}
if( activeMaskStackC[2] == true ) {
// 0
R127i.x = floatBitsToInt(intBitsToFloat(R6i.w) * intBitsToFloat(0x3f7eb852));
PV0i.x = R127i.x;
PV0i.y = floatBitsToInt(uf_blockPS1[16].x * intBitsToFloat(0x41a00000));
R124i.z = floatBitsToInt(-(intBitsToFloat(R5i.w)) + 1.0);
R127i.w = floatBitsToInt(uf_blockPS1[16].x * intBitsToFloat(0x3f555555));
// 1
backupReg0i = R0i.x;
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.x) + -(intBitsToFloat(R0i.y)));
PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.x) + -(intBitsToFloat(backupReg0i)));
R127i.z = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x3f8ba8d6));
R127i.z = floatBitsToInt(intBitsToFloat(R127i.z) / 2.0);
PV1i.w = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x3fbc4580));
PV1i.w = floatBitsToInt(intBitsToFloat(PV1i.w) / 2.0);
R126i.z = floatBitsToInt(-(intBitsToFloat(R1i.x)) + intBitsToFloat(PV0i.x));
PS1i = R126i.z;
// 2
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.w)),intBitsToFloat(PV1i.y)) + 1.0));
R127i.x = clampFI32(R127i.x);
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.w),intBitsToFloat(PV1i.x)) + 0.5));
R127i.y = clampFI32(R127i.y);
PV0i.y = R127i.y;
R125i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.w),intBitsToFloat(PV1i.y)) + 0.5));
R125i.z = clampFI32(R125i.z);
PV0i.z = R125i.z;
R126i.w = floatBitsToInt(-(intBitsToFloat(R1i.y)) + intBitsToFloat(backupReg0i));
PV0i.w = R126i.w;
R125i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.w)),intBitsToFloat(PV1i.x)) + 1.0));
R125i.w = clampFI32(R125i.w);
PS0i = R125i.w;
// 3
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R126i.z)) + 0.5));
R126i.x = clampFI32(R126i.x);
PV1i.x = R126i.x;
PV1i.y = floatBitsToInt(0.5 + -(intBitsToFloat(PV0i.y)));
PV1i.z = floatBitsToInt(0.5 + -(intBitsToFloat(PV0i.z)));
R124i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(PV0i.w)) + 0.5));
R124i.w = clampFI32(R124i.w);
PV1i.w = R124i.w;
R0i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.w)),intBitsToFloat(R126i.z)) + 1.0));
R0i.w = clampFI32(R0i.w);
PS1i = R0i.w;
// 4
backupReg0i = R127i.w;
PV0i.x = floatBitsToInt(0.5 + -(intBitsToFloat(PV1i.x)));
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(R127i.x)) + 0.5));
PV0i.y = R126i.y;
PV0i.z = floatBitsToInt(0.5 + -(intBitsToFloat(PV1i.w)));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(R125i.w)) + 0.5));
PV0i.w = R127i.w;
R125i.y = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(R126i.w)) + 1.0));
R125i.y = clampFI32(R125i.y);
PS0i = R125i.y;
// 5
PV1i.x = floatBitsToInt(intBitsToFloat(R127i.y) + -(intBitsToFloat(PV0i.y)));
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(PS0i)) + 0.5));
PV1i.y = R127i.y;
PV1i.z = floatBitsToInt(intBitsToFloat(R125i.z) + -(intBitsToFloat(PV0i.w)));
R126i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),intBitsToFloat(R0i.w)) + 0.5));
PV1i.w = R126i.w;
R3i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R124i.z),intBitsToFloat(R10i.w)) + intBitsToFloat(R5i.w)));
PS1i = R3i.w;
// 6
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),intBitsToFloat(R127i.x)) + intBitsToFloat(R127i.w)));
PV0i.x = R123i.x;
PV0i.y = floatBitsToInt(intBitsToFloat(R126i.x) + -(intBitsToFloat(PV1i.y)));
PV0i.z = floatBitsToInt(intBitsToFloat(R124i.w) + -(intBitsToFloat(PV1i.w)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.x),intBitsToFloat(R125i.w)) + intBitsToFloat(R126i.y)));
PV0i.w = R123i.w;
// 7
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.x) * intBitsToFloat(0x3e35e743));
PV1i.y = floatBitsToInt(intBitsToFloat(PV0i.w) * intBitsToFloat(0x3e35e743));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.z),intBitsToFloat(R125i.y)) + intBitsToFloat(R126i.w)));
PV1i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(R0i.w)) + intBitsToFloat(R127i.y)));
PV1i.w = R123i.w;
// 8
R123i.x = floatBitsToInt((intBitsToFloat(PV1i.w) * intBitsToFloat(0x3e825397) + intBitsToFloat(PV1i.x)));
PV0i.x = R123i.x;
R123i.w = floatBitsToInt((intBitsToFloat(PV1i.z) * intBitsToFloat(0x3e825397) + intBitsToFloat(PV1i.y)));
PV0i.w = R123i.w;
// 9
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(PV0i.w));
// 10
PV0i.y = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(0xbedd476b));
// 11
PV1i.x = floatBitsToInt(intBitsToFloat(PV0i.y) * intBitsToFloat(0x40c00000));
PV1i.x = clampFI32(PV1i.x);
// 12
R1i.w = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + 1.0);
}
activeMaskStack[1] = activeMaskStack[1] == false;
activeMaskStackC[2] = activeMaskStack[1] == true && activeMaskStackC[1] == true;
if( activeMaskStackC[2] == true ) {
// 0
R3i.w = R1i.w;
}
activeMaskStackC[1] = activeMaskStack[0] == true && activeMaskStackC[0] == true;
if( activeMaskStackC[1] == true ) {
// 0
R0i.x = floatBitsToInt((intBitsToFloat(R10i.x) * intBitsToFloat(0x38d1b717) + 0.5));
R0i.y = floatBitsToInt((intBitsToFloat(R11i.z) * intBitsToFloat(0x3903126f) + 0.5));
PV0i.z = floatBitsToInt(-(intBitsToFloat(R10i.y)));
PV0i.z = floatBitsToInt(intBitsToFloat(PV0i.z) / 2.0);
PV0i.w = R11i.x;
PV0i.w = floatBitsToInt(intBitsToFloat(PV0i.w) / 2.0);
R2i.z = R1i.w;
PS0i = R2i.z;
// 1
R1i.x = floatBitsToInt(intBitsToFloat(PV0i.w) + 0.5);
R1i.y = floatBitsToInt(intBitsToFloat(PV0i.z) + 0.5);
R2i.w = 0x3f800000;
}
if( activeMaskStackC[1] == true ) {
R0i.xyz = floatBitsToInt(textureLod(textureUnitPS15, intBitsToFloat(R0i.xy),0.0).xyz);
R1i.y = floatBitsToInt(textureLod(textureUnitPS1, intBitsToFloat(R1i.xy),0.0).x);
}
if( activeMaskStackC[1] == true ) {
// 0
backupReg0i = R0i.x;
backupReg1i = R0i.y;
backupReg2i = R0i.z;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(backupReg0i),intBitsToFloat(backupReg1i),intBitsToFloat(backupReg2i),-0.0),vec4(uf_blockPS6[42].x,uf_blockPS6[42].y,uf_blockPS6[42].z,0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R2i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),-(intBitsToFloat(R11i.w))) + intBitsToFloat(R1i.y)));
PS0i = R2i.y;
// 1
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
// 2
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(PV1i.w)));
PV0i.z = R127i.z;
// 3
PV1i.y = floatBitsToInt(intBitsToFloat(R3i.w) + -(intBitsToFloat(PV0i.z)));
// 4
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),intBitsToFloat(R12i.w)) + intBitsToFloat(R127i.z)));
PV0i.x = R123i.x;
// 5
R2i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.x),uf_blockPS10[3].z) + uf_blockPS10[1].y));
R2i.x = clampFI32(R2i.x);
}
// export
passPixelColor5 = vec4(intBitsToFloat(R2i.x), intBitsToFloat(R2i.y), intBitsToFloat(R2i.z), intBitsToFloat(R2i.w));
}

View File

@ -0,0 +1,168 @@
[BotW_AspectRatio_Shared]
moduleMatches = 0xD91A406D,0x0F748D9C,0x9A61FF4C,0x8E3324A9,0xD71D859D,0x6FD41A61,0x9A2CA0C7,0x29DBB52A,0xFD091F9F,0xD472D8A5,0x6267BFD0
.origin = codecave
aspectRatio:
.float $width/$height
[BotW_AspectRatio_V33]
moduleMatches = 0xD91A406D
; rodata constants
0x10197FC0 = .float $width/$height
0x102CCFC0 = .float $width/$height
0x10331374 = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02CFC260 = lis r9, aspectRatio@ha
0x02CFC274 = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x036AD410 = lis r28, aspectRatio@ha
0x036AD414 = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V48]
moduleMatches = 0x0F748D9C
; rodata constants
0x10197FC0 = .float $width/$height
0x102CCFC8 = .float $width/$height
0x103313A4 = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02CFC2CC = lis r9, aspectRatio@ha
0x02CFC2E0 = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x036AD81C = lis r28, aspectRatio@ha
0x036AD820 = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V64]
moduleMatches = 0x9A61FF4C
; rodata constants
0x10198250 = .float $width/$height
0x102CD450 = .float $width/$height
0x1033182C = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02CFD900 = lis r9, aspectRatio@ha
0x02CFD914 = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x036AEF04 = lis r28, aspectRatio@ha
0x036AEF08 = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V80]
moduleMatches = 0x8E3324A9
; rodata constants
0x1019A5A8 = .float $width/$height
0x102D4E30 = .float $width/$height
0x103391B4 = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02D056C8 = lis r9, aspectRatio@ha
0x02D056DC = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x036D0324 = lis r28, aspectRatio@ha
0x036D0328 = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V97]
moduleMatches = 0xD71D859D
; rodata constants
0x1019F980 = .float $width/$height
0x102DF8A0 = .float $width/$height
0x1034122C = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02D2E65C = lis r9, aspectRatio@ha
0x02D2E670 = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x03725CE8 = lis r28, aspectRatio@ha
0x03725CEC = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V112]
moduleMatches = 0x6FD41A61
; rodata constants
0x1019F9A8 = .float $width/$height
0x102DFB38 = .float $width/$height
0x103414D4 = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02D2F404 = lis r9, aspectRatio@ha
0x02D2F418 = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x03726E18 = lis r28, aspectRatio@ha
0x03726E1C = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V144]
moduleMatches = 0x9A2CA0C7
; rodata constants
0x101A8A70 = .float $width/$height
0x102ECFD0 = .float $width/$height
0x1034F6CC = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02D53CF4 = lis r9, aspectRatio@ha
0x02D53D08 = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x0375B128 = lis r28, aspectRatio@ha
0x0375B12C = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V160]
moduleMatches = 0x9A2CA0C7
; rodata constants
0x101A8A70 = .float $width/$height
0x102ECF88 = .float $width/$height
0x1034F684 = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02D53CF4 = lis r9, aspectRatio@ha
0x02D53D08 = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x0375AFF4 = lis r28, aspectRatio@ha
0x0375AFF8 = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V176V192]
moduleMatches = 0xFD091F9F,0xD472D8A5
; rodata constants
0x101BF878 = .float $width/$height
0x1030A3F4 = .float $width/$height
0x1036DBDC = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02E2BFC8 = lis r9, aspectRatio@ha
0x02E2BFDC = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x0386C314 = lis r28, aspectRatio@ha
0x0386C318 = lfs f12, aspectRatio@l(r28)
[BotW_AspectRatio_V208]
moduleMatches = 0x6267BFD0
; rodata constants
0x101BF8E8 = .float $width/$height
0x1030A57C = .float $width/$height
0x1036DD4C = .float $width/$height
; 3D Rendering In Inventory (calculated every load)
0x02E2C564 = lis r9, aspectRatio@ha
0x02E2C578 = lfs f4, aspectRatio@l(r9)
; 3D Rendering (calculated every frame)
0x0386D01C = lis r28, aspectRatio@ha
0x0386D020 = lfs f12, aspectRatio@l(r28)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,5 @@
[BotW_CameraSensivity_V208]
moduleMatches = 0x6267BFD0
0x102164C0 = .float ($sensitivity*-1)
0x101B3280 = .float (2*$movementSensitivity)+1

View File

@ -0,0 +1,131 @@
[Definition]
titleIds = 00050000101C9400,00050000101C9500
path = "The Legend of Zelda: Breath of the Wild/Mods/Camera Sensitivity"
description = Changes the sensitivity of the camera.|On top of the normal sensitivity you can apply additional sensitivity while moving.||Made by FakeMichau and theboy181.
version = 6
[Default]
$sensitivity = 1.00
$movementSensitivity = 1.00
[Preset]
name = 0.5x
category = Camera Sensitivity
$sensitivity = 0.50
[Preset]
name = 0.75x
category = Camera Sensitivity
$sensitivity = 0.9
[Preset]
name = 0.9x
category = Camera Sensitivity
$sensitivity = 0.9
[Preset]
name = 1x (Default)
category = Camera Sensitivity
default = 1
[Preset]
name = 1.1x
category = Camera Sensitivity
$sensitivity = 1.10
[Preset]
name = 1.25x
category = Camera Sensitivity
$sensitivity = 1.25
[Preset]
name = 1.4x (Recommended)
category = Camera Sensitivity
$sensitivity = 1.40
[Preset]
name = 1.5x
category = Camera Sensitivity
$sensitivity = 1.50
[Preset]
name = 1.75x
category = Camera Sensitivity
$sensitivity = 1.75
[Preset]
name = 2x
category = Camera Sensitivity
$sensitivity = 2.00
[Preset]
name = 2.5x
category = Camera Sensitivity
$sensitivity = 2.50
[Preset]
name = 3x
category = Camera Sensitivity
$sensitivity = 3.00
[Preset]
name = 0.5x
category = Additional Movement Sensitivity
$movementSensitivity = 0.5
[Preset]
name = 0.75x
category = Additional Movement Sensitivity
$movementSensitivity = 0.75
[Preset]
name = 0.9x
category = Additional Movement Sensitivity
$movementSensitivity = 0.9
[Preset]
name = 1x (Default)
category = Additional Movement Sensitivity
default = 1
[Preset]
name = 1.1x
category = Additional Movement Sensitivity
$movementSensitivity = 1.10
[Preset]
name = 1.15x (Recommended)
category = Additional Movement Sensitivity
$movementSensitivity = 1.15
[Preset]
name = 1.25x
category = Additional Movement Sensitivity
$movementSensitivity = 1.25
[Preset]
name = 1.35x
category = Additional Movement Sensitivity
$movementSensitivity = 1.35
[Preset]
name = 1.5x
category = Additional Movement Sensitivity
$movementSensitivity = 1.50
[Preset]
name = 2x
category = Additional Movement Sensitivity
$movementSensitivity = 2.00
[Preset]
name = 2.5x
category = Additional Movement Sensitivity
$movementSensitivity = 2.50
[Preset]
name = 3x
category = Additional Movement Sensitivity
$movementSensitivity = 3.00

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,116 @@
#version 420
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
#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 shaders was auto-converted from OpenGL to Cemu.
Conversion output:
*/
// shader 2f7ecb9f0022d8ca -- Pixel shader for Links Cel Shading World & Menu - Texture format 0x005d
#define mode $mode
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
layout(location = 0) in vec4 passParameterSem0;
#ifdef VULKAN
layout(set = 1, binding = 1) uniform ufBlock
{
uniform vec4 uf_fragCoordScale;
};
#else
uniform vec2 uf_fragCoordScale;
#endif
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 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); // comes from 3 vertex shaders, one of them handles the lighting that glitches the sky(314b77349f0636db), so lets exclude it
if (passParameterSem0.w == 4.0)
{
R0i.w = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R0i.xy)).x);
// 0
PV0i.x = floatBitsToInt(intBitsToFloat(R0i.w) * intBitsToFloat(0x437f0000));
R127i.y = int(uint(intBitsToFloat(R0i.z)));
PS0i = R127i.y;
// 1
if ( mode > 1) // if mode is greater than 1 then run our own code
{
// very interesting - Replace PS1i(which is integer) with any of these numbers, there are like 4 diff modes that repeat through diff integers, [4,6,7,8,10,11] [-5 -9 -10 -12 -18 -19 -25 -26 -28 -34 -40 -41 -42]
PS1i = int(mode);
}
else
{
PS1i = int(uint(intBitsToFloat(PV0i.x))); // orignal code
}
// 2
PV0i.z = R127i.y & PS1i;
// 3
PS1i = floatBitsToInt(float(uint(PV0i.z)));
// 4
R0i.x = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x3b808081));
}
else
{
R0i.w = floatBitsToInt(texture(textureUnitPS0, intBitsToFloat(R0i.xy)).x);
// 0
PV0i.x = floatBitsToInt(intBitsToFloat(R0i.w) * intBitsToFloat(0x437f0000));
R127i.y = int(uint(intBitsToFloat(R0i.z)));
PS0i = R127i.y;
// 1
PS1i = int(uint(intBitsToFloat(PV0i.x))); // orignal code
// 2
PV0i.z = R127i.y & PS1i;
// 3
PS1i = floatBitsToInt(float(uint(PV0i.z)));
// 4
R0i.x = floatBitsToInt(intBitsToFloat(PS1i) * intBitsToFloat(0x3b808081));
}
// export
gl_FragDepth = vec4(intBitsToFloat(R0i.x), 0, 0, 0).x;
}

View File

@ -0,0 +1,114 @@
#version 420
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
#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 shaders was auto-converted from OpenGL to Cemu.
Conversion output:
*/
// shader 314b77345f06369b -- Vertex shader for Links Cel Shading - Texture format 0x005d
#ifdef VULKAN
layout(set = 0, binding = 1) uniform ufBlock
{
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
TEXTURE_LAYOUT(32, 0, 0) uniform sampler2D textureUnitVS0;
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem0;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R3i = ivec4(0);
ivec4 R127i = ivec4(0);
uvec4 attrDecoder;
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
int PS0i = 0, PS1i = 0;
ivec4 tempi = ivec4(0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = ivec4(gl_VertexID, 0, 0, gl_InstanceID);
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), floatBitsToInt(1.0));
attrDecoder.xy = attrDataSem1.xy;
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
attrDecoder.z = 0;
attrDecoder.w = 0;
R2i = ivec4(int(attrDecoder.x), int(attrDecoder.y), floatBitsToInt(0.0), floatBitsToInt(1.0));
// 0
backupReg0i = R1i.x;
backupReg1i = R1i.y;
R1i.x = backupReg0i;
R1i.x = floatBitsToInt(intBitsToFloat(R1i.x) * 2.0);
R1i.y = backupReg1i;
R1i.y = floatBitsToInt(intBitsToFloat(R1i.y) * 2.0);
R1i.z = 0x3f800000;
R0i.w = 0;
R3i.z = floatBitsToInt(intBitsToFloat(uf_remappedVS[0].x) * intBitsToFloat(0x437f0000));
PS0i = R3i.z;
R0i.xy = ivec4(textureSize(textureUnitVS0, 0),1,1).xy;
// export
SET_POSITION(vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.z)));
// 0
R127i.z = floatBitsToInt(float(R0i.x));
PS0i = R127i.z;
// 1
R127i.y = floatBitsToInt(float(R0i.y));
PS1i = R127i.y;
// 2
PS0i = floatBitsToInt(1.0 / intBitsToFloat(R127i.z));
// 3
R3i.x = floatBitsToInt((-(intBitsToFloat(PS0i)) * intBitsToFloat(0x3c23d70a) + intBitsToFloat(R2i.x)));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(R127i.y));
// 4
R3i.y = floatBitsToInt((-(intBitsToFloat(PS1i)) * intBitsToFloat(0x3c23d70a) + intBitsToFloat(R2i.y)));
// export
passParameterSem0 = vec4(intBitsToFloat(R3i.x), intBitsToFloat(R3i.y), intBitsToFloat(R3i.z), 4.0); // we change R3i.w to 4 and send to to FS to catch it
// Multiplying xy by 200 minimizes the overlay and removes cel-shading, and multiplying z by 2 makes light shading
}

View File

@ -0,0 +1,112 @@
#version 420
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
#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 shaders was auto-converted from OpenGL to Cemu.
Conversion output:
*/
// shader 314b77349f0636db -- Vertex Shader -- Lights up Cel-Shade Link and NPCs but also messes up the sky in the new methods
#ifdef VULKAN
layout(set = 0, binding = 1) uniform ufBlock
{
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
TEXTURE_LAYOUT(32, 0, 0) uniform sampler2D textureUnitVS0;
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem0;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R3i = ivec4(0);
ivec4 R127i = ivec4(0);
uvec4 attrDecoder;
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
int PS0i = 0, PS1i = 0;
ivec4 tempi = ivec4(0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = ivec4(gl_VertexID, 0, 0, gl_InstanceID);
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), floatBitsToInt(1.0));
attrDecoder.xy = attrDataSem1.xy;
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
attrDecoder.z = 0;
attrDecoder.w = 0;
R2i = ivec4(int(attrDecoder.x), int(attrDecoder.y), floatBitsToInt(0.0), floatBitsToInt(1.0));
// 0
backupReg0i = R1i.x;
backupReg1i = R1i.y;
R1i.x = backupReg0i;
R1i.x = floatBitsToInt(intBitsToFloat(R1i.x) * 2.0);
R1i.y = backupReg1i;
R1i.y = floatBitsToInt(intBitsToFloat(R1i.y) * 2.0);
R1i.z = 0x3f800000;
R0i.w = 0;
R3i.z = floatBitsToInt(intBitsToFloat(uf_remappedVS[0].y) * intBitsToFloat(0x437f0000));
PS0i = R3i.z;
R0i.xy = ivec4(textureSize(textureUnitVS0, 0),1,1).xy;
// export
SET_POSITION(vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.z)));
// 0
R127i.z = floatBitsToInt(float(R0i.x));
PS0i = R127i.z;
// 1
R127i.y = floatBitsToInt(float(R0i.y));
PS1i = R127i.y;
// 2
PS0i = floatBitsToInt(1.0 / intBitsToFloat(R127i.z));
// 3
R3i.x = floatBitsToInt((-(intBitsToFloat(PS0i)) * intBitsToFloat(0x3c23d70a) + intBitsToFloat(R2i.x)));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(R127i.y));
// 4
R3i.y = floatBitsToInt((-(intBitsToFloat(PS1i)) * intBitsToFloat(0x3c23d70a) + intBitsToFloat(R2i.y)));
// export
passParameterSem0 = vec4(intBitsToFloat(R3i.x), intBitsToFloat(R3i.y), intBitsToFloat(R3i.z), intBitsToFloat(R3i.z)); // propety w is not set to 4.0 so it wont get processed the same way as the other 2 vertex shader
}

View File

@ -0,0 +1,118 @@
#version 420
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
#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 shaders was auto-converted from OpenGL to Cemu.
Conversion output:
*/
// shader 314b7734df06371b -- Vertex Shader for Water/Magma and etc, one of the 3 vertex shaders involved with cel-shade removal
#ifdef VULKAN
layout(set = 0, binding = 1) uniform ufBlock
{
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[1];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
TEXTURE_LAYOUT(32, 0, 0) uniform sampler2D textureUnitVS0;
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem0;
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R3i = ivec4(0);
ivec4 R127i = ivec4(0);
uvec4 attrDecoder;
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
int PS0i = 0, PS1i = 0;
ivec4 tempi = ivec4(0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = ivec4(gl_VertexID, 0, 0, gl_InstanceID);
attrDecoder.xyz = attrDataSem0.xyz;
attrDecoder.xyz = (attrDecoder.xyz>>24)|((attrDecoder.xyz>>8)&0xFF00)|((attrDecoder.xyz<<8)&0xFF0000)|((attrDecoder.xyz<<24));
attrDecoder.w = 0;
R1i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), floatBitsToInt(1.0));
attrDecoder.xy = attrDataSem1.xy;
attrDecoder.xy = (attrDecoder.xy>>24)|((attrDecoder.xy>>8)&0xFF00)|((attrDecoder.xy<<8)&0xFF0000)|((attrDecoder.xy<<24));
attrDecoder.z = 0;
attrDecoder.w = 0;
R2i = ivec4(int(attrDecoder.x), int(attrDecoder.y), floatBitsToInt(0.0), floatBitsToInt(1.0));
// 0
backupReg0i = R1i.x;
backupReg1i = R1i.y;
R1i.x = backupReg0i;
R1i.x = floatBitsToInt(intBitsToFloat(R1i.x) * 2.0);
R1i.y = backupReg1i;
R1i.y = floatBitsToInt(intBitsToFloat(R1i.y) * 2.0);
R1i.z = 0x3f800000;
R0i.w = 0;
R3i.z = floatBitsToInt(intBitsToFloat(uf_remappedVS[0].z) * intBitsToFloat(0x437f0000));
PS0i = R3i.z;
R0i.xy = ivec4(textureSize(textureUnitVS0, 0),1,1).xy;
// export
SET_POSITION(vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.z)));
// 0
R127i.z = floatBitsToInt(float(R0i.x));
PS0i = R127i.z;
// 1
R127i.y = floatBitsToInt(float(R0i.y));
PS1i = R127i.y;
// 2
PS0i = floatBitsToInt(1.0 / intBitsToFloat(R127i.z));
// 3
R3i.x = floatBitsToInt((-(intBitsToFloat(PS0i)) * intBitsToFloat(0x3c23d70a) + intBitsToFloat(R2i.x)));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(R127i.y));
// 4
R3i.y = floatBitsToInt((-(intBitsToFloat(PS1i)) * intBitsToFloat(0x3c23d70a) + intBitsToFloat(R2i.y)));
// export
passParameterSem0 = vec4(intBitsToFloat(R3i.x), intBitsToFloat(R3i.y), intBitsToFloat(R3i.z), 4.0);
}

View File

@ -0,0 +1,707 @@
#version 420
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
#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 shaders was auto-converted from OpenGL to Cemu.
Conversion output:
*/
// shader 8d24f32f18e6de47
#ifdef VULKAN
layout(set = 1, binding = 9) uniform ufBlock
{
uniform ivec4 uf_remappedPS[10];
uniform vec4 uf_fragCoordScale;
};
#else
uniform ivec4 uf_remappedPS[10];
uniform vec2 uf_fragCoordScale;
#endif
#define mode $mode
#define clarity $clarity
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 passParameterSem1;
layout(location = 2) in vec4 passParameterSem3;
layout(location = 3) in vec4 passParameterSem4;
layout(location = 4) in vec4 passParameterSem6;
layout(location = 0) out vec4 passPixelColor0;
// uf_fragCoordScale was moved to the ufBlock
void redcCUBE(vec4 src0, vec4 src1, out vec3 stm, out int faceId)
{
// stm -> x .. s, y .. t, z .. MajorAxis*2.0
vec3 inputCoord = normalize(vec3(src1.y, src1.x, src0.x));
float rx = inputCoord.x;
float ry = inputCoord.y;
float rz = inputCoord.z;
if( abs(rx) > abs(ry) && abs(rx) > abs(rz) )
{
stm.z = rx*2.0;
stm.xy = vec2(ry,rz);
if( rx >= 0.0 )
{
faceId = 0;
}
else
{
faceId = 1;
}
}
else if( abs(ry) > abs(rx) && abs(ry) > abs(rz) )
{
stm.z = ry*2.0;
stm.xy = vec2(rx,rz);
if( ry >= 0.0 )
{
faceId = 2;
}
else
{
faceId = 3;
}
}
else //if( abs(rz) > abs(ry) && abs(rz) > abs(rx) )
{
stm.z = rz*2.0;
stm.xy = vec2(rx,ry);
if( rz >= 0.0 )
{
faceId = 4;
}
else
{
faceId = 5;
}
}
}
vec3 redcCUBEReverse(vec2 st, int faceId)
{
st.yx = st.xy;
vec3 v;
float majorAxis = 1.0;
if( faceId == 0 )
{
v.yz = (st-vec2(1.5))*(majorAxis*2.0);
v.x = 1.0;
}
else if( faceId == 1 )
{
v.yz = (st-vec2(1.5))*(majorAxis*2.0);
v.x = -1.0;
}
else if( faceId == 2 )
{
v.xz = (st-vec2(1.5))*(majorAxis*2.0);
v.y = 1.0;
}
else if( faceId == 3 )
{
v.xz = (st-vec2(1.5))*(majorAxis*2.0);
v.y = -1.0;
}
else if( faceId == 4 )
{
v.xy = (st-vec2(1.5))*(majorAxis*2.0);
v.z = 1.0;
}
else
{
v.xy = (st-vec2(1.5))*(majorAxis*2.0);
v.z = -1.0;
}
return v;
}
int clampFI32(int v)
{
if( v == 0x7FFFFFFF )
return floatBitsToInt(1.0);
else if( v == 0xFFFFFFFF )
return floatBitsToInt(0.0);
return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0));
}
float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; }
void main()
{
ivec4 R0i = ivec4(0);
ivec4 R1i = ivec4(0);
ivec4 R2i = ivec4(0);
ivec4 R3i = ivec4(0);
ivec4 R4i = ivec4(0);
ivec4 R5i = ivec4(0);
ivec4 R6i = ivec4(0);
ivec4 R7i = ivec4(0);
ivec4 R8i = ivec4(0);
ivec4 R9i = ivec4(0);
ivec4 R10i = ivec4(0);
ivec4 R11i = ivec4(0);
ivec4 R12i = ivec4(0);
ivec4 R13i = ivec4(0);
ivec4 R122i = ivec4(0);
ivec4 R123i = ivec4(0);
ivec4 R124i = ivec4(0);
ivec4 R125i = ivec4(0);
ivec4 R126i = ivec4(0);
ivec4 R127i = ivec4(0);
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
int PS0i = 0, PS1i = 0;
ivec4 tempi = ivec4(0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
float cubeMapArrayIndex8 = 0.0;
R0i = floatBitsToInt(passParameterSem0);
R1i = floatBitsToInt(passParameterSem1);
R2i = floatBitsToInt(passParameterSem3);
R3i = floatBitsToInt(passParameterSem4);
R4i = floatBitsToInt(passParameterSem6);
R7i.xyzw = floatBitsToInt(texture(textureUnitPS2, intBitsToFloat(R4i.zw)).xyzw);
R2i.w = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R0i.xy)).x);
R5i.xyzw = floatBitsToInt(textureGather(textureUnitPS6, vec2(0.0001) + intBitsToFloat(R0i.xy)).xyzw);
R6i.xyzw = floatBitsToInt(textureGather(textureUnitPS7, vec2(0.0001) + intBitsToFloat(R0i.xy)).xyzw);
R8i.xyzw = floatBitsToInt(texture(textureUnitPS1, intBitsToFloat(R4i.zw)).xyzw);
// 0
R127i.x = floatBitsToInt((intBitsToFloat(R7i.x) * 2.0 + -(1.0)));
PV0i.x = R127i.x;
R127i.y = floatBitsToInt((intBitsToFloat(R7i.y) * 2.0 + -(1.0)));
PV0i.y = R127i.y;
R126i.z = floatBitsToInt((intBitsToFloat(R7i.z) * 2.0 + -(1.0)));
PV0i.z = R126i.z;
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.w),intBitsToFloat(uf_remappedPS[0].x)) + intBitsToFloat(uf_remappedPS[1].x)));
PV0i.w = R127i.w;
R127i.z = floatBitsToInt(-(intBitsToFloat(R2i.w)) + intBitsToFloat(R5i.x));
PS0i = R127i.z;
// 1
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R9i.z = floatBitsToInt(-(intBitsToFloat(PV0i.w)));
PS1i = R9i.z;
// 2
R11i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.z), -(intBitsToFloat(R127i.w))));
R11i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R0i.w), -(intBitsToFloat(R127i.w))));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(uf_remappedPS[2].y)));
R125i.w = floatBitsToInt(max(intBitsToFloat(R127i.z), -(intBitsToFloat(R127i.z))));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV1i.x));
R126i.y = floatBitsToInt(tempResultf);
PS0i = R126i.y;
// 3
R4i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PS0i)));
PV1i.x = R4i.x;
R4i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS0i)));
R127i.z = floatBitsToInt(-(intBitsToFloat(R2i.w)) + intBitsToFloat(R5i.y));
R126i.w = floatBitsToInt(-(intBitsToFloat(R2i.w)) + intBitsToFloat(R5i.z));
R127i.w = floatBitsToInt(1.0 / intBitsToFloat(PV0i.z));
R127i.w = floatBitsToInt(intBitsToFloat(R127i.w) * 2.0);
PS1i = R127i.w;
// 4
backupReg0i = R0i.x;
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R11i.x),intBitsToFloat(R11i.y),intBitsToFloat(R9i.z),-0.0),vec4(intBitsToFloat(R11i.x),intBitsToFloat(R11i.y),intBitsToFloat(R9i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R9i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.x),intBitsToFloat(PV1i.x)) + intBitsToFloat(backupReg0i)));
PS0i = R9i.x;
// 5
backupReg0i = R127i.z;
backupReg0i = R127i.z;
R126i.x = floatBitsToInt(-(intBitsToFloat(R2i.w)) + intBitsToFloat(R5i.w));
R9i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.y),intBitsToFloat(R4i.y)) + intBitsToFloat(R0i.y)));
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x), intBitsToFloat(R127i.w)));
R127i.w = floatBitsToInt(max(intBitsToFloat(backupReg0i), -(intBitsToFloat(backupReg0i))));
PS1i = floatBitsToInt(sqrt(intBitsToFloat(PV0i.x)));
// 6
R127i.x = floatBitsToInt(dot(vec4(intBitsToFloat(R7i.x),intBitsToFloat(R7i.y),intBitsToFloat(R7i.z),-0.0),vec4(intBitsToFloat(0x3eaaaaab),intBitsToFloat(0x3eaaaaab),intBitsToFloat(0x3eaaaaab),0.0)));
PV0i.x = R127i.x;
PV0i.y = R127i.x;
PV0i.z = R127i.x;
PV0i.w = R127i.x;
PS0i = floatBitsToInt(1.0 / intBitsToFloat(PS1i));
// 7
R5i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R11i.x), intBitsToFloat(PS0i)));
R12i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R11i.y), intBitsToFloat(PS0i)));
R11i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R9i.z), intBitsToFloat(PS0i)));
PV1i.w = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R6i.x));
R125i.x = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(R6i.y));
PS1i = R125i.x;
// 8
backupReg0i = R127i.x;
backupReg0i = R127i.x;
R127i.x = floatBitsToInt(max(intBitsToFloat(R126i.w), -(intBitsToFloat(R126i.w))));
PV0i.y = floatBitsToInt(-(intBitsToFloat(backupReg0i)) + intBitsToFloat(R6i.w));
R125i.z = floatBitsToInt(max(intBitsToFloat(R126i.x), -(intBitsToFloat(R126i.x))));
PV0i.w = floatBitsToInt(-(intBitsToFloat(backupReg0i)) + intBitsToFloat(R6i.z));
PS0i = floatBitsToInt(max(intBitsToFloat(PV1i.w), -(intBitsToFloat(PV1i.w))));
PS0i = floatBitsToInt(intBitsToFloat(PS0i) * 4.0);
// 9
backupReg0i = R126i.z;
PV1i.x = floatBitsToInt(max(intBitsToFloat(R125i.x), -(intBitsToFloat(R125i.x))));
PV1i.x = floatBitsToInt(intBitsToFloat(PV1i.x) * 4.0);
PV1i.y = floatBitsToInt(max(intBitsToFloat(PV0i.y), -(intBitsToFloat(PV0i.y))));
PV1i.y = floatBitsToInt(intBitsToFloat(PV1i.y) * 4.0);
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R125i.w)) + intBitsToFloat(PS0i)));
PV1i.w = floatBitsToInt(max(intBitsToFloat(PV0i.w), -(intBitsToFloat(PV0i.w))));
PV1i.w = floatBitsToInt(intBitsToFloat(PV1i.w) * 4.0);
R5i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(R126i.y)));
PS1i = R5i.z;
// 10
backupReg0i = R127i.z;
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R127i.w)) + intBitsToFloat(PV1i.x)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(R125i.z)) + intBitsToFloat(PV1i.y)));
PV0i.y = R123i.y;
R127i.z = floatBitsToInt(fract(intBitsToFloat(R3i.x)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(backupReg0i),intBitsToFloat(R127i.x)) + intBitsToFloat(PV1i.w)));
PV0i.w = R123i.w;
R125i.x = floatBitsToInt(fract(intBitsToFloat(R3i.y)));
PS0i = R125i.x;
// 11
R127i.x = floatBitsToInt(intBitsToFloat(R126i.z) + -(intBitsToFloat(PV0i.w)));
PV1i.x = R127i.x;
R126i.y = R4i.x;
R126i.y = floatBitsToInt(intBitsToFloat(R126i.y) * 2.0);
R126i.z = floatBitsToInt(-(intBitsToFloat(PV0i.x)) + intBitsToFloat(PV0i.y));
PV1i.z = R126i.z;
R127i.w = R4i.y;
R127i.w = floatBitsToInt(intBitsToFloat(R127i.w) * 2.0);
R125i.w = R5i.z;
R125i.w = floatBitsToInt(intBitsToFloat(R125i.w) * 2.0);
PS1i = R125i.w;
// 12
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R4i.y),intBitsToFloat(R5i.z),-0.0),vec4(intBitsToFloat(R5i.x),intBitsToFloat(R12i.y),intBitsToFloat(R11i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R127i.y = tempi.x;
PS0i = floatBitsToInt(intBitsToFloat(PV1i.z) + intBitsToFloat(PV1i.x));
// 13
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R126i.y)) + intBitsToFloat(R5i.x)));
PV1i.y = floatBitsToInt(intBitsToFloat(R126i.z) + -(intBitsToFloat(backupReg0i)));
R126i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R127i.w)) + intBitsToFloat(R12i.y)));
PV1i.w = floatBitsToInt(intBitsToFloat(PS0i) + intBitsToFloat(R127i.z));
PV1i.w = clampFI32(PV1i.w);
R125i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(PV0i.x)),intBitsToFloat(R125i.w)) + intBitsToFloat(R11i.z)));
PS1i = R125i.z;
// 14
R6i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.x),intBitsToFloat(R9i.x)) + intBitsToFloat(R1i.z)));
PV0i.y = floatBitsToInt(intBitsToFloat(PV1i.y) + intBitsToFloat(R125i.x));
PV0i.y = clampFI32(PV0i.y);
R10i.z = floatBitsToInt(roundEven(0.0));
PV0i.w = floatBitsToInt(-(intBitsToFloat(R127i.z)) + intBitsToFloat(PV1i.w));
R2i.w = floatBitsToInt((-(intBitsToFloat(R7i.w)) * intBitsToFloat(0x40400000) + intBitsToFloat(0x40400000)));
PS0i = R2i.w;
// 15
R10i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.z),intBitsToFloat(PV0i.w)) + intBitsToFloat(R0i.x)));
R5i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.y),intBitsToFloat(R9i.y)) + intBitsToFloat(R1i.w)));
R1i.z = floatBitsToInt(intBitsToFloat(R5i.x) + intBitsToFloat(uf_remappedPS[3].x));
PV1i.w = floatBitsToInt(-(intBitsToFloat(R125i.x)) + intBitsToFloat(PV0i.y));
R1i.y = floatBitsToInt(intBitsToFloat(R12i.y) + intBitsToFloat(uf_remappedPS[3].y));
PS1i = R1i.y;
// 16
// edit here
// desaturates shadow making it look metal (R127i.y))*.05
R125i.x = floatBitsToInt(max(-(intBitsToFloat(R127i.y)), 0.0));
R10i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R3i.w),intBitsToFloat(PV1i.w)) + intBitsToFloat(R0i.y)));
// rlli.z and uf_remapedPS3 both alter shinyness
R3i.z = floatBitsToInt(intBitsToFloat(R11i.z) + intBitsToFloat(uf_remappedPS[3].z));
// edit here
// kinda tone maping on character ? (R8i.w)*.05
// low numbers = darker darks and brighter brights
R127i.w = floatBitsToInt(intBitsToFloat(R8i.w) * intBitsToFloat(0x437f0000));
// Edit here
// 7i.w carrying character shinyness reflectivity without map items
R6i.z = floatBitsToInt(-(intBitsToFloat(R7i.w)) + 1.0);
PS0i = R6i.z;
// 17
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[4].x),intBitsToFloat(uf_remappedPS[4].y),intBitsToFloat(uf_remappedPS[4].z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R126i.z),intBitsToFloat(R125i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R1i.w = 0;
PS1i = R1i.w;
// 18 rotates reflection world cube map?
R124i.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[5].x),intBitsToFloat(uf_remappedPS[5].y),intBitsToFloat(uf_remappedPS[5].z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R126i.z),intBitsToFloat(R125i.z),0.0)));
PV0i.x = R124i.x;
PV0i.y = R124i.x;
PV0i.z = R124i.x;
PV0i.w = R124i.x;
R124i.z = floatBitsToInt(-(intBitsToFloat(PV1i.x)));
PS0i = R124i.z;
// 19
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(uf_remappedPS[6].x),intBitsToFloat(uf_remappedPS[6].y),intBitsToFloat(uf_remappedPS[6].z),-0.0),vec4(intBitsToFloat(R127i.x),intBitsToFloat(R126i.z),intBitsToFloat(R125i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R124i.y = tempi.x;
R4i.z = int(intBitsToFloat(R127i.w));
PS1i = R4i.z;
// 20
redcCUBE(vec4(intBitsToFloat(R124i.z),intBitsToFloat(R124i.z),intBitsToFloat(R124i.x),intBitsToFloat(PV1i.x)),vec4(intBitsToFloat(PV1i.x),intBitsToFloat(R124i.x),intBitsToFloat(R124i.z),intBitsToFloat(R124i.z)),cubeMapSTM,cubeMapFaceId);
R0i.x = floatBitsToInt(cubeMapSTM.x);
R0i.y = floatBitsToInt(cubeMapSTM.y);
R0i.z = floatBitsToInt(cubeMapSTM.z);
R0i.w = cubeMapFaceId;
PV0i.x = R0i.x;
PV0i.y = R0i.y;
PV0i.z = R0i.z;
PV0i.w = R0i.w;
// r125i. brightens shadows
R6i.y = floatBitsToInt(min(intBitsToFloat(R125i.x), 1.0));
PS0i = R6i.y;
// 21
R1i.x = 0;
R3i.y = floatBitsToInt(intBitsToFloat(R7i.w) * intBitsToFloat(0x437f0000));
R2i.z = PV0i.w;
// tweak reflectivity of surfaces
R3i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R7i.w)),intBitsToFloat(R6i.z)) + intBitsToFloat(R6i.z)));
R3i.x = floatBitsToInt(1.0 / abs(intBitsToFloat(PV0i.z)));
PS1i = R3i.x;
// 0
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].x), intBitsToFloat(uf_remappedPS[7].w)));
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].y), intBitsToFloat(uf_remappedPS[7].w)));
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.x),intBitsToFloat(R3i.x)) + 1.5));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R0i.y),intBitsToFloat(R3i.x)) + 1.5));
PV0i.w = R123i.w;
R124i.y = R4i.z & 0x000000fc;
PS0i = R124i.y;
// 1
R2i.x = PV0i.w;
R2i.y = PV0i.z;
R124i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[3].z), intBitsToFloat(uf_remappedPS[7].w)));
// edit here for Plastic look
//(R3i.w)*.01
// R3i.w how plastic a surface can look. Seems to change how much the bump mapping affects the surface .01 pure plastic - 65 nearly only the light grey cloud-ish texutre over top characters.
// Combine pure plastic with low specular further down in the file to make a more matte look
R127i.w = floatBitsToInt(intBitsToFloat(R3i.w) * clarity + intBitsToFloat(0x3c23d70a));
R127i.w = clampFI32(R127i.w);
R125i.w = floatBitsToInt(-(intBitsToFloat(R6i.y)) + 1.0);
PS1i = R125i.w;
// 2 more sun
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R1i.z),intBitsToFloat(R1i.y),intBitsToFloat(R3i.z),-0.0),vec4(intBitsToFloat(R1i.z),intBitsToFloat(R1i.y),intBitsToFloat(R3i.z),0.0)));
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R127i.y = int(intBitsToFloat(R3i.y));
PS0i = R127i.y;
// 3 dot product makes brightness of sun on characters and land can totally knock out sun
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R4i.y),intBitsToFloat(R5i.z),intBitsToFloat(R5i.z)),vec4(-(intBitsToFloat(R125i.x)),-(intBitsToFloat(R126i.y)),-(intBitsToFloat(R124i.z)),-(intBitsToFloat(R1i.x)))));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R126i.w = tempi.x;
// pv0i.x messes saturation of clothing
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.x));
PS1i = floatBitsToInt(tempResultf);
// 4
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.z), intBitsToFloat(PS1i)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R1i.y), intBitsToFloat(PS1i)));
// edit here
// R127i.w seems to control how shiny stuff is and amount of bloom it gives off
R127i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.w), intBitsToFloat(R127i.w)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(PS1i)));
R127i.x = floatBitsToInt(float(R124i.y));
PS0i = R127i.x;
// 5
backupReg0i = R125i.w;
backupReg0i = R125i.w;
R124i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(uf_remappedPS[7].w)));
PV1i.x = R124i.x;
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.y), intBitsToFloat(uf_remappedPS[7].w)));
PV1i.y = R124i.y;
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(uf_remappedPS[7].w)));
PV1i.z = R126i.z;
R125i.w = floatBitsToInt((intBitsToFloat(R6i.z) * 0.5 + 0.5));
R125i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.y)),intBitsToFloat(backupReg0i)) + intBitsToFloat(backupReg0i)));
PS1i = R125i.z;
// 6 dot product makes specular highlight on charactes but not inverse. Lower is lower
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R4i.x),intBitsToFloat(R4i.y),intBitsToFloat(R5i.z),intBitsToFloat(R5i.z)),vec4(-(intBitsToFloat(PV1i.x)),-(intBitsToFloat(PV1i.y)),-(intBitsToFloat(PV1i.z)),-(intBitsToFloat(R1i.w)))));
tempi.x = clampFI32(tempi.x);
PV0i.x = tempi.x;
PV0i.y = tempi.x;
PV0i.z = tempi.x;
PV0i.w = tempi.x;
R126i.x = R127i.y & int(1);
PS0i = R126i.x;
// 7
// dot product is finding the specular on characters
tempi.x = floatBitsToInt(dot(vec4(-(intBitsToFloat(R125i.x)),-(intBitsToFloat(R126i.y)),-(intBitsToFloat(R124i.z)),-0.0),vec4(-(intBitsToFloat(R124i.x)),-(intBitsToFloat(R124i.y)),-(intBitsToFloat(R126i.z)),0.0)));
tempi.x = clampFI32(tempi.x);
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.w = tempi.x;
PS1i = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
// 8 r127i.x how bright metal is
R1i.x = floatBitsToInt(intBitsToFloat(R127i.x) * intBitsToFloat(0x3b820821));
R127i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.w), intBitsToFloat(R125i.w)));
R127i.y = floatBitsToInt(intBitsToFloat(R127i.y) / 2.0);
// edit here Specular?
// charactr specular highlight intBitsToFloat(R127i.z)*3
// higher number = less highlight less than 1 = more highlight.
// good combo with plastic to remove shiny 45
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.z),intBitsToFloat(PS1i)) + -(intBitsToFloat(PS1i))));
PV0i.w = floatBitsToInt(-(intBitsToFloat(PV1i.x)) + 1.0);
R122i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R6i.y)),intBitsToFloat(R125i.z)) + intBitsToFloat(R125i.z)));
PS0i = R122i.x;
// 9
backupReg0i = R126i.x;
R126i.x = R126i.w;
R126i.x = floatBitsToInt(intBitsToFloat(R126i.x) * 2.0);
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), intBitsToFloat(PS0i)));
R125i.z = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R127i.w)),intBitsToFloat(PV0i.w)) + intBitsToFloat(PV0i.w)));
PV1i.z = R125i.z;
R125i.w = floatBitsToInt((-(intBitsToFloat(R7i.w)) * intBitsToFloat(0x40400000) + 4.0));
R124i.y = ((backupReg0i == 0)?(0):(0x3f800000));
PS1i = R124i.y;
// 10
backupReg0i = R127i.w;
R7i.x = R126i.w;
R7i.x = clampFI32(R7i.x);
PV0i.y = floatBitsToInt(intBitsToFloat(R126i.z) + 1.0);
R124i.z = floatBitsToInt((-(intBitsToFloat(R1i.x)) * intBitsToFloat(0x3d23d70a) + intBitsToFloat(0x3d23d70a)));
R127i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R6i.y),-(intBitsToFloat(R127i.y))) + intBitsToFloat(R6i.y)));
R122i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(PV1i.z)) + intBitsToFloat(PV1i.z)));
PS0i = R122i.x;
// 11
backupReg0i = R126i.x;
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R126i.z),intBitsToFloat(PV0i.y)) + intBitsToFloat(PV0i.y)));
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.z), intBitsToFloat(PS0i)));
// how shiny is metal rli.x
R7i.z = floatBitsToInt((intBitsToFloat(R1i.x) * 0.25 + 0.25));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.w), intBitsToFloat(backupReg0i)));
PS1i = floatBitsToInt(1.0 / intBitsToFloat(R125i.w));
// 12
backupReg0i = R124i.y;
R127i.x = floatBitsToInt(intBitsToFloat(R127i.y) + intBitsToFloat(R127i.w));
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PS1i)));
R0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(PV1i.w)));
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R7i.x),-(intBitsToFloat(R127i.y))) + intBitsToFloat(R7i.x)));
PV0i.w = R123i.w;
R125i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.z),intBitsToFloat(R1i.x)) + intBitsToFloat(R124i.z)));
PS0i = R125i.x;
// 13
backupReg0i = R127i.y;
backupReg1i = R126i.x;
R126i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[7].w), intBitsToFloat(uf_remappedPS[7].w)));
R127i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.y),intBitsToFloat(R1i.x)) + intBitsToFloat(R124i.z)));
PV1i.y = R127i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.x),intBitsToFloat(R1i.x)) + intBitsToFloat(R124i.z)));
PV1i.z = R123i.z;
R126i.w = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(PV0i.w));
R127i.w = floatBitsToInt(1.0 / intBitsToFloat(backupReg1i));
PS1i = R127i.w;
// 14
backupReg0i = R127i.x;
R127i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),-(intBitsToFloat(R125i.y))) + intBitsToFloat(PV1i.z)));
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.z),-(intBitsToFloat(R124i.y))) + intBitsToFloat(PV1i.z)));
R124i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.x),-(intBitsToFloat(R125i.y))) + intBitsToFloat(R125i.x)));
R125i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV1i.y),-(intBitsToFloat(R125i.y))) + intBitsToFloat(PV1i.y)));
R6i.y = floatBitsToInt(1.0 / intBitsToFloat(backupReg0i));
PS0i = R6i.y;
// 15
backupReg0i = R126i.x;
backupReg0i = R126i.x;
R126i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.x),-(intBitsToFloat(R124i.y))) + intBitsToFloat(R125i.x)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R127i.y),-(intBitsToFloat(R124i.y))) + intBitsToFloat(R127i.y)));
PV1i.y = R123i.y;
R126i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(R127i.w)));
R7i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(backupReg0i), intBitsToFloat(backupReg0i)));
R127i.z = floatBitsToInt(1.0 / intBitsToFloat(R126i.w));
PS1i = R127i.z;
// 16
backupReg0i = R127i.x;
backupReg1i = R126i.y;
R127i.x = floatBitsToInt(intBitsToFloat(R125i.y) + intBitsToFloat(R125i.w));
R126i.y = floatBitsToInt(intBitsToFloat(R125i.y) + intBitsToFloat(backupReg0i));
R5i.z = floatBitsToInt(intBitsToFloat(R124i.y) + intBitsToFloat(backupReg1i));
R125i.w = floatBitsToInt(intBitsToFloat(R125i.y) + intBitsToFloat(R124i.z));
R6i.z = floatBitsToInt(intBitsToFloat(R124i.y) + intBitsToFloat(PV1i.y));
PS0i = R6i.z;
// 17
PV1i.x = floatBitsToInt(0.25 * intBitsToFloat(R6i.y));
R6i.y = floatBitsToInt(intBitsToFloat(R124i.y) + intBitsToFloat(R126i.x));
R1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.z), intBitsToFloat(R126i.z)));
R3i.w = floatBitsToInt((intBitsToFloat(R8i.x) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R3i.w = clampFI32(R3i.w);
R0i.w = floatBitsToInt((intBitsToFloat(R8i.y) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R0i.w = clampFI32(R0i.w);
PS1i = R0i.w;
// 18
R0i.x = floatBitsToInt((intBitsToFloat(R8i.z) * intBitsToFloat(0x3f895ef0) + intBitsToFloat(0xba0a8ec8)));
R0i.x = clampFI32(R0i.x);
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.w), intBitsToFloat(PV1i.x)));
PV0i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.x), intBitsToFloat(PV1i.x)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.y), intBitsToFloat(PV1i.x)));
PS0i = R4i.z & int(1);
// 19
R8i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].x), intBitsToFloat(PV0i.w)));
R8i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].z), intBitsToFloat(PV0i.y)));
R1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].y), intBitsToFloat(PV0i.z)));
R3i.z = floatBitsToInt(float(PS0i));
PS1i = R3i.z;
// 20
R4i.x = R10i.x;
R4i.y = R10i.y;
R4i.z = floatBitsToInt(roundEven(1.0));
R8i.w = floatBitsToInt(texture(textureUnitPS4, intBitsToFloat(R9i.xy)).x);
R12i.xzw = floatBitsToInt(texture(textureUnitPS11, intBitsToFloat(R10i.xy)).xzw);
R13i.xyz = floatBitsToInt(texture(textureUnitPS10, vec3(intBitsToFloat(R10i.x),intBitsToFloat(R10i.y),intBitsToFloat(R10i.z))).xyz);
R4i.xyz = floatBitsToInt(texture(textureUnitPS10, vec3(intBitsToFloat(R4i.x),intBitsToFloat(R4i.y),intBitsToFloat(R4i.z))).xyz);
R2i.xyz = floatBitsToInt(textureLod(textureUnitPS8, vec4(redcCUBEReverse(intBitsToFloat(R2i.xy),R2i.z),cubeMapArrayIndex8),intBitsToFloat(R2i.w)).xyz);
R10i.xyz = floatBitsToInt(texture(textureUnitPS13, intBitsToFloat(R10i.xy)).xyz);
// 0
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.w),-(intBitsToFloat(R7i.z))) + intBitsToFloat(R12i.w)));
PV0i.x = R123i.x;
R123i.y = floatBitsToInt((intBitsToFloat(R12i.w) * 0.5 + 0.5));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[0].x),intBitsToFloat(R8i.w)) + intBitsToFloat(uf_remappedPS[1].x)));
PV0i.z = R123i.z;
R125i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R12i.x), intBitsToFloat(R7i.x)));
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R12i.z), intBitsToFloat(R12i.z)));
PS0i = R125i.x;
// 1
PV1i.x = floatBitsToInt(-(intBitsToFloat(PV0i.z)));
PV1i.y = floatBitsToInt(intBitsToFloat(R7i.x) + intBitsToFloat(PV0i.y));
PV1i.y = clampFI32(PV1i.y);
PV1i.z = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.z)), intBitsToFloat(R5i.y)));
PV1i.w = floatBitsToInt(mul_nonIEEE(-(intBitsToFloat(PV0i.z)), intBitsToFloat(R6i.x)));
// r7i.z shadow brightness PV0i.x shadow highlight brightness
R126i.x = floatBitsToInt(intBitsToFloat(R7i.z) + intBitsToFloat(PV0i.x));
PS1i = R126i.x;
// 2 more edge lights in shadow
R127i.x = floatBitsToInt(-(intBitsToFloat(R11i.x)) + intBitsToFloat(PV1i.w));
PV0i.x = R127i.x;
R126i.y = floatBitsToInt(-(intBitsToFloat(R11i.y)) + intBitsToFloat(PV1i.z));
PV0i.y = R126i.y;
// R9i.z tonemapping? brightnss of sun on bright surfaces vs nearby dark. Ratio of Rlli.xy above vs r9i.z below. Values tested (R11i.x and y)*.5) (R9i.z)*.1
PV0i.z = floatBitsToInt(-(intBitsToFloat(R9i.z)) + intBitsToFloat(PV1i.x));
// brightness of sun
R8i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R125i.w), intBitsToFloat(PV1i.y)));
// uf_remappedps[9].x carries specular highlight of sun on shiny surfaces
R124i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[9].x), intBitsToFloat(R125i.w)));
PS0i = R124i.y;
// 3 produces edge highlights on the shadowed edge
tempi.x = floatBitsToInt(dot(vec4(intBitsToFloat(R5i.x),intBitsToFloat(R12i.y),intBitsToFloat(R11i.z),-0.0),vec4(intBitsToFloat(PV0i.x),intBitsToFloat(PV0i.y),intBitsToFloat(PV0i.z),0.0)));
PV1i.x = tempi.x;
PV1i.y = tempi.x;
PV1i.z = tempi.x;
PV1i.w = tempi.x;
R127i.y = tempi.x;
R125i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.x), intBitsToFloat(R5i.z)));
PS1i = R125i.y;
// 4
backupReg0i = R126i.y;
R123i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R5i.x)),intBitsToFloat(PV1i.x)) + intBitsToFloat(R127i.x)));
PV0i.x = R123i.x;
R126i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.x), intBitsToFloat(R6i.z)));
R125i.w = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(R12i.y)),intBitsToFloat(PV1i.x)) + intBitsToFloat(backupReg0i)));
// 5
backupReg0i = R125i.y;
PV1i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R124i.y), intBitsToFloat(R7i.w)));
R125i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.x),intBitsToFloat(backupReg0i)) + intBitsToFloat(R4i.x)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(PV0i.x)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R126i.x), intBitsToFloat(R6i.y)));
// 6
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.x), intBitsToFloat(R1i.z)));
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R125i.w),intBitsToFloat(R125i.w)) + intBitsToFloat(PV1i.z)));
PV0i.y = R123i.y;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.y),intBitsToFloat(R126i.y)) + intBitsToFloat(R4i.y)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.z),intBitsToFloat(PV1i.w)) + intBitsToFloat(R4i.z)));
PV0i.w = R123i.w;
// 7
R2i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.z),intBitsToFloat(PV0i.x)) + intBitsToFloat(PV0i.w)));
R8i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R1i.w),intBitsToFloat(PV0i.x)) + intBitsToFloat(PV0i.z)));
R1i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R8i.x),intBitsToFloat(PV0i.x)) + intBitsToFloat(R125i.y)));
tempResultf = 1.0 / sqrt(intBitsToFloat(PV0i.y));
PS1i = floatBitsToInt(tempResultf);
// 8
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R127i.y), intBitsToFloat(PS1i)));
R4i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R3i.z), intBitsToFloat(R125i.x)));
PS0i = R4i.w;
// 9
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z), intBitsToFloat(PV0i.w)));
// 10
PV0i.y = floatBitsToInt(intBitsToFloat(PV1i.z) * intBitsToFloat(0x3ced9168));
PV0i.y = clampFI32(PV0i.y);
// 11
R123i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(PV0i.y),intBitsToFloat(R0i.z)) + 1.0));
PV1i.y = R123i.y;
// 12 PVli.y seems to be a scalar for ambient light in the shadows
backupReg0i = R1i.x;
R1i.x = floatBitsToInt((mul_nonIEEE(-(intBitsToFloat(backupReg0i)),intBitsToFloat(PV1i.y)) + intBitsToFloat(PV1i.y)));
// 0 r3i.xyz ambient light in the shadows
R123i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].x),intBitsToFloat(R8i.w)) + intBitsToFloat(R13i.x)));
PV0i.x = R123i.x;
R123i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].z),intBitsToFloat(R8i.w)) + intBitsToFloat(R13i.z)));
PV0i.z = R123i.z;
R123i.w = floatBitsToInt((mul_nonIEEE(intBitsToFloat(uf_remappedPS[8].y),intBitsToFloat(R8i.w)) + intBitsToFloat(R13i.y)));
PV0i.w = R123i.w;
// 1
PV1i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.z), intBitsToFloat(R1i.x)));
PV1i.z = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.w), intBitsToFloat(R1i.x)));
PV1i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV0i.x), intBitsToFloat(R1i.x)));
// 2
backupReg0i = R0i.x;
PV0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.z), intBitsToFloat(R0i.w)));
PV0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.w), intBitsToFloat(R3i.w)));
PV0i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(PV1i.y), intBitsToFloat(backupReg0i)));
// 3PV0i sun color/brightness on land
R123i.x = floatBitsToInt((intBitsToFloat(PV0i.w) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.x = R123i.x;
R123i.y = floatBitsToInt((intBitsToFloat(PV0i.x) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.y = R123i.y;
R123i.z = floatBitsToInt((intBitsToFloat(PV0i.y) * intBitsToFloat(0x3f6e896b) + intBitsToFloat(0x3a011b1e)));
PV1i.z = R123i.z;
// 4 R2i.xy r8i.z brightness of reflectd sky light on shadowed surfaces kinda like rimlighting PVli.xyz brightness of run on land
PV0i.y = floatBitsToInt(intBitsToFloat(R2i.y) + intBitsToFloat(PV1i.x));
PV0i.z = floatBitsToInt(intBitsToFloat(R8i.z) + intBitsToFloat(PV1i.y));
PV0i.w = floatBitsToInt(intBitsToFloat(R1i.w) + intBitsToFloat(PV1i.z));
// 5 PV0i.xyz color / brightness of sun Rl0i.xyz color / brightness of fog over land and sky
R4i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(PV0i.w)) + intBitsToFloat(R10i.x)));
R4i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(PV0i.z)) + intBitsToFloat(R10i.y)));
R4i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R12i.z),intBitsToFloat(PV0i.y)) + intBitsToFloat(R10i.z)));
// export
passPixelColor0 = vec4(intBitsToFloat(R4i.x), intBitsToFloat(R4i.y), intBitsToFloat(R4i.z), intBitsToFloat(R4i.w));
}

View File

@ -0,0 +1,248 @@
#version 420
#extension GL_ARB_texture_gather : enable
#extension GL_ARB_separate_shader_objects : enable
#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 shaders was auto-converted from OpenGL to Cemu.
Conversion output:
*/
// shader f4e1147ab34a1677 -- Vertex Shader where links gets drawn in the menu
#ifdef VULKAN
layout(set = 0, binding = 0) uniform ufBlock
{
uniform ivec4 uf_remappedVS[5];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
};
#else
uniform ivec4 uf_remappedVS[5];
// uniform vec2 uf_windowSpaceToClipSpaceTransform; // Cemu optimized this uf_variable away in Cemu 1.15.7
#endif
#define menuWrkrnd $menuWrkrnd
#define mode $mode
// uf_windowSpaceToClipSpaceTransform was moved to the ufBlock
ATTR_LAYOUT(0, 0) in uvec4 attrDataSem0;
ATTR_LAYOUT(0, 1) in uvec4 attrDataSem1;
out gl_PerVertex
{
vec4 gl_Position;
float gl_PointSize;
};
layout(location = 0) out vec4 passParameterSem0;
layout(location = 2) out vec4 passParameterSem4;
layout(location = 3) out vec4 passParameterSem5;
layout(location = 1) out vec4 passParameterSem1;
layout(location = 4) out vec4 passParameterSem6;
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 R123i = ivec4(0);
ivec4 R124i = ivec4(0);
ivec4 R125i = ivec4(0);
ivec4 R126i = ivec4(0);
ivec4 R127i = ivec4(0);
uvec4 attrDecoder;
int backupReg0i, backupReg1i, backupReg2i, backupReg3i, backupReg4i;
ivec4 PV0i = ivec4(0), PV1i = ivec4(0);
int PS0i = 0, PS1i = 0;
ivec4 tempi = ivec4(0);
float tempResultf;
int tempResulti;
ivec4 ARi = ivec4(0);
bool predResult = true;
vec3 cubeMapSTM;
int cubeMapFaceId;
R0i = ivec4(gl_VertexID, 0, 0, gl_InstanceID);
attrDecoder.xyzw = attrDataSem0.xyzw;
attrDecoder = ((attrDecoder>>8)&0xFF)|((attrDecoder<<8)&0xFF00);
attrDecoder.xyzw = floatBitsToInt(vec4(unpackHalf2x16(attrDecoder.x|(attrDecoder.y<<16)),unpackHalf2x16(attrDecoder.z|(attrDecoder.w<<16))));
R1i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), int(attrDecoder.w));
attrDecoder.x = attrDataSem1.x;
attrDecoder.x = (attrDecoder.x>>24)|((attrDecoder.x>>8)&0xFF00)|((attrDecoder.x<<8)&0xFF0000)|((attrDecoder.x<<24));
attrDecoder.y = 0;
attrDecoder.z = 0;
attrDecoder.w = 0;
attrDecoder.xyzw = uvec4((attrDecoder.x>>0)&0x3FF,(attrDecoder.x>>10)&0x3FF,(attrDecoder.x>>20)&0x3FF,(attrDecoder.x>>30)&0x3);
if( (attrDecoder.x&0x200) != 0 ) attrDecoder.x |= 0xFFFFFC00;
if( (attrDecoder.y&0x200) != 0 ) attrDecoder.y |= 0xFFFFFC00;
if( (attrDecoder.z&0x200) != 0 ) attrDecoder.z |= 0xFFFFFC00;
attrDecoder.x = floatBitsToUint(max(float(int(attrDecoder.x))/511.0,-1.0));
attrDecoder.y = floatBitsToUint(max(float(int(attrDecoder.y))/511.0,-1.0));
attrDecoder.z = floatBitsToUint(max(float(int(attrDecoder.z))/511.0,-1.0));
attrDecoder.w = floatBitsToUint(float(attrDecoder.w));
R2i = ivec4(int(attrDecoder.x), int(attrDecoder.y), int(attrDecoder.z), int(attrDecoder.w));
// 0
backupReg0i = R0i.x;
PV0i.x = (backupReg0i == int(1))?int(0xFFFFFFFF):int(0x0);
R127i.y = 0x3f800000; // subtracting brings the black box top side down
PV0i.z = 0x3f800000; // subtracting slants down diagonally
PV0i.w = 0x40400000;
R127i.z = 0xbf800000; // unnecssary left side, extends the black box
PS0i = R127i.z;
// 1
PV1i.x = floatBitsToInt(intBitsToFloat(uf_remappedVS[0].z) * intBitsToFloat(0x3b808081));
R123i.y = ((PV0i.x == 0)?(PV0i.w):(0xbf800000));
PV1i.y = R123i.y;
R126i.z = uf_remappedVS[1].z;
R126i.z = floatBitsToInt(intBitsToFloat(R126i.z) / 2.0);
R123i.w = ((PV0i.x == 0)?(PV0i.z):(0xc0400000));
PV1i.w = R123i.w;
R1i.w = 0x3f800000;
PS1i = R1i.w;
// 2
R1i.x = ((R0i.x == 0)?(R127i.z):(PV1i.y));
PV0i.x = R1i.x;
R1i.y = ((R0i.x == 0)?(R127i.y):(PV1i.w));
PV0i.y = R1i.y;
R1i.z = floatBitsToInt(intBitsToFloat(PV1i.x) + -(0.5));
R1i.z = floatBitsToInt(intBitsToFloat(R1i.z) * 2.0);
R125i.w = floatBitsToInt(-(intBitsToFloat(uf_remappedVS[2].z)));
R125i.w = floatBitsToInt(intBitsToFloat(R125i.w) / 2.0);
R4i.x = floatBitsToInt(-(intBitsToFloat(uf_remappedVS[3].x)));
R4i.x = floatBitsToInt(intBitsToFloat(R4i.x) * 2.0);
PS0i = R4i.x;
// 3 -- links lighting
R2i.x = floatBitsToInt((intBitsToFloat(PV0i.x) * 0.5 + 0.5));
PV1i.x = R2i.x;
R4i.y = uf_remappedVS[3].y;
R4i.y = floatBitsToInt(intBitsToFloat(R4i.y) * 2.0);
PV1i.z = floatBitsToInt(-(intBitsToFloat(PV0i.y)));
R127i.w = PV0i.x;
R127i.w = floatBitsToInt(intBitsToFloat(R127i.w) / 2.0);
R127i.x = floatBitsToInt(-(intBitsToFloat(PV0i.y)));
R127i.x = floatBitsToInt(intBitsToFloat(R127i.x) / 2.0);
PS1i = R127i.x;
// 4 -- links lighting
R126i.x = floatBitsToInt(intBitsToFloat(R125i.w) + -(0.5));
R2i.y = floatBitsToInt((intBitsToFloat(PV1i.z) * 0.5 + 0.5));
PV0i.y = R2i.y;
R6i.z = PV1i.x;
PV0i.z = R6i.z;
R124i.w = floatBitsToInt(intBitsToFloat(R126i.z) + -(0.5));
R126i.w = floatBitsToInt(-(intBitsToFloat(R4i.x)));
R126i.w = floatBitsToInt(intBitsToFloat(R126i.w) / 2.0);
PS0i = R126i.w;
// 5 -- links lighting
backupReg0i = R127i.x;
R127i.x = floatBitsToInt(intBitsToFloat(backupReg0i) + intBitsToFloat(R125i.w));
PV1i.y = floatBitsToInt(intBitsToFloat(R127i.w) + intBitsToFloat(R126i.z));
PV1i.z = floatBitsToInt(-(intBitsToFloat(R4i.y)));
PV1i.z = floatBitsToInt(intBitsToFloat(PV1i.z) / 2.0);
R6i.w = PV0i.y;
PV1i.w = R6i.w;
R127i.y = floatBitsToInt(intBitsToFloat(PV0i.z) + intBitsToFloat(uf_remappedVS[4].z));
PS1i = R127i.y;
// 6
PV0i.x = floatBitsToInt(intBitsToFloat(PV1i.w) + intBitsToFloat(uf_remappedVS[4].w));
R126i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.x),intBitsToFloat(R126i.z)) + intBitsToFloat(R126i.w)));
R126i.z = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R4i.y),intBitsToFloat(R125i.w)) + intBitsToFloat(PV1i.z)));
R126i.w = floatBitsToInt(intBitsToFloat(R2i.x) + intBitsToFloat(R124i.w));
R127i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.x), intBitsToFloat(PV1i.y)));
PS0i = R127i.w;
// 7
backupReg0i = R127i.x;
R127i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.y), intBitsToFloat(backupReg0i)));
R125i.y = uf_remappedVS[4].x;
R125i.y = floatBitsToInt(intBitsToFloat(R125i.y) / 2.0);
PV1i.z = floatBitsToInt(intBitsToFloat(PV0i.x) + intBitsToFloat(R126i.x));
R125i.w = uf_remappedVS[4].y;
R125i.w = floatBitsToInt(intBitsToFloat(R125i.w) / 2.0);
R0i.w = uf_remappedVS[4].z;
R0i.w = floatBitsToInt(intBitsToFloat(R0i.w) * 2.0);
PS1i = R0i.w;
// 8
backupReg0i = R126i.x;
backupReg1i = R127i.y;
backupReg2i = R126i.w;
R126i.x = floatBitsToInt(intBitsToFloat(R2i.y) + intBitsToFloat(backupReg0i));
R127i.y = floatBitsToInt(intBitsToFloat(backupReg1i) + intBitsToFloat(R124i.w));
R127i.z = uf_remappedVS[4].w;
R127i.z = floatBitsToInt(intBitsToFloat(R127i.z) * 2.0);
R126i.w = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.x), intBitsToFloat(backupReg2i)));
R125i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.y), intBitsToFloat(PV1i.z)));
PS0i = R125i.x;
// 9
R3i.x = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.x),intBitsToFloat(R125i.y)) + 0.5));
R3i.y = floatBitsToInt((mul_nonIEEE(intBitsToFloat(R2i.y),intBitsToFloat(R125i.w)) + 0.5));
R4i.z = R126i.y;
R5i.w = floatBitsToInt(1.0);
R4i.w = R126i.z;
PS1i = R4i.w;
// 10
R0i.x = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.x), intBitsToFloat(R127i.y)));
R0i.y = floatBitsToInt(mul_nonIEEE(intBitsToFloat(R4i.y), intBitsToFloat(R126i.x)));
R2i.z = R127i.w;
R2i.w = R127i.x;
R3i.z = R0i.w;
PS0i = R3i.z;
// 11
R0i.z = R126i.w;
R3i.w = R127i.z;
R0i.w = R125i.x;
PS1i = R0i.w;
// export
#if (mode == 4 && menuWrkrnd == 1)
SET_POSITION(vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w)) * 0);
#else
SET_POSITION(vec4(intBitsToFloat(R1i.x), intBitsToFloat(R1i.y), intBitsToFloat(R1i.z), intBitsToFloat(R1i.w)));
#endif
// export
passParameterSem0 = vec4(intBitsToFloat(R2i.x), intBitsToFloat(R2i.y), intBitsToFloat(R2i.z), intBitsToFloat(R2i.w));
// export
passParameterSem4 = vec4(intBitsToFloat(R3i.x), intBitsToFloat(R3i.y), intBitsToFloat(R3i.z), intBitsToFloat(R3i.w));
// export
passParameterSem5 = vec4(intBitsToFloat(R0i.x), intBitsToFloat(R0i.y), intBitsToFloat(R0i.z), intBitsToFloat(R0i.w));
// export
passParameterSem1 = vec4(intBitsToFloat(R4i.x), intBitsToFloat(R4i.y), intBitsToFloat(R4i.z), intBitsToFloat(R4i.w));
// export
// skipped export to semanticId 255
// export
passParameterSem6 = vec4(intBitsToFloat(R6i.x), intBitsToFloat(R6i.x), intBitsToFloat(R6i.z), intBitsToFloat(R6i.w)); // z= moves link left, w= moves link right, affects link cut out in menu
}

View File

@ -0,0 +1,595 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = Custom Cel Shading
path = "The Legend of Zelda: Breath of the Wild/Mods/Custom Cel Shading"
description = Changes the type of shading on Link and the world.|Inventory Menu Workaround will make Link invisible in the inventory.||Made by SkalFate, Altros and Pig.
version = 6
[Default]
$mode:int = 4
$clarity = 0.05
$menuWrkrnd:int = 0
$shdwFix:int = 2
$bright = 0.45
$smode = 1
$shadowsbrightness = 1
$sred = 1
$sgreen = 1
$sblue = 1
# Cel-Shading Type
[Preset]
name = Cel-Shading Disabled
category = Preset
default = 1
[Preset]
name = Light Shading
category = Preset
$mode:int = 6
$shdwFix:int = 2 # To hide Shadow Dropdowns
[Preset]
name = Painting Shading (World)
category = Preset
$mode:int = 8
$shdwFix:int = 2 # To hide Shadow Dropdowns
[Preset]
name = Painting Shading (World & Link)
category = Preset
$mode:int = 10
$shdwFix:int = 2 # To hide Shadow Dropdowns
# Plastic Mode
[Preset]
name = Disabled
category = Plastic Mode
condition = $mode == 4
default = 1
$clarity = 1
[Preset]
name = Plastic 100%
category = Plastic Mode
condition = $mode == 4
$clarity = 0.05
[Preset]
name = Plastic 95%
category = Plastic Mode
condition = $mode == 4
$clarity = 0.15
[Preset]
name = Plastic 90%
category = Plastic Mode
condition = $mode == 4
$clarity = 0.30
[Preset]
name = Plastic 85%
category = Plastic Mode
condition = $mode == 4
$clarity = 0.37
[Preset]
name = Plastic 75%
category = Plastic Mode
condition = $mode == 4
$clarity = 0.43
[Preset]
name = Plastic 65%
category = Plastic Mode
condition = $mode == 4
$clarity = 0.50
[Preset]
name = Plastic 55%
category = Plastic Mode
condition = $mode == 4
$clarity = 0.57
[Preset]
name = Plastic 45%
category = Plastic Mode
condition = $mode == 4
$clarity = 0.65
[Preset]
name = Plastic 35%
category = Plastic Mode
condition = $mode == 4
$clarity = 0.75
[Preset]
name = Plastic 25%
category = Plastic Mode
condition = $mode == 4
$clarity = 0.95
[Preset]
name = Plastic 15%
category = Plastic Mode
condition = $mode == 4
$clarity = 1.15
[Preset]
name = Plastic 5%
category = Plastic Mode
condition = $mode == 4
$clarity = 1.35
# Menu Workaround
[Preset]
name = Disabled (Glitchy Inventory Background)
category = Inventory Menu Workaround
condition = $mode == 4
default = 1
[Preset]
name = Enabled (Removes Link)
category = Inventory Menu Workaround
condition = $mode == 4
$menuWrkrnd:int = 1
# Shadow Fix Verison
[Preset]
name = Altros Version
category = Shadow Fix Version
condition = $mode == 4
$shdwFix:int = 0
[Preset]
name = SkalFate Version
category = Shadow Fix Version
condition = $mode == 4
$shdwFix:int = 1
# Altros Shadow Fix
[Preset]
name = Shadows 0.25%
category = Altros Shadow Fix
condition = $shdwFix == 0
$bright = 0.25
[Preset]
name = Shadows 0.35%
category = Altros Shadow Fix
condition = $shdwFix == 0
$bright = 0.35
[Preset]
name = Shadows 0.45% (Default)
category = Altros Shadow Fix
condition = $shdwFix == 0
default = 1
$bright = 0.45
[Preset]
name = Shadows 0.55%
category = Altros Shadow Fix
condition = $shdwFix == 0
$bright = 0.55
[Preset]
name = Shadows 0.65%
category = Altros Shadow Fix
condition = $shdwFix == 0
$bright = 0.65
[Preset]
name = Shadows 0.75%
category = Altros Shadow Fix
condition = $shdwFix == 0
$bright = 0.75
[Preset]
name = Shadows 0.95%
category = Altros Shadow Fix
condition = $shdwFix == 0
$bright = 0.95
[Preset]
name = Shadows 1.0% (Game Original)
category = Altros Shadow Fix
condition = $shdwFix == 0
$bright = 1.0
[Preset]
name = Shadows 1.15%
category = Altros Shadow Fix
condition = $shdwFix == 0
$bright = 1.15
[Preset]
name = Shadows 1.25%
category = Altros Shadow Fix
condition = $shdwFix == 0
$bright = 1.25
[Preset]
name = Shadows 1.35%
category = Altros Shadow Fix
condition = $shdwFix == 0
$bright = 1.35
[Preset]
name = Shadows 1.45%
category = Altros Shadow Fix
condition = $shdwFix == 0
$bright = 1.45
[Preset]
name = Shadows 1.55%
category = Altros Shadow Fix
condition = $shdwFix == 0
$bright = 1.55
[Preset]
name = Shadows 1.65%
category = Altros Shadow Fix
condition = $shdwFix == 0
$bright = 1.65
[Preset]
name = Shadows 1.75%
category = Altros Shadow Fix
condition = $shdwFix == 0
$bright = 1.75
# SkalFate Shadow Fix
# Shadow Mode (smode) -- Various visual styles can be achieved with mode 1-5
#
# Shadow Brihtness (shadowbrightness) - Controls how brightened up link and his back side will be
#
# RGB - sred, sgreen, sblue - adjusting this will add more intensity of the specific color.
# ------ Values are multiplied, so if you want to lower values use [0.01 - 1.0], or if you want to raise then use [1.00 - X.X]
[Preset]
name = Mode 1 - Shadows X1 (Best Mode)
category = SkalFate Shadow Fix
condition = $shdwFix == 1
default = 1
$smode = 1
$shadowsbrightness = 1
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = Mode 2 - Shadows X1 (No Highlights)
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 2
$shadowsbrightness = 1
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = Mode 3 - Shadows X1 (Strong Highlights)
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 3
$shadowsbrightness = 1
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = Mode 4 - Shadows X1 (LightShade)
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 4
$shadowsbrightness = 1
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = Mode 5 - Shadows X1 (DarkShade)
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 5
$shadowsbrightness = 1
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = ----------------------------------------
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 1
$shadowsbrightness = 1
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = Mode 1 - Shadows X2 (Best Mode)
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 1
$shadowsbrightness = 2
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = Mode 2 - Shadows X2 (No Highlights)
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 2
$shadowsbrightness = 2
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = Mode 3 - Shadows X2 (Strong Highlights)
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 3
$shadowsbrightness = 2
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = Mode 4 - Shadows X2 (LightShade)
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 4
$shadowsbrightness = 2
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = Mode 5 - Shadows X2 (DarkShade)
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 5
$shadowsbrightness = 2
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = ----------------------------------------
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 1
$shadowsbrightness = 1
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = Mode 1 - Shadows X4 (Best Mode)
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 1
$shadowsbrightness = 4
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = Mode 2 - Shadows X4 (No Highlights)
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 2
$shadowsbrightness = 4
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = Mode 3 - Shadows X4 (Strong Highlights)
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 3
$shadowsbrightness = 4
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = Mode 4 - Shadows X4 (LightShade)
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 4
$shadowsbrightness = 4
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = Mode 5 - Shadows X4 (DarkShade)
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 5
$shadowsbrightness = 4
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = ----------------------------------------
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 1
$shadowsbrightness = 1
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = Mode 1 - Shadows X8 (Best Mode)
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 1
$shadowsbrightness = 8
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = Mode 2 - Shadows X8 (No Highlights)
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 2
$shadowsbrightness = 8
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = Mode 3 - Shadows X8 (Strong Highlights)
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 3
$shadowsbrightness = 8
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = Mode 4 - Shadows X8 (LightShade)
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 4
$shadowsbrightness = 8
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = Mode 5 - Shadows X8 (DarkShade)
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 5
$shadowsbrightness = 8
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = ----------------------------------------
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 1
$shadowsbrightness = 1
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = Red Link
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 1
$shadowsbrightness = 2
$sred = 10
$sgreen = 1
$sblue = 1
[Preset]
name = Red Link X2
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 1
$shadowsbrightness = 2
$sred = 20
$sgreen = 1
$sblue = 1
[Preset]
name = Green Link
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 1
$shadowsbrightness = 2
$sred = 1
$sgreen = 10
$sblue = 1
[Preset]
name = Green Link X2
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 1
$shadowsbrightness = 2
$sred = 1
$sgreen = 20
$sblue = 1
[Preset]
name = Blue Link
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 1
$shadowsbrightness = 2
$sred = 1
$sgreen = 1
$sblue = 10
[Preset]
name = Blue Link X2
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 1
$shadowsbrightness = 2
$sred = 1
$sgreen = 1
$sblue = 20
[Preset]
name = ----------------------------------------
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 1
$shadowsbrightness = 1
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = Original Game Mode
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 0
$shadowsbrightness = 1
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = ----------------------------------------
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 1
$shadowsbrightness = 1
$sred = 1
$sgreen = 1
$sblue = 1
[Preset]
name = Custom Settings
category = SkalFate Shadow Fix
condition = $shdwFix == 1
$smode = 1
$shadowsbrightness = 1
$sred = 1
$sgreen = 1
$sblue = 1

View File

@ -0,0 +1,4 @@
[BotW_DayLength_V208]
moduleMatches = 0x6267BFD0
0x10301844 = .float (1/(120*$timeScale))

View File

@ -0,0 +1,80 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = Day Length
path = "The Legend of Zelda: Breath of the Wild/Mods/Day Length"
description = Changes the amount of real time that an in-game day takes.|Blood moons might not appear when you change the day length.||Made by chrispurnell.
version = 6
[Default]
$timeScale = 1
[Preset]
name = 15 seconds
category = Day Length
$timeScale = 0.025
[Preset]
name = 30 seconds
category = Day Length
$timeScale = 0.05
[Preset]
name = 1 minutes
category = Day Length
$timeScale = 0.1
[Preset]
name = 6 minutes
category = Day Length
$timeScale = 0.25
[Preset]
name = 12 minutes
category = Day Length
$timeScale = 0.5
[Preset]
name = 24 minutes (Default)
category = Day Length
default = 1
[Preset]
name = 48 minutes
category = Day Length
$timeScale = 2
[Preset]
name = 72 minutes
category = Day Length
$timeScale = 3
[Preset]
name = 96 minutes
category = Day Length
$timeScale = 4
[Preset]
name = 2 hours
category = Day Length
$timeScale = 5
[Preset]
name = 4 hours
category = Day Length
$timeScale = 10
[Preset]
name = 12 hours
category = Day Length
$timeScale = 30
[Preset]
name = 24 hours
category = Day Length
$timeScale = 60
[Preset]
name = Freeze time
category = Day Length
$timeScale = 9999

View File

@ -0,0 +1,173 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 6fa2baef8a4ece42
// Used for: Rings around divine beast laser
// Credit for hsv functions below
// http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
#define RAINBOW_EFFECT $rainbow // [0 or 1] set it to 1 to enable rainbow beams effect. in that case, HUE_ROTATION is ignored
#define DISABLE_BEAMS $disableBeams // [0 or 1] set it to 1 to hide the lasers completely
#define HUE_ROTATION $hue //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://i.imgur.com/5UpyIGh.png
#define SATURATION_FACTOR 1.0 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
#define VALUE_FACTOR 1.0 //same as above; applies to Value
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
const float hueRotation = HUE_ROTATION / 360.0;
#ifdef VULKAN
layout(set = 1, binding = 3) uniform ufBlock
{
uniform ivec4 uf_remappedPS[3];
uniform float uf_alphaTestRef;
uniform vec4 uf_fragCoordScale;
};
#else
uniform ivec4 uf_remappedPS[3];
uniform float uf_alphaTestRef;
uniform vec2 uf_fragCoordScale;
#endif
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
TEXTURE_LAYOUT(1, 1, 1) uniform sampler2D textureUnitPS1;
TEXTURE_LAYOUT(4, 1, 2) uniform sampler2D textureUnitPS4;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 2) in vec4 passParameterSem3;
layout(location = 3) in vec4 passParameterSem4;
layout(location = 4) in vec4 passParameterSem7;
layout(location = 5) in vec4 passParameterSem8;
layout(location = 6) in vec4 passParameterSem14;
layout(location = 0) out vec4 passPixelColor0;
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; }
vec3 rgb2hsv(vec3 c) {
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
float d = q.x - min(q.w, q.y);
float e = 1.0e-10;
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
}
vec3 hsv2rgb(vec3 c) {
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
}
void main()
{
#if (DISABLE_BEAMS == 1) && (RAINBOW_EFFECT == 0)
discard;
#endif
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
vec4 R3f = vec4(0.0);
vec4 R4f = vec4(0.0);
vec4 R5f = vec4(0.0);
vec4 R6f = vec4(0.0);
vec4 R7f = 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;
R2f = passParameterSem3;
R3f = passParameterSem4;
R4f = passParameterSem7;
R5f = passParameterSem8;
R6f = passParameterSem14;
R7f.xw = (texture(textureUnitPS0, R5f.xy).xw);
// 0
R123f.x = (R7f.x * 2.0 + -(1.0));
PV0f.x = R123f.x;
R123f.y = (R7f.w * 2.0 + -(1.0));
PV0f.y = R123f.y;
PV0f.z = mul_nonIEEE(R3f.y, intBitsToFloat(uf_remappedPS[0].y));
PV0f.w = mul_nonIEEE(R3f.y, intBitsToFloat(uf_remappedPS[0].x));
PS0f = 1.0 / R2f.w;
// 1
R5f.x = (mul_nonIEEE(PV0f.w,PV0f.x) + R5f.z);
R5f.y = (mul_nonIEEE(PV0f.z,PV0f.y) + R5f.w);
PV1f.z = R2f.z * PS0f;
PS1f = 1.0 / R2f.w;
// 2
backupReg0f = R2f.x;
backupReg1f = R2f.y;
R2f.x = mul_nonIEEE(backupReg0f, PS1f);
R2f.y = (mul_nonIEEE(PV1f.z,intBitsToFloat(uf_remappedPS[1].w)) + -(intBitsToFloat(uf_remappedPS[1].y)));
R2f.z = mul_nonIEEE(backupReg1f, PS1f);
R7f.x = mul_nonIEEE(R0f.x, R4f.x);
PS0f = R7f.x;
R2f.z = (texture(textureUnitPS4, R2f.xz).x);
R5f.x = (texture(textureUnitPS1, R5f.xy).w);
// 0
R123f.x = (mul_nonIEEE(R4f.w,R5f.x) + -(R0f.w));
PV0f.x = R123f.x;
R127f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R2f.z) + intBitsToFloat(uf_remappedPS[1].x));
R7f.z = mul_nonIEEE(R0f.z, R4f.z);
PS0f = 1.0 / R2f.y;
// 1
R127f.x = mul_nonIEEE(R1f.w, PV0f.x);
R127f.x = clamp(R127f.x, 0.0, 1.0);
R7f.y = mul_nonIEEE(R0f.y, R4f.y);
PV1f.w = -(intBitsToFloat(uf_remappedPS[1].z)) * PS0f;
R127f.w = 1.0 / intBitsToFloat(uf_remappedPS[2].y);
PS1f = R127f.w;
// 2
PV0f.x = -(PV1f.w) + R127f.y;
// 3
PV1f.z = PV0f.x * R127f.w;
PV1f.z = clamp(PV1f.z, 0.0, 1.0);
// 4
PV0f.y = mul_nonIEEE(R127f.x, PV1f.z);
// 5
PV1f.x = mul_nonIEEE(R3f.x, PV0f.y);
// 6
R7f.w = mul_nonIEEE(R6f.w, PV1f.x);
// export
if( ((vec4(R7f.x, R7f.y, R7f.z, R7f.w)).a > uf_alphaTestRef) == false) discard;
passPixelColor0 = vec4(R7f.x, R7f.y, R7f.z, R7f.w);
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
#if (RAINBOW_EFFECT == 1)
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + 1.5*R5f.y, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
#else
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
#endif
passPixelColor0.a *= ALPHA_FACTOR;
}

View File

@ -0,0 +1,189 @@
#version 420
#extension GL_ARB_texture_gather : enable
#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 de960d36a997b34d
// Divine Laser Beams Customizer - beams
// Credit for hsv functions below
// http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl
#define RAINBOW_EFFECT $rainbow // [0 or 1] set it to 1 to enable rainbow beams effect. in that case, HUE_ROTATION is ignored
#define DISABLE_BEAMS $disableBeams // [0 or 1] set it to 1 to hide the lasers completely
#define HUE_ROTATION $hue //[0, 360] where 0 and 360 is unchanged Hue and 180 is completely opposite Hue. Check http://i.imgur.com/5UpyIGh.png
#define SATURATION_FACTOR 1.0 //[0.0, 1.0] 1.0 means unchanged Saturation, 0.0 means completely desaturated. Values above 1.0 are accepted, but they may cause clipping
#define VALUE_FACTOR 1.0 //same as above; applies to Value
#define ALPHA_FACTOR 1.0 //same as above; applies to Transparency
const float hueRotation = HUE_ROTATION / 360.0;
#ifdef VULKAN
layout(set = 1, binding = 3) uniform ufBlock
{
uniform ivec4 uf_remappedPS[3];
uniform float uf_alphaTestRef;
uniform vec4 uf_fragCoordScale;
};
#else
uniform ivec4 uf_remappedPS[3];
uniform float uf_alphaTestRef;
uniform vec2 uf_fragCoordScale;
#endif
// uf_alphaTestRef was moved to the ufBlock
TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0;
TEXTURE_LAYOUT(1, 1, 1) uniform sampler2D textureUnitPS1;
TEXTURE_LAYOUT(4, 1, 2) uniform sampler2D textureUnitPS4;
layout(location = 0) in vec4 passParameterSem0;
layout(location = 1) in vec4 passParameterSem1;
layout(location = 2) in vec4 passParameterSem3;
layout(location = 3) in vec4 passParameterSem4;
layout(location = 4) in vec4 passParameterSem5;
layout(location = 5) in vec4 passParameterSem8;
layout(location = 6) in vec4 passParameterSem12;
layout(location = 7) in vec4 passParameterSem14;
layout(location = 0) out vec4 passPixelColor0;
// uf_fragCoordScale was moved to the ufBlock
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; }
vec3 rgb2hsv(vec3 c) {
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
float d = q.x - min(q.w, q.y);
float e = 1.0e-10;
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
}
vec3 hsv2rgb(vec3 c) {
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
}
void main()
{
#if (DISABLE_BEAMS == 1) && (RAINBOW_EFFECT == 0)
discard;
#endif
vec4 R0f = vec4(0.0);
vec4 R1f = vec4(0.0);
vec4 R2f = vec4(0.0);
vec4 R3f = vec4(0.0);
vec4 R4f = vec4(0.0);
vec4 R5f = vec4(0.0);
vec4 R6f = vec4(0.0);
vec4 R7f = 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;
R2f = passParameterSem3;
R3f = passParameterSem4;
R4f = passParameterSem5;
R5f = passParameterSem8;
R6f = passParameterSem12;
R7f = passParameterSem14;
R1f.w = (texture(textureUnitPS0, R5f.xy).x);
// 0
backupReg0f = R4f.y;
R127f.x = 1.0;
R4f.y = R5f.w + 0.0;
R3f.z = -(R3f.y) + backupReg0f;
R123f.w = (R1f.w * 2.0 + -(1.0));
PV0f.w = R123f.w;
PS0f = 1.0 / R2f.w;
// 1
backupReg0f = R5f.z;
R5f.x = mul_nonIEEE(R2f.x, PS0f);
R5f.y = mul_nonIEEE(R2f.y, PS0f);
R5f.z = R0f.x + -(R1f.x);
R5f.w = R0f.y + -(R1f.y);
R4f.x = (PV0f.w * intBitsToFloat(0x3dcccccd) + backupReg0f);
PS1f = R4f.x;
// 2
backupReg0f = R6f.y;
tempf.x = dot(vec4(R6f.x,backupReg0f,R6f.z,R127f.x),vec4(intBitsToFloat(uf_remappedPS[0].x),intBitsToFloat(uf_remappedPS[0].y),intBitsToFloat(uf_remappedPS[0].z),intBitsToFloat(uf_remappedPS[0].w)));
PV0f.x = tempf.x;
PV0f.y = tempf.x;
PV0f.z = tempf.x;
PV0f.w = tempf.x;
R6f.y = tempf.x;
R6f.x = 1.0 / R2f.w;
PS0f = R6f.x;
R5f.x = (texture(textureUnitPS4, R5f.xy).x);
R4f.xyzw = (texture(textureUnitPS1, R4f.xy).xyzw);
// 0
R127f.x = mul_nonIEEE(R0f.w, R4f.w);
R127f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[1].w),R5f.x) + intBitsToFloat(uf_remappedPS[1].x));
PV0f.z = -(R3f.y) + -(R6f.y);
PV0f.w = R2f.z * R6f.x;
PS0f = 1.0 / R3f.z;
// 1
PV1f.x = mul_nonIEEE(PV0f.z, PS0f);
PV1f.x = clamp(PV1f.x, 0.0, 1.0);
R123f.y = (mul_nonIEEE(PV0f.w,intBitsToFloat(uf_remappedPS[1].w)) + -(intBitsToFloat(uf_remappedPS[1].y)));
PV1f.y = R123f.y;
R127f.w = R0f.z + -(R1f.z);
R0f.x = (mul_nonIEEE(R5f.z,R4f.x) + R1f.x);
PS1f = R0f.x;
// 2
R0f.y = (mul_nonIEEE(R5f.w,R4f.y) + R1f.y);
R127f.z = mul_nonIEEE(R127f.x, PV1f.x);
R127f.z = clamp(R127f.z, 0.0, 1.0);
PS0f = 1.0 / PV1f.y;
// 3
R0f.z = (mul_nonIEEE(R127f.w,R4f.z) + R1f.z);
PV1f.w = -(intBitsToFloat(uf_remappedPS[1].z)) * PS0f;
R127f.w = 1.0 / intBitsToFloat(uf_remappedPS[2].y);
PS1f = R127f.w;
// 4
PV0f.x = -(PV1f.w) + R127f.y;
// 5
PV1f.z = PV0f.x * R127f.w;
PV1f.z = clamp(PV1f.z, 0.0, 1.0);
// 6
PV0f.y = mul_nonIEEE(R127f.z, PV1f.z);
// 7
PV1f.x = mul_nonIEEE(R3f.x, PV0f.y);
// 8
R0f.w = mul_nonIEEE(R7f.w, PV1f.x);
// export
if( ((vec4(R0f.x, R0f.y, R0f.z, R0f.w)).a > uf_alphaTestRef) == false) discard;
passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w);
vec3 colhsv = rgb2hsv(passPixelColor0.rgb);
#if (RAINBOW_EFFECT == 1)
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + 3.0*R5f.y, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
#else
passPixelColor0.rgb = hsv2rgb(vec3(mod(colhsv.x + hueRotation, 1.0), colhsv.y*SATURATION_FACTOR, colhsv.z*VALUE_FACTOR));
#endif
passPixelColor0.a *= ALPHA_FACTOR;
}

View File

@ -0,0 +1,61 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = Divine Laser Beams
path = "The Legend of Zelda: Breath of the Wild/Mods/Divine Laser Beams"
description = Allows customization of the color of the Divine Beasts's Laser Beams. They can also be completely hidden.||Made by Kiri.
version = 6
[Default]
$hue:int = 0
$rainbow:int = 0
$disableBeams:int = 0
[Preset]
name = Disabled (Default)
category = Hide Laser
default = 1
$disableBeams:int = 0
[Preset]
name = Enabled
category = Hide Laser
default = 1
$disableBeams:int = 1
[Preset]
name = Red (Default)
category = Laser Color
default = 1
$hue:int = 0
[Preset]
name = Rainbow
category = Laser Color
$rainbow:int = 1
[Preset]
name = Purple
category = Laser Color
$hue:int = 300
[Preset]
name = Blue
category = Laser Color
$hue:int = 225
[Preset]
name = Cyan
category = Laser Color
$hue:int = 160
[Preset]
name = Green
category = Laser Color
$hue:int = 120
[Preset]
name = Yellow
category = Laser Color
$hue:int = 45

View File

@ -0,0 +1,46 @@
[BotW_DrawDistance_V208]
moduleMatches = 0x6267BFD0
.origin = codecave
actorMultiplier:
.float $actor
_replaceDrawDistanceActorInvoke:
lis r12, actorMultiplier@ha
lfs f13, actorMultiplier@l(r12)
fmuls f1, f1, f13
lwz r12, 0x3B0(r29)
blr
0x037A617C = bla _replaceDrawDistanceActorInvoke
_replaceDrawDistanceActorKeepAlive_1:
lis r4, actorMultiplier@ha
lfs f6, actorMultiplier@l(r4)
fmuls f1, f1, f6
lwz r4, 0x4FC(r31)
blr
0x0379E6B8 = bla _replaceDrawDistanceActorKeepAlive_1
_replaceDrawDistanceActorKeepAlive_2:
lis r23, actorMultiplier@ha
lfs f9, actorMultiplier@l(r23)
fmuls f1, f1, f9
lfs f9, 0x280(r31)
blr
0x0379E63C = bla _replaceDrawDistanceActorKeepAlive_2
objectMultiplier:
.float $object
_replaceObjectDrawDistance:
lis r9, objectMultiplier@ha
lfs f11, objectMultiplier@l(r9)
fmuls f1, f1, f11
lwz r0, 0xC(r1)
blr
0x03137F04 = bla _replaceObjectDrawDistance

View File

@ -0,0 +1,151 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = Draw Distance
path = "The Legend of Zelda: Breath of the Wild/Mods/Draw Distance"
description = Extend the draw distance of objects and entities in the game, which will see a small performance decrease when making it higher. Lowering this will not offer more performance.|You can also make distant textures appear as higher resolution variants.||Made By Crementif.
version = 6
[Default]
$actor = 1.0
$object = 1.0
$textureLODBias:int = 0
# Actor Draw Distance
[Preset]
name = Very Low (0.5x)
category = NPC, Enemies And Other Entities
$actor = 0.5
[Preset]
name = Low (0.75x)
category = NPC, Enemies And Other Entities
$actor = 0.75
[Preset]
name = Medium (1x)
category = NPC, Enemies And Other Entities
default = 1
$actor = 1.0
[Preset]
name = High (1.25x)
category = NPC, Enemies And Other Entities
$actor = 1.25
[Preset]
name = Ultra (1.5x)
category = NPC, Enemies And Other Entities
$actor = 1.5
[Preset]
name = Extreme (2x, requires Extended Memory pack!)
category = NPC, Enemies And Other Entities
$actor = 2
# Objects Draw Distance
[Preset]
name = Potato (0.2x)
category = Trees, Bushes, Landscape And Other Objects (Experimental)
$object = 0.2
[Preset]
name = Very Low (0.5x)
category = Trees, Bushes, Landscape And Other Objects (Experimental)
$object = 0.5
[Preset]
name = Low (0.75x)
category = Trees, Bushes, Landscape And Other Objects (Experimental)
$object = 0.75
[Preset]
name = Medium (1x)
category = Trees, Bushes, Landscape And Other Objects (Experimental)
default = 1
$object = 1.0
[Preset]
name = High (1.25x)
category = Trees, Bushes, Landscape And Other Objects (Experimental)
$object = 1.25
[Preset]
name = Ultra (1.5x, requires Extended Memory pack!)
category = Trees, Bushes, Landscape And Other Objects (Experimental)
$object = 1.5
# Texture LOD Bias
[Preset]
name = Lowest (+16, Not Recommended)
category = Texture Distance Detail (LOD)
$textureLODBias:int = +16
[Preset]
name = Extremely low (+8, Not Recommended)
category = Texture Distance Detail (LOD)
$textureLODBias:int = +8
[Preset]
name = Very low (+4, Not Recommended)
category = Texture Distance Detail (LOD)
$textureLODBias:int = +4
[Preset]
name = Much lower (+3, Not Recommended)
category = Texture Distance Detail (LOD)
$textureLODBias:int = +3
[Preset]
name = Lower (+2)
category = Texture Distance Detail (LOD)
$textureLODBias:int = +2
[Preset]
name = Slightly lower (+1)
category = Texture Distance Detail (LOD)
$textureLODBias:int = +1
[Preset]
name = Normal (Default)
category = Texture Distance Detail (LOD)
default = 1
[Preset]
name = Slightly higher (-1)
category = Texture Distance Detail (LOD)
$textureLODBias:int = -1
[Preset]
name = Higher (-2)
category = Texture Distance Detail (LOD)
$textureLODBias:int = -2
[Preset]
name = Much higher(-3)
category = Texture Distance Detail (LOD)
$textureLODBias:int = -3
[Preset]
name = Very high (-4, Not Recommended)
category = Texture Distance Detail (LOD)
$textureLODBias:int = -4
[Preset]
name = Extremely high (-8, Not Recommended)
category = Texture Distance Detail (LOD)
$textureLODBias:int = -8
[Preset]
name = Highest (-16, Not Recommended)
category = Texture Distance Detail (LOD)
$textureLODBias:int = -16
[TextureRedefine]
formats = 0x31,0x32,0x34,0x35,0x431,0x432,0x433,0x234,0x235
overwriteRelativeLodBias = $textureLODBias

View File

@ -0,0 +1,67 @@
[BotW_ExtendedMemory_V208]
moduleMatches = 0x6267BFD0
.origin = codecave
0x02C5E660 = lis r9, 0x8B60 ; add 0x50000000 to main gameheap which by default has a fixed size of 0x3B600000. Can't make it larger due to overlay arena being in the way
SaveAreaHeapSize = 8 * 1024 * 1024 ; 8MiB (default is 2312KiB)
TriggerParamHeapSize = 8 * 1024 * 1024 ; 8MiB (default is around 2616KiB)
HavokMainHeapSize = 80 * 1024 * 1024 ; 80MiB (default is 30MiB)
; GameDataHeap
0x032015E0 = lis r3, (SaveAreaHeapSize@ha + TriggerParamHeapSize@ha)
; GameDataHeap -> SaveArea heap
0x03201A44 = lis r3, SaveAreaHeapSize@ha
0x03201A5C = addi r3, r3, SaveAreaHeapSize@l
; GameDataHeap -> TriggerParam
; Uses the remaining allocatable size of GameDataHeap
; HavokMainHeap
0x037FD6A4 = lis r6, HavokMainHeapSize@ha
; Overlay arena
0x030AA5F4 = lis r7, 0x4000 ; expand overlay arena root heap size to 0x40000000 (1GiB) from default 0x1C000000 (448MiB). Can't make it larger due to forground bucket memory being in the way (starts at 0xE0000000)
; Extra size for overlay arena from rules.txt is 0x24000000 (576MiB)
; Overlay arena -> FixedHeap
0x034ED614 = lis r3, 0x0C20 + 0x1000 ; add 256MiB
; Overlay arena -> MoveableMemoryHeap
0x034ED66C = lis r3, 0x0FD0 + 0x1000 ; add 256MiB
; Increase the size of the resource heap for small resources. When using mods like e.g. draw distance this would likely be the reason why it would spawn panic moons.
_increaseResourceSmallHeap:
lwz r10, 0x70(r24)
addis r10, r10, 0x500
stw r10, 0x70(r24)
blr
0x037EAADC = bla _increaseResourceSmallHeap
; Increase the size of the resource heap for large resources. When using mods like e.g. draw distance this would likely be the reason why it would spawn panic moons.
_increaseResourceLargeHeap:
lwz r11, 0x6C(r24)
addis r11, r11, 0x500
stw r11, 0x6C(r24)
blr
0x037EAB84 = bla _increaseResourceLargeHeap
; Some notes on potential further heaps
; The function at 0x030A5FA0 is the sead::ExpHeap::create function, which is used for pretty much all of BotW's heap creations.
; 0x02C235A0 = KingSystem -> uking::frm::System -> StageBinder
; 0x030A9E7C = Could be used to increase the sead::Arena size. Might already be increased.
; A lot of heaps inside the function at 0x034ED524 are used to initialize individual heaps
; 0x034ED55C = Overlay arena -> FixedHeap -> GameDataWork
; 0x034ECFCC = Overlay arena -> FixedHeap -> ForOverlayArena
; 0x034ECED8 = Overlay arena -> FixedHeap -> TexArcWork
; 0x034ED4EC = Overlay arena -> FixedHeap -> PlacementTree
; 0x034ED884 = Overlay arena -> SZSDecompressorInst
; 0x0309F1AC = ? -> SeadResourceMgr
; 0x037A19B0 = ? -> ActorFactory Related 1 - This could be used to increase the size that a heap can have.
; 0x037AE978 = ? -> ActorFactory Related 2 - This could be used to increase the size that a heap can have.
; 0x03B3EA40 = ? -> AglWorkHeap
; Heap creation is near 0x03201174

View File

@ -0,0 +1,15 @@
[Definition]
titleIds = 00050000101C9300,00050000101C9400,00050000101C9500
name = Extended Memory
path = "The Legend of Zelda: Breath of the Wild/Mods/Extended Memory"
description = Adds an extra 2GB of emulated RAM.|Only enable this if a mod you want to use requires this since it'll use more RAM.
version = 6
[RAM]
mapping0 = 0x10000000-0xA0000000 # extend MEM2 region (default range is 0x10000000-0x50000000)
mapping1 = 0xA0000000-0xE0000000 # extend overlay region (default range is 0xA0000000-0xBC000000)
# BotW (and other games might) require additional modifications to the code to utilize this extra ram.
# If you've got any improvements for this pack (since it's currently work-in-progress), please let us know in the Cemu Graphic Packs github (https://github.com/slashiee/cemu_graphic_packs) via an issue.
# Also, it'd be appreciated if the code for this graphic pack wasn't included inside of mods for the sake of mod compatibility.

Some files were not shown because too many files have changed in this diff Show More