mirror of
https://github.com/cemu-project/cemu_graphic_packs.git
synced 2024-11-22 01:29:18 +01:00
[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:
parent
a4a82c32db
commit
ca22977ef0
File diff suppressed because it is too large
Load Diff
@ -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));
|
||||
}
|
@ -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));
|
||||
}
|
@ -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));
|
||||
}
|
@ -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));
|
||||
}
|
@ -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));
|
||||
}
|
7
src/BreathOfTheWild/!Override/AmdIntelShadows/rules.txt
Normal file
7
src/BreathOfTheWild/!Override/AmdIntelShadows/rules.txt
Normal 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
|
File diff suppressed because it is too large
Load Diff
@ -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));
|
||||
}
|
@ -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));
|
||||
}
|
@ -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));
|
||||
}
|
@ -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));
|
||||
}
|
@ -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));
|
||||
}
|
8
src/BreathOfTheWild/!Override/IntelShadows/rules.txt
Normal file
8
src/BreathOfTheWild/!Override/IntelShadows/rules.txt
Normal 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
|
@ -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)
|
59
src/BreathOfTheWild/Cheats/ArrowDrawSpeed/rules.txt
Normal file
59
src/BreathOfTheWild/Cheats/ArrowDrawSpeed/rules.txt
Normal 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
|
10
src/BreathOfTheWild/Cheats/Durability/patch_Durability.asm
Normal file
10
src/BreathOfTheWild/Cheats/Durability/patch_Durability.asm
Normal 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)
|
54
src/BreathOfTheWild/Cheats/Durability/rules.txt
Normal file
54
src/BreathOfTheWild/Cheats/Durability/rules.txt
Normal 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
|
@ -0,0 +1,10 @@
|
||||
[BotW_InfiniteAmiibo_V208]
|
||||
moduleMatches = 0x6267BFD0
|
||||
|
||||
0x029E949C = mr r29, r11
|
||||
|
||||
|
||||
[BotW_InfiniteAmiibo_V176V192]
|
||||
moduleMatches = 0xFD091F9F,0xD472D8A5
|
||||
|
||||
0x029E90F0 = mr r29, r11
|
6
src/BreathOfTheWild/Cheats/InfiniteAmiibo/rules.txt
Normal file
6
src/BreathOfTheWild/Cheats/InfiniteAmiibo/rules.txt
Normal 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
|
@ -0,0 +1,10 @@
|
||||
[BotW_InfiniteArrows_V208]
|
||||
moduleMatches = 0x6267BFD0
|
||||
|
||||
0x02EB6758 = nop
|
||||
|
||||
|
||||
[BotW_InfiniteArrows_V176V192]
|
||||
moduleMatches = 0xFD091F9F,0xD472D8A5
|
||||
|
||||
0x02EB61BC = nop
|
6
src/BreathOfTheWild/Cheats/InfiniteArrows/rules.txt
Normal file
6
src/BreathOfTheWild/Cheats/InfiniteArrows/rules.txt
Normal 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
|
@ -0,0 +1,10 @@
|
||||
[BotW_InfiniteDaruk_V208]
|
||||
moduleMatches = 0x6267BFD0
|
||||
|
||||
0x02D74498 = nop
|
||||
|
||||
|
||||
[BotW_InfiniteDaruk_V176V192]
|
||||
moduleMatches = 0xFD091F9F,0xD472D8A5
|
||||
|
||||
0x02D73EFC = nop
|
6
src/BreathOfTheWild/Cheats/InfiniteDaruk/rules.txt
Normal file
6
src/BreathOfTheWild/Cheats/InfiniteDaruk/rules.txt
Normal 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
|
@ -0,0 +1,10 @@
|
||||
[BotW_InfiniteHearts_V208]
|
||||
moduleMatches = 0x6267BFD0
|
||||
|
||||
0x02D452A4 = nop
|
||||
|
||||
|
||||
[BotW_InfiniteHearts_V176V192]
|
||||
moduleMatches = 0xFD091F9F,0xD472D8A5
|
||||
|
||||
0x02D44D44 = nop
|
6
src/BreathOfTheWild/Cheats/InfiniteHearts/rules.txt
Normal file
6
src/BreathOfTheWild/Cheats/InfiniteHearts/rules.txt
Normal 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
|
@ -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
|
6
src/BreathOfTheWild/Cheats/InfiniteMipha/rules.txt
Normal file
6
src/BreathOfTheWild/Cheats/InfiniteMipha/rules.txt
Normal 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
|
@ -0,0 +1,10 @@
|
||||
[BotW_InfiniteMotorcycleEnergy_V208]
|
||||
moduleMatches = 0x6267BFD0
|
||||
|
||||
0x020957DC = fmr f12, f0
|
||||
|
||||
|
||||
[BotW_InfiniteMotorcycleEnergy_V176V192]
|
||||
moduleMatches = 0xFD091F9F,0xD472D8A5
|
||||
|
||||
0x0209583C = fmr f12, f0
|
@ -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
|
@ -0,0 +1,10 @@
|
||||
[BotW_InfiniteRevali_V208]
|
||||
moduleMatches = 0x6267BFD0
|
||||
|
||||
0x02CE0328 = nop
|
||||
|
||||
|
||||
[BotW_InfiniteRevali_V176V192]
|
||||
moduleMatches = 0xFD091F9F,0xD472D8A5
|
||||
|
||||
0x02CDFE0C = nop
|
6
src/BreathOfTheWild/Cheats/InfiniteRevali/rules.txt
Normal file
6
src/BreathOfTheWild/Cheats/InfiniteRevali/rules.txt
Normal 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
|
@ -0,0 +1,10 @@
|
||||
[BotW_InfiniteStamina_V208]
|
||||
moduleMatches = 0x6267BFD0
|
||||
|
||||
0x02D90CC0 = fmr f29, f1
|
||||
|
||||
|
||||
[BotW_InfiniteStamina_V176V192]
|
||||
moduleMatches = 0xFD091F9F,0xD472D8A5
|
||||
|
||||
0x02D90724 = fmr f29, f1
|
6
src/BreathOfTheWild/Cheats/InfiniteStamina/rules.txt
Normal file
6
src/BreathOfTheWild/Cheats/InfiniteStamina/rules.txt
Normal 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
|
@ -0,0 +1,10 @@
|
||||
[BotW_InfiniteUrbosa_V208]
|
||||
moduleMatches = 0x6267BFD0
|
||||
|
||||
0x02D741C8 = nop
|
||||
|
||||
|
||||
[BotW_InfiniteUrbosa_V176V192]
|
||||
moduleMatches = 0xFD091F9F,0xD472D8A5
|
||||
|
||||
0x02D73C2C = nop
|
6
src/BreathOfTheWild/Cheats/InfiniteUrbosa/rules.txt
Normal file
6
src/BreathOfTheWild/Cheats/InfiniteUrbosa/rules.txt
Normal 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
|
@ -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).
|
@ -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
@ -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));
|
||||
}
|
@ -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
|
@ -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.
|
||||
|
||||
===
|
156
src/BreathOfTheWild/Enhancements/rules.txt
Normal file
156
src/BreathOfTheWild/Enhancements/rules.txt
Normal 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
|
@ -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));
|
||||
}
|
@ -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));
|
||||
}
|
@ -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);
|
||||
}
|
@ -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));
|
||||
}
|
@ -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
@ -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);
|
||||
}
|
@ -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
|
||||
}
|
@ -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));
|
||||
}
|
@ -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
|
||||
}
|
@ -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
|
||||
}
|
@ -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);
|
||||
}
|
@ -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
|
||||
}
|
@ -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));
|
||||
}
|
@ -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);
|
||||
}
|
@ -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);
|
||||
}
|
@ -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);
|
||||
}
|
@ -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);
|
||||
}
|
@ -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);
|
||||
}
|
@ -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));
|
||||
}
|
@ -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);
|
||||
}
|
@ -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
|
||||
}
|
@ -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));
|
||||
}
|
@ -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);
|
||||
}
|
@ -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);
|
||||
}
|
@ -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));
|
||||
}
|
@ -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));
|
||||
}
|
@ -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));
|
||||
}
|
@ -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 );
|
||||
}
|
@ -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);
|
||||
}
|
@ -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
|
||||
}
|
@ -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
@ -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);
|
||||
}
|
@ -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);
|
||||
}
|
@ -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));
|
||||
}
|
168
src/BreathOfTheWild/Graphics/patch_AspectRatio.asm
Normal file
168
src/BreathOfTheWild/Graphics/patch_AspectRatio.asm
Normal 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)
|
1005
src/BreathOfTheWild/Graphics/rules.txt
Normal file
1005
src/BreathOfTheWild/Graphics/rules.txt
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,5 @@
|
||||
[BotW_CameraSensivity_V208]
|
||||
moduleMatches = 0x6267BFD0
|
||||
|
||||
0x102164C0 = .float ($sensitivity*-1)
|
||||
0x101B3280 = .float (2*$movementSensitivity)+1
|
131
src/BreathOfTheWild/Mods/CameraSensitivity/rules.txt
Normal file
131
src/BreathOfTheWild/Mods/CameraSensitivity/rules.txt
Normal 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
@ -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;
|
||||
}
|
@ -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
|
||||
}
|
@ -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
|
||||
}
|
@ -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);
|
||||
}
|
@ -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));
|
||||
}
|
@ -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
|
||||
}
|
595
src/BreathOfTheWild/Mods/CelShading/rules.txt
Normal file
595
src/BreathOfTheWild/Mods/CelShading/rules.txt
Normal 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
|
4
src/BreathOfTheWild/Mods/DayLength/patch_DayLength.asm
Normal file
4
src/BreathOfTheWild/Mods/DayLength/patch_DayLength.asm
Normal file
@ -0,0 +1,4 @@
|
||||
[BotW_DayLength_V208]
|
||||
moduleMatches = 0x6267BFD0
|
||||
|
||||
0x10301844 = .float (1/(120*$timeScale))
|
80
src/BreathOfTheWild/Mods/DayLength/rules.txt
Normal file
80
src/BreathOfTheWild/Mods/DayLength/rules.txt
Normal 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
|
@ -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;
|
||||
}
|
@ -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;
|
||||
}
|
61
src/BreathOfTheWild/Mods/DivineLaserBeam/rules.txt
Normal file
61
src/BreathOfTheWild/Mods/DivineLaserBeam/rules.txt
Normal 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
|
46
src/BreathOfTheWild/Mods/DrawDistance/patch_DrawDistance.asm
Normal file
46
src/BreathOfTheWild/Mods/DrawDistance/patch_DrawDistance.asm
Normal 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
|
151
src/BreathOfTheWild/Mods/DrawDistance/rules.txt
Normal file
151
src/BreathOfTheWild/Mods/DrawDistance/rules.txt
Normal 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
|
@ -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
|
15
src/BreathOfTheWild/Mods/ExtendedMemory/rules.txt
Normal file
15
src/BreathOfTheWild/Mods/ExtendedMemory/rules.txt
Normal 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
Loading…
Reference in New Issue
Block a user